Commit 06d6dbd0 authored by 18083's avatar 18083

批量下载催收函

parent 94c3797a
......@@ -11,7 +11,8 @@
p_user_id =>${@p_user_id},
p_contract_id =>${@p_contract_id},
p_file_type =>${@p_file_type},
p_lease_type =>${@p_lease_type}
p_lease_type =>${@p_lease_type},
p_session_id =>${/session/@session_id}
);
END;
]]></bm:update-sql>
......
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="execute">
<bm:update-sql><![CDATA[
begin
con_contract_content_pkg.delect_contract_rent_temp(
p_session_id =>${/session/@session_id}
);
end;
]]></bm:update-sql>
<bm:parameters>
<bm:parameter inputPath="/session/@session_id"/>
</bm:parameters>
</bm:operation>
</bm:operations>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: gaoyang
$Date: 2015-6-10 下午03:17:55
$Revision: 1.0
$Purpose:
-->
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm" needAccessControl="false">
<bm:operations>
<bm:operation name="query">
<bm:query-sql><![CDATA[
SELECT
faa.file_path,
faa.file_type_code,
(select 'Y' from dual where exists (SELECT
1
FROM
fnd_atm_attachment_multi m1
WHERE
m1.table_name = 'CON_CONTRACT_CONTENT' AND
m1.table_pk_value = cc.content_id)
) file_exists_flag,
cc.content_number
||'-'
||cc.bp_name
||'-'
||
(SELECT
t.project_number
FROM
con_contract ct,
prj_project t
WHERE
t.project_id = ct.project_id AND
ct.contract_id = cc.contract_id
) to_file_name,
lt.pwd,
cc.content_id,
decode(cc.bp_category,
'TENANT',
'催收函-' || (select ct.contract_number
from con_contract ct
where ct.contract_id = cc.contract_id) || '-' ||
(select bp.bp_name
from con_contract_bp bp
where bp.contract_id = cc.contract_id
and bp.bp_category = 'TENANT'),
'催收函-' || (select ct.contract_number
from con_contract ct
where ct.contract_id = cc.contract_id) || '-' ||
(select bp.bp_name
from con_contract_bp bp
where bp.contract_id = cc.contract_id
and bp.bp_category = 'TENANT') || '(担保人-' ||
cc.bp_name || ')') file_name
FROM
fnd_atm_attachment faa,
fnd_atm_attachment_multi m,
hls_doc_file_templet lt,
con_clause_templet t,
con_contract_content_v cc
WHERE
faa.attachment_id = m.attachment_id AND
m.table_name = 'HLS_DOC_FILE_TEMPLET' AND
m.table_pk_value = lt.templet_id AND
lt.templet_id = t.doc_template_id AND
t.templet_code=${@templet_code} and
t.doc_plugin_flag = 'Y' AND
t.templet_id = cc.templet_id AND
(
cc.contract_id =${@contract_id} AND
${/parameter/@batch_flag}='Y'
)
]]></bm:query-sql>
</bm:operation>
</bm:operations>
<bm:fields>
<bm:field name="file_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="FILE_NAME"/>
<bm:field name="file_path" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="FILE_PATH"/>
<bm:field name="file_type_code" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="FILE_TYPE_CODE"/>
<bm:field name="file_exists_flag" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="FILE_EXISTS_FLAG"/>
<bm:field name="to_file_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="TO_FILE_NAME"/>
<bm:field name="pwd" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="PWD"/>
<bm:field name="content_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="CONTENT_ID"/>
</bm:fields>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm">
<bm:operations>
<bm:operation name="query">
<bm:query-sql><![CDATA[
SELECT m.table_name,
m.table_pk_value,
m.record_id,
fa.attachment_id,
fa.file_name,
fa.file_path
FROM fnd_atm_attachment fa,
fnd_atm_attachment_multi m,
CUX_CONTRACT_PRINT t,
con_contract_rent_temp tp
WHERE m.attachment_id = fa.attachment_id
AND fa.source_type_code = 'fnd_atm_attachment_multi'
AND fa.source_pk_value = m.record_id
AND m.table_name = 'CUX_CONTRACT_PRINT'
AND m.table_pk_value = t.print_id
and t.print_id = tp.print_id
and tp.session_id = ${/session/@session_id}
]]></bm:query-sql>
<bm:parameters>
<bm:parameter name="table_pk_value"/>
<bm:parameter name="table_name"/>
</bm:parameters>
</bm:operation>
</bm:operations>
<bm:fields>
<bm:field name="table_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="TABLE_NAME" required="true"/>
<bm:field name="table_pk_value" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="TABLE_PK_VALUE" required="true"/>
<bm:field name="record_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="RECORD_ID" required="true"/>
<bm:field name="attachment_id" databaseType="NUMBER" datatype="java.lang.Long" physicalName="ATTACHMENT_ID" required="true"/>
<bm:field name="file_name" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="FILE_NAME"/>
<bm:field name="file_path" databaseType="VARCHAR2" datatype="java.lang.String" physicalName="FILE_PATH"/>
</bm:fields>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: trd
$Date: 2024-10-30 上午09:52:30
$Revision: 1.0
$Purpose:
-->
<bm:model xmlns:bm="http://www.leaf-framework.org/schema/bm" needAccessControl="false">
<bm:operations>
<bm:operation name="update">
<bm:update-sql><![CDATA[
begin
con_contract_content_pkg.contract_rent_batch(
p_contract_id =>${@contract_id},
p_user_id =>${/session/@user_id},
p_content_type =>${@content_type},
p_templet_code=>${@templet_code},
p_session_id =>${/session/@session_id}
);
end;
]]></bm:update-sql>
</bm:operation>
</bm:operations>
</bm:model>
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: ZLF
$Date: 2014-11-20 下午8:50:38
$Revision: 1.0
$Purpose:
-->
<a:screen xmlns:a="http://www.leaf-framework.org/application" xmlns:s="leaf.plugin.script" customizationEnabled="true"
trace="true">
<a:init-procedure>
<s:server-script import="con_print_path.js"><![CDATA[
set_parameter_file_path();
]]></s:server-script>
<!--<a:model-query model="cont.CON620.get_sys_role" rootPath="role_info"/>-->
</a:init-procedure>
<a:view>
<a:link id="con_rent_temp_link"
url="${/request/@context_path}/modules/cont/CON620/con_contract_rent_temp.lsc"/>
<a:link id="con_rent_download_link"
url="${/request/@context_path}/modules/cont/CON620/create_content_for_collection_download.lsc"/>
<a:link id="con_rent_atm_bacth_link"
url="${/request/@context_path}/modules/cont/CON620/contract_rent_atm_batch_dl.lsc"/>
<a:link id="con_rent_down_signatures_link"
url="${/request/@context_path}/modules/cont/CON620/create_content_for_collection_download_signatures.lsc"/>
<script type="text/javascript"><![CDATA[
//生成催收函word
function con_print_word_create() {
Leaf.Masker.mask(Ext.getBody(), '请稍等......');
var download_type = $('contract_rent_download_ds').getCurrentRecord().get('download_type');
if(Ext.isEmpty(download_type)){
$L.showMessage("提示",'请选择下载类型!');
Leaf.Masker.unmask(Ext.getBody());
return;
}
var result_templet_code ='';
if(download_type=='TEN'){
result_templet_code ='{"CON_LEASE_ORG":"CON_LEASE_ORG"}';
}else if(download_type=='GUA'){
result_templet_code ='{"CON_LEASE_GUA":"CON_LEASE_GUA"}';
}else if(download_type=='ALL'){
result_templet_code = '{"CON_LEASE_ORG":"CON_LEASE_ORG","CON_LEASE_GUA":"CON_LEASE_GUA"}';
}
var result_map ='${/parameter/@result_map}';
Leaf.request({
url: $('con_rent_download_link').getUrl(),
para: {
result_map : result_map,
result_templet_code : result_templet_code
},
success: function(res) {
Leaf.Masker.unmask(Ext.getBody());
var url_l = $('con_rent_atm_bacth_link').getUrl();
window.open(href = url_l, target = "_self");
},
failure: function() {
Leaf.Masker.unmask(Ext.getBody());
},
error: function() {
Leaf.Masker.unmask(Ext.getBody());
}
});
}
//生成催收函pdf
function con_print_signatures_create() {
Leaf.Masker.mask(Ext.getBody(), '请稍等......');
var download_type = $('contract_rent_download_ds').getCurrentRecord().get('download_type');
if(Ext.isEmpty(download_type)){
$L.showMessage("提示",'请选择下载类型!');
Leaf.Masker.unmask(Ext.getBody());
return;
}
var result_templet_code ='';
if(download_type=='TEN'){
result_templet_code ='{"CON_LEASE_ORG":"CON_LEASE_ORG"}';
}else if(download_type=='GUA'){
result_templet_code ='{"CON_LEASE_GUA":"CON_LEASE_GUA"}';
}else if(download_type=='ALL'){
result_templet_code = '{"CON_LEASE_ORG":"CON_LEASE_ORG","CON_LEASE_GUA":"CON_LEASE_GUA"}';
}
var result_map ='${/parameter/@result_map}';
Leaf.request({
url: $('con_rent_down_signatures_link').getUrl(),
para: {
result_map : result_map,
result_templet_code : result_templet_code
},
success: function(res) {
Leaf.Masker.unmask(Ext.getBody());
var url_l = $('con_rent_atm_bacth_link').getUrl();
window.open(href = url_l, target = "_self");
},
failure: function() {
Leaf.Masker.unmask(Ext.getBody());
},
error: function() {
Leaf.Masker.unmask(Ext.getBody());
}
});
}
]]></script>
<a:dataSets>
<a:dataSet id="DOWNLOAD_TYPE_DS" lookupCode="DOWNLOAD_TYPE"/>
<a:dataSet id="contract_rent_download_ds" autoCreate="true">
<a:fields>
<a:field name="download_type"/>
<a:field name="download_type_desc" options="DOWNLOAD_TYPE_DS"
returnField="download_type" displayField="code_value_name" valueField="code_value" required="true"/>
</a:fields>
</a:dataSet>
</a:dataSets>
<a:screenBody>
<a:screenTopToolbar>
<a:gridButton id="con_print_id" click="con_print_word_create" text="生成催收函Word"/>
<a:gridButton id="con_print_signatures_id" click="con_print_signatures_create" text="生成催收函PDF"/>
</a:screenTopToolbar>
<a:form >
<a:comboBox name="download_type_desc" prompt="下载类型" bindTarget="contract_rent_download_ds"/>
</a:form>
</a:screenBody>
</a:view>
</a:screen>
<?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><![CDATA[
importPackage(java.util.zip);
importPackage(java.io);
function getdate() {
var now = new Date()
y = now.getFullYear()
m = now.getMonth() + 1
d = now.getDate()
m = m < 10 ? "0" + m : m
d = d < 10 ? "0" + d : d
return y + "" + m + "" + d
}
function writeFile(zos, fn, fp) {
var ze = new ZipEntry(fn);
//zos.setEncoding("UTF-8");//如果是org.apache.tools.zip需要追加字符集
zos.putNextEntry(ze);
var fis = new FileInputStream(fp);
var b = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024 * 64);
var len = -1;
while ((len = fis.read(b)) != -1) {
zos.write(b, 0, len);
}
fis.close();
}
$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");
var date = new Date();
var date_str = getdate();
var doc_code = '催收函';
var filename = doc_code + '-' + date_str + ".zip"
resp.setHeader("Content-disposition", "attachment; filename=" + encodeURI(filename, 'utf-8'));
resp.setDateHeader("Expires", 0);
resp.setContentType("application/x-msdownload");
var zos = new ZipOutputStream(resp.getOutputStream());
try {
var attachment_batch_dl = $bm('cont.CON620.contract_rent_batch_dl');
var result = attachment_batch_dl.queryAsMap();
var arr = result.getChildren();
var file_exist_list = {};
for (var i = 0;i < arr.length;i++) {
var f = arr[i];
if (f.file_path && !file_exist_list[f.file_name]) {
writeFile(zos, f.file_name, f.file_path);
file_exist_list[f.file_name] = 1;
} else {
file_exist_list[f.file_name] = file_exist_list[f.file_name] * 1 + 1;
var last_index = f.file_name.lastIndexOf(".");
var temp_exists_file_name = f.file_name.substr(0, last_index);
var temp_exists_file_type = f.file_name.substr(last_index, f.file_name.length);
temp_exists_file_name = temp_exists_file_name + '-' + file_exist_list[f.file_name] + temp_exists_file_type;
writeFile(zos, temp_exists_file_name, f.file_path);
}
}
} catch (e) {
var logger = $logger("server-script");
logger.severe(e.message)
}
zos.close();
]]></s:server-script>
</a:init-procedure>
</a:service>
<?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);
importPackage(Packages.com.hand.hl);
importPackage(java.util.zip);
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 getdate() {
var now = new Date()
y = now.getFullYear()
m = now.getMonth() + 1
d = now.getDate()
m = m < 10 ? "0" + m : m
d = d < 10 ? "0" + d : d
return y + "" + m + "" + d
}
//按日期创建目录
function getDatePath() {
set_pdf_parameter_file_path();
var file_path = $ctx.parameter.file_path;
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;
}
function get_file_length(path){
var file=new File(String(path));
if(file.exists() && file.isFile()){
length=file.length();
return length;
}else{
return 0 ;
}
}
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 writeFile(zos, fn, fp) {
var ze = new ZipEntry(fn);
//zos.setEncoding("UTF-8");//如果是org.apache.tools.zip需要追加字符集
zos.putNextEntry(ze);
var fis = new FileInputStream(fp);
var b = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024 * 64);
var len = -1;
while ((len = fis.read(b)) != -1) {
zos.write(b, 0, len);
}
fis.close();
}
try {
var resultStr = $ctx.parameter.result_map;
var result_templet_code = $ctx.parameter.result_templet_code;
var jm = JSON.parse(resultStr);
var te = JSON.parse(result_templet_code);
//清除批次表数据
$bm('cont.CON620.con_contract_rent_temp').execute();
for(var key in jm){
var hds = jm[key];
//转为数组
var hdsArr = hds.split(',');
//循环合同
for(var m =0; m< hdsArr.length; m++){
var contract_id = hdsArr[m];
//循环模板
for(var key in te){
var template = te[key];
//转为数组
var templateArr = template.split(',');
for(var j =0; j< templateArr.length; j++){
var templet_code = templateArr[j];
//第一步生成合同文本
if(templet_code=='CON_LEASE_ORG'){
content_type ='FIN';
}else{
content_type ='GUA';
}
$bm('cont.CON620.create_contract_rent_batch').update({
contract_id: contract_id,
content_type: content_type,
templet_code: templet_code
});
//获取日期目录
set_parameter_file_path();
var datePath = getDatePath();
$ctx.parameter.batch_flag='Y';
$ctx.parameter.contract_id=contract_id;
FileUtils.forceMkdir(new File(datePath)); //根据日期创建目录
var from_file_data_map = $bm('cont.CON620.con_doc_file_templet_get_atm_batch').queryAsMap({
contract_id: contract_id,
batch_flag:$ctx.parameter.batch_flag,
templet_code: templet_code
});
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);
}
var test=new File(to_file_path);
var test1=new File('D:'+to_file_path);
var file_size=get_file_length(to_file_path);
if(templet_code == 'CON_LEASE_GUA'){
var lease_type='03';
}else {
lease_type='02';
}
var business_daily_email=$bm('cont.CON301N.insert_into_attachment_bmp').update({
p_file_path :(to_file_path).toString(),
p_file_name :(record_data.file_name+'.docx').toString(),
p_file_size :file_size,
p_user_id :$ctx.session.user_id,
p_contract_id :contract_id,
p_file_type :'WORD',
p_lease_type :lease_type
});
}
}
}
}
}
}
} catch (e) {
raise_app_error(e);
}
]]></s:server-script>
</a:init-procedure>
</a:service>
......@@ -27,16 +27,24 @@
}
//第一步生成合同文本
$bm('cont.CON620.create_content_for_collection').update({
contract_id: $ctx.parameter.contract_id,
templet_code: $ctx.parameter.templet_code
});
if($ctx.parameter.templet_code == 'CON_LEASE_GUA'){
$bm('cont.CON620.create_content_for_collection').execute({
contract_id: $ctx.parameter.contract_id,
templet_code: $ctx.parameter.templet_code,
bp_code: $ctx.parameter.bp_code
});
}else {
$bm('cont.CON620.create_content_for_collection').update({
contract_id: $ctx.parameter.contract_id,
templet_code: $ctx.parameter.templet_code
});
}
//获取日期目录
var datePath = getDate();
$ctx.parameter.batch_flag='Y';
FileUtils.forceMkdir(new File(datePath)); //根据日期创建目录
var from_file_data_map = $bm('cont.CON500.con_doc_file_templet_get_atm_new').queryAsMap({
var from_file_data_map = $bm('cont.CON620.con_doc_file_templet_get_atm_batch').queryAsMap({
contract_id: $ctx.parameter.contract_id,
batch_flag:$ctx.parameter.batch_flag,
templet_code: $ctx.parameter.templet_code
......@@ -86,14 +94,20 @@
var file_size=get_file_length(datePath+ guid_file_name_tables[0].guid_file_name + 'con' + record_data.content_id + '.pdf' );
var download_file = datePath + guid_file_name_tables[0].guid_file_name + 'con' + record_data.content_id + ".pdf";
if($ctx.parameter.templet_code == 'CON_LEASE_GUA'){
var lease_type='03';
}else {
lease_type='02'
}
var business_daily_email=$bm('cont.CON301N.insert_into_attachment_bmp').update({
p_file_path :(download_file).toString(),
p_file_name :($ctx.parameter.file_name+'.pdf').toString(),
p_file_name :(record_data.file_name+'.pdf').toString(),
p_file_size :file_size,
p_user_id :$ctx.session.user_id,
p_contract_id :$ctx.parameter.contract_id,
p_file_type :'PDF',
p_lease_type :'02'
p_lease_type :lease_type
});
println('download_file' + download_file);
<!-- download_file(datePath + guid_file_name_tables[0].guid_file_name + 'con' + record_data.content_id + '.pdf' ,'催收函.pdf');-->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment