From 4c216caadeb29a797aba3fc1548b7c8c68ed27ec Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期六, 21 十二月 2024 09:36:59 +0800
Subject: [PATCH] 合并
---
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 203 ++++++++++++++++++++++++++++++++++++--------------
1 files changed, 144 insertions(+), 59 deletions(-)
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 28a58a4..c962f62 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -1,6 +1,8 @@
锘�
using AutoMapper;
using HslCommunication;
+using Mapster;
+using Microsoft.AspNetCore.Components.Routing;
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
@@ -15,10 +17,14 @@
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_ISystemServices;
+using WIDESEAWCS_ITaskInfo_HtyRepository;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DeviceBase;
using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
namespace WIDESEAWCS_TaskInfoService
@@ -32,6 +38,9 @@
private readonly IMapper _mapper;
private readonly IDt_StationManagerService _stationManagerService;
private readonly IDt_StationManagerRepository _stationManagerRepository;
+ private readonly IRouterRepository _routerRepository;
+ private readonly ITask_HtyRepository _taskHtyRepository;
+ private readonly IDt_needBarcodeRepository _taskNeedBarcodeRepository;
private Dictionary<string, OrderByType> _taskOrderBy = new()
{
@@ -46,7 +55,7 @@
public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
- public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository) : base(BaseDal)
+ public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository, IDt_needBarcodeRepository taskNeedBarcodeRepository) : base(BaseDal)
{
_routerService = routerService;
_taskExecuteDetailService = taskExecuteDetailService;
@@ -55,6 +64,9 @@
_sys_ConfigService = sys_ConfigService;
_stationManagerService = stationManagerService;
_stationManagerRepository = stationManagerRepository;
+ _routerRepository = routerRepository;
+ _taskHtyRepository = htyRepository;
+ _taskNeedBarcodeRepository = taskNeedBarcodeRepository;
}
/// <summary>
@@ -84,6 +96,16 @@
task.TaskState = (int)TaskOutStatusEnum.OutNew;
task.CurrentAddress = item.SourceAddress;
task.NextAddress = routers.FirstOrDefault().ChildPosi;
+ }
+ else
+ {
+ routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
+ if (routers.Count > 0)
+ {
+ task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
+ task.CurrentAddress = item.SourceAddress;
+ task.NextAddress = routers.FirstOrDefault().ChildPosi;
+ }
}
}
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
@@ -125,7 +147,7 @@
var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
if (hasTask != null)
{
- return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟");
+ return content.OK("褰撳墠鎵樼洏瀛樺湪浠诲姟");
}
var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
@@ -147,7 +169,24 @@
}
var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
- return ReceiveWMSTask(new List<WMSTaskDTO> { task });
+ if (task.TaskType == (int)TaskInboundTypeEnum.InNG)
+ {
+ var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == task.SourceAddress);
+ Dt_Task _Task = _mapper.Map<Dt_Task>(task);
+ _Task.TaskState = (int)TaskInStatusEnum.InNew;
+ _Task.CurrentAddress = task.SourceAddress;
+ _Task.NextAddress = station.stationNGChildCode;
+ _Task.TargetAddress = station.stationNGLocation;
+ _Task.Roadway = station.Roadway;
+
+ BaseDal.AddData(_Task);
+ _taskExecuteDetailService.AddTaskExecuteDetail(_Task.TaskNum, "鎺ユ敹WMS浠诲姟");
+ return content.OK();
+ }
+ else
+ {
+ return ReceiveWMSTask(new List<WMSTaskDTO> { task });
+ }
}
catch (Exception ex)
{
@@ -209,6 +248,12 @@
{
return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
}
+
+ public Dt_Task QueryBarcodeTask(string barcode, string currentAddress)
+ {
+ return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.CurrentAddress == currentAddress, TaskOrderBy);
+ }
+
/// <summary>
/// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏂板缓鐨勪换鍔�
@@ -381,7 +426,12 @@
{
task.ModifyDate = DateTime.Now;
task.Modifier = "System";
+
+ Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+ task_Hty.TaskId = 0;
+
BaseDal.DeleteData(task);
+ _taskHtyRepository.AddData(task_Hty);
}
}
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
@@ -437,7 +487,11 @@
task.ModifyDate = DateTime.Now;
task.Modifier = "System";
+ Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+ task_Hty.TaskId = 0;
+
BaseDal.DeleteData(task);
+ _taskHtyRepository.AddData(task_Hty);
}
}
else
@@ -528,47 +582,6 @@
var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
- if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
- {
- var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
- if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
-
- int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
- task.TaskState = nextStatus;
- task.CurrentAddress = task.NextAddress;
- task.NextAddress = routers.FirstOrDefault().ChildPosi;
- task.ModifyDate = DateTime.Now;
- task.Modifier = "System";
- BaseDal.UpdateData(task);
-
- _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
-
-
- //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
- }
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
- {
- //todo 鍚屾鍒癢MS
- int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
- task.TaskState = nextStatus;
- task.ModifyDate = DateTime.Now;
- task.Modifier = "System";
- BaseDal.DeleteData(task);
- _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
- }
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
- {
- //todo 璋冪敤WMS绉诲簱瀹屾垚
- }
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
- {
- }
- else
- {
- throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
- }
-
-
#region WMS鍚屾浠诲姟瀹屾垚
var keys = new Dictionary<string, object>()
{
@@ -591,29 +604,91 @@
if (content.Data.ToString() == "NG")
{
task.Remark = "NG";
- BaseDal.UpdateData(task);
- _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG");
- }
- else if (task.Roadway.Contains("GW"))
- {
- BaseDal.DeleteData(task);
- _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝楂樻俯搴撴暟鎹垹闄�");
+ //BaseDal.UpdateData(task);
+ //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG");
}
}
+ task.ExceptionMessage += " " + content.Message;
#endregion
+
+ if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
+ {
+ if (!task.Roadway.Contains("GW"))
+ {
+ var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress);
+ if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�");
+
+ int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>();
+ task.TaskState = nextStatus;
+ task.CurrentAddress = task.NextAddress;
+ task.NextAddress = routers.FirstOrDefault().ChildPosi;
+ task.ModifyDate = DateTime.Now;
+ task.Modifier = "System";
+ BaseDal.UpdateData(task);
+
+ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+ }
+ else
+ {
+ task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+ //濡傞珮娓╁嚭搴撳悗 NG 鍒欏皢浠诲姟鏍囪涓篘G 骞跺湪鍑哄簱鐢宠鍚庡皢浠诲姟鍑鸿嚦NG鍙�
+ if (task.Remark == "NG")
+ {
+ BaseDal.UpdateData(task);
+ }
+ else
+ {
+ BaseDal.DeleteData(task);
+ ConsoleHelper.WriteWarningLine($"楂樻俯鍑哄簱鐩殑鍦板潃{task.TargetAddress}");
+ }
+
+ var taskHty = task.Adapt<Dt_Task_Hty>();
+ _taskHtyRepository.AddData(taskHty);
+ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
+ }
+
+
+ //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
+ }
+ else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
+ {
+ //todo 鍚屾鍒癢MS
+ int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
+ task.TaskState = nextStatus;
+ task.ModifyDate = DateTime.Now;
+ task.Modifier = "System";
+
+ Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task);
+ task_Hty.TaskId = 0;
+
+ BaseDal.DeleteData(task);
+ _taskHtyRepository.AddData(task_Hty);
+ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�");
+ }
+ else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+ {
+ //todo 璋冪敤WMS绉诲簱瀹屾垚
+ }
+ else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup)
+ {
+ }
+ else
+ {
+ throw new Exception($"浠诲姟绫诲瀷閿欒,鏈壘鍒拌浠诲姟绫诲瀷,浠诲姟鍙�:銆恵taskNum}銆�,浠诲姟绫诲瀷:銆恵task.TaskType}銆�");
+ }
#region 鏇存柊浠诲姟鐘舵��
- var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
- if (wmsBase == null || updateTask == null)
- {
- throw new InvalidOperationException("WMS IP 鏈厤缃�");
- }
- wmsIpAddress = wmsBase + updateTask;
+ //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue;
+ //if (wmsBase == null || updateTask == null)
+ //{
+ // throw new InvalidOperationException("WMS IP 鏈厤缃�");
+ //}
+ //wmsIpAddress = wmsBase + updateTask;
- result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
- content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+ //result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
+ //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
#endregion
//content = WebResponseContent.Instance.OK();
}
@@ -713,5 +788,15 @@
}
return content;
}
+
+ public Dt_Task QueryRelocationTask(string deviceNo)
+ {
+ return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskType == (int)TaskRelocationTypeEnum.Relocation && x.TaskState == (int)TaskStatus.Created);
+ }
+
+ public Dt_Task QueryExecutingTaskByBarcode(string barcode, string nextAddress)
+ {
+ return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
+ }
}
}
\ No newline at end of file
--
Gitblit v1.9.3