From 1c637ea862816ae6fa53945fa0327b95c79aa18b Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期五, 22 八月 2025 16:20:27 +0800
Subject: [PATCH] 增强 WMS IP 地址处理逻辑的健壮性在 `TaskService.cs` 文件中,添加了对 `result` 是否为 `null` 的检查,以确保在反序列化之前 `result` 是有效的。同时,调整了对 `content.Data` 的检查逻辑,确保在 `content.Data` 不为空的情况下,才会进一步检查其值是否为 "NG"。如果是 "NG",则设置 `task.Remark` 为 "NG"。这些更改提高了代码的健壮性,避免了潜在的空引用异常。
---
CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs | 68 +++++++++++++++++++++++++++------
1 files changed, 55 insertions(+), 13 deletions(-)
diff --git a/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index 499baeb..01591d9 100644
--- a/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -1,4 +1,5 @@
-锘縰sing Masuit.Tools;
+锘縰sing Mapster;
+using Masuit.Tools;
using SqlSugar;
using WIDESEA_Common.CustomModels;
using WIDESEA_Core.Const;
@@ -581,17 +582,48 @@
#region 鐩存帴鍑哄簱浠诲姟瀹屾垚
- public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task)
+ public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task, DtStockInfo stock)
{
WebResponseContent content = new WebResponseContent();
try
{
- //娣诲姞鍘嗗彶
- var taskHty = CreateHistoricalTask(task);
- // 娣诲姞鍘嗗彶浠诲姟
- var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
- //鍒犻櫎浠诲姟
- BaseDal.DeleteData(task);
+ DtStockInfo_Hty stockInfo_Hty = null;
+ if (stock != null)
+ {
+ stockInfo_Hty = stock.Adapt<DtStockInfo_Hty>();
+ stockInfo_Hty.ModifyDate = DateTime.Now;
+ }
+ var taskHty = task.Adapt<Dt_Task_Hty>();
+ taskHty.FinishTime = DateTime.Now;
+ taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
+ taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
+
+ var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway);
+ if (location != null)
+ {
+ int lastStatus = location.LocationStatus;
+ location.LocationStatus = (int)LocationEnum.Free;
+ _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
+ }
+ task.TaskState = (int)TaskOutStatusEnum.OutFinish;
+
+ // 浜嬪姟澶勭悊
+ await _unitOfWorkManage.UseTranAsync(async () =>
+ {
+ if (stockInfo_Hty != null)
+ {
+ await DeleteStockInfoAsync(stock.Id);
+ await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
+ await AddStockInfoHtyAsync(stockInfo_Hty);
+ }
+
+ if (location != null)
+ {
+ await UpdateLocationAsync(location);
+ }
+ await DeleteTaskAsync(task.TaskId);
+ await AddTaskHtyAsync(taskHty);
+ });
return content.OK();
}
@@ -1019,6 +1051,13 @@
.Where(x => x.DeviceCode.Contains("CWSC")) // 杩囨护鏉′欢
.ToList().Select(x => x.DeviceCode).ToList();
+ var outBoundMateriel = _dt_ChangeoversRepository.QueryData(x => x.Status == "1").ToList();
+ List<string>? materielCodes = outBoundMateriel.Count != 0
+ ? outBoundMateriel.Where(x => x.ProductionLine == station.productLine && x.ProcessCode == "CWSC3")
+ .Select(x => x.MaterielCode)
+ .ToList()
+ : null;
+
// 淇敼鍚庣殑鏌ヨ浠g爜
var stockInfo = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
.Includes(x => x.LocationInfo)
@@ -1029,6 +1068,7 @@
.Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock)
// 澧炲姞瀵� LocationInfo 鐨勭┖鍊兼鏌�
.WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
+ .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
.OrderBy(x => x.OutboundTime)
.FirstAsync();
@@ -1088,6 +1128,7 @@
var emergencyTask = new DTSEmergencyTask();
try
{
+ Console.WriteLine($"鐏鍙傛暟:{obj.ToString()}");
emergencyTask = JsonConvert.DeserializeObject<DTSEmergencyTask>(obj.ToString());
if (emergencyTask == null) throw new Exception("鐏鍙傛暟涓虹┖");
string[] strings = emergencyTask.LocationCode.Split("-");
@@ -1180,14 +1221,15 @@
var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
- var ReceiveByWMSTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue;
- if (ReceiveByWMSTask == null || ipAddress == null)
+ var ReceiveByWMSFireAlarmTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveByWMSFireAlarmTask)?.ConfigValue;
+ if (ReceiveByWMSFireAlarmTask == null || ipAddress == null)
{
throw new Exception("WMS IP 鏈厤缃�");
}
- var wmsIpAddrss = ipAddress + ReceiveByWMSTask;
-
- var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(taskDTO));
+ var wmsIpAddrss = ipAddress + ReceiveByWMSFireAlarmTask;
+ List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO>();
+ taskDTOs.Add(taskDTO);
+ var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(taskDTOs));
if (respon != null)
{
WebResponseContent respone = JsonConvert.DeserializeObject<WebResponseContent>(respon.ToString());
--
Gitblit v1.9.3