From 33846b73b1f13d6d6632e6755a94d7d0fe05508d Mon Sep 17 00:00:00 2001
From: z8018 <1282578289@qq.com>
Date: 星期四, 18 十二月 2025 14:12:15 +0800
Subject: [PATCH] Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/Quartz/ISchedulerCenter.cs | 71 ++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_DTO/Quartz/JobConfig.cs | 16
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Outbound.cs | 279 +++++-----
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs | 19
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs | 44
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs | 58 +-
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/Quartz/JobSetup.cs | 26 +
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/Quartz/ResponseContent.cs | 45 +
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/Quartz/JobFactory.cs | 51 +
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundBatchPickingService.cs | 44
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/Quartz/TasksQz.cs | 80 +++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs | 6
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Jobs/AgvTaskJob.cs | 72 ++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/Quartz/SchedulerCenterServer.cs | 470 ++++++++++++++++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/Quartz/TaskInfoDto.cs | 38 +
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 143 ++--
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Jobs/QuartzJobMildd.cs | 59 ++
17 files changed, 1,233 insertions(+), 288 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_Common/TaskEnum/TaskStatusEnum.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_Common/TaskEnum/TaskStatusEnum.cs"
index 38a980e..d45c3bc 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_Common/TaskEnum/TaskStatusEnum.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_Common/TaskEnum/TaskStatusEnum.cs"
@@ -19,6 +19,12 @@
New = 100,
/// <summary>
+ /// 宸插彂閫�
+ /// </summary>
+ [Description("宸插彂閫�")]
+ HasSent = 105,
+
+ /// <summary>
/// 鍫嗗灈鏈哄緟鎵ц
/// </summary>
[Description("鍫嗗灈鏈哄緟鎵ц")]
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/Quartz/ISchedulerCenter.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/Quartz/ISchedulerCenter.cs"
new file mode 100644
index 0000000..5d250f6
--- /dev/null
+++ "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/Quartz/ISchedulerCenter.cs"
@@ -0,0 +1,71 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA.QuartzJob
+{
+ public interface ISchedulerCenter
+ {
+ /// <summary>
+ /// 寮�鍚换鍔¤皟搴�
+ /// </summary>
+ /// <returns></returns>
+ Task<ResponseContent> StartScheduleAsync();
+ /// <summary>
+ /// 鍋滄浠诲姟璋冨害
+ /// </summary>
+ /// <returns></returns>
+ Task<ResponseContent> StopScheduleAsync();
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <returns></returns>
+ Task<ResponseContent> AddScheduleJobAsync(TasksQz sysSchedule);
+ /// <summary>
+ /// 鍋滄涓�涓换鍔�
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <returns></returns>
+ Task<ResponseContent> StopScheduleJobAsync(TasksQz sysSchedule);
+ /// <summary>
+ /// 妫�娴嬩换鍔℃槸鍚﹀瓨鍦�
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <returns></returns>
+ Task<bool> IsExistScheduleJobAsync(TasksQz sysSchedule);
+ /// <summary>
+ /// 鏆傚仠鎸囧畾鐨勮鍒掍换鍔�
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <returns></returns>
+ Task<ResponseContent> PauseJob(TasksQz sysSchedule);
+ /// <summary>
+ /// 鎭㈠涓�涓换鍔�
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <returns></returns>
+ Task<ResponseContent> ResumeJob(TasksQz sysSchedule);
+
+ /// <summary>
+ /// 鑾峰彇浠诲姟瑙﹀彂鍣ㄧ姸鎬�
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <returns></returns>
+ Task<List<TaskInfoDto>> GetTaskStaus(TasksQz sysSchedule);
+ /// <summary>
+ /// 鑾峰彇瑙﹀彂鍣ㄦ爣璇�
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ string GetTriggerState(string key);
+
+ /// <summary>
+ /// 绔嬪嵆鎵ц 涓�涓换鍔�
+ /// </summary>
+ /// <param name="tasksQz"></param>
+ /// <returns></returns>
+ Task<ResponseContent> ExecuteJobAsync(TasksQz tasksQz);
+ }
+}
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/Quartz/JobFactory.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/Quartz/JobFactory.cs"
new file mode 100644
index 0000000..6ace563
--- /dev/null
+++ "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/Quartz/JobFactory.cs"
@@ -0,0 +1,51 @@
+锘縰sing Quartz;
+using Microsoft.Extensions.DependencyInjection;
+using Quartz.Spi;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WIDESEA.QuartzJob
+{
+ public class JobFactory : IJobFactory
+ {
+ /// <summary>
+ /// 娉ㄥ叆鍙嶅皠鑾峰彇渚濊禆瀵硅薄
+ /// </summary>
+ private readonly IServiceProvider _serviceProvider;
+ public JobFactory(IServiceProvider serviceProvider)
+ {
+ _serviceProvider = serviceProvider;
+ }
+ /// <summary>
+ /// 瀹炵幇鎺ュ彛Job
+ /// </summary>
+ /// <param name="bundle"></param>
+ /// <param name="scheduler"></param>
+ /// <returns></returns>
+ public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
+ {
+ try
+ {
+ var serviceScope = _serviceProvider.CreateScope();
+ var job = serviceScope.ServiceProvider.GetService(bundle.JobDetail.JobType) as IJob;
+ return job;
+
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+
+ public void ReturnJob(IJob job)
+ {
+ var disposable = job as IDisposable;
+ if (disposable != null)
+ {
+ disposable.Dispose();
+ }
+
+ }
+ }
+}
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/Quartz/JobSetup.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/Quartz/JobSetup.cs"
new file mode 100644
index 0000000..e71cb53
--- /dev/null
+++ "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/Quartz/JobSetup.cs"
@@ -0,0 +1,26 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using Quartz;
+using Quartz.Spi;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+
+namespace WIDESEA.QuartzJob
+{
+ /// <summary>
+ /// 浠诲姟璋冨害 鍚姩鏈嶅姟
+ /// </summary>
+ public static class JobSetup
+ {
+ public static void AddJobSetup(this IServiceCollection services)
+ {
+ if (services == null) throw new ArgumentNullException(nameof(services));
+
+ //services.AddSingleton<IJobFactory, JobFactory>();
+ //services.AddTransient<AgvTaskJob>();//Job浣跨敤鐬椂渚濊禆娉ㄥ叆
+ //services.AddSingleton<ISchedulerCenter, SchedulerCenterServer>();
+ }
+ }
+}
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/Quartz/ResponseContent.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/Quartz/ResponseContent.cs"
new file mode 100644
index 0000000..3029388
--- /dev/null
+++ "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/Quartz/ResponseContent.cs"
@@ -0,0 +1,45 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WIDESEA.QuartzJob
+{
+ public class ResponseContent
+ {
+ public ResponseContent()
+ {
+ }
+ public ResponseContent(bool status)
+ {
+ Status = status;
+ }
+ public bool Status { get; set; }
+ public string Code { get; set; }
+ public string Message { get; set; }
+ public object Data { get; set; }
+
+ public ResponseContent OK()
+ {
+ Status = true;
+ return this;
+ }
+
+ public static ResponseContent Instance
+ {
+ get { return new ResponseContent(); }
+ }
+ public ResponseContent OK(string message = null, object data = null)
+ {
+ Status = true;
+ Message = message;
+ Data = data;
+ return this;
+ }
+ public ResponseContent Error(string message = null)
+ {
+ Status = false;
+ Message = message;
+ return this;
+ }
+ }
+}
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/Quartz/SchedulerCenterServer.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/Quartz/SchedulerCenterServer.cs"
new file mode 100644
index 0000000..733cd88
--- /dev/null
+++ "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/Quartz/SchedulerCenterServer.cs"
@@ -0,0 +1,470 @@
+锘縰sing Quartz;
+using Quartz.Impl;
+using Quartz.Impl.Triggers;
+using Quartz.Spi;
+using System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA.QuartzJob
+{
+ public class SchedulerCenterServer : ISchedulerCenter
+ {
+ private Task<IScheduler> _scheduler;
+ private readonly IJobFactory _iocjobFactory;
+ public SchedulerCenterServer(IJobFactory jobFactory)
+ {
+ _iocjobFactory = jobFactory;
+ _scheduler = GetSchedulerAsync();
+ }
+ private Task<IScheduler> GetSchedulerAsync()
+ {
+ if (_scheduler != null)
+ return _scheduler;
+ else
+ {
+ // 浠嶧actory涓幏鍙朣cheduler瀹炰緥
+ NameValueCollection collection = new NameValueCollection
+ {
+ { "quartz.serializer.type", "binary" },
+ };
+ StdSchedulerFactory factory = new StdSchedulerFactory(collection);
+ return _scheduler = factory.GetScheduler();
+ }
+ }
+
+ /// <summary>
+ /// 寮�鍚换鍔¤皟搴�
+ /// </summary>
+ /// <returns></returns>
+ public async Task<ResponseContent> StartScheduleAsync()
+ {
+ var result = new ResponseContent();
+ try
+ {
+ _scheduler.Result.JobFactory = _iocjobFactory;
+ if (!_scheduler.Result.IsStarted)
+ {
+ //绛夊緟浠诲姟杩愯瀹屾垚
+ await _scheduler.Result.Start();
+
+ ConsoleHelper.WriteSuccessLine("浠诲姟璋冨害寮�鍚紒");
+ result = ResponseContent.Instance.OK($"浠诲姟璋冨害寮�鍚垚鍔�");
+ return result;
+ }
+ else
+ {
+ result = ResponseContent.Instance.OK($"浠诲姟璋冨害宸茬粡寮�鍚�");
+ return result;
+ }
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+
+ /// <summary>
+ /// 鍋滄浠诲姟璋冨害
+ /// </summary>
+ /// <returns></returns>
+ public async Task<ResponseContent> StopScheduleAsync()
+ {
+ var result = new ResponseContent();
+ try
+ {
+ if (!_scheduler.Result.IsShutdown)
+ {
+ //绛夊緟浠诲姟杩愯瀹屾垚
+ await _scheduler.Result.Shutdown();
+ //await Console.Out.WriteLineAsync("浠诲姟璋冨害鍋滄锛�");
+ result = ResponseContent.Instance.OK($"浠诲姟璋冨害鍋滄鎴愬姛");
+ return result;
+ }
+ else
+ {
+ result = ResponseContent.Instance.OK($"浠诲姟璋冨害宸茬粡鍋滄");
+ return result;
+ }
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞涓�涓鍒掍换鍔★紙鏄犲皠绋嬪簭闆嗘寚瀹欼Job瀹炵幇绫伙級
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="tasksQz"></param>
+ /// <returns></returns>
+ public async Task<ResponseContent> AddScheduleJobAsync(TasksQz tasksQz)
+ {
+ var result = new ResponseContent();
+
+ if (tasksQz != null)
+ {
+ try
+ {
+ JobKey jobKey = new JobKey(tasksQz.Id.ToString(), tasksQz.JobGroup);
+ if (await _scheduler.Result.CheckExists(jobKey))
+ {
+ result = ResponseContent.Instance.OK($"璇ヤ换鍔¤鍒掑凡缁忓湪鎵ц:銆恵tasksQz.Name}銆�,璇峰嬁閲嶅鍚姩锛�");
+ return result;
+ }
+ #region 璁剧疆寮�濮嬫椂闂村拰缁撴潫鏃堕棿
+
+ if (tasksQz.BeginTime == null)
+ {
+ tasksQz.BeginTime = DateTime.Now;
+ }
+ DateTimeOffset starRunTime = DateBuilder.NextGivenSecondDate(tasksQz.BeginTime, 1);//璁剧疆寮�濮嬫椂闂�
+ if (tasksQz.EndTime == null)
+ {
+ tasksQz.EndTime = DateTime.MaxValue.AddDays(-1);
+ }
+ DateTimeOffset endRunTime = DateBuilder.NextGivenSecondDate(tasksQz.EndTime, 1);//璁剧疆鏆傚仠鏃堕棿
+
+ #endregion
+
+ #region 閫氳繃鍙嶅皠鑾峰彇绋嬪簭闆嗙被鍨嬪拰绫�
+
+ Assembly assembly = Assembly.Load(new AssemblyName(tasksQz.AssemblyName));
+ Type jobType = assembly.GetType(tasksQz.AssemblyName + "." + tasksQz.ClassName);
+
+ #endregion
+ //鍒ゆ柇浠诲姟璋冨害鏄惁寮�鍚�
+ //if (!_scheduler.Result.IsStarted)
+ //{
+ // await StartScheduleAsync();
+ //}
+
+ //浼犲叆鍙嶅皠鍑烘潵鐨勬墽琛岀▼搴忛泦
+ IJobDetail job = new JobDetailImpl(tasksQz.Id.ToString(), tasksQz.JobGroup, jobType);
+ job.JobDataMap.Add("JobParam", tasksQz.JobParams);
+ ITrigger trigger;
+
+ #region 娉涘瀷浼犻��
+ //IJobDetail job = JobBuilder.Create<T>()
+ // .WithIdentity(sysSchedule.Name, sysSchedule.JobGroup)
+ // .Build();
+ #endregion
+
+ if (tasksQz.Cron != null && CronExpression.IsValidExpression(tasksQz.Cron) && tasksQz.TriggerType > 0)
+ {
+ trigger = CreateCronTrigger(tasksQz);
+
+ ((CronTriggerImpl)trigger).MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;
+ }
+ else
+ {
+ trigger = CreateSimpleTrigger(tasksQz);
+ }
+
+ // 鍛婅瘔Quartz浣跨敤鎴戜滑鐨勮Е鍙戝櫒鏉ュ畨鎺掍綔涓�
+ await _scheduler.Result.ScheduleJob(job, trigger);
+ //await Task.Delay(TimeSpan.FromSeconds(120));
+ //await Console.Out.WriteLineAsync("鍏抽棴浜嗚皟搴﹀櫒锛�");
+ //await _scheduler.Result.Shutdown();
+ result = ResponseContent.Instance.OK($"銆恵tasksQz.Name}銆戞垚鍔�");
+ return result;
+ }
+ catch (Exception ex)
+ {
+ result = ResponseContent.Instance.Error($"浠诲姟璁″垝寮傚父:銆恵ex.Message}銆�");
+ return result;
+ }
+ }
+ else
+ {
+ result = ResponseContent.Instance.Error($"浠诲姟璁″垝涓嶅瓨鍦�:銆恵tasksQz?.Name}銆�");
+ return result;
+ }
+ }
+
+ /// <summary>
+ /// 浠诲姟鏄惁瀛樺湪?
+ /// </summary>
+ /// <returns></returns>
+ public async Task<bool> IsExistScheduleJobAsync(TasksQz sysSchedule)
+ {
+ JobKey jobKey = new JobKey(sysSchedule.Id.ToString(), sysSchedule.JobGroup);
+ if (await _scheduler.Result.CheckExists(jobKey))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ /// <summary>
+ /// 鏆傚仠涓�涓寚瀹氱殑璁″垝浠诲姟
+ /// </summary>
+ /// <returns></returns>
+ public async Task<ResponseContent> StopScheduleJobAsync(TasksQz sysSchedule)
+ {
+ var result = new ResponseContent();
+ try
+ {
+ JobKey jobKey = new JobKey(sysSchedule.Id.ToString(), sysSchedule.JobGroup);
+ if (!await _scheduler.Result.CheckExists(jobKey))
+ {
+ result = ResponseContent.Instance.Error($"鏈壘鍒拌鏆傚仠鐨勪换鍔�:銆恵sysSchedule.Name}銆�");
+ return result;
+ }
+ else
+ {
+ await _scheduler.Result.DeleteJob(jobKey);
+ result = ResponseContent.Instance.OK($"銆恵sysSchedule.Name}銆戞垚鍔�");
+ return result;
+ }
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+
+ /// <summary>
+ /// 鎭㈠鎸囧畾鐨勮鍒掍换鍔�
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <returns></returns>
+ public async Task<ResponseContent> ResumeJob(TasksQz sysSchedule)
+ {
+ var result = new ResponseContent();
+ try
+ {
+ JobKey jobKey = new JobKey(sysSchedule.Id.ToString(), sysSchedule.JobGroup);
+ if (!await _scheduler.Result.CheckExists(jobKey))
+ {
+ result = ResponseContent.Instance.Error($"鏈壘鍒拌鎭㈠鐨勪换鍔�:銆恵sysSchedule.Name}銆�");
+ return result;
+ }
+ await _scheduler.Result.ResumeJob(jobKey);
+ result = ResponseContent.Instance.OK($"銆恵sysSchedule.Name}銆戞垚鍔�");
+ return result;
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+ /// <summary>
+ /// 鏆傚仠鎸囧畾鐨勮鍒掍换鍔�
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <returns></returns>
+ public async Task<ResponseContent> PauseJob(TasksQz sysSchedule)
+ {
+ var result = new ResponseContent();
+ try
+ {
+ JobKey jobKey = new JobKey(sysSchedule.Id.ToString(), sysSchedule.JobGroup);
+ if (!await _scheduler.Result.CheckExists(jobKey))
+ {
+ result = ResponseContent.Instance.Error($"鏈壘鍒拌鏆傚仠鐨勪换鍔�:銆恵sysSchedule.Name}銆�");
+ return result;
+ }
+ await _scheduler.Result.PauseJob(jobKey);
+ result = ResponseContent.Instance.Error($"銆恵sysSchedule.Name}銆戞垚鍔�");
+ return result;
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+ #region 鐘舵�佺姸鎬佸府鍔╂柟娉�
+ public async Task<List<TaskInfoDto>> GetTaskStaus(TasksQz sysSchedule)
+ {
+
+ var ls = new List<TaskInfoDto>();
+ var noTask = new List<TaskInfoDto>{ new TaskInfoDto {
+ jobId = sysSchedule.Id.ToString(),
+ jobGroup = sysSchedule.JobGroup,
+ triggerId = "",
+ triggerGroup = "",
+ triggerStatus = "涓嶅瓨鍦�"
+ } };
+ JobKey jobKey = new JobKey(sysSchedule.Id.ToString(), sysSchedule.JobGroup);
+ IJobDetail job = await _scheduler.Result.GetJobDetail(jobKey);
+ if (job == null)
+ {
+ return noTask;
+ }
+ //info.Append(string.Format("浠诲姟ID:{0}\r\n浠诲姟鍚嶇О:{1}\r\n", job.Key.Name, job.Description));
+ var triggers = await _scheduler.Result.GetTriggersOfJob(jobKey);
+ if (triggers == null || triggers.Count == 0)
+ {
+ return noTask;
+ }
+ foreach (var trigger in triggers)
+ {
+ var triggerStaus = await _scheduler.Result.GetTriggerState(trigger.Key);
+ string state = GetTriggerState(triggerStaus.ToString());
+ ls.Add(new TaskInfoDto
+ {
+ jobId = job.Key.Name,
+ jobGroup = job.Key.Group,
+ triggerId = trigger.Key.Name,
+ triggerGroup = trigger.Key.Group,
+ triggerStatus = state
+ });
+ //info.Append(string.Format("瑙﹀彂鍣↖D:{0}\r\n瑙﹀彂鍣ㄥ悕绉�:{1}\r\n鐘舵��:{2}\r\n", item.Key.Name, item.Description, state));
+
+ }
+ return ls;
+ }
+ public string GetTriggerState(string key)
+ {
+ string state = null;
+ if (key != null)
+ key = key.ToUpper();
+ switch (key)
+ {
+ case "1":
+ state = "鏆傚仠";
+ break;
+ case "2":
+ state = "瀹屾垚";
+ break;
+ case "3":
+ state = "鍑洪敊";
+ break;
+ case "4":
+ state = "闃诲";
+ break;
+ case "0":
+ state = "姝e父";
+ break;
+ case "-1":
+ state = "涓嶅瓨鍦�";
+ break;
+ case "BLOCKED":
+ state = "闃诲";
+ break;
+ case "COMPLETE":
+ state = "瀹屾垚";
+ break;
+ case "ERROR":
+ state = "鍑洪敊";
+ break;
+ case "NONE":
+ state = "涓嶅瓨鍦�";
+ break;
+ case "NORMAL":
+ state = "姝e父";
+ break;
+ case "PAUSED":
+ state = "鏆傚仠";
+ break;
+ }
+ return state;
+ }
+ #endregion
+ #region 鍒涘缓瑙﹀彂鍣ㄥ府鍔╂柟娉�
+
+ /// <summary>
+ /// 鍒涘缓SimpleTrigger瑙﹀彂鍣紙绠�鍗曡Е鍙戝櫒锛�
+ /// </summary>
+ /// <param name="sysSchedule"></param>
+ /// <param name="starRunTime"></param>
+ /// <param name="endRunTime"></param>
+ /// <returns></returns>
+ private ITrigger CreateSimpleTrigger(TasksQz sysSchedule)
+ {
+ if (sysSchedule.CycleRunTimes > 0)
+ {
+ ITrigger trigger = TriggerBuilder.Create()
+ .WithIdentity(sysSchedule.Id.ToString(), sysSchedule.JobGroup)
+ .StartAt(sysSchedule.BeginTime.Value)
+ .WithSimpleSchedule(x => x
+ .WithIntervalInSeconds(sysSchedule.IntervalSecond)
+ .WithRepeatCount(sysSchedule.CycleRunTimes - 1))
+ .EndAt(sysSchedule.EndTime.Value)
+ .Build();
+ return trigger;
+ }
+ else
+ {
+ ITrigger trigger = TriggerBuilder.Create()
+ .WithIdentity(sysSchedule.Id.ToString(), sysSchedule.JobGroup)
+ .StartAt(sysSchedule.BeginTime.Value)
+ .WithSimpleSchedule(x => x
+ .WithIntervalInSeconds(sysSchedule.IntervalSecond)
+ .RepeatForever()
+ )
+ .EndAt(sysSchedule.EndTime.Value)
+ .Build();
+ return trigger;
+ }
+ // 瑙﹀彂浣滀笟绔嬪嵆杩愯锛岀劧鍚庢瘡10绉掗噸澶嶄竴娆★紝鏃犻檺寰幆
+
+ }
+ /// <summary>
+ /// 鍒涘缓绫诲瀷Cron鐨勮Е鍙戝櫒
+ /// </summary>
+ /// <param name="m"></param>
+ /// <returns></returns>
+ private ITrigger CreateCronTrigger(TasksQz sysSchedule)
+ {
+ // 浣滀笟瑙﹀彂鍣�
+ return TriggerBuilder.Create()
+ .WithIdentity(sysSchedule.Id.ToString(), sysSchedule.JobGroup)
+ .StartAt(sysSchedule.BeginTime.Value)//寮�濮嬫椂闂�
+ .EndAt(sysSchedule.EndTime.Value)//缁撴潫鏁版嵁
+ .WithCronSchedule(sysSchedule.Cron)//鎸囧畾cron琛ㄨ揪寮�
+ .ForJob(sysSchedule.Id.ToString(), sysSchedule.JobGroup)//浣滀笟鍚嶇О
+ .Build();
+ }
+ #endregion
+
+
+ /// <summary>
+ /// 绔嬪嵆鎵ц 涓�涓换鍔�
+ /// </summary>
+ /// <param name="tasksQz"></param>
+ /// <returns></returns>
+ public async Task<ResponseContent> ExecuteJobAsync(TasksQz tasksQz)
+ {
+ var result = new ResponseContent();
+ try
+ {
+ JobKey jobKey = new JobKey(tasksQz.Id.ToString(), tasksQz.JobGroup);
+
+ //鍒ゆ柇浠诲姟鏄惁瀛樺湪锛屽瓨鍦ㄥ垯 瑙﹀彂涓�娆★紝涓嶅瓨鍦ㄥ垯鍏堟坊鍔犱竴涓换鍔★紝瑙﹀彂浠ュ悗鍐� 鍋滄浠诲姟
+ if (!await _scheduler.Result.CheckExists(jobKey))
+ {
+ //涓嶅瓨鍦� 鍒� 娣诲姞涓�涓鍒掍换鍔�
+ await AddScheduleJobAsync(tasksQz);
+
+ //瑙﹀彂鎵ц涓�娆�
+ await _scheduler.Result.TriggerJob(jobKey);
+
+ //鍋滄浠诲姟
+ await StopScheduleJobAsync(tasksQz);
+
+ result = ResponseContent.Instance.OK($"绔嬪嵆鎵ц璁″垝浠诲姟:銆恵tasksQz.Name}銆戞垚鍔�");
+ }
+ else
+ {
+ await _scheduler.Result.TriggerJob(jobKey);
+ result = ResponseContent.Instance.OK($"绔嬪嵆鎵ц璁″垝浠诲姟:銆恵tasksQz.Name}銆戞垚鍔�");
+ }
+ }
+ catch (Exception ex)
+ {
+ result = ResponseContent.Instance.Error($"绔嬪嵆鎵ц璁″垝浠诲姟澶辫触:銆恵ex.Message}銆�");
+ }
+
+ return result;
+ }
+ }
+}
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/Quartz/TaskInfoDto.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/Quartz/TaskInfoDto.cs"
new file mode 100644
index 0000000..69f43b2
--- /dev/null
+++ "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/Quartz/TaskInfoDto.cs"
@@ -0,0 +1,38 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WIDESEA.QuartzJob
+{
+ public class TaskInfoDto
+ {
+ /// <summary>
+ /// 浠诲姟ID
+ /// </summary>
+ public string jobId { get; set; }
+ /// <summary>
+ /// 浠诲姟鍚嶇О
+ /// </summary>
+ public string jobName { get; set; }
+ /// <summary>
+ /// 浠诲姟鍒嗙粍
+ /// </summary>
+ public string jobGroup { get; set; }
+ /// <summary>
+ /// 瑙﹀彂鍣↖D
+ /// </summary>
+ public string triggerId { get; set; }
+ /// <summary>
+ /// 瑙﹀彂鍣ㄥ悕绉�
+ /// </summary>
+ public string triggerName { get; set; }
+ /// <summary>
+ /// 瑙﹀彂鍣ㄥ垎缁�
+ /// </summary>
+ public string triggerGroup { get; set; }
+ /// <summary>
+ /// 瑙﹀彂鍣ㄧ姸鎬�
+ /// </summary>
+ public string triggerStatus { get; set; }
+ }
+}
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/Quartz/TasksQz.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/Quartz/TasksQz.cs"
new file mode 100644
index 0000000..66377cc
--- /dev/null
+++ "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/Quartz/TasksQz.cs"
@@ -0,0 +1,80 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WIDESEA.QuartzJob
+{
+ /// <summary>
+ /// 浠诲姟璁″垝琛�
+ /// </summary>
+ public class TasksQz
+ {
+ /// <summary>
+ /// 浠诲姟鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+ /// <summary>
+ /// 浠诲姟鍒嗙粍
+ /// </summary>
+ public string JobGroup { get; set; }
+ /// <summary>
+ /// 浠诲姟杩愯鏃堕棿琛ㄨ揪寮�
+ /// </summary>
+ public string Cron { get; set; }
+ /// <summary>
+ /// 浠诲姟鎵�鍦―LL瀵瑰簲鐨勭▼搴忛泦鍚嶇О
+ /// </summary>
+ public string AssemblyName { get; set; }
+ /// <summary>
+ /// 浠诲姟鎵�鍦ㄧ被
+ /// </summary>
+ public string ClassName { get; set; }
+ /// <summary>
+ /// 浠诲姟鎻忚堪
+ /// </summary>
+ public string Remark { get; set; }
+ /// <summary>
+ /// 鎵ц娆℃暟
+ /// </summary>
+ public int RunTimes { get; set; }
+ /// <summary>
+ /// 寮�濮嬫椂闂�
+ /// </summary>
+ public DateTime? BeginTime { get; set; }
+ /// <summary>
+ /// 缁撴潫鏃堕棿
+ /// </summary>
+ public DateTime? EndTime { get; set; }
+ /// <summary>
+ /// 瑙﹀彂鍣ㄧ被鍨嬶紙0銆乻imple 1銆乧ron锛�
+ /// </summary>
+ public int TriggerType { get; set; }
+ /// <summary>
+ /// 鎵ц闂撮殧鏃堕棿, 绉掍负鍗曚綅
+ /// </summary>
+ public int IntervalSecond { get; set; }
+ /// <summary>
+ /// 寰幆鎵ц娆℃暟
+ /// </summary>
+ public int CycleRunTimes { get; set; }
+ /// <summary>
+ /// 鏄惁鍚姩
+ /// </summary>
+ public bool IsStart { get; set; } = true;
+ /// <summary>
+ /// 鎵ц浼犲弬
+ /// </summary>
+ public string JobParams { get; set; }
+
+ public bool? IsDeleted { get; set; }
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTime CreateTime { get; set; } = DateTime.Now;
+ /// <summary>
+ /// 浠诲姟鍐呭瓨涓殑鐘舵��
+ /// </summary>
+ public List<TaskInfoDto> Triggers { get; set; }
+ public int Id { get; set; }
+ }
+}
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_DTO/Quartz/JobConfig.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_DTO/Quartz/JobConfig.cs"
new file mode 100644
index 0000000..7e74895
--- /dev/null
+++ "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_DTO/Quartz/JobConfig.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Quartz
+{
+ public class JobConfig
+ {
+ public Type JobType { get; set; }
+ public string Identity { get; set; }
+ public string Group { get; set; }
+ public int IntervalInSeconds { get; set; }
+ }
+}
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_OutboundService/OutboundBatchPickingService.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_OutboundService/OutboundBatchPickingService.cs"
index a1e6320..cd12e24 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_OutboundService/OutboundBatchPickingService.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_OutboundService/OutboundBatchPickingService.cs"
@@ -3665,29 +3665,29 @@
});
- var essTask = new TaskModel()
- {
- taskType = "putaway",
- taskGroupCode = "",
- groupPriority = 0,
- tasks = new List<TasksType>{ new() {
- taskCode = returnTask.TaskNum.ToString(),
- taskPriority = 0,
- taskDescribe = new TaskDescribeType
- {
- containerCode = palletCode,
- containerType = "CT_KUBOT_STANDARD",
- fromLocationCode = stations.GetValueOrDefault(targetAddress) ?? "",
- toStationCode = "",
- toLocationCode = returnTask.TargetAddress,
- deadline = 0,
- storageTag = ""
- }
- } }
- };
+ //var essTask = new TaskModel()
+ //{
+ // taskType = "putaway",
+ // taskGroupCode = "",
+ // groupPriority = 0,
+ // tasks = new List<TasksType>{ new() {
+ // taskCode = returnTask.TaskNum.ToString(),
+ // taskPriority = 0,
+ // taskDescribe = new TaskDescribeType
+ // {
+ // containerCode = palletCode,
+ // containerType = "CT_KUBOT_STANDARD",
+ // fromLocationCode = stations.GetValueOrDefault(targetAddress) ?? "",
+ // toStationCode = "",
+ // toLocationCode = returnTask.TargetAddress,
+ // deadline = 0,
+ // storageTag = ""
+ // }
+ // } }
+ //};
- var resultTask = await _eSSApiService.CreateTaskAsync(essTask);
- _logger.LogInformation($"ReturnRemaining 鍒涘缓浠诲姟鎴愬姛: {resultTask}");
+ //var resultTask = await _eSSApiService.CreateTaskAsync(essTask);
+ //_logger.LogInformation($"ReturnRemaining 鍒涘缓浠诲姟鎴愬姛: {resultTask}");
}
catch (Exception ex)
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_OutboundService/OutboundPickingService.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_OutboundService/OutboundPickingService.cs"
index 145c076..19550fb 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_OutboundService/OutboundPickingService.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_OutboundService/OutboundPickingService.cs"
@@ -1678,29 +1678,29 @@
//if (moveResult)
//{
// 鍒涘缓鍥炲簱浠诲姟
- var essTask = new TaskModel()
- {
- taskType = "putaway",
- taskGroupCode = "",
- groupPriority = 0,
- tasks = new List<TasksType>{ new() {
- taskCode = returnTask.TaskNum.ToString(),
- taskPriority = 0,
- taskDescribe = new TaskDescribeType
- {
- containerCode = palletCode,
- containerType = "CT_KUBOT_STANDARD",
- fromLocationCode = stations.GetValueOrDefault(targetAddress) ?? "",
- toStationCode = "",
- toLocationCode = returnTask.TargetAddress,
- deadline = 0,
- storageTag = ""
- }
- } }
- };
+ //var essTask = new TaskModel()
+ //{
+ // taskType = "putaway",
+ // taskGroupCode = "",
+ // groupPriority = 0,
+ // tasks = new List<TasksType>{ new() {
+ // taskCode = returnTask.TaskNum.ToString(),
+ // taskPriority = 0,
+ // taskDescribe = new TaskDescribeType
+ // {
+ // containerCode = palletCode,
+ // containerType = "CT_KUBOT_STANDARD",
+ // fromLocationCode = stations.GetValueOrDefault(targetAddress) ?? "",
+ // toStationCode = "",
+ // toLocationCode = returnTask.TargetAddress,
+ // deadline = 0,
+ // storageTag = ""
+ // }
+ // } }
+ //};
- var resultTask = await _eSSApiService.CreateTaskAsync(essTask);
- _logger.LogInformation($"ReturnRemaining 鍒涘缓浠诲姟鎴愬姛: {resultTask}");
+ //var resultTask = await _eSSApiService.CreateTaskAsync(essTask);
+ //_logger.LogInformation($"ReturnRemaining 鍒涘缓浠诲姟鎴愬姛: {resultTask}");
//}
}
catch (Exception ex)
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 eb77ed2..73308c9 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"
@@ -292,7 +292,7 @@
task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
// BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
- var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.浜哄伐鍒犻櫎);
+ var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
if (!result)
{
await Db.Deleteable(task).ExecuteCommandAsync();
@@ -502,27 +502,27 @@
locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
_locationInfoService.Repository.UpdateData(locationInfo);
- var outloks = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>().Where(x => x.TaskNum == task.TaskNum).ToListAsync();
-
- var stockids = outloks.Select(x => x.StockId).ToList();
-
- _stockService.StockInfoService.Db.Updateable<Dt_StockInfo>()
- .SetColumns(it => new Dt_StockInfo
- {
- StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt()
- })
- .Where(it => stockids.Contains(it.Id))
- .ExecuteCommand();
-
- _stockService.StockInfoDetailService.Db.Updateable<Dt_StockInfoDetail>()
- .SetColumns(it => new Dt_StockInfoDetail
- {
- Status = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt()
- })
- .Where(it => stockids.Contains(it.StockId))
- .ExecuteCommand();
+ var stock = _stockService.StockInfoService.Db.Queryable<Dt_StockInfo>()
+ .Includes(x => x.Details)
+ .Where(x => x.PalletCode == task.PalletCode)
+ .First();
+ stock.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+ stock.LocationCode = "";
+
+ stock.Details.ForEach(x =>
+ {
+ x.Status = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+ });
+
+ _stockService.StockInfoService.Db.UpdateNav(stock).IncludesAllFirstLayer().ExecuteCommand();
+
+ var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚);
+ if (!result)
+ {
+ await Db.Deleteable(task).ExecuteCommandAsync();
+ }
return WebResponseContent.Instance.OK();
@@ -566,10 +566,9 @@
stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
_stockRepository.UpdateData(stockInfo);
- var outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().First(x => x.OrderNo == task.OrderNo);
+ //var outboundOrder = _outboundOrderService.Db.Queryable<Dt_OutboundOrder>().First(x => x.OrderNo == task.OrderNo);
task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
- // BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
var result = _task_HtyService.DeleteAndMoveIntoHty(task, OperateTypeEnum.浜哄伐鍒犻櫎);
if (!result)
{
@@ -584,14 +583,14 @@
_logger.LogInformation($"InEmptyTaskCompleted AddLocationStatusChangeRecord : {ex.Message} ");
}
- if (outboundOrder != null)
- {
- await HandleOutboundOrderToMESCompletion(outboundOrder, outboundOrder.OrderNo);
- }
- else
- {
- _logger.LogInformation($"TaskService InEmptyTaskCompleted: {task.TaskNum} ,鏈壘鍒板嚭搴撳崟銆� ");
- }
+ //if (outboundOrder != null)
+ //{
+ // await HandleOutboundOrderToMESCompletion(outboundOrder, outboundOrder.OrderNo);
+ //}
+ //else
+ //{
+ // _logger.LogInformation($"TaskService InEmptyTaskCompleted: {task.TaskNum} ,鏈壘鍒板嚭搴撳崟銆� ");
+ //}
return content;
}
@@ -636,23 +635,23 @@
var beforelocationStatus = locationInfo.LocationStatus;
// 鑾峰彇鎵�鏈夊洖搴撲腑鐨勫嚭搴撻攣瀹氳褰�
- var returnLocks = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>()
- .Where(it => it.OrderNo == task.OrderNo &&
- it.PalletCode == task.PalletCode &&
- it.Status == (int)OutLockStockStatusEnum.鍥炲簱涓�)
- .ToListAsync();
+ //var returnLocks = await _outStockLockInfoService.Db.Queryable<Dt_OutStockLockInfo>()
+ // .Where(it => it.OrderNo == task.OrderNo &&
+ // it.PalletCode == task.PalletCode &&
+ // it.Status == (int)OutLockStockStatusEnum.鍥炲簱涓�)
+ // .ToListAsync();
// 鏇存柊鍑哄簱閿佸畾璁板綍鐘舵�佷负鍥炲簱瀹屾垚
- foreach (var lockInfo in returnLocks)
- {
- lockInfo.Status = (int)OutLockStockStatusEnum.宸插洖搴�;
- }
+ //foreach (var lockInfo in returnLocks)
+ //{
+ // lockInfo.Status = (int)OutLockStockStatusEnum.宸插洖搴�;
+ //}
- if (returnLocks.Any())
- {
- await _outStockLockInfoService.Db.Updateable(returnLocks).ExecuteCommandAsync();
- _logger.LogInformation($"鏇存柊{returnLocks.Count}鏉¢攣瀹氳褰曚负宸插洖搴撶姸鎬�");
- }
+ //if (returnLocks.Any())
+ //{
+ // await _outStockLockInfoService.Db.Updateable(returnLocks).ExecuteCommandAsync();
+ // _logger.LogInformation($"鏇存柊{returnLocks.Count}鏉¢攣瀹氳褰曚负宸插洖搴撶姸鎬�");
+ //}
// 鏇存柊搴撳瓨淇℃伅
stockInfo.LocationCode = task.TargetAddress;
@@ -664,7 +663,7 @@
foreach (var detail in stockInfo.Details)
{
detail.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
- detail.OutboundQuantity = 0; // 鍏ュ簱瀹屾垚鏃跺嚭搴撴暟閲忔竻闆�
+ detail.OutboundQuantity = 0;
}
_stockService.StockInfoDetailService.Repository.UpdateData(stockInfo.Details);
}
@@ -673,7 +672,7 @@
// 鍒犻櫎闆跺簱瀛樻暟鎹�
await DeleteZeroQuantityStockDetails(stockInfo.Id);
- await UpdateAffectedOrderDetails(task.OrderNo, returnLocks);
+ //await UpdateAffectedOrderDetails(task.OrderNo, returnLocks);
// 鏇存柊璐т綅鐘舵��
if (stockInfo.PalletType == PalletTypeEnum.Empty.ObjToInt())
{
@@ -697,7 +696,7 @@
await Db.Deleteable(task).ExecuteCommandAsync();
}
- await RecalculateOrderStatus(task.OrderNo);
+ //await RecalculateOrderStatus(task.OrderNo);
try
{
// 璁板綍璐т綅鐘舵�佸彉鏇�
@@ -714,32 +713,32 @@
_logger.LogInformation($"InPickTaskCompleted AddLocationStatusChangeRecord : {ex.Message} ");
}
- _logger.LogInformation($"鎵樼洏鍥炲簱瀹屾垚澶勭悊鎴愬姛 - 浠诲姟鍙�: {task.TaskNum}, 鎵樼洏: {task.PalletCode}, 璁㈠崟: {task.OrderNo} 璐т綅鐘舵�侊細{locationInfo.LocationStatus}");
- _ = Task.Run(async () =>
- {
- try
- {
- var outboundOrder = await _outboundOrderService.Db.Queryable<Dt_OutboundOrder>()
- .FirstAsync(x => x.OrderNo == task.OrderNo);
+ //_logger.LogInformation($"鎵樼洏鍥炲簱瀹屾垚澶勭悊鎴愬姛 - 浠诲姟鍙�: {task.TaskNum}, 鎵樼洏: {task.PalletCode}, 璁㈠崟: {task.OrderNo} 璐т綅鐘舵�侊細{locationInfo.LocationStatus}");
+ //_ = Task.Run(async () =>
+ //{
+ // try
+ // {
+ // var outboundOrder = await _outboundOrderService.Db.Queryable<Dt_OutboundOrder>()
+ // .FirstAsync(x => x.OrderNo == task.OrderNo);
- if (outboundOrder != null)
- {
- // 妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚锛屽彧鏈夊畬鎴愭椂鎵嶅悜MES鍙嶉
- if (outboundOrder.OrderStatus == (int)OutOrderStatusEnum.鍑哄簱瀹屾垚)
- {
- await HandleOutboundOrderToMESCompletion(outboundOrder, outboundOrder.OrderNo);
- }
- else
- {
- _logger.LogInformation($"璁㈠崟{task.OrderNo}鐘舵�佷负{outboundOrder.OrderStatus}锛屾殏涓嶅悜MES鍙嶉");
- }
- }
- }
- catch (Exception ex)
- {
- _logger.LogError($"寮傛MES鍙嶉澶勭悊澶辫触 - OrderNo: {task.OrderNo}, Error: {ex.Message}");
- }
- });
+ // if (outboundOrder != null)
+ // {
+ // // 妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚锛屽彧鏈夊畬鎴愭椂鎵嶅悜MES鍙嶉
+ // if (outboundOrder.OrderStatus == (int)OutOrderStatusEnum.鍑哄簱瀹屾垚)
+ // {
+ // await HandleOutboundOrderToMESCompletion(outboundOrder, outboundOrder.OrderNo);
+ // }
+ // else
+ // {
+ // _logger.LogInformation($"璁㈠崟{task.OrderNo}鐘舵�佷负{outboundOrder.OrderStatus}锛屾殏涓嶅悜MES鍙嶉");
+ // }
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // _logger.LogError($"寮傛MES鍙嶉澶勭悊澶辫触 - OrderNo: {task.OrderNo}, Error: {ex.Message}");
+ // }
+ //});
}
catch (Exception ex)
{
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_Inbound.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_Inbound.cs"
index 2028d49..1966a7b 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_Inbound.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_Inbound.cs"
@@ -127,33 +127,33 @@
_stockRepository.UpdateData(stockInfo);
_unitOfWorkManage.CommitTran();
}
- TaskModel esstask = new TaskModel()
- {
- taskType = "putaway",
- taskGroupCode = "",
- groupPriority = 0,
- tasks = new List<TasksType>
- {
- new()
- {
- taskCode=newTask.TaskNum.ToString(),
- taskPriority=0,
- taskDescribe=new TaskDescribeType{
- containerCode=palletCode,
- containerType= "CT_KUBOT_STANDARD",
- fromLocationCode=stations.GetValueOrDefault(stationCode)??"",
- toStationCode="",
- toLocationCode=locationInfo.LocationCode,
- deadline=0,storageTag=""
- }
- }
- }
- };
+ //TaskModel esstask = new TaskModel()
+ //{
+ // taskType = "putaway",
+ // taskGroupCode = "",
+ // groupPriority = 0,
+ // tasks = new List<TasksType>
+ // {
+ // new()
+ // {
+ // taskCode=newTask.TaskNum.ToString(),
+ // taskPriority=0,
+ // taskDescribe=new TaskDescribeType{
+ // containerCode=palletCode,
+ // containerType= "CT_KUBOT_STANDARD",
+ // fromLocationCode=stations.GetValueOrDefault(stationCode)??"",
+ // toStationCode="",
+ // toLocationCode=locationInfo.LocationCode,
+ // deadline=0,storageTag=""
+ // }
+ // }
+ // }
+ //};
- var result = await _eSSApiService.CreateTaskAsync(esstask);
+ //var result = await _eSSApiService.CreateTaskAsync(esstask);
- _logger.LogInformation("鍒涘缓浠诲姟杩斿洖: " + result);
- if (result)
+ //_logger.LogInformation("鍒涘缓浠诲姟杩斿洖: " + result);
+ //if (result)
{
try
{
@@ -169,10 +169,10 @@
}
return WebResponseContent.Instance.OK();
}
- else
- {
- return WebResponseContent.Instance.Error("涓嬪彂鏈哄櫒浜轰换鍔″け璐ワ紒");
- }
+ //else
+ //{
+ // return WebResponseContent.Instance.Error("涓嬪彂鏈哄櫒浜轰换鍔″け璐ワ紒");
+ //}
}
catch (Exception ex)
{
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_Outbound.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_Outbound.cs"
index e5090c9..e85a591 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_Outbound.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_Outbound.cs"
@@ -88,31 +88,33 @@
_unitOfWorkManage.CommitTran();
- TaskModel esstask = new TaskModel()
- {
- taskType = "carry",
- taskGroupCode = "",
- groupPriority = 0,
- tasks = new List<TasksType>
- {
- new()
- {
- taskCode=task.TaskNum.ToString(),
- taskPriority=0,
- taskDescribe=new TaskDescribeType{
- containerCode=stockInfo.PalletCode,
- containerType= "CT_KUBOT_STANDARD",
- fromLocationCode=stockInfo.LocationCode??"",
- toStationCode="",
- toLocationCode="1-2",
- deadline=0,storageTag=""
- }
- }
- }
- };
- var result = await _eSSApiService.CreateTaskAsync(esstask);
+ //TaskModel esstask = new TaskModel()
+ //{
+ // taskType = "carry",
+ // taskGroupCode = "",
+ // groupPriority = 0,
+ // tasks = new List<TasksType>
+ // {
+ // new()
+ // {
+ // taskCode=task.TaskNum.ToString(),
+ // taskPriority=0,
+ // taskDescribe=new TaskDescribeType
+ // {
+ // containerCode=stockInfo.PalletCode,
+ // containerType= "CT_KUBOT_STANDARD",
+ // fromLocationCode=stockInfo.LocationCode??"",
+ // toStationCode="",
+ // toLocationCode="1-2",
+ // deadline=0,
+ // storageTag=""
+ // }
+ // }
+ // }
+ //};
+ //var result = await _eSSApiService.CreateTaskAsync(esstask);
- _logger.LogInformation("鍒涘缓浠诲姟PalletOutboundTask 杩斿洖: " + result);
+ //_logger.LogInformation("鍒涘缓浠诲姟PalletOutboundTask 杩斿洖: " + result);
}
return content.OK("绌烘墭鍑哄簱鎴愬姛!");
}
@@ -314,45 +316,46 @@
_outboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
}
_unitOfWorkManage.CommitTran();
- TaskModel esstask = new TaskModel()
- {
- taskType = "carry",
- taskGroupCode = "",
- groupPriority = 0,
- tasks = new List<TasksType>()
- };
+ return WebResponseContent.Instance.OK();
+ //TaskModel esstask = new TaskModel()
+ //{
+ // taskType = "carry",
+ // taskGroupCode = "",
+ // groupPriority = 0,
+ // tasks = new List<TasksType>()
+ //};
- foreach (var task in tasks)
- {
- esstask.
- tasks.Add(new TasksType
- {
- taskCode = task.TaskNum.ToString(),
- taskPriority = 0,
- taskDescribe = new TaskDescribeType
- {
- containerCode = task.PalletCode,
- containerType = "CT_KUBOT_STANDARD",
- fromLocationCode = task.SourceAddress ?? "",
- toStationCode = "",
- toLocationCode = task.TargetAddress,
- deadline = 0,
- storageTag = ""
- }
- }
- );
- }
- var result = await _eSSApiService.CreateTaskAsync(esstask);
+ //foreach (var task in tasks)
+ //{
+ // esstask.
+ // tasks.Add(new TasksType
+ // {
+ // taskCode = task.TaskNum.ToString(),
+ // taskPriority = 0,
+ // taskDescribe = new TaskDescribeType
+ // {
+ // containerCode = task.PalletCode,
+ // containerType = "CT_KUBOT_STANDARD",
+ // fromLocationCode = task.SourceAddress ?? "",
+ // toStationCode = "",
+ // toLocationCode = task.TargetAddress,
+ // deadline = 0,
+ // storageTag = ""
+ // }
+ // }
+ // );
+ //}
+ //var result = await _eSSApiService.CreateTaskAsync(esstask);
- _logger.LogInformation("鍒涘缓浠诲姟PalletOutboundTask 杩斿洖: " + result);
- if (result)
- {
- return WebResponseContent.Instance.OK();
- }
- else
- {
- return WebResponseContent.Instance.Error("涓嬪彂鏈哄櫒浜轰换鍔″け璐ワ紒");
- }
+ //_logger.LogInformation("鍒涘缓浠诲姟PalletOutboundTask 杩斿洖: " + result);
+ //if (result)
+ //{
+ // return WebResponseContent.Instance.OK();
+ //}
+ //else
+ //{
+ // return WebResponseContent.Instance.Error("涓嬪彂鏈哄櫒浜轰换鍔″け璐ワ紒");
+ //}
}
catch (Exception ex)
{
@@ -776,46 +779,47 @@
_outboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
}
_unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
//PushTasksToWCS(tasks);
- TaskModel esstask = new TaskModel()
- {
- taskType = "carry",
- taskGroupCode = "",
- groupPriority = 0,
- tasks = new List<TasksType>()
- };
+ //TaskModel esstask = new TaskModel()
+ //{
+ // taskType = "carry",
+ // taskGroupCode = "",
+ // groupPriority = 0,
+ // tasks = new List<TasksType>()
+ //};
- foreach (var task in tasks)
- {
- esstask.
- tasks.Add(new TasksType
- {
- taskCode = task.TaskNum.ToString(),
- taskPriority = 0,
- taskDescribe = new TaskDescribeType
- {
- containerCode = task.PalletCode,
- containerType = "CT_KUBOT_STANDARD",
- fromLocationCode = task.SourceAddress ?? "",
- toStationCode = "",
- toLocationCode = task.TargetAddress,
- deadline = 0,
- storageTag = ""
- }
- }
- );
- }
- var result = await _eSSApiService.CreateTaskAsync(esstask);
+ //foreach (var task in tasks)
+ //{
+ // esstask.
+ // tasks.Add(new TasksType
+ // {
+ // taskCode = task.TaskNum.ToString(),
+ // taskPriority = 0,
+ // taskDescribe = new TaskDescribeType
+ // {
+ // containerCode = task.PalletCode,
+ // containerType = "CT_KUBOT_STANDARD",
+ // fromLocationCode = task.SourceAddress ?? "",
+ // toStationCode = "",
+ // toLocationCode = task.TargetAddress,
+ // deadline = 0,
+ // storageTag = ""
+ // }
+ // }
+ // );
+ //}
+ //var result = await _eSSApiService.CreateTaskAsync(esstask);
- _logger.LogInformation("鍒涘缓浠诲姟PalletOutboundTask 杩斿洖: " + result);
- if (result)
- {
- return WebResponseContent.Instance.OK();
- }
- else
- {
- return WebResponseContent.Instance.Error("涓嬪彂鏈哄櫒浜轰换鍔″け璐ワ紒");
- }
+ //_logger.LogInformation("鍒涘缓浠诲姟PalletOutboundTask 杩斿洖: " + result);
+ //if (result)
+ //{
+ // return WebResponseContent.Instance.OK();
+ //}
+ //else
+ //{
+ // return WebResponseContent.Instance.Error("涓嬪彂鏈哄櫒浜轰换鍔″け璐ワ紒");
+ //}
}
catch (Exception ex)
@@ -1173,46 +1177,47 @@
BaseDal.AddData(tasks);
_locationInfoService.UpdateData(locationInfos);
_unitOfWorkManage.CommitTran();
- TaskModel esstask = new TaskModel()
- {
- taskType = "carry",
- taskGroupCode = "",
- groupPriority = 0,
- tasks = new List<TasksType>()
- };
-
- foreach (var task in tasks)
- {
- esstask.
- tasks.Add(new TasksType
- {
- taskCode = task.TaskNum.ToString(),
- taskPriority = 0,
- taskDescribe = new TaskDescribeType
- {
- containerCode = task.PalletCode,
- containerType = "CT_KUBOT_STANDARD",
- fromLocationCode = task.SourceAddress ?? "",
- toStationCode = "",
- toLocationCode = task.TargetAddress,
- deadline = 0,
- storageTag = ""
- }
- }
- );
- }
- var result = await _eSSApiService.CreateTaskAsync(esstask);
-
- _logger.LogInformation("鍒涘缓浠诲姟PalletOutboundTask 杩斿洖: " + result);
- if (result)
- {
- return WebResponseContent.Instance.OK();
- }
- else
- {
- return WebResponseContent.Instance.Error("涓嬪彂鏈哄櫒浜轰换鍔″け璐ワ紒");
- }
content.OK();
+ //TaskModel esstask = new TaskModel()
+ //{
+ // taskType = "carry",
+ // taskGroupCode = "",
+ // groupPriority = 0,
+ // tasks = new List<TasksType>()
+ //};
+
+ //foreach (var task in tasks)
+ //{
+ // esstask.
+ // tasks.Add(new TasksType
+ // {
+ // taskCode = task.TaskNum.ToString(),
+ // taskPriority = 0,
+ // taskDescribe = new TaskDescribeType
+ // {
+ // containerCode = task.PalletCode,
+ // containerType = "CT_KUBOT_STANDARD",
+ // fromLocationCode = task.SourceAddress ?? "",
+ // toStationCode = "",
+ // toLocationCode = task.TargetAddress,
+ // deadline = 0,
+ // storageTag = ""
+ // }
+ // }
+ // );
+ //}
+ //var result = await _eSSApiService.CreateTaskAsync(esstask);
+
+ //_logger.LogInformation("鍒涘缓浠诲姟PalletOutboundTask 杩斿洖: " + result);
+ //if (result)
+ //{
+ // return WebResponseContent.Instance.OK();
+ //}
+ //else
+ //{
+ // return WebResponseContent.Instance.Error("涓嬪彂鏈哄櫒浜轰换鍔″け璐ワ紒");
+ //}
+ //content.OK();
}
catch (Exception ex)
{
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/Jobs/AgvTaskJob.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/Jobs/AgvTaskJob.cs"
new file mode 100644
index 0000000..4cc8dd5
--- /dev/null
+++ "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/Jobs/AgvTaskJob.cs"
@@ -0,0 +1,72 @@
+锘縰sing Quartz;
+using SqlSugar;
+using WIDESEA_Common.TaskEnum;
+using WIDESEA_DTO.Basic;
+using WIDESEA_IBasicService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer
+{
+ [DisallowConcurrentExecution]
+ public class AgvTaskJob : IJob
+ {
+ private readonly ILogger<AgvTaskJob> _logger;
+ private readonly ISqlSugarClient _db;
+ private readonly IESSApiService _eSSApiService;
+ // 閫氳繃鏋勯�犲嚱鏁扮洿鎺ユ敞鍏ヤ緷璧�
+ public AgvTaskJob(ILogger<AgvTaskJob> logger, ISqlSugarClient db, IESSApiService eSSApiService)
+ {
+ _logger = logger;
+ _db = db;
+ _eSSApiService = eSSApiService;
+ }
+
+ public async Task Execute(IJobExecutionContext context)
+ {
+ try
+ {
+ var tasks = await _db.Queryable<Dt_Task>()
+ .Where(x => x.TaskStatus == (int)TaskStatusEnum.New)
+ .ToListAsync();
+ foreach (var item in tasks)
+ {
+ TaskModel esstask = new TaskModel()
+ {
+ taskType = item.TaskType.GetTaskTypeGroup()==TaskTypeGroup.InboundGroup? "putaway": "carry",
+ taskGroupCode = "",
+ groupPriority = 0,
+ tasks = new List<TasksType>
+ {
+ new()
+ {
+ taskCode=item.TaskNum.ToString(),
+ taskPriority=0,
+ taskDescribe = new TaskDescribeType
+ {
+ containerCode = item.PalletCode,
+ containerType = "CT_KUBOT_STANDARD",
+ fromLocationCode = item.SourceAddress,
+ toStationCode = "",
+ toLocationCode = item.TargetAddress,
+ deadline = 0,
+ }
+ }
+ }
+ };
+
+ var result = await _eSSApiService.CreateTaskAsync(esstask);
+ if (result)
+ {
+ item.TaskStatus = (int)TaskStatusEnum.HasSent;
+ await _db.Updateable(item).ExecuteCommandAsync();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "瀹氭椂浠诲姟鎵ц澶辫触");
+ }
+ }
+
+ }
+}
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/Jobs/QuartzJobMildd.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/Jobs/QuartzJobMildd.cs"
new file mode 100644
index 0000000..cdd7ef8
--- /dev/null
+++ "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/Jobs/QuartzJobMildd.cs"
@@ -0,0 +1,59 @@
+锘�
+using Microsoft.AspNetCore.Builder;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using WIDESEA.QuartzJob;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_WMSServer
+{
+ /// <summary>
+ /// Quartz 鍚姩鏈嶅姟
+ /// </summary>
+ public static class QuartzJobMiddleWare
+ {
+ public static void UseQuartzJobMildd(this IApplicationBuilder app)
+ {
+ if (app == null) throw new ArgumentNullException(nameof(app));
+ var schedulerCenter = app.ApplicationServices.GetService(typeof(ISchedulerCenter)) as ISchedulerCenter;
+ try
+ {
+ var allQzServices = new List<TasksQz>()
+ {
+ new TasksQz()
+ {
+ Id = 1,
+ AssemblyName = "WIDESEA_WMSServer",
+ ClassName = "AgvTaskJob",
+ CreateTime = DateTime.Now,
+ IntervalSecond = 3,
+ IsDeleted = false,
+ IsStart = false,
+ JobGroup = "WIDESEA_WMSServer",
+ Name = "AgvTaskJob",
+ TriggerType = 0
+ },
+
+ };
+ foreach (var item in allQzServices)
+ {
+ var ResuleModel = schedulerCenter.AddScheduleJobAsync(item).Result;
+ if (ResuleModel.Status)
+ {
+ ConsoleHelper.WriteSuccessLine($"{item.ClassName}鍚姩鎴愬姛");
+ }
+ else
+ {
+ Console.Out.WriteLine($"QuartzNetJob{item.Name}鍚姩澶辫触锛侀敊璇俊鎭細{ResuleModel.Message}");
+ }
+ }
+ schedulerCenter.StartScheduleAsync();
+ }
+ catch (Exception e)
+ {
+ throw;
+ }
+ }
+ }
+}
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/Program.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/Program.cs"
index 26711fb..540eeae 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/Program.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/Program.cs"
@@ -10,11 +10,14 @@
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using Quartz;
+using Quartz.Impl;
+using Quartz.Spi;
using Serilog;
using System.Net.Security;
using System.Reflection;
using System.Runtime.ConstrainedExecution;
using System.Text;
+using WIDESEA.QuartzJob;
using WIDESEA_Core;
using WIDESEA_Core.Authorization;
using WIDESEA_Core.BaseServices;
@@ -24,8 +27,11 @@
using WIDESEA_Core.Helper;
//using WIDESEA_Core.HostedService;
using WIDESEA_Core.Middlewares;
+using WIDESEA_DTO.Quartz;
+using WIDESEA_WMSServer;
using WIDESEA_WMSServer.Filter;
using WIDESEA_WMSServer.Jobs;
+using static Quartz.Logging.OperationName;
var builder = WebApplication.CreateBuilder(args);
@@ -149,14 +155,16 @@
client.BaseAddress = new Uri(erpurl!);
client.Timeout = TimeSpan.FromSeconds(30);
-}) ;
-
+});
+builder.Services.AddSingleton<IJobFactory, JobFactory>();
+builder.Services.AddTransient<AgvTaskJob>();//Job使用瞬时依赖注入
+builder.Services.AddSingleton<ISchedulerCenter, SchedulerCenterServer>();
+
builder.Services.AddQuartz(q =>
{
var jobKey = new JobKey("ErpJob");
q.AddJob<ErpJob>(opts => opts.WithIdentity(jobKey));
-
// 添加触发器 - 每天10:00, 14:00, 20:00执行
q.AddTrigger(opts => opts
@@ -171,14 +179,13 @@
.ForJob(inventoryLockJobKey)
.WithIdentity("InventoryLockJob-trigger")
.WithCronSchedule("0 0/10 * * * ?")); // 每10分钟执行一次
-
});
-
builder.Services.AddQuartzHostedService(q => q.WaitForJobsToComplete = true);
var app = builder.Build();
-
+app.UseQuartzJobMildd();
+
app.UseMiniProfiler();//性能分析器
app.ConfigureApplication();//配置文件
app.UseApplicationSetup();//启动配置
--
Gitblit v1.9.3