From e0e8c8f0b0abc141b116779afbcee970e091caaf Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 05 十二月 2025 09:48:09 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhiHuiQiCe/LongDeLiLiKu
---
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 310 +++++++++++++++++++++++++--------------------------
1 files changed, 150 insertions(+), 160 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 82197ce..820e628 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -27,6 +27,7 @@
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.LogHelper;
+using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
@@ -100,7 +101,9 @@
}
}
}
-
+ /// <summary>
+ /// 浠诲姟瀹屾垚
+ /// </summary>
public WebResponseContent TaskCompleted(int taskNum)
{
try
@@ -126,7 +129,46 @@
{
return WebResponseContent.Instance.Error(ex.Message);
}
+ }
+
+ /// <summary>
+ /// 浠诲姟閲嶆柊涓嬪彂
+ /// </summary>
+ /// <param name="taskNum"></param>
+ /// <returns></returns>
+ public WebResponseContent ResendTask(int taskNum)
+ {
+ try
+ {
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (task != null)
+ {
+ if (task.TaskState == (int)TaskStatusEnum.SC_Executing)
+ {
+ task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt();
+ }
+ else if(task.TaskState == (int)TaskStatusEnum.AGV_Executing)
+ {
+ task.TaskState = TaskStatusEnum.AGV_Execute.ObjToInt();
+ }
+ else
+ {
+ return WebResponseContent.Instance.Error($"姝や换鍔� { taskNum } 鏆傛椂涓嶈兘閲嶆柊涓嬪彂浠诲姟");
+ }
+ BaseDal.UpdateData(task);
+ }
+ else
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒颁换鍔℃秷鎭�");
+ }
+ return WebResponseContent.Instance.OK("浠诲姟閲嶆柊涓嬪彂鎴愬姛");
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
}
+
/// <summary>
/// 鎺ユ敹WMS浠诲姟淇℃伅
/// </summary>
@@ -179,7 +221,7 @@
return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃俊鎭�");
}
//鑾峰彇璺敱淇℃伅
- List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi));
+ List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi) && x.Depth==1);
router = routers.FirstOrDefault();
if (router == null)
{
@@ -194,10 +236,6 @@
task.CurrentAddress = router.StartPosi;
task.NextAddress = router.NextPosi;
task.DeviceCode = router.ChildPosiDeviceCode;
- if (task.TaskType == TaskTypeEnum.ProductMD.ObjToInt())
- {
- task.TaskState = TaskStatusEnum.Line_Executing.ObjToInt();
- }
}
else //鍑哄簱
{
@@ -324,6 +362,10 @@
content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
}
}
+ else
+ {
+ content = responseContent ?? content.Error("缁撴灉閿欒");
+ }
}
catch (Exception ex)
@@ -332,7 +374,31 @@
}
return content;
}
+ // <summary>
+ /// 鍏ュ簱鐢宠
+ /// </summary>
+ public WebResponseContent YLPurchaseBoxing(string palletCode, decimal weight = 0, decimal thickness = 0, decimal wide = 0,string stationCode="")
+ {
+ WebResponseContent? content = new WebResponseContent();
+ try
+ {
+ string address = AppSettings.Get("WMSApiAddress");
+ if (string.IsNullOrEmpty(address))
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+ }
+ string responseStr = HttpHelper.Get($"{address}/api/Task/YLPurchaseBoxing?palletCode={palletCode}&weight={weight}&thickness={thickness}&wide={wide}&stationCode={stationCode}");
+ WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+ content = responseContent;
+
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
// <summary>
/// 璇锋眰鎴愬搧鍏ュ簱宸烽亾
/// </summary>
@@ -438,51 +504,7 @@
}
return content;
}
-
- /// <summary>
- ///
- /// </summary>
- /// <param name="palletCode"></param>
- /// <param name="sourceAddress"></param>
- /// <param name="roadway"></param>
- /// <returns></returns>
- //public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string roadway)
- //{
- // WebResponseContent content = new WebResponseContent();
- // try
- // {
- // string address = AppSettings.Get("WMSApiAddress");
- // if (string.IsNullOrEmpty(address))
- // {
- // return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- // }
- // string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTask?stationCode={sourceAddress}&roadwayNo={roadway}&palletCode={palletCode}");
- // WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- // if (responseContent != null && responseContent.Status && responseContent.Data != null)
- // {
- // WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString());
- // if (taskDTO != null)
- // {
- // content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
- // }
- // }
-
- // }
- // catch (Exception ex)
- // {
- // content = WebResponseContent.Instance.Error(ex.Message);
- // }
- // return content;
- //}
-
-
- /// <summary>
- /// 鍒嗛厤宸烽亾
- /// </summary>
- /// <param name="taskNum"></param>
- /// <param name="roadwayNos"></param>
- /// <returns></returns>
- public WebResponseContent RequestWMSAssignRoadway(int taskNum, List<string> roadwayNos)
+ public WebResponseContent MESBoxCodeNotice(string boxCode)
{
WebResponseContent content = new WebResponseContent();
try
@@ -492,13 +514,8 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
}
- string responseStr = HttpHelper.Post($"{address}/api/Task/AssignRoadway?taskNum={taskNum}", roadwayNos.Serialize());
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- return responseContent;
- }
-
+ string responseStr = HttpHelper.Get($"{address}/api/Mes/MESBoxCodeNotice?boxCode={boxCode}");
+ return content.OK(responseStr);
}
catch (Exception ex)
{
@@ -506,77 +523,56 @@
}
return content;
}
-
/// <summary>
- ///
+ /// 鍒ゆ柇鍏佽鏀捐揣
/// </summary>
- /// <param name="roadwayNos"></param>
- /// <param name="palletCode"></param>
- /// <param name="heightType"></param>
/// <returns></returns>
- public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos, string palletCode, int heightType)
+ public string MESAvgArriveNotice(RequestAGVArriveDTO requestAGVArriveDTO)
{
- WebResponseContent content = new WebResponseContent();
- try
- {
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address))
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- }
- string responseStr = HttpHelper.Post($"{address}/api/Task/AssignRoadwayByHeightAndCode?palletCode={palletCode}&heightType={heightType}", roadwayNos.Serialize());
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- return responseContent;
- }
+ Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.MESAvgArriveNotice.ToString());
- }
- catch (Exception ex)
- {
- content = WebResponseContent.Instance.Error(ex.Message);
- }
- return content;
+ string response = Post(apiInfo.ApiAddress, JsonConvert.SerializeObject(requestAGVArriveDTO));
+
+ return response;
}
-
- /// <summary>
- /// 鍒嗛厤宸烽亾
- /// </summary>
- /// <param name="roadwayNos"></param>
- /// <param name="taskNum"></param>
- /// <param name="heightType"></param>
- /// <returns></returns>
- public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos, int taskNum, int heightType)
+ public static string Post(string serviceAddress, string requestJson = "", string contentType = "application/json", Dictionary<string, string>? headers = null)
{
- WebResponseContent content = new WebResponseContent();
+ string result = string.Empty;
+ DateTime beginDate = DateTime.Now;
try
{
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address))
+ using (HttpContent httpContent = new StringContent(requestJson))
{
- return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
- }
- string responseStr = HttpHelper.Post($"{address}/api/Task/AssignRoadway?taskNum={taskNum}&heightType={heightType}", roadwayNos.Serialize());
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- return responseContent;
- }
+ httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
+ using HttpClient httpClient = new HttpClient();
+ httpClient.Timeout = new TimeSpan(0, 0, 30);
+ string LoginToken = AppSettings.Get("MESLoginToken");
+ headers = new Dictionary<string, string>
+ {
+ //姝e紡
+ { "LoginToken", LoginToken }
+ };
+ if (headers != null)
+ {
+ foreach (var header in headers)
+ httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+ }
+ HttpResponseMessage responseMessage = httpClient.PostAsync(serviceAddress, httpContent).Result;
+ result = responseMessage.Content.ReadAsStringAsync().Result;
+ }
+ return result;
}
- catch (Exception ex)
+ catch (Exception e)
{
- content = WebResponseContent.Instance.Error(ex.Message);
+ throw new Exception(e.Message);
}
- return content;
+ finally
+ {
+ Logger.Add(serviceAddress, requestJson == null ? "" : requestJson, result, beginDate);
+ }
}
-
- /// <summary>
- /// 鍒嗛厤宸烽亾
- /// </summary>
- /// <param name="roadwayNos"></param>
- /// <returns></returns>
- public WebResponseContent RequestWMSAssignRoadway(List<string> roadwayNos)
+ public WebResponseContent CPEmptyInbound(string palletCode,string SourceAddress)
{
WebResponseContent content = new WebResponseContent();
try
@@ -586,13 +582,9 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
}
- string responseStr = HttpHelper.Post($"{address}/api/Task/SingleAssignRoadway", roadwayNos.Serialize());
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- return responseContent;
- }
+ var result = HttpHelper.Get($"{address}/api/Task/EmptyBackTask?barCode={palletCode}&startPoint={SourceAddress}");
+ content = JsonConvert.DeserializeObject<WebResponseContent>(result);
}
catch (Exception ex)
{
@@ -612,6 +604,26 @@
string address = AppSettings.Get("WMSApiAddress");
if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
string responseStr = HttpHelper.Get($"{address}/api/Task/AssignInboundTaskLocation?taskNum={taskNum}&roadwayNo={roadwayNo}");
+
+ WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+ if (responseContent != null && responseContent.Status && responseContent.Data != null)
+ {
+ return responseContent.Data.ToString();
+ }
+
+ return "";
+ }
+ /// <summary>
+ /// 鍚慦MS鐢宠鍑哄簱AGV缁堢偣
+ /// </summary>
+ /// <param name="taskNum">浠诲姟鍙�</param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public string? RequestTargetAddress(int taskNum)
+ {
+ string address = AppSettings.Get("WMSApiAddress");
+ if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
+ string responseStr = HttpHelper.Get($"{address}/api/Task/AssignOutTargetAddress?taskNum={taskNum}");
WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
if (responseContent != null && responseContent.Status && responseContent.Data != null)
@@ -712,7 +724,7 @@
task.ModifyDate = DateTime.Now;
BaseDal.UpdateData(task);
- _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, task.ExceptionMessage);
+ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, task.ExceptionMessage);
content = WebResponseContent.Instance.OK();
}
@@ -754,7 +766,7 @@
BaseDal.UpdateData(task);
- _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"浜哄伐鎭㈠鎸傝捣浠诲姟,鎭㈠鎸傝捣鏃朵换鍔$姸鎬併�恵task.TaskState}銆�");
+ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"浜哄伐鎭㈠鎸傝捣浠诲姟,鎭㈠鎸傝捣鏃朵换鍔$姸鎬併�恵task.TaskState}銆�");
content = WebResponseContent.Instance.OK();
}
@@ -795,7 +807,7 @@
BaseDal.UpdateData(task);
- _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"浜哄伐灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戝洖婊氬埌銆恵task.TaskState}銆�");
+ _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"浜哄伐灏嗕换鍔$姸鎬佷粠銆恵oldState}銆戝洖婊氬埌銆恵task.TaskState}銆�");
content = WebResponseContent.Instance.OK();
}
@@ -806,35 +818,7 @@
return content;
}
- public WebResponseContent SendSecureReplyToAgv(int taskNum)
- {
- try
- {
- Dt_Task WaitToTask = BaseDal.QueryFirst(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && x.TaskNum == taskNum);
- AgvSecureReplyDTO replyDTO = new AgvSecureReplyDTO()
- {
- ReqCode = Guid.NewGuid().ToString().Replace("-", ""), //WaitToTask.TaskNum.ToString(),
- taskCode = WaitToTask.AgvTaskNum,
- };
- WebResponseContent content = AgvSecureReply(replyDTO);
- if (content.Status)
- {
- WaitToTask.TaskState = TaskStatusEnum.AGV_Executing.ObjToInt();
- }
- else
- {
- WaitToTask.TaskState = TaskStatusEnum.Exception.ObjToInt();
- WaitToTask.ExceptionMessage = content.Message;
- }
- UpdateData(WaitToTask);
-
- return WebResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
+
/// <summary>
/// //鍒ゆ柇绉诲簱璐т綅浠诲姟鏄惁宸插瓨鍦紝濡傚瓨鍦ㄥ厛鎵ц
/// </summary>
@@ -867,7 +851,7 @@
public Dt_Task QueryBarCodeAGVFinishTask(int TaskNum, string currentAddress)
{
- return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.AGV_Finish && x.NextAddress == currentAddress && x.TaskNum == TaskNum, TaskOrderBy);
+ return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.AGV_Finish && x.CurrentAddress == currentAddress && x.TaskNum == TaskNum, TaskOrderBy);
}
public Dt_Task QueryExecutingTaskByBarcode(int TaskNum, string nextAddress)
@@ -890,8 +874,14 @@
{
if (task.TaskState == (int)TaskStatusEnum.SC_Executing)
{
+ Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == stationManger.StationCode && x.ChildPosi == stationManger.StationDeviceCode);
+ if (router == null)
+ {
+ UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
+ }
task.CurrentAddress = task.NextAddress;
- task.NextAddress = task.TargetAddress;
+ task.NextAddress = router.NextPosi;
task.TaskState = (int)TaskStatusEnum.Line_Executing;
nextStatus = TaskStatusEnum.Line_Executing;
}
@@ -906,8 +896,8 @@
if (task.TaskState == (int)TaskStatusEnum.Line_Executing)
{
#region 鍏ュ簱璋冪敤鎺ュ彛鑾峰彇璐т綅鍦板潃
- //string? local = RequestAssignLocation(task.TaskNum, task.Roadway);
- string? local = "SC05_YLDual-002-090-009-01";
+ string? local = RequestAssignLocation(task.TaskNum, task.Roadway);
+ //string? local = "SC03_YLDual-002-090-001-01";
if (!string.IsNullOrEmpty(local))
{
task.CurrentAddress = stationManger.StackerCraneStationCode;
@@ -926,12 +916,12 @@
}
else if (task.TaskState == (int)TaskStatusEnum.AGV_Finish)
{
- //content = AssignYLRoadwayNo(task.PalletCode);
- content.OK(data: "SC05_YLDual");
+ content = AssignYLRoadwayNo(task.PalletCode);
if (!content.Status)
{
return content.Error($"璇锋眰鍏ュ簱澶辫触锛歿content.Message}");
}
+ //string roadWay = "SC03_YLDual";
string roadWay = content.Data.ToString();
List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi && x.ChildPosiDeviceCode == roadWay);
@@ -963,8 +953,8 @@
}
task.ModifyDate = DateTime.Now;
task.Modifier = "System";
- BaseDal.UpdateData(task);
- //UpdateTask(task, nextStatus);
+ //BaseDal.UpdateData(task);
+ UpdateTask(task, nextStatus);
content = WebResponseContent.Instance.OK();
}
catch (Exception ex)
--
Gitblit v1.9.3