diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index b810d7a0..ab89519a 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs index 07d6b5b6..345c3388 100644 --- a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs @@ -84,5 +84,23 @@ namespace WMS.Web.Api.Controllers return await _outStockService.merge(dto, loginInfo); } + /// + /// 根据出库单任务编号搜索 + /// + /// + /// + [HttpGet] + [Route("GetOutStockTaskByNo/{billNo}")] + public async Task> GetOutStockTaskByNo([FromRoute] string billNo) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result.ReFailure(ResultCodes.Token_Invalid_Error); + + var res= await _repositories.GetOutStockTaskByNo(billNo); + if (res == null) return Result.ReFailure(ResultCodes.OutStockTaskNoData); + return Result.ReSuccess(res); + } + } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index eeeb8478..b1da5d49 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -192,7 +192,7 @@ - 保存 + 保存(出库) @@ -230,6 +230,13 @@ + + + 根据出库单任务编号搜索 + + + + 系统配置 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 632bfa07..ba44fa72 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -2010,6 +2010,56 @@ 操作 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 81c8250c..37b5445b 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -889,6 +889,14 @@ 创建时间(erp那边的创建时间) + + + 出库 反写 任务单 + + + + + wms盘点单 diff --git a/src/WMS.Web.Core/Dto/OutStockTask/GetOutStockTaskByNoResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/GetOutStockTaskByNoResponse.cs new file mode 100644 index 00000000..ad9e095e --- /dev/null +++ b/src/WMS.Web.Core/Dto/OutStockTask/GetOutStockTaskByNoResponse.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.OutStockTask +{ + /// + /// 根据单号搜索出库单任务信息 + /// + public class GetOutStockTaskByNoResponse + { + /// + /// 主键 订单编号 + /// + public int Id { get; set; } + /// + /// 单据编号 + /// + public string BillNo { get; set; } + /// + /// 详情 + /// + public List details { get; set; } = new List(); + } + + public class GetOutStockTaskByNoDetailsResponse + { + /// + /// 物料Id + /// + public int MaterialId { get; set; } + /// + /// 物料名称 + /// + public string MaterialName { get; set; } + /// + /// 物料编码 + /// + public string MaterialNumber { get; set; } + /// + /// 物料规格型号 + /// + public string Specifications { get; set; } + /// + /// 应出库数量 + /// + public decimal AccruedQty { get; set; } + /// + /// 已出库数量 + /// + public decimal RealityQty { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs index 6dc775a2..ec2294aa 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Text; using WMS.Web.Core; +using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.Values; namespace WMS.Web.Domain.Entitys { @@ -74,5 +76,21 @@ namespace WMS.Web.Domain.Entitys /// [Column("CreateTime")] public DateTime? CreateTime { get; set; } + + /// + /// 出库 反写 任务单 + /// + /// + /// + /// + public Result OutStock(int materialId,decimal qty) + { + if ((this.AccruedQty - this.RealityQty) < qty) + return Result.ReFailure(ResultCodes.OutStockQtyError); + + this.RealityQty = this.RealityQty + qty; + + return Result.ReSuccess(); + } } } diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs index 0f22ff7e..e56baac5 100644 --- a/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs @@ -17,10 +17,13 @@ namespace WMS.Web.Domain.Infrastructure Task> GetEntityList(List ids); /// 修改实体集合 Task EditEntityList(List entitys, bool isTransaction = true); - + //编辑 + Task Edit(OutStockTask entity, bool isTransaction = true); /// 删除实体集合 Task DeleteEntityList(List ids, bool isTransaction = true); //获取实体 Task Get(int id); + //根据订单号获取订单信息 + Task GetOutStockTaskByNo(string billNo); } } diff --git a/src/WMS.Web.Domain/Mappers/OutStockMapper.cs b/src/WMS.Web.Domain/Mappers/OutStockMapper.cs index da9a2561..042de07d 100644 --- a/src/WMS.Web.Domain/Mappers/OutStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/OutStockMapper.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Text; using WMS.Web.Core.Dto.OutStock; +using WMS.Web.Core.Dto.OutStockTask; using WMS.Web.Domain.Entitys; namespace WMS.Web.Domain.Mappers @@ -17,6 +18,10 @@ namespace WMS.Web.Domain.Mappers .ForMember(x => x.Id, ops => ops.Ignore()) .ForMember(x => x.Fid, ops => ops.Ignore()) .ForMember(x => x.Qty, ops => ops.Ignore()); + + + CreateMap(); + CreateMap(); } } } diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index 62c55c56..3d6a26c8 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -56,8 +56,11 @@ namespace WMS.Web.Domain.Services //任务单明细 var tDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId); if (tDetail == null) continue; - var outd = _mapper.Map(tDetail); - + var res = tDetail.OutStock(d.MaterialId, d.Qty); + if (!res.IsSuccess) return res; + + var outd = _mapper.Map(tDetail); + outd.Qty = outd.Qty + d.Qty; entity.Details.Add(outd); } diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index e8896b1b..01874a0d 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -24,6 +24,8 @@ namespace WMS.Web.Domain.Values //出库任务单 public static ValueTuple MergeStatusError = (70000, "所选单据数据不一致,不能合并"); + public static ValueTuple OutStockQtyError = (70001, "可出库数量不足"); + public static ValueTuple OutStockTaskNoData = (70002, "出库任务数据不存在"); public static ValueTuple BoxNoData = (80000, "箱信息不存在"); public static ValueTuple BoxMateriaNoData = (800010, "箱对应物料信息不存在"); diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index b9eeba76..47fd5754 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -169,6 +169,42 @@ namespace WMS.Web.Repositories return res.Clone(); } + /// + /// 编辑 + /// + /// + /// + /// + public async Task Edit(OutStockTask entity, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + + try + { + var res = await _context.OutStockTask + .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; + } + } + /// /// 列表 /// @@ -224,5 +260,18 @@ namespace WMS.Web.Repositories }).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); return (list, total); } + /// + /// 根据订单号获取订单信息 + /// + /// + /// + public async Task GetOutStockTaskByNo(string billNo) + { + var entity = await _context.OutStockTask.Include(x => x.Details).FirstOrDefaultAsync(f => billNo.Equals(f.BillNo)); + var response = _mapper.Map(entity); + //获取物料信息 显示物料三件套 + var mIds = entity.Details.Select(s => s.MaterialId).ToList(); + return response; + } } }