diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeWorkCenterDataController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeWorkCenterDataController.java index 2f08bca..a6d6e4d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeWorkCenterDataController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeWorkCenterDataController.java @@ -1,11 +1,15 @@ package com.ruoyi.system.controller; import java.io.File; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.stream.Collectors; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; @@ -838,11 +842,12 @@ public class KingdeeWorkCenterDataController extends BaseController { @Log(title = "采购订单和采购申请单") @XxlJob("getPurchaseOrder") + @PostMapping("/getPurchaseOrder") public R getPurchaseOrder() { try { // String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069"; - String robotId = "483489b2-b219-468c-851f-f56a34a62d91"; - + //String robotId = "483489b2-b219-468c-851f-f56a34a62d91"; + String robotId = "8af8abea-3f21-4ca7-ad0a-5b7a2cf4d78e"; String currentTime = DateUtil.format(new Date(), "yyyy年MM月dd日 HH:mm:ss"); StringBuilder msg = new StringBuilder(); msg.append("🏭 采购订单和采购申请更新\n\n") @@ -850,11 +855,17 @@ public class KingdeeWorkCenterDataController extends BaseController { .append("🔧 订单数据统计:\n"); // 获取采购订单和采购申请数据 - List purchaseOrderList = JdUtil.getPurchaseOrder(); - List purchaseRequestList = JdUtil.getPurchaseRequestOrder(); - - msg.append("- 采购订单:").append(purchaseOrderList.size()).append("条\n"); + List allPurchaseOrderList = JdUtil.getPurchaseOrder(); + List allpurchaseRequestList = JdUtil.getPurchaseRequestOrder(); + + // 过滤采购订单数据 + List purchaseOrderList = filterPurchaseOrders(allPurchaseOrderList); + // 过滤采购申请单数据 + List purchaseRequestList = filterReqPurchaseOrders(allpurchaseRequestList); + + msg.append("- 采购订单(已过滤):").append(purchaseOrderList.size()).append("条\n"); msg.append("- 采购申请:").append(purchaseRequestList.size()).append("条\n"); + msg.append("- 过滤条件:生产令号0259/240605开头,交货日期小于当前时间\n"); // 生成Excel文件使用采购模板 String fileName = String.format("采购订单和申请数据_%s.xlsx", @@ -872,17 +883,17 @@ public class KingdeeWorkCenterDataController extends BaseController { // 添加采购订单数据 if (!purchaseOrderList.isEmpty()) { List> orderDataList = convertPurchaseOrderToMapList(purchaseOrderList); - dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("PurchaseOrder", orderDataList)); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("PurchaseOrderExcelDTO", orderDataList)); } // 添加采购申请数据 if (!purchaseRequestList.isEmpty()) { List> requestDataList = convertPurchaseRequestToMapList(purchaseRequestList); - dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("PurchaseRequest", requestDataList)); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("PurchaseRequestExcelDTO", requestDataList)); } // 使用采购模板生成Excel - String templatePath = "EXCEL模板/采购订单模板.xlsx"; + String templatePath = "EXCEL模板/采购订单模板1.xlsx"; ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList); // 发送Excel文件 @@ -952,5 +963,171 @@ public class KingdeeWorkCenterDataController extends BaseController { } return mapList; } + /** + * 过滤采购订单数据 + */ + /* private List filterPurchaseOrders(List allOrders) { + String currentTime = DateUtil.format(new Date(), "yyyy-MM-dd"); + + return allOrders.stream() + .filter(order -> { + String productionOrderNo = order.getFUCHNText2(); + String deliveryDate = order.getFDeliveryDate(); + + // 过滤条件1: FUCHNText2 不为空 + if (productionOrderNo == null || productionOrderNo.trim().isEmpty()) { + return false; + } + + // 过滤条件2: 生产令号以NO开头 + if (!productionOrderNo.startsWith("NO")) { + return false; + } + + // 过滤条件3: 生产令号以0259开头或240605开头 + if (!productionOrderNo.startsWith("0259") && !productionOrderNo.startsWith("240605")) { + return false; + } + + // 过滤条件4: 交货日期小于当前时间 + if (deliveryDate != null && !deliveryDate.trim().isEmpty()) { + try { + // 处理日期格式 2024-02-22T00:00:00 + String dateStr = deliveryDate.split("T")[0]; // 提取日期部分 + if (dateStr.compareTo(currentTime) >= 0) { + return false; // 交货日期大于等于当前时间,过滤掉 + } + } catch (Exception e) { + log.warn("解析交货日期失败: {}", deliveryDate, e); + return false; + } + } + + return true; + }) + .collect(java.util.stream.Collectors.toList()); + }*/ + /** + * 过滤采购订单数据 + */ + + /** + * 过滤采购订单数据 + */ + private List filterPurchaseOrders(List allOrders) { + LocalDate today = LocalDate.now(); + DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); + + log.info("开始过滤采购订单,总数: {}, 当前日期: {}", allOrders.size(), today.format(outputFormatter)); + List filteredOrders = new ArrayList<>(); + + for (PurchaseOrderExcelDTO allOrder : allOrders) { + String productionOrderNo = allOrder.getFUCHNText2(); + String deliveryDate = allOrder.getFDeliveryDate(); + + // 条件1: 生产令号不能为空 + if (productionOrderNo == null || productionOrderNo.trim().isEmpty()) { + log.debug("过滤掉: 生产令号为空"); + continue; + } + + // 条件2: 不能以 NO / GMJ / GSC 开头 + if (productionOrderNo.startsWith("NO") + || productionOrderNo.startsWith("GMJ") + || productionOrderNo.startsWith("GSC")) { + log.debug("过滤掉: 生产令号不符合前缀条件: {}", productionOrderNo); + continue; + } + + // 条件3: 交货日期不能为空,并且必须早于今天 + if (deliveryDate == null || deliveryDate.trim().isEmpty()) { + log.debug("过滤掉: 交货日期为空"); + continue; + } + + try { + String dateStr = deliveryDate.split("T")[0]; // 取 yyyy-MM-dd 部分 + LocalDate delivery = LocalDate.parse(dateStr, inputFormatter); + + // 转换格式 + String formatted = delivery.format(outputFormatter); + allOrder.setFDeliveryDate(formatted); + + if (!delivery.isBefore(today)) { + log.debug("过滤掉: 交货日期未过期: {}", formatted); + continue; + } + } catch (Exception e) { + log.warn("解析交货日期失败: {}", deliveryDate, e); + continue; + } + + filteredOrders.add(allOrder); + } + + log.info("过滤完成,剩余数量: {}", filteredOrders.size()); + return filteredOrders; + } + + + /** + * 过滤采购申请订单数据 + */ + private List filterReqPurchaseOrders(List allOrders) { + LocalDate today = LocalDate.now(); + DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); + + log.info("开始过滤采购申请订单,总数: {}, 当前日期: {}", allOrders.size(), today.format(outputFormatter)); + List filteredOrders = new ArrayList<>(); + + for (PurchaseRequestExcelDTO allOrder : allOrders) { + String productionOrderNo = allOrder.getFUCHNText(); + String deliveryDate = allOrder.getFArrivalDate(); + + // 条件1: 生产令号不能为空 + if (productionOrderNo == null || productionOrderNo.trim().isEmpty()) { + log.debug("过滤掉: 生产令号为空"); + continue; + } + + // 条件2: 不能以 NO / 0259 / 240605 开头 + if (productionOrderNo.startsWith("NO") + || productionOrderNo.startsWith("0259") + || productionOrderNo.startsWith("240605")) { + log.debug("过滤掉: 生产令号不符合前缀条件: {}", productionOrderNo); + continue; + } + + // 条件3: 交货日期不能为空,并且必须早于今天 + if (deliveryDate == null || deliveryDate.trim().isEmpty()) { + log.debug("过滤掉: 交货日期为空"); + continue; + } + + try { + String dateStr = deliveryDate.split("T")[0]; // 取 yyyy-MM-dd 部分 + LocalDate delivery = LocalDate.parse(dateStr, inputFormatter); + + // 转换格式 + String formatted = delivery.format(outputFormatter); + allOrder.setFArrivalDate(formatted); + + if (!delivery.isBefore(today)) { + log.debug("过滤掉: 交货日期未过期: {}", formatted); + continue; + } + } catch (Exception e) { + log.warn("解析交货日期失败: {}", deliveryDate, e); + continue; + } + + filteredOrders.add(allOrder); + } + + log.info("过滤完成,剩余数量: {}", filteredOrders.size()); + return filteredOrders; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java index 0d9f18b..035fe56 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java @@ -2528,8 +2528,8 @@ public class JdUtil { JsonObject filterObject = new JsonObject(); JsonArray filterString = new JsonArray(); filterObject.addProperty("FieldName", "FCloseStatus"); - filterObject.addProperty("Compare", "67"); - filterObject.addProperty("Value", 105); + filterObject.addProperty("Compare", "105"); + filterObject.addProperty("Value", "A"); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); @@ -2537,8 +2537,8 @@ public class JdUtil { JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FMRPCloseStatus"); - filterObject1.addProperty("Compare", "67"); - filterObject1.addProperty("Value", 105); + filterObject1.addProperty("Compare", "105"); + filterObject1.addProperty("Value", "A"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); @@ -2546,8 +2546,8 @@ public class JdUtil { JsonObject filterObject2 = new JsonObject(); filterObject2.addProperty("FieldName", "FDocumentStatus"); - filterObject2.addProperty("Compare", "67"); - filterObject2.addProperty("Value", 105); + filterObject2.addProperty("Compare", "105"); + filterObject2.addProperty("Value", "C"); filterObject2.addProperty("Left", ""); filterObject2.addProperty("Right", ""); filterObject2.addProperty("Logic", 0); @@ -2588,8 +2588,8 @@ public class JdUtil { JsonObject filterObject = new JsonObject(); JsonArray filterString = new JsonArray(); filterObject.addProperty("FieldName", "FDocumentStatus"); - filterObject.addProperty("Compare", "67"); - filterObject.addProperty("Value", 105); + filterObject.addProperty("Compare", "105"); + filterObject.addProperty("Value", "C"); filterObject.addProperty("Left", ""); filterObject.addProperty("Right", ""); filterObject.addProperty("Logic", 0); @@ -2597,8 +2597,8 @@ public class JdUtil { JsonObject filterObject1 = new JsonObject(); filterObject1.addProperty("FieldName", "FCloseStatus"); - filterObject1.addProperty("Compare", "67"); - filterObject1.addProperty("Value", 105); + filterObject1.addProperty("Compare", "105"); + filterObject1.addProperty("Value", "A"); filterObject1.addProperty("Left", ""); filterObject1.addProperty("Right", ""); filterObject1.addProperty("Logic", 0); diff --git a/ruoyi-system/src/main/resources/EXCEL模板/采购订单模板1.xlsx b/ruoyi-system/src/main/resources/EXCEL模板/采购订单模板1.xlsx new file mode 100644 index 0000000..7f941c1 Binary files /dev/null and b/ruoyi-system/src/main/resources/EXCEL模板/采购订单模板1.xlsx differ