diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 833ecde6..8f305c70 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 7db1622b..ab53050c 100644 --- a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs @@ -204,5 +204,20 @@ namespace WMS.Web.Api.Controllers //再刷新3天内所有的 return await _outStockTaskService.Sync(null, begin); } + /// + /// 出库任务单详情 + /// + /// + /// + [HttpGet] + [Route("GetInfo/{id}")] + public async Task> GetInfo([FromRoute] int id) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result.ReFailure(ResultCodes.Token_Invalid_Error); + + return await _outStockTaskService.GetInfo(id, loginInfo); + } } } diff --git a/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs b/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs index 595067d6..4d729e39 100644 --- a/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs +++ b/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs @@ -128,5 +128,23 @@ namespace WMS.Web.Api.Controllers if (!res) Result.ReFailure(ResultCodes.DateWriteError); return Result.ReSuccess(); } + + /// + /// 获取详情 + /// + /// + /// + [HttpGet] + [Route("GetInfo/{id}")] + public async Task> GetInfo([FromRoute] int id) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result.ReFailure(ResultCodes.Token_Invalid_Error); + + var entity = await _repositories.Get(id); + if (entity == null || entity.IsDelete == true) Result.ReFailure(ResultCodes.SubscribeNotificationNoData); + return Result.ReSuccess(_mapper.Map(entity)); + } } } diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index 4077980a..8a5003ec 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -275,7 +275,7 @@ namespace WMS.Web.Api.Controllers } /// - /// 获取出库单客户下拉列表 + /// 获取客户下拉列表(包含组织信息) /// /// 客户名 /// @@ -308,7 +308,33 @@ namespace WMS.Web.Api.Controllers }); } - return Result>.ReSuccess(pullList); + return Result>.ReSuccess(pullList.Take(20).ToList()); + } + /// + /// 获取客户下拉列表(纯客户信息 不包含组织信息) + /// + /// 客户名 + /// + [HttpGet] + [Route("GetCustomersNoOrg/{name}")] + public async Task>> GetCustomersNoOrg([FromRoute] string name) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result>.ReFailure(ResultCodes.Token_Invalid_Error); + var customers = await _erpService.BillQueryForCustomer(); + + List pullList = new List(); + foreach (var c in customers.Data.Where(w => w.Name.Contains(name))) + { + pullList.Add(new PullDownStrResponse() + { + Id = c.Id.ToString(), + Name = c.Name, + Code = c.Number + }); + } + return Result>.ReSuccess(pullList.Take(20).ToList()); } /// @@ -459,10 +485,11 @@ namespace WMS.Web.Api.Controllers /// /// 序列号或规格型号或物料编码 /// 组织编码 + /// 是否需要支持老ops条码查询 /// [HttpGet] [Route("GetMaterial")] - public async Task> GetMaterial([FromQuery] string serialNumber, [FromQuery] string orgCode = null) + public async Task> GetMaterial([FromQuery] string serialNumber, [FromQuery] string orgCode = null, [FromQuery] bool IsOps = false) { var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); if (loginInfo == null || loginInfo.UserInfo == null) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 43380d37..483669d1 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -499,6 +499,13 @@ + + + 出库任务单详情 + + + + 获取序列号信息 @@ -539,6 +546,13 @@ + + + 获取详情 + + + + 系统配置 @@ -593,7 +607,14 @@ - 获取出库单客户下拉列表 + 获取客户下拉列表(包含组织信息) + + 客户名 + + + + + 获取客户下拉列表(纯客户信息 不包含组织信息) 客户名 @@ -641,12 +662,13 @@ 必填 - + 根据序列号或规格型号,物料编码搜索物料信息-PDA 序列号或规格型号或物料编码 组织编码 + 是否需要支持老ops条码查询 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 9b3c988c..b23e6bce 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -4664,6 +4664,106 @@ 单号 + + + 出库任务单对应出库明细 + + + + + 物料编码 + + + + + 物料规格型号 + + + + + 箱号 + + + + + 序列号 + + + + + 出库数量 + + + + + 应出库数量 + + + + + 出库方式 + + + + + 出库人 + + + + + 出库时间 + + + + + 出库任务单详情 + + + + + 主键 + + + + + 单据编号 + + + + + 来源单号 + + + + + 发货组织 + + + + + 客户 + + + + + 单据状态 + + + + + 单据类型 + + + + + 创建时间(erp那边的创建时间) + + + + + 出库箱信息 + + 出库单任务列表 @@ -5399,6 +5499,36 @@ 邮件 + + + 订阅通知详情 + + + + + 主键 + + + + + 客户名称 + + + + + 客户编码 + + + + + 电话 + + + + + 邮件 + + 订阅通知列表 @@ -5469,12 +5599,12 @@ 操作人 - + 操作时间 开始 - + 操作时间 结束 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 1168d252..ee8125c8 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -2088,6 +2088,76 @@ 出库单号 + + + 老ops序列码 + + + + + 主键 订单编号 + + + + + 序列号 + + + + + 物料编码 + + + + + wms箱ID + + + + + 对应老OPS的箱ID + + + + + 创建人(老ops过来) + + + + + 创建时间(老ops过来) + + + + + 完成装箱时间 + + + + + 出库单对应销售订单号 + + + + + 出库时间 + + + + + 采购单号 + + + + + 入库时间 + + + + + 收货客户 + + 订阅通知信息 @@ -3883,6 +3953,13 @@ + + + 查询出库任务单详情 + + + + 单点数据返回服务接口 @@ -4993,6 +5070,13 @@ + + + 获取出库任务单详情 + + + + 同步erp基础数据 diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs new file mode 100644 index 00000000..2b498e7f --- /dev/null +++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.OutStockTask +{ + /// + /// 出库任务单对应出库明细 + /// + public class OutStockTaskInfoDetailsResponse + { + /// + /// 物料编码 + /// + public string MaterialNumber { get; set; } + /// + /// 物料规格型号 + /// + public string Specifications { get; set; } + /// + /// 箱号 + /// + public string BoxBillNo { get; set; } + /// + /// 序列号 + /// + public string SerialNumbers { get; set; } + /// + /// 出库数量 + /// + public decimal Qty { get; set; } + /// + /// 应出库数量 + /// + public decimal AccruedQty { get; set; } + /// + /// 出库方式 + /// + public string Method { get; set; } + /// + /// 出库人 + /// + public string Creator { get; set; } + /// + /// 出库时间 + /// + public string CreateTime { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs new file mode 100644 index 00000000..ad0e17f6 --- /dev/null +++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.OutStockTask +{ + /// + /// 出库任务单详情 + /// + public class OutStockTaskInfoResponse + { + /// + /// 主键 + /// + public int Id { get; set; } + /// + /// 单据编号 + /// + public string BillNo { get; set; } + /// + /// 来源单号 + /// + public string SourceBillNo { get; set; } + /// + /// 发货组织 + /// + public string DeliveryOrg { get; set; } + /// + /// 客户 + /// + public string ReceiptCustomer { get; set; } + /// + /// 单据状态 + /// + public string Status { get; set; } + /// + /// 单据类型 + /// + public string Type { get; set; } + /// + /// 创建时间(erp那边的创建时间) + /// + public string CreateTime { get; set; } + /// + /// 出库箱信息 + /// + public List Details { get; set; } = new List(); + } +} diff --git a/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationInfoResponse.cs b/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationInfoResponse.cs new file mode 100644 index 00000000..43cd82e1 --- /dev/null +++ b/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationInfoResponse.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.SubscribeNotification +{ + /// + /// 订阅通知详情 + /// + public class SubscribeNotificationInfoResponse + { + /// + /// 主键 + /// + public int Id { get; set; } + /// + /// 客户名称 + /// + public string CustomerName { get; set; } + /// + /// 客户编码 + /// + public string CustomerNumber { get; set; } + /// + /// 电话 + /// + public string Telephones { get; set; } + /// + /// 邮件 + /// + public string Emails { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationQueryRequest.cs b/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationQueryRequest.cs index 6725892b..5cc936e2 100644 --- a/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationQueryRequest.cs +++ b/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationQueryRequest.cs @@ -24,10 +24,10 @@ namespace WMS.Web.Core.Dto.SubscribeNotification /// /// 操作时间 开始 /// - public DateTime? OperateBeginDate { get; set; } + public DateTime? CreateBeginDate { get; set; } /// /// 操作时间 结束 /// - public DateTime? OperateEndDate { get; set; } + public DateTime? CreateEndDate { get; set; } } } diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs new file mode 100644 index 00000000..5bea43c1 --- /dev/null +++ b/src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs @@ -0,0 +1,85 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using WMS.Web.Core; +using WMS.Web.Domain.Values; + +namespace WMS.Web.Domain.Entitys +{ + /// + /// 老ops序列码 + /// + [Serializable] + [Table("t_wms_serialnumbers_ops")] + public class SerialNumbers_Ops : EntityBase + { + /// + /// 主键 订单编号 + /// + [Column("Id")] + public override int Id { get; set; } + /// + /// 序列号 + /// + [Column("SerialNumber")] + public string SerialNumber { get; set; } + /// + /// 物料编码 + /// + [Column("MaterialNumber")] + public string MaterialNumber { 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; + /// + /// 完成装箱时间 + /// + [Column("CompleteCartonTime")] + public DateTime? CompleteCartonTime { get; set; } + /// + /// 出库单对应销售订单号 + /// + [Column("SalBillNo")] + public string SalBillNo { get; set; } + /// + /// 出库时间 + /// + [Column("OutStockTime")] + public DateTime? OutStockTime { get; set; } + /// + /// 采购单号 + /// + [Column("PurchaseBillNo")] + public string PurchaseBillNo { get; set; } + /// + /// 入库时间 + /// + [Column("InStockTime")] + public DateTime? InStockTime { get; set; } + /// + /// 收货客户 + /// + [Column("CustomerId")] + public int CustomerId { get; set; } = 0; + } +} diff --git a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs index 6e492436..fd1c1314 100644 --- a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs +++ b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using WMS.Web.Core.Dto; using WMS.Web.Core.Dto.Erp.OutStock; using WMS.Web.Core.Dto.Login; +using WMS.Web.Core.Dto.OutStockTask; using WMS.Web.Core.Internal.Results; namespace WMS.Web.Domain.IService.Public @@ -56,5 +57,11 @@ namespace WMS.Web.Domain.IService.Public /// /// Task Sync(List billNos = null,DateTime? begin=null); + /// + /// 查询出库任务单详情 + /// + /// + /// + Task> GetInfo(int id, LoginInDto loginInfo); } } diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs index cfdb13b6..308df288 100644 --- a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs @@ -15,7 +15,7 @@ namespace WMS.Web.Domain.Infrastructure //编辑 Task Edit(OutStock entity, bool isTransaction = true); //根据任务单Id搜索 - Task GetByTaskId(int taskId); + Task> GetByTaskId(int taskId); // 获取列表 Task<(List list, int total)> GetListAsync(OutStockQueryRequest dto, int companyId = 0); /// 查询实体集合 diff --git a/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs b/src/WMS.Web.Domain/Infrastructure/ISerialNumbersRepositories.cs index 06d285a9..6574dd2b 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); + Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false); //根据序列号搜索信息 Task Get(string serialNumber); /// 查询实体集合 diff --git a/src/WMS.Web.Domain/Mappers/SerialNumbersMapper.cs b/src/WMS.Web.Domain/Mappers/SerialNumbersMapper.cs new file mode 100644 index 00000000..660f05b7 --- /dev/null +++ b/src/WMS.Web.Domain/Mappers/SerialNumbersMapper.cs @@ -0,0 +1,16 @@ +using AutoMapper; +using System; +using System.Collections.Generic; +using System.Text; +using WMS.Web.Domain.Entitys; + +namespace WMS.Web.Domain.Mappers +{ + public class SerialNumbersMapper : Profile + { + public SerialNumbersMapper() + { + CreateMap().ReverseMap(); + } + } +} diff --git a/src/WMS.Web.Domain/Mappers/SubscribeNotificationMapper.cs b/src/WMS.Web.Domain/Mappers/SubscribeNotificationMapper.cs index 13bcc485..213128e6 100644 --- a/src/WMS.Web.Domain/Mappers/SubscribeNotificationMapper.cs +++ b/src/WMS.Web.Domain/Mappers/SubscribeNotificationMapper.cs @@ -17,6 +17,11 @@ namespace WMS.Web.Domain.Mappers CreateMap(); CreateMap(); CreateMap(); + CreateMap() + .ForMember(x => x.Emails, ops => ops.MapFrom(x => string.Join(",", x.Emails))) + .ForMember(x => x.Telephones, ops => ops.MapFrom(x => string.Join(",", x.Telephones))); + + } } } diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index 9ce7c40e..ef38c481 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -5,9 +5,14 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core; using WMS.Web.Core.Dto; +using WMS.Web.Core.Dto.Erp; +using WMS.Web.Core.Dto.Erp.Customer; +using WMS.Web.Core.Dto.Erp.Org; using WMS.Web.Core.Dto.Erp.OutStock; using WMS.Web.Core.Dto.Login; +using WMS.Web.Core.Dto.OutStockTask; using WMS.Web.Core.Help; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Entitys; @@ -16,6 +21,7 @@ using WMS.Web.Domain.IService; using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.Services.Public; using WMS.Web.Domain.Values; +using WMS.Web.Domain.Values.Single; namespace WMS.Web.Domain.Services { @@ -32,10 +38,13 @@ namespace WMS.Web.Domain.Services private readonly IOutStockTaskRepositories _outStockTaskRepositories; private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories; private readonly RedisClientService _redisClientService; + private readonly IErpBasicDataExtendService _erpBasicDataExtendService; + private readonly ISingleDataService _singleDataService; public OutStockTaskService(IMapper mapper, IErpService erpService, ILoginService loginService, IBasicsRepositories transactionRepositories, IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories, IErpOpsSyncDateRepositories erpOpsSyncDateRepositories, - RedisClientService redisClientService) + RedisClientService redisClientService, IErpBasicDataExtendService erpBasicDataExtendService, + ISingleDataService singleDataService) { _mapper = mapper; _erpService = erpService; @@ -45,6 +54,8 @@ namespace WMS.Web.Domain.Services _outStockTaskRepositories = outStockTaskRepositories; _erpOpsSyncDateRepositories = erpOpsSyncDateRepositories; _redisClientService = redisClientService; + _erpBasicDataExtendService = erpBasicDataExtendService; + _singleDataService = singleDataService; } /// @@ -435,6 +446,70 @@ namespace WMS.Web.Domain.Services return Result.ReSuccess(); } + /// + /// 获取出库任务单详情 + /// + /// + /// + public async Task> GetInfo(int id, LoginInDto loginInfo) + { + var entity = await _outStockTaskRepositories.Get(id); + if (entity == null) + return Result.ReFailure(ResultCodes.OutStockTaskNoData); + //获取任务单对应出库信息 + var outStockList = await _outStockRepositories.GetByTaskId(id); + //取组织 + var org_result = await _erpService.BillQueryForOrg(); + List orgs = new List(); + if (org_result.IsSuccess) + orgs = org_result.Data.ToList(); + + //取客户 + var customer_result = await _erpService.BillQueryForCustomer(); + List customers = new List(); + if (customer_result.IsSuccess) + customers = customer_result.Data.ToList(); + + var materials_result = await _erpService.BillQueryForMaterial(); + List materials = new List(); + if (materials_result.IsSuccess) + materials = materials_result.Data.ToList(); + + OutStockTaskInfoResponse response = new OutStockTaskInfoResponse() + { + Id = entity.Id, + BillNo = entity.BillNo, + SourceBillNo = string.Join(",", entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo)), + CreateTime = entity.CreateTime.DateToStringSeconds(), + Status = entity.Status.GetRemark(), + Type = entity.Type.GetRemark(), + DeliveryOrg = _erpBasicDataExtendService.GetOrgName(orgs, entity.DeliveryOrgId), + ReceiptCustomer = entity.Type == OutStockType.Sal + ? _erpBasicDataExtendService.GetCustomerName(customers, entity.ReceiptCustomerId) + : _erpBasicDataExtendService.GetOrgName(orgs, entity.DeliveryOrgId), + }; + var details = outStockList.SelectMany(s => s.Details).ToList(); + var boxDetails = outStockList.SelectMany(s => s.Details).SelectMany(s => s.BoxsDetails).ToList(); + foreach (var b in boxDetails) + { + var detail = details.FirstOrDefault(f => f.Id == b.DetailId); + var outStock = outStockList.FirstOrDefault(f => f.Id == detail.Fid); + OutStockTaskInfoDetailsResponse infoDetail = new OutStockTaskInfoDetailsResponse() + { + BoxBillNo = b.BoxId.ToString(), + Qty = b.Qty, + SerialNumbers = string.Join(",", b.SerialNumbers), + Method = outStock.Method.GetRemark(), + Creator = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, outStock.CreatorId), + CreateTime = outStock.CreateTime.DateToStringSeconds(), + MaterialNumber = detail.MaterialNumber, + Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, detail.MaterialNumber), + AccruedQty = entity.Details.FirstOrDefault(f => f.MaterialNumber == detail.MaterialNumber)?.AccruedQty ?? 0 + }; + } + + return Result.ReSuccess(response); + } } } diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index 790d539d..c75ef90a 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -66,18 +66,26 @@ namespace WMS.Web.Repositories.Configuration v => JsonConvert.DeserializeObject>(v)); }); + #region 序列号 //序列号 builder.Entity(ent => { ent.ToTable("t_wms_serialnumbers"); ent.HasKey(x => x.Id); }); + //序列号 + builder.Entity(ent => + { + ent.ToTable("t_wms_serialnumbers_ops"); + ent.HasKey(x => x.Id); + }); //序列号操作记录 builder.Entity(ent => { ent.ToTable("t_wms_serialnumberoperate"); ent.HasKey(x => x.Id); }); + #endregion //定时任务时间记录表 builder.Entity(ent => @@ -397,6 +405,7 @@ namespace WMS.Web.Repositories.Configuration public DbSet BoxMark { get; set; } public DbSet FileDownManager { get; set; } public DbSet SerialNumbers { get; set; } + public DbSet SerialNumbers_Ops { get; set; } public DbSet ErpOpsSyncDate { get; set; } public DbSet SerialNumberOperate { get; set; } public DbSet ChangeBoxRecord { get; set; } diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index 85d5cbcd..e1a3107f 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -306,12 +306,12 @@ namespace WMS.Web.Repositories /// /// /// - public async Task GetByTaskId(int taskId) + public async Task> GetByTaskId(int taskId) { var res = await _context.OutStock .Include(s => s.Details).ThenInclude(s => s.ErpDetails) .Include(s => s.Details).ThenInclude(s => s.BoxsDetails) - .FirstOrDefaultAsync(f => taskId == f.TaskId); + .Where(f => taskId == f.TaskId).ToListAsync(); return res.Clone(); } diff --git a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs index 48b9d444..52e3ab3c 100644 --- a/src/WMS.Web.Repositories/SerialNumbersRepositories.cs +++ b/src/WMS.Web.Repositories/SerialNumbersRepositories.cs @@ -81,6 +81,16 @@ namespace WMS.Web.Repositories var res = await _context.SerialNumbers .Where(f => list.Contains(f.Id)).ToListAsync(); + var ids_e = res.Select(s => s.Id).ToList(); + //在序列表里没找到的序列码 则到老ops序列码数据里去处理 list比较 取差集 + var ids_c = list.Except(ids_e); + if (ids_c.Count() > 0) + { + var entitys_ops = entitys.Where(w => ids_c.Contains(w.Id)).ToList(); + var res_ops = await EditEntityList_Ops(entitys_ops, false); + if (!res_ops) return false; + } + _mapper.ToMapList(entitys, res); await _context.SaveChangesAsync(); @@ -178,7 +188,7 @@ namespace WMS.Web.Repositories /// /// /// - public async Task GetSerialNumber(string serialNumber, string orgCode) + public async Task GetSerialNumber(string serialNumber, string orgCode, bool IsOps = false) { MaterialResponse response = new MaterialResponse(); var materials_result = await _erpService.BillQueryForMaterial(); @@ -203,6 +213,46 @@ namespace WMS.Web.Repositories .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)); + if (entity == null || entity.serial == null) + { + if (IsOps) + return await GetSerialNumber_Ops(serialNumber); + else + return null; + } + response.BoxId = entity.serial.BoxId; + response.BoxBillNo = entity?.box?.BoxBillNo ?? ""; + response.SubStockCode = entity?.boxInventory?.SubStockCode ?? ""; + response.SerialNumber = entity.serial.SerialNumber; + response.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, entity.serial.MaterialNumber); + response.MaterialNumber = entity.serial.MaterialNumber; + response.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, entity.serial.MaterialNumber); + if (entity.boxInventory != null) + response.IsBoxInventory = entity.boxInventory.Details.SelectMany(s => s.SerialNumbers).Where(w => serialNumber.Equals(w)).Count() >= 1 ? true : false; + + + return response; + } + + /// + /// 查询老ops序列码 + /// + /// + /// + private async Task GetSerialNumber_Ops(string serialNumber) + { + MaterialResponse response = new MaterialResponse(); + var materials_result = await _erpService.BillQueryForMaterial(); + if (!materials_result.IsSuccess) + return response; + var materials = materials_result.Data.ToList(); + + var entity = await _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.serial.SerialNumber)); if (entity == null || entity.serial == null) return null; response.BoxId = entity.serial.BoxId; response.BoxBillNo = entity?.box?.BoxBillNo ?? ""; @@ -217,5 +267,39 @@ namespace WMS.Web.Repositories return response; } + /// + /// 老ops条码批量修改 + /// + /// + /// + /// + private async Task EditEntityList_Ops(List entitys, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + try + { + var opsList = _mapper.Map>(entitys); + + List list = opsList.Select(s => s.Id).ToList(); + + var res = await _context.SerialNumbers_Ops + .Where(f => list.Contains(f.Id)).ToListAsync(); + + _mapper.ToMapList(opsList, res); + + await _context.SaveChangesAsync(); + if (_transaction != null) + _transaction.Commit(); + } + catch (Exception ex) + { + if (_transaction != null) + _transaction.Rollback(); + return false; + } + return true; + } } } diff --git a/src/WMS.Web.Repositories/SubscribeNotificationRepositories.cs b/src/WMS.Web.Repositories/SubscribeNotificationRepositories.cs index 796e34ce..4c43be6c 100644 --- a/src/WMS.Web.Repositories/SubscribeNotificationRepositories.cs +++ b/src/WMS.Web.Repositories/SubscribeNotificationRepositories.cs @@ -184,10 +184,10 @@ namespace WMS.Web.Repositories query = query.Where(w => EF.Functions.Like(w.CustomerName, "%" + dto.CustomerName + "%")); if (!string.IsNullOrEmpty(dto.CustomerNumber)) query = query.Where(w => EF.Functions.Like(w.CustomerNumber, "%" + dto.CustomerNumber + "%")); - if (dto.OperateBeginDate != null) - query = query.Where(w => w.OperateTime >= dto.OperateBeginDate); - if (dto.OperateEndDate != null) - query = query.Where(w => w.OperateTime <= dto.OperateEndDate); + if (dto.CreateBeginDate != null) + query = query.Where(w => w.OperateTime >= dto.CreateBeginDate); + if (dto.CreateEndDate != null) + query = query.Where(w => w.OperateTime <= dto.CreateEndDate); //组装 int total = await query.CountAsync(); var list = await query.Select(s => new SubscribeNotificationQueryInfoResponse() @@ -196,8 +196,8 @@ namespace WMS.Web.Repositories Id = s.Id, CustomerName = s.CustomerName, CustomerNumber = s.CustomerNumber, - Telephones = s.CustomerName, - Emails = s.CustomerName, + Telephones = string.Join(",", s.Telephones), + Emails = string.Join(",", s.Emails), Operate = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.OperateId), OperateTime = s.OperateTime.DateToStringSeconds(), Creator = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.CreatorId),