diff --git a/src/WMS.Web.Api/Controllers/SerialNumberController.cs b/src/WMS.Web.Api/Controllers/SerialNumberController.cs new file mode 100644 index 00000000..05d33b8a --- /dev/null +++ b/src/WMS.Web.Api/Controllers/SerialNumberController.cs @@ -0,0 +1,50 @@ +using AutoMapper; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using WMS.Web.Core.Dto.SerialNumbers; +using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.Infrastructure; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Values; + +namespace WMS.Web.Api.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class SerialNumberController : ControllerBase + { + private readonly IMapper _mapper; + private readonly ILoginService _loginService; + private readonly ISerialNumbersRepositories _serialNumbersRepositories; + public SerialNumberController(IMapper mapper, ILoginService loginService, ISerialNumbersRepositories serialNumbersRepositories) + { + _mapper = mapper; + _loginService = loginService; + _serialNumbersRepositories = serialNumbersRepositories; + } + + /// + /// 获取序列号信息 + /// + /// 序列号 + /// + [HttpGet] + [Route("Get/{serialNumber}")] + public async Task> Get([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); + if (string.IsNullOrEmpty(serialNumber)) + return Result.ReFailure(ResultCodes.SerialNumbersNoData); + + var serial = await _serialNumbersRepositories.Get(serialNumber); + if (serial == null)return Result.ReFailure(ResultCodes.SerialNumbersNoData); + return Result.ReSuccess(serial); + } + } +} diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 18297c0d..9b767d07 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -430,6 +430,13 @@ + + + 获取序列号信息 + + 序列号 + + 系统配置 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 33b3daaa..7e18e7bc 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -4241,6 +4241,66 @@ 每页条数 不传默认每页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 e8c249c3..4e6e7330 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1566,17 +1566,37 @@ 创建时间(老ops过来) - + - 出库单号 + 完成装箱时间 - + + + 出库单对应销售订单号 + + + + + 出库时间 + + + - 入库单号/采购单号 + 采购单号 - + + + 入库时间 + + + + + 收货客户 + + + 操作(绑定箱信息) @@ -1587,7 +1607,7 @@ 解绑 - + 出库 diff --git a/src/WMS.Web.Core/Dto/SerialNumbers/SerialNumbersResponse.cs b/src/WMS.Web.Core/Dto/SerialNumbers/SerialNumbersResponse.cs new file mode 100644 index 00000000..31e3044f --- /dev/null +++ b/src/WMS.Web.Core/Dto/SerialNumbers/SerialNumbersResponse.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.SerialNumbers +{ + /// + /// 序列号信息 + /// + public class SerialNumbersResponse + { + /// + /// 序列号 + /// + public string SerialNumber { get; set; } + /// + /// 物料名称 + /// + public string MaterialName { get; set; } + /// + /// 物料编码 + /// + public string MaterialNumber { get; set; } + /// + /// 物料规格型号 + /// + public string Specifications { get; set; } + /// + /// 完成装箱时间 + /// + public DateTime? CompleteCartonTime { get; set; } + /// + /// 出库单对应销售订单号 + /// + public string SalBillNo { get; set; } + /// + /// 出库时间 + /// + public string OutStockTime { get; set; } + /// + /// 生产单号 + /// + public string ProduceBillNo { get; set; } + /// + /// 采购单号 + /// + public string PurchaseBillNo { get; set; } + /// + /// 入库时间 + /// + public string InStockTime { get; set; } + /// + /// 收货客户 + /// + public string Customer { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs index 810dddd6..60711f1a 100644 --- a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs +++ b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs @@ -15,7 +15,7 @@ namespace WMS.Web.Domain.Entitys public class SerialNumbers : EntityBase { public SerialNumbers() { } - public SerialNumbers(string serialNumber, int materialId, int boxId, int opsBoxId, string creator, DateTime? createTime) + public SerialNumbers(string serialNumber, int materialId, int boxId, int opsBoxId, string creator, DateTime? createTime,DateTime? completeCartonTime) { this.SerialNumber = serialNumber; this.MaterialId = materialId; @@ -23,6 +23,7 @@ namespace WMS.Web.Domain.Entitys this.OpsBoxId = opsBoxId; this.Creator = creator; this.CreateTime = createTime == null ? DateTime.Now : (DateTime)createTime; + this.CompleteCartonTime = completeCartonTime; } /// /// 主键 订单编号 @@ -60,23 +61,44 @@ namespace WMS.Web.Domain.Entitys [Column("CreateTime")] public DateTime CreateTime { get; set; } = DateTime.Now; /// - /// 出库单号 + /// 完成装箱时间 /// - [Column("OutStockBillNo")] - public string OutStockBillNo { get; set; } + [Column("CompleteCartonTime")] + public DateTime? CompleteCartonTime { get; set; } /// - /// 入库单号/采购单号 + /// 出库单对应销售订单号 + /// + [Column("SalBillNo")] + public string SalBillNo { get; set; } + /// + /// 出库时间 + /// + [Column("OutStockTime")] + public DateTime? OutStockTime { get; set; } + /// + /// 采购单号 /// - [Column("InStockBillNo")] - public string InStockBillNo { get; set; } + [Column("PurchaseBillNo")] + public string PurchaseBillNo { get; set; } + /// + /// 入库时间 + /// + [Column("InStockTime")] + public DateTime? InStockTime { get; set; } + /// + /// 收货客户 + /// + [Column("CustomerId")] + public int CustomerId { get; set; } = 0; /// /// 操作(绑定箱信息) /// /// 目标箱号 - public void Bind(int destBoxId) + public void Bind(int destBoxId,DateTime completeCartonTime) { this.BoxId = destBoxId; + this.CompleteCartonTime = completeCartonTime; } /// /// 解绑 @@ -89,11 +111,15 @@ namespace WMS.Web.Domain.Entitys /// 出库 /// /// 出库单号 - public void OutStock(string outStockBillNo, OutStockType type) + public void OutStock(string outStockBillNo, OutStockType type,int customerId) { this.BoxId = 0; if (type == OutStockType.Sal) - this.OutStockBillNo = outStockBillNo; + { + this.SalBillNo = outStockBillNo; + this.CustomerId = customerId; + this.OutStockTime = DateTime.Now; + } } /// /// 入库 @@ -102,7 +128,10 @@ namespace WMS.Web.Domain.Entitys public void InStock(string inStockBillNo, InstockType type) { if (type == InstockType.Purchase) - this.InStockBillNo = inStockBillNo; + { + this.PurchaseBillNo = inStockBillNo; + this.InStockTime = DateTime.Now; + } } } } diff --git a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs index 42ac023b..d9e44233 100644 --- a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using WMS.Web.Core.Dto; +using WMS.Web.Core.Dto.SerialNumbers; using WMS.Web.Domain.Entitys; namespace WMS.Web.Domain.Infrastructure @@ -21,6 +22,8 @@ namespace WMS.Web.Domain.Infrastructure Task AddRange(List entitys, bool isTransaction = true); //根据序列号模糊搜索信息 Task GetSerialNumber(string serialNumber); + //根据序列号搜索信息 + Task Get(string serialNumber); /// 查询实体集合 Task> GetEntityList(List serialNumbers); /// 根据箱Id查询集合 diff --git a/src/WMS.Web.Domain/Services/BoxService.cs b/src/WMS.Web.Domain/Services/BoxService.cs index 7eb5eb2f..6488100e 100644 --- a/src/WMS.Web.Domain/Services/BoxService.cs +++ b/src/WMS.Web.Domain/Services/BoxService.cs @@ -87,7 +87,7 @@ namespace WMS.Web.Domain.Services .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); + SerialNumbers s = new SerialNumbers(sn.SerialNumber, detail.MaterialId, b.Id, b.OpsBoxId, opsSerial.BarCereateUser, opsSerial.BarCreateTime, b.CompleteCartonTime); sList.Add(s); //序列号记录(序列号生成) SerialNumberOperate so = new SerialNumberOperate(sn.SerialNumber, SerialNumberOperateType.Generate, detail.MaterialId, opsSerial.BarCereateUser, "", b.SupplierId, b.OrgId, null, opsSerial.BarCreateTime); diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index c4662eb2..59679a91 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -60,10 +60,11 @@ namespace WMS.Web.Domain.Services foreach (var entity in entityList) { var destBox = changeBoxRecords.FirstOrDefault(f => f.SerialNumbers.Contains(entity.SerialNumber)); - //修改序列号和箱绑定关系 - entity.Bind(destBox.DestBoxId); - var box = boxList.FirstOrDefault(f => f.Id == destBox.DestBoxId); + //修改序列号和箱绑定关系 + entity.Bind(destBox.DestBoxId, box.CompleteCartonTime); + + //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() { @@ -193,7 +194,7 @@ namespace WMS.Web.Domain.Services var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId); if (outstockDetail == null) continue; //修改序列号和箱绑定关系 - entity.OutStock(outStock.BillNo, outStock.Type); + entity.OutStock(outStock.BillNo, outStock.Type, outStock.ReceiptCustomerId); //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() @@ -321,7 +322,7 @@ namespace WMS.Web.Domain.Services var instockDetail = inStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId); var subStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, instockDetail.SubStockId); //修改序列号和箱绑定关系 - entity.InStock(inStock.BillNo, inStock.Type); + entity.InStock(instockDetail.SourceBillNo, inStock.Type); //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() @@ -386,7 +387,7 @@ namespace WMS.Web.Domain.Services //if (backRecord.Type == BackRecordType.InstockOff) // entity.UnBind(); if (backRecord.Type == BackRecordType.OutstockOn) - entity.Bind(detail.BoxId); + entity.Bind(detail.BoxId,box.CompleteCartonTime); //记录序列号操作日志 diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index e06cb916..2213e828 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -66,6 +66,6 @@ namespace WMS.Web.Domain.Values public static ValueTuple InventoryInOutDetailsWriteError = (800014, "写入物料收发明细失败!"); public static ValueTuple InventoryDetailsWriteError = (800014, "写入即时库存明细失败!"); - + public static ValueTuple SerialNumbersNoData = (610000, "序列号不存在"); } } diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs index 2d169fdc..da0a01e4 100644 --- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WMS.Web.Core.Dto; +using WMS.Web.Core.Dto.SerialNumbers; using WMS.Web.Core.Help; using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Infrastructure; @@ -91,6 +92,42 @@ namespace WMS.Web.Repositories } return true; } + /// + /// 根据序列号搜索信息 + /// + /// + /// + public async Task Get(string serialNumber) + { + var materials_result = await _erpService.BillQueryForMaterial(); + if (!materials_result.IsSuccess) + return null; + var materials = materials_result.Data.ToList(); + + var customer_result = await _erpService.BillQueryForCustomer(); + if (!customer_result.IsSuccess) + return null; + var customers = customer_result.Data.ToList(); + + var s = await _context.SerialNumbers + .FirstOrDefaultAsync(f => serialNumber.Equals(f.SerialNumber)); + if (s == null) return null; + SerialNumbersResponse respone = new SerialNumbersResponse() + { + MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.MaterialId), + MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, s.MaterialId), + Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.MaterialId), + CompleteCartonTime = s.CompleteCartonTime, + InStockTime = s.InStockTime.DateToStringSeconds(), + OutStockTime = s.OutStockTime.DateToStringSeconds(), + PurchaseBillNo = s.PurchaseBillNo, + SalBillNo = s.SalBillNo, + Customer = _erpBasicDataExtendService.GetCustomerName(customers, s.CustomerId), + SerialNumber = s.SerialNumber + }; + return respone; + } + /// /// 根据序列号查询 ///