@Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { logger.info("Update Stock Items Task Begin"); try { init(context); List<String> codes = stockService.getAllCodes(); for (String code : codes) { String url = getUrl(code); ClientRequest request = new ClientRequest(url); ClientResponse<String> response; try { response = request.get(String.class); BufferedReader br = new BufferedReader( new InputStreamReader(new ByteArrayInputStream(response.getEntity().getBytes()))); String output = br.readLine(); StockItem item = toDomain(output); item.setCode(code); StockItem last = stockService.getLatestStockItemByCode(code); if (last.getLogDate().equals(item.getLogDate())) continue; if (last.isStop()) { last.updateItem(item, MACD_START, MACD_END); stockService.save(last); } else { last.setLast(false); List<StockItem> items = new ArrayList<>(); items.add(last); items.add(item); Stock stock = new Stock(items); stock.calculateMacd(MACD_START, MACD_END, false); if (item.isStop()) { item.setMacdDea(last.getMacdDea()); item.setMacdDiff(last.getMacdDiff()); item.setMacd(last.getMacd()); item.setEma12(last.getEma12()); item.setEma26(last.getEma26()); } stockService.saveAll(items); } } catch (Exception e) { System.out.printf("Code :\"%s\" Not Updated%n", code); e.printStackTrace(); continue; } } for (String code : codes) { List<StockItem> items = stockService.getLast30Stock(code); Stock stock = new Stock(items); stock.processAverage(); stockService.saveAll(items); } } catch (Exception ex) { logger.error("Init error", ex); } logger.info("Update Stock Item Task Finished!"); }