From b67e67a182969b4dbfcd7eff423dca8c27f08683 Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期三, 11 十二月 2024 16:22:53 +0800 Subject: [PATCH] 添加异常打印日志并优化处理逻辑 --- src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java | 198 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 159 insertions(+), 39 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 3f5d2cd..646d5a2 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,8 @@ 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.*; +import java.util.stream.Collectors; @Service public class AutoReplenishmentHandler extends AbstractHandler<String> { @@ -35,7 +37,27 @@ private WrkDetlService wrkDetlService; @Autowired private OrderService orderService; + @Autowired + private SnowflakeIdWorker snowflakeIdWorker; + + @Transactional + public ReturnT<String> create(Mat mat, double anfme) { + //鍒涘缓涓�涓柊鐨勮嚜鍔ㄨˉ璐у崟鎹� + Order order = createOrder(); + orderService.insert(order); + OrderDetl orderDetl = createOrderDetl(order); + orderDetl.setMatnr(mat.getMatnr()); + orderDetl.setMaktx(mat.getMaktx()); + orderDetl.setSpecs(mat.getSpecs()); + orderDetl.setAnfme(anfme); + orderDetl.setQty(0.0); + + + orderDetlService.insert(orderDetl); + + return SUCCESS; + } @Transactional public ReturnT<String> start(Order order) { @@ -59,8 +81,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,21 +153,50 @@ } String matnr = orderDetl.getMatnr(); - String batch = orderDetl.getBatch(); - String csocode = orderDetl.getThreeCode(); - String isocode = orderDetl.getDeadTime(); - Double orderAnfme = orderDetl.getAnfme(); + double orderAnfme = orderDetl.getAnfme(); //List<String> locNosSearch = locDetlService.selectLocNo(matnr); - Set<String> locNosSearch = locDetlService.selectLocNo(matnr, batch, csocode, isocode); + Set<String> locNosSearch = locDetlService.selectLocNos(matnr); - for(String locNo : locNosSearch){ + //杩囨护搴撲綅璐х墿涓洪珮璐х墿 + locNosSearch = locNosSearch.stream().filter(locNo -> { + LocMast locMast = locMastService.selectByLoc(locNo); + if(locMast.getLocType1() == 3){ + return false; + }else { + //涓旀娴嬭搴撲綅鏄惁鍚病鏈夎揣鏋剁爜鐨勭墿鏂欙紝濡傛湁鏈夊垯涓嶅厑璁稿嚭搴� +// LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locNo) +// .andNew().eq("supp_code", "").or().isNull("supp_code")); + + if(Cools.isEmpty(locDetlService.selectByLocWithoutContainer(locNo))){ + return true; + }else { + return false; + } + } + }).collect(Collectors.toSet()); + + //閲嶆柊鎺掑簭 + 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){ @@ -98,37 +205,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){ @@ -156,6 +275,7 @@ //wrkMast.setModiUser(userId); wrkMast.setModiTime(now); + //琛ヨ揣鏍囪瘑 wrkMast.setMk("Y"); if (!wrkMastService.insert(wrkMast)) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+locNo); -- Gitblit v1.9.1