From 0039eea93ca5fc77b2b9d0b0ab7babefe2316034 Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期二, 21 五月 2024 09:10:21 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 163 insertions(+), 4 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 5a91cb0..88c508a 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java @@ -7,13 +7,11 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.CombParam; -import com.zy.asrs.entity.param.LocMoveParam; -import com.zy.asrs.entity.param.MobileAdjustParam; -import com.zy.asrs.entity.param.PickParam; +import com.zy.asrs.entity.param.*; import com.zy.asrs.service.*; import com.zy.common.model.DetlDto; import com.zy.common.service.AgvCommonService; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -55,6 +53,10 @@ private AgvLocMastService agvLocMastService; @Autowired private AgvCommonService agvCommonService; + @Autowired + private AgvWrkMastLogService agvWrkMastLogService; + @Autowired + private AgvWrkDetlLogService agvWrkDetlLogService; /* @@ -449,6 +451,126 @@ } /* + 璋冩嫧绂诲満 + */ + @Override + @Transactional + @Synchronized + public String allocationOut(AgvMobileStartPakin param, Long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo())); + Integer oldWrkNo = agvWrkMast.getWrkNo(); + if (Cools.isEmpty(agvWrkMast)) { + throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�"); + } + + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� + agvWrkMastLogService.save(agvWrkMast); + agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); + //鍒犻櫎AGV宸ヤ綔妗� + agvWrkMastService.deleteById(agvWrkMast); + //鐢熸垚宸ヤ綔妗� + AgvWrkMast wrkMast = createWrkMast(111, 210L, "", "", agvWrkMast.getBarcode(), now, userId, 30, agvWrkMast.getCrnNo()); + // 鏇存柊宸ヤ綔鏄庣粏 + List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode())); + for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { + agvWrkDetl.setWrkNo(wrkMast.getWrkNo()); + // 淇濇寔宸ヤ綔妗f槑缁� + agvWrkDetl.setWrkNo(wrkMast.getWrkNo()); + agvWrkDetl.setModiUser(userId); + agvWrkDetl.setModiTime(now); + if (!agvWrkDetlService.insert(agvWrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + } + // 鏇存柊绔欑偣鐘舵�� + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); + // 鏇存柊婧愬簱浣嶇姸鎬� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); + + //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo)); + return "ok"; + } + /* + 璋冩嫧杩涘満 + */ + @Override + @Transactional + public String allocationIn(AgvMobileStartPakin param, Long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); + AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(param.getDevNo()); + if (Cools.isEmpty(agvWrkMast)) { + throw new CoolException("宸ヤ綔妗d腑娌℃湁姝よ揣鏋朵换鍔�"); + } + if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) { + throw new CoolException("璇风Щ鍔ㄥ埌->" + agvWrkMast.getCrnNo() + "妤煎叆搴撶偣鍏ュ簱"); + } + //宸ヤ綔鐘舵�� + agvWrkMast.setWrkSts(211L); + //鍏ュ嚭搴撶被鍨� + agvWrkMast.setIoType(112); + agvWrkMast.setSourceLocNo(param.getDevNo()); + agvWrkMast.setModiUser(userId); + agvWrkMast.setModiTime(now); + if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) { + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } + // 鏇存柊婧愬簱浣嶇姸鎬� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + //鍒犻櫎AGV宸ヤ綔妗� + return "ok"; + } + /* + * 绔欑偣鍥為�� + */ + @Override + @Transactional + public String doBack(AgvMobileStartPakin param, Long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo())); + Integer oldWrkNo = agvWrkMast.getWrkNo(); + if (!agvWrkMast.getBarcode().equals(param.getBarcode())) { + throw new CoolException("鍥為��浠诲姟鐨勮揣鏋剁爜涓庡綋鍓嶈揣鏋剁爜涓嶄竴鑷�!"); + } + if (agvWrkMast.getWrkSts() != 205) { + throw new CoolException("鍑哄簱浠诲姟鏈畬鎴�!"); + } + // 鏂板缓鍥為��宸ヤ綔妗� + AgvWrkMast wrkMast = createWrkMast(58, 201L, agvWrkMast.getLocNo(), agvWrkMast.getSourceLocNo(), agvWrkMast.getBarcode(), now, userId, agvWrkMast.getWhsType(), 0); + // 鏇存柊鎺ラ┏浣嶏紝鏇存柊搴撲綅鐘舵�� + agvLocMastService.updateLocStsByLocNo(wrkMast.getLocNo(),"S",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue()); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"R",wrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + // 鏇存柊宸ヤ綔鏄庣粏 + List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode())); + for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { + agvWrkDetl.setWrkNo(wrkMast.getWrkNo()); + // 淇濇寔宸ヤ綔妗f槑缁� + agvWrkDetl.setWrkNo(wrkMast.getWrkNo()); + agvWrkDetl.setModiUser(userId); + agvWrkDetl.setModiTime(now); + if (!agvWrkDetlService.insert(agvWrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + // 鍚屾璁㈠崟鏁伴噺 + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).in("source",18,31,34)); + orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); + if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no",orderDetl.getOrderNo()).eq("matnr", orderDetl.getMatnr()).eq("three_code",orderDetl.getThreeCode()))){ + throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+orderDetl.getOrderNo()+orderDetl.getMatnr()); + } + } + + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� + agvWrkMastLogService.save(agvWrkMast); + agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); + //鍒犻櫎AGV宸ヤ綔妗� + agvWrkMastService.deleteById(agvWrkMast); + //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo)); + return "ok"; + } + /* 鏇存柊鐩爣搴撲綅淇℃伅 */ private void updateAgvLocMast(AgvLocMast locMast, String locSts){ @@ -456,4 +578,41 @@ agvLocMastService.updateById(locMast); } + /* + 鐢熸垚宸ヤ綔妗� + */ + private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType,int floor){ + AgvWrkMast wrkMast = new AgvWrkMast(); + //宸ヤ綔鐘舵�� + wrkMast.setWrkSts(wrkSts); + //鍏ュ嚭搴撶被鍨� + wrkMast.setIoType(ioType); + wrkMast.setIoTime(now); + //浼樺厛绾� + wrkMast.setIoPri(300.0); + //婧愮珯鐐� + wrkMast.setSourceLocNo(sourceLocNo); + //鐩爣绔欑偣 + wrkMast.setLocNo(locNo); + //瀹瑰櫒缂栫爜 + wrkMast.setBarcode(barcode); + //瀹瑰櫒绫诲瀷 + wrkMast.setWhsType(containerType); + // 鐩爣妤煎眰 + wrkMast.setCrnNo(floor); + + wrkMast.setAppeUser(userId); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + + if (!agvWrkMastService.insertByIncrease(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false)); + + return wrkMast; + } + } -- Gitblit v1.9.1