|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|