使用数据库进行SVC请求
使用数据库进行SVC请求
-- 发送电子发票
declare
-- 请求信息
v_req_para json;
v_request_params clob;
v_ret varchar2(200);
v_err_msg varchar2(2000);
v_request_id number;
v_url varchar2(200) := 'modules/acr/ACR700/ele_invoice_ws_invoke.svc?user_id=1'; -- GET参数拼接
begin
-- 发送请求,JSON参数
v_req_para := json();
v_req_para.put(pair_name => 'request_id', pair_value => '1');
-- POST请求参数
v_request_params := 'paramA=1¶mB=2';
-- 获得系统相对地址
v_url := sys_parameter_pkg.value(p_parameter_code => 'HLS_SYSTEM_URL') ||
v_url;
--调用 svc 去获取返回报文数据 插表
hls_ws_json_utl_pkg.call_interface(p_rfc_function => '',
p_request_json => v_req_para,
p_request_clob => v_request_params,
p_request_url => v_url,
p_request_id => v_request_id, -- 输出,请求ID
p_ret => v_ret, -- 返回信息
p_error_msg => v_err_msg); -- 错误提示
dbms_output.put_line(v_err_msg);
end;
异步上传解析Excel
SVC文件
异步传入Excel文件
<?xml version="1.0" encoding="UTF-8"?>
<a:service xmlns:a="http://www.aurora-framework.org/application" xmlns:p="uncertain.proc" xmlns:s="aurora.plugin.script" trace="true">
<a:init-procedure>
<!-- 本次 -->
<a:model-query model="acr.acr_get_sys_import_head_id" fetchAll="true" rootPath="header"/>
<!-- 将参数传入parameter中便于postman接口调试 -->
<p:set field="/parameter/@header_id" value="${/model/header/record/@header_id}"/>
<p:set field="/parameter/@user_id" value="${/session/@user_id}"/>
<!-- 导入Excel,携带header_id和user_id -->
<a:import-excel header_id="${/parameter/@header_id}" separator="," status_field="/parameter/@ImportSuccess" template_code="" user_id="${/parameter/@user_id}"/>
<!-- 导入状态 -->
<a:model-query defaultWhereClause="header_id=${/model/header/record/@header_id}" model="acr.acr_plan_import_get_header_status" rootPath="status"/>
<p:set field="/parameter/@status" value="${/model/status/record/@status}"/>
<!-- 导入数据,具体数据的查询 -->
<!-- <a:model-query autoCount="true" defaultWhereClause="header_id=${/model/header/record/@header_id} order by line_id" fetchAll="true" model="acr.acr_plan_import_get_fnd_data" rootPath="importData"/> -->
<!-- <p:set field="/parameter/@importData" value="${/model/importData/record/}"/> -->
<!-- 后续业务处理,直接调用业务处理的BM的upadte方法,这里没有使用,而是重写调用execute方法 -->
<!-- <a:model-update header_id="${/parameter/@header_id}" model="acp.ACP510.hls_excel_import" updatePassedFieldOnly="false"/> -->
<!-- 重写导入方法,获得返回信息,便于展示 -->
<s:server-script><![CDATA[
// 业务参数
var batch_id = $ctx.parameter.header_id;
var invoice_ln_id = $ctx.parameter.invoice_ln_id;
var table_name = $ctx.parameter.table_name;
var status = $ctx.parameter.invoice_ln_id;
// 每个功能对应的各自业务,对导入后的数据进行后续清理
var hls_excel_import_bm = $bm('acp.ACP510.hls_excel_import');
// 调用参数
var param = {
'batch_id': batch_id,
'invoice_ln_id': invoice_ln_id,
'table_name': table_name
};
// 执行BM
hls_excel_import_bm.execute(param);
// 输出参数
var data_number = $ctx.parameter.data_number;
var err_count = $ctx.parameter.err_count;
var imp_status = $ctx.parameter.imp_status;
var error_message = $ctx.parameter.error_message;
]]></s:server-script>
</a:init-procedure>
<!-- 输出,以JSON形式到前台 -->
<a:service-output output="/parameter"/>
</a:service>
BM 文件
<?xml version="1.0" encoding="UTF-8"?>
<bm:model xmlns:s="aurora.plugin.script" xmlns:f="aurora.database.features" xmlns:bm="http://www.aurora-framework.org/schema/bm" needAccessControl="false">
<bm:operations>
<bm:operation name="execute">
<bm:update-sql><![CDATA[
begin
acp_invoice_pkg.invoice_import_data(p_batch_id => ${@batch_id},
p_invoice_ln_id=> ${@invoice_ln_id},
p_user_id => ${/session/@user_id},
p_company_id => ${/session/@company_id},
p_table_name => ${@table_name},
p_data_number => ${@data_number},
p_err_count => ${@err_count},
p_status => ${@imp_status},
p_error_message=> ${@error_message});
end;
]]></bm:update-sql>
<bm:parameters>
<bm:parameter name="data_number" dataType="java.lang.Long" input="false" output="true" outputPath="/parameter/@data_number"/>
<bm:parameter name="err_count" dataType="java.lang.Long" input="false" output="true" outputPath="/parameter/@err_count"/>
<bm:parameter name="imp_status" dataType="java.lang.String" input="false" output="true" outputPath="/parameter/@imp_status"/>
<bm:parameter name="error_message" dataType="java.lang.String" input="false" output="true" outputPath="/parameter/@error_message"/>
</bm:parameters>
</bm:operation>
</bm:operations>
</bm:model>
SVC编写示例
<?xml version="1.0" encoding="UTF-8"?>
<a:service xmlns:s="aurora.plugin.script" xmlns:a="http://www.aurora-framework.org/application" xmlns:p="uncertain.proc" trace="true">
<a:init-procedure>
<p:set field="/parameter/@parameter_code" value="CS_FPM_DOWNLOAD_PATH"/>
<a:model-query fetchAll="true" model="hls.hls_get_sys_parameter_value" rootPath="cs_fpm_download_path"/>
<a:model-query fetchAll="true" model="rpt.RPT1050.hls_get_fr_print_url" rootPath="hls_get_sys_parameter_path"/>
<a:model-query fetchAll="true" model="fpm.FPM120.cs_fpm_send_email_list" rootPath="fpm_send_emial_list"/>
<p:set field="/parameter/@fr_base_url" value="${/model/hls_get_sys_parameter_path/record/@fr_print_url}"/>
<p:set field="/parameter/@fpm_email_list" value="${/model/fpm_send_emial_list/record/@fpm_email_list}"/>
<p:set field="/parameter/@download_path" value="${/model/cs_fpm_download_path/record/@parameter_value}"/>
<s:server-script><![CDATA[
//importClass(Packages.com.hand.mas.SendEmailMain);
//importClass(Packages.com.hand.mas.EmailLog);
//importClass(Packages.com.hand.mas.EmailConfigObj);
//importClass(Packages.java.text.SimpleDateFormat);
//importClass(Packages.java.io.File);
//下载帆软文件 并且 发送邮件
function send_email_main(){
var sendEmail = new com.hand.mas.SendEmailMain();
var smdate = new java.text.SimpleDateFormat("yyyy-MM-dd");
var demand_ids = $ctx.parameter.demand_ids;
var fr_urlpath = $ctx.parameter.fr_base_url+"WebReport/ReportServer?reportlet=/csh_payment_apply_plan_daily.cpt&format=excel&extype=simple&__filename__=资金需求计划&demand_ids="+demand_ids;
var path = $ctx.parameter.download_path;
var file = new java.io.File(path);
if(!file.exists()){
file.mkdirs();
}
var fr_savepath = path+"租赁业务资金需求计划表(日报)"+smdate.format(new Date)+".xls"; //文件名
var user_name = "clms_prod_admin@csleasing.com.cn";//用户名
var password = "clmsp6372";//密码
var host = "10.200.1.11";//主机
var port = 25;//端口
var email_from = "系统管理员";//发件人
var email_subject = "中远海运租赁-租赁业务资金支付计划日报";//主题
var email_to = $ctx.parameter.fpm_email_list;//接收人
var email_cc = "";//抄送
var email_bcc = "songxingyun@cnshippingnt.com";//密送
var email_content = " 各位领导:"+"\r\n"+"<br/><br/>"+" 附件是资金支付计划,请查阅,谢谢!";//正文
//email config obj 邮件配置对象
var email_config = new com.hand.mas.EmailConfigObj();
email_config.setHost(host);
email_config.setPort(port);
email_config.setUser_name(user_name);
email_config.setPassword(password);
email_config.setEmailFrom(email_from);
email_config.setSubject(email_subject);
email_config.setContent(email_content);
email_config.setMail_to(email_to);
email_config.setBcc_mail_to(email_bcc);
email_config.setCc_mail_to(email_cc);
email_config.setSeparator(",");
var err_log = sendEmail.downloadNet(fr_urlpath,fr_savepath);
if(err_log.getStatus() == "S"){
err_log = sendEmail.sendMail(email_config,fr_savepath);
if(err_log.getStatus() == "F"){
fpm_log(err_log.getStatus(),err_log.getErrMessage());
raise_app_error(err_log.getErrMessage());
}else{
fpm_log(err_log.getStatus(),"");
}
}else{
fpm_log(err_log.getStatus(),err_log.getErrMessage());
raise_app_error(err_log.getErrMessage());
}
}
//日志记录邮件发送
function fpm_log(send_status,fail_reason){
var fpm_log_bm = new ModelService('fpm.FPM120.cs_fpm_send_email_log');
fpm_log_bm.insert({
fail_reason : fail_reason,
send_status : send_status,
send_to : "D"
});
}
send_email_main();
]]></s:server-script>
</a:init-procedure>
</a:service>
SVC调用渣包静态方法
在SVC中调用渣包
<?xml version="1.0" encoding="UTF-8"?>
<a:service xmlns:p="uncertain.proc" xmlns:a="http://www.aurora-framework.org/application" xmlns:s="aurora.plugin.script" trace="true">
<a:init-procedure>
<p:echo/>
<s:server-script><![CDATA[
// 传参
var url = $ctx.parameter.url;
var data = 'XXXXXXXXXXXXXXXXX';
$ctx.parameter.data = data;
// 展开节点
$ctx.createChildByTag('/parameter/resp');
$ctx.parameter.parameters = data;
]]></s:server-script>
<!-- 调用Jar包方法 方法类, 方法, 结果输出 -->
<p:method-invoke className="com.clms.net.Request" methodName="sendPost" resultPath="/parameter/resp/@respStr">
<!-- 参数列表 -->
<p:arguments>
<p:argument path="/parameter/@url" type="java.lang.String"/>
<p:argument path="/parameter/@data" type="java.lang.String"/>
</p:arguments>
</p:method-invoke>
<!-- 输出查看 -->
<p:echo/>
</a:init-procedure>
<!-- 将结果返回 -->
<a:service-output output="/parameter/resp"/>
</a:service>