Exemple #1
0
        /// <summary>
        /// 金庫進出管理作業-覆核
        /// </summary>
        /// <param name="db">Entities</param>
        /// <param name="aplyNos">覆核的申請單號</param>
        /// <param name="logStr">log</param>
        /// <param name="dt">執行時間</param>
        /// <param name="userId">覆核人ID</param>
        /// <returns></returns>
        public Tuple <bool, string> TinApproved(TreasuryDBEntities db, List <string> aplyNos, string logStr, DateTime dt, string userId)
        {
            SysSeqDao sysSeqDao = new SysSeqDao();

            foreach (var aplyNo in aplyNos)
            {
                var _DepChkItemHisList = db.DEP_CHK_ITEM_HIS.AsNoTracking().Where(x => x.APLY_NO == aplyNo).ToList();
                if (_DepChkItemHisList.Any())
                {
                    foreach (var DepChkItemHis in _DepChkItemHisList)
                    {
                        //var _Isortby = 0;
                        var _Item_Order = 0;
                        //定存檢核表項目設定檔
                        var _DepChkItem = db.DEP_CHK_ITEM.FirstOrDefault(x => x.ACCESS_TYPE == DepChkItemHis.ACCESS_TYPE && x.ISORTBY == DepChkItemHis.ISORTBY);
                        if (_DepChkItem != null)
                        {
                            _DepChkItem.DATA_STATUS       = "1";//可異動
                            _DepChkItem.DEP_CHK_ITEM_DESC = DepChkItemHis.DEP_CHK_ITEM_DESC;
                            _DepChkItem.IS_DISABLED       = DepChkItemHis.IS_DISABLED;
                            _DepChkItem.ITEM_ORDER        = DepChkItemHis.ITEM_ORDER;
                            _DepChkItem.REPLACE           = DepChkItemHis.REPLACE;
                            _DepChkItem.APPR_UID          = userId;
                            _DepChkItem.APPR_DT           = dt;

                            logStr += _DepChkItem.modelToString(logStr);
                        }
                        else
                        {
                            //判斷交易別
                            if (DepChkItemHis.ACCESS_TYPE == "P")
                            {
                                //_Isortby = sysSeqDao.qrySeqNo("DCI_P", string.Empty);
                                _Item_Order = GetItem_Order("P");
                            }
                            else if (DepChkItemHis.ACCESS_TYPE == "G")
                            {
                                //_Isortby = sysSeqDao.qrySeqNo("DCI_G", string.Empty);
                                _Item_Order = GetItem_Order("G");
                            }
                            var _DCI = new DEP_CHK_ITEM()
                            {
                                ACCESS_TYPE       = DepChkItemHis.ACCESS_TYPE,
                                ISORTBY           = DepChkItemHis.ISORTBY,
                                DEP_CHK_ITEM_DESC = DepChkItemHis.DEP_CHK_ITEM_DESC,
                                IS_DISABLED       = DepChkItemHis.IS_DISABLED,
                                ITEM_ORDER        = _Item_Order,
                                REPLACE           = DepChkItemHis.REPLACE,
                                DATA_STATUS       = "1", //可異動
                                CREATE_UID        = DepChkItemHis.APLY_UID,
                                CREATE_DT         = dt,
                                LAST_UPDATE_UID   = DepChkItemHis.APLY_UID,
                                LAST_UPDATE_DT    = dt,
                                APPR_UID          = userId,
                                APPR_DT           = dt
                            };
                            db.DEP_CHK_ITEM.Add(_DCI);
                            logStr += _DCI.modelToString();

                            db.SaveChanges();
                        }

                        //定存檢核表項目設定異動檔
                        var _DepChkItemHis = db.DEP_CHK_ITEM_HIS.FirstOrDefault(x => x.APLY_NO == DepChkItemHis.APLY_NO && x.ACCESS_TYPE == DepChkItemHis.ACCESS_TYPE && x.ISORTBY == DepChkItemHis.ISORTBY);
                        if (_DepChkItemHis != null)
                        {
                            _DepChkItemHis.APPR_STATUS = "2";//覆核完成
                            _DepChkItemHis.APPR_DATE   = dt;
                            _DepChkItemHis.APPR_UID    = userId;

                            logStr += _DepChkItemHis.modelToString(logStr);
                        }
                        else
                        {
                            return(new Tuple <bool, string>(false, logStr));
                        }
                    }
                }
                else
                {
                    return(new Tuple <bool, string>(false, logStr));
                }
            }
            return(new Tuple <bool, string>(true, logStr));
        }
Exemple #2
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);
        }