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_AllocateService/AllocateDetailService.cs | 79 ++++++++++++++++++++++++++++++---------
1 files changed, 60 insertions(+), 19 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_AllocateService/AllocateDetailService.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_AllocateService/AllocateDetailService.cs"
index 16ac24f..3130d90 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_AllocateService/AllocateDetailService.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_AllocateService/AllocateDetailService.cs"
@@ -15,37 +15,78 @@
{
public class AllocateDetailService : ServiceBase<Dt_AllocateOrderDetail, IRepository<Dt_AllocateOrderDetail>>, IAllocateDetailService
{
- public AllocateDetailService(IRepository<Dt_AllocateOrderDetail> BaseDal) : base(BaseDal)
+ public readonly IRepository<Dt_AllocateOrder> _allocateOrderRepository;
+ public AllocateDetailService(IRepository<Dt_AllocateOrderDetail> BaseDal, IRepository<Dt_AllocateOrder> allocateOrderRepository) : base(BaseDal)
{
+ _allocateOrderRepository = allocateOrderRepository;
}
IRepository<Dt_AllocateOrderDetail> IAllocateDetailService.Repository => BaseDal;
- public override PageGridData<Dt_AllocateOrderDetail> GetPageData(PageDataOptions options)
+ public override PageGridData<Dt_OutboundOrderDetail> GetDetailPage(PageDataOptions options)
{
+ string wheres = ValidatePageOptions(options);
+ //鑾峰彇鎺掑簭瀛楁
+ Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+ List<OrderByModel> orderByModels = new List<OrderByModel>();
+ foreach (var item in orderbyDic)
+ {
+ OrderByModel orderByModel = new()
+ {
+ FieldName = item.Key,
+ OrderByType = item.Value
+ };
+ orderByModels.Add(orderByModel);
+ }
- ISugarQueryable<Dt_AllocateOrderDetail> sugarQueryable1 = BaseDal.Db.Queryable<Dt_AllocateOrderDetail>();
+
+ int totalCount = 0;
+ List<SearchParameters> searchParametersList = new List<SearchParameters>();
if (!string.IsNullOrEmpty(options.Wheres))
{
-
- List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
- int totalCount = 0;
- if (searchParametersList.Count > 0)
+ try
{
- {
- SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_AllocateOrderDetail.OrderId).FirstLetterToLower());
- if (searchParameters != null)
- {
- sugarQueryable1 = sugarQueryable1.Where(x => x.OrderId == searchParameters.Value.ObjToInt());
- var dataList = sugarQueryable1.ToPageList(options.Page, options.Rows, ref totalCount);
- return new PageGridData<Dt_AllocateOrderDetail>(totalCount, dataList);
- }
- }
-
-
+ searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+ options.Filter = searchParametersList;
}
+ catch { }
}
- return new PageGridData<Dt_AllocateOrderDetail>();
+ //var data = BaseDal.Db.Queryable<Dt_AllocateOrderDetail>()
+ // .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+ // .OrderBy(orderByModels)
+ // .ToPageList(options.Page, options.Rows, ref totalCount);
+ //Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.Id == (int)options.Value);
+ //Dt_InboundOrder _InboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == allocateOrder.UpperOrderNo).First();
+ //var details = _inboundOrderDetailRepository.QueryData(x => x.OrderId == _InboundOrder.Id );
+ //foreach (var item in data)
+ //{
+ // var detail = details.Where(x => x.MaterielCode == item.MaterielCode).FirstOrDefault();
+ // if (detail != null)
+ // {
+ // item.OrderQuantity = detail.OrderQuantity;
+ // item.ReceiptQuantity = detail.ReceiptQuantity;
+ // item.OverInQuantity = detail.OverInQuantity;
+ // item.OrderDetailStatus = detail.OrderDetailStatus;
+ // }
+ //}
+ //return new PageGridData<Dt_AllocateOrderDetail>(totalCount, data);
+
+ try
+ {
+ Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.Id == options.Filter.FirstOrDefault().Value.ObjToInt());
+ Dt_OutboundOrder _InboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == allocateOrder.UpperOrderNo).First();
+ var Id = _InboundOrder == null ? 0 : _InboundOrder.Id;
+ var data = BaseDal.Db.Queryable<Dt_OutboundOrderDetail>()
+ .Where(x => x.OrderId == Id)
+ .OrderBy(orderByModels)
+ .ToPageList(options.Page, options.Rows, ref totalCount);
+
+ return new PageGridData<Dt_OutboundOrderDetail>(totalCount, data);
+ }
+ catch(Exception ex)
+ {
+ throw new Exception("鏃犳槑缁�");
+ }
}
}
}
--
Gitblit v1.9.3