package com.zy.asrs.task; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
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.common.utils.HttpHandler; 
 | 
import com.zy.core.enums.LocStsType; 
 | 
import com.zy.core.enums.SlaveType; 
 | 
import com.zy.core.enums.WrkIoType; 
 | 
import com.zy.core.enums.WrkStsType; 
 | 
import com.zy.system.entity.Config; 
 | 
import com.zy.system.service.ConfigService; 
 | 
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<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().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<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().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<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().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<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.COMPLETE_MOVE.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()); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Scheduled(cron = "0/1 * * * * ? ") 
 | 
    @Transactional 
 | 
    public void executeCharge(){ 
 | 
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().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<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().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.F)); 
 | 
                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)); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |