diff --git a/YLErpDAL/Modules/TradeModule/TradeApprovalOAService.cs b/YLErpDAL/Modules/TradeModule/TradeApprovalOAService.cs index 1884fa2f..afd3e342 100644 --- a/YLErpDAL/Modules/TradeModule/TradeApprovalOAService.cs +++ b/YLErpDAL/Modules/TradeModule/TradeApprovalOAService.cs @@ -219,19 +219,20 @@ namespace YLErp.Modules.TradeModule { var messages = new List(); var staleAt = DateTime.Now.AddMinutes(-5); + var syncInstance = $"{Environment.MachineName}/pid:{Environment.ProcessId}/run:{Guid.NewGuid():N}"; var pending = DbContext.tradeApprovalOaResult .Where(x => x.is_valid && !string.IsNullOrWhiteSpace(x.oa_fileid) && (string.IsNullOrWhiteSpace(requestId) || x.oa_fileid == requestId) && (x.status == Pending || (x.status == Syncing && (x.last_query_time == null || x.last_query_time < staleAt)))) .ToList(); - _logger.Info($"开始轮询 OA 移动审批状态,requestId:{requestId ?? "全部"},待查询数量:{pending.Count}"); + _logger.Info($"开始轮询 OA 移动审批状态,requestId:{requestId ?? "全部"},待查询数量:{pending.Count},实例:{syncInstance}"); foreach (var record in pending) { var claimed = false; try { - _logger.Info($"查询 OA 移动审批状态,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid}"); + _logger.Info($"查询 OA 移动审批状态,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},本地状态:{record.status},上次查询:{record.last_query_time:yyyy-MM-dd HH:mm:ss.fff},实例:{syncInstance}"); var response = Query(record.oa_fileid); record.last_response = response.ToString(); var flow = response["data"] is JArray data @@ -254,18 +255,21 @@ namespace YLErp.Modules.TradeModule _logger.Info($"OA 移动审批查询结果,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},flowStatusType:{flowStatusType},flowNode:{flowNode},判定:{(isReturned ? "退回" : isApproved ? "通过" : "等待")}"); if (!isApproved && !isReturned) { + _logger.Info($"OA 移动审批继续等待,不会推进本地流程,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},flowStatusType:{flowStatusType},flowNode:{flowNode},实例:{syncInstance}"); record.last_query_time = DateTime.Now; DbContext.SaveChanges(); continue; } DbContext.SaveChanges(); + _logger.Info($"OA 审批结果满足回写条件,准备抢占同步记录,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},本地状态:{record.status},实例:{syncInstance}"); if (!TryClaimForSync(record.id)) { - _logger.Info($"OA 审批结果同步未抢占记录,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid}"); + _logger.Info($"OA 审批结果同步未抢占记录,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},实例:{syncInstance}"); continue; } claimed = true; + _logger.Info($"OA 审批结果已抢占记录并置为同步中,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},实例:{syncInstance}"); var trade = DbContext.trade.Find(record.trade_id); if (trade == null) @@ -289,12 +293,12 @@ namespace YLErp.Modules.TradeModule if (!string.IsNullOrWhiteSpace(result.ErrorMsg)) { SetClaimedStatus(record.id, Pending, result.ErrorMsg); - _logger.Error($"OA 审批结果回写本地失败,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},原因:{result.ErrorMsg}"); + _logger.Error($"OA 审批结果回写本地失败,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},原因:{result.ErrorMsg},实例:{syncInstance}"); } else { SetClaimedStatus(record.id, isReturned ? "退回" : "通过", null); - _logger.Info($"OA 审批结果回写本地成功,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},结果:{(isReturned ? "退回" : "通过")}"); + _logger.Info($"OA 审批结果回写本地成功,交易:{record.trade_id},节点:{record.approval_process_id},requestId:{record.oa_fileid},结果:{(isReturned ? "退回" : "通过")},实例:{syncInstance}"); } messages.Add(record.trade_id + ":" + (string.IsNullOrWhiteSpace(result.ErrorMsg) ? (isReturned ? "退回" : "通过") : Pending)); } @@ -313,7 +317,7 @@ namespace YLErp.Modules.TradeModule _logger.Error($"轮询 OA 审批状态失败,requestId:{record.oa_fileid}", ex); } } - _logger.Info($"OA 移动审批状态轮询结束,已处理数量:{messages.Count}"); + _logger.Info($"OA 移动审批状态轮询结束,已处理数量:{messages.Count},实例:{syncInstance}"); return messages; }