From 64781aac1c41bb8c4dda2deb4dc7ae98cace8315 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 07 十一月 2025 09:08:57 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/controller/OpenController.java    |   30 ++++++
 src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java      |  206 +++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |    2 
 src/main/java/com/zy/asrs/entity/param/StockOutParam.java   |    1 
 src/main/java/com/zy/asrs/controller/WorkController.java    |    1 
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |   30 ++++++
 src/main/java/com/zy/asrs/service/OpenService.java          |    2 
 src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java |    1 
 8 files changed, 272 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 6555bca..44751bb 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -305,6 +305,36 @@
         return R.ok();
     }
 
+
+
+    /**
+     * 娣诲姞鍑哄簱鍗曘�佹甯搁��搴撹嚦浜屾ゼ鍖呰
+     */
+    @PostMapping("/order/normalTransferToTheSecond-floorPackagingArea/v1")
+    @AppAuth(memo = "姝e父閫�搴撹嚦浜屾ゼ鍖呰")
+    public synchronized R packagingAreaOrderCreate(@RequestHeader(required = false) String appkey,
+                                            @RequestBody QualityInspectionParam param,
+                                            HttpServletRequest request) {
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        //鍒ゆ柇param鍙傛暟
+        if (Cools.isEmpty(param.getBoxNo())){
+            throw new CoolException("鍙傛暟锛氱鍙� boxNo涓虹┖");
+        }
+        //鍒ゆ柇param鍙傛暟
+        if (Cools.isEmpty(param.getModel())){
+            throw new CoolException("鍙傛暟锛氬嵎鍙� Model涓虹┖");
+        }
+        //鍒ゆ柇param鍙傛暟
+        if (Cools.isEmpty(param.getMemo())){
+            throw new CoolException("鍙傛暟锛氬娉� Memo涓虹┖");
+        }
+
+        return openService.packagingAreaOrderCreate(param);
+    }
+
     /*...........................涓婇ザ姹熼摐..............浠ヤ笂.............寰愬伐姹変簯...........................*/
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index 0fb0d13..c55fc5f 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -96,6 +96,7 @@
     @RequestMapping("/plate/order/out/start")
     @ManagerAuth(memo = "鎵嬪姩璁㈠崟鍑哄簱浣滀笟")
     public R fullStoreTakeStartOrder(@RequestBody StockOutParam param) {
+        param.setOrderName("鎵嬪姩鍑哄簱鍗�");
         workService.startupFullTakeStoreOrder(param, getUserId());
         return R.ok("鍑哄簱鍚姩鎴愬姛");
     }
diff --git a/src/main/java/com/zy/asrs/entity/param/StockOutParam.java b/src/main/java/com/zy/asrs/entity/param/StockOutParam.java
index 5143458..0f44e5f 100644
--- a/src/main/java/com/zy/asrs/entity/param/StockOutParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/StockOutParam.java
@@ -16,6 +16,7 @@
     private String orderNo;
     private String cstmrName;
     private Date nowTime;
+    private String orderName;
 
     // 鐗╂枡缂栧彿闆嗗悎
     private List<LocDetl> locDetls;
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 3909563..164bd6b 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.service;
 
+import com.core.common.R;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.entity.result.OpenOrderCompeteResult;
 import com.zy.asrs.entity.result.StockVo;
@@ -59,5 +60,6 @@
 
     void cs2();
     void qualityInspection(QualityInspectionParam param);
+    R packagingAreaOrderCreate(QualityInspectionParam param);
 
 }
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 282662d..09322fe 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -12,6 +12,7 @@
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.MatUtils;
+import com.zy.asrs.utils.OrderOutBatchUtil;
 import com.zy.asrs.utils.PostMesDataUtils;
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.LocTypeDto;
@@ -1131,5 +1132,34 @@
 
     }
 
