From 51af2794f47d5b68496edbc09d0ccb168347f02b Mon Sep 17 00:00:00 2001
From: HuBingJie <3146306518@qq.com>
Date: 星期六, 22 十一月 2025 10:19:05 +0800
Subject: [PATCH] 1
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 317 +++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 273 insertions(+), 44 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index fecb1ee..ead1c5c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -1,4 +1,4 @@
-锘�#region << 鐗� 鏈� 娉� 閲� >>
+#region << 鐗� 鏈� 娉� 閲� >>
/*----------------------------------------------------------------
* 鍛藉悕绌洪棿锛歐IDESEA_TaskInfoService
* 鍒涘缓鑰咃細鑳$搴�
@@ -21,6 +21,7 @@
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using SqlSugar;
+using System.Diagnostics;
using System.DirectoryServices.Protocols;
using System.Net;
using System.Reflection.Emit;
@@ -167,11 +168,8 @@
Dt_StockInfo dt_Stock = _stockRepository.QueryFirst(x => x.LocationCode == ShallowLocation.LocationCode);
if (dt_Stock == null) return content.Error($"璐т綅缂栧彿:{Locatask}鐨勬祬璐т綅搴撳瓨寮傚父锛岃妫�鏌ワ紒锛侊紒");
- Dt_Task _Task = BaseDal.QueryFirst(x => x.SourceAddress == ShallowLocation.LocationCode || x.TargetAddress == ShallowLocation.LocationCode);
- if (_Task != null) return content.Error($"璐т綅缂栧彿:{Locatask}鐨勬祬璐т綅搴撳凡鏈変换鍔★紝涓嶅彲杩涜绉诲簱");
-
//杩涜鑾峰彇鏂扮殑搴撲綅
- Dt_LocationInfo? Nextlocation = _basicService.LocationInfoService.AssignLocation(DeepLocation.RoadwayNo, 0, "");//鑾峰彇鍒版柊搴撲綅
+ Dt_LocationInfo? Nextlocation = _basicService.LocationInfoService.GetLocation(DeepLocation.RoadwayNo);//鑾峰彇鍒版柊搴撲綅
if (Nextlocation == null)
{
return content.Error($"璐т綅鍒嗛厤澶辫触,鏈壘鍒板彲鍒嗛厤璐т綅");
@@ -196,11 +194,11 @@
NextAddress = Nextlocation.LocationCode,
Grade = 1,
Creater = "WMS",
- Depth = ShallowLocation.Depth,
+ Depth = Nextlocation.Depth,
CreateDate = DateTime.Now,
};
- _locationInfoRepository.AddData(loca);
+ _locationInfoRepository.UpdateData(loca);
BaseDal.AddData(dt_Task); //鏂板浠诲姟
_unitOfWorkManage.CommitTran();
@@ -269,13 +267,15 @@
BaseDal.DeleteData(task);
BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
- WebResponseContent content=MES_TransferCompletionFeedback(task);
+ WebResponseContent content = MES_TransferCompletionFeedback(task);
+ //content.Status = true;
+
if (!content.Status)
{
_unitOfWorkManage.RollbackTran();
return content;
}
-
+
_unitOfWorkManage.CommitTran();
return webResponse.OK();
}
@@ -320,15 +320,20 @@
_locationInfoRepository.UpdateData(dt_LocationInfo);
//淇敼搴撳瓨鐘舵��
_stockRepository.UpdateData(stockInfo);
+ task.TaskStatus = (int)TaskInStatusEnum.InFinish;
//鍒犻櫎浠诲姟娣诲姞鍘嗗彶
BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
+
WebResponseContent content = TaskCompletionFeedback(task);
+ //content.Status = true;
if (!content.Status)
{
_unitOfWorkManage.RollbackTran();
return content;
}
+
+ //Thread.Sleep(5000);
_unitOfWorkManage.CommitTran();
}
@@ -359,28 +364,32 @@
stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
int beforeStatus = locationInfo.LocationStatus;
- locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+ locationInfo.LocationStatus =(int)LocationStatusEnum.Free;
task.TaskStatus = TaskOutStatusEnum.OutFinish.ObjToInt();
_unitOfWorkManage.BeginTran();
+
_stockRepository.DeleteData(stockInfo);
_locationInfoRepository.UpdateData(locationInfo); //淇敼鎴愮┖璐т綅
+
BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
- _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
+ _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(), "1", task.TaskNum);
WebResponseContent content = TaskCompletionFeedback(task);
+ //content.Status = true;
+
if (!content.Status)
{
_unitOfWorkManage.RollbackTran();
return content;
}
-
+ //Thread.Sleep(5000);
_unitOfWorkManage.CommitTran();
return webResponse.OK();
}
catch (Exception ex)
{
_unitOfWorkManage.RollbackTran();
- return webResponse.Error($"绉诲簱浠诲姟瀹屾垚澶辫触锛屼换鍔d锛歿task.TaskNum},閿欒鍘熷洜锛歿ex.Message}");
+ return webResponse.Error($"鍑哄簱浠诲姟瀹屾垚澶辫触锛屼换鍔d锛歿task.TaskNum},閿欒鍘熷洜锛歿ex.Message}");
throw;
}
@@ -404,17 +413,26 @@
try
{
+ string locationCode = null;
+ if (dt_Task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+ {
+ locationCode = dt_Task.SourceAddress;
+ }
+ else
+ {
+ locationCode = dt_Task.TargetAddress;
+ }
TransferRequest transferRequest = new TransferRequest()
{
//涓氬姟id锛屼换鍔d鍚庣画杩涜鏇存敼
- businessId = "1",
- TaskId = "1",
- SourceLocationCode = dt_Task.SourceAddress,
- LocationCode = dt_Task.TargetAddress,
- PalletCode = dt_Task.PalletCode,
- Status = "FINISH",
- ErrorStatus = "NORMAL",
- ErrorInfo = "",
+ taskId = dt_Task.MEStaskId, //浠诲姟id
+ businessId = dt_Task.MESbusinessId, //涓氬姟id
+ sourceLocationCode = dt_Task.SourceAddress,
+ locationCode = locationCode,
+ palletCode = dt_Task.PalletCode,
+ status = "FINISH",
+ errorStatus = "NORMAL",
+ errorInfo = "",
};
//鑾峰彇鎺ュ彛杩涜璋冨彇
@@ -422,25 +440,27 @@
string WCSReceiveTaskAPI = ConfigsAPIInfo.ApiAddress + ConfigsAPIInfo.ApiName;
if (WCSReceiveTaskAPI == null)
{
- return webResponse.Error($"鍑哄簱澶辫触锛屾湭閰嶇疆MES绉诲簱瀹屾垚鍙嶉鎺ュ彛");
+ return webResponse.Error($"鍑哄簱澶辫触锛屾湭閰嶇疆MES绉诲簱瀹屾垚鍙嶉鎺ュ彛");
}
var respon = HttpHelper.Post(WCSReceiveTaskAPI, JsonConvert.SerializeObject(transferRequest));
if (respon != null)
{
- var response = JsonConvert.DeserializeObject<ApiResponse<object>>(respon);
- if (response.Success)
- {
- return webResponse.OK();
- }
- else
- {
- return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁板師鍥狅細{response.Message}");
- }
+ var response = JsonConvert.DeserializeObject<ApiResponse<object>>(respon);
+ if (response.Success)
+ {
+ return webResponse.OK();
+ }
+ else
+ {
+ return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁板師鍥狅細{response.Message}");
+ }
}
else
{
- return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁颁负绌�");
+ return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁颁负绌�");
}
+
+ return webResponse.OK();
}
catch (Exception ex)
{
@@ -461,17 +481,26 @@
try
{
- TaskNotification transferRequest = new TaskNotification()
+ string locationCode = null;
+ if (dt_Task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
{
- //涓氬姟id锛屼换鍔d鍚庣画杩涜鏇存敼
- TaskId = "1", //浠诲姟id
- BusinessId = "1", //涓氬姟id
- PalletCode = dt_Task.PalletCode,
- SubPalletCode = "",//瀛愭墭鐩樼紪鐮�
- LocationCode = dt_Task.SourceAddress,
- ErrorStatus = "NORMAL",
- ErrorInfo = "",
- };
+ locationCode = dt_Task.SourceAddress;
+ }
+ else
+ {
+ locationCode = dt_Task.TargetAddress;
+ }
+ TaskNotification transferRequest = new TaskNotification()
+ {
+ //涓氬姟id锛屼换鍔d鍚庣画杩涜鏇存敼
+ taskId = dt_Task.MEStaskId, //浠诲姟id
+ businessId = dt_Task.MESbusinessId, //涓氬姟id
+ palletCode = dt_Task.PalletCode,
+ subPalletCode = dt_Task.MESsubPalletCode,//瀛愭墭鐩樼紪鐮�
+ locationCode = locationCode,
+ errorStatus = "NORMAL",
+ errorInfo = "",
+ };
//鑾峰彇鎺ュ彛杩涜璋冨彇
var ConfigsAPIInfo = _dt_ApiInfoService.GetConfigsByAPIInfo(CateGoryConst.CONFIG_MES_IPAddress, SysConfigConst.MESTaskFeedback); //鑾峰彇鍒皐cs鍏ㄩ儴绫诲瀷鐨勬帴鍙�
@@ -480,7 +509,14 @@
{
return webResponse.Error($"浠诲姟鍙嶉MES澶辫触锛屾湭閰嶇疆MES浠诲姟瀹屾垚鍙嶉鎺ュ彛");
}
- var respon = HttpHelper.Post(WCSReceiveTaskAPI, JsonConvert.SerializeObject(transferRequest));
+
+ // 娣诲姞璋冭瘯淇℃伅
+ string requestJson = JsonConvert.SerializeObject(transferRequest);
+ //Console.WriteLine($"MES鍙嶉鎺ュ彛URL: {WCSReceiveTaskAPI}");
+ //Console.WriteLine($"MES鍙嶉璇锋眰鏁版嵁: {requestJson}");
+
+ // 浣跨敤淇鍚庣殑PostSync鏂规硶锛堝凡鍦≒ostSync涓缃粯璁よ姹傚ご锛�
+ var respon = HttpHelper.Post(WCSReceiveTaskAPI, requestJson);
if (respon != null)
{
var response = JsonConvert.DeserializeObject<ApiResponse<object>>(respon);
@@ -505,7 +541,7 @@
}
}
- public ApiResponse<object> MESresponse(string Message, bool Success)
+ public ApiResponse<object> MESresponse(string Message, bool Success,int Code)
{
ApiResponse<object> apiResponse = new ApiResponse<object>();
apiResponse.Message = Message;
@@ -514,8 +550,111 @@
return apiResponse;
}
+ /// <summary>
+ /// 鍙栨秷浠诲姟鎺ュ彛
+ /// </summary>
+ /// <param name="taskNum">浠诲姟鍙�</param>
+ /// <returns></returns>
+ public WebResponseContent Cancelinventory(int taskNum)
+ {
+ WebResponseContent webResponse = new WebResponseContent();
+ try
+ {
+ // 鏌ユ壘浠诲姟
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.TaskStatus == TaskOutStatusEnum.OutFinish.ObjToInt());
+ if (task == null)
+ {
+ return webResponse.Error($"鏈壘鍒颁换鍔″彿涓恒�恵taskNum}銆戠殑浠诲姟淇℃伅");
+ }
+ bool res;
+ switch (task.TaskType)
+ {
+ case (int)TaskInboundTypeEnum.Inbound:
+ res = task.TaskStatus == TaskInStatusEnum.Line_InExecuting.ObjToInt();
+ break;
+ case (int)TaskOutboundTypeEnum.Outbound:
+ res = task.TaskStatus == TaskOutStatusEnum.OutNew.ObjToInt();
+ break;
+ case (int)TaskRelocationTypeEnum.Relocation:
+ res = task.TaskStatus == TaskRelocationStatusEnum.RelocationNew.ObjToInt();
+ break;
+ default:
+ res = false;
+ break;
+ }
+ if (!res) return WebResponseContent.Instance.Error("浠诲姟鐘舵�佸紓甯�");
+ Dt_StockInfo stockInfo = _stockRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
+
+ _unitOfWorkManage.BeginTran();
+
+ int stockmsseg;
+ int locationmsseg;
+ bool taskmsseg;
+ if (task.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskRelocationTypeEnum.Relocation.ObjToInt())
+ {
+ stockmsseg = _stockRepository.Db.Updateable<Dt_StockInfo>()
+ .SetColumns(x => x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt())
+ .Where(x => x.PalletCode == task.PalletCode)
+ .ExecuteCommand();
+ locationmsseg = _locationInfoRepository.Db.Updateable<Dt_LocationInfo>()
+ .SetColumns(x => x.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+ .Where(x => x.LocationCode == stockInfo.LocationCode)
+ .ExecuteCommand();
+ taskmsseg = BaseDal.DeleteData(task);
+ }
+ else
+ {
+ locationmsseg = _locationInfoRepository.Db.Updateable<Dt_LocationInfo>()
+ .SetColumns(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt())
+ .Where(x => x.LocationCode == stockInfo.LocationCode)
+ .ExecuteCommand();
+ stockmsseg = _stockRepository.DeleteData(stockInfo).ObjToInt();
+ taskmsseg = BaseDal.DeleteData(task);
+ }
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
+ //鑾峰彇鎺ュ彛杩涜璋冨彇
+ var ConfigsAPIInfo = _dt_ApiInfoService.GetConfigsByAPIInfo(CateGoryConst.CONFIG_MES_IPAddress, SysConfigConst.WCSCancelinventory); //鑾峰彇鍒皐cs鍏ㄩ儴绫诲瀷鐨勬帴鍙�
+ string WCSReceiveTaskAPI = ConfigsAPIInfo.ApiAddress + ConfigsAPIInfo.ApiName;
+ if (WCSReceiveTaskAPI == null)
+ {
+ return webResponse.Error($"浠诲姟鍙嶉MES澶辫触锛屾湭閰嶇疆MES浠诲姟瀹屾垚鍙嶉鎺ュ彛");
+ }
+ var respon = HttpHelper.Get(WCSReceiveTaskAPI, JsonConvert.SerializeObject(task.TaskNum));
+ if (respon != null)
+ {
+ var response = JsonConvert.DeserializeObject<ApiResponse<object>>(respon);
+ // if (response.Success)
+ // {
+ // return webResponse.OK();
+ // }
+ // else
+ // {
+ // return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁板師鍥狅細{response.Message}");
+ // }
+ //}
+ //else
+ //{
+ // return webResponse.Error($"璋冨彇鎺ュ彛澶辫触锛屽弽棣堝弬鏁颁负绌�");
+ //}
+ if (stockmsseg > 0 && locationmsseg > 0 && taskmsseg)
+ {
+ _unitOfWorkManage.CommitTran();
+ return webResponse.OK("浠诲姟鍙栨秷鎴愬姛");
+
+ }
+
+ }
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return webResponse.Error($"鍙栨秷浠诲姟澶辫触锛屽師鍥狅細{ex.Message}");
+ }
+ _unitOfWorkManage.RollbackTran();
+ return webResponse.Error("浠诲姟鍙栨秷澶辫触");
+ }
/// <summary>
/// 鍒涘缓璐т綅
@@ -603,5 +742,95 @@
}
return MESresponse($"", true);
}
+
+
+ public static string GetLastPart(string locationCode)
+ {
+ string[] parts = locationCode.Split('-');
+ return parts[parts.Length - 1];
+ }
+
+
+ /// <summary>
+ /// 鍑哄簱
+ /// </summary>
+ /// <param name="locationCode"></param>
+ /// <returns></returns>
+ /// <exception cref="NotImplementedException"></exception>
+ public WebResponseContent chuku(string locationCode)
+ {
+
+ try
+ {
+ Dt_StockInfo dt_StockInfo = _stockRepository.QueryFirst(x => x.LocationCode.StartsWith("SC01") && x.StockStatus == 6);
+ int result = GetLastPart(dt_StockInfo.LocationCode).ObjToInt(); // 杩斿洖 "C03"
+
+ List<Dt_Task> dt_s = new List<Dt_Task>();
+ //鐢熸垚绉诲姩浠诲姟
+ Dt_Task dt_Task = new()
+ {
+ PalletCode = dt_StockInfo.PalletCode,
+ TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ Roadway = "SC01",
+ TaskType = TaskOutboundTypeEnum.Outbound.ObjToInt(),
+ TaskStatus = TaskOutStatusEnum.OutNew.ObjToInt(),
+ SourceAddress = dt_StockInfo.LocationCode,
+ TargetAddress = "1006",
+ CurrentAddress = dt_StockInfo.LocationCode,
+ NextAddress = "1006",
+ Grade = 1,
+ Creater = "MES",
+ Depth = result,
+ CreateDate = DateTime.Now,
+ MEStaskId = "EXTASK20251020002",
+ MESbusinessId = "EXBUS20251020002",
+ MESsubPalletCode = dt_StockInfo.MESsubPalletCode,
+ OutboundPlatform = "1005"
+ };
+
+ ////鍒涘缓缁勭洏淇℃伅
+ //var dt_Stock = new Dt_StockInfo
+ //{
+ // PalletCode = dt_Task.PalletCode,
+ // PalletType = 1,
+ // LocationCode = locationCode,
+ // StockStatus = 6,
+ // Creater = "WMS",
+ // CreateDate = DateTime.Now,
+ // MESsubPalletCode = dt_Task.MESsubPalletCode,
+ //};
+
+ Dt_LocationInfo dt_LocationInfo = _locationInfoRepository.QueryFirst(x => x.LocationCode == dt_StockInfo.LocationCode);
+ dt_LocationInfo.LocationStatus = (int)LocationStatusEnum.InStockLock;
+ dt_StockInfo.StockStatus = 7;
+
+ bool l = _locationInfoRepository.UpdateData(dt_LocationInfo);
+ bool s = _stockRepository.UpdateData(dt_StockInfo);
+ int t = BaseDal.AddData(dt_Task);
+ bool ss = s.ObjToBool();
+ bool tt = t.ObjToBool();
+
+
+ if (!l && !ss && tt)
+ {
+ _unitOfWorkManage.RollbackTran();
+ }
+
+ dt_s.Add(dt_Task);
+ var respon = PushTasksToWCS(dt_s, "");
+ if (respon.Status)
+ {
+ _unitOfWorkManage.CommitTran(); //鎻愪氦浜嬪姟
+ return WebResponseContent.Instance.OK();
+ }
+ return WebResponseContent.Instance.Error();
+ }
+ catch
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error();
+
+ }
+ }
}
}
--
Gitblit v1.9.3