kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

12月01日に、Vectorから、親子テーブルの1画面表示対応など修正「Ver1.5(202111240000)」公開OKのメールが来た。

1.Vectorから「kaz_javaSpringBootプログラム自動作成◎生成ツール」(
www.vector.co.jp)親子テーブルの1画面表示対応とバグ修正「Ver1.5(202111240000)」が公開OKとなった。

修正履歴は以下のようになる。
・1.5(202111240000)
 0.マクロの使用法に親子画面(登録、照会、更新、削除各々1画面で親子関係のテーブルを扱う)を追記した
  ■「javaSpringBootプログラム作成マクロ.xlsm」の「ReadMe」シートに親子画面について追記した。
  ■「ReadMe補足 自動作成したPGMサンプルを動かすときは」シートを追加した。これによりツールに対する理解が深まることを期待している。

 1.仕様追加
  [1]ツール修正
   ■「javaSpringBootテーブル項目一覧などの定義.xlsm」の「★TOOL用コンスタント★」シート
    ①L~N列2行目に親子画面(登録、照会、更新、削除各々1画面で親子関係のテーブルを扱う)を
     作成したいテーブルを、
     「親テーブル名(親テーブル主キーカラム名,・・・複数はカンマ区切り・・・):子テーブル名(子テーブル主キーカラム名,・・・複数はカンマ区切り・・・),
     ・・・複数はカンマ区切り・・・」
     例「purchase_hist(purchase_hist_id):purchase_detail_hist(purchase_hist_id),
      category(category_cd):subcategory(category_cd),
      subcategory(category_cd,subcategory_cd):extracategory(category_cd,subcategory_cd)」
     として登録するようにする。
     自動作成時には、ここに登録してある親子テーブルのみ親子画面を作成するようにする。
     注意:同一親テーブルに子供が複数あるパターンには対応していません。
        親テーブル主キーカラム名および、子テーブル主キーカラム名は「javaSpringBootテーブル項目一覧などの定義.xlsm」のPK列に値が入っていることが必須です。
    ②L~M列8行目に、親子画面の子テーブルMAX数(C_JOIN_DSP_DEFAULT_SIZE=50)を登録し、自動作成に使用する。

   ■「javaSpringBootプログラム作成マクロ.xlsm」の「Module1_一気にPGM作成Otaasuke」マクロを修正する。

  [2]自動作成後のPGMがどのようになるか
   ■親子画面(登録、照会、更新、削除各々1画面で親子関係のテーブルを扱う)を作成
    理由:現在、1テーブル1画面で作成されるが、親子関係があるテーブルも1画面で作成したい。
    注意:以下は親子画面(テーブル定義エクセルで指定する)作成時の話で、
       1テーブル1画面作成時は今まで通りのPGM作成とする。

    ①messages.properties
     ・親子画面用のエラーメッセージ項目名を追加登録する。
     ・親子画面用のtypeMismatchエラーメッセージを追加登録する。

    ②親テーブルentityクラスを修正する
     ・子テーブルのEntityクラスリスト項目を「@OneToMany
     @JoinColumn(name="子テーブルFKカラム名"」として追加する。
    
    ③子テーブルのentityクラスを修正する。
     ・親テーブルのEntityクラスリスト項目を「@ManyToOne
      @JoinColumn(name="子テーブルFKカラム名", referencedColumnName = "親テーブル主キーカラム名",
      insertable = false, updatable = false)」として追加する。
      補足:DBエレメント用にすでに作成しようとしている「@ManyToOne・・・」が作成されてる時は、それを使う。

    ④親テーブルJoinformクラスを新規作成する
     ・親テーブルの新規JoinFormを、親テーブルのFormを継承し、子テーブルの新規JoinFormリスト項目を追記して作成する。

    ⑤子テーブルの新規JoinFormを新規作成する
     ・子テーブルの新規JoinFormを、子テーブルのFormから親テーブル主キー項目を削除し、親テーブルObjectを削除して作成する。

    ⑥親テーブルのControllerクラスを修正する
     ・画面中の子テーブルデータの最大サイズ=Max50を指定
     ・親テーブルInsSubメソッドを子テーブルを取り込んだロジックに修正する。
     ・setAddNumMapForAttributeメソッドを新規作成し、子テーブルデータの追加最大残行数を設定する。
     ・子テーブルInsListAddを新規作成し、子テーブルの1行追加処理をおこなう。
     ・子テーブルInsListDelを新規作成し、子テーブルの1行削除処理をおこなう。
     ・子テーブルListAddを新規作成し、子テーブルの1行追加処理SUBをおこなう。
     ・子テーブルListDelを新規作成し、子テーブルの1行削除処理SUBをおこなう。
     ・親テーブルInsDoメソッドを子テーブルを取り込んだロジックに修正する。
     ・親テーブルUpdメソッドを子テーブルを取り込んだロジックに修正する。
     ・子テーブルUpdListAddを新規作成し、子テーブルの1行追加処理をおこなう。
     ・子テーブルUpdListDelを新規作成し、子テーブルの1行削除処理をおこなう。
     ・親テーブルUpdDoメソッドを子テーブルを取り込んだロジックに修正する。
     ・checkPkFor子テーブルJoinUploadを新規作成し、子テーブルのPKチェックを行う。
     ・親テーブルUpdListDoメソッドの”親テーブルentityクラスに子テーブルのEntityクラスリスト項目”したことによる修正を行う。
     ・親テーブルDelDoメソッドで、削除前に子テーブルの有無をチェックし、存在する場合エラーにするように修正する。

    ⑦子テーブルのrepositoryクラスを修正する
     ・findBy親キーの@Queryに、” order by 主キー”を追記する。

    ⑧親テーブルServiceImpl.javaを修正する
     ・registerメソッドは削除せずに、親子画面でないときはそのまま使う。
     ・registerJoinメソッドを新規追加。(registerメソッドをコピーし、画面入力の子テーブルデータを登録するようにする。)
     ・registerFor親テーブル名InsUpdListFormメソッドに、”親テーブルentityクラスに子テーブルのEntityクラスリスト項目”したことによる修正を行う。
     ・registerFor親テーブル名UpCsvDoメソッドに、”親テーブルentityクラスに子テーブルのEntityクラスリスト項目”したことによる修正を行う。
     ・findByPkFor親テーブル名Formメソッドに、”親テーブルFromクラスに子テーブルのFormクラスリスト項目”したことによる修正を行う。
     ・sendメソッドに、子テーブル情報もメールに追記するよう修正する。
     ・findByPkFor親テーブル名JoinFormメソッドを新規追加。(findByPkFor親テーブル名Formメソッドをコピーし、子テーブルデータを設定するようにする。)
     ・updateメソッドは削削除せずに、親子画面でないときはそのまま使う。
     ・updateJoinメソッドを新規追加。(updateメソッドをコピーし、画面入力の子テーブルデータを登録、更新、削除するようにする。)

    ⑨親テーブルService.javaを修正する
     ・ImplのregisterJoinメソッドを新規追加と同様
     ・ImplのfindByPkFor親テーブル名JoinFormメソッドを新規追加と同様
     ・ImplのupdateJoinを新規追加と同様

    ⑩子テーブルServiceImpl.java 修正
     ・public void registerFor子テーブル名InsUpdListFormメソッドを、public List<PurchaseDetailHist> registerFor子テーブル名InsUpdListFormとした。

    ⑪子テーブルService.java 修正
     ・子テーブルServiceImpl.java修正と同様

    ⑫demo/upload/Purchase子テーブル名JoinUpload.javaを新規作成する。
     ・親テーブルの登録画面、更新画面で子テーブルデータの既存レコード有無、画面上での削除有無を保持する。

    ⑬resources/templates/mail/members/admin/子テーブル名InsMailForParent.txt
     ・親子画面で新規登録したときの子テーブルデータ用メール文を登録する。

    ⑭resources/templates/members/admin/親テーブル名Amend.htmlを修正する
     ・FormをJoinPFormに変更する。
     ・”<input type="hidden" name="num" th:value="'0'"/>”を追記する。

    ⑮resources/templates/members/admin/親テーブル名AmendRegister.htmlを修正する
     ・FormをJoinPFormに変更する。
     ・子テーブルの情報一覧を表示し、子テーブルデータを登録、更新、削除するようにする。

    ⑯resources/templates/members/admin/親テーブル名Detail.htmlを修正する
     ・子テーブルの情報一覧を表示するようにする。

    ⑰resources/templates/members/admin/親テーブル名Register.htmlを修正する
     ・FormをJoinPFormに変更する。
     ・”<input type="hidden" name="num" th:value="'0'"/>”を追記する。

 2.バグ修正
  ■・「kaz_javaSpringBootプログラム自動作成◎生成ツール」ver1.3(202108290000)で修正した
   以下の修正に誤認識があった。ので、修正した。
   ①各テーブル用コントローラの「@PostMapping(params="mode=insList_add")」メソッドで、
    @Validated({GroupOrder1.class, GroupOrder2.class})(入力チェック)を行ったが、
    未入力の時に行を増やそうとすると必須入力エラーになるので操作性が悪い。
    ので、@Validated({GroupOrder1.class, GroupOrder2.class})を@Validated({})にする。
   ②各テーブル用コントローラの「@PostMapping(params="mode=insList_del")」メソッドで、
    @Validated({GroupOrder1.class, GroupOrder2.class})(入力チェック)を行ったが、
    未入力の時に行を増やそうとすると必須入力エラーになるので操作性が悪い。
    ので、@Validated({GroupOrder1.class, GroupOrder2.class})を@Validated({})にする。
   修正内容:
    ①②ともに、「BindingResult result,」が必須で、「@Validated({})」は必要なかった。
    ので、「@Validated({})」を削除した。
  ■公開区分(openKbn)で表示非表示を制御しているが、自動作成されるPGMの項目名が「openKbn」固定になっていたので
   「項目名(ID)」から作成するようにした。