|  |  | 
 |  |  |         public IOutboundOrderRepository Repository => BaseDal; | 
 |  |  |         private readonly IInvokeERPService _invokeERPService; | 
 |  |  |         private readonly IOutStockLockInfoService _outStockLockInfoService; | 
 |  |  |         private readonly IOutboundOrderRepository _outboundOrderRepository; | 
 |  |  |  | 
 |  |  |         public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper,IUnitOfWorkManage unitOfWorkManage, IBasicService basicService, IOutboundOrderDetailRepository outboundOrderDetailRepository, IStockInfoService stockInfoService, | 
 |  |  |           IStockInfoRepository stockInfoRepository, IInvokeERPService invokeERPService, IOutStockLockInfoService outStockLockInfoService) : base(BaseDal) | 
 |  |  |           IStockInfoRepository stockInfoRepository, IInvokeERPService invokeERPService, IOutStockLockInfoService outStockLockInfoService, | 
 |  |  |           IOutboundOrderRepository outboundOrderRepository) : base(BaseDal) | 
 |  |  |         { | 
 |  |  |             _mapper = mapper; | 
 |  |  |             _unitOfWorkManage = unitOfWorkManage; | 
 |  |  | 
 |  |  |             _stockInfoRepository = stockInfoRepository; | 
 |  |  |             _invokeERPService = invokeERPService; | 
 |  |  |             _outStockLockInfoService = outStockLockInfoService; | 
 |  |  |             _outboundOrderRepository = outboundOrderRepository; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         public override WebResponseContent AddData(SaveModel saveModel) | 
 |  |  |         { | 
 |  |  |             if (saveModel.MainData.TryGetValue(nameof(Dt_OutboundOrder.UpperOrderNo).FirstLetterToLower(), out object? upperOrderNo) && upperOrderNo != null && !string.IsNullOrEmpty(upperOrderNo.ToString())) | 
 |  |  |             { | 
 |  |  |                 Dt_OutboundOrder outboundOrder = BaseDal.QueryFirst(x => x.UpperOrderNo == upperOrderNo.ToString() && x.WarehouseId == Convert.ToInt32(saveModel.MainData[nameof(Dt_OutboundOrder.WarehouseId).FirstLetterToLower()])); | 
 |  |  |                 if (outboundOrder != null) | 
 |  |  |                 { | 
 |  |  |                     return WebResponseContent.Instance.Error($"{upperOrderNo}颿åå·å·²åå¨"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             saveModel.DetailData[0].Add("orderDetailStatus", OrderDetailStatusEnum.New.ObjToInt()); | 
 |  |  |             return base.AddData(saveModel); | 
 |  |  |         } | 
 |  |  |         public WebResponseContent ReceiveOutOrder(ErpOutOrderDTO model) | 
 |  |  |         { | 
 |  |  |             try | 
 |  |  | 
 |  |  |                             MaterielName = materielInfo.MaterielName, | 
 |  |  |                             OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(), | 
 |  |  |                             OrderQuantity = model.Qty, | 
 |  |  |                             Unit=materielInfo.MaterielUnit | 
 |  |  |                         }; | 
 |  |  |                         Dt_OutboundOrder outboundOrder = new Dt_OutboundOrder() | 
 |  |  |                         { | 
 |  |  | 
 |  |  |                 return WebResponseContent.Instance.Error(ex.Message); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         //䏿¥åºåºå®æ æµè¯æ¶ | 
 |  |  |         public WebResponseContent TestOutUpload(int id) | 
 |  |  |         //䏿¥åºåºå®æ | 
 |  |  |         public WebResponseContent TestOutUpload(int id,List<Dt_OutStockLockInfo>? outStockLockInfos) | 
 |  |  |         { | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 Dt_OutboundOrder outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x=>x.Id==id).Includes(x=>x.Details).First(); | 
 |  |  |                 Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseId == outboundOrder.WarehouseId); | 
 |  |  |                 ERPIssueModel issueModel = new ERPIssueModel(); | 
 |  |  |                 List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>(); | 
 |  |  |                 List<Dt_OutStockLockInfo> _OutStockLockInfos=new List<Dt_OutStockLockInfo>(); | 
 |  |  |                 int overCount = outboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); | 
 |  |  |                 if (outboundOrder.Details.Count == overCount) | 
 |  |  |                 { | 
 |  |  |                     outboundOrder.OrderStatus = OutOrderStatusEnum.åºåºå®æ.ObjToInt(); | 
 |  |  |                     _outboundOrderRepository.UpdateData(outboundOrder); | 
 |  |  |                 } | 
 |  |  |                 if (outboundOrder==null) | 
 |  |  |                 { | 
 |  |  |                     return WebResponseContent.Instance.Error("åºåºåä¸åå¨"); | 
 |  |  |                 } | 
 |  |  |                 if (outboundOrder.CreateType == OrderCreateTypeEnum.CreateInSystem.ObjToInt()) | 
 |  |  |                 { | 
 |  |  |                     return WebResponseContent.Instance.OK(); | 
 |  |  |                 } | 
 |  |  |                 //æµè¯æ¶åºç»ERP䏿¥åºåºå®æ | 
 |  |  |                 ERPPickItemModel eRPOutPick = new ERPPickItemModel() | 
 |  |  |                 if (warehouse.WarehouseCode==WarehouseEnum.HA64.ToString()) | 
 |  |  |                 { | 
 |  |  |                     Lotno = "20241227001", | 
 |  |  |                     Qty = "1", | 
 |  |  |                     Location = warehouse.WarehouseCode | 
 |  |  |                 }; | 
 |  |  |                 ERPPickModel pickModel = new ERPPickModel() | 
 |  |  |                 { | 
 |  |  |                     Rowindex = outboundOrder.Details[0].RowNo, | 
 |  |  |                     Material = outboundOrder.Details[0].MaterielCode, | 
 |  |  |                     Qty = (outboundOrder.Details[0].OrderQuantity.ObjToInt()).ToString(), | 
 |  |  |                     Dataitem=new List<ERPPickItemModel> { eRPOutPick } | 
 |  |  |                 }; | 
 |  |  |                  | 
 |  |  |                 ERPIssueItemModel issueItemModel = new ERPIssueItemModel() | 
 |  |  |                 { | 
 |  |  |                     Pickcode = outboundOrder.UpperOrderNo, | 
 |  |  |                     PickList = new List<ERPPickModel>() { pickModel } | 
 |  |  |                 }; | 
 |  |  |                 ERPIssueModel issueModel = new ERPIssueModel() | 
 |  |  |                 { | 
 |  |  |                     UniqueTag = id.ToString(), | 
 |  |  |                     Code = "FL20241227001",//æµè¯ | 
 |  |  |                     WarehouseCode = warehouse.WarehouseCode, | 
 |  |  |                     Docremark = "", | 
 |  |  |                     Deptno = outboundOrder.DepartmentCode, | 
 |  |  |                     Deptname = outboundOrder.DepartmentName, | 
 |  |  |                     Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), | 
 |  |  |                     Createuser = "TC20082", | 
 |  |  |                     Issitem = new List<ERPIssueItemModel>() { issueItemModel }, | 
 |  |  |                 }; | 
 |  |  |                 string response = _invokeERPService.InvokeOutStandardsApi(issueModel); | 
 |  |  |                 ErpRequestContent requestContent = response.DeserializeObject<ErpRequestContent>(); | 
 |  |  |                 if (requestContent.res == 1) | 
 |  |  |                 { | 
 |  |  |                     stockInfos = TestOutStocksUpdate(warehouse).Data as List<Dt_StockInfo> ?? new List<Dt_StockInfo>(); | 
 |  |  |                     List<ERPPickItemModel> eRPOutPick =new List<ERPPickItemModel>(); | 
 |  |  |                     for (int i = 0; i < stockInfos.Count; i++) | 
 |  |  |                     { | 
 |  |  |                         ERPPickItemModel pickItemModel = new ERPPickItemModel() | 
 |  |  |                         { | 
 |  |  |                             Lotno= stockInfos[i].Details[0].BatchNo, | 
 |  |  |                             Qty= stockInfos[i].Details[0].StockQuantity.ObjToInt().ToString(), | 
 |  |  |                             Location= warehouse.WarehouseCode | 
 |  |  |                         }; | 
 |  |  |                         eRPOutPick.Add(pickItemModel); | 
 |  |  |                     } | 
 |  |  |                      | 
 |  |  |                     ERPPickModel pickModel = new ERPPickModel() | 
 |  |  |                     { | 
 |  |  |                         Rowindex = outboundOrder.Details[0].RowNo, | 
 |  |  |                         Material = outboundOrder.Details[0].MaterielCode, | 
 |  |  |                         Qty = (outboundOrder.Details[0].OrderQuantity.ObjToInt()).ToString(), | 
 |  |  |                         Dataitem = eRPOutPick | 
 |  |  |                     }; | 
 |  |  |  | 
 |  |  |                     return WebResponseContent.Instance.OK(requestContent.Data); | 
 |  |  |                     ERPIssueItemModel issueItemModel = new ERPIssueItemModel() | 
 |  |  |                     { | 
 |  |  |                         Pickcode = outboundOrder.UpperOrderNo, | 
 |  |  |                         PickList = new List<ERPPickModel>() { pickModel } | 
 |  |  |                     }; | 
 |  |  |                     issueModel = new ERPIssueModel() | 
 |  |  |                     { | 
 |  |  |                         UniqueTag = id.ToString(), | 
 |  |  |                         Code = outboundOrder.OrderNo,//æµè¯ | 
 |  |  |                         WarehouseCode = warehouse.WarehouseCode, | 
 |  |  |                         Docremark = "", | 
 |  |  |                         Deptno = outboundOrder.DepartmentCode, | 
 |  |  |                         Deptname = outboundOrder.DepartmentName, | 
 |  |  |                         Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), | 
 |  |  |                         Createuser = outboundOrder.Creater, | 
 |  |  |                         Issitem = new List<ERPIssueItemModel>() { issueItemModel }, | 
 |  |  |                     }; | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 { | 
 |  |  |                     return WebResponseContent.Instance.Error(requestContent.Data); | 
 |  |  |                     List<ERPPickModel> eRPPickModels= new List<ERPPickModel>(); | 
 |  |  |                      | 
 |  |  |                     //è·ååºåºè¯¦æ
å | 
 |  |  |                     foreach (var item in outStockLockInfos) | 
 |  |  |                     { | 
 |  |  |                         ERPPickItemModel pickItemModel = new ERPPickItemModel() | 
 |  |  |                         { | 
 |  |  |                             Lotno = item.BatchNo, | 
 |  |  |                             Qty = item.AssignQuantity.ObjToInt().ToString(), | 
 |  |  |                             Location = warehouse.WarehouseCode | 
 |  |  |                         }; | 
 |  |  |                         //è·ååºåºåæç» | 
 |  |  |                         Dt_OutboundOrderDetail outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.Id == item.OrderDetailId); | 
 |  |  |                         ERPPickModel pickModel = new ERPPickModel() | 
 |  |  |                         { | 
 |  |  |                             Rowindex = outboundOrderDetail.RowNo, | 
 |  |  |                             Material = outboundOrderDetail.MaterielCode, | 
 |  |  |                             Qty = pickItemModel.Qty, | 
 |  |  |                             Dataitem = new List<ERPPickItemModel> { pickItemModel } | 
 |  |  |                         }; | 
 |  |  |                         if (item.OrderQuantity==item.AssignQuantity) | 
 |  |  |                         { | 
 |  |  |                             item.Status = OutLockStockStatusEnum.åºåºå®æ.ObjToInt(); | 
 |  |  |                         } | 
 |  |  |                         eRPPickModels.Add(pickModel); | 
 |  |  |                         _OutStockLockInfos.Add(item); | 
 |  |  |                     } | 
 |  |  |                     ERPIssueItemModel issueItemModel = new ERPIssueItemModel() | 
 |  |  |                     { | 
 |  |  |                         Pickcode = outboundOrder.UpperOrderNo, | 
 |  |  |                         PickList = eRPPickModels | 
 |  |  |                     }; | 
 |  |  |                     issueModel = new ERPIssueModel() | 
 |  |  |                     { | 
 |  |  |                         UniqueTag = id.ToString(), | 
 |  |  |                         Code = outboundOrder.OrderNo,//æµè¯ | 
 |  |  |                         WarehouseCode = warehouse.WarehouseCode, | 
 |  |  |                         Docremark = "", | 
 |  |  |                         Deptno = outboundOrder.DepartmentCode, | 
 |  |  |                         Deptname = outboundOrder.DepartmentName, | 
 |  |  |                         Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), | 
 |  |  |                         Createuser = outStockLockInfos.FirstOrDefault().Creater, | 
 |  |  |                         Issitem = new List<ERPIssueItemModel>() { issueItemModel }, | 
 |  |  |                     }; | 
 |  |  |                 } | 
 |  |  |                  | 
 |  |  |                 if (stockInfos.Count > 0) | 
 |  |  |                 { | 
 |  |  |                     _stockInfoRepository.UpdateData(stockInfos); | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 { | 
 |  |  |                     _outStockLockInfoService.Repository.UpdateData(_OutStockLockInfos); | 
 |  |  |                 } | 
 |  |  |                 //åºåºå®æä¸æ¥ERP æµè¯æ³¨é | 
 |  |  |                 _invokeERPService.InvokeOutStandardsApi(issueModel); | 
 |  |  |                 return WebResponseContent.Instance.OK(); | 
 |  |  |             } | 
 |  |  |             catch (Exception ex) | 
 |  |  |             { | 
 |  |  | 
 |  |  |         /// <param name="warehouse"></param> | 
 |  |  |         /// <param name="model"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public WebResponseContent TestOutStocksUpdate(Dt_Warehouse warehouse, ErpOutOrderDTO model) | 
 |  |  |         public WebResponseContent TestOutStocksUpdate(Dt_Warehouse warehouse) | 
 |  |  |         { | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 //è·ååºåºååºå | 
 |  |  |                 List<Dt_StockInfo> stockInfos = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).ToList(); | 
 |  |  |                 if (model.Qty > stockInfos.Count) | 
 |  |  |                 if (stockInfos.Count<=0) | 
 |  |  |                 { | 
 |  |  |                     return WebResponseContent.Instance.Error($"ç©æ:{model.MCode}åºåä¸è¶³"); | 
 |  |  |                     return WebResponseContent.Instance.Error($"åºåä¸è¶³"); | 
 |  |  |                 } | 
 |  |  |                 //æ´æ¹ç¶æ | 
 |  |  |                 stockInfos.ForEach(x => | 
 |  |  | 
 |  |  |                 return WebResponseContent.Instance.Error(ex.Message); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         ///æ¨éæµè¯æ¶åºåº | 
 |  |  |         //public WebResponseContent TestOutBack(int id,List<string> locationIds) | 
 |  |  |         //{ | 
 |  |  |         //    try | 
 |  |  |         //    { | 
 |  |  |                  | 
 |  |  |         //        string response = _invokeERPService.InvokeOutStandardsApi(issueModel); | 
 |  |  |         //        ErpRequestContent requestContent = response.DeserializeObject<ErpRequestContent>(); | 
 |  |  |         //        if (requestContent.res == 1) | 
 |  |  |         //        { | 
 |  |  |  | 
 |  |  |         //            return WebResponseContent.Instance.OK(requestContent.Data); | 
 |  |  |         //        } | 
 |  |  |         //        else | 
 |  |  |         //        { | 
 |  |  |         //            return WebResponseContent.Instance.Error(requestContent.Data); | 
 |  |  |         //        } | 
 |  |  |         //    } | 
 |  |  |         //    catch (Exception ex) | 
 |  |  |         //    { | 
 |  |  |         //        return WebResponseContent.Instance.Error(ex.Message); | 
 |  |  |         //    } | 
 |  |  |         //} | 
 |  |  |  | 
 |  |  |         //public WebResponseContent FeedbackOutbondIssue(List<Dt_OutStockLockInfo> outStockLockInfos) | 
 |  |  |         //{ | 
 |  |  |         //    ERPPickItemModel | 
 |  |  |         //} | 
 |  |  |     } | 
 |  |  | } |