From 0fe1d17de426ddf99d8a31b7281343137e720202 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Thu, 2 Nov 2023 17:00:48 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=9B=98=E7=82=B9=E5=8D=95=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8D=95=E4=BD=8DId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 10 +++++----- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 5 ----- .../Dto/Erp/OutStock/ErpOutStockSaveDto.cs | 13 +++++++++++++ .../Dto/TakeStock/SaveTakeStockRequest.cs | 5 ----- src/WMS.Web.Domain/Entitys/TakeStock.cs | 5 ----- src/WMS.Web.Domain/Entitys/TakeStockDetails.cs | 5 ----- src/WMS.Web.Domain/Services/TakeStockService.cs | 8 ++++---- src/WMS.Web.Repositories/TakeStockRepositories.cs | 2 +- 8 files changed, 23 insertions(+), 30 deletions(-) create mode 100644 src/WMS.Web.Core/Dto/Erp/OutStock/ErpOutStockSaveDto.cs diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index a9cf4f8f..eeb7e5bc 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -570,6 +570,11 @@ 名称 + + + 出库单同步金蝶 + + erp-采购入库-返回数据源 @@ -2500,11 +2505,6 @@ 物料ID - - - 单位ID - - 仓库ID diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index c52d7b75..34602b8a 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1001,11 +1001,6 @@ 物料ID - - - 单位ID - - 仓库ID diff --git a/src/WMS.Web.Core/Dto/Erp/OutStock/ErpOutStockSaveDto.cs b/src/WMS.Web.Core/Dto/Erp/OutStock/ErpOutStockSaveDto.cs new file mode 100644 index 00000000..067ffbf8 --- /dev/null +++ b/src/WMS.Web.Core/Dto/Erp/OutStock/ErpOutStockSaveDto.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Erp.OutStock +{ + /// + /// 出库单同步金蝶 + /// + public class ErpOutStockSaveDto + { + } +} diff --git a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs index e649338d..4e863ae8 100644 --- a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs +++ b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs @@ -21,11 +21,6 @@ namespace WMS.Web.Core.Dto.TakeStock [Required(ErrorMessage = "物料不能为空")] public int MaterialId { get; set; } /// - /// 单位ID - /// - [Required(ErrorMessage = "单位不能为空")] - public int UnitId { get; set; } - /// /// 仓库ID /// [Required(ErrorMessage = "仓库不能为空")] diff --git a/src/WMS.Web.Domain/Entitys/TakeStock.cs b/src/WMS.Web.Domain/Entitys/TakeStock.cs index 1146bd1c..eae815ab 100644 --- a/src/WMS.Web.Domain/Entitys/TakeStock.cs +++ b/src/WMS.Web.Domain/Entitys/TakeStock.cs @@ -51,11 +51,6 @@ namespace WMS.Web.Domain.Entitys [Column("MaterialId")] public int MaterialId { get; set; } /// - /// 单位ID - /// - [Column("UnitId")] - public int UnitId { get; set; } - /// /// 仓库ID /// [Column("StockId")] diff --git a/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs b/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs index 5dd23943..7a8b20ed 100644 --- a/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs +++ b/src/WMS.Web.Domain/Entitys/TakeStockDetails.cs @@ -36,11 +36,6 @@ namespace WMS.Web.Domain.Entitys [Column("MaterialId")] public int MaterialId { get; set; } /// - /// 单位ID - /// - [Column("UnitId")] - public int UnitId { get; set; } - /// /// 仓库ID /// [Column("StockId")] diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index 67741d6a..a7e8608a 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -106,14 +106,14 @@ namespace WMS.Web.Domain.Services FOwnerid = stock.OrgId.ToString(), FKeeperId = stock.OrgId.ToString(), MaterialId = entity.MaterialId.ToString(), - UnitId = entity.UnitId.ToString(), + UnitId = "",//物料带出来 StockId = stock.Id.ToString(), SubStockId = subStock.Id.ToString(), BeforeQty = entity.BeforeQty, AfterQty = entity.AfterQty, FinalQty = entity.FinalQty, Fnote = "" - }); + }) ; ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() { BillNo = entity.BillNo, @@ -149,14 +149,14 @@ namespace WMS.Web.Domain.Services FOwnerid = stock.OrgId.ToString(), FKeeperId = stock.OrgId.ToString(), MaterialId = entity.MaterialId.ToString(), - UnitId = entity.UnitId.ToString(), + UnitId = "", //物料带出来 StockId = stock.Id.ToString(), SubStockId = subStock.Id.ToString(), BeforeQty = entity.BeforeQty, AfterQty = entity.AfterQty, FinalQty = entity.FinalQty, Fnote = "" - }); + }) ; ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() { BillNo = entity.BillNo, diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs index 36e39508..e33d82af 100644 --- a/src/WMS.Web.Repositories/TakeStockRepositories.cs +++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs @@ -100,7 +100,7 @@ namespace WMS.Web.Repositories #region dto组装 Id = s.Id, BillNo = s.BillNo, - Unit = _singleDataService.GetSingleData(SingleAction.Units, _loginRepositories.CompanyId, s.UnitId), + Unit = "",//物料带出来 Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.StockId), SubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.SubStockId), BeforeQty = s.BeforeQty, From bcb2cda25c9621a713717f93b4f9df9ea91d733d Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Thu, 2 Nov 2023 17:44:04 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OutStockController.cs | 4 +- src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 2 +- src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 33 ++----------- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 14 +++--- .../Dto/OutStock/SaveOutStockRequest.cs | 35 ++++---------- src/WMS.Web.Domain/Entitys/OutStock.cs | 10 +++- .../IService/IOutStockService.cs | 2 +- .../Infrastructure/IOutStockRepositories.cs | 4 ++ .../IOutStockTaskRepositories.cs | 2 + src/WMS.Web.Domain/Mappers/OutStockMapper.cs | 5 ++ .../Services/OutStockService.cs | 31 ++++++++++-- .../OutStockRepositories.cs | 48 +++++++++++++++++++ .../OutStockTaskRepositories.cs | 14 ++++++ 13 files changed, 131 insertions(+), 73 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/OutStockController.cs b/src/WMS.Web.Api/Controllers/OutStockController.cs index 0fba0703..b438b379 100644 --- a/src/WMS.Web.Api/Controllers/OutStockController.cs +++ b/src/WMS.Web.Api/Controllers/OutStockController.cs @@ -53,13 +53,13 @@ namespace WMS.Web.Api.Controllers } /// - /// 保存 + /// 保存(出库) /// /// /// [HttpPost] [Route("Save")] - public async Task Save(List dto) + public async Task Save(SaveOutStockRequest dto) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 22b95af7..eeeb8478 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -190,7 +190,7 @@ - + 保存 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index eeb7e5bc..2e61c0e7 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -2305,42 +2305,17 @@ 出库单保存 - + - 来源单号 + 出库任务单Id - - - 销售订单号 - - - - - 发货组织 - - - - - 收货客户 - - - + 物料Id - - - 仓库ID - - - - - 仓位ID - - - + 出库数量 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 34602b8a..81c8250c 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -655,6 +655,11 @@ 主键 订单编号 + + + 任务单ID + + 单据编号 @@ -690,7 +695,7 @@ 明细 - + 创建 @@ -924,11 +929,6 @@ 物料ID - - - 单位ID - - 仓库ID @@ -1983,7 +1983,7 @@ 出库服务 - + 出库单 diff --git a/src/WMS.Web.Core/Dto/OutStock/SaveOutStockRequest.cs b/src/WMS.Web.Core/Dto/OutStock/SaveOutStockRequest.cs index 5519ffc2..77e22436 100644 --- a/src/WMS.Web.Core/Dto/OutStock/SaveOutStockRequest.cs +++ b/src/WMS.Web.Core/Dto/OutStock/SaveOutStockRequest.cs @@ -11,40 +11,21 @@ namespace WMS.Web.Core.Dto.OutStock public class SaveOutStockRequest { /// - /// 来源单号 + /// 出库任务单Id /// - [Required(ErrorMessage = "来源单号不能为空")] - public string SourceBillNo { get; set; } - /// - /// 销售订单号 - /// - [Required(ErrorMessage = "销售订单号不能为空")] - public string SaleBillNo { get; set; } - /// - /// 发货组织 - /// - [Required(ErrorMessage = "发货组织不能为空")] - public int DeliveryOrgId { get; set; } - /// - /// 收货客户 - /// - [Required(ErrorMessage = "收货客户不能为空")] - public int ReceiptCustomerId { get; set; } + [Required(ErrorMessage = "出库单不能为空")] + public int TaskId { get; set; } + public List Details { get; set; } = new List(); + + } + public class SaveOutStockDetailsRequest + { /// /// 物料Id /// [Required(ErrorMessage = "物料不能为空")] public int MaterialId { get; set; } /// - /// 仓库ID - /// - [Required(ErrorMessage = "仓库不能为空")] - public int StockId { get; set; } - /// - /// 仓位ID - /// - public int? SubStockId { get; set; } - /// /// 出库数量 /// [Required(ErrorMessage = "出库数量不能为空")] diff --git a/src/WMS.Web.Domain/Entitys/OutStock.cs b/src/WMS.Web.Domain/Entitys/OutStock.cs index 36a133d6..89c8edb3 100644 --- a/src/WMS.Web.Domain/Entitys/OutStock.cs +++ b/src/WMS.Web.Domain/Entitys/OutStock.cs @@ -21,6 +21,11 @@ namespace WMS.Web.Domain.Entitys [Column("Id")] public override int Id { get; set; } /// + /// 任务单ID + /// + [Column("TaskId")] + public int TaskId { get; set; } + /// /// 单据编号 /// [Column("BillNo")] @@ -59,11 +64,14 @@ namespace WMS.Web.Domain.Entitys /// 创建 /// /// - public void Create(int creatorId) + public void Create(int creatorId,int taskId, OrderType type) { + this.TaskId = taskId; + this.Type = type; this.CreatorId = creatorId; this.CreateTime = DateTime.Now; } + /// /// 生成单据号 diff --git a/src/WMS.Web.Domain/IService/IOutStockService.cs b/src/WMS.Web.Domain/IService/IOutStockService.cs index 244d4b0a..1ebcbe0f 100644 --- a/src/WMS.Web.Domain/IService/IOutStockService.cs +++ b/src/WMS.Web.Domain/IService/IOutStockService.cs @@ -16,7 +16,7 @@ namespace WMS.Web.Domain.IService public interface IOutStockService { //出库单保存 - Task Save(List dto, LoginInDto loginInfo); + Task Save(SaveOutStockRequest dto, LoginInDto loginInfo); // 同步金蝶 Task Sync(OperateRequest dto); //出库任务作废 diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs index 8c0948a4..50fcfac9 100644 --- a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs @@ -11,6 +11,10 @@ namespace WMS.Web.Domain.Infrastructure { // 新增 Task Add(OutStock entity, bool isTransaction = true); + //编辑 + Task Edit(OutStock entity, bool isTransaction = true); + //根据任务单Id搜索 + Task GetByTaskId(int taskId); // 获取列表 Task<(List list, int total)> GetListAsync(OutStockQueryRequest dto); /// 查询实体集合 diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs index 2df89219..0f22ff7e 100644 --- a/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs @@ -20,5 +20,7 @@ namespace WMS.Web.Domain.Infrastructure /// 删除实体集合 Task DeleteEntityList(List ids, bool isTransaction = true); + //获取实体 + Task Get(int id); } } diff --git a/src/WMS.Web.Domain/Mappers/OutStockMapper.cs b/src/WMS.Web.Domain/Mappers/OutStockMapper.cs index 273a3d7b..da9a2561 100644 --- a/src/WMS.Web.Domain/Mappers/OutStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/OutStockMapper.cs @@ -12,6 +12,11 @@ namespace WMS.Web.Domain.Mappers public OutStockMapper() { CreateMap(); + + CreateMap() + .ForMember(x => x.Id, ops => ops.Ignore()) + .ForMember(x => x.Fid, ops => ops.Ignore()) + .ForMember(x => x.Qty, ops => ops.Ignore()); } } } diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index d30a60bf..494b9cfc 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -44,11 +44,28 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task Save(List dto, LoginInDto loginInfo) + public async Task Save(SaveOutStockRequest dto, LoginInDto loginInfo) { - OutStock entity = new OutStock(); - entity.Details = _mapper.Map>(dto); - entity.Create(loginInfo.UserInfo.StaffId); + var outStockTask = await _outStockTaskRepositories.Get(dto.TaskId); + OutStock entity = await _outStockRepositories.GetByTaskId(dto.TaskId); + + if (entity == null) + entity = new OutStock(); + entity.Create(loginInfo.UserInfo.StaffId, outStockTask.Id, outStockTask.Type); + foreach (var d in dto.Details) + { + //任务单明细 + var tDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId); + if (tDetail == null) continue; + //出库单明细 + OutStockDetails outd = entity.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId); + if (outd == null) + { + outd = _mapper.Map(tDetail); + entity.Details.Add(outd); + } + outd.Qty = outd.Qty + d.Qty; + } //需要填写序列号 //需要修改库存 @@ -57,7 +74,11 @@ namespace WMS.Web.Domain.Services IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); bool isRollback = false; bool isSuccess = true; - entity = await _outStockRepositories.Add(entity, false); + if (entity.Id > 0) + entity = await _outStockRepositories.Edit(entity, false); + else + entity = await _outStockRepositories.Add(entity, false); + if (entity == null) isRollback = true; //提交事务 diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index fccd7462..1b9c107f 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -185,5 +185,53 @@ namespace WMS.Web.Repositories return res.Clone(); } + /// + /// 编辑 + /// + /// + /// + /// + public async Task Edit(OutStock entity, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + + try + { + var res = await _context.OutStock + .Include(s => s.Details) + .FirstOrDefaultAsync(f => f.Id == entity.Id); + if (res == null) return null; + + _mapper.Map(entity, res); + _mapper.ToMapList(entity.Details, res.Details); + await _context.SaveChangesAsync(); + + if (_transaction != null) + _transaction.Commit(); + + return res; + } + catch (Exception) + { + if (_transaction != null) + _transaction.Rollback(); + return null; + } + } + /// + /// 根据任务单Id获取 + /// + /// + /// + public async Task GetByTaskId(int taskId) + { + var res = await _context.OutStock + .Include(s => s.Details) + .FirstOrDefaultAsync(f => taskId == f.TaskId); + + return res.Clone(); + } } } diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index ca4d6423..b9eeba76 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -140,6 +140,20 @@ namespace WMS.Web.Repositories return true; } + /// + /// 根据Id获取实体 + /// + /// + /// + public async Task Get(int id) + { + var res = await _context.OutStockTask + .Include(s => s.Details) + .FirstOrDefaultAsync(f => id == f.Id); + + return res.Clone(); + } + /// /// 根据单据头id获取数据 /// From 3dc04816011dc784acc409cacfdb5e3ab3b7704e Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Thu, 2 Nov 2023 17:53:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/OutStockService.cs | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index 494b9cfc..62c55c56 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -47,24 +47,19 @@ namespace WMS.Web.Domain.Services public async Task Save(SaveOutStockRequest dto, LoginInDto loginInfo) { var outStockTask = await _outStockTaskRepositories.Get(dto.TaskId); - OutStock entity = await _outStockRepositories.GetByTaskId(dto.TaskId); + //OutStock entity = await _outStockRepositories.GetByTaskId(dto.TaskId); - if (entity == null) - entity = new OutStock(); + OutStock entity = new OutStock(); entity.Create(loginInfo.UserInfo.StaffId, outStockTask.Id, outStockTask.Type); foreach (var d in dto.Details) { //任务单明细 var tDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId); if (tDetail == null) continue; - //出库单明细 - OutStockDetails outd = entity.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId); - if (outd == null) - { - outd = _mapper.Map(tDetail); - entity.Details.Add(outd); - } + var outd = _mapper.Map(tDetail); + outd.Qty = outd.Qty + d.Qty; + entity.Details.Add(outd); } //需要填写序列号 @@ -74,10 +69,7 @@ namespace WMS.Web.Domain.Services IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); bool isRollback = false; bool isSuccess = true; - if (entity.Id > 0) - entity = await _outStockRepositories.Edit(entity, false); - else - entity = await _outStockRepositories.Add(entity, false); + entity = await _outStockRepositories.Add(entity, false); if (entity == null) isRollback = true;