泛微OA 请求外部数据源

 

1  .oa 外部数据源配置好

取数据源名称 

 

引用key 固定写法 datasource.A_nc

 datasource.数据源名称

getConnection("datasource.A_nc",xf);//A账

2  引用方式

package weaver.interfaces.jphr;import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.xml.namespace.QName;import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.utils.StringUtils;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.StaticObj;
import weaver.interfaces.datasource.DataSource;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;/***/
public class PriceauditAction17 extends BaseBean implements Action {@Overridepublic String execute(RequestInfo info) {RequestInfo requestInfo = info;try {String requestid = requestInfo.getRequestid();//流程请求idString tablename = requestInfo.getRequestManager().getBillTableName();//流程表单数据库表RecordSet rs = new RecordSet();StringBuffer sbSql = new StringBuffer("select id ");sbSql.append(" ,lsh ");//编号sbSql.append(" ,xf ");//采购组织sbSql.append(" ,qdrq ");//签订日期sbSql.append(" ,gf ");//供应商sbSql.append(" ,gysbm ");//供应商编码sbSql.append(" ,ssrq ");//生效日期 sbSql.append(" ,sxrq ");//失效日期sbSql.append(" ,sb ");//税比sbSql.append(" from "+tablename+" a where  1=1 ");sbSql.append(" and a.requestid = "+ requestid);writeLog("价格协商纪要查询sql:"+sbSql);rs.execute(sbSql.toString() );//获取流程表单信息Map<String,Object> map = new HashMap<>();String mainid ="";//主表idString lsh ="";//编号String xf = "";//采购组织String qdrq = "";//签订日期String gf = "";//供应商String gysbm  = "";//供应商编码String ssrq  = "";//生效日期 String sxrq  = "";//失效日期String sb  = "";//税比double decimalValue = 0;//税比if (rs.next()) {mainid =rs.getString("id");//主表idlsh =rs.getString("lsh");//编号xf	=rs.getString("xf");//需方 采购组织qdrq	=rs.getString("qdrq");//签订日期gf =rs.getString("gf");//供应商gysbm =rs.getString("gysbm");//供应商编码ssrq =rs.getString("ssrq");//生效日期 sxrq =rs.getString("sxrq");//失效日期sb =rs.getString("sb");//税比//转换百分比=================SString percentage = sb; // 输入要转换的百分比字符串if (percentage.endsWith("%")) {int value = Integer.parseInt(percentage.substring(0, percentage.length() - 1));decimalValue = ((double)value / 100);writeLog("转换后的小数值为:" + decimalValue);} else {String msg_decimal = "比率是无效的百分比格式";writeLog(msg_decimal);String tmpstr=convertEncodingFormat(msg_decimal,  "GBK","GBK");requestInfo.getRequestManager().setMessagecontent("错误信息:"+tmpstr);requestInfo.getRequestManager().setMessageid(requestid);return Action.FAILURE_AND_CONTINUE;}//转换百分比================EString org_code = "";//采购组织编码;if(!"".equals(xf) && null != xf) {writeLog("需方 采购组织 PK值:"+xf);if("0001A11000000000GJOI".equals(xf)) {//山东org_code = getConnection("datasource.A_nc",xf);//A账}else if("0001A110000000003F5U".equals(xf)) {//湖北org_code = getConnection("datasource.A_nc",xf);//A账}else if("0001A110000000003F4U".equals(xf)) {//四川org_code = getConnection("datasource.A_nc",xf);//A账}else {org_code = getConnection("datasource.jpnc",xf);//B账}writeLog("需方 采购组织org_code:"+org_code);}map.put("pk_org_code", org_code);map.put("pk_dept_code","");map.put("dbilldate",qdrq);map.put("pk_bizpsn_code","");map.put("bsctype","N");map.put("vmemo","OA价格协商纪要流程编号:"+ lsh);}//供应商编码if(!"".equals(gysbm) && null != gysbm) {String supplier_num = "";writeLog("供应商编码:"+gysbm);if("SD001".equals(xf)) {//山东supplier_num = getConnectionCodeSupplierNum("datasource.A_nc",gysbm);//A账}else if("HB002".equals(gysbm)) {//湖北supplier_num = getConnectionCodeSupplierNum("datasource.A_nc",gysbm);//A账}else if("SC001".equals(gysbm)) {//四川supplier_num = getConnectionCodeSupplierNum("datasource.A_nc",gysbm);//A账}else {supplier_num = getConnectionCodeSupplierNum("datasource.jpnc",gysbm);//B账}if(supplier_num.equals("1")) {}else {String tmpstr=convertEncodingFormat("供应商编码NC系统不存在!",  "GBK","GBK");requestInfo.getRequestManager().setMessagecontent("错误信息:"+tmpstr);requestInfo.getRequestManager().setMessageid(requestid);writeLog("NC interface msg:FAIL 供应商编码NC系统不存在!");return Action.FAILURE_AND_CONTINUE;}}else {String tmpstr=convertEncodingFormat("供应商编码不能为空",  "GBK","GBK");requestInfo.getRequestManager().setMessagecontent("错误信息:"+tmpstr);requestInfo.getRequestManager().setMessageid(requestid);writeLog("NC interface msg:FAIL 供应商编码不能为空");return Action.FAILURE_AND_CONTINUE;}//物料  =============================SRecordSet rs2 = new RecordSet();StringBuffer sbSql_dt = new StringBuffer("select id ");sbSql_dt.append(" ,wlbm ");//物料编码sbSql_dt.append(" ,wlmc ");//物料名称sbSql_dt.append(" ,dw ");//单位sbSql_dt.append(" ,yj ");//原价sbSql_dt.append(" ,xj ");//现价sbSql_dt.append(" ,bz ");//行备注sbSql_dt.append(" ,shxrq ");//生效sbSql_dt.append(" ,sxrq ");//失效日期sbSql_dt.append(" from "+tablename+"_dt1 a where  1=1 ");sbSql_dt.append(" and mainid = "+ mainid);writeLog("价格协商纪要查询sql:"+sbSql_dt);rs2.execute(sbSql_dt.toString() );List<Map<String,Object>> materialList = new ArrayList<Map<String,Object>>();while (rs2.next()) {String wlbm=rs2.getString("wlbm");String xj=rs2.getString("xj");String bz=rs2.getString("bz");String ssrq_dt=rs2.getString("shxrq");String sxrq_dt=rs2.getString("sxrq");Map<String,Object> expMap1 = new HashMap<String,Object>();expMap1.put("cmaterialoid_code", wlbm);//物料编码expMap1.put("supplier_code", gysbm);//供应商编码expMap1.put("nqttaxprice", xj);//含税价expMap1.put("vmemo_b", bz);//行备注expMap1.put("border", "Y");//预订 默认预订 YexpMap1.put("dqtvaliddate", ssrq);//生效时间 用主表的expMap1.put("dqtinvaliddate", sxrq);//失效时间  用主表的expMap1.put("vbdef2", decimalValue + "");//税比  用主表的materialList.add(expMap1);}map.put("body", materialList);//物料  =============================EObjectMapper mapper = new ObjectMapper();String jsonStr = mapper.writeValueAsString(map);writeLog("NC interface msg jsonStr 入参:"+ jsonStr);Service service=new Service();Call call = (Call)service.createCall();//String IP_PORT = "192.168.1.133:633";//B账 192.168.1.2:633   A账 192.168.130.15:633 本地测试192.168.18.35:80 String IP_PORT = "192.168.1.2:633";//B账 192.168.1.2:633   A账 192.168.130.15:633 本地测试192.168.18.35:80 //0001A110000000003F4U  四川金彭车业有限公司  SC001//0001A11000000000GJOI	山东金彭新能源科技有限公司	SD001//0001A110000000003F5U	湖北金彭车业有限公司	HB002if("0001A11000000000GJOI".equals(xf)) {//山东IP_PORT = "192.168.130.15:633";}else if("0001A110000000003F5U".equals(xf)) {//湖北IP_PORT = "192.168.130.15:633";}else if("0001A110000000003F4U".equals(xf)) {//四川IP_PORT = "192.168.130.15:633";}String URL = "http://"+IP_PORT+"/uapws/service/JpncinterfaceService";writeLog("NC interface msg URL:"+ URL);call.setTargetEndpointAddress(new java.net.URL(URL));call.setOperationName(new QName("http://jpncinterface.itf.nc/IJpncInterface", "getNcInterface"));call.addParameter("ordertype", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);call.addParameter("operationtype", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);call.addParameter("orderform", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);String result = null;result=(String)call.invoke(new Object[]{"priceaudit","Insert", jsonStr});writeLog("NC interface msg:"+ result);if ( result.contains("\"$successful\":\"Y\"") ) {writeLog("NC interface msg:SUCCESS: "+result);}else{String tmpstr=convertEncodingFormat(result.trim(),  "GBK","GBK");requestInfo.getRequestManager().setMessagecontent("错误信息:"+tmpstr);requestInfo.getRequestManager().setMessageid(requestid);writeLog("NC interface msg:FAIL"+result);return Action.FAILURE_AND_CONTINUE;}	} catch (Exception e) {  writeLog("异常:"+e.getMessage()+"");}  return Action.SUCCESS;}/*** * @param datasource* @return*/public static String getConnection(String datasource,String pk_org){String org_code = "";//调用数据源生成jdbc链接DataSource jpnc = (DataSource) StaticObj.getServiceByFullname((datasource), DataSource.class);//local为配置的数据源标识Connection conn = null ;ResultSet rswb  = null ;try{conn = jpnc.getConnection();rswb = conn.createStatement().executeQuery("select pk_org,name,code from jpncdb1.org_orgs where dr=0 and islastversion='Y' and pk_org = '"+pk_org+"'");while(rswb.next()){org_code = rswb.getString("code");//writeLog("业务单元编码:"+rswb.getString("code"));break;}rswb.close();}catch(Exception e){e.getStackTrace();//writeLog(e);}finally{try {conn.close();} catch (SQLException e) {}}return org_code;}/*** * @return*/public static String getConnectionCodeSupplierNum(String datasource,String code){String supplier_num = "";//调用数据源生成jdbc链接DataSource jpnc = (DataSource) StaticObj.getServiceByFullname((datasource), DataSource.class);//local为配置的数据源标识Connection conn = null ;ResultSet rswb  = null ;try{conn = jpnc.getConnection();rswb = conn.createStatement().executeQuery("select count(1) supplier_num from jpncdb1.bd_supplier where code = '"+code+"'");while(rswb.next()){supplier_num = rswb.getString("supplier_num");break;}rswb.close();}catch(Exception e){e.getStackTrace();//writeLog(e);}finally{try {conn.close();} catch (SQLException e) {}}return supplier_num;}public static String convertEncodingFormat(String str, String formatFrom, String FormatTo) {String result = null;if (!(str == null || str.length() == 0)) {try {result = new String(str.getBytes(formatFrom), FormatTo);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}return result;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/17894.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习基础—Bleu得分

引言 机器翻译任务中&#xff0c;通常会需要评价指标来评估机器翻译的好坏。仅通过统计翻译词在标准翻译中出现的次数这种方式很不合理&#xff0c;就需要用到Bleu得分来进行评估。 1.n-gram&#xff08;N元组&#xff09; 假设要翻译&#xff1a;Le chat est sur le tapis&am…

794: 最近对问题

解法&#xff1a; #include<bits/stdc.h> using namespace std; const int N1e33; struct P{int x,y; }a[N]; int main(int argc, char** argv) {int t,n;cin>>t;while (t--){cin>>n;for (int i0;i<n;i) cin>>a[i].x>>a[i].y;double dis,mn1…

Vue基础(1)_模板语法、数据绑定

模板语法 Vue模板语法有2大类&#xff1a; 1、插值语法&#xff1b; 功能&#xff1a;用于解析标签体内内容。 写法&#xff1a;{{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 2、指令语法&#xff1a; 功能&#xff1a;用于解析标签(包括…

如何清洗电水壶中的水垢亲自实践

以前看过很多生活小妙招&#xff0c;什么柠檬啊&#xff0c;白醋啊&#xff0c;土豆片啊&#xff0c;都测试过。没有用。因为自来水很硬&#xff0c;钙比较重。 钙覆盖在水壶底部&#xff0c;烧水就滋滋得响&#xff0c;而且效率变低。 昨天买洁厕剂&#xff0c;看到一种除垢…

LC13:滑动窗口

文章目录 1052. 爱生气的书店老板 这个专栏记录自己刷题碰到的有关滑动窗口的题目。 1052. 爱生气的书店老板 题目链接&#xff1a;1052. 爱生气的书店老板 第一感应该是滑动窗口可以解决的&#xff0c;随后思考并写了几个版本&#xff0c;最终版本实现结合滑动窗口一次遍历…

酒店管理系统(源码+文档+部署+讲解)

本文将深入解析“酒店管理系统”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 酒店管理系统是一款为酒店行业设计的全面管理软件&#xff0c;旨在通过集成酒店运营的各个关键环节&#xff0c;提高酒店的管理效率和客户满意…

D3开发的基本框架步骤

D3.js 是一个功能强大的数据可视化库&#xff0c;用于在网页上创建复杂的图表和交互式图形。以下是一个基本的 D3.js 开发框架&#xff0c;包括了常见的步骤和代码示例&#xff0c;帮助你快速入门。 基本框架 引入 D3.js 库设置 SVG 容器加载数据创建比例尺绘制图形添加轴添加…

正则表达式完全指南,总结全面通俗易懂

目录 元字符 连接符 限定符 定位符 修饰符&#xff08;标记&#xff09; 运算符优先级 普通字符集及其替换 零宽断言 正向先行断言 负向先行断言 正向后发断言 负向后发断言 正则表达式在线测试: 正则在线测试工具 元字符 字符描述\d 匹配一个数字字符。等价于 …

对象的初步认识

#对象可组织数据&#xff08;如统计数据的表格&#xff09; 下以表格为例 1.设计一个表格:(None为初始值设定&#xff0c;表示无) class a; ##1None ##2None 2.创建一个表格 变量a 3.对对象的属性进行赋值 变量.##1"##" 变量.##2"##" 4.查询对象中…

Linux驱动开发第1步_了解STM32MP157D

了解STM32MP157D有哪些硬件资源&#xff0c;为以后进行Linux驱动开发做准备。 STM32MP157A/D器件基于高性能双核ArmCortex-A7 32位RISC内核&#xff0c;工作频率高达800 MHz。Cortex-A7处理器&#xff1a;每个CPU具有32kbyte L1指令缓存&#xff0c;每个CPU具有32kbyte L1数据…

w039基于Web足球青训俱乐部管理后台系统开发

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…

windows C#-编写 C# LINQ 查询(上)

介绍性的语言集成查询 (LINQ) 文档中的大多数查询是使用 LINQ 声明性查询语法编写的。 但是在编译代码时&#xff0c;查询语法必须转换为针对 .NET 公共语言运行时 (CLR) 的方法调用。 这些方法调用会调用标准查询运算符(名称为 Where、Select、GroupBy、Join、Max 和 Average …

c++入门->类的定义以及this详细解析

1.对象的定义 可以在内部定义变量还有函数&#xff0c;而其中的public是声明这里面的东西是共有的&#xff0c;可以调用也可以修改&#xff0c;但是private则是声明这里面的东西是私有的不可以被改变的&#xff0c;但是在类里面共有的是可以使用私有的。 在对象中默认都是私有…

SAP- 不写代码创建报表

创建报表 点击报保存&#xff0c;表Z0708创建完成 关联三张数据库底表 点击返回 点击报保存&#xff0c;表Z0708创建完成 创建报表

从PE结构到LoadLibrary

从PE结构到LoadLibrary PE是Windows平台主流可执行文件格式,.exe , .dll, .sys, .com文件都是PE格式 32位的PE文件称为PE32&#xff0c;64位的称为PE32&#xff0c;PE文件格式在winnt.h头中有着详细的定义&#xff0c;PE文件头包含了一个程序在运行时需要的所有信息&#xff…

聚类分析 | MSADBO优化Spectral谱聚类优化算法

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于改进正弦算法引导的蜣螂优化算法(MSADBO)优化Spectral谱聚类&#xff0c;matlab代码&#xff0c;直接运行! 创新独家&#xff0c;先用先发&#xff0c;注释清晰&#xff0c;送MSADBO参考文献!优化参数 优化后的带…

【C++】构造与析构函数

目录&#xff1a; 一、 This指针  &#xff08;一&#xff09;使用方法&#xff1a; 二、类的默认成员函数 三、构造函数  &#xff08;一&#xff09;构造函数的特点 四、析构函数 &#xff08;一&#xff09;析构函数的特点 正文 一、 This指针 在c语言中我们调用函…

2021TCSVT,VDM-DA:面向无源数据域自适应的虚拟域建模

原文标题&#xff1a;VDM-DA: Virtual Domain Modeling for Source Data-free Domain Adaptation 中文标题&#xff1a;VDM-DA&#xff1a;面向无源数据域自适应的虚拟域建模 1、Abstract 领域适应旨在利用标签丰富的领域&#xff08;源领域&#xff09;来帮助标签稀缺领域&…

MySQL数据库1——数据库概论

一.数据库概论 1.数据库 数据库&#xff08;DataBase&#xff0c;DB&#xff09;&#xff1a;是长期存储在计算机内、有组织的、统一管理的相关数据的集合。简单来说&#xff0c;它就是一个存储各种数据的仓库&#xff0c;且存储过程不是随便而是有组织的。 数据库管理系统&am…

英伟达Tensor Core技术架构原理分析

英伟达Tensor Core架构技术原理 英伟达的Tensor Core架构是一种专为加速人工智能、深度学习、高性能计算(HPC)等领域中的矩阵运算和张量运算而设计的硬件单元。自首次在Volta架构中引入以来&#xff0c;Tensor Cores已成为NVIDIA高端GPU的核心特性&#xff0c;并在后续的Turing…