public async Task <VerifyRecordResult> UpdateAsync(FlowMasterAdapterModel paraObject) { try { FlowMaster itemData = Mapper.Map <FlowMaster>(paraObject); CleanTrackingHelper.Clean <FlowMaster>(context); FlowMaster item = await context.FlowMaster .AsNoTracking() .FirstOrDefaultAsync(x => x.Id == paraObject.Id); if (item == null) { return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.無法修改紀錄)); } else { CleanTrackingHelper.Clean <FlowMaster>(context); context.Entry(itemData).State = EntityState.Modified; await context.SaveChangesAsync(); CleanTrackingHelper.Clean <FlowMaster>(context); return(VerifyRecordResultFactory.Build(true)); } } catch (Exception ex) { Logger.LogError(ex, "修改記錄發生例外異常"); return(VerifyRecordResultFactory.Build(false, "修改記錄發生例外異常", ex)); } }
public async Task DenyAsync(FlowMasterAdapterModel flowMasterAdapterModel) { OnShowApproveOpinionDialog(); await Task.Yield(); FlowMasterAdapterModel = flowMasterAdapterModel; FlowActionEnum = FlowActionEnum.Deny; }
public bool CheckFlowAction(FlowMasterAdapterModel flowMasterAdapterModel) { var result = Task.Run <bool>(async() => { var result = await CurrentService.CheckUserShowActionAsync(flowMasterAdapterModel, CurrentUser); return(result); }).Result; return(result); }
async Task OhterDependencyData(FlowMasterAdapterModel data) { data.MyUserName = data.MyUser.Name; data.PolicyHeaderName = data.PolicyHeader.Name; data.GetFlowName(); data.GetSourceTypeName(); await Task.Yield(); return; }
GetUsersDataByActionAsync(FlowMasterAdapterModel flowMasterAdapterModel, CurrentUser currentUser) { var user = await UserHelper.GetCurrentUserByShowFlowActionAsync(currentUser); var flowUsers = await context.FlowUser .Include(x => x.MyUser) .OrderBy(x => x.Level) .Where(x => x.FlowMasterId == flowMasterAdapterModel.Id) .ToListAsync(); return(flowUsers, user); }
public static FlowMasterAdapterModel GetSourceTypeName(this FlowMasterAdapterModel flowMasterAdapterModel) { if (flowMasterAdapterModel.SourceType == FlowSourceTypeEnum.None) { flowMasterAdapterModel.SourceTypeName = "無"; } else if (flowMasterAdapterModel.SourceType == FlowSourceTypeEnum.WorkOrder) { flowMasterAdapterModel.SourceTypeName = "工作單"; } return(flowMasterAdapterModel); }
public async Task <VerifyRecordResult> BeforeDeleteCheckAsync(FlowMasterAdapterModel paraObject) { try { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowInbox>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <FlowUser>(context); var searchItem = await context.FlowMaster .AsNoTracking() .FirstOrDefaultAsync(x => x.Id == paraObject.Id); if (searchItem == null) { return(VerifyRecordResultFactory.Build(false, "無法刪除紀錄,要刪除的紀錄已經不存在資料庫上")); } var searchFlowInboxItem = await context.FlowInbox .AsNoTracking() .FirstOrDefaultAsync(x => x.FlowMasterId == paraObject.Id); if (searchFlowInboxItem != null) { return(VerifyRecordResultFactory.Build(false, "該筆紀錄還有 收件匣 資料表紀錄參考使用,無法刪除")); } var searchFlowHistoryItem = await context.FlowHistory .AsNoTracking() .FirstOrDefaultAsync(x => x.FlowMasterId == paraObject.Id); if (searchFlowHistoryItem != null) { return(VerifyRecordResultFactory.Build(false, "該筆紀錄還有 簽核歷程 資料表紀錄參考使用,無法刪除")); } var searchFlowUserItem = await context.FlowUser .AsNoTracking() .FirstOrDefaultAsync(x => x.FlowMasterId == paraObject.Id); if (searchFlowUserItem != null) { return(VerifyRecordResultFactory.Build(false, "該筆紀錄還有 參與簽核使用者 資料表紀錄參考使用,無法刪除")); } return(VerifyRecordResultFactory.Build(true)); } catch (Exception ex) { return(VerifyRecordResultFactory.Build(false, "刪除記錄發生例外異常", ex)); } }
public async Task <FlowMasterAdapterModel> GetAsync(int id) { FlowMaster item = await context.FlowMaster .Include(x => x.MyUser) .Include(x => x.PolicyHeader) .AsNoTracking() .FirstOrDefaultAsync(x => x.Id == id); FlowMasterAdapterModel result = Mapper.Map <FlowMasterAdapterModel>(item); await OhterDependencyData(result); return(result); }
public async Task NotifyInboxUsers(List <FlowUser> flowUsers, FlowMasterAdapterModel flowMasterAdapterModel, int level) { #region 產生收件匣紀錄 var nextFlowUser = flowUsers .Where(x => x.Level == level); foreach (var item in nextFlowUser) { var notifyUser = Mapper.Map <MyUserAdapterModel>(item.MyUser); var isCC = item.OnlyCC; await AddInboxRecord(flowMasterAdapterModel, notifyUser, isCC); } #endregion }
public async Task <VerifyRecordResult> BeforeAddCheckAsync(FlowMasterAdapterModel paraObject) { await Task.Yield(); if (paraObject.MyUserId == 0) { return(VerifyRecordResultFactory.Build(false, "需要指定一個使用者")); } if (paraObject.PolicyHeaderId == 0) { return(VerifyRecordResultFactory.Build(false, "需要指定一個簽核政策")); } return(VerifyRecordResultFactory.Build(true)); }
public void FindNextActionUser(List <FlowUser> flowUsers, FlowMasterAdapterModel flowMasterAdapterModel) { var flowUserNexts = flowUsers.Where(x => x.Level == flowMasterAdapterModel.ProcessLevel && x.OnlyCC == false && x.Completion == false).ToList(); if (flowUserNexts.Count() == 0) { flowMasterAdapterModel.NextMyUserName = ""; } else { flowMasterAdapterModel.NextMyUserName = flowUserNexts.Last().MyUser.Name; } return; }
public async Task DenyAsync(FlowMasterAdapterModel flowMasterAdapterModel, ApproveOpinionModel approveOpinionModel) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel); if (CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel) == false) { return; } RecoveryCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); flowMasterAdapterModel.ProcessLevel--; RecoveryCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); CopyUserAutoCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); if (flowMasterAdapterModel.ProcessLevel > 0) { } else { flowMasterAdapterModel.Status = 0; } FindNextActionUser(flowUsers, flowMasterAdapterModel); await context.BulkUpdateAsync(flowUsers); await UpdateAsync(flowMasterAdapterModel); await AddHistoryRecord(user, flowMasterAdapterModel, $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", false); #region 產生收件匣紀錄 await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel); #endregion CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); }
public async Task AddHistoryRecord(MyUserAdapterModel myUserAdapterModel, FlowMasterAdapterModel flowMasterAdapterModel, string Summary, string Comment, bool approve) { FlowHistory history = new FlowHistory() { Comment = Comment, Summary = Summary, Updatetime = DateTime.Now, FlowMasterId = flowMasterAdapterModel.Id, MyUserId = myUserAdapterModel.Id, Approve = approve, }; await context.FlowHistory.AddAsync(history); await context.SaveChangesAsync(); }
public async Task <FlowMasterAdapterModel> GetAsync(string code) { FlowMaster item = await context.FlowMaster .Include(x => x.MyUser) .Include(x => x.PolicyHeader) .AsNoTracking() .FirstOrDefaultAsync(x => x.Code == code); if (item == null) { return(null); } FlowMasterAdapterModel result = Mapper.Map <FlowMasterAdapterModel>(item); await OhterDependencyData(result); return(result); }
public async Task <bool> CheckUserShowActionAsync(FlowMasterAdapterModel flowMasterAdapterModel, CurrentUser currentUser) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); (var flowUsers, var user) = await GetUsersDataByActionAsync(flowMasterAdapterModel, currentUser); flowMasterAdapterModel.UserShowAction = CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel); CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); return(flowMasterAdapterModel.UserShowAction); }
public async Task BackToSendAsync(FlowMasterAdapterModel flowMasterAdapterModel, ApproveOpinionModel approveOpinionModel) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel); if (CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel) == false) { return; } foreach (var item in flowUsers) { item.Completion = false; } flowMasterAdapterModel.ProcessLevel = 0; flowMasterAdapterModel.Status = 0; FindNextActionUser(flowUsers, flowMasterAdapterModel); await context.BulkUpdateAsync(flowUsers); await UpdateAsync(flowMasterAdapterModel); await AddHistoryRecord(user, flowMasterAdapterModel, $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", false); #region 產生收件匣紀錄 await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel); #endregion CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); }
public async Task SendAsync(FlowMasterAdapterModel flowMasterAdapterModel, ApproveOpinionModel approveOpinionModel) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel); if (user.Id != flowMasterAdapterModel.MyUserId) { return; } var flowUser = flowUsers.FirstOrDefault(x => x.Level == 0); flowUser.Completion = true; flowMasterAdapterModel.ProcessLevel = 1; flowMasterAdapterModel.Status = 1; CopyUserAutoCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); FindNextActionUser(flowUsers, flowMasterAdapterModel); await context.BulkUpdateAsync(flowUsers); await UpdateAsync(flowMasterAdapterModel); await AddHistoryRecord(user, flowMasterAdapterModel, $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", true); #region 產生收件匣紀錄 await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel); #endregion CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); }
public async Task AddInboxRecord(FlowMasterAdapterModel paraObject, MyUserAdapterModel myUser, bool isCC) { string CCMessage = isCC ? "[知會]" : ""; CleanTrackingHelper.Clean <FlowInbox>(context); FlowInbox inbox = new FlowInbox() { FlowMasterId = paraObject.Id, MyUserId = myUser.Id, IsRead = false, ReceiveTime = DateTime.Now, Title = $"{CCMessage} {paraObject.Title}", Body = paraObject.Content, }; await context.FlowInbox.AddAsync(inbox); await context.SaveChangesAsync(); CleanTrackingHelper.Clean <FlowInbox>(context); }
/// <summary> /// 轉換狀態碼成為說明文字 /// </summary> /// <param name="flowMasterAdapterModel"></param> /// <returns></returns> public static FlowMasterAdapterModel GetFlowName(this FlowMasterAdapterModel flowMasterAdapterModel) { switch (flowMasterAdapterModel.Status) { case 0: flowMasterAdapterModel.StatusName = "草稿"; break; case 1: flowMasterAdapterModel.StatusName = "送審"; break; case 99: flowMasterAdapterModel.StatusName = "完成"; break; default: flowMasterAdapterModel.StatusName = "???"; break; } return(flowMasterAdapterModel); }
public async Task OnWorkOrderSendingDialogCompletion(ApproveOpinionModel e) { if (e != null) { #region 產生一筆稽核送審記錄 var user = await CurrentUserHelper.GetCurrentUserAsync(); var code = UniqueStringHelper.GetCode(); FlowMasterAdapterModel flowMasterAdapterModel = new FlowMasterAdapterModel() { Code = code, MyUserId = user.Id, PolicyHeaderId = e.PolicyHeaderAdapterModel.Id, CreateDate = DateTime.Now, ProcessLevel = 0, Title = $"工單完工 - {CurrentRecord.Description}", Content = "", Status = 0, SourceType = FlowSourceTypeEnum.WorkOrder, SourceJson = JsonConvert.SerializeObject(CurrentRecord), SourceCode = CurrentRecord.Code, }; flowMasterAdapterModel.UpdateAt = DateTime.Now; await FlowMasterService.AddAsync(flowMasterAdapterModel); flowMasterAdapterModel = await FlowMasterService.GetAsync(code); await FlowMasterService.SendAsync(flowMasterAdapterModel, e); CurrentRecord.Status = MagicHelper.WorkOrderStatus送審; await CurrentService.UpdateAsync(CurrentRecord); this.dataGrid.RefreshGrid(); #endregion } ShowWorkOrderSendingDialog = false; }
public async Task <VerifyRecordResult> BeforeUpdateCheckAsync(FlowMasterAdapterModel paraObject) { CleanTrackingHelper.Clean <FlowMaster>(context); if (paraObject.MyUserId == 0) { return(VerifyRecordResultFactory.Build(false, "需要指定一個使用者")); } if (paraObject.PolicyHeaderId == 0) { return(VerifyRecordResultFactory.Build(false, "需要指定一個簽核政策")); } var searchItem = await context.FlowMaster .AsNoTracking() .FirstOrDefaultAsync(x => x.Id == paraObject.Id); if (searchItem == null) { return(VerifyRecordResultFactory.Build(false, ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上)); } return(VerifyRecordResultFactory.Build(true)); }
public bool CheckCurrentActionUser(List <FlowUser> flowUsers, MyUserAdapterModel myUserAdapterModel, FlowMasterAdapterModel flowMasterAdapterModel) { var flowUserCurrent = flowUsers.Where(x => x.Level == flowMasterAdapterModel.ProcessLevel && x.OnlyCC == false && x.Completion == false).ToList(); if (flowUserCurrent.Count() == 0) { return(false);; } else { var findUser = flowUserCurrent.FirstOrDefault(x => x.MyUserId == myUserAdapterModel.Id); if (findUser == null) { return(false); } else { return(true); } } }
public async Task ToolbarClickHandler(Syncfusion.Blazor.Navigations.ClickEventArgs args) { if (args.Item.Id == ButtonIdHelper.ButtonIdAdd) { CurrentRecord = new FlowMasterAdapterModel(); #region 針對新增的紀錄所要做的初始值設定商業邏輯 #endregion EditRecordDialogTitle = "新增紀錄"; IsNewRecordMode = true; IsShowEditRecord = true; var user = await CurrentUserHelper.GetCurrentUserAsync(); CurrentRecord.MyUserId = user.Id; CurrentRecord.MyUserName = user.Name; CurrentRecord.Status = 0; CurrentRecord.ProcessLevel = 0; CurrentRecord.Code = UniqueStringHelper.GetCode(); CurrentRecord.CreateDate = DateTime.Now; } else if (args.Item.Id == ButtonIdHelper.ButtonIdRefresh) { dataGrid.RefreshGrid(); } }
public async Task <VerifyRecordResult> AddAsync(FlowMasterAdapterModel paraObject) { try { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); FlowMaster itemParameter = Mapper.Map <FlowMaster>(paraObject); CleanTrackingHelper.Clean <FlowMaster>(context); await context.FlowMaster .AddAsync(itemParameter); await context.SaveChangesAsync(); #region 產生要審核的使用者清單 var user = await context.MyUser .FirstOrDefaultAsync(x => x.Id == itemParameter.MyUserId); FlowUser auditUser = new FlowUser() { MyUserId = itemParameter.MyUserId, FlowMasterId = itemParameter.Id, Enable = true, Level = 0, OnlyCC = false, Name = "發文者", }; await context.FlowUser.AddAsync(auditUser); var policyDetails = await context.PolicyDetail .Where(x => x.PolicyHeaderId == paraObject.PolicyHeaderId) .OrderBy(x => x.Level) .ToListAsync(); foreach (var item in policyDetails) { if (item.Enable == false) { continue; } auditUser = new FlowUser() { MyUserId = item.MyUserId, FlowMasterId = itemParameter.Id, Enable = true, Level = item.Level, OnlyCC = item.OnlyCC, Name = item.Name, }; await context.FlowUser.AddAsync(auditUser); } itemParameter.NextMyUserName = user.Name; context.FlowMaster.Update(itemParameter); await context.SaveChangesAsync(); #endregion #region 增加簽核流程歷史紀錄 - 建立簽核表單 FlowHistory history = new FlowHistory() { FlowMasterId = itemParameter.Id, MyUserId = itemParameter.MyUserId, Approve = true, Summary = $"{user.Account} / {user.Name} 建立簽核表單", Comment = $"簽核單草稿", Updatetime = DateTime.Now, }; await context.FlowHistory.AddAsync(history); await context.SaveChangesAsync(); #endregion CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); return(VerifyRecordResultFactory.Build(true)); } catch (Exception ex) { Logger.LogError(ex, "新增記錄發生例外異常"); return(VerifyRecordResultFactory.Build(false, "新增記錄發生例外異常", ex)); } }
public async Task OnCommandClicked(CommandClickEventArgs <FlowMasterAdapterModel> args) { FlowMasterAdapterModel item = args.RowData as FlowMasterAdapterModel; if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdEdit) { #region 點選 修改紀錄 按鈕 CurrentRecord = item.Clone(); EditRecordDialogTitle = "修改紀錄"; IsShowEditRecord = true; IsNewRecordMode = false; #endregion } else if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdDelete) { #region 點選 刪除紀錄 按鈕 CurrentNeedDeleteRecord = item; #region 檢查關聯資料是否存在 var checkedResult = await CurrentService .BeforeDeleteCheckAsync(CurrentNeedDeleteRecord); await Task.Delay(100); thisView.NeedRefresh(); if (checkedResult.Success == false) { var checkTask1 = ConfirmMessageBox.ShowAsync("400px", "200px", "警告", $"你確定真的要刪除與這筆紀錄相關紀錄嗎?例如:收件匣、簽呈使用者、簽成歷史紀錄 ({checkedResult.Message})", ConfirmMessageBox.HiddenAsync); thisView.NeedRefresh(); var checkAgain1 = await checkTask1; if (checkAgain1 == true) { var verifyRecordResult = await CurrentService.DeleteAsync(CurrentNeedDeleteRecord.Id); await TranscationResultHelper.CheckDatabaseResult(MessageBox, verifyRecordResult); dataGrid.RefreshGrid(); } await Task.Yield(); thisView.NeedRefresh(); return; } #endregion #region 刪除這筆紀錄 await Task.Yield(); var checkTask = ConfirmMessageBox.ShowAsync("400px", "200px", "警告", "確認要刪除這筆紀錄嗎?", ConfirmMessageBox.HiddenAsync); thisView.NeedRefresh(); var checkAgain = await checkTask; if (checkAgain == true) { var verifyRecordResult = await CurrentService.DeleteAsync(CurrentNeedDeleteRecord.Id); await TranscationResultHelper.CheckDatabaseResult(MessageBox, verifyRecordResult); dataGrid.RefreshGrid(); } #endregion #endregion } else if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdShowFlowUser) { #region 點選 稽核使用者 對話窗 按鈕 IsShowFlowUserRecord = true; ShowMoreDetailsRecordDialogTitle = MagicHelper.簽核使用者明細; MasterRecord masterRecord = new MasterRecord() { Id = item.Id }; Header = masterRecord; if (ShowFlowUserGrid != null) { await Task.Delay(100); // 使用延遲,讓 Header 的資料綁定可以成功 ShowFlowUserGrid.RefreshGrid(); } #endregion } else if (args.CommandColumn.ButtonOption.IconCss == ButtonIdHelper.ButtonIdShowFlowHistory) { #region 點選 開啟多筆 CRUD 對話窗 按鈕 IsShowFlowHistoryRecord = true; ShowMoreDetailsRecordDialogTitle = MagicHelper.簽核歷史紀錄; MasterRecord masterRecord = new MasterRecord() { Id = item.Id }; Header = masterRecord; if (ShowFlowHistoryGrid != null) { await Task.Delay(100); // 使用延遲,讓 Header 的資料綁定可以成功 ShowFlowHistoryGrid.RefreshGrid(); } #endregion } }
public async Task AgreeAsync(FlowMasterAdapterModel flowMasterAdapterModel, ApproveOpinionModel approveOpinionModel) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <WorkOrder>(context); CleanTrackingHelper.Clean <MyUser>(context); var thisLevel = flowMasterAdapterModel.ProcessLevel; (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel); if (CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel) == false) { return; } var flowUserCurrentLevel = flowUsers.Where(x => x.Level == flowMasterAdapterModel.ProcessLevel).ToList(); var currentUser = flowUserCurrentLevel.FirstOrDefault(x => x.MyUserId == user.Id); if (currentUser != null) { currentUser.Completion = true; } var remindUsers = flowUsers .Where(x => x.Level == flowMasterAdapterModel.ProcessLevel && x.Completion == false).ToList(); bool allProcessing = (remindUsers.Count() > 0) ? false : true; if (allProcessing) { #region 是否是最後一關關卡 var lastLevel = flowUsers.OrderByDescending(x => x.Level) .FirstOrDefault(); if (flowMasterAdapterModel.ProcessLevel == lastLevel.Level) { flowMasterAdapterModel.Status = 99; flowMasterAdapterModel.ProcessLevel++; #region 若不是直接申請,則需要同步更新來源紀錄的狀態碼 if (flowMasterAdapterModel.SourceType == FlowSourceTypeEnum.WorkOrder) { if (string.IsNullOrEmpty(flowMasterAdapterModel.SourceCode) == false) { var workOrder = await context.WorkOrder .AsNoTracking() .FirstOrDefaultAsync(x => x.Code == flowMasterAdapterModel.SourceCode); if (workOrder != null) { workOrder.Status = MagicHelper.WorkOrderStatus結案; context.Update(workOrder); await context.SaveChangesAsync(); } } } #endregion } else { #region 還有關卡要繼續審核 flowMasterAdapterModel.Status = 1; flowMasterAdapterModel.ProcessLevel++; CopyUserAutoCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); #endregion } #endregion } FindNextActionUser(flowUsers, flowMasterAdapterModel); await context.BulkUpdateAsync(flowUsers); await UpdateAsync(flowMasterAdapterModel); await AddHistoryRecord(user, flowMasterAdapterModel, $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", true); if (thisLevel != flowMasterAdapterModel.ProcessLevel && flowMasterAdapterModel.Status != 99) { #region 產生收件匣紀錄 await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel); #endregion } CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <WorkOrder>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); }