+    /*
+     * 姝e父閫�搴撹嚦浜屾ゼ鍖呰
+     * */
+    @Override
+    @Transactional
+    public R packagingAreaOrderCreate(QualityInspectionParam param) {
+        try{
+//            String[] split = param.getModel().split(",");
+//            if (Cools.isEmpty(split)){
+//                throw new CoolException("鍙傛暟锛氬嵎鍙� Model涓虹┖,瑙f瀽澶辫触锛侊紒锛�");
+//            }
+            List<String[]> OutLocBoxCs = new ArrayList<>();
+            String orderNo = "TK" + snowflakeIdWorker.nextId();
+            String cstmrName = "鏈煡";
+//            for (String model:split){
+                String[] outLocBox = new String[]{param.getBoxNo(),orderNo,cstmrName,param.getMemo(),"闅忔剰"};
+                OutLocBoxCs.add(outLocBox);
+//            }
+
+            if (!OutLocBoxCs.isEmpty()){
+                OrderOutBatchUtil orderOutBatchUtil = new OrderOutBatchUtil(orderNo,cstmrName,"","MES涓嬪彂閫�璐ц嚦浜屾ゼ","閫�璐ц嚦浜屾ゼ");
+                return orderOutBatchUtil.setOrderOutBatch(OutLocBoxCs);
+            }
+        } catch (Exception e) {
+            throw new CoolException("瀵瑰簲绠卞彿锛�"+param.getBoxNo()+"鐨勭墿鏂欓��搴撹嚦2妤煎け璐�"+e.getMessage());
+        }
+        return R.error("瀵瑰簲绠卞彿锛�"+param.getBoxNo()+"鐨勭墿鏂欓��搴撹嚦2妤煎け璐�");
+    }
+
     /*...........................涓婇ザ姹熼摐..............浠ヤ笂.............寰愬伐姹変簯...........................*/
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index f6745c7..8ec49ac 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -203,7 +203,7 @@
         if (Cools.isEmpty(param.getOrderNo())){
             throw new CoolException("璁㈠崟鍙峰弬鏁颁负绌�");
         }
