From 7714e8e376ed1735980800338738ee1194321ca8 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Thu, 28 Mar 2024 09:04:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E5=8F=B7=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 5 ++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 28 +++++++++++ .../Dto/Erp/ErpPurchaseInStockSaveDto.cs | 6 +++ .../Entitys/InStockErpDetails.cs | 46 +++++++++++++++++++ .../Infrastructure/IInStockRepositories.cs | 6 +++ src/WMS.Web.Domain/Services/InStockService.cs | 24 ++++++++++ .../Configuration/RepositoryDbContext.cs | 13 ++++-- .../InStockRepositories.cs | 11 +++++ 8 files changed, 134 insertions(+), 5 deletions(-) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 21699bfd..bdccb4ce 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1056,6 +1056,11 @@ 数量 + + + 批号 + + 下推 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 76441049..5e059a52 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -893,6 +893,28 @@ 同步到金蝶后金蝶的单据Id + + + 批号 + + + + + 箱唛编号-首位 + + + + + 箱唛编号-末尾序号 + + + + + 生成批号 + + + + erp入库任务表 @@ -2713,6 +2735,12 @@ + + + 获取最新的erp明细 + + + 箱与任务单绑定(收货)关系表-仓储接口 diff --git a/src/WMS.Web.Core/Dto/Erp/ErpPurchaseInStockSaveDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpPurchaseInStockSaveDto.cs index 44c08a8c..85140c4c 100644 --- a/src/WMS.Web.Core/Dto/Erp/ErpPurchaseInStockSaveDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/ErpPurchaseInStockSaveDto.cs @@ -49,5 +49,11 @@ namespace WMS.Web.Core.Dto.Erp /// [JsonProperty("FRealQty")] public decimal Qty { get; set; } + + /// + /// 批号 + /// + [JsonProperty("FLot")] + public string Lot { get; set; } } } diff --git a/src/WMS.Web.Domain/Entitys/InStockErpDetails.cs b/src/WMS.Web.Domain/Entitys/InStockErpDetails.cs index dd669748..65a8cce3 100644 --- a/src/WMS.Web.Domain/Entitys/InStockErpDetails.cs +++ b/src/WMS.Web.Domain/Entitys/InStockErpDetails.cs @@ -55,5 +55,51 @@ namespace WMS.Web.Domain.Entitys /// public string ErpSyncBillNo { get; set; } + /// + /// 批号 + /// + public string BatchBillNo { get; set; } + + /// + /// 箱唛编号-首位 + /// + public int FirstBillNo { get; set; } + + /// + /// 箱唛编号-末尾序号 + /// + public int LastBillNo { get; set; } + + /// + /// 生成批号 + /// + /// + /// + public void GenerateBatchBillNo(int firstBillNo,int lastBillNo,bool isBatchManage) + { + if (isBatchManage) + { + this.FirstBillNo = Convert.ToInt32(DateTime.Now.ToString("yyMMdd")); + if (this.FirstBillNo == firstBillNo) + this.LastBillNo = lastBillNo + 1; + else + this.LastBillNo = 1; + + if (this.LastBillNo.ToString().Length >= 6) + { + this.BatchBillNo = "W" + this.FirstBillNo + this.LastBillNo; + return; + } + + string lastStr = this.LastBillNo.ToString(); + while (true) + { + lastStr = "0" + lastStr; + if (lastStr.Length >= 6) break; + } + this.BatchBillNo = "W" + this.FirstBillNo + lastStr; + } + } + } } diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs index b72dc52f..054cff5a 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs @@ -81,5 +81,11 @@ namespace WMS.Web.Domain.Infrastructure /// /// Task> GetInstockBox(int taskId); + + /// + /// 获取最新的erp明细 + /// + /// + Task GetLastBillNo(); } } diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 3e6ac22b..1119881a 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -268,6 +268,12 @@ namespace WMS.Web.Domain.Services } } + //1.获取物料集合和组织集合和供应商的集合 + var materials = new List(); + var materials_result = await _erpService.BillQueryForMaterial(); + if (materials_result.IsSuccess) + materials = materials_result.Data.ToList(); + //1.获取来源单 var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList(); var tasks = await _inStockTaskRepositories.GetList(taskIds); @@ -302,6 +308,23 @@ namespace WMS.Web.Domain.Services Qty = x.Sum(t => t.Qty) }).ToList(); + //1.获取最新的erp明细信息 + var billNo_new = await _inStockRepositories.GetLastBillNo(); + //erp明细:生成批号 + int new_firstBillNo = billNo_new == null ? 0 : billNo_new.FirstBillNo; + int new_lastBillNo = billNo_new == null ? 0 : billNo_new.LastBillNo; + entity.ErpDetails.ForEach(x => + { + //物料必须是启动了批号管理才生成批号 + var mat= materials.Where(m => m.MaterialNumber == x.MaterialNumber && m.OrgCode == entity.OrgCode).FirstOrDefault(); + if (mat != null) + { + x.GenerateBatchBillNo(new_firstBillNo, new_lastBillNo, mat.IsBatchManage); + new_firstBillNo = x.FirstBillNo; + new_lastBillNo = x.LastBillNo; + } + }); + //序列号集:箱里面的 var serialNumbers = await _serialNumbersRepositories.GetEntityListByBoxIds(dto.Details.GroupBy(x => x.BoxId).Select(x => x.Key).ToList()); @@ -766,6 +789,7 @@ namespace WMS.Web.Domain.Services var resPurchaseInStock = await sc_erpService.BillQueryForPurchaseInStock(id); var purchaseInStock = resPurchaseInStock.Data; purchaseInStock.Details[0].Qty = erpDetail.Qty; + purchaseInStock.Details[0].Lot = erpDetail.BatchBillNo; string formId = dto.TargetFormId.ToString(); _logger.LogInformation($"入库单->开始同步金蝶 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 数据: {JsonConvert.SerializeObject(dto)}"); var res_s = await sc_erpService.Save(purchaseInStock, formId); diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index c75ef90a..23cda365 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -256,7 +256,7 @@ namespace WMS.Web.Repositories.Configuration .WithOne() .HasForeignKey(p => p.Fid) .OnDelete(DeleteBehavior.Cascade); - }); + }); builder.Entity(ent => { ent.ToTable("t_erp_instock_task_details"); @@ -322,9 +322,9 @@ namespace WMS.Web.Repositories.Configuration v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v), new ValueComparer>( - (c1,c2)=>c1.SequenceEqual(c2), - c=>c.Aggregate(0,(a,v)=>HashCode.Combine(a,v.GetHashCode())), - c=>(List)c.ToList())); + (c1, c2) => c1.SequenceEqual(c2), + c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())), + c => (List)c.ToList())); }); # endregion @@ -421,8 +421,11 @@ namespace WMS.Web.Repositories.Configuration public DbSet Instock { get; set; } public DbSet InStockDetails { get; set; } public DbSet InStockTotalDetails { get; set; } - + public DbSet InStockTask { get; set; } + + public DbSet InStockErpDetails { get; set; } + public DbSet InstockTaskBox { get; set; } public DbSet InStockTaskBoxDetails { get; set; } public DbSet InStockTaskDetails { get; set; } diff --git a/src/WMS.Web.Repositories/InStockRepositories.cs b/src/WMS.Web.Repositories/InStockRepositories.cs index 6edb9da5..4eb00e19 100644 --- a/src/WMS.Web.Repositories/InStockRepositories.cs +++ b/src/WMS.Web.Repositories/InStockRepositories.cs @@ -409,5 +409,16 @@ namespace WMS.Web.Repositories return (list, total); } + + /// + /// 详情-根据最新的ID + /// + /// + /// + public async Task GetLastBillNo() + { + var entity = await _context.InStockErpDetails.OrderByDescending(x => x.Id).FirstOrDefaultAsync(); + return entity; + } } }