package com.zy.asrs.task; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.domain.enums.NotifyMsgType; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastLogService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.utils.NotifyUtils; import com.zy.core.enums.LocStsType; import com.zy.core.enums.WrkIoType; import com.zy.core.enums.WrkStsType; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @Component @Slf4j public class WrkMastScheduler { @Autowired private WrkMastService wrkMastService; @Autowired private WrkMastLogService wrkMastLogService; @Autowired private LocMastService locMastService; @Autowired private NotifyUtils notifyUtils; @Scheduled(cron = "0/1 * * * * ? ") @Transactional public void executeIn() { List wrkMasts = wrkMastService.selectList(new EntityWrapper().eq("wrk_sts", WrkStsType.COMPLETE_INBOUND.sts)); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { String locNo = wrkMast.getLocNo(); LocMast locMast = locMastService.queryByLoc(locNo); if (locMast == null) { log.info("[workNo={}]库位不存在", wrkMast.getWrkNo()); continue; } if (!locMast.getLocSts().equals("S")) { log.info("[workNo={}]库位状态不处于S", wrkMast.getWrkNo()); continue; } locMast.setLocSts("F"); locMast.setModiTime(new Date()); boolean result = locMastService.updateById(locMast); if (!result) { log.info("[workNo={}]库位状态F更新失败", wrkMast.getWrkNo()); continue; } // 保存工作主档历史档 if (!wrkMastLogService.save(wrkMast.getWrkNo())) { log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo()); } // 删除工作主档 if (!wrkMastService.deleteById(wrkMast)) { log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo()); } //上报 notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast)); } } @Scheduled(cron = "0/1 * * * * ? ") @Transactional public void executeOut() { List wrkMasts = wrkMastService.selectList(new EntityWrapper().eq("wrk_sts", WrkStsType.COMPLETE_OUTBOUND.sts)); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { String locNo = wrkMast.getSourceLocNo(); LocMast locMast = locMastService.queryByLoc(locNo); if (locMast == null) { log.info("[workNo={}]库位不存在", wrkMast.getWrkNo()); continue; } if (!locMast.getLocSts().equals("R")) { log.info("[workNo={}]库位状态不处于R", wrkMast.getWrkNo()); continue; } locMast.setLocSts("O"); locMast.setModiTime(new Date()); boolean result = locMastService.updateById(locMast); if (!result) { log.info("[workNo={}]库位状态O更新失败", wrkMast.getWrkNo()); continue; } // 保存工作主档历史档 if (!wrkMastLogService.save(wrkMast.getWrkNo())) { log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo()); } // 删除工作主档 if (!wrkMastService.deleteById(wrkMast)) { log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo()); } //上报 notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast)); } } @Scheduled(cron = "0/1 * * * * ? ") @Transactional public void executeLocMove() { List wrkMasts = wrkMastService.selectList(new EntityWrapper().eq("wrk_sts", WrkStsType.COMPLETE_LOC_MOVE.sts)); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { String sourceLocNo = wrkMast.getSourceLocNo(); String locNo = wrkMast.getLocNo(); LocMast locMast = locMastService.queryByLoc(locNo); if (locMast == null) { log.info("[workNo={}]库位不存在", wrkMast.getWrkNo()); continue; } if (!locMast.getLocSts().equals("S")) { log.info("[workNo={}]库位状态不处于S", wrkMast.getWrkNo()); continue; } LocMast sourceLocMast = locMastService.queryByLoc(sourceLocNo); if (sourceLocMast == null) { log.info("[workNo={}]库位不存在", wrkMast.getWrkNo()); continue; } if (!sourceLocMast.getLocSts().equals("R")) { log.info("[workNo={}]库位状态不处于R", wrkMast.getWrkNo()); continue; } locMast.setLocSts("F"); locMast.setModiTime(new Date()); boolean result = locMastService.updateById(locMast); if (!result) { log.info("[workNo={}]库位状态F更新失败", wrkMast.getWrkNo()); continue; } sourceLocMast.setLocSts("O"); sourceLocMast.setModiTime(new Date()); boolean result2 = locMastService.updateById(sourceLocMast); if (!result2) { log.info("[workNo={}]库位状态O更新失败", wrkMast.getWrkNo()); continue; } // 保存工作主档历史档 if (!wrkMastLogService.save(wrkMast.getWrkNo())) { log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo()); } // 删除工作主档 if (!wrkMastService.deleteById(wrkMast)) { log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo()); } //上报 notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_COMPLETE, JSON.toJSONString(wrkMast)); } } @Scheduled(cron = "0/1 * * * * ? ") @Transactional public void executeMove() { List wrkMasts = wrkMastService.selectList(new EntityWrapper() .in("wrk_sts" , WrkStsType.COMPLETE_MOVE.sts , WrkStsType.COMPLETE_MOVE_TRANSPORT_LIFT.sts , WrkStsType.COMPLETE_MOVE_TRANSPORT_LIFT_OUT.sts , WrkStsType.MOVE_IN_NO_LIFT_14.sts , WrkStsType.MOVE_OUT_NO_LIFT_13.sts )); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { WrkMast main = wrkMastService.selectByWorkNo(wrkMast.getMainWrkNo()); if (main != null) { if (main.getIoType() == WrkIoType.IN.id) { main.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts); } else if (main.getIoType() == WrkIoType.OUT.id) { main.setShuttleNo(wrkMast.getShuttleNo()); main.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts); //那时候托盘在提升机里,则需要锁住 main.setShuttleNo(1); } main.setModiTime(new Date()); if (!wrkMastService.updateById(main)) { log.info("更新主工作档[workNo={}]失败", wrkMast.getWrkNo()); } } // 保存工作主档历史档 if (!wrkMastLogService.save(wrkMast.getWrkNo())) { log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo()); } // 删除工作主档 if (!wrkMastService.deleteById(wrkMast)) { log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo()); } } } @Scheduled(cron = "0/1 * * * * ? ") @Transactional public void executeCharge() { List wrkMasts = wrkMastService.selectList(new EntityWrapper().eq("wrk_sts", WrkStsType.COMPLETE_CHARGE.sts)); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { // 保存工作主档历史档 if (!wrkMastLogService.save(wrkMast.getWrkNo())) { log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo()); } // 删除工作主档 if (!wrkMastService.deleteById(wrkMast)) { log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo()); } //上报 //notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_CHARGE_COMPLETE, JSON.toJSONString(wrkMast)); } } @Scheduled(cron = "0/1 * * * * ? ") @Transactional public void executeCancelTask() { List wrkMasts = wrkMastService.selectList(new EntityWrapper().eq("mk", "taskCancel")); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { // 保存工作主档历史档 if (!wrkMastLogService.save(wrkMast.getWrkNo())) { log.info("保存工作历史档[workNo={}]失败", wrkMast.getWrkNo()); } // 删除工作主档 if (!wrkMastService.deleteById(wrkMast)) { log.info("删除工作主档[workNo={}]失败", wrkMast.getWrkNo()); } if (wrkMast.getIoType() == WrkIoType.IN.id) { LocMast locMast = locMastService.queryByLoc(wrkMast.getLocNo()); locMast.setLocSts(String.valueOf(LocStsType.O)); locMast.setModiTime(new Date()); locMastService.updateById(locMast); } else if (wrkMast.getIoType() == WrkIoType.OUT.id) { LocMast locMast = locMastService.queryByLoc(wrkMast.getSourceLocNo()); locMast.setLocSts(String.valueOf(LocStsType.O)); locMast.setModiTime(new Date()); locMastService.updateById(locMast); } else if (wrkMast.getIoType() == WrkIoType.LOC_MOVE.id) { LocMast sourceLocMast = locMastService.queryByLoc(wrkMast.getSourceLocNo()); LocMast locMast = locMastService.queryByLoc(wrkMast.getLocNo()); if (sourceLocMast.getLocSts().equals(String.valueOf(LocStsType.R))) { sourceLocMast.setLocSts(String.valueOf(LocStsType.F)); sourceLocMast.setModiTime(new Date()); locMastService.updateById(sourceLocMast); } if (locMast.getLocSts().equals(String.valueOf(LocStsType.S))) { locMast.setLocSts(String.valueOf(LocStsType.O)); locMast.setModiTime(new Date()); locMastService.updateById(locMast); } } //上报 notifyUtils.notify("task", 1, String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.TASK_CANCEL, JSON.toJSONString(wrkMast)); } } }