| 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.HashMap; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * 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_IN = new ArrayList<Integer>() {{ | 
|         add(1042);add(1043);add(1104);add(1105);add(1038);add(1036);add(2037); | 
|     }}; | 
|   | 
|     //出库口 | 
|     public static final List<Integer> STA_WORK_OUT = new ArrayList<Integer>() {{ | 
|         add(1007);add(1005);add(1010);add(1008);add(1021);add(1019); | 
|         add(1024);add(1022);add(1031);add(1029);add(2003);add(2001); | 
|         add(2009);add(2007);add(2015);add(2013);add(2021);add(2019); | 
|         add(2027);add(2025); | 
|     }}; | 
|     public static final Map<Integer, Integer> siteOutMap = new HashMap<Integer, Integer>() {{ | 
|         put(1007, 1007);put(1010, 1010);put(1021, 1021);put(1024, 1024);put(1031, 1031); | 
|         put(1005, 1007);put(1008, 1010);put(1019, 1021);put(1022, 1024);put(1029, 1031); | 
|         put(2001, 2003);put(2007, 2009);put(2013, 2015);put(2019, 2021);put(2025, 2027); | 
|         put(2003, 2003);put(2009, 2009);put(2015, 2015);put(2021, 2021);put(2027, 2027); | 
|         put(1105,1105);put(1104,1105);put(1043,1042);put(1042,1042); | 
|     }}; | 
|     public static final Map<Integer, Integer> siteInMap = new HashMap<Integer, Integer>() {{ | 
|         put(1043, 1042);put(1042, 1042);put(1105, 1105);put(1104, 1105);put(1036, 1036);put(1038, 1038);put(2037,2037); | 
|     }}; | 
|   | 
|     // 异常出库口 | 
|     public static final List<Integer> STA_WORK_Exception = new ArrayList<Integer>() {{ | 
|         add(1042);add(1105);add(1104);add(1043); | 
|     }}; | 
|   | 
| //    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(119);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); | 
| //    }}; | 
|   | 
|   | 
|     @Scheduled(cron = "0/3 * * * * ? ") | 
|     private void execute(){ | 
|         for(Integer staNo : STA_WORK_IN){ | 
|             BasDevp basDevp = basDevpService.selectById(staNo); | 
|             basDevp.setDevNo(siteInMap.get(basDevp.getDevNo())); | 
|             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; | 
|                 } | 
| //                boolean wrkTypeSign = fullKM(wrkMast); | 
|                 if (!Cools.isEmpty(wrkMast)){ | 
|                     ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,21);//入库 | 
|                     if (result.getCode()==200){ | 
|                         continue; | 
|                     }else { | 
|                         System.out.println(staNo+"失败1!"); | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|   | 
|         for(Integer staNo : STA_WORK_OUT){ | 
|             BasDevp basDevp = basDevpService.selectById(staNo); | 
|             basDevp.setDevNo(siteOutMap.get(basDevp.getDevNo())); | 
|             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.getWrkSts()!=2 || wrkMast.getIoType()==10){ | 
| //                    continue; | 
| //                } | 
| //                boolean wrkTypeSign = fullKM(wrkMast); | 
|   | 
|                 if (!Cools.isEmpty(wrkMast)){ | 
| //                    if (wrkTypeSign){ | 
|                         ReturnT<String> result = wrkMastStaInItHandler.start(wrkMast,basDevp,22);//出库 | 
|                         if (result.getCode()==200) { | 
|                             continue; | 
|                         } else { | 
|                             System.out.println(staNo+"失败3!"); | 
|                         } | 
|                 } | 
|             } | 
|         } | 
|         for(Integer staNo: STA_WORK_Exception){ | 
|             BasDevp basDevp = basDevpService.selectById(staNo); | 
|             basDevp.setDevNo(siteOutMap.get(basDevp.getDevNo())); | 
|             if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){ | 
|                 ReturnT<String> result = wrkMastStaInItHandler.start(null,basDevp,23);//异常退出 | 
|                 if (result.getCode()==200) { | 
|                     continue; | 
|                 } else { | 
|                     System.out.println(staNo+"失败3!"); | 
|                 } | 
|   | 
|             } | 
|         } | 
|     } | 
|   | 
| //    @Scheduled(cron = "0/3 * * * * ? ") | 
| //    private void execute2(){ | 
| //        try{ | 
| //            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()!=101 && wrkMast.getIoType()!=104){ | 
| //                        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.getLoading().equals("Y") || basDevpEnd.getWrkNo()!=0 || basDevpEnd.getLoading().equals("Y") || basDevpEnd.getReportSign()!=0){ | 
| //                        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 (wrkDetls.size()!=0){ | 
| //                            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+"失败4!"); | 
| //                            } | 
| //                        } | 
| //                    } | 
| //                } | 
| //            } | 
| // | 
| //            for(Integer staNo : STA_WORK_CU){ | 
| //                BasDevp basDevp = basDevpService.selectById(staNo); | 
| //                if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y")){ | 
| //                    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()!=104){ | 
| //                        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; | 
| //                    if (wrkMast.getIoType()!=101){ | 
| //                        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); | 
| //                        if (wrkDetls.size()!=0){ | 
| //                            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; | 
| //                        } | 
| //                    } | 
| //                    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 (sign || !basDevpEnd.getLoading().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){ | 
| //                                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.getLoading().equals("Y") || basDevpOther.getWrkNo()!=0 || basDevpOther.getLoading().equals("Y") || basDevpOther.getReportSign()!=0) { | 
| //                                continue; | 
| //                            } | 
| //                            wrkMast.setStaNo(staNoOther); | 
| //                            wrkMastService.updateById(wrkMast); | 
| //                            log.info("工作号"+wrkMast.getWrkNo()+"修改目标站为:"+staNoOther+";原目标站为:"+wrkMastStaNo); | 
| //                            return; | 
| //                        } | 
| //                    } | 
| //                } | 
| //            } | 
| //        }catch (Exception e){ | 
| //            log.error("目标为拆垛位置的任务生成小车工作档案失败!!"+e); | 
| //        } | 
| //    } | 
|   | 
|     public boolean fullKM(WrkMast wrkMast){ | 
|         if (wrkMast.getIoType()!=10 && wrkMast.getIoType()!=110){ | 
|             return true; | 
|         } | 
|         return false; | 
|     } | 
|   | 
| } |