From a0abdbc0b19c855fa53e47a9196dfa2cd41e8e9d Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 23 十二月 2023 19:56:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/tzskasrs-1' into tzskasrs-1

---
 src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java |    8 +-
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java      |    6 +-
 src/main/java/com/zy/asrs/utils/Utils.java                        |   55 ++++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java    |   20 +++++-
 src/main/java/com/zy/asrs/controller/OutController.java           |   38 ------------
 5 files changed, 80 insertions(+), 47 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 918f8b0..0b5993a 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -193,44 +193,6 @@
 
         return R.ok().add(locDtoList);
 
-        /*
-        if (Cools.isEmpty(list)) {
-            return R.parse(BaseRes.PARAM);
-        }
-        Set<String> exist = new HashSet<>();
-        List<LocDto> locDtos = new ArrayList<>();
-
-        for (OrderMergeVo vo : list) {
-            double issued = Optional.of(vo.getAnfme()).orElse(0.0D);
-            if (issued <= 0.0D) { continue; }
-            List<LocDetl> locDetls = locDetlService.queryStock(vo.getMatnr(), vo.getBatch(), null, exist);
-            for (LocDetl locDetl : locDetls) {
-                if (issued > 0) {
-                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), JSON.toJSONString(vo.getOrderDtos()),
-                            issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
-                    int ioType = (issued >= locDetl.getAnfme() && locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo())) == 1) ? 101 : 103;
-                    List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType);
-                    locDto.setStaNos(staNos);
-                    locDtos.add(locDto);
-                    exist.add(locDetl.getLocNo());
-                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
-                    issued = issued - locDetl.getAnfme();
-                } else {
-                    break;
-                }
-            }
-            if (issued > 0) {
-                LocDto locDto = new LocDto(null, vo.getMatnr(), vo.getMaktx(), vo.getBatch(), JSON.toJSONString(vo.getOrderDtos()), issued);
-                locDto.setLack(Boolean.TRUE);
-                locDtos.add(locDto);
-            }
-        }
-        for (LocDto locDto : locDtos) {
-            Mat mat = matService.selectByMatnr(locDto.getMatnr());
-            assert mat != null;
-            locDto.setSpecs(mat.getSpecs());
-        }
-        return R.ok().add(locDtos);*/
     }
 
 
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
index 12add0c..400261b 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -82,7 +82,11 @@
                 double anfme = agvLocDetl.getAnfme();
                 //int ioType = anfme > issued ? 101 : 103;
                 anfme = anfme > issued ? issued : anfme;
-                LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNo, anfme);
+                //鐢ㄤ簬鏄剧ず宸ヤ綔鏄庣粏妗g殑璁㈠崟鍙�
+                String orderNoWrkDtel = Utils.getOrderNo(orderNo,anfme);
+                //鏇存柊璁㈠崟鏁伴噺
+                orderNo = Utils.orderMergeUpdate(orderNo,anfme);
+                LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNoWrkDtel, anfme);
                 locDto.setCsocode(csocode);
                 locDto.setIsoseq(isoseq);
                 locDto.setContainerCode(agvLocDetl.getSuppCode());
@@ -248,6 +252,4 @@
             }
         }
     }
-
-
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 27d77a6..ac9a84a 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -1,6 +1,8 @@
 package com.zy.asrs.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
@@ -563,9 +565,21 @@
         agvWrkDetlList1.forEach(agvWrkDetl -> {
 
             if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
-                OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
-                orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
-                orderDetlService.updateById(orderDetl);
+                String orderNo = agvWrkDetl.getOrderNo();
+                if(orderNo.contains("{")){
+                    JSONArray orderArray = JSON.parseArray(orderNo);
+                    for (Object o : orderArray){
+                        JSONObject jsonobject = (JSONObject) o;
+                        OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(jsonobject.get("orderNo").toString(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+                        orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+                        orderDetlService.updateById(orderDetl);
+                    }
+
+                }else {
+                    OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+                    orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+                    orderDetlService.updateById(orderDetl);
+                }
             }
         });
 
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 7d2b56e..ee7d186 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -101,9 +101,9 @@
         }
         // 濡傛灉 浣滀笟鏁伴噺绛変簬鍗曟嵁鎬绘暟閲� && 宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� && AGV宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹�
         int count = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo));
-        boolean wrkDeltExist = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) < 1;
-        boolean agvWrkDetlExist = agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().eq("order_no",orderNo)) < 1;
-        boolean waitPakinExist = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("order_no",orderNo)) < 1;
+        boolean wrkDeltExist = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) < 1;
+        boolean agvWrkDetlExist = agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().like("order_no",orderNo)) < 1;
+        boolean waitPakinExist = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().like("order_no",orderNo)) < 1;
 
         ManPakOut manPakOut = manPakOutService.selectByOrderWithName(orderNo);
 
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index d456395..c1c4613 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -1,6 +1,8 @@
 package com.zy.asrs.utils;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Arith;
@@ -494,4 +496,57 @@
         }
     }
 
+    public static String getOrderNo(String orderNo, double anfme){
+        JSONArray orderArray = new JSONArray();
+        //濡傛灉璁㈠崟鍙蜂负jsonString
+        if(orderNo.contains("{")){
+            JSONArray jsonArray = JSON.parseArray(orderNo);
+            //閬嶅巻鎵�鏈夎鍗曞彿鍙婅鍗曟暟閲�
+            for (Object o : jsonArray){
+                JSONObject orderJson = (JSONObject) o;
+                Double orderAnfme = orderJson.getDouble("anfme");
+                //濡傛灉璁㈠崟鏁伴噺涓�0锛屽垯璺宠繃
+                if(orderAnfme <= 0){
+                    continue;
+                }
+                if(orderAnfme > anfme){
+                    //濡傛灉璁㈠崟鏁伴噺澶т簬璇ュ簱瀛樻暟閲忥紝涓旇鍗曟暟缁勪负绌猴紝鍒欑洿鎺ヨ繑鍥炶璁㈠崟鍙凤紝鍚﹀垯灏卞皢璇ヨ鍗曟坊鍔犲埌璁㈠崟鏁扮粍
+                    if(orderArray.isEmpty()){
+                        return orderJson.getString("orderNo");
+                    }else {
+                        orderJson.put("anfme",anfme);
+                        orderArray.add(orderJson);
+                    }
+                }else {
+                    anfme -= orderAnfme;
+                    orderArray.add(orderJson);
+                }
+            }
+            return orderArray.toJSONString();
+        }else {
+            return orderNo;
+        }
+
+    }
+
+    public static String orderMergeUpdate(String orderNo, double anfme){
+        if(orderNo.contains("{")){
+            JSONArray jsonArray = JSON.parseArray(orderNo);
+            for(int i=0; i<jsonArray.size(); i++){
+                JSONObject orderJson = (JSONObject)jsonArray.get(i);
+                Double orderAnfme = orderJson.getDouble("anfme");
+                if(orderAnfme > anfme){
+                    ((JSONObject) jsonArray.get(i)).put("anfme",orderAnfme - anfme);
+                    return jsonArray.toJSONString();
+                }else {
+                    ((JSONObject) jsonArray.get(i)).put("anfme",0);
+                    anfme -= orderAnfme;
+                }
+            }
+            return jsonArray.toJSONString();
+        }else {
+            return orderNo;
+        }
+    }
+
 }

--
Gitblit v1.9.1