瀏覽代碼

aps-提交坯料计划时判断重复的输出成品逻辑修改

sucheng 9 月之前
父節點
當前提交
d6da11f593

+ 23 - 20
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -668,7 +668,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             // 回写订单排程交货期
             Map<String, Date> orderDeliveryTime = new HashMap<>();
             // 查询所有坯料计划信息
-            List<ApsBlankOrderDo> apsBlankOrderDos = (List<ApsBlankOrderDo>)apsBlankOrderService.listByIds(blankids);
+            List<ApsBlankOrderDo> apsBlankOrderDos = (List<ApsBlankOrderDo>) apsBlankOrderService.listByIds(blankids);
             // 坯料计划ID集合
             List<String> blankKeys = new ArrayList<>();
             List<ApsBlankOrderDo> blankIds = new ArrayList<>();
@@ -679,7 +679,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         // 坯料计划信息
                         List<ApsBlankOrderDo> orders = apsBlankOrderDos.stream().filter(v -> v.getId().equals(order.getId())).collect(Collectors.toList());
                         ApsBlankOrderDo nowOrder = null;
-                        if(orders != null && orders.size()>0){
+                        if (orders != null && orders.size() > 0) {
                             nowOrder = orders.get(0);
                         }
 
@@ -689,13 +689,13 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                             ApsBlankOrderDo blankOrderDo = hasblanks.get(0);
                             if (blankOrderDo.getScheduledatestart().compareTo(endDate) > 0) {
                                 blankOrderDo.setScheduledatestart(endDate);
-                                if(nowOrder != null && nowOrder.getPromisedatestart() == null){
+                                if (nowOrder != null && nowOrder.getPromisedatestart() == null) {
                                     blankOrderDo.setPromisedatestart(DateUtil.offsetDay(endDate, 2));
                                 }
                             }
                             if (blankOrderDo.getScheduledateend().compareTo(endDate) < 0) {
                                 blankOrderDo.setScheduledateend(endDate);
-                                if(nowOrder != null && nowOrder.getPromisedateend() == null){
+                                if (nowOrder != null && nowOrder.getPromisedateend() == null) {
                                     blankOrderDo.setPromisedateend(DateUtil.offsetDay(endDate, 2));
                                 }
                             }
@@ -706,10 +706,10 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                             updateBlank.setSchedulingstatus(TO_BE_PUBLISHED);
                             updateBlank.setScheduledatestart(endDate);
                             updateBlank.setScheduledateend(endDate);
-                            if(nowOrder != null && nowOrder.getPromisedatestart() == null){
+                            if (nowOrder != null && nowOrder.getPromisedatestart() == null) {
                                 updateBlank.setPromisedatestart(DateUtil.offsetDay(endDate, 2));
                             }
-                            if(nowOrder != null && nowOrder.getPromisedateend() == null){
+                            if (nowOrder != null && nowOrder.getPromisedateend() == null) {
                                 updateBlank.setPromisedateend(DateUtil.offsetDay(endDate, 2));
                             }
                             // 自动加锁坯料计划
@@ -1745,28 +1745,31 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
 
         //如果存在订单产品和输出单卷重都相同坯料输出成品,错误提示:以下坯料输出成品重复:{订单产品1}{输出单卷重}{数量单位},{订单产品2}{输出单卷重}{数量单位}
-        //组装一下list
-        List<String> processOutputDesList = apsProcessOutputProductDoList.stream().map(item -> {
+        //新需求:如果存在关联相同的订单产品,并且输出单卷重都相同坯料输出成品,错误提示:以下坯料输出成品重复:{订单产品1}{输出单卷重}{数量单位},{订单产品2}{输出单卷重}{数量单位}
+        //用于判断是否重复
+        Map<String, String> checkOutputDesMap = new HashMap<>();
+        //有重复数据订单产品的数组
+        List<String> endCheckOutputDesList = new LinkedList<>();
+        for (ApsProcessOutputProductDo apsProcessOutputProductDo : apsProcessOutputProductDoList) {
+            //产品明细的ID
+            String productid = apsProcessOutputProductDo.getProductid();
+
             String unit = "吨";
-            if (item.getCountunit().equals(SaveConstans.CountUnit.KG)) {
+            if (apsProcessOutputProductDo.getCountunit().equals(SaveConstans.CountUnit.KG)) {
                 unit = "千克";
             }
-            return item.getProductname() + item.getOutputonerollweigth() + unit;
-        }).collect(Collectors.toList());
+            //拼接字段
+            String s = apsProcessOutputProductDo.getProductname() + apsProcessOutputProductDo.getOutputonerollweigth() + unit;
 
-        //用于判断是否重复
-        List<String> checkOutputDesList = new LinkedList<>();
-        //有重复数据订单产品的数组
-        List<String> endCheckOutputDesList = new LinkedList<>();
-        for (String s : processOutputDesList) {
-            if (checkOutputDesList.contains(s)) {
+            if (checkOutputDesMap.containsKey(productid) && checkOutputDesMap.get(productid).equals(s)) {
                 endCheckOutputDesList.add(s);
             } else {
-                checkOutputDesList.add(s);
+                checkOutputDesMap.put(productid, s);
             }
         }
-        if (endCheckOutputDesList.size() > 0) {
-            String join = String.join(",", endCheckOutputDesList);
+        List<String> collect = endCheckOutputDesList.stream().distinct().collect(Collectors.toList());
+        if (!collect.isEmpty()) {
+            String join = String.join(",", collect);
             return R.error("以下坯料输出成品重复:" + join);
         }