From 1736096743cb2be9f1752d5fa49eac3a5bad2a62 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 15 Nov 2023 15:28:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E7=AE=B1=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/MoveBoxRecordController.cs | 4 +- src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 4 +- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 76 ++++++++++++++++++- src/WMS.Web.Domain/Entitys/ErpOutStockSync.cs | 40 ++++++++++ .../Entitys/ErpOutStockSyncDetails.cs | 46 +++++++++++ .../IService/IChangeMoveBoxService.cs | 2 +- .../IService/ISerialNumberService.cs | 2 +- .../IMoveBoxRecordRepositories.cs | 2 + src/WMS.Web.Domain/Mappers/OutStockMapper.cs | 3 +- .../Services/ChangeMoveBoxService.cs | 17 +++-- .../Services/OutStockTaskService.cs | 8 +- .../Services/SerialNumberService.cs | 15 ++-- .../MoveBoxRecordRepositories.cs | 32 ++++++++ 13 files changed, 224 insertions(+), 27 deletions(-) create mode 100644 src/WMS.Web.Domain/Entitys/ErpOutStockSync.cs create mode 100644 src/WMS.Web.Domain/Entitys/ErpOutStockSyncDetails.cs diff --git a/src/WMS.Web.Api/Controllers/MoveBoxRecordController.cs b/src/WMS.Web.Api/Controllers/MoveBoxRecordController.cs index 56002464..19106fd0 100644 --- a/src/WMS.Web.Api/Controllers/MoveBoxRecordController.cs +++ b/src/WMS.Web.Api/Controllers/MoveBoxRecordController.cs @@ -88,7 +88,7 @@ namespace WMS.Web.Api.Controllers /// [HttpPost] [Route("Down_Save")] - public async Task Down_Save(SaveMoveBoxRecordRequest dto) + public async Task Down_Save(List dto) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) @@ -103,7 +103,7 @@ namespace WMS.Web.Api.Controllers /// [HttpPost] [Route("Up_Save")] - public async Task Up_Save(SaveMoveBoxRecordRequest dto) + public async Task Up_Save(List 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 d05e80c7..0d486a03 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -301,14 +301,14 @@ - + 移箱下架保存-PDA - + 移箱上架保存-PDA diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index d8a35e27..3e94ade7 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -321,6 +321,71 @@ 最新一次同步时间 + + + erp原始数据表 + + + + + 主键 订单编号 + + + + + 来源单号 + + + + + 同步成功或者失败 null 就是未同步 + + + + + 备注 + + + + + 明细 + + + + + erp原始数据表明细 + + + + + 主键 订单编号 + + + + + 单据头Id + + + + + 物料Id + + + + + 应出库数量 + + + + + 已出库数量 + + + + + 当前最新一次出库数量(用来做再次同步) + + 文件下载类型 @@ -1755,6 +1820,9 @@ 公司Id + + 批量添加 + 查询实体集合 @@ -2075,7 +2143,7 @@ 改箱 - + 移箱 @@ -2892,7 +2960,7 @@ - + 移箱保存 @@ -3870,11 +3938,11 @@ - + 移箱 - + diff --git a/src/WMS.Web.Domain/Entitys/ErpOutStockSync.cs b/src/WMS.Web.Domain/Entitys/ErpOutStockSync.cs new file mode 100644 index 00000000..3572a03f --- /dev/null +++ b/src/WMS.Web.Domain/Entitys/ErpOutStockSync.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text; +using WMS.Web.Core; + +namespace WMS.Web.Domain.Entitys +{ + /// + /// erp原始数据表 + /// + public class ErpOutStockSync:EntityBase + { + public ErpOutStockSync() { } + /// + /// 主键 订单编号 + /// + [Column("Id")] + public override int Id { get; set; } + /// + /// 来源单号 + /// + [Column("SourceBillNo")] + public string SourceBillNo { get; set; } + /// + /// 同步成功或者失败 null 就是未同步 + /// + [Column("SuccessSync")] + public bool? SuccessSync { get; set; } = null; + /// + /// 备注 + /// + [Column("Remark")] + public string Remark { get; set; } + /// + /// 明细 + /// + public List Details { get; set; } = new List(); + } +} diff --git a/src/WMS.Web.Domain/Entitys/ErpOutStockSyncDetails.cs b/src/WMS.Web.Domain/Entitys/ErpOutStockSyncDetails.cs new file mode 100644 index 00000000..d4318fce --- /dev/null +++ b/src/WMS.Web.Domain/Entitys/ErpOutStockSyncDetails.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text; +using WMS.Web.Core; + +namespace WMS.Web.Domain.Entitys +{ + /// + /// erp原始数据表明细 + /// + public class ErpOutStockSyncDetails : EntityBase + { + public ErpOutStockSyncDetails() { } + /// + /// 主键 订单编号 + /// + [Column("Id")] + public override int Id { get; set; } + /// + /// 单据头Id + /// + [Column("Fid")] + public int Fid { get; set; } + /// + /// 物料Id + /// + [Column("MaterialId")] + public int MaterialId { get; set; } + /// + /// 应出库数量 + /// + [Column("AccruedQty")] + public decimal AccruedQty { get; set; } + /// + /// 已出库数量 + /// + [Column("RealityQty")] + public decimal RealityQty { get; set; } + /// + /// 当前最新一次出库数量(用来做再次同步) + /// + [Column("NewQty")] + public decimal NewQty { get; set; } + } +} diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs index 0241c94f..868c0880 100644 --- a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs @@ -19,7 +19,7 @@ namespace WMS.Web.Domain.IService //改箱保存 Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction=true); //移箱保存 - Task MoveBoxSave(SaveMoveBoxRecordRequest dto,bool IsUp, LoginInDto loginInfo); + Task MoveBoxSave(List dto,bool IsUp, LoginInDto loginInfo); } } diff --git a/src/WMS.Web.Domain/IService/ISerialNumberService.cs b/src/WMS.Web.Domain/IService/ISerialNumberService.cs index 3682f1a7..fd4f127f 100644 --- a/src/WMS.Web.Domain/IService/ISerialNumberService.cs +++ b/src/WMS.Web.Domain/IService/ISerialNumberService.cs @@ -17,7 +17,7 @@ namespace WMS.Web.Domain.IService /// 改箱 Task ChangeBox(List changeBoxRecords, LoginInDto loginInfo, bool isTransaction = true); /// 移箱 - Task MoveBox(MoveBoxRecord moveBoxRecord, LoginInDto loginInfo, bool isTransaction = true); + Task MoveBox(List moveBoxRecords, LoginInDto loginInfo, bool isTransaction = true); /// 出库 Task OutStock(OutStock outStock, LoginInDto loginInfo, bool isTransaction = true); /// 入库 diff --git a/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs index 4ffcd2e0..9d079af1 100644 --- a/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IMoveBoxRecordRepositories.cs @@ -11,6 +11,8 @@ namespace WMS.Web.Domain.Infrastructure { // 新增 Task Add(MoveBoxRecord entity, bool isTransaction = true); + /// 批量添加 + Task AddRange(List entitys, bool isTransaction = true); // 获取列表 Task<(List list, int total)> GetListAsync(MoveBoxRecordQueryRequest dto); } diff --git a/src/WMS.Web.Domain/Mappers/OutStockMapper.cs b/src/WMS.Web.Domain/Mappers/OutStockMapper.cs index 6cf9ac0b..6781d43d 100644 --- a/src/WMS.Web.Domain/Mappers/OutStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/OutStockMapper.cs @@ -25,7 +25,8 @@ namespace WMS.Web.Domain.Mappers CreateMap(); CreateMap() - .ForPath(x => x.SourceBillNos, ops => ops.MapFrom(x =>new List() { x.SourceBillNo })); + .ForPath(x => x.SourceBillNos, ops => ops.MapFrom(x =>new List() { x.SourceBillNo })) + .ForPath(x => x.SaleBillNos, ops => ops.MapFrom(x => new List() { x.SaleBillNo })); } } } diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index c71fd02b..08b58e1e 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -109,19 +109,24 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task MoveBoxSave(SaveMoveBoxRecordRequest dto, bool IsUp, LoginInDto loginInfo) + public async Task MoveBoxSave(List dto, bool IsUp, LoginInDto loginInfo) { - var entity = new MoveBoxRecord(); - entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, dto.BoxId, dto.SubStockId, loginInfo.UserInfo.StaffId); + List entityList = new List(); + foreach (var d in dto) + { + var entity = new MoveBoxRecord(); + entity.Create(IsUp == true ? MoveBoxType.Up : MoveBoxType.Down, d.BoxId, d.SubStockId, loginInfo.UserInfo.StaffId); + entityList.Add(entity); + } //需要填写规格型号 //需要修改库存 IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); bool isRollback = false; bool isSuccess = true; - entity = await _moveBoxRecordRepositories.Add(entity, true); - if (entity == null) isRollback = true; - var res_change = await _serialNumberService.MoveBox(entity, loginInfo, false); + isSuccess = await _moveBoxRecordRepositories.AddRange(entityList, true); + if (!isSuccess) isRollback = true; + var res_change = await _serialNumberService.MoveBox(entityList, loginInfo, false); if (!res_change.IsSuccess) isRollback = true; //提交事务 isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index d803158b..66c9aa6a 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -133,14 +133,14 @@ namespace WMS.Web.Domain.Services foreach (var item in billNos) { var e = erp_list.FirstOrDefault(f => f.SourceBillNo == item); - var dto = new OutStockTask(); - dto.Create((OutStockType)e.Type, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime); + var entity = new OutStockTask(); + entity.Create((OutStockType)e.Type, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime); //找到当前对应来源单据编号的集合数据 var current_erp_details = erp_list.Where(x => x.SourceBillNo == item).ToList(); //给到dto的实体明细中 - dto.Details = _mapper.Map>(current_erp_details); - add_entitys.Add(dto); + entity.Details = _mapper.Map>(current_erp_details); + add_entitys.Add(entity); } //3.1提交新增 isSuccess = await _outStockTaskRepositories.AddRange(add_entitys, isTransaction); diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index c40b4e41..5b903615 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -104,15 +104,16 @@ namespace WMS.Web.Domain.Services /// /// 移箱 /// - /// + /// /// /// /// - public async Task MoveBox(MoveBoxRecord moveBoxRecord, LoginInDto loginInfo, bool isTransaction = true) + public async Task MoveBox(List moveBoxRecords, LoginInDto loginInfo, bool isTransaction = true) { //获取序列号信息 - var entityList = await _serialNumbersRepositories.GetEntityListByBoxId(moveBoxRecord.BoxId); - var box = await _boxRepositories.Get(moveBoxRecord.BoxId); + var boxids = moveBoxRecords.Select(s => s.BoxId).ToList(); + var entityList = await _serialNumbersRepositories.GetEntityListByBoxIds(boxids); + var boxList = await _boxRepositories.GetEntityList(boxids); var userName = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, loginInfo.UserInfo.StaffId); IDbContextTransaction _transaction = null; @@ -123,8 +124,10 @@ namespace WMS.Web.Domain.Services List sList = new List(); foreach (var entity in entityList) { + var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId); + var moveBoxRecord = moveBoxRecords.FirstOrDefault(f => f.BoxId == entity.BoxId); //修改序列号和箱绑定关系 - entity.Bind(moveBoxRecord.BoxId); + //entity.Bind(moveBoxRecord.BoxId); //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() @@ -201,7 +204,7 @@ namespace WMS.Web.Domain.Services OperateTime = DateTime.Now, OperateType = OutStockTypeConvert(outStock.Type), OperateUser = userName, - Remark = "来源单号:" + string.Join(",",outstockDetail.SourceBillNos) + "\r\n" + "出库单号:" + outStock.BillNo + Remark = "来源单号:" + string.Join(",", outstockDetail.SourceBillNos) + "\r\n" + "出库单号:" + outStock.BillNo }; if (outStock.Type == OutStockType.Sal) { diff --git a/src/WMS.Web.Repositories/MoveBoxRecordRepositories.cs b/src/WMS.Web.Repositories/MoveBoxRecordRepositories.cs index 2c2cb838..c1cce180 100644 --- a/src/WMS.Web.Repositories/MoveBoxRecordRepositories.cs +++ b/src/WMS.Web.Repositories/MoveBoxRecordRepositories.cs @@ -71,6 +71,38 @@ 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.MoveBoxRecord.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; + } + } + /// /// 列表 ///