From e94b5d88fe6415cdc0afb598e15a169ad7648903 Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 16 Dec 2021 14:47:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=AC2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 + power-admin/pom.xml | 16 ++ .../com/manage/controller/FontController.java | 198 +++++++++++++++- .../main/java/com/manage/utils/HttpUtils.java | 211 ++++++++++++++++++ .../main/java/com/manage/utils/JsonUtils.java | 44 ++++ .../java/com/manage/utils/ResultUtils.java | 73 ++++++ .../main/java/com/manage/utils/XmlUtils.java | 134 +++++++++++ 7 files changed, 677 insertions(+), 5 deletions(-) create mode 100644 power-admin/src/main/java/com/manage/utils/HttpUtils.java create mode 100644 power-admin/src/main/java/com/manage/utils/JsonUtils.java create mode 100644 power-admin/src/main/java/com/manage/utils/ResultUtils.java create mode 100644 power-admin/src/main/java/com/manage/utils/XmlUtils.java diff --git a/pom.xml b/pom.xml index 9522197..0d91a8c 100644 --- a/pom.xml +++ b/pom.xml @@ -270,6 +270,12 @@ 2.7.1 + + org.springframework.boot + spring-boot-starter-parent + 2.0.8.RELEASE + + diff --git a/power-admin/pom.xml b/power-admin/pom.xml index 12a8a49..0359664 100644 --- a/power-admin/pom.xml +++ b/power-admin/pom.xml @@ -93,9 +93,25 @@ com.fasterxml.jackson.core jackson-databind + + + + + + org.dom4j + dom4j + 2.1.1 + + + + jaxen + jaxen + 1.1.1 + com.alibaba fastjson + 1.2.75 diff --git a/power-admin/src/main/java/com/manage/controller/FontController.java b/power-admin/src/main/java/com/manage/controller/FontController.java index 3579594..85e397c 100644 --- a/power-admin/src/main/java/com/manage/controller/FontController.java +++ b/power-admin/src/main/java/com/manage/controller/FontController.java @@ -1,11 +1,14 @@ package com.manage.controller; - import com.fasterxml.jackson.databind.ObjectMapper; + +import com.manage.config.WebServiceCxf; import com.manage.dao.Power_NoticeMapper; import com.manage.dao.Power_UserMapper; import com.manage.encrypt.Base64; import com.manage.encrypt.MD5; import com.manage.entity.*; +import com.manage.interfaces.webservice.PowerWebService; +import com.manage.interfaces.webservice.impl.PowerWebServiceImpl; import com.manage.service.*; import com.manage.service.cache.Cache; import com.manage.service.cache.CacheManager; @@ -14,18 +17,24 @@ import com.manage.service.webSocket.WsPool; import com.manage.util.DateUtils; import com.manage.util.ExceptionPrintUtil; import com.manage.util.Msg; +import com.manage.utils.ResultUtils; +import com.manage.utils.XmlUtils; import com.manage.vo.*; import org.apache.commons.lang3.StringUtils; +import org.apache.cxf.endpoint.Client; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.util.CollectionUtils; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; +import javax.jws.WebService; +import java.io.ByteArrayInputStream; +import java.io.UnsupportedEncodingException; +import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * @ProjectName: @@ -63,6 +72,10 @@ public class FontController { @Autowired private Power_DeptService power_deptService; + public static Class getUserClass(Object root) { + return null; + } + /** * 2.1 * @ProjectName: getRolePowerTreeBySysFlag @@ -363,6 +376,181 @@ public class FontController { return Msg.success().add("list",list); } + + public static void main(String[] args) throws UnsupportedEncodingException { + String xml="*******医院信息平台sj1C821B22D0402F317E40D93213C66843"; + XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(xml.getBytes("UTF-8"))); + String username = xmlUtils.getElement("username"); + String password = xmlUtils.getElement("password"); + System.out.println(username); + System.out.println(password); + System.out.println(ResultUtils.success().asXML()); + } + + /** + * 2.10 + * @ProjectName: getToken + * @Description: 获取token + * @Param 无 + * @Return Msg + * @Author: 曾文和 + * @CreateDate: 2019/11/06 10:00 + * @UpdateUser: 更新者 + * @UpdateDate: 2019/11/06 10:00 + * @UpdateRemark: 更新说明 + * @Version: 1.0 + */ + @RequestMapping(value = "getTokenForHis",method = RequestMethod.POST) + @ResponseBody + public Msg getTokenForHis(String userName,String password) throws Exception{ + + + if(StringUtils.isBlank(userName)){ + return Msg.fail("用户名不能为空"); + } + if(StringUtils.isBlank(password)){ + return Msg.fail("密码不能为空"); + } + //1.根据userName,password调用webService,校验第三方系统中是否有此账号 + if (!linkHisLogin(userName,password)) { + return Msg.fail("校验第三方系统失败"); + } + //2.根据userName查询我们的用户表是否存在 + Power_UserVo userVo = new Power_UserVo(); + // 判断数据库中是否有此用户,如果没有则插入数据库 + List user = userMapper.selectList().stream().filter(u -> userName.equals(u.getUserName())).limit(1).collect(Collectors.toList()); + userVo = user.get(0); + if (user.size() == 0) { + //2.1不存在往用户表新增这条用户 + userVo.setUserName(userName); +// userVo.setUserPwd(Base64.encode(MD5.KL("1C821B22D0402F317E40D93213C66843"))); + userVo.setUserPwd(Base64.encode(MD5.KL(password))); + userVo.setRoleId(1); + userVo.setDeptId("3"); + userVo.setEffective(1); + userVo.setCreater("his"); + SimpleDateFormat fmt= new SimpleDateFormat(); + userVo.setCreateDate(fmt.format(new Date())); + //插入00 + userMapper.insert(userVo); + } + String token = setToken(userVo); + return Msg.success().add("token",token); + } + + + + private boolean linkHisLogin(String userName, String password) { + //创建连接工厂 + JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance(); + //创建客户端 + Object[] objects = new Object[0]; + + Client client = null; + try { + //医院给的webservice地址 + String url = "http://192.168.128.170/csp/hsb/DHC.Published.PUB0025.BS.PUB0025.CLS?WSDL=1"; + client = dcf.createClient(url); + //动态调用getInfosByUserId方法 + //获取请求参数xml字符串 + String xmlStr = getXml(userName,password); + objects = client.invoke("HIPManagerInfo", "S0110",xmlStr); + //应答信息 + String re = objects[0].toString(); + System.out.println(re); + //新用户存到数据库 + if (re.contains("成功")) { + return true; + } + return false; + } catch (Exception e) { + e.printStackTrace(); + } finally { + if(null != client) { + client.destroy(); + } + } + return false; + } + + private String getXml(String userName, String password) { + + String Request=" "+"嘉时软件"+"" + + " 医院信息平台 " + + " "+userName+" "+password+"" + + " "; + + return Request; + + + } + + /** + * 动态调用getInfosByUserId方法 + * @param + * @return + */ + @RestController + public class TestController{ + @Autowired + private PowerWebServiceImpl powerWebService; + @Autowired + private WebServiceCxf webServiceCxf; + @GetMapping("/call") + public String call(String id) { + PowerWebService queryService = WebServiceCxf.createQueryService(id); + System.out.println(queryService.toString()); +// return queryService.getInfosByUserId("token","sj"); + String token = CacheManager.getCacheByUserId(id); + return queryService.getInfosByUserId(token, id); + } + } + + private String setToken(Power_UserVo userVo){ + String date = String.valueOf(DateUtils.getDate()); + String token = Base64.encode(MD5.KL(date)); + List list = null; + List menuList = new ArrayList<>(); + Set menus = new TreeSet<>(); + if (userVo.getRoleId().equals(0) || userVo.getRoleId().equals(-100)) { + list = powerMenuService.queryAllPowerMenu(null,userVo.getRoleId()); + } else { + list = powerMenuService.selectUserAndRoleMenuListPower(userVo.getUserId(),null); + } + if(null != list && !list.isEmpty()){ + for (Power_Menu powerMenu : list) { + User_Dept_Menu deptMenu = new User_Dept_Menu(); + String menuUrl = powerMenu.getMenuUrl(); + if (StringUtils.isNotBlank(menuUrl)) { + BeanUtils.copyProperties(powerMenu, deptMenu); + deptMenu.setMethodParent(powerMenu.getParentId()); + menuList.add(deptMenu); + } + if (StringUtils.isNotBlank(powerMenu.getMethod())) { + menus.add(powerMenu.getMenuUrl()); + } + } + } + userVo.setMenuList(menuList); + userVo.setMenus(menus); + + //设置科室 + StringBuilder powerDepts = new StringBuilder(); + List powerDeptList = power_deptService.selectByPrimaryKeys(userVo.getDeptId()); + for(int j = 0;j < powerDeptList.size();j++){ + if(j params) throws URISyntaxException { +// URIBuilder ub = new URIBuilder(); +// ub.setPath(url); +// +// ArrayList pairs = covertParams2NVPS(params); +// ub.setParameters(pairs); +// +// HttpGet httpGet = new HttpGet(ub.build()); +// return getResult(httpGet); +// } +// /** +// * @param url、headers、params +// * @return +// */ +// public static String get(String url, Map headers, Map params) +// throws URISyntaxException { +// URIBuilder ub = new URIBuilder(); +// ub.setPath(url); +// +// if (params != null) { +// ArrayList pairs = covertParams2NVPS(params); +// ub.setParameters(pairs); +// } +// +// HttpGet httpGet = new HttpGet(ub.build()); +// for (Map.Entry param : headers.entrySet()) { +// httpGet.addHeader(param.getKey(), String.valueOf(param.getValue())); +// } +// return getResult(httpGet); +// } +// /** +// * @param url +// * @return +// */ +// public static String post(String url) { +// HttpPost httpPost = new HttpPost(url); +// return getResult(httpPost); +// } +// /** +// * @param url、params +// * @return +// */ +// public static String post(String url, Map params) throws UnsupportedEncodingException { +// HttpPost httpPost = new HttpPost(url); +// httpPost.setEntity(new UrlEncodedFormEntity(covertParams2NVPS(params), "utf-8"));//设置表单提交编码 +// +//// httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_FORM_URLENCODED)); +// return getResult(httpPost); +// } +// +// public static String post(String url, Object params, Map head) throws UnsupportedEncodingException { +// HttpPost httpPost = new HttpPost(url); +// System.out.println(params); +// httpPost.setEntity(new StringEntity(params.toString()));//设置表单提交编码 +// if (params != null) { +// for (Map.Entry param : head.entrySet()) { +// httpPost.addHeader(param.getKey(), String.valueOf(param.getValue())); +// } +// } +//// httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_FORM_URLENCODED)); +// return getResult(httpPost); +// } +// +// private static ArrayList covertParams2NVPS(Map params) { +// ArrayList pairs = new ArrayList(); +// for (Map.Entry param : params.entrySet()) { +// if (param.getValue() != null) { +// pairs.add(new BasicNameValuePair(param.getKey(), param.getValue())); +// } +// } +// +// return pairs; +// } +// /** +// * @param url、headers、params +// * @return +// */ +// public static String post(String url, Map headers, Map params) +// throws UnsupportedEncodingException { +// HttpPost httpPost = new HttpPost(url); +// System.out.println(params); +// if (params != null) { +// for (Map.Entry param : headers.entrySet()) { +// httpPost.addHeader(param.getKey(), String.valueOf(param.getValue())); +// } +// } +// +// httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_JSON)); +// +// return getResult(httpPost); +// } +// +// /** +// * 处理Http请求 +// * +// * @param request +// * @return +// */ +// private static String getResult(HttpRequestBase request) { +// // CloseableHttpClient httpClient = HttpClients.createDefault(); +// CloseableHttpClient httpClient = getHttpClient(); +// try { +// CloseableHttpResponse response = httpClient.execute(request); +// // response.getStatusLine().getStatusCode(); +// HttpEntity entity = response.getEntity(); +// if (entity != null) { +// // long len = entity.getContentLength();// -1 表示长度未知 +// String result = EntityUtils.toString(entity, UTF_8); +// response.close(); +// // httpClient.close(); +// return result; +// } +// } catch (ClientProtocolException e) { +// e.printStackTrace(); +// } catch (IOException e) { +// e.printStackTrace(); +// } finally { +// +// } +// +// return EMPTY_STR; +// } +// +// /** +// * 处理Http请求 +// * +// * @param requestBuilder +// * @return +// */ +// private static String getResult(RequestBuilder requestBuilder) { +// // CloseableHttpClient httpClient = HttpClients.createDefault(); +// CloseableHttpClient httpClient = getHttpClient(); +// try { +// CloseableHttpResponse response = httpClient.execute(requestBuilder.build()); +// // response.getStatusLine().getStatusCode(); +// HttpEntity entity = response.getEntity(); +// if (entity != null) { +// // long len = entity.getContentLength();// -1 表示长度未知 +// String result = EntityUtils.toString(entity, UTF_8); +// response.close(); +// // httpClient.close(); +// return result; +// } +// } catch (ClientProtocolException e) { +// e.printStackTrace(); +// } catch (IOException e) { +// e.printStackTrace(); +// } finally { +// +// } +// +// return EMPTY_STR; +// } +//} diff --git a/power-admin/src/main/java/com/manage/utils/JsonUtils.java b/power-admin/src/main/java/com/manage/utils/JsonUtils.java new file mode 100644 index 0000000..ddc6be0 --- /dev/null +++ b/power-admin/src/main/java/com/manage/utils/JsonUtils.java @@ -0,0 +1,44 @@ +package com.docus.bgts.utils; + +import java.io.*; + +/** + * json工具类 + */ +public class JsonUtils { + + /** + * 读取json文件方法 + * @param fileName:json文件存在的本地地址 + * @return + */ + public static String readJsonFile(String fileName) { + String jsonStr = ""; + Reader reader=null; + FileReader fileReader=null; + try { + File jsonFile = new File(fileName); + fileReader = new FileReader(jsonFile); + reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8"); + int ch = 0; + StringBuffer sb = new StringBuffer(); + while ((ch = reader.read()) != -1) { + sb.append((char) ch); + } + fileReader.close(); + reader.close(); + jsonStr = sb.toString(); + return jsonStr; + } catch (IOException e) { + e.printStackTrace(); + return null; + }finally { + try { + reader.close(); + fileReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} diff --git a/power-admin/src/main/java/com/manage/utils/ResultUtils.java b/power-admin/src/main/java/com/manage/utils/ResultUtils.java new file mode 100644 index 0000000..517c1c9 --- /dev/null +++ b/power-admin/src/main/java/com/manage/utils/ResultUtils.java @@ -0,0 +1,73 @@ +package com.manage.utils; +import org.dom4j.Document; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; + +/** + * 返回结果工具类 + */ +public class ResultUtils { + /** + * 通过document对象返回节点对象 + * @param response + * @return + */ + public static Element getElement(Document response){ + Element element = response.getRootElement(); + return element; + } + + /** + * 成功返回 + * @return + */ + public static Document success(){ + // 1、创建document对象 + Document document= DocumentHelper.createDocument(); + //2.创建根节点 + Element response=document.addElement("Response"); + // 3、生成子节点及子节点内容 + response.addElement("ResultCode").setText("0"); + response.addElement("ResultCount").setText("成功"); + return document; + } + + /** + * 失败返回 + * @return + */ + public static String fail(){ + // 1、创建document对象 + Document document= DocumentHelper.createDocument(); + //2.创建根节点 + Element response=document.addElement("Response"); + // 3、生成子节点及子节点内容 + response.addElement("ResultCode").setText("1"); + response.addElement("ResultCount").setText("失败"); +// //赋值 +// resCode.setText(String.valueOf(Codes.ERROR.getCode())); +// retCon.setText(Codes.ERROR.getMessage()); + return document.asXML(); + } + +// /** +// * 失败返回 +// * @return +// */ +// public static String fail(String message){ +// // 1、创建document对象 +// Document document= DocumentHelper.createDocument(); +// //2.创建根节点 +// Element response=document.addElement(Codes.RESPONSE.getMessage()); +// // 3、生成子节点及子节点内容 +// Element RetInfo = response.addElement(Codes.RET_INFO.getMessage()); +// //4.生成代码和描述节点 +// Element resCode = RetInfo.addElement(Codes.RET_CODE.getMessage()); +// Element retCon = RetInfo.addElement(Codes.RET_CON.getMessage()); +// //赋值 +// resCode.setText(String.valueOf(Codes.ERROR.getCode())); +// retCon.setText(StringUtils.isNotBlank(message)?message: Codes.ERROR.getMessage()); +// return document.asXML(); +// } + +} diff --git a/power-admin/src/main/java/com/manage/utils/XmlUtils.java b/power-admin/src/main/java/com/manage/utils/XmlUtils.java new file mode 100644 index 0000000..7f65529 --- /dev/null +++ b/power-admin/src/main/java/com/manage/utils/XmlUtils.java @@ -0,0 +1,134 @@ +package com.manage.utils; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import java.io.InputStream; + +public class XmlUtils { + //定义解析器和文档对象 + private SAXReader saxReader; + private Document document; + + public XmlUtils(String path) { + //获取解析器 + saxReader = new SAXReader(); + try { + //获取文档对象 + document = saxReader.read(path); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public XmlUtils(InputStream path) { + //获取解析器 + saxReader = new SAXReader(); + try { + //获取文档对象 + document = saxReader.read(path); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** + * 动态获取节点内容 + * + * @return + */ + public String getElement(String name) { + //获取根节点 + Element root = document.getRootElement(); +// Object directory = FileUtils.getJsonByName(Codes.DIRECTORY.getMessage()); +// Element current = root; +// if (directory == null) { +// throw new RuntimeException("没有定义目录结构"); +// } +// List directoryArr = (List) directory; +// for (String dire : directoryArr) { +// current = current.element(dire); +// } + return root.element(name) == null ? "" : root.element(name).getText(); + } + +// /** +// * 根据路径动态获取节点 +// * +// * @return +// */ +// public Element getElement(List directory) { +// //获取根节点 +// Element root = document.getRootElement(); +// +// Element current = root; +// List directoryArr = directory; +// for (String dire : directoryArr) { +// current = current.element(dire); +// } +// if (current == null) { +// throw new RuntimeException("未找到对应节点"); +// } +// return current; +// } +// +// /** +// * 返回存在的根节点 +// */ +// public List getJsonByName() { +// //获取目录结构 +// String path = FileUtils.currentPath(); +// //解析json映射文件 +// String json = com.docus.bgts.utils.JsonUtils.readJsonFile(path + Codes.JSON_ADDRESS.getMessage()); +// Map jsonMap = JSON.parseObject(json, Map.class); +// //判断是否多条 +// List basicArr = (List) jsonMap.get("doubleBasic"); +// List directory = (List) jsonMap.get("basicDirectory"); +// List elements = null; +// Element root = this.getElement(directory); +// for (String basic : basicArr) { +// elements = root.elements(basic); +// if (elements != null && elements.size() > 0) { +// break; +// } +// } +// if (elements == null || elements.size() == 0) { +// //只有一条 +// List rootDirectory = (List) jsonMap.get("directory"); +// root = this.getElement(rootDirectory); +// elements = new ArrayList<>(); +// elements.add(root); +// } +// return elements; +// } +// +// /** +// * 根据节点名称获取内容 +// * +// * @param name 节点名称 +// * @return 节点内容 +// */ +// public String getElementText(String name) { +// //定位根节点 +// Element root = document.getRootElement(); +// //根据名称定位节点 +// Element msg = root.element(Codes.MSG.getMessage()); +// if (msg == null) { +// throw new RuntimeException("没有" + Codes.MSG.getMessage() + "节点"); +// } +//// Element patInfo = msg.element(Codes.PAT_INFO.getMessage()); +//// if(patInfo==null){ +//// throw new RuntimeException("没有"+Codes.PAT_INFO.getMessage()+"节点"); +//// } +// Element element = msg.element(name); +// if (element == null) { +// return null; +// } +// //返回节点内容 +// return element.getText(); + // } + +}