Example #1
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Select(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            //DTTables dtts_in = Marshalling.StringToDTTables(muParameter.Value);
            //DTTable dtt_in = dtts_in[0];
            //DTRow dtrow_in = dtt_in.Rows[0];

            DTTables dtts_out = null;
            DTTable dtt_out = null;
            DTRow dtrow_out = null;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;

            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelect.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelect.xml";
                            break;
                    }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", muParameter.Value);

                    // 戻り値 dt
                    dt = new DataTable("rtn");

                    // 共通Daoを実行
                    cmnDao.ExecSelectFill_DT(dt);

                    // キャストの対策コードを挿入
                    dtt_out = new DTTable("ret");
                    dtt_out.Cols.Add(new DTColumn("ShipperID", DTType.Int32));
                    dtt_out.Cols.Add(new DTColumn("CompanyName", DTType.String));
                    dtt_out.Cols.Add(new DTColumn("Phone", DTType.String));
                    dtrow_out = dtt_out.Rows.AddNew();

                    // ・SQLの場合、ShipperIDのintがInt32型にマップされる。
                    // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。
                    // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。
                    if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32")
                    {
                        // Int32なのでキャスト
                        dtrow_out["ShipperID"] = (int)dt.Rows[0].ItemArray.GetValue(0);
                    }
                    else
                    {
                        // それ以外の場合、一度、文字列に変換してInt32.Parseする。
                        dtrow_out["ShipperID"] = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString());
                    }

                    dtrow_out["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1);
                    dtrow_out["Phone"] = (string)dt.Rows[0].ItemArray.GetValue(2);

                    // 戻り値をマーシャリングして設定
                    dtts_out = new DTTables();
                    dtts_out.Add(dtt_out);
                    muReturn.Value = DTTables.DTTablesToString(dtts_out);

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.PK_ShipperID = muParameter.Value;

                    // 戻り値 dt
                    dt = new DataTable("rtn");

                    // 自動生成Daoを実行
                    genDao.S2_Select(dt);

                    // キャストの対策コードを挿入
                    dtt_out = new DTTable("ret");
                    dtt_out.Cols.Add(new DTColumn("ShipperID", DTType.Int32));
                    dtt_out.Cols.Add(new DTColumn("CompanyName", DTType.String));
                    dtt_out.Cols.Add(new DTColumn("Phone", DTType.String));
                    dtrow_out = dtt_out.Rows.AddNew();

                    // ・SQLの場合、ShipperIDのintがInt32型にマップされる。
                    // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。
                    // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。
                    if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32")
                    {
                        // Int32なのでキャスト
                        dtrow_out["ShipperID"] = (int)dt.Rows[0].ItemArray.GetValue(0);
                    }
                    else
                    {
                        // それ以外の場合、一度、文字列に変換してInt32.Parseする。
                        dtrow_out["ShipperID"] = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString());
                    }

                    dtrow_out["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1);
                    dtrow_out["Phone"] = (string)dt.Rows[0].ItemArray.GetValue(2);

                    // 戻り値をマーシャリングして設定
                    dtts_out = new DTTables();
                    dtts_out.Add(dtt_out);
                    muReturn.Value = DTTables.DTTablesToString(dtts_out);

                    break;

                default: // 個別Daoを使用する。

                    // 個別Daoを実行
                    string companyName;
                    string phone;

                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Select(muParameter.ActionType, muParameter.Value,
                        out companyName, out phone);

                    // 戻り値をマーシャリングして設定
                    dtt_out = new DTTable("ret");
                    dtt_out.Cols.Add(new DTColumn("ShipperID", DTType.Int32));
                    dtt_out.Cols.Add(new DTColumn("CompanyName", DTType.String));
                    dtt_out.Cols.Add(new DTColumn("Phone", DTType.String));
                    dtrow_out = dtt_out.Rows.AddNew();

                    dtrow_out["ShipperID"] = int.Parse(muParameter.Value);
                    dtrow_out["CompanyName"] = companyName;
                    dtrow_out["Phone"] = phone;
                    
                    dtts_out = new DTTables();
                    dtts_out.Add(dtt_out);
                    muReturn.Value = DTTables.DTTablesToString(dtts_out);

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #2
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_SelectAll_DSQL(TestParameterValue testParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();
            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------

            switch ((testParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((testParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelectOrder.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelectOrder.xml";
                            break;
                    }

                    // ユーザ定義パラメタに対して、動的に値を設定する。
                    string orderColumn = "";
                    string orderSequence = "";

                    if (testParameter.OrderColumn == "c1")
                    {
                        orderColumn = "ShipperID";
                    }
                    else if (testParameter.OrderColumn == "c2")
                    {
                        orderColumn = "CompanyName";
                    }
                    else if (testParameter.OrderColumn == "c3")
                    {
                        orderColumn = "Phone";
                    }
                    else { }

                    if (testParameter.OrderSequence == "A")
                    {
                        orderSequence = "ASC";
                    }
                    else if (testParameter.OrderSequence == "D")
                    {
                        orderSequence = "DESC";
                    }
                    else { }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", "test");

                    // ユーザ入力は指定しない。
                    // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、
                    //    必要であれば、前後の空白を明示的に指定する必要がある。
                    cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " ");
                    cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " ");

                    // 戻り値 dt
                    DataTable dt = new DataTable();

                    // 共通Daoを実行
                    cmnDao.ExecSelectFill_DT(dt);

                    // 自動生成Daoを実行
                    testReturn.Obj = dt;

                    break;

                //case "generate": // 自動生成Daoを使用する。
                //    // 当該SQLなし
                //    break;

                default: // 個別Daoを使用する。
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.SelectAll_DSQL(testParameter, testReturn);
                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(testParameter);
        }
Example #3
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_Insert(TestParameterValue testParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();
            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------

            switch ((testParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    cmnDao.SQLFileName = "ShipperInsert.sql";

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P2", testParameter.CompanyName);
                    cmnDao.SetParameter("P3", testParameter.Phone);

                    // 共通Daoを実行
                    // 戻り値を設定
                    testReturn.Obj = cmnDao.ExecInsUpDel_NonQuery();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.CompanyName = testParameter.CompanyName;
                    genDao.Phone = testParameter.Phone;

                    // 自動生成Daoを実行
                    // 戻り値を設定
                    testReturn.Obj = genDao.D1_Insert();

                    break;

                default: // 個別Daoを使用する。
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Insert(testParameter, testReturn);
                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(testParameter);
        }
Example #4
0
        /// <summary>Where句生成&パラメタ指定(or)</summary>
        /// <param name="whereSqlTemplate">Where句SQLテンプレート</param>
        /// <param name="whereSQL">生成中のWhere句SQL</param>
        /// <param name="cmnDao">共通Dao</param>
        /// <param name="parameterName">パラメタ名</param>
        /// <param name="parameterValue">パラメタ値</param>
        /// <param name="parameterNumber">パラメタ番号</param>
        /// <param name="isLike">Likeか?</param>
        /// <returns>生成したWhere句SQL</returns>
        private string GenWhereOrSetParameter(
            string whereSqlTemplate, string whereSQL,
            CmnDao cmnDao, string parameterName, object parameterValue, int parameterNumber, bool isLike)
        {
            // Where句生成
            if (string.IsNullOrEmpty(whereSQL))
            {
                // 先頭は何もしない。
            }
            else
            {
                // 以降はOR
                whereSQL += " OR ";
            }

            string temp = "";
            temp = whereSqlTemplate.Replace("_ColName_", parameterName);
            
            // パラメタ指定
            if (isLike)
            {
                // Like
                whereSQL += temp.Replace("_ParamName_", this.LikeParamHeader + parameterName + parameterNumber.ToString() + this.LikeParamFooter);
                cmnDao.SetParameter(this.LikeParamHeader + parameterName + parameterNumber.ToString() + this.LikeParamFooter, parameterValue);
            }
            else
            {
                // Equal
                whereSQL += temp.Replace("_ParamName_", parameterName + parameterNumber.ToString());
                cmnDao.SetParameter(parameterName + parameterNumber.ToString(), parameterValue);
            }

            return whereSQL;
        }
Example #5
0
        /// <summary>1件削除処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_DeleteRecord(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();
            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の指定

            // AndEqualSearchConditions(主キー
            foreach (string k in parameterValue.AndEqualSearchConditions.Keys)
            {
                // nullチェック(null相当を要検討
                if (parameterValue.AndEqualSearchConditions[k] == null)
                {
                    // == null
                }
                else
                {
                    // != null

                    // 文字列の場合の扱い
                    if (parameterValue.AndEqualSearchConditions[k] is string)
                    {
                        if (!string.IsNullOrEmpty((string)parameterValue.AndEqualSearchConditions[k]))
                        {
                            // パラメタ指定
                            cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]);
                        }
                    }
                    else
                    {
                        // パラメタ指定
                        cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]);
                    }
                }
            }

            // SQLを設定して
            cmnDao.SQLFileName =
                this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                + "_" + this.MethodNameHeaderS + this.MethodLabel_Del + this.MethodNameFooterS + ".xml";

            // パラメタは指定済み

            // 削除処理を実行
            returnValue.Obj = cmnDao.ExecInsUpDel_NonQuery();

            // ↑業務処理-----------------------------------------------------
        }
