From 8bc65cd3363d7148c356fe2eecca3590a9a3b4e0 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期二, 21 十月 2025 09:34:41 +0800
Subject: [PATCH] 修改问题
---
Admin.NET/WCS.Application/Util/HttpService.cs | 299 +++++++++++++++++++++++++++++++++++------------------------
1 files changed, 179 insertions(+), 120 deletions(-)
diff --git a/Admin.NET/WCS.Application/Util/HttpService.cs b/Admin.NET/WCS.Application/Util/HttpService.cs
index a2d08ad..83bac49 100644
--- a/Admin.NET/WCS.Application/Util/HttpService.cs
+++ b/Admin.NET/WCS.Application/Util/HttpService.cs
@@ -3,8 +3,11 @@
using Furion.Logging;
using Furion.RemoteRequest.Extensions;
using Newtonsoft.Json;
+using System.Net.Http.Headers;
+using System.Reflection.PortableExecutable;
using System.Text;
using WCS.Application.Entity;
+using WCS.Application.Util;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionResponse.Types;
namespace WCS.Application;
@@ -12,28 +15,97 @@
{
private dynamic Urls;
- private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
+ private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
+ private static Dictionary<string, string> dicConverCar = new Dictionary<string, string>();
public HttpService()
{
var _sysConfigService = App.GetService<SysConfigService>();
Urls = _sysConfigService.GetSystemInfo().Result;
+ dicConverCar = new Dictionary<string, string>
+ {
+ {"013","190601"},
+ {"014","191201"},
+ {"015","190602"},
+ {"016","191202"},
+
+ {"002","030401"},
+ {"006","030402"},
+ {"003","030601"},
+ {"007","030602"},
+ {"005","031201"},
+ {"008","031202"},
+ };
}
+ /// <summary>
+ /// 璋冪敤WMS鎺ュ彛鐢宠鍙犳墭鏈虹┖鎵樺叆搴撴帴鍙�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ public string RequestLiKuPallet(NullPallInRequest model)
+ {
+ string returnStr = "";
+
+ var task = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.TaskType == TaskTypeEnum.In && m.PalletNo == model.PalletNo);
+
+ if (task == null)
+ {
+ string url = Urls.WMSAddress + ":" + Urls.WMSPort;
+ var result = (url + "/api/DownAPi/RequestPalletIn").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
+ Log.Information("璋冪敤WMS鎺ュ彛鍙嶉绌烘墭鍏ュ簱浠诲姟鎺ュ彛" + result.ToJson());
+ if (result.Success == 0)
+ {
+
+ var taskAdd = new WcsTask()
+ {
+ TaskType = TaskTypeEnum.In,
+ Status = TaskStatusEnum.Wait,
+ Type = PLCTypeEnum.AGV,
+ Origin = "WMS",
+
+ Qty = result.TaskList.Qty,
+ PalletNo = model.PalletNo,
+ TaskNo = result.TaskList.TaskNo,
+ Levels = 888,
+
+ StartLocate = model.Locate,
+ StartRoadway = result.TaskList.StartRoadway,
+ EndLocate = result.TaskList.EndLocate,
+ EndRoadway = result.TaskList.EndRoadway,
+ TaskId = FourWayCarUtil.GetTaskId()
+ };
+
+ _db.Insertable(taskAdd).ExecuteCommand();
+
+ returnStr = result.TaskList.EndLocate;
+
+ }
+ else
+ {
+ returnStr = "-1:" + result.Message;
+ return returnStr;
+ }
+ }
+ else
+ {
+ returnStr = task.EndLocate;
+ }
+
+ return returnStr;
+ }
/// <summary>
/// 璋冪敤WMS鎺ュ彛鐢宠宸烽亾鎺ュ彛
/// </summary>
/// <param name="palletNo"></param>
- /// <param name="startLocat"></param>
- /// <param name="taskModel"></param>
- /// <param name="ceng"></param>
+ /// <param name="startLocat"></param>
/// <param name="endLocat"></param>
/// <param name="taskNo"></param>
/// <returns></returns>
- public string RequestRoadWay(string palletNo, string startLocat, string taskModel, string ceng, ref string endLocat, ref string taskNo)
+ public string RequestRoadWay(string palletNo, string startLocat, ref string endLocat, ref string taskNo)
{
string returnStr = "";
-
+ var stationNum = startLocat.PadLeft(3, '0');
var task = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.TaskType == TaskTypeEnum.In && m.PalletNo == palletNo);
@@ -42,12 +114,11 @@
var model = new RequestAsnTask()
{
PalletNo = palletNo,
- HouseNo = "W01",
- TaskModel = taskModel
+ HouseNo = "W01"
};
string url = Urls.WMSAddress + ":" + Urls.WMSPort;
- var result = (url + "/api/DownAPi/RequestRoadWay").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
+ var result = (url + "/api/DownAPi/RequestMiJiRoadWay").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
Log.Information("璋冪敤WMS鎺ュ彛鍙嶉浠诲姟鎺ュ彛" + result.ToJson());
if (result.Success == 0)
{
@@ -56,15 +127,19 @@
{
TaskType = TaskTypeEnum.In,
Status = TaskStatusEnum.Wait,
+ Type = PLCTypeEnum.ConveyorLine,
Origin = "WMS",
StartLocate = startLocat,
PalletNo = palletNo,
TaskNo = result.TaskList.TaskNo,
Levels = 999,
EndLocate = result.TaskList.EndLocate,
- EndRoadway = result.TaskList.EndRoadway
+ EndRoadway = result.TaskList.EndRoadway,
+ TaskId = FourWayCarUtil.GetTaskId()
};
-
+
+ var endLocat2 = PLCCommon.RoadwayToStationNum(taskAdd.EndRoadway, stationNum);
+ taskAdd.StartRoadway = dicConverCar[endLocat2];
_db.Insertable(taskAdd).ExecuteCommand();
endLocat = result.TaskList.EndRoadway;
taskNo = result.TaskList.TaskNo;
@@ -84,135 +159,46 @@
taskNo = task.TaskNo;
}
- endLocat = PLCCommon.RoadwayToStationNum(endLocat, ceng);
+ endLocat = PLCCommon.RoadwayToStationNum(endLocat, stationNum);
return returnStr;
}
- /// <summary>
- /// 璋冪敤WMS鎺ュ彛鑷姩鐮佸灈缁戝畾淇℃伅杩斿洖宸烽亾鍙�
- /// </summary>
- /// <returns></returns>
- public string BindRequestRoadWay(string orderNo, string palletNo, decimal qty, string type, string skuNo, string lotNo, string lotText, string supplierLot, List<WcsBoxInfo> detail,
- string startLocat, string taskModel, string ceng, ref string endLocat, ref string taskNo)
- {
- string returnStr = "";
-
- var task = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.TaskType == TaskTypeEnum.In && m.PalletNo == palletNo);
- if (task == null)
- {
- var model = new BoxPalletBindVm()
- {
- OrderCode = "",//鏆傛棤涓婃父绯荤粺缂栧彿
- AsnNo = orderNo,
- AsnDetailNo = 0,//鏆傛棤鍏ュ簱鍗曟槑缁嗙紪鍙凤紝WMS鏍规嵁鐗╂枡鎵规鏌ユ壘
- PalletNo = palletNo,
- Qty = qty,
- Type = type,
- SkuNo = skuNo,
- LotNo = lotNo,
- LotText = lotText,
- SupplierLot = supplierLot,
- Detail = detail
- };
- string url = Urls.WMSAddress + ":" + Urls.WMSPort;
- var result = (url + "/api/DownAPi/BindRequestRoadWay").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
- Log.Information("璋冪敤WMS鎺ュ彛鍙嶉浠诲姟鎺ュ彛" + result.ToJson());
- if (result.Success == 0)
- {
- var taskAdd = new WcsTask()
- {
- TaskType = TaskTypeEnum.In,
- Status = TaskStatusEnum.Wait,
- Origin = "WMS",
- StartLocate = startLocat,
- PalletNo = palletNo,
- TaskNo = result.TaskList.TaskNo,
- EndLocate = result.TaskList.EndLocate,
- EndRoadway = result.TaskList.EndRoadway
- };
-
- _db.Insertable(taskAdd).ExecuteCommand();
- endLocat = result.TaskList.EndRoadway;
- returnStr = result.TaskList.EndLocate;
- }
- else
- {
- returnStr = "-1:" + result.Message;
- return returnStr;
- }
- }
- else
- {
- returnStr = task.EndLocate;
- endLocat = task.EndRoadway;
- taskNo = task.TaskNo;
- }
-
- endLocat = PLCCommon.RoadwayToStationNum(endLocat, ceng);
-
- return returnStr;
- }
/// <summary>
/// 璋冪敤WMS鎺ュ彛鐢宠鍌ㄤ綅鎺ュ彛
/// </summary>
/// <param name="palletNo"></param>
- /// <param name="startLocat"></param>
- /// <param name="taskModel"></param>
- /// <param name="starRoadWay"></param>
+ /// <param name="taskId"></param>
/// <param name="taskNo"></param>
/// <returns></returns>
- public string RequestLocate(string palletNo, string startLocat, string taskModel, string starRoadWay, ref string taskNo)
+ public string RequestLocate(string palletNo, int taskId,ref string taskNo)
{
string returnStr = "";
-
-
+
var task = _db.Queryable<WcsTask>().First(m => m.IsDelete == false
&& (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)
- && m.TaskType == TaskTypeEnum.In && m.PalletNo == palletNo && !string.IsNullOrWhiteSpace(m.EndLocate));
+ && m.TaskType == TaskTypeEnum.In && m.PalletNo == palletNo && m.TaskId == taskId);
- if (task == null)
+ if (task != null)
{
var model = new RequestAsnTask()
{
PalletNo = palletNo,
HouseNo = "W01",
- RoadWayNo = starRoadWay,
- TaskModel = taskModel
+ RoadWayNo = task.EndRoadway,
};
-
+
string url = Urls.WMSAddress + ":" + Urls.WMSPort;
- var result = (url + "/api/DownAPi/RequestLocation").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
+ var result = (url + "/api/DownAPi/RequestMiJiLocation").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>().Result;
Log.Information("璋冪敤WMS鐢宠鍌ㄤ綅鎺ュ彛鍙嶉浠诲姟鎺ュ彛" + result.ToJson());
if (result.Success == 0)
{
- var taskUp = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.TaskNo == result.TaskList.TaskNo);
- if (taskUp == null)
- {
- var taskAdd = new WcsTask()
- {
- TaskNo = result.TaskList.TaskNo,
- TaskType = TaskTypeEnum.In,
- Status = TaskStatusEnum.Wait,
- //IsSuccess =TaskSuccessEnum.Success,
- Origin = "WMS",
- StartLocate = startLocat,
- PalletNo = palletNo,
- EndLocate = result.TaskList.EndLocate,
- EndRoadway = result.TaskList.EndRoadway
- };
- _db.Insertable(taskAdd).ExecuteCommand();
- HubUtil.PublicTask(taskAdd.Adapt<WcsTaskOutput>());
- }
- else
- {
- taskUp.EndRoadway = result.TaskList.EndRoadway;
- taskUp.EndLocate = result.TaskList.EndLocate;
- _db.Updateable(taskUp).ExecuteCommand();
- HubUtil.PublicTask(taskUp.Adapt<WcsTaskOutput>());
- }
-
-
+ task.Status = TaskStatusEnum.Wait;
+ task.Type = PLCTypeEnum.ShuttleCar;
+ task.EndLocate = result.TaskList.EndLocate;
+ _db.Updateable(task).ExecuteCommand();
+ HubUtil.PublicTask(task.Adapt<WcsTaskOutput>());
+
returnStr = result.TaskList.EndLocate;
taskNo = result.TaskList.TaskNo;
}
@@ -224,8 +210,7 @@
}
else
{
- returnStr = task.EndLocate;
- taskNo = task.TaskNo;
+ returnStr = "-1:娌℃湁鎵惧埌浠诲姟";
}
return returnStr;
@@ -242,6 +227,19 @@
string url = Urls.WMSAddress + ":" + Urls.WMSPort;
var result = await (url + "/api/DownAPi/ReceiveWcsSignal").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseModel>();
Log.Information("璋冪敤WMS鎺ュ彛鍙嶉浠诲姟鎺ュ彛" + result.ToJson());
+ return result;
+ }
+
+ /// <summary>
+ /// 璋冪敤WMS鎺ュ彛 鍙嶉浠诲姟鍙栬揣瀹屾垚鎺ュ彛
+ /// </summary>
+ /// <param name="model">浠诲姟瀹屾垚鐘舵��</param>
+ /// <returns></returns>
+ public async Task<ResponseModel> RequestTaskQh(TaskRequestWMS model)
+ {
+ string url = Urls.WMSAddress + ":" + Urls.WMSPort;
+ var result = await (url + "/api/DownAPi/UpLocateByAgvOut").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseModel>();
+ Log.Information("璋冪敤WMS鎺ュ彛-鍙嶉浠诲姟鍙栬揣瀹屾垚鎺ュ彛" + result.ToJson());
return result;
}
@@ -381,15 +379,76 @@
/// </summary>
/// <param name="mod"></param>
/// <returns></returns>
- public async Task<AgvResponse> GenAgvSchedulingTask(AgvTaskInput mod)
+ public async Task<ResponseAgvDto> GenAgvSendTask(AgvTaskSend mod)
{
- string url = Urls.RCSAddress + ":" + Urls.RCSPort;
- var result = await (url + "/rcms/services/rest/hikRpcService/genAgvSchedulingTask").SetBody(mod, "application/json", Encoding.UTF8).PostAsAsync<AgvResponse>();
+ string url = Urls.RCSAddress + "/rcs/rtas/api/robot/controller/task/submit";
+ var requestId = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
+ var dic = new Dictionary<string, string>()
+ {
+ {"X-lr-request-id",requestId },
+ {"X-lr-version","4.2" },
+ };
+ Log.Information("璋冪敤AGV灏忚溅鎺ュ彛涓嬪彂浠诲姟璁板綍" + mod.ToJson());
+ var result = await url.SetHeaders(dic).SetBody(mod, "application/json", Encoding.UTF8).PostAsAsync<ResponseAgvDto>();
Log.Information("璋冪敤AGV灏忚溅鎺ュ彛涓嬪彂浠诲姟" + result.ToJson());
return result;
}
/// <summary>
+ /// 璋冪敤AGV灏忚溅鎺ュ彛缁х画鎵ц浠诲姟
+ /// </summary>
+ /// <param name="taskNo">浠诲姟鍙�</param>
+ /// <returns></returns>
+ public async Task<ResponseAgvDto> GenAgvContinueTask(string taskNo)
+ {
+
+
+ string url = Urls.RCSAddress + "/rcs/rtas/api/robot/controller/task/continue";
+ var requestId = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
+ var dic = new Dictionary<string, object>()
+ {
+ {"X-lr-request-id",requestId },
+ {"X-lr-version","4.2" },
+ };
+ var mod = new
+ {
+ robotTaskCode = taskNo
+ };
+
+ var result = await url.SetHeaders(dic).SetBody(mod, "application/json", Encoding.UTF8).PostAsAsync<ResponseAgvDto>();
+ Log.Information("璋冪敤AGV灏忚溅鎺ュ彛缁х画鎵ц浠诲姟" + result.ToJson());
+ return result;
+ }
+
+ /// <summary>
+ /// 璋冪敤AGV灏忚溅鎺ュ彛 杞藉叿锛堟墭鐩橈級涓庣珯鐐癸紙鍌ㄤ綅锛夎В缁戝畾鎺ュ彛
+ /// </summary>
+ /// <param name="palletNo">鎵樼洏鍙�</param>
+ /// <param name="locateNo">鍌ㄤ綅鍙�</param>
+ /// <returns></returns>
+ public async Task<ResponseAgvDto> GenAgvUnbind(string palletNo,string locateNo)
+ {
+
+
+ string url = Urls.RCSAddress + "/rcs/rtas/api/robot/controller/carrier/unbind";
+ var requestId = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
+ var dic = new Dictionary<string, string>()
+ {
+ {"X-lr-request-id",requestId },
+ {"X-lr-version","4.2" },
+ };
+ var mod = new
+ {
+ carrierCode = palletNo,
+ siteCode = locateNo
+ };
+
+ var result = await url.SetHeaders(dic).SetBody(mod, "application/json", Encoding.UTF8).PostAsAsync<ResponseAgvDto>();
+ Log.Information("璋冪敤AGV灏忚溅鎺ュ彛缁х画鎵ц浠诲姟" + result.ToJson());
+ return result;
+ }
+
+ /// <summary>
/// 璋冪敤AGV灏忚溅鎺ュ彛鍙嶉寮�闂ㄦ垚鍔�
/// </summary>
/// <param name="mod"></param>
--
Gitblit v1.8.0