From f35fc1f577af2cb76198a520f47b4c7b85fb170e Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期四, 21 十二月 2023 15:19:52 +0800 Subject: [PATCH] 合并订单bug修改 --- src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 209 +++++++++++++++++++++++++++------------------------ 1 files changed, 111 insertions(+), 98 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java index 3bc500b..27d77a6 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; @@ -89,12 +90,10 @@ //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 AgvLocMast agvLocMast = agvCommonService.getLocNo(agvWaitPakinList, agvBasDevp.getFloor()); //鐢熸垚宸ヤ綔妗� - //AgvWrkMast wrkMast = createWrkMast(agvBasDevp, agvLocMast, now, userId); AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, isConveyor); //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱 wrkMast.setMk(isConveyor ? "Y" : "N"); //鐢熸垚宸ヤ綔妗f槑缁� - //createWrkDetlReWrite(agvWaitPakinList,wrkMast,userId); agvWaitPakinList.forEach(wp -> { createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime()); }); @@ -169,6 +168,11 @@ public void pickIn(List<AgvWrkMast> agvWrkMastList){ Date now = new Date(); agvWrkMastList.forEach(agvWrkMast -> { + + //淇濆瓨鎷f枡鍑哄簱鐨勫伐浣滄。鍜屾槑缁� + agvWrkMastLogService.save(agvWrkMast); + agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); + //淇敼宸ヤ綔鍏� agvWrkMast.setWrkSts(201L); @@ -215,32 +219,68 @@ @Transactional public void locCheckOut(StockOutParam param, Long userId) { String station = param.getStation(); - List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() - .eq("station_code", station) - .eq("loc_sts","O")); +// List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() +// .eq("station_code", station) +// .eq("loc_sts","O")); +// +// if(param.getLocDetls().size() > agvBasDevpList.size()){ +// throw new CoolException("褰撳墠绔欑偣鍙敤缂撳瓨璐ф灦鏁伴噺涓�" + agvBasDevpList.size() + ",灏戜簬闇�瑕佺洏鐐瑰嚭搴撳簱浣嶆暟閲忥紝璇烽噸鏂伴�夋嫨鐩樼偣搴撲綅"); +// } - if(param.getLocDetls().size() > agvBasDevpList.size()){ - throw new CoolException("褰撳墠绔欑偣鍙敤缂撳瓨璐ф灦鏁伴噺涓�" + agvBasDevpList.size() + ",灏戜簬闇�瑕佺洏鐐瑰嚭搴撳簱浣嶆暟閲忥紝璇烽噸鏂伴�夋嫨鐩樼偣搴撲綅"); - } - + List<TaskDto> taskDtos = new ArrayList<>(); param.getLocDetls().forEach(locDetl -> { - AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo()); - AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo())); - AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() - .eq("station_code", station) - .eq("loc_sts","O")); - Date now = new Date(); - - //鐢熸垚宸ヤ綔鍏� - AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false); - //鐢熸垚宸ヤ綔鏄庣粏妗� - createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); - //淇敼搴撲綅淇℃伅 - updateAgvLocMast(agvLocMast,"P"); - //淇敼绔欑偣淇℃伅 - updateAgvBasDevp(agvBasDevp,"S"); - + LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode()); + TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto); + if(TaskDto.has(taskDtos,taskDto)){ + TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto); + }else { + taskDtos.add(taskDto); + } }); + + Date now = new Date(); + taskDtos.forEach(taskDto -> { + //鐢熸垚宸ヤ綔妗� + AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,false); + //鐢熸垚宸ヤ綔妗f槑缁� + taskDto.getLocDtos().forEach(locDto -> { + //鏄庣粏妗f墍闇�鍙傛暟 + createWrkDetlReWrite(locDto.getMatnr(), + wrkMast.getWrkNo(), + locDto.getOrderNo(), + locDto.getBatch(), + locDto.getAnfme(), + locDto.getContainerCode(), + now, + userId, + locDto.getCsocode(), + locDto.getIsoseq()); + }); + updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P"); + //鏇存柊鐩爣绔欑偣鐘舵�� + //locSts = ioType == 101 ? "S" : "Q"; + updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()),"S"); + }); + + +// param.getLocDetls().forEach(locDetl -> { +// AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo()); +// AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo())); +// AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() +// .eq("station_code", station) +// .eq("loc_sts","O")); +// Date now = new Date(); +// +// //鐢熸垚宸ヤ綔鍏� +// AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false); +// //鐢熸垚宸ヤ綔鏄庣粏妗� +// createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); +// //淇敼搴撲綅淇℃伅 +// updateAgvLocMast(agvLocMast,"P"); +// //淇敼绔欑偣淇℃伅 +// updateAgvBasDevp(agvBasDevp,"S"); +// +// }); } @@ -349,7 +389,7 @@ while (iterator1.hasNext()) { LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next(); if (adjust.getCount() == 0) { continue; } - if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) { + if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch()) && Cools.eq(locDetl.getSuppCode(),adjust.getSuppCode()) && Cools.eq(locDetl.getThreeCode(),adjust.getThreeCode()) && Cools.eq(locDetl.getDeadTime(),adjust.getDeadTime())) { if (!locDetl.getAnfme().equals(adjust.getCount())) { // todo 鐩樼偣璁板綍 // 淇敼搴撳瓨 @@ -466,20 +506,20 @@ if (Cools.isEmpty(wrkMast)){ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); } + if(!wrkMast.getLocNo().contains("@") || !wrkMast.getSourceLocNo().contains("@")){ + throw new CoolException("鐩爣搴撲綅鎴栬�呮簮搴撲綅鏆傛湭鍒嗛厤锛屾棤娉曞彇娑�"); + } + //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 + agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205); - if(wrkMast.getWrkSts() > 202){ - //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 - agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205); - - //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱 - if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107){ - //淇敼鍑哄簱绔欑偣鐘舵�� - agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode()); - } - //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱 - if(wrkMast.getIoType() == 110){ - agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode()); - } + //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱 + if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107){ + //淇敼鍑哄簱绔欑偣鐘舵�� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode()); + } + //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱 + if(wrkMast.getIoType() == 110){ + agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode()); } } @@ -495,30 +535,27 @@ throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷"); } - //AGV鏈哄櫒浜烘湭鍙栬揣鍓嶅彇娑� - if(wrkMast.getWrkSts() < 203){ - //鍏ュ簱鍙栨秷 - if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){ - //婧愮珯鐐� - String devNo = wrkMast.getSourceLocNo(); - //鐩爣搴撲綅 - String locNo = wrkMast.getLocNo(); - agvLocMastService.updateLocStsByLocNo(locNo,"O"); - agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode()); + //鍏ュ簱鍙栨秷 + if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){ + //婧愮珯鐐� + String devNo = wrkMast.getSourceLocNo(); + //鐩爣搴撲綅 + String locNo = wrkMast.getLocNo(); + agvLocMastService.updateLocStsByLocNo(locNo,"O",""); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode()); - //鍑哄簱鍙栨秷 - }else { - //婧愬簱浣� - String locNo = wrkMast.getSourceLocNo(); - //鐩爣绔欑偣 - String devNo = wrkMast.getLocNo(); - agvLocMastService.updateLocStsByLocNo(locNo,"F"); - if(devNo.contains("@")){ - agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O",""); - } + //鍑哄簱鍙栨秷 + }else { + //婧愬簱浣� + String locNo = wrkMast.getSourceLocNo(); + //鐩爣绔欑偣 + String devNo = wrkMast.getLocNo(); + agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode()); + if(devNo.contains("@")){ + agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O",""); } - } + //璁㈠崟鍥炴粴 //List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); @@ -648,46 +685,11 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } + //鏆傚瓨浣嶄换鍔�+1 + addInQty(locNo); + wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo)); - return wrkMast; - } - - /* - 鐢熸垚宸ヤ綔妗� - */ - @Deprecated - private AgvWrkMast createWrkMast(AgvBasDevp agvBasDevp,AgvLocMast agvLocMast, Date now, Long userId){ - AgvWrkMast wrkMast = new AgvWrkMast(); - //鐢熸垚宸ヤ綔鍙� - //int workNo = agvCommonService.getWorkNo(0); - //wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); - // 宸ヤ綔鐘舵�侊細201.鐢熸垚鍏ュ簱浠诲姟ID - wrkMast.setWrkSts(201L); - // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 - wrkMast.setIoType(1); - //鐢熸垚浼樺厛绾� - wrkMast.setIoPri(300.0); - wrkMast.setSourceLocNo(agvBasDevp.getDevNo()); - wrkMast.setLocNo(agvLocMast.getLocNo()); - wrkMast.setBarcode(agvBasDevp.getBarcode()); - // 婊℃澘锛歒 - wrkMast.setFullPlt("Y"); - // 鎷f枡 - wrkMast.setPicking("N"); - // 閫�鍑� - wrkMast.setExitMk("N"); - // 绌烘澘 - wrkMast.setEmptyMk("N"); - wrkMast.setLinkMis("N"); - wrkMast.setAppeUser(userId); - wrkMast.setAppeTime(now); - wrkMast.setModiUser(userId); - wrkMast.setModiTime(now); - if (!agvWrkMastService.insert(wrkMast)) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } return wrkMast; } @@ -750,4 +752,15 @@ } } + private void addInQty(String devno){ + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devno); + if(!Cools.isEmpty(agvBasDevp)){ + if(Cools.isEmpty(agvBasDevp.getInQty())){ + agvBasDevp.setInQty(1); + }else { + agvBasDevp.setInQty(agvBasDevp.getInQty() + 1); + } + } + } + } -- Gitblit v1.9.1