|
@@ -0,0 +1,117 @@
|
|
|
|
+package com.simuwang.manage.task;
|
|
|
|
+
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
|
+import com.simuwang.base.common.conts.NavParseStatusConst;
|
|
|
|
+import com.simuwang.base.common.enums.Frequency;
|
|
|
|
+import com.simuwang.base.common.enums.TaskType;
|
|
|
|
+import com.simuwang.base.common.util.DateUtils;
|
|
|
|
+import com.simuwang.base.mapper.daq.EmailTaskInfoMapper;
|
|
|
|
+import com.simuwang.base.mapper.daq.FundReportFrequencyMapper;
|
|
|
|
+import com.simuwang.base.mapper.daq.NavMapper;
|
|
|
|
+import com.simuwang.base.pojo.dos.EmailFundNavDO;
|
|
|
|
+import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
|
|
|
|
+import com.simuwang.base.pojo.dos.FundReportFrequencyDO;
|
|
|
|
+import com.simuwang.base.pojo.dos.NavDO;
|
|
|
|
+import com.simuwang.base.pojo.vo.FundReportFrequencyVO;
|
|
|
|
+import com.simuwang.manage.service.EmailFundNavService;
|
|
|
|
+import com.simuwang.manage.service.FundReportFrequencyService;
|
|
|
|
+import com.simuwang.shiro.utils.UserUtils;
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
+
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * FileName: NavFrequencyComputeTask
|
|
|
|
+ * Author: chenjianhua
|
|
|
|
+ * Date: 2024/12/9 15:46
|
|
|
|
+ * Description: ${DESCRIPTION}
|
|
|
|
+ */
|
|
|
|
+@Component
|
|
|
|
+public class NavFrequencyComputeTask {
|
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(NavFrequencyComputeTask.class);
|
|
|
|
+ @Autowired
|
|
|
|
+ private NavMapper navMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private EmailTaskInfoMapper emailTaskInfoMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private FundReportFrequencyMapper fundReportFrequencyMapper;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 取近一月(35天)净值数量判断
|
|
|
|
+ * 净值数 >= 8, 设置为“日频”
|
|
|
|
+ * 2 < 净值数 < 8, 设置为“周频”
|
|
|
|
+ * 1 <= 净值数 <= 2, 设置为“月频”
|
|
|
|
+ * 不满足上述规则,默认为空。
|
|
|
|
+ */
|
|
|
|
+ public void navFrequencyCompute(){
|
|
|
|
+ EmailTaskInfoDO emailTaskInfoDO = startEmailTask(null, 1);
|
|
|
|
+ //获取净值振幅错误的数据总量
|
|
|
|
+ List<String> fundIdList = navMapper.getAllFundId();
|
|
|
|
+ String priceDate = DateUtils.getAroundToday(-35);
|
|
|
|
+ for (String fundId : fundIdList) {
|
|
|
|
+ FundReportFrequencyDO fundReportFrequencyDO = fundReportFrequencyMapper.getFrequencyByFundId(fundId);
|
|
|
|
+ if(fundReportFrequencyDO != null){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ List<NavDO> navDOList = navMapper.selectNavByFundIdAndDate(fundId,priceDate);
|
|
|
|
+ FundReportFrequencyDO fundReportFrequency = new FundReportFrequencyDO();
|
|
|
|
+ fundReportFrequency.setFundId(fundId);
|
|
|
|
+ if(navDOList.size() >= 8){
|
|
|
|
+ fundReportFrequency.setNavFrequency(Frequency.DAY.getCode());
|
|
|
|
+ }
|
|
|
|
+ if(navDOList.size() > 2 && navDOList.size() < 8){
|
|
|
|
+ fundReportFrequency.setNavFrequency(Frequency.WEEK.getCode());
|
|
|
|
+ }
|
|
|
|
+ if(navDOList.size() >= 1 && navDOList.size() <= 2){
|
|
|
|
+ fundReportFrequency.setNavFrequency(Frequency.MONTH.getCode());
|
|
|
|
+ }
|
|
|
|
+ if(fundReportFrequency.getNavFrequency() != null){
|
|
|
|
+ fundReportFrequencyMapper.insert(fundReportFrequency);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ endEmailTask(emailTaskInfoDO.getId(),2);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private EmailTaskInfoDO startEmailTask(String email,Integer taskStatus) {
|
|
|
|
+ EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
|
|
|
|
+ try{
|
|
|
|
+ emailTaskInfoDO.setTaskName(TaskType.NAV_FREQUENCY.getInfo());
|
|
|
|
+ emailTaskInfoDO.setTaskType(TaskType.NAV_FREQUENCY.getType());
|
|
|
|
+ emailTaskInfoDO.setTaskStatus(taskStatus);
|
|
|
|
+ emailTaskInfoDO.setStartTime(DateUtils.getNowDate());
|
|
|
|
+ emailTaskInfoDO.setIsvalid(1);
|
|
|
|
+ emailTaskInfoDO.setEmail(email);
|
|
|
|
+ emailTaskInfoDO.setCreateTime(DateUtils.getNowDate());
|
|
|
|
+ emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
+ try{
|
|
|
|
+ emailTaskInfoDO.setCreatorId(UserUtils.getLoginUser().getUserId());
|
|
|
|
+ emailTaskInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ emailTaskInfoDO.setCreatorId(1);
|
|
|
|
+ emailTaskInfoDO.setUpdaterId(1);
|
|
|
|
+ }
|
|
|
|
+ emailTaskInfoMapper.insert(emailTaskInfoDO);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ log.error(e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ return emailTaskInfoDO;
|
|
|
|
+ }
|
|
|
|
+ private void endEmailTask(Integer id, Integer taskStatus) {
|
|
|
|
+ try{
|
|
|
|
+ EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
|
|
|
|
+ emailTaskInfoDO.setId(id);
|
|
|
|
+ emailTaskInfoDO.setTaskStatus(taskStatus);
|
|
|
|
+ emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
+ emailTaskInfoDO.setEndTime(DateUtils.getNowDate());
|
|
|
|
+ emailTaskInfoMapper.updateTaskStatusById(emailTaskInfoDO);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ log.error(e.getMessage());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|