From 6494d25e5677f2e81c898006b3aada6260511f33 Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期四, 24 七月 2025 09:41:32 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 202 ++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 168 insertions(+), 34 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 f7a6ce8..2dfd83b 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -12,19 +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.LocDto; -import com.zy.common.model.TaskDto; +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 javax.annotation.Resource; -import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * Created by vincent on 2022/4/9 @@ -63,6 +65,21 @@ @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 @@ -140,46 +157,163 @@ } @Override - @Transactional - public R outbound(List<LocDto> locDtos) throws InterruptedException { - if (Cools.isEmpty(locDtos)) { - return R.parse(BaseRes.PARAM); + public R barcodeVerificatio(String barcode) { + + if (!barcode.matches("\\d{8}")) { + return R.parse("鏉$爜涓嶆槸8浣嶆暟瀛楋細" + barcode); } - boolean lack = true; - for (LocDto locDto : locDtos) { - if (!locDto.isLack()) { - lack = false; + + 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 (lack) { - return R.error("搴撳瓨涓嶈冻"); + if (outSite == null) { + outSite = 123; } - Thread.sleep(1000L); + Date now = new Date(); - List<TaskDto> taskDtos = new ArrayList<>(); - // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔� - for (LocDto locDto : locDtos) { - if (locDto.isLack()) { - continue; + // 鑾峰彇鍗曟嵁 + 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槑缁嗗け璐�"); } - TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto); - if (TaskDto.has(taskDtos, taskDto)) { - TaskDto dto = TaskDto.find(taskDtos, taskDto); - assert dto != null; - dto.getLocDtos().addAll(taskDto.getLocDtos()); - } else { - taskDtos.add(taskDto); + // 淇敼璁㈠崟鏄庣粏 + if (!orderDetlService.increaseWorkQty(orderDetl, orderDetl.getAnfme())) { + throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); } } - // ----------------------------------------------------------------------------------------------- - for (TaskDto taskDto : taskDtos) { - BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo()); - workService.stockOut(staNo, taskDto, null); + // 淇敼璁㈠崟鐘舵�� + 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 @@ -572,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("鍟嗗搧缂栫爜涓嶈兘涓虹┖"); } @@ -670,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