public JsonResult Search(TreasuryAccessSearchViewModel searchModel) { MSGReturnModel <string> result = new MSGReturnModel <string>(); result.RETURN_FLAG = false; result.DESCRIPTION = Ref.MessageType.not_Find_Any.GetDescription(); searchModel.vCustodianFlag = AccountController.CustodianFlag; Cache.Invalidate(CacheList.TreasuryAccessSearchData); Cache.Set(CacheList.TreasuryAccessSearchData, searchModel); var datas = TreasuryAccess.GetSearchDetail(searchModel); if (datas.Any()) { Cache.Invalidate(CacheList.TreasuryAccessSearchDetailViewData); Cache.Set(CacheList.TreasuryAccessSearchDetailViewData, datas); result.RETURN_FLAG = true; } return(Json(result)); }
/// <summary> /// 修改申請單記錄檔 /// </summary> /// <param name="data">修改資料</param> /// <param name="custodianFlag">是否為保管科</param> /// <param name="searchData">申請表單查詢顯示區塊ViewModel</param> /// <returns></returns> public MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> > updateAplyNo(TreasuryAccessViewModel data, bool custodianFlag, TreasuryAccessSearchViewModel searchData) { MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> > result = new MSGReturnModel <List <TreasuryAccessSearchDetailViewModel> >(); 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); } if (custodianFlag) { updateData.APLY_UNIT = data.vAplyUnit; updateData.APLY_UID = data.vAplyUid; } updateData.ACCESS_REASON = data.vAccessReason; updateData.EXPECTED_ACCESS_DATE = TypeTransfer.stringToDateTimeN(data.vExpectedAccessDate); updateData.LAST_UPDATE_UID = AccountController.CurrentUserId; updateData.LAST_UPDATE_DT = DateTime.Now; try { db.SaveChanges(); result.DESCRIPTION = Ref.MessageType.update_Success.GetDescription(); result.RETURN_FLAG = true; result.Datas = GetSearchDetail(searchData); } catch (DbUpdateException 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="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); }
/// <summary> /// 查詢 /// </summary> /// <param name="data">金庫物品存取主畫面查詢ViewModel</param> /// <returns></returns> public List <TreasuryAccessSearchDetailViewModel> GetSearchDetail(TreasuryAccessSearchViewModel data) { List <TreasuryAccessSearchDetailViewModel> result = new List <TreasuryAccessSearchDetailViewModel>(); if (data.vItem == null || data.vAplyUnit == null || !data.vItem.Any() || !data.vAplyUnit.Any()) //無查詢項目 or 申請單位 表示沒有權限查詢 { return(result); } var depts = GetDepts(); var emps = GetEmps(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { DateTime?_vAPLY_DT_S = TypeTransfer.stringToDateTimeN(data.vAPLY_DT_S); DateTime?_vAPLY_DT_E = TypeTransfer.stringToDateTimeN(data.vAPLY_DT_E).DateToLatestTime(); DateTime?_vActualAccessDate_S = TypeTransfer.stringToDateTimeN(data.vActualAccessDate_S); DateTime?_vActualAccessDate_E = TypeTransfer.stringToDateTimeN(data.vActualAccessDate_E).DateToLatestTime(); 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(); var _data = db.TREA_APLY_REC.AsNoTracking() .Where(x => data.vItem.Contains(x.ITEM_ID)) //項目 .Where(x => data.vAplyUnit.Contains(x.APLY_UNIT), data.vCustodianFlag && data.vAplyUnit.Count == 1) //保管科還是要單獨查詢申請單位 .Where(x => data.vAplyUnit.Contains(x.APLY_UNIT), !data.vCustodianFlag) //非保管科要加入申請單位條件 (20181105調整) .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.TREA_REGISTER_ID == data.vTREA_REGISTER_ID, !data.vTREA_REGISTER_ID.IsNullOrWhiteSpace()); //金庫登記簿單號 if (_vActualAccessDate_S != null || _vActualAccessDate_E != null) //實際存取 { var status = new List <string>() { Ref.AccessProjectFormStatus.D03.ToString(), Ref.AccessProjectFormStatus.E01.ToString() }; //狀態須符合這兩個 _data = _data.Where(x => status.Contains(x.APLY_STATUS)) .Join(db.TREA_OPEN_REC.AsNoTracking() .Where(x => x.REGI_APPR_DT >= _vActualAccessDate_S, _vActualAccessDate_S != null) .Where(x => x.REGI_APPR_DT <= _vActualAccessDate_E, _vActualAccessDate_E != null), x => x.TREA_REGISTER_ID, y => y.TREA_REGISTER_ID, (x, y) => x); } var dataTAR = _data.ToList(); var TRIDs = dataTAR.Where(x => x.TREA_REGISTER_ID != null).Select(x => x.TREA_REGISTER_ID).ToList(); var dataTOR = db.TREA_OPEN_REC.AsNoTracking().Where(x => TRIDs.Contains(x.TREA_REGISTER_ID)).ToList(); result.AddRange( from TAR in dataTAR join TOR in dataTOR on TAR.TREA_REGISTER_ID equals TOR.TREA_REGISTER_ID into temp from TOR in temp.DefaultIfEmpty() select new TreasuryAccessSearchDetailViewModel { vACCESS_REASON = TAR.ACCESS_REASON, vAPLY_DT = TypeTransfer.dateTimeNToString(TAR.APLY_DT), vREGI_APPR_DT = TypeTransfer.dateTimeNToString(TOR?.REGI_APPR_DT), vAPLY_NO = TAR.APLY_NO, vAPLY_STATUS = TAR.APLY_STATUS, vAPLY_STATUS_D = formStatus.FirstOrDefault(x => x.CODE == TAR.APLY_STATUS)?.CODE_VALUE, vAPLY_UNIT = depts.FirstOrDefault(y => y.DPT_CD.Trim() == TAR.APLY_UNIT)?.DPT_NAME, vAPLY_UID = TAR.APLY_UID, vAPLY_UID_NAME = emps.FirstOrDefault(x => x.USR_ID == TAR.APLY_UID)?.EMP_NAME, vCancleFlag = TAR.APLY_STATUS == Ref.AccessProjectFormStatus.A01.ToString() && TAR.CREATE_UID == data.vCreateUid ? "Y" : "N", vInvalidFlag = invalidStatus.Contains(TAR.APLY_STATUS) && TAR.CREATE_UID == data.vCreateUid ? "Y" : "N", vPrintFlag = printsStatus.Contains(TAR.APLY_STATUS) ? "Y" : "N", vItem = TAR.ITEM_ID, vItemDec = treaItems.FirstOrDefault(x => x.ITEM_ID == TAR.ITEM_ID)?.ITEM_DESC, vDESC = !TAR.APLY_APPR_DESC.IsNullOrWhiteSpace() ? TAR.APLY_APPR_DESC : TAR.CUSTODY_APPR_DESC, vACCESS_TYPE = TAR.ACCESS_TYPE, vLast_Update_Time = TAR.LAST_UPDATE_DT }); } return(result); }