Example #6
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Insert(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;
            
            // ↓業務処理-----------------------------------------------------
            string companyName = ((string[])(muParameter.Bean))[0];
            string phone = ((string[])(muParameter.Bean))[1];

            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    cmnDao.SQLFileName = "ShipperInsert.sql";

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P2", companyName);
                    cmnDao.SetParameter("P3", phone);

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Bean = cmnDao.ExecInsUpDel_NonQuery().ToString();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.CompanyName = companyName;
                    genDao.Phone = phone;

                    // 自動生成Daoを実行
                    // 戻り値を設定
                    muReturn.Bean = genDao.D1_Insert().ToString();

                    break;

                default: // 個別Daoを使用する。
                    string ret = "";
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Insert(muParameter.ActionType, companyName, phone, out ret);
                    muReturn.Bean = ret;

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #7
0
        /// <summary>1件追加処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_InsertRecord(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();
            this.ReturnValue = returnValue;

            // 関連チェック処理
            this.UOC_RelatedCheck(parameterValue);

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の指定

            // 追加値
            // InsertUpdateValues
            foreach (string k in parameterValue.InsertUpdateValues.Keys)
            {
                // nullチェック(null相当を要検討
                if (parameterValue.InsertUpdateValues[k] == null)
                {
                    // == null
                }
                else
                {
                    // != null

                    // 文字列の場合の扱い
                    if (parameterValue.InsertUpdateValues[k] is string)
                    {
                        if (!string.IsNullOrEmpty((string)parameterValue.InsertUpdateValues[k]))
                        {
                            // パラメタ指定
                            cmnDao.SetParameter(k, parameterValue.InsertUpdateValues[k]);
                        }
                    }
                    else
                    {
                        // パラメタ指定
                        cmnDao.SetParameter(k, parameterValue.InsertUpdateValues[k]);
                    }
                }
            }

            // SQLを設定して
            cmnDao.SQLFileName =
                this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                + "_" + this.MethodNameHeaderD + this.MethodLabel_Ins + this.MethodNameFooterD + ".xml";

            // パラメタは指定済み

            // 追加処理を実行
            returnValue.Obj = cmnDao.ExecInsUpDel_NonQuery();

            // ↑業務処理-----------------------------------------------------
        }
Example #8
0
        /// <summary>ワークフロー依頼を取得します。</summary>
        /// <param name="subSystemId">サブシステムID(任意)</param>
        /// <param name="workflowName">ワークフロー名(任意)</param>
        /// <param name="workflowControlNo">ワークフロー管理番号(任意)</param>
        /// <param name="userId">ワークフローの受信ユーザ(必須)</param>
        /// <param name="userPositionTitlesId">
        /// ユーザの職位ID(userIdが御中IDの場合は必須)
        /// </param>
        /// <returns>ワークフロー依頼の一覧</returns>
        /// <remarks>
        /// fromUsersId
        ///  御中IDでの呼び出しと、ユーザIDでの呼び出しは2回に分ける。
        /// </remarks>
        public DataTable GetWfRequest(
            string subSystemId, string workflowName, string workflowControlNo,
            decimal? userId, int? userPositionTitlesId)
        {
            // チェック処理を実装
            // なし。

            // --------------------------------------------------
            // ワークフローの依頼を取得
            // --------------------------------------------------
            // T_CurrentWorkflowのSELECT
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            dao.SQLFileName = "GetWfRequest.xml";

            // SubSystemId
            if (!string.IsNullOrEmpty(subSystemId))
            {
                dao.SetParameter("SubSystemId", subSystemId);
            }

            // WkflowName
            if (!string.IsNullOrEmpty(workflowName))
            {
                dao.SetParameter("WkflowName", workflowName);
            }

            // WorkflowControlNo
            if (!string.IsNullOrEmpty(workflowControlNo))
            {
                dao.SetParameter("WorkflowControlNo", workflowControlNo);
            }

            // ユーザID(必須)
            if (userId.HasValue)
            {
                dao.SetParameter("ToUserId", userId);
            }

            // ユーザの職位ID
            if (userPositionTitlesId.HasValue)
            {
                dao.SetParameter("ToUserPositionTitlesId", userPositionTitlesId);
            }

            // ワークフロー依頼を取得
            DataTable dt = new DataTable();
            dao.ExecSelectFill_DT(dt);

            // リターン
            return dt;
        }
Example #9
0
        /// <summary>ワークフロー依頼を受付ます。</summary>
        /// <param name="workflowRequest">選択したワークフロー依頼</param>
        /// <param name="acceptanceUserId">受付ユーザID</param>
        public void AcceptWfRequest(DataRow workflowRequest, decimal acceptanceUserId)
        {
            #region チェック処理を実装

            if (workflowRequest == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowRequest")));
            }
            else if (!workflowRequest.Table.Columns.Contains("WorkflowControlNo"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "WorkflowControlNo", "workflowRequest")));
            }

            #endregion

            // ユーザIDからユーザ情報を取得
            string acceptanceUserInfo = Workflow.GetUserInfo(acceptanceUserId);

            // --------------------------------------------------
            // 受付(T_CurrentWorkflowのacceptance項目を更新)
            // --------------------------------------------------
            // T_CurrentWorkflowのUPDATE
            // --------------------------------------------------
            DaoT_CurrentWorkflow daoT_CurrentWorkflow = new DaoT_CurrentWorkflow(this.Dam);

            // PK
            daoT_CurrentWorkflow.PK_WorkflowControlNo = workflowRequest["WorkflowControlNo"];

            // Acceptance
            daoT_CurrentWorkflow.Set_AcceptanceDate_forUPD = DateTime.Now;
            daoT_CurrentWorkflow.Set_AcceptanceUserId_forUPD = acceptanceUserId;
            daoT_CurrentWorkflow.Set_AcceptanceUserInfo_forUPD = acceptanceUserInfo;

            // 受付(更新)
            daoT_CurrentWorkflow.D3_Update();

            // --------------------------------------------------
            // 履歴に移動(差戻しに対応するため)
            // --------------------------------------------------
            // T_CurrentWorkflow→T_WorkflowHistory
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);
            dao.SQLFileName = "RequestApproval_Move.sql";
            dao.SetParameter("WorkflowControlNo", workflowRequest["WorkflowControlNo"]);
            dao.ExecInsUpDel_NonQuery();
        }
