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 | 592 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 570 insertions(+), 22 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 37b44bc..f81a2ea 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -8,6 +8,7 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; +import com.zy.asrs.mapper.BasDevpMapper; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.MatUtils; @@ -24,6 +25,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -72,24 +76,52 @@ private ManLocDetlService manLocDetlService; @Autowired private ManLocDetlMapper manLocDetlMapper; + @Resource + private InventoryCheckOrderService checkOrderService; + @Resource + private InventoryCheckOrderDetlService checkOrderDetlService; + @Resource + private BasDevpMapper basDevpMapper; @Override public R inLocCallAgv(String sta, String inSta) { - // 鍒ゆ柇鍏ュ簱绔欑偣鏈夋棤鍑哄簱浠诲姟杩囨护鐩樼偣鎹℃枡 - int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", inSta).ne("wrk_sts",15).notIn("io_type",103,107)); - if (count > 0) { + + BasDevp basDevp = basDevpMapper.selectById(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 + "绔欑偣瀛樺湪鍑哄簱浠诲姟"); } // 鍏堢粦瀹� - boolean flag = bindPodAndBerth(sta); - if (!flag) { - return R.parse(inSta + "缁戝畾澶辫触"); - } +// boolean flag = bindPodAndBerth(sta); +// if (!flag) { +// return R.parse(inSta + "缁戝畾澶辫触"); +// } ForwardAGVTaskParam forwardAGVTaskParam = new ForwardAGVTaskParam(); forwardAGVTaskParam.setReqCode(UUID.randomUUID().toString().replace("-", "")); + forwardAGVTaskParam.setClientCode("IWMS"); forwardAGVTaskParam.setTaskTyp("GT3"); forwardAGVTaskParam.setCtnrTyp("2"); forwardAGVTaskParam.setPriority("1"); @@ -110,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) { @@ -247,24 +282,25 @@ if(param.getCombMats().size()>1){ throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒"); } - // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 - if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). - eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { - throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); - } + param.getCombMats().forEach(elem -> { + // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 + if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). + eq("zpallet", param.getBarcode()) + .eq("io_status", "N") + .eq("matnr",elem.getMatnr()).eq("batch",elem.getBatch())) > 0) { + throw new CoolException(param.getBarcode() + "宸叉湁鐩稿悓鏁版嵁"); + } + }); if(param.getBarcode().length()!=9){ throw new CoolException("鏉$爜闀垮害涓嶆槸9浣�===>>" + param.getBarcode()); } - if (param.getCombMats().size()>1){ - throw new CoolException("涓嶅厑璁告贩鏂�===>>" + param.getBarcode()); - } int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); - int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getBarcode())); - if (countLoc > 0 || countWrk > 0 || countwait > 0) { - throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode()); +// int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getBarcode())); + if (countLoc > 0 || countWrk > 0) { + throw new CoolException("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode()); } Date now = new Date(); @@ -275,6 +311,15 @@ // 鐢熸垚鍏ュ簱閫氱煡妗� List<DetlDto> detlDtos = new ArrayList<>(); param.getCombMats().forEach(elem -> { + + // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 + if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). + eq("zpallet", param.getBarcode()) + .eq("io_status", "N") + .eq("matnr",elem.getMatnr()).eq("batch",elem.getBatch())) > 0) { + throw new CoolException(param.getBarcode() + "宸叉湁鐩稿悓鏁版嵁"); + } + DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); @@ -333,7 +378,9 @@ 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.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; @@ -360,13 +407,102 @@ waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); - waitPakin.setManu(detlDto.getMark()); + waitPakin.setManu(detlDto.getMark()); //鏍囪 + waitPakin.setOrigin(order.getItemName());//浠撳簱 + waitPakin.setSupp(detlDto.getSuppName()); //渚涘簲鍟� + waitPakin.setSku(detlDto.getCustomer()); //瀹㈡埛鍚嶇О + waitPakin.setThreeCode(detlDto.getOrderNo()); //u8鍙戣繃鏉ョ殑璁㈠崟鍙� + waitPakin.setSuppCode(detlDto.getFromOrderNo()); //鏉ユ簮鍗曞彿 + waitPakin.setTemp1(detlDto.getTemp1()); + 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け璐�"); } } orderService.updateSettle(order.getId(), 2L, userId); } + + } + + @Override + @Transactional + public void mergeComb(CombParam param, Long userId) { + + if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { + throw new CoolException(BaseRes.PARAM); + } + if(param.getCombMats().stream().anyMatch(obj -> obj.getAnfme() == null)){ + throw new CoolException("鍏ュ簱鐗╂枡鏁伴噺涓嶈兘涓虹┖"); + } + Order order = orderService.selectByNo(param.getOrderNo()); + if (Cools.isEmpty(order) || order.getSettle() > 2) { + throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); + } + + // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 + if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). + eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { + throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); + } + + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); + WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); + if (wrkMast.getWrkSts() != 14 && wrkMast.getIoType() != 104){ + throw new CoolException(param.getBarcode() + "璇ユ潯鐮佹暟鎹笉涓哄苟鏉垮嚭搴�"); + } + + //璁剧疆闈瀗ull鎵瑰彿锛� + for (CombParam.CombMat combMat : param.getCombMats()) { + if (combMat.getBatch() == null){ + combMat.setBatch(""); + } + } + + Date now = new Date(); + for (CombParam.CombMat combMat : param.getCombMats()) { + // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙 + OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch()); + if (Cools.isEmpty(orderDetl)) { + throw new CoolException("璇ュ崟鎹腑鏈壘鍒板搴旂墿鏂欐槑缁�"); + } + if (combMat.getAnfme() > orderDetl.getEnableQty()) { + throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + } + // 淇敼璁㈠崟浣滀笟鏁伴噺 + if (!orderDetlService.increaseWorkQty(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); + } + + Mat mat = matService.selectByMatnr(combMat.getMatnr()); + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(mat); + wrkDetl.setBatch(combMat.getBatch()); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setOrderNo(param.getOrderNo()); + wrkDetl.setZpallet(param.getBarcode()); + wrkDetl.setAnfme(combMat.getAnfme()); + wrkDetl.setAppeTime(now); + wrkDetl.setAppeUser(userId); + 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); + } + + + + } @@ -678,7 +814,7 @@ Date now = new Date(); for(OrderDetl orderDetl : orderDetls){ //鏌ヨ鎵�鏈夊簱浣嶇姸鎬佷负F鐨勫簱浣嶄俊鎭� - List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),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("搴撳瓨涓病鏈夎鐗╂枡"); } @@ -733,6 +869,13 @@ public void leftoversOut(Map<String, Object> map,Long userId) { String barcode = map.get("barcode").toString(); String barcode2 = map.get("barcode2").toString(); + + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",barcode2)); + int countWrk = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode",barcode2).ne("io_type",200)); + int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",barcode2)); + if (countLoc > 0 || countWrk > 0 || countwait > 0) { + throw new CoolException("璇ユ潯鐮佸凡琚娇鐢�===>>" + barcode2); + } WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode).eq("io_type", 103)); if (Cools.isEmpty(wrkMast)) { throw new CoolException("鏈煡璇㈠埌鎷f枡浠诲姟"); @@ -786,6 +929,411 @@ } @Override + public void pdaAdjust(pdaAdjustParam param, Long userId) { + if (Cools.isEmpty(param)){ + throw new CoolException("鐩樼偣鍒楄〃鍙傛暟涓虹┖"); + } + for (InventoryCheckOrderDetl orderDetl: param.getParam()){ + InventoryCheckOrderDetl inventoryCheckOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<InventoryCheckOrderDetl>() + .eq("order_no", orderDetl.getOrderNo()) + .eq("matnr", orderDetl.getMatnr()) + .eq("batch", orderDetl.getBatch())); + if (Cools.isEmpty(inventoryCheckOrderDetl)){ + throw new CoolException("鏈煡璇㈠埌鐩樼偣淇℃伅"); + } + if (!inventoryCheckOrderDetl.getStatus().equals("1")){ + throw new CoolException("璇ヤ换鍔″凡鐩樼偣"); + } + inventoryCheckOrderDetl.setCheckAnfme(orderDetl.getCheckAnfme()); + inventoryCheckOrderDetl.setStatus("2"); + if (!checkOrderDetlService.updateById(inventoryCheckOrderDetl)){ + throw new CoolException("淇濆瓨鐩樼偣淇℃伅澶辫触!"); + } + + } + + + + } + + @Override + @Transactional + public void inventoryUpload(String orderId) { + if (Cools.isEmpty(orderId)){ + throw new CoolException("鐩樼偣鍗昳d涓虹┖"); + } + InventoryCheckOrder inventoryCheckOrder = checkOrderService.selectById(orderId); + if (Cools.isEmpty(inventoryCheckOrder)){ + throw new CoolException("鏈壘鍒扮洏鐐瑰崟"); + } + if (inventoryCheckOrder.getStatus().equals("2")){ + throw new CoolException("鐩樼偣鍗曞凡鎻愪氦"); + } + int count = checkOrderDetlService.selectCount(new EntityWrapper<InventoryCheckOrderDetl>() + .eq("order_no", inventoryCheckOrder.getOrderNo()).isNull("check_anfme")); + if (count>0){ + throw new CoolException("鏈夋湭瀹屾垚鐨勭洏鐐逛换鍔�"); + } + + List<InventoryCheckOrderDetl> checkOrderProfitDetls = checkOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() + .eq("order_no", inventoryCheckOrder.getOrderNo()) + .addFilter("anfme < check_anfme")); + if (!checkOrderProfitDetls.isEmpty()){ + //鑾峰彇鐩樼泩鍗昿aram + InventoryErpParam erpProfitParam = getErpProfitParam(inventoryCheckOrder, checkOrderProfitDetls); + uploadErp(erpProfitParam); + } + + List<InventoryCheckOrderDetl> checkOrderDeficitDetls = checkOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() + .eq("order_no", inventoryCheckOrder.getOrderNo()) + .addFilter("anfme > check_anfme")); + + if (!checkOrderDeficitDetls.isEmpty()){ + //鑾峰彇鐩樹簭鍗昿aram + InventoryErpParam erpDeficitParam = getErpDeficitParam(inventoryCheckOrder, checkOrderDeficitDetls); + uploadErp(erpDeficitParam); + } + + inventoryCheckOrder.setStatus("2"); + if (!checkOrderService.updateById(inventoryCheckOrder)){ + throw new CoolException("鐘舵�佹洿鏂板け璐�"); + } + + + + + } + + @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; + try { + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri("10.0.100.160:30108") + .setPath("web/apps/gongqi.df.dataTrans/DTInterFace/doJobWithupdateBody") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("errcode").equals(0)) { + success = true; + } else if (jsonObject.getInteger("errcode").equals(1)) { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(param), response); + throw new CoolException(jsonObject.getString("msg")); + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(param), response); + throw new CoolException("涓婃姤mes绯荤粺澶辫触"); + } + } catch (Exception e) { + log.error("fail", e); + throw new CoolException(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "鐩樼偣鍗曚笂鎶�", + MesConstant.URL + MesConstant.PACK_DOWN_URL, + null, + "127.0.0.1", + JSON.toJSONString(param), + response, + success + ); + } catch (Exception e) { log.error("", e); } + } + } + + public InventoryErpParam getErpProfitParam(InventoryCheckOrder inventoryCheckOrder,List<InventoryCheckOrderDetl> checkOrderProfitDetls) { + Date date = new Date(); + InventoryErpParam erpProfitParam = new InventoryErpParam(); + InventoryErpParam.DataJson dataJson = new InventoryErpParam.DataJson(); + dataJson.setFlowCode("LIKUwms12GOTmes"); + dataJson.setTableCode("DTInventInTable_pdd"); + dataJson.setLogName("鐩樼泩鍗�-鍏ュ簱鍗�"); + erpProfitParam.setDataJson(dataJson); + List<InventoryErpParam.UpdateJson> updateJsonList = new ArrayList<>(); + InventoryErpParam.UpdateJson updateJson = new InventoryErpParam.UpdateJson(); + updateJson.setOrderNo(inventoryCheckOrder.getOrderNo()); + updateJson.setDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); + List<InventoryErpParam.MatDetails> matDetails = new ArrayList<>(); + for (InventoryCheckOrderDetl checkOrderProfitDetl: checkOrderProfitDetls){ + InventoryErpParam.MatDetails matDetail = new InventoryErpParam.MatDetails(); + + Mat mat = matService.selectByMatnr(checkOrderProfitDetl.getMatnr()); + + matDetail.setMatnr(checkOrderProfitDetl.getMatnr()); + matDetail.setBatch(checkOrderProfitDetl.getBatch()); + matDetail.setSpecs(mat.getSpecs()); + Double anfme = new BigDecimal(checkOrderProfitDetl.getCheckAnfme()).subtract(new BigDecimal(checkOrderProfitDetl.getAnfme())).doubleValue(); + matDetail.setAnfme(anfme); + matDetail.setLocNo(checkOrderProfitDetl.getLocNo()); + matDetail.setWarehouse(checkOrderProfitDetl.getArea()); + matDetail.setSeq(updateJson.getMatDetails() == null?1:updateJson.getMatDetails().size()+1); + matDetails.add(matDetail); + } + updateJson.setMatDetails(matDetails); + updateJsonList.add(updateJson); + erpProfitParam.setUpdateJson(updateJsonList); + return erpProfitParam; + } + + public InventoryErpParam getErpDeficitParam(InventoryCheckOrder inventoryCheckOrder,List<InventoryCheckOrderDetl> checkOrderDeficitDetls) { + Date date = new Date(); + InventoryErpParam erpDeficitParam = new InventoryErpParam(); + InventoryErpParam.DataJson dataJson = new InventoryErpParam.DataJson(); + dataJson.setFlowCode("LIKUwms12GOTmes"); + dataJson.setTableCode("DTInventOutTable_pdd"); + dataJson.setLogName("鐩樹簭鍗�-鍑哄簱鍗�"); + erpDeficitParam.setDataJson(dataJson); + List<InventoryErpParam.UpdateJson> updateJsonList2 = new ArrayList<>(); + InventoryErpParam.UpdateJson updateJson2 = new InventoryErpParam.UpdateJson(); + updateJson2.setOrderNo(inventoryCheckOrder.getOrderNo()); + updateJson2.setDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); + List<InventoryErpParam.MatDetails> matDetails = new ArrayList<>(); + for (InventoryCheckOrderDetl checkOrderDeficitDetl: checkOrderDeficitDetls){ + InventoryErpParam.MatDetails matDetail = new InventoryErpParam.MatDetails(); + + Mat mat = matService.selectByMatnr(checkOrderDeficitDetl.getMatnr()); + + matDetail.setMatnr(checkOrderDeficitDetl.getMatnr()); + matDetail.setBatch(checkOrderDeficitDetl.getBatch()); + matDetail.setSpecs(mat.getSpecs()); + Double anfme = new BigDecimal(checkOrderDeficitDetl.getAnfme()).subtract(new BigDecimal(checkOrderDeficitDetl.getCheckAnfme())).doubleValue(); + matDetail.setAnfme(anfme); + matDetail.setLocNo(checkOrderDeficitDetl.getLocNo()); + matDetail.setWarehouse(checkOrderDeficitDetl.getArea()); + matDetail.setSeq(updateJson2.getMatDetails() == null?1:updateJson2.getMatDetails().size()+1); + matDetails.add(matDetail); + } + updateJson2.setMatDetails(matDetails); + updateJsonList2.add(updateJson2); + erpDeficitParam.setUpdateJson(updateJsonList2); + return erpDeficitParam; + } + + @Override @Transactional public void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl, Double curOutQty, Integer ioType, Long userId, Date now) { -- Gitblit v1.9.1