/// <summary> /// 覆核作業查詢畫面 /// </summary> /// <param name="searchModel"></param> /// <returns></returns> public JsonResult SearchAppr(TreasuryAccessApprSearchViewModel searchModel) { MSGReturnModel <string> result = new MSGReturnModel <string>(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(); Cache.Invalidate(CacheList.TreasuryAccessCustodyApprSearchData); Cache.Set(CacheList.TreasuryAccessCustodyApprSearchData, searchModel); var datas = TreasuryAccessCustody.GetCustodyApprSearchDetail(searchModel); if (datas.Any()) { Cache.Invalidate(CacheList.TreasuryAccessCustodyApprSearchDetailViewData); Cache.Set(CacheList.TreasuryAccessCustodyApprSearchDetailViewData, datas); result.RETURN_FLAG = true; } return(Json(result)); }
/// <summary> /// 金庫物品存取申請覆核作業 覆核查詢 /// </summary> /// <param name="data"></param> /// <returns></returns> public List <TreasuryAccessApprSearchDetailViewModel> GetApprSearchDetail(TreasuryAccessApprSearchViewModel data) { List <TreasuryAccessApprSearchDetailViewModel> result = new List <TreasuryAccessApprSearchDetailViewModel>(); List <string> dptList = new List <string>() { data.vCreateUnit }; using (TreasuryDBEntities db = new TreasuryDBEntities()) { var depts = GetDepts(); var emps = GetEmps(); var _CUser = emps.FirstOrDefault(x => x.USR_ID == data.vCreateUid); if (_CUser != null) { using (DB_INTRAEntities dbIntra = new DB_INTRAEntities()) { var _V_EMPLY2_DPT_CD = dbIntra.V_EMPLY2.AsNoTracking() .Where(x => x.DPT_HEAD == _CUser.EMP_NO).Select(x => x.DPT_CD).Distinct(); _V_EMPLY2_DPT_CD.ToList().ForEach(x => { dptList.Add(x?.Trim()); }); } } var treaItems = db.TREA_ITEM.AsNoTracking().Where(x => x.ITEM_OP_TYPE == "3").ToList(); DateTime?_vAPLY_DT_S = TypeTransfer.stringToDateTimeN(data.vAPLY_DT_S); DateTime?_vAPLY_DT_E = TypeTransfer.stringToDateTimeN(data.vAPLY_DT_E).DateToLatestTime(); result = db.TREA_APLY_REC.AsNoTracking() .Where(x => x.APLY_DT >= _vAPLY_DT_S, _vAPLY_DT_S != null) //申請日期(起) .Where(x => x.APLY_DT <= _vAPLY_DT_E, _vAPLY_DT_E != null) //申請日期(迄) .Where(x => x.APLY_NO == data.vAPLY_NO, !data.vAPLY_NO.IsNullOrWhiteSpace()) //申請單號 //.Where(x => x.CREATE_UNIT == data.vCreateUnit && apprStatus.Contains(x.APLY_STATUS)) //相同部門 & 符合狀態 的資料 .Where(x => dptList.Distinct().Contains(x.CREATE_UNIT) && apprStatus.Contains(x.APLY_STATUS), dptList.Any()) //相同部門含主管 & 符合狀態 的資料 .AsEnumerable() .Select(x => TreaAplyRecToTAASDViewModel(data.vCreateUid, x, treaItems, depts, emps)).ToList(); } return(result); }
/// <summary> /// 保管單位承辦作業 查詢 /// </summary> /// <param name="data">保管單位承辦作業 查詢</param> /// <returns></returns> public List <TreasuryAccessApprSearchDetailViewModel> GetCustodySearchDetail(TreasuryAccessApprSearchViewModel data) { List <TreasuryAccessApprSearchDetailViewModel> result = new List <TreasuryAccessApprSearchDetailViewModel>(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var depts = GetDepts(); var emps = GetEmps(); var formStatus = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "FORM_STATUS").ToList(); var treaItems = db.TREA_ITEM.AsNoTracking().Where(x => x.ITEM_OP_TYPE == "3").ToList(); DateTime?_vAPLY_DT_S = TypeTransfer.stringToDateTimeN(data.vAPLY_DT_S); DateTime?_vAPLY_DT_E = TypeTransfer.stringToDateTimeN(data.vAPLY_DT_E).DateToLatestTime(); result = db.TREA_APLY_REC.AsNoTracking() .Where(x => x.APLY_DT >= _vAPLY_DT_S, _vAPLY_DT_S != null) //申請日期(起) .Where(x => x.APLY_DT <= _vAPLY_DT_E, _vAPLY_DT_E != null) //申請日期(迄) .Where(x => x.APLY_NO == data.vAPLY_NO, !data.vAPLY_NO.IsNullOrWhiteSpace()) //申請單號 .Where(x => custodyStatus.Contains(x.APLY_STATUS)) //符合狀態 的資料 .AsEnumerable() .Select(x => TreaAplyRecToTAASDViewModel(data.vCreateUid, x, treaItems, depts, emps, formStatus)) .OrderByDescending(x => x.vAPLY_NO).ToList(); } return(result); }
/// <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="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="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); }