using LogLibrary.Log; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Core; using WIDESEA_Core.Const; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_DTO; using WIDESEA_DTO.MOM; using WIDESEA_DTO.WMS; using WIDESEA_Model.Models; using WIDESEA_StorageBasicRepository; using WIDESEAWCS_Model.Models; namespace WIDESEA_StoragIntegrationServices { public partial class MCSService { public WebResponseContent NotifyFinishTest(object json) { WebResponseContent content = new WebResponseContent(); try { if (string.IsNullOrEmpty(json.ToString())) throw new Exception("上传参数为空"); var result = JsonConvert.DeserializeObject(json.ToString()); if (string.IsNullOrEmpty(result?.PalletBarcode)) throw new Exception("上传托盘号为空"); var location = _locationRepository.QueryFirst(x => x.AreaId == result.LocationArea && x.LocationCode == result.LocationID); if (location == null) throw new Exception("未知库位"); Dt_StationManager stationManager; if (result.IsNG == 1) { stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == location.RoadwayNo && x.stationType == 4); } else { stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == location.RoadwayNo && x.stationType == 2); } if (stationManager == null) throw new Exception("未知站台"); int taskNum = _taskRepository.GetTaskNo().Result; Dt_Task task = new Dt_Task { CreateDate = DateTime.Now, Creater = "HK", CurrentAddress = result.LocationID, Grade = 1, Dispatchertime = DateTime.Now, PalletCode = result.PalletBarcode, Roadway = location.RoadwayNo, SourceAddress = result.LocationID, TaskState = (int)TaskOutStatusEnum.OutNew, TaskType = result.IsNG == 1 ? (int)TaskOutboundTypeEnum.OutNG : (int)TaskOutboundTypeEnum.Outbound, TargetAddress = stationManager.stationLocation, NextAddress = stationManager.stationChildCode, TaskNum = taskNum, //_taskRepository.GetTaskNo().Result, TaskId = 0, }; // 尝试添加新任务 WMSTaskDTO taskDTO = new WMSTaskDTO() { TaskNum = task.TaskNum.Value, Grade = 1, PalletCode = task.PalletCode, RoadWay = task.Roadway, SourceAddress = task.SourceAddress, TargetAddress = task.TargetAddress, TaskState = task.TaskState.Value, Id = 0, TaskType = result.IsNG == 1 ? (int)TaskOutboundTypeEnum.OutNG : (int)TaskOutboundTypeEnum.Outbound, }; var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue; var ReceiveByWMSTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveByWMSTask)?.ConfigValue; if (ReceiveByWMSTask == null || ipAddress == null) { throw new Exception("WMS IP 未配置"); } var wmsIpAddrss = ipAddress + ReceiveByWMSTask; var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(taskDTO)); //http://localhost:9291/api/Task/ReceiveTask, if (respon != null) { WebResponseContent respone = JsonConvert.DeserializeObject(respon.ToString()); if (respone.Status) { var taskId = _taskRepository.AddData(task); } else { throw new Exception("WCS处理失败:" + respone.Message); } } else { throw new Exception("WCS处理失败"); } //WMSTaskDTO taskDTO = new WMSTaskDTO //{ // Id = 0, // Grade = 1, // PalletCode = result.PalletBarcode, // RoadWay = location.RoadwayNo, // SourceAddress = result.LocationID, // TargetAddress = task.TargetAddress, // TaskNum = taskNum, //_taskRepository.GetTaskNo().Result, // TaskState = (int)TaskOutStatusEnum.OutNew, //}; LogFactory.GetLog("分容测试完成通知").Info(true, $"\r\r--------------------------------------"); LogFactory.GetLog("分容测试完成通知").Info(true, result); return content.OK(); } catch (Exception ex) { LogFactory.GetLog("分容测试完成通知").Info(true, $"\r\r--------------------------------------"); LogFactory.GetLog("分容测试完成通知").Info(true, ex.Message); return content.Error(ex.Message); } } } }