/// <summary> /// 使用 申請單號 抓取資料 /// </summary> /// <param name="aplyNo">單號</param> /// <returns></returns> public List <CAViewModel> GetDataByAplyNo(string aplyNo) { var result = new List <CAViewModel>(); //result. using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _TAR = db.TREA_APLY_REC.AsNoTracking() .FirstOrDefault(x => x.APLY_NO == aplyNo); if (_TAR != null) { //使用單號去其他存取項目檔抓取物品編號 var OIAs = db.OTHER_ITEM_APLY.AsNoTracking() .Where(x => x.APLY_NO == _TAR.APLY_NO).Select(x => x.ITEM_ID).ToList(); //使用物品編號去電子憑證庫存資料檔抓取資料 var details = db.ITEM_CA.AsNoTracking() .Where(x => OIAs.Contains(x.ITEM_ID)).ToList(); if (details.Any()) { var _code_type = Ref.SysCodeType.INVENTORY_TYPE.ToString(); //庫存狀態 var _Inventory_types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == _code_type).ToList(); bool _accessStatus = (_TAR.APLY_STATUS == Ref.AccessProjectFormStatus.E01.ToString()) && (_TAR.ACCESS_TYPE == Ref.AccessProjectTradeType.P.ToString()); result = GetDetailModel(details, _Inventory_types, _accessStatus).ToList(); } } } return(result); }
/// <summary> /// 取得查詢結果資料 /// </summary> /// <param name="vCreate_Date_From">入庫日期(起)</param> /// <param name="vCreate_Date_To">入庫日期(迄)</param> /// <param name="vTrea_Register_Id">金庫登記簿單號</param> /// <returns></returns> public List <TreasuryRegisterSearch> GetSearchList(string vCreate_Date_From, string vCreate_Date_To, string vTrea_Register_Id) { var result = new List <TreasuryRegisterSearch>(); DateTime DateFrom, DateTo; DateTime.TryParse(vCreate_Date_From, out DateFrom); if (DateTime.TryParse(vCreate_Date_To, out DateTo)) { DateTo = DateTo.DateToLatestTime(); } using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _Open_Trea_Type = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE").ToList(); var _Regi_Status = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "FORM_STATUS").ToList(); result = GetSearchModel(db.TREA_OPEN_REC.AsNoTracking() .Where(x => x.CREATE_DT >= DateFrom, !vCreate_Date_From.IsNullOrWhiteSpace()) .Where(x => x.CREATE_DT <= DateTo, !vCreate_Date_To.IsNullOrWhiteSpace()) .Where(x => x.TREA_REGISTER_ID == vTrea_Register_Id, !vTrea_Register_Id.IsNullOrWhiteSpace()) .AsEnumerable() , _Open_Trea_Type, _Regi_Status).ToList(); } return(result); }
/// <summary> /// 作廢 /// </summary> /// <param name="db">Entity</param> /// <param name="aply_No">作廢單號</param> /// <param name="access_Type">取出或存入</param> /// <param name="logStr">log 字串</param> /// <param name="dt">更新時間</param> /// <returns></returns> public Tuple <bool, string> ObSolete(TreasuryDBEntities db, string aply_No, string access_Type, string logStr, DateTime dt) { var itemIds = db.OTHER_ITEM_APLY.AsNoTracking().Where(x => x.APLY_NO == aply_No).Select(x => x.ITEM_ID).ToList(); if (access_Type == Ref.AccessProjectTradeType.G.ToString()) //取出狀態電子憑證庫存資料檔要復原 { foreach (var item in db.ITEM_CA.Where(x => itemIds.Contains(x.ITEM_ID))) { item.INVENTORY_STATUS = "1"; //復原為在庫 item.LAST_UPDATE_DT = dt; logStr += item.modelToString(logStr); } return(new Tuple <bool, string>(true, logStr)); } else //存入狀態改為已取消 { foreach (var item in db.ITEM_CA.Where(x => itemIds.Contains(x.ITEM_ID))) { item.INVENTORY_STATUS = "7"; //改為已取消 item.LAST_UPDATE_DT = dt; logStr += item.modelToString(logStr); } return(new Tuple <bool, string>(true, logStr)); } }
protected void SetDetail(string vTreaRegisterId, string vUser_Id) { _REC = new REC(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { //取得開庫紀錄檔 var _TOR = db.TREA_OPEN_REC.AsNoTracking() .FirstOrDefault(x => x.TREA_REGISTER_ID == vTreaRegisterId); //金庫管理者 var UserData = new V_EMPLY2(); using (DB_INTRAEntities dbINTRA = new DB_INTRAEntities()) { UserData = dbINTRA.V_EMPLY2.AsNoTracking().FirstOrDefault(x => x.USR_ID == vUser_Id); } //開庫類型 var OpenTreaType = db.SYS_CODE.AsNoTracking() .Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE").ToList(); if (_TOR != null) { _REC.SYS_DATE = DateTime.Now.ToString("yyyy/MM/dd"); _REC.TREA_REGISTER_ID = _TOR.TREA_REGISTER_ID; _REC.USER_NAME = UserData.EMP_NAME; _REC.ACTUAL_PUT_TIME = string.IsNullOrEmpty(_TOR.ACTUAL_PUT_TIME.ToString()) ? null : DateTime.Parse(_TOR.ACTUAL_PUT_TIME.ToString()).ToString("HH:mm"); _REC.ACTUAL_GET_TIME = string.IsNullOrEmpty(_TOR.ACTUAL_GET_TIME.ToString()) ? null : DateTime.Parse(_TOR.ACTUAL_GET_TIME.ToString()).ToString("HH:mm"); _REC.OPEN_TREA_TYPE = OpenTreaType.FirstOrDefault(x => x.CODE == _TOR.OPEN_TREA_TYPE).CODE_VALUE; } } }
/// <summary> /// 金庫登記簿 /// </summary> /// <returns></returns> public TreaOpenRec GetTreaOpenRec() { var result = new TreaOpenRec(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var Regi_Status = Ref.AccessProjectFormStatus.C02.ToString(); var OTD = DateTime.Now.ToString("yyyy-MM-dd"); var OTT = DateTime.Now.ToString("HH:mm"); var _OpenTreaType = db.SYS_CODE.AsNoTracking() .Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE"); result = db.TREA_OPEN_REC.AsNoTracking() .Where(x => x.REGI_STATUS == Regi_Status && x.APPR_STATUS != "4") .AsEnumerable() .Select(x => new TreaOpenRec() { vTreaRegisterId = x.TREA_REGISTER_ID, vOpenTreaTypeName = _OpenTreaType.FirstOrDefault(y => y.CODE == x.OPEN_TREA_TYPE)?.CODE_VALUE }).FirstOrDefault(); } //無符合開庫資料 if (result == null) { result = new TreaOpenRec() { vTreaRegisterId = "", vOpenTreaTypeName = "" }; } return(result); }
/// <summary> /// 查詢資料By內文編號 /// </summary> /// <param name="MAIL_CONTENT_ID"></param> /// <returns></returns> public ITinItem GetUpdateData(string MAIL_CONTENT_ID) { TreasuryMailContentUpdateViewModel result = new TreasuryMailContentUpdateViewModel(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var emps = GetEmps(); var _CODE_FUNC = db.CODE_FUNC.AsNoTracking().ToList(); var _sysCodes = db.SYS_CODE.AsNoTracking().ToList(); var _Is_Disabled = _sysCodes .Where(x => x.CODE_TYPE == "IS_DISABLED").ToList(); var _DATA_STATUS = _sysCodes .Where(x => x.CODE_TYPE == "DATA_STATUS").ToList(); var data = db.MAIL_CONTENT.AsNoTracking() .FirstOrDefault(x => x.MAIL_CONTENT_ID == MAIL_CONTENT_ID); if (data != null) { result.vMAIL_CONTENT_ID = data.MAIL_CONTENT_ID; result.vIS_DISABLED = data.IS_DISABLED; result.vMAIL_SUBJECT = data.MAIL_SUBJECT; result.vMAIL_CONTENT = data.MAIL_CONTENT1; result.vLAST_UPDATE_DT = data.LAST_UPDATE_DT; result.subData = GetReceiveData(data.MAIL_CONTENT_ID); } } return(result); }
/// <summary> /// get SysCode /// </summary> /// <param name="codeType"></param> /// <param name="isAll"></param> /// <returns></returns> public List <SelectOption> GetSysCode(string codeType, bool isAll = false) { var result = new List <SelectOption>(); if (codeType.IsNullOrWhiteSpace()) { return(result); } using (TreasuryDBEntities db = new TreasuryDBEntities()) { if (isAll) { result.Add(new SelectOption() { Text = "All", Value = "All" }); } result.AddRange(db.SYS_CODE.AsNoTracking() .Where(x => x.CODE_TYPE == codeType) .OrderBy(x => x.ISORTBY) .AsEnumerable() .Select(x => new SelectOption() { Text = x.CODE_VALUE, Value = x.CODE }).ToList()); } return(result); }
/// <summary> /// 取得明細資料 /// </summary> /// <param name="vTrea_Register_Id">金庫登記簿單號</param> /// <returns></returns> public List <TreasuryRegisterDetail> GetDetailList(string vTrea_Register_Id) { var result = new List <TreasuryRegisterDetail>(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _Item_Desc = db.TREA_ITEM.AsNoTracking().ToList(); var _Access_Type = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "ACCESS_TYPE").ToList(); //取得入庫類型為2的印章內容 var _Trea_Item = db.TREA_ITEM.AsNoTracking().Where(x => x.ITEM_OP_TYPE == "2").Select(x => x.ITEM_ID).ToList(); var _Trea_Aply_Rec = db.TREA_APLY_REC.AsNoTracking().Where(x => _Trea_Item.Contains(x.ITEM_ID)).Select(x => x.APLY_NO).ToList(); var _Other_Item_Aply = db.OTHER_ITEM_APLY.AsNoTracking().Where(x => _Trea_Aply_Rec.Contains(x.APLY_NO)).ToList(); var _Seal_Desc = _Other_Item_Aply.Join(db.ITEM_SEAL.AsNoTracking(), OIA => OIA.ITEM_ID, IS => IS.ITEM_ID, (OIA, IS) => new BeforeOpenTreasurySeal { vAply_No = OIA.APLY_NO, vItem_Id = OIA.ITEM_ID, vSeal_Desc = IS.SEAL_DESC }).ToList(); var _Confirm = GetEmps(); result = GetDetailModel(db.TREA_APLY_REC.AsNoTracking() .Where(x => x.TREA_REGISTER_ID == vTrea_Register_Id) .AsEnumerable(), _Item_Desc, _Access_Type, _Seal_Desc, _Confirm).ToList(); } return(result); }
/// <summary> /// 畫面初始 /// </summary> /// <returns></returns> public Tuple <List <SelectOption>, List <SelectOption> > FirstDropDown() { List <SelectOption> CHARGE_DEPT = new List <SelectOption>(); List <SelectOption> TREA_ITEM = new List <SelectOption>(); using (DB_INTRAEntities dbIntra = new DB_INTRAEntities()) { var _VW_OA_DEPT = dbIntra.VW_OA_DEPT.AsNoTracking(); var _Dpt_types = new List <string>() { "03", "02" }; CHARGE_DEPT = _VW_OA_DEPT.Where(x => _Dpt_types.Contains(x.Dpt_type)) .AsEnumerable() .Select(x => new SelectOption() { Value = x.DPT_CD?.Trim(), Text = x.DPT_NAME?.Trim() }).ToList(); } using (TreasuryDBEntities db = new TreasuryDBEntities()) { TREA_ITEM = db.TREA_ITEM.AsNoTracking() //.Where(x => x.DAILY_FLAG == "N") .Where(x => x.IS_DISABLED == "N" && x.ITEM_OP_TYPE == "3") //「入庫作業類型=3」且啟用中的存取項目 .OrderBy(x => x.ITEM_ID) .AsEnumerable() .Select(x => new SelectOption() { Value = x.ITEM_ID, Text = x.ITEM_DESC }).ToList(); } return(new Tuple <List <SelectOption>, List <SelectOption> >(CHARGE_DEPT, TREA_ITEM)); }
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="db">Entities</param> /// <param name="itemIDs">覆核的申請單號</param> /// <param name="logStr">log</param> /// <param name="dt">執行時間</param> /// <returns></returns> public Tuple <bool, string> CDCApproved(TreasuryDBEntities db, List <string> itemIDs, string logStr, DateTime dt) { foreach (var itemID in itemIDs) { var _Bill = db.ITEM_BLANK_NOTE.FirstOrDefault(x => x.ITEM_ID == itemID); if (_Bill != null) { _Bill.INVENTORY_STATUS = "1"; //在庫 _Bill.ISSUING_BANK = GetNewValue(_Bill.ISSUING_BANK, _Bill.ISSUING_BANK_AFT); _Bill.ISSUING_BANK_AFT = null; _Bill.CHECK_TYPE = GetNewValue(_Bill.CHECK_TYPE, _Bill.CHECK_TYPE_AFT); _Bill.CHECK_TYPE_AFT = null; _Bill.CHECK_NO_TRACK = GetNewValue(_Bill.CHECK_NO_TRACK, _Bill.CHECK_NO_TRACK_AFT); _Bill.CHECK_NO_TRACK_AFT = null; _Bill.CHECK_NO_B = GetNewValue(_Bill.CHECK_NO_B, _Bill.CHECK_NO_B_AFT); _Bill.CHECK_NO_B_AFT = null; _Bill.CHECK_NO_E = GetNewValue(_Bill.CHECK_NO_E, _Bill.CHECK_NO_E_AFT); _Bill.CHECK_NO_E_AFT = null; _Bill.LAST_UPDATE_DT = dt; logStr += _Bill.modelToString(logStr); } else { return(new Tuple <bool, string>(false, logStr)); } } return(new Tuple <bool, string>(true, logStr)); }
/// <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> /// <param name="desc">覆核意見</param> /// <returns></returns> public Tuple <bool, string> TinReject(TreasuryDBEntities db, List <string> aplyNos, string logStr, DateTime dt, string userId, string desc) { foreach (var aplyNo in aplyNos) { foreach (var MTH in db.MAIL_TIME_HIS.Where(x => x.APLY_NO == aplyNo)) { MTH.APPR_UID = userId; MTH.APPR_DATE = dt; MTH.APPR_STATUS = "3"; //退回 if (!desc.IsNullOrWhiteSpace()) { MTH.APPR_DESC = desc; } logStr += MTH.modelToString(logStr); if (!MTH.MAIL_TIME_ID.IsNullOrWhiteSpace()) { var MT = db.MAIL_TIME.First(x => x.MAIL_TIME_ID == MTH.MAIL_TIME_ID); MT.FREEZE_DT = null; MT.FREEZE_UID = null; MT.APPR_UID = userId; MT.APPR_DT = dt; MT.DATA_STATUS = "1"; //可異動 logStr += MT.modelToString(logStr); } } } return(new Tuple <bool, string>(true, logStr)); }
/// <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) { foreach (var aplyNo in aplyNos) { foreach (var MTH in db.MAIL_TIME_HIS.Where(x => x.APLY_NO == aplyNo)) { MTH.APPR_UID = userId; MTH.APPR_DATE = dt; MTH.APPR_STATUS = "2"; //覆核完成 logStr += MTH.modelToString(logStr); var _MAIL_CONTENT_ID = string.Empty; var MT = db.MAIL_TIME.First(x => x.MAIL_TIME_ID == MTH.MAIL_TIME_ID); MT.FREEZE_DT = null; MT.FREEZE_UID = null; MT.APPR_UID = userId; MT.APPR_DT = dt; MT.DATA_STATUS = "1"; //可異動 MT.FUNC_ID = MTH.FUNC_ID; MT.SEND_TIME = MTH.SEND_TIME; MT.INTERVAL_MIN = MTH.INTERVAL_MIN; MT.TREA_OPEN_TIME = MTH.TREA_OPEN_TIME; MT.EXEC_TIME_B = MTH.EXEC_TIME_B; MT.EXEC_TIME_E = MTH.EXEC_TIME_E; MT.MAIL_CONTENT_ID = MTH.MAIL_CONTENT_ID; MT.MEMO = MTH.MEMO; MT.IS_DISABLED = MTH.IS_DISABLED; logStr += MT.modelToString(logStr); } } return(new Tuple <bool, string>(true, logStr)); }
/// <summary> /// 抓取庫存明細資料 /// </summary> /// <param name="vAplyUnit">申請部門</param> /// <param name="inventoryStatus">庫存狀態</param> /// <param name="aplyNo">申請單號</param> /// <returns></returns> public IEnumerable <ITreaItem> GetDayData(string vAplyUnit = null, string inventoryStatus = null, string aplyNo = null) { var result = new List <BillViewModel>(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { if (!aplyNo.IsNullOrWhiteSpace()) { var _TAR = db.TREA_APLY_REC.AsNoTracking() .FirstOrDefault(x => x.APLY_NO == aplyNo); if (_TAR != null) { vAplyUnit = _TAR.APLY_UNIT; } } var dept = intra.getDept(vAplyUnit); //抓取單位 var _code_type = Ref.SysCodeType.INVENTORY_TYPE.ToString(); var _Inventory_types = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == _code_type).ToList(); result.AddRange(db.ITEM_BLANK_NOTE.AsNoTracking() .Where(x => x.INVENTORY_STATUS == "1") //庫存資料表只抓庫存 其他由申請紀錄檔 抓取 .Where(x => x.CHARGE_DEPT == dept.UP_DPT_CD.Trim() && x.CHARGE_SECT == dept.DPT_CD.Trim(), !dept.Dpt_type.IsNullOrWhiteSpace() && dept.Dpt_type.Trim() == "04") //單位為科 .Where(x => x.CHARGE_DEPT == dept.DPT_CD.Trim(), !dept.Dpt_type.IsNullOrWhiteSpace() && dept.Dpt_type.Trim() == "03") //單位為部 .AsEnumerable() .Select(x => ItemBlankNoteToBillViewModel(x, _Inventory_types))); } if (inventoryStatus != "1") //排除只抓庫存其他都需要申請紀錄檔 { result.AddRange(getTreaAplyRec(vAplyUnit)); } return(result); }
/// <summary> /// 取得已入庫確認資料 /// </summary> /// <param name="TreaRegisterId">金庫登記簿單號</param> /// <returns></returns> public List <BeforeOpenTreasuryViewModel> GetStorageList(string TreaRegisterId) { var result = new List <BeforeOpenTreasuryViewModel>(); var Aply_Status = Ref.AccessProjectFormStatus.C02.ToString(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _Item_Desc = db.TREA_ITEM.AsNoTracking().ToList(); var _Access_Type = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "ACCESS_TYPE").ToList(); //取得入庫類型為2的印章內容 var _Trea_Item = db.TREA_ITEM.AsNoTracking().Where(x => x.ITEM_OP_TYPE == "2").Select(x => x.ITEM_ID).ToList(); var _Trea_Aply_Rec = db.TREA_APLY_REC.AsNoTracking().Where(x => _Trea_Item.Contains(x.ITEM_ID)).Select(x => x.APLY_NO).ToList(); var _Other_Item_Aply = db.OTHER_ITEM_APLY.AsNoTracking().Where(x => _Trea_Aply_Rec.Contains(x.APLY_NO)).ToList(); var _Seal_Desc = _Other_Item_Aply.Join(db.ITEM_SEAL.AsNoTracking(), OIA => OIA.ITEM_ID, IS => IS.ITEM_ID, (OIA, IS) => new BeforeOpenTreasurySeal { vAply_No = OIA.APLY_NO, vItem_Id = OIA.ITEM_ID, vSeal_Desc = IS.SEAL_DESC }).ToList(); var _Confirm = GetEmps(); result = GetStorageModel(db.TREA_APLY_REC.AsNoTracking() .Where(x => x.CONFIRM_UID != null) .Where(x => x.APLY_STATUS == Aply_Status) .Where(x => x.TREA_REGISTER_ID == TreaRegisterId) .AsEnumerable(), _Item_Desc, _Access_Type, _Seal_Desc, _Confirm).ToList(); result.AddRange(GetRoutineList(TreaRegisterId)); } return(result); }
/// <summary> /// 明細資料(空白票據) /// </summary> /// <param name="aplyNo"></param> /// <returns></returns> public IEnumerable <ITreaItem> GetTempData(string aplyNo) { var result = new List <BillViewModel>(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var sys_codes = db.SYS_CODE.AsNoTracking().ToList(); var _code = "3"; //預約存入 , 4=> 預約取出 var _Inventory_types = sys_codes .Where(x => x.CODE_TYPE == Ref.SysCodeType.INVENTORY_TYPE.ToString()).ToList(); //抓庫存狀態設定 var _TAR = db.TREA_APLY_REC.AsNoTracking() .FirstOrDefault(x => x.APLY_NO == aplyNo); if (_TAR != null) { _code = _TAR.ACCESS_TYPE == Ref.AccessProjectTradeType.P.ToString() ? "3" : _TAR.ACCESS_TYPE == Ref.AccessProjectTradeType.G.ToString() ? "4" : "3"; } result = db.BLANK_NOTE_APLY.AsNoTracking() .Where(x => x.APLY_NO == aplyNo) .OrderBy(x => x.ISSUING_BANK) .ThenBy(x => x.CHECK_TYPE) .ThenBy(x => x.CHECK_NO_TRACK) .AsEnumerable() .Select((x, y) => BlankNoteAplyToBillViewModel(x, _code, y, _Inventory_types, true)).ToList(); } return(result); }
/// <summary> /// 抓取申請紀錄檔 /// </summary> /// <param name="vAplyUnit"></param> /// <returns></returns> private List <BillViewModel> getTreaAplyRec(string vAplyUnit) { var result = new List <BillViewModel>(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var nonShowStatus = new List <string>() { Ref.AccessProjectFormStatus.E01.ToString(), Ref.AccessProjectFormStatus.E02.ToString(), //申請人刪除狀態 (等同庫存有需排除) Ref.AccessProjectFormStatus.E03.ToString(), }; var sys_codes = db.SYS_CODE.AsNoTracking().ToList(); var _Inventory_types = sys_codes .Where(x => x.CODE_TYPE == Ref.SysCodeType.INVENTORY_TYPE.ToString()).ToList(); db.TREA_APLY_REC.AsNoTracking() .Where(x => !nonShowStatus.Contains(x.APLY_STATUS)) //要確認是否須排除不能顯示的 .Where(x => x.APLY_UNIT == vAplyUnit).ToList() .ForEach(x => { var _accessType = x.ACCESS_TYPE; //P(存入) , G(取出) var code = _accessType == "P" ? "3" //預約存入 : _accessType == "G" ? "4" //預約取出 : ""; result.AddRange(db.BLANK_NOTE_APLY.AsNoTracking() .Where(y => y.APLY_NO == x.APLY_NO) .AsEnumerable() .Select((a, b) => BlankNoteAplyToBillViewModel(a, code, b, _Inventory_types, false))); }); } 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="db">Entities</param> /// <param name="itemIDs">覆核的申請單號</param> /// <param name="logStr">log</param> /// <param name="dt">執行時間</param> /// <returns></returns> public Tuple <bool, string> CDCApproved(TreasuryDBEntities db, List <string> itemIDs, string logStr, DateTime dt) { foreach (var itemID in itemIDs) { var _CA = db.ITEM_CA.FirstOrDefault(x => x.ITEM_ID == itemID); if (_CA != null) { _CA.INVENTORY_STATUS = "1"; //在庫 _CA.CA_USE = GetNewValue(_CA.CA_USE, _CA.CA_USE_AFT); _CA.CA_USE_AFT = null; _CA.CA_DESC = GetNewValue(_CA.CA_DESC, _CA.CA_DESC_AFT); _CA.CA_DESC_AFT = null; _CA.BANK = GetNewValue(_CA.BANK, _CA.BANK_AFT); _CA.BANK_AFT = null; _CA.CA_NUMBER = GetNewValue(_CA.CA_NUMBER, _CA.CA_NUMBER_AFT); _CA.CA_NUMBER_AFT = null; _CA.MEMO = GetNewValue(_CA.MEMO, _CA.MEMO_AFT); _CA.MEMO_AFT = null; _CA.LAST_UPDATE_DT = dt; logStr = _CA.modelToString(logStr); } else { return(new Tuple <bool, string>(false, logStr)); } } return(new Tuple <bool, string>(true, logStr)); }
public override DataSet GetData(List <reportParm> parms) { var resultsTable = new DataSet(); List <BillReportModel> reportDatas = new List <BillReportModel>(); var _Parameters = new List <SqlParameter>(); string aply_No = parms.Where(x => x.key == "aply_No").FirstOrDefault()?.value ?? string.Empty; SetDetail(aply_No); var Bill = new Bill(); var billController = new BillController(); var _data = (List <BillViewModel>)Bill.GetTempData(aply_No); var _data2 = (List <BillViewModel>)Bill.GetDayData(null, null, aply_No); var tempData = billController.SetBillViewRowNum(_data); var dayData = billController.SetBillTakeOutViewModelGroup(_data2); var checkTypes = new List <SYS_CODE>(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { checkTypes = db.SYS_CODE.AsNoTracking() .Where(x => x.CODE_TYPE == "CHECK_TYPE").ToList(); } reportDatas.AddRange(tempData.Select(x => new BillReportModel() { ROW = x.vRowNum, TYPE = "1", ISSUING_BANK = x.vIssuingBank, CHECK_TYPE = checkTypes.FirstOrDefault(y => y.CODE == x.vCheckType)?.CODE_VALUE ?? x.vCheckType, CHECK_NO_TRACK = x.vCheckNoTrack, CHECK_NO_B = x.vCheckNoB, CHECK_NO_E = x.vCheckNoE, Total = TypeTransfer.stringToInt(x.vCheckTotalNum) == 0 ? TypeTransfer.stringToInt(x.vTakeOutTotalNum) : TypeTransfer.stringToInt(x.vCheckTotalNum), ReMainTotalNum = TypeTransfer.stringToInt(x.vReMainTotalNum) })); reportDatas.AddRange(dayData.Select(x => new BillReportModel() { ROW = x.vRowNum, TYPE = "2", Status = x.vStatus, ISSUING_BANK = x.vIssuingBank, CHECK_TYPE = checkTypes.FirstOrDefault(y => y.CODE == x.vCheckType)?.CODE_VALUE ?? x.vCheckType, CHECK_NO_TRACK = x.vCheckNoTrack, CHECK_NO_B = x.vCheckNoB, CHECK_NO_E = x.vCheckNoE, Total = TypeTransfer.stringToInt(x.vCheckTotalNum), ReMainTotalNum = TypeTransfer.stringToInt(x.vReMainTotalNum) })); resultsTable.Tables.Add(reportDatas.ToDataTable()); SetExtensionParm(); return(resultsTable); }
/// <summary> /// 查詢 /// </summary> /// <param name="data"></param> /// <returns></returns> public List <SpecifiedTimeTreasurySearchDetailViewModel> GetSearchDetail(SpecifiedTimeTreasurySearchViewModel data) { List <SpecifiedTimeTreasurySearchDetailViewModel> result = new List <SpecifiedTimeTreasurySearchDetailViewModel>(); if (!data.vAPLY_DT_S.Any() || !data.vAPLY_DT_E.Any()) // 無查詢日期 { return(result); } 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(); List <string> notShowList = new List <string>(); notShowList.Add("D1001"); notShowList.Add("D1002"); notShowList.Add("D1003"); var _data = db.TREA_OPEN_REC.AsNoTracking() .Where(x => x.OPEN_TREA_TYPE == "2") //開庫類型: 2.指定時間開庫 .Where(x => x.CREATE_DT >= _vAPLY_DT_S, _vAPLY_DT_S != null) //申請日期(起) .Where(x => x.CREATE_DT <= _vAPLY_DT_E, _vAPLY_DT_E != null) //申請日期(迄) .Where(x => x.TREA_REGISTER_ID == data.vTREA_REGISTER_ID, !data.vTREA_REGISTER_ID.IsNullOrWhiteSpace()) //工作單號 .OrderBy(x => x.CREATE_DT); var _item = db.TREA_ITEM.AsNoTracking() .Select(x => new { x.ITEM_ID, x.ITEM_DESC }).ToList(); var _query = _data.Join(db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "APPR_STATUS"), x => x.APPR_STATUS, z => z.CODE, (x, z) => new { open = x, sysCode = z }) .AsEnumerable() .Select((x, index) => new SpecifiedTimeTreasurySearchDetailViewModel() { vINDEX = (index + 1).ToString(), vCREATE_DT = x.open.CREATE_DT?.ToString("yyyy/MM/dd"), vTREA_REGISTER_ID = x.open.TREA_REGISTER_ID, vAPLY_STATUS = x.sysCode.CODE_VALUE, vOPEN_TREA_REASON = "取" + string.Join("及", x.open.OPEN_TREA_REASON.Split(';').ToList() .Where(z => !notShowList.Contains(z)) .Select(z => _item.FirstOrDefault(y => y.ITEM_ID == z)?.ITEM_DESC) .Where(z => z != null) ), vOPEN_TREA_TIME = x.open.OPEN_TREA_TIME, vMEMO = x.open.MEMO, vOPEN_TREA_DATE = x.open.OPEN_TREA_DATE.ToString("yyyy/MM/dd"), vOPEN_TREA_REASON_ID = x.open.OPEN_TREA_REASON, vEXEC_TIME_B = x.open.EXEC_TIME_B, vEXEC_TIME_E = x.open.EXEC_TIME_E, vCREATE_UID = x.open.CREATE_UID, vAPLY_STATUS_ID = x.open.APPR_STATUS, vAPPR_UID = x.open.APPR_UID }); result.AddRange(_query); } return(result); }
public List <AlreadyConfirmedSearchDetailViewModel> GetSearchDetail(AlreadyConfirmedSearchViewModel searchData) { List <AlreadyConfirmedSearchDetailViewModel> result = new List <AlreadyConfirmedSearchDetailViewModel>(); if (searchData.vDT_From.IsNullOrWhiteSpace() || searchData.vDT_To.IsNullOrWhiteSpace()) // 無查詢日期 { return(result); } using (TreasuryDBEntities db = new TreasuryDBEntities()) { DateTime? _vDT_From = TypeTransfer.stringToDateTimeN(searchData.vDT_From); DateTime? _vDT_To = TypeTransfer.stringToDateTimeN(searchData.vDT_To).DateToLatestTime(); List <string> register_List = new List <string>(); var emps = GetEmps(); var _TREA_OPEN_REC = db.TREA_OPEN_REC.AsNoTracking(); var _TREA_APLY_REC = db.TREA_APLY_REC.AsNoTracking().AsQueryable(); var _SYS_CODE_OPEN_TREA_TYPE = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE").ToList(); var _SYS_CODE_ACCESS_TYPE = db.SYS_CODE.AsNoTracking().Where(x => x.CODE_TYPE == "ACCESS_TYPE").ToList(); var _TREA_ITEM = db.TREA_ITEM.AsNoTracking(); var _ITEM_SEAL = db.ITEM_SEAL.AsNoTracking(); var _OTHER_ITEM_APLY = db.OTHER_ITEM_APLY.AsNoTracking(); if (_TREA_OPEN_REC.Where(x => x.OPEN_TREA_TYPE == searchData.vOPEN_TREA_TYPE, !searchData.vOPEN_TREA_TYPE.IsNullOrWhiteSpace()).ToList().Any()) { register_List.AddRange(_TREA_OPEN_REC.Where(x => x.OPEN_TREA_TYPE == searchData.vOPEN_TREA_TYPE, !searchData.vOPEN_TREA_TYPE.IsNullOrWhiteSpace()).Select(x => x.TREA_REGISTER_ID).ToList()); } _TREA_APLY_REC = _TREA_APLY_REC .Where(x => x.CONFIRM_DT >= _vDT_From, _vDT_From != null) .Where(x => x.CONFIRM_DT <= _vDT_To, _vDT_To != null) .Where(x => register_List.Contains(x.TREA_REGISTER_ID), register_List.Any()) .Where(x => x.TREA_REGISTER_ID == searchData.vTREA_REGISTER_ID, !searchData.vTREA_REGISTER_ID.IsNullOrWhiteSpace()) .Where(x => x.CONFIRM_UID == searchData.vConfirm_Id, !searchData.vConfirm_Id.IsNullOrWhiteSpace()) .Where(x => x.CONFIRM_UID != null && x.CONFIRM_UID != ""); //.Where(x => !x.CONFIRM_UID.IsNullOrWhiteSpace()); result = _TREA_APLY_REC.AsEnumerable() .Select(x => new AlreadyConfirmedSearchDetailViewModel() { vACTUAL_PUT_TIME = _TREA_OPEN_REC.FirstOrDefault(y => y.TREA_REGISTER_ID == x.TREA_REGISTER_ID)?.ACTUAL_PUT_TIME.dateTimeToStr(), vTREA_REGISTER_ID = x.TREA_REGISTER_ID, vOPEN_TREA_TYPE = _SYS_CODE_OPEN_TREA_TYPE.FirstOrDefault(y => y.CODE == _TREA_OPEN_REC.FirstOrDefault(z => z.TREA_REGISTER_ID == x.TREA_REGISTER_ID)?.OPEN_TREA_TYPE)?.CODE_VALUE, //vConfirm_Id = string.Format("{0}-{1}", !x.TREA_REGISTER_ID.IsNullOrWhiteSpace() ? x.ACTUAL_ACCESS_UID : x.CONFIRM_UID, !x.TREA_REGISTER_ID.IsNullOrWhiteSpace() ? GetUserInfo(x.ACTUAL_ACCESS_UID).EMP_Name : GetUserInfo(x.CONFIRM_UID).EMP_Name), vConfirm_Id = $@"{x.CONFIRM_UID}-{emps.FirstOrDefault(y => y.USR_ID == x.CONFIRM_UID)?.EMP_NAME?.Trim()}", vITEM_DESC = _TREA_ITEM.FirstOrDefault(y => y.ITEM_ID == x.ITEM_ID)?.ITEM_DESC, vSEAL_DESC = _TREA_ITEM.FirstOrDefault(y => y.ITEM_ID == x.ITEM_ID)?.ITEM_OP_TYPE == "2" ? _ITEM_SEAL.FirstOrDefault(z => z.ITEM_ID == _OTHER_ITEM_APLY.FirstOrDefault(a => a.APLY_NO == x.APLY_NO).ITEM_ID)?.SEAL_DESC: null, vACCESS_TYPE = _TREA_ITEM.FirstOrDefault(y => y.ITEM_ID == x.ITEM_ID)?.ITEM_OP_TYPE == "2" ? _SYS_CODE_ACCESS_TYPE.FirstOrDefault(z => z.CODE == x.ACCESS_TYPE)?.CODE_VALUE : null, vAPLY_NO = x.APLY_NO, vACCESS_REASON = x.ACCESS_REASON, hITEM_ID = x.ITEM_ID, hITEM_OP_TYPE = _TREA_ITEM.FirstOrDefault(y => y.ITEM_ID == x.ITEM_ID)?.ITEM_OP_TYPE }).ToList(); } return(result); }
/// <summary> /// 共用存檔 申請單紀錄檔 回傳參數1 (APLY_NO) 回傳參數2 (log訊息) /// </summary> /// <param name="db">Entity</param> /// <param name="taData">viewModel</param> /// <param name="logStr">紀錄訊息</param> /// <param name="dt">修改時間</param> /// <returns></returns> protected Tuple <string, string> SaveTREA_APLY_REC(TreasuryDBEntities db, TreasuryAccessViewModel taData, string logStr, DateTime dt) { //取得流水號 SysSeqDao sysSeqDao = new SysSeqDao(); String qPreCode = DateUtil.getCurChtDateTime().Split(' ')[0]; var cId = sysSeqDao.qrySeqNo("G6", qPreCode).ToString().PadLeft(3, '0'); if (logStr.IsNullOrWhiteSpace()) { logStr = string.Empty; } #region 申請單紀錄檔 var _TAR = new TREA_APLY_REC() { APLY_NO = $@"G6{qPreCode}{cId}", //申請單號 G6+系統日期YYYMMDD(民國年)+3碼流水號 APLY_FROM = Ref.AccessProjectStartupType.M.ToString(), //人工 ITEM_ID = taData.vItem, //申請項目 ACCESS_TYPE = taData.vAccessType, //存入(P) or 取出(G) ACCESS_REASON = taData.vAccessReason, //申請原因 APLY_STATUS = Ref.AccessProjectFormStatus.A01.ToString(), //表單申請 EXPECTED_ACCESS_DATE = TypeTransfer.stringToDateTimeN(taData.vExpectedAccessDate), //預計存取日期 APLY_UNIT = taData.vAplyUnit, //申請單位 APLY_UID = taData.vAplyUid, //申請人 APLY_DT = dt, CREATE_UNIT = taData.vCreateUnit, //新增單位 CREATE_UID = taData.vCreateUid, //新增人 CREATE_DT = dt, LAST_UPDATE_UID = taData.vCreateUid, LAST_UPDATE_DT = dt }; if (taData.vAplyUid != taData.vCreateUid) //當申請人不是新增人(代表為保管單位代申請) { _TAR.CUSTODY_UID = taData.vCreateUid; //保管單位直接帶 新增人 _TAR.CUSTODY_DT = dt; } logStr += _TAR.modelToString(logStr); db.TREA_APLY_REC.Add(_TAR); #endregion #region 申請單歷程檔 var _ARH = new APLY_REC_HIS() { APLY_NO = _TAR.APLY_NO, APLY_STATUS = _TAR.APLY_STATUS, PROC_DT = dt, PROC_UID = _TAR.CREATE_UID }; logStr += _ARH.modelToString(logStr); db.APLY_REC_HIS.Add(_ARH); #endregion return(new Tuple <string, string>(_TAR.APLY_NO, logStr)); }
/// <summary> /// 作廢 /// </summary> /// <param name="db">Entity</param> /// <param name="aply_No">作廢單號</param> /// <param name="access_Type">取出或存入</param> /// <param name="logStr">log 字串</param> /// <param name="dt">更新時間</param> /// <returns></returns> public Tuple <bool, string> ObSolete(TreasuryDBEntities db, string aply_No, string access_Type, string logStr, DateTime dt) { if (access_Type == Ref.AccessProjectTradeType.G.ToString()) //取出狀態資料要復原 { return(Recover(db, aply_No, logStr, dt, false)); } else { return(new Tuple <bool, string>(true, logStr)); } }
//取得項目順序最大值+1 private int GetItem_Order(string vAccess_Type) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { var MaxItem_Order = db.DEP_CHK_ITEM.AsNoTracking() .Where(x => x.ACCESS_TYPE == vAccess_Type) .Max(x => x.ITEM_ORDER); return((int)(MaxItem_Order + 1)); } }
/// <summary> /// 刪除申請 /// </summary> /// <param name="db">Entity</param> /// <param name="aply_No">作廢單號</param> /// <param name="access_Type">取出或存入</param> /// <param name="logStr">log 字串</param> /// <param name="dt">更新時間</param> /// <returns></returns> public Tuple <bool, string> CancelApply(TreasuryDBEntities db, string aply_No, string access_Type, string logStr, DateTime dt) { if (access_Type == Ref.AccessProjectTradeType.G.ToString()) //取出狀態資料要復原 { return(Recover(db, aply_No, logStr, dt, true)); } else { db.BLANK_NOTE_APLY.RemoveRange(db.BLANK_NOTE_APLY.Where(x => x.APLY_NO == aply_No)); return(new Tuple <bool, string>(true, logStr)); } }
/// <summary> /// 取消申請 /// </summary> /// <param name="AplyNo"></param> /// <param name="searchModel"></param> /// <param name="cUserId"></param> /// <returns></returns> public MSGReturnModel <string> ResetData(string AplyNo, ItemChargeUnitSearchViewModel searchModel, string cUserId) { MSGReturnModel <string> result = new MSGReturnModel <string>(); DateTime dt = DateTime.Now; try { if (AplyNo != null) { using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _ITEM_CHARGE_UNIT_HIS = db.ITEM_CHARGE_UNIT_HIS.FirstOrDefault(x => x.APLY_NO == AplyNo); if (_ITEM_CHARGE_UNIT_HIS.APLY_UID == cUserId) { var _ITEM_CHARGE_UNIT = db.ITEM_CHARGE_UNIT.FirstOrDefault(x => x.CHARGE_UNIT_ID == _ITEM_CHARGE_UNIT_HIS.CHARGE_UNIT_ID); switch (_ITEM_CHARGE_UNIT_HIS.EXEC_ACTION) { case "A": _ITEM_CHARGE_UNIT_HIS.APPR_STATUS = "4"; db.ITEM_CHARGE_UNIT.Remove(_ITEM_CHARGE_UNIT); break; case "U": _ITEM_CHARGE_UNIT_HIS.APPR_STATUS = "4"; _ITEM_CHARGE_UNIT.DATA_STATUS = "1"; _ITEM_CHARGE_UNIT.LAST_UPDATE_DT = dt; _ITEM_CHARGE_UNIT.LAST_UPDATE_UID = cUserId; _ITEM_CHARGE_UNIT.FREEZE_DT = null; _ITEM_CHARGE_UNIT.FREEZE_UID = null; break; } } else { result.DESCRIPTION = "非申請者無法取消申請"; } } } else { result.DESCRIPTION = Ref.MessageType.not_Find_Audit_Data.GetDescription(); } } catch (Exception ex) { result.DESCRIPTION = ex.exceptionMessage(); } return(result); }
/// <summary> /// 查詢畫面資料 /// </summary> /// <param name="vAplyUnit">申請單位</param> /// <param name="aplyNo">取出單號</param> /// <returns></returns> public List <CAViewModel> GetDbDataByUnit(string vAplyUnit = null, string aplyNo = null) { var result = new List <CAViewModel>(); using (TreasuryDBEntities db = new TreasuryDBEntities()) { var dept = intra.getDept(vAplyUnit); //抓取單位 if (!vAplyUnit.IsNullOrWhiteSpace()) { result = db.ITEM_CA.AsNoTracking() .Where(x => x.CHARGE_DEPT == dept.UP_DPT_CD.Trim() && x.CHARGE_SECT == dept.DPT_CD.Trim(), !dept.Dpt_type.IsNullOrWhiteSpace() && dept.Dpt_type.Trim() == "04") //單位為科 .Where(x => x.CHARGE_DEPT == dept.DPT_CD.Trim(), !dept.Dpt_type.IsNullOrWhiteSpace() && dept.Dpt_type.Trim() == "03") //單位為部 .Where(x => x.INVENTORY_STATUS == "1") //庫存 .AsEnumerable() .Select(x => new CAViewModel() { vItemId = x.ITEM_ID, vStatus = Ref.AccessInventoryType._1.GetDescription(), vCA_Desc = x.CA_DESC, vCA_Use = x.CA_USE, vBank = x.BANK, vCA_Number = x.CA_NUMBER, vMemo = x.MEMO, vtakeoutFlag = false, vLast_Update_Time = x.LAST_UPDATE_DT }).ToList(); } if (!aplyNo.IsNullOrWhiteSpace()) { var itemIds = db.OTHER_ITEM_APLY.AsNoTracking() .Where(x => x.APLY_NO == aplyNo).Select(x => x.ITEM_ID).ToList(); result.AddRange(db.ITEM_CA.AsNoTracking().Where( x => itemIds.Contains(x.ITEM_ID)).AsEnumerable() .Select(x => new CAViewModel() { vItemId = x.ITEM_ID, vStatus = Ref.AccessInventoryType._4.GetDescription(), vCA_Desc = x.CA_DESC, vCA_Use = x.CA_USE, vBank = x.BANK, vCA_Number = x.CA_NUMBER, vMemo = x.MEMO, vtakeoutFlag = true, vLast_Update_Time = x.LAST_UPDATE_DT })); } } return(result); }
/// <summary> /// 檢查開庫紀錄檔是否有狀態不為E01的單號 /// </summary> /// <returns></returns> public List <string> CheckRegisterId() { List <string> result = new List <string>(); string status = Ref.AccessProjectFormStatus.E01.ToString(); //已完成出入庫,通知申請人員 using (TreasuryDBEntities db = new TreasuryDBEntities()) { var _TREA_OPEN_REC = db.TREA_OPEN_REC.AsNoTracking(); result = _TREA_OPEN_REC .Where(x => x.REGI_STATUS != status && x.APPR_STATUS != "4") .Select(x => x.TREA_REGISTER_ID).ToList(); } return(result); }
public Tuple <List <SelectOption>, List <SelectOption>, List <SelectOption> > GetFirstTimeData() { List <SelectOption> IsConfirmed_List = new List <SelectOption>(); List <SelectOption> OPEN_TREA_TYPE_List = new List <SelectOption>(); List <SelectOption> Confirm_Id_List = new List <SelectOption>(); IsConfirmed_List.Add(new SelectOption() { Value = "Y", Text = "已確認" }); IsConfirmed_List.Add(new SelectOption() { Value = "N", Text = "未確認" }); try { using (TreasuryDBEntities db = new TreasuryDBEntities()) { var emps = GetEmps(); var _SYS_CODE_OPEN_TREA_TYPE = db.SYS_CODE.AsNoTracking(); var _TREA_APLY_REC = db.TREA_APLY_REC.AsNoTracking(); //開庫類型 OPEN_TREA_TYPE_List = _SYS_CODE_OPEN_TREA_TYPE.Where(x => x.CODE_TYPE == "OPEN_TREA_TYPE") .OrderBy(x => x.ISORTBY) .Select(x => new SelectOption() { Value = x.CODE, Text = x.CODE_VALUE }).ToList(); //確認人員 Confirm_Id_List.AddRange(_TREA_APLY_REC .Where(x => x.CONFIRM_UID != null) .AsEnumerable() .Select(x => new SelectOption() { Value = x.CONFIRM_UID, Text = string.Format("{0}-{1}", x.CONFIRM_UID, emps.FirstOrDefault(y => y.USR_ID == x.CONFIRM_UID)?.EMP_NAME?.Trim()) })); Confirm_Id_List = Confirm_Id_List.Distinct(new SelectOption_Comparer()).OrderBy(x => x.Value).ToList(); } } catch (Exception ex) { var message = ex.exceptionMessage(); throw ex; } return(new Tuple <List <SelectOption>, List <SelectOption>, List <SelectOption> >(IsConfirmed_List, OPEN_TREA_TYPE_List, Confirm_Id_List)); }