From d87f68eb535935814f287b3740474e7eb24b3643 Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期三, 22 十一月 2023 09:10:23 +0800 Subject: [PATCH] 自动补货流程更新 --- src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java | 177 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 141 insertions(+), 36 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 3b95b94..044917d 100644 --- a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java @@ -1,11 +1,15 @@ package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; +import com.core.common.DateUtils; +import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; 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; @@ -13,10 +17,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; @Service public class AutoReplenishmentHandler extends AbstractHandler<String> { @@ -35,7 +36,26 @@ private WrkDetlService wrkDetlService; @Autowired private OrderService orderService; + @Autowired + private SnowflakeIdWorker snowflakeIdWorker; + + @Transactional + public ReturnT<String> create(Mat mat, double anfme) { + //鍒涘缓涓�涓柊鐨勮嚜鍔ㄨˉ璐у崟鎹� + Order order = createOrder(); + OrderDetl orderDetl = createOrderDetl(order); + orderDetl.setMatnr(mat.getMatnr()); + orderDetl.setMaktx(mat.getMaktx()); + orderDetl.setSpecs(mat.getSpecs()); + orderDetl.setAnfme(anfme); + orderDetl.setQty(0.0); + + orderService.insert(order); + orderDetlService.insert(orderDetl); + + return SUCCESS; + } @Transactional public ReturnT<String> start(Order order) { @@ -59,8 +79,64 @@ order.setSettle(2L); orderService.updateById(order); - return SUCCESS; + } + + private Order createOrder(){ + Date now = new Date(); + return new Order( + String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] + "AUTO" + snowflakeIdWorker.nextId(), // 璁㈠崟缂栧彿 + DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 + 21L, // 鍗曟嵁绫诲瀷 21.鑷姩琛ヨ揣鍗� + null, // 椤圭洰缂栧彿 + null, // + null, // 璋冩嫧椤圭洰缂栧彿 + null, // 鍒濆绁ㄦ嵁鍙� + null, // 绁ㄦ嵁鍙� + null, // 瀹㈡埛缂栧彿 + null, // 瀹㈡埛 + null, // 鑱旂郴鏂瑰紡 + null, // 鎿嶄綔浜哄憳 + null, // 鍚堣閲戦 + null, // 浼樻儬鐜� + null, // 浼樻儬閲戦 + null, // 閿�鍞垨閲囪喘璐圭敤鍚堣 + null, // 瀹炰粯閲戦 + null, // 浠樻绫诲瀷 + null, // 涓氬姟鍛� + null, // 缁撶畻澶╂暟 + null, // 閭垂鏀粯绫诲瀷 + null, // 閭垂 + null, // 浠樻鏃堕棿 + null, // 鍙戣揣鏃堕棿 + null, // 鐗╂祦鍚嶇О + null, // 鐗╂祦鍗曞彿 + 1L, // 璁㈠崟鐘舵�� + 1, // 鐘舵�� + 9999L, // 娣诲姞浜哄憳 + now, // 娣诲姞鏃堕棿 + 9999L, // 淇敼浜哄憳 + now, // 淇敼鏃堕棿 + null // 澶囨敞 + ); + + } + + private OrderDetl createOrderDetl(Order order){ + Date now = new Date(); + OrderDetl orderDetl = new OrderDetl(); + + orderDetl.setOrderId(order.getId()); + orderDetl.setOrderNo(order.getOrderNo()); + orderDetl.setCreateBy(order.getCreateBy()); + orderDetl.setCreateTime(now); + orderDetl.setUpdateBy(order.getCreateBy()); + orderDetl.setUpdateTime(now); + orderDetl.setStatus(1); + orderDetl.setQty(0.0D); + + return orderDetl; } private Set<String> pakoutLoc(Order order){ @@ -75,16 +151,32 @@ } String matnr = orderDetl.getMatnr(); - Double orderAnfme = orderDetl.getAnfme(); - List<String> locNosSearch = locDetlService.selectLocNo(matnr); + double orderAnfme = orderDetl.getAnfme(); - for(String locNo : locNosSearch){ + //List<String> locNosSearch = locDetlService.selectLocNo(matnr); + Set<String> locNosSearch = locDetlService.selectLocNos(matnr); + + //閲嶆柊鎺掑簭 骞朵笖妫�娴嬭搴撲綅鏄惁鍚病鏈夋枡绠辩爜鐨勭墿鏂欙紝濡傛湁鏈夊垯涓嶅厑璁稿嚭搴� + 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(); + }else { + OrderDetl odNew = createOrderDetl(order); + odNew.setMatnr(locDetl.getMatnr()); + odNew.setMaktx(locDetl.getMaktx()); + odNew.setBatch(locDetl.getBatch()); + odNew.setThreeCode(locDetl.getThreeCode()); + odNew.setDeadTime(locDetl.getDeadTime()); + odNew.setSpecs(locDetl.getSpecs()); + odNew.setAnfme(0.0); + odNew.setQty(locDetl.getAnfme()); + orderDetlService.insert(odNew); } } if(orderAnfme <= 0){ @@ -93,37 +185,49 @@ break; } } + if(orderAnfme > 0){ + orderDetl.setAnfme(orderDetl.getAnfme() - orderAnfme); + orderDetl.setQty(orderDetl.getAnfme()); + orderDetlService.updateById(orderDetl); + } } -// orderDetlList.forEach(orderDetl -> { -// -// if(orderDetl.getAnfme() - orderDetl.getQty() <= 0){ -// cont -// } -// -// String matnr = orderDetl.getMatnr(); -// Double orderAnfme = orderDetl.getAnfme(); -// -// List<String> locNosSearch = locDetlService.selectLocNo(matnr); -// -// for(String locNo : locNosSearch){ -// 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; + } + + //鏍规嵁娣辨祬搴撲綅杩涜閲嶆柊鎺掑簭 + 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){ @@ -151,6 +255,7 @@ //wrkMast.setModiUser(userId); wrkMast.setModiTime(now); + //琛ヨ揣鏍囪瘑 wrkMast.setMk("Y"); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+locNo); -- Gitblit v1.9.1