From 4dca5d65e2518f019ce25c805827211e0509598f Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期二, 25 二月 2025 14:06:33 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 143 insertions(+), 24 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 c8aba41..ececff1 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java @@ -4,6 +4,7 @@ import com.core.common.BaseRes; import com.core.common.Cools; import com.core.exception.CoolException; +import com.zy.asrs.constant.AsrsConstants; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; import com.zy.asrs.service.*; @@ -17,10 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -92,6 +90,17 @@ if (!Cools.isEmpty(agvWrkMastService.selectByContainerCode(param.getBarcode()))) { throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV宸ヤ綔妗d腑"); } + //鍒ゆ柇鏄惁鏈夌浉鍚屾槑缁� + List<CombParam.CombMat> combMats = param.getCombMats(); + Map<String, String> data = new HashMap<>(); + for (CombParam.CombMat combMat : combMats) { + String matnr = combMat.getMatnr(); + String csocode = combMat.getCsocode(); + if (data.get(matnr + csocode) != null) { + throw new CoolException("鏄庣粏涓瓨鍦ㄧ浉鍚岀墿鏂欏彿鍜岃鍗曞彿"); + } + data.put(matnr + csocode, matnr + csocode); + } if (Cools.isEmpty(param.getOrderNo())) { //鏃犲崟缁勬墭 @@ -131,23 +140,23 @@ AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()).eq("supp_code", pick.getSuppCode())); if (Cools.isEmpty(agvWrkDetl)) { - AgvWrkDetl wrkDetl = new AgvWrkDetl(); + agvWrkDetl = 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(agvWrkMast.getIoTime()); - 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); + agvWrkDetl.sync(mat); + agvWrkDetl.setWrkNo(pickParams.getWrkNo()); + agvWrkDetl.setOrderNo(pick.getOrderNo()); + agvWrkDetl.setIoTime(agvWrkMast.getIoTime()); + agvWrkDetl.setAnfme(pick.getCount()); // 鏁伴噺 + agvWrkDetl.setSuppCode(pick.getSuppCode()); // 璐ф灦鏉$爜 + agvWrkDetl.setAppeUser(userId); + agvWrkDetl.setAppeTime(now); + agvWrkDetl.setModiUser(userId); + agvWrkDetl.setModiTime(now); + agvWrkDetl.setThreeCode(pick.getThreeCode()); + agvWrkDetlService.insert(agvWrkDetl); } else { Double anfme = agvWrkDetl.getAnfme() + pick.getCount(); agvWrkDetl.setIoTime(agvWrkMast.getIoTime()); @@ -164,11 +173,14 @@ if (agvLocDetl.getAnfme() < agvWrkDetl.getAnfme()) { throw new CoolException("鎷f枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺"); } + } else { + throw new CoolException("鎷f枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺,瀛樺簱涓嶅瓨鍦�"); } // 鏇存柊璁㈠崟 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()); + orderDetl.setUpdateTime(new Date()); 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()); } @@ -343,6 +355,10 @@ AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", stationCode)); + if (agvBasDevp == null) { + throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒"); + } + if (Cools.eq(agvBasDevp.getBarcode(), barcode)) { return; } @@ -357,9 +373,7 @@ throw new CoolException(barcode + "宸茬粡缁戝畾鍦�" + agvBasDevp.getDevNo() + "绔欑偣"); } - if (agvBasDevp == null) { - throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒"); - } + if (!"O".equals(agvBasDevp.getLocSts())) { throw new CoolException(stationCode + "璇ョ珯鐐硅揣浣嶇姸鎬侀潪绌�"); } @@ -641,6 +655,9 @@ @Transactional public String allocationIn(AgvMobileStartPakin param, Long userId) { Date now = new Date(); + if (Cools.isEmpty(param.getBarcode())) { + throw new CoolException("璇疯緭鍏ヨ揣鏋剁爜"); + } AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); if (Cools.isEmpty(agvWrkMast)) { throw new CoolException("鏆傛棤褰撳墠璐ф灦鐮佺殑浠诲姟"); @@ -689,6 +706,9 @@ throw new CoolException("璇疯緭鍏ヨ揣鏋剁爜"); } AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo())); + if (agvWrkMast == null) { + throw new CoolException("褰撳墠璐ф灦鐮佹病鏈変换鍔�"); + } Integer oldWrkNo = agvWrkMast.getWrkNo(); if (Cools.isEmpty(agvWrkMast)) { throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�"); @@ -715,6 +735,9 @@ @Synchronized public String empIn(AgvMobileStartPakin param, Long userId) { Date now = new Date(); + if (Cools.isEmpty(param.getBarcode())) { + throw new CoolException("璇疯緭鍏ヨ揣鏋剁爜"); + } AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); if (Cools.isEmpty(agvWrkMast)) { throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�"); @@ -744,6 +767,9 @@ public String handBack(AgvMobileStartPakin param, Long userId) { Date now = new Date(); AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo())); + if (agvWrkMast == null) { + throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�"); + } agvWrkMast.setIoType(113); agvWrkMast.setModiUser(userId); agvWrkMast.setModiTime(now); @@ -772,6 +798,10 @@ agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); String sourceLocNo = agvWrkMast.getSourceLocNo(); AgvLocMast newLocMast = agvCommonService.getLocNo(3, 1, false, false); + List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode())); + if (newLocMast == null) { + throw new CoolException("鏃犲彲鐢ㄥ簱浣�"); + } agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo()); agvWrkMast.setLocNo(newLocMast.getLocNo()); agvWrkMast.setIoType(57); @@ -791,7 +821,6 @@ agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30); agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo)); - List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode())); agvWrkDetls.forEach(agvWrkDetl -> { for (AgvWrkDetl wrkDetl : param.getWrkDetls()) { if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) { @@ -814,6 +843,77 @@ return "ok"; } + /* + * 纭鍔犲伐瀹屾垚 + */ + @Override + @Transactional + public String processedV2(AgvMobileStartPakin param, Long userId) { + Date now = new Date(); + AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()).eq("loc_no", param.getDevNo())); + if (Cools.isEmpty(agvWrkMast)) { + throw new CoolException("鏆傛棤褰撳墠璐ф灦鐨勫伐浣滄。"); + } + if (agvWrkMast.getWrkSts() != 205) { + throw new CoolException("褰撳墠浠诲姟鏈畬鎴愶紝璇风‘璁�"); + } + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� + agvWrkMastLogService.save(agvWrkMast); + agvWrkDetlLogService.save(agvWrkMast.getWrkNo()); + String sourceLocNo = agvWrkMast.getSourceLocNo(); + // TODO: 鍥涙湡 + List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode())); + String factory = param.getFactory(); + AgvLocMast newLocMast = agvCommonService.getLocByLocRule(3, 1, factory); + if (newLocMast == null) { + throw new CoolException("鏃犲彲鐢ㄥ簱浣�"); + } + agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo()); + agvWrkMast.setLocNo(newLocMast.getLocNo()); + agvWrkMast.setIoType(57); + agvWrkMast.setWrkSts(201L); + agvWrkMast.setModiUser(userId); + agvWrkMast.setModiTime(now); + agvWrkMast.setIoTime(now); + // 鎵撴爣璁帮紝鑻ュ簱浣嶄笉澶燂紝鍏ュ簱鍒板埆鐨勬ゼ灞傦紝閭d箞闇�瑕佽法灞傜Щ搴� + if (!Cools.isEmpty(factory)) { + if (newLocMast.getLev1() == 1 && !factory.equals(AsrsConstants.SANCHANG)) { + agvWrkMast.setCtnNo("1"); + } else if (newLocMast.getLev1() == 2 && !factory.equals(AsrsConstants.ERCHANG)) { + agvWrkMast.setCtnNo("2"); + } + } + if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) { + throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�"); + } + + // 鏇存柊婧愮珯鐐� + 鐩爣搴撲綅鐘舵�� + 鍘嗗彶婧愬簱浣� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(), "R", param.getBarcode(), agvWrkMast.getWhsType().shortValue()); + agvLocMastService.updateLocStsByLocNo(newLocMast.getLocNo(), "S", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); + agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30); + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo)); + + agvWrkDetls.forEach(agvWrkDetl -> { + for (AgvWrkDetl wrkDetl : param.getWrkDetls()) { + if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) { + agvWrkDetl.setAnfme(wrkDetl.getAnfme()); + break; + } + } + agvWrkDetl.setProcessSts(2); + agvWrkDetl.setOrderNo(agvWrkDetl.getOrderNo().substring(2)); + agvWrkDetl.setModiUser(userId); + agvWrkDetl.setModiTime(now); + agvWrkDetl.setIoTime(now); + if (!agvWrkDetlService.update(agvWrkDetl, new EntityWrapper<AgvWrkDetl>() + .eq("matnr", agvWrkDetl.getMatnr()) + .eq("three_code", agvWrkDetl.getThreeCode()) + .eq("supp_code", param.getBarcode()))) { + throw new CoolException("鏇存柊宸ヤ綔鏄庣粏澶辫触"); + } + }); + return "ok"; + } /* * 绔欑偣鍥為�� @@ -858,9 +958,28 @@ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); } // 鍚屾璁㈠崟鏁伴噺 - OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code", agvWrkDetl.getThreeCode()).eq("order_no", agvWrkDetl.getOrderNo()).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()))) { + //OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code", agvWrkDetl.getThreeCode()).eq("order_no", agvWrkDetl.getOrderNo()).in("source", 18, 31, 34)); + List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code", agvWrkDetl.getThreeCode()).eq("order_no", agvWrkDetl.getOrderNo())); + OrderDetl orderDetl = null; + if (orderDetls.isEmpty()) { + throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�"); + } else if (orderDetls.size() > 1) { + for (OrderDetl detl : orderDetls) { + if (Cools.isEmpty(agvWrkDetl.getBatch()) && Cools.isEmpty(detl.getBatch())) { + orderDetl = detl; + } else if (!Cools.isEmpty(agvWrkDetl.getBatch()) && !Cools.isEmpty(detl.getBatch()) && agvWrkDetl.getBatch().equals(detl.getBatch())) { + orderDetl = detl; + } + } + if (orderDetl == null) { + throw new CoolException("璁㈠崟鏄庣粏涓嶅尮閰�"); + } + } else { + orderDetl = orderDetls.get(0); + } + double v = orderDetl.getQty() - agvWrkDetl.getAnfme(); + orderDetl.setQty(v < 0 ? 0 : v); + if (!orderDetlService.updateById(orderDetl)) { throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + orderDetl.getOrderNo() + orderDetl.getMatnr()); } } -- Gitblit v1.9.1