package com.gk.firework.Scheduls.WarningTask; import com.gk.firework.Domain.*; import com.gk.firework.Domain.Enum.CertificateStatus; import com.gk.firework.Service.*; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @author : jingjy * @date : 2021/6/11 14:16 */ @Configuration @EnableScheduling @ConditionalOnProperty(prefix = "scheduling",name = "enabled",havingValue = "true") public class TransportWarnTask { private Logger logger = LogManager.getLogger(StockWarnTask.class); private static final String WARN_TYPE = "运输证超期"; private static final String WARN_LEVEL = "预警"; private static final Integer WARN_PERIOD = 30; @Autowired private TransportCertService transportCertService; @Autowired private TransportCertificateService transportCertificateService; @Autowired private EnterpriseService enterpriseService; @Autowired private WarnContentService warnContentService; @Autowired private EntryService entryService; @Scheduled(cron = "0 0 2 * * ?") //每天凌晨两点执行一次 private void transportWarn(){ Calendar calendar = Calendar.getInstance(); Date date = new Date(); calendar.setTime(date); calendar.set(Calendar.DATE,calendar.get(Calendar.DATE) - 15); try { List transportCerts = transportCertService.selectWarnList(calendar.getTime(),date); for (TransportCert transportCert : transportCerts){ Boolean isEntry = entryService.isTransportCertEntry(transportCert.getCode()); if (!isEntry && transportCert.getprocesstime().getTime() < date.getTime()){ insertWarnContent(transportCert.getEnterprisenumber(),transportCert.getCreatebyname(),transportCert.getCode(), transportCert.getprocesstime(),date); } } List certificates = transportCertificateService.selectWarnList(calendar.getTime(),date); for (TransportCertificate certificate : certificates){ Boolean isEntry = entryService.isTransportCertEntry(certificate.getCode()); if (!isEntry && certificate.getDeadline().getTime() < date.getTime()){ insertWarnContent(certificate.getEnterprisenumber(),certificate.getCreatebyname(), certificate.getCode(),certificate.getDeadline(),date); } } }catch (Exception e) { e.printStackTrace(); } } private void insertWarnContent(String enterpriseNumber, String createByName, String code, Date deadline, Date date) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss"); String deadlineStr = dateFormat.format(deadline); Enterprise enterprise = enterpriseService.selectEnterpriseByNumber(enterpriseNumber); WarnContentInfo warnContentInfo = new WarnContentInfo(); warnContentInfo.setWarntype(WARN_TYPE); warnContentInfo.setPeriod(WARN_PERIOD); warnContentInfo.setEnterpriseid(enterprise.getId()); warnContentInfo.setWarnlevel(WARN_LEVEL); warnContentInfo.setCreateddate(date); warnContentInfo.setModifieddate(date); warnContentInfo.setModifiedby("系统生成"); String content = createByName+"申请的运输证:" +code+"预计送达时间:"+deadlineStr+",超期未入库!"; warnContentInfo.setWarncontent(content); WarnContentInfo warnContentInfoExist = warnContentService.selectByWarn(WARN_TYPE,WARN_LEVEL,null,content); if (warnContentInfoExist == null){ warnContentService.save(warnContentInfo); } } }