From 5edbc95f689813cee37ee573af48e59175ddff92 Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期二, 21 一月 2025 13:37:28 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java | 189 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 142 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java index 6a3020f..344ef5b 100644 --- a/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java @@ -9,6 +9,8 @@ import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.service.AgvCommonService; +import com.zy.system.entity.Config; +import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -34,6 +36,8 @@ private AgvWrkDetlService agvWrkDetlService; @Autowired AgvBasDevpService agvBasDevpService; + @Autowired + private ConfigService configService; // public ReturnT<String> start(AgvLocMast agvLocMast) { // // locType 1. 鑷姩锛� 2. 鎵嬪姩 @@ -50,6 +54,7 @@ doAutoMove2(agvWrkMast); return SUCCESS; } + public ReturnT<String> start3(AgvWrkMast agvWrkMast) { // locType 1. 鑷姩锛� 2. 鎵嬪姩 doHandMove2(agvWrkMast); @@ -127,8 +132,8 @@ Date now = new Date(); //鏌ヨ宸ヤ綔妗� AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode()); - if(!Cools.isEmpty(agvWrkMast)){ - throw new CoolException("褰撳墠"+agvLocMast.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); + if (!Cools.isEmpty(agvWrkMast)) { + throw new CoolException("褰撳墠" + agvLocMast.getBarcode() + "璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); } // //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 // AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3()); @@ -162,7 +167,7 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } - AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devpNo.getDevNo()).eq("source_loc_no",agvLocMast.getLocNo())); + AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devpNo.getDevNo()).eq("source_loc_no", agvLocMast.getLocNo())); //鐢熸垚宸ヤ綔妗f槑缁� List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo())); agvLocDetls.forEach(agvLocDetl -> { @@ -181,15 +186,15 @@ } }); //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(agvLocMast,"R"); - updateAgvBasDevp(devpNo,"S",null,agvLocMast.getBarcode()); + updateAgvLocMast(agvLocMast, "R"); + updateAgvBasDevp(devpNo, "S", null, agvLocMast.getBarcode()); return SUCCESS; } private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) { Date now = new Date(); //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 - AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,true,null); + AgvLocMast locMast = agvCommonService.getLocNo(3, agvWrkMast.getCrnNo(), false, true); if (Cools.isEmpty(locMast)) { log.info("鏆傛棤搴撲綅"); return FAIL; @@ -207,9 +212,9 @@ agvWrkMast.setLogErrMemo("start2-doAutoMove2"); agvWrkMastService.updateById(agvWrkMast); //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(locMast,"S"); + updateAgvLocMast(locMast, "S"); AgvLocMast locMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", locMast.getLocNo())); - log.info("鑷姩璋冩嫧浠诲姟 ==> 婧愬簱浣嶏細{}锛岀洰鏍囧簱浣嶏細{},搴撲綅鐘舵�亄}",agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo(),locMast1.getLocSts()); + log.info("鑷姩璋冩嫧浠诲姟 ==> 婧愬簱浣嶏細{}锛岀洰鏍囧簱浣嶏細{},搴撲綅鐘舵�亄}", agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo(), locMast1.getLocSts()); return SUCCESS; } @@ -217,7 +222,7 @@ private ReturnT<String> doAutoMove3(AgvWrkMast agvWrkMast) { Date now = new Date(); //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 - AgvLocMast locMast = agvCommonService.getLocNo(3,agvWrkMast.getCrnNo(),false,false,null); + AgvLocMast locMast = agvCommonService.getLocNo(3, agvWrkMast.getCrnNo(), false, false); if (Cools.isEmpty(locMast)) { log.info("鏆傛棤搴撲綅"); return FAIL; @@ -229,7 +234,7 @@ agvWrkMast.setModiTime(new Date()); agvWrkMastService.updateById(agvWrkMast); //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(locMast,"S"); + updateAgvLocMast(locMast, "S"); return SUCCESS; } @@ -255,27 +260,30 @@ agvWrkMast.setLogErrMemo("start3-doHandMove2"); agvWrkMastService.updateById(agvWrkMast); agvWrkMast.setModiTime(new Date()); - updateAgvBasDevp(devpNo,"S",null,agvWrkMast.getBarcode()); + updateAgvBasDevp(devpNo, "S", null, agvWrkMast.getBarcode()); return SUCCESS; } + /* 鏇存柊鐩爣搴撲綅淇℃伅 */ - private void updateAgvLocMast(AgvLocMast locMast, String locSts){ + private void updateAgvLocMast(AgvLocMast locMast, String locSts) { locMast.setLocSts(locSts); agvLocMastService.updateById(locMast); } + /* 鏇存柊婧愮珯鐐逛俊鎭� */ - private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts){ - if(!Cools.isEmpty(agvBasDevp)){ + private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts) { + if (!Cools.isEmpty(agvBasDevp)) { agvBasDevp.setLocSts(locSts); agvBasDevpService.updateById(agvBasDevp); } } - private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode){ - if(!Cools.isEmpty(agvBasDevp)){ + + private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts, Short continerType, String containerCode) { + if (!Cools.isEmpty(agvBasDevp)) { agvBasDevp.setLocSts(locSts); agvBasDevp.setBarcode(containerCode); agvBasDevpService.updateById(agvBasDevp); @@ -286,8 +294,8 @@ Date now = new Date(); //鏌ヨ宸ヤ綔妗� AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode()); - if(!Cools.isEmpty(agvWrkMast)){ - throw new CoolException("褰撳墠"+agvLocMast.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); + if (!Cools.isEmpty(agvWrkMast)) { + throw new CoolException("褰撳墠" + agvLocMast.getBarcode() + "璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); } //妫�绱㈢┖闂叉帴椹充綅锛岄�夋嫨鍚堥�傜殑鎺ラ┏浣� AgvBasDevp devpNo = agvCommonService.getDevpNo(3, agvLocMast.getFloor()); @@ -319,8 +327,8 @@ } //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(agvLocMast,"R"); - updateAgvBasDevp(devpNo,"S",agvLocMast.getLocType2(),agvLocMast.getBarcode()); + updateAgvLocMast(agvLocMast, "R"); + updateAgvBasDevp(devpNo, "S", agvLocMast.getLocType2(), agvLocMast.getBarcode()); return SUCCESS; } @@ -328,7 +336,7 @@ Date now = new Date(); AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo()); //妫�绱㈢┖闂叉帴椹充綅锛岄�夋嫨鍚堥�傜殑鎺ラ┏浣� - AgvLocMast locMast = agvCommonService.getLocNo(3, 1,true,true,null); + AgvLocMast locMast = agvCommonService.getLocNo(3, 1, true, true); if (Cools.isEmpty(locMast)) { throw new CoolException("1妤兼殏鏃犵┖搴撲綅"); } @@ -342,8 +350,8 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(locMast,"S"); - updateAgvBasDevp(agvBasDevp,"R"); + updateAgvLocMast(locMast, "S"); + updateAgvBasDevp(agvBasDevp, "R"); return SUCCESS; } @@ -393,8 +401,8 @@ Date now = new Date(); //鏌ヨ宸ヤ綔妗� AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode()); - if(!Cools.isEmpty(agvWrkMast)){ - throw new CoolException("褰撳墠"+agvLocMast.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); + if (!Cools.isEmpty(agvWrkMast)) { + throw new CoolException("褰撳墠" + agvLocMast.getBarcode() + "璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); } String floor = ""; String locNo = ""; @@ -403,24 +411,26 @@ AgvLocMast locMast = new AgvLocMast(); if (agvLocMast.getFloor() == 3) { floor = "F3"; - } else if(agvLocMast.getFloor() == 2) { + } else if (agvLocMast.getFloor() == 2) { floor = "F2"; + } else if (agvLocMast.getFloor() == 1 && agvLocMast.getLev1() == 2) { + floor = "02F1"; } List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("io_type", 109).like("source_loc_no", floor).or().eq("io_type", 113)); if (agvWrkMasts.size() >= 5) { - log.error("鏆傚仠鍥炴祦"); + //log.error("鏆傚仠鍥炴祦"); return FAIL; //throw new CoolException("鏆傚仠鍥炴祦"); } //妫�绱㈢┖闂插彲鍏ユ帴椹充綅 娌℃湁绌洪棽鍙叆鎺ラ┏浣� 鐩存帴鎵惧簱浣� - AgvBasDevp devpNo = agvCommonService.getDevpNo(3, agvLocMast.getFloor(),"Y","Y"); + AgvBasDevp devpNo = agvCommonService.getDevpNo(3, agvLocMast.getFloor(), "Y", "Y"); if (!Cools.isEmpty(devpNo)) { locNo = devpNo.getDevNo(); wrkSts = 21L; ioType = 109; } else { //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 - locMast = agvCommonService.getLocNo(3,1,true,true,null); + locMast = agvCommonService.getLocNo(3, 1, true, true); locNo = locMast.getLocNo(); wrkSts = 201L; ioType = 109; @@ -454,22 +464,107 @@ } //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(agvLocMast,"R"); + updateAgvLocMast(agvLocMast, "R"); if (wrkSts == 21L) { - updateAgvBasDevp(devpNo,"S",agvLocMast.getLocType2(),agvLocMast.getBarcode()); + updateAgvBasDevp(devpNo, "S", agvLocMast.getLocType2(), agvLocMast.getBarcode()); } else { - updateAgvLocMast(locMast,"S"); + updateAgvLocMast(locMast, "S"); } return SUCCESS; } + + public ReturnT<String> autoEmptyBackSiqi(AgvLocMast agvLocMast) { + Date now = new Date(); + //鏌ヨ宸ヤ綔妗� + AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode()); + if (!Cools.isEmpty(agvWrkMast)) { + throw new CoolException("褰撳墠" + agvLocMast.getBarcode() + "璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); + } + String floor = ""; + String locNo = ""; + Long wrkSts = 0L; + Integer ioType = 0; + AgvLocMast locMast = new AgvLocMast(); + if (agvLocMast.getFloor() == 3) { + floor = "F3"; + } else if (agvLocMast.getFloor() == 2) { + floor = "F2"; + } + List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("io_type", 109).like("source_loc_no", floor).or().eq("io_type", 113)); + Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "RETURN_6_MAX")); + if (config == null && !Cools.isEmpty(config.getValue())) { + if (agvWrkMasts.size() >= Integer.parseInt(config.getValue())) { + return FAIL; + } + } else { + if (agvWrkMasts.size() >= 5) { + return FAIL; + } + } + //妫�绱㈢┖闂插彲鍏ユ帴椹充綅 娌℃湁绌洪棽鍙叆鎺ラ┏浣� 鐩存帴鎵惧簱浣� + AgvBasDevp devpNo = agvCommonService.getDevpNo(6, agvLocMast.getFloor(), "Y", "Y"); + if (!Cools.isEmpty(devpNo)) { + locNo = devpNo.getDevNo(); + wrkSts = 21L; + ioType = 109; + } else { + //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 + locMast = agvCommonService.getLocByFloorAndLev1(6, 1, 2); + locNo = locMast.getLocNo(); + wrkSts = 201L; + ioType = 109; + } + if (locMast == null) { + throw new CoolException("娌℃湁鍙敤鐨勫簱浣�"); + } + //鐢熸垚宸ヤ綔妗� + AgvWrkMast mast = new AgvWrkMast(); + //宸ヤ綔鐘舵�� + mast.setWrkSts(wrkSts); + //鍏ュ嚭搴撶被鍨� + mast.setIoType(ioType); + mast.setIoTime(now); + //浼樺厛绾� + mast.setIoPri(300.0); + //婧愮珯鐐� + mast.setSourceLocNo(agvLocMast.getLocNo()); + //鐩爣绔欑偣 + mast.setLocNo(locNo); + //璐ф灦缂栫爜 + mast.setBarcode(agvLocMast.getBarcode()); + //璐ф灦绫诲瀷 + mast.setWhsType(30); + + mast.setAppeUser(9527L); + mast.setAppeTime(now); + mast.setModiUser(9527L); + mast.setModiTime(now); + mast.setLogErrMemo("autoEmptyBack4"); + if (!agvWrkMastService.insertByIncrease(mast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + //鏇存柊鐩爣搴撲綅鐘舵�� + updateAgvLocMast(agvLocMast, "R"); + if (wrkSts == 21L) { + updateAgvBasDevp(devpNo, "S", agvLocMast.getLocType2(), agvLocMast.getBarcode()); + } else { + updateAgvLocMast(locMast, "S"); + } + + + return SUCCESS; + } + + public ReturnT<String> autoEmptyBack5(AgvBasDevp agvBasDevp) { //鏌ヨ宸ヤ綔妗� AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvBasDevp.getBarcode()); - if(!Cools.isEmpty(agvWrkMast)){ - throw new CoolException("褰撳墠"+agvBasDevp.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); + if (!Cools.isEmpty(agvWrkMast)) { + throw new CoolException("褰撳墠" + agvBasDevp.getBarcode() + "璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); } Date now = new Date(); //鐢熸垚宸ヤ綔妗� @@ -495,9 +590,9 @@ //鍏ュ嚭搴撶被鍨� mast.setIoType(109); //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 - AgvLocMast locMast = agvCommonService.getLocNo(3,1,true,true,null); + AgvLocMast locMast = agvCommonService.getLocNo(3, 1, true, true); mast.setLocNo(locMast.getLocNo()); - updateAgvLocMast(locMast,"S"); + updateAgvLocMast(locMast, "S"); } else { //宸ヤ綔鐘舵�� mast.setWrkSts(212L); @@ -510,7 +605,7 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvBasDevp(agvBasDevp,"R"); + updateAgvBasDevp(agvBasDevp, "R"); return SUCCESS; @@ -519,8 +614,8 @@ public ReturnT<String> autoEmptyBack6(AgvBasDevp agvBasDevp) { //鏌ヨ宸ヤ綔妗� AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvBasDevp.getBarcode()); - if(!Cools.isEmpty(agvWrkMast)){ - throw new CoolException("褰撳墠"+agvBasDevp.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); + if (!Cools.isEmpty(agvWrkMast)) { + throw new CoolException("褰撳墠" + agvBasDevp.getBarcode() + "璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); } Date now = new Date(); //鐢熸垚宸ヤ綔妗� @@ -549,13 +644,13 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvBasDevp(agvBasDevp,"R"); + updateAgvBasDevp(agvBasDevp, "R"); return SUCCESS; } - public ReturnT<String> autoTransfers(AgvLocMast agvLocMast,Integer maxTansk) { + public ReturnT<String> autoTransfers(AgvLocMast agvLocMast, Integer maxTansk) { Date now = new Date(); List<AgvLocDetl> locDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo())); locDetls.forEach(agvLocDetl -> { @@ -565,11 +660,11 @@ }); //鏌ヨ宸ヤ綔妗� AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode()); - if(!Cools.isEmpty(agvWrkMast)){ - throw new CoolException("褰撳墠"+agvLocMast.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); + if (!Cools.isEmpty(agvWrkMast)) { + throw new CoolException("褰撳墠" + agvLocMast.getBarcode() + "璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�"); } //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 - AgvLocMast LocMast = agvCommonService.getLocNo(3,1,false,false,null); + AgvLocMast LocMast = agvCommonService.getLocNo(3, 1, false, false); if (LocMast.getLev1() != 2) { throw new CoolException("鐩爣妤煎眰涓嶆槸鍚稿浜屾ゼ"); } @@ -604,7 +699,7 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } - AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", LocMast.getLocNo()).eq("source_loc_no",agvLocMast.getLocNo())); + AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", LocMast.getLocNo()).eq("source_loc_no", agvLocMast.getLocNo())); //鐢熸垚宸ヤ綔妗f槑缁� List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo())); agvLocDetls.forEach(agvLocDetl -> { @@ -622,8 +717,8 @@ } }); //鏇存柊鐩爣搴撲綅鐘舵�� - updateAgvLocMast(agvLocMast,"R"); - updateAgvLocMast(LocMast,"S"); + updateAgvLocMast(agvLocMast, "R"); + updateAgvLocMast(LocMast, "S"); return SUCCESS; } -- Gitblit v1.9.1