| using LogLibrary.Log; | 
| using Masuit.Tools; | 
| 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<NotifyFinishTest>(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("未知库位"); | 
|   | 
|                 if (_taskRepository.QueryFirst(x => x.SourceAddress == result.LocationID && x.Roadway == location.RoadwayNo) != 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 = result.IsNG == 1 ? 1 : 2, | 
|                     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 = result.IsNG == 1 ? 1 : 2, | 
|                     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<WebResponseContent>(respon.ToString()); | 
|                     if (respone.Status) | 
|                     { | 
|                         var taskId = _taskRepository.AddData(task); | 
|                         location.LocationStatus = (int) LocationEnum.InStockDisable; | 
|                         _locationRepository.UpdateData(location); | 
|   | 
|                         _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { taskDTO.PalletCode }); | 
|                     } | 
|   | 
|                     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.ToJsonString()); | 
|                 return content.OK(); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 LogFactory.GetLog("分容测试完成通知").Info(true, $"\r\r--------------------------------------"); | 
|                 LogFactory.GetLog("分容测试完成通知").Info(true, ex.Message); | 
|                 return content.Error(ex.Message); | 
|             } | 
|         } | 
|     } | 
| } |