NavFrequencyComputeTask.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.simuwang.manage.task;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.simuwang.base.common.conts.NavParseStatusConst;
  4. import com.simuwang.base.common.enums.Frequency;
  5. import com.simuwang.base.common.enums.TaskType;
  6. import com.simuwang.base.common.util.DateUtils;
  7. import com.simuwang.base.mapper.daq.EmailTaskInfoMapper;
  8. import com.simuwang.base.mapper.daq.FundReportFrequencyMapper;
  9. import com.simuwang.base.mapper.daq.NavMapper;
  10. import com.simuwang.base.pojo.dos.EmailFundNavDO;
  11. import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
  12. import com.simuwang.base.pojo.dos.FundReportFrequencyDO;
  13. import com.simuwang.base.pojo.dos.NavDO;
  14. import com.simuwang.base.pojo.vo.FundReportFrequencyVO;
  15. import com.simuwang.manage.service.EmailFundNavService;
  16. import com.simuwang.manage.service.FundReportFrequencyService;
  17. import com.simuwang.shiro.utils.UserUtils;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Component;
  22. import java.math.BigDecimal;
  23. import java.util.Date;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * FileName: NavFrequencyComputeTask
  28. * Author: chenjianhua
  29. * Date: 2024/12/9 15:46
  30. * Description: ${DESCRIPTION}
  31. */
  32. @Component
  33. public class NavFrequencyComputeTask {
  34. private static final Logger log = LoggerFactory.getLogger(NavFrequencyComputeTask.class);
  35. @Autowired
  36. private NavMapper navMapper;
  37. @Autowired
  38. private EmailTaskInfoMapper emailTaskInfoMapper;
  39. @Autowired
  40. private FundReportFrequencyMapper fundReportFrequencyMapper;
  41. /**
  42. * 取近一月(35天)净值数量判断
  43. * 净值数 >= 8, 设置为“日频”
  44. * 2 < 净值数 < 8, 设置为“周频”
  45. * 1 <= 净值数 <= 2, 设置为“月频”
  46. * 不满足上述规则,默认为空。
  47. */
  48. public void navFrequencyCompute(){
  49. EmailTaskInfoDO emailTaskInfoDO = startEmailTask(null, 1);
  50. //获取净值振幅错误的数据总量
  51. List<String> fundIdList = navMapper.getAllFundId();
  52. String priceDate = DateUtils.getAroundToday(-35);
  53. for (String fundId : fundIdList) {
  54. FundReportFrequencyDO fundReportFrequencyDO = fundReportFrequencyMapper.getFrequencyByFundId(fundId);
  55. if(fundReportFrequencyDO != null && fundReportFrequencyDO.getCreatorId() != null){
  56. continue;
  57. }
  58. List<NavDO> navDOList = navMapper.selectNavByFundIdAndDate(fundId,priceDate);
  59. FundReportFrequencyDO fundReportFrequency = new FundReportFrequencyDO();
  60. if(fundReportFrequencyDO != null){
  61. fundReportFrequency.setId(fundReportFrequencyDO.getId());
  62. }
  63. fundReportFrequency.setFundId(fundId);
  64. if(navDOList.size() >= 8){
  65. fundReportFrequency.setNavFrequency(Frequency.DAY.getCode());
  66. }
  67. if(navDOList.size() > 2 && navDOList.size() < 8){
  68. fundReportFrequency.setNavFrequency(Frequency.WEEK.getCode());
  69. }
  70. if(navDOList.size() >= 1 && navDOList.size() <= 2){
  71. fundReportFrequency.setNavFrequency(Frequency.MONTH.getCode());
  72. }
  73. if(fundReportFrequency.getNavFrequency() != null){
  74. fundReportFrequency.setIsvalid(1);
  75. fundReportFrequency.setCreateTime(new Date());
  76. fundReportFrequency.setUpdateTime(new Date());
  77. fundReportFrequencyMapper.insert(fundReportFrequency);
  78. }
  79. }
  80. endEmailTask(emailTaskInfoDO.getId(),2);
  81. }
  82. private EmailTaskInfoDO startEmailTask(String email,Integer taskStatus) {
  83. EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
  84. try{
  85. emailTaskInfoDO.setTaskName(TaskType.NAV_FREQUENCY.getInfo());
  86. emailTaskInfoDO.setTaskType(TaskType.NAV_FREQUENCY.getType());
  87. emailTaskInfoDO.setTaskStatus(taskStatus);
  88. emailTaskInfoDO.setStartTime(DateUtils.getNowDate());
  89. emailTaskInfoDO.setIsvalid(1);
  90. emailTaskInfoDO.setEmail(email);
  91. emailTaskInfoDO.setCreateTime(DateUtils.getNowDate());
  92. emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
  93. try{
  94. emailTaskInfoDO.setCreatorId(UserUtils.getLoginUser().getUserId());
  95. emailTaskInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
  96. }catch (Exception e){
  97. emailTaskInfoDO.setCreatorId(1);
  98. emailTaskInfoDO.setUpdaterId(1);
  99. }
  100. emailTaskInfoMapper.insert(emailTaskInfoDO);
  101. }catch (Exception e){
  102. log.error(e.getMessage());
  103. }
  104. return emailTaskInfoDO;
  105. }
  106. private void endEmailTask(Integer id, Integer taskStatus) {
  107. try{
  108. EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
  109. emailTaskInfoDO.setId(id);
  110. emailTaskInfoDO.setTaskStatus(taskStatus);
  111. emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
  112. emailTaskInfoDO.setEndTime(DateUtils.getNowDate());
  113. emailTaskInfoMapper.updateTaskStatusById(emailTaskInfoDO);
  114. }catch (Exception e){
  115. log.error(e.getMessage());
  116. }
  117. }
  118. }