From ce7bc4497e63231850e5df3a8843b348f9587b6b Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期三, 27 九月 2023 14:58:31 +0800
Subject: [PATCH] #

---
 src/main/resources/mapper/OrderDetlMapper.xml                 |    6 +
 src/main/java/com/zy/asrs/controller/WrkDetlController.java   |   24 ++++-
 src/main/java/com/zy/asrs/service/OrderService.java           |    2 
 src/main/webapp/views/wrkMast/wrkDetl.html                    |    1 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java  |    5 +
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java         |    2 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java   |    2 
 src/main/java/com/zy/asrs/entity/WrkDetl.java                 |   13 +++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   81 +++++++++++++++++++-
 src/main/java/com/zy/asrs/controller/MobileController.java    |   25 ++++++
 src/main/java/com/zy/asrs/controller/WaitPakinController.java |   26 ++++++
 src/main/java/com/zy/asrs/service/MobileService.java          |    4 +
 12 files changed, 178 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index bd592bb..be943bb 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -1,7 +1,9 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.ManagerAuth;
 import com.core.common.Cools;
 import com.core.common.R;
@@ -11,6 +13,7 @@
 import com.zy.asrs.entity.param.MobileAdjustParam;
 import com.zy.asrs.entity.result.MobileAdjustResult;
 import com.zy.asrs.service.*;
+import com.zy.common.model.DetlDto;
 import com.zy.common.model.WrkDto;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -161,6 +164,13 @@
     public R comb(@RequestBody CombParam combParam){
         mobileService.comb(combParam, getUserId());
         return R.ok("缁勬墭鎴愬姛");
+    }
+
+    @RequestMapping("/comb/2auth")
+    @ManagerAuth(memo = "缁勬墭")
+    public R comb2(@RequestBody CombParam combParam){
+        mobileService.pikingToFull2(1);
+        return R.ok(mobileService.pikingToFull2(3732));
     }
 
     @RequestMapping("/pack/get/auth")
@@ -409,7 +419,20 @@
     public synchronized R pickAuth(@RequestBody String barcode){
         WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
         List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
-        return R.ok().add(wrkDetls);
+        ArrayList<WrkDetl> resultwrkDetls = new ArrayList<>();
+        for (WrkDetl wrkDetl : wrkDetls) {
+            if (isJSON(wrkDetl.getOrderNo())) {
+                JSON.parseArray(wrkDetl.getOrderNo(), DetlDto.class).forEach(detlDto -> {
+                    WrkDetl clone = wrkDetl.clone();
+                    clone.setOrderNo(detlDto.getOrderNo());
+                    clone.setAnfme(detlDto.getAnfme());
+                    resultwrkDetls.add(clone);
+                });
+            } else {
+                resultwrkDetls.add(wrkDetl);
+            }
+        }
+        return R.ok().add(resultwrkDetls);
     }
 
     @RequestMapping("/order/search/orderNo/auth/v2")
diff --git a/src/main/java/com/zy/asrs/controller/WaitPakinController.java b/src/main/java/com/zy/asrs/controller/WaitPakinController.java
index 91d5c7f..0dd8ccf 100644
--- a/src/main/java/com/zy/asrs/controller/WaitPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/WaitPakinController.java
@@ -10,8 +10,12 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.R;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.WaitPakin;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.service.OrderService;
 import com.zy.asrs.service.WaitPakinService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.common.web.BaseController;
@@ -31,6 +35,12 @@
 
     @Autowired
     private WrkMastService wrkMastService;
+
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private OrderDetlService orderDetlService;
 
     @RequestMapping(value = "/waitPakin/{id}/auth")
     @ManagerAuth
