From 786c5ca17012ff3a01faf466b751bdbe70629b97 Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期一, 25 八月 2025 15:25:46 +0800
Subject: [PATCH] 1
---
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 248 +++++++++++++++++++++++++++++++++++++++---------
1 files changed, 199 insertions(+), 49 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
index f82ab1f..ae3874d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
@@ -1,4 +1,5 @@
锘�#region << 鐗� 鏈� 娉� 閲� >>
+
/*----------------------------------------------------------------
* 鍛藉悕绌洪棿锛歐IDESEAWCS_Tasks.ConveyorLineJob
* 鍒涘缓鑰咃細鑳$搴�
@@ -11,25 +12,21 @@
* 淇敼鏃堕棿锛�
* 鐗堟湰锛歏1.0.1
* 淇敼璇存槑锛�
- *
+ *
*----------------------------------------------------------------*/
+
#endregion << 鐗� 鏈� 娉� 閲� >>
-using AutoMapper;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
-using Quartz;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
using System.Threading.Tasks;
+using AutoMapper;
+using Quartz;
+using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
-using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_Tasks.ConveyorLineJob;
@@ -39,72 +36,225 @@
public class CommonConveyorLineJob : JobBase, IJob, IDisposable
{
private readonly ITaskService _taskService;
+ private readonly ITaskRepository _taskRepository;
+ private readonly ITaskCZRepository _taskCZRepository;
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
private readonly IRouterService _routerService;
private readonly IMapper _mapper;
+ private readonly ITaskCZDetailsRepository _detailsRepository;
- public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper)
+ public CommonConveyorLineJob(ITaskService taskService, ITaskCZDetailsRepository detailsRepository, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, ITaskCZRepository taskCZRepository)
{
_taskService = taskService;
_taskExecuteDetailService = taskExecuteDetailService;
_routerService = routerService;
_mapper = mapper;
+ _taskRepository = taskRepository;
+ _taskCZRepository = taskCZRepository;
+ _detailsRepository = detailsRepository;
}
public Task Execute(IJobExecutionContext context)
{
- //Console.Out.WriteLine(DateTime.Now);
try
{
+ // 浠庝笂涓嬫枃涓幏鍙� JobParams 骞惰浆鎹负 CommonConveyorLine 绫诲瀷
CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams");
- if (conveyorLine != null)
+ if (conveyorLine == null)
{
- short[] values = conveyorLine.Communicator.Read<short>("DB2.0", 20);
-
- //bool result = conveyorLine.Communicator.Write("DB1.0", "AAABBB");
- //string testVal = conveyorLine.Communicator.Read<string>("DB1.0");
-
- List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode);
- List<Task> tasks = new List<Task>();
- foreach (string childDeviceCode in childDeviceCodes)
- {
- //Task task = Task.Run(() =>
- //{
- ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode);
- if (command != null)
- {
- DeviceProtocolDetailDTO? deviceProtocolDetail = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.ProtocalDetailValue == command.InteractiveSignal.ToString() && x.DeviceProParamName == nameof(ConveyorLineTaskCommand.InteractiveSignal));
- if (deviceProtocolDetail != null)
- {
- MethodInfo? method = GetType().GetMethod(deviceProtocolDetail.ProtocolDetailType);
- if (method != null)
- {
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode });
- }
- else
- {
- //todo 鏈壘鍒版柟娉曟椂
- }
- }
- }
- //});
- //tasks.Add(task);
- }
-
- Task.WaitAll(tasks.ToArray());
+ throw new Exception("JobParams 涓嶅寘鍚� CommonConveyorLine 绫诲瀷鍙傛暟");
}
+ // 瀹氫箟绾夸綋瀹炵洏鍏ュ簱璇锋眰鐨勫湴鍧�鍜屼换鍔$被鍨�
+ var requests = new Dictionary<string, string>
+ {
+ { "DB1002.693.0", "ZJXL-WLX002" },
+ { "DB1002.1093.0", "FJXL-WLX002" }
+ };
+
+ // 瀹氫箟绾夸綋绌虹洏鍥炴祦璇锋眰鐨勫湴鍧�鍜屼换鍔$被鍨�
+ var requestsKP = new Dictionary<string, string>
+ {
+ { "DB1002.1893.0", "ZJXL-KPHLX001" },
+ { "DB1002.2293.0", "FJXL-KPHLX001" }
+ };
+
+ // 澶勭悊瀹炵洏鍏ュ簱璇锋眰
+ ProcessRequests(conveyorLine, requests, "涓嬬嚎璇锋眰鍏ュ簱");
+
+ // 澶勭悊绌虹洏鍥炴祦璇锋眰
+ ProcessKpRequests(conveyorLine, requestsKP);
}
catch (Exception ex)
{
- //Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
+ // 璁板綍寮傚父淇℃伅
+ // Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString());
+ ConsoleHelper.WriteErrorLine($"{nameof(CommonConveyorLineJob)}: 鍙戠敓寮傚父 - {ex.Message}");
}
finally
{
+ // 鍐欒皟璇曚俊鎭�
WriteDebug("CommonConveyorLineJob", "test");
- //Console.Out.WriteLine(DateTime.Now);
+ // Console.Out.WriteLine(DateTime.Now);
}
+
return Task.CompletedTask;
+ }
+
+ private void ProcessRequests(CommonConveyorLine conveyorLine, Dictionary<string, string> requests, string requestType)
+ {
+ foreach (var request in requests)
+ {
+ var isDownRequest = conveyorLine.Communicator.Read<bool>(request.Key);
+ if (!isDownRequest)
+ {
+ continue;
+ }
+
+ string fromAdd = request.Value;
+ string taskType = request.Value.Contains("ZJXL") ? "姝f瀬" : "璐熸瀬";
+
+ // 鏌ヨ鏄惁瀛樺湪宸茬敓鎴愮殑鏂颁换鍔�
+ var task = _taskRepository.QueryFirst(x => x.SourceAddress == fromAdd);//&& x.TaskState == (int)TaskInStatusEnum.InNew
+ if (task != null)
+ {
+ ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}{requestType},浠诲姟宸茬敓鎴愬瓨鍦紝绋嶅悗閲嶈瘯......");
+ continue;
+ }
+
+ // 鏌ヨ浠诲姟绫诲瀷瀵瑰簲鐨刢zTask
+ DtCZTask czTask = _taskCZRepository.QueryFirst(x => x.TaskType == taskType && (x.TaskStatus == TaskInStatusEnum.InFinish.ToString() || x.TaskStatus == TaskInStatusEnum.Line_InExecuting.ToString()));
+ if (czTask == null)
+ {
+ ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}{requestType},{taskType}浠诲姟涓嶅瓨鍦紝绋嶅悗閲嶈瘯......");
+ continue;
+ }
+
+ // 鍒涘缓骞舵坊鍔犳柊浠诲姟鍒颁换鍔′粨搴�
+ task = CreateTask(fromAdd, czTask.TaskEndAddress, czTask.TaskOrderNo, czTask.TaskProductCode, taskType, czTask.Id);
+ _taskRepository.AddData(task);
+ ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}{requestType},浠诲姟宸茬敓鎴愶紝绛夊緟鎵ц......");
+ }
+ }
+
+ private void ProcessKpRequests(CommonConveyorLine conveyorLine, Dictionary<string, string> requestsKP)
+ {
+ foreach (var request in requestsKP)
+ {
+ var isDownRequest = conveyorLine.Communicator.Read<bool>(request.Key);
+ if (!isDownRequest)
+ {
+ continue;
+ }
+
+ string fromAdd = request.Value;
+ string taskType = request.Value.Contains("ZJXL") ? "姝f瀬" : "璐熸瀬"; //request.Value.Contains("ZJXL") ? "姝f瀬" :
+
+ // 鏍规嵁浠诲姟绫诲瀷纭畾璇锋眰鍦板潃
+ (string upRequest, string gmRequest, string gmState) = GetRequestAddresses(taskType);
+
+ var isUpRequest = conveyorLine.Communicator.Read<bool>(upRequest);
+ var isGMRequest = conveyorLine.Communicator.Read<bool>(gmRequest);//鏆傚瓨绾胯姹�
+ var isGMState = conveyorLine.Communicator.Read<int>(gmState);//鏆傚瓨绾垮嚭鍏ュ簱绫诲瀷鍒囨崲
+
+ // 鏍规嵁鏉′欢鍒涘缓浠诲姟瀵硅薄
+ Dt_Task task = null;
+ if (isUpRequest)
+ {
+ List<Dt_Task> dt_Task = _taskRepository.QueryData(x => x.SourceAddress == fromAdd && x.TaskState == (int)TaskInStatusEnum.InPending);
+ if (dt_Task.Count <= 0) { continue; }
+ var tasks = dt_Task.Where(x => x.SourceAddress == fromAdd).OrderBy(t => t.CreateDate).First();
+ tasks.TaskState = (int)TaskInStatusEnum.InNew;
+ _taskService.UpdateData(tasks);
+ }
+ //else if (isGMRequest && isGMState == 1)
+ //{
+ // task = CreateTask(fromAdd, "WaitBind", "姝f瀬鐗╂祦绾�002鐨勪笂鏂欒姹�", "闅旇啘绌烘墭鐩�", taskType);
+ //}
+
+ //// 娣诲姞浠诲姟鍒颁换鍔¤〃
+ //if (task != null)
+ //{
+ // _taskRepository.AddData(task);
+ //}
+ }
+ }
+
+ private (string upRequest, string gmRequest, string gmState) GetRequestAddresses(string taskType)
+ {
+ if (taskType == "姝f瀬")
+ {
+ // 鐗╂祦绾�002鐨勪笂鏂欒姹�
+ return ("DB1002.93.0", "DB1002.2493.0", "DB1002.2424.0");
+ }
+ else
+ {
+ // 鐗╂祦绾�002鐨勪笂鏂欒姹�
+ return ("DB1002.1293.0", "DB1002.2893.0", "DB1002.2824.0");
+ }
+ }
+
+ // 杈呭姪鏂规硶锛氬垱寤轰换鍔″璞�
+ private Dt_Task CreateTask(string currentAddress, string targetAddress, string remark, string palletCode, string taskType, int czTaskID = 0)
+ {
+ if (targetAddress != "WaitBind")
+ {
+ var details = _detailsRepository.QueryData(x => x.TaskEndAddress == targetAddress).OrderBy(x => x.CreateDate).Take(2).ToList();
+ foreach (var item in details)
+ {
+ var taskCZ = _taskCZRepository.QueryFirst(x => x.TaskTaskID == item.TaskTaskID);
+ if (taskCZ.TaskType.Contains("姝f瀬"))
+ {
+ taskCZ.TaskZJFinishNumber += 1;
+ _detailsRepository.DeleteData(item);
+ }
+ else
+ {
+ taskCZ.TaskFJFinishNumber += 1;
+ _detailsRepository.DeleteData(item);
+ }
+ if (taskCZ.TaskZJFinishNumber == taskCZ.TaskNumber || taskCZ.TaskFJFinishNumber == taskCZ.TaskNumber)
+ {
+ _taskCZRepository.DeleteData(taskCZ);
+
+ }
+
+ var isTrue = _taskCZRepository.UpdateData(taskCZ);
+ }
+ }
+ Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == currentAddress);
+ if (dt_Task != null)
+ {
+ return null;
+ }
+ int type = 0;
+ if (targetAddress.Contains("ZC"))
+ {
+ type = 2;
+ }
+ else
+ {
+ type = 1;
+ }
+ return new Dt_Task
+ {
+ TaskNum = _taskService.GetTaskNum(),
+ CreateDate = DateTime.Now,
+ Creater = "system",
+ CurrentAddress = currentAddress,
+ SourceAddress = currentAddress,
+ TaskState = targetAddress != "WaitBind" ? (int)TaskInStatusEnum.InNew : (int)TaskInStatusEnum.InPending,
+ TaskType = type,
+ Grade = 1,
+ PalletCode = palletCode,
+ TargetAddress = targetAddress,
+ NextAddress = targetAddress,
+ Barcode = "",
+ Roadway = "AGV",
+ WMSId = czTaskID > 0 ? czTaskID : 0,
+ Remark = remark,
+ Floor = 3
+ };
}
/// <summary>
@@ -229,4 +379,4 @@
GC.SuppressFinalize(this);
}
}
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3