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_Core/BaseServices/ServiceBase.cs | 94 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 94 insertions(+), 0 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_Core/BaseServices/ServiceBase.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_Core/BaseServices/ServiceBase.cs"
index 6f32ad7..31e32eb 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_Core/BaseServices/ServiceBase.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_Core/BaseServices/ServiceBase.cs"
@@ -150,6 +150,100 @@
}
}
+ protected string ValidatePageOptions(PageDataOptions options)
+ {
+ options = options ?? new PageDataOptions();
+ string where = "";
+ List<SearchParameters> searchParametersList = new List<SearchParameters>();
+ if (options.Filter != null && options.Filter.Count > 0)
+ {
+ searchParametersList.AddRange(options.Filter);
+ }
+ else if (!string.IsNullOrEmpty(options.Wheres))
+ {
+ try
+ {
+ searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+ options.Filter = searchParametersList;
+ }
+ catch { }
+ }
+ QueryRelativeList?.Invoke(searchParametersList);
+
+ for (int i = 0; i < searchParametersList.Count; i++)
+ {
+ if (string.IsNullOrEmpty(searchParametersList[i].Value))
+ {
+ continue;
+ }
+
+ PropertyInfo property = TProperties.Where(c => c.Name.ToUpper() == searchParametersList[i].Name.ToUpper()).FirstOrDefault();
+
+ if (property == null) continue;
+
+ (bool, string, object) result = property.ValidationVal(searchParametersList[i].Value);
+ if (!result.Item1)
+ {
+ continue;
+ }
+
+ LinqExpressionType expressionType = searchParametersList[i].DisplayType.GetLinqCondition();
+ if (expressionType == LinqExpressionType.Equal)
+ {
+ if (string.IsNullOrEmpty(where))
+ {
+ // 閽堝瀛楃涓茬被鍨嬬殑瀛楁浣跨敤妯$硦鏌ヨ
+ //where += $"{searchParametersList[i].Name} like '%{searchParametersList[i].Value}%'";
+ if (searchParametersList[i].Value.ToLower() == "true" || searchParametersList[i].Value.ToLower() == "false")
+ {
+ where += $" {searchParametersList[i].Name} = '{searchParametersList[i].Value.ToLower()}'";
+ }
+ else
+ {
+ where += $"[{searchParametersList[i].Name}] like '%{searchParametersList[i].Value}%'";
+ }
+ }
+ else
+ {
+ // 閽堝甯冨皵绫诲瀷瀛楁杩涜绮剧‘鏌ヨ
+ if (searchParametersList[i].Value.ToLower() == "true" || searchParametersList[i].Value.ToLower() == "false")
+ {
+ where += $" and {searchParametersList[i].Name} = '{searchParametersList[i].Value.ToLower()}'";
+ }
+ else
+ {
+ where += $" and [{searchParametersList[i].Name}] like '%{searchParametersList[i].Value}%'";
+ }
+ }
+ }
+ else
+ {
+ if (searchParametersList[i].DisplayType.GetLinqCondition() == LinqExpressionType.ThanOrEqual)
+ {
+ if (string.IsNullOrEmpty(where))
+ where += $"{searchParametersList[i].Name} >= '{searchParametersList[i].Value}'";
+ else
+ where += $" and {searchParametersList[i].Name} >= '{searchParametersList[i].Value}'";
+ }
+ else if (searchParametersList[i].DisplayType.GetLinqCondition() == LinqExpressionType.LessThanOrEqual)
+ {
+ if (string.IsNullOrEmpty(where))
+ where += $"{searchParametersList[i].Name} <= '{searchParametersList[i].Value}'";
+ else
+ where += $" and {searchParametersList[i].Name} <= '{searchParametersList[i].Value}'";
+ }
+ else
+ {
+ if (string.IsNullOrEmpty(where))
+ where += $"{searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{searchParametersList[i].Value}'";
+ else
+ where += $" and {searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{searchParametersList[i].Value}'";
+ }
+ }
+ }
+ return where;
+ }
+
protected Expression<Func<TEntity, bool>> GetWhereExpression(string propertyName, object propertyValue, ParameterExpression parameter, LinqExpressionType expressionType)
{
Type? proType = typeof(TEntity).GetProperty(propertyName)?.PropertyType;
--
Gitblit v1.9.3