From 0864509e1eb593c3dedb66196ec19fe51437922b Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期一, 26 五月 2025 10:25:42 +0800
Subject: [PATCH] 新增货位管理,PDA扫码生成任务烘烤出料,烘烤回炉,空托回流
---
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 220 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 162 insertions(+), 58 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 7ee7a24..227329f 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,19 +12,14 @@
* 淇敼鏃堕棿锛�
* 鐗堟湰锛歏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;
@@ -31,7 +27,6 @@
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
-using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_Tasks.ConveyorLineJob;
@@ -46,8 +41,9 @@
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, ITaskRepository taskRepository, ITaskCZRepository taskCZRepository)
+ public CommonConveyorLineJob(ITaskService taskService, ITaskCZDetailsRepository detailsRepository, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, ITaskCZRepository taskCZRepository)
{
_taskService = taskService;
_taskExecuteDetailService = taskExecuteDetailService;
@@ -55,6 +51,7 @@
_mapper = mapper;
_taskRepository = taskRepository;
_taskCZRepository = taskCZRepository;
+ _detailsRepository = detailsRepository;
}
public Task Execute(IJobExecutionContext context)
@@ -71,57 +68,22 @@
// 瀹氫箟绾夸綋瀹炵洏鍏ュ簱璇锋眰鐨勫湴鍧�鍜屼换鍔$被鍨�
var requests = new Dictionary<string, string>
{
- { "DB1002.293.0", "ZJXL-WLX002" },
- { "DB1002.1493.0", "FJXL-WLX002" }
+ { "DB1002.1493.0", "ZJXL-WLX002" },
+ { "DB1002.1093.0", "FJXL-WLX002" }
};
- foreach (var request in requests)
+ // 瀹氫箟绾夸綋绌虹洏鍥炴祦璇锋眰鐨勫湴鍧�鍜屼换鍔$被鍨�
+ var requestsKP = new Dictionary<string, string>
{
- var isDownRequest = conveyorLine.Communicator.Read<bool>(request.Key);
- if (!isDownRequest)
- {
- continue;
- }
+ { "DB1002.1893.0", "ZJXL-KPHLX001" },
+ { "DB1002.2293.0", "FJXL-KPHLX001" }
+ };
- string fromAdd = request.Value;
- string taskType = request.Value.Contains("ZJXL") ? "姝f瀬" : "璐熸瀬";
+ // 澶勭悊瀹炵洏鍏ュ簱璇锋眰
+ //ProcessRequests(conveyorLine, requests, "涓嬬嚎璇锋眰鍏ュ簱");
- // 鏌ヨ鏄惁瀛樺湪宸茬敓鎴愮殑鏂颁换鍔�
- var task = _taskRepository.QueryFirst(x => x.SourceAddress == fromAdd && x.TaskState == (int)TaskInStatusEnum.InNew);
- if (task != null)
- {
- ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}涓嬬嚎璇锋眰鍏ュ簱,浠诲姟宸茬敓鎴愬瓨鍦紝绋嶅悗閲嶈瘯......");
- continue;
- }
-
- // 鏌ヨ浠诲姟绫诲瀷瀵瑰簲鐨刢zTask
- DtCZTask czTask = _taskCZRepository.QueryFirst(x => x.TaskType == taskType);
- if (czTask == null)
- {
- ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}涓嬬嚎璇锋眰鍏ュ簱,{taskType}浠诲姟涓嶅瓨鍦紝绋嶅悗閲嶈瘯......");
- continue;
- }
-
- // 鍒涘缓鏂扮殑浠诲姟骞舵坊鍔犲埌浠诲姟浠撳簱
- task = new Dt_Task()
- {
- TaskNum = _taskService.GetTaskNum(),
- CreateDate = DateTime.Now,
- Creater = "system",
- CurrentAddress = fromAdd,
- SourceAddress = fromAdd,
- TaskState = (int)TaskInStatusEnum.InNew,
- TaskType = (int)TaskInboundTypeEnum.Inbound,
- Grade = 1,
- PalletCode = czTask.TaskProductCode,
- TargetAddress = czTask.TaskEndAddress,
- Roadway = $"{taskType}AGV",
- WMSId = czTask.Id,
- Remark = czTask.TaskOrderNo
- };
- _taskRepository.AddData(task);
- ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}涓嬬嚎璇锋眰鍏ュ簱,浠诲姟宸茬敓鎴愶紝绛夊緟鎵ц......");
- }
+ // 澶勭悊绌虹洏鍥炴祦璇锋眰
+ ProcessKpRequests(conveyorLine, requestsKP);
}
catch (Exception ex)
{
@@ -139,6 +101,148 @@
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瀬" :
+
+ // 鏍规嵁浠诲姟绫诲瀷纭畾璇锋眰鍦板潃
+ (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).ToList();
+ foreach (var item in details)
+ {
+ var taskCZ = _taskCZRepository.QueryFirst(x => x.TaskTaskID == item.TaskTaskID);
+ if (taskCZ.TaskType.Contains("姝f瀬"))
+ {
+ taskCZ.TaskZJFinishNumber += 1;
+ }
+ else
+ {
+ taskCZ.TaskFJFinishNumber += 1;
+ }
+ 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;
+ }
+ 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 = (int)TaskOutboundTypeEnum.Outbound,
+ Grade = 1,
+ PalletCode = palletCode,
+ TargetAddress = targetAddress,
+ NextAddress = targetAddress,
+ Barcode = "",
+ Roadway = $"{taskType}AGV",
+ WMSId = czTaskID > 0 ? czTaskID : 0,
+ Remark = remark
+ };
+ }
/// <summary>
/// 杈撻�佺嚎璇锋眰鍏ュ簱
@@ -262,4 +366,4 @@
GC.SuppressFinalize(this);
}
}
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3