diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 3788cb46..1472a459 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs b/src/WMS.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs index 605bfbf4..44a95ce8 100644 --- a/src/WMS.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/OutStock/ErpDeliveryNoticeOutStockResultDto.cs @@ -33,10 +33,14 @@ namespace WMS.Web.Core.Dto.Erp.OutStock /// 对应金蝶单据明细id(销售出库同步金蝶下推使用) /// public int Erp_DetailId { get; set; } = 0; + ///// + ///// 物料Id + ///// + //public int MaterialId { get; set; } /// - /// 物料Id + /// 物料编码 /// - public int MaterialId { get; set; } + public string MaterialNumber { get; set; } /// /// 仓库ID /// diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs index 2b99ae77..e1ff7aa3 100644 --- a/src/WMS.Web.Domain/Entitys/Box.cs +++ b/src/WMS.Web.Domain/Entitys/Box.cs @@ -172,7 +172,7 @@ namespace WMS.Web.Domain.Entitys foreach (var d in detailClone) { //如果箱信息存在 箱库存不存在 删除箱信息数据 - var inventoryDetail = inventory.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId); + var inventoryDetail = inventory.Details.FirstOrDefault(f => f.MaterialNumber == d.MaterialNumber); if (inventoryDetail == null) { var boxDetail = this.Details.FirstOrDefault(f => f.Id == d.Id); @@ -182,9 +182,9 @@ namespace WMS.Web.Domain.Entitys //箱库存存在 箱信息不存在 添加 foreach (var d in inventory.Details) { - var md = this.Details.FirstOrDefault(w => w.MaterialId == d.MaterialId); + var md = this.Details.FirstOrDefault(w => w.MaterialNumber == d.MaterialNumber); if (md == null) - this.Details.Add(new BoxDetails() { MaterialId = d.MaterialId, Qty = d.Qty }); + this.Details.Add(new BoxDetails() { MaterialNumber = d.MaterialNumber, Qty = d.Qty }); else md.Qty = d.Qty; } diff --git a/src/WMS.Web.Domain/Entitys/MoveBoxRecord.cs b/src/WMS.Web.Domain/Entitys/MoveBoxRecord.cs index 16fe9942..c3c9df83 100644 --- a/src/WMS.Web.Domain/Entitys/MoveBoxRecord.cs +++ b/src/WMS.Web.Domain/Entitys/MoveBoxRecord.cs @@ -89,14 +89,14 @@ namespace WMS.Web.Domain.Entitys /// 创建 /// /// - public void Create(MoveBoxType type, int boxId,decimal qty, string orgCode, string stockCode, int subStockId, int creatorId,string subStockCode) + public void Create(MoveBoxType type, int boxId,decimal qty, string orgCode, string stockCode, int creatorId,string subStockCode) { this.BoxId = boxId; this.Type = type; this.OrgCode = orgCode; this.StockCode = stockCode; - SrcSubStockId = type == MoveBoxType.Up ? 0 : subStockId;//上架 原仓位是0 目标仓位有值 - DestSubStockId = type == MoveBoxType.Up ? subStockId : 0; //下架 原仓位有值 目标仓位是0 + //SrcSubStockId = type == MoveBoxType.Up ? 0 : subStockId;//上架 原仓位是0 目标仓位有值 + //DestSubStockId = type == MoveBoxType.Up ? subStockId : 0; //下架 原仓位有值 目标仓位是0 SrcSubStockCode = type == MoveBoxType.Up ? "" : subStockCode;//上架 原仓位是0 目标仓位有值 DestSubStockCode = type == MoveBoxType.Up ? subStockCode : ""; //下架 原仓位有值 目标仓位是0 this.Qty = qty; diff --git a/src/WMS.Web.Domain/Entitys/OutStockTask.cs b/src/WMS.Web.Domain/Entitys/OutStockTask.cs index 72bea07f..f5dcc81d 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTask.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTask.cs @@ -99,17 +99,17 @@ namespace WMS.Web.Domain.Entitys /// /// 出库 反写 任务单(返回 这个物料下面的来源单号出了多少数量) /// - /// + /// /// /// - public Result> OutStock(int materialId, decimal qty, int outStockId) + public Result> OutStock(string materialNumber, decimal qty, int outStockId) { if (this.Status == OutStockStatus.Already) return Result>.ReFailure(ResultCodes.OutStockTaskAlready); if (this.Status == OutStockStatus.Repeal) return Result>.ReFailure(ResultCodes.OutStockTaskRepeal); - var detail = this.Details.FirstOrDefault(f => f.MaterialId == materialId); + var detail = this.Details.FirstOrDefault(f => f.MaterialNumber == materialNumber); if (detail == null) return Result>.ReFailure(ResultCodes.OrderNoData); if ((detail.AccruedQty - detail.RealityQty) < qty) return Result>.ReFailure(ResultCodes.OutStockQtyError); @@ -221,7 +221,7 @@ namespace WMS.Web.Domain.Entitys { d.Id = 0; d.Fid = 0; - var detail_new = details_new.FirstOrDefault(f => f.MaterialId == d.MaterialId); + var detail_new = details_new.FirstOrDefault(f => f.MaterialNumber == d.MaterialNumber); if (detail_new != null) { detail_new.AccruedQty += d.AccruedQty;//应出数量累加 diff --git a/src/WMS.Web.Domain/IService/Public/IErpBasicDataExtendService.cs b/src/WMS.Web.Domain/IService/Public/IErpBasicDataExtendService.cs index c60a0ec6..ae701147 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpBasicDataExtendService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpBasicDataExtendService.cs @@ -59,6 +59,13 @@ namespace WMS.Web.Domain.IService.Public /// string GetMaterialUnitName(List erpMaterials, int materialId); + /// + /// 获取物料基本单位名称 + /// + /// + /// + /// + string GetMaterialUnitName(List erpMaterials, string materialNumber); /// /// 获取物料的条码 /// @@ -89,6 +96,14 @@ namespace WMS.Web.Domain.IService.Public /// /// string GetMaterialUnitNumber(List erpMaterials, int materialId); + + /// + /// 获取物料基本单位编码 + /// + /// + /// + /// + string GetMaterialUnitNumber(List erpMaterials, string materialNumber); /// /// 获取组织名称 /// diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index a48ae2b1..8481c7f7 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -172,7 +172,7 @@ namespace WMS.Web.Domain.Services entity.SrcSubStockCode = subStock_s?.Code ?? ""; if (subStock != null) { - entity.DestSubStockId = dt.SubStockId; + //entity.DestSubStockId = dt.SubStockId; entity.DestBoxOrgCode = subStock.ErpOrgCode; entity.DestStockCode = subStock.StockCode; entity.DestSubStockCode = subStock.Code; @@ -278,9 +278,9 @@ namespace WMS.Web.Domain.Services List entityList = new List(); foreach (var d in dto) { - var subStock = await _basbicsRepositories.GetSubUcStockAsync(d.SubStockId, loginInfo.UserInfo.CompanyId); + var subStock = await _basbicsRepositories.GetSubUcStockAsync(d.SubStockCode, loginInfo.UserInfo.CompanyId); var entity = new MoveBoxRecord(); - entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.Qty, subStock?.ErpOrgCode, subStock?.StockCode, d.SubStockId, loginInfo.UserInfo.StaffId, subStock?.Code); + entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.Qty, subStock?.ErpOrgCode, d.SubStockCode, loginInfo.UserInfo.StaffId, subStock?.Code); entity.Details = d.Details.Select(s => new MoveBoxRecordDetails() { MaterialNumber = s.MaterialNumber, diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index cf6586d6..1d53cbb5 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -134,7 +134,7 @@ namespace WMS.Web.Domain.Services foreach (var b in boxInventoryDetails) { var num = boxInventoryDetails.Where(w => w.MaterialId == b.MaterialId).Sum(s => s.Qty); - var taskDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == b.MaterialId); + var taskDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == b.MaterialNumber); if (taskDetail == null) return Result.ReFailure(ResultCodes.BoxOutStockTaskMaterialError); //箱子里该物料的总数量大于出库单(应出库数量-已出库数量) 不能出库 if (num > (taskDetail.AccruedQty - taskDetail.RealityQty)) @@ -144,7 +144,7 @@ namespace WMS.Web.Domain.Services if (box == null) return Result.ReFailure(ResultCodes.BoxNoData); var dtod = _mapper.Map(b); dtod.BoxId = box.BoxId; - dtod.SubStockId = box.SubStockId; + dtod.SubStockCode = box.SubStockCode; dto.Details.Add(dtod); } } diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index b94c624c..f85bc17c 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -114,7 +114,7 @@ namespace WMS.Web.Domain.Services foreach (var erp in erps) { //仓库不同 拆分成不同的 - var detail = outStockTask.Details.FirstOrDefault(w => w.MaterialId == erp.MaterialId); + var detail = outStockTask.Details.FirstOrDefault(w => w.MaterialNumber == erp.MaterialNumber); if (detail == null) { //添加一条物料明细 @@ -167,11 +167,11 @@ namespace WMS.Web.Domain.Services entity.Create((OutStockType)e.Type, e.StockCode, e.OrgCode, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime); //找到当前对应来源单据编号的集合数据 - var mIds = eList.GroupBy(g => g.MaterialId).Select(s => s.Key).ToList(); + var mIds = eList.GroupBy(g => g.MaterialNumber).Select(s => s.Key).ToList(); //给到dto的实体明细中 foreach (var mid in mIds) { - var emList = eList.Where(w => w.MaterialId == mid).ToList(); + var emList = eList.Where(w => w.MaterialNumber == mid).ToList(); var detail = _mapper.Map(emList.First()); var erpDetail = _mapper.Map>(emList); detail.ErpDetails.AddRange(erpDetail); @@ -205,7 +205,7 @@ namespace WMS.Web.Domain.Services var erp_o = erp_list.Where(w => w.SourceBillNo == ed.SourceBillNo).ToList(); if (erp_o.Count() == 0) continue; - var erp_d = erp_list.Where(w => w.MaterialId == d.MaterialId && ed.Erp_DetailId == w.Erp_DetailId).ToList(); + var erp_d = erp_list.Where(w => w.MaterialNumber == d.MaterialNumber && ed.Erp_DetailId == w.Erp_DetailId).ToList(); if (erp_d.Count() == 0) { //金蝶删除明细数据后 wms对应数据修改为0 diff --git a/src/WMS.Web.Domain/Services/Public/ErpBasicDataExtendService.cs b/src/WMS.Web.Domain/Services/Public/ErpBasicDataExtendService.cs index 1db0c14d..606f73ed 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpBasicDataExtendService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpBasicDataExtendService.cs @@ -161,7 +161,20 @@ namespace WMS.Web.Domain.Services.Public } return mat.BaseUnitName; } - + public string GetMaterialUnitName(List erpMaterials, string materialNumber) + { + if (erpMaterials == null || erpMaterials.Count == 0) + return ""; + var mat = erpMaterials.Where(x => x.MaterialNumber == materialNumber).FirstOrDefault(); + if (mat == null) + { + var result = _erpService.BillQueryForMaterial(materialNumber).GetAwaiter().GetResult(); + if (!result.IsSuccess) + return ""; + return result.Data == null ? "" : result.Data.BaseUnitName; + } + return mat.BaseUnitName; + } /// /// 获取物料的条码 /// @@ -244,7 +257,26 @@ namespace WMS.Web.Domain.Services.Public } return mat.BaseUnitNumber; } - + /// + /// 获取物料基本单位编码 + /// + /// + /// + /// + public string GetMaterialUnitNumber(List erpMaterials, string materialNumber) + { + if (erpMaterials == null || erpMaterials.Count == 0) + return ""; + var mat = erpMaterials.Where(x => x.MaterialNumber == materialNumber).FirstOrDefault(); + if (mat == null) + { + var result = _erpService.BillQueryForMaterial(materialNumber).GetAwaiter().GetResult(); + if (!result.IsSuccess) + return ""; + return result.Data == null ? "" : result.Data.BaseUnitNumber; + } + return mat.BaseUnitNumber; + } /// /// 获取组织名称 /// diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index 6ed5f088..568ec638 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -69,7 +69,7 @@ namespace WMS.Web.Domain.Services //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() { - MaterialId = entity.MaterialId, + MaterialNumber = entity.MaterialNumber, SerialNumber = entity.SerialNumber, OrgId = box.OrgId, SupplierId = box.SupplierId, @@ -134,7 +134,7 @@ namespace WMS.Web.Domain.Services //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() { - MaterialId = entity.MaterialId, + MaterialNumber = entity.MaterialNumber, SerialNumber = entity.SerialNumber, OrgId = box.OrgId, SupplierId = box.SupplierId, @@ -192,15 +192,15 @@ namespace WMS.Web.Domain.Services foreach (var entity in entityList) { var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId); - var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId); + var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber); if (outstockDetail == null) continue; //修改序列号和箱绑定关系 - entity.OutStock(outStock, entity.MaterialId); + entity.OutStock(outStock, entity.MaterialNumber); //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() { - MaterialId = entity.MaterialId, + MaterialNumber = entity.MaterialNumber, SerialNumber = entity.SerialNumber, OrgId = box.OrgId, SupplierId = box.SupplierId, @@ -211,7 +211,7 @@ namespace WMS.Web.Domain.Services }; if (outStock.Type == OutStockType.Sal) { - var detail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId); + var detail = outStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber); var res_c = await _erpService.BillQueryForCustomer(); var customer = res_c.Data.FirstOrDefault(f => f.Id == outStock.ReceiptCustomerId); op.Remark += "\r\n" + "销售订单号:" + string.Join(",", detail.ErpDetails.Select(s => s.SaleBillNo)); @@ -321,7 +321,7 @@ namespace WMS.Web.Domain.Services { var boxId = inStock.Details.FirstOrDefault(s => s.SerialNumbers.Contains(entity.SerialNumber))?.BoxId ?? 0; var box = boxList.FirstOrDefault(f => f.Id == boxId); - var instockDetail = inStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId); + var instockDetail = inStock.Details.FirstOrDefault(f => f.MaterialNumber == entity.MaterialNumber); var subStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, inStock.SubStockId); //修改序列号和箱绑定关系 entity.InStock(instockDetail.SourceBillNo, inStock.Type); @@ -330,7 +330,7 @@ namespace WMS.Web.Domain.Services //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() { - MaterialId = entity.MaterialId, + MaterialNumber = entity.MaterialNumber, SerialNumber = entity.SerialNumber, OrgId = box?.OrgId ?? 0, SupplierId = box?.SupplierId ?? 0, @@ -397,7 +397,7 @@ namespace WMS.Web.Domain.Services //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() { - MaterialId = entity.MaterialId, + MaterialNumber = entity.MaterialNumber, SerialNumber = entity.SerialNumber, OrgId = box.OrgId, SupplierId = box.SupplierId, @@ -457,17 +457,17 @@ namespace WMS.Web.Domain.Services if (takeStockDetail == null) continue; var box = boxList.FirstOrDefault(f => f.Id == takeStockDetail.BoxId); var s_entity = entityList.FirstOrDefault(f => f.SerialNumber.Equals(s)); - if (box != null && box.Details.FirstOrDefault(f => f.MaterialId == takeStockDetail.MaterialId) == null) + if (box != null && box.Details.FirstOrDefault(f => f.MaterialNumber == takeStockDetail.MaterialNumber) == null) { //如果这个物料不存在箱箱信息 添加进去 - box.TakeStock(takeStockDetail.MaterialId, takeStockDetail.AfterQty); + box.TakeStock(takeStockDetail.MaterialNumber, takeStockDetail.AfterQty); box_New_List.Add(box); } if (s_entity == null) { //序列号 - SerialNumbers s_new = new SerialNumbers(s, takeStockDetail.MaterialId, takeStockDetail.Id, 0, "", DateTime.Now, DateTime.Now); + SerialNumbers s_new = new SerialNumbers(s, takeStockDetail.MaterialNumber, takeStockDetail.Id, 0, "", DateTime.Now, DateTime.Now); sList.Add(s_new); } else @@ -479,7 +479,7 @@ namespace WMS.Web.Domain.Services //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() { - MaterialId = takeStockDetail.MaterialId, + MaterialNumber = takeStockDetail.MaterialNumber, SerialNumber = s, OrgId = box.OrgId, SupplierId = box.SupplierId, diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index 2c8b92d4..6693edc5 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -243,7 +243,7 @@ namespace WMS.Web.Domain.Services var erpInventory = res_s.Data.FirstOrDefault(f => f.MaterialNumber == number && f.StockCode == d.StockCode && f.OrgCode == d.OrgCode && f.Erp_SubStockId == subStockId); decimal qty = erpInventory?.Qty ?? 0; - var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialId); + var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, d.MaterialNumber); detils.Add(new ErpTakeStockDetailsSaveDto() { FOwnerid = new ErpNumberDto(d.OrgCode), diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index 741c15c1..7e35aeca 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -198,7 +198,7 @@ namespace WMS.Web.Repositories MaterialNumber = s.detail.MaterialNumber, Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialNumber), Qty = s.detail.Qty, - Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialId), + Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialNumber), Remark = s.order.Remark #endregion diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs index 6cd7ca78..72ac0cc1 100644 --- a/src/WMS.Web.Repositories/TakeStockRepositories.cs +++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs @@ -257,7 +257,7 @@ namespace WMS.Web.Repositories #region dto组装 Id = s.order.Id, BillNo = s.order.BillNo, - Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialId), + Unit = _erpBasicDataExtendService.GetMaterialUnitName(materials, s.detail.MaterialNumber), Stock = _singleDataService.GetSingleData(SingleAction.StocksJoinOrgCode, companyId, s.detail.StockCode + s.detail.OrgCode), SubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, companyId, s.detail.SubStockId), Erp_SubStock = _erpBasicDataExtendService.GetSubStockName(subStocks, s.detail.Erp_SubStockCode),