自动化立体仓库 - WMS系统
#
lsh
2024-12-23 d8a363927da4db284b2bed095a52c86398663163
src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java
@@ -2,15 +2,12 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.RgvOneSign;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.WrkMastSta;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.RgvOneSignService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WrkMastStaInItHandler;
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;
@@ -25,6 +22,8 @@
@Component
public class WrkMastStaInItScheduler {
    private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
    @Autowired
    private WrkMastStaInItHandler wrkMastStaInItHandler;
    @Autowired
@@ -33,71 +32,102 @@
    private WrkMastService wrkMastService;
    @Autowired
    private RgvOneSignService rgvOneSignService;
    @Autowired
    private WrkMastStaService wrkMastStaService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private LocDetlService locDetlService;
    public static final List<Integer> STA_WORK_CU = new ArrayList<Integer>() {{
        add(101);add(102);add(104);add(105);add(107);add(108);add(110);add(111);add(113);add(114);add(116);add(117);
    }};
    public static final List<Integer> STA_WORK_CU_CAR = new ArrayList<Integer>() {{
        add(118);add(120);add(121);
    }};
    public static final List<Integer> STA_WORK_CU_CAR_TWO = new ArrayList<Integer>() {{
        add(120);add(121);
    }};
    public static final List<Integer> STA_WORK_CU_CAR_THREE  = new ArrayList<Integer>() {{
        add(118);add(120);
    }};
    public static final List<Integer> STA_WORK_CU_CAR_FOUR  = new ArrayList<Integer>() {{
        add(121);
    }};
    public static final List<Integer> STA_WORK_RU = new ArrayList<Integer>() {{
        add(118);add(119);add(120);add(121);add(122);add(123);
        add(118);add(120);add(121);add(122);add(123);add(171);
    }};
    @Scheduled(cron = "0/3 * * * * ? ")
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
        for(Integer staNo : STA_WORK_CU){
            BasDevp basDevp = basDevpService.selectById(staNo);
            if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
                if(Cools.isEmpty(wrkMast)){
                    continue;
                }
                if (wrkMast.getIoType()<100 || wrkMast.getIoType()==110){
                    if (!wrkMast.getStaNo().equals(122)){
            try{
                BasDevp basDevp = basDevpService.selectById(staNo);
                if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){
                    if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                        if (!basDevp.getLoadingSuper().equals("Y")){
                            continue;
                        }
                    }
                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
                    if(Cools.isEmpty(wrkMast)){
                        continue;
                    }
                }
                if (wrkMast.getWrkSts()!=14 && wrkMast.getWrkSts()!=15){
                    continue;
                }
//                if (wrkMast.getStaNo()==118 || wrkMast.getStaNo()==119){
//                    RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","oneSign"));
//                    if (rgvOneSign.getRgvOneSign()==1){
//                        continue;
//                    }
//                }
                boolean wrkTypeSign = fullKM(wrkMast);
                if (!Cools.isEmpty(wrkMast)){
                    if (wrkTypeSign) {
                        ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,13);//3:取放
                        if (result.getCode()==200){
                    if (wrkMast.getIoType()<100 || wrkMast.getIoType()==110){
                        if (!wrkMast.getStaNo().equals(122)){
                            continue;
                        }else {
                            System.out.println(staNo+"失败!");
                        }
                    } else {
                        ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,23);//5:满取
                        if (result.getCode()==200){
                            continue;
                        }else {
                            System.out.println(staNo+"失败!");
                    }
                    if (wrkMast.getWrkSts()!=14 && wrkMast.getWrkSts()!=15){
                        continue;
                    }
                    if (wrkMast.getStaNo()==118 || wrkMast.getStaNo()==119 || wrkMast.getStaNo()==120 || wrkMast.getStaNo()==121){
                        continue;
                    }
                    boolean wrkTypeSign = fullKM(wrkMast);
                    if (!Cools.isEmpty(wrkMast)){
                        if (wrkTypeSign) {
                            ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,13);//3:取放
                            if (result.getCode()==200){
                                continue;
                            }else {
                                System.out.println(staNo+"失败!");
                            }
                        } else {
                            ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,23);//5:满取
                            if (result.getCode()==200){
                                continue;
                            }else {
                                System.out.println(staNo+"失败!");
                            }
                        }
                    }
                }
            }catch (Exception e){
                log.error("自动补空板STA_WORK_CU处理失败,当前站点号:"+staNo+"异常信息"+e);
            }
        }
        for(Integer staNo : STA_WORK_RU){
            BasDevp basDevp = basDevpService.selectById(staNo);
            if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
                if (wrkMast.getWrkSts()!=2 || wrkMast.getIoType()==10){
                    continue;
                }
            try{
                BasDevp basDevp = basDevpService.selectById(staNo);
                if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getLoadingSuper().equals("Y") && basDevp.getAutoing().equals("Y")){
                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
                    if (Cools.isEmpty(wrkMast)){
                        continue;
                    }
                    if (wrkMast.getWrkSts()!=2 || wrkMast.getIoType()==10){
                        continue;
                    }
//                boolean wrkTypeSign = fullKM(wrkMast);
                if (!Cools.isEmpty(wrkMast)){
                    if (!Cools.isEmpty(wrkMast)){
//                    if (wrkTypeSign){
                        ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,13);
                        if (result.getCode()==200) {
@@ -105,16 +135,212 @@
                        } else {
                            System.out.println(staNo+"失败!");
                        }
//                    }else {
//                        ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,23);
//                        if (result.getCode()==200) {
//                            continue;
//                        } else {
//                            System.out.println(staNo+"失败!");
//                        }
//                    }
                    }
                }
            }catch (Exception e){
                log.error("自动补空板STA_WORK_RU处理失败,当前站点号:"+staNo+"异常信息"+e);
            }
        }
    }
