From 0a1dceaa6478ec0081c38721be88fa6d807c6094 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 17 九月 2025 14:26:34 +0800
Subject: [PATCH] 1
---
 src/main/java/com/zy/asrs/service/WorkService.java                       |    3 
 src/main/resources/mapper/OrderDetlMapper.xml                            |   20 ++++
 src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java      |    2 
 src/main/java/com/zy/asrs/service/OrderDetlService.java                  |    3 
 src/main/java/com/zy/asrs/controller/OpenController.java                 |    2 
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java                    |    9 +
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java         |    5 +
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java              |  124 ++++++++++++++++++++++++
 src/main/java/com/zy/asrs/controller/OutController.java                  |   51 +++++++--
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java              |   15 +-
 src/main/java/com/zy/asrs/entity/param/UnQualifiedOrderConfirmParam.java |   17 +++
 src/main/java/com/zy/asrs/service/OpenService.java                       |    2 
 12 files changed, 230 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 26f077f..28a92e6 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -508,7 +508,7 @@
     @PostMapping("/unQualifiedOrder/auth/v1")
     @AppAuth(memo = "涓嶅悎鏍煎搧閫�搴撳崟鍗曟嵁涓嬪彂")
     public synchronized R unqualifiedOrder(@RequestHeader(required = false) String appkey,
-                                      @RequestBody ReturnOrderConfirmParam param,
+                                      @RequestBody UnQualifiedOrderConfirmParam param,
                                       HttpServletRequest request) {
         auth(appkey, param, request);
         openService.unQualifiedOrder(param);
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 81a5510..76c4d62 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -83,12 +83,22 @@
             return R.parse("璁㈠崟鏁版嵁涓虹┖");
         }
 
-        // 鎸夊寘瑁呯粍鍙峰垎缁勫鐞�
-        Map<String, List<OrderDetl>> brandGroup = orderDetls.stream()
-                .collect(Collectors.groupingBy(o -> {
-                    String brand = o.getBrand();
-                    return brand != null ? brand : "璺ㄥ贩閬�";
-                }));
+        Map<String, List<OrderDetl>> brandGroup;
+        if (order.getDocType() == 27) {
+            // 鎸夊寘瑁呯粍鍙峰垎缁勫鐞�
+            brandGroup = orderDetls.stream()
+                    .collect(Collectors.groupingBy(o -> {
+                        String brand = o.getModel();
+                        return brand != null ? brand : "璺ㄥ贩閬�";
+                    }));
+        } else {
+            // 鎸夊寘瑁呯粍鍙峰垎缁勫鐞�
+            brandGroup = orderDetls.stream()
+                    .collect(Collectors.groupingBy(o -> {
+                        String brand = o.getBrand();
+                        return brand != null ? brand : "璺ㄥ贩閬�";
+                    }));
+        }
 
 
         List<LocDto> locDtos = new ArrayList<>();
@@ -97,11 +107,18 @@
         for (Map.Entry<String, List<OrderDetl>> entry : brandGroup.entrySet()) {
             String brand = entry.getKey();
             List<OrderDetl> brandOrderDetls = entry.getValue();
+            List<LocDetl> locDetls;
+            if (order.getDocType() == 27) {
+                locDetls = locDetlService.selectList(
+                        new EntityWrapper<LocDetl>().eq("model", brand)
+                );
+            } else {
+                // 鏌ヨ繖涓寘瑁呯粍瀵瑰簲鐨勬墍鏈夊簱瀛�
+                locDetls = locDetlService.selectList(
+                        new EntityWrapper<LocDetl>().eq("brand", brand)
+                );
+            }
 
-            // 鏌ヨ繖涓寘瑁呯粍瀵瑰簲鐨勬墍鏈夊簱瀛�
-            List<LocDetl> locDetls = locDetlService.selectList(
-                    new EntityWrapper<LocDetl>().eq("brand", brand)
-            );
             if (locDetls.isEmpty()) continue;
 
             // 鑾峰彇鍑哄簱鍙�
@@ -133,7 +150,7 @@
                 locDto.setUnit(locDetl.getUnit());
                 locDto.setModel(locDetl.getModel());
                 locDto.setThreeCode(locDetl.getThreeCode());
-                locDto.setBrand(brand);
+                locDto.setBrand(locDetl.getBrand());
                 locDto.setOrderNo(firstDetl.getOrderNo());
                 locDto.setStaNos(staNos);
                 locDto.setOrderDetlId(firstDetl.getId());
@@ -269,9 +286,15 @@
                             ioWorkType = IoWorkType.ALL_OUT;
                         }
                     }