-        DocType docType = docTypeService.selectOrAdd("鎵嬪姩鍑哄簱鍗�", Boolean.FALSE);
+        DocType docType = docTypeService.selectOrAdd(param.getOrderName(), Boolean.FALSE);
         Order order = orderService.selectByNo(param.getOrderNo());
         if (Cools.isEmpty(order)){
             Date now = new Date();
diff --git a/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java b/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java
new file mode 100644
index 0000000..d0ed13f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/OrderOutBatchUtil.java
@@ -0,0 +1,206 @@
+package com.zy.asrs.utils;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.service.LocDetlService;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WorkService;
+import com.zy.common.model.LocDto;
+import com.zy.common.properties.SlaveProperties;
+import com.zy.system.entity.OperateLog;
+import com.zy.system.service.OperateLogService;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import static org.reflections.Reflections.log;
+
+public class OrderOutBatchUtil {
+    private String errorMsgOrderLoc = "";
+    private boolean sign = true;
+    private String orderOneNo = null;
+    private String cstmrName = null;
+    private String ip = "";
+    private String action = "";
+    private String orderName = "";
+    private Long userId = 9999L;
+
+
+    public OrderOutBatchUtil() {
+        this.sign = true;
+        this.errorMsgOrderLoc = "";
+    }
+
+    public OrderOutBatchUtil(String orderOneNo, String cstmrName) {
+        this.errorMsgOrderLoc = "";
+        this.sign = true;
+        this.orderOneNo = orderOneNo;
+        this.cstmrName = cstmrName;
+    }
+
+    public OrderOutBatchUtil(String orderOneNo, String cstmrName, String ip, String action,String orderName) {
+        this.errorMsgOrderLoc = "";
+        this.sign = true;
+        this.orderOneNo = orderOneNo;
+        this.cstmrName = cstmrName;
+        this.ip = ip;
+        this.action = action;
+        this.orderName = orderName;
+        this.userId = 9999L;
+    }
+
+    public R setOrderOutBatch() {
+        return R.ok();
+    }
+
+
+    public R setOrderOutBatch(List<String[]> OutLocBoxCs) {
+        int total = OutLocBoxCs.size();
+        if (!Cools.isEmpty(OutLocBoxCs) && !OutLocBoxCs.isEmpty()) {
+            LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
+            LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+            SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class);
+            WorkService workService = SpringUtils.getBean(WorkService.class);
+            List<LocDto> locDtos = new ArrayList<>();
+            List<String[]> outLocBoxCList = new ArrayList<>();
+            List<String> outLocBoxCNew = new ArrayList<>();
+            for (String[] outLocBoxC : OutLocBoxCs) {
+                total--;
+                if (!outLocBoxCNew.contains(outLocBoxC[0])) {
+                    LocDetl locDetlSou = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0]));
+                    if (Cools.isEmpty(locDetlSou)) {
+                        sign = false;
+                        errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC[0] + " 鏈煡璇㈠埌鏁版嵁锛侊紒锛併��===]";
+                        continue;
+//                        throw new CoolException("绠卞彿锛�"+outLocBoxC[0]+" 鏈煡璇㈠埌鏁版嵁锛侊紒锛�");
+                    }
+//                    if (!locDetlSou.getDanger$().equals(outLocBoxC[4])) {
+//                        sign = false;
+//                        errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC[0] + " ==銆嬪嚭搴撹緭鍏ュ緟鍒ょ姸鎬侊細" + outLocBoxC[4] + "銆佸簱瀛樼姸鎬侊細" + locDetlSou.getDanger$() + "銆傜姸鎬佷笉鍖归厤銆�===]";
+//                        continue;
+//                    }
+                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlSou.getLocNo()));
+                    if (Cools.isEmpty(locMast)) {
+                        sign = false;
+                        errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC[0] + " 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佹湭鏌ヨ鍒版绠卞彿鎵�鍦ㄥ簱浣�" + "銆�===]";
+                        continue;
+                    }
+                    if (!locMast.getLocSts().equals("F")) {
+                        sign = false;
+                        errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC[0] + " 鎵�鍦ㄥ簱浣嶄笉婊¤冻鍑哄簱鏉′欢锛侊紒锛佸簱浣嶇姸鎬佷笉涓篎锛侊紒锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$() + "銆�===]";
+                        continue;
+                    }
+
+                    // 鐩爣搴撲綅 ===>> 娴呭簱浣�
+                    if (Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
+                        String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast.getLocNo());
+                        LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc));
+                        if (!Cools.isEmpty(locMast2)) {
+                            if (locMast2.getLocSts().equals("P") || locMast2.getLocSts().equals("R")) {
+                                errorMsgOrderLoc = errorMsgOrderLoc + "[===銆�" + "绠卞彿锛�" + outLocBoxC[0] + " 鎵�鍦ㄥ簱浣嶆弧瓒冲嚭搴撴潯浠讹紒锛侊紒浣嗘槸娣卞簱浣嶅湪鍑哄簱涓紒锛侊紒鍥犳浼氬す鏉傚湪鍓嶈竟璁㈠崟鎵ц锛侊紒锛�" + "銆�===]";
+                            }
+                        }
+                    }
+
+                    if (sign) {
+                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+                                .eq("loc_no", locDetlSou.getLocNo()).eq("origin", locDetlSou.getOrigin()));
+                        for (LocDetl locDetl : locDetls) {
+                            total++;
+                            String[] locDetlNow = new String[5];
+                            locDetlNow[0] = locDetl.getBatch();
+                            locDetlNow[1] = outLocBoxC[1];
+                            locDetlNow[2] = outLocBoxC[2];
+                            locDetlNow[3] = outLocBoxC[3];
+                            locDetlNow[4] = outLocBoxC[4];
+                            outLocBoxCList.add(locDetlNow);
+                            outLocBoxCNew.add(outLocBoxC[0]);
+                        }
+                    }
+                }
+            }
+            for (String[] outLocBoxC : outLocBoxCList) {
+                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", outLocBoxC[0]));
+                if (Cools.isEmpty(locDetl)) {
+                    total--;
+                    continue;
+                }
+
+                if (!Cools.isEmpty(outLocBoxC[3])) {
+                    String memo = Cools.isEmpty(locDetl.getMemo()) ? "" : locDetl.getMemo() + "锛�";
+                    locDetl.setMemo(memo + DateUtils.convert(new Date(), DateUtils.yyyyMMdd_C) + "澶囨敞锛�" + outLocBoxC[3]);
+                } else if (Cools.isEmpty(locDetl.getMemo())) {
+                    locDetl.setMemo(outLocBoxC[3]);
+                }
+                LocDto locDto = new LocDto(locDetl);
+                locDtos.add(locDto);
+            }
+
+            StockOutParam param = new StockOutParam();
+            ArrayList<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+            List<LocDto> locDtosList = new ArrayList<>();
+            List<String> batchList = new ArrayList<>();
+            for (LocDto locDto : locDtos) {
+                if (!batchList.contains(locDto.getBatch())) {
+                    batchList.add(locDto.getBatch());
+                    locDtosList.add(locDto);
+                }
+            }
+            for (LocDto locDto : locDtosList) {
+                StockOutParam.LocDetl locDetl = new StockOutParam.LocDetl();
+                locDetl.setBrand(locDto.getBrand());
+                locDetl.setLocNo(locDto.getLocNo());
+                locDetl.setAnfme(locDto.getAnfme());
+                locDetl.setMatnr(locDto.getMatnr());
+                locDetl.setBatch(locDto.getBatch());
+                locDetl.setModel(locDto.getModel());
+                locDetl.setSpecs(locDto.getSpecs());
+                locDetl.setZpallet(locDto.getZpallet());
+                locDetl.setOrigin(locDto.getOrigin());
+                locDetl.setWeight(locDto.getWeight());
+                locDetl.setMemo(locDto.getMemo());
+                locDetl.setDanger(locDto.getDanger());
+
+                locDetls.add(locDetl);
+            }
+            param.setLocDetls(locDetls);
+            param.setOrderNo(orderOneNo);
+            param.setCstmrName(cstmrName);
+            param.setOrderName(orderName);
+
+            if (sign && total > 0) {
+                workService.startupFullTakeStoreOrder(param, 9999L);
+            }
+
+            try {
+                OperateLogService operateLogService = SpringUtils.getBean(OperateLogService.class);
+                // 璁板綍鎿嶄綔鏃ュ織
+                OperateLog operateLog = new OperateLog();
+                operateLog.setAction(action);
+                operateLog.setIp(ip);
+                operateLog.setUserId(9999L);
+                operateLog.setRequest("鍗曞彿锛�" + orderOneNo + "銆佸鎴峰悕锛�" + cstmrName);
+                operateLog.setResponse(errorMsgOrderLoc.equals("") ? "姝e父" : (sign && total > 0) ? "鎴愬姛:" + errorMsgOrderLoc : "澶辫触:" + errorMsgOrderLoc);
+                operateLogService.insert(operateLog);
+            } catch (Exception e) {
+                log.error("璁板綍鎿嶄綔鏃ュ織澶辫触锛�" + e.getMessage());
+            }
+
+        }
+
+        log.info("鍑哄簱{}鏉$鍙凤紒", total);
+
+        String requert = errorMsgOrderLoc.equals("") ? "姝e父" : (sign && total > 0) ? "鎴愬姛:" + errorMsgOrderLoc : "澶辫触:" + errorMsgOrderLoc;
+        if (sign && total > 0) {
+            return R.ok(requert.equals("姝e父")? "鎴愬姛":requert);
+        }
+        return R.error(requert);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java b/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java
index bf8ea92..5051f60 100644
--- a/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java
+++ b/src/main/java/com/zy/asrs/utils/OutLocBoxExcelListener.java
@@ -232,6 +232,7 @@
             param.setLocDetls(locDetls);
             param.setOrderNo(orderOneNo);
             param.setCstmrName(cstmrName);
+            param.setOrderName("鎵嬪姩鍑哄簱鍗�");
 
             if (sign && total>0){
                 workService.startupFullTakeStoreOrder(param,9999L);

--
Gitblit v1.9.1