public static Tuple <TreasuryDBEntities, string> AddToContext <T>(TreasuryDBEntities context, T entity, int count, int commitCount, bool recreateContext) where T : class { context.Set <T>().Add(entity); string msg = string.Empty; if (count % commitCount == 0) { var validateMessage = context.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { msg = validateMessage; } else { context.SaveChanges(); } if (recreateContext) { context.Dispose(); context = new TreasuryDBEntities(); context.Configuration.AutoDetectChangesEnabled = false; context.Configuration.ValidateOnSaveEnabled = false; } } return(new Tuple <TreasuryDBEntities, string>(context, msg)); }
/// <summary> /// 修改申請單記錄檔 /// </summary> /// <param name="data">修改資料</param> /// <param name="custodianFlag">是否為保管科</param> /// <param name="searchData">申請表單查詢顯示區塊ViewModel</param> /// <param name="userId">userId</param> /// <returns></returns> public MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> > updateAplyNo(TreasuryAccessViewModel data, bool custodianFlag, TreasuryAccessApprSearchViewModel searchData, string userId) { MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> > result = new MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> >(); result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var updateData = db.TREA_APLY_REC.FirstOrDefault(x => x.APLY_NO == data.vAplyNo); if (updateData != null) { if (updateData.LAST_UPDATE_DT > data.vLastUpdateTime) { return(result); } updateData.LAST_UPDATE_UID = userId; updateData.ACCESS_REASON = data.vAccessReason; updateData.EXPECTED_ACCESS_DATE = TypeTransfer.stringToDateTimeN(data.vExpectedAccessDate); updateData.LAST_UPDATE_DT = DateTime.Now; try { db.SaveChanges(); result.DESCRIPTION = Ref.MessageType.update_Success.GetDescription(); result.RETURN_FLAG = true; result.Datas = GetCustodySearchDetail(searchData); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } return(result); }
/// <summary> /// 新增申請覆核 /// </summary> /// <param name="data"></param> /// <param name="currentUserId">目前使用者ID</param> /// <returns></returns> public MSGReturnModel <List <SpecifiedTimeTreasurySearchDetailViewModel> > InsertApplyData(SpecifiedTimeTreasuryApplyViewModel data, string currentUserId, SpecifiedTimeTreasurySearchViewModel searchData) { var result = new MSGReturnModel <List <SpecifiedTimeTreasurySearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Fail.GetDescription(); string logStr = string.Empty; //log using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _data = db.TREA_OPEN_REC .Add(MappingTableForInsert(data, currentUserId)); logStr += _data.modelToString(logStr); var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核"; log.CACTION = "C"; log.CCONTENT = logStr; LogDao.Insert(log, currentUserId); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription();; } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } if (result.RETURN_FLAG) { result.Datas = GetSearchDetail(searchData); } } return(result); }
public void RemindClose(TreasuryDBEntities db, string dateTime, DateTime _dtn, int?_INTERVAL_MIN) { //bool result = true; var _split = dateTime.Split(':'); var hh = _split[0]; var mm = _split.Length > 1 ? _split[1] : string.Empty; var dt = new DateTime(_dtn.Year, _dtn.Month, _dtn.Day, Convert.ToInt32(hh), Convert.ToInt32(mm), 0); SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; //var _TREA_OPEN_REC = db.TREA_OPEN_REC.AsNoTracking() // .Where(x => x.REGI_STATUS.Trim()[0] == 'D' && x.LAST_UPDATE_DT < _dtn.AddMinutes(Convert.ToDouble(-_INTERVAL_MIN))); var _TREA_OPEN_REC = db.TREA_OPEN_REC.AsNoTracking().AsEnumerable() .FirstOrDefault(x => x.REGI_STATUS != "E01" && x.APPR_STATUS != "4" && x.LAST_UPDATE_DT < _dtn.AddMinutes(Convert.ToDouble(-_INTERVAL_MIN))); if (_TREA_OPEN_REC != null) { //result = false; var _TREA_APLY_REC = db.TREA_APLY_REC.AsNoTracking().FirstOrDefault(x => x.TREA_REGISTER_ID == _TREA_OPEN_REC.TREA_REGISTER_ID); var _Mail_Time = db.MAIL_TIME.AsNoTracking().FirstOrDefault(x => x.MAIL_TIME_ID == "3" && x.IS_DISABLED == "N"); if (_Mail_Time != null) { var _MAIL_CONTENT = db.MAIL_CONTENT.AsNoTracking().FirstOrDefault(x => x.MAIL_CONTENT_ID == _Mail_Time.MAIL_CONTENT_ID && x.IS_DISABLED == "N"); string errorMsg = string.Empty; Extension.NlogSet($"MAIL_TIME 有找到未完成關庫覆核的金庫登記簿"); Extension.NlogSet($"DateTime : {_dtn}"); var MailTId = sysSeqDao.qrySeqNo("MailT", qPreCode).ToString().PadLeft(3, '0'); var _JOB_ITEM_ID = $@"{qPreCode}W{MailTId}"; try { #region 新增排程工作紀錄檔 Extension.NlogSet($"新增排程工作紀錄檔"); db.SYS_JOB_REC.Add(new SYS_JOB_REC() { JOB_ITEM_ID = _JOB_ITEM_ID, JOB_ID = _Mail_Time.MAIL_TIME_ID, CREATE_TIME = dt, STATUS = "2", START_TIME = _dtn, }); var test = db.GetValidationErrors().getValidateString(); if (!test.IsNullOrWhiteSpace()) { Extension.NlogSet($"{test}"); } db.SaveChanges(); #endregion //List<Tuple<string, string>> _mailTo = new List<Tuple<string, string>>() { new Tuple<string, string>("*****@*****.**", "測試帳號-glsisys") }; List <Tuple <string, string> > _mailTo = new List <Tuple <string, string> >(); List <Tuple <string, string> > _ccTo = new List <Tuple <string, string> >(); var _MAIL_RECEIVE = db.MAIL_RECEIVE.AsNoTracking(); var _CODE_ROLE_FUNC = db.CODE_ROLE_FUNC.AsNoTracking(); var _CODE_USER_ROLE = db.CODE_USER_ROLE.AsEnumerable(); var _CODE_USER = db.CODE_USER.AsNoTracking(); List <string> _userIdList = new List <string>(); var emps = GetEmps(); var _FuncId = _MAIL_RECEIVE.Where(x => x.MAIL_CONTENT_ID == _MAIL_CONTENT.MAIL_CONTENT_ID).Select(x => x.FUNC_ID); var _RoleId = _CODE_ROLE_FUNC.Where(x => _FuncId.Contains(x.FUNC_ID)).Select(x => x.ROLE_ID); var _UserId = _CODE_USER_ROLE.Where(x => _RoleId.Contains(x.ROLE_ID)).Select(x => x.USER_ID).Distinct(); _userIdList.AddRange(_CODE_USER.Where(x => _UserId.Contains(x.USER_ID) && x.IS_MAIL == "Y").Select(x => x.USER_ID).ToList()); if (_userIdList.Any()) { //人名 EMAIl var _EMP = emps.Where(x => _userIdList.Contains(x.USR_ID)).ToList(); if (_EMP.Any()) { _EMP.ForEach(x => { _mailTo.Add(new Tuple <string, string>(x.EMAIL, x.EMP_NAME)); }); } } StringBuilder sb = new StringBuilder(); string str = _MAIL_CONTENT.MAIL_CONTENT1; str = str.Replace("@_TREA_REGISTER_ID_", _TREA_OPEN_REC.TREA_REGISTER_ID); var status = string.Empty; switch (_TREA_OPEN_REC.REGI_STATUS) { case "C02": if (_TREA_OPEN_REC.APPR_STATUS == "3") { status = "【指定開庫申請作業】"; } else if (_TREA_OPEN_REC.APPR_STATUS == "1") { status = "【指定開庫覆核作業】"; } else if (_TREA_OPEN_REC.APPR_STATUS == "2") { if (_TREA_APLY_REC == null) { status = "【入庫人員確認作業】"; } else { status = "【金庫登記簿執行作業(開庫前)】"; } } break; case "D01": status = "【金庫登記簿執行作業(開庫後)】"; break; case "D02": case "D04": status = "【金庫登記簿覆核作業】"; break; } str = str.Replace("@_STATUS_", status); sb.AppendLine(str); #region 寄送mail給相關人員 Extension.NlogSet($" 寄送mail給相關人員"); try { var sms = new SendMail.SendMailSelf(); sms.smtpPort = 25; sms.smtpServer = Properties.Settings.Default["smtpServer"]?.ToString(); sms.mailAccount = Properties.Settings.Default["mailAccount"]?.ToString(); sms.mailPwd = Properties.Settings.Default["mailPwd"]?.ToString(); Extension.NlogSet($" 寄送mail內容 : {sb.ToString()}"); sms.Mail_Send( new Tuple <string, string>(sms.mailAccount, "金庫管理系統"), _mailTo, _ccTo, _MAIL_CONTENT?.MAIL_SUBJECT ?? "金庫登記簿開庫流程尚完成通知", sb.ToString() ); } catch (Exception ex) { Extension.NlogSet($" 寄送mail給相關人員 錯誤 : {ex.exceptionMessage()}"); } test = db.GetValidationErrors().getValidateString(); if (!test.IsNullOrWhiteSpace()) { Extension.NlogSet($"{test}"); } db.SaveChanges(); #endregion } catch (Exception ex) { errorMsg = ex.exceptionMessage(); Extension.NlogSet($"錯誤 : {errorMsg}"); } #region 異動【排程工作紀錄檔】資料(工作結束) var _SJR = db.SYS_JOB_REC .FirstOrDefault(x => x.JOB_ITEM_ID == _JOB_ITEM_ID); if (_SJR != null) { if (!errorMsg.IsNullOrWhiteSpace()) { _SJR.STATUS = "4"; //執行失敗 _SJR.MEMO = errorMsg; } else { _SJR.STATUS = "3"; //執行成功 _SJR.MEMO = null; } _SJR.END_TIME = DateTime.Now; var test = db.GetValidationErrors().getValidateString(); if (!test.IsNullOrWhiteSpace()) { Extension.NlogSet($"{test}"); } db.SaveChanges(); } #endregion } } //return result; }
/// <summary> /// 金庫進出管理作業-順序調整申請覆核 /// </summary> /// <param name="saveData">申請覆核的資料</param> /// <param name="searchModel">查詢ViwModel</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITinItem> > TinOrderApplyAudit(IEnumerable <ITinItem> saveData, ITinItem searchModel) { var searchData = (DepChkItemSearchViewModel)searchModel; var result = new MSGReturnModel <IEnumerable <ITinItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (saveData != null) { var datas = (List <DepChkItemViewModel>)saveData; if (datas.Any()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; string _Aply_No = string.Empty; var cId = sysSeqDao.qrySeqNo("G9", qPreCode).ToString().PadLeft(3, '0'); _Aply_No = $@"G9{qPreCode}{cId}"; //申請單號 G9+系統日期YYYMMDD(民國年)+3碼流水號 string logStr = string.Empty; //log foreach (var item in datas) { #region 定存檢核表項目設定異動檔 var _DCI_Data = db.DEP_CHK_ITEM.FirstOrDefault(x => x.ACCESS_TYPE == item.vAccess_Type && x.ISORTBY == item.vIsortby); var _DCIH = new DEP_CHK_ITEM_HIS() { APLY_NO = _Aply_No, ACCESS_TYPE = item.vAccess_Type, ISORTBY = item.vIsortby, EXEC_ACTION = "O", DEP_CHK_ITEM_DESC = _DCI_Data.DEP_CHK_ITEM_DESC, IS_DISABLED = _DCI_Data.IS_DISABLED, ITEM_ORDER = item.vItem_Order, REPLACE = _DCI_Data.REPLACE, APPR_STATUS = "1",//表單申請 DEP_CHK_ITEM_DESC_B = _DCI_Data.DEP_CHK_ITEM_DESC, IS_DISABLED_B = _DCI_Data.IS_DISABLED, ITEM_ORDER_B = _DCI_Data.ITEM_ORDER, REPLACE_B = _DCI_Data.REPLACE, APLY_UID = searchData.vLast_Update_Uid, APLY_DATE = dt }; db.DEP_CHK_ITEM_HIS.Add(_DCIH); logStr += "|"; logStr += _DCIH.modelToString(); #endregion } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-新增定存檢核表項目"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vLast_Update_Uid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_Aply_No}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
/// <summary> /// 作廢 (保留資料) /// </summary> /// <param name="searchData">金庫物品存取主畫面查詢ViewModel</param> /// <param name="data">申請表單查詢顯示區塊ViewModel</param> /// <returns></returns> public MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> > Invalidate(TreasuryAccessSearchViewModel searchData, TreasuryAccessSearchDetailViewModel data) { var result = new MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); DateTime dt = DateTime.Now; string logStr = string.Empty; //取得流水號 var _status = Ref.AccessProjectFormStatus.E02.ToString(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _TREA_APLY_REC = db.TREA_APLY_REC.FirstOrDefault(x => x.APLY_NO == data.vAPLY_NO); if (_TREA_APLY_REC != null) { if (_TREA_APLY_REC.LAST_UPDATE_DT > data.vLast_Update_Time) { return(result); } _TREA_APLY_REC.LAST_UPDATE_UID = AccountController.CurrentUserId; _TREA_APLY_REC.LAST_UPDATE_DT = dt; _TREA_APLY_REC.APLY_STATUS = _status; logStr += _TREA_APLY_REC.modelToString(logStr); #region 作廢 var sampleFactory = new SampleFactory(); var getAgenct = sampleFactory.GetAgenct(EnumUtil.GetValues <Ref.TreaItemType>().First(x => x.ToString() == _TREA_APLY_REC.ITEM_ID)); if (getAgenct != null) { var _recover = getAgenct.ObSolete(db, _TREA_APLY_REC.APLY_NO, _TREA_APLY_REC.ACCESS_TYPE, logStr, dt); if (!_recover.Item1) //失敗 { return(result); } logStr += _recover.Item2; } else { return(result); } #endregion #region 申請單歷程檔 //「取消申請」:新增「E02」申請人刪除的狀態資料。 var ARH = new APLY_REC_HIS() { APLY_NO = _TREA_APLY_REC.APLY_NO, APLY_STATUS = _status, PROC_UID = searchData.vCreateUid, PROC_DT = dt }; logStr += ARH.modelToString(logStr); db.APLY_REC_HIS.Add(ARH); #endregion var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "作廢-金庫物品存取申請作業"; log.CACTION = "U"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = $@"單號{data.vAPLY_NO} 已作廢!"; } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } if (result.RETURN_FLAG) { result.Datas = GetSearchDetail(searchData); } } return(result); }
/// <summary> /// 駁回 /// </summary> /// <param name="RegisterNo"></param> /// <param name="RejectReason"></param> /// <param name="ViewModel"></param> /// <param name="SearchData"></param> /// <returns></returns> public MSGReturnModel <List <SpecifiedTimeTreasuryApprSearchDetailViewModel> > RejectData(List <string> RegisterNo, string RejectReason, List <SpecifiedTimeTreasuryApprSearchDetailViewModel> ViewModel, SpecifiedTimeTreasuryApprSearchViewModel SearchData) { var result = new MSGReturnModel <List <SpecifiedTimeTreasuryApprSearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(); DateTime dt = DateTime.Now; string logStrC = string.Empty; //combin Log using (TreasuryDBEntities db = new TreasuryDBEntities()) { foreach (var item in ViewModel.Where(x => RegisterNo.Contains(x.vTREA_REGISTER_ID))) { var _TREA_OPEN_REC = db.TREA_OPEN_REC.FirstOrDefault(x => x.TREA_REGISTER_ID == item.vTREA_REGISTER_ID); if (_TREA_OPEN_REC == null) //找不到該單號 { result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(null, $"單號:{item.vTREA_REGISTER_ID}"); return(result); } if (_TREA_OPEN_REC.LAST_UPDATE_DT > item.vLAST_UPDATE_DT) //資料已被更新 { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(null, $"單號:{item.vTREA_REGISTER_ID}"); return(result); } var applyStatus = ((int)Ref.ApplyStatus._3).ToString(); // 狀態: 退回 string logStrB = string.Empty; //修改前 Log string logStrA = string.Empty; //修改後 Log logStrB += _TREA_OPEN_REC.modelToString(logStrB); _TREA_OPEN_REC.APPR_STATUS = applyStatus; _TREA_OPEN_REC.LAST_UPDATE_UID = SearchData.vCreateUid; _TREA_OPEN_REC.LAST_UPDATE_DT = dt; _TREA_OPEN_REC.APPR_DESC = RejectReason; _TREA_OPEN_REC.APPR_UID = SearchData.vCreateUid; _TREA_OPEN_REC.APPR_DT = dt; logStrA += _TREA_OPEN_REC.modelToString(logStrA); logStrC += string.Format("修改前{0}^^修改後{1}", logStrB, logStrA); } //檢核欄位 var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "駁回-指定開庫覆核作業"; log.CACTION = "U"; log.CCONTENT = logStrC; LogDao.Insert(log, SearchData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = $"申請單號 : {string.Join(",", RegisterNo)} 已駁回"; result.Datas = GetApprSearchData(SearchData); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } return(result); }
public MSGReturnModel <List <SpecifiedTimeTreasurySearchDetailViewModel> > CancelApplyData(SpecifiedTimeTreasuryCancelViewModel data, string currentUserId, SpecifiedTimeTreasurySearchViewModel searchData) { var result = new MSGReturnModel <List <SpecifiedTimeTreasurySearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.update_Fail.GetDescription(); string logStr = string.Empty; //log //bool 登入者與申請者為同一人 if (data.vCREATE_UID == currentUserId) { if (data.vAPLY_STATUS_ID == ((int)Ref.ApplyStatus._1).ToString() || data.vAPLY_STATUS_ID == ((int)Ref.ApplyStatus._3).ToString()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _data = db.TREA_OPEN_REC.FirstOrDefault(x => x.TREA_REGISTER_ID == data.vTREA_REGISTER_ID); //統一取系統時間 DateTime dt = DateTime.Now; if (_data != null) { if (_data.APPR_UID == null) { db.TREA_OPEN_REC.Remove(_data); } else { _data.APPR_STATUS = "4"; _data.LAST_UPDATE_UID = currentUserId; _data.LAST_UPDATE_DT = dt; } logStr += _data.modelToString(logStr); var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); if (data.vAPPR_UID == null) { result.DESCRIPTION = Ref.MessageType.delete_Success.GetDescription(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "取消覆核(作廢)"; log.CACTION = "D"; log.CCONTENT = logStr; LogDao.Insert(log, currentUserId); #endregion } else { result.DESCRIPTION = Ref.MessageType.update_Success.GetDescription();; #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "取消覆核"; log.CACTION = "U"; log.CCONTENT = logStr; LogDao.Insert(log, currentUserId); #endregion } result.RETURN_FLAG = true; } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } } else { result.DESCRIPTION = Ref.MessageType.parameter_Error.GetDescription(); } } if (result.RETURN_FLAG) { result.Datas = GetSearchDetail(searchData); } return(result); }
/// <summary> /// 申請覆核 電子憑證 /// </summary> /// <param name="insertDatas">資料</param> /// <param name="taData">申請單資料</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITreaItem> > ApplyAudit(IEnumerable <ITreaItem> insertDatas, TreasuryAccessViewModel taData) { var result = new MSGReturnModel <IEnumerable <ITreaItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (insertDatas != null) { var datas = (List <CAViewModel>)insertDatas; if (datas.Any()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); string logStr = string.Empty; //log var item_Seq = "E5"; //電子憑證流水號開頭編碼 String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; var _TAR = new TREA_APLY_REC(); //申請單號 var _APLY_STATUS = Ref.AccessProjectFormStatus.A01.ToString(); //表單申請 if (!taData.vAplyNo.IsNullOrWhiteSpace()) //修改已存在申請單 { #region 申請單紀錄檔 _TAR = db.TREA_APLY_REC.First(x => x.APLY_NO == taData.vAplyNo); if (CustodyAppr.Contains(_TAR.APLY_STATUS)) { _APLY_STATUS = CustodyConfirmStatus; _TAR.CUSTODY_UID = AccountController.CurrentUserId; //保管單位直接帶使用者 _TAR.CUSTODY_DT = dt; } else { if (_TAR.APLY_STATUS != _APLY_STATUS) //申請紀錄檔狀態不是在表單申請狀態 { _APLY_STATUS = Ref.AccessProjectFormStatus.A05.ToString(); //為重新申請案例 } } _TAR.APLY_STATUS = _APLY_STATUS; _TAR.LAST_UPDATE_DT = dt; logStr += _TAR.modelToString(logStr); #endregion #region 申請單歷程檔 var _ARH = new APLY_REC_HIS() { APLY_NO = taData.vAplyNo, APLY_STATUS = _APLY_STATUS, PROC_DT = dt, PROC_UID = taData.vCreateUid }; logStr += _ARH.modelToString(logStr); db.APLY_REC_HIS.Add(_ARH); #endregion #region 電子憑證庫存資料檔 var _dept = intra.getDept_Sect(taData.vAplyUnit); List <string> oldItemIds = db.OTHER_ITEM_APLY.Where(x => x.APLY_NO == taData.vAplyNo).Select(x => x.ITEM_ID).ToList(); //原有 itemId List <string> updateItemIds = new List <string>(); //更新 itemId List <string> cancelItemIds = new List <string>(); //取消 itemId List <ITEM_CA> inserts = new List <ITEM_CA>(); //新增資料 //抓取有修改註記的 foreach (var item in datas) { var _IC_Item_Id = string.Empty; if (taData.vAccessType == Ref.AccessProjectTradeType.P.ToString()) //存入 { //只抓取預約存入 if (item.vStatus == Ref.AccessInventoryType._3.GetDescription()) { var _IC = new ITEM_CA(); if (item.vItemId.StartsWith(item_Seq)) //舊有資料 { _IC = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == item.vItemId); if (_IC.LAST_UPDATE_DT > item.vLast_Update_Time) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _IC.CA_DESC = item.vCA_Desc; //電子憑證品項 _IC.CA_USE = item.vCA_Use; //電子憑證用途 _IC.BANK = item.vBank; //銀行/廠商 _IC.CA_NUMBER = item.vCA_Number; //電子憑證號碼 _IC.MEMO = item.vMemo; //備註說明 updateItemIds.Add(item.vItemId); logStr += _IC.modelToString(logStr); } else { var item_id = sysSeqDao.qrySeqNo(item_Seq, string.Empty).ToString().PadLeft(8, '0'); _IC = new ITEM_CA() { ITEM_ID = $@"{item_Seq}{item_id}", //物品編號 INVENTORY_STATUS = "3", //預約存入 CA_DESC = item.vCA_Desc, //電子憑證品項 CA_USE = item.vCA_Use, //電子憑證用途 BANK = item.vBank, //銀行/廠商 CA_NUMBER = item.vCA_Number, //電子憑證號碼 MEMO = item.vMemo, //備註說明 APLY_DEPT = _dept.Item1, //申請人部門 APLY_SECT = _dept.Item2, //申請人科別 APLY_UID = taData.vAplyUid, //申請人 CHARGE_DEPT = _dept.Item1, //權責部門 CHARGE_SECT = _dept.Item2, //權責科別 //PUT_DATE = dt, //存入日期時間 LAST_UPDATE_DT = dt, //最後修改時間 }; _IC_Item_Id = _IC.ITEM_ID; inserts.Add(_IC); logStr += _IC.modelToString(logStr); } } } else if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString() && (_APLY_STATUS != CustodyConfirmStatus))//取出 { var _IC = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == item.vItemId); if (_IC.LAST_UPDATE_DT > item.vLast_Update_Time) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } //預約取出 if (item.vtakeoutFlag) { if (_IC.INVENTORY_STATUS == "1") //原先為在庫 { _IC.INVENTORY_STATUS = "4"; //預約取出 _IC.LAST_UPDATE_DT = dt; //最後修改時間 updateItemIds.Add(_IC.ITEM_ID); } else if (_IC.INVENTORY_STATUS == "4") //原先為預約取出 { updateItemIds.Add(_IC.ITEM_ID); } } else { if (_IC.INVENTORY_STATUS == "4") //原先為在庫 { _IC.INVENTORY_STATUS = "1"; //預約取出 _IC.LAST_UPDATE_DT = dt; //最後修改時間 } } } } if (taData.vAccessType == Ref.AccessProjectTradeType.P.ToString()) //存入 { var delItemId = oldItemIds.Where(x => !updateItemIds.Contains(x)).ToList(); db.OTHER_ITEM_APLY.RemoveRange(db.OTHER_ITEM_APLY.Where(x => x.APLY_NO == taData.vAplyNo && delItemId.Contains(x.ITEM_ID)).ToList()); db.ITEM_CA.RemoveRange(db.ITEM_CA.Where(x => delItemId.Contains(x.ITEM_ID)).ToList()); db.OTHER_ITEM_APLY.AddRange(inserts.Select(x => new OTHER_ITEM_APLY() { APLY_NO = taData.vAplyNo, ITEM_ID = x.ITEM_ID })); db.ITEM_CA.AddRange(inserts); } else if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString() && (_APLY_STATUS != CustodyConfirmStatus))//取出 { db.OTHER_ITEM_APLY.RemoveRange(db.OTHER_ITEM_APLY.Where(x => x.APLY_NO == taData.vAplyNo).ToList()); db.OTHER_ITEM_APLY.AddRange(updateItemIds.Select(x => new OTHER_ITEM_APLY() { APLY_NO = taData.vAplyNo, ITEM_ID = x })); } #endregion } else { #region 申請單紀錄檔 & 申請單歷程檔 var data = SaveTREA_APLY_REC(db, taData, logStr, dt); _TAR.APLY_NO = data.Item1; logStr = data.Item2; #endregion #region 電子憑證庫存資料檔 var _dept = intra.getDept_Sect(taData.vAplyUnit); //抓取有修改註記的 foreach (var item in datas) { var _IC_Item_Id = string.Empty; if (taData.vAccessType == Ref.AccessProjectTradeType.P.ToString()) //存入 { //只抓取預約存入 if (item.vStatus == Ref.AccessInventoryType._3.GetDescription()) { var item_id = sysSeqDao.qrySeqNo(item_Seq, string.Empty).ToString().PadLeft(8, '0'); var _IC = new ITEM_CA() { ITEM_ID = $@"{item_Seq}{item_id}", //物品編號 INVENTORY_STATUS = "3", //預約存入 CA_DESC = item.vCA_Desc, //電子憑證品項 CA_USE = item.vCA_Use, //電子憑證用途 BANK = item.vBank, //銀行/廠商 CA_NUMBER = item.vCA_Number, //電子憑證號碼 MEMO = item.vMemo, //備註說明 APLY_DEPT = _dept.Item1, //申請人部門 APLY_SECT = _dept.Item2, //申請人科別 APLY_UID = taData.vAplyUid, //申請人 CHARGE_DEPT = _dept.Item1, //權責部門 CHARGE_SECT = _dept.Item2, //權責科別 //PUT_DATE = dt, //存入日期時間 LAST_UPDATE_DT = dt, //最後修改時間 }; _IC_Item_Id = _IC.ITEM_ID; db.ITEM_CA.Add(_IC); logStr += _IC.modelToString(logStr); } } else if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString())//取出 { //只抓取預約取出 if (item.vStatus == Ref.AccessInventoryType._4.GetDescription()) { var _IC = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == item.vItemId); _IC_Item_Id = _IC.ITEM_ID; if (_IC.LAST_UPDATE_DT > item.vLast_Update_Time) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _IC.INVENTORY_STATUS = "4"; //預約取出 //_IRE.GET_DATE = dt; //取出日期時間 _IC.LAST_UPDATE_DT = dt; //最後修改時間 } } #region 其它存取項目申請資料檔 if (!_IC_Item_Id.IsNullOrWhiteSpace()) { db.OTHER_ITEM_APLY.Add( new OTHER_ITEM_APLY() { APLY_NO = _TAR.APLY_NO, ITEM_ID = _IC_Item_Id }); } #endregion } #endregion } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-新增電子憑證"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, taData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_TAR.APLY_NO}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
/// <summary> /// 庫存異動資料-申請覆核 /// </summary> /// <param name="saveData"></param> /// <param name="searchModel"></param> /// <returns></returns> public MSGReturnModel <IEnumerable <ICDCItem> > CDCApplyAudit(IEnumerable <ICDCItem> saveData, CDCSearchViewModel searchModel) { MSGReturnModel <IEnumerable <ICDCItem> > result = new MSGReturnModel <IEnumerable <ICDCItem> >(); result.RETURN_FLAG = false; string logStr = string.Empty; DateTime dt = DateTime.Now; using (TreasuryDBEntities db = new TreasuryDBEntities()) { bool changFlag = false; var _data = SaveINVENTORY_CHG_APLY(db, searchModel, logStr, dt); logStr = _data.Item2; foreach (CDCBillViewModel model in saveData) { var _Bill = db.ITEM_BLANK_NOTE.FirstOrDefault(x => x.ITEM_ID == model.vItemId); if (_Bill != null && !changFlag) { if (_Bill.LAST_UPDATE_DT > model.vLast_Update_Time || _Bill.INVENTORY_STATUS != "1") { changFlag = true; } if (!changFlag) { _Bill.INVENTORY_STATUS = "8"; //庫存狀態改為「8」資料庫異動中。 _Bill.ISSUING_BANK_AFT = model.vBill_Issuing_Bank_AFT; _Bill.CHECK_TYPE_AFT = model.vBill_Check_Type_AFT; _Bill.CHECK_NO_TRACK_AFT = model.vBill_Check_No_Track_AFT; _Bill.CHECK_NO_B_AFT = model.vBill_Check_No_B_AFT; _Bill.CHECK_NO_E_AFT = model.vBill_Check_No_E_AFT; _Bill.LAST_UPDATE_DT = dt; logStr += _Bill.modelToString(logStr); var _BNA = new BLANK_NOTE_APLY() { APLY_NO = _data.Item1, ITEM_ID = _Bill.ITEM_ID, ISSUING_BANK = model.vBill_Issuing_Bank_AFT, CHECK_TYPE = model.vBill_Check_Type_AFT.IsNullOrEmpty() ? string.Empty : model.vBill_Check_Type_AFT, CHECK_NO_TRACK = model.vBill_Check_No_Track_AFT.IsNullOrEmpty() ? string.Empty : model.vBill_Check_No_Track_AFT, CHECK_NO_B = model.vBill_Check_No_B_AFT.IsNullOrEmpty() ? string.Empty : model.vBill_Check_No_B_AFT, CHECK_NO_E = model.vBill_Check_No_E_AFT.IsNullOrEmpty() ? string.Empty : model.vBill_Check_No_E_AFT }; db.BLANK_NOTE_APLY.Add(_BNA); logStr += _BNA.modelToString(logStr); } } else { changFlag = true; } } if (changFlag) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); } else { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-資料庫異動:空白票據"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, searchModel.vCreate_Uid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"申請單號:{_data.Item1}"); result.Datas = GetCDCSearchData(searchModel); } } return(result); }
/// <summary> /// 申請覆核動作 /// </summary> /// <param name="insertDatas"></param> /// <param name="taData"></param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITreaItem> > ApplyAudit(IEnumerable <ITreaItem> insertDatas, TreasuryAccessViewModel taData) { var result = new MSGReturnModel <IEnumerable <ITreaItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (insertDatas != null) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; var datas = (List <BillViewModel>)insertDatas; string logStr = string.Empty; //log var item_Seq = "E2"; //空白票卷流水號開頭編碼 if (!taData.vAplyNo.IsNullOrWhiteSpace()) //修改已存在申請單 { if (datas.Any()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _APLY_STATUS = Ref.AccessProjectFormStatus.A01.ToString(); //表單申請 #region 申請單紀錄檔 var _TAR = db.TREA_APLY_REC.First(x => x.APLY_NO == taData.vAplyNo); if (CustodyAppr.Contains(_TAR.APLY_STATUS)) { _APLY_STATUS = CustodyConfirmStatus; _TAR.CUSTODY_UID = AccountController.CurrentUserId; //保管單位直接帶使用者 _TAR.CUSTODY_DT = dt; } else { if (_TAR.APLY_STATUS != _APLY_STATUS) //申請紀錄檔狀態不是在表單申請狀態 { _APLY_STATUS = Ref.AccessProjectFormStatus.A05.ToString(); //為重新申請案例 } } _TAR.APLY_STATUS = _APLY_STATUS; _TAR.LAST_UPDATE_DT = dt; logStr += _TAR.modelToString(logStr); #endregion #region 申請單歷程檔 var _ARH = new APLY_REC_HIS() { APLY_NO = taData.vAplyNo, APLY_STATUS = _APLY_STATUS, PROC_DT = dt, PROC_UID = taData.vCreateUid }; logStr += _ARH.modelToString(logStr); db.APLY_REC_HIS.Add(_ARH); #endregion #region 空白票據申請資料檔 List <BLANK_NOTE_APLY> updates = new List <BLANK_NOTE_APLY>(); List <BLANK_NOTE_APLY> inserts = new List <BLANK_NOTE_APLY>(); foreach (var item in datas) { if (item.vItemId.StartsWith(item_Seq)) // 舊有資料 { var _BNA = db.BLANK_NOTE_APLY.First( x => x.ITEM_ID == item.vItemId && x.APLY_NO == taData.vAplyNo); _BNA.CHECK_TYPE = item.vCheckType; _BNA.ISSUING_BANK = item.vIssuingBank; _BNA.CHECK_NO_TRACK = item.vCheckNoTrack; _BNA.CHECK_NO_B = item.vCheckNoB; _BNA.CHECK_NO_E = item.vCheckNoE; updates.Add(_BNA); logStr += _BNA.modelToString(logStr); } else { var item_id = sysSeqDao.qrySeqNo(item_Seq, string.Empty).ToString().PadLeft(8, '0'); var _BNA = new BLANK_NOTE_APLY() { APLY_NO = _TAR.APLY_NO, ITEM_ID = $@"{item_Seq}{item_id}", CHECK_TYPE = item.vCheckType, ISSUING_BANK = item.vIssuingBank, CHECK_NO_TRACK = item.vCheckNoTrack, CHECK_NO_B = item.vCheckNoB, CHECK_NO_E = item.vCheckNoE }; inserts.Add(_BNA); logStr += _BNA.modelToString(logStr); } } var ups = updates.Select(x => x.ITEM_ID).ToList(); db.BLANK_NOTE_APLY.RemoveRange( db.BLANK_NOTE_APLY.Where(x => x.APLY_NO == taData.vAplyNo && !ups.Contains(x.ITEM_ID)).ToList()); db.BLANK_NOTE_APLY.AddRange(inserts); #endregion #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-修改空白票據"; log.CACTION = "U"; log.CCONTENT = logStr; LogDao.Insert(log, _TAR.CREATE_UID); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_TAR.APLY_NO}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else //新增申請單 { //取出只抓狀態為預約取出的資料 if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString()) { datas = datas.Where(x => x.vStatus == Ref.AccessInventoryType._4.GetDescription()).ToList(); } if (datas.Any()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { #region 申請單紀錄檔 & 申請單歷程檔 var data = SaveTREA_APLY_REC(db, taData, logStr, dt); logStr = data.Item2; #endregion string _ITEM_BLANK_NOTE_ITEM_ID = null; //紀錄空白票據申請資料檔 對應空白票據庫存資料檔 物品編號 bool _changFlag = false; datas.ForEach(x => { #region 取出時要把空白票據資料 做切段動作 if (taData.vAccessType == Ref.AccessProjectTradeType.G.ToString()) //取出時要把空白票據資料 做切段動作 { var _blank_Note = db.ITEM_BLANK_NOTE.FirstOrDefault(y => y.ITEM_ID == x.vItemId); if (_blank_Note != null) { if (_blank_Note.LAST_UPDATE_DT > x.vLast_Update_Time || _blank_Note.INVENTORY_STATUS != "1") { _changFlag = true; } else { _ITEM_BLANK_NOTE_ITEM_ID = _blank_Note.ITEM_ID; //全部取出 if (x.vTakeOutE == _blank_Note.CHECK_NO_E) { _blank_Note.INVENTORY_STATUS = "4"; //預約取出 } //分段取出 else { _blank_Note.CHECK_NO_B = (TypeTransfer.stringToInt(x.vTakeOutE) + 1).ToString().PadLeft(7, '0'); } _blank_Note.LAST_UPDATE_DT = dt; } } else { _changFlag = true; } } #endregion #region 空白票據申請資料檔 var item_id = sysSeqDao.qrySeqNo(item_Seq, string.Empty).ToString().PadLeft(8, '0'); var _BNA = new BLANK_NOTE_APLY() { APLY_NO = data.Item1, ITEM_ID = $@"{item_Seq}{item_id}", CHECK_TYPE = x.vCheckType, ISSUING_BANK = x.vIssuingBank, CHECK_NO_TRACK = x.vCheckNoTrack, CHECK_NO_B = x.vCheckNoB, CHECK_NO_E = taData.vAccessType == Ref.AccessProjectTradeType.P.ToString() ? x.vCheckNoE : x.vTakeOutE, ITEM_BLANK_NOTE_ITEM_ID = _ITEM_BLANK_NOTE_ITEM_ID }; db.BLANK_NOTE_APLY.Add(_BNA); logStr += _BNA.modelToString(logStr); #endregion }); if (_changFlag) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-新增空白票據"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, taData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{data.Item1}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
public MSGReturnModel <List <TDAApprSearchDetailViewModel> > Reject(TDAApprSearchViewModel searchData, List <TDAApprSearchDetailViewModel> viewModels, string apprDesc) { var result = new MSGReturnModel <List <TDAApprSearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(); List <string> TREA_ITEM_APLY = new List <string>(); List <string> TREA_EQUIP_APLY = new List <string>(); List <string> MAIL_CONTENT_APLY = new List <string>(); List <string> MAIL_TIME_APLY = new List <string>(); List <string> ITEM_CHARGE_UNIT_APLY = new List <string>(); List <string> DEP_CHK_ITEM_APLY = new List <string>(); DateTime dt = DateTime.Now; string logStr = string.Empty; using (TreasuryDBEntities db = new TreasuryDBEntities()) { var aplynos = new List <string>(); foreach (var item in viewModels.Where(x => x.vCheckFlag)) { switch (item.vTDA_Id) { case "TREA_ITEM": TREA_ITEM_APLY.Add(item.vAply_No); break; case "TREA_EQUIP": TREA_EQUIP_APLY.Add(item.vAply_No); break; case "MAIL_CONTENT": MAIL_CONTENT_APLY.Add(item.vAply_No); break; case "MAIL_TIME": MAIL_TIME_APLY.Add(item.vAply_No); break; case "ITEM_CHARGE_UNIT": ITEM_CHARGE_UNIT_APLY.Add(item.vAply_No); break; case "DEP_CHK_ITEM": DEP_CHK_ITEM_APLY.Add(item.vAply_No); break; } aplynos.Add(item.vAply_No); } #region 應資料檔-駁回 var sampleFactory = new SampleFactory(); if (TREA_ITEM_APLY.Any()) { var getTDAAction = sampleFactory.GetTDAAction(EnumUtil.GetValues <Ref.DefinitionType>().First(x => x.ToString() == "TREA_ITEM")); if (getTDAAction != null) { var _recover = getTDAAction.TinReject(db, TREA_ITEM_APLY, logStr, dt, searchData.vCreateUid, apprDesc); if (!_recover.Item1) //失敗 { return(result); } logStr += _recover.Item2; } else { return(result); } } if (TREA_EQUIP_APLY.Any()) { var getTDAAction = sampleFactory.GetTDAAction(EnumUtil.GetValues <Ref.DefinitionType>().First(x => x.ToString() == "TREA_EQUIP")); if (getTDAAction != null) { var _recover = getTDAAction.TinReject(db, TREA_EQUIP_APLY, logStr, dt, searchData.vCreateUid, apprDesc); if (!_recover.Item1) //失敗 { return(result); } logStr += _recover.Item2; } else { return(result); } } if (MAIL_CONTENT_APLY.Any()) { var getTDAAction = sampleFactory.GetTDAAction(EnumUtil.GetValues <Ref.DefinitionType>().First(x => x.ToString() == "MAIL_CONTENT")); if (getTDAAction != null) { var _recover = getTDAAction.TinReject(db, MAIL_CONTENT_APLY, logStr, dt, searchData.vCreateUid, apprDesc); if (!_recover.Item1) //失敗 { return(result); } logStr += _recover.Item2; } else { return(result); } } if (MAIL_TIME_APLY.Any()) { var getTDAAction = sampleFactory.GetTDAAction(EnumUtil.GetValues <Ref.DefinitionType>().First(x => x.ToString() == "MAIL_TIME")); if (getTDAAction != null) { var _recover = getTDAAction.TinReject(db, MAIL_TIME_APLY, logStr, dt, searchData.vCreateUid, apprDesc); if (!_recover.Item1) //失敗 { return(result); } logStr += _recover.Item2; } else { return(result); } } if (ITEM_CHARGE_UNIT_APLY.Any()) { var getTDAAction = sampleFactory.GetTDAAction(EnumUtil.GetValues <Ref.DefinitionType>().First(x => x.ToString() == "ITEM_CHARGE_UNIT")); if (getTDAAction != null) { var _recover = getTDAAction.TinReject(db, ITEM_CHARGE_UNIT_APLY, logStr, dt, searchData.vCreateUid, apprDesc); if (!_recover.Item1) //失敗 { return(result); } logStr += _recover.Item2; } else { return(result); } } if (DEP_CHK_ITEM_APLY.Any()) { var getTDAAction = sampleFactory.GetTDAAction(EnumUtil.GetValues <Ref.DefinitionType>().First(x => x.ToString() == "DEP_CHK_ITEM")); if (getTDAAction != null) { var _recover = getTDAAction.TinReject(db, DEP_CHK_ITEM_APLY, logStr, dt, searchData.vCreateUid, apprDesc); if (!_recover.Item1) //失敗 { return(result); } logStr += _recover.Item2; } else { return(result); } } #endregion var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "駁回-定義檔覆核作業"; log.CACTION = "U"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = $"申請單號 : {string.Join(",", aplynos)} 已駁回!"; result.Datas = GetApprSearchDetail(searchData); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } return(result); }
/// <summary> /// 保管資料發送維護作業-申請覆核 /// </summary> /// <param name="saveData"></param> /// <param name="searchModel"></param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITinItem> > TinApplyAudit(IEnumerable <ITinItem> saveData, ITinItem searchModel) { var searchData = (ItemChargeUnitSearchViewModel)searchModel; var result = new MSGReturnModel <IEnumerable <ITinItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; //return result; try { if (saveData != null) { var datas = (List <ItemChargeUnitSearchDetailViewModel>)saveData; if (datas.Any()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; string _Aply_No = string.Empty; var cId = sysSeqDao.qrySeqNo("G8", qPreCode).ToString().PadLeft(3, '0'); _Aply_No = $@"G8{qPreCode}{cId}"; //G8 + 系統日期YYYMMDD(民國年) + 3碼流水號 string logStr = string.Empty; //log foreach (var item in datas) { var _CHARGE_UNIT_ID = string.Empty; var _ICU = new ITEM_CHARGE_UNIT(); # region 保管單位設定檔 //判斷執行功能 switch (item.vEXEC_ACTION) { case "A": //新增 _CHARGE_UNIT_ID = ""; //_CHARGE_UNIT_ID = sysSeqDao.qrySeqNo("D5", string.Empty).ToString().PadLeft(3, '0'); //_CHARGE_UNIT_ID = $@"D5{_CHARGE_UNIT_ID}"; //_ICU = new ITEM_CHARGE_UNIT() //{ // CHARGE_UNIT_ID = _CHARGE_UNIT_ID, // ITEM_ID = item.vTREA_ITEM_NAME, // CHARGE_DEPT = item.vCHARGE_DEPT, // CHARGE_SECT = item.vCHARGE_SECT, // CHARGE_UID = item.vCHARGE_UID, // IS_MAIL_DEPT_MGR = item.vIS_MAIL_DEPT_MGR, // IS_MAIL_SECT_MGR = item.vIS_MAIL_SECT_MGR, // IS_DISABLED = "N", // DATA_STATUS = "2",//凍結中 // CREATE_DT = dt, // CREATE_UID = searchData.vCUSER_ID, // LAST_UPDATE_DT = dt, // LAST_UPDATE_UID = searchData.vCUSER_ID, // FREEZE_UID = searchData.vCUSER_ID, // FREEZE_DT = dt //}; //db.ITEM_CHARGE_UNIT.Add(_ICU); //logStr += "|"; //logStr += _ICU.modelToString(); break; case "U": //修改 _ICU = db.ITEM_CHARGE_UNIT.FirstOrDefault(x => x.CHARGE_UNIT_ID == item.vCHARGE_UNIT_ID); if (_ICU.LAST_UPDATE_DT != null && _ICU.LAST_UPDATE_DT > item.vLAST_UPDATE_DT) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _CHARGE_UNIT_ID = item.vCHARGE_UNIT_ID; _ICU.DATA_STATUS = "2"; //凍結中 _ICU.LAST_UPDATE_UID = searchData.vCUSER_ID; _ICU.LAST_UPDATE_DT = dt; _ICU.FREEZE_UID = searchData.vCUSER_ID; _ICU.FREEZE_DT = dt; logStr += "|"; logStr += _ICU.modelToString(); break; case "D": //刪除 _ICU = db.ITEM_CHARGE_UNIT.FirstOrDefault(x => x.CHARGE_UNIT_ID == item.vCHARGE_UNIT_ID); if (_ICU.LAST_UPDATE_DT != null && _ICU.LAST_UPDATE_DT > item.vLAST_UPDATE_DT) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _CHARGE_UNIT_ID = item.vCHARGE_UNIT_ID; _ICU.DATA_STATUS = "2";//凍結中 _ICU.LAST_UPDATE_UID = searchData.vCUSER_ID; _ICU.LAST_UPDATE_DT = dt; _ICU.FREEZE_UID = searchData.vCUSER_ID; _ICU.FREEZE_DT = dt; logStr += "|"; logStr += _ICU.modelToString(); break; default: break; } #endregion #region 保管單位設定異動檔 var _ICU_Data = db.ITEM_CHARGE_UNIT.FirstOrDefault(x => x.CHARGE_UNIT_ID == item.vCHARGE_UNIT_ID); if (_ICU_Data == null) { var _ICUH = new ITEM_CHARGE_UNIT_HIS() { APLY_NO = _Aply_No, CHARGE_UNIT_ID = _CHARGE_UNIT_ID, EXEC_ACTION = item.vEXEC_ACTION, ITEM_ID = item.vTREA_ITEM_NAME, CHARGE_DEPT = item.vCHARGE_DEPT, CHARGE_SECT = item.vCHARGE_SECT, CHARGE_UID = item.vCHARGE_UID, IS_MAIL_DEPT_MGR = item.vIS_MAIL_DEPT_MGR, IS_MAIL_SECT_MGR = item.vIS_MAIL_SECT_MGR, IS_DISABLED = item.vIS_DISABLED, APLY_DATE = dt, APLY_UID = searchData.vCUSER_ID, APPR_STATUS = "1" //表單申請 }; db.ITEM_CHARGE_UNIT_HIS.Add(_ICUH); logStr += "|"; logStr += _ICUH.modelToString(); } else { var _ICUH = new ITEM_CHARGE_UNIT_HIS() { APLY_NO = _Aply_No, CHARGE_UNIT_ID = _CHARGE_UNIT_ID, EXEC_ACTION = item.vEXEC_ACTION, ITEM_ID = item.vTREA_ITEM_NAME, CHARGE_DEPT = item.vCHARGE_DEPT, CHARGE_SECT = item.vCHARGE_SECT, CHARGE_UID = item.vCHARGE_UID, IS_MAIL_DEPT_MGR = item.vIS_MAIL_DEPT_MGR, IS_MAIL_SECT_MGR = item.vIS_MAIL_SECT_MGR, IS_DISABLED = item.vIS_DISABLED, CHARGE_UID_B = _ICU_Data.CHARGE_UID, IS_MAIL_DEPT_MGR_B = _ICU_Data.IS_MAIL_DEPT_MGR, IS_MAIL_SECT_MGR_B = _ICU_Data.IS_MAIL_SECT_MGR, IS_DISABLED_B = _ICU_Data.IS_DISABLED, APLY_DATE = dt, APLY_UID = searchData.vCUSER_ID, APPR_STATUS = "1" //表單申請 }; db.ITEM_CHARGE_UNIT_HIS.Add(_ICUH); logStr += "|"; logStr += _ICUH.modelToString(); } #endregion } var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-保管資料發送維護"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vCUSER_ID); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_Aply_No}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } }
/// <summary> /// 金庫進出管理作業-申請覆核 /// </summary> /// <param name="saveData">申請覆核的資料</param> /// <param name="searchModel">查詢ViwModel</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITinItem> > TinApplyAudit(IEnumerable <ITinItem> saveData, ITinItem searchModel) { var searchData = (TreasuryMaintainSearchViewModel)searchModel; var result = new MSGReturnModel <IEnumerable <ITinItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (saveData != null) { var datas = (List <TreasuryMaintainViewModel>)saveData; if (datas.Any()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; string _Aply_No = string.Empty; var cId = sysSeqDao.qrySeqNo("G2", qPreCode).ToString().PadLeft(3, '0'); _Aply_No = $@"G2{qPreCode}{cId}"; //申請單號 G2+系統日期YYYMMDD(民國年)+3碼流水號 string logStr = string.Empty; //log foreach (var item in datas) { var _Trea_Equip_Id = string.Empty; var _TE = new TREA_EQUIP(); #region 金庫設備設定檔 //判斷執行功能 switch (item.vExec_Action) { case "A": //新增 _Trea_Equip_Id = ""; //_Trea_Equip_Id = sysSeqDao.qrySeqNo("D2", string.Empty).ToString().PadLeft(3, '0'); //_Trea_Equip_Id = $@"D2{_Trea_Equip_Id}"; //_TE = new TREA_EQUIP() //{ // TREA_EQUIP_ID = _Trea_Equip_Id, // EQUIP_NAME = item.vEquip_Name, // CONTROL_MODE = item.vControl_Mode, // NORMAL_CNT = item.vNormal_Cnt, // RESERVE_CNT = item.vReserve_Cnt, // MEMO = item.vMemo, // IS_DISABLED = "N", // DATA_STATUS = "2",//凍結中 // CREATE_UID = searchData.vLast_Update_Uid, // CREATE_DT = dt, // LAST_UPDATE_UID = searchData.vLast_Update_Uid, // LAST_UPDATE_DT = dt, // FREEZE_UID = searchData.vLast_Update_Uid, // FREEZE_DT = dt //}; //db.TREA_EQUIP.Add(_TE); //logStr += "|"; //logStr += _TE.modelToString(); break; case "U": //修改 _TE = db.TREA_EQUIP.FirstOrDefault(x => x.TREA_EQUIP_ID == item.vTrea_Equip_Id); if (_TE.LAST_UPDATE_DT != null && _TE.LAST_UPDATE_DT > item.vLast_Update_Dt) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _Trea_Equip_Id = item.vTrea_Equip_Id; _TE.DATA_STATUS = "2";//凍結中 _TE.LAST_UPDATE_UID = searchData.vLast_Update_Uid; _TE.LAST_UPDATE_DT = dt; _TE.FREEZE_UID = searchData.vLast_Update_Uid; _TE.FREEZE_DT = dt; logStr += "|"; logStr += _TE.modelToString(); break; case "D": //刪除 _TE = db.TREA_EQUIP.FirstOrDefault(x => x.TREA_EQUIP_ID == item.vTrea_Equip_Id); if (_TE.LAST_UPDATE_DT != null && _TE.LAST_UPDATE_DT > item.vLast_Update_Dt) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _Trea_Equip_Id = item.vTrea_Equip_Id; _TE.DATA_STATUS = "2";//凍結中 _TE.LAST_UPDATE_UID = searchData.vLast_Update_Uid; _TE.LAST_UPDATE_DT = dt; _TE.FREEZE_UID = searchData.vLast_Update_Uid; _TE.FREEZE_DT = dt; logStr += "|"; logStr += _TE.modelToString(); break; default: break; } #endregion 金庫設備設定檔 #region 金庫設備異動檔 var _TE_Data = db.TREA_EQUIP.FirstOrDefault(x => x.TREA_EQUIP_ID == item.vTrea_Equip_Id); if (_TE_Data == null) { var _TEH = new TREA_EQUIP_HIS() { APLY_NO = _Aply_No, TREA_EQUIP_ID = _Trea_Equip_Id, EXEC_ACTION = item.vExec_Action, EQUIP_NAME = item.vEquip_Name, CONTROL_MODE = item.vControl_Mode, NORMAL_CNT = item.vNormal_Cnt, RESERVE_CNT = item.vReserve_Cnt, MEMO = item.vMemo, IS_DISABLED = item.vIs_Disabled, APPR_STATUS = "1",//表單申請 APLY_UID = searchData.vLast_Update_Uid, APLY_DATE = dt }; db.TREA_EQUIP_HIS.Add(_TEH); logStr += "|"; logStr += _TEH.modelToString(); } else { var _TEH = new TREA_EQUIP_HIS() { APLY_NO = _Aply_No, TREA_EQUIP_ID = _Trea_Equip_Id, EXEC_ACTION = item.vExec_Action, EQUIP_NAME = item.vEquip_Name, CONTROL_MODE = item.vControl_Mode, NORMAL_CNT = item.vNormal_Cnt, RESERVE_CNT = item.vReserve_Cnt, MEMO = item.vMemo, IS_DISABLED = item.vIs_Disabled, APPR_STATUS = "1",//表單申請 EQUIP_NAME_B = _TE_Data.EQUIP_NAME, CONTROL_MODE_B = _TE_Data.CONTROL_MODE, NORMAL_CNT_B = _TE_Data.NORMAL_CNT, RESERVE_CNT_B = _TE_Data.RESERVE_CNT, MEMO_B = _TE_Data.MEMO, IS_DISABLED_B = _TE_Data.IS_DISABLED, APLY_UID = searchData.vLast_Update_Uid, APLY_DATE = dt }; db.TREA_EQUIP_HIS.Add(_TEH); logStr += "|"; logStr += _TEH.modelToString(); } #endregion 金庫設備異動檔 } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-新增金庫設備"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vLast_Update_Uid); #endregion LOG result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_Aply_No}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion Save Db } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
/// <summary> /// 金庫進出管理作業-覆核 /// </summary> /// <param name="db">Entities</param> /// <param name="aplyNos">覆核的申請單號</param> /// <param name="logStr">log</param> /// <param name="dt">執行時間</param> /// <param name="userId">覆核人ID</param> /// <returns></returns> public Tuple <bool, string> TinApproved(TreasuryDBEntities db, List <string> aplyNos, string logStr, DateTime dt, string userId) { SysSeqDao sysSeqDao = new SysSeqDao(); foreach (var aplyNo in aplyNos) { var _DepChkItemHisList = db.DEP_CHK_ITEM_HIS.AsNoTracking().Where(x => x.APLY_NO == aplyNo).ToList(); if (_DepChkItemHisList.Any()) { foreach (var DepChkItemHis in _DepChkItemHisList) { //var _Isortby = 0; var _Item_Order = 0; //定存檢核表項目設定檔 var _DepChkItem = db.DEP_CHK_ITEM.FirstOrDefault(x => x.ACCESS_TYPE == DepChkItemHis.ACCESS_TYPE && x.ISORTBY == DepChkItemHis.ISORTBY); if (_DepChkItem != null) { _DepChkItem.DATA_STATUS = "1";//可異動 _DepChkItem.DEP_CHK_ITEM_DESC = DepChkItemHis.DEP_CHK_ITEM_DESC; _DepChkItem.IS_DISABLED = DepChkItemHis.IS_DISABLED; _DepChkItem.ITEM_ORDER = DepChkItemHis.ITEM_ORDER; _DepChkItem.REPLACE = DepChkItemHis.REPLACE; _DepChkItem.APPR_UID = userId; _DepChkItem.APPR_DT = dt; logStr += _DepChkItem.modelToString(logStr); } else { //判斷交易別 if (DepChkItemHis.ACCESS_TYPE == "P") { //_Isortby = sysSeqDao.qrySeqNo("DCI_P", string.Empty); _Item_Order = GetItem_Order("P"); } else if (DepChkItemHis.ACCESS_TYPE == "G") { //_Isortby = sysSeqDao.qrySeqNo("DCI_G", string.Empty); _Item_Order = GetItem_Order("G"); } var _DCI = new DEP_CHK_ITEM() { ACCESS_TYPE = DepChkItemHis.ACCESS_TYPE, ISORTBY = DepChkItemHis.ISORTBY, DEP_CHK_ITEM_DESC = DepChkItemHis.DEP_CHK_ITEM_DESC, IS_DISABLED = DepChkItemHis.IS_DISABLED, ITEM_ORDER = _Item_Order, REPLACE = DepChkItemHis.REPLACE, DATA_STATUS = "1", //可異動 CREATE_UID = DepChkItemHis.APLY_UID, CREATE_DT = dt, LAST_UPDATE_UID = DepChkItemHis.APLY_UID, LAST_UPDATE_DT = dt, APPR_UID = userId, APPR_DT = dt }; db.DEP_CHK_ITEM.Add(_DCI); logStr += _DCI.modelToString(); db.SaveChanges(); } //定存檢核表項目設定異動檔 var _DepChkItemHis = db.DEP_CHK_ITEM_HIS.FirstOrDefault(x => x.APLY_NO == DepChkItemHis.APLY_NO && x.ACCESS_TYPE == DepChkItemHis.ACCESS_TYPE && x.ISORTBY == DepChkItemHis.ISORTBY); if (_DepChkItemHis != null) { _DepChkItemHis.APPR_STATUS = "2";//覆核完成 _DepChkItemHis.APPR_DATE = dt; _DepChkItemHis.APPR_UID = userId; logStr += _DepChkItemHis.modelToString(logStr); } else { return(new Tuple <bool, string>(false, logStr)); } } } else { return(new Tuple <bool, string>(false, logStr)); } } return(new Tuple <bool, string>(true, logStr)); }
/// <summary> /// 產生工作底稿 /// </summary> /// <param name="currentUserId">目前使用者ID</param> /// <param name="Trea_Register_Id">金庫開庫單號</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITreaItem> > DraftData(string currentUserId, string Trea_Register_Id) { var result = new MSGReturnModel <IEnumerable <ITreaItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; var Regi_Status = Ref.AccessProjectFormStatus.C02.ToString(); var OTD = DateTime.Now.ToString("yyyy-MM-dd"); try { using (TreasuryDBEntities db = new TreasuryDBEntities()) { string logStr = string.Empty; //log //查詢【開庫紀錄檔】,是否有尚待執行開庫的申請資料 var _TOR_List = db.TREA_OPEN_REC.FirstOrDefault(x => x.TREA_REGISTER_ID == Trea_Register_Id); var Update_Regi_Status = Ref.AccessProjectFormStatus.D01.ToString(); #region 開庫紀錄檔 if (_TOR_List != null) { //異動【開庫紀錄檔】 _TOR_List.REGI_STATUS = Update_Regi_Status; //開庫類型=1 if (_TOR_List.OPEN_TREA_TYPE == "1") { _TOR_List.CREATE_UID = currentUserId; } _TOR_List.LAST_UPDATE_UID = currentUserId; _TOR_List.LAST_UPDATE_DT = dt; logStr += "|"; logStr += _TOR_List.modelToString(); //畫面上「已入庫確認資料」 var _TAR_List = db.TREA_APLY_REC .Where(x => x.CONFIRM_UID != null) .Where(x => x.APLY_STATUS == Regi_Status) .Where(x => x.TREA_REGISTER_ID == _TOR_List.TREA_REGISTER_ID) .ToList(); foreach (var item in _TAR_List) { #region 申請單紀錄檔 item.APLY_STATUS = Update_Regi_Status; item.LAST_UPDATE_UID = currentUserId; item.LAST_UPDATE_DT = dt; logStr += "|"; logStr += item.modelToString(); #endregion #region 申請單歷程檔 db.APLY_REC_HIS.Add( new APLY_REC_HIS() { APLY_NO = item.APLY_NO, APLY_STATUS = Update_Regi_Status, PROC_UID = currentUserId, PROC_DT = dt }); #endregion } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "金庫登記簿執行作業(開庫前)"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, currentUserId); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = "金庫登記簿執行作業(開庫前),執行成功"; } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } else { result.DESCRIPTION = "無可供開庫作業的申請資料,若需開庫,請執行指定時間開庫申請!!"; } #endregion } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
//public List<SelectOption> GetTreaItem() //{ // List<SelectOption> treaItem = new List<SelectOption>(); // using (TreasuryDBEntities db = new TreasuryDBEntities()) // { // treaItem = db.TREA_ITEM.AsNoTracking() // } //} /// <summary> /// 金庫進出管理作業-申請覆核 /// </summary> /// <param name="saveData">申請覆核的資料</param> /// <param name="searchModel">查詢ViwModel</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITinItem> > TinApplyAudit(IEnumerable <ITinItem> saveData, ITinItem searchModel) { var searchData = (ItemMaintainSearchViewModel)searchModel; var result = new MSGReturnModel <IEnumerable <ITinItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (saveData != null) { var datas = (List <ItemMaintainSearchDetailViewModel>)saveData; if (datas.Any()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; var cId = sysSeqDao.qrySeqNo("G1", qPreCode).ToString().PadLeft(3, '0'); string _Aply_No = string.Empty; _Aply_No = $@"G1{qPreCode}{cId}"; //申請單號 G1+系統日期YYYMMDD(民國年)+3碼流水號 string logStr = string.Empty; //log foreach (var item in datas) { var _Trea_Item_Id = string.Empty; var _TI = new TREA_ITEM(); # region 金庫存取作業設定檔 //判斷執行功能 switch (item.vEXEC_ACTION) { case "A": //新增 _Trea_Item_Id = ""; //_Trea_Item_Id = sysSeqDao.qrySeqNo("D1", string.Empty).ToString().PadLeft(3, '0'); //_Trea_Item_Id = $@"D1{_Trea_Item_Id}"; //_TI = new TREA_ITEM() //{ // ITEM_ID = _Trea_Item_Id, // ITEM_DESC = item.vITEM_DESC, // IS_TREA_ITEM = item.vIS_TREA_ITEM, // TREA_ITEM_NAME = item.vTREA_ITEM_NAME, // TREA_ITEM_TYPE = item.vTREA_ITEM_TYPE, // ITEM_OP_TYPE = item.vITEM_OP_TYPE, // DAILY_FLAG = item.vISDO_PERDAY, // IS_DISABLED = item.vIS_DISABLED, // MEMO = item.vMEMO, // DATA_STATUS = "2",//凍結中 // CREATE_DT = dt, // CREATE_UID = searchData.vCUSER_ID, // LAST_UPDATE_DT =dt, // LAST_UPDATE_UID = searchData.vCUSER_ID, // FREEZE_UID = searchData.vCUSER_ID, // FREEZE_DT = dt //}; //db.TREA_ITEM.Add(_TI); //logStr += "|"; //logStr += _TI.modelToString(); break; case "U": //修改 _TI = db.TREA_ITEM.FirstOrDefault(x => x.ITEM_ID == item.vITEM_ID); if (_TI.LAST_UPDATE_DT != null && _TI.LAST_UPDATE_DT > item.vLAST_UPDATE_DT) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _Trea_Item_Id = item.vITEM_ID; _TI.DATA_STATUS = "2";//凍結中 _TI.LAST_UPDATE_UID = searchData.vCUSER_ID; _TI.LAST_UPDATE_DT = dt; _TI.FREEZE_UID = searchData.vCUSER_ID; _TI.FREEZE_DT = dt; logStr += "|"; logStr += _TI.modelToString(); break; case "D": //刪除 _TI = db.TREA_ITEM.FirstOrDefault(x => x.ITEM_ID == item.vITEM_ID); if (_TI.LAST_UPDATE_DT != null && _TI.LAST_UPDATE_DT > item.vLAST_UPDATE_DT) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _Trea_Item_Id = item.vITEM_ID; _TI.DATA_STATUS = "2";//凍結中 _TI.LAST_UPDATE_UID = searchData.vCUSER_ID; _TI.LAST_UPDATE_DT = dt; _TI.FREEZE_UID = searchData.vCUSER_ID; _TI.FREEZE_DT = dt; logStr += "|"; logStr += _TI.modelToString(); break; default: break; } #endregion #region 金庫存取作業異動檔 var _TI_Data = db.TREA_ITEM.FirstOrDefault(x => x.ITEM_ID == item.vITEM_ID); if (_TI_Data == null) { var _TIH = new TREA_ITEM_HIS() { APLY_NO = _Aply_No, ITEM_ID = _Trea_Item_Id, EXEC_ACTION = item.vEXEC_ACTION, ITEM_DESC = item.vITEM_DESC, IS_TREA_ITEM = item.vIS_TREA_ITEM, TREA_ITEM_NAME = item.vTREA_ITEM_NAME, TREA_ITEM_TYPE = item.vTREA_ITEM_TYPE, ITEM_OP_TYPE = item.vITEM_OP_TYPE, DAILY_FLAG = item.vISDO_PERDAY, IS_DISABLED = item.vIS_DISABLED, MEMO = item.vMEMO, APLY_DATE = dt, APLY_UID = searchData.vCUSER_ID, APPR_STATUS = "1" //表單申請 }; db.TREA_ITEM_HIS.Add(_TIH); logStr += "|"; logStr += _TIH.modelToString(); } else { var _TIH = new TREA_ITEM_HIS() { APLY_NO = _Aply_No, ITEM_ID = _Trea_Item_Id, EXEC_ACTION = item.vEXEC_ACTION, ITEM_DESC = item.vITEM_DESC, IS_TREA_ITEM = item.vIS_TREA_ITEM, TREA_ITEM_NAME = item.vTREA_ITEM_NAME, TREA_ITEM_TYPE = item.vTREA_ITEM_TYPE, ITEM_OP_TYPE = item.vITEM_OP_TYPE, DAILY_FLAG = item.vISDO_PERDAY, IS_DISABLED = item.vIS_DISABLED, MEMO = item.vMEMO, APLY_DATE = dt, APLY_UID = searchData.vCUSER_ID, APPR_STATUS = "1", //表單申請 DAILY_FLAG_B = _TI_Data.DAILY_FLAG, IS_DISABLED_B = _TI_Data.IS_DISABLED, IS_TREA_ITEM_B = _TI_Data.IS_TREA_ITEM, TREA_ITEM_TYPE_B = _TI_Data.TREA_ITEM_TYPE, TREA_ITEM_NAME_B = _TI_Data.TREA_ITEM_NAME, MEMO_B = _TI_Data.MEMO }; db.TREA_ITEM_HIS.Add(_TIH); logStr += "|"; logStr += _TIH.modelToString(); } #endregion } var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-金庫存取項目作業"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vCUSER_ID); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_Aply_No}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } }
/// <summary> /// 庫存異動資料-申請覆核 /// </summary> /// <param name="saveData"></param> /// <param name="searchModel"></param> /// <returns></returns> public MSGReturnModel <IEnumerable <ICDCItem> > CDCApplyAudit(IEnumerable <ICDCItem> saveData, CDCSearchViewModel searchModel) { MSGReturnModel <IEnumerable <ICDCItem> > result = new MSGReturnModel <IEnumerable <ICDCItem> >(); result.RETURN_FLAG = false; string logStr = string.Empty; DateTime dt = DateTime.Now; using (TreasuryDBEntities db = new TreasuryDBEntities()) { bool changFlag = false; var _data = SaveINVENTORY_CHG_APLY(db, searchModel, logStr, dt); logStr = _data.Item2; foreach (CDCCAViewModel model in saveData) { var _CA = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == model.vItemId); if (_CA != null && !changFlag) { if (_CA.LAST_UPDATE_DT > model.vLast_Update_Time || _CA.INVENTORY_STATUS != "1") { changFlag = true; } if (!changFlag) { _CA.INVENTORY_STATUS = "8"; //庫存狀態改為「8」資料庫異動中。 _CA.CA_USE_AFT = model.vCA_Use_AFT; _CA.CA_DESC_AFT = model.vCA_Desc_AFT; _CA.BANK_AFT = model.vCA_Bank_AFT; _CA.CA_NUMBER_AFT = model.vCA_Number_AFT; _CA.MEMO_AFT = model.vCA_Memo_AFT; _CA.LAST_UPDATE_DT = dt; logStr = _CA.modelToString(logStr); var _OIA = new OTHER_ITEM_APLY() { APLY_NO = _data.Item1, ITEM_ID = _CA.ITEM_ID }; db.OTHER_ITEM_APLY.Add(_OIA); logStr = _OIA.modelToString(logStr); } } else { changFlag = true; } } if (changFlag) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); } else { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-資料庫異動:電子憑證"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, searchModel.vCreate_Uid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"申請單號:{_data.Item1}"); result.Datas = GetCDCSearchData(searchModel); } } return(result); }
/// <summary> /// 金庫進出管理作業-申請覆核 /// </summary> /// <param name="saveData">申請覆核的資料</param> /// <param name="searchModel">查詢ViwModel</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITinItem> > TinApplyAudit(IEnumerable <ITinItem> saveData, ITinItem searchModel) { var searchData = (TreasuryMailTimeSearchViewModel)searchModel; var result = new MSGReturnModel <IEnumerable <ITinItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (saveData != null) { var datas = (List <TreasuryMailTimeViewModel>)saveData; if (datas.Any(x => x.updateFlag)) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { string logStr = string.Empty; //log //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; string _Aply_No = $@"G3{qPreCode}{sysSeqDao.qrySeqNo("G3", qPreCode).ToString().PadLeft(3, '0')}"; //申請單號 G3+系統日期YYYMMDD(民國年)+3碼流水號 foreach (var data in datas.Where(x => x.updateFlag)) { var _MT = db.MAIL_TIME.First(x => x.MAIL_TIME_ID == data.vMAIL_TIME_ID); if (_MT.DATA_STATUS != "1") { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _MT.DATA_STATUS = "2"; //凍結中 _MT.LAST_UPDATE_UID = searchData.userId; _MT.LAST_UPDATE_DT = dt; _MT.FREEZE_DT = dt; _MT.FREEZE_UID = searchData.userId; var MTH = new MAIL_TIME_HIS() { APLY_NO = _Aply_No, MAIL_TIME_ID = _MT.MAIL_TIME_ID, EXEC_ACTION = "U", //只有修改 FUNC_ID = data.vFUNC_ID, FUNC_ID_B = _MT.FUNC_ID, SEND_TIME = data.vSEND_TIME, SEND_TIME_B = _MT.SEND_TIME, INTERVAL_MIN = TypeTransfer.stringToIntN(data.vINTERVAL_MIN), INTERVAL_MIN_B = _MT.INTERVAL_MIN, TREA_OPEN_TIME = data.vTREA_OPEN_TIME, TREA_OPEN_TIME_B = _MT.TREA_OPEN_TIME, EXEC_TIME_B = data.vEXEC_TIME_B, EXEC_TIME_B_B = _MT.EXEC_TIME_B, EXEC_TIME_E = data.vEXEC_TIME_E, EXEC_TIME_E_B = _MT.EXEC_TIME_E, MAIL_CONTENT_ID = data.vMAIL_CONTENT_ID, MAIL_CONTENT_ID_B = _MT.MAIL_CONTENT_ID, MEMO = data.vMEMO, MEMO_B = _MT.MEMO, IS_DISABLED = data.vIS_DISABLED, IS_DISABLED_B = _MT.IS_DISABLED, APLY_UID = searchData.userId, APLY_DATE = dt, APPR_STATUS = "1", //表單申請 }; logStr += MTH.modelToString(logStr); db.MAIL_TIME_HIS.Add(MTH); } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-mail發送內文設定檔"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.userId); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_Aply_No}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
/// <summary> /// 金庫進出管理作業-申請覆核 /// </summary> /// <param name="saveData">申請覆核的資料</param> /// <param name="searchModel">查詢ViwModel</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITinItem> > TinApplyAudit(IEnumerable <ITinItem> saveData, ITinItem searchModel) { var searchData = (TreasuryMailContentSearchViewModel)searchModel; var result = new MSGReturnModel <IEnumerable <ITinItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (saveData != null) { var data = ((List <TreasuryMailContentUpdateViewModel>)saveData).FirstOrDefault(); if (data != null) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; string logStr = string.Empty; //log var _MAIL_CONTENT_ID = string.Empty; MAIL_CONTENT _MC = null; if (!data.vMAIL_CONTENT_ID.IsNullOrWhiteSpace()) //現有資料修改 { _MAIL_CONTENT_ID = data.vMAIL_CONTENT_ID; _MC = db.MAIL_CONTENT.First(x => x.MAIL_CONTENT_ID == _MAIL_CONTENT_ID); if (_MC.DATA_STATUS != "1") { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _MC.DATA_STATUS = "2"; //凍結中 _MC.LAST_UPDATE_UID = data.UserID; _MC.LAST_UPDATE_DT = dt; _MC.FREEZE_DT = dt; _MC.FREEZE_UID = data.UserID; } else { //目前只加入異動檔 } string _Aply_No = $@"G4{qPreCode}{sysSeqDao.qrySeqNo("G4", qPreCode).ToString().PadLeft(3, '0')}"; //申請單號 G4+系統日期YYYMMDD(民國年)+3碼流水號 var MCH = new MAIL_CONTENT_HIS() { APLY_NO = _Aply_No, MAIL_CONTENT_ID = _MAIL_CONTENT_ID, IS_DISABLED = data.vIS_DISABLED, IS_DISABLED_B = _MC?.IS_DISABLED, MAIL_SUBJECT = data.vMAIL_SUBJECT, MAIL_SUBJECT_B = _MC?.MAIL_SUBJECT, MAIL_CONTENT = data.vMAIL_CONTENT, MAIL_CONTENT_B = _MC?.MAIL_CONTENT1, APLY_UID = data.UserID, APLY_DATE = dt, APPR_STATUS = "1", //表單申請 EXEC_ACTION = (data.vMAIL_CONTENT_ID != null) ? "U" : "A" }; logStr += MCH.modelToString(logStr); db.MAIL_CONTENT_HIS.Add(MCH); foreach (var item in data.subData) { var _MRH = new MAIL_RECEIVE_HIS() { APLY_NO = _Aply_No, MAIL_CONTENT_ID = _MAIL_CONTENT_ID, FUNC_ID = item.FUNC_ID, EXEC_ACTION = item.vStatus }; logStr += _MRH.modelToString(logStr); db.MAIL_RECEIVE_HIS.Add(_MRH); } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-mail發送內文設定檔"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, data.UserID); #endregion result.Datas = GetSearchData(searchModel); result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_Aply_No}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
/// <summary> /// 修改申請覆核 /// </summary> /// <param name="data"></param> /// <param name="currntUserId">目前使用者ID</param> /// <param name="searchData"></param> /// <returns></returns> public MSGReturnModel <List <SpecifiedTimeTreasurySearchDetailViewModel> > UpdateApplyData(SpecifiedTimeTreasuryUpdateViewModel data, string currentUserId, SpecifiedTimeTreasurySearchViewModel searchData) { var result = new MSGReturnModel <List <SpecifiedTimeTreasurySearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.update_Fail.GetDescription(); string logStr = string.Empty; //log //bool 登入者與申請者為同一人 if (data.vCREATE_UID == currentUserId) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _data = db.TREA_OPEN_REC.FirstOrDefault(x => x.TREA_REGISTER_ID == data.vTREA_REGISTER_ID); //統一取系統時間 DateTime dt = DateTime.Now; if (_data != null) { _data.EXEC_TIME_B = data.vEXEC_TIME_B; _data.EXEC_TIME_E = data.vEXEC_TIME_E; _data.OPEN_TREA_TIME = data.vOPEN_TREA_TIME; _data.MEMO = data.vMEMO; _data.OPEN_TREA_REASON = string.Join(";", data.vOPEN_TREA_REASON_ID.ToArray()); _data.APPR_STATUS = "1"; _data.LAST_UPDATE_UID = currentUserId; _data.LAST_UPDATE_DT = dt; logStr += _data.modelToString(logStr); var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "修改申請"; log.CACTION = "U"; log.CCONTENT = logStr; LogDao.Insert(log, currentUserId); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.update_Success.GetDescription(); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } } if (result.RETURN_FLAG) { result.Datas = GetSearchDetail(searchData); } return(result); }
/// <summary> /// 保管單位承辦作業-覆核 /// </summary> /// <param name="searchData"></param> /// <param name="viewModels"></param> /// <returns></returns> public MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> > CustodyApproved(TreasuryAccessApprSearchViewModel searchData, List <TreasuryAccessApprSearchDetailViewModel> viewModels) { MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> > result = new MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = MessageType.parameter_Error.GetDescription(); if (!viewModels.Any()) { return(result); } DateTime dt = DateTime.Now; string logStr = string.Empty; using (TreasuryDBEntities db = new TreasuryDBEntities()) { var aplynos = new List <string>(); List <string> checks = new List <string>() { TreaItemType.D1016.ToString(), TreaItemType.D1017.ToString() }; foreach (var item in viewModels.Where(x => x.vCheckFlag)) { var _TREA_APLY_REC = db.TREA_APLY_REC.FirstOrDefault(x => x.APLY_NO == item.vAPLY_NO); if (_TREA_APLY_REC == null) //找不到該筆單號 { result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(null, $"單號:{item.vAPLY_NO}"); return(result); } if (_TREA_APLY_REC.LAST_UPDATE_DT > item.vLast_Update_Time) //資料已經被更新 { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(null, $"單號:{item.vAPLY_NO}"); return(result); } if (_TREA_APLY_REC.ITEM_ID == TreaItemType.D1016.ToString()) { var ids = db.OTHER_ITEM_APLY.AsNoTracking().Where(x => x.APLY_NO == _TREA_APLY_REC.APLY_NO).Select(x => x.ITEM_ID).Distinct().ToList(); var items = db.ITEM_REFUNDABLE_DEP.AsNoTracking() .Where(x => ids.Contains(x.ITEM_ID)).AsEnumerable() .Where(x => x.BOOK_NO.IsNullOrWhiteSpace()) .Select(x => x.ITEM_ID).ToList(); if (items.Any()) { result.DESCRIPTION = MessageType.book_No_Error.GetDescription($@"存出保證金 歸檔編號:{string.Join(",", items)} , 冊號 不得為空值"); return(result); } } else if (_TREA_APLY_REC.ITEM_ID == TreaItemType.D1017.ToString()) { var ids = db.OTHER_ITEM_APLY.AsNoTracking().Where(x => x.APLY_NO == _TREA_APLY_REC.APLY_NO).Select(x => x.ITEM_ID).Distinct().ToList(); var items = db.ITEM_DEP_RECEIVED.AsNoTracking() .Where(x => ids.Contains(x.ITEM_ID)).AsEnumerable() .Where(x => x.BOOK_NO.IsNullOrWhiteSpace()) .Select(x => x.ITEM_ID).ToList(); if (items.Any()) { result.DESCRIPTION = MessageType.book_No_Error.GetDescription($@"存入保證金 歸檔編號:{string.Join(",", items)} , 冊號 不得為空值"); return(result); } } aplynos.Add(item.vAPLY_NO); var aplyStatus = Ref.AccessProjectFormStatus.B02.ToString(); // 狀態 => 保管科覆核中 _TREA_APLY_REC.APLY_STATUS = aplyStatus; _TREA_APLY_REC.CUSTODY_UID = searchData.vCreateUid; _TREA_APLY_REC.LAST_UPDATE_UID = searchData.vCreateUid; _TREA_APLY_REC.LAST_UPDATE_DT = dt; logStr += _TREA_APLY_REC.modelToString(logStr); #region 申請單歷程檔 var ARH = new APLY_REC_HIS() { APLY_NO = _TREA_APLY_REC.APLY_NO, APLY_STATUS = aplyStatus, PROC_UID = searchData.vCreateUid, PROC_DT = dt }; logStr += ARH.modelToString(logStr); db.APLY_REC_HIS.Add(ARH); #endregion } var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "覆核-保管單位承辦作業"; log.CACTION = "U"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = $"申請單號 : {string.Join(",", aplynos)} 覆核成功!"; result.Datas = GetCustodySearchDetail(searchData); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } return(result); }
/// <summary> /// 覆核 /// </summary> /// <param name="RegisterNo"></param> /// <param name="ViewModel"></param> /// <param name="SearchData"></param> /// <returns></returns> public MSGReturnModel <List <SpecifiedTimeTreasuryApprSearchDetailViewModel> > ApproveData(List <string> RegisterNo, List <SpecifiedTimeTreasuryApprSearchDetailViewModel> ViewModel, SpecifiedTimeTreasuryApprSearchViewModel SearchData) { var result = new MSGReturnModel <List <SpecifiedTimeTreasuryApprSearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(); if (!ViewModel.Any()) { return(result); } DateTime dt = DateTime.Now; string logStrC = string.Empty; //combin Log List <TREA_OPEN_REC> TORs = new List <TREA_OPEN_REC>(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _TREA_ITEM = db.TREA_ITEM.Where(x => x.ITEM_OP_TYPE == "3").Select(x => x.ITEM_ID).ToList(); foreach (var item in ViewModel.Where(x => RegisterNo.Contains(x.vTREA_REGISTER_ID))) { var _TREA_OPEN_REC = db.TREA_OPEN_REC.FirstOrDefault(x => x.TREA_REGISTER_ID == item.vTREA_REGISTER_ID); if (_TREA_OPEN_REC == null) //找不到該單號 { result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(null, $"單號:{item.vTREA_REGISTER_ID}"); return(result); } if (_TREA_OPEN_REC.LAST_UPDATE_DT > item.vLAST_UPDATE_DT) //資料已備更新 { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(null, $"單號:{item.vTREA_REGISTER_ID}"); return(result); } TORs.Add(_TREA_OPEN_REC); var applyStatus = ((int)Ref.ApplyStatus._2).ToString(); // 狀態: 覆核完成 string logStrB = string.Empty; //修改前 Log string logStrA = string.Empty; //修改後 Log logStrB += _TREA_OPEN_REC.modelToString(logStrB); _TREA_OPEN_REC.APPR_STATUS = applyStatus; _TREA_OPEN_REC.LAST_UPDATE_UID = SearchData.vCreateUid; _TREA_OPEN_REC.LAST_UPDATE_DT = dt; _TREA_OPEN_REC.APPR_UID = SearchData.vCreateUid; _TREA_OPEN_REC.APPR_DT = dt; logStrA += _TREA_OPEN_REC.modelToString(logStrA); //#region 申請單紀錄檔 ////取得流水號 //List<string> workList = _TREA_OPEN_REC.OPEN_TREA_REASON.Split(';').ToList(); //foreach (var workItem in workList) //{ // if (!_TREA_ITEM.Contains(workItem)) // { // SysSeqDao sysSeqDao = new SysSeqDao(); // string qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; // var cId = sysSeqDao.qrySeqNo("G6", qPreCode).ToString().PadLeft(3, '0'); // var _TREA_APLY_REC = db.TREA_APLY_REC // .Add(new TREA_APLY_REC() // { // APLY_NO = $@"G6{qPreCode}{cId}", ////申請單號 G6+系統日期YYYMMDD(民國年)+3碼流水號 // APLY_FROM = "S", // TREA_REGISTER_ID = item.vTREA_REGISTER_ID, // ITEM_ID = workItem, // APLY_STATUS = "C01", // EXPECTED_ACCESS_DATE = _TREA_OPEN_REC.OPEN_TREA_DATE, // APLY_UNIT = _TREA_OPEN_REC.CREATE_UNIT, // APLY_UID = _TREA_OPEN_REC.CREATE_UID, // APLY_DT = _TREA_OPEN_REC.CREATE_DT, // APLY_APPR_UID = SearchData.vCreateUid, // APLY_APPR_DT = dt, // CREATE_UID = SearchData.vCreateUid, // CREATE_DT = dt, // LAST_UPDATE_UID = SearchData.vCreateUid, // LAST_UPDATE_DT = dt, // CREATE_UNIT = SearchData.vCreateUnit // }); // logStrA += _TREA_APLY_REC.modelToString(logStrA); // } //} //#endregion #region 申請單暫存檔 //取得流水號 List <string> workList = _TREA_OPEN_REC.OPEN_TREA_REASON.Split(';').ToList(); if (workList.Count != 0) { var data = (from n in db.TREA_APLY_TEMP select n); db.TREA_APLY_TEMP.RemoveRange(data); } foreach (var workItem in workList) { if (!_TREA_ITEM.Contains(workItem)) { var _TREA_APLY_TEMP = db.TREA_APLY_TEMP .Add(new TREA_APLY_TEMP() { ITEM_ID = workItem, }); } } #endregion logStrC += string.Format("修改前{0}^^修改後{1}", logStrB, logStrA); } var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region 寄信 //List<Tuple<string, string>> _mailTo = new List<Tuple<string, string>>() { new Tuple<string, string>("*****@*****.**", "測試帳號-glsisys") }; List <Tuple <string, string> > _mailTo = new List <Tuple <string, string> >(); List <Tuple <string, string> > _ccTo = new List <Tuple <string, string> >(); var emps = GetEmps(); var _MAIL_CONTENT = db.MAIL_CONTENT.AsNoTracking().FirstOrDefault(x => x.MAIL_CONTENT_ID == "01" && x.IS_DISABLED == "N"); var _MAIL_RECEIVE = db.MAIL_RECEIVE.AsNoTracking(); var _CODE_ROLE_FUNC = db.CODE_ROLE_FUNC.AsNoTracking(); var _CODE_USER_ROLE = db.CODE_USER_ROLE.AsEnumerable(); var _CODE_USER = db.CODE_USER.AsNoTracking(); foreach (var TOR in TORs) { if (_MAIL_CONTENT != null) { string _content = _MAIL_CONTENT.MAIL_CONTENT1; _content = _content.Replace("@_TREA_OPEN_TIME_", TOR.OPEN_TREA_TIME); _content = _content.Replace("@_EXEC_TIME_E_", TOR.EXEC_TIME_E); StringBuilder sb = new StringBuilder(); sb.AppendLine(_content); // sb.AppendLine( // $@"您好, //通知今日金庫開關庫時間為:{TOR.OPEN_TREA_TIME},請準時至金庫門口集合。 //為配合金庫大門之啟閉,請有權人在:{TOR.EXEC_TIME_E} 前進入「金庫進出管理系統」完成入庫確認作業,謝謝。 //"); var _FuncId = _MAIL_RECEIVE.Where(x => x.MAIL_CONTENT_ID == _MAIL_CONTENT.MAIL_CONTENT_ID).Select(x => x.FUNC_ID); var _RoleId = _CODE_ROLE_FUNC.Where(x => _FuncId.Contains(x.FUNC_ID)).Select(x => x.ROLE_ID); var _UserId = _CODE_USER_ROLE.Where(x => _RoleId.Contains(x.ROLE_ID)).Select(x => x.USER_ID).Distinct(); List <string> _userIdList = new List <string>(); _userIdList.AddRange(_CODE_USER.Where(x => _UserId.Contains(x.USER_ID) && x.IS_MAIL == "Y").Select(x => x.USER_ID).ToList()); if (_userIdList.Any()) { //人名 EMAIl var _EMP = emps.Where(x => _userIdList.Contains(x.USR_ID)).ToList(); if (_EMP.Any()) { _EMP.ForEach(x => { _mailTo.Add(new Tuple <string, string>(x.EMAIL, x.EMP_NAME)); }); } } try { var sms = new SendMail.SendMailSelf(); sms.smtpPort = 25; sms.smtpServer = Properties.Settings.Default["smtpServer"]?.ToString(); sms.mailAccount = Properties.Settings.Default["mailAccount"]?.ToString(); sms.mailPwd = Properties.Settings.Default["mailPwd"]?.ToString(); sms.Mail_Send( new Tuple <string, string>(sms.mailAccount, "金庫管理系統"), _mailTo, _ccTo, _MAIL_CONTENT?.MAIL_SUBJECT ?? "入庫人員確認作業通知", sb.ToString() ); } catch (Exception ex) { result.DESCRIPTION = $"Email 發送失敗請人工通知。"; } } } #endregion #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "覆核-指定開庫覆核作業"; log.CACTION = "U"; log.CCONTENT = logStrC; LogDao.Insert(log, SearchData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = $"申請單號 : {string.Join(",", RegisterNo)} 覆核成功"; result.Datas = GetApprSearchData(SearchData); } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } return(result); }
public void Routine(TreasuryDBEntities db, string dateTime, DateTime _dtn, string MAIL_TIME_ID) { var _split = dateTime.Split(':'); var hh = _split[0]; var mm = _split.Length > 1 ? _split[1] : string.Empty; var dt = new DateTime(_dtn.Year, _dtn.Month, _dtn.Day, Convert.ToInt32(hh), Convert.ToInt32(mm), 0); SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; var _Mail_Time = db.MAIL_TIME.ToList() .FirstOrDefault(x => x.MAIL_TIME_ID == MAIL_TIME_ID && x.SEND_TIME != null && x.SEND_TIME == dateTime && x.IS_DISABLED != "Y" && x.SCHEDULER_UPDATE_DT == _dtn); if (_Mail_Time != null) { string errorMsg = string.Empty; var MailTId = sysSeqDao.qrySeqNo("MailT", qPreCode).ToString().PadLeft(3, '0'); var _JOB_ITEM_ID = $@"{qPreCode}W{MailTId}"; try { #region 新增排程工作紀錄檔 Extension.NlogSet($"新增排程工作紀錄檔"); db.SYS_JOB_REC.Add(new SYS_JOB_REC() { JOB_ITEM_ID = _JOB_ITEM_ID, JOB_ID = _Mail_Time.MAIL_TIME_ID, CREATE_TIME = dt, STATUS = "2", START_TIME = _dtn, }); var test = db.GetValidationErrors().getValidateString(); if (!test.IsNullOrWhiteSpace()) { Extension.NlogSet($"{test}"); } db.SaveChanges(); #endregion #region 新增 開庫紀錄檔 Extension.NlogSet($"新增開庫紀錄檔"); db.TREA_OPEN_REC.RemoveRange( db.TREA_OPEN_REC.Where(x => x.OPEN_TREA_TYPE == "1" && x.OPEN_TYPE == "Y" && x.REGI_STATUS == "C02")); var _TORId = sysSeqDao.qrySeqNo("W", qPreCode).ToString().PadLeft(2, '0'); var _TOR = new TREA_OPEN_REC() { TREA_REGISTER_ID = $"W{qPreCode}{_TORId}", //開庫工作單號(金庫登記簿單號) OPEN_TREA_TYPE = "1", //開庫類型 OPEN_TREA_REASON = "例行性開庫", //開庫原因 OPEN_TREA_TIME = _Mail_Time.TREA_OPEN_TIME, //開庫時間 EXEC_TIME_B = _Mail_Time.EXEC_TIME_B, //系統區間(起) EXEC_TIME_E = _Mail_Time.EXEC_TIME_E, //系統區間(迄) OPEN_TREA_DATE = _dtn, APPR_STATUS = "2", REGI_STATUS = "C02", CREATE_DT = _dtn, OPEN_TYPE = "Y" //Y為例行性 }; db.TREA_OPEN_REC.Add(_TOR); #endregion #region 取得例行出入庫作業項目 #region 自【金庫存取作業設定檔】查詢例行出入庫作業項目 Extension.NlogSet($"自【金庫存取作業設定檔】查詢例行出入庫作業項目"); var _Trea_Item = db.TREA_ITEM.AsNoTracking() .Where(x => x.DAILY_FLAG == "Y" && x.IS_DISABLED == "N").ToList(); #endregion #region 清空【申請單紀錄暫存檔】 Extension.NlogSet($" 清空【申請單紀錄暫存檔】"); db.TREA_APLY_TEMP.RemoveRange(db.TREA_APLY_TEMP); #endregion var _MAIL_CONTENT = db.MAIL_CONTENT.AsNoTracking() .First(x => x.MAIL_CONTENT_ID == _Mail_Time.MAIL_CONTENT_ID); var _MAIL_RECEIVE = db.MAIL_RECEIVE.AsNoTracking(); var _CODE_ROLE_FUNC = db.CODE_ROLE_FUNC.AsNoTracking(); var _CODE_USER_ROLE = db.CODE_USER_ROLE.AsEnumerable(); var _CODE_USER = db.CODE_USER.AsNoTracking(); List <string> _userIdList = new List <string>(); var emps = GetEmps(); //List<Tuple<string, string>> _mailTo = new List<Tuple<string, string>>() { new Tuple<string, string>("*****@*****.**", "測試帳號-glsisys") }; List <Tuple <string, string> > _mailTo = new List <Tuple <string, string> >(); List <Tuple <string, string> > _ccTo = new List <Tuple <string, string> >(); var _FuncId = _MAIL_RECEIVE.Where(x => x.MAIL_CONTENT_ID == _MAIL_CONTENT.MAIL_CONTENT_ID).Select(x => x.FUNC_ID); var _RoleId = _CODE_ROLE_FUNC.Where(x => _FuncId.Contains(x.FUNC_ID)).Select(x => x.ROLE_ID); var _UserId = _CODE_USER_ROLE.Where(x => _RoleId.Contains(x.ROLE_ID)).Select(x => x.USER_ID).Distinct(); _userIdList.AddRange(_CODE_USER.Where(x => _UserId.Contains(x.USER_ID) && x.IS_MAIL == "Y").Select(x => x.USER_ID)); if (_userIdList.Any()) { //人名 EMAIl var _EMP = emps.Where(x => _userIdList.Contains(x.USR_ID)).ToList(); if (_EMP.Any()) { _EMP.ForEach(x => { _mailTo.Add(new Tuple <string, string>(x.EMAIL, x.EMP_NAME)); }); } } var str = _MAIL_CONTENT.MAIL_CONTENT1; str = str.Replace("@_TREA_OPEN_TIME_", _Mail_Time.TREA_OPEN_TIME); str = str.Replace("@_EXEC_TIME_E_", _Mail_Time.EXEC_TIME_E); StringBuilder sb = new StringBuilder(); sb.AppendLine(str); // sb.AppendLine( //$@"您好, //通知今日金庫開關庫時間為:{_Mail_Time.TREA_OPEN_TIME},請準時至金庫門口集合。 //為配合金庫大門之啟閉,請有權人在:{_Mail_Time.EXEC_TIME_E} 前進入「金庫進出管理系統」完成入庫確認作業,謝謝。 //"); int num = 1; #region 將例行作業項目寫入【申請單紀錄暫存檔】 Extension.NlogSet($" 將例行作業項目寫入【申請單紀錄暫存檔】"); _Trea_Item.ForEach(x => { db.TREA_APLY_TEMP.Add(new TREA_APLY_TEMP() { ITEM_ID = x.ITEM_ID }); //sb.AppendLine($"{num}. {x.ITEM_DESC}"); num += 1; }); #endregion #endregion #region 寄送mail給保管人 Extension.NlogSet($" 寄送mail給保管人"); try { var sms = new SendMail.SendMailSelf(); sms.smtpPort = 25; sms.smtpServer = Properties.Settings.Default["smtpServer"]?.ToString(); sms.mailAccount = Properties.Settings.Default["mailAccount"]?.ToString(); sms.mailPwd = Properties.Settings.Default["mailPwd"]?.ToString(); Extension.NlogSet($" 寄送mail內容 : {sb.ToString()}"); sms.Mail_Send( new Tuple <string, string>(sms.mailAccount, "金庫管理系統"), _mailTo, _ccTo, _MAIL_CONTENT?.MAIL_SUBJECT ?? "金庫每日例行開庫通知", sb.ToString() ); } catch (Exception ex) { Extension.NlogSet($" 寄送mail給保管人 錯誤 : {ex.exceptionMessage()}"); } #endregion test = db.GetValidationErrors().getValidateString(); if (!test.IsNullOrWhiteSpace()) { Extension.NlogSet($"{test}"); } db.SaveChanges(); } catch (Exception ex) { errorMsg = ex.exceptionMessage(); Extension.NlogSet($"錯誤 : {errorMsg}"); } #region 異動【排程工作紀錄檔】資料(工作結束) var _SJR = db.SYS_JOB_REC .FirstOrDefault(x => x.JOB_ITEM_ID == _JOB_ITEM_ID); if (_SJR != null) { if (!errorMsg.IsNullOrWhiteSpace()) { _SJR.STATUS = "4"; //執行失敗 _SJR.MEMO = errorMsg; } else { _SJR.STATUS = "3"; //執行成功 _SJR.MEMO = null; } _SJR.END_TIME = DateTime.Now; var test = db.GetValidationErrors().getValidateString(); if (!test.IsNullOrWhiteSpace()) { Extension.NlogSet($"{test}"); } db.SaveChanges(); } #endregion } //db.MAIL_TIME }
/// <summary> /// 刪除申請 (刪除資料) /// </summary> /// <param name="searchData">金庫物品存取主畫面查詢ViewModel</param> /// <param name="data">申請表單查詢顯示區塊ViewModel</param> /// <returns></returns> public MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> > Cancel(TreasuryAccessSearchViewModel searchData, TreasuryAccessSearchDetailViewModel data) { var result = new MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); DateTime dt = DateTime.Now; string logStr = string.Empty; //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _TREA_APLY_REC = db.TREA_APLY_REC.FirstOrDefault(x => x.APLY_NO == data.vAPLY_NO); if (_TREA_APLY_REC != null) { if (_TREA_APLY_REC.LAST_UPDATE_DT > data.vLast_Update_Time) { return(result); } logStr += _TREA_APLY_REC.modelToString(); #region 刪除申請 var sampleFactory = new SampleFactory(); var getAgenct = sampleFactory.GetAgenct(EnumUtil.GetValues <Ref.TreaItemType>().First(x => x.ToString() == _TREA_APLY_REC.ITEM_ID)); if (getAgenct != null) { var _recover = getAgenct.CancelApply(db, _TREA_APLY_REC.APLY_NO, _TREA_APLY_REC.ACCESS_TYPE, logStr, dt); if (!_recover.Item1) //失敗 { return(result); } logStr = _recover.Item2; } else { return(result); } #endregion #region 刪除 申請單歷程檔 db.APLY_REC_HIS.RemoveRange(db.APLY_REC_HIS.Where(x => x.APLY_NO == _TREA_APLY_REC.APLY_NO)); #endregion #region 刪除 申請單紀錄檔 db.TREA_APLY_REC.Remove(_TREA_APLY_REC); #endregion var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "刪除申請-金庫物品存取申請作業"; log.CACTION = "D"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = $@"單號{data.vAPLY_NO} 已刪除!"; } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } if (result.RETURN_FLAG) { result.Datas = GetSearchDetail(searchData); } } return(result); }
public void Execute(IJobExecutionContext context) { Extension.NlogSet("[Execute]執行開始!!"); MAIL_TIME _MT = new MAIL_TIME(); MAIL_TIME _mt = new MAIL_TIME(); var dtnstr = string.Empty; using (TreasuryDBEntities db = new TreasuryDBEntities()) { var dtn = DateTime.Now; dtnstr = $"{ dtn.Hour.ToString().PadLeft(2, '0')}:{dtn.Minute.ToString().PadLeft(2, '0')}"; Extension.NlogSet($"SEND_TIME:{dtnstr}"); #region 8.2 金庫確認作業提醒 try { //金庫開庫流程提醒通知 抓3 _mt = db.MAIL_TIME.AsEnumerable().FirstOrDefault(x => x.MAIL_TIME_ID == "3" && x.IS_DISABLED == "N" && DateTime.Parse(x.EXEC_TIME_B + ":00") <= DateTime.Parse(dtnstr + ":00") && DateTime.Parse(x.EXEC_TIME_E + ":00") >= DateTime.Parse(dtnstr + ":00")); if (_mt != null) { var _INTERVAL_MIN = _mt.INTERVAL_MIN; //if (dtn.Minute % _INTERVAL_MIN == 0) if (int.Parse((DateTime.Parse(dtnstr + ":00") - DateTime.Parse(_mt.EXEC_TIME_B + ":00")).Minutes.ToString()) % _INTERVAL_MIN == 0) { _mt.SCHEDULER_STATUS = "Y"; _mt.SCHEDULER_UPDATE_DT = dtn; try { db.SaveChanges(); Extension.NlogSet($"MAIL_TIME 通知檢核啟動"); Extension.NlogSet($"DateTime : {dtn}"); RemindClose(db, dtnstr, dtn, _INTERVAL_MIN); } catch (Exception ex) { Extension.NlogSet($"關庫確認作業錯誤,Exception:{ex.exceptionMessage()}!!"); } finally { Extension.NlogSet($"執行 更新SCHEDULER_STATUS 為 N !!"); var _mt2 = db.MAIL_TIME .Where(x => x.MAIL_TIME_ID == "3") .ToList(); if (_mt2.Any()) { Extension.NlogSet($"更新SCHEDULER_STATUS 為 N !!"); foreach (var item in _mt2) { item.SCHEDULER_STATUS = "N"; } try { db.SaveChanges(); } catch { } } else { Extension.NlogSet($"無更新SCHEDULER_STATUS !!"); } } } } } catch (Exception ex) { Extension.NlogSet($"8.2 關庫確認作業提醒,Exception:{ex.exceptionMessage()}!!"); } #endregion #region 8.1 每日例行出入庫mail通知作業 try { //例行開庫通知 抓1,2 var _MAIL_TIME_ID = new List <string>() { "1", "2" }; _MT = db.MAIL_TIME.FirstOrDefault( x => x.SEND_TIME != null && x.SEND_TIME == dtnstr && x.IS_DISABLED != "Y" && x.SCHEDULER_STATUS != "Y" && _MAIL_TIME_ID.Contains(x.MAIL_TIME_ID)); //var _Mail_Time_ID = _MT.MAIL_TIME_ID; var _TREA_OPEN_REC = db.TREA_OPEN_REC.AsNoTracking().AsEnumerable() .FirstOrDefault(x => x.OPEN_TREA_TYPE != "1" && x.REGI_STATUS != "E01" && x.APPR_STATUS != "4"); //if (_MT != null && _checkFlag) if (_MT != null && _TREA_OPEN_REC == null) { try { _MT.SCHEDULER_STATUS = "Y"; _MT.SCHEDULER_UPDATE_DT = dtn; db.SaveChanges(); Extension.NlogSet($"MAIL_TIME 有找到例行性排程設定檔案"); Extension.NlogSet($"DateTime : {dtn}"); Routine(db, dtnstr, dtn, _MT.MAIL_TIME_ID); } catch (Exception ex) { Extension.NlogSet($"每日例行作業錯誤,Exception:{ex.exceptionMessage()}!!"); } finally { Extension.NlogSet($"執行 更新SCHEDULER_STATUS 為 N !!"); var _MT2 = db.MAIL_TIME .Where(x => x.SEND_TIME != null && x.SEND_TIME == dtnstr && _MAIL_TIME_ID.Contains(x.MAIL_TIME_ID)).ToList(); if (_MT2.Any()) { Extension.NlogSet($"更新SCHEDULER_STATUS 為 N !!"); foreach (var item in _MT2) { item.SCHEDULER_STATUS = "N"; } try { db.SaveChanges(); } catch { } } else { Extension.NlogSet($"無更新SCHEDULER_STATUS !!"); } } } } catch (Exception ex) { Extension.NlogSet($"8.1 每日例行出入庫mail通知作業,Exception:{ex.exceptionMessage()}!!"); } #endregion } Extension.NlogSet("[Execute]執行結束!!"); }
/// <summary> /// 覆核畫面駁回 /// </summary> /// <param name="searchData">金庫物品覆核畫面查詢ViewModel</param> /// <param name="viewModels">覆核表單查詢顯示區塊ViewModel</param> /// <param name="apprDesc">駁回意見</param> /// <returns></returns> public MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> > Reject(TreasuryAccessApprSearchViewModel searchData, List <TreasuryAccessApprSearchDetailViewModel> viewModels, string apprDesc) { var result = new MSGReturnModel <List <TreasuryAccessApprSearchDetailViewModel> >(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(); DateTime dt = DateTime.Now; string logStr = string.Empty; using (TreasuryDBEntities db = new TreasuryDBEntities()) { var aplynos = new List <string>(); foreach (var item in viewModels.Where(x => x.vCheckFlag)) { var _TREA_APLY_REC = db.TREA_APLY_REC .FirstOrDefault(x => x.APLY_NO == item.vAPLY_NO); if (_TREA_APLY_REC == null) //找不到該筆單號 { result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(null, $"單號:{item.vAPLY_NO}"); return(result); } if (_TREA_APLY_REC.LAST_UPDATE_DT > item.vLast_Update_Time) //資料已經被更新 { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(null, $"單號:{item.vAPLY_NO}"); return(result); } aplynos.Add(item.vAPLY_NO); //填寫單位 == 保管科單位 狀態 => 申請單位覆核駁回 var aplyStatus = Ref.AccessProjectFormStatus.A02.ToString(); // 狀態 => 申請單位覆核駁回 if (Properties.Settings.Default["CustodianFlag"]?.ToString() == _TREA_APLY_REC.APLY_UNIT) //保管科=申請單位 狀態 => 保管科覆核駁回 { aplyStatus = Ref.AccessProjectFormStatus.A06.ToString(); } _TREA_APLY_REC.LAST_UPDATE_DT = dt; _TREA_APLY_REC.APLY_STATUS = aplyStatus; //_TREA_APLY_REC.LAST_UPDATE_UID = searchData.vCreateUid; // 保管科單位 if (aplyStatus == Ref.AccessProjectFormStatus.A06.ToString()) { _TREA_APLY_REC.CUSTODY_APPR_DESC = apprDesc; _TREA_APLY_REC.CUSTODY_APPR_DT = dt; _TREA_APLY_REC.CUSTODY_APPR_UID = searchData.vCreateUid; } // 申請單位 else { _TREA_APLY_REC.APLY_APPR_DESC = apprDesc; _TREA_APLY_REC.APLY_APPR_DT = dt; _TREA_APLY_REC.APLY_APPR_UID = searchData.vCreateUid; } logStr += _TREA_APLY_REC.modelToString(logStr); #region 申請單歷程檔 var ARH = new APLY_REC_HIS() { APLY_NO = _TREA_APLY_REC.APLY_NO, APLY_STATUS = aplyStatus, PROC_UID = searchData.vCreateUid, PROC_DT = dt }; logStr += ARH.modelToString(logStr); db.APLY_REC_HIS.Add(ARH); #endregion } var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "駁回-金庫物品存取覆核作業"; log.CACTION = "U"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vCreateUid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = $"申請單號 : {string.Join(",", aplynos)} 已駁回!"; result.Datas = GetApprSearchDetail(searchData); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } } return(result); }
/// <summary> /// 金庫進出管理作業-申請覆核 /// </summary> /// <param name="saveData">申請覆核的資料</param> /// <param name="searchModel">查詢ViwModel</param> /// <returns></returns> public MSGReturnModel <IEnumerable <ITinItem> > TinApplyAudit(IEnumerable <ITinItem> saveData, ITinItem searchModel) { var searchData = (DepChkItemSearchViewModel)searchModel; var result = new MSGReturnModel <IEnumerable <ITinItem> >(); result.RETURN_FLAG = false; DateTime dt = DateTime.Now; try { if (saveData != null) { var datas = (List <DepChkItemViewModel>)saveData; if (datas.Any()) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; string _Aply_No = string.Empty; var cId = sysSeqDao.qrySeqNo("G9", qPreCode).ToString().PadLeft(3, '0'); _Aply_No = $@"G9{qPreCode}{cId}"; //申請單號 G9+系統日期YYYMMDD(民國年)+3碼流水號 string logStr = string.Empty; //log foreach (var item in datas) { int _Isortby = 0, _Item_Order = 0; var _DCI = new DEP_CHK_ITEM(); #region 定存檢核表項目設定檔 //判斷執行功能 switch (item.vExec_Action) { case "A": //新增 //判斷交易別 if (item.vAccess_Type == "P") { _Isortby = sysSeqDao.qrySeqNo("DCI_P", string.Empty); //_Item_Order = GetItem_Order("P"); } else if (item.vAccess_Type == "G") { _Isortby = sysSeqDao.qrySeqNo("DCI_G", string.Empty); //_Item_Order = GetItem_Order("G"); } //_DCI = new DEP_CHK_ITEM() //{ // ACCESS_TYPE=item.vAccess_Type, // ISORTBY= _Isortby, // DEP_CHK_ITEM_DESC=item.vDep_Chk_Item_Desc, // IS_DISABLED=item.vIs_Disabled, // ITEM_ORDER= _Item_Order, // REPLACE=item.vReplace, // DATA_STATUS = "2",//凍結中 // CREATE_UID = searchData.vLast_Update_Uid, // CREATE_DT = dt, // LAST_UPDATE_UID = searchData.vLast_Update_Uid, // LAST_UPDATE_DT = dt, // FREEZE_UID = searchData.vLast_Update_Uid, // FREEZE_DT = dt //}; //db.DEP_CHK_ITEM.Add(_DCI); //logStr += "|"; //logStr += _DCI.modelToString(); break; case "U": //修改 _DCI = db.DEP_CHK_ITEM.FirstOrDefault(x => x.ACCESS_TYPE == item.vAccess_Type && x.ISORTBY == item.vIsortby); if (_DCI.LAST_UPDATE_DT != null && _DCI.LAST_UPDATE_DT > item.vLast_Update_Dt) { result.DESCRIPTION = Ref.MessageType.already_Change.GetDescription(); return(result); } _Isortby = item.vIsortby; _Item_Order = _DCI.ITEM_ORDER; _DCI.DATA_STATUS = "2";//凍結中 _DCI.LAST_UPDATE_UID = searchData.vLast_Update_Uid; _DCI.LAST_UPDATE_DT = dt; _DCI.FREEZE_UID = searchData.vLast_Update_Uid; _DCI.FREEZE_DT = dt; logStr += "|"; logStr += _DCI.modelToString(); break; default: break; } #endregion #region 定存檢核表項目設定異動檔 var _DCI_Data = db.DEP_CHK_ITEM.FirstOrDefault(x => x.ACCESS_TYPE == item.vAccess_Type && x.ISORTBY == item.vIsortby); if (_DCI_Data == null) { var _DCIH = new DEP_CHK_ITEM_HIS() { APLY_NO = _Aply_No, ACCESS_TYPE = item.vAccess_Type, ISORTBY = _Isortby, EXEC_ACTION = item.vExec_Action, DEP_CHK_ITEM_DESC = item.vDep_Chk_Item_Desc, IS_DISABLED = item.vIs_Disabled, ITEM_ORDER = _Item_Order, REPLACE = item.vReplace, APPR_STATUS = "1",//表單申請 APLY_UID = searchData.vLast_Update_Uid, APLY_DATE = dt }; db.DEP_CHK_ITEM_HIS.Add(_DCIH); logStr += "|"; logStr += _DCIH.modelToString(); } else { var _DCIH = new DEP_CHK_ITEM_HIS() { APLY_NO = _Aply_No, ACCESS_TYPE = item.vAccess_Type, ISORTBY = _Isortby, EXEC_ACTION = item.vExec_Action, DEP_CHK_ITEM_DESC = item.vDep_Chk_Item_Desc, IS_DISABLED = item.vIs_Disabled, ITEM_ORDER = _Item_Order, REPLACE = item.vReplace, APPR_STATUS = "1",//表單申請 DEP_CHK_ITEM_DESC_B = _DCI_Data.DEP_CHK_ITEM_DESC, IS_DISABLED_B = _DCI_Data.IS_DISABLED, ITEM_ORDER_B = _DCI_Data.ITEM_ORDER, REPLACE_B = _DCI_Data.REPLACE, APLY_UID = searchData.vLast_Update_Uid, APLY_DATE = dt }; db.DEP_CHK_ITEM_HIS.Add(_DCIH); logStr += "|"; logStr += _DCIH.modelToString(); } #endregion } #region Save Db var validateMessage = db.GetValidationErrors().getValidateString(); if (validateMessage.Any()) { result.DESCRIPTION = validateMessage; } else { try { db.SaveChanges(); #region LOG //新增LOG Log log = new Log(); log.CFUNCTION = "申請覆核-新增定存檢核表項目"; log.CACTION = "A"; log.CCONTENT = logStr; LogDao.Insert(log, searchData.vLast_Update_Uid); #endregion result.RETURN_FLAG = true; result.DESCRIPTION = Ref.MessageType.Apply_Audit_Success.GetDescription(null, $@"單號為{_Aply_No}"); } catch (DbUpdateException ex) { result.DESCRIPTION = ex.exceptionMessage(); } } #endregion } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }