| | |
| | | using Masuit.Tools; |
| | | using Mapster; |
| | | using Masuit.Tools; |
| | | using SqlSugar; |
| | | using WIDESEA_Common.CustomModels; |
| | | using WIDESEA_Core.Const; |
| | |
| | | |
| | | #region 直接出库任务完成 |
| | | |
| | | public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task) |
| | | public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task, DtStockInfo stock) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | //添加历史 |
| | | var taskHty = CreateHistoricalTask(task); |
| | | // 添加历史任务 |
| | | var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0; |
| | | //删除任务 |
| | | BaseDal.DeleteData(task); |
| | | DtStockInfo_Hty stockInfo_Hty = null; |
| | | if (stock != null) |
| | | { |
| | | stockInfo_Hty = stock.Adapt<DtStockInfo_Hty>(); |
| | | stockInfo_Hty.ModifyDate = DateTime.Now; |
| | | } |
| | | var taskHty = task.Adapt<Dt_Task_Hty>(); |
| | | taskHty.FinishTime = DateTime.Now; |
| | | taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.人工完成 : (int)OperateTypeEnum.自动完成; |
| | | taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System"; |
| | | |
| | | var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress && x.RoadwayNo == task.Roadway); |
| | | int lastStatus = location.LocationStatus; |
| | | location.LocationStatus = (int)LocationEnum.Free; |
| | | task.TaskState = (int)TaskOutStatusEnum.OutFinish; |
| | | |
| | | _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum); |
| | | // 事务处理 |
| | | await _unitOfWorkManage.UseTranAsync(async () => |
| | | { |
| | | if (stockInfo_Hty != null) |
| | | { |
| | | await DeleteStockInfoAsync(stock.Id); |
| | | await DeleteStockInfoDetailsAsync(stock.StockInfoDetails); |
| | | await AddStockInfoHtyAsync(stockInfo_Hty); |
| | | } |
| | | |
| | | await UpdateLocationAsync(location); |
| | | await DeleteTaskAsync(task.TaskId); |
| | | await AddTaskHtyAsync(taskHty); |
| | | }); |
| | | |
| | | return content.OK(); |
| | | } |
| | |
| | | |
| | | #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("火警参数为空"); |
| | | |
| | | string[] strings = emergencyTask.LocationCode.Split("-"); |
| | | |
| | | string[] Roadways = strings[0].Select(x => x.ToString()).ToArray(); |
| | | string Roadway = string.Empty; |
| | | 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("未识别库位编码"); |
| | | } |
| | | |
| | | 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++) |
| | | { |
| | | DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.Row == Convert.ToInt16(strings[1]) && x.Column == Convert.ToInt16(strings[2]) && x.Layer == (i == 0 ? Convert.ToInt16(strings[3]) * 2 - 1 : Convert.ToInt16(strings[3]) * 2) && x.RoadwayNo == Roadway); |
| | | DtLocationInfo locationInfo = _locationRepository.QueryFirst(x => x.Row == Row && x.Column == Column && x.Layer == (i == 0 ? Layer - 1 : Layer) && x.RoadwayNo == Roadway); |
| | | if (locationInfo == null) |
| | | { |
| | | throw new Exception("未知库位"); |
| | |
| | | |
| | | 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) |
| | | var ReceiveByWMSFireAlarmTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveByWMSFireAlarmTask)?.ConfigValue; |
| | | if (ReceiveByWMSFireAlarmTask == null || ipAddress == null) |
| | | { |
| | | throw new Exception("WMS IP 未配置"); |
| | | } |
| | | var wmsIpAddrss = ipAddress + ReceiveByWMSTask; |
| | | |
| | | var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(taskDTO)); |
| | | 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()); |