| | |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.MES; |
| | | using WIDESEA_DTO.Task; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_TaskInfoService |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | return await _unitOfWorkManage.BeginTranAsync(async () => |
| | | { |
| | | if (task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty) |
| | | { |
| | | location.LocationStatus = LocationStatusEnum.Free.GetHashCode(); |
| | | |
| | | var updateResult = await _locationInfoService.UpdateLocationInfoAsync(location); |
| | | var deleteResult = _stockInfoService.DeleteData(stockInfo).Status; |
| | | if (!updateResult && !deleteResult) |
| | | return content.Error("任务完成失败"); |
| | | |
| | | var completeResult1 = await CompleteTaskAsync(task, "出库完成"); |
| | | return content.OK(); |
| | | |
| | | } |
| | | |
| | | stockInfo.LocationId = 0; |
| | | stockInfo.LocationCode = string.Empty; |
| | | stockInfo.OutboundDate = DateTime.Now; |
| | | stockInfo.StockStatus = (int)StockStatusEmun.出库完成; |
| | | |
| | | location.LocationStatus = LocationStatusEnum.Free.GetHashCode(); |
| | | |
| | |
| | | inboundTaskDto = _mapper.Map<WMSTaskDTO>(inboundTask); |
| | | } |
| | | |
| | | // 调用MES托盘出站 |
| | | string deviceName = stockInfo.Remark == "GW_1" ? "高温静置1" |
| | | : stockInfo.Remark == "GW_2" ? "高温静置2" |
| | | : "常温静置1"; |
| | | var mesConfig = _mesDeviceConfigService.GetByDeviceName(deviceName); |
| | | string equipmentCode = mesConfig?.EquipmentCode ?? StockConstants.MES_EQUIPMENT_CODE; |
| | | string resourceCode = mesConfig?.ResourceCode ?? StockConstants.MES_RESOURCE_CODE; |
| | | string token = mesConfig?.Token; |
| | | |
| | | var outboundRequest = new OutboundInContainerRequest |
| | | { |
| | | EquipmentCode = equipmentCode, |
| | | ResourceCode = resourceCode, |
| | | LocalTime = DateTime.Now, |
| | | ContainerCode = taskDto.PalletCode |
| | | }; |
| | | string palletCode = taskDto.PalletCode; |
| | | string requestJson = outboundRequest.ToJson(); |
| | | |
| | | // Fire-and-forget: 异步执行MES出站,不阻塞主业务逻辑 |
| | | _mesUploadHelper.FireAndForget( |
| | | palletCode, |
| | | MesUploadStatusEnum.出站上传成功, |
| | | "OutboundInContainer", |
| | | requestJson, |
| | | () => |
| | | { |
| | | var result = string.IsNullOrWhiteSpace(token) |
| | | ? _mesService.OutboundInContainer(outboundRequest) |
| | | : _mesService.OutboundInContainer(outboundRequest, token); |
| | | return ( |
| | | result?.Data?.IsSuccess ?? false, |
| | | Newtonsoft.Json.JsonConvert.SerializeObject(result), |
| | | result?.Data?.Msg ?? result?.ErrorMessage ?? "未知错误", |
| | | _mesService.BuildConfig(token ?? string.Empty).ToJson() |
| | | ); |
| | | }); |
| | | |
| | | var completeResult = await CompleteTaskAsync(task, "出库完成"); |
| | | if (!completeResult.Status) |
| | | return completeResult; |