<?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>