123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- 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 && fundReportFrequencyDO.getCreatorId() != null){
- continue;
- }
- List<NavDO> navDOList = navMapper.selectNavByFundIdAndDate(fundId,priceDate);
- FundReportFrequencyDO fundReportFrequency = new FundReportFrequencyDO();
- if(fundReportFrequencyDO != null){
- fundReportFrequency.setId(fundReportFrequencyDO.getId());
- }
- 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){
- fundReportFrequency.setIsvalid(1);
- fundReportFrequency.setCreateTime(new Date());
- fundReportFrequency.setUpdateTime(new Date());
- 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());
- }
- }
- }
|