浏览代码

初始化代码

z 4 年之前
父节点
当前提交
ad6a9ee7b8
共有 25 个文件被更改,包括 1444 次插入61 次删除
  1. 15 2
      src/main/java/com/zx/dataservice/controller/TaskController.java
  2. 5 1
      src/main/java/com/zx/dataservice/mapper1/ChoiceStockMapper.java
  3. 5 0
      src/main/java/com/zx/dataservice/mapper2/StockMapper.java
  4. 4 0
      src/main/java/com/zx/dataservice/mapper3/ChoiceBondMapper.java
  5. 23 0
      src/main/java/com/zx/dataservice/mapper3/CreatorMapper.java
  6. 16 0
      src/main/java/com/zx/dataservice/pojo/HistoryPojo.java
  7. 32 0
      src/main/java/com/zx/dataservice/pojo/StockHistPojo.java
  8. 20 0
      src/main/java/com/zx/dataservice/pojo/StockPojo.java
  9. 8 0
      src/main/java/com/zx/dataservice/service/ChoService.java
  10. 8 0
      src/main/java/com/zx/dataservice/service/CreatorService.java
  11. 422 0
      src/main/java/com/zx/dataservice/service/impl/ChoServiceImpl.java
  12. 19 2
      src/main/java/com/zx/dataservice/service/impl/ChoiceBondServiceImpl.java
  13. 33 25
      src/main/java/com/zx/dataservice/service/impl/ChoiceStockServiceImpl.java
  14. 327 0
      src/main/java/com/zx/dataservice/service/impl/CreatorServiceImpl.java
  15. 2 4
      src/main/java/com/zx/dataservice/task/AnalysisBondRestDataTask.java
  16. 2 5
      src/main/java/com/zx/dataservice/task/AnalysisStockRestDataTask.java
  17. 66 0
      src/main/java/com/zx/dataservice/task/MakeRestDataTask.java
  18. 65 0
      src/main/java/com/zx/dataservice/utils/BuyAndSellUtils.java
  19. 1 1
      src/main/java/com/zx/dataservice/utils/FileStockUtil.java
  20. 29 13
      src/main/java/com/zx/dataservice/utils/HttpRequest.java
  21. 13 8
      src/main/resources/application-dev.properties
  22. 70 0
      src/main/resources/mybatis/mapper1/ChoiceStockMapper.xml
  23. 44 0
      src/main/resources/mybatis/mapper2/StockMapper.xml
  24. 70 0
      src/main/resources/mybatis/mapper3/ChoiceBondMapper.xml
  25. 145 0
      src/main/resources/mybatis/mapper3/CreatorMapper.xml

+ 15 - 2
src/main/java/com/zx/dataservice/controller/TaskController.java

@@ -2,6 +2,7 @@ package com.zx.dataservice.controller;
 
 import com.zx.dataservice.config.ServerResponse;
 import com.zx.dataservice.service.ChoiceStockService;
+import com.zx.dataservice.service.CreatorService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,14 +17,26 @@ import org.springframework.web.bind.annotation.ResponseBody;
 public class TaskController {
 
     @Autowired
-    private ChoiceStockService choiceService;
+    private ChoiceStockService choiceStockService;
+
+    @Autowired
+    private CreatorService creatorService;
 
     // 获取Datafeed 配置数据
     @RequestMapping(value = {"toTask"}, method = RequestMethod.GET)
     @ResponseBody
     @ApiOperation(value="触发定时任务", notes="触发定时任务")
     public ServerResponse getPlateInfo() {
-        choiceService.analysisStockRestData();
+        choiceStockService.analysisStockRestData();
+        return ServerResponse.createBySuccess();
+    }
+
+    // 获取Datafeed 配置数据
+    @RequestMapping(value = {"creatorUvxy"}, method = RequestMethod.GET)
+    @ResponseBody
+    @ApiOperation(value="恐慌指数", notes="恐慌指数")
+    public ServerResponse creatorUvxy() {
+        creatorService.creatorUvxy();
         return ServerResponse.createBySuccess();
     }
 }

+ 5 - 1
src/main/java/com/zx/dataservice/mapper1/ChoiceStockMapper.java

@@ -8,8 +8,12 @@ import java.util.List;
 
 @Mapper
 public interface ChoiceStockMapper {
-    void insertIntoRestData(@Param("tableName") String tableName, @Param("info") StockRestPojo stockRestPojo);
 
+    void insertIntoRestData(@Param("tableName") String tableName, @Param("info") StockRestPojo stockRestPojo);
 
     void insertBatch(@Param("list") List<StockRestPojo> stockRestPojoList);
+
+    void insertRt(@Param("info")StockRestPojo stockRestPojo, @Param("tableName") String tableName);
+
+    StockRestPojo selectRtLimitOne(@Param("tableName") String tableName);
 }

+ 5 - 0
src/main/java/com/zx/dataservice/mapper2/StockMapper.java

@@ -1,5 +1,6 @@
 package com.zx.dataservice.mapper2;
 
+import com.zx.dataservice.pojo.StockPojo;
 import com.zx.dataservice.pojo.StockRestPojo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -11,4 +12,8 @@ public interface StockMapper {
     void updateStockInfo(@Param("stockCode") String stockCode, @Param("info") StockRestPojo stockRestPojo);
 
     void updateBatchStockInfo(@Param("list") List<StockRestPojo> stockRestPojoList);
+
+    Integer selectStockByStockCode(@Param("stockCode") String stockCode);
+
+    void insertStock(@Param("info") StockPojo stockPojo);
 }

+ 4 - 0
src/main/java/com/zx/dataservice/mapper3/ChoiceBondMapper.java

@@ -13,4 +13,8 @@ public interface ChoiceBondMapper {
     void insertIntoRestData(@Param("tableName") String tableName, @Param("info") StockRestPojo stockRestPojo);
 
     void insertBatch(@Param("list") List<StockRestPojo> stockRestPojoList);
+
+    StockRestPojo selectRtLimitOne(@Param("tableName") String tableName);
+
+    void insertRt(@Param("info")StockRestPojo stockRestPojo, @Param("tableName") String tableName);
 }

+ 23 - 0
src/main/java/com/zx/dataservice/mapper3/CreatorMapper.java

@@ -0,0 +1,23 @@
+package com.zx.dataservice.mapper3;
+
+import com.zx.dataservice.pojo.HistoryPojo;
+import com.zx.dataservice.pojo.StockHistPojo;
+import com.zx.dataservice.pojo.StockRestPojo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface CreatorMapper {
+
+    HistoryPojo selectHistory(@Param("tableName") String tableName);
+
+    void insertRt(@Param("info") StockRestPojo stockRestPojo, @Param("tableName") String tableName);
+
+    StockRestPojo selectRtLimitOne(@Param("tableName") String tableName);
+
+    void deleteHistoryTemp(@Param("tableName") String tableName);
+
+    StockRestPojo selectRtAll(@Param("tableName") String tableName);
+
+    void insertHistory(@Param("info") StockHistPojo stockHistPojo, @Param("tableName") String histTableName);
+}

+ 16 - 0
src/main/java/com/zx/dataservice/pojo/HistoryPojo.java

