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_WMSServer/Controllers/Outbound/OutboundController.cs | 49 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 44 insertions(+), 5 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_WMSServer/Controllers/Outbound/OutboundController.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_WMSServer/Controllers/Outbound/OutboundController.cs"
index dab5a3a..d7a771a 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_WMSServer/Controllers/Outbound/OutboundController.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_WMSServer/Controllers/Outbound/OutboundController.cs"
@@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
+using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_DTO.CalcOut;
@@ -40,21 +41,47 @@
}
}
+ object lockObj = new object();
+
[HttpPost, Route("CompleteOutboundWithBarcode"), AllowAnonymous]
public WebResponseContent CompleteOutboundWithBarcode([FromBody] OutboundCompleteRequestDTO request)
{
try
{
- if (!ModelState.IsValid)
- return WebResponseContent.Instance.Error(string.Join("; ", ModelState.Values
- .SelectMany(v => v.Errors)
- .Select(e => e.ErrorMessage)));
+ lock (lockObj)
+ {
+ if (!ModelState.IsValid)
+ return WebResponseContent.Instance.Error(string.Join("; ", ModelState.Values
+ .SelectMany(v => v.Errors)
+ .Select(e => e.ErrorMessage)));
- return _outboundService.CompleteOutboundWithBarcode(request);
+ return _outboundService.CompleteOutboundWithBarcode(request);
+ }
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error($"鍑哄簱鎵弿鎿嶄綔澶辫触: {ex.Message}");
+ }
+ }
+
+ [HttpPost, Route("CompleteOutboundWithPallet"), AllowAnonymous]
+ public WebResponseContent CompleteOutboundWithPallet([FromBody] OutboundCompletePalletRequestDTO request)
+ {
+ try
+ {
+ lock (lockObj)
+ {
+ if (!ModelState.IsValid)
+ return WebResponseContent.Instance.Error(string.Join("; ", ModelState.Values
+ .SelectMany(v => v.Errors)
+ .Select(e => e.ErrorMessage)));
+
+ return _outboundService.CompleteOutboundWithPallet(request);
+ }
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error($"鏁寸鍑哄簱鎿嶄綔澶辫触: {ex.Message}");
}
}
@@ -69,5 +96,17 @@
{
return _outboundService.QueryPickedList(orderNo, palletCode);
}
+
+ [HttpPost, Route("EmptyBox"), AllowAnonymous]
+ public async Task<WebResponseContent> EmptyBox([FromBody] ReturnToWarehouseDTO returnToWarehouse)
+ {
+ return await _outboundService.EmptyBox(returnToWarehouse.palletCode);
+ }
+
+ [HttpPost, Route("ReturnToWarehouse"), AllowAnonymous]
+ public async Task<WebResponseContent> ReturnToWarehouse([FromBody]ReturnToWarehouseDTO returnToWarehouse)
+ {
+ return await _outboundService.ReturnToWarehouse(returnToWarehouse.palletCode, returnToWarehouse.orderNo, returnToWarehouse.station);
+ }
}
}
--
Gitblit v1.9.3