From 78a59eda850857e1bfeb48541f0c64d442877a4d Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期二, 08 四月 2025 11:17:10 +0800 Subject: [PATCH] #实现pda简单入库出库操作 --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 240 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 179 insertions(+), 61 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 5615409..a5fcd61 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -1,5 +1,7 @@ package com.zy.asrs.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.BaseRes; import com.core.common.Cools; @@ -11,8 +13,15 @@ import com.zy.asrs.entity.param.MobileAdjustParam; import com.zy.asrs.entity.param.OpenOrderPakinParam; import com.zy.asrs.service.*; +import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.task.handler.WorkLogHandler; +import com.zy.asrs.utils.MatUtils; +import com.zy.common.constant.MesConstant; import com.zy.common.entity.Parameter; import com.zy.common.model.DetlDto; +import com.zy.common.model.MesCombParam; +import com.zy.common.service.CommonService; +import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,6 +60,14 @@ private OpenService openService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; + @Autowired + private ApiLogService apiLogService; + @Autowired + private WorkLogHandler workLogHandler; + @Autowired + private CommonService commonService; + @Autowired + private LocMastService locMastService; @Override @Transactional @@ -63,45 +80,21 @@ eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); } + + // todo: 涓嶄笅绾块噸鏂板叆搴� + WrkMast wrkMast18 = wrkMastService.selectByBarcode(param.getBarcode()); + if (wrkMast18 != null && wrkMast18.getWrkSts() == 18) { + ReturnT<String> start = workLogHandler.start(wrkMast18); + if (!start.isSuccess()) { + log.error("宸ヤ綔妗workNo={}]鍘嗗彶妗e鐞嗗け璐�", wrkMast18.getWrkNo()); + } + } + Date now = new Date(); // 鏃犲崟缁勬墭 if (Cools.isEmpty(param.getOrderNo())) { - // 鐢熸垚鍏ュ簱閫氱煡妗� - List<DetlDto> detlDtos = new ArrayList<>(); - param.getCombMats().forEach(elem -> { - DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); - 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); - } - }); - - - for (DetlDto detlDto : detlDtos) { - Mat mat = matService.selectByMatnr(detlDto.getMatnr()); - if (Cools.isEmpty(mat)) { - throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); - } - WaitPakin waitPakin = new WaitPakin(); - waitPakin.sync(mat); - waitPakin.setBatch(detlDto.getBatch()); - waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� - waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� - waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺 - waitPakin.setStatus("Y"); // 鐘舵�� - waitPakin.setAppeUser(userId); - waitPakin.setAppeTime(now); - waitPakin.setModiUser(userId); - waitPakin.setModiTime(now); - if (!waitPakinService.insert(waitPakin)) { - throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); - } - } // 鍏宠仈缁勬墭 } else { Order order = orderService.selectByNo(param.getOrderNo()); @@ -131,29 +124,92 @@ detlDtos.add(detlDto); } }); - for (DetlDto detlDto : detlDtos) { - Mat mat = matService.selectByMatnr(detlDto.getMatnr()); - if (Cools.isEmpty(mat)) { - throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); - } - WaitPakin waitPakin = new WaitPakin(); - waitPakin.sync(mat); - waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 - waitPakin.setBatch(detlDto.getBatch()); // 鎵瑰彿 - waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� - waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� - waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺 - waitPakin.setStatus("Y"); // 鐘舵�� - waitPakin.setAppeUser(userId); - waitPakin.setAppeTime(now); - waitPakin.setModiUser(userId); - waitPakin.setModiTime(now); - if (!waitPakinService.insert(waitPakin)) { - throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); - } - } + orderService.updateSettle(order.getId(), 2L, userId); } + + LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O")); + if (Cools.isEmpty(locMast1)) { + throw new CoolException("鏈壘鍒版纭殑搴撲綅淇℃伅"); + } + + int workNo = commonService.getWorkNo(0); + + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(9L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + Double ioPri = wrkMastService.getIoPri(1, locMast1.getLocNo()); + wrkMast.setIoPri(ioPri); // 浼樺厛绾� + wrkMast.setCrnNo(locMast1.getCrnNo()); + wrkMast.setOutMost(locMastService.isOutMost(locMast1.getLocNo(), true)?1:0);; + wrkMast.setSourceStaNo(null); + wrkMast.setStaNo(null); + wrkMast.setLocNo(locMast1.getLocNo()); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(null); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + + for (CombParam.CombMat paramMat : param.getCombMats() ) + { + Mat mat = matService.selectByMatnr(paramMat.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(paramMat.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + + // 鐢熸垚宸ヤ綔妗f槑缁� + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(mat); + wrkDetl.setAnfme(paramMat.getAnfme()); + wrkDetl.setZpallet(param.getBarcode()); +// wrkDetl.setAnfme(1.0D); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + } + +// // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y +// Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() +// .eq("zpallet", barcode); +// WaitPakin setParam = new WaitPakin(); +// setParam.setIoStatus("Y"); +// setParam.setModiTime(now); +// if (!waitPakinService.update(setParam, wrapper)) { +// throw new CoolException("鏇存柊閫氱煡妗eけ璐�"); +// } + + + // 鏇存柊鐩爣搴撲綅鐘舵�� + + if (locMast1.getLocSts().equals("O")){ + locMast1.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast1.setModiTime(now); + if (!locMastService.updateById(locMast1)){ + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException(locMast1.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + } + + } @@ -191,7 +247,7 @@ // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰� // 淇敼鏄庣粏 if (!wrkDetlService.updateAnfme(wrkDetl1.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { - throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触"); + throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�"); } } iterator.remove(); @@ -204,7 +260,7 @@ for (WrkDetl wrkDetl : wrkDetls) { // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰� if (!wrkDetlService.updateAnfme(-1.0D, wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { - throw new CoolException("鍒犻櫎" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触"); + throw new CoolException("鍒犻櫎" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷换鍔℃槑缁嗗け璐�"); } } @@ -221,7 +277,7 @@ wrkDetl.setAppeTime(now); wrkDetl.setAppeUser(userId); if (!wrkDetlService.insert(wrkDetl)) { - throw new CoolException("娣诲姞" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触"); + throw new CoolException("娣诲姞" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷换鍔℃槑缁嗗け璐�"); } } @@ -266,7 +322,10 @@ throw new CoolException(elem.getMatnr() + "鏉$爜宸蹭笅绾匡紝璇锋鏌ワ紒"); } } - DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); + Mat analyse = MatUtils.analyseMat(elem.getMatnr()); + // 鏉$爜銆佺墿鏂欎唬鐮併�佸簭鍒楀彿銆佹暟閲� + DetlDto detlDto = new DetlDto(elem.getMatnr(), analyse.getMatnr(), analyse.getBarcode(), elem.getAnfme()); +// DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); assert one != null; @@ -277,7 +336,53 @@ }); if (packDown) { - // 鏁版嵁涓婃姤 todo + MesCombParam mesCombParam = new MesCombParam(); + mesCombParam.setZpallet(param.getBarcode()); + mesCombParam.setPakinTime(DateUtils.convert(now)); + mesCombParam.setLgort("5008"); + mesCombParam.setPlantCode("5000"); + mesCombParam.setFromCode("5012-20"); + mesCombParam.setStationCode("JJQ-PFZPDB-XX"); + for (DetlDto detlDto : detlDtos) { + mesCombParam.getList().add(new MesCombParam.Detl(detlDto.getOrderNo(), detlDto.getAnfme())); + } + String response = ""; + boolean success = false; + try { + response = new HttpHandler.Builder() + .setUri(MesConstant.URL) + .setPath(MesConstant.PACK_DOWN_URL) + .setJson(JSON.toJSONString(mesCombParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + success = true; + } else if (jsonObject.getInteger("code").equals(500)) { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response); + throw new CoolException(jsonObject.getString("msg")); + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), 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(mesCombParam), + response, + success + ); + } catch (Exception e) { log.error("", e); } + } + } // 鐢熸垚鍏ュ簱鍗曟嵁 @@ -298,6 +403,19 @@ // 鐢熸垚鍏ュ簱閫氱煡妗� for (DetlDto detlDto : detlDtos) { + + // 淇敼浣滀笟鏁伴噺 ---------------------------------------- + // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙 + OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), detlDto.getMatnr(), detlDto.getBatch()); + if (detlDto.getAnfme() > orderDetl.getEnableQty()) { + throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + } + // 淇敼璁㈠崟鏄庣粏鏁伴噺 + if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触"); + } + + // 淇濆瓨鍏ュ簱閫氱煡妗� Mat mat = matService.selectByMatnr(detlDto.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); @@ -318,7 +436,7 @@ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); } // 淇敼鎵撳寘鏁版嵁鐘舵�� - Pack pack = packService.selectByBarcode(detlDto.getMatnr()); + Pack pack = packService.selectByBarcode(detlDto.getOrderNo()); pack.setSettle(2L); pack.setUpdateTime(now); pack.setUpdateBy(userId); -- Gitblit v1.9.1