package com.zx.dataservice.service.impl; import com.alibaba.fastjson.JSON; import com.zx.dataservice.controller.WebSocketController; import com.zx.dataservice.mapper1.ChoiceStockMapper; import com.zx.dataservice.pojo.StockRestPojo; import com.zx.dataservice.service.ChoiceStockService; import com.zx.dataservice.utils.*; import com.zx.dataservice.vo.StockRestRedisVO; import com.zx.dataservice.vo.StockRestVO; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; import java.math.BigDecimal; import java.util.*; @Service public class ChoiceStockServiceImpl implements ChoiceStockService { private static final Logger log = LoggerFactory.getLogger(ChoiceStockServiceImpl.class); private static final String sourceFileUrl = "/www/wwwroot/csqdata/stock"; private static final String goalFileUrl = "/www/wwwroot/csqdata/stock/backup"; private static final String url = "http://qwer16888.vip/api/stock/updateBatchStockInfo.do"; private static final String urlRedis = "http://qwer16888.vip/init/redis/updateInfo.do"; private static final String sourceAfterFileUrl = "/www/wwwroot/csqdata/stock/after"; private static final String goalAfterFileUrl = "/www/wwwroot/csqdata/stock/after/backup"; private static final String sourceFileUrlInFront = "/www/wwwroot/csqdata/stock/InFront"; // 盘前 private static final String goalFileUrlInFront = "/www/wwwroot/csqdata/stock/backup/InFront"; //盘前 备份 @Autowired private ChoiceStockMapper choiceStockMapper; @Override public void analysisStockRestData(String type) { // 1.获取文件夹文件 按照时间顺序拿到一个 List files = FileStockUtil.getFile(sourceFileUrl); if(null == files || 0 == files.size()){ return; } List stockRestPojoList = new ArrayList<>(); List stockRestVOList = new ArrayList<>(); List stockRestRedisVOList = new ArrayList<>(); StockRestPojo stockRestPojo; StockRestVO stockRestVO; StockRestRedisVO stockRestRedisVO; for (File file : files){ // 2.移动文件去另外一个文件夹 FileStockUtil.moveFile(sourceFileUrl + File.separator + file.getName(), goalFileUrl); // 3.读取文件内容 String str = FileStockUtil.readFileContent(goalFileUrl + File.separator + file.getName()); // 4.并解析 if(StringUtils.isEmpty(str)){ continue; } Map> map = new HashMap>(); map = JSON.parseObject(str, HashMap.class); str = null; for (Map.Entry> entry : map.entrySet()) { try { stockRestPojo = new StockRestPojo(); stockRestPojo.setDate(String.valueOf(entry.getValue().get(0))); if(String.valueOf(entry.getValue().get(1)).equals("0")){ continue; } stockRestPojo.setTime(String.valueOf(entry.getValue().get(1))); stockRestPojo.setNow(String.valueOf(entry.getValue().get(2))); stockRestPojo.setHigh(String.valueOf(entry.getValue().get(3))); stockRestPojo.setLow(String.valueOf(entry.getValue().get(4))); stockRestPojo.setOpen(String.valueOf(entry.getValue().get(5))); stockRestPojo.setPreclose(String.valueOf(entry.getValue().get(6))); stockRestPojo.setRoundlot(String.valueOf(entry.getValue().get(7))); stockRestPojo.setChange(String.valueOf(entry.getValue().get(8))); stockRestPojo.setPctchange(String.valueOf(entry.getValue().get(9))); stockRestPojo.setVolume(String.valueOf(entry.getValue().get(10))); stockRestPojo.setAmount(String.valueOf(entry.getValue().get(11))); stockRestPojo.setVolumeratio(String.valueOf(entry.getValue().get(12))); stockRestPojo.setCommissionratio(String.valueOf(entry.getValue().get(13))); stockRestPojo.setCommissiondiff(String.valueOf(entry.getValue().get(14))); stockRestPojo.setTradestatus(String.valueOf(entry.getValue().get(15))); stockRestPojo.setOutvolume(String.valueOf(entry.getValue().get(16))); stockRestPojo.setInvolume(String.valueOf(entry.getValue().get(17))); stockRestPojo.setHighlimit(String.valueOf(entry.getValue().get(18))); stockRestPojo.setLowlimit(String.valueOf(entry.getValue().get(19))); stockRestPojo.setSpeed(String.valueOf(entry.getValue().get(20))); stockRestPojo.setAverageprice(String.valueOf(entry.getValue().get(21))); stockRestPojo.setBuyprice1(String.valueOf(entry.getValue().get(22))); stockRestPojo.setBuyprice2(String.valueOf(entry.getValue().get(23))); stockRestPojo.setBuyprice3(String.valueOf(entry.getValue().get(24))); stockRestPojo.setBuyprice4(String.valueOf(entry.getValue().get(25))); stockRestPojo.setBuyprice5(String.valueOf(entry.getValue().get(26))); stockRestPojo.setBuyvolume1(String.valueOf(entry.getValue().get(27))); stockRestPojo.setBuyvolume2(String.valueOf(entry.getValue().get(28))); stockRestPojo.setBuyvolume3(String.valueOf(entry.getValue().get(29))); stockRestPojo.setBuyvolume4(String.valueOf(entry.getValue().get(30))); stockRestPojo.setBuyvolume5(String.valueOf(entry.getValue().get(31))); stockRestPojo.setSellprice1(String.valueOf(entry.getValue().get(32))); stockRestPojo.setSellprice2(String.valueOf(entry.getValue().get(33))); stockRestPojo.setSellprice3(String.valueOf(entry.getValue().get(34))); stockRestPojo.setSellprice4(String.valueOf(entry.getValue().get(35))); stockRestPojo.setSellprice5(String.valueOf(entry.getValue().get(36))); stockRestPojo.setSellvolume1(String.valueOf(entry.getValue().get(37))); stockRestPojo.setSellvolume2(String.valueOf(entry.getValue().get(38))); stockRestPojo.setSellvolume3(String.valueOf(entry.getValue().get(39))); stockRestPojo.setSellvolume4(String.valueOf(entry.getValue().get(40))); stockRestPojo.setSellvolume5(String.valueOf(entry.getValue().get(41))); stockRestPojo.setClosedtime(String.valueOf(entry.getValue().get(42))); stockRestPojo.setClosedvolume(String.valueOf(entry.getValue().get(43))); stockRestPojo.setClosedamount(String.valueOf(entry.getValue().get(44))); StringBuffer dateStr = new StringBuffer(stockRestPojo.getDate()); if (StringUtils.isEmpty(stockRestPojo.getTime())) { dateStr = dateStr.append(000000); } else { dateStr.append( String.format("%06d", Integer.parseInt(stockRestPojo.getTime()))); // if (5 == stockRestPojo.getTime().length()) { // // 长度为5表示 小时前面需要补0 // dateStr = dateStr.append(0).append(stockRestPojo.getTime()); // } else { // dateStr = dateStr.append(stockRestPojo.getTime()); // } } Date date = TimeUtil.strToDate(dateStr.toString()); // 毫秒转成秒 stockRestPojo.setRealTime(date.getTime() / 1000); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int min = calendar.get(Calendar.MINUTE); // 获取分钟 int sec = calendar.get(Calendar.SECOND); // 获取秒数 // 1分钟数据 if (sec != 0) { stockRestPojo.setDateOne(stockRestPojo.getRealTime() + 60 - sec); } else { stockRestPojo.setDateOne(stockRestPojo.getRealTime()); } // 5分钟数据 if (sec != 0 || min % 5 != 0) { stockRestPojo.setDateFive(stockRestPojo.getRealTime() + (5 * 60) - sec - (min % 5 * 60)); } else { stockRestPojo.setDateFive(stockRestPojo.getRealTime()); } // 15分钟数据 if (sec != 0 || min % 15 != 0) { stockRestPojo.setDateFifteen(stockRestPojo.getRealTime() + (15 * 60) - sec - (min % 15 * 60)); } else { stockRestPojo.setDateFifteen(stockRestPojo.getRealTime()); } // 30分钟数据 if (sec != 0 || min % 30 != 0) { stockRestPojo.setDateThirty(stockRestPojo.getRealTime() + (30 * 60) - sec - (min % 30 * 60)); } else { stockRestPojo.setDateThirty(stockRestPojo.getRealTime()); } // 60分钟数据 if (sec != 0 || min % 60 != 0) { stockRestPojo.setDateSixty(stockRestPojo.getRealTime() + (60 * 60) - sec - (min % 60 * 60)); } else { stockRestPojo.setDateSixty(stockRestPojo.getRealTime()); } StringBuffer tableName = new StringBuffer("data_rt_"); tableName.append(entry.getKey().replace(".", "_").toLowerCase()); stockRestPojo.setCode(entry.getKey().toUpperCase()); stockRestPojo.setTableName(tableName.toString()); if(new BigDecimal(stockRestPojo.getNow()+"").compareTo(BigDecimal.ZERO)!=0) { stockRestPojoList.add(stockRestPojo); stockRestVO = new StockRestVO(); BeanUtils.copyProperties(stockRestPojo, stockRestVO); stockRestVOList.add(stockRestVO); stockRestRedisVO = new StockRestRedisVO(); stockRestRedisVO.setCode(entry.getKey().toUpperCase()); stockRestRedisVO.setNowPrice(stockRestPojo.getNow()); stockRestRedisVO.setChange(stockRestPojo.getChange()); stockRestRedisVO.setHcrate(stockRestPojo.getPctchange()); stockRestRedisVO.setHighlimit(stockRestPojo.getHighlimit()); stockRestRedisVO.setLowlimit(stockRestPojo.getLowlimit()); stockRestRedisVO.setBuy1(stockRestPojo.getBuyprice1()); stockRestRedisVO.setBuy2(stockRestPojo.getBuyprice2()); stockRestRedisVO.setBuy3(stockRestPojo.getBuyprice3()); stockRestRedisVO.setBuy4(stockRestPojo.getBuyprice4()); stockRestRedisVO.setBuy5(stockRestPojo.getBuyprice5()); stockRestRedisVO.setSell1(stockRestPojo.getSellprice1()); stockRestRedisVO.setSell2(stockRestPojo.getSellprice2()); stockRestRedisVO.setSell3(stockRestPojo.getSellprice3()); stockRestRedisVO.setSell4(stockRestPojo.getSellprice4()); stockRestRedisVO.setSell5(stockRestPojo.getSellprice5()); stockRestRedisVO.setBuy1_num(stockRestPojo.getBuyvolume1()); stockRestRedisVO.setBuy2_num(stockRestPojo.getBuyvolume2()); stockRestRedisVO.setBuy3_num(stockRestPojo.getBuyvolume3()); stockRestRedisVO.setBuy4_num(stockRestPojo.getBuyvolume4()); stockRestRedisVO.setBuy5_num(stockRestPojo.getBuyvolume5()); stockRestRedisVO.setSell1_num(stockRestPojo.getSellvolume1()); stockRestRedisVO.setSell2_num(stockRestPojo.getSellvolume2()); stockRestRedisVO.setSell3_num(stockRestPojo.getSellvolume3()); stockRestRedisVO.setSell4_num(stockRestPojo.getSellvolume4()); stockRestRedisVO.setSell5_num(stockRestPojo.getSellvolume5()); stockRestRedisVOList.add(stockRestRedisVO); } }catch (Exception e){ log.error("错误数据导致失败" + e); } } map = null; } // 5.入库 insertList(stockRestPojoList, stockRestVOList, stockRestRedisVOList,type); stockRestPojoList = null; } @Override public void analysisStockRestDataAfter(String type) { // 1.获取文件夹文件 按照时间顺序拿到一个 List files = FileStockUtil.getFile(sourceAfterFileUrl); if(null == files || 0 == files.size()){ return; } List stockRestPojoList = new ArrayList<>(); List stockRestVOList = new ArrayList<>(); List stockRestRedisVOList = new ArrayList<>(); StockRestPojo stockRestPojo; StockRestVO stockRestVO; StockRestRedisVO stockRestRedisVO; for (File file : files){ // 2.移动文件去另外一个文件夹 FileStockUtil.moveFile(sourceAfterFileUrl + File.separator + file.getName(), goalAfterFileUrl); // 3.读取文件内容 String str = FileStockUtil.readFileContent(goalAfterFileUrl + File.separator + file.getName()); // 4.并解析 if(StringUtils.isEmpty(str)){ continue; } Map> map = new HashMap>(); map = JSON.parseObject(str, HashMap.class); str = null; for (Map.Entry> entry : map.entrySet()) { try { stockRestPojo = new StockRestPojo(); stockRestPojo.setDate(String.valueOf(entry.getValue().get(0))); if(String.valueOf(entry.getValue().get(1)).equals("0")){ continue; } stockRestPojo.setTime("150000"); stockRestPojo.setNow(String.valueOf(entry.getValue().get(2))); stockRestPojo.setHigh(String.valueOf(entry.getValue().get(3))); stockRestPojo.setLow(String.valueOf(entry.getValue().get(4))); stockRestPojo.setOpen(String.valueOf(entry.getValue().get(5))); stockRestPojo.setPreclose(String.valueOf(entry.getValue().get(6))); stockRestPojo.setRoundlot(String.valueOf(entry.getValue().get(7))); stockRestPojo.setChange(String.valueOf(entry.getValue().get(8))); stockRestPojo.setPctchange(String.valueOf(entry.getValue().get(9))); stockRestPojo.setVolume(String.valueOf(entry.getValue().get(10))); stockRestPojo.setAmount(String.valueOf(entry.getValue().get(11))); stockRestPojo.setVolumeratio(String.valueOf(entry.getValue().get(12))); stockRestPojo.setCommissionratio(String.valueOf(entry.getValue().get(13))); stockRestPojo.setCommissiondiff(String.valueOf(entry.getValue().get(14))); stockRestPojo.setTradestatus(String.valueOf(entry.getValue().get(15))); stockRestPojo.setOutvolume(String.valueOf(entry.getValue().get(16))); stockRestPojo.setInvolume(String.valueOf(entry.getValue().get(17))); stockRestPojo.setHighlimit(String.valueOf(entry.getValue().get(18))); stockRestPojo.setLowlimit(String.valueOf(entry.getValue().get(19))); stockRestPojo.setSpeed(String.valueOf(entry.getValue().get(20))); stockRestPojo.setAverageprice(String.valueOf(entry.getValue().get(21))); stockRestPojo.setBuyprice1(String.valueOf(entry.getValue().get(22))); stockRestPojo.setBuyprice2(String.valueOf(entry.getValue().get(23))); stockRestPojo.setBuyprice3(String.valueOf(entry.getValue().get(24))); stockRestPojo.setBuyprice4(String.valueOf(entry.getValue().get(25))); stockRestPojo.setBuyprice5(String.valueOf(entry.getValue().get(26))); stockRestPojo.setBuyvolume1(String.valueOf(entry.getValue().get(27))); stockRestPojo.setBuyvolume2(String.valueOf(entry.getValue().get(28))); stockRestPojo.setBuyvolume3(String.valueOf(entry.getValue().get(29))); stockRestPojo.setBuyvolume4(String.valueOf(entry.getValue().get(30))); stockRestPojo.setBuyvolume5(String.valueOf(entry.getValue().get(31))); stockRestPojo.setSellprice1(String.valueOf(entry.getValue().get(32))); stockRestPojo.setSellprice2(String.valueOf(entry.getValue().get(33))); stockRestPojo.setSellprice3(String.valueOf(entry.getValue().get(34))); stockRestPojo.setSellprice4(String.valueOf(entry.getValue().get(35))); stockRestPojo.setSellprice5(String.valueOf(entry.getValue().get(36))); stockRestPojo.setSellvolume1(String.valueOf(entry.getValue().get(37))); stockRestPojo.setSellvolume2(String.valueOf(entry.getValue().get(38))); stockRestPojo.setSellvolume3(String.valueOf(entry.getValue().get(39))); stockRestPojo.setSellvolume4(String.valueOf(entry.getValue().get(40))); stockRestPojo.setSellvolume5(String.valueOf(entry.getValue().get(41))); stockRestPojo.setClosedtime(String.valueOf(entry.getValue().get(42))); stockRestPojo.setClosedvolume(String.valueOf(entry.getValue().get(43))); stockRestPojo.setClosedamount(String.valueOf(entry.getValue().get(44))); StringBuffer dateStr = new StringBuffer(stockRestPojo.getDate()); if (StringUtils.isEmpty(stockRestPojo.getTime())) { dateStr = dateStr.append(000000); } else { if (5 == stockRestPojo.getTime().length()) { // 长度为5表示 小时前面需要补0 dateStr = dateStr.append(0).append(stockRestPojo.getTime()); } else { dateStr = dateStr.append(stockRestPojo.getTime()); } } Date date = TimeUtil.strToDate(dateStr.toString()); // 毫秒转成秒 stockRestPojo.setRealTime(date.getTime() / 1000); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int min = calendar.get(Calendar.MINUTE); // 获取分钟 int sec = calendar.get(Calendar.SECOND); // 获取秒数 // 1分钟数据 if (sec != 0) { stockRestPojo.setDateOne(stockRestPojo.getRealTime() + 60 - sec); } else { stockRestPojo.setDateOne(stockRestPojo.getRealTime()); } // 5分钟数据 if (sec != 0 || min % 5 != 0) { stockRestPojo.setDateFive(stockRestPojo.getRealTime() + (5 * 60) - sec - (min % 5 * 60)); } else { stockRestPojo.setDateFive(stockRestPojo.getRealTime()); } // 15分钟数据 if (sec != 0 || min % 15 != 0) { stockRestPojo.setDateFifteen(stockRestPojo.getRealTime() + (15 * 60) - sec - (min % 15 * 60)); } else { stockRestPojo.setDateFifteen(stockRestPojo.getRealTime()); } // 30分钟数据 if (sec != 0 || min % 30 != 0) { stockRestPojo.setDateThirty(stockRestPojo.getRealTime() + (30 * 60) - sec - (min % 30 * 60)); } else { stockRestPojo.setDateThirty(stockRestPojo.getRealTime()); } // 60分钟数据 if (sec != 0 || min % 60 != 0) { stockRestPojo.setDateSixty(stockRestPojo.getRealTime() + (60 * 60) - sec - (min % 60 * 60)); } else { stockRestPojo.setDateSixty(stockRestPojo.getRealTime()); } StringBuffer tableName = new StringBuffer("data_rt_"); tableName.append(entry.getKey().replace(".", "_").toLowerCase()); stockRestPojo.setCode(entry.getKey().toUpperCase()); stockRestPojo.setTableName(tableName.toString()); if(new BigDecimal(stockRestPojo.getNow()+"").compareTo(BigDecimal.ZERO)!=0) { stockRestPojo.setRealTime((System.currentTimeMillis() / 1000)); stockRestPojoList.add(stockRestPojo); stockRestVO = new StockRestVO(); BeanUtils.copyProperties(stockRestPojo, stockRestVO); stockRestVOList.add(stockRestVO); stockRestRedisVO = new StockRestRedisVO(); stockRestRedisVO.setCode(entry.getKey().toUpperCase()); stockRestRedisVO.setNowPrice(stockRestPojo.getNow()); stockRestRedisVO.setChange(stockRestPojo.getChange()); stockRestRedisVO.setHcrate(stockRestPojo.getPctchange()); stockRestRedisVO.setHighlimit(stockRestPojo.getHighlimit()); stockRestRedisVO.setLowlimit(stockRestPojo.getLowlimit()); stockRestRedisVO.setBuy1(stockRestPojo.getBuyprice1()); stockRestRedisVO.setBuy2(stockRestPojo.getBuyprice2()); stockRestRedisVO.setBuy3(stockRestPojo.getBuyprice3()); stockRestRedisVO.setBuy4(stockRestPojo.getBuyprice4()); stockRestRedisVO.setBuy5(stockRestPojo.getBuyprice5()); stockRestRedisVO.setSell1(stockRestPojo.getSellprice1()); stockRestRedisVO.setSell2(stockRestPojo.getSellprice2()); stockRestRedisVO.setSell3(stockRestPojo.getSellprice3()); stockRestRedisVO.setSell4(stockRestPojo.getSellprice4()); stockRestRedisVO.setSell5(stockRestPojo.getSellprice5()); stockRestRedisVO.setBuy1_num(stockRestPojo.getBuyvolume1()); stockRestRedisVO.setBuy2_num(stockRestPojo.getBuyvolume2()); stockRestRedisVO.setBuy3_num(stockRestPojo.getBuyvolume3()); stockRestRedisVO.setBuy4_num(stockRestPojo.getBuyvolume4()); stockRestRedisVO.setBuy5_num(stockRestPojo.getBuyvolume5()); stockRestRedisVO.setSell1_num(stockRestPojo.getSellvolume1()); stockRestRedisVO.setSell2_num(stockRestPojo.getSellvolume2()); stockRestRedisVO.setSell3_num(stockRestPojo.getSellvolume3()); stockRestRedisVO.setSell4_num(stockRestPojo.getSellvolume4()); stockRestRedisVO.setSell5_num(stockRestPojo.getSellvolume5()); stockRestRedisVOList.add(stockRestRedisVO); } }catch (Exception e){ log.error("错误数据导致失败" + e); } } map = null; } // 5.入库 insertListAfter(stockRestPojoList, stockRestVOList, stockRestRedisVOList,type); stockRestPojoList = null; } private void insertList(List list, List stockRestVOList, List stockRestRedisVOList,String type) { int insertLength = list.size(); int i = 0; int insertSize = 500; while (insertLength > insertSize) { choiceStockMapper.insertBatch(list.subList(i, i + insertSize)); List subList = stockRestVOList.subList(i, i + insertSize); List subRedisList = stockRestRedisVOList.subList(i, i + insertSize); i = i + insertSize; insertLength = insertLength - insertSize; Thread thread=new Thread(new Runnable() { @Override public void run() { // HttpRequest.httpPostWithjson(url, JSON.toJSONString(subList)); // if(BuyAndSellUtils.isTransState()){ try { new WebSocketController().sendSysMsgType("GP",JSON.toJSONString(subRedisList)); // HttpRequest.httpPostWithjson(urlRedis, JSON.toJSONString(subRedisList)); }catch (Exception e){ log.error("插入redis错误" + e); } // } } }); thread.start(); } if (insertLength > 0) { choiceStockMapper.insertBatch(list.subList(i, i + insertLength)); List subList = stockRestVOList.subList(i, i + insertLength); List subRedisList = stockRestRedisVOList.subList(i, i + insertLength); Thread thread=new Thread(new Runnable() { @Override public void run() { // HttpRequest.httpPostWithjson(url, JSON.toJSONString(subList)); // if(BuyAndSellUtils.isTransState()){ try { new WebSocketController().sendSysMsgType("GP",JSON.toJSONString(subRedisList)); // HttpRequest.httpPostWithjson(urlRedis, JSON.toJSONString(subRedisList)); }catch (Exception e){ log.error("插入redis错误" + e); } // } } }); thread.start(); } } private void insertListAfter(List list, List stockRestVOList, List stockRestRedisVOList,String type) { int insertLength = list.size(); int i = 0; int insertSize = 500; while (insertLength > insertSize) { choiceStockMapper.insertBatchByAfter(list.subList(i, i + insertSize)); List subList = stockRestVOList.subList(i, i + insertSize); List subRedisList = stockRestRedisVOList.subList(i, i + insertSize); i = i + insertSize; insertLength = insertLength - insertSize; Thread thread=new Thread(new Runnable() { @Override public void run() { // HttpRequest.httpPostWithjson(url, JSON.toJSONString(subList)); // if(BuyAndSellUtils.isTransState()){ try { new WebSocketController().sendSysMsgType("GP",JSON.toJSONString(subRedisList)); // HttpRequest.httpPostWithjson(urlRedis, JSON.toJSONString(subRedisList)); }catch (Exception e){ log.error("插入redis错误" + e); } // } } }); thread.start(); } if (insertLength > 0) { choiceStockMapper.insertBatchByAfter(list.subList(i, i + insertLength)); List subList = stockRestVOList.subList(i, i + insertLength); List subRedisList = stockRestRedisVOList.subList(i, i + insertLength); Thread thread=new Thread(new Runnable() { @Override public void run() { // HttpRequest.httpPostWithjson(url, JSON.toJSONString(subList)); // if(BuyAndSellUtils.isTransState()){ try { new WebSocketController().sendSysMsgType("GP",JSON.toJSONString(subRedisList)); // HttpRequest.httpPostWithjson(urlRedis, JSON.toJSONString(subRedisList)); }catch (Exception e){ log.error("插入redis错误" + e); } // } } }); thread.start(); } } @Override public void analysisStockRestDataInFront(String type) { // 1.获取文件夹文件 按照时间顺序拿到一个 List files = FileStockUtil.getFile(sourceFileUrlInFront); if(null == files || 0 == files.size()){ return; } List stockRestPojoList = new ArrayList<>(); List stockRestVOList = new ArrayList<>(); List stockRestRedisVOList = new ArrayList<>(); StockRestPojo stockRestPojo; StockRestVO stockRestVO; StockRestRedisVO stockRestRedisVO; for (File file : files){ // 2.移动文件去另外一个文件夹 FileStockUtil.moveFile(sourceFileUrlInFront + File.separator + file.getName(), goalFileUrlInFront); // 3.读取文件内容 String str = FileStockUtil.readFileContent(goalFileUrlInFront + File.separator + file.getName()); // 4.并解析 if(StringUtils.isEmpty(str)){ continue; } Map> map = new HashMap>(); map = JSON.parseObject(str, HashMap.class); str = null; for (Map.Entry> entry : map.entrySet()) { try { stockRestPojo = new StockRestPojo(); stockRestPojo.setDate(String.valueOf(entry.getValue().get(0))); if(String.valueOf(entry.getValue().get(1)).equals("0")){ continue; } stockRestPojo.setTime(String.valueOf(entry.getValue().get(1))); stockRestPojo.setNow(String.valueOf(entry.getValue().get(2))); stockRestPojo.setHigh(String.valueOf(entry.getValue().get(3))); stockRestPojo.setLow(String.valueOf(entry.getValue().get(4))); stockRestPojo.setOpen(String.valueOf(entry.getValue().get(5))); stockRestPojo.setPreclose(String.valueOf(entry.getValue().get(6))); stockRestPojo.setRoundlot(String.valueOf(entry.getValue().get(7))); stockRestPojo.setChange(String.valueOf(entry.getValue().get(8))); stockRestPojo.setPctchange(String.valueOf(entry.getValue().get(9))); stockRestPojo.setVolume(String.valueOf(entry.getValue().get(10))); stockRestPojo.setAmount(String.valueOf(entry.getValue().get(11))); stockRestPojo.setVolumeratio(String.valueOf(entry.getValue().get(12))); stockRestPojo.setCommissionratio(String.valueOf(entry.getValue().get(13))); stockRestPojo.setCommissiondiff(String.valueOf(entry.getValue().get(14))); stockRestPojo.setTradestatus(String.valueOf(entry.getValue().get(15))); stockRestPojo.setOutvolume(String.valueOf(entry.getValue().get(16))); stockRestPojo.setInvolume(String.valueOf(entry.getValue().get(17))); stockRestPojo.setHighlimit(String.valueOf(entry.getValue().get(18))); stockRestPojo.setLowlimit(String.valueOf(entry.getValue().get(19))); stockRestPojo.setSpeed(String.valueOf(entry.getValue().get(20))); stockRestPojo.setAverageprice(String.valueOf(entry.getValue().get(21))); stockRestPojo.setBuyprice1(String.valueOf(entry.getValue().get(22))); stockRestPojo.setBuyprice2(String.valueOf(entry.getValue().get(23))); stockRestPojo.setBuyprice3(String.valueOf(entry.getValue().get(24))); stockRestPojo.setBuyprice4(String.valueOf(entry.getValue().get(25))); stockRestPojo.setBuyprice5(String.valueOf(entry.getValue().get(26))); stockRestPojo.setBuyvolume1(String.valueOf(entry.getValue().get(27))); stockRestPojo.setBuyvolume2(String.valueOf(entry.getValue().get(28))); stockRestPojo.setBuyvolume3(String.valueOf(entry.getValue().get(29))); stockRestPojo.setBuyvolume4(String.valueOf(entry.getValue().get(30))); stockRestPojo.setBuyvolume5(String.valueOf(entry.getValue().get(31))); stockRestPojo.setSellprice1(String.valueOf(entry.getValue().get(32))); stockRestPojo.setSellprice2(String.valueOf(entry.getValue().get(33))); stockRestPojo.setSellprice3(String.valueOf(entry.getValue().get(34))); stockRestPojo.setSellprice4(String.valueOf(entry.getValue().get(35))); stockRestPojo.setSellprice5(String.valueOf(entry.getValue().get(36))); stockRestPojo.setSellvolume1(String.valueOf(entry.getValue().get(37))); stockRestPojo.setSellvolume2(String.valueOf(entry.getValue().get(38))); stockRestPojo.setSellvolume3(String.valueOf(entry.getValue().get(39))); stockRestPojo.setSellvolume4(String.valueOf(entry.getValue().get(40))); stockRestPojo.setSellvolume5(String.valueOf(entry.getValue().get(41))); stockRestPojo.setClosedtime(String.valueOf(entry.getValue().get(42))); stockRestPojo.setClosedvolume(String.valueOf(entry.getValue().get(43))); stockRestPojo.setClosedamount(String.valueOf(entry.getValue().get(44))); StringBuffer dateStr = new StringBuffer(stockRestPojo.getDate()); if (StringUtils.isEmpty(stockRestPojo.getTime())) { dateStr = dateStr.append(000000); } else { if (5 == stockRestPojo.getTime().length()) { // 长度为5表示 小时前面需要补0 dateStr = dateStr.append(0).append(stockRestPojo.getTime()); } else { dateStr = dateStr.append(stockRestPojo.getTime()); } } Date date = TimeUtil.strToDate(dateStr.toString()); // 毫秒转成秒 stockRestPojo.setRealTime(date.getTime() / 1000); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int min = calendar.get(Calendar.MINUTE); // 获取分钟 int sec = calendar.get(Calendar.SECOND); // 获取秒数 // 1分钟数据 if (sec != 0) { stockRestPojo.setDateOne(stockRestPojo.getRealTime() + 60 - sec); } else { stockRestPojo.setDateOne(stockRestPojo.getRealTime()); } // 5分钟数据 if (sec != 0 || min % 5 != 0) { stockRestPojo.setDateFive(stockRestPojo.getRealTime() + (5 * 60) - sec - (min % 5 * 60)); } else { stockRestPojo.setDateFive(stockRestPojo.getRealTime()); } // 15分钟数据 if (sec != 0 || min % 15 != 0) { stockRestPojo.setDateFifteen(stockRestPojo.getRealTime() + (15 * 60) - sec - (min % 15 * 60)); } else { stockRestPojo.setDateFifteen(stockRestPojo.getRealTime()); } // 30分钟数据 if (sec != 0 || min % 30 != 0) { stockRestPojo.setDateThirty(stockRestPojo.getRealTime() + (30 * 60) - sec - (min % 30 * 60)); } else { stockRestPojo.setDateThirty(stockRestPojo.getRealTime()); } // 60分钟数据 if (sec != 0 || min % 60 != 0) { stockRestPojo.setDateSixty(stockRestPojo.getRealTime() + (60 * 60) - sec - (min % 60 * 60)); } else { stockRestPojo.setDateSixty(stockRestPojo.getRealTime()); } StringBuffer tableName = new StringBuffer("data_rt_"); tableName.append(entry.getKey().replace(".", "_").toLowerCase()); stockRestPojo.setCode(entry.getKey().toUpperCase()); stockRestPojo.setTableName(tableName.toString()); if(new BigDecimal(stockRestPojo.getNow()+"").compareTo(BigDecimal.ZERO)!=0) { stockRestPojoList.add(stockRestPojo); stockRestVO = new StockRestVO(); BeanUtils.copyProperties(stockRestPojo, stockRestVO); stockRestVOList.add(stockRestVO); stockRestRedisVO = new StockRestRedisVO(); stockRestRedisVO.setCode(entry.getKey().toUpperCase()); stockRestRedisVO.setNowPrice(stockRestPojo.getNow()); stockRestRedisVO.setChange(stockRestPojo.getChange()); stockRestRedisVO.setHcrate(stockRestPojo.getPctchange()); stockRestRedisVO.setHighlimit(stockRestPojo.getHighlimit()); stockRestRedisVO.setLowlimit(stockRestPojo.getLowlimit()); stockRestRedisVOList.add(stockRestRedisVO); } }catch (Exception e){ log.error("错误数据导致失败" + e); } } map = null; } // 5.入库 insertListInFront(stockRestPojoList, stockRestVOList, stockRestRedisVOList,type); stockRestPojoList = null; } private void insertListInFront(List list, List stockRestVOList, List stockRestRedisVOList,String type) { int insertLength = list.size(); int i = 0; int insertSize = 500; while (insertLength > insertSize) { choiceStockMapper.insertBatch(list.subList(i, i + insertSize)); List subList = stockRestVOList.subList(i, i + insertSize); List subRedisList = stockRestRedisVOList.subList(i, i + insertSize); i = i + insertSize; insertLength = insertLength - insertSize; Thread thread=new Thread(new Runnable() { @Override public void run() { // HttpRequest.httpPostWithjson(url, JSON.toJSONString(subList)); // if(BuyAndSellUtils.isTransState()){ try { new WebSocketController().sendSysMsgType("GP",JSON.toJSONString(subRedisList)); // HttpRequest.httpPostWithjson(urlRedis, JSON.toJSONString(subRedisList)); }catch (Exception e){ log.error("插入redis错误" + e); } // } } }); thread.start(); } if (insertLength > 0) { choiceStockMapper.insertBatch(list.subList(i, i + insertLength)); List subList = stockRestVOList.subList(i, i + insertLength); List subRedisList = stockRestRedisVOList.subList(i, i + insertLength); Thread thread=new Thread(new Runnable() { @Override public void run() { // HttpRequest.httpPostWithjson(url, JSON.toJSONString(subList)); // if(BuyAndSellUtils.isTransState()){ try { new WebSocketController().sendSysMsgType("GP",JSON.toJSONString(subRedisList)); // HttpRequest.httpPostWithjson(urlRedis, JSON.toJSONString(subRedisList)); }catch (Exception e){ log.error("插入redis错误" + e); } // } } }); thread.start(); } } }