| | |
| | | |
| | | #region 火警出库 |
| | | |
| | | public WebResponseContent EmergencyTask(object obj) |
| | | public WebResponseContent EmergencyTask(Object obj) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | var emergencyTask = new DTSEmergencyTask(); |
| | | try |
| | | { |
| | | Console.WriteLine($"火警参数:{obj.ToString()}"); |
| | | emergencyTask = JsonConvert.DeserializeObject<DTSEmergencyTask>(obj.ToString()); |
| | | |
| | | if (emergencyTask == null) throw new Exception("火警参数为空"); |
| | | |
| | | DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.Row == emergencyTask.row && x.Column == emergencyTask.column && x.Layer == emergencyTask.layer && x.AreaId == emergencyTask.zone); |
| | | if (locationInfo == null) |
| | | string[] strings = emergencyTask.LocationCode.Split("-"); |
| | | string Roadway = strings[0]; |
| | | //switch (Roadways[0]) |
| | | //{ |
| | | // case "J": |
| | | // Roadway = "JZSC" + Roadways[1]; |
| | | // break; |
| | | // case "G": |
| | | // Roadway = "GWSC" + Roadways[1]; |
| | | // break; |
| | | // case "C": |
| | | // Roadway = "CWSC" + Roadways[1]; |
| | | // break; |
| | | // default: throw new Exception("未识别库位编码"); |
| | | //} |
| | | int Row = Convert.ToInt16(strings[1]); |
| | | int Column = Convert.ToInt16(strings[2]); |
| | | int Layer = Convert.ToInt16(strings[3]); |
| | | if (!strings[0].Contains("SC")) throw new Exception("未知库区"); |
| | | for (int i = 0; i < 2; i++) |
| | | { |
| | | throw new Exception("未知库位"); |
| | | } |
| | | |
| | | //查找消防站台 |
| | | var station = _stationManagerRepository.QueryFirst(t => t.Roadway == locationInfo.RoadwayNo |
| | | && t.stationType == (int)StationManager.FireStation |
| | | /*&& t. == "Enable"*/); |
| | | if (station == null) |
| | | { |
| | | throw new Exception("消防站台未配置!"); |
| | | } |
| | | |
| | | //查找库存信息 |
| | | var stockInfo = _stockInfoRepository.QueryFirst(x => x.LocationCode == locationInfo.LocationCode && x.LocationInfo.RoadwayNo == locationInfo.RoadwayNo); |
| | | //托盘码 |
| | | string barcode = string.Empty; |
| | | if (stockInfo != null) |
| | | { |
| | | barcode = stockInfo.PalletCode; |
| | | } |
| | | else |
| | | { |
| | | //无库存信息,生成随机托盘码 |
| | | barcode = "M" + DateTime.Now.ToString("MMddHHmmss") + "-" + new Random().Next(100, 1000); |
| | | } |
| | | |
| | | Dt_Task fireTask = BaseDal.QueryFirst(x => x.TaskType == 500 && x.SourceAddress == locationInfo.LocationCode && x.Roadway == station.Roadway); |
| | | |
| | | if (fireTask != null) |
| | | { |
| | | throw new Exception("已添加火警出库任务"); |
| | | } |
| | | |
| | | int taskNum = BaseDal.GetTaskNo().Result; |
| | | Dt_Task task = new Dt_Task |
| | | { |
| | | CreateDate = DateTime.Now, |
| | | Creater = "DTS", |
| | | CurrentAddress = locationInfo.LocationCode, |
| | | Grade = 1, |
| | | Dispatchertime = DateTime.Now, |
| | | PalletCode = barcode, |
| | | Roadway = station.Roadway, |
| | | SourceAddress = locationInfo.LocationCode, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | TaskType = 500, |
| | | TargetAddress = station.stationLocation, |
| | | NextAddress = station.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 = 500, |
| | | }; |
| | | |
| | | 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)); |
| | | if (respon != null) |
| | | { |
| | | WebResponseContent respone = JsonConvert.DeserializeObject<WebResponseContent>(respon.ToString()); |
| | | if (respone.Status) |
| | | DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.Row == Row && x.Column == Column && x.Layer == (i == 0 ? Layer - 1 : Layer) && x.RoadwayNo == Roadway); |
| | | if (locationInfo == null) |
| | | { |
| | | var taskId = BaseDal.AddData(task); |
| | | throw new Exception("未知库位"); |
| | | } |
| | | |
| | | //查找消防站台 |
| | | var station = _stationManagerRepository.QueryFirst(t => t.Roadway == locationInfo.RoadwayNo && t.stationType == (int)StationManager.FireStation); |
| | | if (station == null) |
| | | { |
| | | throw new Exception("消防站台未配置!"); |
| | | } |
| | | |
| | | //查找库存信息 |
| | | var stockInfo = _stockInfoRepository.QueryFirst(x => x.LocationCode == locationInfo.LocationCode && x.LocationInfo.RoadwayNo == locationInfo.RoadwayNo); |
| | | //托盘码 |
| | | string barcode = string.Empty; |
| | | if (stockInfo != null) |
| | | { |
| | | barcode = stockInfo.PalletCode; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("WCS处理失败:" + respone.Message); |
| | | //无库存信息,生成随机托盘码 |
| | | barcode = "M" + DateTime.Now.ToString("MMddHHmmss") + "-" + new Random().Next(100, 1000); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("请求处理失败"); |
| | | |
| | | Dt_Task fireTask = BaseDal.QueryFirst(x => x.TaskType == (int)TaskOutboundTypeEnum.OutFireAlarm && x.SourceAddress == locationInfo.LocationCode && x.Roadway == station.Roadway); |
| | | |
| | | if (fireTask != null) |
| | | { |
| | | throw new Exception("已添加火警出库任务"); |
| | | } |
| | | |
| | | int taskNum = BaseDal.GetTaskNo().Result; |
| | | Dt_Task task = new Dt_Task |
| | | { |
| | | CreateDate = DateTime.Now, |
| | | Creater = "DTS", |
| | | CurrentAddress = locationInfo.LocationCode, |
| | | Grade = i == 0 ? 5 : 3, |
| | | Dispatchertime = DateTime.Now, |
| | | PalletCode = barcode, |
| | | Roadway = station.Roadway, |
| | | SourceAddress = locationInfo.LocationCode, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | TaskType = (int)TaskOutboundTypeEnum.OutFireAlarm, |
| | | TargetAddress = station.stationLocation, |
| | | NextAddress = station.stationLocation, |
| | | 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 = task.TaskType, |
| | | }; |
| | | |
| | | var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue; |
| | | var ReceiveByWMSFireAlarmTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveByWMSFireAlarmTask)?.ConfigValue; |
| | | if (ReceiveByWMSFireAlarmTask == null || ipAddress == null) |
| | | { |
| | | throw new Exception("WMS IP 未配置"); |
| | | } |
| | | var wmsIpAddrss = ipAddress + ReceiveByWMSFireAlarmTask; |
| | | List<WMSTaskDTO> taskDTOs = new List<WMSTaskDTO>(); |
| | | taskDTOs.Add(taskDTO); |
| | | var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(taskDTOs)); |
| | | if (respon != null) |
| | | { |
| | | WebResponseContent respone = JsonConvert.DeserializeObject<WebResponseContent>(respon.ToString()); |
| | | if (respone.Status) |
| | | { |
| | | var taskId = BaseDal.AddData(task); |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("WCS处理失败:" + respone.Message); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("请求处理失败"); |
| | | } |
| | | } |
| | | LogFactory.GetLog("DTS火警出库").Info(true, $"\r\r--------------------------------------"); |
| | | LogFactory.GetLog("DTS火警出库").Info(true, obj.ToJsonString()); |