Example #10
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Select(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            muReturn.Bean = new Informations("");
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            string shipperID = ((Informations)muParameter.Bean).Str;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;
            Dictionary<string, string> dic = null;

            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelect.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelect.xml";
                            break;
                    }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", shipperID);

                    // 戻り値 dt
                    dt = new DataTable("rtn");

                    // 共通Daoを実行
                    cmnDao.ExecSelectFill_DT(dt);

                    // 戻り値を設定
                    dic = new Dictionary<string, string>();
                    dic["ShipperID"] = dt.Rows[0].ItemArray.GetValue(0).ToString();
                    dic["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1);
                    dic["Phone"] = (string)dt.Rows[0].ItemArray.GetValue(2);
                    muReturn.Bean = new Informations(dic);

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.PK_ShipperID = shipperID;

                    // 戻り値 dt
                    dt = new DataTable("rtn");

                    // 自動生成Daoを実行
                    genDao.S2_Select(dt);

                    // 戻り値を設定
                    dic = new Dictionary<string, string>();
                    dic["ShipperID"] = dt.Rows[0].ItemArray.GetValue(0).ToString();
                    dic["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1);
                    dic["Phone"] = (string)dt.Rows[0].ItemArray.GetValue(2);
                    muReturn.Bean = new Informations(dic);

                    break;

                default: // 個別Daoを使用する。
                    string companyName;
                    string phone;

                    // 個別Daoを実行
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Select(muParameter.ActionType, shipperID,
                        out companyName, out phone);

                    // 戻り値を設定
                    dic = new Dictionary<string, string>();
                    dic["CompanyName"] = companyName;
                    dic["Phone"] = phone;
                    muReturn.Bean = new Informations(dic);

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #11
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Update(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            muReturn.Bean = new Informations("");
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            Dictionary<string, string> dic = ((Informations)muParameter.Bean).Dictionary;

            // ↓業務処理-----------------------------------------------------
            
            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperUpdate.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperUpdate.xml";
                            break;
                    }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", dic["ShipperID"]);
                    cmnDao.SetParameter("P2", dic["CompanyName"]);
                    cmnDao.SetParameter("P3", dic["Phone"]);

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Bean = new Informations(cmnDao.ExecInsUpDel_NonQuery().ToString());

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.PK_ShipperID = dic["ShipperID"];
                    genDao.Set_CompanyName_forUPD = dic["CompanyName"];
                    genDao.Set_Phone_forUPD = dic["Phone"];

                    // 自動生成Daoを実行
                    // 戻り値を設定
                    muReturn.Bean = new Informations(genDao.S3_Update().ToString());

                    break;

                default: // 個別Daoを使用する。

                    // 個別Daoを実行
                    string ret = "";
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Update(muParameter.ActionType,
                        dic["ShipperID"],
                        dic["CompanyName"],
                        dic["Phone"],
                        out ret);

                    // 戻り値を設定
                    muReturn.Bean = new Informations(ret);

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #12
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DSQL(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            muReturn.Bean = new Informations("");
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            Dictionary<string, string> dic = ((Informations)muParameter.Bean).Dictionary;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;

            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelectOrder.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelectOrder.xml";
                            break;
                    }

                    // ユーザ定義パラメタに対して、動的に値を設定する。
                    string orderColumn = "";
                    string orderSequence = "";

                    if (dic["OrderColumn"].ToString() == "c1")
                    {
                        orderColumn = "ShipperID";
                    }
                    else if (dic["OrderColumn"].ToString() == "c2")
                    {
                        orderColumn = "CompanyName";
                    }
                    else if (dic["OrderColumn"].ToString() == "c3")
                    {
                        orderColumn = "Phone";
                    }
                    else { }

                    if (dic["OrderSequence"].ToString() == "A")
                    {
                        orderSequence = "ASC";
                    }
                    else if (dic["OrderSequence"].ToString() == "D")
                    {
                        orderSequence = "DESC";
                    }
                    else { }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", "test");

                    // ユーザ入力は指定しない。
                    // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、
                    //    必要であれば、前後の空白を明示的に指定する必要がある。
                    cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " ");
                    cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " ");

                    // 戻り値 dt
                    dt = new DataTable("rtn");

                    // 共通Daoを実行
                    cmnDao.ExecSelectFill_DT(dt);

                    // 戻り値をマーシャリングして設定
                    muReturn.Bean = new Informations(DataContractHelper.ToList(dt));

                    break;

                //case "generate": // 自動生成Daoを使用する。
                //    // 当該SQLなし
                //    break;

                default: // 個別Daoを使用する。

                    // 個別Daoを実行
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.SelectAll_DSQL(
                        muParameter.ActionType,
                        dic["OrderColumn"].ToString(),
                        dic["OrderSequence"].ToString(), out dt);

                    // 戻り値をマーシャリングして設定
                    muReturn.Bean = new Informations(DataContractHelper.ToList(dt));

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #13
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Delete(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            /// 引数をアンマーシャル
            DTTables dtts_in = DTTables.StringToDTTables(muParameter.Value);
            //DTTable dtt_in = dtts_in[0];
            //DTRow dtrow_in = dtt_in.Rows[0];

            //DTTables dtts_out = null;
            //DTTable dtt_out = null;
            //DTRow dtrow_out = null;

            // ↓業務処理-----------------------------------------------------
            
            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperDelete.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperDelete.xml";
                            break;
                    }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", muParameter.Value);

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Value = cmnDao.ExecInsUpDel_NonQuery().ToString();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.PK_ShipperID = muParameter.Value;

                    // 自動生成Daoを実行
                    // 戻り値を設定
                    muReturn.Value = genDao.S4_Delete().ToString();

                    break;

                default: // 個別Daoを使用する。

                    // 個別Daoを実行
                    // 戻り値を設定
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Delete(muParameter.ActionType, muParameter.Value, out muReturn.Value);

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #14
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Insert(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            // 引数をアンマーシャル
            DTTables dtts_in = DTTables.StringToDTTables(muParameter.Value);
            DTTable dtt_in = dtts_in[0];
            DTRow dtrow_in = dtt_in.Rows[0];

            //DTTables dtts_out = null;
            //DTTable dtt_out = null;
            //DTRow dtrow_out = null;

            // ↓業務処理-----------------------------------------------------
            
            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    cmnDao.SQLFileName = "ShipperInsert.sql";

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P2", dtrow_in["CompanyName"]);
                    cmnDao.SetParameter("P3", dtrow_in["Phone"]);

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Value = cmnDao.ExecInsUpDel_NonQuery().ToString();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.CompanyName = dtrow_in["CompanyName"];
                    genDao.Phone = dtrow_in["Phone"];

                    // 自動生成Daoを実行
                    // 戻り値を設定
                    muReturn.Value = genDao.D1_Insert().ToString();

                    break;

                default: // 個別Daoを使用する。

                    // 個別Daoを実行
                    // 戻り値を設定
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Insert(muParameter.ActionType,
                        (string)dtrow_in["CompanyName"],
                        (string)dtrow_in["Phone"],
                        out muReturn.Value);

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #15
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_SelectAll_DSQL(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;
            Shipper[] shippers = null;

            string orderColumn = ((string[])(muParameter.Bean))[0];
            string orderSequence = ((string[])(muParameter.Bean))[1];

            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelectOrder.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelectOrder.xml";
                            break;
                    }

                    // ユーザ定義パラメタに対して、動的に値を設定する。
                    if (orderColumn == "c1")
                    {
                        orderColumn = "ShipperID";
                    }
                    else if (orderColumn == "c2")
                    {
                        orderColumn = "CompanyName";
                    }
                    else if (orderColumn == "c3")
                    {
                        orderColumn = "Phone";
                    }
                    else { }

                    if (orderSequence == "A")
                    {
                        orderSequence = "ASC";
                    }
                    else if (orderSequence == "D")
                    {
                        orderSequence = "DESC";
                    }
                    else { }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", "test");

                    // ユーザ入力は指定しない。
                    // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、
                    //    必要であれば、前後の空白を明示的に指定する必要がある。
                    cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " ");
                    cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " ");

                    // 戻り値 dt
                    dt = new DataTable("rtn");

                    // 共通Daoを実行
                    cmnDao.ExecSelectFill_DT(dt);

                    // 戻り値を設定
                    shippers = new Shipper[dt.Rows.Count];
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        Shipper shipper = new Shipper();
                        shipper.ShipperID = (int)dt.Rows[i]["ShipperID"];
                        shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                        shipper.Phone = (string)dt.Rows[i]["Phone"];
                        shippers[i] = shipper;
                    }

                    muReturn.Bean = shippers;

                    break;

                //case "generate": // 自動生成Daoを使用する。
                //    // 当該SQLなし
                //    break;

                default: // 個別Daoを使用する。
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.SelectAll_DSQL(muParameter.ActionType,
                        orderColumn, orderSequence, out dt);

                    // 戻り値を設定
                    shippers = new Shipper[dt.Rows.Count];
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        Shipper shipper = new Shipper();
                        shipper.ShipperID = (int)dt.Rows[i]["ShipperID"];
                        shipper.CompanyName = (string)dt.Rows[i]["CompanyName"];
                        shipper.Phone = (string)dt.Rows[i]["Phone"];
                        shippers[i] = shipper;
                    }

                    muReturn.Bean = shippers;

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #16
0
        /// <summary>処理中ワークフロー依頼を取得します。</summary>
        /// <param name="subSystemId">サブシステムID(任意)</param>
        /// <param name="workflowName">ワークフロー名(任意)</param>
        /// <param name="workflowControlNo">ワークフロー管理番号(任意)</param>
        /// <param name="userId">ワークフローの受信ユーザ(御中指定不可能)</param>
        /// <returns>処理中のワークフロー一覧</returns>
        public DataTable GetProcessingWfRequest(
            string subSystemId, string workflowName, string workflowControlNo, decimal userId)
        {
            // チェック処理を実装
            // なし。

            // --------------------------------------------------
            // 処理中のワークフローを取得
            // --------------------------------------------------
            // T_CurrentWorkflowのSELECT
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);
            dao.SQLFileName = "GetProcessingWfRequest.xml";

            // SubSystemId
            if (!string.IsNullOrEmpty(subSystemId))
            {
                dao.SetParameter("SubSystemId", subSystemId);
            }

            // WkflowName
            if (!string.IsNullOrEmpty(workflowName))
            {
                dao.SetParameter("WorkflowName", workflowName);
            }

            // WorkflowControlNo
            if (!string.IsNullOrEmpty(workflowControlNo))
            {
                dao.SetParameter("WorkflowControlNo", workflowControlNo);
            }

            // AcceptanceUserId
            dao.SetParameter("AcceptanceUserId", userId);

            // 処理中ワークフロー依頼を取得
            DataTable dt = new DataTable();
            dao.ExecSelectFill_DT(dt);

            // リターン
            return dt;
        }
Example #17
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Select(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;
            Shipper shipper = null;

            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelect.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelect.xml";
                            break;
                    }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", muParameter.Bean.ToString());

                    // 戻り値 dt
                    dt = new DataTable("rtn");

                    // 共通Daoを実行
                    cmnDao.ExecSelectFill_DT(dt);

                    // 戻り値を設定
                    shipper = new Shipper();
                    shipper.ShipperID = (int)muParameter.Bean;
                    shipper.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1);
                    shipper.Phone = (string)dt.Rows[0].ItemArray.GetValue(2);
                    muReturn.Bean = shipper;

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.PK_ShipperID = muParameter.Bean.ToString();

                    // 戻り値 dt
                    dt = new DataTable("rtn");

                    // 自動生成Daoを実行
                    genDao.S2_Select(dt);

                    // 戻り値を設定
                    shipper = new Shipper();
                    shipper.ShipperID = (int)muParameter.Bean;
                    shipper.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1);
                    shipper.Phone = (string)dt.Rows[0].ItemArray.GetValue(2);
                    muReturn.Bean = shipper;

                    break;

                default: // 個別Daoを使用する。
                    string companyName;
                    string phone;

                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Select(muParameter.ActionType,
                        muParameter.Bean.ToString(),
                        out companyName, out phone);

                    // 戻り値を設定
                    shipper = new Shipper();
                    shipper.ShipperID = (int)muParameter.Bean;
                    shipper.CompanyName = companyName;
                    shipper.Phone = phone;
                    muReturn.Bean = shipper;

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #18
0
        /// <summary>次のワークフロー依頼を取得します。</summary>
        /// <param name="processingWfReq">選択した処理中ワークフロー依頼</param>
        /// <param name="fromUserId">FromユーザID(必須)</param>
        /// <returns>次のワークフロー</returns>
        /// <remarks>
        /// fromUsersId
        ///  御中IDでの呼び出しと、ユーザIDでの呼び出しは2回に分ける。
        /// </remarks>
        public DataTable GetNextWfRequest(DataRow processingWfReq, decimal fromUserId)
        {
            #region チェック処理を実装

            if (processingWfReq == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "processingWfReq")));
            }
            else if (!processingWfReq.Table.Columns.Contains("SubSystemId"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "processingWfReq")));
            }

            #endregion

            // --------------------------------------------------
            // 次のワークフロー依頼を取得
            // --------------------------------------------------
            // M_WorkflowのSELECT
            // --------------------------------------------------
            DataTable dt = new DataTable();
            DaoM_Workflow daoM_Workflow = new DaoM_Workflow(this.Dam);

            // 検索条件
            daoM_Workflow.SubSystemId = processingWfReq["SubSystemId"];
            daoM_Workflow.WorkflowName = processingWfReq["WorkflowName"];
            daoM_Workflow.WorkflowNo = processingWfReq["NextWorkflowNo"];
            daoM_Workflow.FromUserId = fromUserId;

            // ワークフローの取得
            daoM_Workflow.D2_Select(dt);

            // --------------------------------------------------
            // TurnBack, Replyワークフローのフィルタ
            // --------------------------------------------------
            // T_WorkflowHistoryのSELECT
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            // 次のワークフロー依頼 = TurnBackの場合のフィルタ処理
            DataRow[] drs = dt.Select("ActionType = 'TurnBack'");

            if (drs.Length > 1)
            {
                // GetTurnBackWorkflow
                // 連続TurnBack場合の対応
                dao.SQLFileName = "GetTurnBackWorkflow.sql";
                dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]);
                dao.SetParameter("NextWorkflowNo", processingWfReq["NextWorkflowNo"]);
                object temp = dao.ExecSelectScalar();

                // GetTurnBackWorkflow2
                // Start直後にTurnBack場合の対応
                if (temp == null)
                {
                    dao.SQLFileName = "GetTurnBackWorkflow2.sql";
                    dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]);
                    dao.SetParameter("NextWorkflowNo", processingWfReq["NextWorkflowNo"]);
                    temp = dao.ExecSelectScalar();
                }

                string wfPositionId = (string)temp;

                foreach (DataRow dr in drs)
                {
                    if ((string)dr["NextWfPositionId"] == wfPositionId)
                    {
                        // 対象
                    }
                    else
                    {
                        // 対象外(削除)
                        dr.Delete();
                    }
                }

                // 削除処理の受け入れ
                dt.AcceptChanges();
            }

            // 次のワークフロー依頼 = Replyの場合のフィルタ処理
            drs = dt.Select("ActionType = 'Reply'");

            if (drs.Length > 1)
            {
                dao.SQLFileName = "GetReplyWorkflow.xml";
                dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]);

                #region CorrespondOfReplyWorkflow

                ArrayList alCorrespondOfReplyWorkflow = new ArrayList();

                foreach (DataRow dr in drs)
                {
                    alCorrespondOfReplyWorkflow.Add(dr["CorrespondOfReplyWorkflow"]);
                }

                dao.SetParameter("CorrespondOfReplyWorkflow", alCorrespondOfReplyWorkflow);

                #endregion

                int workflowNo = (int)dao.ExecSelectScalar();

                foreach (DataRow dr in drs)
                {
                    if ((int)dr["CorrespondOfReplyWorkflow"] == workflowNo)
                    {
                        // これ
                    }
                    else
                    {
                        // 削除
                        dr.Delete();
                    }
                }

                // 削除処理の受け入れ
                dt.AcceptChanges();
            }

            // リターン
            return dt;
        }
Example #19
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Delete(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();
            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            
            switch ((muParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((muParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperDelete.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperDelete.xml";
                            break;
                    }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", muParameter.Bean);

                    // 共通Daoを実行
                    // 戻り値を設定
                    muReturn.Bean = cmnDao.ExecInsUpDel_NonQuery().ToString();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.PK_ShipperID = muParameter.Bean;

                    // 自動生成Daoを実行
                    // 戻り値を設定
                    muReturn.Bean = genDao.S4_Delete().ToString();

                    break;

                default: // 個別Daoを使用する。
                    string ret = "";
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Delete(muParameter.ActionType, muParameter.Bean.ToString(), out ret);
                    muReturn.Bean = ret;

                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Example #20
0
        /// <summary>返信のToユーザIDを履歴から取得します。</summary>
        /// <param name="replyBackWorkflow">返信ののワークフロー</param>
        /// <param name="workflowControlNo">ワークフロー管理番号(必須)</param>
        /// <returns>ToユーザID</returns>
        public decimal GetReplyToUser(DataRow replyBackWorkflow, string workflowControlNo)
        {
            #region チェック処理を実装

            if (replyBackWorkflow == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "replyBackWorkflow")));
            }
            else if (!replyBackWorkflow.Table.Columns.Contains("SubSystemId"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "replyBackWorkflow")));
            }
            else if (string.IsNullOrEmpty(workflowControlNo))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowControlNo")));
            }

            #endregion

            // --------------------------------------------------
            // 差戻しのToユーザIDを履歴から取得
            // --------------------------------------------------
            // T_WorkflowHistoryのSELECT
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);
            dao.SQLFileName = "GetReplyToUser.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            dao.SetParameter("CorrespondOfReplyWorkflow", replyBackWorkflow["CorrespondOfReplyWorkflow"]);

            return (decimal)dao.ExecSelectScalar();
        }
