From 27dac5680deed8b68190e55accb7fe21ffc3372f Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Sat, 11 Nov 2023 10:23:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8F=B7=E7=BB=93=E6=9E=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 58 +++++++++++++++-- src/WMS.Web.Core/Dto/OpsBoxResponse.cs | 2 +- src/WMS.Web.Domain/Entitys/Box.cs | 6 +- src/WMS.Web.Domain/Entitys/BoxDetails.cs | 4 -- src/WMS.Web.Domain/Entitys/SerialNumbers.cs | 62 +++++++++++++++++++ .../ISerialNumbersRepositories.cs | 22 +++++++ src/WMS.Web.Domain/Mappers/BoxMapper.cs | 4 +- src/WMS.Web.Domain/Services/BoxService.cs | 43 +++++++++---- src/WMS.Web.Repositories/BoxRepositories.cs | 29 +++++++-- .../Configuration/RepositoryDbContext.cs | 11 ++-- .../AppBuilderExtensions.cs | 2 +- .../SerialNumbersRepositories.cs | 53 ++++++++++++++++ 12 files changed, 259 insertions(+), 37 deletions(-) create mode 100644 src/WMS.Web.Domain/Entitys/SerialNumbers.cs create mode 100644 src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs create mode 100644 src/WMS.Web.Repositories/SerialNumbersRepositories.cs diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 8f565c32..5adfb75d 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -155,11 +155,6 @@ 数量(装箱数量) - - - 序列号集 - - 箱库存表头 @@ -1052,6 +1047,46 @@ 备注 + + + 序列号 + + + + + 主键 订单编号 + + + + + 序列号 + + + + + 物料ID + + + + + wms箱ID + + + + + 对应老OPS的箱ID + + + + + 创建人(老ops过来) + + + + + 创建时间(老ops过来) + + wms盘点单 @@ -1541,6 +1576,19 @@ + + + 序列号 + + + + + 批量添加 + + + + + 批量添加 diff --git a/src/WMS.Web.Core/Dto/OpsBoxResponse.cs b/src/WMS.Web.Core/Dto/OpsBoxResponse.cs index 2ee37dfc..6b61d1e2 100644 --- a/src/WMS.Web.Core/Dto/OpsBoxResponse.cs +++ b/src/WMS.Web.Core/Dto/OpsBoxResponse.cs @@ -62,7 +62,7 @@ namespace WMS.Web.Core.Dto /// 序列号生成时间 /// [JsonProperty("barCreateTime")] - public string BarCreateTime { get; set; } + public DateTime? BarCreateTime { get; set; } /// /// 序列号生成用户 /// diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs index c6492641..48ffea00 100644 --- a/src/WMS.Web.Domain/Entitys/Box.cs +++ b/src/WMS.Web.Domain/Entitys/Box.cs @@ -65,7 +65,7 @@ namespace WMS.Web.Domain.Entitys if (d == null) return Result.ReFailure(ResultCodes.BoxMateriaNoData); d.Qty = d.Qty - l.Qty; if (d.Qty <= 0) this.Details.Remove(d); - foreach (var s in l.SerialNumbers) d.SerialNumbers.Remove(s); + //foreach (var s in l.SerialNumbers) d.SerialNumbers.Remove(s); } return Result.ReSuccess(); } @@ -82,12 +82,12 @@ namespace WMS.Web.Domain.Entitys { MaterialId = l.MaterialId, Qty=l.Qty, - SerialNumbers=l.SerialNumbers + //SerialNumbers=l.SerialNumbers }); continue; } d.Qty = d.Qty + l.Qty; - d.SerialNumbers.AddRange(l.SerialNumbers); + //d.SerialNumbers.AddRange(l.SerialNumbers); } return Result.ReSuccess(); } diff --git a/src/WMS.Web.Domain/Entitys/BoxDetails.cs b/src/WMS.Web.Domain/Entitys/BoxDetails.cs index 027eac26..d2ee524d 100644 --- a/src/WMS.Web.Domain/Entitys/BoxDetails.cs +++ b/src/WMS.Web.Domain/Entitys/BoxDetails.cs @@ -31,9 +31,5 @@ namespace WMS.Web.Domain.Entitys /// 数量(装箱数量) /// public decimal Qty { get; set; } - /// - /// 序列号集 - /// - public List SerialNumbers { get; set; } = new List(); } } diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs new file mode 100644 index 00000000..ea55eecf --- /dev/null +++ b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text; +using WMS.Web.Core; + +namespace WMS.Web.Domain.Entitys +{ + /// + /// 序列号 + /// + [Serializable] + [Table("t_wms_serialnumbers")] + public class SerialNumbers : EntityBase + { + public SerialNumbers() { } + public SerialNumbers(string serialNumber,int materialId,int boxId,int opsBoxId,string creator,DateTime? createTime) + { + this.SerialNumber = serialNumber; + this.MaterialId = materialId; + this.BoxId = boxId; + this.OpsBoxId = opsBoxId; + this.Creator = creator; + this.CreateTime = createTime == null ? DateTime.Now : (DateTime)createTime; + } + /// + /// 主键 订单编号 + /// + [Column("Id")] + public override int Id { get; set; } + /// + /// 序列号 + /// + [Column("SerialNumber")] + public string SerialNumber { get; set; } + /// + /// 物料ID + /// + [Column("MaterialId")] + public int MaterialId { get; set; } + /// + /// wms箱ID + /// + [Column("BoxId")] + public int BoxId { get; set; } + /// + /// 对应老OPS的箱ID + /// + [Column("OpsBoxId")] + public int OpsBoxId { get; set; } + /// + /// 创建人(老ops过来) + /// + [Column("Creator")] + public string Creator { get; set; } + /// + /// 创建时间(老ops过来) + /// + [Column("CreateTime")] + public DateTime CreateTime { get; set; } = DateTime.Now; + } +} diff --git a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs new file mode 100644 index 00000000..201841ca --- /dev/null +++ b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Domain.Entitys; + +namespace WMS.Web.Domain.Infrastructure +{ + /// + /// 序列号 + /// + public interface ISerialNumbersRepositories + { + /// + /// 批量添加 + /// + /// + /// + /// + Task AddRange(List entitys, bool isTransaction = true); + } +} diff --git a/src/WMS.Web.Domain/Mappers/BoxMapper.cs b/src/WMS.Web.Domain/Mappers/BoxMapper.cs index 5c1114c7..adcf20db 100644 --- a/src/WMS.Web.Domain/Mappers/BoxMapper.cs +++ b/src/WMS.Web.Domain/Mappers/BoxMapper.cs @@ -19,8 +19,8 @@ namespace WMS.Web.Domain.Mappers CreateMap(); CreateMap(); - CreateMap() - .ForPath(x => x.SerialNumbers, ops => ops.MapFrom(x => x.SerialNumbers.Select(s=>s.SerialNumber).ToList())); + CreateMap(); + } } } diff --git a/src/WMS.Web.Domain/Services/BoxService.cs b/src/WMS.Web.Domain/Services/BoxService.cs index e08f2c1f..605dc4ea 100644 --- a/src/WMS.Web.Domain/Services/BoxService.cs +++ b/src/WMS.Web.Domain/Services/BoxService.cs @@ -27,11 +27,13 @@ namespace WMS.Web.Domain.Services private readonly IOpsService _opsService; private readonly ISerialNumberOperateRepositories _serialNumberOperateRepositories; private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories; + private readonly ISerialNumbersRepositories _serialNumbersRepositories; public BoxService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, IBoxRepositories boxRepositories, IOpsService opsService, ISerialNumberOperateRepositories serialNumberOperateRepositories, - IErpOpsSyncDateRepositories erpOpsSyncDateRepositories) + IErpOpsSyncDateRepositories erpOpsSyncDateRepositories, + ISerialNumbersRepositories serialNumbersRepositories) { _mapper = mapper; _loginService = loginService; @@ -40,6 +42,7 @@ namespace WMS.Web.Domain.Services _opsService = opsService; _serialNumberOperateRepositories = serialNumberOperateRepositories; _erpOpsSyncDateRepositories = erpOpsSyncDateRepositories; + _serialNumbersRepositories = serialNumbersRepositories; } public async Task Sync() @@ -57,25 +60,39 @@ namespace WMS.Web.Domain.Services } var boxs = _mapper.Map>(list); - //需要添加序列号记录表 - List sList = new List(); - foreach (var b in boxs) - { - foreach (var sn in b.Details.SelectMany(s => s.SerialNumbers)) - { - SerialNumberOperate s = new SerialNumberOperate(sn, SerialNumberOperateType.Generate, b.CreateUser, "", b.SupplierId, b.OrgId, null, b.CreateTime); - sList.Add(s); - } - } - IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); bool isRollback = false; bool isSuccess = true; //批量添加 isSuccess = await _boxRepositories.AddRange(boxs, false); if (!isSuccess) isRollback = true; + #region 序列号和序列号记录 因为要得到wsm插入数据库后生成Id + //需要添加序列号表和记录 + List soList = new List(); + List sList = new List(); + foreach (var b in boxs) + { + var ops_box = list.FirstOrDefault(f => f.OpsBoxId == b.OpsBoxId); + foreach (var sn in ops_box.Details.SelectMany(s => s.SerialNumbers)) + { + var detail = ops_box.Details.FirstOrDefault(f => f.SerialNumbers.Select(s=>s.SerialNumber).Equals(sn.SerialNumber)); + var opsSerial = list.FirstOrDefault(f => f.OpsBoxId == b.OpsBoxId).Details + .SelectMany(s => s.SerialNumbers) + .FirstOrDefault(s => s.SerialNumber.Equals(sn.SerialNumber)); + //序列号 + SerialNumbers s = new SerialNumbers(sn.SerialNumber, detail.MaterialId,b.Id,b.OpsBoxId, opsSerial.BarCereateUser,opsSerial.BarCreateTime); + sList.Add(s); + //序列号记录 + SerialNumberOperate so = new SerialNumberOperate(sn.SerialNumber, SerialNumberOperateType.Generate, opsSerial.BarCereateUser, "", b.SupplierId, b.OrgId, null, opsSerial.BarCreateTime); + soList.Add(so); + } + } + #endregion + //序列号 + isSuccess = await _serialNumbersRepositories.AddRange(sList, false); + if (!isSuccess) isRollback = true; //序列号操作记录 - var res = await this.SerialNumberOperate(sList, false); + var res = await this.SerialNumberOperate(soList, false); if (!res.Success) isRollback = true; //更新时间管理 isSuccess = await _erpOpsSyncDateRepositories.Edit(ErpOpsSyncType.Ops, false); diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs index 110cb16a..c592c179 100644 --- a/src/WMS.Web.Repositories/BoxRepositories.cs +++ b/src/WMS.Web.Repositories/BoxRepositories.cs @@ -27,9 +27,12 @@ namespace WMS.Web.Repositories private readonly ISingleDataService _singleDataService; private readonly ILoginRepositories _loginRepositories; private readonly IBasicsRepositories _basicsRepositories; - + private readonly IErpBasicDataExtendService _erpBasicDataExtendService; + private readonly IErpService _erpService; public BoxRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider, - ISingleDataService singleDataService, ILoginRepositories loginRepositories, IBasicsRepositories basicsRepositories) + ISingleDataService singleDataService, ILoginRepositories loginRepositories, + IBasicsRepositories basicsRepositories, IErpBasicDataExtendService erpBasicDataExtendService, + IErpService erpServic) { _context = context; _mapper = mapper; @@ -37,6 +40,8 @@ namespace WMS.Web.Repositories _singleDataService = singleDataService; _loginRepositories = loginRepositories; _basicsRepositories = basicsRepositories; + _erpBasicDataExtendService = erpBasicDataExtendService; + _erpService = erpServic; } public async Task Get(int id) { @@ -54,11 +59,27 @@ namespace WMS.Web.Repositories { var list = await _context.Box.Include(x => x.Details).Where(f => BoxBillNos.Contains(f.BoxBillNo)).ToListAsync(); var resList = _mapper.Map>(list); - + + var materials_result = await _erpService.BillQueryForMaterial(); + if (!materials_result.IsSuccess) + return new List(); + var materials = materials_result.Data.ToList(); + + var ids = list.Select(s => s.Id).ToList(); + //获取所有序列号 + var serialList = await _context.SerialNumbers.Where(f => ids.Contains(f.BoxId)).ToListAsync(); + //获取物料信息 显示物料三件套 var mIds = list.SelectMany(s => s.Details).Select(s => s.MaterialId).ToList(); foreach (var r in resList) { + foreach (var detail in r.Details) + { + detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, detail.MaterialId); + detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, detail.MaterialId); + detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, detail.MaterialId); + detail.SerialNumbers = serialList.Where(w => w.BoxId == r.Id && w.MaterialId == detail.MaterialId).Select(s => s.SerialNumber).ToList(); + } r.TotalQty = r.Details.Sum(s => s.Qty); } return resList; @@ -111,7 +132,7 @@ namespace WMS.Web.Repositories public async Task> GetByNos(List billNos) { return await _context.Box - .Where(w => billNos.Contains(w.BoxBillNo)).Select(s=>s.BoxBillNo).ToListAsync(); + .Where(w => billNos.Contains(w.BoxBillNo)).Select(s => s.BoxBillNo).ToListAsync(); } public async Task AddRange(List entitys, bool isTransaction = true) diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index 248e7e4b..3b92baaa 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -49,6 +49,12 @@ namespace WMS.Web.Repositories.Configuration ent.HasKey(x => x.Id); }); + //序列号 + builder.Entity(ent => + { + ent.ToTable("t_wms_serialnumbers"); + ent.HasKey(x => x.Id); + }); //序列号操作记录 builder.Entity(ent => { @@ -226,10 +232,6 @@ namespace WMS.Web.Repositories.Configuration { ent.ToTable("t_ops_box_details"); ent.HasKey(x => x.Id); - - ent.Property(f => f.SerialNumbers).HasConversion( - v => JsonConvert.SerializeObject(v), - v => JsonConvert.DeserializeObject>(v)); }); #endregion @@ -238,6 +240,7 @@ namespace WMS.Web.Repositories.Configuration base.OnModelCreating(builder); } + public DbSet SerialNumbers { get; set; } public DbSet ErpOpsSyncDate { get; set; } public DbSet SerialNumberOperate { get; set; } public DbSet ChangeBoxRecord { get; set; } diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs index 5ea91160..4ed35dbb 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs @@ -46,7 +46,7 @@ namespace Microsoft.Extensions.DependencyInjection services.AddTransient(); - + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs new file mode 100644 index 00000000..b9c5cf21 --- /dev/null +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -0,0 +1,53 @@ +using AutoMapper; +using Microsoft.EntityFrameworkCore.Storage; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Domain.Entitys; +using WMS.Web.Domain.Infrastructure; +using WMS.Web.Repositories.Configuration; + +namespace WMS.Web.Repositories +{ + /// + /// 序列号 + /// + public class SerialNumbersRepositories: ISerialNumbersRepositories + { + private readonly IMapper _mapper; + private readonly IServiceProvider _serviceProvider; + private readonly RepositoryDbContext _context; + + public SerialNumbersRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider) + { + _context = context; + _mapper = mapper; + _serviceProvider = serviceProvider; + } + + 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.SerialNumbers.AddRangeAsync(entitys); + await _context.SaveChangesAsync(); + } + if (_transaction != null) + _transaction.Commit(); + return true; + } + catch (Exception ex) + { + if (_transaction != null) + _transaction.Rollback(); + return false; + } + } + } +} From 54e09cb273711803cbf43fff4b95e454c767b6fe Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Sat, 11 Nov 2023 13:44:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/SysConfigController.cs | 23 +++++- src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 7 ++ src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 36 +++++++- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 16 ++++ src/WMS.Web.Core/Dto/OpsBoxResponse.cs | 4 +- src/WMS.Web.Core/Dto/SerialNumbersResponse.cs | 33 ++++++++ src/WMS.Web.Domain/Entitys/SerialNumbers.cs | 10 +++ .../ISerialNumbersRepositories.cs | 7 ++ .../SerialNumbersRepositories.cs | 82 ++++++++++++++++++- 9 files changed, 210 insertions(+), 8 deletions(-) create mode 100644 src/WMS.Web.Core/Dto/SerialNumbersResponse.cs diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index d9a4086f..fb8a2235 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -32,14 +32,17 @@ namespace WMS.Web.Api.Controllers private readonly IBoxRepositories _boxRepositories; private readonly IErpService _erpService; private readonly ISingleDataService _singleDataService; + private readonly ISerialNumbersRepositories _serialNumbersRepositories; public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories, - IBoxRepositories boxRepositories, IErpService erpService, ISingleDataService singleDataService) + IBoxRepositories boxRepositories, IErpService erpService, ISingleDataService singleDataService, + ISerialNumbersRepositories serialNumbersRepositories) { _loginService = loginService; _basicsRepositories = basicsRepositories; _boxRepositories = boxRepositories; _erpService = erpService; _singleDataService = singleDataService; + _serialNumbersRepositories = serialNumbersRepositories; } /// @@ -254,5 +257,23 @@ namespace WMS.Web.Api.Controllers return ResultList.ReSuccess(res); } + + /// + /// 根据序列号搜索信息-PDA + /// + /// 必填 + /// + [HttpGet] + [Route("GetSerialNumber/{serialNumber}")] + public async Task> GetSerialNumbers([FromRoute] string serialNumber) + { + 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 _serialNumbersRepositories.GetSerialNumber(serialNumber); + + 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 f48ca27e..a6143f36 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -366,6 +366,13 @@ 必填 + + + 根据序列号搜索信息-PDA + + 必填 + + 盘点单 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 10091524..4bb85e65 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -2665,17 +2665,17 @@ 明细 - + 序列号 - + 序列号生成时间 - + 序列号生成用户 @@ -3120,6 +3120,36 @@ 每页条数 不传默认每页10 条 + + + 序列号信息 + + + + + 序列号 + + + + + 物料ID + + + + + 物料名称 + + + + + 物料编码 + + + + + 物料规格型号 + + 名称请求对象 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 5adfb75d..587af63c 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1087,6 +1087,16 @@ 创建时间(老ops过来) + + + 出库单号 + + + + + 入库单号/采购单号 + + wms盘点单 @@ -1589,6 +1599,12 @@ + + 查询实体集合 + + + 修改实体集合 + 批量添加 diff --git a/src/WMS.Web.Core/Dto/OpsBoxResponse.cs b/src/WMS.Web.Core/Dto/OpsBoxResponse.cs index 6b61d1e2..106d7d77 100644 --- a/src/WMS.Web.Core/Dto/OpsBoxResponse.cs +++ b/src/WMS.Web.Core/Dto/OpsBoxResponse.cs @@ -51,7 +51,7 @@ namespace WMS.Web.Core.Dto [JsonProperty("BoxReturnDetails")] public List Details { get; set; } = new List(); } - public class SerialNumbersResponse + public class OpsSerialNumbersResponse { /// /// 序列号 @@ -85,6 +85,6 @@ namespace WMS.Web.Core.Dto /// 序列号集 /// [JsonProperty("SerialNumbers")] - public List SerialNumbers { get; set; } = new List(); + public List SerialNumbers { get; set; } = new List(); } } diff --git a/src/WMS.Web.Core/Dto/SerialNumbersResponse.cs b/src/WMS.Web.Core/Dto/SerialNumbersResponse.cs new file mode 100644 index 00000000..b16a76af --- /dev/null +++ b/src/WMS.Web.Core/Dto/SerialNumbersResponse.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto +{ + /// + /// 序列号信息 + /// + public class SerialNumbersResponse + { + /// + /// 序列号 + /// + public string SerialNumber { get; set; } + /// + /// 物料ID + /// + public int MaterialId { get; set; } + /// + /// 物料名称 + /// + public string MaterialName { get; set; } + /// + /// 物料编码 + /// + public string MaterialNumber { get; set; } + /// + /// 物料规格型号 + /// + public string Specifications { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs index ea55eecf..cedf8169 100644 --- a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs +++ b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs @@ -58,5 +58,15 @@ namespace WMS.Web.Domain.Entitys /// [Column("CreateTime")] public DateTime CreateTime { get; set; } = DateTime.Now; + /// + /// 出库单号 + /// + [Column("OutStockBillNo")] + public string OutStockBillNo { get; set; } + /// + /// 入库单号/采购单号 + /// + [Column("InStockBillNo")] + public string InStockBillNo { get; set; } } } diff --git a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs index 201841ca..7ede98ee 100644 --- a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core.Dto; using WMS.Web.Domain.Entitys; namespace WMS.Web.Domain.Infrastructure @@ -18,5 +19,11 @@ namespace WMS.Web.Domain.Infrastructure /// /// Task AddRange(List entitys, bool isTransaction = true); + //根据序列号模糊搜索信息 + Task GetSerialNumber(string serialNumber); + /// 查询实体集合 + Task> GetEntityList(List serialNumbers); + /// 修改实体集合 + Task EditEntityList(List entitys, bool isTransaction = true); } } diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs index b9c5cf21..a0e97928 100644 --- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -1,11 +1,17 @@ using AutoMapper; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; +using System.Linq; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core.Dto; +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 @@ -13,17 +19,22 @@ namespace WMS.Web.Repositories /// /// 序列号 /// - public class SerialNumbersRepositories: ISerialNumbersRepositories + public class SerialNumbersRepositories : ISerialNumbersRepositories { private readonly IMapper _mapper; private readonly IServiceProvider _serviceProvider; private readonly RepositoryDbContext _context; + private readonly IErpService _erpService; + private readonly IErpBasicDataExtendService _erpBasicDataExtendService; - public SerialNumbersRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider) + public SerialNumbersRepositories(RepositoryDbContext context, IMapper mapper, + IServiceProvider serviceProvider, IErpService erpService, IErpBasicDataExtendService erpBasicDataExtendService) { _context = context; _mapper = mapper; _serviceProvider = serviceProvider; + _erpService = erpService; + _erpBasicDataExtendService = erpBasicDataExtendService; } public async Task AddRange(List entitys, bool isTransaction = true) @@ -49,5 +60,72 @@ namespace WMS.Web.Repositories return false; } } + /// + /// 批量修改 + /// + /// + /// + /// + public async Task EditEntityList(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.SerialNumbers + .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; + } + /// + /// 根据序列号查询 + /// + /// + /// + public async Task> GetEntityList(List serialNumbers) + { + var res = await _context.SerialNumbers + .Where(f => serialNumbers.Contains(f.SerialNumber)) + .ToListAsync(); + + return res.Clone(); + } + + /// + /// 根据序列号 + /// + /// + /// + public async Task GetSerialNumber(string serialNumber) + { + SerialNumbersResponse response = new SerialNumbersResponse(); + var materials_result = await _erpService.BillQueryForMaterial(); + if (!materials_result.IsSuccess) + return response; + var materials = materials_result.Data.ToList(); + + var entity = await _context.SerialNumbers.FirstOrDefaultAsync(w => serialNumber.Equals(w.SerialNumber)); + response.SerialNumber = entity.SerialNumber; + response.MaterialId = entity.MaterialId; + response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.MaterialId); + response.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, entity.MaterialId); + response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.MaterialId); + return new SerialNumbersResponse(); + } } }