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_BasicService/LocationInfoService.cs | 40 +++++++++++++++++++++++++++++++++-------
1 files changed, 33 insertions(+), 7 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_BasicService/LocationInfoService.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_BasicService/LocationInfoService.cs"
index 48640ac..0a34266 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_BasicService/LocationInfoService.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_BasicService/LocationInfoService.cs"
@@ -116,7 +116,7 @@
private readonly static object _locker = new object();
static List<LocationCache> locationCaches = new List<LocationCache>();
- private int locationCacheTime = 10;
+ private int locationCacheTime = 20;
/// <summary>
///
/// </summary>
@@ -140,24 +140,46 @@
List<string> lockLocationCodes = locationCaches.Select(x => x.LocationCode).ToList();
+ //Dictionary<string, SqlSugar.OrderByType> orderBy = new Dictionary<string, OrderByType>()
+ //{
+ // { nameof(Dt_LocationInfo.RoadwayNo),OrderByType.Asc },
+ // { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
+ // { nameof(Dt_LocationInfo.Column),OrderByType.Asc },
+ // { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
+ // { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
+ //};
+
Dictionary<string, SqlSugar.OrderByType> orderBy = new Dictionary<string, OrderByType>()
{
- { nameof(Dt_LocationInfo.RoadwayNo),OrderByType.Asc },
+ //{ nameof(Dt_LocationInfo.RoadwayNo),OrderByType.Asc },
{ nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Row),OrderByType.Asc },
{ nameof(Dt_LocationInfo.Column),OrderByType.Asc },
{ nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
- { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
+
};
+
var first = BaseDal.QueryFirst(x => x.LocationType == locationType && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
if (first != null)
{
locationCaches.Add(new LocationCache { LocationCode = first?.LocationCode, DateTime = DateTime.Now });
- Db.Updateable<Dt_LocationInfo>().SetColumns(x => new Dt_LocationInfo
+
+ using (var sugarClient = new SqlSugarClient(new ConnectionConfig
{
- LocationStatus = (int)LocationStatusEnum.InStockLock,
- }).Where(x => x.Id == first.Id).ExecuteCommand();
- }
+ ConnectionString = DBContext.ConnectionString,
+ DbType = DBContext.DbType,
+ IsAutoCloseConnection = true,
+ InitKeyType = InitKeyType.Attribute
+ }))
+ {
+ sugarClient.Updateable<Dt_LocationInfo>().SetColumns(x => new Dt_LocationInfo
+ {
+ LocationStatus = (int)LocationStatusEnum.InStockLock,
+ }).Where(x => x.Id == first.Id).ExecuteCommand();
+ }
+
+ }
return first;
}
@@ -189,6 +211,10 @@
if (first != null)
{
locationCaches.Add(new LocationCache { LocationCode = first.LocationCode, DateTime = DateTime.Now });
+ Db.Updateable<Dt_LocationInfo>().SetColumns(x => new Dt_LocationInfo
+ {
+ LocationStatus = (int)LocationStatusEnum.InStockLock,
+ }).Where(x => x.Id == first.Id).ExecuteCommand();
}
return first;
--
Gitblit v1.9.3