DataSynchronizationTask.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.simuwang.manage.task;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.simuwang.base.common.util.DateUtils;
  4. import com.simuwang.base.common.util.StringUtil;
  5. import com.simuwang.base.mapper.core.CoreDistributionMapper;
  6. import com.simuwang.base.mapper.core.SrcNavMapper;
  7. import com.simuwang.base.mapper.daq.DistributionMapper;
  8. import com.simuwang.base.mapper.daq.NavMapper;
  9. import com.simuwang.base.mapper.daq.system.SysConfigMapper;
  10. import com.simuwang.base.pojo.dos.DistributionDO;
  11. import com.simuwang.base.pojo.dos.NavDO;
  12. import com.simuwang.base.pojo.dos.SysConfigDO;
  13. import com.simuwang.base.pojo.dos.core.CoreDistributionDO;
  14. import com.simuwang.base.pojo.dos.core.SrcNavDO;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.Map;
  20. /**
  21. * 数据同步
  22. * Author: chenjianhua
  23. * Date: 2024/10/25 13:59
  24. * Description: ${DESCRIPTION}
  25. */
  26. @Component
  27. public class DataSynchronizationTask {
  28. @Autowired
  29. private NavMapper navMapper;
  30. @Autowired
  31. private SrcNavMapper srcNavMapper;
  32. @Autowired
  33. private SysConfigMapper sysConfigMapper;
  34. @Autowired
  35. private DistributionMapper distributionMapper;
  36. @Autowired
  37. private CoreDistributionMapper coreDistributionMapper;
  38. private static final Integer maxNum = 100000;
  39. public void synchronization() {
  40. String startDate = sysConfigMapper.selectConfigByKey("last_data_synchronization_time");
  41. if (StringUtil.isNull(startDate)) {
  42. //沒有配置就新增一个
  43. saveConfig();
  44. }
  45. String endDate = DateUtil.now();
  46. long total = navMapper.countNavByTime(startDate, endDate);
  47. if (total > maxNum) {
  48. Map<String,Long> idMap = navMapper.selectMaxMinId(startDate, endDate);
  49. Long minId = idMap.get("minId");
  50. Long maxId = idMap.get("maxId");
  51. long times = (maxId-minId)%maxNum==0?(maxId-minId)/maxNum:(maxId-minId)/maxNum+1;
  52. long startIdx = minId;
  53. for(int idx=1;idx <= times;idx++){
  54. long endIdx = startIdx+idx*maxNum;
  55. if(endIdx >= maxId){
  56. endIdx = maxId;
  57. }
  58. List<NavDO> navDOList = navMapper.selectNavListById(minId,maxId,startDate, endDate);
  59. saveSrcNavList(navDOList);
  60. startIdx = endIdx;
  61. }
  62. return;
  63. }
  64. List<NavDO> navDOList = navMapper.selectNavListByTime(startDate, endDate);
  65. saveSrcNavList(navDOList);
  66. //更新分红
  67. List<DistributionDO> distributionDOList = distributionMapper.selectDistributeListByTime(startDate, endDate);
  68. saveDistribute(distributionDOList);
  69. //更新最后任务时间
  70. updateConfig(endDate);
  71. }
  72. private void saveDistribute(List<DistributionDO> distributionDOList) {
  73. List<CoreDistributionDO> coreDistributionDOList = new ArrayList<>();
  74. for(DistributionDO distribution : distributionDOList){
  75. CoreDistributionDO coreDistributionDO = new CoreDistributionDO();
  76. coreDistributionDO.setDistribution(distribution.getDistribution());
  77. coreDistributionDO.setDistributeDate(distribution.getDistributeDate());
  78. coreDistributionDO.setDistributeType(distribution.getDistributeType());
  79. coreDistributionDO.setFundId(distribution.getFundId());
  80. coreDistributionDO.setCreateTime(distribution.getCreateTime());
  81. coreDistributionDO.setUpdaterId(distribution.getUpdaterId());
  82. coreDistributionDO.setCreatorId(distribution.getCreatorId());
  83. coreDistributionDO.setUpdateTime(distribution.getUpdateTime());
  84. coreDistributionDO.setIsvalid(distribution.getIsvalid());
  85. coreDistributionDOList.add(coreDistributionDO);
  86. if(coreDistributionDOList.size() >= 500){
  87. coreDistributionMapper.saveCoreDistribution(coreDistributionDOList);
  88. coreDistributionDOList.clear();
  89. }
  90. }
  91. if(coreDistributionDOList.size() > 0){
  92. coreDistributionMapper.saveCoreDistribution(coreDistributionDOList);
  93. coreDistributionDOList.clear();
  94. }
  95. }
  96. private void updateConfig(String endDate) {
  97. SysConfigDO sysConfigDO = new SysConfigDO();
  98. sysConfigDO.setConfigKey("last_data_synchronization_time");
  99. sysConfigDO.setConfigName("数据同步最后时间");
  100. sysConfigDO.setConfigValue(endDate);
  101. sysConfigMapper.updateConfigByKey(sysConfigDO);
  102. }
  103. private void saveConfig() {
  104. SysConfigDO sysConfigDO = new SysConfigDO();
  105. sysConfigDO.setIsvalid(1);
  106. sysConfigDO.setCreateTime(DateUtils.getNowDate());
  107. sysConfigDO.setUpdateTime(DateUtils.getNowDate());
  108. sysConfigDO.setConfigType("1");
  109. sysConfigDO.setConfigKey("last_data_synchronization_time");
  110. sysConfigDO.setConfigName("数据同步最后时间");
  111. sysConfigDO.setConfigValue(DateUtil.now());
  112. sysConfigDO.setRemark("数据同步最后时间");
  113. sysConfigDO.setCreatorId(1);
  114. sysConfigDO.setUpdaterId(1);
  115. sysConfigMapper.insertConfig(sysConfigDO);
  116. }
  117. public void saveSrcNavList(List<NavDO> navDOList){
  118. List<SrcNavDO> srcNavDOList = new ArrayList<>();
  119. for (NavDO navDO : navDOList) {
  120. SrcNavDO srcNavDO = new SrcNavDO();
  121. // srcNavDO.setId(navDO.getId());
  122. srcNavDO.setPriceDate(navDO.getPriceDate());
  123. srcNavDO.setFundId(navDO.getFundId());
  124. srcNavDO.setNav(navDO.getNav());
  125. srcNavDO.setCumulativeNavCrawl(navDO.getCumulativeNavWithdrawal());
  126. srcNavDO.setAppType(1);
  127. srcNavDO.setNavSource(1);
  128. srcNavDO.setCreateTime(navDO.getCreateTime());
  129. srcNavDO.setUpdateTime(navDO.getUpdateTime());
  130. srcNavDO.setCreatorId(navDO.getCreatorId());
  131. srcNavDO.setUpdaterId(navDO.getUpdaterId());
  132. srcNavDO.setIsvisible(1);
  133. srcNavDO.setSourceId(1);
  134. srcNavDO.setIsvalid(navDO.getIsvalid());
  135. srcNavDO.setNavMark(null);
  136. srcNavDOList.add(srcNavDO);
  137. if(srcNavDOList.size() >= 500){
  138. srcNavMapper.saveSrcNav(srcNavDOList);
  139. srcNavDOList.clear();
  140. }
  141. }
  142. if(srcNavDOList.size() > 0){
  143. srcNavMapper.saveSrcNav(srcNavDOList);
  144. srcNavDOList.clear();
  145. }
  146. }
  147. }