ezhizao_zx 10 meses atrás
pai
commit
15240a1724

+ 35 - 0
src/main/java/cn/ezhizao/project/business/controller/BizReturnReceiptController.java

@@ -27,6 +27,7 @@ import java.io.StringWriter;
 import java.io.Writer;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 /**
@@ -46,6 +47,8 @@ public class BizReturnReceiptController extends BaseController
     @Resource
     private IBizOutsourcedOrderDetailProcessService bizOutsourcedOrderDetailProcessService;
     @Resource
+    private IBizOutsourcedOrderDetailService bizOutsourcedOrderDetailService;
+    @Resource
     private IBizSupplierService bizSupplierService;
     @Resource
     private RedisCache redisCache;
@@ -425,4 +428,36 @@ public class BizReturnReceiptController extends BaseController
         outputStream.write(resources);
         outputStream.close();
     }
+
+
+    @Log(title = "按炉结算检测", businessType = BusinessType.SELECT)
+    @Transactional
+    @PostMapping("/checkFurnace")
+    public AjaxResult checkFurnace(@RequestBody List<BizReturnReceiptDetail> details) {
+        // 判断明细中有没有按炉结算的明细
+        // 判断按炉结算的明细的发出单明细是否都包含在明细内
+        List<BizOutsourcedOrderDetail> orderDetails = bizOutsourcedOrderDetailService.query().in("id", details.isEmpty() ? Collections.singletonList(0L) : details.stream().map(BizReturnReceiptDetail::getOutsourceDetailId).collect(Collectors.toList())).eq("settlement_type", "2").list();
+        List<BizOutsourcedOrderDetail> allOrderDetails = bizOutsourcedOrderDetailService.query().in("master_id", orderDetails.isEmpty() ? Collections.singletonList(0L) : orderDetails.stream().map(BizOutsourcedOrderDetail::getMasterId).collect(Collectors.toList())).list();
+        if (allOrderDetails.isEmpty()) {
+            return success(true);
+        } else if (allOrderDetails.stream().allMatch(v -> details.stream().anyMatch(e -> e.getOutsourceDetailId().equals(v.getId())))) {
+            return success(true);
+        } else {
+            // 返回信息 哪张外协发出单哪个批次没有包含进收回单
+            List<BizOutsourcedOrderDetail> lackDetails = allOrderDetails.stream().filter(v -> details.stream().noneMatch(e -> e.getOutsourceDetailId().equals(v.getId()))).collect(Collectors.toList());
+            Map<String, List<String>> messageSet = new HashMap<>();
+            lackDetails.forEach(l -> {
+                List<String> lotCodes = messageSet.get(l.getFormCode()) != null ? messageSet.get(l.getFormCode()) : new ArrayList<>();
+                lotCodes.add(l.getLotCode());
+                messageSet.put(l.getFormCode(), lotCodes);
+            });
+            AtomicReference<String> message = new AtomicReference<>("");
+            messageSet.keySet().forEach(l -> {
+                message.set(message + "发出单" + l + "中批次" + messageSet.get(l).stream().collect(Collectors.joining(",")) + ",");
+//                        messageSet.get(l).stream().collect(Collectors.joining(","));
+            });
+            message.set(message + "未包含到收回单。");
+            return AjaxResult.success(message.get(), false);
+        }
+    }
 }