package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.InventoryCheckOrder; import com.zy.asrs.entity.InventoryCheckOrderDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.InventoryCheckOrderDetlService; import com.zy.asrs.service.InventoryCheckOrderService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.WorkMastHandler; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; /** * Created by vincent on 2020/7/7 */ @Component public class WorkMastScheduler { private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); @Autowired private WrkMastService wrkMastService; @Autowired private WorkMastHandler workMastHandler; @Autowired private InventoryCheckOrderService inventoryCheckOrderService; @Autowired private InventoryCheckOrderDetlService inventoryCheckOrderDetlService; @Autowired private ConfigService configService; @Scheduled(cron = "0/3 * * * * ? ") public void execute() { List wrkMasts = wrkMastService.selectToBeCompleteData(); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { ReturnT returnT = workMastHandler.start(wrkMast); if (!returnT.isSuccess()) { wrkMast.setUpdMk("X"); wrkMast.setErrorMemo(returnT.getMsg()); wrkMast.setErrorTime(new Date()); if (!wrkMastService.updateById(wrkMast)) { log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo()); } } } } /** * 自动删除超过1天,无明细的盘点单 */ @Scheduled(cron = "0/3 * * * * ? ") public void execute2() { List inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper()); if (inventoryCheckOrders.isEmpty()) { return; } for (InventoryCheckOrder checkOrder : inventoryCheckOrders) { List checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper().eq("order_no", checkOrder.getOrderNo())); if (checkOrderDetls.isEmpty() && System.currentTimeMillis() - checkOrder.getCreateTime().getTime() >= 1000 * 60 * 60 * 24) { if (!inventoryCheckOrderService.deleteById(checkOrder)) { log.error("盘点单[orderNo={}]删除失败", checkOrder.getOrderNo()); } else { log.info("盘点单[orderNo={}]删除成功", checkOrder.getOrderNo()); } } } } /** * 自动完结达到一定数量的盘点单 */ @Scheduled(cron = "0/30 * * * * ? ") public void execute3() { List inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper()); if (inventoryCheckOrders.isEmpty()) { return; } int num = 20; try { Config config = configService.selectConfigByCode("CheckOrderNum"); if (Cools.isEmpty(config) || config.getValue().equals("false")) { } else { num = Integer.parseInt(config.getValue()); } } catch (Exception e) { } for (InventoryCheckOrder checkOrder : inventoryCheckOrders) { List checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper().eq("order_no", checkOrder.getOrderNo())); boolean complete = true; for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) { if (!checkOrderDetl.getStatus().equals("2")) { complete = false; } } if (complete && checkOrderDetls.size() >= num) { checkOrder.setStatus("2"); if (!inventoryCheckOrderService.updateById(checkOrder)) { log.error("盘点单[orderNo={}]更新状态成功", checkOrder.getOrderNo()); } else { log.info("盘点单[orderNo={}]更新状态失败", checkOrder.getOrderNo()); } } } } }