/// <summary>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_SelectCount(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 = "ShipperCount.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperCount.xml"; break; } // 共通Daoを実行 // 戻り値を設定 muReturn.Bean = cmnDao.ExecSelectScalar().ToString(); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // 共通Daoを実行 // 戻り値を設定 muReturn.Bean = genDao.D5_SelCnt().ToString(); break; default: // 個別Daoを使用する。 string ret = ""; LayerD_mu myDao = new LayerD_mu(this.GetDam()); myDao.SelectCount(muParameter.ActionType, out ret); muReturn.Bean = ret; break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <summary>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_メソッド名(MuParameterValue muParameter) { //メソッド引数にBaseParameterValueの派生の型を定義可能。 // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); muReturn.Bean = new Informations(""); this.ReturnValue = muReturn; // 引数をアンマーシャル DataTable dt = DataContractHelper.ToDataTable(((Informations)muParameter.Bean).DicList); // ↓業務処理----------------------------------------------------- // 個別Dao LayerD_mu myDao = new LayerD_mu(this.GetDam()); //myDao.xxxx(muParameter.ActionType, dtts, muReturn); // 共通Dao CmnDao cmnDao = new CmnDao(this.GetDam()); cmnDao.ExecSelectScalar(); // 戻り値をマーシャリングして設定 muReturn.Bean = new Informations(""); muReturn.Bean = new Informations(DataContractHelper.ToList(dt)); // ↑業務処理----------------------------------------------------- }
/// <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); }
/// <summary>主キー一覧を取得</summary> /// <param name="parameter">引数クラス</param> private void UOC_SelectPkList(VoidParameterValue parameter) { // 戻り値クラスを生成して、事前に戻り値に設定しておく。 SelectPkListReturnValue returnValue = new SelectPkListReturnValue(); this.ReturnValue = returnValue; // ↓業務処理----------------------------------------------------- DataTable pkTable = new DataTable(); // ↓DBアクセス----------------------------------------------------- // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); // 動的SQLを指定 cmnDao.SQLFileName = "SelectAllOrderID.xml"; // 共通Daoを実行 cmnDao.ExecSelectFill_DT(pkTable); // ↑DBアクセス----------------------------------------------------- // 戻り値を設定 ArrayList pkList = new ArrayList(); for (int index = 0; index < pkTable.Rows.Count; index++) { //データテーブルからArrayListに詰め直す pkList.Add(pkTable.Rows[index]["OrderID"]); } returnValue.PkList = pkList; // ↑業務処理----------------------------------------------------- }
/// <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); }
/// <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に登録 ※最終処理主キー値の登録など // ↑業務処理----------------------------------------------------- }
/// <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(); // ↑業務処理----------------------------------------------------- }
/// <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); }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_SelectCount(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 = "ShipperCount.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperCount.xml"; break; } // 共通Daoを実行 // 戻り値を設定 testReturn.Obj = cmnDao.ExecSelectScalar(); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // 共通Daoを実行 // 戻り値を設定 testReturn.Obj = genDao.D5_SelCnt(); break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectCount(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <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(); // ↑業務処理----------------------------------------------------- }
/// <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); }
/// <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); }
/// <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(); }
/// <summary>データ件数取得処理を実装</summary> /// <param name="parameterValue">引数クラス</param> private void UOC_SelectCountMethod(_3TierParameterValue parameterValue) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 _3TierReturnValue returnValue = new _3TierReturnValue(); this.ReturnValue = returnValue; // ↓業務処理----------------------------------------------------- // 共通Dao CmnDao cmnDao = new CmnDao(this.GetDam()); // 検索条件の生成&指定 string whereSQL = this.SetSearchConditions(parameterValue, cmnDao); string p = ""; // パラメタ記号 string s = ""; // 囲い記号開始 string e = ""; // 囲い記号終了 // 囲い文字の選択 if (parameterValue.DBMSType == DbEnum.DBMSType.SQLServer) { p = "@"; s = "["; e = "]"; } else if (parameterValue.DBMSType == DbEnum.DBMSType.Oracle) { p = ":"; s = "\""; e = "\""; } else { p = "@"; s = "["; e = "]"; } // SQLを設定して cmnDao.SQLText = string.Format( SELECT_COUNT_SQL_TEMPLATE, s + parameterValue.TableName + e, whereSQL) .Replace("_p_", p).Replace("_s_", s).Replace("_e_", e); // パラメタは指定済み // データ件数を取得 returnValue.Obj = cmnDao.ExecSelectScalar(); // ↑業務処理----------------------------------------------------- }
/// <summary>業務処理を実装</summary> /// <param name="parameterValue">引数クラス</param> private void UOC_メソッド名(BaseParameterValue parameterValue) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 _3TierReturnValue testReturn = new _3TierReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- // 共通Dao CmnDao cmnDao = new CmnDao(this.GetDam()); cmnDao.ExecSelectScalar(); // ↑業務処理----------------------------------------------------- }
public OrderReturnValue GetOrders(OrderParameterValue orderParameter) { // 戻り値クラスを作成する OrderReturnValue returnValue = new OrderReturnValue(); // 共通 DAO を作成する (SQL ファイルとして、4.5.2 項で作成したファイルを使用する) CmnDao dao = new CmnDao(this.Dam); dao.SQLFileName = "SelectOrders.sql"; // DB から注文情報一覧を取得し、戻り値クラスに注文情報一覧を格納し、B 層クラスに返す using (IDataReader dr = dao.ExecSelect_DR()) { returnValue.Orders = DataToPoco.DataReaderToList <OrderViweModel>(dr); } return(returnValue); }
/// <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); }
/// <summary>差戻しのToユーザIDを履歴から取得します。</summary> /// <param name="turnBackWorkflow">差戻しのワークフロー</param> /// <param name="workflowControlNo">ワークフロー管理番号(必須)</param> /// <returns>ToユーザID</returns> public decimal GetTurnBackToUser(DataRow turnBackWorkflow, string workflowControlNo) { #region チェック処理を実装 if (turnBackWorkflow == null) { throw new BusinessSystemException( MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "turnBackWorkflow"))); } else if (!turnBackWorkflow.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", "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を履歴から取得 // -------------------------------------------------- // T_WorkflowHistoryのSELECT // -------------------------------------------------- CmnDao dao = new CmnDao(this.Dam); dao.SQLFileName = "GetTurnBackToUser.sql"; dao.SetParameter("WorkflowControlNo", workflowControlNo); dao.SetParameter("ActionType", "TurnBack"); dao.SetParameter("NextWorkflowNo", turnBackWorkflow["NextWorkflowNo"]); return((decimal)dao.ExecSelectScalar()); }
public OrderReturnValue GetOrders(OrderParameterValue orderParameter) { // 戻り値クラスを作成する OrderReturnValue returnValue = new OrderReturnValue(); // 共通 DAO を作成する (SQL ファイルとして、4.5.2 項で作成したファイルを使用する) CmnDao dao = new CmnDao(this.Dam); dao.SQLFileName = "SelectOrders.sql"; // 結果格納用の DataTable System.Data.DataTable table = new System.Data.DataTable(); // DB から注文情報一覧を取得し、DataTable に格納する dao.ExecSelectFill_DT(table); // 戻り値クラスに注文情報一覧を格納し、B 層クラスに返す returnValue.Orders = table; return(returnValue); }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_メソッド名(TestParameterValue testParameter) { //メソッド引数にBaseParameterValueの派生の型を定義可能。 // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- // 個別Dao LayerD myDao = new LayerD(this.GetDam()); //myDao.xxxx(testParameter, ref testReturn); // 共通Dao CmnDao cmnDao = new CmnDao(this.GetDam()); cmnDao.ExecSelectScalar(); // ↑業務処理----------------------------------------------------- }
/// <summary>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_メソッド名(MuParameterValue muParameter) { //メソッド引数にBaseParameterValueの派生の型を定義可能。 // 戻り値クラスを生成して、事前に戻り地に設定しておく。 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; // ↓業務処理----------------------------------------------------- // 個別Dao LayerD myDao = new LayerD(this.GetDam()); //myDao.xxxx(muParameter.ActionType, dtts, muReturn); // 共通Dao CmnDao cmnDao = new CmnDao(this.GetDam()); cmnDao.ExecSelectScalar(); // 戻り値をマーシャリングして設定 dtts_out = new DTTables(); dtt_out = new DTTable("ret"); dtt_out.Cols.Add(new DTColumn("ret", DTType.String)); dtrow_out = dtt_out.Rows.AddNew(); dtrow_out["ret"] = "戻り値"; dtts_out.Add(dtt_out); muReturn.Value = DTTables.DTTablesToString(dtts_out); // ↑業務処理----------------------------------------------------- }
/// <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"]); } }
/// <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); }
/// <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); }
/// <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); }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_SelectAll_DR(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.SQLText = "SELECT * FROM Shippers"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>"; break; } // 戻り値 dt dt = new DataTable(); // 3列生成 dt.Columns.Add("c1", System.Type.GetType("System.String")); dt.Columns.Add("c2", System.Type.GetType("System.String")); dt.Columns.Add("c3", System.Type.GetType("System.String")); // 共通Daoを実行 IDataReader idr = cmnDao.ExecSelect_DR(); while (idr.Read()) { // DRから読む object[] objArray = new object[3]; idr.GetValues(objArray); // DTに設定する。 DataRow dr = dt.NewRow(); dr.ItemArray = objArray; dt.Rows.Add(dr); } // 終了したらクローズ idr.Close(); // 戻り値を設定 testReturn.Obj = dt; break; case "generate": // 自動生成Daoを使用する。 // DRのI/Fなし // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // 戻り値 dt dt = new DataTable(); // 自動生成Daoを実行 genDao.D2_Select(dt); // 戻り値を設定 testReturn.Obj = (DataTable)dt; break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectAll_DR(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <summary>業務処理を実装</summary> /// <param name="testParameter">引数クラス</param> private void UOC_SelectAll_DS(TestParameterValue testParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 TestReturnValue testReturn = new TestReturnValue(); this.ReturnValue = testReturn; // ↓業務処理----------------------------------------------------- DataSet ds = 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.SQLText = "SELECT * FROM Shippers"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLText = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ROOT>SELECT * FROM Shippers</ROOT>"; break; } // 戻り値 ds ds = new DataSet(); // 共通Daoを実行 cmnDao.ExecSelectFill_DS(ds); // 戻り値を設定 testReturn.Obj = ds; break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // 戻り値 ds ds = new DataSet(); ds.Tables.Add(new DataTable()); // 自動生成Daoを実行 genDao.D2_Select(ds.Tables[0]); // 戻り値を設定 testReturn.Obj = ds; break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectAll_DS(testParameter, testReturn); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(testParameter); }
/// <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"]); } }
/// <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に登録 ※最終処理主キー値の登録など // ↑業務処理----------------------------------------------------- }
/// <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(); }