/// <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));
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }