From 063013792005c00c703ea0540846505a1ad9b6ba Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Tue, 7 Nov 2023 10:57:46 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=98=E7=9B=88=E7=9B=98=E4=BA=8F=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Domain/Entitys/TakeStock.cs | 18 +++++ .../IService/ITakeStockService.cs | 2 +- .../Infrastructure/ITakeStockRepositories.cs | 11 +++ src/WMS.Web.Domain/Mappers/TakeStockMapper.cs | 2 + .../Services/TakeStockService.cs | 48 +++++++---- .../TakeStockRepositories.cs | 80 +++++++++++++++++++ 6 files changed, 144 insertions(+), 17 deletions(-) diff --git a/src/WMS.Web.Domain/Entitys/TakeStock.cs b/src/WMS.Web.Domain/Entitys/TakeStock.cs index eae815ab..e0808357 100644 --- a/src/WMS.Web.Domain/Entitys/TakeStock.cs +++ b/src/WMS.Web.Domain/Entitys/TakeStock.cs @@ -96,6 +96,24 @@ namespace WMS.Web.Domain.Entitys this.Date = DateTime.Now; } /// + /// 同步金蝶结果 + /// + /// + /// + public void Sync(bool isSuccess,string remark) + { + if (isSuccess) + { + this.SuccessSync = true; + this.Remark = ""; + } + else + { + this.SuccessSync = false; + this.Remark = remark; + } + } + /// /// 生成单据号 /// public void GenerateNo() diff --git a/src/WMS.Web.Domain/IService/ITakeStockService.cs b/src/WMS.Web.Domain/IService/ITakeStockService.cs index 762d2a8b..07ac3db1 100644 --- a/src/WMS.Web.Domain/IService/ITakeStockService.cs +++ b/src/WMS.Web.Domain/IService/ITakeStockService.cs @@ -23,6 +23,6 @@ namespace WMS.Web.Domain.IService //盘盈 Task Profit(TakeStock entity); //盘亏 - Task Loss(TakeStock entity); + Task Loss_Profit(TakeStock entity); } } diff --git a/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs index c6d25f56..8b3f3a71 100644 --- a/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/ITakeStockRepositories.cs @@ -11,7 +11,18 @@ namespace WMS.Web.Domain.Infrastructure { // 新增 Task Add(TakeStock entity, bool isTransaction = true); + /// + /// 批量添加 + /// + /// + /// + /// + Task AddRange(List entitys, bool isTransaction = true); + //编辑 + Task Edit(TakeStock entity, bool isTransaction = true); // 获取列表 Task<(List list, int total)> GetListAsync(TakeStockQueryRequest dto); + /// 查询实体集合 + Task> GetEntityList(List ids); } } diff --git a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs index 7019b7b0..f8b928e6 100644 --- a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs @@ -14,6 +14,8 @@ namespace WMS.Web.Domain.Mappers { CreateMap() .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) >0? TakeStockType.Profit: TakeStockType.Loss)); + CreateMap() + .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss)); } } } diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index 5f95edd9..361b5b2f 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -53,9 +53,9 @@ namespace WMS.Web.Domain.Services /// public async Task Save(List dto, LoginInDto loginInfo) { - TakeStock entity = new TakeStock(); - //entity.Details = _mapper.Map>(dto); - entity.Create(loginInfo.UserInfo.StaffId); + List list = _mapper.Map>(dto); + foreach (var entity in list) + entity.Create(loginInfo.UserInfo.StaffId); //需要填写序列号 //需要修改库存 @@ -63,14 +63,18 @@ namespace WMS.Web.Domain.Services IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); bool isRollback = false; bool isSuccess = true; - entity = await _takeStockRepositories.Add(entity, false); - if (entity == null) isRollback = true; + isSuccess = await _takeStockRepositories.AddRange(list, false); + if (!isSuccess) isRollback = true; //提交事务 isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); + //同步金蝶 + foreach (var entity in list) + await Loss_Profit(entity); + return Result.ReSuccess(); } @@ -79,12 +83,17 @@ namespace WMS.Web.Domain.Services /// /// /// - public Task Sync(OperateRequest dto) + public async Task Sync(OperateRequest dto) { - return Task.FromResult(Result.ReSuccess()); + var list = await _takeStockRepositories.GetEntityList(dto.Ids); + list = list.Where(w => w.SuccessSync == false).ToList(); + foreach (var entity in list) + await Loss_Profit(entity); + + return Result.ReSuccess(); } /// - /// 盘盈 + /// 作废 /// /// /// @@ -113,7 +122,7 @@ namespace WMS.Web.Domain.Services AfterQty = entity.AfterQty, FinalQty = entity.FinalQty, Fnote = "" - }) ; + }); ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() { BillNo = entity.BillNo, @@ -124,14 +133,17 @@ namespace WMS.Web.Domain.Services }; #endregion - return await _erpService.Sync(dto, FormIdParam.STK_StockCountGain.ToString()); + var resSync = await _erpService.Sync(dto, FormIdParam.STK_StockCountGain.ToString()); + entity.Sync(resSync.IsSuccess, resSync.Message); + await _takeStockRepositories.Edit(entity, true); + return res; } /// - /// 盘亏 + /// 盘盈盘亏同步金蝶 /// /// /// - public async Task Loss(TakeStock entity) + public async Task Loss_Profit(TakeStock entity) { //获取金蝶仓库仓位编码 var stockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.StockId); @@ -156,18 +168,22 @@ namespace WMS.Web.Domain.Services AfterQty = entity.AfterQty, FinalQty = entity.FinalQty, Fnote = "" - }) ; + }); ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() { BillNo = entity.BillNo, StockOrgId = stock.OrgId.ToString(), - Type = "PK01_SYS", + Type = entity.ResultType == TakeStockType.Loss ? "PK01_SYS" : "PY01_SYS", Date = entity.Date, Details = detils }; #endregion - - return await _erpService.Sync(dto, FormIdParam.STK_StockCountLoss.ToString()); + //判断盘盈盘亏 + string formId = entity.ResultType == TakeStockType.Loss ? FormIdParam.STK_StockCountLoss.ToString() : FormIdParam.STK_StockCountGain.ToString(); + var resSync = await _erpService.Sync(dto, formId); + entity.Sync(resSync.IsSuccess, resSync.Message); + await _takeStockRepositories.Edit(entity, true); + return res; } } } diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs index e33d82af..913d4c9c 100644 --- a/src/WMS.Web.Repositories/TakeStockRepositories.cs +++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs @@ -70,6 +70,86 @@ namespace WMS.Web.Repositories } } + /// + /// 批量添加 + /// + /// + /// + /// + public async Task AddRange(List entitys, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + try + { + if (entitys != null && entitys.Count != 0) + { + await _context.TakeStock.AddRangeAsync(entitys); + await _context.SaveChangesAsync(); + foreach (var item in entitys) + { + if (string.IsNullOrEmpty(item.BillNo)) + //自动生成单据编号 + item.GenerateNo(); + } + await _context.SaveChangesAsync(); + } + if (_transaction != null) + _transaction.Commit(); + return true; + } + catch + { + if (_transaction != null) + _transaction.Rollback(); + return false; + } + } + + /// + /// 编辑 + /// + /// + /// + /// + public async Task Edit(TakeStock entity, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + + try + { + var res = await _context.TakeStock + .FirstOrDefaultAsync(f => f.Id == entity.Id); + if (res == null) return null; + + _mapper.Map(entity, res); + await _context.SaveChangesAsync(); + + if (_transaction != null) + _transaction.Commit(); + + return res; + } + catch (Exception) + { + if (_transaction != null) + _transaction.Rollback(); + return null; + } + } + + public async Task> GetEntityList(List ids) + { + var res = await _context.TakeStock + .Where(f => ids.Contains(f.Id)) + .ToListAsync(); + + return res.Clone(); + } + /// /// 盘点单列表 ///