@@ -0,0 +1,16 @@
+package com.zx.dataservice.pojo;
+
+import lombok.Data;
+
+@Data
+public class HistoryPojo {
+    private Double close;
+    private Double preClose;
+    private Double change;
+    private Double pctChange;
+    private Double open;
+    private Double high;
+    private Double low;
+    private Double volume;
+
+}

+ 32 - 0
src/main/java/com/zx/dataservice/pojo/StockHistPojo.java

@@ -0,0 +1,32 @@
+package com.zx.dataservice.pojo;
+
+import lombok.Data;
+
+@Data
+public class StockHistPojo {
+    private String open;
+    private String close;
+    private String high;
+    private String low;
+    private String preclose;
+    private String average;
+    private String change;
+    private String pctchange;
+    private String volume;
+    private String highlimit;
+    private String amount;
+    private String turn;
+    private String tradestatus;
+    private String lowlimit;
+    private String amplitude;
+    private String tnum;
+    private String tafactor;
+    private String fronttafactor;
+    private String isststock;
+    private String isxststock;
+    private String dateYear;
+    private String dateMonth;
+    private String dateWeek;
+    private String dateDay;
+    private String realTime;
+}

+ 20 - 0
src/main/java/com/zx/dataservice/pojo/StockPojo.java

@@ -0,0 +1,20 @@
+package com.zx.dataservice.pojo;
+
+import lombok.Data;
+
+
+@Data
+public class StockPojo {
+    private String stockName;
+    private String stockCode;
+    private String stockSpell;
+    private String stockType;
+    private String stockGid;
+    private String stockPlate;
+    private Integer isLock;
+    private Integer isShow;
+    private Integer buyLimit;
+    private Integer isLimitUpBuy;
+    private Integer isStopTradingBuy;
+    private Integer stockOrBond;
+}

+ 8 - 0
src/main/java/com/zx/dataservice/service/ChoService.java

@@ -0,0 +1,8 @@
+package com.zx.dataservice.service;
+
+public interface ChoService {
+
+    void insertRtStock();
+
+    void insertRtBood();
+}

+ 8 - 0
src/main/java/com/zx/dataservice/service/CreatorService.java

@@ -0,0 +1,8 @@
+package com.zx.dataservice.service;
+
+public interface CreatorService {
+
+    void creatorUvxy();
+
+    void creatorUvxyHist();
+}

+ 422 - 0
src/main/java/com/zx/dataservice/service/impl/ChoServiceImpl.java

