InsureTaskTiming.java 3.29 KB
Newer Older
翁国栋 committed
1 2 3 4 5 6 7
package cn.timer.api.controller.insure.task;

import cn.hutool.core.date.DateUtil;
import cn.timer.api.bean.insure.InsureLog;
import cn.timer.api.bean.insure.InsurePolicy;
import cn.timer.api.bean.insure.InsureUser;
import cn.timer.api.bean.yggl.YgglMainEmp;
翁国栋 committed
8
import cn.timer.api.config.exception.CustomException;
翁国栋 committed
9 10 11 12 13 14 15 16 17 18
import cn.timer.api.dao.insure.InsurePolicyMapper;
import cn.timer.api.dao.insure.InsureUserMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
翁国栋 committed
19
import org.springframework.transaction.annotation.Transactional;
翁国栋 committed
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Description TODO
 * @Author wgd
 * @Date 2022/5/5 11:20
 */
@Configuration      //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling   // 2.开启定时任务
@Slf4j
public class InsureTaskTiming {
    @Autowired
    private InsureUserMapper insureUserMapper;
    @Autowired
    private YgglMainEmpMapper ygglMainEmpMapper;

    @Scheduled(cron = "0 0 0 1 * ?")//每月第一天
翁国栋 committed
41
    @Transactional(rollbackFor = Exception.class)
翁国栋 committed
42 43 44 45 46 47
    public void updateInsureStatusTask(){
        try {

            Date now = DateUtil.date();
            /*获取正常的保单*/
            List<InsurePolicy> insurePolicyList = InsurePolicy.builder().build().selectList(new QueryWrapper<InsurePolicy>().lambda().eq(InsurePolicy::getStatus, "1").lt(InsurePolicy::getPolicyDateEnd, now));
翁国栋 committed
48 49 50 51 52 53 54
            if (insurePolicyList.size() > 0) {
                /*获取已经过期保单*/
                for (InsurePolicy insurePolicy : insurePolicyList) {
                    List<InsureUser> insureUsersList = InsureUser.builder().build().selectList(new QueryWrapper<InsureUser>().lambda()
                            .eq(InsureUser::getPolicyId, insurePolicy.getId()).eq(InsureUser::getStatus, 1)
                            .eq(InsureUser::getInsureStatus, 1));
                    if (insureUsersList.size() > 0) {
翁国栋 committed
55 56
//                        int count = ygglMainEmpMapper.updateInsure(insureUsersList.stream().map(InsureUser::getUserId).toArray(Integer[]::new));
//                        log.info("总共更新员工投保状态:"+count);
翁国栋 committed
57
                        int uCount = insureUserMapper.updateInsure(insurePolicyList.stream().map(InsurePolicy::getId).toArray(Integer[]::new));
翁国栋 committed
58
                        log.info("总共更新投保人投保状态:"+uCount);
翁国栋 committed
59 60 61
                    }
                    insurePolicy.setStatus("3");
                    insurePolicy.updateById();
翁国栋 committed
62 63
                    InsureLog.builder().type(7)
                            .createTime(new Date()).requestType(1).returnMsg("保单已到期,自动失效").policyId(insurePolicy.getId()).build().insert();
翁国栋 committed
64 65
                }
            }
翁国栋 committed
66 67 68 69 70
            log.error("暂无过期保单");
        }catch (Exception e){
            e.printStackTrace();
            throw new CustomException("保单失效定时器异常");
        }
翁国栋 committed
71 72
    }
}