-                    workService.stockOut(staNo, locDetlDtos,
-                            ioWorkType,
-                            getUserId(), optionValue);
+                    if (order.getDocType() == 27) {
+                        workService.stockOut2(staNo, locDetlDtos,
+                                ioWorkType,
+                                getUserId(), optionValue);
+                    }else {
+                        workService.stockOut(staNo, locDetlDtos,
+                                ioWorkType,
+                                getUserId(), optionValue);
+                    }
                 } else {
                     throw new CoolException("鎵�閫夊簱浣嶇姸鎬佷笉涓篎/D锛屽簱浣嶅彿锛�" +
                             locMast.getLocNo() + "锛屽綋鍓嶇姸鎬侊細" +
diff --git a/src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java b/src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java
index 7f8650c..49749b8 100644
--- a/src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java
@@ -10,7 +10,7 @@
     private String packageGroupNo; // 澶氫釜鍖呰缁勫彿
     private List<VolumeNumber> volumeNumbers; // 澶氫釜鍖呰缁勫彿
 
-
+    private String memo;//澶囨敞
     @Data
     public static class VolumeNumber {
         private String volumeNumber;
diff --git a/src/main/java/com/zy/asrs/entity/param/UnQualifiedOrderConfirmParam.java b/src/main/java/com/zy/asrs/entity/param/UnQualifiedOrderConfirmParam.java
new file mode 100644
index 0000000..ecdbafb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/UnQualifiedOrderConfirmParam.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UnQualifiedOrderConfirmParam {
+    private String orderNumber; //缁勮揣鍗曞彿
+    private List<VolumeNumber> volumeNumbers; // 澶氫釜鍖呰缁勫彿
+
+    private String memo;//澶囨敞
+    @Data
+    public static class VolumeNumber {
+        private String volumeNumber;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 02c7cb2..0d1b4ca 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -42,6 +42,9 @@
 
     void updateOrderDetlByGroupNo(@Param("orderNo") String orderNo,@Param("brand") String brand, @Param("count") double count);
 
+    void updateOrderDetlByModel(@Param("orderNo") String orderNo,@Param("model") String model, @Param("count") double count);
+
+
     void updateOrderDetlQtyByGroupNo(@Param("orderNo") String orderNo,@Param("brand") String brand);
 
     /**
@@ -66,5 +69,11 @@
 
     List<OrderDetl> selectByBrand(@Param("brand") String brand);
 
+    List<OrderDetl> selectByModel(@Param("model") String model);
+
+
     OrderDetl selectByOrderNoAndPkgGroupNoAndVolumeNo(@Param("orderNo") String orderNo,@Param("brand") String brand,@Param("model") String model);
+
+    OrderDetl selectByOrderNoAndVolumeNo(@Param("orderNo") String orderNo,@Param("model") String model);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 1429f4a..965968d 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -161,5 +161,5 @@
 
     R returnOrder(ReturnOrderConfirmParam param);
 
-    R unQualifiedOrder(ReturnOrderConfirmParam param);
+    R unQualifiedOrder(UnQualifiedOrderConfirmParam param);
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index 475cf80..5c2bb09 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -39,4 +39,7 @@
     boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty);
 
     List<OrderDetl> selectByBrand(String brand);
+
+    List<OrderDetl> selectByModel(String model);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 5a9d859..eeb7439 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -44,6 +44,9 @@
      */
     void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String groupOrderNumber);
 
+    void stockOut2(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String groupOrderNumber);
+
+
     void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
 
     /**
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 3f81f37..a496365 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2365,6 +2365,7 @@
             order.setCreateTime(new Date());
             order.setSettle(1L);
             order.setDocType(26L);
+            order.setMemo(param.getMemo());
             orderMapper.insert(order);
         } else {
             // 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬�
@@ -2394,6 +2395,7 @@
                 detl.setAnfme(1.0);
                 detl.setBrand(param.getPackageGroupNo());   // 鍖呰缁勫彿
                 detl.setModel(vn.getVolumeNumber());     // 鍗峰彿
+                detl.setMemo(param.getMemo());
                 orderDetlMapper.insert(detl);
             } else {
                 throw new RuntimeException("璇ュ崟鎹殑鍗峰彿宸插瓨鍦�," + vn.getVolumeNumber());
@@ -2405,7 +2407,7 @@
 
     @Override
     @Transactional
-    public R unQualifiedOrder(ReturnOrderConfirmParam param) {
+    public R unQualifiedOrder(UnQualifiedOrderConfirmParam param) {
         if (Cools.isEmpty(param.getOrderNumber())) {
             param.setOrderNumber("UQCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
         }
@@ -2422,6 +2424,7 @@
             order.setCreateTime(new Date());
             order.setSettle(1L);
             order.setDocType(27L);
+            order.setMemo(param.getMemo());
             orderMapper.insert(order);
         } else {
             // 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬�
@@ -2433,14 +2436,14 @@
 
 
         // 2. 涓�涓�瀵瑰簲閬嶅巻
-        List<ReturnOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
+        List<UnQualifiedOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
 
         for (int i = 0; i < volList.size(); i++) {
-            ReturnOrderConfirmParam.VolumeNumber vn = volList.get(i);
+            UnQualifiedOrderConfirmParam.VolumeNumber vn = volList.get(i);
 
             // 鏌ヨ鏄惁宸插瓨鍦ㄨ detl
-            OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo(
-                    param.getOrderNumber(), param.getPackageGroupNo(), vn.getVolumeNumber()
+            OrderDetl detl = orderDetlMapper.selectByOrderNoAndVolumeNo(
+                    param.getOrderNumber(), vn.getVolumeNumber()
             );
 
             if (detl == null) {
@@ -2449,8 +2452,8 @@
                 detl.setOrderNo(param.getOrderNumber());
                 detl.setCreateTime(new Date());
                 detl.setAnfme(1.0);
-                detl.setBrand(param.getPackageGroupNo());   // 鍖呰缁勫彿
                 detl.setModel(vn.getVolumeNumber());     // 鍗峰彿
+                detl.setMemo(param.getMemo());
                 orderDetlMapper.insert(detl);
             } else {
                 throw new RuntimeException("璇ュ崟鎹殑鍗峰彿宸插瓨鍦�," + vn.getVolumeNumber());
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 4598dff..91ab62a 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -96,4 +96,9 @@
     public List<OrderDetl> selectByBrand(String brand) {
         return this.baseMapper.selectByBrand(brand);
     }
+
+    @Override
+    public List<OrderDetl> selectByModel(String model) {
+        return this.baseMapper.selectByModel(model);
+    }
 }
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 1d43354..3d5ec22 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -582,6 +582,130 @@
 
     @Override
     @Transactional
+    public void stockOut2(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId, String groupOrderNumber) {
+        Date now = new Date();
+        // 鍚堝苟鍚岀被椤�
+        Set<String> locNos = new HashSet<>();
+        List<OutLocDto> dtos = new ArrayList<>();
+        for (LocDetlDto locDetlDto : locDetlDtos) {
+            String locNo = locDetlDto.getLocDetl().getLocNo();
+            if (locNos.contains(locNo)) {
+                for (OutLocDto dto : dtos) {
+                    if (dto.getLocNo().equals(locNo)) {
+                        dto.getLocDetlDtos().add(locDetlDto);
+                        break;
+                    }
+                }
+            } else {
+                locNos.add(locNo);
+                dtos.add(new OutLocDto(locNo, locDetlDto));
+            }
+        }
+        Integer ioType = null;
+        // 鐢熸垚宸ヤ綔妗�
+        for (OutLocDto dto : dtos) {
+            // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+            if (ioWorkType == null) {
+                ioType = dto.isAll() ? 101 : 103;
+            } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
+                ioType = 107;
+            } else if (ioWorkType.equals(IoWorkType.ALL_OUT)) {
+                ioType = 101;
+            }
+            assert ioType != null;
+            // 鑾峰彇搴撲綅
+            LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+            Integer outSta = staNo.getDevNo();
+//            //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
+//            if(locMast.getCrnNo()==2){
+//                outSta = ioType == 101 ? 204 : 202;
+//            }
+
+            // 鑾峰彇璺緞
+            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+            // 鐢熸垚宸ヤ綔鍙�
+            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            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(dto.getLocNo()); // 婧愬簱浣�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setSheetNo("0");
+            wrkMast.setMemo(groupOrderNumber);
+            if (staDesc.getStnNo() < 118 || staDesc.getStnNo() > 121) {
+                wrkMast.setSheetNo("3");
+            }
+            wrkMast.setBarcode(locMast.getBarcode());
+            wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(userId);
+            wrkMast.setModiTime(now);
+            if (!wrkMastService.insert(wrkMast)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + dto.getLocNo());
+            }
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
+                    continue;
+                }
+                WrkDetl wrkDetl = new WrkDetl();
+                List<OrderDetl> orderDetl = orderDetlService.selectByModel(detlDto.getLocDetl().getModel());
+                wrkDetl.sync(detlDto.getLocDetl());
+                for (OrderDetl orderDetlDto : orderDetl) {
+                    if (orderDetlDto.getSupp() != null) {
+                        wrkDetl.setSupp(orderDetlDto.getSupp());
+                    }
+                    if (orderDetlDto.getMemo() != null) {
+                        wrkDetl.setMemo(orderDetlDto.getMemo());
+                    }
+                }
+                wrkDetl.setOrderNo(detlDto.getOrderNo()); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setIoTime(now);
+                Double anfme = ioType == 101 ? detlDto.getLocDetl().getAnfme() : detlDto.getCount();
+                wrkDetl.setAnfme(anfme); // 鏁伴噺
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setAppeUser(userId);
+                wrkDetl.setModiTime(now);
+                wrkDetl.setModiUser(userId);
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                }
+                // 淇敼璁㈠崟鏄庣粏
+                orderDetlMapper.updateOrderDetlByModel(detlDto.getOrderNo(), detlDto.getLocDetl().getModel(), 1);
+                // 淇敼璁㈠崟鐘舵��
+                orderMapper.updateSettleByOrderNo(detlDto.getOrderNo(), 2L, userId);
+            }
+
+            // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+            locMast = locMastService.selectById(dto.getLocNo());
+            if (locMast.getLocSts().equals("F")) {
+                locMast.setLocSts(ioType == 101 ? "R" : "P");
+                locMast.setModiUser(userId);
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + dto.getLocNo());
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+            }
+        }
+    }
+
+    @Override
+    @Transactional
     public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
         Date now = new Date();
         List<LocDto> locDtos = taskDto.getLocDtos();
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 169eb4d..9961bbb 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -247,6 +247,13 @@
         where 1=1
           and order_no= #{orderNo} and brand = #{brand}
     </update>
+
+    <update id="updateOrderDetlByModel">
+        update man_order_detl
+        set work_qty = #{count}
+        where 1=1
+          and order_no= #{orderNo} and model = #{model}
+    </update>
     <update id="updateOrderDetlQtyByGroupNo">
         update man_order_detl
         set qty = 1
@@ -273,6 +280,12 @@
         where brand = #{brand}
     </select>
 
+    <select id="selectByModel" resultMap="BaseResultMap">
+        select *
+        from man_order_detl
+        where model = #{model}
+    </select>
+
     <select id="selectByOrderNoAndPkgGroupNoAndVolumeNo" resultMap="BaseResultMap">
         select *
         from man_order_detl
@@ -281,4 +294,11 @@
         and model = #{model}
     </select>
 
+    <select id="selectByOrderNoAndVolumeNo" resultMap="BaseResultMap">
+        select *
+        from man_order_detl
+        where order_no = #{orderNo}
+          and model = #{model}
+    </select>
+
 </mapper>
--
Gitblit v1.9.1