csh_payment_comm_pdf.lsc 6.71 KB
Newer Older
18083's avatar
18083 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
<?xml version="1.0" encoding="UTF-8"?>
<a:service xmlns:a="http://www.leaf-framework.org/application" xmlns:s="leaf.plugin.script" trace="true">
    <a:init-procedure>
<a:model-update model="hls.HLS811.hls_doc_file_templet_get_atm"/>
    <s:server-script import="contract_print_path.js"><![CDATA[
    importPackage(java.io);
importPackage(Packages.hls.plugin.docx4j);
importPackage(Packages.leaf.plugin.word2pdf);
importPackage(Packages.org.apache.commons.io);

//删除文件

function deleteFile(filePath) {
    var file = new File(filePath);
    if (file.exists()) {
        file.delete();
    }
}


//生成pdf
function wordToPdf(word_file_path,pdf_file_path) {
    // word转pdf
    var pdf_file_path_new = pdf_file_path + '.pdf';
    var wordToPdf = new WordToPdf($instance('uncertain.ocm.IObjectRegistry'), "jacob-1.19-x64.dll");
    wordToPdf.word2pdf(word_file_path, pdf_file_path_new);
    //删除word文件
    //deleteFile(word_file_path);

    return pdf_file_path_new;
}

function copyFile(fOld, fNew) {
    var fis = new java.io.FileInputStream(fOld);
    var fos = new java.io.FileOutputStream(fNew);
    var b = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024 * 4);
    var len = -1;
    while ((len = fis.read(b)) != -1) {
        fos.write(b, 0, len);
    }
    fis.close();
    fos.close();
}

function transfer(file_path, os) {
    println(file_path);
    var fis = new FileInputStream(file_path);
    var b = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024 * 64);
    var len = -1;
    while ((len = fis.read(b)) != -1) {
        os.write(b, 0, len);
    }
    fis.close();
}

function write_os_to_file(file, os) {
    var fis = new FileInputStream(file);
    var b = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024 * 64);
    var len = -1;
    while ((len = fis.read(b)) != -1) {
        os.write(b, 0, len);
    }
    fis.close();
}

function download_file(file_name, file_path) {
    $ctx["__request_type__"] = 'file'; //to indicate this request is not a JSON_REQUEST
    var resp = $ctx['_instance.javax.servlet.http.HttpServletResponse'];
    resp.setHeader("Pragma", "No-cache");
    resp.setHeader("Cache-Control", "no-cache, must-revalidate");
    resp.setDateHeader("Expires", 0);
    resp.setContentType("application/x-msdownload");

    resp.setHeader("Content-disposition", "attachment; filename=" + encodeURI(file_name, 'UTF-8'));
    var os = resp.getOutputStream();
    //transfer(file_path, os);
    write_os_to_file(file_path, os);
    os.flush();
}

//按日期创建目录

function getDatePath() {
    set_parameter_file_path();
    var file_path = $ctx.parameter.pdf_path; //file_path = c:/hls_test_files/content_files/
    var now = new Date()
    y = now.getFullYear()
    m = now.getMonth() + 1
    m = m < 10 ? "0" + m : m
    var datePath = file_path + y + "/" + m + "/";
    return datePath; //datePath = d:/hls_test_files/fileupload/2018/04/
}


function collection_create_content() {
    try {
        var datePath = getDatePath();

        FileUtils.forceMkdir(new File(datePath)); //根据日期创建目录
        var attachment_batch_dl = $bm('hls.HLS811.hls_doc_file_templet_get_atm');
        var result = attachment_batch_dl.queryAsMap({
            document_id: $ctx.parameter.document_id,
            document_table: $ctx.parameter.document_table,
            batch_flag: $ctx.parameter.batch_flag,
            content_id: $ctx.parameter.content_id
        });
        var from_file_data = result.getChildren();
        for (var i = 0;i < from_file_data.length;i++) {
            if (!$ctx.parameter.file_path) {
                set_parameter_file_path();
            }
            var to_file_path = $ctx.parameter.file_path;
            var record_data = from_file_data[i];

            //if (record_data.file_exists_flag != 'Y') {
            var to_file_name = record_data.to_file_name;
            var from_file_path = record_data.file_path;
            var guid_file_name_path = $bm('cont.CON500.con_contract_get_guid_file_name').queryAsMap();
            var guid_file_name_tables = guid_file_name_path.getChildren();
            to_file_path = datePath + guid_file_name_tables[0].guid_file_name + 'doc' + record_data.content_id;
            copyFile(from_file_path, to_file_path);



            try {
                $bm('csh.CSH501.csh_transaction_return_print').update({
                    document_id: $ctx.parameter.document_id,
                    document_table: $ctx.parameter.document_table
                });
                var brwt = new BookmarksReplaceWithText($instance('leaf.database.service.IDatabaseServiceFactory'), $instance('uncertain.ocm.IObjectRegistry'), $ctx.getData());
                brwt.replaceBookmarkFromContent(to_file_path.toString(), record_data.content_id.toString(), 'COMMON');
            } catch (e) {
                raise_app_error(e);
            }

            // word转pdf
            var pdf_file_path=to_file_path;
            var outputfilepath = wordToPdf(to_file_path,pdf_file_path);
            //var outputfilename= record_data.to_file_name +'.pdf';
            var filename_str = record_data.to_file_name;
            var outputfilename= filename_str.substr(0, filename_str.length - 5) +'.pdf';
            var pdf_file = new File(outputfilepath);
            var file_size = 0;
            if (pdf_file.exists()) {
                file_size = pdf_file.length();
            }

            $bm('hls.HLS811.hls_file_content_copy_update').update({
                table_name: 'HLS_DOC_FILE_CONTENT',
                content_id: record_data.content_id,
                file_name: outputfilename.toString(),
                file_path: outputfilepath.toString(),
                source_type: $ctx.parameter.source_type
            });

            //var resp = $ctx['_instance.javax.servlet.http.HttpServletResponse'];
            //HlsFileUtil.downloadFile(encodeURI(to_file_path,'utf-8'),encodeURI(to_file_name,'utf-8'),resp);
            //print(outputfilepath.toString());
            //print(outputfilename.toString());
            download_file(outputfilename.toString(),outputfilepath.toString());

        }

        $ctx.parameter.return_status = 'S';
        $ctx.parameter.return_message = '执行成功';
    } catch (e) {
        $ctx.success = "true";
        $ctx.parameter.return_status = 'E';
        $ctx.parameter.return_message = $ctx.get('/error/@message') || String(e);
        raise_app_error(e);
    }
    var result = {
        result: $ctx.parameter.return_status,
        message: $ctx.parameter.return_message
    };
    $ctx.parameter.json = JSON.stringify(result);
}
if ($ctx.parameter.return_status != 'E' && $ctx.parameter.return_status != 'TIMEOUT') {
    collection_create_content();
}
]]></s:server-script>
</a:init-procedure>
<a:service-output/>
</a:service>