| 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.WrkMastCrnHandler; | 
| import com.zy.asrs.task.handler.WrkMastStaInItHandler; | 
| import com.zy.asrs.utils.Utils; | 
| 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.List; | 
|   | 
| /** | 
|  * Created by Monkey D. Luffy on 2023.07.25 | 
|  * 亳州煜星..............以下.............亳州煜星.............左右双工位堆垛机执行任务生成 | 
|  */ | 
| @Component | 
| public class WrkMastCrnScheduler { | 
|   | 
|     private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); | 
| //    private static  Integer signSmallTurn = 0; | 
|   | 
|     @Autowired | 
|     private WrkMastCrnHandler wrkMastCrnHandler; | 
|     @Autowired | 
|     private BasDevpService basDevpService; | 
|     @Autowired | 
|     private WrkMastService wrkMastService; | 
|     @Autowired | 
|     private RgvOneSignService rgvOneSignService; | 
|     @Autowired | 
|     private WrkMastStaService wrkMastStaService; | 
|     @Autowired | 
|     private WrkDetlService wrkDetlService; | 
|     @Autowired | 
|     private LocDetlService locDetlService; | 
|     @Autowired | 
|     private WrkMastCrnService wrkMastCrnService; | 
|   | 
|     public static final List<Integer> CRN_WORK_RU = new ArrayList<Integer>() {{ | 
|         add(153);add(145); | 
|     }}; | 
|   | 
|     public static final List<Integer> CRN_WORK_CU = new ArrayList<Integer>() {{ | 
|         add(100);add(148); | 
|     }}; | 
|     public static final List<Integer> CRN_WORK_CU_SMA = new ArrayList<Integer>() {{ | 
|         add(126);add(131); | 
|     }}; | 
|   | 
|   | 
|     @Scheduled(cron = "0/3 * * * * ? ") | 
|     private void execute(){ | 
|         try{ | 
|             for(Integer staNo : CRN_WORK_RU){ | 
|                 List<WrkMastCrn> wrkMastCrnList = wrkMastCrnService.selectList(new EntityWrapper<WrkMastCrn>().eq("sta_no", staNo)); | 
|                 if (Cools.isEmpty(wrkMastCrnList)){ | 
|                     BasDevp basDevp = basDevpService.selectById(staNo); | 
|                     if (basDevp.getWrkNo()!=0 && basDevp.getLoading().equals("Y") && basDevp.getAutoing().equals("Y") && basDevp.getInEnable().equals("Y")){ | 
|                         WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo())); | 
|                         if(Cools.isEmpty(wrkMast)){ | 
|                             continue; | 
|                         } | 
|                         if (wrkMast.getWrkSts()!=2){ | 
|                             continue; | 
|                         } | 
|                         WrkMastCrn wrkMastCrn = wrkMastCrnService.selectOne(new EntityWrapper<WrkMastCrn>().eq("wrk_no", wrkMast.getWrkNo())); | 
|                         if (Cools.isEmpty(wrkMastCrn)){ | 
|                             BasDevp basDevpOther = basDevpService.selectById(staNoOther(staNo)); | 
|                             if (basDevpOther.getWrkNo()!=0 && basDevpOther.getLoading().equals("Y") && basDevpOther.getAutoing().equals("Y") && basDevpOther.getInEnable().equals("Y")){ | 
|                                 WrkMast wrkMastOther = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevpOther.getWrkNo())); | 
|                                 if(Cools.isEmpty(wrkMastOther)){ | 
|                                     continue; | 
|                                 } | 
|                                 if (wrkMastOther.getWrkSts()!=2){ | 
|                                     continue; | 
|                                 } | 
|                                 if (!Cools.isEmpty(wrkMast)){ | 
|                                     ReturnT<String> result = wrkMastCrnHandler.start(wrkMast,wrkMastOther); | 
|                                     if (result.getCode()!=200){ | 
|                                         System.out.println(staNo+"失败!"); | 
|                                     } | 
|                                 } | 
|                             } | 
|                         } | 
|                     } | 
|                 } | 
|             } | 
|         }catch (Exception e){ | 
|             log.error("左右双工位堆垛机执行任务生成====》入库任务生成异常:"+e.getMessage()); | 
|         } | 
|     } | 
|   | 
|     @Scheduled(cron = "0/3 * * * * ? ") | 
|     private void execute2(){ | 
|         for(Integer staNo : CRN_WORK_CU) { | 
|             try{ | 
|                 for(Integer staNo1 : CRN_WORK_CU_SMA) { | 
|                     RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","TrunSma"+staNo1)); | 
|                     trunSma.setRgvOneSign(0); | 
|                     rgvOneSignService.updateById(trunSma); | 
|                 } | 
|             } catch (Exception e){ | 
|   | 
|             } | 
|             List<WrkMastCrn> wrkMastCrnList = wrkMastCrnService.selectList(new EntityWrapper<WrkMastCrn>().eq("source_sta_no",staNo)); | 
|             if (Cools.isEmpty(wrkMastCrnList)){ | 
|                 List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
|                         .eq("source_sta_no", staNo).eq("wrk_sts", 11L) | 
|                         .orderBy("io_pri",false)); | 
|                 for (WrkMast wrkMast:wrkMasts){ | 
| //                    if (wrkMast.getStaNoSign().equals(signSmallTurn)){ | 
| //                        continue; | 
| //                    } | 
| //                    if (wrkMast.booleanStaNoSignOther()){ | 
| //                        continue; | 
| //                    } | 
|                     boolean sign = true; | 
|                     if ((wrkMast.getIoType()==101 || wrkMast.getIoType() == 110) && wrkMast.booleanStaNoSign()){ | 
|                         RgvOneSign rgvOneSign = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","LineUp"+wrkMast.getStaNo())); | 
|                         if (Cools.isEmpty(rgvOneSign)){ | 
|                             continue; | 
|                         } | 
|                         RgvOneSign trunSma = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","TrunSma"+wrkMast.getStaNo())); | 
|                         if (Cools.isEmpty(trunSma)){ | 
|                             continue; | 
|                         } | 
|                         int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).eq("wrk_sts",12L)); | 
|                         int wrkCountCrn = wrkMastCrnService.selectCount(new EntityWrapper<WrkMastCrn>().eq("sta_no", wrkMast.getStaNo())); | 
|                         if (wrkCountCrn*2+wrkCount+rgvOneSign.getRgvOneSign()+trunSma.getRgvOneSign()>1){ | 
|                             continue; | 
|                         } | 
|                         int wrkCountGt = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).gt("wrk_sts",11L)); | 
|                         if (wrkCountGt > 1){ | 
|                             continue; | 
|                         } | 
|                         sign = false; | 
| //                        BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNoBying()); | 
| //                        if (basDevp.getLoading().equals("Y") | 
| //                                || !basDevp.getAutoing().equals("Y") | 
| //                                || (!Cools.isEmpty(basDevp.getWrkNo()) && basDevp.getWrkNo()!=0) ){ | 
| //                            continue; | 
| //                        } | 
| //                        int loadIngCount = basDevpService.selectCount(new EntityWrapper<BasDevp>().ge("dev_no", 103).le("dev_no", 121).eq("loading", "Y")); | 
| //                        if (loadIngCount>8){ | 
| //                            continue; | 
| //                        } | 
| //                        RgvOneSign smallTurn = rgvOneSignService.selectOne(new EntityWrapper<RgvOneSign>().eq("rgv_one_type","smallTurn")); | 
| //                        if (Cools.isEmpty(smallTurn)){ | 
| //                            continue; | 
| //                        } | 
| //                        if (smallTurn.getRgvOneSign()>15){ | 
| //                            continue; | 
| //                        } | 
|                     } | 
|                     try{ | 
|                         int row = Utils.getRow(wrkMast.getSourceLocNo()); | 
|                         if (row == wrkMast.getCrnNo()*4 || row == wrkMast.getCrnNo()*4-3){ | 
|                             WrkMastCrn wrkMastCrn = wrkMastCrnService.selectOne(new EntityWrapper<WrkMastCrn>().eq("wrk_no", wrkMast.getWrkNo())); | 
|                             if (Cools.isEmpty(wrkMastCrn)){ | 
|                                 ReturnT<String> result = wrkMastCrnHandler.start(wrkMast,sign); | 
|                                 if (result.isSuccess()) { | 
| //                                    signSmallTurn++; | 
| //                                    if (signSmallTurn > 2){ | 
| //                                        signSmallTurn = 0; | 
| //                                    } | 
|                                     break; | 
|                                 } | 
|                             } | 
|                         } | 
|                     }catch (Exception e){ | 
|                         log.error("左右双工位堆垛机执行任务生成====》出库任务生成异常:"+e.getMessage()); | 
|                     } | 
|                 } | 
| //                if (!wrkMasts.isEmpty()){ | 
| //                    signSmallTurn++; | 
| //                    if (signSmallTurn > 2){ | 
| //                        signSmallTurn = 0; | 
| //                    } | 
| //                } | 
|             } | 
|         } | 
|     } | 
|   | 
|     public Integer staNoOther(Integer staNo){ | 
|         return staNo-1; | 
|     } | 
| } |