From 457b75b642a1fdaa7158e5b047cabc5d7ae16333 Mon Sep 17 00:00:00 2001
From: xxyy <cathay_xy@163.com>
Date: 星期一, 10 三月 2025 10:10:13 +0800
Subject: [PATCH] 修复和优化 Dt_TaskService.cs 中的任务请求逻辑
---
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 147 ++++++++++++++++++++++++++++++++-----------------
1 files changed, 96 insertions(+), 51 deletions(-)
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 3335a9f..909b441 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -1,12 +1,9 @@
-锘�
-using AutoMapper;
+锘縰sing AutoMapper;
using HslCommunication;
using Mapster;
-using Microsoft.AspNetCore.Components.Routing;
using Newtonsoft.Json;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
-using System.Threading.Tasks;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Common;
@@ -21,8 +18,6 @@
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;
@@ -76,77 +71,118 @@
/// <returns>杩斿洖澶勭悊缁撴灉</returns>
public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTaskDTO> taskDTOs)
{
+ // 鍒涘缓涓�涓猈ebResponseContent瀵硅薄鐢ㄤ簬瀛樺偍杩斿洖缁撴灉
WebResponseContent content = new WebResponseContent();
try
{
+ // 鍒涘缓涓�涓狣t_Task绫诲瀷鐨勫垪琛ㄧ敤浜庡瓨鍌ㄨ浆鎹㈠悗鐨勪换鍔℃暟鎹�
List<Dt_Task> tasks = new List<Dt_Task>();
+ // 閬嶅巻浼犲叆鐨刉MSTaskDTO鍒楄〃
foreach (var item in taskDTOs)
{
+ // 鏌ヨ鏁版嵁搴撲腑鏄惁瀛樺湪鐩稿悓浠诲姟缂栧彿鎴栨墭鐩樼爜鐨勪换鍔★紝濡傛灉瀛樺湪鍒欒烦杩囧綋鍓嶅惊鐜�
if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null)
{
continue;
}
+ // 灏哤MSTaskDTO瀵硅薄鏄犲皠涓篋t_Task瀵硅薄
Dt_Task task = _mapper.Map<Dt_Task>(item);
+ // 璁剧疆浠诲姟鐨勫垱寤鸿�呬负"WMS"
task.Creater = "WMS";
+ // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄嚭搴撲换鍔�
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
- if (task.TargetAddress == "002-021-001" && task.Roadway.Contains("JZ") && task.TaskType == (int)TaskOutboundTypeEnum.OutTray)
+ // 鍒ゆ柇浠诲姟鐩爣鍦板潃鍜岃矾寰勬槸鍚︽弧瓒崇壒瀹氭潯浠�
+ if ((task.TargetAddress == "002-021-001" || task.TargetAddress == "001-021-001") && task.Roadway.Contains("JZ"))
{
+ // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓
task.TaskState = (int)TaskOutStatusEnum.OutNew;
+ // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
task.CurrentAddress = item.SourceAddress;
+ // 璁剧疆涓嬩竴涓湴鍧�涓虹洰鏍囧湴鍧�
task.NextAddress = item.TargetAddress;
}
else
{
+ // 鏌ヨ涓嬩竴涓矾鐢�
List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress);
if (routers.Count > 0)
{
+ // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓
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)
{
- if (task.SourceAddress != "1359-4")
+ var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
+ var valueList = value.Split(',').ToList();
+ // 鍒ゆ柇婧愬湴鍧�鏄惁涓嶇瓑浜�"1359-4"
+ //if (task.SourceAddress != "1359-4" && task.SourceAddress != "1357-4")
+ if (!valueList.Contains(task.SourceAddress))
{
+ // 鏌ヨ浠庢簮鍦板潃鍒扮洰鏍囧湴鍧�鐨勮矾鐢�
List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress);
if (routers.Count > 0)
{
+ // 璁剧疆浠诲姟鐘舵�佷负鍏ュ簱鏂板缓
task.TaskState = (int)TaskInStatusEnum.InNew;
+ // 璁剧疆褰撳墠鍦板潃涓烘簮鍦板潃
task.CurrentAddress = item.SourceAddress;
+ // 璁剧疆涓嬩竴涓湴鍧�涓虹涓�涓瓙浣嶇疆
task.NextAddress = routers.FirstOrDefault().ChildPosi;
}
}
else
{
- task.CurrentAddress = "002-021-001";
+ task.CurrentAddress = string.Empty;
+ if (task.SourceAddress == "1325-6")
+ // 璁剧疆褰撳墠鍦板潃涓�"001-021-001"
+ task.CurrentAddress = "001-021-001";
+ else
+ // 璁剧疆褰撳墠鍦板潃涓�"002-021-001"
+ task.CurrentAddress = "002-021-001";
+ // 璁剧疆涓嬩竴涓湴鍧�涓虹洰鏍囧湴鍧�
task.NextAddress = item.TargetAddress;
}
}
+ // 灏嗚浆鎹㈠悗鐨勪换鍔℃坊鍔犲埌浠诲姟鍒楄〃涓�
tasks.Add(task);
}
+ // 灏嗕换鍔″垪琛ㄦ坊鍔犲埌鏁版嵁搴撲腑
BaseDal.AddData(tasks);
+ // 娣诲姞浠诲姟鎵ц璇︽儏
_taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "鎺ユ敹WMS浠诲姟");
+ // 璁剧疆杩斿洖缁撴灉涓烘垚鍔�
content = WebResponseContent.Instance.OK("鎴愬姛");
}
catch (Exception ex)
{
+ // 鎹曡幏寮傚父骞惰缃繑鍥炵粨鏋滀负閿欒淇℃伅
content = WebResponseContent.Instance.Error($"浠诲姟鎺ユ敹閿欒,閿欒淇℃伅:{ex.Message}");
}
+ // 杩斿洖缁撴灉
return content;
}
@@ -161,7 +197,6 @@
WebResponseContent content = new WebResponseContent();
try
{
-
var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
if (hasTask != null)
{
@@ -178,16 +213,8 @@
{
wmsIpAddrss = GetIpAddress(SysConfigKeyConst.WMSIP_BASE, SysConfigKeyConst.RequestTask);
}
- //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
- //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
- //var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTask)?.ConfigValue;
- //if (wmsBase == null || requestTask == null)
- //{
- // throw new InvalidOperationException("WMS IP 鏈厤缃�");
- //}
- //var wmsIpAddrss = wmsBase + requestTask;
- var result = await HttpHelper.PostAsync(wmsIpAddrss, new { Position = sourceAddress, PalletCode = palletCode }.ToJsonString());
+ var result = await HttpHelper.PostAsync(wmsIpAddrss, new { Position = sourceAddress, PalletCode = palletCode, stationManager.productLine }.ToJsonString());
content = JsonConvert.DeserializeObject<WebResponseContent>(result);
if (!content.Status)
@@ -204,8 +231,7 @@
_Task.TaskState = (int)TaskInStatusEnum.InNew;
_Task.CurrentAddress = task.SourceAddress;
_Task.NextAddress = station.stationNGChildCode;
- _Task.TargetAddress = station.stationNGLocation;
- _Task.Roadway = station.Roadway;
+ _Task.TargetAddress = task.TargetAddress;
BaseDal.AddData(_Task);
_taskExecuteDetailService.AddTaskExecuteDetail(_Task.TaskNum, "鎺ユ敹WMS浠诲姟");
@@ -230,7 +256,7 @@
/// <returns></returns>
public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress)
{
- return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy);
+ return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.CurrentAddress == currentAddress, TaskOrderBy);
}
/// <summary>
@@ -241,7 +267,7 @@
/// <returns></returns>
public Dt_Task QueryNextConveyorLineTask(string deviceNo, string currentAddress)
{
- return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.NextAddress == currentAddress, TaskOrderBy);
+ return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.NextAddress == currentAddress, TaskOrderBy);
}
/// <summary>
@@ -252,7 +278,7 @@
/// <returns></returns>
public Dt_Task QueryBarCodeConveyorLineTask(string Barcode, string currentAddress)
{
- return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress && x.PalletCode == Barcode, TaskOrderBy);
+ return BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.CurrentAddress == currentAddress && x.PalletCode == Barcode, TaskOrderBy);
}
/// <summary>
@@ -277,11 +303,16 @@
return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy);
}
+ /// <summary>
+ /// 鏍规嵁鎵樼洏鍙枫�佸綋鍓嶅湴鍧�鏌ヨ浠诲姟
+ /// </summary>
+ /// <param name="taskNum">浠诲姟鍙�</param>
+ /// <param name="currentAddress">褰撳墠鍦板潃</param>
+ /// <returns></returns>
public Dt_Task QueryBarcodeTask(string barcode, string currentAddress)
{
return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.CurrentAddress == currentAddress, TaskOrderBy);
}
-
/// <summary>
/// 鏍规嵁浠诲姟鍙枫�佸綋鍓嶅湴鍧�鏌ヨ杈撻�佺嚎鏂板缓鐨勪换鍔�
@@ -303,7 +334,7 @@
public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null)
{
if (taskTypeGroup == null)
- return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+ return BaseDal.QueryFirst(x => x.Roadway == deviceNo && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy);
if (taskTypeGroup.Value == TaskTypeGroup.InboundGroup)
return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy);
if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup)
@@ -320,9 +351,9 @@
public Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = "")
{
if (string.IsNullOrEmpty(currentAddress))
- return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+ return BaseDal.QueryFirst(x => x.Roadway == deviceNo && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy);
else
- return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy);
+ return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy);
}
/// <summary>
@@ -476,6 +507,12 @@
BaseDal.DeleteData(task);
_taskHtyRepository.AddData(task_Hty);
}
+
+ if (task.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)
+ {
+ content = StackCraneTaskCompleted(task.TaskNum);
+ return content;
+ }
}
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
{
@@ -484,8 +521,8 @@
if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish)
{
-
#region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
+
// TODO: 璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
// 鍒涘缓璇锋眰瀵硅薄
var taskDto = new RequestTaskDto()
@@ -521,11 +558,16 @@
task.CurrentAddress = task.NextAddress;
task.NextAddress = taskResult.TargetAddress;
task.TargetAddress = task.NextAddress;
- #endregion
+ #endregion 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
}
else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish)
{
+ if (App.User.UserId > 0)
+ {
+ content = StackCraneTaskCompleted(task.TaskNum);
+ return content;
+ }
task.ModifyDate = DateTime.Now;
task.Modifier = "System";
@@ -553,7 +595,8 @@
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"浜哄伐鎵嬪姩灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戣烦杞埌銆恵task.TaskState}銆�" : $"绯荤粺鑷姩娴佺▼锛屼换鍔$姸鎬佷粠銆恵oldState}銆戣浆鍒般�恵task.TaskState}銆�");
- #region 鏇存柊浠诲姟鐘舵��
+ #region 鏇存柊浠诲姟鐘舵��
+
// 鑾峰彇WMSip鍦板潃
var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue;
@@ -566,7 +609,8 @@
var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
content = JsonConvert.DeserializeObject<WebResponseContent>(result);
- #endregion
+
+ #endregion 鏇存柊浠诲姟鐘舵��
content = WebResponseContent.Instance.OK();
}
@@ -626,6 +670,7 @@
if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�");
#region WMS鍚屾浠诲姟瀹屾垚
+
var keys = new Dictionary<string, object>()
{
{"taskNum", taskNum}
@@ -652,7 +697,8 @@
}
}
task.ExceptionMessage += " " + content.Message;
- #endregion
+
+ #endregion WMS鍚屾浠诲姟瀹屾垚
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
{
@@ -690,7 +736,6 @@
_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�");
}
-
//鏆備笉鑰冭檻澶氫釜鍑哄簱鍙�
}
else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting)
@@ -719,21 +764,6 @@
{
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;
-
- //result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result;
- //content = JsonConvert.DeserializeObject<WebResponseContent>(result);
- #endregion
- //content = WebResponseContent.Instance.OK();
}
catch (Exception ex)
{
@@ -842,8 +872,7 @@
return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy);
}
-
- private string GetIpAddress(string baseIp,string name)
+ private string GetIpAddress(string baseIp, string name)
{
var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
var wcsBasez = configz.Where(x => x.ConfigKey == baseIp).FirstOrDefault()?.ConfigValue;
@@ -854,5 +883,21 @@
}
return wcsBasez + address;
}
+
+ #region 閲嶅啓鏂规硶
+
+ public override WebResponseContent DeleteData(object[] key)
+ {
+ foreach (var item in key)
+ {
+ var task = BaseDal.QueryFirst(x => x.TaskId == Convert.ToInt32(item));
+ var taskHty = task.Adapt<Dt_Task_Hty>();
+ taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
+ _taskHtyRepository.AddData(taskHty);
+ }
+ return base.DeleteData(key);
+ }
+
+ #endregion 閲嶅啓鏂规硶
}
}
\ No newline at end of file
--
Gitblit v1.9.3