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 = 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<WebResponseContent>(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.ToJsonString()); 
 | 
                return content.OK(); 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                LogFactory.GetLog("分容测试完成通知").Info(true, $"\r\r--------------------------------------"); 
 | 
                LogFactory.GetLog("分容测试完成通知").Info(true, ex.Message); 
 | 
                return content.Error(ex.Message); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |