diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 36d92fc1..ad9e5609 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -605,6 +605,71 @@ 表单所在的子系统内码,字符串类型(非必录) + + + ERP:入库单-统一响应对象 + + + + + 单据编号 + + + + + 组织 + + + + + 供应商 + + + + + 物料ID + + + + + 仓库ID + + + + + 仓库code + + + + + 数量 + + + + + 出厂价 + + + + + 已交数量(对应金蝶的已交数量-对应物料),目前只有采购订单有 + + + + + 明细备注 + + + + + 创建时间 + + + + + 单据类型 + + erp:其他入库单 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index dff909c0..47327616 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -477,11 +477,13 @@ 明细 - + 创建 + + @@ -1847,6 +1849,13 @@ + + + 同步 + + + + 出库服务 @@ -2604,13 +2613,6 @@ - - - 同步:入库单类型的数据(采购订单,其他入库单,) - - - - 执行方法 @@ -2802,6 +2804,29 @@ + + + 同步 + + + + + + + 同步:入库单类型的数据 + + + + + + + + ERP数据同步到WMS数据库 + + + + + 出库服务 diff --git a/src/WMS.Web.Core/Dto/Erp/ErpInStockResultDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpInStockResultDto.cs new file mode 100644 index 00000000..ad082a7d --- /dev/null +++ b/src/WMS.Web.Core/Dto/Erp/ErpInStockResultDto.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Erp +{ + /// + /// ERP:入库单-统一响应对象 + /// + public class ErpInStockResultDto + { + /// + /// 单据编号 + /// + public string BillNo { get; set; } + /// + /// 组织 + /// + public int OrgId { get; set; } + + /// + /// 供应商 + /// + public int SupplierId { get; set; } + + /// + /// 物料ID + /// + public int MaterialId { get; set; } + + /// + /// 仓库ID + /// + public int StockId { get; set; } + + /// + /// 仓库code + /// + public string StockCode { get; set; } + + /// + /// 数量 + /// + public decimal Qty { get; set; } + + /// + /// 出厂价 + /// + public decimal FactoryPrice { get; set; } + + /// + /// 已交数量(对应金蝶的已交数量-对应物料),目前只有采购订单有 + /// + public decimal DeliveredQty { get; set; } + + /// + /// 明细备注 + /// + public string Remark { get; set; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { get; set; } + + /// + /// 单据类型 + /// + public int Type { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Entitys/InstockTask.cs b/src/WMS.Web.Domain/Entitys/InstockTask.cs index c4c7bc1b..13d90d52 100644 --- a/src/WMS.Web.Domain/Entitys/InstockTask.cs +++ b/src/WMS.Web.Domain/Entitys/InstockTask.cs @@ -70,10 +70,14 @@ namespace WMS.Web.Domain.Entitys /// 创建 /// /// - public void Create(InstockType type) + /// + /// + public void Create(InstockType type,string sourceBillNo, DateTime createTime) { this.Status = InstockStatus.Wait; this.Type = type; + this.SourceBillNo = sourceBillNo; + this.CreateTime = createTime; } diff --git a/src/WMS.Web.Domain/IService/IInStockTaskService.cs b/src/WMS.Web.Domain/IService/IInStockTaskService.cs index b1b63eff..f4f9f2cb 100644 --- a/src/WMS.Web.Domain/IService/IInStockTaskService.cs +++ b/src/WMS.Web.Domain/IService/IInStockTaskService.cs @@ -64,5 +64,12 @@ namespace WMS.Web.Domain.IService /// /// Task SysnAssembledApp(List billNos = null, bool isTransaction = true); + + /// + /// 同步 + /// + /// + /// + Task Sysn(List billNos = null); } } diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs index 86e7c5dd..e540470c 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -25,42 +25,42 @@ namespace WMS.Web.Domain.IService.Public /// erp:单据查询-采购入库单 /// /// - Task> BillQueryForPurchaseInStock(List sourceBillNos = null); + Task> BillQueryForPurchaseInStock(List sourceBillNos = null); /// /// erp:单据查询-其他入库单 /// /// /// - Task> BillQueryForMiscellaneous(List sourceBillNos = null); + Task> BillQueryForMiscellaneous(List sourceBillNos = null); /// /// erp:单据查询-直接调拨入库单 /// /// /// - Task> BillQueryForTransferDirect(List sourceBillNos = null); + Task> BillQueryForTransferDirect(List sourceBillNos = null); /// /// erp:单据查询-分步式调入单 /// /// /// - Task> BillQueryForTransferin(List sourceBillNos = null); + Task> BillQueryForTransferin(List sourceBillNos = null); /// /// erp:单据查询-组装拆卸单-组装(成品入库) /// /// /// - Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null); + Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null); /// /// erp:单据查询-组装拆卸单-拆卸(子件入库) /// /// /// - Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null); + Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null); /// /// erp:单据查询-出库单 diff --git a/src/WMS.Web.Domain/Mappers/InStockMapper.cs b/src/WMS.Web.Domain/Mappers/InStockMapper.cs index 10b4551a..674d00e5 100644 --- a/src/WMS.Web.Domain/Mappers/InStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/InStockMapper.cs @@ -39,6 +39,23 @@ namespace WMS.Web.Domain.Mappers #region ERP-dto映射到wsm的任务表中 + //ERP-同步结果对象统一映射 + CreateMap() + .ForMember(x => x.SourceBillNo, ops => ops.MapFrom(x => x.BillNo)) + .ForMember(x => x.CreateTime, ops => ops.MapFrom(x => x.CreateTime)); + + CreateMap() + .ForMember(x => x.SupplierId, ops => ops.MapFrom(x => x.SupplierId)) + .ForMember(x => x.OrgId, ops => ops.MapFrom(x => x.OrgId)) + .ForMember(x => x.MaterialId, ops => ops.MapFrom(x => x.MaterialId)) + .ForMember(x => x.StockCode, ops => ops.MapFrom(x => x.StockCode)) + .ForMember(x => x.DeliveredQty, ops => ops.MapFrom(x => x.DeliveredQty)) + .ForMember(x => x.FactoryPrice, ops => ops.MapFrom(x => x.FactoryPrice)) + .ForMember(x => x.AccruedQty, ops => ops.MapFrom(x => x.Qty)) + .ForMember(x => x.Remark, ops => ops.MapFrom(x => x.Remark)) + .ReverseMap(); + + //ERP采购订单 CreateMap() .ForMember(x => x.SourceBillNo, ops => ops.MapFrom(x => x.FBillNo)) diff --git a/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs index 53792bee..a29e4497 100644 --- a/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs +++ b/src/WMS.Web.Domain/QuartzJob/InStockOrderQuartzJob.cs @@ -48,25 +48,18 @@ namespace WMS.Web.Domain.QuartzJob { try { - //1.事务 - IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); - bool isRollback = false; - bool isTransaction = false; - //2.记录:开始时间 + + //1.记录:开始时间 var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); _logger.LogInformation($"同步金蝶入库单数据:执行开始时间->{begindatetime}"); - //3.同步数据 - var result = await this.InStock(isTransaction); + //2.同步数据 + var result = await _inStockTaskService.Sysn(); if (!result.IsSuccess) { _logger.LogInformation($"同步金蝶入库单数据:执行失败->{result.Message}"); - isRollback = true; - } - - //4.提交事务 - var isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + } - //5.记录:结束时间 + //3.记录:结束时间 var enddatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); _logger.LogInformation($"同步金蝶入库单数据:执行结束时间->{begindatetime}"); @@ -78,39 +71,6 @@ namespace WMS.Web.Domain.QuartzJob } - /// - /// 同步:入库单类型的数据(采购订单,其他入库单,) - /// - /// - /// - public async Task InStock(bool isTransaction) - { - //1.同步数据:采购订单 - var purchase_result = await _inStockTaskService.SsynPurchaseInStock(null, isTransaction); - if (!purchase_result.IsSuccess) - return Result.ReFailure(purchase_result.Message,purchase_result.Status); - - //2.同步数据:其他入库单 - var miscellaneou_result = await _inStockTaskService.SysnMiscellaneous(null, isTransaction); - if (!miscellaneou_result.IsSuccess) - return Result.ReFailure(miscellaneou_result.Message, miscellaneou_result.Status); - - //3.同步数据:直接调拨入库单 - var TransferDirect_result = await _inStockTaskService.SysnTransferDirect(null, isTransaction); - if (!TransferDirect_result.IsSuccess) - return Result.ReFailure(TransferDirect_result.Message, TransferDirect_result.Status); - - //4.同步数据:分步式入库单 - var Transferin_result = await _inStockTaskService.SysnTransferin(null, isTransaction); - if (!Transferin_result.IsSuccess) - return Result.ReFailure(Transferin_result.Message, Transferin_result.Status); - - //5.同步数据:组装拆卸单 - var AssembledApp_result = await _inStockTaskService.SysnAssembledApp(null, isTransaction); - if (!AssembledApp_result.IsSuccess) - return Result.ReFailure(AssembledApp_result.Message, AssembledApp_result.Status); - - return Result.ReSuccess(); - } + } } diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index 5dbb803b..fed0d694 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -143,67 +143,7 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(erp_result.Message, erp_result.Status); var erp_list = erp_result.Data; - //2.通过单据编号找到wms系统现有的任务单;并修改 - var erp_removeList = new List(); - var SourceBillNo_list = erp_list.GroupBy(x => x.FBillNo).Select(x => x.Key).ToList(); - var data_list = await _inStockTaskRepositories.GetListBy(SourceBillNo_list); - if (data_list.Count != 0) - { - //2.1提取出wms任务单明细信息 - var data_list_details = data_list.SelectMany(x => x.Details).ToList(); - foreach (var item in data_list_details) - { - var data = data_list.Where(x => x.Id == item.Fid).FirstOrDefault(); - - //2.1.1对比erp的物料信息 - var erp_data = erp_list.Where(x => x.FBillNo == data.SourceBillNo && x.FMaterialId == item.MaterialId).FirstOrDefault(); - if (erp_data != null) - { - //2.1.2修改数量 - item.AccruedQty = erp_data.FQty; - item.DeliveredQty = erp_data.FStockInQty; - erp_removeList.Add(erp_data); - } - } - - //2.2.提交修改 - var isSuccess = await _inStockTaskRepositories.UpdateRange(data_list, isTransaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); - - //2.3剔除:已修改的单据 - foreach (var item in erp_removeList) - { - erp_list.Remove(item); - } - } - - //3.wms任务单的来源单据编号不存在于erp中,那么就新增 - if (erp_list.Count != 0) - { - var add_entitys = new List(); - //var current_billNos = erp_list.GroupBy(x => x.FBillNo).Select(x => x.Key).ToList(); - var current_billNos = erp_list.GroupBy(x => new { x.FBillNo, x.FCreateDate }).Select(x => new { x.Key.FBillNo, x.Key.FCreateDate }).ToList(); - foreach (var item in current_billNos) - { - var dto = new InStockTask(); - dto.SourceBillNo = item.FBillNo; - dto.CreateTime = item.FCreateDate; - dto.Create(InstockType.Purchase); - - //找到当前对应来源单据编号的集合数据 - var current_erp_details = erp_list.Where(x => x.FBillNo == item.FBillNo).ToList(); - //给到dto的实体明细中 - dto.Details = _mapper.Map>(current_erp_details); - add_entitys.Add(dto); - } - //3.1提交新增 - var isSuccess = await _inStockTaskRepositories.AddRange(add_entitys, isTransaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); - } - - return Result.ReSuccess(); + return await this.SysnData(erp_list.ToList(), isTransaction); } /// @@ -220,65 +160,7 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(erp_result.Message, erp_result.Status); var erp_list = erp_result.Data; - //2.通过单据编号找到wms系统现有的任务单;并修改 - var erp_removeList = new List(); - var SourceBillNo_list = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList(); - var data_list = await _inStockTaskRepositories.GetListBy(SourceBillNo_list); - if (data_list.Count != 0) - { - //2.1提取出wms任务单明细信息 - var data_list_details = data_list.SelectMany(x => x.Details).ToList(); - foreach (var item in data_list_details) - { - var data = data_list.Where(x => x.Id == item.Fid).FirstOrDefault(); - - //2.1.1对比erp的物料信息 - var erp_data = erp_list.Where(x => x.BillNo == data.SourceBillNo && x.MaterialId == item.MaterialId).FirstOrDefault(); - if (erp_data != null) - { - //2.1.2修改数量 - item.AccruedQty = erp_data.Qty; - erp_removeList.Add(erp_data); - } - } - - //2.2.提交修改 - var isSuccess = await _inStockTaskRepositories.UpdateRange(data_list, isTransaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); - - //2.3剔除:已修改的单据 - foreach (var item in erp_removeList) - { - erp_list.Remove(item); - } - } - - //3.wms任务单的来源单据编号不存在于erp中,那么就新增 - if (erp_list.Count != 0) - { - var add_entitys = new List(); - var current_billNos = erp_list.GroupBy(x => new { x.BillNo,x.CreateTime }).Select(x => new {x.Key.BillNo,x.Key.CreateTime }).ToList(); - foreach (var item in current_billNos) - { - var dto = new InStockTask(); - dto.SourceBillNo = item.BillNo; - dto.CreateTime = item.CreateTime; - dto.Create(InstockType.Miscellaneous); - - //找到当前对应来源单据编号的集合数据 - var current_erp_details = erp_list.Where(x => x.BillNo == item.BillNo).ToList(); - //给到dto的实体明细中 - dto.Details = _mapper.Map>(current_erp_details); - add_entitys.Add(dto); - } - //3.1提交新增 - var isSuccess = await _inStockTaskRepositories.AddRange(add_entitys, isTransaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); - } - - return Result.ReSuccess(); + return await this.SysnData(erp_list.ToList(), isTransaction); } /// @@ -295,65 +177,7 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(erp_result.Message, erp_result.Status); var erp_list = erp_result.Data; - //2.通过单据编号找到wms系统现有的任务单;并修改 - var erp_removeList = new List(); - var SourceBillNo_list = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList(); - var data_list = await _inStockTaskRepositories.GetListBy(SourceBillNo_list); - if (data_list.Count != 0) - { - //2.1提取出wms任务单明细信息 - var data_list_details = data_list.SelectMany(x => x.Details).ToList(); - foreach (var item in data_list_details) - { - var data = data_list.Where(x => x.Id == item.Fid).FirstOrDefault(); - - //2.1.1对比erp的物料信息 - var erp_data = erp_list.Where(x => x.BillNo == data.SourceBillNo && x.MaterialId == item.MaterialId).FirstOrDefault(); - if (erp_data != null) - { - //2.1.2修改数量 - item.AccruedQty = erp_data.Qty; - erp_removeList.Add(erp_data); - } - } - - //2.2.提交修改 - var isSuccess = await _inStockTaskRepositories.UpdateRange(data_list, isTransaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); - - //2.3剔除:已修改的单据 - foreach (var item in erp_removeList) - { - erp_list.Remove(item); - } - } - - //3.wms任务单的来源单据编号不存在于erp中,那么就新增 - if (erp_list.Count != 0) - { - var add_entitys = new List(); - var current_billNos = erp_list.GroupBy(x => new { x.BillNo, x.CreateTime }).Select(x => new { x.Key.BillNo, x.Key.CreateTime }).ToList(); - foreach (var item in current_billNos) - { - var dto = new InStockTask(); - dto.SourceBillNo = item.BillNo; - dto.CreateTime = item.CreateTime; - dto.Create(InstockType.Stkdirecttransfers); - - //找到当前对应来源单据编号的集合数据 - var current_erp_details = erp_list.Where(x => x.BillNo == item.BillNo).ToList(); - //给到dto的实体明细中 - dto.Details = _mapper.Map>(current_erp_details); - add_entitys.Add(dto); - } - //3.1提交新增 - var isSuccess = await _inStockTaskRepositories.AddRange(add_entitys, isTransaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); - } - - return Result.ReSuccess(); + return await this.SysnData(erp_list.ToList(), isTransaction); } /// @@ -370,65 +194,7 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(erp_result.Message, erp_result.Status); var erp_list = erp_result.Data; - //2.通过单据编号找到wms系统现有的任务单;并修改 - var erp_removeList = new List(); - var SourceBillNo_list = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList(); - var data_list = await _inStockTaskRepositories.GetListBy(SourceBillNo_list); - if (data_list.Count != 0) - { - //2.1提取出wms任务单明细信息 - var data_list_details = data_list.SelectMany(x => x.Details).ToList(); - foreach (var item in data_list_details) - { - var data = data_list.Where(x => x.Id == item.Fid).FirstOrDefault(); - - //2.1.1对比erp的物料信息 - var erp_data = erp_list.Where(x => x.BillNo == data.SourceBillNo && x.MaterialId == item.MaterialId).FirstOrDefault(); - if (erp_data != null) - { - //2.1.2修改数量 - item.AccruedQty = erp_data.Qty; - erp_removeList.Add(erp_data); - } - } - - //2.2.提交修改 - var isSuccess = await _inStockTaskRepositories.UpdateRange(data_list, isTransaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); - - //2.3剔除:已修改的单据 - foreach (var item in erp_removeList) - { - erp_list.Remove(item); - } - } - - //3.wms任务单的来源单据编号不存在于erp中,那么就新增 - if (erp_list.Count != 0) - { - var add_entitys = new List(); - var current_billNos = erp_list.GroupBy(x => new { x.BillNo, x.CreateTime }).Select(x => new { x.Key.BillNo, x.Key.CreateTime }).ToList(); - foreach (var item in current_billNos) - { - var dto = new InStockTask(); - dto.SourceBillNo = item.BillNo; - dto.CreateTime = item.CreateTime; - dto.Create(InstockType.StktransferInst); - - //找到当前对应来源单据编号的集合数据 - var current_erp_details = erp_list.Where(x => x.BillNo == item.BillNo).ToList(); - //给到dto的实体明细中 - dto.Details = _mapper.Map>(current_erp_details); - add_entitys.Add(dto); - } - //3.1提交新增 - var isSuccess = await _inStockTaskRepositories.AddRange(add_entitys, isTransaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); - } - - return Result.ReSuccess(); + return await this.SysnData(erp_list.ToList(), isTransaction); } /// @@ -439,7 +205,7 @@ namespace WMS.Web.Domain.Services /// public async Task SysnAssembledApp(List billNos = null, bool isTransaction = true) { - var erp_list = new List(); + var erp_list = new List(); //1.获取金蝶数据:组装成品入库订单数据 var erp_result_ass = await _erpService.BillQueryForAssembledApp_Assembly(billNos); @@ -456,8 +222,79 @@ namespace WMS.Web.Domain.Services erp_list.AddRange(erp_list_disass); - //2.通过单据编号找到wms系统现有的任务单;并修改 - var erp_removeList = new List(); + return await this.SysnData(erp_list, isTransaction); + } + + /// + /// 同步 + /// + /// + /// + public async Task Sysn(List billNos = null) + { + //1.事务 + IDbContextTransaction _transaction = _basicsRepositories.GetTransaction(); + bool isRollback = false; + bool isTransaction = false; + + //3.同步数据 + var result = await this.InStock(billNos, isTransaction); + if (!result.IsSuccess) isRollback = true; + + //3.提交事务 + var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction); + if (!isSuccess) + return Result.ReFailure(ResultCodes.DateWriteError); + + return Result.ReSuccess(); + } + + /// + /// 同步:入库单类型的数据 + /// + /// + /// + /// + public async Task InStock(List billNos,bool isTransaction) + { + //1.同步数据:采购订单 + var purchase_result = await this.SsynPurchaseInStock(billNos, isTransaction); + if (!purchase_result.IsSuccess) + return Result.ReFailure(purchase_result.Message, purchase_result.Status); + + //2.同步数据:其他入库单 + var miscellaneou_result = await this.SysnMiscellaneous(billNos, isTransaction); + if (!miscellaneou_result.IsSuccess) + return Result.ReFailure(miscellaneou_result.Message, miscellaneou_result.Status); + + //3.同步数据:直接调拨入库单 + var TransferDirect_result = await this.SysnTransferDirect(billNos, isTransaction); + if (!TransferDirect_result.IsSuccess) + return Result.ReFailure(TransferDirect_result.Message, TransferDirect_result.Status); + + //4.同步数据:分步式入库单 + var Transferin_result = await this.SysnTransferin(billNos, isTransaction); + if (!Transferin_result.IsSuccess) + return Result.ReFailure(Transferin_result.Message, Transferin_result.Status); + + //5.同步数据:组装拆卸单 + var AssembledApp_result = await this.SysnAssembledApp(billNos, isTransaction); + if (!AssembledApp_result.IsSuccess) + return Result.ReFailure(AssembledApp_result.Message, AssembledApp_result.Status); + + return Result.ReSuccess(); + } + + /// + /// ERP数据同步到WMS数据库 + /// + /// + /// + /// + public async Task SysnData(List erp_list, bool isTransaction) + { + //1.通过单据编号找到wms系统现有的任务单;并修改 + var erp_removeList = new List(); var SourceBillNo_list = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList(); var data_list = await _inStockTaskRepositories.GetListBy(SourceBillNo_list); if (data_list.Count != 0) @@ -474,6 +311,7 @@ namespace WMS.Web.Domain.Services { //2.1.2修改数量 item.AccruedQty = erp_data.Qty; + item.DeliveredQty = erp_data.DeliveredQty; erp_removeList.Add(erp_data); } } @@ -494,16 +332,16 @@ namespace WMS.Web.Domain.Services if (erp_list.Count != 0) { var add_entitys = new List(); - var current_billNos = erp_list.GroupBy(x => new { x.BillNo, x.CreateTime }).Select(x => new { x.Key.BillNo, x.Key.CreateTime }).ToList(); + var current_billNos = erp_list.GroupBy(x => x.BillNo).Select(x => x.Key).ToList(); + foreach (var item in current_billNos) { + var current_order= erp_list.Where(x => x.BillNo == item).FirstOrDefault(); var dto = new InStockTask(); - dto.SourceBillNo = item.BillNo; - dto.CreateTime = item.CreateTime; - dto.Create(InstockType.Assembled); + dto.Create((InstockType)current_order.Type, current_order.BillNo, current_order.CreateTime); //找到当前对应来源单据编号的集合数据 - var current_erp_details = erp_list.Where(x => x.BillNo == item.BillNo).ToList(); + var current_erp_details = erp_list.Where(x => x.BillNo == item).ToList(); //给到dto的实体明细中 dto.Details = _mapper.Map>(current_erp_details); add_entitys.Add(dto); diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 9ac39bd0..d03309ab 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -141,21 +141,21 @@ namespace WMS.Web.Domain.Services.Public /// 模糊搜索 /// 单据编号集合精确查找 /// - public async Task> BillQueryForPurchaseInStock(List sourceBillNos = null) + public async Task> BillQueryForPurchaseInStock(List sourceBillNos = null) { try { var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); if (stocks.Count == 0) - return ResultList.ReFailure(ResultCodes.ErpStockNoData); + return ResultList.ReFailure(ResultCodes.ErpStockNoData); var stocks_codes = stocks.Select(x => x.Code).ToList(); //1.先登录金蝶-拿到token var token_result = await this.Init(); if (!token_result.IsSuccess) - return ResultList.ReFailure(token_result); + return ResultList.ReFailure(token_result); //2.时间条件:可能还有其它条件 var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); @@ -163,7 +163,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.PUR_PurchaseOrder.ToString()); - param.FieldKeys = "FBillNo,FSupplierId,FPurchaseOrgId,FModel,FMaterialName,FMaterialId,FSOSTOCKID,FQty,FEntryNote,FCreateDate,FCHUCHANGPRICE,FSOSTOCKID.FNumber,FStockInQty,FDocumentStatus,FBillTypeID,FMRPCloseStatus,FBillTypeID.FName"; + param.FieldKeys = "FBillNo,FSupplierId,FPurchaseOrgId,FMaterialId,FSOSTOCKID,FQty,FEntryNote,FCreateDate,FCHUCHANGPRICE,FSOSTOCKID.FNumber,FStockInQty"; param.Limit = 10000; //查询条件:备注其中的条件值以金蝶的值为准!!! //1.创建时间在两天前和当天时间之间 @@ -217,34 +217,29 @@ namespace WMS.Web.Domain.Services.Public var result = JsonConvert.DeserializeObject>>(result_json); //5.返回数据的组装 - var erp_list = new List(); + var erp_list = new List(); foreach (var item in result) { - var lis = new ErpPurchaseInStockResultDto(); - lis.FBillNo = item[0]; - lis.FSupplierId = Convert.ToInt32(item[1]); - lis.FPurchaseOrgId = Convert.ToInt32(item[2]); - 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]); - lis.FCHUCHANGPRICE = Convert.ToDecimal(item[10]); - lis.StockFNumber = item[11]; - lis.FStockInQty = Convert.ToDecimal(item[12]); - lis.FDocumentStatus = item[13]; - lis.FBillTypeID = item[14]; - lis.FMRPCloseStatus = item[15]; - lis.FBillTypeFName = item[16]; + var lis = new ErpInStockResultDto(); + lis.BillNo = item[0]; + lis.SupplierId = Convert.ToInt32(item[1]); + lis.OrgId = Convert.ToInt32(item[2]); + lis.MaterialId = Convert.ToInt32(item[3]); + lis.StockId = Convert.ToInt32(item[4]); + lis.Qty = Convert.ToDecimal(item[5]); + lis.Remark = item[6]; + lis.CreateTime = Convert.ToDateTime(item[7]); + lis.FactoryPrice = Convert.ToDecimal(item[8]); + lis.StockCode = item[9]; + lis.DeliveredQty = Convert.ToDecimal(item[10]); + lis.Type = (int)InstockType.Purchase; erp_list.Add(lis); } - return ResultList.ReSuccess(erp_list); + return ResultList.ReSuccess(erp_list); } catch (Exception ex) { - return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); } } @@ -253,21 +248,21 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForMiscellaneous(List sourceBillNos = null) + public async Task> BillQueryForMiscellaneous(List sourceBillNos = null) { try { var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); if (stocks.Count == 0) - return ResultList.ReFailure(ResultCodes.ErpStockNoData); + return ResultList.ReFailure(ResultCodes.ErpStockNoData); var stocks_codes = stocks.Select(x => x.Code).ToList(); //1.先登录金蝶-拿到token var token_result = await this.Init(); if (!token_result.IsSuccess) - return ResultList.ReFailure(token_result); + return ResultList.ReFailure(token_result); //2.时间条件:可能还有其它条件 var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); @@ -328,25 +323,26 @@ namespace WMS.Web.Domain.Services.Public var result = JsonConvert.DeserializeObject>>(result_json); //5.返回数据的组装 - var erp_list = new List(); + var erp_list = new List(); foreach (var item in result) { - var lis = new ErpMiscellaneousDto(); - lis.BillNo =item[0]; - lis.StockOrgId = Convert.ToInt32(item[1]); + var lis = new ErpInStockResultDto(); + lis.BillNo = item[0]; + lis.OrgId = Convert.ToInt32(item[1]); lis.MaterialId = Convert.ToInt32(item[2]); lis.StockId = Convert.ToInt32(item[3]); lis.StockCode = item[4]; lis.Qty = Convert.ToDecimal(item[5]); lis.CreateTime = Convert.ToDateTime(item[6]); lis.Remark = item[7]; + lis.Type = (int)InstockType.Miscellaneous; erp_list.Add(lis); } - return ResultList.ReSuccess(erp_list); + return ResultList.ReSuccess(erp_list); } catch (Exception ex) { - return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); } } @@ -355,21 +351,21 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForTransferDirect(List sourceBillNos = null) + public async Task> BillQueryForTransferDirect(List sourceBillNos = null) { try { var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); if (stocks.Count == 0) - return ResultList.ReFailure(ResultCodes.ErpStockNoData); + return ResultList.ReFailure(ResultCodes.ErpStockNoData); var stocks_codes = stocks.Select(x => x.Code).ToList(); //1.先登录金蝶-拿到token var token_result = await this.Init(); if (!token_result.IsSuccess) - return ResultList.ReFailure(token_result); + return ResultList.ReFailure(token_result); //2.时间条件:可能还有其它条件 var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); @@ -430,25 +426,26 @@ namespace WMS.Web.Domain.Services.Public var result = JsonConvert.DeserializeObject>>(result_json); //5.返回数据的组装 - var erp_list = new List(); + var erp_list = new List(); foreach (var item in result) { - var lis = new ErpTransferDirectDto(); + var lis = new ErpInStockResultDto(); lis.BillNo = item[0]; - lis.StockOrgId = Convert.ToInt32(item[1]); + lis.OrgId = Convert.ToInt32(item[1]); lis.MaterialId = Convert.ToInt32(item[2]); - lis.DestStockId = Convert.ToInt32(item[3]); - lis.DestStockCode = item[4]; + lis.StockId = Convert.ToInt32(item[3]); + lis.StockCode = item[4]; lis.Qty = Convert.ToDecimal(item[5]); lis.CreateTime = Convert.ToDateTime(item[6]); lis.Remark = item[7]; + lis.Type = (int)InstockType.Stkdirecttransfers; erp_list.Add(lis); } - return ResultList.ReSuccess(erp_list); + return ResultList.ReSuccess(erp_list); } catch (Exception ex) { - return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); } } @@ -457,21 +454,21 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForTransferin(List sourceBillNos = null) + public async Task> BillQueryForTransferin(List sourceBillNos = null) { try { var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); if (stocks.Count == 0) - return ResultList.ReFailure(ResultCodes.ErpStockNoData); + return ResultList.ReFailure(ResultCodes.ErpStockNoData); var stocks_codes = stocks.Select(x => x.Code).ToList(); //1.先登录金蝶-拿到token var token_result = await this.Init(); if (!token_result.IsSuccess) - return ResultList.ReFailure(token_result); + return ResultList.ReFailure(token_result); //2.时间条件:可能还有其它条件 var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); @@ -532,25 +529,26 @@ namespace WMS.Web.Domain.Services.Public var result = JsonConvert.DeserializeObject>>(result_json); //5.返回数据的组装 - var erp_list = new List(); + var erp_list = new List(); foreach (var item in result) { - var lis = new ErpTransferinDto(); + var lis = new ErpInStockResultDto(); lis.BillNo = item[0]; - lis.StockOrgId = Convert.ToInt32(item[1]); + lis.OrgId = Convert.ToInt32(item[1]); lis.MaterialId = Convert.ToInt32(item[2]); - lis.DestStockId = Convert.ToInt32(item[3]); - lis.DestStockCode = item[4]; + lis.StockId = Convert.ToInt32(item[3]); + lis.StockCode = item[4]; lis.Qty = Convert.ToDecimal(item[5]); lis.CreateTime = Convert.ToDateTime(item[6]); lis.Remark = item[7]; + lis.Type = (int)InstockType.StktransferInst; erp_list.Add(lis); } - return ResultList.ReSuccess(erp_list); + return ResultList.ReSuccess(erp_list); } catch (Exception ex) { - return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); } } @@ -559,21 +557,21 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null) + public async Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null) { try { var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); if (stocks.Count == 0) - return ResultList.ReFailure(ResultCodes.ErpStockNoData); + return ResultList.ReFailure(ResultCodes.ErpStockNoData); var stocks_codes = stocks.Select(x => x.Code).ToList(); //1.先登录金蝶-拿到token var token_result = await this.Init(); if (!token_result.IsSuccess) - return ResultList.ReFailure(token_result); + return ResultList.ReFailure(token_result); //2.时间条件:可能还有其它条件 var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); @@ -635,10 +633,10 @@ namespace WMS.Web.Domain.Services.Public var result = JsonConvert.DeserializeObject>>(result_json); //5.返回数据的组装 - var erp_list = new List(); + var erp_list = new List(); foreach (var item in result) { - var lis = new ErpAssembledAppDto(); + var lis = new ErpInStockResultDto(); lis.BillNo = item[0]; lis.OrgId = Convert.ToInt32(item[1]); lis.MaterialId = Convert.ToInt32(item[2]); @@ -647,13 +645,14 @@ namespace WMS.Web.Domain.Services.Public lis.Qty = Convert.ToDecimal(item[5]); lis.CreateTime = Convert.ToDateTime(item[6]); lis.Remark = item[7]; + lis.Type = (int)InstockType.Assembled; erp_list.Add(lis); } - return ResultList.ReSuccess(erp_list); + return ResultList.ReSuccess(erp_list); } catch (Exception ex) { - return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); } } @@ -662,21 +661,21 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null) + public async Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null) { try { var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); if (stocks.Count == 0) - return ResultList.ReFailure(ResultCodes.ErpStockNoData); + return ResultList.ReFailure(ResultCodes.ErpStockNoData); var stocks_codes = stocks.Select(x => x.Code).ToList(); //1.先登录金蝶-拿到token var token_result = await this.Init(); if (!token_result.IsSuccess) - return ResultList.ReFailure(token_result); + return ResultList.ReFailure(token_result); //2.时间条件:可能还有其它条件 var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); @@ -738,10 +737,10 @@ namespace WMS.Web.Domain.Services.Public var result = JsonConvert.DeserializeObject>>(result_json); //5.返回数据的组装 - var erp_list = new List(); + var erp_list = new List(); foreach (var item in result) { - var lis = new ErpAssembledAppDto(); + var lis = new ErpInStockResultDto(); lis.BillNo = item[0]; lis.OrgId = Convert.ToInt32(item[1]); lis.MaterialId = Convert.ToInt32(item[2]); @@ -750,13 +749,14 @@ namespace WMS.Web.Domain.Services.Public lis.Qty = Convert.ToDecimal(item[5]); lis.CreateTime = Convert.ToDateTime(item[6]); lis.Remark = item[7]; + lis.Type = (int)InstockType.Assembled; erp_list.Add(lis); } - return ResultList.ReSuccess(erp_list); + return ResultList.ReSuccess(erp_list); } catch (Exception ex) { - return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); } }