예제 #1
0
        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));
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        //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();
                }
            }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        /// <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);
        }
예제 #8
0
        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);
        }
예제 #9
0
        /// <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);
        }
예제 #10
0
        /// <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);
        }
예제 #11
0
        /// <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);
        }
예제 #12
0
        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);
        }
예제 #13
0
        /// <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();
                }
            }
예제 #14
0
        /// <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);
        }
예제 #15
0
        /// <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);
        }
예제 #16
0
        /// <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);
        }
예제 #17
0
        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
        }
예제 #18
0
        /// <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);
        }
예제 #19
0
        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;
        }
예제 #20
0
        /// <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);
        }
예제 #21
0
        /// <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);
        }
예제 #22
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);
        }
예제 #23
0
        /// <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);
        }