Admin.NET/WCS.Application/Model/TaskRequest.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/PLC/PLCService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Admin.NET/WCS.Application/Util/HttpService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Admin.NET/WCS.Application/Model/TaskRequest.cs
@@ -276,4 +276,32 @@ public int TaskType { get; set; } } /// <summary> /// 空托盘出库 /// </summary> public class OutPalletModel { /// <summary> /// 出库垛数 /// </summary> public string Num { get; set; } /// <summary> /// 出库口 /// </summary> public string OutMode { get; set; } } /// <summary> /// 申请空托出库WMS返回的实体 /// </summary> public class ResponseOutPallet { public string StatusCode { get; set; } public int Success { get; set; } public string Message { get; set; } public List<ResponseTasksModel> TaskList { get; set; } } Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -1345,20 +1345,95 @@ #endregion #region 叫空托盘跺 case "50": // plc申请空托 { // 调用WMS空托出库接口,返回出库任务存入出库表 // 写入 var strMsg = ""; var http = new HttpService(); strMsg = http.IssuePlnOutHouseWcs("1", "205"); if (!strMsg.Contains("-1")) { // 写入plc流程字60 var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "60"); } else { // 申请巷道失败!LED显示 Log.Error(string.Format($"工位号:{modDevice.StationNum}申请空托跺失败:{strMsg};")); } } break; case "80": // 空托盘跺已到位 { // 调用wms任务出库任务完成 // 获取跺机点位配置 var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "任务号"); var (res, val) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTask.PlcPos); // 根据任务号获取任务信息 if (res.IsSucceed) { string tasknoVal = val.ToString(); var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false); if (modTask == null) { Log.Error(string.Format($"工位号:{modDevice.StationNum}空托盘到达,未找到对应的任务!任务号{tasknoVal};")); break; } // 写入plc流程字90 var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "90"); if (ret.IsSucceed) { // 改变任务状态 modTask.Status = TaskStatusEnum.Complete; modTask.FinishDate = DateTime.Now; _db.Updateable(modTask).ExecuteCommand(); HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); var modTaskMonitor = new WcsTaskMonitor() { TaskNo = modTask.TaskNo, PlcId = modDevice.Id, PlcName = modDevice.Text, PalletNo = modTask.PalletNo, Status = TaskStatusEnum.Complete, StartLocat = modTask.StartLocate, EndLocat = modTask.EndLocate, InteractiveMsg = $"任务完成" }; if (modTask.Origin == "WMS") { // 反馈WMS var requestMode = new TaskRequestWMS() { TaskNo = modTask.TaskNo, PalletNo = modTask.PalletNo, TaskType = ((int)TaskTypeEnum.Out).ToString(), TaskStatus = ((int)TaskStatusEnum.Complete).ToString() }; HttpService httpService = new HttpService(); var modResponseTask = httpService.RequestTask(requestMode).Result; if (modResponseTask.StatusCode == 0) { modTaskMonitor.InteractiveMsg = "任务完成,返回给WMS任务完成"; } else { Log.Error(string.Format("任务反馈失败:StatusCode:{0};Msg:{1}", modResponseTask.StatusCode, modResponseTask.Msg)); } } // 插入交互日志 _db.Insertable(modTaskMonitor).ExecuteCommand(); //下发任务日志 HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); } } } break; #endregion default: break; } Admin.NET/WCS.Application/Util/HttpService.cs
@@ -227,7 +227,6 @@ } return returnStr; } @@ -269,4 +268,62 @@ 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.Out, Status = TaskStatusEnum.Wait, //IsSuccess =TaskSuccessEnum.Success, Origin = "WMS", StartLocate = item.StartLocate, 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; } }