From a1b1cdedbd7c42f8249af0f5dbe716c36e060efd Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 15 Nov 2023 11:48:17 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/SysConfigController.cs | 17 ++++++++ src/WMS.Web.Api/Controllers/TestController.cs | 43 ++++++++++++++++++- src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 7 +++ src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 5 +++ .../SaveChangeBoxRecordRequest.cs | 6 ++- .../Entitys/OutStockTaskDetails.cs | 8 ++-- src/WMS.Web.Domain/Values/ResultCodes.cs | 2 +- .../Configuration/RepositoryDbContext.cs | 4 +- .../OutStockTaskRepositories.cs | 4 +- 9 files changed, 85 insertions(+), 11 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index a21d58e3..11fc9559 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -263,6 +263,23 @@ namespace WMS.Web.Api.Controllers var r = await _basicsRepositories.GetSubUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), name, loginInfo.UserInfo.CompanyId); return Result>.ReSuccess(r); } + /// + /// 获取仓位:精确名字 + /// + /// 精确名字 + /// + [HttpGet] + [Route("GetSubUcStockPrecisionByName/{name}")] + public async Task> GetSubUcStockPrecisionByName([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 r = await _basicsRepositories.GetSubUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), name, loginInfo.UserInfo.CompanyId); + var subStock = r.FirstOrDefault(f => f.Name.Equals(name)); + if (subStock == null) return Result.ReFailure(ResultCodes.NoDateError); + return Result.ReSuccess(subStock); + } /// /// 根据箱号获取箱信息 diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index d7fe70d5..6eda2ea1 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -11,6 +11,7 @@ using System.ServiceModel; using System.Threading.Tasks; using WMS.Web.Core.Dto; using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService; using WMS.Web.Domain.IService.Public; @@ -26,21 +27,59 @@ namespace WMS.Web.Api.Controllers private IBasicsRepositories _transactionRepositories; private readonly IOpsService _opsService; private readonly IBoxService _boxService; + private readonly IOutStockTaskRepositories _outStockTaskRepositories; public TestController(IErpService erpService, IInStockTaskService inStockTaskService, - IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService) + IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, + IOutStockTaskRepositories outStockTaskRepositories) { this._erpService = erpService; this._inStockTaskService = inStockTaskService; this._transactionRepositories = transactionRepositories; _opsService = opsService; _boxService = boxService; + _outStockTaskRepositories = outStockTaskRepositories; } [HttpGet] [Route("hj")] public async Task TestHJ() { - await _boxService.Sync(); + OutStockTask entity = new OutStockTask() + { + DeliveryOrgId = 1, + ReceiptCustomerId = 1 + }; + try + { + var d = new OutStockTaskDetails(); + + d.MaterialId = 1; + d.AccruedQty = 1; + d.Erp_DetailId = 1; + d.SaleBillNo = "sdf34343"; + d.StockCode = "234"; + d.SubStockId =234; + d.SourceBillNos = new List() { "wwre", "32423" }; + entity.Details.Add(d); + } + catch (Exception ex) + { + + throw ex; + } + entity.Details.Add(new OutStockTaskDetails() + { + MaterialId = 1, + AccruedQty = 1, + Erp_DetailId = 1, + SaleBillNo = "ddddd", + StockCode = "ddd", + SubStockId = 1 + }); + + var b = await _outStockTaskRepositories.Add(entity, true); + var bc = await _outStockTaskRepositories.Get(entity.Id); + // await _boxService.Sync(); //var res = await this._erpService.BillQueryForDeliveryNoticeOutStock(null,DateTime.Now.AddDays(-300)); //var result= await this._erpService.BillQueryForPurchaseInStock(); //var result = await this._erpService.BillQueryForOrg(); diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 340125e2..47637cc6 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -433,6 +433,13 @@ 仓位名称模糊匹配 + + + 获取仓位:精确名字 + + 精确名字 + + 根据箱号获取箱信息 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index e938ddde..f8847c1d 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -410,6 +410,11 @@ 目标箱子ID + + + 明细 + + 明细 diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs index 5f2ceb76..fbb371c3 100644 --- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs +++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs @@ -19,8 +19,10 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord /// [Required(ErrorMessage = "目标箱子不能为空")] public int DestBoxId { get; set; } - - public List Details = new List(); + /// + /// 明细 + /// + public List Details { get; set; } = new List(); } /// /// 明细 diff --git a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs index d76d5f9c..bd145c26 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Text; @@ -13,7 +14,7 @@ namespace WMS.Web.Domain.Entitys /// [Serializable] [Table("t_erp_outstock_task_details")] - public class OutStockTaskDetails : EntityBase + public class OutStockTaskDetails : EntityBase { public OutStockTaskDetails() { } /// @@ -36,6 +37,7 @@ namespace WMS.Web.Domain.Entitys /// [Column("SourceBillNo")] public List SourceBillNos { get; set; } + /// /// 销售订单号 /// @@ -82,6 +84,6 @@ namespace WMS.Web.Domain.Entitys [Column("OutStockEndTime")] public DateTime? OutStockEndTime { get; set; } - + } } diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 4485a2f3..4a350ead 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -20,7 +20,7 @@ namespace WMS.Web.Domain.Values /// 数据操作失败 /// public static ValueTuple DateWriteError = (40004, "数据操作失败"); - + public static ValueTuple NoDateError = (40005, "数据不存在"); //出库任务单 public static ValueTuple MergeStatusError = (70000, "所选单据数据不一致,不能合并"); diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index fbbfe081..0d80b1fb 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -114,8 +114,8 @@ namespace WMS.Web.Repositories.Configuration ent.HasKey(x => x.Id); ent.Property(f => f.SourceBillNos).HasConversion( - v => JsonConvert.SerializeObject(v), - v => JsonConvert.DeserializeObject>(v)); + v => JsonConvert.SerializeObject(v), + v => JsonConvert.DeserializeObject>(v)); }); #endregion diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index e500f3ca..4e620696 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -263,7 +263,9 @@ namespace WMS.Web.Repositories if (dto.Ids.Count() > 0) query = query.Where(w => dto.Ids.Contains(w.detail.Id)); if (!string.IsNullOrEmpty(dto.SourceBillNo)) - query = query.Where(w => w.detail.SourceBillNos.Where(sw => EF.Functions.Like(sw, "%" + dto.SourceBillNo + "%")).Contains(w.order.BillNo)); + query = query.Where(w => w.detail.SourceBillNos.Contains(dto.SourceBillNo)); + //query = query.Where(w => EF.Functions.Like(w.detail.SourceBillNos, "%" + dto.SourceBillNo + "%")); + //query = query.Where(w => w.detail.SourceBillNos.Where(sw => EF.Functions.Like(sw, "%" + dto.SourceBillNo + "%")).Contains(w.order.BillNo)); if (dto.Type != null) query = query.Where(w => w.order.Type == (OutStockType)dto.Type); if (dto.Status != null) From 4fdb8b96d180598a5efde0a0a79a4cd2734425e2 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 15 Nov 2023 13:52:01 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/Controllers/TestController.cs | 35 ------------------- src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs | 6 ++-- .../DependencyInjection/AppBuilder.cs | 4 +-- .../OutStockTaskRepositories.cs | 21 +++++++---- 4 files changed, 20 insertions(+), 46 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index 6eda2ea1..0fdd219e 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -44,41 +44,6 @@ namespace WMS.Web.Api.Controllers [Route("hj")] public async Task TestHJ() { - OutStockTask entity = new OutStockTask() - { - DeliveryOrgId = 1, - ReceiptCustomerId = 1 - }; - try - { - var d = new OutStockTaskDetails(); - - d.MaterialId = 1; - d.AccruedQty = 1; - d.Erp_DetailId = 1; - d.SaleBillNo = "sdf34343"; - d.StockCode = "234"; - d.SubStockId =234; - d.SourceBillNos = new List() { "wwre", "32423" }; - entity.Details.Add(d); - } - catch (Exception ex) - { - - throw ex; - } - entity.Details.Add(new OutStockTaskDetails() - { - MaterialId = 1, - AccruedQty = 1, - Erp_DetailId = 1, - SaleBillNo = "ddddd", - StockCode = "ddd", - SubStockId = 1 - }); - - var b = await _outStockTaskRepositories.Add(entity, true); - var bc = await _outStockTaskRepositories.Get(entity.Id); // await _boxService.Sync(); //var res = await this._erpService.BillQueryForDeliveryNoticeOutStock(null,DateTime.Now.AddDays(-300)); //var result= await this._erpService.BillQueryForPurchaseInStock(); diff --git a/src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs index 982291d8..614823f6 100644 --- a/src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs +++ b/src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs @@ -34,17 +34,17 @@ namespace WMS.Web.Domain.QuartzJob { //2.记录:开始时间 var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); - _logger.LogInformation($"出库单-同步金蝶入库单数据:执行开始时间->{begindatetime}"); + _logger.LogInformation($"箱信息-同步箱信息数据:执行开始时间->{begindatetime}"); //3.同步数据 var result = await _boxService.Sync(); //5.记录:结束时间 var enddatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); - _logger.LogInformation($"出库单-同步金蝶入库单数据:执行结束时间->{begindatetime}"); + _logger.LogInformation($"箱信息-同步箱信息数据:执行结束时间->{begindatetime}"); } catch (Exception ex) { - _logger.LogInformation($"同步金蝶入库单数据:定时任务执行失败->{ex.Message}"); + _logger.LogInformation($"同步箱信息数据:定时任务执行失败->{ex.Message}"); } } diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs index 310c1374..945252ed 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs @@ -232,7 +232,7 @@ namespace WMS.Web.Repositories.DependencyInjection #region 出库任务单 var jobKey_out = new JobKey("OutStockOrderQuartzJob", options.QuartzJobValue); - q.AddJob(jobKey_out, j => j.WithDescription("OutStockOrderQuartzJob")); + q.AddJob(jobKey_out, j => j.WithDescription("OutStockOrderQuartzJob")); q.AddTrigger(t => t .WithIdentity("OutStockOrderQuartzJobTrigger") .ForJob(jobKey_out) @@ -244,7 +244,7 @@ namespace WMS.Web.Repositories.DependencyInjection #region 箱信息老ops var jobKey_box = new JobKey("BoxQuartzJob", options.QuartzJobValue); - q.AddJob(jobKey_box, j => j.WithDescription("BoxQuartzJob")); + q.AddJob(jobKey_box, j => j.WithDescription("BoxQuartzJob")); q.AddTrigger(t => t .WithIdentity("BoxQuartzJobTrigger") .ForJob(jobKey_box) diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index 4e620696..95e19a33 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -216,6 +216,11 @@ namespace WMS.Web.Repositories /// public async Task<(List list, int total)> GetListAsync(OutStockTaskQueryRequest dto) { + List ids = new List(); + if (!string.IsNullOrEmpty(dto.SourceBillNo)) + ids = await _context.OutStockTaskDetails.FromSqlRaw($"SELECT Id FROM t_erp_outstock_task_details WHERE SourceBillNo like '%{dto.SourceBillNo}%'").Select(s => s.Id).ToListAsync(); + + #region erp基础资料 List mIds = new List(); var materials_result = await _erpService.BillQueryForMaterial(); @@ -262,10 +267,8 @@ namespace WMS.Web.Repositories query = query.Where(w => mIds.Contains(w.detail.MaterialId)); if (dto.Ids.Count() > 0) query = query.Where(w => dto.Ids.Contains(w.detail.Id)); - if (!string.IsNullOrEmpty(dto.SourceBillNo)) - query = query.Where(w => w.detail.SourceBillNos.Contains(dto.SourceBillNo)); - //query = query.Where(w => EF.Functions.Like(w.detail.SourceBillNos, "%" + dto.SourceBillNo + "%")); - //query = query.Where(w => w.detail.SourceBillNos.Where(sw => EF.Functions.Like(sw, "%" + dto.SourceBillNo + "%")).Contains(w.order.BillNo)); + if (ids.Count() != 0) + query = query.Where(w => ids.Contains(w.detail.Id)); if (dto.Type != null) query = query.Where(w => w.order.Type == (OutStockType)dto.Type); if (dto.Status != null) @@ -319,9 +322,12 @@ namespace WMS.Web.Repositories return new List(); var materials = materials_result.Data.ToList(); + List ids = new List(); + ids = await _context.OutStockTaskDetails.FromSqlRaw($"SELECT Fid FROM t_erp_outstock_task_details WHERE SourceBillNo like '%{billNo}%'").Select(s => s.Id).ToListAsync(); + var list = await _context.OutStockTask.Include(x => x.Details) .Where(f => (EF.Functions.Like(f.BillNo, "%" + billNo + "%") || - f.Details.SelectMany(s=>s.SourceBillNos).Where(sw => EF.Functions.Like(sw, "%" + billNo + "%")).Contains(f.BillNo)) && + ids.Contains(f.Id)) && (f.Status == OutStockStatus.Part || f.Status == OutStockStatus.Wait)) .OrderByDescending(o => o.Id) .ToListAsync(); @@ -419,9 +425,12 @@ namespace WMS.Web.Repositories public async Task> GetOutStockTaskNosByNo(string billNo) { + List ids = new List(); + ids = await _context.OutStockTaskDetails.FromSqlRaw($"SELECT Fid FROM t_erp_outstock_task_details WHERE SourceBillNo like '%{billNo}%'").Select(s => s.Id).ToListAsync(); + return await _context.OutStockTask.Include(x => x.Details) .Where(f => (EF.Functions.Like(f.BillNo, "%" + billNo + "%") || - f.Details.SelectMany(s => s.SourceBillNos).Where(sw => EF.Functions.Like(sw, "%" + billNo + "%")).Contains(f.BillNo)) && + ids.Contains(f.Id)) && (f.Status == OutStockStatus.Part || f.Status == OutStockStatus.Wait)) .OrderByDescending(o => o.Id) .Select(s => s.BillNo) From 73589f0dc3b352eb44a19adc587f667c015b5e43 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 15 Nov 2023 14:11:05 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Domain/Entitys/OutStock.cs | 5 ----- src/WMS.Web.Domain/Entitys/OutStockDetails.cs | 8 ++++++-- src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs | 2 +- src/WMS.Web.Domain/Services/SerialNumberService.cs | 5 +++-- .../Configuration/RepositoryDbContext.cs | 13 +++++++++++++ src/WMS.Web.Repositories/OutStockRepositories.cs | 12 ++++++++---- .../OutStockTaskRepositories.cs | 2 +- 7 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/WMS.Web.Domain/Entitys/OutStock.cs b/src/WMS.Web.Domain/Entitys/OutStock.cs index a13afe31..95d0e28e 100644 --- a/src/WMS.Web.Domain/Entitys/OutStock.cs +++ b/src/WMS.Web.Domain/Entitys/OutStock.cs @@ -31,11 +31,6 @@ namespace WMS.Web.Domain.Entitys [Column("BillNo")] public string BillNo { get; set; } /// - /// 来源单号 - /// - [Column("SourceBillNo")] - public string SourceBillNo { get; set; } - /// /// 单据类型 /// [Column("Type")] diff --git a/src/WMS.Web.Domain/Entitys/OutStockDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockDetails.cs index 76c3a5e1..4c642628 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockDetails.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockDetails.cs @@ -30,8 +30,12 @@ namespace WMS.Web.Domain.Entitys /// 销售订单号 /// [Column("SaleBillNo")] - public string SaleBillNo { get; set; } - + public List SaleBillNos { get; set; } + /// + /// 来源单号 + /// + [Column("SourceBillNo")] + public List SourceBillNos { get; set; } /// /// 物料Id /// diff --git a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs index bd145c26..b64b5328 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs @@ -42,7 +42,7 @@ namespace WMS.Web.Domain.Entitys /// 销售订单号 /// [Column("SaleBillNo")] - public string SaleBillNo { get; set; } + public List SaleBillNos { get; set; } /// /// 物料Id /// diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index 15021c82..c40b4e41 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -187,6 +187,7 @@ namespace WMS.Web.Domain.Services foreach (var entity in entityList) { var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId); + var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId); //修改序列号和箱绑定关系 entity.OutStock(outStock.BillNo, outStock.Type); @@ -200,14 +201,14 @@ namespace WMS.Web.Domain.Services OperateTime = DateTime.Now, OperateType = OutStockTypeConvert(outStock.Type), OperateUser = userName, - Remark = "来源单号:" + outStock.SourceBillNo + "\r\n" + "出库单号:" + outStock.BillNo + Remark = "来源单号:" + string.Join(",",outstockDetail.SourceBillNos) + "\r\n" + "出库单号:" + outStock.BillNo }; if (outStock.Type == OutStockType.Sal) { var detail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId); var res_c = await _erpService.BillQueryForCustomer(); var customer = res_c.Data.FirstOrDefault(f => f.Id == outStock.ReceiptCustomerId); - op.Remark += "\r\n" + "销售订单号:" + detail.SaleBillNo; + op.Remark += "\r\n" + "销售订单号:" + string.Join(",", detail.SaleBillNos); op.Remark += "\r\n" + "客户:" + customer?.Name; } sList.Add(op); diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index 0d80b1fb..b2905922 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -94,6 +94,14 @@ namespace WMS.Web.Repositories.Configuration ent.Property(f => f.SerialNumbers).HasConversion( v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); + + ent.Property(f => f.SourceBillNos).HasConversion( + v => JsonConvert.SerializeObject(v), + v => JsonConvert.DeserializeObject>(v)); + + ent.Property(f => f.SaleBillNos).HasConversion( + v => JsonConvert.SerializeObject(v), + v => JsonConvert.DeserializeObject>(v)); }); #endregion @@ -115,8 +123,13 @@ namespace WMS.Web.Repositories.Configuration ent.Property(f => f.SourceBillNos).HasConversion( v => JsonConvert.SerializeObject(v), + v => JsonConvert.DeserializeObject>(v)); + + ent.Property(f => f.SaleBillNos).HasConversion( + v => JsonConvert.SerializeObject(v), v => JsonConvert.DeserializeObject>(v)); }); + #endregion #region 盘点单 diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index 0b423981..a2ebf5d5 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -82,6 +82,10 @@ namespace WMS.Web.Repositories /// public async Task<(List list, int total)> GetListAsync(OutStockQueryRequest dto) { + List detailIds = new List(); + if (!string.IsNullOrEmpty(dto.SourceBillNo)) + detailIds = await _context.OutStockTaskDetails.FromSqlRaw($"SELECT Id FROM t_wms_outstock_details WHERE SourceBillNo like '%{dto.SourceBillNo}%'").Select(s => s.Id).ToListAsync(); + List ids = new List(); if (!string.IsNullOrEmpty(dto.Creator)) { @@ -134,8 +138,8 @@ namespace WMS.Web.Repositories query = query.Where(w => mIds.Contains(w.detail.MaterialId)); if (ids.Count() > 0) query = query.Where(w => ids.Contains(w.order.CreatorId)); - if (!string.IsNullOrEmpty(dto.SourceBillNo)) - query = query.Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%")); + if (detailIds.Count()!=0) + query = query.Where(w => detailIds.Contains(w.detail.Id)); if (dto.Type != null) query = query.Where(w => w.order.Type == (OutStockType)dto.Type); if (dto.SuccessSync != null) @@ -160,8 +164,8 @@ namespace WMS.Web.Repositories CreateTime = s.order.CreateTime.DateToStringSeconds(), SuccessSync = s.order.SuccessSync, Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.detail.StockCode), - SourceBillNo = s.order.SourceBillNo, - SaleBillNo = s.detail.SaleBillNo, + SourceBillNo =string.Join(",",s.detail.SourceBillNos), + SaleBillNo = string.Join(",", s.detail.SaleBillNos), DeliveryOrg = _erpBasicDataExtendService.GetOrgName(orgs, s.order.DeliveryOrgId), ReceiptCustomer = s.order.Type == OutStockType.Sal ? _erpBasicDataExtendService.GetCustomerName(customers, s.order.ReceiptCustomerId) diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index 95e19a33..8430849d 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -296,7 +296,7 @@ namespace WMS.Web.Repositories OutStockEndTime = s.detail.OutStockEndTime.DateToStringSeconds(), Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.detail.StockCode), SourceBillNo = string.Join(",", s.detail.SourceBillNos), - SaleBillNo = s.detail.SaleBillNo, + SaleBillNo = string.Join(",", s.detail.SaleBillNos), DeliveryOrg = _erpBasicDataExtendService.GetOrgName(orgs, s.order.DeliveryOrgId), ReceiptCustomer = s.order.Type == OutStockType.Sal ? _erpBasicDataExtendService.GetCustomerName(customers, s.order.ReceiptCustomerId) From 79f57894fadacedc6ffce559b33f4870bc28237f Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 15 Nov 2023 14:24:31 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 14 +++++++------- src/WMS.Web.Domain/Entitys/OutStockTask.cs | 16 +++++++++++++--- src/WMS.Web.Domain/Values/ResultCodes.cs | 1 + 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 941ad972..533d3f79 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -836,11 +836,6 @@ 单据编号 - - - 来源单号 - - 单据类型 @@ -923,11 +918,16 @@ 单据头Id - + 销售订单号 + + + 来源单号 + + 物料Id @@ -1059,7 +1059,7 @@ 来源单号(合并后有多个) - + 销售订单号 diff --git a/src/WMS.Web.Domain/Entitys/OutStockTask.cs b/src/WMS.Web.Domain/Entitys/OutStockTask.cs index 9792ab26..9ce17525 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTask.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTask.cs @@ -4,6 +4,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using WMS.Web.Core; +using WMS.Web.Core.Help; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Values; @@ -148,27 +149,36 @@ namespace WMS.Web.Domain.Entitys /// public Result Merge(List list, int creatorId) { + if (list.Count() <= 1) return Result.ReFailure(ResultCodes.MergeNumberError); // 符合合并数据逻辑:出库状态为”待拣货”+出库类型为:销售出库+发货组织一致+收货客户一致+发货仓库一致 if (list.Where(w => w.Status != OutStockStatus.Wait).Any()) return Result.ReFailure(ResultCodes.MergeStatusError); if (list.Where(w => w.Type != OutStockType.Sal).Any()) return Result.ReFailure(ResultCodes.MergeStatusError); if (list.GroupBy(g => g.DeliveryOrgId).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); if (list.GroupBy(g => g.ReceiptCustomerId).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); - var details = list.SelectMany(s => s.Details).ToList(); - if (details.GroupBy(g => g.StockCode).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); + List details_new = new List(); //清空数据绑定 foreach (var d in details) { d.Id = 0; d.Fid = 0; + var detail_new = details_new.FirstOrDefault(f => f.MaterialId == d.MaterialId); + if (detail_new != null) + { + detail_new.AccruedQty += d.AccruedQty;//应出数量累加 + detail_new.SaleBillNos.AddRange(d.SaleBillNos); + detail_new.SourceBillNos.AddRange(d.SourceBillNos); + } + else + details_new.Add(d); } this.OperatorId = creatorId; this.OperateTime = DateTime.Now; this.Status = OutStockStatus.Wait; this.Type = OutStockType.Sal; - this.Details = details; + this.Details = details_new; return Result.ReSuccess(); } diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index 4a350ead..66a1e945 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -29,6 +29,7 @@ namespace WMS.Web.Domain.Values public static ValueTuple OutStockMaterialError = (70003, "出库物料在任务单中不存在"); public static ValueTuple OutStockTaskAlready = (70004, "任务单已全部出库"); public static ValueTuple OutStockTaskRepeal = (70005, "任务单已作废"); + public static ValueTuple MergeNumberError = (70006, "必须选择两个及以上的单合并"); public static ValueTuple BoxNoData = (80000, "箱信息不存在"); public static ValueTuple BoxMateriaNoData = (800010, "箱对应物料信息不存在"); From bff2ce4b3e51acbc7e23f5e11b8246d820358ac0 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 15 Nov 2023 14:46:36 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IService/Public/IOutStockTaskService.cs | 4 +-- .../IOutStockTaskRepositories.cs | 6 +++++ .../Services/OutStockTaskService.cs | 6 ++--- .../OutStockTaskRepositories.cs | 26 +++++++++++++++++-- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs index 727fb418..f52995e3 100644 --- a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs +++ b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs @@ -47,8 +47,8 @@ namespace WMS.Web.Domain.IService.Public /// /// 同步金蝶数据 不传源订单号则更新所有 /// - /// + /// /// - Task Sync(List sourceBillNos = null); + Task Sync(List billNos = null); } } diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs index 5bf69f66..f5e57db1 100644 --- a/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs @@ -28,6 +28,12 @@ namespace WMS.Web.Domain.Infrastructure /// /// Task> GetListBySourceBillNo(List sourceBillNos); + /// + /// 列表-根据订单号 + /// + /// + /// + Task> GetListByBillNo(List billNos); /// 修改实体集合 Task EditEntityList(List entitys, bool isTransaction = true); //编辑 diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index d2f92027..d803158b 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -236,7 +236,7 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task Sync(List sourceBillNos = null) + public async Task Sync(List billNos = null) { //1.事务 IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); @@ -244,7 +244,7 @@ namespace WMS.Web.Domain.Services bool isSuccess = true; Result result; //定时任务更新 - if (sourceBillNos == null) + if (billNos == null) { DateTime begin = await _erpOpsSyncDateRepositories.Get(ErpOpsSyncType.OutStock); //更新时间范围内所有 @@ -277,7 +277,7 @@ namespace WMS.Web.Domain.Services List TransferOut_Nos = new List(); List AssembledApp_Nos = new List(); List MisDeliveryOut_Nos = new List(); - var taskList = await _outStockTaskRepositories.GetListBySourceBillNo(sourceBillNos); + var taskList = await _outStockTaskRepositories.GetListByBillNo(billNos); foreach (var entity in taskList) { if (entity.Type == OutStockType.Sal) diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index 8430849d..b852ceea 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -376,11 +376,22 @@ namespace WMS.Web.Repositories /// /// /// - public async Task> GetListBySourceBillNo(List billNos) + public async Task> GetListBySourceBillNo(List sourcebillNos) { + List ids = new List(); + string str=$"SELECT Fid FROM t_erp_outstock_task_details WHERE "; + for (int i=0;i s.Id).ToListAsync(); + var entitys = await _context.OutStockTask .Include(s => s.Details) - .Where(w => billNos.Contains(w.BillNo)) + .Where(w => ids.Contains(w.Id)) .OrderByDescending(o => o.Id) .ToListAsync(); @@ -447,5 +458,16 @@ namespace WMS.Web.Repositories { return await GetListAsync(dto); } + + public async Task> GetListByBillNo(List billNos) + { + var entitys = await _context.OutStockTask + .Include(s => s.Details) + .Where(w => billNos.Contains(w.BillNo)) + .OrderByDescending(o => o.Id) + .ToListAsync(); + + return entitys.Clone(); + } } }