Commit 5b411bad authored by Tong Li's avatar Tong Li

MP

parent f76aaece
...@@ -403,11 +403,11 @@ public class MacroPlannerResultController { ...@@ -403,11 +403,11 @@ public class MacroPlannerResultController {
// 4. 保存结果到 JSON 文件 // 4. 保存结果到 JSON 文件
ResultWriter writer = new ResultWriter(optimizer.getModel(), optimizer.getData(), solveStart); ResultWriter writer = new ResultWriter(optimizer.getModel(), optimizer.getData(), solveStart);
OptimizationResult optimizationResult = writer.buildResult(); OptimizationResult optimizationResult = writer.buildResult();
boolean saved = writer.saveResultToFile(sid, optimizationResult); // boolean saved = writer.saveResultToFile(sid, optimizationResult);
if (saved) { // if (saved) {
mpPispipResultPersistenceService.save(sid, optimizationResult); // mpPispipResultPersistenceService.save(sid, optimizationResult);
} // }
boolean saved=true;
result.put("status", saved ? "SUCCESS" : "SAVE_FAILED"); result.put("status", saved ? "SUCCESS" : "SAVE_FAILED");
result.put("solveElapsedMs", solveEnd - solveStart); result.put("solveElapsedMs", solveEnd - solveStart);
result.put("totalElapsedMs", System.currentTimeMillis() - t0); result.put("totalElapsedMs", System.currentTimeMillis() - t0);
......
...@@ -432,7 +432,7 @@ public class MacroPlannerOptimizer { ...@@ -432,7 +432,7 @@ public class MacroPlannerOptimizer {
l3.addKPI("供应目标偏差", model.getTotalSupplyTarget(), w.getSupplyTargetWeight()); l3.addKPI("供应目标偏差", model.getTotalSupplyTarget(), w.getSupplyTargetWeight());
l3.addKPI("销售优先级", model.getTotalSalesDemandPriority(), l3.addKPI("销售优先级", model.getTotalSalesDemandPriority(),
w.getSalesDemandPriorityWeight(), true); // 负系数 = 最大化 w.getSalesDemandPriorityWeight(), true); // 负系数 = 最大化
// levels.add(l3); levels.add(l3);
// === Level 4: 软约束 (允许 10% 退化, slack=10%) === // === Level 4: 软约束 (允许 10% 退化, slack=10%) ===
StrategyLevel l4 = new StrategyLevel(4, "软约束", 0.10); StrategyLevel l4 = new StrategyLevel(4, "软约束", 0.10);
...@@ -440,7 +440,7 @@ public class MacroPlannerOptimizer { ...@@ -440,7 +440,7 @@ public class MacroPlannerOptimizer {
l4.addKPI("欠库存", model.getTotalMinInventoryLevel(), w.getMinInventoryLevelWeight()); l4.addKPI("欠库存", model.getTotalMinInventoryLevel(), w.getMinInventoryLevelWeight());
l4.addKPI("最小供应不足", model.getTotalMinSupply(), w.getMinSupplyWeight()); l4.addKPI("最小供应不足", model.getTotalMinSupply(), w.getMinSupplyWeight());
l4.addKPI("最大供应超出", model.getTotalMaxSupply(), w.getMaxSupplyWeight()); l4.addKPI("最大供应超出", model.getTotalMaxSupply(), w.getMaxSupplyWeight());
// levels.add(l4); levels.add(l4);
return levels; return levels;
} }
......
...@@ -198,19 +198,19 @@ public class MacroPlannerDataConverter { ...@@ -198,19 +198,19 @@ public class MacroPlannerDataConverter {
// 1. 需求订单 (ApsDemandOrder, 按 deliverytime 时间范围过滤) // 1. 需求订单 (ApsDemandOrder, 按 deliverytime 时间范围过滤)
// 1. 需求订单 (ApsDemandOrder, 按 deliverytime 时间范围过滤) // 1. 需求订单 (ApsDemandOrder, 按 deliverytime 时间范围过滤)
// ctx.apsDemandOrders = apsDemandOrderMapper.selectList(
// new LambdaQueryWrapper<ApsDemandOrder>().eq(ApsDemandOrder::getIsdeleted, 0)
// .ge(ApsDemandOrder::getDeliverytime, ctx.baseTime)
// .lt(ApsDemandOrder::getDeliverytime, horizonEndDateTime));
ctx.apsDemandOrders = apsDemandOrderMapper.selectList( ctx.apsDemandOrders = apsDemandOrderMapper.selectList(
new LambdaQueryWrapper<ApsDemandOrder>().eq(ApsDemandOrder::getIsdeleted, 0)
new LambdaQueryWrapper<ApsDemandOrder>()
.ge(ApsDemandOrder::getDeliverytime, ctx.baseTime) .ge(ApsDemandOrder::getDeliverytime, ctx.baseTime)
.eq(ApsDemandOrder::getCode,"XQDD_20260812_6") .lt(ApsDemandOrder::getDeliverytime, horizonEndDateTime));
.lt(ApsDemandOrder::getDeliverytime, horizonEndDateTime)
);
// ctx.apsDemandOrders = apsDemandOrderMapper.selectList(
//
// new LambdaQueryWrapper<ApsDemandOrder>()
// .ge(ApsDemandOrder::getDeliverytime, ctx.baseTime)
// .eq(ApsDemandOrder::getCode,"XQDD_20260812_6")
// .lt(ApsDemandOrder::getDeliverytime, horizonEndDateTime)
// );
log.info("加载需求订单: {} 条 (时间范围过滤)", ctx.apsDemandOrders.size()); log.info("加载需求订单: {} 条 (时间范围过滤)", ctx.apsDemandOrders.size());
// 2. 收集 materialIds (从 ApsDemandOrder.mmid) // 2. 收集 materialIds (从 ApsDemandOrder.mmid)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment