hutongqing
2025-01-16 77198a2c5f246696198277b82821cdc69c588d1e
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -513,7 +513,7 @@
                    return WebResponseContent.Instance.Error($"未找到该物料的信息");
                }
                List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode).ToList();
                List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => x.MaterielCode == materielCode && x.BatchNo==(models.FirstOrDefault()?.LotNo ?? "")).ToList();
                if (inboundOrderDetails == null || inboundOrderDetails.Count <= 0)
                {
@@ -766,9 +766,10 @@
            return content;
        }
        /// <summary>
        /// å…¥åº“完成上报ERP
        /// å…¥åº“完成上报ERP å¼ƒç”¨
        /// </summary>
        /// <returns></returns>
        #region å¼ƒç”¨
        public WebResponseContent FeedbackInboundOrder(Dt_StockInfo stockInfo, Dt_InboundOrder inboundOrder, List<ERPInboundDetailModel> detailModels)
        {
            WebResponseContent content = new WebResponseContent();
@@ -812,7 +813,79 @@
            }
            return content;
        }
        #endregion
        /// <summary>
        /// å…¥åº“完成上报ERP
        /// </summary>
        /// <returns></returns>
        public WebResponseContent FeedbackInboundOrder(Dt_InboundOrder inboundOrder, List<Dt_StockInfoDetail> stockInfoDetails)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                if (inboundOrder.Details.Count == 0)
                {
                    return WebResponseContent.Instance.Error($"未找到入库单明细信息");
                }
                if (stockInfoDetails.Count==0)
                {
                    return WebResponseContent.Instance.Error($"未找到库存明细信息");
                }
                Dt_Warehouse warehouse = _warehouseService.Repository.QueryFirst(x => x.WarehouseId == inboundOrder.WarehouseId);
                if (warehouse == null)
                {
                    return WebResponseContent.Instance.Error($"未找到仓库信息");
                }
                List<ERPInboundDetailModel>? detailModels = null;
                foreach (var item in stockInfoDetails)
                {
                    Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.Id == item.StockId);
                    if (detailModels!=null && detailModels.FirstOrDefault(x=>x.Rack==stockInfo.LocationCode)!=null)
                    {
                        var detailModel = detailModels.FirstOrDefault(x => x.Rack == stockInfo.LocationCode);
                        detailModel.Quantity = (Convert.ToDouble(detailModel.Quantity) + item.StockQuantity).ToString();
                    }
                    else
                    {
                        ERPInboundDetailModel detailModel = new ERPInboundDetailModel()
                        {
                            ExpiryDate = item.EffectiveDate ?? "",
                            LocationCode = warehouse.WarehouseCode,
                            MaterialsCode = item.MaterielCode,
                            MfgDate = item.ProductionDate ?? "",
                            QtyCustoms = "0",
                            Quantity = item.StockQuantity.ToString(),
                            Rack = stockInfo.LocationCode,
                            ReceiptCode = inboundOrder.UpperOrderNo,
                            ReceiptSerNo = item.InboundOrderRowNo.ToString()
                        };
                        detailModels.Add(detailModel);
                    }
                }
                ERPInboundModel model = new ERPInboundModel()
                {
                    Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)),
                    CreatorCode = inboundOrder.Creater,//测试
                    EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"),
                    StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    SuppliersId = inboundOrder.SupplierId,
                    Type = "S",
                    UniqueTag = inboundOrder.Id.ToString(),
                    WarehouseCode = warehouse.WarehouseCode,
                    Way = 1,
                    Details = detailModels
                };
                //推送ERP æµ‹è¯•注释
                _invokeERPService.InvokeInboundOrderApi(model);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
        static object lock_code = new object();
        public string CreateCodeByRule(string ruleCode)
        {