From 5909649db85ff29faf983154763cc4b7301665e2 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 18 十二月 2025 11:15:31 +0800
Subject: [PATCH] 新增任务调度功能及优化日志处理新增任务状态枚举值 HasSent,表示任务已发送。新增任务调度接口 `ISchedulerCenter`,定义任务调度相关方法。 新增任务工厂 `JobFactory`,通过依赖注入创建任务实例。 新增任务调度服务配置 `JobSetup`,支持依赖注入配置。 新增通用响应类 `ResponseContent`,封装任务调度操作结果。新增任务调度服务实现 `SchedulerCenterServer`,实现任务添加、暂停、恢复等功能。 新增任务信息 DTO `TaskInfoDto` 和任务计划实体类 `TasksQz`。 新增任务配置类 `JobConfig`,描述任务类型及执行间隔。 注释掉部分服务中的旧任务创建逻辑,准备替换为新调度机制。 新增 AGV 任务调度作业 `AgvTaskJob`,处理 AGV 任务调度。 新增 Quartz 中间件 `QuartzJobMiddleWare`,初始化任务调度。 在 `Program.cs` 中集成 Quartz,配置任务调度依赖注入。 优化日志记录和异常处理,提升代码可维护性和调试性。
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 118 ++++++++++++++++++++++++++++++++++-------------------------
1 files changed, 68 insertions(+), 50 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index b65d4c3..eb77ed2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -714,7 +714,7 @@
_logger.LogInformation($"InPickTaskCompleted AddLocationStatusChangeRecord : {ex.Message} ");
}
- _logger.LogInformation($"鎵樼洏鍥炲簱瀹屾垚澶勭悊鎴愬姛 - 浠诲姟鍙�: {task.TaskNum}, 鎵樼洏: {task.PalletCode}, 璁㈠崟: {task.OrderNo}");
+ _logger.LogInformation($"鎵樼洏鍥炲簱瀹屾垚澶勭悊鎴愬姛 - 浠诲姟鍙�: {task.TaskNum}, 鎵樼洏: {task.PalletCode}, 璁㈠崟: {task.OrderNo} 璐т綅鐘舵�侊細{locationInfo.LocationStatus}");
_ = Task.Run(async () =>
{
try
@@ -1136,33 +1136,36 @@
allocatefeedmodel.Details.Add(detailModel);
}
- var groupedResult = allocatefeedmodel.Details.GroupBy(item => new
- {
- item.WarehouseCode,
- item.MaterialCode,
- item.Unit,
- item.LineNo
- }).Select(group => new AllocateDtoDetail
- {
- WarehouseCode = group.Key.WarehouseCode,
- MaterialCode = group.Key.MaterialCode,
- LineNo = group.Key.LineNo,
- Qty = group.Sum(x => x.Qty),
- Unit = group.Key.Unit,
- Barcodes = group.SelectMany(x => x.Barcodes)
- .GroupBy(b => b.Barcode)
- .Select(b => new BarcodeInfo
- {
- Barcode = b.Key,
- BatchNo = b.First().BatchNo,
- SupplyCode = b.First().SupplyCode,
- Qty = b.Max(x => x.Qty),
- Unit = b.First().Unit
- }) .ToList()
- }) .ToList();
+ var groupedResult = allocatefeedmodel.Details
+ .GroupBy(item => new { item.WarehouseCode, item.MaterialCode, item.Unit, item.LineNo })
+ .Select(group =>
+ {
+
+ var deduplicatedBarcodes = group.SelectMany(x => x.Barcodes)
+ .GroupBy(b => b.Barcode)
+ .Select(b => new BarcodeInfo
+ {
+ Barcode = b.Key,
+ BatchNo = b.First().BatchNo,
+ SupplyCode = b.First().SupplyCode,
+ Qty = b.Max(x => x.Qty),
+ Unit = b.First().Unit
+ }).ToList();
+ return new AllocateDtoDetail
+ {
+ WarehouseCode = group.Key.WarehouseCode,
+ MaterialCode = group.Key.MaterialCode,
+ LineNo = group.Key.LineNo,
+ Qty = deduplicatedBarcodes.Sum(b => b.Qty),
+ Unit = group.Key.Unit,
+ Barcodes = deduplicatedBarcodes
+ };
+ }).ToList();
+
allocatefeedmodel.Details = groupedResult;
- var result = await _invokeMESService.FeedbackAllocate(allocatefeedmodel);
+
+ var result = await _invokeMESService.FeedbackAllocate(allocatefeedmodel);
if (result != null && result.code == 200)
{
await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
@@ -1175,6 +1178,19 @@
ReturnToMESStatus = 1,
}).Where(x => x.OrderNo == orderNo).ExecuteCommandAsync();
}
+ else
+ {
+ await _outboundOrderDetailService.Db.Updateable<Dt_OutboundOrderDetail>()
+ .SetColumns(x => x.ReturnToMESStatus == 2)
+ .Where(x => x.OrderId == outboundOrder.Id)
+ .ExecuteCommandAsync();
+
+ await _outboundOrderService.Db.Updateable<Dt_OutboundOrder>()
+ .SetColumns(it => new Dt_OutboundOrder { ReturnToMESStatus = 2, Remark = result.message })
+ .Where(x => x.OrderNo == orderNo)
+ .ExecuteCommandAsync();
+ }
+
}
}
else if (outboundOrder.OrderType == OutOrderTypeEnum.ReCheck.ObjToInt())
@@ -1247,30 +1263,32 @@
}
feedmodel.details.Add(detailModel);
}
- var groupedResult = feedmodel.details.GroupBy(item => new
- {
- item.warehouseCode,
- item.materialCode,
- item.unit,
- item.lineNo
- }).Select(group => new FeedbackOutboundDetailsModel
- {
- warehouseCode = group.Key.warehouseCode,
- materialCode = group.Key.materialCode,
- lineNo = group.Key.lineNo,
- qty = group.Sum(x => x.qty),
- unit = group.Key.unit,
- barcodes = group.SelectMany(x => x.barcodes)
- .GroupBy(b => b.barcode)
- .Select(b => new WIDESEA_DTO.Outbound.BarcodesModel
- {
- barcode = b.Key,
- batchNo = b.First().batchNo,
- supplyCode = b.First().supplyCode,
- qty = b.Max(x => x.qty),
- unit = b.First().unit
- }).ToList()
- }).ToList();
+
+ var groupedResult = feedmodel.details
+ .GroupBy(item => new { item.warehouseCode, item.materialCode, item.unit, item.lineNo })
+ .Select(group =>
+ {
+ var deduplicatedBarcodes = group.SelectMany(x => x.barcodes)
+ .GroupBy(b => b.barcode)
+ .Select(b => new WIDESEA_DTO.Outbound.BarcodesModel
+ {
+ barcode = b.Key,
+ batchNo = b.First().batchNo,
+ supplyCode = b.First().supplyCode,
+ qty = b.Max(x => x.qty),
+ unit = b.First().unit
+ }).ToList();
+ return new FeedbackOutboundDetailsModel
+ {
+ warehouseCode = group.Key.warehouseCode,
+ materialCode = group.Key.materialCode,
+ lineNo = group.Key.lineNo,
+ qty = deduplicatedBarcodes.Sum(b => b.qty),
+ unit = group.Key.unit,
+ barcodes = deduplicatedBarcodes
+ };
+ }).ToList();
+
feedmodel.details = groupedResult;
var result = await _invokeMESService.FeedbackOutbound(feedmodel);
--
Gitblit v1.9.3