From 1de6f17f5cfeeb66205ffadd3b1ed68d40c62581 Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期五, 06 六月 2025 10:44:11 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 273 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index 83d3856..2dfd83b 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -1,8 +1,9 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.BaseRes; import com.core.common.Cools; -import com.core.common.DateUtils; +import com.core.common.R; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; @@ -11,17 +12,21 @@ import com.zy.asrs.entity.result.StockVo; import com.zy.asrs.mapper.TagMapper; import com.zy.asrs.service.*; +import com.zy.asrs.utils.MatCompareUtils; import com.zy.asrs.utils.MatUtils; -import com.zy.common.model.DetlDto; +import com.zy.common.model.enums.WorkNoType; +import com.zy.common.service.CommonService; import com.zy.common.utils.NodeUtils; +import com.zy.third.erp.task.ERPOutHedTBScheduler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; +import javax.annotation.Resource; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * Created by vincent on 2022/4/9 @@ -48,6 +53,267 @@ private TagService tagService; @Autowired private TagMapper tagMapper; + + @Resource + private WaitPakinService waitPakinService; + + @Resource + private WrkDetlService wrkDetlService; + + @Resource + private WorkService workService; + + @Resource + private BasDevpService basDevpService; + + @Resource + private LocMastService locMastService; + + @Resource + private StaDescService staDescService; + + @Resource + private CommonService commonService; + + @Resource + private WrkMastService wrkMastService; + + @Resource + private ERPOutHedTBScheduler erpOutHedTBScheduler; + + + @Override + @Transactional + public R grouping(AgvGroupingParam param) { + + if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { + throw new CoolException(BaseRes.PARAM); + } + + // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 + if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). + eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { + throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); + } + + if (param.getBarcode().length() != 8) { + throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + 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()); + } + + Date now = new Date(); + + Order order = orderService.selectOne(new EntityWrapper<Order>().eq("temp1", param.getOrderNo())); + if (Cools.isEmpty(order) || order.getSettle() > 2) { + throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); + } + // 鐢熸垚鍏ュ簱閫氱煡妗� + param.getCombMats().forEach(elem -> { + + // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙 + OrderDetl orderDetl = orderDetlService.selectById(elem.getDetlId()); + if (elem.getAnfme() > orderDetl.getEnableQty()) { + throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + } + // 淇敼璁㈠崟浣滀笟鏁伴噺 + if (!orderDetlService.increaseWorkQty(orderDetl, elem.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); + } + + Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(orderDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + WaitPakin waitPakin = new WaitPakin(); + waitPakin.sync(mat); + waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 + waitPakin.setBatch(orderDetl.getBatch()); // 搴忓垪鐮� + waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� + waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� + waitPakin.setAnfme(elem.getAnfme()); // 鏁伴噺 + waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setAppeTime(now); + waitPakin.setModiTime(now); + + waitPakin.setBatch(orderDetl.getBatch()); + waitPakin.setSPgNO(orderDetl.getSPgNO()); + waitPakin.setOutOrderNo(orderDetl.getOutOrderNo()); + waitPakin.setProType(orderDetl.getProType()); + waitPakin.setLuHao(orderDetl.getLuHao()); + waitPakin.setPacking(orderDetl.getPacking()); + if (!waitPakinService.insert(waitPakin)) { + throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); + } + }); + + orderService.updateSettle(order.getId(), 2L, null); + return R.ok("缁勬墭鎴愬姛"); + } + + @Override + public R barcodeVerificatio(String barcode) { + + if (!barcode.matches("\\d{8}")) { + return R.parse("鏉$爜涓嶆槸8浣嶆暟瀛楋細" + barcode); + } + + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", barcode)); + int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", barcode)); + int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", barcode)); + + if (countLoc > 0) { + return R.parse("搴撳瓨宸插瓨鍦ㄨ鏉$爜锛�" + barcode); + } else if (countWrk > 0) { + return R.parse("璇ユ潯鐮佸凡鐢熸垚宸ヤ綔妗o細" + barcode); + } else if (countwait > 0) { + return R.parse("璇ユ潯鐮佸凡鐢熸垚鍏ュ簱閫氱煡妗o細" + barcode); + } + + return R.ok("鏍¢獙鎴愬姛"); + } + + @Override + @Transactional + public R outbound(OutBoundParam param) { + + // 鎵樼洏鐮� + String barcode = param.getBarcode(); + + // 鍗曟嵁缂栧彿 + String orderNo = param.getOrderNo(); + + // 鏍规嵁鎵樼洏鐮佹煡璇㈠簱瀛樻槑缁� + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("zpallet", barcode)); + List<String> locNos = locDetls.stream().map(LocDetl::getLocNo).distinct().collect(Collectors.toList()); + if (locDetls.size() == 0) { + return R.parse("璇ユ墭鐩樼爜涓嶅瓨鍦ㄥ簱瀛橈細" + barcode); + } else if (locNos.size() > 1) { + return R.parse("璇ユ墭鐩樼爜鏈夊涓簱浣嶏細" + barcode); + } + + // 搴撲綅鍙� + String locNo = locNos.get(0); + + // 鍑哄簱绔欑偣 + Integer outSite = null; + List<BasDevp> devps = basDevpService.selectList(new EntityWrapper<BasDevp>().in("dev_no", 223, 123)); + for (BasDevp basDevp : devps) { + // 鏃犲伐浣滃彿锛屾棤鐗� + if (basDevp.getWrkNo() == 0 && basDevp.getLoading().equals("N")) { + outSite = basDevp.getDevNo(); + break; + } + } + if (outSite == null) { + outSite = 123; + } + + Date now = new Date(); + + // 鑾峰彇鍗曟嵁 + Order order = orderService.selectByNo(orderNo); + if (order == null) { + erpOutHedTBScheduler.OutHedTBScheduler(orderNo); + order = orderService.selectByNo(orderNo); +// int i = 30; +// while (i >= 0) { +// try { +// Thread.sleep(1000); +// System.out.println(i); +// } catch (InterruptedException e) { +// throw new RuntimeException(e); +// } +// order = orderService.selectByNo(orderNo); +// if (order != null) { +// break; +// } +// i--; +// } + } + if (order == null) { + return R.parse("鍗曟嵁涓嶅瓨鍦細" + orderNo); + } + // 鑾峰彇鍗曟嵁鏄庣粏 + List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); + + // 瀵规瘮搴撳瓨鏄庣粏鍜屽嚭搴撳崟鎹槑缁嗘槸鍚︿竴鑷� + boolean flag = MatCompareUtils.compareAndCheckCancellation(locDetls, orderDetlList); + if (!flag) { + return R.parse("搴撳瓨鏄庣粏鍜屽崟鎹槑缁嗕笉涓�鑷达紝璇锋鏌ワ紝鍗曟嵁缂栧彿锛�" + orderNo); + } + + // 鑾峰彇搴撲綅 + LocMast locMast = locMastService.selectById(locNo); + // 鑾峰彇璺緞 + int ioType = 101; + StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), outSite); + // 鐢熸垚宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setInvWh(param.getEndLocation()); // 鍦扮爜 + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� + wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 + wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� + wrkMast.setSourceLocNo(locNo); // 婧愬簱浣� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setBarcode(barcode); + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locNo); + } + + // 鐢熸垚宸ヤ綔妗f槑缁� + for (OrderDetl orderDetl : orderDetlList) { + + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.setWrkNo(workNo); + wrkDetl.sync(orderDetl); + wrkDetl.setZpallet(wrkMast.getBarcode()); + wrkDetl.setIoTime(now); + wrkDetl.setOrderNo(orderNo); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + // 淇敼璁㈠崟鏄庣粏 + if (!orderDetlService.increaseWorkQty(orderDetl, orderDetl.getAnfme())) { + throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); + } + } + // 淇敼璁㈠崟鐘舵�� + orderService.updateSettle(order.getId(), 2L, null); + // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓� + if (locMast.getLocSts().equals("F")) { + locMast.setLocSts("R"); + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locNo); + } + } else { + throw new CoolException(locNo + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); + } + return R.ok("鍑哄簱鎴愬姛"); + } + + @Override @Transactional @@ -440,12 +706,12 @@ @Override @Transactional public void syncMat(MatSyncParam param) { - if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) { + if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <= 0) { throw new CoolException("鍟嗗搧鏁版嵁涓虹┖"); } - for(MatSyncParam.MatParam matParam : param.getMatDetails()){ - if(Cools.isEmpty(matParam.getMatnr())){ + for (MatSyncParam.MatParam matParam : param.getMatDetails()) { + if (Cools.isEmpty(matParam.getMatnr())) { throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖"); } @@ -538,7 +804,7 @@ } } else { mat.sync(param); - if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) { + if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) { throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳"); } } -- Gitblit v1.9.1