//    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute2(){
        try{
            for(Integer staNo : STA_WORK_CU){
                try{
                    BasDevp basDevp = basDevpService.selectById(staNo);
                    if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){
                        if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                            if (!basDevp.getLoadingSuper().equals("Y")){
                                continue;
                            }
                        }
                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
                        if(Cools.isEmpty(wrkMast)){
                            continue;
                        }
                        if (wrkMast.getIoType()!=101 && wrkMast.getIoType()!=103){
                            continue;
                        }
                        if (wrkMast.getWrkSts()!=14 && wrkMast.getWrkSts()!=15){
                            continue;
                        }
                        if (wrkMast.getStaNo()<118 || wrkMast.getStaNo()>121){
                            continue;
                        }
                        int count = wrkMastStaService.selectCount(new EntityWrapper<WrkMastSta>().eq("sta_start", wrkMast.getStaNo()).or().eq("sta_end", wrkMast.getStaNo()));
                        if (count!=0){
                            continue;
                        }
                        int countStart = wrkMastStaService.selectCount(new EntityWrapper<WrkMastSta>().eq("sta_start", staNo).or().eq("sta_end", staNo).or().eq("wrk_no", wrkMast.getWrkNo()));
                        if (countStart!=0){
                            continue;
                        }
                        BasDevp basDevpEnd = basDevpService.selectById(wrkMast.getStaNo());
                        if (!basDevpEnd.getAutoing().equals("Y") || basDevpEnd.getWrkNo()!=0 || basDevpEnd.getLoading().equals("Y") || basDevpEnd.getReportSign()!=0){
                            continue;
                        }
                        if (basDevpEnd.getDevNo()>117 && basDevpEnd.getDevNo()<124){
                            if (basDevpEnd.getLoadingSuper().equals("Y")){
                                continue;
                            }
                        }
                        if (wrkMast.getStaNo()==118 || wrkMast.getStaNo()==119){
                            RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","oneSign"));
                            if (rgvOneSign.getRgvOneSign()==1){
                                continue;
                            }
                        }
                        if (wrkMast.getIoType()!=101){
                            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
                            if (!Cools.isEmpty(wrkDetls) && !wrkDetls.isEmpty()){
                                String origin = wrkDetls.get(0).getOrigin();
                                if (origin.equals("1")){
                                    if (!STA_WORK_CU_CAR_FOUR.contains(wrkMast.getStaNo())){
                                        continue;
                                    }
                                }else {
                                    if (!STA_WORK_CU_CAR_THREE.contains(wrkMast.getStaNo())){
                                        continue;
                                    }
                                }
                            }else {
                                log.error("未查询到工作明细");
                                continue;
                            }
                        }
//
                        boolean wrkTypeSign = fullKM(wrkMast);
                        if (!Cools.isEmpty(wrkMast)){
                            if (wrkTypeSign) {
                                ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,13);//3:取放
                                if (result.getCode()==200){
                                    continue;
                                }else {
                                    System.out.println(staNo+"失败!");
                                }
                            }
                        }
                    }
                }catch (Exception e){
                    log.error("STA_WORK_CU处理失败,当前站点号:"+staNo+"异常信息"+e);
                }
            }
            for(Integer staNo : STA_WORK_CU){
                try{
                    BasDevp basDevp = basDevpService.selectById(staNo);
                    if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){
                        if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){
                            if (!basDevp.getLoadingSuper().equals("Y")){
                                continue;
                            }
                        }
                        List<Integer> STA_WORK_CU_CAR_NOW = STA_WORK_CU_CAR;
                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
                        if(Cools.isEmpty(wrkMast)){
                            continue;
                        }
                        if (wrkMast.getIoType()!=101 && wrkMast.getIoType()!=103){
                            continue;
                        }
                        if (wrkMast.getWrkSts()!=14 && wrkMast.getWrkSts()!=15){
                            continue;
                        }
                        Integer wrkMastStaNo = wrkMast.getStaNo();
                        if (wrkMastStaNo<118 || wrkMastStaNo>121){
                            continue;
                        }
                        String origin = null;
                        boolean sign = false;
                        boolean sign101 = false;
                        if (wrkMast.getIoType()!=101){
                            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
                            if (!Cools.isEmpty(wrkDetls) && !wrkDetls.isEmpty()){
                                origin = wrkDetls.get(0).getOrigin();
                                if (origin.equals("1")){
                                    if (!STA_WORK_CU_CAR_FOUR.contains(wrkMastStaNo)){
                                        sign = true;
                                    }
                                }else {
                                    if (!STA_WORK_CU_CAR_THREE.contains(wrkMastStaNo)){
                                        sign = true;
                                    }
                                }
                            }else {
                                log.error("未查询到工作明细");
                                continue;
                            }
                        }else {
                            sign101 = true;
                        }
                        int count = wrkMastStaService.selectCount(new EntityWrapper<WrkMastSta>().eq("sta_start", wrkMastStaNo).or().eq("sta_end", wrkMastStaNo));
                        if (count!=0){
                            continue;
                        }
                        int countStart = wrkMastStaService.selectCount(new EntityWrapper<WrkMastSta>().eq("sta_start", staNo).or().eq("sta_end", staNo).or().eq("wrk_no", wrkMast.getWrkNo()));
                        if (countStart!=0){
                            continue;
                        }
                        RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","oneSign"));
                        if (rgvOneSign.getRgvOneSign()==1){
                            STA_WORK_CU_CAR_NOW = STA_WORK_CU_CAR_TWO;
                        }
                        BasDevp basDevpEnd = basDevpService.selectById(wrkMastStaNo);
                        if (Cools.isEmpty(basDevpEnd)){
                            sign = true;
                        }
                        if (!sign && basDevpEnd.getDevNo()>117 && basDevpEnd.getDevNo()<124){
                            if (basDevpEnd.getLoadingSuper().equals("Y")){
                                sign = true;
                            }
                        }
                        if (sign || !basDevpEnd.getAutoing().equals("Y") || basDevpEnd.getWrkNo()!=0 || basDevpEnd.getLoading().equals("Y") || basDevpEnd.getReportSign()!=0) {
                            for (Integer staNoOther : STA_WORK_CU_CAR_NOW) {
                                if (staNoOther.equals(wrkMastStaNo)) continue;
                                if (sign && !sign101){
                                    if (Cools.isEmpty(origin)){
                                        continue;
                                    }
                                    if (origin.equals("1")){
                                        if (!STA_WORK_CU_CAR_FOUR.contains(staNoOther)){
                                            continue;
                                        }
                                    }else {
                                        if (!STA_WORK_CU_CAR_THREE.contains(staNoOther)){
                                            continue;
                                        }
                                    }
                                }
                                int countOther = wrkMastStaService.selectCount(new EntityWrapper<WrkMastSta>().eq("sta_start", staNoOther).or().eq("sta_end", staNoOther));
                                if (countOther!=0){
                                    continue;
                                }
                                BasDevp basDevpOther = basDevpService.selectById(staNoOther);
                                if (!basDevpOther.getAutoing().equals("Y") || basDevpOther.getWrkNo()!=0 || basDevpOther.getLoading().equals("Y") || basDevpOther.getReportSign()!=0) {
                                    continue;
                                }
                                if (basDevpOther.getDevNo()>117 && basDevpOther.getDevNo()<124){
                                    if (basDevpOther.getLoadingSuper().equals("Y")){
                                        continue;
                                    }
                                }
                                wrkMast.setStaNo(staNoOther);
                                wrkMastService.updateById(wrkMast);
                                log.info("工作号"+wrkMast.getWrkNo()+"修改目标站为:"+staNoOther+";原目标站为:"+wrkMastStaNo);
                                return;
                            }
                        }
                    }
                }catch (Exception e){
                    log.error("STA_WORK_CU处理失败,当前站点号:"+staNo+"异常信息"+e);
                }
            }
        }catch (Exception e){
            log.error("目标为拆垛位置的任务生成小车工作档案失败!!"+e);
        }
    }