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