public OutsideStockInResponseResult ConfirmBalanceMES(OutsideStockInResponse obj) { OutsideStockInResponseResult retModel = new OutsideStockInResponseResult(); retModel.WarehousingId = obj.WarehousingId; retModel.IsNormalExecution = true; _eventBus.Post(new KeyValuePair <OutsideStockInResponse, OutsideStockInResponseResult>(obj, retModel), TimeSpan.Zero); return(retModel); }
/// <summary> /// 通知MES入库完成 /// </summary> /// <param name="stockOutId"></param> /// <param name="result"></param> /// <returns></returns> public static async Task <RouteData> NofityStockIn(this ISqlSugarClient client, Wms_mestask mesTask) { mesTask.ModifiedDate = DateTime.Now; mesTask.WorkStatus = MESTaskWorkStatus.WorkComplated; mesTask.NotifyStatus = MESTaskNotifyStatus.WaitResponse; try { List <Wms_stockin> stockIns = await client.Queryable <Wms_stockin>().Where(x => x.MesTaskId == mesTask.MesTaskId).ToListAsync(); List <OutsideStockInResponseWarehouse> warehouseList = new List <OutsideStockInResponseWarehouse>(); foreach (Wms_stockin stockIn in stockIns) { OutsideStockInResponseWarehouse warehouse = warehouseList.FirstOrDefault(x => x.WarehouseId == stockIn.WarehouseId.ToString()); if (warehouse == null) { Wms_warehouse warehouseData = WMSApiManager.GetWarehouse(stockIn.WarehouseId); warehouse = new OutsideStockInResponseWarehouse() { //WarehouseId = stockIn.WarehouseId.ToString(), WarehouseId = warehouseData?.WarehouseNo, WarehouseName = warehouseData?.WarehouseName, WarehousePosition = "", WarehousingFinishTime = stockIn.ModifiedDate.Value.ToString("yyyy-MM-dd HH:mm:ss"), }; warehouseList.Add(warehouse); } List <Wms_stockindetail> stockInDetails = await client.Queryable <Wms_stockindetail>().Where(x => x.StockInId == stockIn.StockInId).ToListAsync(); foreach (Wms_stockindetail stockInDetail in stockInDetails) { OutsideMaterialResult material = new OutsideMaterialResult() { UniqueIndex = stockInDetail.UniqueIndex, SuppliesId = stockInDetail.MaterialNo.ToString(), SuppliesName = stockInDetail.MaterialName, SuppliesNumber = stockInDetail.ActInQty.ToString(), RefreshStock = stockInDetail.ActInQty.ToString(), ErrorId = stockInDetail.ErrorId, ErrorInfo = stockInDetail.ErrorInfo }; warehouse.SuppliesInfoList.Add(material); warehouse.SuppliesKinds = warehouse.SuppliesInfoList.Count; } } OutsideStockInResponse response = new OutsideStockInResponse() { WarehousingId = mesTask.WarehousingId, WarehousingEntryNumber = warehouseList.Count, WarehousingEntryFinishList = JsonConvert.SerializeObject(warehouseList) }; SelfReservoirAreaManager._logger.Info($"[通知MES入库完成]开始通知MES,param={JsonConvert.SerializeObject(response)}"); OutsideStockInResponseResult result = await MESApiAccessor.Instance.WarehousingFinish(response); SelfReservoirAreaManager._logger.Info($"[通知MES入库完成]通知MES成功,result={JsonConvert.SerializeObject(result)}"); if (String.IsNullOrWhiteSpace(result.IsNormalExecution)) { mesTask.NotifyStatus = MESTaskNotifyStatus.Responsed; } else { mesTask.Remark = $"Error={result.IsNormalExecution}"; mesTask.NotifyStatus = MESTaskNotifyStatus.Failed; } } catch (Exception ex) { mesTask.Remark = $"InnerError={ex.Message}"; mesTask.NotifyStatus = MESTaskNotifyStatus.Failed; //_logger.LogError(ex, "入库完成通知时发生异常"); //逻辑继续,寻找其它时机重新通知 SelfReservoirAreaManager._logger.Error($"[通知MES入库完成]通知MES时发生异常,{ex.ToString()}"); } if (client.Updateable(mesTask).ExecuteCommand() == 0) { SelfReservoirAreaManager._logger.Error($"[通知MES入库完成]E-0002-更新状态失败"); return(YL.Core.Dto.RouteData.From(PubMessages.E0002_UPDATE_COUNT_FAIL)); } SelfReservoirAreaManager._logger.Info($"[通知MES入库完成]更新状态成功,NotifyStatus={mesTask.NotifyStatus}"); if (mesTask.NotifyStatus == MESTaskNotifyStatus.Responsed) { return(new RouteData()); } else { return(YL.Core.Dto.RouteData.From(PubMessages.E3001_MES_STOCKIN_NOFITY_FAIL)); } }