From 7bac1f6a6be795d36b94a6f77b23958e0590add4 Mon Sep 17 00:00:00 2001 From: fyxc <fyxc@qq.com> Date: 星期四, 03 四月 2025 10:20:29 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 270 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 256 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index effd7d5..f81a2ea 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -88,18 +88,29 @@ public R inLocCallAgv(String sta, String inSta) { BasDevp basDevp = basDevpMapper.selectById(inSta); - // 0.鍑哄簱妯″紡锛�1.agv鍏ュ簱涓紝2.鐢熸垚鍏ュ簱浠诲姟 - if (basDevp.getDevMk().equals("0")) { // 鏄嚭搴� - // 鍒ゆ柇鏄惁鏈夊嚭搴撲换鍔� - int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>() - .eq("sta_no", inSta).lt("wrk_sts",14).in("io_type",101,103,107,110)); - if (count == 0) { - // 娌℃湁鍑哄簱浠诲姟锛屾洿鏀逛负鍏ュ簱妯″紡 - basDevp.setDevMk("1"); - basDevpMapper.updateById(basDevp); - } else { - return R.parse(inSta + "绔欑偣瀛樺湪鍑哄簱浠诲姟"); - } + + // 鍒ゆ柇鏄惁鏈夊嚭搴撲换鍔� + Wrapper<WrkMast> wrapper = new EntityWrapper<WrkMast>().lt("wrk_sts", 14).in("io_type", 101, 103, 107, 110); + + switch (inSta) { + case "1040": + wrapper.in("source_sta_no", "1043", "1044"); + break; + case "2010": + wrapper.in("source_sta_no", "2013", "2014"); + break; + case "2000": + wrapper.in("source_sta_no", "2003", "2004"); + break; + case "3010": + wrapper.in("source_sta_no", "3013", "3014"); + break; + default: + } + int count = wrkMastService.selectCount(wrapper); + log.info("鍏ュ簱鍛煎彨agv鍛煎彨绔欑偣锛歿}锛岀洰鏍囩珯鐐癸細{},鍑哄簱浠诲姟鏁帮細{}",sta,inSta,count); + if (count != 0) { + return R.parse(inSta + "绔欑偣瀛樺湪鍑哄簱浠诲姟"); } // 鍏堢粦瀹� @@ -131,10 +142,13 @@ .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); - jsonObject.getString("message"); if (jsonObject.getInteger("code").equals(0)) { success = true; + // 鍏ュ簱鏆傚瓨+1 + basDevp.setInQty(basDevp.getInQty() + 1); + basDevpMapper.updateById(basDevp); } else { + message = jsonObject.getString("message"); log.error("鍏ュ簱鍛煎彨agv澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", ApiInterfaceConstant.AGV_IP + ApiInterfaceConstant.AGV_CALL_IN_PATH, body, response); } } catch (Exception e) { @@ -403,6 +417,10 @@ waitPakin.setTemp2(detlDto.getTemp2()); waitPakin.setTemp3(detlDto.getTemp3()); waitPakin.setTemp4(detlDto.getTemp4()); + int countWrk2 = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); + if (countWrk2 > 0) { + throw new CoolException("宸ヤ綔妗f潯鐮佹暟鎹凡瀛樺湪===>>" + param.getBarcode()); + } if (!waitPakinService.insert(waitPakin)) { throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); } @@ -474,6 +492,11 @@ wrkDetl.setModiTime(now); wrkDetl.setModiUser(userId); wrkDetl.setManu(orderDetl.getManu()); + wrkDetl.setSupp(orderDetl.getSupp()); + wrkDetl.setTemp1(orderDetl.getTemp1()); + wrkDetl.setTemp2(orderDetl.getTemp2()); + wrkDetl.setTemp3(orderDetl.getTemp3()); + wrkDetl.setTemp4(orderDetl.getTemp4()); wrkDetlService.insert(wrkDetl); } @@ -791,7 +814,7 @@ Date now = new Date(); for(OrderDetl orderDetl : orderDetls){ //鏌ヨ鎵�鏈夊簱浣嶇姸鎬佷负F鐨勫簱浣嶄俊鎭� - List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null,null); + List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null,orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2()); if (locDetls.size() == 0) { throw new CoolException("搴撳瓨涓病鏈夎鐗╂枡"); } @@ -981,6 +1004,225 @@ } + @Override + @Transactional + public void pingKuShelves(CombParam combParam,Long userId) { + Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", combParam.getLocno()).eq("type", 3)); + if (Cools.isEmpty(node)){ + throw new CoolException("鏈壘鍒板簱浣嶄俊鎭�"); + } + + Order order = orderService.selectByNo(combParam.getOrderNo()); + if (Cools.isEmpty(order) || order.getSettle() > 2) { + throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); + } + // 鐢熸垚鍏ュ簱閫氱煡妗� + List<DetlDto> detlDtos = new ArrayList<>(); + + for (CombParam.CombMat elem : combParam.getCombMats()) { + + +// param.getCombMats().forEach(elem -> { + + // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙 + OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); + if (Cools.isEmpty(orderDetl)) { + throw new CoolException("璇ュ崟鎹腑鏈壘鍒板搴旂墿鏂欐槑缁�"); + } + if (elem.getAnfme() > orderDetl.getEnableQty()) { + throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + } + // 淇敼璁㈠崟浣滀笟鏁伴噺 + if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); + } + +// DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getManu()); + DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getSuppCode() + , orderDetl.getManu(),orderDetl.getSku(),orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2(),orderDetl.getTemp3(),orderDetl.getTemp4()); + if (DetlDto.has(detlDtos, detlDto)) { + DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); + assert one != null; + one.setAnfme(one.getAnfme() + detlDto.getAnfme()); + } else { + detlDtos.add(detlDto); + } +// }); + } + int workNo = commonService.getWorkNo(4); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(4L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(300); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(12D); // 浼樺厛绾� + wrkMast.setLocNo(node.getName()); + wrkMast.setBarcode(""); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setSheetNo(order.getOrderNo()); + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + for (DetlDto detlDto : detlDtos) { + Mat mat = matService.selectByMatnr(detlDto.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + WrkDetl wrkDetl = new WrkDetl(); + + wrkDetl.sync(detlDto); + wrkDetl.sync(mat); + + wrkDetl.setOrderNo(order.getOrderNo()); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + wrkDetl.setManu(detlDto.getMark()); //鏍囪 + wrkDetl.setOrigin(order.getItemName());//浠撳簱 + wrkDetl.setSupp(detlDto.getSuppName()); //渚涘簲鍟� + wrkDetl.setSku(detlDto.getCustomer()); //瀹㈡埛鍚嶇О + wrkDetl.setThreeCode(detlDto.getOrderNo()); //u8鍙戣繃鏉ョ殑璁㈠崟鍙� + wrkDetl.setSuppCode(detlDto.getFromOrderNo()); //鏉ユ簮鍗曞彿 + wrkDetl.setTemp1(detlDto.getTemp1()); + wrkDetl.setTemp2(detlDto.getTemp2()); + wrkDetl.setTemp3(detlDto.getSuppName()); + wrkDetl.setTemp4(detlDto.getTemp4()); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + } + orderService.updateSettle(order.getId(), 2L, userId); + + + } + + @Override + @Transactional + public void pingKuUnShelves(CombParam combParam, Long userId) { + String orderNo = combParam.getOrderNo(); + + Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", combParam.getLocno()).eq("type", 3)); + if (Cools.isEmpty(node)){ + throw new CoolException("鏈壘鍒板簱浣嶄俊鎭�"); + } + //鏍规嵁璁㈠崟鍙风敓鎴愬嚭搴撲换鍔″伐浣滄。 + Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo)); + if (order.getSettle() != 1 && order.getSettle() != 2){ + throw new CoolException("璇ヨ鍗曞凡澶勭悊"); + } + List<DetlDto> detlDtos = new ArrayList<>(); + for (CombParam.CombMat elem : combParam.getCombMats()) { + Wrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", combParam.getLocno()) + .eq("matnr", elem.getMatnr()).eq("batch", elem.getBatch()) + .eq("temp3", elem.getSupp()).eq("temp1", elem.getTemp1()).eq("temp2", elem.getTemp2()); + ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper); + + if (Cools.isEmpty(manLocDetl)){ + throw new CoolException("璇ュ簱浣嶆湭鏌ヨ鍒拌揣鐗╀俊鎭�"); + } + if (elem.getAnfme()> manLocDetl.getAnfme()){ + throw new CoolException("鍑哄簱鏁伴噺澶т簬搴撲綅鍓╀綑鏁伴噺"); + } + + OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); + if (Cools.isEmpty(orderDetl)) { + throw new CoolException("璇ュ崟鎹腑鏈壘鍒板搴旂墿鏂欐槑缁�"); + } + if (elem.getAnfme() > orderDetl.getEnableQty()) { + throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + } + // 淇敼璁㈠崟浣滀笟鏁伴噺 + if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); + } + + DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),orderDetl.getSuppCode() + , orderDetl.getManu(),orderDetl.getSku(),orderDetl.getSupp(),orderDetl.getTemp1(),orderDetl.getTemp2(),orderDetl.getTemp3(),orderDetl.getTemp4()); + + + int workNo = commonService.getWorkNo(4); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(14L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(301); // 鍏ュ嚭搴撶姸鎬侊細301.骞冲簱鍑哄簱 + wrkMast.setIoPri(12D); // 浼樺厛绾� + wrkMast.setSourceLocNo(node.getName()); + wrkMast.setBarcode(""); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setSheetNo(order.getOrderNo()); + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + Mat mat = matService.selectByMatnr(detlDto.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + WrkDetl wrkDetl = new WrkDetl(); + + wrkDetl.sync(detlDto); + wrkDetl.sync(mat); + + wrkDetl.setOrderNo(order.getOrderNo()); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + wrkDetl.setManu(detlDto.getMark()); //鏍囪 + wrkDetl.setOrigin(order.getItemName());//浠撳簱 + wrkDetl.setSupp(detlDto.getSuppName()); //渚涘簲鍟� + wrkDetl.setSku(detlDto.getCustomer()); //瀹㈡埛鍚嶇О + wrkDetl.setThreeCode(detlDto.getOrderNo()); //u8鍙戣繃鏉ョ殑璁㈠崟鍙� + wrkDetl.setSuppCode(detlDto.getFromOrderNo()); //鏉ユ簮鍗曞彿 + wrkDetl.setTemp1(detlDto.getTemp1()); + wrkDetl.setTemp2(detlDto.getTemp2()); + wrkDetl.setTemp3(detlDto.getTemp3()); + wrkDetl.setTemp4(detlDto.getTemp4()); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + + if (new BigDecimal(manLocDetl.getAnfme()).subtract(new BigDecimal(elem.getAnfme())).doubleValue() == 0){ + manLocDetlService.delete(manLocDetlWrapper); + }else { + manLocDetl.setAnfme(new BigDecimal(manLocDetl.getAnfme()).subtract(new BigDecimal(elem.getAnfme())).doubleValue()); + if (!manLocDetlService.update(manLocDetl,manLocDetlWrapper)) { + throw new CoolException("鏇存柊鏄庣粏澶辫触"); + } + } + + + + + + } + orderService.updateSettle(order.getId(), 2L, userId); + + + } + public void uploadErp(InventoryErpParam param){ String response = ""; boolean success = false; -- Gitblit v1.9.1