src/main/java/com/zy/asrs/task/WrkMastStaInIt2Scheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/WrkMastStaInIt3Scheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/web/WcsController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/web/param/SearchLocParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/task/WrkMastStaInIt2Scheduler.java
New file @@ -0,0 +1,316 @@ 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.List; /** * Created by Monkey D. Luffy on 2023.07.25 * 徐工汉云..............以下.............上饶江铜.............自动补空板 */ @Component public class WrkMastStaInIt2Scheduler { 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(110);add(111);add(113);add(114);add(116);add(117); add(117);add(116);add(114);add(113);add(111);add(110); }}; public static final List<Integer> STA_WORK_CU_CAR = new ArrayList<Integer>() {{ 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(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(120);add(121);add(122);add(123); }}; // @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ for(Integer staNo : STA_WORK_CU){ try{ 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)){ 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.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/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")){ 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 (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+"失败!"); } } } } }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")){ 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; 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.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){ 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; } 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; } } src/main/java/com/zy/asrs/task/WrkMastStaInIt3Scheduler.java
New file @@ -0,0 +1,315 @@ 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.List; /** * Created by Monkey D. Luffy on 2023.07.25 * 徐工汉云..............以下.............上饶江铜.............自动补空板 */ @Component public class WrkMastStaInIt3Scheduler { 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); }}; public static final List<Integer> STA_WORK_CU_CAR = new ArrayList<Integer>() {{ add(118); }}; public static final List<Integer> STA_WORK_CU_CAR_TWO = new ArrayList<Integer>() {{ }}; public static final List<Integer> STA_WORK_CU_CAR_THREE = new ArrayList<Integer>() {{ add(118); }}; public static final List<Integer> STA_WORK_CU_CAR_FOUR = new ArrayList<Integer>() {{ add(118); }}; public static final List<Integer> STA_WORK_RU = new ArrayList<Integer>() {{ add(118);add(122); }}; // @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ for(Integer staNo : STA_WORK_CU){ try{ 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)){ 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.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/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")){ 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 (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+"失败!"); } } } } }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")){ 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; 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.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){ 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; } 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; } } src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java
@@ -63,7 +63,7 @@ }}; @Scheduled(cron = "0/3 * * * * ? ") // @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ for(Integer staNo : STA_WORK_CU){ try{ @@ -143,7 +143,7 @@ } } @Scheduled(cron = "0/3 * * * * ? ") // @Scheduled(cron = "0/3 * * * * ? ") private void execute2(){ try{ for(Integer staNo : STA_WORK_CU){ src/main/java/com/zy/common/service/CommonService.java
@@ -382,4 +382,275 @@ startupDto.setLocNo(locNo); return startupDto; } @Transactional public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, LocTypeDto locTypeDto,Integer rgvNo) { return getLocNoRun(whsType,staDescId,sourceStaNo,matnr,batch,grade,0,locTypeDto,0,rgvNo); } /** * 检索库位号 * * @param whsType 类型 1:双深式货架 * @param staDescId 路径ID * @param sourceStaNo 源站 * @param matnr 物料号集合 * @return locNo 检索到的库位号 */ @Transactional public StartupDto getLocNoRun(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times,Integer rgvNo) { if (Cools.isEmpty(matnr)) { //物料号 matnr = ""; } if (Cools.isEmpty(batch)) { //箱号 batch = ""; } if (Cools.isEmpty(grade)) { //备用 grade = ""; } // 初始化参数 int crnNo = 0; //堆垛机号 int nearRow = 0; //最浅库位排 int curRow = 0; //最深库位排 int rowCount = 0; //轮询轮次 LocMast locMast = null; // 目标库位 StartupDto startupDto = new StartupDto(); RowLastno rowLastno = rowLastnoService.selectById(whsType); int sRow = rowLastno.getsRow(); int eRow = rowLastno.geteRow(); int crnNumber = rowLastno.getCrnQty(); if (Cools.isEmpty(rowLastno)) { throw new CoolException("数据异常,请联系管理员"); } // ===============>>>> 开始执行 curRow = rowLastno.getCurrentRow(); if (!Cools.isEmpty(moveCrnNo) && moveCrnNo!=0){ crnNumber = moveCrnNo; if (times==0){ curRow = moveCrnNo*4-1; }else { curRow = moveCrnNo*4-2; } } //此程序用于优化堆垛机异常时的运行时间 for (int i = times; i < crnNumber; i++) { int[] locNecessaryParameters = Utils.LocNecessaryParameters(whsType, curRow, crnNumber); curRow = locNecessaryParameters[1]; crnNo = locNecessaryParameters[2]; if (rgvNo==1 && crnNo<=3){ if (basCrnpService.checkSiteError(crnNo, true)) { rowCount = locNecessaryParameters[0]; nearRow = locNecessaryParameters[3]; List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O")); if (locMasts.size()<=10){ times++; continue; } break; } else { times++; } }else if (rgvNo==2 && crnNo>=4){ if (basCrnpService.checkSiteError(crnNo, true)) { rowCount = locNecessaryParameters[0]; nearRow = locNecessaryParameters[3]; List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O")); if (locMasts.size()<=10){ times++; continue; } break; } else { times++; } }else { times++; } } if (nearRow == 0) { throw new CoolException("无可用堆垛机"); } boolean signRule1 = false; boolean signRule2 = false; // 靠近摆放规则 --- 同天同规格物料 //分离版 // if (!Cools.isEmpty(matnr) && (staDescId == 1)){ // signRule1 = true; // } // 靠近摆放规则 --- 同天同规格物料 //互通版 if (!Cools.isEmpty(matnr) && staDescId == 1) { signRule2 = true; } if (!Cools.isEmpty(matnr) && (staDescId == 11 || staDescId == 111)) { signRule1 = true; } if (signRule1){ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O")); for (LocMast locMast1:locMasts){ if (VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { continue; } String shallowLoc = Utils.getDeepLoc(slaveProperties,locMast1.getLocNo()); LocMast locMast2 = locMastService.selectById(shallowLoc); if (!Cools.isEmpty(locMast2) && locMast2.getLocSts().equals("F")){ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast2.getLocNo())); if (!Cools.isEmpty(locDetl) && matnr.equals(locDetl.getMatnr())) { locMast = locMast1; break; } } } }else if (signRule2){ List<String> locNos = locDetlService.getSameDetlToday(matnr, sRow, eRow); for (String locNo : locNos) { if (Utils.isShallowLoc(slaveProperties, locNo)) { continue; } String shallowLocNo = Utils.getShallowLoc(slaveProperties, locNo); // 检测目标库位是否为空库位 LocMast shallowLoc = locMastService.selectById(shallowLocNo); if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { if (VersionUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) { if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { locMast = shallowLoc; crnNo = locMast.getCrnNo(); break; } } } } } // // 靠近摆放规则 --- 空托 //分离版 // if (staDescId == 10) { // List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O")); // for (LocMast locMast1:locMasts){ // if (VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { // continue; // } // String shallowLoc = Utils.getDeepLoc(slaveProperties,locMast1.getLocNo()); // LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",shallowLoc)); // if (!Cools.isEmpty(locMast2) && locMast2.getLocSts().equals("D")){ // locMast = locMast1; // break; // } // } // } // // 靠近摆放规则 --- 空托 //互通版 // if (staDescId == 10) { // List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow)); // if (locMasts.size() > 0) { // for (LocMast loc : locMasts) { // if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) { // continue; // } // String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo()); // // 检测目标库位是否为空库位 // LocMast shallowLoc = locMastService.selectById(shallowLocNo); // if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { // if (VersionUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) { // if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { // locMast = shallowLoc; // crnNo = locMast.getCrnNo(); // break; // } // } // } // } // } // } Wrapper<StaDesc> wrapper = null; StaDesc staDesc = null; BasDevp staNo = null; if (Utils.BooleanWhsTypeSta(whsType, staDescId)) { // 获取目标站 wrapper = new EntityWrapper<StaDesc>() .eq("type_no", staDescId) .eq("stn_no", sourceStaNo) .eq("crn_no", crnNo); staDesc = staDescService.selectOne(wrapper); if (Cools.isEmpty(staDesc)) { log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo); // throw new CoolException("入库路径不存在"); crnNo = 0; }else { staNo = basDevpService.selectById(staDesc.getCrnStn()); if (!staNo.getAutoing().equals("Y")) { // throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用"); crnNo = 0; } startupDto.setStaNo(staNo.getDevNo()); } } // 更新库位排号 if (Utils.BooleanWhsTypeSta(whsType, staDescId) && Cools.isEmpty(locMast)) { rowLastno.setCurrentRow(curRow); rowLastnoService.updateById(rowLastno); } // 开始查找库位 ==============================>> // 1.按规则查找库位 if (Cools.isEmpty(locMast) && crnNo != 0) { List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("row1", nearRow).eq("loc_sts", "O").orderBy("lev1",true)); for (LocMast locMast1 : locMasts) { if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { continue; } String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo()); LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc).eq("loc_sts", "O")); if (!Cools.isEmpty(locMast2)) { locMast = locMast2; break; } } } if (!Cools.isEmpty(locMast) && !basCrnpService.checkSiteError(crnNo, true)) { locMast = null; } // 递归查询 if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) { // 当前巷道无空库位时,递归调整至下一巷道,检索全部巷道无果后,跳出递归 if (times < rowCount) { times = times + 1; return getLocNoRun(1, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times,rgvNo); } // // 2.库位当前所属尺寸无空库位时,调整尺寸参数,向上兼容检索库位 // if (locTypeDto.getLocType1() < 2) { // int i = locTypeDto.getLocType1() + 1; // locTypeDto.setLocType1((short)i); // return getLocNo(1, staDescId, sourceStaNo, matnr,batch,grade, locTypeDto, 0); // } log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times); throw new CoolException("没有空库位"); } String locNo = locMast.getLocNo(); // 生成工作号 int workNo = getWorkNo(0); // 返回dto startupDto.setWorkNo(workNo); startupDto.setCrnNo(crnNo); startupDto.setSourceStaNo(sourceStaNo); startupDto.setLocNo(locNo); return startupDto; } } src/main/java/com/zy/common/web/WcsController.java
@@ -299,7 +299,7 @@ StartupDto dto = null; switch (param.getIoType()) { case 10://空托盘入库 dto = emptyPlateInEmpty(param.getSourceStaNo(), locTypeDto, param.getBarcode()); dto = emptyPlateInEmpty(param.getSourceStaNo(), locTypeDto, param.getBarcode(),param.getRgvNo()); break; default: break; @@ -490,11 +490,11 @@ } @Transactional public StartupDto emptyPlateInEmpty(Integer devpNo, LocTypeDto locTypeDto, String barcode) { public StartupDto emptyPlateInEmpty(Integer devpNo, LocTypeDto locTypeDto, String barcode,Integer rgvNo) { // 源站点状态检测 BasDevp sourceStaNo = basDevpService.checkSiteStatusEmpty(devpNo, true); // 检索库位 StartupDto dto = commonService.getLocNo(1, 10, devpNo, null,null,null, locTypeDto); StartupDto dto = commonService.getLocNo(1, 10, devpNo, null,null,null, locTypeDto,rgvNo); int workNo = dto.getWorkNo(); // 生成工作档 WrkMast wrkMast = new WrkMast(); src/main/java/com/zy/common/web/param/SearchLocParam.java
@@ -17,4 +17,6 @@ // 库位规格( 0:未知, 1:低库位, 2:高库位) private Short locType1; private Integer RgvNo; }