From 98ff94c52485dd502e10c061ae267bf24e5d1814 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 17 十一月 2023 08:26:15 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 233 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 137 insertions(+), 96 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 764889e..47e234e 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; @@ -118,31 +119,42 @@ agvTaskDtos.forEach(taskDto -> { - AgvLocMast agvLocMast = agvLocMastService.selectById(taskDto.getLocNo()); - AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo())); + List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectByTaskDto(taskDto); + + //AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo())); //宸ヤ綔妗f墍闇�鍙傛暟 - double anfme = taskDto.getLocDtos().get(0).getAnfme(); + long wrkSts = 21L; String sourceLocNo = taskDto.getLocNo(); String targetLocNo = taskDto.getAgvStaNo(); - String barcode = agvLocDetl.getSuppCode(); - //鏄庣粏妗f墍闇�鍙傛暟 - String mantr = taskDto.getLocDtos().get(0).getMatnr(); - String orderNo = taskDto.getLocDtos().get(0).getOrderNo(); - String batch = taskDto.getLocDtos().get(0).getBatch(); + //String barcode = agvLocDetls.get(0).getSuppCode(); + String containerCode = taskDto.getLocDtos().get(0).getContainerCode(); - String csocode = agvLocDetl.getThreeCode(); - String isoseq = agvLocDetl.getDeadTime(); //鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱 - int ioType = isPakOut(sourceLocNo,anfme) ? 101 : 103; + int ioType = isPakOut(sourceLocNo,taskDto) ? 101 : 103; //鐢熸垚宸ヤ綔妗� - AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,barcode,now,userId,false); + AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,false); //鐢熸垚宸ヤ綔妗f槑缁� - createWrkDetlReWrite(mantr,wrkMast.getWrkNo(),orderNo,batch,anfme,barcode,now,userId,csocode,isoseq); - //淇敼璁㈠崟淇℃伅 - modifyOrderDetl(taskDto.getLocDtos().get(0), userId); + taskDto.getLocDtos().forEach(locDto -> { + //鏄庣粏妗f墍闇�鍙傛暟 + createWrkDetlReWrite(locDto.getMatnr(), + wrkMast.getWrkNo(), + locDto.getOrderNo(), + locDto.getBatch(), + locDto.getAnfme(), + locDto.getContainerCode(), + now, + userId, + locDto.getCsocode(), + locDto.getIsoseq()); + + //淇敼璁㈠崟淇℃伅 + modifyOrderDetl(locDto, userId); + }); +// //淇敼璁㈠崟淇℃伅 +// modifyOrderDetl(taskDto.getLocDtos().get(0), userId); //鏇存柊婧愮珯鐐逛俊鎭� String locSts = ioType == 101 ? "R" : "P"; updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts); @@ -171,9 +183,9 @@ agvWrkMast.setIoTime(now); agvWrkMastService.updateById(agvWrkMast); - AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo()); - AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo())); + //List<AgvLocDetl> agvLocDetlList = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo())); AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo()); //鎷f枡鍏ュ簱 @@ -182,8 +194,13 @@ //agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme()); //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo())); //淇敼搴撳瓨淇℃伅 - agvLocDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme()); - agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo())); + agvWrkDetlList.forEach(agvWrkDetl -> { + AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); + + //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); + double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme(); + agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); + }); } //淇敼搴撲綅淇℃伅 updateAgvLocMast(agvLocMast,"Q"); @@ -199,32 +216,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"); +// +// }); } @@ -337,7 +390,7 @@ if (!locDetl.getAnfme().equals(adjust.getCount())) { // todo 鐩樼偣璁板綍 // 淇敼搴撳瓨 - if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { + if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime())) { throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�"); } // 淇濆瓨璋冩暣璁板綍 @@ -368,7 +421,7 @@ // 鍒犻櫎搴撳瓨 for (AgvLocDetl locDetl : locDetls) { // todo 鐩樼偣璁板綍 - if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { + if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime())) { throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�"); } // 淇濆瓨璋冩暣璁板綍 @@ -497,18 +550,25 @@ //鐩爣绔欑偣 String devNo = wrkMast.getLocNo(); agvLocMastService.updateLocStsByLocNo(locNo,"F"); - agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O",""); + if(devNo.contains("@")){ + agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O",""); + } } } //璁㈠崟鍥炴粴 - AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).get(0); - if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){ - OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); - orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); - orderDetlService.updateById(orderDetl); - } + //List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); + List<AgvWrkDetl> agvWrkDetlList1 = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); + agvWrkDetlList1.forEach(agvWrkDetl -> { + + if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){ + OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); + orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); + orderDetlService.updateById(orderDetl); + } + }); + //淇濆瓨宸ヤ綔妗d互鍙婃槑缁� agvWrkMastLogService.save(wrkMast); @@ -625,52 +685,22 @@ 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け璐�"); + private boolean isPakOut(String locNo, TaskDto taskDto){ + Double allAnfme = agvLocDetlService.selectSumAnfmeByLocNo(locNo); + Double pakOutAnfme = 0.0; + for (LocDto locDto : taskDto.getLocDtos()){ + pakOutAnfme += locDto.getAnfme(); } - return wrkMast; - } - private boolean isPakOut(String locNo, double anfme){ - AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo)); - if(agvLocDetl.getAnfme() > anfme){ + if(allAnfme > pakOutAnfme){ return false; } return true; @@ -684,11 +714,11 @@ if (!BaseController.isJSON(locDto.getOrderNo())) { //闈炲悎骞跺嚭搴� - OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); + OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq()); if (orderDetl == null) { - orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); + orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq()); } - if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) { + if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) { throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); } orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); @@ -702,9 +732,9 @@ Double orderAnfme; for (OrderDto orderDto : orderDtoList) { - OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); + OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq()); if (orderDetl == null) { - orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null); + orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq()); } if(locAnfme > orderDetl.getAnfme()){ @@ -714,7 +744,7 @@ orderAnfme = locAnfme; } - if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) { + if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) { throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); } orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); @@ -722,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