create_content_con_lease.lsc 5.99 KB
Newer Older
25484's avatar
25484 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
<?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>
        <s:server-script import="con_print_path.js"><![CDATA[
            importPackage(java.io);
            importPackage(Packages.hls.plugin.docx4j)
            importPackage(Packages.org.apache.commons.io);


            function RandomString(length) {   
            var str = '';   
            for (;str.length < length;str += Math.random().toString(36).substr(2));   
            return str.substr(0, length); 
            }

            //删除文件

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

            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 getDatePath() {
            set_parameter_file_path();
            var file_path = $ctx.parameter.file_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 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_path, file_name) {
            $ctx["__request_type__"] = 'file';
            var resp = $ctx['_instance.javax.servlet.http.HttpServletResponse'];
            resp.setHeader("Pragma", "No-cache");
            resp.setHeader("Cache-Control", "no-cache, must-revalidate");
            resp.setHeader("Content-disposition", "attachment; filename=" + encodeURI(file_name, 'utf-8'));
            resp.setDateHeader("Expires", 0);
            resp.setContentType("application/x-msdownload");
            try {
            var os = resp.getOutputStream();
            write_os_to_file(file_path, os);
            //write_os_to_file(file_path+file_name, os);
            os.flush();
            } catch (e) {
            $logger("server-script").severe(e.message);
            }
            }

            function collection_create_content() {
            try {
            //第一步生成合同文本
            $bm('cont.CON620.create_content_for_collection').update({
            contract_id: $ctx.parameter.contract_id,
            templet_code: $ctx.parameter.templet_code
            });
            //获取日期目录
            set_parameter_file_path();
            var datePath = getDatePath();
            $ctx.parameter.batch_flag='Y';
            FileUtils.forceMkdir(new File(datePath)); //根据日期创建目录
            var from_file_data_map = $bm('cont.CON500.con_doc_file_templet_get_atm').queryAsMap({
            contract_id: $ctx.parameter.contract_id,
            batch_flag:$ctx.parameter.batch_flag,
            });
            var from_file_data = from_file_data_map.getChildren();
            for (var i = 0;i < from_file_data.length;i++) {
            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 + '.' + record_data.file_type_code || 'doc';
            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 + 'con' + record_data.content_id;

            copyFile(from_file_path, to_file_path);
            try {
            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);
            } catch (e) {
            raise_app_error(e);
            }
            $bm('cont.CON500.con_file_content_copy_update').update({
            table_name: 'CON_CONTRACT_CONTENT',
            content_id: record_data.content_id,
            file_name: to_file_name.toString(),
            file_path: to_file_path.toString()
            });
            var test=new File(to_file_path);
            var test1=new File('D:'+to_file_path);
            download_file(to_file_path.toString(),to_file_name.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>