From 61c052d1f7dc7e0b80fb2ac4d850b7bb8d685f46 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Fri, 10 Nov 2023 15:15:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=90=8C=E6=AD=A5=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/OutStockTaskController.cs | 4 +- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 90 ++++++++++++++----- src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs | 27 ++++++ .../IService/Public/IErpService.cs | 12 +-- .../IService/Public/IOutStockTaskService.cs | 12 +-- .../IErpOpsSyncDateRepositories.cs | 19 ++++ src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs | 52 +++++++++++ .../QuartzJob/OutStockOrderQuartzJob.cs | 2 +- src/WMS.Web.Domain/Services/BoxService.cs | 13 ++- .../Services/OutStockTaskService.cs | 35 ++++---- .../Services/Public/ErpService.cs | 57 ++++++------ src/WMS.Web.Domain/Values/ErpOpsSyncType.cs | 24 +++++ .../Configuration/RepositoryDbContext.cs | 8 ++ .../AppBuilderExtensions.cs | 1 + .../ErpOpsSyncDateRepositories.cs | 75 ++++++++++++++++ 15 files changed, 350 insertions(+), 81 deletions(-) create mode 100644 src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs create mode 100644 src/WMS.Web.Domain/Infrastructure/IErpOpsSyncDateRepositories.cs create mode 100644 src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs create mode 100644 src/WMS.Web.Domain/Values/ErpOpsSyncType.cs create mode 100644 src/WMS.Web.Repositories/ErpOpsSyncDateRepositories.cs diff --git a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs index 1739a2a8..c132045c 100644 --- a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs @@ -118,7 +118,7 @@ namespace WMS.Web.Api.Controllers return Result.ReFailure(ResultCodes.Token_Invalid_Error); //搜索之前同步金蝶数据 - await _outStockTaskService.Ssyn(new List() { billNo }); + await _outStockTaskService.Sync(new List() { billNo }); var res = await _repositories.GetOutStockTaskByNo(billNo); if (res == null) return Result.ReFailure(ResultCodes.OutStockTaskNoData); @@ -139,7 +139,7 @@ namespace WMS.Web.Api.Controllers if (loginInfo == null || loginInfo.UserInfo == null) return Result.ReFailure(ResultCodes.Token_Invalid_Error); - return await _outStockTaskService.Ssyn(dto.Ids); + return await _outStockTaskService.Sync(dto.Ids); } } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 0448a39a..835ab409 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -274,6 +274,23 @@ + + + erp同步时间管理 记录最新一次重金蝶和ops拉取数据时间 + 系统部署时第一次需要预埋数据 + 定时任务最新一次时间管理 + + + + + 同步类型 + + + + + 最新一次同步时间 + + wms入库单 @@ -1291,6 +1308,11 @@ + + + 定时任务最新一次时间管理 + + wms入库单-仓储接口 @@ -1733,37 +1755,37 @@ - + erp:单据查询-出库单 - + erp:单据查询-直接调拨出库 - + erp:单据查询-分布式调出 - + erp:单据查询-组装拆卸单(拆卸 主出) - + erp:单据查询-组装拆卸单(组装 子出) - + erp:单据查询-其他出库 @@ -1880,38 +1902,38 @@ 出库任务 - + 采购发货通知单 - + erp:单据查询-直接调拨出库 - + erp:单据查询-分布式调出 - + erp:单据查询-组装拆卸单(拆卸 主出) 组装 子出 - + erp:单据查询-其他出库 - + 同步金蝶数据 不传源订单号则更新所有 @@ -2308,6 +2330,13 @@ 私钥 + + + 执行方法 + + + + erp入库任务单-获取定时任务 @@ -2527,14 +2556,14 @@ - + 发货通知单同步数据 - + 直接调拨 @@ -2542,7 +2571,7 @@ - + 分布式调出 @@ -2550,7 +2579,7 @@ - + 组装拆卸单 @@ -2558,7 +2587,7 @@ - + 其他入库单 @@ -2566,7 +2595,7 @@ - + 同步金蝶数据 不传源订单号则更新所有 @@ -2729,35 +2758,35 @@ - + 直接调拨出库 - + 分布式调出 - + 组装拆卸单 (拆卸 主出) - + 其他出库 - + 组装拆卸单 (组装 子出) @@ -3161,6 +3190,21 @@ 出库回退上架 + + + erp和ops同步时间管理 单据类型 + + + + + 老Ops + + + + + 出库单 + + 业务对象表单Id:对应erp的单据表的名称 diff --git a/src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs b/src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs new file mode 100644 index 00000000..c7030575 --- /dev/null +++ b/src/WMS.Web.Domain/Entitys/ErpOpsSyncDate.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text; +using WMS.Web.Domain.Values; + +namespace WMS.Web.Domain.Entitys +{ + /// + /// erp同步时间管理 记录最新一次重金蝶和ops拉取数据时间 + /// 系统部署时第一次需要预埋数据 + /// 定时任务最新一次时间管理 + /// + [Serializable] + [Table("t_wms_sync_date")] + public class ErpOpsSyncDate + { + /// + /// 同步类型 + /// + public ErpOpsSyncType Type { get; set; } = ErpOpsSyncType.Ops; + /// + /// 最新一次同步时间 + /// + public DateTime SyncTime { get; set; } = DateTime.Now; + } +} diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs index 25bfaf13..7453f060 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -24,32 +24,32 @@ namespace WMS.Web.Domain.IService.Public /// erp:单据查询-出库单 /// /// - Task> BillQueryForDeliveryNoticeOutStock(List sourceBillNos = null); + Task> BillQueryForDeliveryNoticeOutStock(List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-直接调拨出库 /// /// - Task> BillQueryForTransferDirectOutStock(List sourceBillNos = null); + Task> BillQueryForTransferDirectOutStock(List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-分布式调出 /// /// - Task> BillQueryForTransferOutOutStock(List sourceBillNos = null); + Task> BillQueryForTransferOutOutStock(List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-组装拆卸单(拆卸 主出) /// /// - Task> BillQueryForAssembledAppOutStock_Dassembly(List sourceBillNos = null); + Task> BillQueryForAssembledAppOutStock_Dassembly(List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-组装拆卸单(组装 子出) /// /// - Task> BillQueryForAssembledAppOutStock_Assembly(List sourceBillNos = null); + Task> BillQueryForAssembledAppOutStock_Assembly(List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-其他出库 /// /// - Task> BillQueryForMisDeliveryOutStock(List sourceBillNos = null); + Task> BillQueryForMisDeliveryOutStock(List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-物料 /// diff --git a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs index 14efef7a..727fb418 100644 --- a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs +++ b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs @@ -19,27 +19,27 @@ namespace WMS.Web.Domain.IService.Public /// /// /// - Task BillQueryForDeliveryNoticeOutStock(bool isTransaction,List sourceBillNos = null); + Task BillQueryForDeliveryNoticeOutStock(bool isTransaction,List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-直接调拨出库 /// /// - Task BillQueryForTransferDirectOutStock(bool isTransaction, List sourceBillNos = null); + Task BillQueryForTransferDirectOutStock(bool isTransaction, List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-分布式调出 /// /// - Task BillQueryForTransferOutOutStock(bool isTransaction, List sourceBillNos = null); + Task BillQueryForTransferOutOutStock(bool isTransaction, List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-组装拆卸单(拆卸 主出) 组装 子出 /// /// - Task BillQueryForAssembledAppOutStock(bool isTransaction, List sourceBillNos = null); + Task BillQueryForAssembledAppOutStock(bool isTransaction, List sourceBillNos = null, DateTime? beginTime = null); /// /// erp:单据查询-其他出库 /// /// - Task BillQueryForMisDeliveryOutStock(bool isTransaction, List sourceBillNos = null); + Task BillQueryForMisDeliveryOutStock(bool isTransaction, List sourceBillNos = null, DateTime? beginTime = null); //出库任务作废 Task Repeal(OperateRequest dto, LoginInDto loginInfo); //出库任务作废 @@ -49,6 +49,6 @@ namespace WMS.Web.Domain.IService.Public /// /// /// - Task Ssyn(List sourceBillNos = null); + Task Sync(List sourceBillNos = null); } } diff --git a/src/WMS.Web.Domain/Infrastructure/IErpOpsSyncDateRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IErpOpsSyncDateRepositories.cs new file mode 100644 index 00000000..a1da83a7 --- /dev/null +++ b/src/WMS.Web.Domain/Infrastructure/IErpOpsSyncDateRepositories.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Domain.Values; + +namespace WMS.Web.Domain.Infrastructure +{ + /// + /// 定时任务最新一次时间管理 + /// + public interface IErpOpsSyncDateRepositories + { + //获取最新一次更新时间 + Task Get(ErpOpsSyncType type); + //定时任务执行后更新时间 + Task Edit(ErpOpsSyncType type, bool isTransaction = true); + } +} diff --git a/src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs new file mode 100644 index 00000000..982291d8 --- /dev/null +++ b/src/WMS.Web.Domain/QuartzJob/BoxQuartzJob.cs @@ -0,0 +1,52 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Quartz; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Domain.IService; + +namespace WMS.Web.Domain.QuartzJob +{ + public class BoxQuartzJob : IJob + { + private readonly ILogger _logger; + private readonly IServiceScopeFactory _serviceScopeFactory; + private readonly IBoxService _boxService; + + public BoxQuartzJob(ILogger logger, + IServiceScopeFactory serviceScopeFactory, IBoxService boxService) + { + this._logger = logger; + _serviceScopeFactory = serviceScopeFactory; + _boxService = boxService; + } + + /// + /// 执行方法 + /// + /// + /// + public async Task Execute(IJobExecutionContext context) + { + try + { + //2.记录:开始时间 + var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + _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}"); + + } + catch (Exception ex) + { + _logger.LogInformation($"同步金蝶入库单数据:定时任务执行失败->{ex.Message}"); + } + + } + } +} diff --git a/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs b/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs index d2cec87c..bd5b0317 100644 --- a/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs +++ b/src/WMS.Web.Domain/QuartzJob/OutStockOrderQuartzJob.cs @@ -48,7 +48,7 @@ namespace WMS.Web.Domain.QuartzJob var begindatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); _logger.LogInformation($"出库单-同步金蝶入库单数据:执行开始时间->{begindatetime}"); //3.同步数据 - var result = await _outStockTaskService.Ssyn(null); + var result = await _outStockTaskService.Sync(null); //5.记录:结束时间 var enddatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); _logger.LogInformation($"出库单-同步金蝶入库单数据:执行结束时间->{begindatetime}"); diff --git a/src/WMS.Web.Domain/Services/BoxService.cs b/src/WMS.Web.Domain/Services/BoxService.cs index 34a98fbc..e08f2c1f 100644 --- a/src/WMS.Web.Domain/Services/BoxService.cs +++ b/src/WMS.Web.Domain/Services/BoxService.cs @@ -26,9 +26,12 @@ namespace WMS.Web.Domain.Services private readonly IBoxRepositories _boxRepositories; private readonly IOpsService _opsService; private readonly ISerialNumberOperateRepositories _serialNumberOperateRepositories; + private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories; public BoxService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, - IBoxRepositories boxRepositories, IOpsService opsService, ISerialNumberOperateRepositories serialNumberOperateRepositories) + IBoxRepositories boxRepositories, IOpsService opsService, + ISerialNumberOperateRepositories serialNumberOperateRepositories, + IErpOpsSyncDateRepositories erpOpsSyncDateRepositories) { _mapper = mapper; _loginService = loginService; @@ -36,11 +39,13 @@ namespace WMS.Web.Domain.Services _boxRepositories = boxRepositories; _opsService = opsService; _serialNumberOperateRepositories = serialNumberOperateRepositories; + _erpOpsSyncDateRepositories = erpOpsSyncDateRepositories; } public async Task Sync() { - OpsBoxRequest request = new OpsBoxRequest(DateTime.Now.AddYears(-1), DateTime.Now); + DateTime begin = await _erpOpsSyncDateRepositories.Get(ErpOpsSyncType.Ops); + OpsBoxRequest request = new OpsBoxRequest(begin, DateTime.Now); var list = await _opsService.GetBox(request); var nos = list.Select(s => s.BoxBillNo).ToList(); var old_nos = await _boxRepositories.GetByNos(nos); @@ -72,7 +77,9 @@ namespace WMS.Web.Domain.Services //序列号操作记录 var res = await this.SerialNumberOperate(sList, false); if (!res.Success) isRollback = true; - + //更新时间管理 + isSuccess = await _erpOpsSyncDateRepositories.Edit(ErpOpsSyncType.Ops, false); + if (!isSuccess) isRollback = true; //提交事务 isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index 9f67e015..5882346c 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -29,9 +29,10 @@ namespace WMS.Web.Domain.Services private readonly IBasicsRepositories _transactionRepositories; private readonly IOutStockRepositories _outStockRepositories; private readonly IOutStockTaskRepositories _outStockTaskRepositories; + private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories; public OutStockTaskService(IMapper mapper, IErpService erpService, ILoginService loginService, IBasicsRepositories transactionRepositories, - IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories) + IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories, IErpOpsSyncDateRepositories erpOpsSyncDateRepositories) { _mapper = mapper; _erpService = erpService; @@ -39,6 +40,7 @@ namespace WMS.Web.Domain.Services _transactionRepositories = transactionRepositories; _outStockRepositories = outStockRepositories; _outStockTaskRepositories = outStockTaskRepositories; + _erpOpsSyncDateRepositories = erpOpsSyncDateRepositories; } /// @@ -158,10 +160,10 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task BillQueryForDeliveryNoticeOutStock(bool isTransaction, List sourceBillNos = null) + public async Task BillQueryForDeliveryNoticeOutStock(bool isTransaction, List sourceBillNos = null, DateTime? beginTime = null) { //1.获取金蝶数据:采购订单数据 - var erp_result = await _erpService.BillQueryForDeliveryNoticeOutStock(sourceBillNos); + var erp_result = await _erpService.BillQueryForDeliveryNoticeOutStock(sourceBillNos, beginTime); if (!erp_result.IsSuccess) return Result.ReFailure(erp_result.Message, erp_result.Status); @@ -173,9 +175,9 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task BillQueryForTransferDirectOutStock(bool isTransaction, List sourceBillNos = null) + public async Task BillQueryForTransferDirectOutStock(bool isTransaction, List sourceBillNos = null, DateTime? beginTime = null) { - var erp_result = await _erpService.BillQueryForTransferDirectOutStock(sourceBillNos); + var erp_result = await _erpService.BillQueryForTransferDirectOutStock(sourceBillNos, beginTime); if (!erp_result.IsSuccess) return Result.ReFailure(erp_result.Message, erp_result.Status); @@ -187,9 +189,9 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task BillQueryForTransferOutOutStock(bool isTransaction, List sourceBillNos = null) + public async Task BillQueryForTransferOutOutStock(bool isTransaction, List sourceBillNos = null, DateTime? beginTime = null) { - var erp_result = await _erpService.BillQueryForTransferOutOutStock(sourceBillNos); + var erp_result = await _erpService.BillQueryForTransferOutOutStock(sourceBillNos, beginTime); if (!erp_result.IsSuccess) return Result.ReFailure(erp_result.Message, erp_result.Status); @@ -201,16 +203,16 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task BillQueryForAssembledAppOutStock(bool isTransaction, List sourceBillNos = null) + public async Task BillQueryForAssembledAppOutStock(bool isTransaction, List sourceBillNos = null, DateTime? beginTime = null) { List list = new List(); - var erp_result = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(sourceBillNos); + var erp_result = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(sourceBillNos, beginTime); 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); + var erp_result_a = await _erpService.BillQueryForAssembledAppOutStock_Assembly(sourceBillNos, beginTime); if (!erp_result_a.IsSuccess) return Result.ReFailure(erp_result_a.Message, erp_result_a.Status); list.AddRange(erp_result_a.Data); @@ -223,9 +225,9 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task BillQueryForMisDeliveryOutStock(bool isTransaction, List sourceBillNos = null) + public async Task BillQueryForMisDeliveryOutStock(bool isTransaction, List sourceBillNos = null,DateTime? beginTime=null) { - var erp_result = await _erpService.BillQueryForMisDeliveryOutStock(sourceBillNos); + var erp_result = await _erpService.BillQueryForMisDeliveryOutStock(sourceBillNos,beginTime); if (!erp_result.IsSuccess) return Result.ReFailure(erp_result.Message, erp_result.Status); @@ -236,7 +238,7 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task Ssyn(List sourceBillNos = null) + public async Task Sync(List sourceBillNos = null) { //1.事务 IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); @@ -246,9 +248,9 @@ namespace WMS.Web.Domain.Services //定时任务更新 if (sourceBillNos == null) { - + DateTime begin = await _erpOpsSyncDateRepositories.Get(ErpOpsSyncType.OutStock); //更新时间范围内所有 - result= await BillQueryForDeliveryNoticeOutStock(false, null); + result = await BillQueryForDeliveryNoticeOutStock(false, null); if (!result.IsSuccess) isRollback = true; result = await BillQueryForTransferDirectOutStock(false, null); if (!result.IsSuccess) isRollback = true; @@ -262,6 +264,9 @@ namespace WMS.Web.Domain.Services //同步成功后 更新定时开始时间 if (!isRollback) { + //更新时间管理 + isSuccess = await _erpOpsSyncDateRepositories.Edit(ErpOpsSyncType.Ops, false); + if (!isSuccess) isRollback = true; } //4.提交事务 diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index baed91e3..3f4bb62b 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -155,7 +155,7 @@ namespace WMS.Web.Domain.Services.Public } param.FilterString = param.FilterString + bill_str + ")"; }//注意:当有单据编号的查询的时候,时间条件去掉;不然就查不到数据了 - else + else { param.FilterString = param.FilterString + " and FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "'"; } @@ -659,7 +659,7 @@ namespace WMS.Web.Domain.Services.Public } #region 出库 - public async Task> BillQueryForDeliveryNoticeOutStock(List sourceBillNos = null) + public async Task> BillQueryForDeliveryNoticeOutStock(List sourceBillNos = null, DateTime? beginTime = null) { try { @@ -675,8 +675,10 @@ namespace WMS.Web.Domain.Services.Public 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"); + + var beginStr = DateTime.Now.ToString("yyyy-MM-dd 00:00:00"); + if (beginTime != null) beginStr = beginTime?.ToString("yyyy-MM-dd 00:00:00"); + var endStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.SAL_DELIVERYNOTICE.ToString()); @@ -688,7 +690,7 @@ namespace WMS.Web.Domain.Services.Public //3.未出库数量>0 //4.日期>=系统上线之日 //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 - param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and FRemainOutQty>=0"; + param.FilterString = "FCreateDate>='" + beginStr + "' and FCreateDate<='" + endStr + "' and FDocumentStatus='C' and FRemainOutQty>=0"; //string srt = JsonConvert.SerializeObject(stocks_codes); //param.FilterString = param.FilterString + " and FStockID in (" + srt.Substring(1, srt.Length - 2) + ")"; @@ -735,7 +737,7 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForTransferDirectOutStock(List sourceBillNos = null) + public async Task> BillQueryForTransferDirectOutStock(List sourceBillNos = null, DateTime? beginTime = null) { try { @@ -751,8 +753,9 @@ namespace WMS.Web.Domain.Services.Public 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"); + var beginStr = DateTime.Now.ToString("yyyy-MM-dd 00:00:00"); + if (beginTime != null) beginStr = beginTime?.ToString("yyyy-MM-dd 00:00:00"); + var endStr = 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()); @@ -764,7 +767,7 @@ namespace WMS.Web.Domain.Services.Public //3.未出库数量>0 //4.日期>=系统上线之日 //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 - param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C'"; + param.FilterString = "FCreateDate>='" + beginStr + "' and FCreateDate<='" + endStr + "' and FDocumentStatus='C'"; //string srt = JsonConvert.SerializeObject(stocks_codes); //param.FilterString = param.FilterString + " and FSrcStockId in (" + srt.Substring(1, srt.Length - 2) + ")"; @@ -811,7 +814,7 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForTransferOutOutStock(List sourceBillNos = null) + public async Task> BillQueryForTransferOutOutStock(List sourceBillNos = null, DateTime? beginTime = null) { try { @@ -827,8 +830,9 @@ namespace WMS.Web.Domain.Services.Public 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"); + var beginStr = DateTime.Now.ToString("yyyy-MM-dd 00:00:00"); + if (beginTime != null) beginStr = beginTime?.ToString("yyyy-MM-dd 00:00:00"); + var endStr = 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()); @@ -840,7 +844,7 @@ namespace WMS.Web.Domain.Services.Public //3.未出库数量>0 //4.日期>=系统上线之日 //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 - param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C'"; + param.FilterString = "FCreateDate>='" + beginStr + "' and FCreateDate<='" + endStr + "' and FDocumentStatus='C'"; //string srt = JsonConvert.SerializeObject(stocks_codes); //param.FilterString = param.FilterString + " and FSrcStockID in (" + srt.Substring(1, srt.Length - 2) + ")"; @@ -887,7 +891,7 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForAssembledAppOutStock_Dassembly(List sourceBillNos = null) + public async Task> BillQueryForAssembledAppOutStock_Dassembly(List sourceBillNos = null, DateTime? beginTime = null) { try { @@ -903,8 +907,9 @@ namespace WMS.Web.Domain.Services.Public 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"); + var beginStr = DateTime.Now.ToString("yyyy-MM-dd 00:00:00"); + if (beginTime != null) beginStr = beginTime?.ToString("yyyy-MM-dd 00:00:00"); + var endStr = 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()); @@ -916,7 +921,7 @@ namespace WMS.Web.Domain.Services.Public //3.未出库数量>0 //4.日期>=系统上线之日 //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 FBillTypeID - param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and FAffairType='Dassembly'"; + param.FilterString = "FCreateDate>='" + beginStr + "' and FCreateDate<='" + endStr + "' 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) + ")"; @@ -963,7 +968,7 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForMisDeliveryOutStock(List sourceBillNos = null) + public async Task> BillQueryForMisDeliveryOutStock(List sourceBillNos = null, DateTime? beginTime = null) { try { @@ -979,8 +984,9 @@ namespace WMS.Web.Domain.Services.Public 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"); + var beginStr = DateTime.Now.ToString("yyyy-MM-dd 00:00:00"); + if (beginTime != null) beginStr = beginTime?.ToString("yyyy-MM-dd 00:00:00"); + var endStr = 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()); @@ -992,7 +998,7 @@ namespace WMS.Web.Domain.Services.Public //3.未出库数量>0 //4.日期>=系统上线之日 //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 - param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C'"; + param.FilterString = "FCreateDate>='" + beginStr + "' and FCreateDate<='" + endStr + "' and FDocumentStatus='C'"; //string srt = JsonConvert.SerializeObject(stocks_codes); //param.FilterString = param.FilterString + " and FSrcStockID in (" + srt.Substring(1, srt.Length - 2) + ")"; @@ -1039,7 +1045,7 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForAssembledAppOutStock_Assembly(List sourceBillNos = null) + public async Task> BillQueryForAssembledAppOutStock_Assembly(List sourceBillNos = null, DateTime? beginTime = null) { try { @@ -1055,8 +1061,9 @@ namespace WMS.Web.Domain.Services.Public 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"); + var beginStr = DateTime.Now.ToString("yyyy-MM-dd 00:00:00"); + if (beginTime != null) beginStr = beginTime?.ToString("yyyy-MM-dd 00:00:00"); + var endStr = 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()); @@ -1068,7 +1075,7 @@ namespace WMS.Web.Domain.Services.Public //3.未出库数量>0 //4.日期>=系统上线之日 //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 FBillTypeID - param.FilterString = "FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "' and FDocumentStatus='C' and FAffairType='Assembly'"; + param.FilterString = "FCreateDate>='" + beginStr + "' and FCreateDate<='" + endStr + "' 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) + ")"; diff --git a/src/WMS.Web.Domain/Values/ErpOpsSyncType.cs b/src/WMS.Web.Domain/Values/ErpOpsSyncType.cs new file mode 100644 index 00000000..62c0aa90 --- /dev/null +++ b/src/WMS.Web.Domain/Values/ErpOpsSyncType.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Text; +using WMS.Web.Core; + +namespace WMS.Web.Domain.Values +{ + /// + /// erp和ops同步时间管理 单据类型 + /// + public enum ErpOpsSyncType + { + /// + /// 老Ops + /// + [EnumRemark("老Ops")] + Ops =1, + /// + /// 出库单 + /// + [EnumRemark("出库单")] + OutStock =2 + } +} diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index 23d946af..1a7ff910 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -56,6 +56,13 @@ namespace WMS.Web.Repositories.Configuration ent.HasKey(x => x.Id); }); + //序列号操作记录 + builder.Entity(ent => + { + ent.ToTable("t_wms_sync_date"); + }); + + #region 出库单 builder.Entity(ent => { @@ -230,6 +237,7 @@ namespace WMS.Web.Repositories.Configuration base.OnModelCreating(builder); } + public DbSet ErpOpsSyncDate { get; set; } public DbSet SerialNumberOperate { get; set; } public DbSet ChangeBoxRecord { get; set; } public DbSet MoveBoxRecord { get; set; } diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs index 6da64a06..5ea91160 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs @@ -53,6 +53,7 @@ namespace Microsoft.Extensions.DependencyInjection services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); } } } diff --git a/src/WMS.Web.Repositories/ErpOpsSyncDateRepositories.cs b/src/WMS.Web.Repositories/ErpOpsSyncDateRepositories.cs new file mode 100644 index 00000000..378fc72e --- /dev/null +++ b/src/WMS.Web.Repositories/ErpOpsSyncDateRepositories.cs @@ -0,0 +1,75 @@ +using AutoMapper; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using WMS.Web.Domain.Infrastructure; +using WMS.Web.Domain.Values; +using WMS.Web.Repositories.Configuration; + +namespace WMS.Web.Repositories +{ + /// + /// 定时任务最新一次时间管理 + /// + public class ErpOpsSyncDateRepositories : IErpOpsSyncDateRepositories + { + private readonly IMapper _mapper; + private readonly IServiceProvider _serviceProvider; + private readonly RepositoryDbContext _context; + + public ErpOpsSyncDateRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider) + { + _context = context; + _mapper = mapper; + _serviceProvider = serviceProvider; + } + /// + /// 定时任务执行后更新时间 + /// + /// + /// + /// + public async Task Edit(ErpOpsSyncType type, bool isTransaction = true) + { + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _context.Database.BeginTransaction(); + + try + { + var res = await _context.ErpOpsSyncDate + .FirstOrDefaultAsync(f => f.Type == type); + if (res == null) return false; + + res.SyncTime = DateTime.Now; + + await _context.SaveChangesAsync(); + + if (_transaction != null) + _transaction.Commit(); + + return true; + } + catch (Exception) + { + if (_transaction != null) + _transaction.Rollback(); + return false; + } + } + /// + /// 获取最新一次更新时间 + /// + /// + /// + public async Task Get(ErpOpsSyncType type) + { + var res = await _context.ErpOpsSyncDate + .FirstOrDefaultAsync(f => f.Type == type); + return res == null ? DateTime.Now : res.SyncTime; + } + } +}