/// <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テーブルに複数件まとめて追加する。
            string insertHeader = "INSERT INTO [Orders2] {0} VALUES {1}";
            string columnList   = "";

            SQLUtility sQLUtility = new SQLUtility(DbEnum.DBMSType.SQLServer);

            string[] insertSQLParts = sQLUtility.GetInsertSQLParts(dataTable);

            StringBuilder sb = new StringBuilder();

            foreach (string insertSQLPart in insertSQLParts)
            {
                if (string.IsNullOrEmpty(columnList))
                {
                    // columnList
                    columnList = insertSQLPart;
                }
                else
                {
                    // insertSQLPart
                    sb.Append(string.Format(insertHeader, columnList, insertSQLPart) + Environment.NewLine);
                }
            }

            // 共通Daoでバッチ更新
            CmnDao cd = new CmnDao(this.GetDam());

            cd.SQLText = sb.ToString();
            cd.ExecInsUpDel_NonQuery();

            // todo:中間コミット情報をDBに登録 ※最終処理主キー値の登録など

            // ↑業務処理-----------------------------------------------------
        }
Beispiel #2
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();

            // ↑業務処理-----------------------------------------------------
        }
Beispiel #3
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_mu myDao = new LayerD_mu(this.GetDam());
                myDao.Insert(muParameter.ActionType, companyName, phone, out ret);
                muReturn.Bean = ret;

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Beispiel #4
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();

            // ↑業務処理-----------------------------------------------------
        }
Beispiel #5
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);
        }
Beispiel #6
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();
        }
Beispiel #7
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);
        }
Beispiel #8
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テーブルに複数件まとめて追加する。
            StringBuilder sb = new StringBuilder();

            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を実行
                sb.Append(dao.ExecGenerateSQL(
                              "DaoOrders2_S1_Insert.sql", new SQLUtility(DbEnum.DBMSType.SQLServer)) + ";\r\n");

                // ↑DBアクセス-----------------------------------------------------
            }

            // 共通Daoでバッチ更新
            CmnDao cd = new CmnDao(this.GetDam());

            cd.SQLText = sb.ToString();
            cd.ExecInsUpDel_NonQuery();

            // todo:中間コミット情報をDBに登録 ※最終処理主キー値の登録など

            // ↑業務処理-----------------------------------------------------
        }
Beispiel #9
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"]);
            }
        }
Beispiel #10
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"]);
            }
        }
Beispiel #11
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Delete(MuParameterValue muParameter)
        {
            // 戻り値クラスを生成して、事前に戻り地に設定しておく。
            MuReturnValue muReturn = new MuReturnValue();

            muReturn.Bean    = new Informations("");
            this.ReturnValue = muReturn;

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

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

            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", shipperID);

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

                break;

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

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

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

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

                break;

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

                // 個別Daoを実行
                string    ret   = "";
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.Delete(muParameter.ActionType, shipperID, out ret);

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

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Beispiel #12
0
        /// <summary>業務処理を実装</summary>
        /// <param name="muParameter">汎用引数クラス</param>
        private void UOC_Insert(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());

                cmnDao.SQLFileName = "ShipperInsert.sql";

                // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。
                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.CompanyName = dic["CompanyName"];
                genDao.Phone       = dic["Phone"];

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

                break;

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

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

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

                break;
            }

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

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

            this.ReturnValue = returnValue;

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

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

            // 共通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;

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

            this.ReturnValue = muReturn;

            // ↓業務処理-----------------------------------------------------
            Shipper shipper = (Shipper)muParameter.Bean;

            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", shipper.ShipperID);
                cmnDao.SetParameter("P2", shipper.CompanyName);
                cmnDao.SetParameter("P3", shipper.Phone);

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

                break;

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

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

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

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

                break;

            default:     // 個別Daoを使用する。
                string    ret   = "";
                LayerD_mu myDao = new LayerD_mu(this.GetDam());
                myDao.Update(muParameter.ActionType,
                             shipper.ShipperID.ToString(), shipper.CompanyName, shipper.Phone, out ret);
                muReturn.Bean = ret;

                break;
            }

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

            // ロールバックのテスト
            this.TestRollback(muParameter);
        }
Beispiel #15
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);
        }
Beispiel #16
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);
        }