diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 3f0ac29f..c4cc0ca1 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/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index 1fcf9347..2b517e8e 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -489,17 +489,18 @@ namespace WMS.Web.Api.Controllers /// 序列号或规格型号或物料编码 /// 组织编码 /// 是否需要支持老ops条码查询 + /// 出库回退上架 true 其他false或不传 /// [HttpGet] [Route("GetMaterial")] - public async Task> GetMaterial([FromQuery] string serialNumber, [FromQuery] string orgCode = null, [FromQuery] bool IsOps = false) + public async Task> GetMaterial([FromQuery] string serialNumber, [FromQuery] string orgCode = null, [FromQuery] bool IsOps = false, [FromQuery] bool IsIncludeDelete = false) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) return Result.ReFailure(ResultCodes.Token_Invalid_Error); _logger.LogInformation($"请求序列号信息:{serialNumber} 组织:{orgCode}"); - var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode,IsOps); + var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode,IsOps, IsIncludeDelete); if (res == null) return Result.ReFailure(ResultCodes.MateriaNoData); _logger.LogInformation($"请求序列号信息结果:{res.MaterialNumber}"); diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 76086fa6..cfb253b0 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -670,13 +670,14 @@ 必填 - + 根据序列号或规格型号,物料编码搜索物料信息-PDA 序列号或规格型号或物料编码 组织编码 是否需要支持老ops条码查询 + 出库回退上架 true 其他false或不传 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index eb50a7fb..64256bad 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -2117,9 +2117,9 @@ 收货客户 - + - 是否出库 + 是否删除 @@ -2145,6 +2145,24 @@ 出库单号 + + + 移箱 + + + + + + 出入库回退 + + + + + + + 盘点 + + 老ops序列码 @@ -2215,7 +2233,7 @@ 收货客户 - + 是否出库 diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs index f9d4f4ea..db93541f 100644 --- a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs +++ b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs @@ -93,10 +93,10 @@ namespace WMS.Web.Domain.Entitys [Column("CustomerId")] public int CustomerId { get; set; } = 0; /// - /// 是否出库 + /// 是否删除 /// - [Column("IsOutStock")] - public bool? IsOutStock { get; set; } = false; + [Column("IsDelete")] + public bool? IsDelete { get; set; } = false; /// /// 操作(绑定箱信息) @@ -132,7 +132,7 @@ namespace WMS.Web.Domain.Entitys this.OutStockTime = DateTime.Now; } //标识出库 - this.IsOutStock = true; + this.IsDelete = true; } /// /// 入库 @@ -146,5 +146,44 @@ namespace WMS.Web.Domain.Entitys this.InStockTime = DateTime.Now; } } + /// + /// 移箱 + /// + /// + public void MoveBox(MoveBoxType type) + { + //拣货出库, 整箱移货下架, 入库回退下架---- 序列号状态失效 + //盘点, 整箱移货上架, 出库回退上架----序列号正常可用 + this.IsDelete = type == MoveBoxType.Up ? false : true; + } + + /// + /// 出入库回退 + /// + /// + /// + public void BackRecord(BackRecordType type, int boxId) + { + //拣货出库, 整箱移货下架, 入库回退下架---- 序列号状态失效 + //盘点, 整箱移货上架, 出库回退上架----序列号正常可用 + if (BackRecordType.OutstockOn == type) + { + this.BoxId = boxId; + this.IsDelete = false; + } + else + this.IsDelete = true; + } + /// + /// 盘点 + /// + public void TakeStock(int boxId) + { + //拣货出库, 整箱移货下架, 入库回退下架---- 序列号状态失效 + //盘点, 整箱移货上架, 出库回退上架----序列号正常可用 + this.BoxId = boxId; + this.IsDelete = false; + } + } } diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs index b58de8f2..6f9ed9b5 100644 --- a/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs +++ b/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs @@ -84,7 +84,7 @@ namespace WMS.Web.Domain.Entitys /// /// 是否出库 /// - [Column("IsOutStock")] - public bool? IsOutStock { get; set; } = false; + [Column("IsDelete")] + public bool? IsDelete { get; set; } = false; } } diff --git a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs index 6574dd2b..8ccbbf66 100644 --- a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs @@ -21,7 +21,7 @@ namespace WMS.Web.Domain.Infrastructure /// Task AddRange(List entitys, bool isTransaction = true); //根据序列号模糊搜索信息 - Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false); + Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, bool IsIncludeDelete = false); //根据序列号搜索信息 Task Get(string serialNumber); /// 查询实体集合 diff --git a/src/WMS.Web.Domain/Mappers/BoxMapper.cs b/src/WMS.Web.Domain/Mappers/BoxMapper.cs index bb8d777b..91ec5bab 100644 --- a/src/WMS.Web.Domain/Mappers/BoxMapper.cs +++ b/src/WMS.Web.Domain/Mappers/BoxMapper.cs @@ -16,8 +16,7 @@ namespace WMS.Web.Domain.Mappers { public BoxMapper() { - CreateMap(); - CreateMap(); + CreateMap(); CreateMap(); diff --git a/src/WMS.Web.Domain/Mappers/SerialNumbersMapper.cs b/src/WMS.Web.Domain/Mappers/SerialNumbersMapper.cs index 660f05b7..b282b4b7 100644 --- a/src/WMS.Web.Domain/Mappers/SerialNumbersMapper.cs +++ b/src/WMS.Web.Domain/Mappers/SerialNumbersMapper.cs @@ -10,7 +10,10 @@ namespace WMS.Web.Domain.Mappers { public SerialNumbersMapper() { + CreateMap(); + CreateMap(); CreateMap().ReverseMap(); + CreateMap(); } } } diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index e12bc08a..70218b5b 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -130,7 +130,7 @@ namespace WMS.Web.Domain.Services var moveBoxRecord = moveBoxRecords.FirstOrDefault(f => f.BoxId == entity.BoxId); //修改序列号和箱绑定关系 //entity.Bind(moveBoxRecord.BoxId); - + entity.MoveBox(moveBoxRecord.Type); //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() { @@ -392,11 +392,13 @@ namespace WMS.Web.Domain.Services if (box == null) continue; //if (backRecord.Type == BackRecordType.InstockOff) // entity.UnBind(); - if (backRecord.Type == BackRecordType.OutstockOn) - { - entity.Bind(detail.BoxId, box.CompleteCartonTime); - entity.IsOutStock = false;//标识出库状态 - } + + entity.BackRecord(backRecord.Type, detail.BoxId); + //if (backRecord.Type == BackRecordType.OutstockOn) + //{ + // entity.Bind(detail.BoxId, box.CompleteCartonTime); + // entity.IsDelete = false;//解冻 + //} //记录序列号操作日志 @@ -477,8 +479,8 @@ namespace WMS.Web.Domain.Services } else { + s_entity.TakeStock(takeStockDetail.BoxId); if (s_entity.BoxId == takeStockDetail.BoxId) continue; - s_entity.BoxId = takeStockDetail.BoxId; var takeStock = takeStocks.FirstOrDefault(w => w.Details.FirstOrDefault(w => w.SerialNumbers.Contains(s)) != null); //记录序列号操作日志 diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs index b2cc4aae..64afbc15 100644 --- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -224,7 +224,7 @@ namespace WMS.Web.Repositories /// /// /// - public async Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false) + public async Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false, bool IsIncludeDelete = false) { MaterialResponse response = new MaterialResponse(); var materials_result = await _erpService.BillQueryForMaterial(); @@ -243,16 +243,18 @@ namespace WMS.Web.Repositories response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, material.MaterialNumber); return response; } - var entity = await _context.SerialNumbers + var res = _context.SerialNumbers .GroupJoin(_context.BoxInventory.Include(x => x.Details), serial => serial.BoxId, boxInventory => boxInventory.BoxId, (serial, boxInventory) => new { serial, boxInventory }) .SelectMany(x => x.boxInventory.DefaultIfEmpty(), (p, boxInventory) => new { p.serial, boxInventory }) .GroupJoin(_context.Box, s => s.serial.BoxId, box => box.Id, (s, box) => new { s.serial, s.boxInventory, box }) .SelectMany(x => x.box.DefaultIfEmpty(), (p, box) => new { p.serial, p.boxInventory, box }) - .FirstOrDefaultAsync(w => serialNumber.Equals(w.serial.SerialNumber) && w.serial.IsOutStock != true); + .Where(w => serialNumber.Equals(w.serial.SerialNumber)); + if (IsIncludeDelete == false) res = res.Where(w => w.serial.IsDelete != true); + var entity = await res.FirstOrDefaultAsync(); if (entity == null || entity.serial == null) { if (IsOps) - return await GetSerialNumber_Ops(serialNumber); + return await GetSerialNumber_Ops(serialNumber, IsIncludeDelete); else return null; } @@ -276,7 +278,7 @@ namespace WMS.Web.Repositories /// /// /// - private async Task GetSerialNumber_Ops(string serialNumber) + private async Task GetSerialNumber_Ops(string serialNumber, bool IsIncludeDelete = false) { MaterialResponse response = new MaterialResponse(); var materials_result = await _erpService.BillQueryForMaterial(); @@ -284,12 +286,14 @@ namespace WMS.Web.Repositories return response; var materials = materials_result.Data.ToList(); - var entity = await _context.SerialNumbers_Ops + var res = _context.SerialNumbers_Ops //.GroupJoin(_context.BoxInventory.Include(x => x.Details), serial => serial.BoxId, boxInventory => boxInventory.BoxId, (serial, boxInventory) => new { serial, boxInventory }) //.SelectMany(x => x.boxInventory.DefaultIfEmpty(), (p, boxInventory) => new { p.serial, boxInventory }) //.GroupJoin(_context.Box, s => s.serial.BoxId, box => box.Id, (s, box) => new { s.serial, s.boxInventory, box }) //.SelectMany(x => x.box.DefaultIfEmpty(), (p, box) => new { p.serial, p.boxInventory, box }) - .FirstOrDefaultAsync(w => serialNumber.Equals(w.SerialNumber) && w.IsOutStock != true); + .Where(w => serialNumber.Equals(w.SerialNumber)); + if (IsIncludeDelete == false) res = res.Where(w => w.IsDelete != true); + var entity = await res.FirstOrDefaultAsync(); if (entity == null) return null; response.IsOldOps = true; response.IsBoxInventory = true;//如果是老ops序列号 默认有库存