@@ -95,7 +105,21 @@
         for (WaitPakin entity : list){
             WrkMast wrkMast = wrkMastService.selectByBarcode(entity.getBarcode());
             if (Cools.isEmpty(wrkMast)) {
-                waitPakinService.delete(new EntityWrapper<>(entity));
+                Order order = orderService.selectByNo(entity.getOrderNo());
+                if (!Cools.isEmpty(order)) {
+                    String matnr = entity.getMatnr();
+                    Double anfme = entity.getAnfme();
+                    List<OrderDetl> orderDetls = orderService.selectTotalDetls(order.getId());
+                    for (OrderDetl orderDetl : orderDetls) {
+                        if (matnr.equals(orderDetl.getMatnr())) {
+                            orderDetl.setQty(orderDetl.getQty() - anfme);
+                            orderDetlService.updateById(orderDetl);
+                        }
+                    }
+                    waitPakinService.delete(new EntityWrapper<>(entity));
+                } else {
+                    waitPakinService.delete(new EntityWrapper<>(entity));
+                }
             } else {
                 return R.error("宸ヤ綔妗f暟鎹凡瀛樺湪,鏃犳硶鍒犻櫎锛侊紒");
             }
diff --git a/src/main/java/com/zy/asrs/controller/WrkDetlController.java b/src/main/java/com/zy/asrs/controller/WrkDetlController.java
index 3baba43..a72e176 100644
--- a/src/main/java/com/zy/asrs/controller/WrkDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/WrkDetlController.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -12,14 +13,12 @@
 import com.core.common.R;
 import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.service.WrkDetlService;
+import com.zy.common.model.DetlDto;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @RestController
 public class WrkDetlController extends BaseController {
@@ -50,7 +49,22 @@
         } else {
             wrapper.orderBy("appe_time", false);
         }
-        return R.ok(wrkDetlService.selectPage(new Page<>(curr, limit), wrapper));
+        Page<WrkDetl> page = wrkDetlService.selectPage(new Page<>(curr, limit), wrapper);
+        List<WrkDetl> resultRecords = new ArrayList<>();
+        for (WrkDetl record : page.getRecords()) {
+            if (isJSON(record.getOrderNo())) {
+                JSON.parseArray(record.getOrderNo(), DetlDto.class).forEach( detlDto -> {
+                    WrkDetl clone = record.clone();
+                    clone.setOrderNo(detlDto.getOrderNo());
+                    clone.setAnfme(detlDto.getAnfme());
+                    resultRecords.add(clone);
+                });
+            } else {
+                resultRecords.add(record);
+            }
+        }
+
+        return R.ok(page.setRecords(resultRecords));
     }
 
     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetl.java b/src/main/java/com/zy/asrs/entity/WrkDetl.java
index c6a5349..707d9ab 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetl.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -17,7 +17,7 @@
 
 @Data
 @TableName("asr_wrk_detl")
-public class WrkDetl implements Serializable {
+public class WrkDetl implements Serializable, Cloneable {
 
     private static final long serialVersionUID = 1L;
 
@@ -404,4 +404,15 @@
         }
     }
 