Example #21
0
        /// <summary>検索条件の設定</summary>
        /// <param name="parameterValue">引数クラス</param>
        /// <param name="cmnDao">共通Dao</param>
        /// <returns>Where句</returns>
        private string SetSearchConditions(
            _3TierParameterValue parameterValue, CmnDao cmnDao)
        {
            //  検索条件
            string whereSQL = "";

            #region AND

            // AndEqualSearchConditions
            // nullチェック
            if (parameterValue.AndEqualSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.AndEqualSearchConditions.Keys)
                {
                    // フラグ
                    bool isSetted = false;

                    // nullチェック(null相当を要検討
                    if (parameterValue.AndEqualSearchConditions[k] == null)
                    {
                        // == null
                    }
                    else
                    {
                        // != null

                        // 文字列チェック
                        if (parameterValue.AndEqualSearchConditions[k] is string)
                        {
                            // 文字列の場合
                            if ((string)parameterValue.AndEqualSearchConditions[k] == "")
                            {
                                // 空文字列(★ 扱いを検討 → 検索条件の空文字列は検索しない扱い
                            }
                            else
                            {
                                // 空文字列でない。
                                isSetted = true;
                            }
                        }
                        else
                        {
                            // オブジェクトの場合
                            isSetted = true;
                        }
                    }

                    // パラメタを設定
                    if (isSetted)
                    {
                        whereSQL = GenWhereAndSetParameter(
                            WHERE_SQL_TEMPLATE_EQUAL, whereSQL,
                            cmnDao, k, parameterValue.AndEqualSearchConditions[k], false);

                        isSetted = false;
                    }
                }
            }

            // AndLikeSearchConditions
            // nullチェック
            if (parameterValue.AndLikeSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.AndLikeSearchConditions.Keys)
                {
                    // nullチェック(null相当を要検討
                    if (string.IsNullOrEmpty(parameterValue.AndLikeSearchConditions[k]))
                    {
                        // 空文字列
                    }
                    else
                    {
                        // 空文字列でない。

                        // パラメタを設定
                        whereSQL = GenWhereAndSetParameter(
                            WHERE_SQL_TEMPLATE_LIKE, whereSQL,
                            cmnDao, k, parameterValue.AndLikeSearchConditions[k], true);
                    }
                }
            }

            #endregion

            #region OR

            // OrEqualSearchConditions
            // nullチェック
            if (parameterValue.OrEqualSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.OrEqualSearchConditions.Keys)
                {
                    // フラグ
                    bool isSetted = false;

                    // nullチェック(null相当を要検討
                    if (parameterValue.OrEqualSearchConditions[k] == null)
                    {
                        // == null
                    }
                    else
                    {
                        // != null

                        // OR条件はループする。
                        int i = 0;
                        foreach (object o in parameterValue.OrEqualSearchConditions[k])
                        {
                            // 文字列チェック
                            if (o is string)
                            {
                                // 文字列の場合
                                if ((string)o == "")
                                {
                                    // 空文字列(★ 扱いを検討 → 検索条件の空文字列は検索しない扱い
                                }
                                else
                                {
                                    // 空文字列でない。
                                    isSetted = true;
                                }
                            }
                            else
                            {
                                // オブジェクトの場合
                                isSetted = true;
                            }

                            // パラメタを設定
                            if (isSetted)
                            {
                                whereSQL = GenWhereOrSetParameter(
                                    WHERE_SQL_TEMPLATE_EQUAL, whereSQL, cmnDao, k, o, i, false);

                                isSetted = false;
                                i++;
                            }
                        }
                    }
                }
            }

            // OrLikeSearchConditions
            // nullチェック
            if (parameterValue.OrLikeSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.OrLikeSearchConditions.Keys)
                {
                    // nullチェック(null相当を要検討
                    if (parameterValue.OrLikeSearchConditions[k] == null)
                    {
                        // == null
                    }
                    else
                    {
                        // != null

                        // OR条件はループする。
                        int i = 0;
                        foreach (string s in parameterValue.OrLikeSearchConditions[k])
                        {
                            // 文字列の場合
                            if ((string)s == "")
                            {
                                // 空文字列
                            }
                            else
                            {
                                // 空文字列でない。
                                // パラメタを設定
                                whereSQL = GenWhereOrSetParameter(
                                    WHERE_SQL_TEMPLATE_LIKE, whereSQL, cmnDao, k, s, i, true);
                                i++;
                            }
                        }
                    }
                }
            }

            #endregion

            #region その他

            // 追加の検索条件(要:半角スペース)
            whereSQL += " " + parameterValue.ElseWhereSQL;

            // ElseSearchConditions
            // nullチェック
            if (parameterValue.ElseSearchConditions == null)
            {
                // == null
            }
            else
            {
                // != null
                foreach (string k in parameterValue.ElseSearchConditions.Keys)
                {
                    // nullチェック(null相当を要検討
                    if (parameterValue.ElseSearchConditions[k] == null)
                    {
                        // == null
                    }
                    else
                    {
                        // != null
                        cmnDao.SetParameter(k, parameterValue.ElseSearchConditions[k]);
                    }
                }
            }

            #endregion

            // Where句の付与(要:Trim)
            if (!string.IsNullOrEmpty(whereSQL.Trim()))
            {
                // (要:半角スペース)
                whereSQL = "WHERE " + whereSQL;
            }

            // 先頭の論理演算子を削除
            return BaseDam.DeleteFirstLogicalOperatoronWhereClause(whereSQL);
        }
Example #22
0
        /// <summary>ワークフロー承認を依頼します。</summary>
        /// <param name="nextWorkflow">選択したワークフロー承認依頼</param>
        /// <param name="workflowControlNo">ワークフロー管理番号(必須)</param>
        /// <param name="fromUserId">FromユーザID(必須)</param>
        /// <param name="toUserId">ToユーザID(TurnBack、Replyの際に必要)</param>
        /// <param name="currentWorkflowReserveArea">T_CurrentWorkflowの予備領域(任意)</param>
        /// <param name="replyDeadline">回答希望日(任意)</param>
        /// <returns>メール・テンプレートID</returns>
        public int RequestWfApproval(
            DataRow nextWorkflow, string workflowControlNo,
            decimal fromUserId, decimal? toUserId,
            string currentWorkflowReserveArea, DateTime? replyDeadline)
        {
            #region チェック処理を実装

            if (nextWorkflow == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "nextWorkflow")));
            }
            else if (!nextWorkflow.Table.Columns.Contains("SubSystemId"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "nextWorkflow")));
            }
            else if (string.IsNullOrEmpty(workflowControlNo))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowControlNo")));
            }

            // ユーザIDからユーザ情報を取得
            string fromUserInfo = Workflow.GetUserInfo(fromUserId);

            string toUserInfo = "";

            if (toUserId.HasValue
                && (string)nextWorkflow["ActionType"] != "End") // Endの時は不要 
            {
                toUserInfo = Workflow.GetUserInfo(toUserId.Value);
            }

            #endregion

            // --------------------------------------------------
            // 現在の履歴件数を取得。
            // --------------------------------------------------
            // T_WorkflowHistoryのCount
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            dao.SQLFileName = "RequestApproval_Count.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            int recordCount = ((int)dao.ExecSelectScalar());

            // --------------------------------------------------
            // ワークフロー承認を依頼
            // --------------------------------------------------
            // T_CurrentWorkflowのUPDATE
            // --------------------------------------------------
            DaoT_CurrentWorkflow daoT_CurrentWorkflow = new DaoT_CurrentWorkflow(this.Dam);

            // 主キー情報
            daoT_CurrentWorkflow.PK_WorkflowControlNo = workflowControlNo;

            // 履歴番号は履歴件数+1
            daoT_CurrentWorkflow.Set_HistoryNo_forUPD = recordCount + 1;

            daoT_CurrentWorkflow.Set_WfPositionId_forUPD = nextWorkflow["WfPositionId"];
            daoT_CurrentWorkflow.Set_WorkflowNo_forUPD = nextWorkflow["WorkflowNo"];
            daoT_CurrentWorkflow.Set_FromUserId_forUPD = fromUserId; // 実際のユーザIDを入力する。
            daoT_CurrentWorkflow.Set_FromUserInfo_forUPD = fromUserInfo;
            daoT_CurrentWorkflow.Set_ActionType_forUPD = nextWorkflow["ActionType"];

            if (toUserId.HasValue
                && ((string)nextWorkflow["ActionType"] == "TurnBack" || (string)nextWorkflow["ActionType"] == "Reply"))
            {
                // ActionTypeがTurnBack or Replyで、toUserIDがnullで無い場合、
                // 指定のtoUserIDにTurnBack or Replyする。
                daoT_CurrentWorkflow.Set_ToUserId_forUPD = toUserId;
            }
            else
            {
                // 上記以外は、nextWorkflow["ToUserId"]を指定する。
                daoT_CurrentWorkflow.Set_ToUserId_forUPD = nextWorkflow["ToUserId"];
            }

            daoT_CurrentWorkflow.Set_ToUserInfo_forUPD = toUserInfo;
            daoT_CurrentWorkflow.Set_ToUserPositionTitlesId_forUPD = nextWorkflow["ToUserPositionTitlesId"];
            daoT_CurrentWorkflow.Set_NextWfPositionId_forUPD = nextWorkflow["NextWfPositionId"];
            daoT_CurrentWorkflow.Set_NextWorkflowNo_forUPD = nextWorkflow["NextWorkflowNo"];
            daoT_CurrentWorkflow.Set_ReserveArea_forUPD = currentWorkflowReserveArea;
            //daoT_CurrentWorkflow.Set_ExclusiveKey_forUPD = "";

            if ((string)nextWorkflow["ActionType"] == "TurnBack"
                || (string)nextWorkflow["ActionType"] == "Reply")
            {
                // ActionTypeがTurnBack or Replyの場合
                daoT_CurrentWorkflow.Set_ReplyDeadline_forUPD = DBNull.Value;
            }
            else
            {
                daoT_CurrentWorkflow.Set_ReplyDeadline_forUPD = replyDeadline;
            }

            daoT_CurrentWorkflow.Set_StartDate_forUPD = DateTime.Now;
            daoT_CurrentWorkflow.Set_AcceptanceDate_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserId_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserInfo_forUPD = DBNull.Value;

            daoT_CurrentWorkflow.D3_Update();

            // --------------------------------------------------
            // 完了(T_WorkflowHistoryのEndDate項目を更新)
            // --------------------------------------------------
            // T_WorkflowHistoryのUPDATE
            // --------------------------------------------------
            DaoT_WorkflowHistory daoT_WorkflowHistory = new DaoT_WorkflowHistory(this.Dam);

            // PK
            daoT_WorkflowHistory.PK_WorkflowControlNo = workflowControlNo;
            daoT_WorkflowHistory.PK_HistoryNo = recordCount;

            // EndDate
            daoT_WorkflowHistory.Set_EndDate_forUPD = DateTime.Now;

            daoT_WorkflowHistory.S3_Update();

            //---

            // 完了
            if ((string)nextWorkflow["ActionType"] == "End")
            {
                // --------------------------------------------------
                // 完了の場合(T_WorkflowのEndDate項目を更新)
                // --------------------------------------------------
                // T_WorkflowのUPDATE
                // --------------------------------------------------
                DaoT_Workflow daoT_Workflow = new DaoT_Workflow(this.Dam);

                // PK
                daoT_Workflow.PK_WorkflowControlNo = workflowControlNo;

                // EndDate
                daoT_Workflow.Set_EndDate_forUPD = DateTime.Now;

                daoT_Workflow.S3_Update();

                // --------------------------------------------------
                // 履歴に移動
                // --------------------------------------------------
                // T_CurrentWorkflow→T_WorkflowHistory
                // --------------------------------------------------
                dao.SQLFileName = "RequestApproval_Move.sql";
                dao.SetParameter("WorkflowControlNo", workflowControlNo);
                dao.ExecInsUpDel_NonQuery();
            }

            // リターン(MailTemplateId)
            if (nextWorkflow["MailTemplateId"] == DBNull.Value)
            {
                return 0;
            }
            else
            {
                return (int)nextWorkflow["MailTemplateId"];
            }
        }
Example #23
0
        /// <summary>1件取得処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_SelectRecord(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();
            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            // 検索条件の指定

            // AndEqualSearchConditions(主キー
            foreach (string k in parameterValue.AndEqualSearchConditions.Keys)
            {
                // nullチェック(null相当を要検討
                if (parameterValue.AndEqualSearchConditions[k] == null)
                {
                    // == null
                }
                else
                {
                    // != null

                    // 文字列の場合の扱い
                    if (parameterValue.AndEqualSearchConditions[k] is string)
                    {
                        if (!string.IsNullOrEmpty((string)parameterValue.AndEqualSearchConditions[k]))
                        {
                            // パラメタ指定
                            cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]);
                        }
                    }
                    else
                    {
                        // パラメタ指定
                        cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]);
                    }
                }
            }

            // DataTableをインスタンス化
            if (parameterValue.DataTableType == null)
            {
                // == null
                returnValue.Dt = new DataTable();
            }
            else
            {
                // != null

                // 型付きDataTable
                //(パブリック・デフォルト・コンストラクタ)
                returnValue.Dt =
                    (DataTable)parameterValue.DataTableType.InvokeMember(
                        null, BindingFlags.CreateInstance, null, null, null);
            }

            // SQLを設定して
            cmnDao.SQLFileName =
                this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                + "_" + this.MethodNameHeaderS + this.MethodLabel_Sel + this.MethodNameFooterS + ".xml";

            // パラメタは指定済み

            // DataTableを取得
            cmnDao.ExecSelectFill_DT(returnValue.Dt);

            // ↑業務処理-----------------------------------------------------
        }
Example #24
0
        /// <summary>
        /// This method TurnBack to slip iisuance UserID
        /// </summary>
        /// <param name="subsystemId"></param>
        /// <param name="workflowControlNo"></param>
        /// <param name="fromUserId"></param>
        /// <param name="toUserId"></param>
        /// <param name="currentWorkflowReserveArea"></param>
        /// <returns></returns>
        public void TurnbackSlipIssuanceUserID(string subsystemId, string workflowControlNo, decimal fromUserId, decimal? toUserId,
                                              string currentWorkflowReserveArea)
        {
            #region チェック処理を実装

            string toUserInfo = "";

            //If ToUserId is not null ans ActionType is End then getting user information
            if (toUserId.HasValue) // Endの時は不要 
            {
                toUserInfo = Workflow.GetUserInfo(toUserId.Value);
            }

            #endregion

            // --------------------------------------------------
            // 現在の履歴件数を取得。
            // --------------------------------------------------
            //Gets the record count from T_WorkflowHistory table
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            dao.SQLFileName = "RequestApproval_Count.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            int recordCount = ((int)dao.ExecSelectScalar());

            // --------------------------------------------------
            // ワークフロー承認を依頼
            // --------------------------------------------------
            // T_CurrentWorkflowのUPDATE
            // --------------------------------------------------
            DaoT_CurrentWorkflow daoT_CurrentWorkflow = new DaoT_CurrentWorkflow(this.Dam);

            // 主キー情報
            daoT_CurrentWorkflow.PK_WorkflowControlNo = workflowControlNo;

            // 履歴番号は履歴件数+1
            daoT_CurrentWorkflow.Set_HistoryNo_forUPD = recordCount + 1;

            DaoT_WorkflowHistory daoT_WorkflowHistory = new DaoT_WorkflowHistory(this.Dam);
            //Gets the Slip issuance orignal user id
            DataTable dt = GetSlipIssuanceUserID(subsystemId, workflowControlNo);

            //Updates the T_CurrentWorkflow and T_WorkflowHistory tables data with original slip issuance user information
            daoT_CurrentWorkflow.Set_WfPositionId_forUPD = dt.Rows[0]["WfPositionId"];
            daoT_CurrentWorkflow.Set_WorkflowNo_forUPD = dt.Rows[0]["WorkflowNo"];
            daoT_CurrentWorkflow.Set_FromUserId_forUPD = toUserId; // 実際のユーザIDを入力する。
            daoT_CurrentWorkflow.Set_FromUserInfo_forUPD = toUserInfo;
            //Updating action type to TurnBack
            daoT_CurrentWorkflow.Set_ActionType_forUPD = "TurnBack";

            daoT_CurrentWorkflow.Set_ToUserId_forUPD = dt.Rows[0]["FromUserId"];
            // ユーザIDからユーザ情報を取得
            string fromUserInfo = Workflow.GetUserInfo(fromUserId);
            daoT_CurrentWorkflow.Set_ToUserInfo_forUPD = fromUserInfo;
            daoT_CurrentWorkflow.Set_ToUserPositionTitlesId_forUPD = dt.Rows[0]["ToUserPositionTitlesId"];
            daoT_CurrentWorkflow.Set_NextWfPositionId_forUPD = dt.Rows[0]["NextWfPositionId"];
            daoT_CurrentWorkflow.Set_NextWorkflowNo_forUPD = dt.Rows[0]["NextWorkflowNo"];
            daoT_CurrentWorkflow.Set_ReserveArea_forUPD = currentWorkflowReserveArea;

            //Updating acceptance information with null
            daoT_CurrentWorkflow.Set_ReplyDeadline_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_StartDate_forUPD = DateTime.Now;
            daoT_CurrentWorkflow.Set_AcceptanceDate_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserId_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserInfo_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.D3_Update();

            // PK
            daoT_WorkflowHistory.PK_WorkflowControlNo = workflowControlNo;
            daoT_WorkflowHistory.PK_HistoryNo = recordCount;

            // EndDate
            daoT_WorkflowHistory.Set_EndDate_forUPD = DateTime.Now;

            daoT_WorkflowHistory.S3_Update();
        }
Example #25
0
        /// <summary>バッチ更新処理を実装</summary>
        /// <param name="parameterValue">引数クラス</param>
        private void UOC_BatchUpdate(_3TierParameterValue parameterValue)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            _3TierReturnValue returnValue = new _3TierReturnValue();
            this.ReturnValue = returnValue;

            // ↓業務処理-----------------------------------------------------

            // 共通Dao
            CmnDao cmnDao = new CmnDao(this.GetDam());

            int i = 0; // 件数のカウント
            DataTable dt = (DataTable)parameterValue.Obj;

            // バッチ更新
            foreach (DataRow dr in dt.Rows)
            {
                switch (dr.RowState)
                {
                    case DataRowState.Added: // 追加

                        // SQLを設定して
                        cmnDao.SQLFileName =
                            this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                            + "_" + this.MethodNameHeaderD + this.MethodLabel_Ins + this.MethodNameFooterD + ".xml";

                        // パラメタ指定
                        foreach (DataColumn c in dt.Columns)
                        {
                            // 空文字列も通常の値と同一に扱う
                            cmnDao.SetParameter(c.ColumnName, dr[c]);
                        }

                        // 更新処理を実行
                        i += cmnDao.ExecInsUpDel_NonQuery();

                        break;

                    case DataRowState.Modified: // 更新

                        // SQLを設定して
                        cmnDao.SQLFileName =
                            this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                            + "_" + this.MethodNameHeaderS + this.MethodLabel_Upd + this.MethodNameFooterS + ".xml";

                        // パラメタ指定
                        foreach (DataColumn dc in dt.Columns)
                        {
                            // 主キー・タイムスタンプ列の設定はUP側で。
                            // また、空文字列も通常の値と同一に扱う。
                            if (parameterValue.AndEqualSearchConditions.ContainsKey(dc.ColumnName))
                            {
                                // Where条件は、DataRowVersion.Originalを付与
                                cmnDao.SetParameter(dc.ColumnName, dr[dc, DataRowVersion.Original]);
                            }
                            else
                            {
                                cmnDao.SetParameter(
                                    this.UpdateParamHeader + dc.ColumnName + this.UpdateParamFooter, dr[dc]);
                            }
                        }

                        // 更新処理を実行
                        i += cmnDao.ExecInsUpDel_NonQuery();

                        break;

                    case DataRowState.Deleted: // 削除

                        // SQLを設定して
                        cmnDao.SQLFileName =
                            this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter
                            + "_" + this.MethodNameHeaderS + this.MethodLabel_Del + this.MethodNameFooterS + ".xml";

                        // パラメタ指定
                        foreach (DataColumn c in dt.Columns)
                        {
                            // 主キー・タイムスタンプ列の設定はUP側で。
                            // また、空文字列も通常の値と同一に扱う。
                            if (parameterValue.AndEqualSearchConditions.ContainsKey(c.ColumnName))
                            {
                                // Where条件は、DataRowVersion.Originalを付与
                                cmnDao.SetParameter(c.ColumnName, dr[c, DataRowVersion.Original]);
                            }
                        }

                        // 更新処理を実行
                        i += cmnDao.ExecInsUpDel_NonQuery();

                        break;

                    default: // 上記以外
                        // なにもしない。
                        break;
                }
            }

            // 件数を返却
            returnValue.Obj = i;

            // ↑業務処理-----------------------------------------------------
        }
Example #26
0
        /// <summary>
        /// Gets the Slip Issuance UserID of History=1 to TurnBack
        /// </summary>
        /// <param name="subSystemId"></param>
        /// <param name="workflowControlNo"></param>
        /// <returns></returns>
        private DataTable GetSlipIssuanceUserID(string subSystemId, string workflowControlNo)
        {
            #region チェック処理を実装

            if (string.IsNullOrEmpty(subSystemId))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "turnBackWorkflow")));
            }
            else if (string.IsNullOrEmpty(workflowControlNo))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowControlNo")));
            }

            #endregion

            // --------------------------------------------------
            // 差戻しのToユーザIDを履歴から取得
            // --------------------------------------------------
            //Executes the select query of T_WorkflowHistory for getting the original slip issuance user information
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);
            dao.SQLFileName = "GetTurnBackFromUserHistory.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            dao.SetParameter("ActionType", "TurnBack");
            DataTable dt = new DataTable();
            dao.ExecSelectFill_DT(dt);
            return dt;
        }
Example #27
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_Select(TestParameterValue testParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();
            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------
            DataTable dt = null;

            switch ((testParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((testParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelect.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperSelect.xml";
                            break;
                    }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", testParameter.ShipperID);

                    // 戻り値 dt
                    dt = new DataTable();

                    // 共通Daoを実行
                    cmnDao.ExecSelectFill_DT(dt);

                    // キャストの対策コードを挿入

                    // ・SQLの場合、ShipperIDのintがInt32型にマップされる。
                    // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。
                    // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。
                    if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32")
                    {
                        // Int32なのでキャスト
                        testReturn.ShipperID = (int)dt.Rows[0].ItemArray.GetValue(0);
                    }
                    else
                    {
                        // それ以外の場合、一度、文字列に変換してInt32.Parseする。
                        testReturn.ShipperID = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString());
                    }

                    testReturn.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1);
                    testReturn.Phone = (string)dt.Rows[0].ItemArray.GetValue(2);

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.PK_ShipperID = testParameter.ShipperID;

                    // 戻り値 dt
                    dt = new DataTable();

                    // 自動生成Daoを実行
                    genDao.S2_Select(dt);

                    // キャストの対策コードを挿入

                    // ・SQLの場合、ShipperIDのintがInt32型にマップされる。
                    // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。
                    // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。
                    if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32")
                    {
                        // Int32なのでキャスト
                        testReturn.ShipperID = (int)dt.Rows[0].ItemArray.GetValue(0);
                    }
                    else
                    {
                        // それ以外の場合、一度、文字列に変換してInt32.Parseする。
                        testReturn.ShipperID = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString());
                    }

                    testReturn.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1);
                    testReturn.Phone = (string)dt.Rows[0].ItemArray.GetValue(2);

                    break;

                default: // 個別Daoを使用する。
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Select(testParameter, testReturn);
                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(testParameter);
        }
Example #28
0
        /// <summary>
        /// This method is used to terminate the workflow forecefully 
        /// by updating EndDate column of T_Workflow table with enddate.
        /// </summary>
        /// <param name="nextWorkflow"></param>
        /// <param name="workflowControlNo"></param>
        /// <param name="fromUserId"></param>        
        /// <param name="currentWorkflowReserveArea"></param>
        /// <returns></returns>
        public int ForcedTermination(DataRow nextWorkflow, string workflowControlNo, decimal fromUserId, string currentWorkflowReserveArea)
        {
            #region チェック処理を実装

            if (nextWorkflow == null)
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "nextWorkflow")));
            }
            else if (!nextWorkflow.Table.Columns.Contains("SubSystemId"))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED,
                        "SubSystemId", "nextWorkflow")));
            }
            else if (string.IsNullOrEmpty(workflowControlNo))
            {
                throw new BusinessSystemException(
                    MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0],
                    String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1],
                        String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowControlNo")));
            }

            // ユーザIDからユーザ情報を取得
            string fromUserInfo = Workflow.GetUserInfo(fromUserId);

            string toUserInfo = "";

            #endregion

            // --------------------------------------------------
            // 現在の履歴件数を取得。
            // --------------------------------------------------
            //Gets the record count from T_WorkflowHistory table
            // --------------------------------------------------
            CmnDao dao = new CmnDao(this.Dam);

            dao.SQLFileName = "RequestApproval_Count.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            int recordCount = ((int)dao.ExecSelectScalar());

            // --------------------------------------------------
            // ワークフロー承認を依頼
            // --------------------------------------------------
            // T_CurrentWorkflowのUPDATE
            // --------------------------------------------------
            DaoT_CurrentWorkflow daoT_CurrentWorkflow = new DaoT_CurrentWorkflow(this.Dam);

            // 主キー情報
            daoT_CurrentWorkflow.PK_WorkflowControlNo = workflowControlNo;

            // 履歴番号は履歴件数+1
            daoT_CurrentWorkflow.Set_HistoryNo_forUPD = recordCount + 1;

            daoT_CurrentWorkflow.Set_WfPositionId_forUPD = nextWorkflow["WfPositionId"];
            daoT_CurrentWorkflow.Set_WorkflowNo_forUPD = nextWorkflow["WorkflowNo"];
            daoT_CurrentWorkflow.Set_FromUserId_forUPD = fromUserId; // 実際のユーザIDを入力する。
            daoT_CurrentWorkflow.Set_FromUserInfo_forUPD = fromUserInfo;
            //Updates the ActionType with Abnormal termination
            daoT_CurrentWorkflow.Set_ActionType_forUPD = "ABEnd";

            // 上記以外は、nextWorkflow["ToUserId"]を指定する。
            daoT_CurrentWorkflow.Set_ToUserId_forUPD = nextWorkflow["ToUserId"];

            daoT_CurrentWorkflow.Set_ToUserInfo_forUPD = toUserInfo;
            daoT_CurrentWorkflow.Set_ToUserPositionTitlesId_forUPD = nextWorkflow["ToUserPositionTitlesId"];
            daoT_CurrentWorkflow.Set_NextWfPositionId_forUPD = nextWorkflow["NextWfPositionId"];
            daoT_CurrentWorkflow.Set_NextWorkflowNo_forUPD = nextWorkflow["NextWorkflowNo"];
            daoT_CurrentWorkflow.Set_ReserveArea_forUPD = currentWorkflowReserveArea;

            daoT_CurrentWorkflow.Set_StartDate_forUPD = DateTime.Now;
            daoT_CurrentWorkflow.Set_AcceptanceDate_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserId_forUPD = DBNull.Value;
            daoT_CurrentWorkflow.Set_AcceptanceUserInfo_forUPD = DBNull.Value;

            daoT_CurrentWorkflow.D3_Update();

            // --------------------------------------------------
            // 完了(T_WorkflowHistoryのEndDate項目を更新)
            // --------------------------------------------------
            // T_WorkflowHistoryのUPDATE
            // --------------------------------------------------
            DaoT_WorkflowHistory daoT_WorkflowHistory = new DaoT_WorkflowHistory(this.Dam);

            // PK
            daoT_WorkflowHistory.PK_WorkflowControlNo = workflowControlNo;
            daoT_WorkflowHistory.PK_HistoryNo = recordCount;

            //Updates the EndDate to current date for forceful termination
            daoT_WorkflowHistory.Set_EndDate_forUPD = DateTime.Now;

            daoT_WorkflowHistory.S3_Update();

            //---

            // 完了
            // --------------------------------------------------
            // 完了の場合(T_WorkflowのEndDate項目を更新)
            // --------------------------------------------------
            // T_WorkflowのUPDATE
            // --------------------------------------------------
            DaoT_Workflow daoT_Workflow = new DaoT_Workflow(this.Dam);

            // PK
            daoT_Workflow.PK_WorkflowControlNo = workflowControlNo;

            //Updates the EndDate to current date for forceful termination
            daoT_Workflow.Set_EndDate_forUPD = DateTime.Now;

            daoT_Workflow.S3_Update();

            // --------------------------------------------------
            // 履歴に移動
            // --------------------------------------------------
            // T_CurrentWorkflow→T_WorkflowHistory
            // --------------------------------------------------
            dao.SQLFileName = "RequestApproval_Move.sql";
            dao.SetParameter("WorkflowControlNo", workflowControlNo);
            dao.ExecInsUpDel_NonQuery();

            // リターン(MailTemplateId)
            if (nextWorkflow["MailTemplateId"] == DBNull.Value)
            {
                return 0;
            }
            else
            {
                return (int)nextWorkflow["MailTemplateId"];
            }
        }
Example #29
0
        /// <summary>業務処理を実装</summary>
        /// <param name="testParameter">引数クラス</param>
        private void UOC_Delete(TestParameterValue testParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            TestReturnValue testReturn = new TestReturnValue();
            this.ReturnValue = testReturn;

            // ↓業務処理-----------------------------------------------------

            switch ((testParameter.ActionType.Split('%'))[1])
            {
                case "common": // 共通Daoを使用する。

                    // 共通Daoを生成
                    CmnDao cmnDao = new CmnDao(this.GetDam());

                    switch ((testParameter.ActionType.Split('%'))[2])
                    {
                        case "static":
                            // 静的SQLを指定
                            cmnDao.SQLFileName = "ShipperDelete.sql";
                            break;

                        case "dynamic":
                            // 動的SQLを指定
                            cmnDao.SQLFileName = "ShipperDelete.xml";
                            break;
                    }

                    // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                    cmnDao.SetParameter("P1", testParameter.ShipperID);

                    // 共通Daoを実行
                    // 戻り値を設定
                    testReturn.Obj = cmnDao.ExecInsUpDel_NonQuery();

                    break;

                case "generate": // 自動生成Daoを使用する。

                    // 自動生成Daoを生成
                    DaoShippers genDao = new DaoShippers(this.GetDam());

                    // パラメタに対して、動的に値を設定する。
                    genDao.PK_ShipperID = testParameter.ShipperID;

                    // 自動生成Daoを実行
                    // 戻り値を設定
                    testReturn.Obj = genDao.S4_Delete();

                    break;

                default: // 個別Daoを使用する。
                    LayerD myDao = new LayerD(this.GetDam());
                    myDao.Delete(testParameter, testReturn);
                    break;
            }

            // ↑業務処理-----------------------------------------------------

            // ロールバックのテスト
            this.TestRollback(testParameter);
        }
Example #30
0
        /// <summary>バッチ処理を実行する</summary>
        /// <param name="parameter">引数クラス</param>
        private void UOC_ExecuteBatchProcess(ExecuteBatchProcessParameterValue parameter)
        {
            // 戻り値クラスを生成して、事前に戻り値に設定しておく。
            this.ReturnValue = new VoidReturnValue();

            // ↓業務処理-----------------------------------------------------

            ArrayList pkList = parameter.SubPkList; //主キー一覧(1トランザクション分)
            DataTable dataTable = new DataTable();  //データ一覧(主キーを元に検索したデータ)

            //Ordersテーブルからデータを検索する
            // ↓DBアクセス-----------------------------------------------------
            // 共通Daoを生成
            CmnDao cmnDao = new CmnDao(this.GetDam());
            
            // 動的SQLを指定
            cmnDao.SQLFileName = "SelectInOrderID.xml";

            // パラメータを設定
            cmnDao.SetParameter("OrderID", pkList);

            // 共通Daoを実行
            cmnDao.ExecSelectFill_DT(dataTable);
            // ↑DBアクセス-----------------------------------------------------

            
            //Orders2テーブルに1件ずつ追加する
            for (int index = 0; index < dataTable.Rows.Count; index++)
            {
                DataRow row = dataTable.Rows[index];    //1件分のデータ

                //todo:編集処理など

                // ↓DBアクセス-----------------------------------------------------
                // 自動生成Daoを生成
                DaoOrders2 dao = new DaoOrders2(this.GetDam());

                // パラメータを設定
                dao.PK_OrderID = row["OrderID"];
                dao.CustomerID = row["CustomerID"];
                dao.EmployeeID = row["EmployeeID"];
                dao.OrderDate = row["OrderDate"];
                dao.RequiredDate = row["RequiredDate"];
                dao.ShippedDate = row["ShippedDate"];
                dao.ShipVia = row["ShipVia"];
                dao.Freight = row["Freight"];
                dao.ShipName = row["ShipName"];
                dao.ShipAddress = row["ShipAddress"];
                dao.ShipCity = row["ShipCity"];
                dao.ShipRegion = row["ShipRegion"];
                dao.ShipPostalCode = row["ShipPostalCode"];
                dao.ShipCountry = row["ShipCountry"];

                // 共通Daoを実行
                dao.S1_Insert();
                // ↑DBアクセス-----------------------------------------------------
            }
            
            // todo:中間コミット情報をDBに登録 ※最終処理主キー値の登録など

            // ↑業務処理-----------------------------------------------------
        }