diff --git a/src/BarCode.Web.Api/Controllers/SerialNumberController.cs b/src/BarCode.Web.Api/Controllers/SerialNumberController.cs index 5053cb3..b735796 100644 --- a/src/BarCode.Web.Api/Controllers/SerialNumberController.cs +++ b/src/BarCode.Web.Api/Controllers/SerialNumberController.cs @@ -167,11 +167,20 @@ namespace BarCode.Web.Api.Controllers string fileName = FileDownLoadOrderType.SerialNumberInfo.GetRemark() + DateTime.Now.DateToStringSecondsNoSpace() + ".xlsx"; string res = _option.Url + fileName; - Task.Run(async () => + if (dto.isTwo == 2) { - await _exportExcelService.ExportList(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumberInfo, orgCode); - }); - + Task.Run(async () => + { + await _exportExcelService.ExportList(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumberInfo, orgCode); + }); + } + else + { + Task.Run(async () => + { + await _exportExcelService.ExportList(dto, fileName, loginInfo.UserInfo.UcId, loginInfo, FileDownLoadOrderType.SerialNumberInfo, orgCode); + }); + } return Task.FromResult(Result.ReSuccess(res)); } /// diff --git a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml index 299bfba..e00a6a9 100644 --- a/src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml +++ b/src/BarCode.Web.Api/wwwroot/BarCode.Web.Core.xml @@ -3034,6 +3034,126 @@ 第二个序列号 + + + 物料编码 + + + + + 物料名称 + + + + + 物料规格型号 + + + + + 转换前规格型号 + + + + + 物料条码 + + + + + 序列码 + + + + + 序列码2 + + + + + 数字序列码 + + + + + 数字序列码2 + + + + + 序列码流水号 + + + + + 序列码流水号2 + + + + + 数量 + + + + + 是否使用 + + + + + 是否使用 + + + + + 箱号 + + + + + 创建人 + + + + + 生成时间 + + + + + 打印次数 + + + + + 下载次数 + + + + + 最新打印时间 + + + + + 最新下载时间 + + + + + 是否允许打印(序列码已经被使用 但没有箱号,那么就是被wms系统拉去使用了,不能再被打印) + + + + + 是否为两件装,为了控制后面的变动,设为整数形,0和1看作1,2代表2件装,3代表三件装 alter by yzh + + + + + 第二个序列号 + + 序列号列表搜索请求参数 diff --git a/src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumberInfoResponse.cs b/src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumberInfoResponse.cs index 1483c83..d1b92d0 100644 --- a/src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumberInfoResponse.cs +++ b/src/BarCode.Web.Core/Dto/SerialNumbers/SerialNumberInfoResponse.cs @@ -122,6 +122,140 @@ namespace BarCode.Web.Core.Dto.SerialNumbers } + public class SerialNumberInfoResponse2 + { + /// + /// 物料编码 + /// + [Column("物料编码")] + public string MaterialNumber { get; set; } = string.Empty; + /// + /// 物料名称 + /// + [Column("名称")] + public string MaterialName { get; set; } = string.Empty; + /// + /// 物料规格型号 + /// + [Column("规格型号")] + public string Specifications { get; set; } = string.Empty; + /// + /// 转换前规格型号 + /// + [Column("转换前规格型号")] + public string Old_Specifications { get; set; } = string.Empty; + /// + /// 物料条码 + /// + [Column("条码")] + public string BarCode { get; set; } = string.Empty; + /// + /// 序列码 + /// + [Column("序列码")] + public string SerialNumber { get; set; } = string.Empty; + + /// + /// 序列码2 + /// + [Column("序列码2")] + public string SerialNumber2 { get; set; } = string.Empty; + + /// + /// 数字序列码 + /// + [Column("数字序列码")] + public string NumberCode { get; set; } = string.Empty; + + /// + /// 数字序列码2 + /// + [Column("数字序列码2")] + public string NumberCode2 { get; set; } = string.Empty; + + /// + /// 序列码流水号 + /// + [Column("序号")] + public long Id { get; set; } + + + /// + /// 序列码流水号2 + /// + [Column("序号2")] + public long Id2 { get; set; } + /// + /// 数量 + /// + [Column("数量")] + public int Number { get; set; } = 0; + /// + /// 是否使用 + /// + [Ignore] + public bool IsUse { get; set; } = false; + /// + /// 是否使用 + /// + [Column("是否使用")] + public string IsUseStr { get; set; } = ""; + /// + /// 箱号 + /// + [Column("所在箱号")] + public string Box { get; set; } = string.Empty; + /// + /// 创建人 + /// + [Ignore] + public string Creator { get; set; } = string.Empty; + /// + /// 生成时间 + /// + [Column("生成时间")] + public string CreateTime { get; set; } = string.Empty; + /// + /// 打印次数 + /// + [Column("打印次数")] + public int PrintNumber { get; set; } = 0; + /// + /// 下载次数 + /// + [Column("下载次数")] + public int DownLoadNumber { get; set; } = 0; + /// + /// 最新打印时间 + /// + [Column("最近打印时间")] + public string PrintTime { get; set; } = string.Empty; + /// + /// 最新下载时间 + /// + [Column("最近下载时间")] + public string DownLoadTime { get; set; } = string.Empty; + /// + /// 是否允许打印(序列码已经被使用 但没有箱号,那么就是被wms系统拉去使用了,不能再被打印) + /// + [Ignore] + public bool IsEnablePrint { get; set; } = true; + + /// + /// 是否为两件装,为了控制后面的变动,设为整数形,0和1看作1,2代表2件装,3代表三件装 alter by yzh + /// + [Ignore] + public int IsTwo { get; set; } = 1; + /// + /// 第二个序列号 + /// + [Ignore] + public string TwoSerialNumber { get; set; } = string.Empty; + + } + + + /// /// 序列号列表搜索返回参数 /// diff --git a/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs b/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs index 58e238a..d652365 100644 --- a/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/BarCode.Web.Repositories/SerialNumbersRepositories.cs @@ -371,6 +371,146 @@ namespace BarCode.Web.Repositories return (list, total); } + + /// + /// 列表2 + /// + /// + /// + /// + public async Task<(List list, int total)> GetListAsync2(SerialNumberQueryRequest dto, LoginInDto loginInfo) + { + int companyId = loginInfo.UserInfo.CompanyId; + List mNumber = new List(); + var materials_result = await _erpService.BillQueryForMaterial(); + List materials = new List(); + if (materials_result.IsSuccess) + materials = materials_result.Data.ToList(); + + //var queery2= _context.ser + + var query = _context.SerialNumbers.AsNoTracking() + .GroupJoin(_context.Box, serial => serial.BoxId, box => box.Id, (serial, box) => new { serial, box }) + .SelectMany(x => x.box.DefaultIfEmpty(), (p, box) => new { p.serial, box }) + .GroupJoin(_context.SerialNumberGenerateRecord, s => s.serial.GenerateRecordId, sg => sg.Id, (serial, sg) => new { serial.serial, serial.box, sg }) + .SelectMany(x => x.sg.DefaultIfEmpty(), (p, sg) => new { p.serial, p.box, sg }) + .OrderByDescending(o => o.serial.Id) + .Where(f => dto.GenerateRecordId == f.serial.GenerateRecordId && f.serial.SuitNumber==f.serial.SerialNumber); + if (loginInfo.UserInfo.IsAdmin != true && !string.IsNullOrEmpty(dto.OrgCode)) + { + var rec_type = dto.OrgCode.Substring(0, 1); + var rec_code = dto.OrgCode.Substring(2, dto.OrgCode.Length - 2); + + if (rec_type.Equals("s"))//供应商 + query = query.Where(w => rec_code == w.serial.SupplierCode); + else//查其他单据(组织) + query = query.Where(w => rec_code == w.serial.OrgCode); + } + if (dto.IsPrint != null) + query = query.Where(w => dto.IsPrint == true ? w.serial.PrintNumber > 0 : w.serial.PrintNumber <= 0); + if (dto.IsUse != null) + query = query.Where(w => w.serial.IsUse == dto.IsUse); + if (dto.SerialNumbers != null && dto.SerialNumbers.Count() > 0) + query = query.Where(w => dto.SerialNumbers.Contains(w.serial.SerialNumber)); + if (dto.NumberCodes != null && dto.NumberCodes.Count() > 0) + query = query.Where(w => dto.NumberCodes.Contains(w.serial.NumberCode)); + if (!string.IsNullOrEmpty(dto.BoxBillNo)) + query = query.Where(w => w.box.BoxBillNo.Equals(dto.BoxBillNo)); + if (dto.SerialNumberBegin != null && dto.SerialNumberBegin != 0) + { + if (dto.SerialNumberEnd != null && dto.SerialNumberEnd != 0) + query = query.Where(w => w.serial.Id >= dto.SerialNumberBegin); + else + query = query.Where(w => w.serial.Id == dto.SerialNumberBegin); + } + if (dto.SerialNumberEnd != null && dto.SerialNumberEnd != 0) + { + if (dto.SerialNumberBegin != null && dto.SerialNumberBegin != 0) + query = query.Where(w => w.serial.Id <= dto.SerialNumberEnd); + else + query = query.Where(w => w.serial.Id == dto.SerialNumberEnd); + } + //V01.05.00: 数字序列号区间查询 + if (!string.IsNullOrEmpty(dto.NumberCodeBegin)) + { + int number = Convert.ToInt32(dto.NumberCodeBegin.Substring(6, dto.NumberCodeBegin.Length - 6)); + if (!string.IsNullOrEmpty(dto.NumberCodeEnd)) + query = query.Where(w => w.serial.Number >= number); + else + query = query.Where(w => w.serial.Number == number); + } + if (!string.IsNullOrEmpty(dto.NumberCodeEnd)) + { + int number = Convert.ToInt32(dto.NumberCodeEnd.Substring(6, dto.NumberCodeEnd.Length - 6)); + if (!string.IsNullOrEmpty(dto.NumberCodeBegin)) + query = query.Where(w => w.serial.Number <= number); + else + query = query.Where(w => w.serial.Number == number); + } + + + if (dto.DownLoadBeginDate != null) + query = query.Where(w => w.serial.DownLoadTime >= dto.DownLoadBeginDate); + if (dto.DownLoadEndDate != null) + { + DateTime dt_end = ((DateTime)dto.DownLoadEndDate).AddDays(1); + query = query.Where(w => w.serial.DownLoadTime <= dt_end); + } + if (dto.PrintBeginDate != null) + query = query.Where(w => w.serial.PrintTime >= dto.PrintBeginDate); + if (dto.PrintEndDate != null) + { + DateTime dt_end = ((DateTime)dto.PrintEndDate).AddDays(1); + query = query.Where(w => w.serial.PrintTime <= dt_end); + } + if (dto.IsUpdateMaterial != null) + { + if (dto.IsUpdateMaterial == true) + query = query.Where(w => !string.IsNullOrEmpty(w.serial.Old_MaterialNumber)); + else + query = query.Where(w => string.IsNullOrEmpty(w.serial.Old_MaterialNumber)); + } + + + if (dto.isTwo > 1)//是否为两件装,如果大于1说明为两件装 + { + query = query.Where(w => w.serial.IsTwo > 1); + } + + + int total = await query.CountAsync(); + var list = await query.Select(s => new SerialNumberInfoResponse2() + { + Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.serial.MaterialNumber), + Old_Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.serial.Old_MaterialNumber == null ? "" : s.serial.Old_MaterialNumber), + MaterialNumber = s.serial.MaterialNumber, + MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.serial.MaterialNumber), + BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.serial.MaterialNumber), + SerialNumber = s.serial.SerialNumber, + SerialNumber2 = s.serial.SerialNumber, + NumberCode = s.serial.NumberCode, + NumberCode2 = s.serial.NumberCode, + Number = s.sg == null ? 0 : s.sg.Number, + Id = s.serial.Id, + Id2 = s.serial.Id, + IsUse = s.serial.IsUse, + IsUseStr = s.serial.IsUse == true ? "是" : "否", + //序列码已经被使用 但没有箱号,那么就是被wms系统拉去使用了,不能再被打印 + IsEnablePrint = (s.serial.BoxId <= 0 && s.serial.IsUse == true) ? false : true, + Box = s.box == null ? "" : s.box.BoxBillNo, + Creator = _singleDataService.GetSingleData(SingleAction.Users, companyId, s.serial.CreatorId), + CreateTime = s.serial.CreateTime.DateToStringSeconds(), + PrintNumber = s.serial.PrintNumber, + DownLoadNumber = s.serial.DownLoadNumber, + DownLoadTime = s.serial.DownLoadTime.DateToStringSeconds(), + PrintTime = s.serial.PrintTime.DateToStringSeconds(), + IsTwo = s.serial.IsTwo, + TwoSerialNumber = s.serial.TwoSerialNumber.Replace(s.serial.SerialNumber, "").Replace(",", "") + }).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); + return (list, total); + } + + /// /// 导出列表 /// @@ -686,8 +826,27 @@ namespace BarCode.Web.Repositories /// public async Task<(object obj, int total)> GetListField(SerialNumberQueryRequest dto, LoginInDto loginInfo) { - return await GetListAsync(dto, loginInfo); + if (dto.isTwo == 2) + { + return await GetListAsync2(dto, loginInfo); + } + else + { + return await GetListAsync(dto, loginInfo); + } } + + ///// + ///// 两件装条码列表导出 + ///// + ///// + ///// + ///// + //public async Task<(object obj, int total)> GetListField2(SerialNumberQueryRequest dto, LoginInDto loginInfo) + //{ + // return await GetListAsync2(dto, loginInfo); + //} + /// /// 根据箱Id获取序列码 ///