package com.zy.asrs.task; 
 | 
  
 | 
import com.baomidou.mybatisplus.mapper.EntityWrapper; 
 | 
import com.core.common.Cools; 
 | 
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; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.Collections; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * Created by Monkey D. Luffy on 2023.07.25 
 | 
 * 徐工汉云..............以下.............上饶江铜.............自动补空板 
 | 
 */ 
 | 
@Component 
 | 
public class WrkMastStaInItScheduler { 
 | 
  
 | 
    private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); 
 | 
  
 | 
    @Autowired 
 | 
    private WrkMastStaInItHandler wrkMastStaInItHandler; 
 | 
    @Autowired 
 | 
    private BasDevpService basDevpService; 
 | 
    @Autowired 
 | 
    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);add(118); 
 | 
    }}; 
 | 
  
 | 
    public static final List<Integer> STA_WORK_RU = new ArrayList<Integer>() {{ 
 | 
        add(118);add(120);add(121);add(122);add(123); 
 | 
    }}; 
 | 
//    add(171); 
 | 
  
 | 
  
 | 
    @Scheduled(cron = "0/1 * * * * ? ") 
 | 
    private void execute(){ 
 | 
        RgvOneSign rgvTwoSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","rgvTwo")); 
 | 
        if (Cools.isEmpty(rgvTwoSign) || rgvTwoSign.getRgvOneSign()!=2){ 
 | 
            return; 
 | 
        } 
 | 
        List<Integer> integersStaArr = new ArrayList<>(); 
 | 
        List<int[]> stalistArr = new ArrayList<>(); 
 | 
        for(Integer staNo : STA_WORK_CU){ 
 | 
            Integer crnNo = getCrnNo(staNo); 
 | 
            int selectCount = wrkMastService.selectCount( 
 | 
                    new EntityWrapper<WrkMast>().eq("crn_no", crnNo).eq("wrk_sts", 11L)); 
 | 
            stalistArr.add(new int[]{staNo, selectCount}); 
 | 
        } 
 | 
        Collections.sort(stalistArr, (a, b) -> b[1] - a[1]);  // 降序排列 
 | 
        for (int[] staNowArr : stalistArr){ 
 | 
            integersStaArr.add(staNowArr[0]); 
 | 
        } 
 | 
        for(Integer staNo : integersStaArr){ 
 | 
            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()<100 || wrkMast.getIoType()==110){ 
 | 
                        if (!wrkMast.getStaNo().equals(122)){ 
 | 
                            continue; 
 | 
                        } 
 | 
                    } 
 | 
                    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){ 
 | 
            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 (wrkTypeSign){ 
 | 
                        ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,13); 
 | 
                        if (result.getCode()==200) { 
 | 
                            continue; 
 | 
                        } else { 
 | 
                            System.out.println(staNo+"失败!"); 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            }catch (Exception e){ 
 | 
                log.error("自动补空板STA_WORK_RU处理失败,当前站点号:"+staNo+"异常信息"+e); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Scheduled(cron = "0/1 * * * * ? ") 
 | 
    private void execute2(){ 
 | 
        RgvOneSign rgvTwoSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","rgvTwo")); 
 | 
        if (Cools.isEmpty(rgvTwoSign) || rgvTwoSign.getRgvOneSign()!=2){ 
 | 
            return; 
 | 
        } 
 | 
        try{ 
 | 
            List<Integer> integersStaArr = new ArrayList<>(); 
 | 
            List<int[]> stalistArr = new ArrayList<>(); 
 | 
            for(Integer staNo : STA_WORK_CU){ 
 | 
                Integer crnNo = getCrnNo(staNo); 
 | 
                int selectCount = wrkMastService.selectCount( 
 | 
                        new EntityWrapper<WrkMast>().eq("crn_no", crnNo).eq("wrk_sts", 11L)); 
 | 
                stalistArr.add(new int[]{staNo, selectCount}); 
 | 
            } 
 | 
            Collections.sort(stalistArr, (a, b) -> b[1] - a[1]); 
 | 
            for (int[] staNowArr : stalistArr){ 
 | 
                integersStaArr.add(staNowArr[0]); 
 | 
            } 
 | 
            for(Integer staNo : integersStaArr){ 
 | 
                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 : integersStaArr){ 
 | 
                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); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public boolean fullKM(WrkMast wrkMast){ 
 | 
        if (wrkMast.getIoType()!=10 && wrkMast.getIoType()!=110){ 
 | 
            return true; 
 | 
        } 
 | 
        return false; 
 | 
    } 
 | 
  
 | 
    public Integer getCrnNo(Integer staNo){ 
 | 
        switch (staNo){ 
 | 
            case 100: 
 | 
            case 101: 
 | 
            case 102: 
 | 
                return 1; 
 | 
            case 103: 
 | 
            case 104: 
 | 
            case 105: 
 | 
                return 2; 
 | 
            case 106: 
 | 
            case 107: 
 | 
            case 108: 
 | 
                return 3; 
 | 
            case 109: 
 | 
            case 110: 
 | 
            case 111: 
 | 
                return 4; 
 | 
            case 112: 
 | 
            case 113: 
 | 
            case 114: 
 | 
                return 5; 
 | 
            case 115: 
 | 
            case 116: 
 | 
            case 117: 
 | 
                return 6; 
 | 
            default: 
 | 
                return 0; 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |