|
@@ -1,160 +0,0 @@
|
|
|
-package com.simuwang.manage.task;
|
|
|
-
|
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
-import com.simuwang.base.common.util.DateUtils;
|
|
|
-import com.simuwang.base.common.util.StringUtil;
|
|
|
-import com.simuwang.base.mapper.core.CoreDistributionMapper;
|
|
|
-import com.simuwang.base.mapper.core.SrcNavMapper;
|
|
|
-import com.simuwang.base.mapper.daq.DistributionMapper;
|
|
|
-import com.simuwang.base.mapper.daq.NavMapper;
|
|
|
-import com.simuwang.base.mapper.daq.system.SysConfigMapper;
|
|
|
-import com.simuwang.base.pojo.dos.DistributionDO;
|
|
|
-import com.simuwang.base.pojo.dos.NavDO;
|
|
|
-import com.simuwang.base.pojo.dos.SysConfigDO;
|
|
|
-import com.simuwang.base.pojo.dos.core.CoreDistributionDO;
|
|
|
-import com.simuwang.base.pojo.dos.core.SrcNavDO;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.stereotype.Component;
|
|
|
-
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-
|
|
|
-/**
|
|
|
- * 数据同步
|
|
|
- * Author: chenjianhua
|
|
|
- * Date: 2024/10/25 13:59
|
|
|
- * Description: ${DESCRIPTION}
|
|
|
- */
|
|
|
-@Component
|
|
|
-public class DataSynchronizationTask {
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private NavMapper navMapper;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private SrcNavMapper srcNavMapper;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private SysConfigMapper sysConfigMapper;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private DistributionMapper distributionMapper;
|
|
|
- @Autowired
|
|
|
- private CoreDistributionMapper coreDistributionMapper;
|
|
|
-
|
|
|
- private static final Integer maxNum = 100000;
|
|
|
-
|
|
|
- public void synchronization() {
|
|
|
- String startDate = sysConfigMapper.selectConfigByKey("last_data_synchronization_time");
|
|
|
- if (StringUtil.isNull(startDate)) {
|
|
|
- //沒有配置就新增一个
|
|
|
- saveConfig();
|
|
|
- }
|
|
|
- String endDate = DateUtil.now();
|
|
|
- long total = navMapper.countNavByTime(startDate, endDate);
|
|
|
- if (total > maxNum) {
|
|
|
- Map<String,Long> idMap = navMapper.selectMaxMinId(startDate, endDate);
|
|
|
- Long minId = idMap.get("minId");
|
|
|
- Long maxId = idMap.get("maxId");
|
|
|
- long times = (maxId-minId)%maxNum==0?(maxId-minId)/maxNum:(maxId-minId)/maxNum+1;
|
|
|
- long startIdx = minId;
|
|
|
- for(int idx=1;idx <= times;idx++){
|
|
|
- long endIdx = startIdx+idx*maxNum;
|
|
|
- if(endIdx >= maxId){
|
|
|
- endIdx = maxId;
|
|
|
- }
|
|
|
- List<NavDO> navDOList = navMapper.selectNavListById(minId,maxId,startDate, endDate);
|
|
|
- saveSrcNavList(navDOList);
|
|
|
- startIdx = endIdx;
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- List<NavDO> navDOList = navMapper.selectNavListByTime(startDate, endDate);
|
|
|
- saveSrcNavList(navDOList);
|
|
|
- //更新分红
|
|
|
- List<DistributionDO> distributionDOList = distributionMapper.selectDistributeListByTime(startDate, endDate);
|
|
|
- saveDistribute(distributionDOList);
|
|
|
- //更新最后任务时间
|
|
|
- updateConfig(endDate);
|
|
|
- }
|
|
|
-
|
|
|
- private void saveDistribute(List<DistributionDO> distributionDOList) {
|
|
|
- List<CoreDistributionDO> coreDistributionDOList = new ArrayList<>();
|
|
|
- for(DistributionDO distribution : distributionDOList){
|
|
|
- CoreDistributionDO coreDistributionDO = new CoreDistributionDO();
|
|
|
- coreDistributionDO.setDistribution(distribution.getDistribution());
|
|
|
- coreDistributionDO.setDistributeDate(distribution.getDistributeDate());
|
|
|
- coreDistributionDO.setDistributeType(distribution.getDistributeType());
|
|
|
- coreDistributionDO.setFundId(distribution.getFundId());
|
|
|
- coreDistributionDO.setCreateTime(distribution.getCreateTime());
|
|
|
- coreDistributionDO.setUpdaterId(distribution.getUpdaterId());
|
|
|
- coreDistributionDO.setCreatorId(distribution.getCreatorId());
|
|
|
- coreDistributionDO.setUpdateTime(distribution.getUpdateTime());
|
|
|
- coreDistributionDO.setIsvalid(distribution.getIsvalid());
|
|
|
- coreDistributionDOList.add(coreDistributionDO);
|
|
|
- if(coreDistributionDOList.size() >= 500){
|
|
|
- coreDistributionMapper.saveCoreDistribution(coreDistributionDOList);
|
|
|
- coreDistributionDOList.clear();
|
|
|
- }
|
|
|
- }
|
|
|
- if(coreDistributionDOList.size() > 0){
|
|
|
- coreDistributionMapper.saveCoreDistribution(coreDistributionDOList);
|
|
|
- coreDistributionDOList.clear();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void updateConfig(String endDate) {
|
|
|
- SysConfigDO sysConfigDO = new SysConfigDO();
|
|
|
- sysConfigDO.setConfigKey("last_data_synchronization_time");
|
|
|
- sysConfigDO.setConfigName("数据同步最后时间");
|
|
|
- sysConfigDO.setConfigValue(endDate);
|
|
|
- sysConfigMapper.updateConfigByKey(sysConfigDO);
|
|
|
- }
|
|
|
-
|
|
|
- private void saveConfig() {
|
|
|
- SysConfigDO sysConfigDO = new SysConfigDO();
|
|
|
- sysConfigDO.setIsvalid(1);
|
|
|
- sysConfigDO.setCreateTime(DateUtils.getNowDate());
|
|
|
- sysConfigDO.setUpdateTime(DateUtils.getNowDate());
|
|
|
- sysConfigDO.setConfigType("1");
|
|
|
- sysConfigDO.setConfigKey("last_data_synchronization_time");
|
|
|
- sysConfigDO.setConfigName("数据同步最后时间");
|
|
|
- sysConfigDO.setConfigValue(DateUtil.now());
|
|
|
- sysConfigDO.setRemark("数据同步最后时间");
|
|
|
- sysConfigDO.setCreatorId(1);
|
|
|
- sysConfigDO.setUpdaterId(1);
|
|
|
- sysConfigMapper.insertConfig(sysConfigDO);
|
|
|
- }
|
|
|
-
|
|
|
- public void saveSrcNavList(List<NavDO> navDOList){
|
|
|
- List<SrcNavDO> srcNavDOList = new ArrayList<>();
|
|
|
- for (NavDO navDO : navDOList) {
|
|
|
- SrcNavDO srcNavDO = new SrcNavDO();
|
|
|
-// srcNavDO.setId(navDO.getId());
|
|
|
- srcNavDO.setPriceDate(navDO.getPriceDate());
|
|
|
- srcNavDO.setFundId(navDO.getFundId());
|
|
|
- srcNavDO.setNav(navDO.getNav());
|
|
|
- srcNavDO.setCumulativeNavCrawl(navDO.getCumulativeNavWithdrawal());
|
|
|
- srcNavDO.setAppType(1);
|
|
|
- srcNavDO.setNavSource(1);
|
|
|
- srcNavDO.setCreateTime(navDO.getCreateTime());
|
|
|
- srcNavDO.setUpdateTime(navDO.getUpdateTime());
|
|
|
- srcNavDO.setCreatorId(navDO.getCreatorId());
|
|
|
- srcNavDO.setUpdaterId(navDO.getUpdaterId());
|
|
|
- srcNavDO.setIsvisible(1);
|
|
|
- srcNavDO.setSourceId(1);
|
|
|
- srcNavDO.setIsvalid(navDO.getIsvalid());
|
|
|
- srcNavDO.setNavMark(null);
|
|
|
- srcNavDOList.add(srcNavDO);
|
|
|
- if(srcNavDOList.size() >= 500){
|
|
|
- srcNavMapper.saveSrcNav(srcNavDOList);
|
|
|
- srcNavDOList.clear();
|
|
|
- }
|
|
|
- }
|
|
|
- if(srcNavDOList.size() > 0){
|
|
|
- srcNavMapper.saveSrcNav(srcNavDOList);
|
|
|
- srcNavDOList.clear();
|
|
|
- }
|
|
|
- }
|
|
|
-}
|