package com.adc.da.scheduled; import com.adc.da.scheduled.dao.SarStandardInfoDao; import com.adc.da.scheduled.dao.SarStandardItemDao; import com.adc.da.scheduled.dao.SarStandardWarningDao; import com.adc.da.scheduled.entity.DataDTO; import com.adc.da.scheduled.entity.WarningEO; import com.adc.da.slrs.sarStandAttrInfo.dao.SarStandAttrInfoDao; import com.adc.da.slrs.sarStandAttrInfo.entity.SarStandAttrInfo; import com.adc.da.slrs.sarStandardsInfo.dao.SarStandardsInfoDao; import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; import com.adc.da.util.UUIDUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.time.LocalDate; import java.util.LinkedList; import java.util.List; import java.util.Map; @EnableScheduling @Component @Slf4j public class ScheduledJob { /** * 根据配置文件设置是否开启定时器 */ @Value("${isNotScheduled}") private boolean isNotScheduled; //是否开启定时器 @Autowired private SarStandardInfoDao sarStandardInfoDao; //标准信息表 @Autowired private SarStandardsInfoDao sarStandardsInfoDao;//标准信息表 @Autowired private SarStandardWarningDao sarStandardWarningDao;//预警表 @Autowired private SarStandardItemDao sarStandardItemDao; //分解单表 @Autowired private SarStandAttrInfoDao sarStandAttrInfoDao; //属性字段表 @Scheduled(cron = "0 0 0 * * ?") //每天的凌晨0点执行 // @Scheduled(cron="*/5 * * * * ?") @Async public void WarningSchedulingTasks() { /** * 1.查询标准属性字段表(sar_stand_attr_info) XCXSSEQ ZCCSSRQ ZRGCS * 联接标准信息表sar_standards_info表的STAND_NAME * 2.查询分解单(条款表) * 3.查询预警表 * 4.去掉预警表中已存在的的数据 * 5.插入预警表 */ /** mark:标识预警的种类 3:新车标准预警 4:在产车标准预警 1:新车条款预警 2:在产车条款预警 */ System.out.println("开始执行预警!!!"); DataDTO term = new DataDTO(); //预警期限(当前日期至3个月后) LinkedList warningList = new LinkedList<>();//需预警的标准和条款列表集合 //分解单(条款) 新车型 mark=1 List itemForXCXSSRQ = sarStandardItemDao.selectWithinTerm(term, "XCXSSRQ"); for (WarningEO warningEO : itemForXCXSSRQ) { warningEO.setId(UUIDUtils.randomUUID20()) .setPower("1") .setMark("1") .setPutTime(warningEO.getXCXSSRQ()); } warningList.addAll(itemForXCXSSRQ); //分解单(条款) 在产车型 mark=2 List itemForZCCSSRQ = sarStandardItemDao.selectWithinTerm(term, "ZCCSSRQ"); for (WarningEO warningEO : itemForZCCSSRQ) { warningEO.setId(UUIDUtils.randomUUID20()) .setPower("1") .setMark("2") .setPutTime(warningEO.getZCCSSRQ()); } warningList.addAll(itemForZCCSSRQ); //标准 新车型 预警 mark=3 List standInfoXCXSSRQ = sarStandardInfoDao.selectWithinTerm(term, "XCXSSRQ"); for (WarningEO warningEO : standInfoXCXSSRQ) { warningEO.setId(UUIDUtils.randomUUID20()) .setPower("1") .setMark("3") .setPutTime(warningEO.getXCXSSRQ()) .setStandCode(warningEO.getStandSort()+" "+ warningEO.getStandNum()+"-"+ warningEO.getStandYear()); } warningList.addAll(standInfoXCXSSRQ); //标准 在产车型 mark=4 List standInfoZCCSSRQ = sarStandardInfoDao.selectWithinTerm(term, "ZCCSSRQ"); for (WarningEO warningEO : standInfoZCCSSRQ) { warningEO.setId(UUIDUtils.randomUUID20()) .setPower("1") .setMark("4") .setPutTime(warningEO.getZCCSSRQ()) .setStandCode(warningEO.getStandSort()+" "+ warningEO.getStandNum()+"-"+ warningEO.getStandYear()); } warningList.addAll(standInfoZCCSSRQ); //持久化至预警表 忽略标准id和标志位都一样的数据 if (warningList.size()!=0){ //此表的STAND_ID和MARK字段以及ITEMS_ID和MARK字段需两个建立唯一性约束 int count = sarStandardWarningDao.ignoreInsert(warningList); System.out.println("已预警 " + count + " 条标准或条款!!"); } } @Scheduled(cron = "0 0 0 * * ?") //每天的凌晨0点执行 // @Scheduled(cron="*/5 * * * * ?") @Async public void TextStatusSchedulingTasks() { QueryWrapper wrapper = new QueryWrapper<>(); DataDTO data = new DataDTO(LocalDate.now(), LocalDate.now()); /** *实施日期是当前系统时间的标准文本状态变为'现行有效' */ QueryWrapper columnsAndCondition = new QueryWrapper<>(); columnsAndCondition.select("STAND_ID").like("SSRQ",LocalDate.now()); List> effectiveList=sarStandAttrInfoDao.selectMaps(columnsAndCondition); // List effectiveList = sarStandardInfoDao.selectWithinTerm(data, "SSRQ"); effectiveList.forEach(item->{ try { SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); sarStandardsInfo.setId(item.get("STAND_ID").toString()); sarStandardsInfo.setTextStatus("vsaga7nwub"); sarStandardsInfoDao.updateById(sarStandardsInfo); // sarStandardInfoDao.updateStandardInfo(item.getStandId(),"vsaga7nwub"); }catch (Exception e){ System.out.println("标准id为=="+item.get("STAND_ID").toString()+"==文本状态更新失败"); } }); /** * 被多个标准代替的标准变为“被代替”,只有一个被代替的自动变为“废止” */ QueryWrapper columns = new QueryWrapper<>(); columns.select("DTBJH","STAND_ID"); List> mapsDTBZH = sarStandAttrInfoDao.selectMaps(columns); mapsDTBZH.forEach(item->{ if (item.get("DTBJH")!=null && !item.get("DTBJH").toString().equals("")){ String dtbzh = item.get("DTBJH").toString(); String[] split = dtbzh.split(","); SarStandardsInfo sarStandardsInfo = new SarStandardsInfo(); sarStandardsInfo.setId(item.get("STAND_ID").toString()); //一个被代替标准号时,文本状态更新为废止状态,两个及以上时更新为被代替状态 switch (split.length){ case 0 : break; case 1 : sarStandardsInfo.setTextStatus("chblaarg77");//废止状态 break; default: sarStandardsInfo.setTextStatus("qke0ckro2p");//被代替状态 } try { sarStandardsInfoDao.updateById(sarStandardsInfo); }catch (Exception e){ System.out.println("代替标准状态更新:id为"+item.get("STAND_ID").toString()+"文本状态更新失败"); } } }); } }