@@ -0,0 +1,422 @@
+package com.zx.dataservice.service.impl;
+
+
+import com.alibaba.fastjson.JSON;
+import com.zx.dataservice.mapper1.ChoiceStockMapper;
+import com.zx.dataservice.mapper2.StockMapper;
+import com.zx.dataservice.mapper3.ChoiceBondMapper;
+import com.zx.dataservice.pojo.StockPojo;
+import com.zx.dataservice.pojo.StockRestPojo;
+import com.zx.dataservice.service.ChoService;
+import com.zx.dataservice.utils.HttpRequest;
+import com.zx.dataservice.utils.TimeUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Service
+public class ChoServiceImpl implements ChoService {
+
+    private static final String url = "http://huarongjgb.com/lucene/updateInfo.do";
+
+    @Autowired
+    private StockMapper stockMapper;
+
+    @Autowired
+    private ChoiceStockMapper choiceStockMapper;
+
+    @Autowired
+    private ChoiceBondMapper choiceBondMapper;
+
+    private BigDecimal random(){
+        Random rd = new Random();
+        BigDecimal returnNum = new BigDecimal((rd.nextDouble() * 100) / 100);
+        int i = ((int)(10 * Math.random())) % 2;
+        if(0 == i){
+            return BigDecimal.ZERO.subtract(returnNum).setScale(2, BigDecimal.ROUND_HALF_UP);
+        }
+        return returnNum.setScale(2, BigDecimal.ROUND_HALF_UP);
+    }
+
+    private int randomInt(){
+        Random r = new Random(1);
+        int max = 10, min1 = 5;
+        int ran1 = (int) (Math.random() * (max - min1) + min1);
+        return ran1;
+    }
+
+    public void insertRtStock() {
+        String code = "897689.SH";
+        String gid = "sh897689";
+        String now = "8.66";
+        String tableName = "data_rt_897689_sh";
+        Integer stockCount = stockMapper.selectStockByStockCode(code);
+        if(0 == stockCount || null == stockCount){
+            StockPojo stockPojo = new StockPojo();
+            stockPojo.setStockName("测试新股4");
+            stockPojo.setStockCode(code);
+            stockPojo.setStockSpell("csxg4");
+            stockPojo.setStockType("sh");
+            stockPojo.setStockGid(gid);
+            stockPojo.setStockPlate("普通");
+            stockPojo.setIsLock(0);
+            stockPojo.setIsShow(0);
+            stockPojo.setBuyLimit(1);
+            stockPojo.setStockOrBond(0);
+            stockMapper.insertStock(stockPojo);
+        }
+        Date d = new Date();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        SimpleDateFormat sdf1 = new SimpleDateFormat("HHmmss");
+        String dateNowStr = sdf.format(d);
+        String dateNowStr1 = sdf1.format(d);
+        StockRestPojo entry = choiceStockMapper.selectRtLimitOne(tableName);
+        if(null == entry){
+            entry = new StockRestPojo();
+            entry.setCode(code);
+            entry.setNow(now);
+            entry.setHigh(now);
+            entry.setLow(now);
+            entry.setOpen(now);
+            entry.setPreclose(now);
+            entry.setRoundlot("0");
+            entry.setChange("0");
+            entry.setPctchange("0");
+            entry.setVolume("1000");
+            entry.setAmount("1000");
+            entry.setVolumeratio("0");
+            entry.setCommissionratio("0");
+            entry.setCommissiondiff("0");
+            entry.setTradestatus("0");
+            entry.setOutvolume("0");
+            entry.setInvolume("0");
+            entry.setHighlimit("0");
+            entry.setLowlimit("0");
+            entry.setSpeed("0");
+            entry.setAverageprice("0");
+            entry.setBuyprice1(now);
+            entry.setBuyprice2(now);
+            entry.setBuyprice3(now);
+            entry.setBuyprice4(now);
+            entry.setBuyprice5(now);
+            entry.setBuyvolume1("1000");
+            entry.setBuyvolume2("1000");
+            entry.setBuyvolume3("1000");
+            entry.setBuyvolume4("1000");
+            entry.setBuyvolume5("1000");
+            entry.setSellprice1(now);
+            entry.setSellprice2(now);
+            entry.setSellprice3(now);
+            entry.setSellprice4(now);
+            entry.setSellprice5(now);
+            entry.setSellvolume1("1000");
+            entry.setSellvolume2("1000");
+            entry.setSellvolume3("1000");
+            entry.setSellvolume4("1000");
+            entry.setSellvolume5("1000");
+            entry.setClosedtime("0");
+            entry.setClosedvolume("0");
+            entry.setClosedamount("0");
+        }
+        StockRestPojo stockRestPojo = new StockRestPojo();
+        stockRestPojo.setDate(dateNowStr);
+        stockRestPojo.setTime(dateNowStr1);
+        stockRestPojo.setNow(String.valueOf(new BigDecimal(entry.getNow()).add(random())));
+        stockRestPojo.setHigh(String.valueOf(new BigDecimal(entry.getHigh()).add(random())));
+        stockRestPojo.setLow(String.valueOf(new BigDecimal(entry.getLow()).add(random())));
+        stockRestPojo.setOpen(String.valueOf(new BigDecimal(entry.getOpen()).add(random())));
+        stockRestPojo.setPreclose(String.valueOf(new BigDecimal(entry.getPctchange()).add(random())));
+        stockRestPojo.setRoundlot(String.valueOf(new BigDecimal(entry.getRoundlot()).add(random())));
+        stockRestPojo.setChange(String.valueOf(new BigDecimal(entry.getChange()).add(random())));
+        stockRestPojo.setPctchange(String.valueOf(new BigDecimal(entry.getPctchange()).add(random())));
+        stockRestPojo.setVolume(String.valueOf(new BigDecimal(entry.getVolume()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setAmount(String.valueOf(new BigDecimal(entry.getAmount()).add(random())));
+        stockRestPojo.setVolumeratio(String.valueOf(new BigDecimal(entry.getVolumeratio()).add(random())));
+        stockRestPojo.setCommissionratio(String.valueOf(new BigDecimal(entry.getCommissionratio()).add(random())));
+        stockRestPojo.setCommissiondiff(String.valueOf(new BigDecimal(entry.getCommissiondiff()).add(random())));
+        stockRestPojo.setTradestatus(String.valueOf(new BigDecimal(entry.getTradestatus()).add(random())));
+        stockRestPojo.setOutvolume(String.valueOf(new BigDecimal(entry.getOutvolume()).add(random())));
+        stockRestPojo.setInvolume(String.valueOf(new BigDecimal(entry.getInvolume()).add(random())));
+        stockRestPojo.setHighlimit(String.valueOf(new BigDecimal(entry.getHighlimit()).add(random())));
+        stockRestPojo.setLowlimit(String.valueOf(new BigDecimal(entry.getLowlimit()).add(random())));
+        stockRestPojo.setSpeed(String.valueOf(new BigDecimal(entry.getSpeed()).add(random())));
+        stockRestPojo.setAverageprice(String.valueOf(new BigDecimal(entry.getAverageprice()).add(random())));
+        stockRestPojo.setBuyprice1(String.valueOf(new BigDecimal(entry.getBuyprice1()).add(random())));
+        stockRestPojo.setBuyprice2(String.valueOf(new BigDecimal(entry.getBuyprice2()).add(random())));
+        stockRestPojo.setBuyprice3(String.valueOf(new BigDecimal(entry.getBuyprice3()).add(random())));
+        stockRestPojo.setBuyprice4(String.valueOf(new BigDecimal(entry.getBuyprice4()).add(random())));
+        stockRestPojo.setBuyprice5(String.valueOf(new BigDecimal(entry.getBuyprice5()).add(random())));
+        stockRestPojo.setBuyvolume1(String.valueOf(new BigDecimal(entry.getBuyvolume1()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setBuyvolume2(String.valueOf(new BigDecimal(entry.getBuyvolume2()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setBuyvolume3(String.valueOf(new BigDecimal(entry.getBuyvolume3()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setBuyvolume4(String.valueOf(new BigDecimal(entry.getBuyvolume4()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setBuyvolume5(String.valueOf(new BigDecimal(entry.getBuyvolume5()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellprice1(String.valueOf(new BigDecimal(entry.getSellprice1()).add(random())));
+        stockRestPojo.setSellprice2(String.valueOf(new BigDecimal(entry.getSellprice2()).add(random())));
+        stockRestPojo.setSellprice3(String.valueOf(new BigDecimal(entry.getSellprice3()).add(random())));
+        stockRestPojo.setSellprice4(String.valueOf(new BigDecimal(entry.getSellprice4()).add(random())));
+        stockRestPojo.setSellprice5(String.valueOf(new BigDecimal(entry.getSellprice5()).add(random())));
+        stockRestPojo.setSellvolume1(String.valueOf(new BigDecimal(entry.getBuyvolume1()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellvolume2(String.valueOf(new BigDecimal(entry.getBuyvolume2()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellvolume3(String.valueOf(new BigDecimal(entry.getBuyvolume3()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellvolume4(String.valueOf(new BigDecimal(entry.getBuyvolume4()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellvolume5(String.valueOf(new BigDecimal(entry.getBuyvolume5()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setClosedtime(String.valueOf(new BigDecimal(entry.getClosedtime()).add(random())));
+        stockRestPojo.setClosedvolume(String.valueOf(new BigDecimal(entry.getClosedvolume()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setClosedamount(String.valueOf(new BigDecimal(entry.getClosedamount()).add(random())));
+        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());
+        }
+        stockRestPojo.setCode(code);
+        insertStock(stockRestPojo, tableName);
+        List<StockRestPojo> list = new ArrayList<>();
+        list.add(stockRestPojo);
+        stockMapper.updateBatchStockInfo(list);
+    }
+
+    private void insertStock(StockRestPojo stockRestPojo, String tableName) {
+        choiceStockMapper.insertRt(stockRestPojo, tableName);
+        List<StockRestPojo> list = new ArrayList<>();
+        list.add(stockRestPojo);
+        Thread thread=new Thread(new Runnable() {
+            @Override
+            public void run() {
+                HttpRequest.httpPostWithjson(url, JSON.toJSONString(list));
+            }
+        });
+//        thread.start();
+    }
+
+    public void insertRtBood() {
+        String code = "989589.SH";
+        String gid = "sh989589";
+        String now = "108.66";
+        String tableName = "data_rt_989589_sh";
+        Integer stockCount = stockMapper.selectStockByStockCode(code);
+        if(0 == stockCount || null == stockCount){
+            StockPojo stockPojo = new StockPojo();
+            stockPojo.setStockName("测试新债4");
+            stockPojo.setStockCode(code);
+            stockPojo.setStockSpell("csxz4");
+            stockPojo.setStockType("sh");
+            stockPojo.setStockGid(gid);
+            stockPojo.setStockPlate("普通");
+            stockPojo.setIsLock(0);
+            stockPojo.setIsShow(0);
+            stockPojo.setBuyLimit(1);
+            stockPojo.setStockOrBond(1);
+            stockMapper.insertStock(stockPojo);
+        }
+        Date d = new Date();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        SimpleDateFormat sdf1 = new SimpleDateFormat("HHmmss");
+        String dateNowStr = sdf.format(d);
+        String dateNowStr1 = sdf1.format(d);
+        StockRestPojo entry = choiceBondMapper.selectRtLimitOne(tableName);
+        if(null == entry){
+            entry = new StockRestPojo();
+            entry.setCode(code);
+            entry.setNow(now);
+            entry.setHigh(now);
+            entry.setLow(now);
+            entry.setOpen(now);
+            entry.setPreclose(now);
+            entry.setRoundlot("0");
+            entry.setChange("0");
+            entry.setPctchange("0");
+            entry.setVolume("1000");
+            entry.setAmount("1000");
+            entry.setBuyprice1(now);
+            entry.setBuyprice2(now);
+            entry.setBuyprice3(now);
+            entry.setBuyprice4(now);
+            entry.setBuyprice5(now);
+            entry.setBuyvolume1("1000");
+            entry.setBuyvolume2("1000");
+            entry.setBuyvolume3("1000");
+            entry.setBuyvolume4("1000");
+            entry.setBuyvolume5("1000");
+            entry.setSellprice1(now);
+            entry.setSellprice2(now);
+            entry.setSellprice3(now);
+            entry.setSellprice4(now);
+            entry.setSellprice5(now);
+            entry.setSellvolume1("1000");
+            entry.setSellvolume2("1000");
+            entry.setSellvolume3("1000");
+            entry.setSellvolume4("1000");
+            entry.setSellvolume5("1000");
+        }
+        StockRestPojo stockRestPojo = new StockRestPojo();
+        stockRestPojo.setDate(dateNowStr);
+        stockRestPojo.setTime(dateNowStr1);
+        stockRestPojo.setNow(String.valueOf(new BigDecimal(entry.getNow()).add(random())));
+        stockRestPojo.setHigh(String.valueOf(new BigDecimal(entry.getHigh()).add(random())));
+        stockRestPojo.setLow(String.valueOf(new BigDecimal(entry.getLow()).add(random())));
+        stockRestPojo.setOpen(String.valueOf(new BigDecimal(entry.getOpen()).add(random())));
+        stockRestPojo.setPreclose(String.valueOf(new BigDecimal(entry.getPctchange()).add(random())));
+        stockRestPojo.setRoundlot(String.valueOf(new BigDecimal(entry.getRoundlot()).add(random())));
+        stockRestPojo.setChange(String.valueOf(new BigDecimal(entry.getChange()).add(random())));
+        stockRestPojo.setPctchange(String.valueOf(new BigDecimal(entry.getPctchange()).add(random())));
+        stockRestPojo.setVolume(String.valueOf(new BigDecimal(entry.getVolume()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setAmount(String.valueOf(new BigDecimal(entry.getAmount()).add(random())));
+        stockRestPojo.setVolumeratio("");
+        stockRestPojo.setCommissionratio("");
+        stockRestPojo.setCommissiondiff("");
+        stockRestPojo.setTradestatus("");
+        stockRestPojo.setOutvolume("");
+        stockRestPojo.setInvolume("");
+        stockRestPojo.setHighlimit("");
+        stockRestPojo.setLowlimit("");
+        stockRestPojo.setSpeed("");
+        stockRestPojo.setAverageprice("");
+        stockRestPojo.setBuyprice1(String.valueOf(new BigDecimal(entry.getBuyprice1()).add(random())));
+        stockRestPojo.setBuyprice2(String.valueOf(new BigDecimal(entry.getBuyprice2()).add(random())));
+        stockRestPojo.setBuyprice3(String.valueOf(new BigDecimal(entry.getBuyprice3()).add(random())));
+        stockRestPojo.setBuyprice4(String.valueOf(new BigDecimal(entry.getBuyprice4()).add(random())));
+        stockRestPojo.setBuyprice5(String.valueOf(new BigDecimal(entry.getBuyprice5()).add(random())));
+        stockRestPojo.setBuyvolume1(String.valueOf(new BigDecimal(entry.getBuyvolume1()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setBuyvolume2(String.valueOf(new BigDecimal(entry.getBuyvolume2()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setBuyvolume3(String.valueOf(new BigDecimal(entry.getBuyvolume3()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setBuyvolume4(String.valueOf(new BigDecimal(entry.getBuyvolume4()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setBuyvolume5(String.valueOf(new BigDecimal(entry.getBuyvolume5()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellprice1(String.valueOf(new BigDecimal(entry.getSellprice1()).add(random())));
+        stockRestPojo.setSellprice2(String.valueOf(new BigDecimal(entry.getSellprice2()).add(random())));
+        stockRestPojo.setSellprice3(String.valueOf(new BigDecimal(entry.getSellprice3()).add(random())));
+        stockRestPojo.setSellprice4(String.valueOf(new BigDecimal(entry.getSellprice4()).add(random())));
+        stockRestPojo.setSellprice5(String.valueOf(new BigDecimal(entry.getSellprice5()).add(random())));
+        stockRestPojo.setSellvolume1(String.valueOf(new BigDecimal(entry.getBuyvolume1()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellvolume2(String.valueOf(new BigDecimal(entry.getBuyvolume2()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellvolume3(String.valueOf(new BigDecimal(entry.getBuyvolume3()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellvolume4(String.valueOf(new BigDecimal(entry.getBuyvolume4()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setSellvolume5(String.valueOf(new BigDecimal(entry.getBuyvolume5()).add(new BigDecimal(randomInt()))));
+        stockRestPojo.setClosedtime("");
+        stockRestPojo.setClosedvolume("");
+        stockRestPojo.setClosedamount("");
+        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());
+        }
+        stockRestPojo.setCode(code);
+        insertListBood(stockRestPojo, tableName);
+        List<StockRestPojo> list = new ArrayList<>();
+        list.add(stockRestPojo);
+        stockMapper.updateBatchStockInfo(list);
+    }
+
+    private void insertListBood(StockRestPojo stockRestPojo, String tableName) {
+        choiceBondMapper.insertRt(stockRestPojo, tableName);
+        List<StockRestPojo> list = new ArrayList<>();
+        list.add(stockRestPojo);
+        Thread thread=new Thread(new Runnable() {
+            @Override
+            public void run() {
+                HttpRequest.httpPostWithjson(url, JSON.toJSONString(list));
+            }
+        });
+//        thread.start();
+    }
+}

+ 19 - 2
src/main/java/com/zx/dataservice/service/impl/ChoiceBondServiceImpl.java

@@ -7,6 +7,7 @@ import com.zx.dataservice.pojo.StockRestPojo;
 import com.zx.dataservice.service.ChoiceBondService;
 import com.zx.dataservice.utils.DateTimeUtil;
 import com.zx.dataservice.utils.FileBondUtil;
+import com.zx.dataservice.utils.HttpRequest;
 import com.zx.dataservice.utils.TimeUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -26,6 +27,8 @@ public class ChoiceBondServiceImpl implements ChoiceBondService {
 
     private static final String goalFileUrl = "/www/wwwroot/csqdata/bond/backup";
 
+    private static final String url = "http://huarongjgb.com/lucene/updateInfo.do";
+
     @Autowired
     private ChoiceBondMapper choiceBondMapper;
 
@@ -175,13 +178,27 @@ public class ChoiceBondServiceImpl implements ChoiceBondService {
         int insertSize = 200;
         while (insertLength > insertSize) {
             choiceBondMapper.insertBatch(list.subList(i, i + insertSize));
-//            stockMapper.updateBatchStockInfo(list.subList(i, i + 500));
+            stockMapper.updateBatchStockInfo(list.subList(i, i + 500));
             i = i + insertSize;
             insertLength = insertLength - insertSize;
+            Thread thread=new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    HttpRequest.httpPostWithjson(url, JSON.toJSONString(list));
+                }
+            });
+//            thread.start();
         }
         if (insertLength > 0) {
             choiceBondMapper.insertBatch(list.subList(i, i + insertLength));
-//            stockMapper.updateBatchStockInfo(list.subList(i, i + insertLength));
+            stockMapper.updateBatchStockInfo(list.subList(i, i + insertLength));
+            Thread thread=new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    HttpRequest.httpPostWithjson(url, JSON.toJSONString(list));
+                }
+            });
+//            thread.start();
         }
         log.info("=====入库==债券==结束,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
     }

+ 33 - 25
src/main/java/com/zx/dataservice/service/impl/ChoiceStockServiceImpl.java

@@ -7,6 +7,7 @@ import com.zx.dataservice.pojo.StockRestPojo;
 import com.zx.dataservice.service.ChoiceStockService;
 import com.zx.dataservice.utils.DateTimeUtil;
 import com.zx.dataservice.utils.FileStockUtil;
+import com.zx.dataservice.utils.HttpRequest;
 import com.zx.dataservice.utils.TimeUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -26,6 +27,9 @@ public class ChoiceStockServiceImpl implements ChoiceStockService {
 
     private static final String goalFileUrl = "/www/wwwroot/csqdata/stock/backup";
 
+//    private static final String url = "http://huarongjgb.com/lucene/updateInfo.do";
+    private static final String url = "http://huarongjgb.com/lucene/updateInfo.do";
+
     @Autowired
     private ChoiceStockMapper choiceStockMapper;
 
@@ -173,30 +177,34 @@ public class ChoiceStockServiceImpl implements ChoiceStockService {
     }
 
     private void insertList(List<StockRestPojo> list) {
-//        try {
-            log.info("=====入库===股票==开始,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
-            int insertLength = list.size();
-            int i = 0;
-            int insertSize = 500;
-            while (insertLength > insertSize) {
-                choiceStockMapper.insertBatch(list.subList(i, i + insertSize));
-//                Thread.sleep(1000);
-                stockMapper.updateBatchStockInfo(list.subList(i, i + insertSize));
-//                Thread.sleep(1000);
-                i = i + insertSize;
-                insertLength = insertLength - insertSize;
-
-            }
-            if (insertLength > 0) {
-                choiceStockMapper.insertBatch(list.subList(i, i + insertLength));
-//                Thread.sleep(1000);
-                stockMapper.updateBatchStockInfo(list.subList(i, i + insertLength));
-            }
-            log.info("=====入库==股票==结束,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
-//        } catch (InterruptedException e) {
-//            e.printStackTrace();
-//            log.info(e.getLocalizedMessage());
-//            log.info(e.toString());
-//        }
+        log.info("=====入库===股票==开始,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+        int insertLength = list.size();
+        int i = 0;
+        int insertSize = 500;
+        while (insertLength > insertSize) {
+            choiceStockMapper.insertBatch(list.subList(i, i + insertSize));
+            stockMapper.updateBatchStockInfo(list.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(list));
+                }
+            });
+//            thread.start();
+        }
+        if (insertLength > 0) {
+            choiceStockMapper.insertBatch(list.subList(i, i + insertLength));
+            stockMapper.updateBatchStockInfo(list.subList(i, i + insertLength));
+            Thread thread=new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    HttpRequest.httpPostWithjson(url, JSON.toJSONString(list));
+                }
+            });
+//            thread.start();
+        }
+        log.info("=====入库==股票==结束,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
     }
 }

+ 327 - 0
src/main/java/com/zx/dataservice/service/impl/CreatorServiceImpl.java

@@ -0,0 +1,327 @@
+package com.zx.dataservice.service.impl;
+
+import com.zx.dataservice.mapper2.StockMapper;
+import com.zx.dataservice.mapper3.CreatorMapper;
+import com.zx.dataservice.pojo.HistoryPojo;
+import com.zx.dataservice.pojo.StockHistPojo;
+import com.zx.dataservice.pojo.StockPojo;
+import com.zx.dataservice.pojo.StockRestPojo;
+import com.zx.dataservice.service.CreatorService;
+import com.zx.dataservice.utils.TimeUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+@Service
+public class CreatorServiceImpl implements CreatorService {
+
+    @Autowired
+    private CreatorMapper creatorMapper;
+
+    @Autowired
+    private StockMapper stockMapper;
+
+    private static String initNow = null;
+    @Override
+    public void creatorUvxy() {
+        // 1.先去临时表查找第一条数据
+        String tableName = "data_hist_869735_sh_temp";
+        String code = "869735.SH";
+        String gid = "sh869735";
+        Integer stockCount = stockMapper.selectStockByStockCode(code);
+        if(0 == stockCount || null == stockCount){
+            StockPojo stockPojo = new StockPojo();
+            stockPojo.setStockName("华融发债");
+            stockPojo.setStockCode(code);
+            stockPojo.setStockSpell("hrfz");
+            stockPojo.setStockType("sh");
+            stockPojo.setStockGid(gid);
+            stockPojo.setStockPlate("普通");
+            stockPojo.setIsLock(0);
+            stockPojo.setIsShow(0);
+            stockPojo.setBuyLimit(1);
+            stockPojo.setStockOrBond(1);
+            stockMapper.insertStock(stockPojo);
+        }
+        HistoryPojo historyPojo = creatorMapper.selectHistory(tableName);
+        // 2.第一次的数据不用实际数据 设置初始值为100
+        toCreatorUvxy(historyPojo);
+    }
+
+    @Override
+    public void creatorUvxyHist() {
+        // 1.首先删除掉temp表中的第一条
+        String histTempTableName = "data_hist_869735_sh_temp";
+        HistoryPojo historyPojo = creatorMapper.selectHistory(histTempTableName);
+        creatorMapper.deleteHistoryTemp(histTempTableName);
+        // 2.用实时表中的数据构造一条历史记录
+        String restTableName = "data_rt_869735_sh";
+        StockRestPojo stockRestPojo = creatorMapper.selectRtAll(restTableName);
+        StockHistPojo stockHistPojo = new StockHistPojo();
+        stockHistPojo.setOpen(stockRestPojo.getOpen());
+        stockHistPojo.setClose(stockRestPojo.getOpen());
+        stockHistPojo.setHigh(stockRestPojo.getHigh());
+        stockHistPojo.setLow(stockRestPojo.getLow());
+        stockHistPojo.setAverage("0");
+        stockHistPojo.setVolume(stockRestPojo.getVolume());
+        stockHistPojo.setHighlimit("0");
+        stockHistPojo.setAmount("0");
+        stockHistPojo.setTnum("0");
+        stockHistPojo.setTradestatus("0");
+        stockHistPojo.setLowlimit("0");
+        stockHistPojo.setAmplitude("0");
+        stockHistPojo.setTnum("0");
+        stockHistPojo.setTafactor("0");
+        stockHistPojo.setFronttafactor("0");
+        stockHistPojo.setIsststock("0");
+        stockHistPojo.setIsxststock("0");
+        stockHistPojo.setPreclose(stockRestPojo.getClose());
+        stockHistPojo.setChange(String.valueOf(new BigDecimal(stockRestPojo.getClose()).subtract(new BigDecimal(stockRestPojo.getPreclose())).setScale(2, BigDecimal.ROUND_HALF_UP)));
+        stockHistPojo.setPctchange(String.valueOf(historyPojo.getPctChange()));
+
+        try {
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
+            Date date = new Date(stockRestPojo.getDate());
+            String dateStr = formatter.format(date);
+            date = formatter.parse(dateStr);
+            String yearDatTime = String.valueOf(date.getTime());
+
+            formatter = new SimpleDateFormat("yyyyMM");
+            date = new Date(stockRestPojo.getDate());
+            dateStr = formatter.format(date);
+            date = formatter.parse(dateStr);
+            String monthDatTime = String.valueOf(date.getTime());
+
+            Calendar cld = Calendar.getInstance();
+            cld.setTime(new Date(stockRestPojo.getDate()));
+            int firstDay = cld.get(Calendar.DAY_OF_WEEK);
+            cld.add(Calendar.DATE, -firstDay);
+            String weekDatTime = String.valueOf(cld.getTime().getTime());
+
+            formatter = new SimpleDateFormat("yyyyMMdd");
+            date = new Date(stockRestPojo.getDate());
+            dateStr = formatter.format(date);
+            date = formatter.parse(dateStr);
+            String dayDatTime = String.valueOf(date.getTime());
+
+            stockHistPojo.setDateYear(yearDatTime);
+            stockHistPojo.setDateMonth(monthDatTime);
+            stockHistPojo.setDateWeek(weekDatTime);
+            stockHistPojo.setDateDay(dayDatTime);
+            stockHistPojo.setRealTime(dayDatTime);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        String histTableName = "data_hist_869735_sh";
+        creatorMapper.insertHistory(stockHistPojo, histTableName);
+    }
+
+    private void toCreatorUvxy(HistoryPojo historyPojo){
+        String code = "869735.SH";
+        String tableName = "data_rt_869735_sh";
+        Date d = new Date();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        SimpleDateFormat sdf1 = new SimpleDateFormat("HHmmss");
+        String dateNowStr = sdf.format(d);
+        String dateNowStr1 = sdf1.format(d);
+        StockRestPojo entry;
+
+        String now ;
+        StockRestPojo stockRestPojo = new StockRestPojo();
+        stockRestPojo.setDate(dateNowStr);
+        stockRestPojo.setTime(dateNowStr1);
+        entry = creatorMapper.selectRtLimitOne(tableName);
+        if(null == entry){
+            initNow = "100";
+            now = "100";
+            entry = new StockRestPojo();
+            entry.setCode(code);
+            entry.setNow(now);
+            entry.setHigh(now);
+            entry.setLow(now);
+            entry.setOpen(now);
+            entry.setPreclose(now);
+            entry.setRoundlot("0");
+            entry.setChange("0");
+            entry.setPctchange("0");
+            entry.setVolume("0");
+            entry.setAmount("0");
+            entry.setBuyprice1(now);
+            entry.setBuyprice2(now);
+            entry.setBuyprice3(now);
+            entry.setBuyprice4(now);
+            entry.setBuyprice5(now);
+            entry.setBuyvolume1("0");
+            entry.setBuyvolume2("0");
+            entry.setBuyvolume3("0");
+            entry.setBuyvolume4("0");
+            entry.setBuyvolume5("0");
+            entry.setSellprice1(now);
+            entry.setSellprice2(now);
+            entry.setSellprice3(now);
+            entry.setSellprice4(now);
+            entry.setSellprice5(now);
+            entry.setSellvolume1("0");
+            entry.setSellvolume2("0");
+            entry.setSellvolume3("0");
+            entry.setSellvolume4("0");
+            entry.setSellvolume5("0");
+            stockRestPojo.setNow(now);
+        }else{
+            now = entry.getNow();
+            if(null == initNow){
+                initNow = entry.getPreclose();
+            }
+            // 如果当前时间等于15点整, 则入库价格就是今天的昨收
+            String timeStr = "14:59";
+            Date time = new Date();
+            SimpleDateFormat f = new SimpleDateFormat("HH:mm");
+            if(f.format(time).equals(timeStr)){
+                stockRestPojo.setNow(String.valueOf(Double.valueOf(initNow) + historyPojo.getPctChange()));
+            }else{
+                stockRestPojo.setNow(String.valueOf(random(historyPojo, initNow, now)));
+            }
+        }
+        stockRestPojo.setHigh(stockRestPojo.getNow());
+        stockRestPojo.setLow(stockRestPojo.getNow());
+        stockRestPojo.setOpen(stockRestPojo.getNow());
+        stockRestPojo.setPreclose(initNow);
+        stockRestPojo.setRoundlot(String.valueOf(new BigDecimal(entry.getRoundlot()).add(random(historyPojo, initNow, now))));
+        stockRestPojo.setChange(String.valueOf(new BigDecimal(stockRestPojo.getNow()).subtract(new BigDecimal(initNow))));
+        stockRestPojo.setPctchange(String.valueOf((new BigDecimal(stockRestPojo.getNow()).subtract(new BigDecimal(initNow))).divide(new BigDecimal(initNow),2 ,4)));
+        stockRestPojo.setVolume(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setAmount(String.valueOf(new BigDecimal(entry.getNow()).multiply(new BigDecimal(stockRestPojo.getVolume()))));
+        stockRestPojo.setVolumeratio("");
+        stockRestPojo.setCommissionratio("");
+        stockRestPojo.setCommissiondiff("");
+        stockRestPojo.setTradestatus("");
+        stockRestPojo.setOutvolume("");
+        stockRestPojo.setInvolume("");
+        stockRestPojo.setHighlimit("");
+        stockRestPojo.setLowlimit("");
+        stockRestPojo.setSpeed("");
+        stockRestPojo.setAverageprice("");
+        stockRestPojo.setBuyprice1(randomBuySell(stockRestPojo.getNow(),0));
+        stockRestPojo.setBuyprice2(randomBuySell(stockRestPojo.getBuyprice1(),0));
+        stockRestPojo.setBuyprice3(randomBuySell(stockRestPojo.getBuyprice2(),0));
+        stockRestPojo.setBuyprice4(randomBuySell(stockRestPojo.getBuyprice3(),0));
+        stockRestPojo.setBuyprice5(randomBuySell(stockRestPojo.getBuyprice4(),0));
+        stockRestPojo.setBuyvolume1(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setBuyvolume2(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setBuyvolume3(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setBuyvolume4(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setBuyvolume5(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setSellprice1(randomBuySell(stockRestPojo.getNow(),1));
+        stockRestPojo.setSellprice2(randomBuySell(stockRestPojo.getSellprice1(),0));
+        stockRestPojo.setSellprice3(randomBuySell(stockRestPojo.getSellprice2(),0));
+        stockRestPojo.setSellprice4(randomBuySell(stockRestPojo.getSellprice3(),0));
+        stockRestPojo.setSellprice5(randomBuySell(stockRestPojo.getSellprice4(),0));
+        stockRestPojo.setSellvolume1(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setSellvolume2(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setSellvolume3(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setSellvolume4(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setSellvolume5(String.valueOf(new BigDecimal(randomInt())));
+        stockRestPojo.setClosedtime("");
+        stockRestPojo.setClosedvolume("");
+        stockRestPojo.setClosedamount("");
+        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());
+        }
+        stockRestPojo.setCode(code);
+        creatorMapper.insertRt(stockRestPojo, tableName);
+    }
+
+    private BigDecimal random(HistoryPojo historyPojo, String initNow, String now){
+        // 昨收 + 涨跌幅
+        double max;
+        double min;
+        if(historyPojo.getPctChange() > 0) {
+            max = Double.valueOf(initNow) + historyPojo.getPctChange();
+            min = Double.valueOf(initNow) - 2;
+        }else{
+            max = Double.valueOf(initNow) + 2;
+            min = Double.valueOf(initNow) - Math.abs(historyPojo.getPctChange());
+        }
+        double randomMin = Double.valueOf(now) - 2;
+        double randomMax = Double.valueOf(now) + 2;
+        if(randomMin < min){
+            randomMin = min;
+        }
+        if(randomMax > max){
+            randomMax = max;
+        }
+        return new BigDecimal(Math.random() * (randomMax - randomMin) + randomMin).setScale(2, BigDecimal.ROUND_HALF_UP);
+    }
+
+    private String randomBuySell(String now, int type){
+        // 买
+        if(0 == type){
+            return new BigDecimal(now).subtract(new BigDecimal(0.01)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
+        }else{
+            return new BigDecimal(now).add(new BigDecimal(0.01)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
+        }
+    }
+
+    private int randomInt(){
+        int max = 10000;
+        int min = 5000;
+        int ran = (int) (Math.random() * (max - min) + min);
+        return ran;
+    }
+}

+ 2 - 4
src/main/java/com/zx/dataservice/task/AnalysisBondRestDataTask.java

@@ -5,7 +5,6 @@ import com.zx.dataservice.utils.DateTimeUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -22,9 +21,8 @@ public class AnalysisBondRestDataTask {
     @Autowired
     private ChoiceBondService choiceBondService;
 
-    @Async("executorBond")
-//    @Scheduled(cron = "0/1 * * * * ?")
-    @Scheduled(fixedRate=10)
+//    @Async("executorBond")
+//    @Scheduled(fixedRate=10)
     public void toAnalysisRestData() {
         log.info("=====定时任务===解析东方财富数据==债券==开始,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
         doTask();

+ 2 - 5
src/main/java/com/zx/dataservice/task/AnalysisStockRestDataTask.java

@@ -5,8 +5,6 @@ import com.zx.dataservice.utils.DateTimeUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -22,9 +20,8 @@ public class AnalysisStockRestDataTask {
     @Autowired
     private ChoiceStockService choiceStockService;
 
-    @Async("executorStock")
-//    @Scheduled(cron = "0/1 * * * * ?")
-    @Scheduled(fixedRate=10)
+//    @Async("executorStock")
+//    @Scheduled(fixedRate=10)
     public void toAnalysisRestData() throws InterruptedException {
         log.info("=====定时任务===解析东方财富数据==股票==开始,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
         doTask();

+ 66 - 0
src/main/java/com/zx/dataservice/task/MakeRestDataTask.java

@@ -0,0 +1,66 @@
+package com.zx.dataservice.task;
+
+import com.zx.dataservice.service.ChoService;
+import com.zx.dataservice.service.CreatorService;
+import com.zx.dataservice.utils.BuyAndSellUtils;
+import com.zx.dataservice.utils.DateTimeUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * 制造新股\新债实时数据
+ */
+@Component
+public class MakeRestDataTask {
+
+    private static final Logger log = LoggerFactory.getLogger(MakeRestDataTask.class);
+
+    @Autowired
+    private ChoService choService;
+
+    @Autowired
+    private CreatorService creatorService;
+
+//    @Scheduled(cron = "0/3 * * * * ?")
+    public void toMakeStockRestData() {
+        log.info("=====定时任务===制造新股==开始,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+        choService.insertRtStock();
+        log.info("=====定时任务===制造新股==结束,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+    }
+
+//    @Scheduled(cron = "0/3 * * * * ?")
+    public void toMakeBondRestData() {
+        log.info("=====定时任务===制造新债==开始,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+        choService.insertRtBood();
+        log.info("=====定时任务===制造新债==结束,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+    }
+
+    @Scheduled(cron = "0/3 * * * * ?")
+    public void creatorUvxy() {
+        try {
+            if(BuyAndSellUtils.isTransTime("09:30", "12:00") || BuyAndSellUtils.isTransTime("13:00", "15:00")){
+                log.info("=====定时任务===制造恐慌指数==实时==开始,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+                creatorService.creatorUvxy();
+                log.info("=====定时任务===制造恐慌指数==实时==结束,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+//    @Scheduled(cron = "0 0 1 * * ?")
+    public void creatorUvxyHist() {
+        try {
+            log.info("=====定时任务===制造恐慌指数==历史==开始,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+            creatorService.creatorUvxyHist();
+            log.info("=====定时任务===制造恐慌指数==历史==结束,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 65 - 0
src/main/java/com/zx/dataservice/utils/BuyAndSellUtils.java

@@ -0,0 +1,65 @@
+package com.zx.dataservice.utils;
+
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+
+public class BuyAndSellUtils {
+
+    private static final Logger log = LoggerFactory.getLogger(BuyAndSellUtils.class);
+
+
+    public static boolean isTransTime(String begin_time, String end_time) throws Exception {
+        if (StringUtils.isBlank(begin_time) || StringUtils.isBlank(end_time)) {
+            return false;
+        }
+        Date nowDate = new Date();
+        if (!isWorkDay(nowDate)) {
+            return false;
+        }
+        SimpleDateFormat df = new SimpleDateFormat("HH:mm");
+        Date now = null;
+        Date beginTime = null;
+        Date endTime = null;
+        try {
+            now = df.parse(df.format(nowDate));
+            beginTime = df.parse(begin_time);
+            endTime = df.parse(end_time);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Boolean flag = Boolean.valueOf(belongCalendar(now, beginTime, endTime));
+        return flag.booleanValue();
+    }
+
+
+    public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
+        Calendar date = Calendar.getInstance();
+        date.setTime(nowTime);
+        Calendar begin = Calendar.getInstance();
+        begin.setTime(beginTime);
+        Calendar end = Calendar.getInstance();
+        end.setTime(endTime);
+        if (date.after(begin) && date.before(end)) {
+            return true;
+        }
+        return false;
+    }
+
+
+    public static boolean isWorkDay(Date currentDate) throws Exception {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(currentDate);
+        if (cal.get(7) == 7 || cal.get(7) == 1) {
+            return false;
+        }
+        return true;
+    }
+
+}

+ 1 - 1
src/main/java/com/zx/dataservice/utils/FileStockUtil.java

@@ -140,7 +140,7 @@ public class FileStockUtil {
                 }
             }
         }
-//        deleteFile(fileName);
+        deleteFile(fileName);
         return sbf.toString();
     }
 

+ 29 - 13
src/main/java/com/zx/dataservice/utils/HttpRequest.java

@@ -7,7 +7,11 @@ import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.BasicResponseHandler;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
@@ -28,6 +32,31 @@ public class HttpRequest {
 
     private static final Logger log = LoggerFactory.getLogger(HttpRequest.class);
 
+    public static String httpPostWithjson(String url, String json) {
+        String result = "";
+        HttpPost httpPost = new HttpPost(url);
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        try {
+            BasicResponseHandler handler = new BasicResponseHandler();
+            StringEntity entity = new StringEntity(json, "utf-8");//解决中文乱码问题
+            entity.setContentEncoding("UTF-8");
+            entity.setContentType("application/json");
+            httpPost.setEntity(entity);
+            result = httpClient.execute(httpPost, handler);
+            return result;
+        } catch (Exception e) {
+            e.printStackTrace();
+
+        } finally {
+            try {
+                httpClient.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
     public static String doGet(String url, String params) throws Exception {
         URL localURL;
         if(StringUtils.isNoneEmpty(params)) {
@@ -90,17 +119,4 @@ public class HttpRequest {
         return text;
     }
 
-
-    public static void main(String[] args) {
-        String url = "http://quantapi.eastmoney.com/Command/Sector/GetSystemBoard";
-
-        String getret = "";
-        try {
-            getret = doGet(url, null);
-            System.out.println(getret);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        log.info("get ret : " + getret);
-    }
 }

+ 13 - 8
src/main/resources/application-dev.properties

@@ -1,5 +1,5 @@
 #端口
-server.port=8080
+server.port=8090
 
 #数据库相关配置
 #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
@@ -15,9 +15,12 @@ server.port=8080
 #spring.datasource.password=bJRTaEWLZnGaZLTw
 
 # 云正式服务器 外网访问
-spring.datasource.test1.jdbc-Url=jdbc:mysql://172.21.0.14:3306/stock_data?characterEncoding=utf-8&allowMultiQueries=true
+#spring.datasource.test1.jdbc-Url=jdbc:mysql://127.0.0.1/stock_data?characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=UTC
+#spring.datasource.test1.jdbc-Url=jdbc:mysql://172.21.0.14:3306/stock_data?characterEncoding=utf-8&allowMultiQueries=true
 #spring.datasource.test1.jdbc-Url=jdbc:mysql://hk-cdb-mw8z8p47.sql.tencentcdb.com:63791/stock_data?characterEncoding=utf-8&allowMultiQueries=true
+spring.datasource.test1.jdbc-Url=jdbc:mysql://bj-cdb-1j873yci.sql.tencentcdb.com:61196/stock_data?characterEncoding=utf-8&allowMultiQueries=true
 spring.datasource.test1.username=root
+#spring.datasource.test1.password=root
 spring.datasource.test1.password=TestBicon@123
 spring.datasource.test1.driver-class-name=com.mysql.cj.jdbc.Driver
 
@@ -38,13 +41,14 @@ spring.druid.removeAbandonedTimeout=1800
 spring.druid.filters=stat
 
 ## test2 database
-spring.datasource.test2.jdbc-Url=jdbc:mysql://172.21.0.14:3306/stock?characterEncoding=utf-8&allowMultiQueries=true
-spring.datasource.test2.username=root
-spring.datasource.test2.password=TestBicon@123
-
-#spring.datasource.test2.jdbc-Url=jdbc:mysql://hk-cdb-mw8z8p47.sql.tencentcdb.com:63791/stock?characterEncoding=utf-8&allowMultiQueries=true
+#spring.datasource.test2.jdbc-Url=jdbc:mysql://172.21.0.14:3306/stock?characterEncoding=utf-8&allowMultiQueries=true
 #spring.datasource.test2.username=root
 #spring.datasource.test2.password=TestBicon@123
+
+#spring.datasource.test2.jdbc-Url=jdbc:mysql://hk-cdb-mw8z8p47.sql.tencentcdb.com:63791/stock?characterEncoding=utf-8&allowMultiQueries=true
+spring.datasource.test2.jdbc-Url=jdbc:mysql://bj-cdb-1j873yci.sql.tencentcdb.com:61196/stock?characterEncoding=utf-8&allowMultiQueries=true
+spring.datasource.test2.username=root
+spring.datasource.test2.password=TestBicon@123
 spring.datasource.test2.driver-class-name=com.mysql.cj.jdbc.Driver
 #spring.datasource.test2.hikari.minimum-idle=10
 #spring.datasource.test2.hikari.idle-timeout=18000
@@ -53,8 +57,9 @@ spring.datasource.test2.driver-class-name=com.mysql.cj.jdbc.Driver
 #spring.datasource.test2.hikari.connection-test-query=SELECT 1
 
 
-spring.datasource.test3.jdbc-Url=jdbc:mysql://172.21.0.14:3306/stock_data_zhaiquan?characterEncoding=utf-8&allowMultiQueries=true
+#spring.datasource.test3.jdbc-Url=jdbc:mysql://172.21.0.14:3306/stock_data_zhaiquan?characterEncoding=utf-8&allowMultiQueries=true
 #spring.datasource.test3.jdbc-Url=jdbc:mysql://hk-cdb-mw8z8p47.sql.tencentcdb.com:63791/stock_data_zhaiquan?characterEncoding=utf-8&allowMultiQueries=true
+spring.datasource.test3.jdbc-Url=jdbc:mysql://bj-cdb-1j873yci.sql.tencentcdb.com:61196/stock_data_zhaiquan?characterEncoding=utf-8&allowMultiQueries=true
 spring.datasource.test3.username=root
 spring.datasource.test3.password=TestBicon@123
 spring.datasource.test3.driver-class-name=com.mysql.cj.jdbc.Driver

文件差异内容过多而无法显示
+ 70 - 0
src/main/resources/mybatis/mapper1/ChoiceStockMapper.xml


+ 44 - 0
src/main/resources/mybatis/mapper2/StockMapper.xml

@@ -28,4 +28,48 @@
         </foreach>
     </update>
 
+    <select id="selectStockByStockCode" resultType="Integer">
+        select
+            count(1)
+        from
+            stock
+        where
+            stock_code = #{stockCode}
+    </select>
+
+    <insert id="insertStock">
+        insert into
+            stock
+        (
+            stock_name,
+            stock_code,
+            stock_spell,
+            stock_type,
+            stock_gid,
+            stock_plate,
+            is_lock,
+            is_show,
+            buy_limit,
+            is_limit_up_buy,
+            is_stop_trading_buy,
+            stock_or_bond,
+            add_time
+        )
+        values
+        (
+            #{info.stockName},
+            #{info.stockCode},
+            #{info.stockSpell},
+            #{info.stockType},
+            #{info.stockGid},
+            #{info.stockPlate},
+            #{info.isLock},
+            #{info.isShow},
+            #{info.buyLimit},
+            #{info.isLimitUpBuy},
+            #{info.isStopTradingBuy},
+            #{info.stockOrBond},
+            now()
+        )
+    </insert>
 </mapper>

文件差异内容过多而无法显示
+ 70 - 0
src/main/resources/mybatis/mapper3/ChoiceBondMapper.xml


文件差异内容过多而无法显示
+ 145 - 0
src/main/resources/mybatis/mapper3/CreatorMapper.xml