From 58137d4f560dc16900ea99e0a7a07080b7751e5f Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期一, 20 十一月 2023 20:17:47 +0800 Subject: [PATCH] Merge branch 'tzskasrs' of http://47.97.1.152:5880/r/zy-asrs into tzskasrs --- src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java | 163 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 130 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java index 2a9cb89..cd21bd0 100644 --- a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java @@ -1,24 +1,21 @@ package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; import com.core.exception.CoolException; -import com.zy.asrs.entity.LocDetl; -import com.zy.asrs.entity.LocMast; -import com.zy.asrs.entity.Order; -import com.zy.asrs.entity.OrderDetl; -import com.zy.asrs.service.LocDetlService; -import com.zy.asrs.service.LocMastService; -import com.zy.asrs.service.OrderDetlService; -import com.zy.asrs.service.WorkService; +import com.zy.asrs.entity.*; +import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.utils.Utils; +import com.zy.common.model.enums.WorkNoType; +import com.zy.common.service.CommonService; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; @Service public class AutoReplenishmentHandler extends AbstractHandler<String> { @@ -30,10 +27,18 @@ @Autowired private LocMastService locMastService; @Autowired - private WorkService workService; + private CommonService commonService; + @Autowired + private WrkMastService wrkMastService; + @Autowired + private WrkDetlService wrkDetlService; + @Autowired + private OrderService orderService; + @Transactional public ReturnT<String> start(Order order) { + Date now = new Date(); Set<String> locNos = pakoutLoc(order); for (String locNo : locNos){ @@ -42,10 +47,16 @@ throw new CoolException("搴撲綅鐘舵�佸凡鍙樻洿"); } //鐢熸垚宸ヤ綔妗� - + WrkMast wrkMast = createWrkMast(locNo,locMast.getBarcode(),now); //鐢熸垚宸ヤ綔妗f槑缁� + List<LocDetl> locDetls = locDetlService.selectByLocNo(locNo); + createWrkDetl(locDetls, wrkMast,order.getOrderNo(),now); //淇敼搴撲綅鐘舵�� + locMast.setLocSts("R"); + locMastService.updateByLocNo(locMast); } + order.setSettle(2L); + orderService.updateById(order); return SUCCESS; @@ -56,44 +67,130 @@ Set<String> locNos = new HashSet<>(); //鏍规嵁璁㈠崟鐢熸垚鍥涢」搴撳嚭搴撳伐浣滄。 List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo())); - orderDetlList.forEach(orderDetl -> { + + for(OrderDetl orderDetl : orderDetlList){ + if(orderDetl.getAnfme() - orderDetl.getQty() <= 0){ + continue; + } + String matnr = orderDetl.getMatnr(); + String batch = orderDetl.getBatch(); + String csocode = orderDetl.getThreeCode(); + String isocode = orderDetl.getDeadTime(); + Double orderAnfme = orderDetl.getAnfme(); - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() - .eq("matnr", matnr) - .eq("loc_sts","F") - .groupBy("loc_no")); - for (LocDetl locDetl : locDetls){ - String locNo = locDetl.getLocNo(); - //璁㈠崟寰呭嚭鏁伴噺鍑忓幓搴撳瓨鏁伴噺 - orderAnfme -= locDetl.getAnfme(); - //娣诲姞寰呭嚭搴撳簱浣� - locNos.add(locNo); + //List<String> locNosSearch = locDetlService.selectLocNo(matnr); + Set<String> locNosSearch = locDetlService.selectLocNo(matnr, batch, csocode, isocode); + //閲嶆柊鎺掑簭 骞朵笖妫�娴嬭搴撲綅鏄惁鍚病鏈夋枡绠辩爜鐨勭墿鏂欙紝濡傛湁鏈夊垯涓嶅厑璁稿嚭搴� + Set<String> resort = resort(locNosSearch); + + for(String locNo : resort){ + List<LocDetl> locDetls = locDetlService.selectByLocNo(locNo); + locNos.add(locNo); + for (LocDetl locDetl :locDetls){ + if(matnr.equals(locDetl.getMatnr())){ + orderAnfme -= locDetl.getAnfme(); + } + } if(orderAnfme <= 0){ orderDetl.setQty(orderDetl.getAnfme() - orderAnfme); orderDetlService.updateById(orderDetl); break; } } - - }); + } return locNos; } - public static void main(String[] args) { - for (int i=0; i<10; i++){ - for (int y=0; y<10; y++){ - System.out.println(i); - System.out.println(y); - if(y == 5){ - break; + //鏍规嵁娣辨祬搴撲綅杩涜閲嶆柊鎺掑簭 + private Set<String> resort(Set<String> locNos){ + Set<String> locNosResort = new LinkedHashSet<>(); + + for(String locNoSearch : locNos){ + LocMast locMast = locMastService.selectById(locNoSearch); + if(!"F".equals(locMast.getLocSts())){ + continue; + } + + List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNoSearch); + + if(Cools.isEmpty(groupOuterLoc)){ + locNosResort.add(locNoSearch); + }else { + groupOuterLoc.add(locNoSearch); + //濡傛灉鏄繁搴撲綅锛屽垯鍏堟壘澶栦晶鐨勫簱浣� + for (String locNoOut : groupOuterLoc){ + LocMast locMastOuter = locMastService.selectById(locNoOut); + //澶栦晶濡傛灉鏄嫞鏂欙紝鍒欏唴娴嬩笉鍏佽鍑� + if("P".equals(locMastOuter.getLocSts()) || "Q".equals(locMastOuter.getLocSts()) || "S".equals(locMastOuter.getLocSts())){ + break; + } + + if(!"F".equals(locMastOuter.getLocSts())){ + continue; + } + locNosResort.add(locNoOut); + } } } + return locNosResort; } + private WrkMast createWrkMast(String locNo,String barCode,Date now){ + int ioType = 101; + int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟 + wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� + wrkMast.setIoPri(300D); // 浼樺厛绾э細13 + //wrkMast.setOutMost(outMost?1:0);; + //wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo()); + //wrkMast.setSourceStaNo(loc); // 婧愮珯 + wrkMast.setStaNo(300); // 鐩爣绔� + wrkMast.setSourceLocNo(locNo); // 婧愬簱浣� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setBarcode(barCode); + //wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + //wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + + wrkMast.setMk("Y"); + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+locNo); + } + return wrkMast; + } + + private void createWrkDetl(List<LocDetl> locDetls, WrkMast wrkMast,String orderNo, Date now){ + locDetls.forEach(locDetl -> { + WrkDetl wrkDetl = new WrkDetl(); + BeanUtils.copyProperties(locDetl,wrkDetl); + wrkDetl.setZpallet(wrkMast.getBarcode()); + wrkDetl.setIoTime(now); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + //wrkDetl.setBatch(locDetl.getBatch()); + wrkDetl.setOrderNo(orderNo); + //wrkDetl.setAnfme(locDetl.getAnfme()); // 鏁伴噺 + wrkDetl.setAppeTime(now); + //wrkDetl.setAppeUser(userId); + wrkDetl.setModiTime(now); + //wrkDetl.setSuppCode(locDetl.getSuppCode()); + //wrkDetl.setModiUser(userId); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + }); + } } -- Gitblit v1.9.1