/// <summary>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_Select(MuParameterValue muParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); this.ReturnValue = muReturn; // 引数をアンマーシャル //DTTables dtts_in = Marshalling.StringToDTTables(muParameter.Value); //DTTable dtt_in = dtts_in[0]; //DTRow dtrow_in = dtt_in.Rows[0]; DTTables dtts_out = null; DTTable dtt_out = null; DTRow dtrow_out = null; // ↓業務処理----------------------------------------------------- DataTable dt = null; switch ((muParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); switch ((muParameter.ActionType.Split('%'))[2]) { case "static": // 静的SQLを指定 cmnDao.SQLFileName = "ShipperSelect.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperSelect.xml"; break; } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P1", muParameter.Value); // 戻り値 dt dt = new DataTable("rtn"); // 共通Daoを実行 cmnDao.ExecSelectFill_DT(dt); // キャストの対策コードを挿入 dtt_out = new DTTable("ret"); dtt_out.Cols.Add(new DTColumn("ShipperID", DTType.Int32)); dtt_out.Cols.Add(new DTColumn("CompanyName", DTType.String)); dtt_out.Cols.Add(new DTColumn("Phone", DTType.String)); dtrow_out = dtt_out.Rows.AddNew(); // ・SQLの場合、ShipperIDのintがInt32型にマップされる。 // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。 // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。 if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32") { // Int32なのでキャスト dtrow_out["ShipperID"] = (int)dt.Rows[0].ItemArray.GetValue(0); } else { // それ以外の場合、一度、文字列に変換してInt32.Parseする。 dtrow_out["ShipperID"] = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString()); } dtrow_out["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1); dtrow_out["Phone"] = (string)dt.Rows[0].ItemArray.GetValue(2); // 戻り値をマーシャリングして設定 dtts_out = new DTTables(); dtts_out.Add(dtt_out); muReturn.Value = DTTables.DTTablesToString(dtts_out); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.PK_ShipperID = muParameter.Value; // 戻り値 dt dt = new DataTable("rtn"); // 自動生成Daoを実行 genDao.S2_Select(dt); // キャストの対策コードを挿入 dtt_out = new DTTable("ret"); dtt_out.Cols.Add(new DTColumn("ShipperID", DTType.Int32)); dtt_out.Cols.Add(new DTColumn("CompanyName", DTType.String)); dtt_out.Cols.Add(new DTColumn("Phone", DTType.String)); dtrow_out = dtt_out.Rows.AddNew(); // ・SQLの場合、ShipperIDのintがInt32型にマップされる。 // ・ODPの場合、ShipperIDのNUMBERがInt64型にマップされる。 // ・DB2の場合、ShipperIDのDECIMALがxxx型にマップされる。 if (dt.Rows[0].ItemArray.GetValue(0).GetType().ToString() == "System.Int32") { // Int32なのでキャスト dtrow_out["ShipperID"] = (int)dt.Rows[0].ItemArray.GetValue(0); } else { // それ以外の場合、一度、文字列に変換してInt32.Parseする。 dtrow_out["ShipperID"] = int.Parse(dt.Rows[0].ItemArray.GetValue(0).ToString()); } dtrow_out["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1); dtrow_out["Phone"] = (string)dt.Rows[0].ItemArray.GetValue(2); // 戻り値をマーシャリングして設定 dtts_out = new DTTables(); dtts_out.Add(dtt_out); muReturn.Value = DTTables.DTTablesToString(dtts_out); break; default: // 個別Daoを使用する。 // 個別Daoを実行 string companyName; string phone; LayerD myDao = new LayerD(this.GetDam()); myDao.Select(muParameter.ActionType, muParameter.Value, out companyName, out phone); // 戻り値をマーシャリングして設定 dtt_out = new DTTable("ret"); dtt_out.Cols.Add(new DTColumn("ShipperID", DTType.Int32)); dtt_out.Cols.Add(new DTColumn("CompanyName", DTType.String)); dtt_out.Cols.Add(new DTColumn("Phone", DTType.String)); dtrow_out = dtt_out.Rows.AddNew(); dtrow_out["ShipperID"] = int.Parse(muParameter.Value); dtrow_out["CompanyName"] = companyName; dtrow_out["Phone"] = phone; dtts_out = new DTTables(); dtts_out.Add(dtt_out); muReturn.Value = DTTables.DTTablesToString(dtts_out); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <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_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>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>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="muParameter">汎用引数クラス</param> private void UOC_Insert(MuParameterValue muParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); this.ReturnValue = muReturn; // ↓業務処理----------------------------------------------------- string companyName = ((string[])(muParameter.Bean))[0]; string phone = ((string[])(muParameter.Bean))[1]; switch ((muParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); cmnDao.SQLFileName = "ShipperInsert.sql"; // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P2", companyName); cmnDao.SetParameter("P3", phone); // 共通Daoを実行 // 戻り値を設定 muReturn.Bean = cmnDao.ExecInsUpDel_NonQuery().ToString(); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.CompanyName = companyName; genDao.Phone = phone; // 自動生成Daoを実行 // 戻り値を設定 muReturn.Bean = genDao.D1_Insert().ToString(); break; default: // 個別Daoを使用する。 string ret = ""; LayerD myDao = new LayerD(this.GetDam()); myDao.Insert(muParameter.ActionType, companyName, phone, out ret); muReturn.Bean = ret; break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <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="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="muParameter">汎用引数クラス</param> private void UOC_Select(MuParameterValue muParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); muReturn.Bean = new Informations(""); this.ReturnValue = muReturn; // 引数をアンマーシャル string shipperID = ((Informations)muParameter.Bean).Str; // ↓業務処理----------------------------------------------------- DataTable dt = null; Dictionary<string, string> dic = null; switch ((muParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); switch ((muParameter.ActionType.Split('%'))[2]) { case "static": // 静的SQLを指定 cmnDao.SQLFileName = "ShipperSelect.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperSelect.xml"; break; } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P1", shipperID); // 戻り値 dt dt = new DataTable("rtn"); // 共通Daoを実行 cmnDao.ExecSelectFill_DT(dt); // 戻り値を設定 dic = new Dictionary<string, string>(); dic["ShipperID"] = dt.Rows[0].ItemArray.GetValue(0).ToString(); dic["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1); dic["Phone"] = (string)dt.Rows[0].ItemArray.GetValue(2); muReturn.Bean = new Informations(dic); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.PK_ShipperID = shipperID; // 戻り値 dt dt = new DataTable("rtn"); // 自動生成Daoを実行 genDao.S2_Select(dt); // 戻り値を設定 dic = new Dictionary<string, string>(); dic["ShipperID"] = dt.Rows[0].ItemArray.GetValue(0).ToString(); dic["CompanyName"] = (string)dt.Rows[0].ItemArray.GetValue(1); dic["Phone"] = (string)dt.Rows[0].ItemArray.GetValue(2); muReturn.Bean = new Informations(dic); break; default: // 個別Daoを使用する。 string companyName; string phone; // 個別Daoを実行 LayerD myDao = new LayerD(this.GetDam()); myDao.Select(muParameter.ActionType, shipperID, out companyName, out phone); // 戻り値を設定 dic = new Dictionary<string, string>(); dic["CompanyName"] = companyName; dic["Phone"] = phone; muReturn.Bean = new Informations(dic); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <summary>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_Update(MuParameterValue muParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); muReturn.Bean = new Informations(""); this.ReturnValue = muReturn; // 引数をアンマーシャル Dictionary<string, string> dic = ((Informations)muParameter.Bean).Dictionary; // ↓業務処理----------------------------------------------------- switch ((muParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); switch ((muParameter.ActionType.Split('%'))[2]) { case "static": // 静的SQLを指定 cmnDao.SQLFileName = "ShipperUpdate.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperUpdate.xml"; break; } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P1", dic["ShipperID"]); cmnDao.SetParameter("P2", dic["CompanyName"]); cmnDao.SetParameter("P3", dic["Phone"]); // 共通Daoを実行 // 戻り値を設定 muReturn.Bean = new Informations(cmnDao.ExecInsUpDel_NonQuery().ToString()); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.PK_ShipperID = dic["ShipperID"]; genDao.Set_CompanyName_forUPD = dic["CompanyName"]; genDao.Set_Phone_forUPD = dic["Phone"]; // 自動生成Daoを実行 // 戻り値を設定 muReturn.Bean = new Informations(genDao.S3_Update().ToString()); break; default: // 個別Daoを使用する。 // 個別Daoを実行 string ret = ""; LayerD myDao = new LayerD(this.GetDam()); myDao.Update(muParameter.ActionType, dic["ShipperID"], dic["CompanyName"], dic["Phone"], out ret); // 戻り値を設定 muReturn.Bean = new Informations(ret); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <summary>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_SelectAll_DSQL(MuParameterValue muParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); muReturn.Bean = new Informations(""); this.ReturnValue = muReturn; // 引数をアンマーシャル Dictionary<string, string> dic = ((Informations)muParameter.Bean).Dictionary; // ↓業務処理----------------------------------------------------- DataTable dt = null; switch ((muParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); switch ((muParameter.ActionType.Split('%'))[2]) { case "static": // 静的SQLを指定 cmnDao.SQLFileName = "ShipperSelectOrder.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperSelectOrder.xml"; break; } // ユーザ定義パラメタに対して、動的に値を設定する。 string orderColumn = ""; string orderSequence = ""; if (dic["OrderColumn"].ToString() == "c1") { orderColumn = "ShipperID"; } else if (dic["OrderColumn"].ToString() == "c2") { orderColumn = "CompanyName"; } else if (dic["OrderColumn"].ToString() == "c3") { orderColumn = "Phone"; } else { } if (dic["OrderSequence"].ToString() == "A") { orderSequence = "ASC"; } else if (dic["OrderSequence"].ToString() == "D") { orderSequence = "DESC"; } else { } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P1", "test"); // ユーザ入力は指定しない。 // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、 // 必要であれば、前後の空白を明示的に指定する必要がある。 cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " "); cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " "); // 戻り値 dt dt = new DataTable("rtn"); // 共通Daoを実行 cmnDao.ExecSelectFill_DT(dt); // 戻り値をマーシャリングして設定 muReturn.Bean = new Informations(DataContractHelper.ToList(dt)); break; //case "generate": // 自動生成Daoを使用する。 // // 当該SQLなし // break; default: // 個別Daoを使用する。 // 個別Daoを実行 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectAll_DSQL( muParameter.ActionType, dic["OrderColumn"].ToString(), dic["OrderSequence"].ToString(), out dt); // 戻り値をマーシャリングして設定 muReturn.Bean = new Informations(DataContractHelper.ToList(dt)); break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <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); }
/// <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); }
/// <summary>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_SelectAll_DSQL(MuParameterValue muParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); this.ReturnValue = muReturn; // ↓業務処理----------------------------------------------------- DataTable dt = null; Shipper[] shippers = null; string orderColumn = ((string[])(muParameter.Bean))[0]; string orderSequence = ((string[])(muParameter.Bean))[1]; switch ((muParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); switch ((muParameter.ActionType.Split('%'))[2]) { case "static": // 静的SQLを指定 cmnDao.SQLFileName = "ShipperSelectOrder.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperSelectOrder.xml"; break; } // ユーザ定義パラメタに対して、動的に値を設定する。 if (orderColumn == "c1") { orderColumn = "ShipperID"; } else if (orderColumn == "c2") { orderColumn = "CompanyName"; } else if (orderColumn == "c3") { orderColumn = "Phone"; } else { } if (orderSequence == "A") { orderSequence = "ASC"; } else if (orderSequence == "D") { orderSequence = "DESC"; } else { } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P1", "test"); // ユーザ入力は指定しない。 // ※ 動的SQLのVALタグは、前後の空白をつめることが有るので、 // 必要であれば、前後の空白を明示的に指定する必要がある。 cmnDao.SetUserParameter("COLUMN", " " + orderColumn + " "); cmnDao.SetUserParameter("SEQUENCE", " " + orderSequence + " "); // 戻り値 dt dt = new DataTable("rtn"); // 共通Daoを実行 cmnDao.ExecSelectFill_DT(dt); // 戻り値を設定 shippers = new Shipper[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { Shipper shipper = new Shipper(); shipper.ShipperID = (int)dt.Rows[i]["ShipperID"]; shipper.CompanyName = (string)dt.Rows[i]["CompanyName"]; shipper.Phone = (string)dt.Rows[i]["Phone"]; shippers[i] = shipper; } muReturn.Bean = shippers; break; //case "generate": // 自動生成Daoを使用する。 // // 当該SQLなし // break; default: // 個別Daoを使用する。 LayerD myDao = new LayerD(this.GetDam()); myDao.SelectAll_DSQL(muParameter.ActionType, orderColumn, orderSequence, out dt); // 戻り値を設定 shippers = new Shipper[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { Shipper shipper = new Shipper(); shipper.ShipperID = (int)dt.Rows[i]["ShipperID"]; shipper.CompanyName = (string)dt.Rows[i]["CompanyName"]; shipper.Phone = (string)dt.Rows[i]["Phone"]; shippers[i] = shipper; } muReturn.Bean = shippers; break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <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>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_Select(MuParameterValue muParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); this.ReturnValue = muReturn; // ↓業務処理----------------------------------------------------- DataTable dt = null; Shipper shipper = null; switch ((muParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); switch ((muParameter.ActionType.Split('%'))[2]) { case "static": // 静的SQLを指定 cmnDao.SQLFileName = "ShipperSelect.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperSelect.xml"; break; } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P1", muParameter.Bean.ToString()); // 戻り値 dt dt = new DataTable("rtn"); // 共通Daoを実行 cmnDao.ExecSelectFill_DT(dt); // 戻り値を設定 shipper = new Shipper(); shipper.ShipperID = (int)muParameter.Bean; shipper.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1); shipper.Phone = (string)dt.Rows[0].ItemArray.GetValue(2); muReturn.Bean = shipper; break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.PK_ShipperID = muParameter.Bean.ToString(); // 戻り値 dt dt = new DataTable("rtn"); // 自動生成Daoを実行 genDao.S2_Select(dt); // 戻り値を設定 shipper = new Shipper(); shipper.ShipperID = (int)muParameter.Bean; shipper.CompanyName = (string)dt.Rows[0].ItemArray.GetValue(1); shipper.Phone = (string)dt.Rows[0].ItemArray.GetValue(2); muReturn.Bean = shipper; break; default: // 個別Daoを使用する。 string companyName; string phone; LayerD myDao = new LayerD(this.GetDam()); myDao.Select(muParameter.ActionType, muParameter.Bean.ToString(), out companyName, out phone); // 戻り値を設定 shipper = new Shipper(); shipper.ShipperID = (int)muParameter.Bean; shipper.CompanyName = companyName; shipper.Phone = phone; muReturn.Bean = shipper; break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <summary>次のワークフロー依頼を取得します。</summary> /// <param name="processingWfReq">選択した処理中ワークフロー依頼</param> /// <param name="fromUserId">FromユーザID(必須)</param> /// <returns>次のワークフロー</returns> /// <remarks> /// fromUsersId /// 御中IDでの呼び出しと、ユーザIDでの呼び出しは2回に分ける。 /// </remarks> public DataTable GetNextWfRequest(DataRow processingWfReq, decimal fromUserId) { #region チェック処理を実装 if (processingWfReq == null) { throw new BusinessSystemException( MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "processingWfReq"))); } else if (!processingWfReq.Table.Columns.Contains("SubSystemId")) { throw new BusinessSystemException( MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED, "SubSystemId", "processingWfReq"))); } #endregion // -------------------------------------------------- // 次のワークフロー依頼を取得 // -------------------------------------------------- // M_WorkflowのSELECT // -------------------------------------------------- DataTable dt = new DataTable(); DaoM_Workflow daoM_Workflow = new DaoM_Workflow(this.Dam); // 検索条件 daoM_Workflow.SubSystemId = processingWfReq["SubSystemId"]; daoM_Workflow.WorkflowName = processingWfReq["WorkflowName"]; daoM_Workflow.WorkflowNo = processingWfReq["NextWorkflowNo"]; daoM_Workflow.FromUserId = fromUserId; // ワークフローの取得 daoM_Workflow.D2_Select(dt); // -------------------------------------------------- // TurnBack, Replyワークフローのフィルタ // -------------------------------------------------- // T_WorkflowHistoryのSELECT // -------------------------------------------------- CmnDao dao = new CmnDao(this.Dam); // 次のワークフロー依頼 = TurnBackの場合のフィルタ処理 DataRow[] drs = dt.Select("ActionType = 'TurnBack'"); if (drs.Length > 1) { // GetTurnBackWorkflow // 連続TurnBack場合の対応 dao.SQLFileName = "GetTurnBackWorkflow.sql"; dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]); dao.SetParameter("NextWorkflowNo", processingWfReq["NextWorkflowNo"]); object temp = dao.ExecSelectScalar(); // GetTurnBackWorkflow2 // Start直後にTurnBack場合の対応 if (temp == null) { dao.SQLFileName = "GetTurnBackWorkflow2.sql"; dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]); dao.SetParameter("NextWorkflowNo", processingWfReq["NextWorkflowNo"]); temp = dao.ExecSelectScalar(); } string wfPositionId = (string)temp; foreach (DataRow dr in drs) { if ((string)dr["NextWfPositionId"] == wfPositionId) { // 対象 } else { // 対象外(削除) dr.Delete(); } } // 削除処理の受け入れ dt.AcceptChanges(); } // 次のワークフロー依頼 = Replyの場合のフィルタ処理 drs = dt.Select("ActionType = 'Reply'"); if (drs.Length > 1) { dao.SQLFileName = "GetReplyWorkflow.xml"; dao.SetParameter("WorkflowControlNo", processingWfReq["WorkflowControlNo"]); #region CorrespondOfReplyWorkflow ArrayList alCorrespondOfReplyWorkflow = new ArrayList(); foreach (DataRow dr in drs) { alCorrespondOfReplyWorkflow.Add(dr["CorrespondOfReplyWorkflow"]); } dao.SetParameter("CorrespondOfReplyWorkflow", alCorrespondOfReplyWorkflow); #endregion int workflowNo = (int)dao.ExecSelectScalar(); foreach (DataRow dr in drs) { if ((int)dr["CorrespondOfReplyWorkflow"] == workflowNo) { // これ } else { // 削除 dr.Delete(); } } // 削除処理の受け入れ dt.AcceptChanges(); } // リターン return dt; }
/// <summary>業務処理を実装</summary> /// <param name="muParameter">汎用引数クラス</param> private void UOC_Delete(MuParameterValue muParameter) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 MuReturnValue muReturn = new MuReturnValue(); this.ReturnValue = muReturn; // ↓業務処理----------------------------------------------------- switch ((muParameter.ActionType.Split('%'))[1]) { case "common": // 共通Daoを使用する。 // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); switch ((muParameter.ActionType.Split('%'))[2]) { case "static": // 静的SQLを指定 cmnDao.SQLFileName = "ShipperDelete.sql"; break; case "dynamic": // 動的SQLを指定 cmnDao.SQLFileName = "ShipperDelete.xml"; break; } // パラメタ ライズド クエリのパラメタに対して、動的に値を設定する。 cmnDao.SetParameter("P1", muParameter.Bean); // 共通Daoを実行 // 戻り値を設定 muReturn.Bean = cmnDao.ExecInsUpDel_NonQuery().ToString(); break; case "generate": // 自動生成Daoを使用する。 // 自動生成Daoを生成 DaoShippers genDao = new DaoShippers(this.GetDam()); // パラメタに対して、動的に値を設定する。 genDao.PK_ShipperID = muParameter.Bean; // 自動生成Daoを実行 // 戻り値を設定 muReturn.Bean = genDao.S4_Delete().ToString(); break; default: // 個別Daoを使用する。 string ret = ""; LayerD myDao = new LayerD(this.GetDam()); myDao.Delete(muParameter.ActionType, muParameter.Bean.ToString(), out ret); muReturn.Bean = ret; break; } // ↑業務処理----------------------------------------------------- // ロールバックのテスト this.TestRollback(muParameter); }
/// <summary>返信のToユーザIDを履歴から取得します。</summary> /// <param name="replyBackWorkflow">返信ののワークフロー</param> /// <param name="workflowControlNo">ワークフロー管理番号(必須)</param> /// <returns>ToユーザID</returns> public decimal GetReplyToUser(DataRow replyBackWorkflow, string workflowControlNo) { #region チェック処理を実装 if (replyBackWorkflow == null) { throw new BusinessSystemException( MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "replyBackWorkflow"))); } else if (!replyBackWorkflow.Table.Columns.Contains("SubSystemId")) { throw new BusinessSystemException( MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_FIELD_ISNT_CONTAINED, "SubSystemId", "replyBackWorkflow"))); } else if (string.IsNullOrEmpty(workflowControlNo)) { throw new BusinessSystemException( MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[0], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR[1], String.Format(MyBusinessSystemExceptionMessage.WORKFLOW_ERROR_CHECK_EMPTY, "workflowControlNo"))); } #endregion // -------------------------------------------------- // 差戻しのToユーザIDを履歴から取得 // -------------------------------------------------- // T_WorkflowHistoryのSELECT // -------------------------------------------------- CmnDao dao = new CmnDao(this.Dam); dao.SQLFileName = "GetReplyToUser.sql"; dao.SetParameter("WorkflowControlNo", workflowControlNo); dao.SetParameter("CorrespondOfReplyWorkflow", replyBackWorkflow["CorrespondOfReplyWorkflow"]); return (decimal)dao.ExecSelectScalar(); }
/// <summary>検索条件の設定</summary> /// <param name="parameterValue">引数クラス</param> /// <param name="cmnDao">共通Dao</param> /// <returns>Where句</returns> private string SetSearchConditions( _3TierParameterValue parameterValue, CmnDao cmnDao) { // 検索条件 string whereSQL = ""; #region AND // AndEqualSearchConditions // nullチェック if (parameterValue.AndEqualSearchConditions == null) { // == null } else { // != null foreach (string k in parameterValue.AndEqualSearchConditions.Keys) { // フラグ bool isSetted = false; // nullチェック(null相当を要検討 if (parameterValue.AndEqualSearchConditions[k] == null) { // == null } else { // != null // 文字列チェック if (parameterValue.AndEqualSearchConditions[k] is string) { // 文字列の場合 if ((string)parameterValue.AndEqualSearchConditions[k] == "") { // 空文字列(★ 扱いを検討 → 検索条件の空文字列は検索しない扱い } else { // 空文字列でない。 isSetted = true; } } else { // オブジェクトの場合 isSetted = true; } } // パラメタを設定 if (isSetted) { whereSQL = GenWhereAndSetParameter( WHERE_SQL_TEMPLATE_EQUAL, whereSQL, cmnDao, k, parameterValue.AndEqualSearchConditions[k], false); isSetted = false; } } } // AndLikeSearchConditions // nullチェック if (parameterValue.AndLikeSearchConditions == null) { // == null } else { // != null foreach (string k in parameterValue.AndLikeSearchConditions.Keys) { // nullチェック(null相当を要検討 if (string.IsNullOrEmpty(parameterValue.AndLikeSearchConditions[k])) { // 空文字列 } else { // 空文字列でない。 // パラメタを設定 whereSQL = GenWhereAndSetParameter( WHERE_SQL_TEMPLATE_LIKE, whereSQL, cmnDao, k, parameterValue.AndLikeSearchConditions[k], true); } } } #endregion #region OR // OrEqualSearchConditions // nullチェック if (parameterValue.OrEqualSearchConditions == null) { // == null } else { // != null foreach (string k in parameterValue.OrEqualSearchConditions.Keys) { // フラグ bool isSetted = false; // nullチェック(null相当を要検討 if (parameterValue.OrEqualSearchConditions[k] == null) { // == null } else { // != null // OR条件はループする。 int i = 0; foreach (object o in parameterValue.OrEqualSearchConditions[k]) { // 文字列チェック if (o is string) { // 文字列の場合 if ((string)o == "") { // 空文字列(★ 扱いを検討 → 検索条件の空文字列は検索しない扱い } else { // 空文字列でない。 isSetted = true; } } else { // オブジェクトの場合 isSetted = true; } // パラメタを設定 if (isSetted) { whereSQL = GenWhereOrSetParameter( WHERE_SQL_TEMPLATE_EQUAL, whereSQL, cmnDao, k, o, i, false); isSetted = false; i++; } } } } } // OrLikeSearchConditions // nullチェック if (parameterValue.OrLikeSearchConditions == null) { // == null } else { // != null foreach (string k in parameterValue.OrLikeSearchConditions.Keys) { // nullチェック(null相当を要検討 if (parameterValue.OrLikeSearchConditions[k] == null) { // == null } else { // != null // OR条件はループする。 int i = 0; foreach (string s in parameterValue.OrLikeSearchConditions[k]) { // 文字列の場合 if ((string)s == "") { // 空文字列 } else { // 空文字列でない。 // パラメタを設定 whereSQL = GenWhereOrSetParameter( WHERE_SQL_TEMPLATE_LIKE, whereSQL, cmnDao, k, s, i, true); i++; } } } } } #endregion #region その他 // 追加の検索条件(要:半角スペース) whereSQL += " " + parameterValue.ElseWhereSQL; // ElseSearchConditions // nullチェック if (parameterValue.ElseSearchConditions == null) { // == null } else { // != null foreach (string k in parameterValue.ElseSearchConditions.Keys) { // nullチェック(null相当を要検討 if (parameterValue.ElseSearchConditions[k] == null) { // == null } else { // != null cmnDao.SetParameter(k, parameterValue.ElseSearchConditions[k]); } } } #endregion // Where句の付与(要:Trim) if (!string.IsNullOrEmpty(whereSQL.Trim())) { // (要:半角スペース) whereSQL = "WHERE " + whereSQL; } // 先頭の論理演算子を削除 return BaseDam.DeleteFirstLogicalOperatoronWhereClause(whereSQL); }
/// <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>1件取得処理を実装</summary> /// <param name="parameterValue">引数クラス</param> private void UOC_SelectRecord(_3TierParameterValue parameterValue) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 _3TierReturnValue returnValue = new _3TierReturnValue(); this.ReturnValue = returnValue; // ↓業務処理----------------------------------------------------- // 共通Dao CmnDao cmnDao = new CmnDao(this.GetDam()); // 検索条件の指定 // AndEqualSearchConditions(主キー foreach (string k in parameterValue.AndEqualSearchConditions.Keys) { // nullチェック(null相当を要検討 if (parameterValue.AndEqualSearchConditions[k] == null) { // == null } else { // != null // 文字列の場合の扱い if (parameterValue.AndEqualSearchConditions[k] is string) { if (!string.IsNullOrEmpty((string)parameterValue.AndEqualSearchConditions[k])) { // パラメタ指定 cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]); } } else { // パラメタ指定 cmnDao.SetParameter(k, parameterValue.AndEqualSearchConditions[k]); } } } // DataTableをインスタンス化 if (parameterValue.DataTableType == null) { // == null returnValue.Dt = new DataTable(); } else { // != null // 型付きDataTable //(パブリック・デフォルト・コンストラクタ) returnValue.Dt = (DataTable)parameterValue.DataTableType.InvokeMember( null, BindingFlags.CreateInstance, null, null, null); } // SQLを設定して cmnDao.SQLFileName = this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter + "_" + this.MethodNameHeaderS + this.MethodLabel_Sel + this.MethodNameFooterS + ".xml"; // パラメタは指定済み // DataTableを取得 cmnDao.ExecSelectFill_DT(returnValue.Dt); // ↑業務処理----------------------------------------------------- }
/// <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(); }
/// <summary>バッチ更新処理を実装</summary> /// <param name="parameterValue">引数クラス</param> private void UOC_BatchUpdate(_3TierParameterValue parameterValue) { // 戻り値クラスを生成して、事前に戻り地に設定しておく。 _3TierReturnValue returnValue = new _3TierReturnValue(); this.ReturnValue = returnValue; // ↓業務処理----------------------------------------------------- // 共通Dao CmnDao cmnDao = new CmnDao(this.GetDam()); int i = 0; // 件数のカウント DataTable dt = (DataTable)parameterValue.Obj; // バッチ更新 foreach (DataRow dr in dt.Rows) { switch (dr.RowState) { case DataRowState.Added: // 追加 // SQLを設定して cmnDao.SQLFileName = this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter + "_" + this.MethodNameHeaderD + this.MethodLabel_Ins + this.MethodNameFooterD + ".xml"; // パラメタ指定 foreach (DataColumn c in dt.Columns) { // 空文字列も通常の値と同一に扱う cmnDao.SetParameter(c.ColumnName, dr[c]); } // 更新処理を実行 i += cmnDao.ExecInsUpDel_NonQuery(); break; case DataRowState.Modified: // 更新 // SQLを設定して cmnDao.SQLFileName = this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter + "_" + this.MethodNameHeaderS + this.MethodLabel_Upd + this.MethodNameFooterS + ".xml"; // パラメタ指定 foreach (DataColumn dc in dt.Columns) { // 主キー・タイムスタンプ列の設定はUP側で。 // また、空文字列も通常の値と同一に扱う。 if (parameterValue.AndEqualSearchConditions.ContainsKey(dc.ColumnName)) { // Where条件は、DataRowVersion.Originalを付与 cmnDao.SetParameter(dc.ColumnName, dr[dc, DataRowVersion.Original]); } else { cmnDao.SetParameter( this.UpdateParamHeader + dc.ColumnName + this.UpdateParamFooter, dr[dc]); } } // 更新処理を実行 i += cmnDao.ExecInsUpDel_NonQuery(); break; case DataRowState.Deleted: // 削除 // SQLを設定して cmnDao.SQLFileName = this.DaoClassNameHeader + parameterValue.TableName + this.DaoClassNameFooter + "_" + this.MethodNameHeaderS + this.MethodLabel_Del + this.MethodNameFooterS + ".xml"; // パラメタ指定 foreach (DataColumn c in dt.Columns) { // 主キー・タイムスタンプ列の設定はUP側で。 // また、空文字列も通常の値と同一に扱う。 if (parameterValue.AndEqualSearchConditions.ContainsKey(c.ColumnName)) { // Where条件は、DataRowVersion.Originalを付与 cmnDao.SetParameter(c.ColumnName, dr[c, DataRowVersion.Original]); } } // 更新処理を実行 i += cmnDao.ExecInsUpDel_NonQuery(); break; default: // 上記以外 // なにもしない。 break; } } // 件数を返却 returnValue.Obj = i; // ↑業務処理----------------------------------------------------- }
/// <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="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> /// 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="parameter">引数クラス</param> private void UOC_ExecuteBatchProcess(ExecuteBatchProcessParameterValue parameter) { // 戻り値クラスを生成して、事前に戻り値に設定しておく。 this.ReturnValue = new VoidReturnValue(); // ↓業務処理----------------------------------------------------- ArrayList pkList = parameter.SubPkList; //主キー一覧(1トランザクション分) DataTable dataTable = new DataTable(); //データ一覧(主キーを元に検索したデータ) //Ordersテーブルからデータを検索する // ↓DBアクセス----------------------------------------------------- // 共通Daoを生成 CmnDao cmnDao = new CmnDao(this.GetDam()); // 動的SQLを指定 cmnDao.SQLFileName = "SelectInOrderID.xml"; // パラメータを設定 cmnDao.SetParameter("OrderID", pkList); // 共通Daoを実行 cmnDao.ExecSelectFill_DT(dataTable); // ↑DBアクセス----------------------------------------------------- //Orders2テーブルに1件ずつ追加する for (int index = 0; index < dataTable.Rows.Count; index++) { DataRow row = dataTable.Rows[index]; //1件分のデータ //todo:編集処理など // ↓DBアクセス----------------------------------------------------- // 自動生成Daoを生成 DaoOrders2 dao = new DaoOrders2(this.GetDam()); // パラメータを設定 dao.PK_OrderID = row["OrderID"]; dao.CustomerID = row["CustomerID"]; dao.EmployeeID = row["EmployeeID"]; dao.OrderDate = row["OrderDate"]; dao.RequiredDate = row["RequiredDate"]; dao.ShippedDate = row["ShippedDate"]; dao.ShipVia = row["ShipVia"]; dao.Freight = row["Freight"]; dao.ShipName = row["ShipName"]; dao.ShipAddress = row["ShipAddress"]; dao.ShipCity = row["ShipCity"]; dao.ShipRegion = row["ShipRegion"]; dao.ShipPostalCode = row["ShipPostalCode"]; dao.ShipCountry = row["ShipCountry"]; // 共通Daoを実行 dao.S1_Insert(); // ↑DBアクセス----------------------------------------------------- } // todo:中間コミット情報をDBに登録 ※最終処理主キー値の登録など // ↑業務処理----------------------------------------------------- }