+
+    @Override
+    public WrkDetl clone() {
+        try {
+            return (WrkDetl) super.clone();
+        } catch (CloneNotSupportedException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 901910d..c423f11 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -19,6 +19,8 @@
 
     List<OrderDetl> selectWorkingDetls(Long orderId);
 
+    List<OrderDetl> selectTotalDetls(Long orderId);
+
     List<OrderDetl> getPakoutPage(Map<String, Object> map);
 
     Integer getPakoutPageCount(Map<String, Object> map);
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index f1e5130..628aeb8 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -1,7 +1,10 @@
 package com.zy.asrs.service;
 
+import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
+
+import java.util.List;
 
 public interface MobileService {
 
@@ -20,5 +23,6 @@
     void packComb(CombParam param, Long userId);
 
     void pikingToFull(String s);
+    List<WrkDetl> pikingToFull2(Integer wrkNo);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index 61bf9bb..6bd073a 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -15,6 +15,8 @@
 
     List<OrderDetl> selectWorkingDetls(Long orderId);
 
+    List<OrderDetl> selectTotalDetls(Long orderId);
+
     boolean updateSettle(Long orderId, Long settle, Long userId);
 
     void checkComplete(String orderNo);
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index f7b7822..dedb09b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -3,10 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
+import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.CombParam;
@@ -557,4 +554,80 @@
     public void pikingToFull(String barcode) {
         wrkMastService.selectByBarcode(barcode);
     }
+
+    @Override
+    @Transactional
+    public List<WrkDetl> pikingToFull2(Integer wrkNo) {
+        List<WrkDetl> wrkDetlsNew= new ArrayList<WrkDetl>();
+        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkNo);
+        for (WrkDetl wrkDetl:wrkDetls){
+            String[] orderNos = GetOrderNo(wrkDetl.getOrderNo());
+            if (!Cools.isEmpty(orderNos) && orderNos.length!=0) {
+                Double anfme = wrkDetl.getAnfme();
+                for (String orderNo : orderNos) {
+                    OrderDetl orderDetl = orderDetlService.selectItem(orderNo, wrkDetl.getMatnr(), wrkDetl.getBatch());
+                    if (orderDetl == null) {
+                        orderDetl = orderDetlService.selectItem(orderNo, wrkDetl.getMatnr(), null);
+                        if (orderDetl == null) {
+                            log.error("ww");
+                            return wrkDetlsNew;
+                        }
+                    }
+                    if (orderDetl.getAnfme() <= anfme) {
+                        WrkDetl wrkDetl1 = new WrkDetl();
+                        wrkDetl1.sync(wrkDetl);
+                        wrkDetl1.setOrderNo(orderNo);
+                        wrkDetl1.setAnfme(anfme);
+                        wrkDetlsNew.add(wrkDetl1);
+                        anfme = anfme - orderDetl.getAnfme();
+                    } else {
+                        WrkDetl wrkDetl1 = new WrkDetl();
+                        wrkDetl1.sync(wrkDetl);
+                        wrkDetl1.setOrderNo(orderNo);
+                        wrkDetl1.setAnfme(anfme);
+                        wrkDetlsNew.add(wrkDetl1);
+                    }
+                }
+            }else {
+                wrkDetlsNew.add(wrkDetl);
+            }
+        }
+        return wrkDetlsNew;
+    }
+
+    private static String[] GetOrderNo(String orderNo) {
+        String[] s3 = orderNo.split("\"");
+        String[] s = new String[(s3.length - 1) / 6];
+        if (!Cools.isEmpty(s3)){
+            int i = 0;
+            int j = 0;
+            for (String ss : s3) {
+                if (ss.equals("orderNo")) {
+                    s[i] = s3[j + 2];
+                    i++;
+                }
+                j++;
+            }
+        }else {
+            s=null;
+        }
+        return s;
+    }
+
+    private String[] GetAnfme(String orderNo) {
+        String[] s3 = orderNo.split("\"");
+        String[] s = new String[(s3.length - 1) / 6];
+        int i = 0;
+        int j = 0;
+        for (String ss : s3) {
+            if (ss.equals("anfme")) {
+                String[] s4 = s3[j + 1].split(":");
+                String[] s5 = s4[1].split("\\.");
+                s[i] = s5[0];
+                i++;
+            }
+            j++;
+        }
+        return s;
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index e517265..c9d2f09 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -60,6 +60,11 @@
     }
 
     @Override
+    public List<OrderDetl> selectTotalDetls(Long orderId) {
+        return orderDetlMapper.selectTotalDetls(orderId);
+    }
+
+    @Override
     public boolean updateSettle(Long orderId, Long settle, Long userId) {
         return this.baseMapper.updateSettle(orderId, settle, userId) > 0;
     }
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 7556f76..3218390 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1664,7 +1664,7 @@
         for (WrkDetl wrkDetl : wrkDetls) {
             if (!Cools.isEmpty(wrkDetl.getOrderNo())){
                 String[] orderNos = GetOrderNo(wrkDetl.getOrderNo());
-                if (!Cools.isEmpty(orderNos)){
+                if (!Cools.isEmpty(orderNos) && orderNos.length!=0){
                     String[] anfmes = GetAnfme(wrkDetl.getOrderNo());
                     int i = 0;
                     for (String orderNo : orderNos) {
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index a189fc4..46097bb 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -82,6 +82,12 @@
         and qty &lt; anfme
     </select>
 
+    <select id="selectTotalDetls" resultMap="BaseResultMap">
+        select * from man_order_detl
+        where 1=1
+        and order_id = #{orderId}
+    </select>
+
     <sql id="pakOutPageCondition">
         <if test="order_id!=null and order_id!='' ">
             and mod.order_id = #{order_id}
diff --git a/src/main/webapp/views/wrkMast/wrkDetl.html b/src/main/webapp/views/wrkMast/wrkDetl.html
index af87049..132a439 100644
--- a/src/main/webapp/views/wrkMast/wrkDetl.html
+++ b/src/main/webapp/views/wrkMast/wrkDetl.html
@@ -71,6 +71,7 @@
                 statusCode: 200
             },
             done: function(res, curr, count) {
+                console.log(res)
                 if (res.code === 403) {
                     top.location.href = baseUrl+"/";
                 }

--
Gitblit v1.9.1