From d0b47b51949e5eb682cdb7e1b97864183fcac153 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期一, 31 十月 2022 15:59:14 +0800
Subject: [PATCH] #订单回滚异常修复

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   83 +++++++++++++++++++++++++++++++++--------
 1 files changed, 66 insertions(+), 17 deletions(-)

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 2a4df87..f86bef6 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -355,14 +355,25 @@
             }
             // 淇敼璁㈠崟鏄庣粏
             if (BaseController.isJSON(locDto.getOrderNo())) {
-                OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
-                if (orderDetl == null) {
-                    orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+                String[] orderNos = GetOrderNo(locDto.getOrderNo());
+                Double anfme = locDto.getAnfme();
+                for (String orderNo:orderNos){
+                    OrderDetl orderDetl = orderDetlService.selectItem(orderNo, locDto.getMatnr(), locDto.getBatch());
+                    if (orderDetl == null) {
+                        orderDetl = orderDetlService.selectItem(orderNo, locDto.getMatnr(), null);
+                    }
+                    if (orderDetl.getAnfme()<=anfme){
+                        if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getAnfme())) {
+                            throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+                        }
+                        anfme=anfme-orderDetl.getAnfme();
+                    }else{
+                        if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(),anfme)) {
+                            throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+                        }
+                    }
+                    orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
                 }
-                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
-                    throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
-                }
-                orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
             } else {
                 // 璁㈠崟鍚堝苟鍑哄簱
                 List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
@@ -390,6 +401,37 @@
         } else {
             throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
+    }
+
+    private String[] GetOrderNo(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("orderNo")){
+                s[i]=s3[j+2];
+                i++;
+            }
+            j++;
+        }
+        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;
     }
 
     @Override
@@ -833,18 +875,25 @@
         // 璁㈠崟鍏宠仈
         List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
         for (WrkDetl wrkDetl : wrkDetls) {
-            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-                if (BaseController.isJSON(wrkDetl.getOrderNo())) {
-                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
-                        throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
-                    }
-                } else {
-                    // 璁㈠崟鍚堝苟鍑哄簱
-                    List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
-                    for (OrderDto orderDto : orderDtoList) {
-                        if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) {
+            String[] orderNos = GetOrderNo(wrkDetl.getOrderNo());
+            String[] anfmes = GetAnfme(wrkDetl.getOrderNo());
+            int i=0;
+            for (String orderNo:orderNos){
+                if (!Cools.isEmpty(orderNo)) {
+                    Double anfme=Integer.parseInt(anfmes[i])+0.0;
+                    i++;
+                    if (BaseController.isJSON(wrkDetl.getOrderNo())) {
+                        if (!orderDetlService.decrease(orderNo, wrkDetl.getMatnr(), wrkDetl.getBatch(), anfme)) {
                             throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
                         }
+                    } else {
+                        // 璁㈠崟鍚堝苟鍑哄簱
+                        List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
+                        for (OrderDto orderDto : orderDtoList) {
+                            if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) {
+                                throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+                            }
+                        }
                     }
                 }
             }

--
Gitblit v1.9.1