| | |
| | | using Furion.Logging; |
| | | using DocumentFormat.OpenXml.EMMA; |
| | | using DocumentFormat.OpenXml.Vml.Office; |
| | | using Elastic.Clients.Elasticsearch; |
| | | using Furion.Logging; |
| | | using Furion.RemoteRequest.Extensions; |
| | | using Newtonsoft.Json; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using System.Text; |
| | | using WCS.Application.Entity; |
| | | using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionResponse.Types; |
| | | |
| | | namespace WCS.Application; |
| | | public class HttpService |
| | | { |
| | | private dynamic Urls; |
| | | |
| | | private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId); |
| | | public HttpService() |
| | | { |
| | | var _sysConfigService = App.GetService<SysConfigService>();//todo 这里需要测试下生命周期问题 |
| | | Urls = _sysConfigService.GetSystemInfo().Result; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口反馈任务接口 |
| | | /// 调用WMS接口申请巷道接口 |
| | | /// </summary> |
| | | /// <param name="palletNo"></param> |
| | | /// <param name="startLocat"></param> |
| | | /// <param name="taskModel"></param> |
| | | /// <param name="ceng"></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) |
| | | { |
| | | 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 RequestAsnTask() |
| | | { |
| | | PalletNo = palletNo, |
| | | HouseNo = "W01", |
| | | TaskModel = taskModel |
| | | }; |
| | | |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var result = (url + "/api/DownAPi/RequestRoadWay").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, |
| | | Levels = 999, |
| | | EndLocate = result.TaskList.EndLocate, |
| | | EndRoadway = result.TaskList.EndRoadway |
| | | }; |
| | | |
| | | _db.Insertable(taskAdd).ExecuteCommand(); |
| | | endLocat = result.TaskList.EndRoadway; |
| | | taskNo = result.TaskList.TaskNo; |
| | | 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> |
| | | /// <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; |
| | | taskNo = result.TaskList.TaskNo; |
| | | } |
| | | 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="taskNo"></param> |
| | | /// <returns></returns> |
| | | public string RequestLocate(string palletNo, string startLocat, string taskModel, string starRoadWay, 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)); |
| | | |
| | | if (task == null) |
| | | { |
| | | var model = new RequestAsnTask() |
| | | { |
| | | PalletNo = palletNo, |
| | | HouseNo = "W01", |
| | | RoadWayNo = starRoadWay, |
| | | TaskModel = taskModel |
| | | }; |
| | | |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var result = (url + "/api/DownAPi/RequestLocation").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>()); |
| | | } |
| | | |
| | | |
| | | returnStr = result.TaskList.EndLocate; |
| | | taskNo = result.TaskList.TaskNo; |
| | | } |
| | | else |
| | | { |
| | | returnStr = "-1:" + result.Message; |
| | | return returnStr; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | returnStr = task.EndLocate; |
| | | taskNo = task.TaskNo; |
| | | } |
| | | |
| | | return returnStr; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口 反馈任务接口 |
| | | /// </summary> |
| | | /// <param name="model">任务完成状态</param> |
| | | /// <returns></returns> |
| | | public async Task<ResponseTasks> RequestTask(TaskRequest model) |
| | | public async Task<ResponseModel> RequestTask(TaskRequestWMS model) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var result = await (url + "/api/DownAPi/ReceiveWcsSignal").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>(); |
| | | var result = await (url + "/api/DownAPi/ReceiveWcsSignal").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseModel>(); |
| | | Log.Information("调用WMS接口反馈任务接口" + result.ToJson()); |
| | | return result; |
| | | } |
| | |
| | | public async Task<ResponseTasks> RequestEmptyException(TaskRequest model) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var result = await (url + "/api/DownAPi/EmptyException").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>(); |
| | | //string TaskType = ""; |
| | | //string TaskStatus = ""; |
| | | //var PalletNo = ""; |
| | | //var TaskNo = ""; |
| | | var str = new |
| | | { |
| | | PalletNo = model.PalletNo, |
| | | TaskNo = model.TaskNo, |
| | | TaskType = model.TaskType.ToString(), |
| | | TaskStatus = model.TaskStatus.ToString(), |
| | | }; |
| | | var result = await (url + "/api/DownAPi/EmptyException").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>(); |
| | | Log.Information("调用WMS接口反馈空取异常接口" + result.ToJson()); |
| | | return result; |
| | | } |
| | |
| | | public async Task<ResponseTasks> RequestFullException(TaskRequest model) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var result = await (url + "/api/DownAPi/FullException").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>(); |
| | | var str = new |
| | | { |
| | | PalletNo = model.PalletNo, |
| | | TaskNo = model.TaskNo, |
| | | TaskType = model.TaskType.ToString(), |
| | | TaskStatus = model.TaskStatus.ToString(), |
| | | }; |
| | | var result = await (url + "/api/DownAPi/FullException").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<ResponseTasks>(); |
| | | Log.Information("调用WMS接口反馈满取异常接口" + result.ToJson()); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口申请空托跺出库 |
| | | /// </summary> |
| | | /// <param name="Num"></param> |
| | | /// <param name="OutMode"></param> |
| | | /// <returns></returns> |
| | | public string IssuePlnOutHouseWcs(string Num, string OutMode) |
| | | { |
| | | string returnStr = ""; |
| | | |
| | | var model = new OutPalletModel() |
| | | { |
| | | Num = Num,//出库跺数 |
| | | OutMode = OutMode//出库口 |
| | | }; |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var result = (url + "/api/DownAPi/IssuePlnOutHouseWcs").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseOutPallet>().Result; |
| | | Log.Information("调用WMS接口反馈任务接口" + result.ToJson()); |
| | | |
| | | if (result.Success == 0) |
| | | { |
| | | foreach (var item in result.TaskList) |
| | | { |
| | | var taskUp = _db.Queryable<WcsTask>().First(m => m.IsDelete == false && m.TaskNo == item.TaskNo); |
| | | if (taskUp == null) |
| | | { |
| | | var taskAdd = new WcsTask() |
| | | { |
| | | TaskNo = item.TaskNo, |
| | | TaskType = (TaskTypeEnum)(int.Parse(item.TaskType)), |
| | | Status = TaskStatusEnum.Wait, |
| | | //IsSuccess =TaskSuccessEnum.Success, |
| | | Origin = "WMS", |
| | | StartLocate = item.StartLocate, |
| | | StartRoadway = item.StartRoadway, |
| | | PalletNo = item.PalletNo, |
| | | EndLocate = item.EndLocate, |
| | | EndRoadway = item.EndRoadway |
| | | }; |
| | | _db.Insertable(taskAdd).ExecuteCommand(); |
| | | HubUtil.PublicTask(taskAdd.Adapt<WcsTaskOutput>()); |
| | | } |
| | | else |
| | | { |
| | | taskUp.EndRoadway = item.EndRoadway; |
| | | taskUp.EndLocate = item.EndLocate; |
| | | _db.Updateable(taskUp).ExecuteCommand(); |
| | | HubUtil.PublicTask(taskUp.Adapt<WcsTaskOutput>()); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | returnStr = "-1:" + result.Message; |
| | | return returnStr; |
| | | } |
| | | return returnStr; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口申请空托跺绑定 |
| | | /// </summary> |
| | | /// <param name="Qty"></param> |
| | | /// <param name="palletNo"></param> |
| | | /// <returns></returns> |
| | | public string BindPlnInHouseWcs(string Qty, string palletNo) |
| | | { |
| | | string returnStr = ""; |
| | | |
| | | var model = new BindPalletModel() |
| | | { |
| | | BindType = "1",//申请类型 |
| | | Qty = int.Parse(Qty),//叠托机跺托盘数 |
| | | PalletNo = palletNo,//托盘号 |
| | | }; |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var result = (url + "/api/DownAPi/BindPlnInHouseWcs").SetBody(model, "application/json", Encoding.UTF8).PostAsAsync<ResponseOutPallet>().Result; |
| | | Log.Information("调用WMS接口反馈任务接口" + result.ToJson()); |
| | | |
| | | if (result.Success == 0) |
| | | { |
| | | returnStr = result.TaskList.ToString(); |
| | | } |
| | | else |
| | | { |
| | | returnStr = "-1:" + result.Message; |
| | | return returnStr; |
| | | } |
| | | return returnStr; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口反馈申请缠膜接口 |
| | | /// </summary> |
| | | /// <param name="PalletNo">托盘号</param> |
| | | /// <returns></returns> |
| | | public string RequestPackWcs(string PalletNo) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var str = new PackModel() |
| | | { |
| | | PalletNo = PalletNo |
| | | }; |
| | | |
| | | var result = (url + "/api/DownAPi/RequestPackWcs").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<IsBaleModel2>().Result; |
| | | Log.Information("调用WMS接口反馈申请缠膜异常接口" + result.ToJson()); |
| | | |
| | | return result.Success.ToString(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口反馈拆膜异常接口 |
| | | /// </summary> |
| | | /// <param name="palletno">托盘号</param> |
| | | /// <returns></returns> |
| | | public string RequestUnPackWcs(string palletno) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var str = new |
| | | { |
| | | PalletNo = palletno |
| | | }; |
| | | var result = (url + "/api/DownAPi/RequestUnPackWcs").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<IsBaleModel2>().Result; |
| | | Log.Information("调用WMS接口反馈拆膜异常接口" + result.ToJson()); |
| | | return result.Success.ToString(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口反馈缠膜完成 |
| | | /// </summary> |
| | | /// <param name="palletno">托盘号</param> |
| | | /// <returns></returns> |
| | | public string RequestPackedWcs(string palletno) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var str = new |
| | | { |
| | | PalletNo = palletno |
| | | }; |
| | | var result = (url + "/api/DownAPi/RequestPackedWcs").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<IsBaleModel2>().Result; |
| | | Log.Information("调用WMS接口反馈缠膜完成异常接口" + result.ToJson()); |
| | | return result.Success.ToString(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口反馈拆垛托盘信息 |
| | | /// </summary> |
| | | /// <param name="palletno">托盘号</param> |
| | | /// <param name="taskno">任务号</param> |
| | | /// <returns></returns> |
| | | public RequestBoxInfoCheckAll RequestBoxCheckinfo(string palletno,string taskno) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var str = new |
| | | { |
| | | PalletNo = palletno, |
| | | TaskNo = taskno |
| | | }; |
| | | var result = (url + "/api/DownAPi/ResultBoxInfoCheckWcs").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<RequestBoxInfoCheckAll>().Result; |
| | | Log.Information("调用WMS接口反馈拆托托盘信息异常接口" + result.ToJson()); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口反馈分拣出库箱信息 |
| | | /// </summary> |
| | | /// <param name="palletno">托盘号</param> |
| | | /// <param name="taskno">任务号</param> |
| | | /// <returns></returns> |
| | | public IsBaleModel2 RequestBoxno(string palletno) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var str = new |
| | | { |
| | | PalletNo = palletno, |
| | | }; |
| | | var result = (url + "/api/DownAPi/RequestBoxno").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<IsBaleModel2>().Result; |
| | | Log.Information("调用WMS接口反馈缠膜完成异常接口" + result.ToJson()); |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 调用WMS接口验证箱码是否可拣货并返回装车口 |
| | | /// </summary> |
| | | /// <param name="boxNo">箱码</param> |
| | | /// <returns></returns> |
| | | public RequestloadingAddre ResultBoxInfoExportWcs(string boxNo) |
| | | { |
| | | string url = Urls.WMSAddress + ":" + Urls.WMSPort; |
| | | var str = new |
| | | { |
| | | BoxNo = boxNo |
| | | }; |
| | | var result = (url + "/api/DownAPi/ResultBoxInfoCheckWcs").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<RequestloadingAddre>().Result; |
| | | Log.Information("调用WMS接口验证箱码是否可拣货并返回装车口:" + result.ToJson()); |
| | | |
| | | return result; |
| | | } |
| | | } |