package com.gk.firework.Scheduls.WarningTask; import com.gk.firework.Domain.StockInfo; import com.gk.firework.Domain.WarnContentInfo; import com.gk.firework.Domain.WarningInfo; import com.gk.firework.Service.SaleOrderService; import com.gk.firework.Service.StockService; import com.gk.firework.Service.WarnContentService; import com.gk.firework.Service.WarningService; 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.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @Configuration @EnableScheduling @ConditionalOnProperty(prefix = "scheduling",name = "enabled",havingValue = "true") public class StockWarnTask { private Logger logger = LogManager.getLogger(StockWarnTask.class); private static final String warnType = "库存超量"; @Autowired WarningService warningService; @Autowired SaleOrderService saleOrderService; @Autowired WarnContentService warnContentService; @Autowired StockService stockService; // @Scheduled(cron = "0/20 * * * * ?") //每隔5秒执行一次 @Scheduled(cron = "0 0 2 * * ?") //每天凌晨两点执行一次 private void purchaseWarn() throws Exception{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { List warningInfos = warningService.selectByType(warnType); if (warningInfos.size() > 0){ for (WarningInfo warningInfo : warningInfos){ insertWarnContent(warningInfo); } } }catch (Exception e) { e.printStackTrace(); } } private void insertWarnContent(WarningInfo warningInfo) { Integer min = warningInfo.getMinimum(); Integer max = warningInfo.getMaximum(); List slices = new ArrayList<>(); for (int i = 1; i < 21; i++){ slices.add(i); } //超过预警值 List earlyWarnList = stockService.selectEarlyWarn(min,max,warningInfo.getEnterprisetype(),slices); if (earlyWarnList.size() > 0){ List warnContentInfos = new ArrayList<>(); for (StockInfo stockInfo : earlyWarnList) { String warncontent = "超出库存限制,当前库存总数为"+stockInfo.getNum(); WarnContentInfo warnContentExist = warnContentService.selectByEnterpriseWarn(warnType,"预警",Long.parseLong(stockInfo.getOwner()),warncontent); if (warnContentExist == null) { WarnContentInfo warnContentInfo = new WarnContentInfo(); warnContentInfo.setWarntype(warnType); warnContentInfo.setWarnlevel("预警"); warnContentInfo.setEnterpriseid(Long.parseLong(stockInfo.getOwner())); warnContentInfo.setWarncontent(warncontent); warnContentInfo.setIsmend((byte) 0); warnContentInfo.setIsneed((byte) 0); warnContentInfo.setIssend((byte) 0); warnContentInfo.setModifiedby("系统生成"); warnContentInfo.setModifieddate(new Date()); warnContentInfo.setCreateddate(new Date()); if (warnContentInfos.size() > 0){ boolean isfound = false; for (WarnContentInfo warnContent : warnContentInfos){ if (warnContent.getEnterpriseid().equals(warnContentInfo.getEnterpriseid()) && warnContent.getWarncontent().equals(warnContentInfo.getWarncontent())){ isfound = true; break; } } if (!isfound){ warnContentInfos.add(warnContentInfo); } }else { warnContentInfos.add(warnContentInfo); } } } warnContentService.saveBatch(warnContentInfos); } //超过报警值 List alarmList = stockService.selectAlarm(max,warningInfo.getEnterprisetype(),slices); if (alarmList.size() > 0){ List warnContentInfos = new ArrayList<>(); Byte issms = warningInfo.getIssms(); for (StockInfo stockInfo : alarmList) { String warncontent = "超出库存限制,当前库存总数为"+stockInfo.getNum(); WarnContentInfo warnContentExist = warnContentService.selectByEnterpriseWarn(warnType,"报警",Long.parseLong(stockInfo.getOwner()),warncontent); if (warnContentExist == null) { WarnContentInfo warnContentInfo = new WarnContentInfo(); warnContentInfo.setWarntype(warnType); warnContentInfo.setWarnlevel("报警"); warnContentInfo.setEnterpriseid(Long.parseLong(stockInfo.getOwner())); warnContentInfo.setWarncontent(warncontent); warnContentInfo.setIsmend((byte) 0); warnContentInfo.setIsneed(issms); warnContentInfo.setIssend((byte) 0); warnContentInfo.setModifiedby("系统生成"); warnContentInfo.setModifieddate(new Date()); warnContentInfo.setCreateddate(new Date()); if (warnContentInfos.size() > 0){ boolean isfound = false; for (WarnContentInfo warnContent : warnContentInfos){ if (warnContent.getEnterpriseid().equals(warnContentInfo.getEnterpriseid()) && warnContent.getWarncontent().equals(warnContentInfo.getWarncontent())){ isfound = true; break; } } if (!isfound){ warnContentInfos.add(warnContentInfo); } }else { warnContentInfos.add(warnContentInfo); } } } warnContentService.saveBatch(warnContentInfos); } } }