From 68aafce5aaef75bc6505b899d380aa58e00067fa Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期二, 20 八月 2024 15:18:30 +0800 Subject: [PATCH] 桁架理货出库流程修改 --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 191 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 174 insertions(+), 17 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 1513336..7dbc6d1 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -9,6 +9,7 @@ import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; import com.zy.asrs.mapper.ManLocDetlMapper; +import com.zy.asrs.mapper.MatMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.MatUtils; import com.zy.common.constant.MesConstant; @@ -40,6 +41,8 @@ @Autowired private MatService matService; + @Autowired + private MatMapper matMapper; @Autowired private WaitPakinService waitPakinService; @Autowired @@ -1167,37 +1170,43 @@ @Override @Transactional - public void pakoutFhqr(Integer workNo, Integer check) { + public R pakoutFhqr(PdckqrParam param) { + // 鑾峰彇宸ヤ綔妗� - WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo)); + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode",param.getBarcode())); if (wrkMast == null) { - throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + workNo); + throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + param.getBarcode()); } - if (wrkMast.getWrkSts() != 20) { - throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佸紓甯革細" + workNo + ",鐘舵�侊細" + wrkMast.getWrkSts()); + throw new CoolException(wrkMast.getWrkNo() + ",宸ヤ綔妗g被鍨嬶細" + wrkMast.getIoType() + "宸ヤ綔鐘舵�侊細" + wrkMast.getWrkSts() + ",涓嶅尮閰�"); } - if (check == 1) { - // 澶嶆牳纭锛屾洿鏂扮姸鎬佷负15鍑哄簱瀹屾垚鏇存柊 - wrkMast.setWrkSts(14L); - wrkMastService.updateById(wrkMast); - } + List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); + List<PdckqrParam.Material> materials = param.getMaterials(); + boolean isFullyCancelled = compareAndCheckCancellation(wrkDetls, materials); + if (isFullyCancelled) { + // 澶嶆牳纭锛屾洿鏂扮姸鎬佷负15鍑哄簱瀹屾垚鏇存柊 + wrkMast.setWrkSts(14L); + wrkMastService.updateById(wrkMast); + } else { + throw new CoolException("鍑哄彛澶嶆牳澶辫触"); + } + return R.ok("鍑哄彛澶嶆牳鎴愬姛"); } @Override @Transactional public R pdckqr(PdckqrParam param) { - WrkMast wrkMast = wrkMastService.selectById(param.getWorkNo()); + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode",param.getBarcode())); if (wrkMast == null) { - throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + param.getWorkNo()); + throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + param.getBarcode()); } if (wrkMast.getIoType() != 107 || wrkMast.getWrkSts() != 2) { - throw new CoolException(param.getWorkNo() + "宸ヤ綔妗g被鍨嬶細" + wrkMast.getIoType() + "宸ヤ綔鐘舵�侊細" + wrkMast.getWrkSts() + ",涓嶅尮閰�"); + throw new CoolException(wrkMast.getWrkNo() + ",宸ヤ綔妗g被鍨嬶細" + wrkMast.getIoType() + "宸ヤ綔鐘舵�侊細" + wrkMast.getWrkSts() + ",涓嶅尮閰�"); } - List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(param.getWorkNo()); + List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); List<PdckqrParam.Material> materials = param.getMaterials(); boolean isFullyCancelled = compareAndCheckCancellation(wrkDetls, materials); @@ -1238,7 +1247,7 @@ } // 鎺ㄩ�佺粰gwcs鎵ц鍛戒护 - openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo()); + openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo(),wrkMast.getBarcode()); return R.ok("鐩樼偣纭鎴愬姛"); @@ -1406,10 +1415,158 @@ } // 鎺ㄩ�丟WCS鐩爣娑堟伅 - openServiceImpl.pushStaNoToGwcs(sourceStaNo,dto.getStaNo(),dto.getWorkNo()); + openServiceImpl.pushStaNoToGwcs(sourceStaNo,dto.getStaNo(),dto.getWorkNo(),barcode); return R.ok("鍏ュ簱鍚姩鎴愬姛"); } + @Override + public R pdaFxprk(FxprkParam param, Long userId) { + + // 鏍规嵁鍖呰缁勫彿鑾峰彇鍒版湪绠卞嵎淇℃伅 + List<Mat> list = matService.selectList(new EntityWrapper<Mat>().in("brand", param.getBoxList().stream().map(FxprkParam.Box::getPackageGroupNo).collect(Collectors.toList()))); + if (list.isEmpty()) { + throw new CoolException("娌℃湁鏌ヨ鍒拌鍖呰缁勫彿淇℃伅锛�" + param.getBoxList().toString()); + } + + LocTypeDto locTypeDto = new LocTypeDto(); + locTypeDto.setLocType1((short) 1); + StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto, 0); + + // 杩斿洖GWCS鐩爣淇℃伅 + boolean result = pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode()); +// if (!result) { +// throw new CoolException("鍏ュ簱鍥炴帹鍏ュ簱鐮佸ご缁橤WCS澶辫触"); +// } + + int workNo = dto.getWorkNo(); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋 + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setSourceStaNo(param.getPalletizingNo()); + wrkMast.setStaNo(dto.getStaNo()); + wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setAppeUser(userId); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + for (Mat obj : list) { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(obj); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setAnfme(1.0); + // 閲嶆柊瀹氫綅鏈ㄧ浣嶇疆 + for (FxprkParam.Box box :param.getBoxList()) { + if (box.getPackageGroupNo().equals(obj.getBrand())) { + if (!box.getBoxPos().equals(obj.getOrigin())) { + wrkDetl.setOrigin(box.getBoxPos()); + wrkDetl.setZpallet(param.getBarcode()); + wrkDetl.setBarcode(param.getBarcode()); + matMapper.updateBoxPos(box.getPackageGroupNo(), box.getBoxPos(),param.getBarcode()); + } + break; + } + } + wrkDetl.setIoTime(now); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + } + + // 鏇存柊鐩爣搴撲綅鐘舵�� + LocMast locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocSts().equals("O")) { + locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤"); + } + return R.ok("鍏ュ簱鎴愬姛"); + } + public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode) { + boolean success = false; + // 鑾峰彇璇锋眰澶� + Map<String, Object> headers = getHeaders(); + + // 鏋勯�犺姹備綋 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("workNo", workNo); + jsonObject.put("staNo", staNo); + jsonObject.put("sourceStaNo", palletizingNo); + jsonObject.put("barcode", barcode); + String body = jsonObject.toJSONString(); + String response = ""; + try { + response = new HttpHandler.Builder() + .setUri(MesConstant.GWCS_IP_PORT) + .setPath(MesConstant.GWCS_FPKW_URL) + .setHeaders(headers) + .setJson(body) + .build() + .doPost(); + if (!Cools.isEmpty(response)) { + success = true; +// // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶� +// if (!orderService.updateSettle(order.getId(), 6L, null)) { +// throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); +// } + } else { + log.error("zmws鎺ㄩ�佸叆搴撶爜澶寸珯鐐规帴鍙eけ璐ワ紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response); + throw new CoolException("涓婃姤mes绯荤粺澶辫触"); + } + } catch (Exception e) { + log.error("鍏ュ簱璇锋眰鎺ュ彛澶辫触锛歿}", e.getMessage()); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// return FAIL.setMsg(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "鍏ュ簱", + MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL, + null, + "127.0.0.1", + body, + response, + success + ); + } catch (Exception e) { + log.error("", e); + } + } + return success; + } + Map<String, Object> getHeaders(){ + Map<String,Object> headers = new HashMap<>(); + headers.put("digi-type","sync "); + headers.put("digi-protocol","raw"); + headers.put("digi-datakey"," XCommon.ImportData"); + + return headers; + } private Map<String, String> getPackageGroupNoByGwms(List<String> boxNoList) { Map<String, String> map = null; Map<String, Object> headers = new HashMap<>(); @@ -1480,7 +1637,7 @@ for (WrkDetl p1 : list1) { boolean cancelled = false; for (PdckqrParam.Material p2 : remainingList2) { - if (p1.getBatch().equals(p2.getBoxNo()) && p1.getModel().equals(p2.getRollNo())) { // 鍗峰彿鍜岀鍙风浉鍚� + if (p1.getUnit().equals(p2.getBoxNo()) && p1.getModel().equals(p2.getRollNo())) { // 鍗峰彿鍜岀鍙风浉鍚� remainingList2.remove(p2); cancelled = true; break; -- Gitblit v1.9.1