Hand-Aurora-svc常见设计

使用数据库进行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&paramB=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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值