From 8a3361c61f71f0479d15b5b2e9aa5653600aabdb Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Wed, 1 Nov 2023 09:19:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E4=BD=93=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 20 ++---- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 33 +++++++--- .../Purchase/ErpPurchaseInStockResultDto.cs | 18 ++---- src/WMS.Web.Domain/Entitys/InstockTask.cs | 14 +++++ .../Entitys/InstockTaskDetails.cs | 6 +- src/WMS.Web.Domain/Entitys/OutStockTask.cs | 5 ++ .../Entitys/OutStockTaskDetails.cs | 5 -- .../IInStockTaskRepositories.cs | 7 +++ src/WMS.Web.Domain/Mappers/InStockMapper.cs | 14 +++++ .../Services/Public/ErpService.cs | 63 +++++++++++++------ .../InStockTaskRepositories.cs | 17 ++++- .../OutStockTaskRepositories.cs | 4 +- 12 files changed, 135 insertions(+), 71 deletions(-) diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 6ad4f45b..9dbe93c6 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -540,7 +540,7 @@ erp-采购入库-返回数据源 - + 采购订单号 @@ -555,16 +555,11 @@ 采购组织 - + 规则型号 - - - 物料编码 - - 物料名称 @@ -575,22 +570,17 @@ 物料ID - + 仓库ID - - - 子仓库 - - - + 采购数量 - + 明细备注 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 2452347b..221fea92 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -382,6 +382,11 @@ 单据编号 + + + 来源单号 + + 入库状态 @@ -417,6 +422,12 @@ 明细 + + + 创建 + + + 创建订单号 @@ -450,11 +461,6 @@ 单据头ID - - - 来源单号 - - 供应商Id @@ -767,6 +773,11 @@ 单据编号 + + + 来源单号 + + 单据状态 @@ -825,11 +836,6 @@ 单据头Id - - - 来源单号 - - 销售订单号 @@ -1115,6 +1121,13 @@ + + + 列表-根据明细中的来源单号 + + + + 批量添加 diff --git a/src/WMS.Web.Core/Dto/Erp/Purchase/ErpPurchaseInStockResultDto.cs b/src/WMS.Web.Core/Dto/Erp/Purchase/ErpPurchaseInStockResultDto.cs index 5232e273..c0acb45f 100644 --- a/src/WMS.Web.Core/Dto/Erp/Purchase/ErpPurchaseInStockResultDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/Purchase/ErpPurchaseInStockResultDto.cs @@ -14,7 +14,7 @@ namespace WMS.Web.Core.Dto.Erp.Purchase /// /// 采购订单号 /// - public string FPOOrderNo { get; set; } + public string FBillNo{ get; set; } /// /// 供应商 @@ -27,11 +27,7 @@ namespace WMS.Web.Core.Dto.Erp.Purchase /// /// 规则型号 /// - public string FUOM { get; set; } - /// - /// 物料编码 - /// - public string FNumber { get; set; } + public string FModel { get; set; } /// /// 物料名称 /// @@ -43,19 +39,15 @@ namespace WMS.Web.Core.Dto.Erp.Purchase /// /// 仓库ID /// - public int FStockId { get; set; } - /// - /// 子仓库 - /// - public int FStockLocId { get; set; } + public int FSOSTOCKID { get; set; } /// /// 采购数量 /// - public decimal FRemainInStockQty { get; set; } + public decimal FQty { get; set; } /// /// 明细备注 /// - public string FNote { get; set; } + public string FEntryNote { get; set; } /// /// 创建时间 /// diff --git a/src/WMS.Web.Domain/Entitys/InstockTask.cs b/src/WMS.Web.Domain/Entitys/InstockTask.cs index dc4028d5..07ed3926 100644 --- a/src/WMS.Web.Domain/Entitys/InstockTask.cs +++ b/src/WMS.Web.Domain/Entitys/InstockTask.cs @@ -22,6 +22,10 @@ namespace WMS.Web.Domain.Entitys /// public string BillNo { get; set; } /// + /// 来源单号 + /// + public string SourceBillNo { get; set; } + /// /// 入库状态 /// public InstockStatus Status { get; set; } @@ -51,6 +55,16 @@ namespace WMS.Web.Domain.Entitys /// public List Details = new List(); + /// + /// 创建 + /// + /// + public void Create(InstockType type) + { + this.Status = InstockStatus.Wait; + this.Type = type; + } + /// /// 创建订单号 diff --git a/src/WMS.Web.Domain/Entitys/InstockTaskDetails.cs b/src/WMS.Web.Domain/Entitys/InstockTaskDetails.cs index 940ca545..c9a76f36 100644 --- a/src/WMS.Web.Domain/Entitys/InstockTaskDetails.cs +++ b/src/WMS.Web.Domain/Entitys/InstockTaskDetails.cs @@ -20,11 +20,7 @@ namespace WMS.Web.Domain.Entitys /// /// 单据头ID /// - public int Fid { get; set; } - /// - /// 来源单号 - /// - public string SourceBillNo { get; set; } + public int Fid { get; set; } /// /// 供应商Id /// diff --git a/src/WMS.Web.Domain/Entitys/OutStockTask.cs b/src/WMS.Web.Domain/Entitys/OutStockTask.cs index 6a7dd729..e0f92dec 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTask.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTask.cs @@ -28,6 +28,11 @@ namespace WMS.Web.Domain.Entitys [Column("BillNo")] public string BillNo { get; set; } /// + /// 来源单号 + /// + [Column("SourceBillNo")] + public string SourceBillNo { get; set; } + /// /// 单据状态 /// [Column("Status")] diff --git a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs index f94a86b5..6dc775a2 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs @@ -25,11 +25,6 @@ namespace WMS.Web.Domain.Entitys [Column("Fid")] public int Fid { get; set; } /// - /// 来源单号 - /// - [Column("SourceBillNo")] - public string SourceBillNo { get; set; } - /// /// 销售订单号 /// [Column("SaleBillNo")] diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs index 18b6b014..eb77ea50 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs @@ -34,6 +34,13 @@ namespace WMS.Web.Domain.Infrastructure /// Task> GetList(List ids); + /// + /// 列表-根据明细中的来源单号 + /// + /// + /// + Task> GetListBy(List sourceBillNos); + /// /// 批量添加 /// diff --git a/src/WMS.Web.Domain/Mappers/InStockMapper.cs b/src/WMS.Web.Domain/Mappers/InStockMapper.cs index f631665a..8a455285 100644 --- a/src/WMS.Web.Domain/Mappers/InStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/InStockMapper.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Text; +using WMS.Web.Core.Dto.Erp.Purchase; using WMS.Web.Core.Dto.InStock; using WMS.Web.Core.Dto.InStockTask; using WMS.Web.Domain.Entitys; @@ -22,7 +23,20 @@ namespace WMS.Web.Domain.Mappers CreateMap().ReverseMap(); + CreateMap() + .ForMember(x => x.SourceBillNo, ops => ops.MapFrom(x => x.FBillNo)); + CreateMap() + .ForMember(x => x.SupplierId, ops => ops.MapFrom(x => x.FSupplierId)) + .ForMember(x => x.OrgId, ops => ops.MapFrom(x => x.FPurchaseOrgId)) + .ForMember(x => x.MaterialId, ops => ops.MapFrom(x => x.FMaterialId)) + .ForMember(x => x.StockId, ops => ops.MapFrom(x => x.FSOSTOCKID)) + + .ForMember(x => x.AccruedQty, ops => ops.MapFrom(x => x.FQty)) + .ForMember(x => x.Remark, ops => ops.MapFrom(x => x.FEntryNote)) + .ForMember(x => x.CreateTime, ops => ops.MapFrom(x => x.FCreateDate)) + + .ReverseMap(); } } } diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 77e16fe2..c2958af7 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -6,6 +6,7 @@ using Microsoft.Extensions.Options; using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.Linq; using System.ServiceModel; using System.Text; using System.Threading.Tasks; @@ -13,6 +14,8 @@ using WMS.Web.Core.Dto.Erp; using WMS.Web.Core.Dto.Erp.Org; using WMS.Web.Core.Dto.Erp.Purchase; using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.Entitys; +using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.Options; using WMS.Web.Domain.Values; @@ -30,16 +33,19 @@ namespace WMS.Web.Domain.Services.Public private ILogger _logger; private ERPGWSoapClient _client; private readonly IMemoryCache _memoryCache; + private readonly IInStockTaskRepositories _inStockTaskRepositories; public ErpService( IMapper mapper, IOptions erpOptions, ILogger logger, - IMemoryCache memoryCache) + IMemoryCache memoryCache, + IInStockTaskRepositories inStockTaskRepositories) { this._erpOptions = erpOptions?.Value; this._mapper = mapper; this._logger = logger; this._memoryCache = memoryCache; + this._inStockTaskRepositories = inStockTaskRepositories; } /// @@ -72,45 +78,64 @@ namespace WMS.Web.Domain.Services.Public { try { + //1.先登录金蝶-拿到token var token_result = await this.Init(); if (!token_result.IsSuccess) return ResultList.ReFailure(token_result); - //var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); - //var endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - var beginTime = DateTime.Now.ToString("2023-07-06 00:00:00"); - var endTime = DateTime.Now.ToString("2023-07-06 01:00:00"); - + //2.时间条件:可能还有其它条件 + var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); + var endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); - var param = new ErpBillQueryParamDto(FormIdParam.STK_InStock.ToString()); - param.FieldKeys = "FPOOrderNo,FSupplierId,FPurchaseOrgId,FUOM,FMaterialId.FNumber,FMaterialName,FMaterialId,FStockId,FStockLocId,FRemainInStockQty,FNote,FCreateDate"; + var param = new ErpBillQueryParamDto(FormIdParam.PUR_PurchaseOrder.ToString()); + param.FieldKeys = "FBillNo,FSupplierId,FPurchaseOrgId,FModel,FMaterialName,FMaterialId,FSOSTOCKID,FQty,FEntryNote,FCreateDate"; param.Limit = 10; param.FilterString = "FCreateDate>='"+beginTime+"' and FCreateDate<='"+endTime+"'"; query.Data = JsonConvert.SerializeObject(param); var json = JsonConvert.SerializeObject(query); + //4.请求查询接口 var result_json = await _client.ExecuteBillQueryAsync(json); var result = JsonConvert.DeserializeObject>>(result_json); + //5.返回数据的组装 var list = new List(); foreach (var item in result) { var lis = new ErpPurchaseInStockResultDto(); - lis.FPOOrderNo = item[0]; + lis.FBillNo = item[0]; lis.FSupplierId = Convert.ToInt32(item[1]); lis.FPurchaseOrgId = Convert.ToInt32(item[2]); - lis.FUOM = item[3]; - lis.FNumber = item[4]; - lis.FMaterialName = item[5]; - lis.FMaterialId = Convert.ToInt32(item[6]); - lis.FStockId = Convert.ToInt32(item[7]); - lis.FStockLocId = Convert.ToInt32(item[8]); - lis.FRemainInStockQty =Convert.ToDecimal(item[9]); - lis.FNote = item[10]; - lis.FCreateDate =Convert.ToDateTime(item[11]); + lis.FModel = item[3]; + lis.FMaterialName = item[4]; + lis.FMaterialId = Convert.ToInt32(item[5]); + lis.FSOSTOCKID = Convert.ToInt32(item[6]); + lis.FQty = Convert.ToDecimal(item[7]); + lis.FEntryNote = item[8]; + lis.FCreateDate =Convert.ToDateTime(item[9]); + //list.FCHUCHANGPRICE=[10]FCHUCHANGPRICE;//这个是出厂价,但是金蝶测试没有这个字段,正式有的 list.Add(lis); - } + + //6. + var SourceBillNo_list = list.GroupBy(x=>x.FBillNo).Select(x => x.Key).ToList(); + var data_list= await _inStockTaskRepositories.GetListBy(SourceBillNo_list); + if (data_list.Count != 0) + { + var data_details_list= data_list.SelectMany(x => x.Details).ToList(); + foreach (var item in data_details_list) + { + + } + } + + var dto = new InStockTask(); + dto.Create(InstockType.Purchase); + dto.Details = _mapper.Map>(list); + + + return ResultList.ReSuccess(list); } diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs index 0a0b07ba..f2f8ed66 100644 --- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs @@ -45,7 +45,7 @@ namespace WMS.Web.Repositories .Where(adv => 1 == 1); if (!string.IsNullOrEmpty(dto.SourceBillNo)) - query = query.Where(w => EF.Functions.Like(w.detail.SourceBillNo, "%" + dto.SourceBillNo + "%")); + query = query.Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%")); //if (!string.IsNullOrEmpty(dto.MaterialNumber)) // query = query.Where(w => EF.Functions.Like(w.detail.BillNo, "%" + dto.BillNo + "%")); @@ -81,7 +81,7 @@ namespace WMS.Web.Repositories BillNo = s.order.BillNo, Type = s.order.Type.GetRemark(), Status = s.order.Status.GetRemark(), - SourceBillNo = s.detail.SourceBillNo, + SourceBillNo = s.order.SourceBillNo, Supplier = "", Org = "", MaterialName = "", @@ -128,6 +128,19 @@ namespace WMS.Web.Repositories .ToListAsync(); } + /// + /// 列表-根据明细中的来源单号 + /// + /// + /// + public async Task> GetListBy(List sourceBillNos) + { + return await _context.InStockTask + .Include(s => s.Details) + .Where(w => sourceBillNos.Contains(w.SourceBillNo)) + .ToListAsync(); + } + /// /// 批量添加 /// diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index 34826398..ca4d6423 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -173,7 +173,7 @@ 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 => EF.Functions.Like(w.detail.SourceBillNo, "%" + dto.SourceBillNo + "%")); + query = query.Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%")); if (dto.Type != null) query = query.Where(w => w.order.Type == (OrderType)dto.Type); if (dto.Status != null) @@ -198,7 +198,7 @@ namespace WMS.Web.Repositories Type = s.order.Type.GetRemark(), CreateTime = s.order.OperateTime.DateToStringSeconds(), Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.detail.StockId), - SourceBillNo = s.detail.SourceBillNo, + SourceBillNo = s.order.SourceBillNo, SaleBillNo = s.detail.SaleBillNo, DeliveryOrg = "", ReceiptCustomer = _singleDataService.GetSingleData(SingleAction.Customers, _loginRepositories.CompanyId, s.detail.ReceiptCustomerId),