From 24c2fd8ab62fa12ae96658664e7ffd478bef6e62 Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期一, 13 五月 2024 19:16:15 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java | 153 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 139 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java index 3efb55f..971beea 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java @@ -7,6 +7,7 @@ import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.MobileAdjustParam; +import com.zy.asrs.entity.param.PickParam; import com.zy.asrs.service.*; import com.zy.common.model.DetlDto; import lombok.extern.slf4j.Slf4j; @@ -18,6 +19,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 绉诲姩绔湇鍔℃牳蹇冪被 @@ -37,6 +39,14 @@ private OrderDetlService orderDetlService; @Autowired private AgvBasDevpService agvBasDevpService; + @Autowired + private AgvLocDetlService agvLocDetlService; + @Autowired + private AgvWrkMastService agvWrkMastService; + @Autowired + private AgvWorkService agvWorkService; + @Autowired + private AgvWrkDetlService agvWrkDetlService; /* @@ -48,11 +58,21 @@ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { throw new CoolException(BaseRes.PARAM); } + param.setContainerType(Short.valueOf(param.getBarcode().substring(0,2))); - //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勬墭鐩樻潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯� - if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>(). - eq("supp_code", param.getBarcode()).eq("io_status", "N")) > 0) { - throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); +// //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勬墭鐩樻潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯� +// if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) { +// throw new CoolException(param.getBarcode() + "鏂欐兂鐮佸凡瀛樺湪AGV鍏ュ簱閫氱煡妗d腑"); +// } + + //妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父 + if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){ + throw new CoolException(param.getBarcode() + "鏂欑鐮佸凡瀛樺湪AGV搴撳瓨鏄庣粏涓�"); + } + + //鏌ョ湅宸ヤ綔妗f槸鍚︽湁鐩稿悓鏂欑锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父 + if(!Cools.isEmpty(agvWrkMastService.selectByContainerCode(param.getBarcode()))){ + throw new CoolException(param.getBarcode() + "鏂欑鐮佸凡瀛樺湪AGV宸ヤ綔妗d腑"); } if (Cools.isEmpty(param.getOrderNo())) { @@ -66,10 +86,78 @@ if(StringUtils.isEmpty(param.getLocno())){ return "缁勬墭鎴愬姛"; }else { - combBinding(param.getBarcode(),param.getLocno()); + combBinding(param.getBarcode(),param.getLocno(),param.getContainerType()); return "缁勬墭鎴愬姛锛岀粦瀹氱珯鐐规垚鍔�"; } + } + + /* + 缁勬墭 + 缁戝畾鏆傚瓨浣� + */ + @Override + @Transactional + public String pickAgain(PickParam pickParams, Long userId) { + Date now = new Date(); + List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", pickParams.getLocNo())); + + for (PickParam.Pick pick : pickParams.getPicks()) { + if (pick.getCount().equals(0D)) continue; + AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode())); + if (Cools.isEmpty(agvWrkDetl)) { + AgvWrkDetl wrkDetl = new AgvWrkDetl(); + Mat mat = matService.selectByMatnr(pick.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(pick.getMatnr() + "鍟嗗搧涓嶅瓨鍦�"); + } + wrkDetl.sync(mat); + wrkDetl.setWrkNo(pickParams.getWrkNo()); + wrkDetl.setOrderNo(pick.getOrderNo()); + wrkDetl.setIoTime(now); + wrkDetl.setAnfme(pick.getCount()); // 鏁伴噺 + wrkDetl.setSuppCode(pick.getSuppCode()); // 鎵樼洏鏉$爜 + wrkDetl.setAppeUser(userId); + wrkDetl.setAppeTime(now); + wrkDetl.setModiUser(userId); + wrkDetl.setModiTime(now); + wrkDetl.setThreeCode(pick.getThreeCode()); + agvWrkDetlService.insert(wrkDetl); + } else { + Double anfme = agvWrkDetl.getAnfme() + pick.getCount(); + agvWrkDetl.setAnfme(anfme); + agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode())); + + } + + + // 鏇存柊璁㈠崟 + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode())); + orderDetl.setQty(orderDetl.getQty() + pick.getCount()); + if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode()))){ + throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+pick.getOrderNo()+pick.getMatnr()); + } + } + // 纭鏄惁鍏ㄩ儴鍑哄簱 + int sameNumber = 0; + List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", pickParams.getWrkNo())); + for (AgvLocDetl agvLocDetl : agvLocDetls) { + for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { + if (agvLocDetl.getMatnr().equals(agvWrkDetl.getMatnr()) + && agvLocDetl.getThreeCode().equals(agvWrkDetl.getThreeCode()) + && agvLocDetl.getSuppCode().equals(agvWrkDetl.getSuppCode()) + && agvLocDetl.getAnfme().equals(agvWrkDetl.getAnfme())) { + sameNumber++; + } + } + } + if (agvLocDetls.size() == sameNumber) { + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); + agvWrkMast.setIoType(101); + agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo())); + } + + + return "缁勬墭鎴愬姛锛岀粦瀹氱珯鐐规垚鍔�"; } /* @@ -84,6 +172,8 @@ syncWaitPakin(detlDto,"",param.getBarcode(),userId,now); }); } + + /* AGV鏈夊崟缁勬墭 @@ -122,10 +212,10 @@ checkOrderQty(order,combMat); } - DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq()); + DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode(),param.getLocType()); //鍚屼竴鎵樼洏涓嬬浉鍚岀墿鏂欎俊鎭拰鎵瑰彿杞负涓�涓叆搴撻�氱煡妗� if (DetlDto.has(detlDtos, detlDto)) { - DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),null); + DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),detlDto.getContainerCode()); assert one != null; one.setAnfme(one.getAnfme() + detlDto.getAnfme()); } else { @@ -141,7 +231,7 @@ */ private void checkOrderQty(Order order, CombParam.CombMat combMat){ // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙锛屽鏋滀綔涓氭暟閲忓ぇ浜庡崟鎹暟閲忓垯鎶涘嚭寮傚父 - OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch()); + OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getCsocode(),combMat.getIsoseq()); if(Cools.isEmpty(orderDetl)){ throw new CoolException("鏈尮閰嶅埌璇ュ崟鎹笅鐨勭墿鏂�"); } @@ -149,7 +239,7 @@ throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); } // 淇敼璁㈠崟鏄庣粏鏁伴噺 - if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) { + if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(),combMat.getIsoseq())) { throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触"); } } @@ -177,6 +267,8 @@ //閿�鍞鍗曡鍙� waitPakin.setDeadTime(detlDto.getIsoseq()); + waitPakin.setLocType(detlDto.getLocType()); + waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); @@ -201,31 +293,64 @@ } @Override - public void combBinding(String barcode, String stationCode) { + public void combBinding(String barcode, String stationCode, Short containerType) { - AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode)); + AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", stationCode)); - if(!Cools.isEmpty(agvBasDevp)){ + if(Cools.eq(agvBasDevp.getBarcode(),barcode)){ + return; + } + + if(Cools.isEmpty(agvWaitPakinService.selectByContainerCode(barcode))){ + throw new CoolException("璇ユ枡绠辨湭缁勬墭锛屾棤娉曠粦瀹氱珯鐐�"); + } + + AgvBasDevp agvBasDevp1 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode)); + + if(!Cools.isEmpty(agvBasDevp1)){ throw new CoolException(barcode + "宸茬粡缁戝畾鍦�"+ agvBasDevp.getDevNo() +"绔欑偣"); } - agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode)); if(agvBasDevp == null){ throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒"); } if(!"O".equals(agvBasDevp.getLocSts())){ throw new CoolException(stationCode + "璇ョ珯鐐硅揣浣嶇姸鎬侀潪绌�"); } + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", agvBasDevp.getDevNo())); + if(!Cools.isEmpty(agvWrkMast)){ + throw new CoolException(stationCode + "璇ョ珯鐐瑰凡琚伐浣滃彿涓�" + agvWrkMast.getWrkNo() + "鍗犵敤锛屾棤娉曠粦瀹�"); + } agvBasDevp.setBarcode(barcode); agvBasDevp.setLocSts("F"); + agvBasDevp.setLocType2(containerType); agvBasDevpService.update(agvBasDevp,(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode))); } public List<AgvBasDevp> getAgvBasDevpByFloor(int floor) { EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>(); wrapper.eq("floor",floor).eq("cache_shelves","Y").eq("loc_sts","F"); - return agvBasDevpService.selectList(wrapper); + List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(wrapper); + return agvBasDevpList.stream().filter(agvBasDevp -> { + return !Cools.isEmpty(agvWaitPakinService.selectByContainerCode(agvBasDevp.getBarcode())); + }).collect(Collectors.toList()); + } + + @Override + public void pakinEmpty(String devNo, boolean pakin) { + //褰撳墠绔欑偣淇℃伅 + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo); + //瀵绘壘鐩稿悓绫诲瀷鐨勫簱浣� + + //鐢熸垚绌虹洏宸ヤ綔妗� + + //鏇存敼搴撲綅鐘舵�佷互鍙婄珯鐐圭姸鎬� + } + + @Override + public void pakoutEmpty(String devNo) { + } } -- Gitblit v1.9.1