采购订单 采购申请单 延期提醒 提前提醒
This commit is contained in:
parent
8cc9e23ae2
commit
73a9939d0b
@ -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<Void> 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<PurchaseOrderExcelDTO> purchaseOrderList = JdUtil.getPurchaseOrder();
|
||||
List<PurchaseRequestExcelDTO> purchaseRequestList = JdUtil.getPurchaseRequestOrder();
|
||||
|
||||
msg.append("- 采购订单:").append(purchaseOrderList.size()).append("条\n");
|
||||
List<PurchaseOrderExcelDTO> allPurchaseOrderList = JdUtil.getPurchaseOrder();
|
||||
List<PurchaseRequestExcelDTO> allpurchaseRequestList = JdUtil.getPurchaseRequestOrder();
|
||||
|
||||
// 过滤采购订单数据
|
||||
List<PurchaseOrderExcelDTO> purchaseOrderList = filterPurchaseOrders(allPurchaseOrderList);
|
||||
// 过滤采购申请单数据
|
||||
List<PurchaseRequestExcelDTO> 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<Map<String, Object>> orderDataList = convertPurchaseOrderToMapList(purchaseOrderList);
|
||||
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("PurchaseOrder", orderDataList));
|
||||
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("PurchaseOrderExcelDTO", orderDataList));
|
||||
}
|
||||
|
||||
// 添加采购申请数据
|
||||
if (!purchaseRequestList.isEmpty()) {
|
||||
List<Map<String, Object>> 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<PurchaseOrderExcelDTO> filterPurchaseOrders(List<PurchaseOrderExcelDTO> 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<PurchaseOrderExcelDTO> filterPurchaseOrders(List<PurchaseOrderExcelDTO> 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<PurchaseOrderExcelDTO> 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<PurchaseRequestExcelDTO> filterReqPurchaseOrders(List<PurchaseRequestExcelDTO> 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<PurchaseRequestExcelDTO> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
BIN
ruoyi-system/src/main/resources/EXCEL模板/采购订单模板1.xlsx
Normal file
BIN
ruoyi-system/src/main/resources/EXCEL模板/采购订单模板1.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user