    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.hayabusa.report2;
    017
    018import java.io.File;
    019import java.util.function.Supplier;                                                             // 8.0.3.0 (2021/12/17)
    020// import java.util.List;                                                                               // 8.0.3.0 (2021/12/17)【保留】
    021
    022import org.opengion.fukurou.util.FileUtil;
    023import org.opengion.fukurou.util.StringUtil;
    024import org.opengion.fukurou.util.ZipArchive;                                    // 6.0.0.0 (2014/04/11) ZIP API変更
    025// import static org.opengion.fukurou.system.HybsConst.CR ;             // 6.1.0.0 (2014/12/26)
    026import static org.opengion.fukurou.system.HybsConst.FS ;                // 8.0.3.0 (2021/12/17)
    027
    028import org.opengion.hayabusa.common.HybsSystem;
    029import org.opengion.hayabusa.common.HybsSystemException;
    030// import org.opengion.hayabusa.report.CSVPrintRequest;                 // 5.9.0.0 (2015/09/04) 8.0.1.0 (2021/10/29) 保留
    031import org.opengion.hayabusa.io.HybsFileOperationFactory;               // 8.0.1.0 (2021/10/29) ExecThread → ExecProcess
    032//import org.opengion.hayabusa.report.ExcelInsert;                              // 7.4.4.0 (2021/06/30) Delete
    033//import org.opengion.hayabusa.report.ProgramRun;                               // 7.4.4.0 (2021/06/30) Delete
    034//import org.opengion.hayabusa.report.RFIDPrintRequest;                 // 7.4.4.0 (2021/06/30) Delete
    035// import static org.opengion.fukurou.system.HybsConst.FS;              // 6.1.0.0 (2014/12/26) refactoring // 8.0.0.0 (2021/07/31) Delete
    036
    037/**
    038 * 帳票要求に設定された実行方法により､各種出力､Excel取り込み処理を行います｡
    039 * 1.出力
    040 *  雛形ﾌｧｲﾙを一時ﾃﾞｨﾚｸﾄﾘに展開した後､帳票ﾃﾞｰﾀを埋め込み､最後にOpenOffice.orgの
    041 *  ﾌﾟﾛｾｽを利用して出力を行います｡
    042 *  対応している出力方法は､印刷､PDF出力､Excel出力です｡
    043 *  一時ﾃﾞｨﾚｸﾄﾘは､ｼｽﾃﾑﾘｿｰｽのREPORT_FILE_URLで定義されたﾃﾞｨﾚｸﾄﾘです｡
    044 *  これが定義されていない場合は､ｼｽﾃﾑﾘｿｰｽのFILE_URLで定義されたﾃﾞｨﾚｸﾄ以下の/REPORTに
    045 *  展開されます｡
    046 *  一時ﾌｧｲﾙは､処理が正常に終了した場合､削除されます｡(ODS出力のみにした場合は､出力直前の
    047 *  ODSﾌｧｲﾙは残ります)
    048 *  処理でｴﾗｰが発生した場合は､一時ﾌｧｲﾙはﾃﾞﾊﾞｯｸﾞのため､削除されません｡
    049 * 2.取り込み
    050 *  旧帳票ｼｽﾃﾑの取り込み処理及びその後のPG起動を行います｡
    051 *
    052 * 実行方法により､出力､入力を行います｡
    053 *
    054 * @og.group 帳票ｼｽﾃﾑ
    055 *
    056 * @version  4.0
    057 * @author   Hiroki.Nakamura
    058 * @since    JDK1.6
    059 */
    060public class ExecProcess {
    061
    062        /** 帳票処理ｷｭｰ */
    063        private final ExecQueue queue;
    064
    065        /** 出力ﾀｲﾌﾟ */
    066        private final String type;
    067
    068        private final long start = System.currentTimeMillis();          // 6.3.9.1 (2015/11/27) 修飾子を､なし → private に変更｡
    069        private final boolean debug;            // 4.3.0.0 (2008/07/15) ﾃﾞﾊﾞｯｸﾞの追加
    070
    071        private final String outTemp ;          // 8.0.1.0 (2021/10/29)
    072
    073//      /* 8.0.3.0 (2021/12/17) ods→xlsx変換時のｼｰﾄ毎の行数 */
    074//      【保留】private List<Integer> sheetRows  ;
    075
    076        /**
    077         * ｺﾝｽﾄﾗｸﾀ
    078         *
    079         * @og.rev 4.3.0.0 (2008/07/15)引数にdebugを追加
    080         *
    081         * @param qu            ExecQueueｵﾌﾞｼﾞｪｸﾄ
    082         * @param debugFlag ﾃﾞﾊﾞｯｸﾞﾌﾗｸﾞ[true/false]
    083         */
    084        public ExecProcess( final ExecQueue qu , final boolean debugFlag ) {
    085                queue = qu;
    086                type  = qu.getOutputType();
    087                debug = debugFlag;
    088
    089                // 8.0.1.0 (2021/10/29)
    090                outTemp = HybsSystem.url2dir( StringUtil.nval( HybsSystem.sys( "REPORT_FILE_URL" ) ,HybsSystem.sys( "FILE_URL" ) + "REPORT/" ) )
    091//                      + queue.getSystemId() + File.separator + queue.getListId() + File.separator + queue.getYkno();
    092                        + queue.getTempKey();           // 8.0.3.0 (2021/12/17)
    093        }
    094
    095        /**
    096         * 帳票処理ﾌﾟﾛｾｽを実行します｡
    097         *
    098         * @og.rev 4.3.0.0 (2008/07/15) debugの追加
    099         * @og.rev 4.3.3.4 (2008/11/01) ODS出力追加
    100         * @og.rev 5.1.2.0 (2010/01/01) 256ｼｰﾄを超えた場合の対応
    101         * @og.rev 8.0.1.0 (2021/10/29) CSV出力対応(ﾕﾘﾆﾀ帳票)は､一旦保留にします｡
    102         * @og.rev 8.0.1.0 (2021/10/29) OUT_ODS_XLSX (Excel2007形式) 評価用
    103         */
    104        public void process() {
    105                // 処理開始
    106//              addDebugMsg( "[INFO]EXEC-TIME:START=" + start );
    107                addDebugMsg( () -> "[INFO]EXEC-TIME:START=" );  // 8.0.3.0 (2021/12/17)
    108
    109                // 5.1.2.0 (2010/01/01) 基本的には1回で終了｡256ｼｰﾄを超える場合のみ内部でfalseを立てる(2回目を処理させる)
    110                queue.setEnd( true );
    111
    112                /*
    113                 * ======================================================================
    114                 * = 出力処理
    115                 * ======================================================================
    116                 */
    117                // ﾊﾟｰｽ
    118//              if( ExecQueue.OUT_ODS_ONLY.equals( type )
    119//                              || ExecQueue.OUT_ODS_PRINT.equals( type ) || ExecQueue.OUT_ODS_PDF.equals( type ) || ExecQueue.OUT_ODS_EXCEL.equals( type )
    120//                              || ExecQueue.OUT_ODS_PRINT_PDF.equals( type ) || ExecQueue.OUT_ODS_ODS.equals( type ) ) {
    121//                      parse();
    122//              }
    123
    124                // 8.0.1.0 (2021/10/29) ﾊﾟｰｽ CSV出力を保留にしたので､印刷のみ以外はﾊﾟｰｽする｡
    125                if( !ExecQueue.OUT_PRINT_ONLY.equals( type ) ) {
    126                        parse();
    127                }
    128
    129                // 印刷
    130                if( ExecQueue.OUT_PRINT_ONLY.equals( type ) || ExecQueue.OUT_ODS_PRINT.equals( type ) ) {
    131                        output( "PRINT" );
    132                }
    133                // PDF出力
    134                else if( ExecQueue.OUT_ODS_PDF.equals( type ) ) {
    135                        output( "PDF" );
    136                }
    137                // EXCEL出力
    138                else if( ExecQueue.OUT_ODS_EXCEL.equals( type ) ) {
    139                        output( "EXCEL" );
    140                }
    141                // 8.0.1.0 (2021/10/29) Excel2007出力
    142                else if( ExecQueue.OUT_ODS_XLSX.equals( type ) ) {
    143                        output( "XLSX" );
    144                }
    145                // 印刷 + PDF出力
    146                else if( ExecQueue.OUT_ODS_PRINT_PDF.equals( type ) ) {
    147                        output( "PRINT", "PDF" );
    148                }
    149                // 4.3.3.4 (2008/11/01) 追加 ODS出力
    150                else if( ExecQueue.OUT_ODS_ODS.equals( type ) ) {
    151                        output( "ODS" );
    152                }
    153
    154        //      /*
    155        //       * ======================================================================
    156        //       * = 取込処理
    157        //       * @og.rev 7.4.4.0 (2021/06/30) openGionV8事前準備(EXCEL取込廃止)
    158        //       * ======================================================================
    159        //       */
    160                // 取込 7.4.4.0 (2021/06/30) Delete
    161        //      if( ExecQueue.IN_INPUT_ONLY.equals( type ) || ExecQueue.IN_INPUT_EXEC.equals( type ) ) {
    162        //              input();
    163        //      }
    164
    165                // PG起動 7.4.4.0 (2021/06/30) Delete
    166        //      if( ExecQueue.IN_EXEC_ONLY.equals( type ) || ExecQueue.IN_INPUT_EXEC.equals( type ) ) {
    167        //              pgexec();
    168        //      }
    169
    170        //      /*
    171        //       * ======================================================================
    172        //       * = RFID出力処理
    173        //       * @og.rev 7.4.4.0 (2021/06/30) openGionV8事前準備(RFID出力廃止)
    174        //       * ======================================================================
    175        //       */
    176                // RFID出力 7.4.4.0 (2021/06/30) Delete
    177        //      if( ExecQueue.RFID_PRINT.equals( type ) || ExecQueue.RFID_ALLPRINT.equals( type )
    178        //                      || ExecQueue.RFID_ALLERASE.equals( type ) || ExecQueue.RFID_SEQERASE.equals( type ) ) {
    179        //              rfid();
    180        //      }
    181
    182        //      // 8.0.1.0 (2021/10/29) CSV出力対応(ﾕﾘﾆﾀ帳票)は､一旦保留にします｡
    183        //      /*
    184        //       * ======================================================================
    185        //       * = CSV出力処理(ﾕﾆﾘﾀ 帳票形式のCSV)
    186        //       * 5.9.4.2 (2016/01/13) Excel2追加
    187        //       * ======================================================================
    188        //       */
    189        //      if( ExecQueue.CSV_PRINT.equals( type ) || ExecQueue.CSV_PRINT_EXCEL.equals( type )
    190        //                      || ExecQueue.CSV_PRINT_PDF.equals( type ) || ExecQueue.CSV_PRINT_EXCEL2.equals( type ) ) {
    191        //              csv();
    192        //      }
    193
    194//              addDebugMsg( "[INFO]EXEC-TIME:END=" + System.currentTimeMillis() );
    195                addDebugMsg( () -> "[INFO]EXEC-TIME:END="  );   // 8.0.3.0 (2021/12/17)
    196        }
    197
    198        /**
    199         * 雛形ﾌｧｲﾙを解析し､帳票ﾃﾞｰﾀを挿入します｡
    200         *
    201         * 雛形ﾌｧｲﾙは､ｸﾗｳﾄﾞ設定されていてもﾛｰｶﾙから取得します｡
    202         *
    203         * @og.rev 6.0.0.0 (2014/04/11) ZIP API変更
    204         */
    205        private void parse() {
    206                final File templateFile = new File( queue.getTemplateName() + ".ods" );         // 6.0.0.0 (2014/04/11) ZIP API変更
    207
    208//              final String tmp =
    209//                      HybsSystem.url2dir( StringUtil.nval( HybsSystem.sys( "REPORT_FILE_URL" ) ,HybsSystem.sys( "FILE_URL" ) + "REPORT/" ) )
    210//                      + queue.getSystemId() + File.separator + queue.getListId() + File.separator + queue.getYkno();
    211//              final String tmpdir = tmp + File.separator;
    212//              final String tmpdir = outTemp + File.separator;                                 // 8.0.1.0 (2021/10/29)
    213                final String tmpdir = outTemp + FS;                                                             // 8.0.3.0 (2021/12/17)
    214//              final File tmpdirFile = new File( tmp + File.separator );               // 6.0.0.0 (2014/04/11) ZIP API変更
    215                final File tmpdirFile = new File( tmpdir );                                             // 8.0.1.0 (2021/10/29)
    216//              final File tmpodsFile = new File( tmp + ".ods" );                               // 6.0.0.0 (2014/04/11) ZIP API変更
    217                final File tmpodsFile = new File( outTemp + ".ods" );                   // 8.0.1.0 (2021/10/29)
    218
    219                // 一時ﾌｧｲﾙを削除(ｴﾗｰ発生時の前のﾌｧｲﾙを削除)
    220                FileUtil.deleteFiles( tmpdirFile );                                             // 6.0.0.0 (2014/04/11) ZIP API変更
    221
    222                // 雛形ODSをﾃﾝﾎﾟﾗﾘﾌｫﾙﾀﾞに解凍
    223                ZipArchive.unCompress( tmpdirFile, templateFile );              // 6.0.0.0 (2014/04/11) ZIP API変更
    224//              addDebugMsg( "[INFO]EXEC-TIME:UNCOMP=" + ( System.currentTimeMillis() - start ) );
    225                addDebugMsg( () -> "[INFO]EXEC-TIME:UNCOMP=" ); // 8.0.3.0 (2021/12/17)
    226
    227                // DBTableModelのｾｯﾄ
    228                queue.setData();
    229//              addDebugMsg( "[INFO]EXEC-TIME:DATA=" + ( System.currentTimeMillis() - start ) );
    230                addDebugMsg( () -> "[INFO]EXEC-TIME:DATA=" );   // 8.0.3.0 (2021/12/17)
    231
    232                // content.xml,meta.xmlのﾊﾟｰｽ
    233                final OdsContentParser contentParser = new OdsContentParser( queue, tmpdir );
    234                contentParser.exec();
    235        //      【保留】 sheetRows = contentParser.getSheetRowsList();      // 8.0.3.0 (2021/12/17)
    236//              addDebugMsg( "[INFO]EXEC-TIME:PARSE=" + ( System.currentTimeMillis() - start ) );
    237                addDebugMsg( () -> "[INFO]EXEC-TIME:PARSE=" );  // 8.0.3.0 (2021/12/17)
    238
    239                // 雛形ODSを再圧縮
    240                ZipArchive.compress( tmpdirFile, tmpodsFile );                  // 6.0.0.0 (2014/04/11) ZIP API変更
    241//              addDebugMsg( "[INFO]EXEC-TIME:COMP=" + ( System.currentTimeMillis() - start ) );
    242                addDebugMsg( () -> "[INFO]EXEC-TIME:COMP=" );   // 8.0.3.0 (2021/12/17)
    243
    244                // 一時ﾌｧｲﾙを削除
    245                FileUtil.deleteFiles( tmpdirFile );                                             // 6.0.0.0 (2014/04/11) ZIP API変更
    246//              addDebugMsg( "[INFO]EXEC-TIME:DELETE=" + ( System.currentTimeMillis() - start ) );
    247                addDebugMsg( () -> "[INFO]EXEC-TIME:DELETE=" ); // 8.0.3.0 (2021/12/17)
    248        }
    249
    250        /**
    251         * 出力処理を行います｡
    252         *
    253         * @og.rev 4.2.3.1 (2008/06/04) 中間ﾌｧｲﾙの存在ﾁｪｯｸを追加
    254         * @og.rev 4.3.0.0 (2008/07/18) ﾌﾟﾘﾝﾄ時のﾌﾟﾘﾝﾀ名ﾁｪｯｸ追加
    255         * @og.rev 4.3.0.0 (2008/07/18) 出力ﾌｧｲﾙ名を指定していない場合に要求番号にする
    256         * @og.rev 4.3.3.4 (2008/11/01) ODS出力追加
    257         * @og.rev 5.1.2.0 (2010/01/01) 例外発生時にCalcｵﾌﾞｼﾞｪｸﾄをCloseしていないﾊﾞｸﾞを修正
    258         * @og.rev 5.1.6.0 (2010/05/01) 変換ｸﾗｽの大幅見直しによる修正(元のｺｰﾄﾞも削除します)
    259         * @og.rev 8.0.1.0 (2021/10/29) ﾛｰｶﾙﾌｧｲﾙとｸﾗｳﾄﾞﾌｧｲﾙ間の移動は､ExecProcess#output(String...) で行う｡
    260         * @og.rev 8.0.1.0 (2021/10/29) OUT_ODS_XLSX (Excel2007形式) 評価用
    261         * @og.rev 8.0.3.0 (2021/12/17) ods→xlsx変換時のｼｰﾄ毎の行数
    262         *
    263         * @param String... types
    264         */
    265        private void output( final String... types ) {
    266//              final String tmpods =
    267//                      HybsSystem.url2dir( StringUtil.nval( HybsSystem.sys( "REPORT_FILE_URL" ) ,HybsSystem.sys( "FILE_URL" ) + "REPORT/" ) )
    268//                      + queue.getSystemId() + File.separator + queue.getListId() + File.separator + queue.getYkno() + ".ods";
    269
    270                final String tmpods = outTemp + ".ods";
    271                // 4.2.3.1 (2008/06/04) 中間ﾌｧｲﾙの存在ﾁｪｯｸ
    272                if( ! new File( tmpods ).exists() ){
    273                        queue.addMsg( "中間ﾌｧｲﾙが存在しません｡" + tmpods );
    274                        throw new HybsSystemException();
    275                }
    276
    277                // 変換ｸﾗｽの生成
    278                final DocConverter_OOO dc = new DocConverter_OOO( tmpods );
    279                try {
    280                        // 起動
    281                        dc.open();
    282//                      addDebugMsg( "[INFO]EXEC-TIME:OPEN=" + ( System.currentTimeMillis() - start ) );
    283                        addDebugMsg( () -> "[INFO]EXEC-TIME:OPEN=" );   // 8.0.3.0 (2021/12/17)
    284
    285//                      for( int i=0; i<types.length; i++ ) {
    286                        for( final String type : types ) {
    287//                              if( "PRINT".equals( types[i] ) ) {
    288                                if( "PRINT".equals( type ) ) {
    289                                        // 4.3.0.0 (2008/07/18) ﾌﾟﾘﾝﾄ時のﾌﾟﾘﾝﾀ名ﾁｪｯｸ
    290                                        if( queue.getPrinterName() == null || queue.getPrinterName().isEmpty() ){
    291                                                queue.addMsg( "出力先ﾏｽﾀが正しく設定されていません｡" );
    292                                                throw new Exception();
    293                                        }
    294                                        dc.print( queue.getPrinterName() );
    295                                }
    296                                else {
    297                                        // 8.0.1.0 (2021/10/29) ｸﾗｳﾄﾞｺﾋﾟｰをここで行う｡
    298                                        final String outFilename = queue.getOutputName();
    299//                                      if( "PDF".equals( types[i] ) ) {
    300                                        if( "PDF".equals( type ) ) {
    301                                                dc.pdf( outFilename, queue.getPdfPasswd() );
    302                                        }
    303        //                              【保留】
    304        //                              else if( "XLSX".equals( type ) ) {                              // 8.0.3.0 (2021/12/17)
    305        //                                      dc.xlsx( outFilename,sheetRows );
    306        //                              }
    307                                        else {
    308                                                dc.auto( outFilename );                                         // 8.0.1.0 (2021/10/29)
    309                                        }
    310        //                              else if( "EXCEL".equals( types[i] ) ) {
    311        //                                      dc.xls( outFilename );
    312        //                              }
    313        //                              // 8.0.1.0 (2021/10/29) Excel2007出力
    314        //                              else if( "XLSX".equals( types[i] ) ) {
    315        //                                      dc.xlsx( outFilename );
    316        //                              }
    317        //                              // 4.3.3.4 (2008/11/01) 追加
    318        //                              else if( "ODS".equals( types[i] ) ) {
    319        //                                      dc.ods( outFilename );
    320        //                              }
    321                                        HybsFileOperationFactory.local2cloud( false, () -> new File( outFilename ) );   // false:ｼｽﾃﾑ定義のｸﾗｳﾄﾞ設定に従う｡
    322                                }
    323//                              else if( "PDF".equals( types[i] ) ) {
    324//                                      dc.pdf( queue.getOutputName(), queue.getPdfPasswd() );
    325//                              }
    326//                              else if( "EXCEL".equals( types[i] ) ) {
    327//                                      dc.xls( queue.getOutputName() );
    328//                              }
    329//                              // 4.3.3.4 (2008/11/01) 追加
    330//                              else if( "ODS".equals( types[i] ) ) {
    331//                                      dc.ods( queue.getOutputName() );
    332//                              }
    333//                              addDebugMsg( "[INFO]EXEC-TIME:EXEC["+types[i]+"]=" + ( System.currentTimeMillis() - start ) );
    334                                addDebugMsg( () -> "[INFO]EXEC-TIME:EXEC["+type+"]=" ); // 8.0.3.0 (2021/12/17)
    335                        }
    336
    337                        // Calcを閉じる
    338                        dc.close();
    339//                      addDebugMsg( "[INFO]EXEC-TIME:RELEASE=" + ( System.currentTimeMillis() - start ) );
    340                        addDebugMsg( () -> "[INFO]EXEC-TIME:RELEASE=" );        // 8.0.3.0 (2021/12/17)
    341                }
    342                catch( final Throwable th ) {
    343                        // Calcを閉じる(ｴﾗｰ発生時)
    344                        dc.close( true );
    345//                      queue.addMsg( "[INFO]EXEC-TIME:ERROR=" + ( System.currentTimeMillis() - start ) );
    346                        addDebugMsg( () -> "[INFO]EXEC-TIME:ERROR=" );
    347                        throw new HybsSystemException( th );
    348                }
    349                // 一時ﾌｧｲﾙの削除
    350                FileUtil.deleteFiles( new File( tmpods ) );
    351//              addDebugMsg( "[INFO]EXEC-TIME:DELETE=" + ( System.currentTimeMillis() - start ) );
    352                addDebugMsg( () -> "[INFO]EXEC-TIME:DELETE=" ); // 8.0.3.0 (2021/12/17)
    353        }
    354
    355        // /**
    356        // * 取込処理を行います｡
    357        // *
    358        // * @og.rev 4.3.0.0 (2008/07/15) debugの追加
    359        // * @og.rev 7.4.4.0 (2021/06/30) openGionV8事前準備(EXCEL取込廃止)
    360        // */
    361        // 7.4.4.0 (2021/06/30) Delete
    362        // private void input() {
    363        //      boolean flag = false;
    364
    365        //      // ｴｸｾﾙ入力の基底となるﾊﾟｽ
    366        //      final String excelinUrl = HybsSystem.url2dir( StringUtil.nval( HybsSystem.sys( "EXCEL_IN_FILE_URL" ), HybsSystem.sys( "FILE_URL" ) + "EXCELIN/" ) );
    367        //      final String excelinDir = excelinUrl + queue.getSystemId() + FS + queue.getListId();
    368
    369        //      final ExcelInsert ei = new ExcelInsert( queue.getSystemId(), queue.getYkno(), queue.getListId(), excelinDir, false );
    370        //      flag = ei.execute();
    371        //      if( !flag ) {
    372        //              queue.addMsg( ei.getErrMsg() );
    373        //              queue.addMsg( "取り込み処理に失敗しました" );
    374        //              throw new HybsSystemException();
    375        //      }
    376        //      addDebugMsg( "[INFO]EXEC-TIME:INPUT=" + ( System.currentTimeMillis() - start ) );
    377        // }
    378
    379        // /**
    380        // * Excel取込後のPG起動処理を行います｡
    381        // *
    382        // * @og.rev 4.3.0.0 (2008/07/15) debugの追加
    383        // * @og.rev 7.4.4.0 (2021/06/30) openGionV8事前準備(EXCEL取込廃止)
    384        // */
    385        // 7.4.4.0 (2021/06/30) Delete
    386        // private void pgexec() {
    387        //      boolean flag = false;
    388
    389        //      final ProgramRun pr = new ProgramRun( queue.getSystemId(), queue.getYkno(), queue.getListId(), false );
    390        //      flag = pr.execute();
    391        //      if( !flag ) {
    392        //              queue.addMsg( "取り込み後のPG起動に失敗しました" );
    393        //              queue.addMsg( pr.getErrMsg() );
    394        //              throw new HybsSystemException();
    395        //      }
    396        //      addDebugMsg( "[INFO]EXEC-TIME:PGEXEC=" + ( System.currentTimeMillis() - start ) );
    397        // }
    398
    399        // /**
    400        // * RFID出力処理を行います｡
    401        // *
    402        // * @og.rev 4.3.0.0 (2008/07/15) debugの追加
    403        // * @og.rev 4.3.3.0 (2008/10/01) 板金RFID対応
    404        // * @og.rev 5.4.3.9 (2012/01/25) 雛形ﾌｧｲﾙ名
    405        // * @og.rev 7.4.4.0 (2021/06/30) openGionV8事前準備(RFID出力廃止)
    406        // */
    407        // 7.4.4.0 (2021/06/30) Delete
    408        // private void rfid() {
    409        //      boolean flag = false;
    410
    411        //      // RFIDPrintRequest rpr = new RFIDPrintRequest( queue.getSystemId(), queue.getYkno(), queue.getListId(), queue.getLang(), type, queue.getPrinterName(), false );
    412        //      // 4.3.3.0 (2008/10/01) 板金RFID対応｡
    413        //      // 5.4.3.9 (2012/01/25) 雛形ﾌｧｲﾙ名を渡す
    414        //      final RFIDPrintRequest rpr = new RFIDPrintRequest( queue.getSystemId(), queue.getYkno(), queue.getListId(), queue.getLang(), type, queue.getPrtId()
    415        //                                                                                               ,queue.getPrgDir(), queue.getPrgFile(), queue.getOutputName(),queue.getTemplateName(), false );
    416        //      flag = rpr.initialDataSet();
    417        //      if( flag ) {
    418        //              flag = rpr.execute();
    419        //      }
    420        //      if( !flag ) {
    421        //              queue.addMsg( "RFID出力処理に失敗しました" );
    422        //              queue.addMsg( rpr.getErrMsg() );
    423        //              throw new HybsSystemException();
    424        //      }
    425        //      addDebugMsg( "[INFO]EXEC-TIME:RFID=" + ( System.currentTimeMillis() - start ) );
    426        // }
    427
    428        //      /**
    429        //       * CSV出力処理を行います｡
    430        //       *
    431        //       * @og.rev 5.9.0.0 (2015/09/04)
    432        //       * @og.rev 5.9.2.2 (2015/11/22) grpid,demgrp
    433        //       * @og.rev 5.9.2.3 (2015/11/27) 件数対応
    434        //       * @og.rev 8.0.1.0 (2021/10/29) CSV出力対応(ﾕﾘﾆﾀ帳票)は､一旦保留にします｡
    435        //       */
    436        //      private void csv() {
    437        //              boolean flag = false;
    438        //
    439        //              final CSVPrintRequest rpr = new CSVPrintRequest( queue.getSystemId(), queue.getYkno(), queue.getListId(), queue.getLang(), type, queue.getPrtId()
    440        //                                                      ,queue.getPrgDir(), queue.getPrgFile(), queue.getOutputName(), queue.getTemplateName(), queue.getGrpId(), queue.getDmnGrp(), debug );
    441        //              flag = rpr.initialDataSet();
    442        //              if( flag ) {
    443        //                      flag = rpr.execute();
    444        //              }
    445        //              if( !flag ) {
    446        //                      queue.addMsg( "CSV出力処理に失敗しました" );
    447        //                      queue.addMsg( rpr.getErrMsg() );
    448        //                      throw new HybsSystemException();
    449        //              }
    450        //              queue.setExecRowCnt( rpr.getBodyCount() ); // 5.9.2.3 (2015/11/27)
    451        //
    452        //              addDebugMsg( "[INFO]EXEC-TIME:CSV=" + ( System.currentTimeMillis() - start ) );
    453        //      }
    454
    455        /**
    456         * ﾃﾞﾊﾞｯｸﾞ用のﾒｯｾｰｼﾞを出力します｡
    457         *
    458         * @param       msg     ﾒｯｾｰｼﾞ
    459         */
    460//      private void addDebugMsg( final String msg ) {
    461        private void addDebugMsg( final Supplier<String> msg ) {
    462                if( debug ){
    463//                      queue.addMsg( msg + CR );
    464                        queue.addMsg( msg.get() + ( System.currentTimeMillis() - start )  );    // 8.0.3.0 (2021/12/17)
    465                }
    466        }
    467}