对接远端体检信息
与远端平台对接
1、访问接口
跳转到DAO层,获取数据
2、条件参数
条件参数都存在ProcedureCpEnum枚举类中
public enum ProcedureCpEnum {
/**查询类型*/
CLOUD_PHYSICAL_LIST("体检套餐查询","clpList","{ call usp_web_webtrans_CTJYW001() }"),
CLOUD_PHYSICAL_DETAIL("体检套餐明细查询","clpdetial","{ call usp_web_webtrans_CTJYW002_1(?) }"),
CLOUD_PHYSICAL_DETAIL_ITEM("体检套餐内收费项目查询","clpdetialitem","{ call usp_web_webtrans_CTJYW002_2(?) }"),
CLOUD_PHYSICAL_OTHER_POJB("获取所有收费项目查询","clpotherprjb","{ call usp_web_webtrans_CTJYW003() }"),
CLOUD_PHYSICAL_ORDER("获取体检订单列表","clporder","{ call usp_web_webtrans_CTJYW004_1(?,?,?,?,?) }"),
CLOUD_PHYSICAL_PACKAGE_LIST("根据体检编号获取项目列表","clppackagelist","{ call usp_web_webtrans_CTJYW004_2(?,?) }"),
CLOUD_PHYSICAL_SCHEDULE("体检排班查询","clpschedule","{ call usp_web_webtrans_CTJYW017(?,?,?) }"),
/**操作类型*/
CLOUD_PHYSICAL_APPOINT("体检预约","clpappoint","{ call usp_web_webtrans_BTJYW001(?,?,?,?,?,?,?,?,?,?,?,?,?,?) }"),
CLOUD_PHYSICAL_APPOINT_CANCEL("取消体检预约","clpappointcal","{ call usp_web_webtrans_BTJYW003(?,?) }");
}
包含备注、返回体名、sql语句:
call uspweb_webtrans_CTJYW001()中的call就是执行sql server语句,usp_web_webtrans_CTJYW001语句名就在远端的sql脚本中(不用咋们自己写_)。
之后通过ConnectDBCallProUtil工具类调用远程交互。
3、远程数据库交互
代码示例:
/**
* 连接打开远程sqlserver数据库,执行存储过程
* @param sql
* @param params
* @return
*/
public static List<Object> callProcedure(String sql, Object[] params){
List<Object> listResult = new ArrayList<>();
logger.info("call sql= {},",sql);
SessionFactory sessionFactory = (SessionFactory) SpringContextUtil.getBean("sessionFactoryServer");
Session session = sessionFactory.openSession();
session.beginTransaction();
try {
SQLQuery query = session.createSQLQuery(sql);
if (null != params) {
int i = 0;
for (Object param : params) {
if(null == param){
query.setString(i,null);
} else {
if (param instanceof String) {
query.setString(i, param.toString());
} else if (param instanceof Integer) {
query.setInteger(i, ((Integer) param).intValue());
}
}
i++;
}
}
listResult = query.list();
logger.info("call sql= {} =,listResult size={}", sql, listResult.size());
//提交对数据的操作
session.getTransaction().commit();
closeSession(session);
} catch (Exception e) {
logger.error("执行存储过程异常={}",e);
closeSession(session);
} finally {
closeSession(session);
}
return listResult;
}
以上是连接打开远程sqlserver数据库,执行存储过程
先连接一个session工厂,开一个session连接资源
SessionFactory sessionFactory = (SessionFactory) SpringContextUtil.getBean("sessionFactoryServer"); Session session = sessionFactory.openSession(); session.beginTransaction();
打开query,拼接参数
SQLQuery query = session.createSQLQuery(sql);
执行查询
listResult = query.list(); //提交对数据的操作 session.getTransaction().commit();
一定要记得关闭资源,不然一直申请,会达到一个上限,导致申请不到session ```java closeSession(session); } catch (Exception e) { logger.error(“执行存储过程异常={}”,e); closeSession(session); } finally { closeSession(session); }
private static void closeSession(Session session){ if(session.isOpen()){ session.close(); } } ```
与本地数据处理
_