From 1dce8a2ad238624ea832e0418557b4a5b53dce23 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期一, 13 四月 2026 17:44:55 +0800
Subject: [PATCH] 添加仓库的启用禁用状态,优化修改分区接口,优化提升机job,添加海康仓位到仓位接口
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/UpLocationStatusDTO.cs | 29 +++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 8 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs | 11 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs | 7
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs | 13 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs | 64 +++++++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 286 ++++++++++++++++++++++++++++++++++-
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs | 38 ++++
8 files changed, 434 insertions(+), 22 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index b8f6aef..b30cced 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -102,11 +102,20 @@
/// </summary>
[Description("鎻愬崌鏈哄埌绾胯竟")]
F03,
+
/// <summary>
/// 绾胯竟鍒板簱鍐�
/// </summary>
[Description("绾胯竟鍒板簱鍐�")]
- STURR
+ STURR,
+
+ /// <summary>
+ /// 浠撲綅鍒颁粨浣�
+ /// </summary>
+ [Description("浠撲綅鍒颁粨浣�")]
+ STUPTBY
+
+
}
public enum TaskInboundTypeEnum
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/UpLocationStatusDTO.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/UpLocationStatusDTO.cs"
new file mode 100644
index 0000000..7093b05
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/UpLocationStatusDTO.cs"
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.WMS
+{
+ public class UpLocationStatusDTO
+ {
+
+ /// <summary>
+ /// 浠撳簱id
+ /// </summary>
+ public int WarehouseId { get; set; }
+
+
+ /// <summary>
+ /// 绂佺敤鐘舵�侊紙0 鍚敤锛�3 绂佺敤锛�
+ /// </summary>
+ public int EnableStatus { get; set; }
+
+
+ /// <summary>
+ /// 璐т綅缂栧彿鍒楄〃
+ /// </summary>
+ public string[] LocationNubList { get; set; }
+ }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index 85254e7..807210b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -318,5 +318,13 @@
/// <param name="wMSUpOrDown"></param>
/// <returns></returns>
WebResponseContent UpOrDownContainer(WMSUpOrDownContainerDTO wMSUpOrDown);
+
+
+ /// <summary>
+ /// 鏇存柊浠撳簱搴撲綅鐘舵�侊紝鍚敤绂佺敤
+ /// </summary>
+ /// <param name="upLocationStatusDTO"></param>
+ /// <returns></returns>
+ WebResponseContent UpLocationStatus(UpLocationStatusDTO upLocationStatusDTO);
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs"
index 2a8e5c3..4476a15 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs"
@@ -117,5 +117,18 @@
WebResponseContent content = _taskService.LocationInquiry(getLocationInfo);
return WMSReturnMethod.ReturnWMS(content);
}
+
+
+ /// <summary>
+ /// 鏇存柊涓嶅悓浠撳簱鐨勫簱浣嶇姸鎬侊紝绂佺敤鍚敤
+ /// </summary>
+ /// <param name="upLocationStatusDTO"></param>
+ /// <returns></returns>
+ [HttpGet, HttpPost, Route("UpLocationStatus"), AllowAnonymous]
+ public WMSReturn UpLocationStatus([FromBody]UpLocationStatusDTO upLocationStatusDTO)
+ {
+ WebResponseContent content = _taskService.UpLocationStatus(upLocationStatusDTO);
+ return WMSReturnMethod.ReturnWMS(content);
+ }
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
index cfce8e7..e978596 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
@@ -34,6 +34,10 @@
try
{
Dt_HKLocationInfo? hKLocationInfo = null;
+ if (taskType==(int)TaskTypeEnum.STURR)
+ {
+ var reslut=_stationInfo.Repository.QueryFirst(x=>x.StationCode==taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐硅揣浣嶃�恵taskDTO.fromLocationCode}銆�");
+ }
#region 鐐瑰埌鐐�
if (!string.IsNullOrEmpty(taskDTO.toLocationCode))
{
@@ -126,12 +130,20 @@
WebResponseContent content = new WebResponseContent();
try
{
+ //4妤煎簱鍐呭埌鎻愬崌鏈�
Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
if (hKLocationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵hKLocationInfo.PalletCode}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
- //搴撳唴鍒板簱澶栫殑鐐瑰埌鐐逛换鍔★紝鏄惁闇�瑕佸垽鏂揣浣嶇姸鎬侊紵
-
- Dt_Task dt_Task = new Dt_Task()
+ //搴撳唴鍒扮幇杈圭殑鐐瑰埌鐐逛换鍔★紝鏄惁闇�瑕佸垽鏂揣浣嶇姸鎬侊紵
+ if (taskType == (int)TaskTypeEnum.STU0003)
+ {
+ var reslut = _stationInfo.Repository.QueryFirst(x => x.StationCode == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐硅揣浣嶃�恵taskDTO.fromLocationCode}銆�");
+ if (reslut.StationStatus != (int)LocationStatusEnum.Free)
+ {
+ throw new Exception($"缁堢偣绔欏彴銆恵taskDTO.toLocationCode}銆戠姸鎬佷笉涓虹┖闂诧紒");
+ }
+ }
+ Dt_Task dt_Task = new Dt_Task()
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
WMSTaskNum = taskDTO.taskCode,
@@ -352,6 +364,26 @@
hIKROBOTTaskSubmit.targetRoute.Add(targetRoute);
}
break;
+ case TaskTypeEnum.STUPTBY:
+ {
+ TargetRouteDto target = new TargetRouteDto()
+ {
+ code = task.CurrentAddress,
+ operation = "DELIVERY",//鍙栬揣
+ seq = 0,
+ type = "STORAGE",
+ };
+ TargetRouteDto targetRoute = new TargetRouteDto()
+ {
+ code = task.NextAddress,
+ operation = "DELIVERY",//閫佽揣
+ seq = 1,
+ type = "STORAGE",
+ };
+ hIKROBOTTaskSubmit.targetRoute.Add(target);
+ hIKROBOTTaskSubmit.targetRoute.Add(targetRoute);
+ }
+ break;
case TaskTypeEnum.CPMoveInventory:
break;
default:
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
index 414b79d..79e5094 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
@@ -214,12 +214,12 @@
//鍏ュ簱 鍒颁竴妤间笁涓珯鍙扮殑浣嶇疆
if (taskType == (int)TaskTypeEnum.Q3RK)//6-1妤�
{
- var ionInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐圭珯鍙般�恵taskDTO.toLocationCode}銆戯紒");
- var StationInfo = _stationInfo.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode ) ?? throw new Exception($"鏈壘鍒皗taskDTO.fromLocationCode}璧风偣璐т綅");
+ var ionInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐圭珯鍙般�恵taskDTO.toLocationCode}銆戯紒");
+ var StationInfo = _stationInfo.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒皗taskDTO.fromLocationCode}璧风偣璐т綅");
if (StationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵StationInfo.PalletCode}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
if (StationInfo.StationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶇姸鎬佷笉鍙互鍑哄簱");
if (StationInfo.FloorNumber != "FF") throw new Exception($"銆恵taskDTO.fromLocationCode}銆戠殑妤煎眰鍜屼换鍔$被鍨嬫ゼ灞備笉鍖归厤");
-
+
dt_Task = new Dt_Task()
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -245,7 +245,7 @@
var ionInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐圭珯鍙般�恵taskDTO.fromLocationCode}銆戯紒");
if (ionInfo.Remark != taskDTO.containerCode) throw new Exception($"璧风偣绔欏彴銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵ionInfo.Remark}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
-
+
dt_Task = new Dt_Task()
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -297,14 +297,14 @@
try
{
#region 鏄惁闇�瑕佸垽鏂钩搴撳簱浣嶇姸鎬�
- var reslut= ValidateLocationForTask(taskType,taskDTO);
+ var reslut = ValidateLocationForTask(taskType, taskDTO);
if (!reslut.Status)
{
throw new Exception(reslut.Message);
}
#endregion
- Dt_Task dt_Task = new Dt_Task()
+ Dt_Task dt_Task = new Dt_Task()
{
TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
WMSTaskNum = taskDTO.taskCode,
@@ -378,5 +378,57 @@
return content;
}
#endregion
+
+
+
+ #region
+ /// <summary>
+ /// 娴峰悍浠撲綅鍒颁粨浣嶇殑杩愯緭浠诲姟
+ /// </summary>
+ /// <param name="taskDTO"></param>
+ /// <param name="taskType"></param>
+ /// <returns></returns>
+ public WebResponseContent HKSTUPTP(TaskDTO taskDTO, int taskType)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ var KLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.fromLocationCode}銆戯紒");
+ if (KLocationInfo.LocationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.fromLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鏄湁璐э紒");
+ if (KLocationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"褰撳墠搴撲綅銆恵taskDTO.fromLocationCode}銆戠粦瀹氭枡绠卞彿銆恵KLocationInfo.PalletCode}銆戜笌浠诲姟鐨勬枡绠卞彿銆恵taskDTO.containerCode}銆戜笉鍖归厤");
+
+
+ var KLocationInfo2 = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒扮粓鐐瑰簱浣嶃�恵taskDTO.toLocationCode}銆戯紒");
+ if (KLocationInfo2.LocationStatus != (int)LocationStatusEnum.Free) throw new Exception($"缁堢偣搴撲綅銆恵taskDTO.toLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鏄┖闂诧紒");
+
+ var dt_Task = new Dt_Task()
+ {
+ TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ WMSTaskNum = taskDTO.taskCode,
+ //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ Grade = taskDTO.taskPriority,
+ PalletCode = taskDTO.containerCode,
+ Roadway = "1",
+ TaskState = (int)TaskStatusEnum.New,
+ TaskType = taskType,
+ SourceAddress = taskDTO.fromLocationCode,
+ CurrentAddress = taskDTO.fromLocationCode,
+ NextAddress = taskDTO.toLocationCode,
+ TargetAddress = taskDTO.toLocationCode,
+ Creater = "WMS",
+ };
+ content = SendHIKROBOTTask(dt_Task);
+ if (!content.Status) throw new Exception(content.Message);
+ dt_Task.Dispatchertime = DateTime.Now;
+ BaseDal.AddData(dt_Task);
+ }
+ catch (Exception ex)
+ {
+
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ #endregion
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 505e820..a939d58 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -198,6 +198,10 @@
content = CJCarryTaske(task, item.taskType);
objects.Add(content.Data);
break;
+ case (int)TaskTypeEnum.STUPTBY:
+ content = HKSTUPTP(task, item.taskType);
+ objects.Add(content.Data);
+ break;
#endregion
default:
objects.Add(new
@@ -388,7 +392,7 @@
bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound;
//娴峰悍
- bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK;
+ bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK||dt_Task.TaskType == (int)TaskTypeEnum.STUPTBY;
//淇敼鍘熸湰浠诲姟浼樺厛绾�
dt_Task.Grade = updateTaskPriority.taskPriority;
#region 鍑箰澹�
@@ -452,11 +456,15 @@
initPriority = updateTaskPriority.taskPriority//浼樺厛绾�
};
Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(HIKROBOTTaskGrade));
- if (apiInfo == null) throw new Exception("鏈壘鍒板洓鍚戣溅AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
- string response = HttpHelper.Post(apiInfo.ApiAddress, Hkrequest.Serialize());
+ if (apiInfo == null) throw new Exception("鏈壘鍒版捣搴稟GV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
+ var headers = new Dictionary<string, string>
+ {
+ { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + dt_Task.WMSTaskNum }
+ };
+ string response = HttpHelper.Post(apiInfo.ApiAddress, Hkrequest.Serialize(), headers: headers);
HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
content.OK(data: hIKROBOTReturn);
- if (hIKROBOTReturn.code == "SUCCESS0" && hIKROBOTReturn.message == "鎴愬姛")
+ if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "鎴愬姛")
{
BaseDal.UpdateData(dt_Task);
content.OK("淇敼{dt_Task.WMSTaskNum}浠诲姟浼樺厛绾ф垚鍔�", dt_Task);
@@ -514,7 +522,16 @@
var rgv = new List<Dt_RGVLocationInfo>();
var kls = new List<Dt_KLSLocationInfo>();
var hk = new List<Dt_HKLocationInfo>();
- var pk = new List<Dt_StationInfo>();
+ List<Dt_StationInfo> pk = new List<Dt_StationInfo>();
+ if (wMSUpdateLocationArea==null)
+ {
+ return content.Error("璇锋眰鍙傛暟涓嶈兘涓虹┖");
+ }
+ var validWarehouseIds = new[] { 1, 2, 3, 4 };
+ if (!validWarehouseIds.Contains(wMSUpdateLocationArea.WarehouseId))
+ {
+ return content.Error($"鏃犳晥鐨勪粨搴揑D锛歿wMSUpdateLocationArea.WarehouseId}锛屾湁鏁堝�间负锛�1-鎴愬搧搴擄紝2-闈㈡枡搴擄紝3-璐у簱锛�4-瑁佸壀搴�");
+ }
if (wMSUpdateLocationArea.WarehouseId == 1)
{
var rgvList = _rGVLocationInfoService.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList();
@@ -523,6 +540,7 @@
item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt();
}
rgv.AddRange(rgvList);
+ _rGVLocationInfoService.Repository.UpdateData(rgv);
}
if (wMSUpdateLocationArea.WarehouseId == 2)
{
@@ -533,6 +551,7 @@
item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt();
}
kls.AddRange(KLSLocationInfoList);
+ _kLSLocationInfoService.Repository.UpdateData(kls);
}
if (wMSUpdateLocationArea.WarehouseId == 3)
{
@@ -542,21 +561,18 @@
item.WarehouseId = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt();
}
hk.AddRange(hkList);
+ _hKLocationInfoService.Repository.UpdateData(hk);
}
if (wMSUpdateLocationArea.WarehouseId == 4)
{
var pkList = _stationInfo.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.StationCode)).ToList();
- foreach (var item in pk)
+ foreach (var item in pkList)
{
item.StationRegion = wMSUpdateLocationArea.UpdateAreaCode.ObjToInt();
}
pk.AddRange(pkList);
+ _stationInfo.Repository.UpdateData(pk);
}
- Db.Ado.BeginTran();
- _rGVLocationInfoService.UpdateData(rgv);
- _kLSLocationInfoService.UpdateData(kls);
- _hKLocationInfoService.UpdateData(hk);
- Db.Ado.CommitTran();
content.OK();
}
catch (Exception ex)
@@ -1596,5 +1612,253 @@
}
+
+ /// <summary>
+ /// 鏇存柊搴撲綅鍚敤绂佺敤鐘舵��
+ /// </summary>
+ /// <param name="upLocationStatusDTO"></param>
+ /// <returns></returns>
+ public WebResponseContent UpLocationStatus(UpLocationStatusDTO upLocationStatusDTO)
+ {
+ WebResponseContent content = new WebResponseContent();
+ List<object> resultList = new List<object>();
+
+ try
+ {
+ // 鍙傛暟楠岃瘉
+ if (upLocationStatusDTO == null)
+ {
+ return content.Error("璇锋眰鍙傛暟涓嶈兘涓虹┖");
+ }
+
+ if (upLocationStatusDTO.LocationNubList == null || upLocationStatusDTO.LocationNubList.Length == 0)
+ {
+ return content.Error("璐т綅缂栧彿鍒楄〃涓嶈兘涓虹┖");
+ }
+
+ // 鏍规嵁 EnableStatus 鐨勫�煎垽鏂槸鍚敤杩樻槸绂佺敤
+ // 0=鍚敤锛�3=绂佺敤
+ bool isEnable = (upLocationStatusDTO.EnableStatus == 0);
+ int targetStatus = isEnable ? (int)EnableStatusEnum.Normal : (int)EnableStatusEnum.Disable;
+
+ var updatedList = new List<object>(); // 鐢ㄤ簬鎵归噺鏇存柊
+ var notFoundLocations = new List<string>();
+
+ // 鎴愬搧搴� (WarehouseId = 1)
+ if (upLocationStatusDTO.WarehouseId == 1)
+ {
+ var locationsToUpdate = new List<Dt_RGVLocationInfo>();
+
+ foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+ {
+ var agv = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
+ if (agv != null)
+ {
+ agv.EnableStatus = targetStatus;
+ locationsToUpdate.Add(agv);
+
+ resultList.Add(new
+ {
+ LoctionCode = agv.LocationCode,
+ EnableStatus = agv.EnableStatus,
+ });
+ }
+ else
+ {
+ notFoundLocations.Add(locationCode);
+ }
+ }
+
+ if (locationsToUpdate.Any())
+ {
+ _rGVLocationInfoService.UpdateData(locationsToUpdate);
+
+ string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+ if (notFoundLocations.Any())
+ {
+ message += $"锛屾湭鎵惧埌璐т綅锛歿string.Join(",", notFoundLocations)}";
+ }
+ content.OK(data: resultList, message: message);
+ }
+ else
+ {
+ return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勮揣浣嶃�傛湭鎵惧埌鐨勮揣浣嶏細{string.Join(",", notFoundLocations)}");
+ }
+ }
+ // 闈㈡枡搴� (WarehouseId = 2)
+ else if (upLocationStatusDTO.WarehouseId == 2)
+ {
+ var locationsToUpdate = new List<Dt_KLSLocationInfo>();
+
+ foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+ {
+ var kls = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
+ if (kls != null)
+ {
+ kls.EnableStatus = targetStatus;
+ locationsToUpdate.Add(kls);
+
+ resultList.Add(new
+ {
+ LoctionCode = kls.LocationCode,
+ EnableStatus = kls.EnableStatus,
+ });
+ }
+ else
+ {
+ notFoundLocations.Add(locationCode);
+ }
+ }
+
+ if (locationsToUpdate.Any())
+ {
+ _kLSLocationInfoService.UpdateData(locationsToUpdate);
+
+ string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+ if (notFoundLocations.Any())
+ {
+ message += $"锛屾湭鎵惧埌璐т綅锛歿string.Join(",", notFoundLocations)}";
+ }
+ content.OK(data: resultList, message: message);
+ }
+ else
+ {
+ return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勮揣浣嶃�傛湭鎵惧埌鐨勮揣浣嶏細{string.Join(",", notFoundLocations)}");
+ }
+ }
+ // 瑁佸壀搴� (WarehouseId = 3)
+ else if (upLocationStatusDTO.WarehouseId == 3)
+ {
+ var locationsToUpdate = new List<Dt_HKLocationInfo>();
+
+ foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+ {
+ var hk = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == locationCode);
+ if (hk != null)
+ {
+ hk.EnableStatus = targetStatus;
+ locationsToUpdate.Add(hk);
+
+ resultList.Add(new
+ {
+ LoctionCode = hk.LocationCode,
+ EnableStatus = hk.EnableStatus,
+ });
+ }
+ else
+ {
+ notFoundLocations.Add(locationCode);
+ }
+ }
+
+ if (locationsToUpdate.Any())
+ {
+ _hKLocationInfoService.UpdateData(locationsToUpdate);
+
+ string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+ if (notFoundLocations.Any())
+ {
+ message += $"锛屾湭鎵惧埌璐т綅锛歿string.Join(",", notFoundLocations)}";
+ }
+ content.OK(data: resultList, message: message);
+ }
+ else
+ {
+ return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勮揣浣嶃�傛湭鎵惧埌鐨勮揣浣嶏細{string.Join(",", notFoundLocations)}");
+ }
+ }
+ // 3-4骞冲簱
+ else if (upLocationStatusDTO.WarehouseId == 4)
+ {
+ var locationsToUpdate = new List<Dt_StationInfo>();
+
+ foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+ {
+ var station = _stationInfo.Repository.QueryFirst(x => x.StationCode == locationCode);
+ if (station != null)
+ {
+ station.IsOccupied = upLocationStatusDTO.EnableStatus==0?0:1;
+ locationsToUpdate.Add(station);
+
+ resultList.Add(new
+ {
+ LoctionCode = station.StationCode,
+ EnableStatus = station.IsOccupied,
+ });
+ }
+ else
+ {
+ notFoundLocations.Add(locationCode);
+ }
+ }
+
+ if (locationsToUpdate.Any())
+ {
+ _stationInfo.UpdateData(locationsToUpdate);
+
+ string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+ if (notFoundLocations.Any())
+ {
+ message += $"锛屾湭鎵惧埌璐т綅锛歿string.Join(",", notFoundLocations)}";
+ }
+ content.OK(data: resultList, message: message);
+ }
+ else
+ {
+ return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勮揣浣嶃�傛湭鎵惧埌鐨勮揣浣嶏細{string.Join(",", notFoundLocations)}");
+ }
+ }
+ else if (upLocationStatusDTO.WarehouseId == 5)
+ {
+ var locationsToUpdate = new List<Dt_StationManger>();
+
+ foreach (var locationCode in upLocationStatusDTO.LocationNubList)
+ {
+ var station = _stationMangerService.Repository.QueryFirst(x => x.StationCode == locationCode);
+ if (station != null)
+ {
+ station.IsOccupied = upLocationStatusDTO.EnableStatus == 0 ? 0 : 1;
+ locationsToUpdate.Add(station);
+
+ resultList.Add(new
+ {
+ LoctionCode = station.StationCode,
+ EnableStatus = station.IsOccupied,
+ });
+ }
+ else
+ {
+ notFoundLocations.Add(locationCode);
+ }
+ }
+
+ if (locationsToUpdate.Any())
+ {
+ _stationMangerService.UpdateData(locationsToUpdate);
+
+ string message = $"鎴愬姛鏇存柊 {locationsToUpdate.Count} 涓揣浣嶇殑鐘舵��";
+ if (notFoundLocations.Any())
+ {
+ message += $"锛屾湭鎵惧埌绔欏彴锛歿string.Join(",", notFoundLocations)}";
+ }
+ content.OK(data: resultList, message: message);
+ }
+ else
+ {
+ return content.Error($"鏈壘鍒颁换浣曞彲鏇存柊鐨勭珯鍙般�傛湭鎵惧埌鐨勭珯鍙帮細{string.Join(",", notFoundLocations)}");
+ }
+ }
+ else
+ {
+ return content.Error($"涓嶆敮鎸佺殑浠撳簱绫诲瀷锛歿upLocationStatusDTO.WarehouseId}");
+ }
+
+ return content;
+ }
+ catch (Exception ex)
+ {
+ return content.Error($"鏇存柊绔欏彴鐘舵�佸け璐ワ細{ex.Message}");
+ }
+ }
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
index dcd6ffd..2e3f397 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
@@ -217,9 +217,14 @@
{
//瀵绘壘骞冲簱璐т綅
var Location = _stationInfoService.Repository.QueryFirst(x=>x.StationRegion==Verification.Message.ObjToInt()&&x.StationStatus==(int)LocationStatusEnum.Free&&x.FloorNumber=="CC"&&x.IsOccupied==(int)LocationStatusEnum.Free);
+ //杩欓噷瑕佸垽鏂�
+ if (Location==null)
+ {
+ RK3FTask.ExceptionMessage = "$鏈壘鍒皗Verification.Message}鍖哄煙鐨勮揣浣峽Location}";
+ }
+ RK3FTask.CurrentAddress = RK3FTask.TargetAddress;
RK3FTask.NextAddress = Location.StationCode;
RK3FTask.TargetAddress = Location.StationCode;
- RK3FTask.CurrentAddress = RK3FTask.TargetAddress;
_taskService.UpdateData(RK3FTask);
}
//璋冪敤娴峰悍杩涜鎵ц瀹屾垚鎺ュ彛
--
Gitblit v1.9.3