123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- 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();
- }
- }
- }
|