From 006ab4d02d8eeae750016ca5f049ba226aad7b5c Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Mon, 8 Apr 2024 14:10:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 16 +++++++ .../Infrastructure/IMaterialsRepositories.cs | 16 +++++++ src/WMS.Web.Domain/Services/InStockService.cs | 3 +- .../Services/Public/MaterialService.cs | 27 +++++++++--- .../MaterialsRepositories.cs | 42 +++++++++++++++++++ 5 files changed, 98 insertions(+), 6 deletions(-) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 8454cbfe..9d313b43 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -3122,6 +3122,22 @@ + + + 列表 + + + + + + + + 修改物料 + + + + + 批量添加 diff --git a/src/WMS.Web.Domain/Infrastructure/IMaterialsRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IMaterialsRepositories.cs index ed6d13f2..467e073c 100644 --- a/src/WMS.Web.Domain/Infrastructure/IMaterialsRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IMaterialsRepositories.cs @@ -45,5 +45,21 @@ namespace WMS.Web.Domain.Infrastructure /// /// Task> GetAllNumbers(); + + /// + /// 列表 + /// + /// + /// + /// + Task> GetEntityList(List materNumbers, bool isBatchManage); + + /// + /// 修改物料 + /// + /// + /// + /// + Task UpdateRange(List entitys, bool isTransaction = true); } } diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 7809799c..2edd064e 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -794,7 +794,8 @@ 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; + if (!string.IsNullOrEmpty(erpDetail.BatchBillNo)) + 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.Domain/Services/Public/MaterialService.cs b/src/WMS.Web.Domain/Services/Public/MaterialService.cs index af90b433..1c1349b4 100644 --- a/src/WMS.Web.Domain/Services/Public/MaterialService.cs +++ b/src/WMS.Web.Domain/Services/Public/MaterialService.cs @@ -18,13 +18,13 @@ namespace WMS.Web.Domain.Services /// /// 物料服务 /// - public class MaterialService: IMaterialService + public class MaterialService : IMaterialService { private IMapper _mapper; private ILogger _logger; private IErpService _erpService; private IMaterialsRepositories _materialsRepositories; - public MaterialService(IMapper mapper, ILogger logger, IErpService erpService, IMaterialsRepositories materialsRepositories) + public MaterialService(IMapper mapper, ILogger logger, IErpService erpService, IMaterialsRepositories materialsRepositories) { _mapper = mapper; _logger = logger; @@ -36,7 +36,7 @@ namespace WMS.Web.Domain.Services /// 同步金蝶新的物料 /// /// - public async Task SyncNewMaterials() + public async Task SyncNewMaterials() { try { @@ -65,13 +65,30 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } - _logger.LogInformation("同步金蝶新物料:结束->" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+"->添加数量:"+entitys.Count); + //5.修改物料数据 + if (mats.Count != 0) + { + var isBatchManageMatNumbs= mats.Where(x => x.IsBatchManage == true).Select(x=>x.MaterialNumber).ToList(); + //取:金蝶拉取的已启用批号管理的物料并且本地数据库中的未启用批号管理的物料;来更新批号管理修改为true + var updateList= await _materialsRepositories.GetEntityList(isBatchManageMatNumbs,false); + if (updateList.Count != 0) + { + updateList.ForEach(x => { x.IsBatchManage = true; }); + var isSuccess= await _materialsRepositories.UpdateRange(updateList); + if (!isSuccess) + _logger.LogInformation("同步金蝶新物料-修改物料:失败"); + else + _logger.LogInformation("同步金蝶新物料-修改物料:成功->" + updateList.Count + "条"); + } + } + + _logger.LogInformation("同步金蝶新物料:结束->" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "->添加数量:" + entitys.Count); return Result.ReSuccess(); } catch (Exception ex) { _logger.LogInformation("同步金蝶新物料:失败->" + ex.Message); - return Result.ReFailure(ex.Message,ex.HResult); + return Result.ReFailure(ex.Message, ex.HResult); } } } diff --git a/src/WMS.Web.Repositories/MaterialsRepositories.cs b/src/WMS.Web.Repositories/MaterialsRepositories.cs index 03135e1e..adb15c74 100644 --- a/src/WMS.Web.Repositories/MaterialsRepositories.cs +++ b/src/WMS.Web.Repositories/MaterialsRepositories.cs @@ -11,6 +11,7 @@ using WMS.Web.Core.Help; using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Mappers; using WMS.Web.Repositories.Configuration; namespace WMS.Web.Repositories @@ -118,5 +119,46 @@ namespace WMS.Web.Repositories var numbers = await _context.Materials.Select(x => x.MaterialNumber).ToListAsync(); return numbers.Clone().Distinct().ToList(); } + + /// + /// 获取全部的物料编码 + /// + /// + public async Task> GetEntityList(List materNumbers, bool isBatchManage) + { + var entitys = await _context.Materials.Where(x => materNumbers.Contains(x.MaterialNumber) && x.IsBatchManage == isBatchManage).ToListAsync(); + return entitys; + } + + /// + /// 修改物料 + /// + /// + /// + /// + public async Task UpdateRange(List entitys, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + { + try + { + List list = entitys.Select(s => s.Id).ToList(); + var res = await _context.Materials.AsNoTracking().Where(f => list.Contains(f.Id)).ToListAsync(); + _mapper.ToMapList(entitys, res); + await _context.SaveChangesAsync(); + if (_transaction != null) + _transaction.Commit(); + } + catch (Exception ex) + { + if (_transaction != null) + _transaction.Rollback(); + return false; + } + return true; + } + } } }