diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index decf6cbc..f7ad0aa6 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -35,7 +35,7 @@ namespace WMS.Web.Api.Controllers [Route("hj")] public async Task TestHJ() { - var res = await this._erpService.BillQueryForDeliveryNoticeOutStock(); + var res = await this._erpService.BillQueryForTransferDirectOutStock(); //var result= await this._erpService.BillQueryForPurchaseInStock(); //var result = await this._erpService.BillQueryForOrg(); var result = await this._erpService.BillQueryForMaterial(); diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index e52b42f5..1619210c 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -675,6 +675,11 @@ 创建时间(erp那边的创建时间) + + + 用来自动构建单据类型 跟OutStockType 一致 + + 出库单同步金蝶 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 925140bc..3944b0be 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -746,7 +746,7 @@ 明细 - + 创建 @@ -1332,9 +1332,24 @@ 修改实体集合 + + + 批量添加 + + + + + 查询实体集合 + + + 列表-根据明细中的来源单号 + + + + 修改实体集合 @@ -1456,7 +1471,37 @@ - erp:单据查询-采购入库单 + erp:单据查询-出库单 + + + + + + erp:单据查询-直接调拨出库 + + + + + + erp:单据查询-分布式调出 + + + + + + erp:单据查询-组装拆卸单(拆卸 主出) + + + + + + erp:单据查询-组装拆卸单(组装 子出) + + + + + + erp:单据查询-其他出库 @@ -1553,13 +1598,37 @@ 出库任务 - + 采购发货通知单 + + + erp:单据查询-直接调拨出库 + + + + + + erp:单据查询-分布式调出 + + + + + + erp:单据查询-组装拆卸单(拆卸 主出) 组装 子出 + + + + + + erp:单据查询-其他出库 + + + 单点数据返回服务接口 @@ -2104,13 +2173,53 @@ - + + + erp数据转化wms 执行数据库操作 + + + + + + 发货通知单同步数据 + + + 直接调拨 + + + + + + + + 分布式调出 + + + + + + + + 组装拆卸单 + + + + + + + + 其他入库单 + + + + + erp数据交互服务 @@ -2161,6 +2270,41 @@ + + + 直接调拨出库 + + + + + + + 分布式调出 + + + + + + + 组装拆卸单 (拆卸 主出) + + + + + + + 其他出库 + + + + + + + 组装拆卸单 (组装 子出) + + + + Get方法 @@ -2623,6 +2767,16 @@ 销售发货通知单 + + + 其他出库单 + + + + + 分布式调出单 + + 入库状态 diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs index ad9f1dec..52aefd13 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -19,12 +19,35 @@ namespace WMS.Web.Domain.IService.Public /// Task> BillQueryForPurchaseInStock(); /// - /// erp:单据查询-采购入库单 + /// erp:单据查询-出库单 /// /// Task> BillQueryForDeliveryNoticeOutStock(List sourceBillNos = null); - - + /// + /// erp:单据查询-直接调拨出库 + /// + /// + Task> BillQueryForTransferDirectOutStock(List sourceBillNos = null); + /// + /// erp:单据查询-分布式调出 + /// + /// + Task> BillQueryForTransferOutOutStock(List sourceBillNos = null); + /// + /// erp:单据查询-组装拆卸单(拆卸 主出) + /// + /// + Task> BillQueryForAssembledAppOutStock_Dassembly(List sourceBillNos = null); + /// + /// erp:单据查询-组装拆卸单(组装 子出) + /// + /// + Task> BillQueryForAssembledAppOutStock_Assembly(List sourceBillNos = null); + /// + /// erp:单据查询-其他出库 + /// + /// + Task> BillQueryForMisDeliveryOutStock(List sourceBillNos = null); /// /// erp:单据查询-物料 /// diff --git a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs index 2ef222e7..4df6006e 100644 --- a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs +++ b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; 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.Internal.Results; @@ -19,6 +20,26 @@ namespace WMS.Web.Domain.IService.Public /// /// Task SsynDeliveryNoticeOutStock(bool isTransaction,List sourceBillNos = null); + /// + /// erp:单据查询-直接调拨出库 + /// + /// + Task BillQueryForTransferDirectOutStock(bool isTransaction, List sourceBillNos = null); + /// + /// erp:单据查询-分布式调出 + /// + /// + Task BillQueryForTransferOutOutStock(bool isTransaction, List sourceBillNos = null); + /// + /// erp:单据查询-组装拆卸单(拆卸 主出) 组装 子出 + /// + /// + Task BillQueryForAssembledAppOutStock(bool isTransaction, List sourceBillNos = null); + /// + /// erp:单据查询-其他出库 + /// + /// + Task BillQueryForMisDeliveryOutStock(bool isTransaction, List sourceBillNos = null); //出库任务作废 Task Repeal(OperateRequest dto, LoginInDto loginInfo); //出库任务作废 diff --git a/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs new file mode 100644 index 00000000..a8f6a448 --- /dev/null +++ b/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs @@ -0,0 +1,81 @@ +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Quartz; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Domain.Infrastructure; +using WMS.Web.Domain.IService; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Options; + +namespace WMS.Web.Domain.QuartzJob +{ + public class OutStockOrderQuartzJob : IJob + { + private readonly ILogger _logger; + private readonly IServiceScopeFactory _serviceScopeFactory; + private readonly AppOptions _options; + private readonly IOutStockTaskService _outStockTaskService; + private readonly ITransactionRepositories _transactionRepositories; + + public OutStockOrderQuartzJob(ILogger logger, + IServiceScopeFactory serviceScopeFactory, + IOptions options, + IOutStockTaskService inStockTaskService, + ITransactionRepositories transactionRepositories) + { + this._logger = logger; + _serviceScopeFactory = serviceScopeFactory; + this._options = options?.Value; + _outStockTaskService = inStockTaskService; + _transactionRepositories = transactionRepositories; + } + + /// + /// 执行方法 + /// + /// + /// + public async Task Execute(IJobExecutionContext context) + { + try + { + //1.事务 + IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); + bool isRollback = false; + bool isTransaction = false; + //2.记录:开始时间 + var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + _logger.LogInformation($"出库单-同步金蝶入库单数据:执行开始时间->{begindatetime}"); + //3.同步数据 + var result = await _outStockTaskService.SsynDeliveryNoticeOutStock(isTransaction); + if (!result.IsSuccess) isRollback = true; + result = await _outStockTaskService.BillQueryForTransferDirectOutStock(isTransaction); + if (!result.IsSuccess) isRollback = true; + result = await _outStockTaskService.BillQueryForTransferOutOutStock(isTransaction); + if (!result.IsSuccess) isRollback = true; + result = await _outStockTaskService.BillQueryForMisDeliveryOutStock(isTransaction); + if (!result.IsSuccess) isRollback = true; + result = await _outStockTaskService.BillQueryForAssembledAppOutStock(isTransaction); + if (!result.IsSuccess) isRollback = true; + + //4.提交事务 + var isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + + //5.记录:结束时间 + var enddatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + _logger.LogInformation($"出库单-同步金蝶入库单数据:执行结束时间->{begindatetime}"); + + } + catch (Exception ex) + { + _logger.LogInformation($"同步金蝶入库单数据:定时任务执行失败->{ex.Message}"); + } + + } + } +} diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index 727b193b..df8014c5 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -167,5 +167,69 @@ namespace WMS.Web.Domain.Services return await this.SsynDate(erp_result.Data.ToList(), isTransaction); } + /// + /// 直接调拨 + /// + /// + /// + /// + public async Task BillQueryForTransferDirectOutStock(bool isTransaction, List sourceBillNos = null) + { + var erp_result = await _erpService.BillQueryForTransferDirectOutStock(sourceBillNos); + if (!erp_result.IsSuccess) + return Result.ReFailure(erp_result.Message, erp_result.Status); + + return await this.SsynDate(erp_result.Data.ToList(), isTransaction); + } + /// + /// 分布式调出 + /// + /// + /// + /// + public async Task BillQueryForTransferOutOutStock(bool isTransaction, List sourceBillNos = null) + { + var erp_result = await _erpService.BillQueryForTransferOutOutStock(sourceBillNos); + if (!erp_result.IsSuccess) + return Result.ReFailure(erp_result.Message, erp_result.Status); + + return await this.SsynDate(erp_result.Data.ToList(), isTransaction); + } + /// + /// 组装拆卸单 + /// + /// + /// + /// + public async Task BillQueryForAssembledAppOutStock(bool isTransaction, List sourceBillNos = null) + { + List list = new List(); + + var erp_result = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(sourceBillNos); + if (!erp_result.IsSuccess) + return Result.ReFailure(erp_result.Message, erp_result.Status); + list.AddRange(erp_result.Data); + + var erp_result_a = await _erpService.BillQueryForAssembledAppOutStock_Assembly(sourceBillNos); + if (!erp_result_a.IsSuccess) + return Result.ReFailure(erp_result_a.Message, erp_result_a.Status); + list.AddRange(erp_result_a.Data); + + return await this.SsynDate(list, isTransaction); + } + /// + /// 其他入库单 + /// + /// + /// + /// + public async Task BillQueryForMisDeliveryOutStock(bool isTransaction, List sourceBillNos = null) + { + var erp_result = await _erpService.BillQueryForMisDeliveryOutStock(sourceBillNos); + if (!erp_result.IsSuccess) + return Result.ReFailure(erp_result.Message, erp_result.Status); + + return await this.SsynDate(erp_result.Data.ToList(), isTransaction); + } } } diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 7efc9431..1d4dbf3f 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -363,6 +363,7 @@ namespace WMS.Web.Domain.Services.Public return Result.ReSuccess(); } + #region 出库 public async Task> BillQueryForDeliveryNoticeOutStock(List sourceBillNos = null) { try @@ -379,7 +380,7 @@ namespace WMS.Web.Domain.Services.Public return ResultList.ReFailure(token_result); //2.时间条件:可能还有其它条件 - var beginTime = DateTime.Now.AddDays(-2000).ToString("yyyy-MM-dd 00:00:00"); + 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); @@ -434,5 +435,386 @@ namespace WMS.Web.Domain.Services.Public return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); } } + /// + /// 直接调拨出库 + /// + /// + /// + public async Task> BillQueryForTransferDirectOutStock(List sourceBillNos = null) + { + try + { + + var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); + if (stocks.Count == 0) + return ResultList.ReFailure(ResultCodes.ErpStockNoData); + var stocks_codes = stocks.Select(x => x.Id).ToList(); + + //1.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + + //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_TransferDirect.ToString()); + param.FieldKeys = "FBillNo,'',FStockOutOrgId,FStockOrgId,FMaterialID,FSrcStockId,FSrcStockLocId,FQty,FNoteEntry,FCreateDate"; + param.Limit = 10; + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.创建时间在两天前和当天时间之间 + //2.审核状态:已审核 + //3.未出库数量>0 + //4.日期>=系统上线之日 + //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 + param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C'"; + //string srt = JsonConvert.SerializeObject(stocks_codes); + //param.FilterString = param.FilterString + " and FSrcStockId in (" + srt.Substring(1, srt.Length - 2) + ")"; + + //根据原订单号查询 + if (sourceBillNos != null && sourceBillNos.Count() > 0) + { + var srt_b = JsonConvert.SerializeObject(sourceBillNos); + param.FilterString = param.FilterString + " and FBillNo in (" + srt_b.Substring(1, srt_b.Length - 2) + ")"; + } + 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 erp_list = new List(); + foreach (var item in result) + { + var lis = new ErpDeliveryNoticeOutStockResultDto(); + lis.SourceBillNo = item[0]; + lis.SaleBillNo = item[1]; + lis.DeliveryOrgId = Convert.ToInt32(item[2]); + lis.ReceiptCustomerId = Convert.ToInt32(item[3]); + lis.MaterialId = Convert.ToInt32(item[4]); + lis.StockId = Convert.ToInt32(item[5]); + lis.SubStockId = Convert.ToInt32(item[6]); + lis.AccruedQty = Convert.ToDecimal(item[7]); + lis.Remark = item[8]; + lis.CreateTime = Convert.ToDateTime(item[9]); + lis.Type = (int)OutStockType.Stkdirecttransfers; + erp_list.Add(lis); + } + return ResultList.ReSuccess(erp_list); + } + catch (Exception ex) + { + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + } + } + /// + /// 分布式调出 + /// + /// + /// + public async Task> BillQueryForTransferOutOutStock(List sourceBillNos = null) + { + try + { + + var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); + if (stocks.Count == 0) + return ResultList.ReFailure(ResultCodes.ErpStockNoData); + var stocks_codes = stocks.Select(x => x.Id).ToList(); + + //1.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + + //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_TRANSFEROUT.ToString()); + param.FieldKeys = "FBillNo,'',FStockOrgID,FStockInOrgID,FMaterialID,FSrcStockID,FSrcStockLocId,FQty,FEntryNote,FCreateDate"; + param.Limit = 10; + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.创建时间在两天前和当天时间之间 + //2.审核状态:已审核 + //3.未出库数量>0 + //4.日期>=系统上线之日 + //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 + param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C'"; + //string srt = JsonConvert.SerializeObject(stocks_codes); + //param.FilterString = param.FilterString + " and FSrcStockID in (" + srt.Substring(1, srt.Length - 2) + ")"; + + //根据原订单号查询 + if (sourceBillNos != null && sourceBillNos.Count() > 0) + { + var srt_b = JsonConvert.SerializeObject(sourceBillNos); + param.FilterString = param.FilterString + " and FBillNo in (" + srt_b.Substring(1, srt_b.Length - 2) + ")"; + } + 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 erp_list = new List(); + foreach (var item in result) + { + var lis = new ErpDeliveryNoticeOutStockResultDto(); + lis.SourceBillNo = item[0]; + lis.SaleBillNo = item[1]; + lis.DeliveryOrgId = Convert.ToInt32(item[2]); + lis.ReceiptCustomerId = Convert.ToInt32(item[3]); + lis.MaterialId = Convert.ToInt32(item[4]); + lis.StockId = Convert.ToInt32(item[5]); + lis.SubStockId = Convert.ToInt32(item[6]); + lis.AccruedQty = Convert.ToDecimal(item[7]); + lis.Remark = item[8]; + lis.CreateTime = Convert.ToDateTime(item[9]); + lis.Type = (int)OutStockType.StktransferInst; + erp_list.Add(lis); + } + return ResultList.ReSuccess(erp_list); + } + catch (Exception ex) + { + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + } + } + /// + /// 组装拆卸单 (拆卸 主出) + /// + /// + /// + public async Task> BillQueryForAssembledAppOutStock_Dassembly(List sourceBillNos = null) + { + try + { + + var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); + if (stocks.Count == 0) + return ResultList.ReFailure(ResultCodes.ErpStockNoData); + var stocks_codes = stocks.Select(x => x.Id).ToList(); + + //1.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + + //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_AssembledApp.ToString()); + param.FieldKeys = "FBillNo,'','','',FMaterialID,FStockID,FStockLocId,FQty,FDescription,FCreateDate"; + param.Limit = 10; + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.创建时间在两天前和当天时间之间 + //2.审核状态:已审核 + //3.未出库数量>0 + //4.日期>=系统上线之日 + //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 FBillTypeID + param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and FAffairType='Dassembly'"; + //string srt = JsonConvert.SerializeObject(stocks_codes); + //param.FilterString = param.FilterString + " and FSrcStockID in (" + srt.Substring(1, srt.Length - 2) + ")"; + + //根据原订单号查询 + if (sourceBillNos != null && sourceBillNos.Count() > 0) + { + var srt_b = JsonConvert.SerializeObject(sourceBillNos); + param.FilterString = param.FilterString + " and FBillNo in (" + srt_b.Substring(1, srt_b.Length - 2) + ")"; + } + 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 erp_list = new List(); + foreach (var item in result) + { + var lis = new ErpDeliveryNoticeOutStockResultDto(); + lis.SourceBillNo = item[0]; + lis.SaleBillNo = item[1]; + lis.DeliveryOrgId = Convert.ToInt32(item[2]); + lis.ReceiptCustomerId = Convert.ToInt32(item[3]); + lis.MaterialId = Convert.ToInt32(item[4]); + lis.StockId = Convert.ToInt32(item[5]); + lis.SubStockId = Convert.ToInt32(item[6]); + lis.AccruedQty = Convert.ToDecimal(item[7]); + lis.Remark = item[8]; + lis.CreateTime = Convert.ToDateTime(item[9]); + lis.Type = (int)OutStockType.Assembled; + erp_list.Add(lis); + } + return ResultList.ReSuccess(erp_list); + } + catch (Exception ex) + { + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + } + } + /// + /// 其他出库 + /// + /// + /// + public async Task> BillQueryForMisDeliveryOutStock(List sourceBillNos = null) + { + try + { + + var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); + if (stocks.Count == 0) + return ResultList.ReFailure(ResultCodes.ErpStockNoData); + var stocks_codes = stocks.Select(x => x.Id).ToList(); + + //1.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + + //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_MisDelivery.ToString()); + param.FieldKeys = "FBillNo,'',FStockOrgId,FPickOrgId,FMaterialId,FStockId,FStockLocId ,FQty,FEntryNote,FCreateDate"; + param.Limit = 10; + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.创建时间在两天前和当天时间之间 + //2.审核状态:已审核 + //3.未出库数量>0 + //4.日期>=系统上线之日 + //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 + param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C'"; + //string srt = JsonConvert.SerializeObject(stocks_codes); + //param.FilterString = param.FilterString + " and FSrcStockID in (" + srt.Substring(1, srt.Length - 2) + ")"; + + //根据原订单号查询 + if (sourceBillNos != null && sourceBillNos.Count() > 0) + { + var srt_b = JsonConvert.SerializeObject(sourceBillNos); + param.FilterString = param.FilterString + " and FBillNo in (" + srt_b.Substring(1, srt_b.Length - 2) + ")"; + } + 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 erp_list = new List(); + foreach (var item in result) + { + var lis = new ErpDeliveryNoticeOutStockResultDto(); + lis.SourceBillNo = item[0]; + lis.SaleBillNo = item[1]; + lis.DeliveryOrgId = Convert.ToInt32(item[2]); + lis.ReceiptCustomerId = Convert.ToInt32(item[3]); + lis.MaterialId = Convert.ToInt32(item[4]); + lis.StockId = Convert.ToInt32(item[5]); + lis.SubStockId = Convert.ToInt32(item[6]); + lis.AccruedQty = Convert.ToDecimal(item[7]); + lis.Remark = item[8]; + lis.CreateTime = Convert.ToDateTime(item[9]); + lis.Type = (int)OutStockType.Miscellaneous; + erp_list.Add(lis); + } + return ResultList.ReSuccess(erp_list); + } + catch (Exception ex) + { + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + } + } + /// + /// 组装拆卸单 (组装 子出) + /// + /// + /// + public async Task> BillQueryForAssembledAppOutStock_Assembly(List sourceBillNos = null) + { + try + { + + var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); + if (stocks.Count == 0) + return ResultList.ReFailure(ResultCodes.ErpStockNoData); + var stocks_codes = stocks.Select(x => x.Id).ToList(); + + //1.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + + //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_AssembledApp.ToString()); + param.FieldKeys = "FBillNo,'',FSubProOwnerIdH,FOwnerIdHead,FMaterialIDSETY,FStockIDSETY,FStockLocIdSETY,FQtySETY,FDescriptionSETY,FCreateDate"; + param.Limit = 10; + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.创建时间在两天前和当天时间之间 + //2.审核状态:已审核 + //3.未出库数量>0 + //4.日期>=系统上线之日 + //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 FBillTypeID + param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and FAffairType='Assembly'"; + //string srt = JsonConvert.SerializeObject(stocks_codes); + //param.FilterString = param.FilterString + " and FSrcStockID in (" + srt.Substring(1, srt.Length - 2) + ")"; + + //根据原订单号查询 + if (sourceBillNos != null && sourceBillNos.Count() > 0) + { + var srt_b = JsonConvert.SerializeObject(sourceBillNos); + param.FilterString = param.FilterString + " and FBillNo in (" + srt_b.Substring(1, srt_b.Length - 2) + ")"; + } + 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 erp_list = new List(); + foreach (var item in result) + { + var lis = new ErpDeliveryNoticeOutStockResultDto(); + lis.SourceBillNo = item[0]; + lis.SaleBillNo = item[1]; + lis.DeliveryOrgId = Convert.ToInt32(item[2]); + lis.ReceiptCustomerId = Convert.ToInt32(item[3]); + lis.MaterialId = Convert.ToInt32(item[4]); + lis.StockId = Convert.ToInt32(item[5]); + lis.SubStockId = Convert.ToInt32(item[6]); + lis.AccruedQty = Convert.ToDecimal(item[7]); + lis.Remark = item[8]; + lis.CreateTime = Convert.ToDateTime(item[9]); + lis.Type = (int)OutStockType.Assembled; + erp_list.Add(lis); + } + return ResultList.ReSuccess(erp_list); + } + catch (Exception ex) + { + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + } + } + #endregion } } diff --git a/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs b/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs index 0e2367f2..9221849a 100644 --- a/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs +++ b/src/WMS.Web.Domain/Values/Erp/FormIdParam.cs @@ -60,6 +60,14 @@ namespace WMS.Web.Domain.Values.Erp /// /// 销售发货通知单 /// - SAL_DELIVERYNOTICE = 13 + SAL_DELIVERYNOTICE = 13, + /// + /// 其他出库单 + /// + STK_MisDelivery=14, + /// + /// 分布式调出单 + /// + STK_TRANSFEROUT=15 } } diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index 2ca30412..80282631 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -99,7 +99,7 @@ namespace WMS.Web.Repositories if (!string.IsNullOrEmpty(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); + query = query.Where(w => w.order.Type == (OutStockType)dto.Type); if (dto.SuccessSync != null) query = query.Where(w => w.order.SuccessSync == dto.SuccessSync); if (dto.DeliveryOrgId != null)