diff --git a/pom.xml b/pom.xml
index f6194b5..9522197 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,7 @@
3.9
1.6.3
138
+ 3.1.8
@@ -217,6 +218,60 @@
${base64.version}
compile
+
+
+ org.apache.cxf
+ cxf-rt-transports-http
+ ${cxf.version}
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxws
+ ${cxf.version}
+
+
+
+ org.dom4j
+ dom4j
+ 2.1.1
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web-services
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxws
+ 3.1.6
+
+
+ org.apache.cxf
+ cxf-rt-transports-http
+ 3.1.6
+
+
+
+ org.apache.cxf
+ cxf-rt-frontend-jaxws
+ 3.0.1
+
+
+
+ org.apache.cxf
+ cxf-rt-transports-http-jetty
+ 3.0.1
+
+
+
+
+ org.simpleframework
+ simple-xml
+ 2.7.1
+
+
+
+
diff --git a/power-admin/pom.xml b/power-admin/pom.xml
index 75784cf..12a8a49 100644
--- a/power-admin/pom.xml
+++ b/power-admin/pom.xml
@@ -127,6 +127,17 @@
org.slf4j
slf4j-log4j12
+
+ org.jdom
+ jdom2
+ 2.0.6
+
+
+ org.springframework.boot
+ spring-boot
+ 2.5.5
+
+
power
diff --git a/power-admin/src/main/java/com/manage/config/WebServiceConfig.java b/power-admin/src/main/java/com/manage/config/WebServiceConfig.java
index 0b7b30a..a52c9a7 100644
--- a/power-admin/src/main/java/com/manage/config/WebServiceConfig.java
+++ b/power-admin/src/main/java/com/manage/config/WebServiceConfig.java
@@ -29,6 +29,8 @@ public class WebServiceConfig {
EndpointImpl endpoint = new EndpointImpl(springBus(),powerWebService());
endpoint.publish("PowerWebService");
return endpoint;
+
}
+
}
diff --git a/power-admin/src/main/java/com/manage/config/WebServiceCxf.java b/power-admin/src/main/java/com/manage/config/WebServiceCxf.java
new file mode 100644
index 0000000..0c5b226
--- /dev/null
+++ b/power-admin/src/main/java/com/manage/config/WebServiceCxf.java
@@ -0,0 +1,47 @@
+package com.manage.config;
+
+import com.manage.interfaces.webservice.PowerWebService;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author by CLP
+ * @Classname BeanConfig
+ * @Description
+ * @Date 2020/9/8 15:28
+ */
+@Component
+public class WebServiceCxf implements InitializingBean, ApplicationContextAware {
+ private static Map queryServiceImplMap = new HashMap<>();
+ private ApplicationContext applicationContext;
+
+ public static PowerWebService createQueryService(String type) {
+
+ PowerWebService powerWebService = queryServiceImplMap.get(type);
+ if (powerWebService == null) {
+ return queryServiceImplMap.get("PowerServiceImpl");
+ }
+ return powerWebService;
+ }
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ Map beanMap = applicationContext.getBeansOfType(PowerWebService.class);
+ //遍历该接口的所有实现,将其放入map中
+ for (PowerWebService serviceImpl : beanMap.values()) {
+ queryServiceImplMap.put(serviceImpl.getClass().getSimpleName(), serviceImpl);
+ }
+ }
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+}
+
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..7609a9d 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;
@@ -16,16 +19,18 @@ import com.manage.util.ExceptionPrintUtil;
import com.manage.util.Msg;
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.text.SimpleDateFormat;
import java.util.*;
+import java.util.stream.Collectors;
/**
* @ProjectName:
@@ -63,6 +68,10 @@ public class FontController {
@Autowired
private Power_DeptService power_deptService;
+ public static Class getUserClass(Object root) {
+ return null;
+ }
+
/**
* 2.1
* @ProjectName: getRolePowerTreeBySysFlag
@@ -363,6 +372,169 @@ public class FontController {
return Msg.success().add("list",list);
}
+
+ /**
+ * 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 0 成功 270 苏*瑾 SJ
< Age > 副主任医师 住院医生 HXYWZZYXKBF-呼吸与危重症医学科病房 ";
+// }
+
private List getPowerMenuMethods(Power_User powerUser, String sysId){
// 根据用户ID以及系统Id查出所有的用户菜单
List powerUserMenus = powerMenuMapper.selectUserMenuByUserIdAndDictId(powerUser.getUserId(), Integer.parseInt(sysId));
diff --git a/power-admin/src/main/resources/config/jdbc.properties b/power-admin/src/main/resources/config/jdbc.properties
index a51355d..47022d3 100644
--- a/power-admin/src/main/resources/config/jdbc.properties
+++ b/power-admin/src/main/resources/config/jdbc.properties
@@ -1,7 +1,7 @@
jdbc.driver=com.mysql.jdbc.Driver
-jdbc.url=jdbc\:mysql\://192.168.1.3\:3306/qfpower?useUnicode\=true&characterEncoding\=utf-8
+jdbc.url=jdbc\:mysql\://192.168.1.3\:3306/nanfang_hospital?useUnicode\=true&characterEncoding\=utf-8
jdbc.username=root
-jdbc.password=docus702
+jdbc.password=mamba1998
#hibernate config
hibernate.dialect = org.hibernate.dialect.MySQLDialect
diff --git a/power-dao/pom.xml b/power-dao/pom.xml
index 32216b9..26f1043 100644
--- a/power-dao/pom.xml
+++ b/power-dao/pom.xml
@@ -19,6 +19,12 @@
org.mybatis
mybatis
+
+
+ org.simpleframework
+ simple-xml
+ 2.7.1
+
diff --git a/power-dao/src/main/java/com/manage/vo/AuthUserVO.java b/power-dao/src/main/java/com/manage/vo/AuthUserVO.java
new file mode 100644
index 0000000..3ef1b4c
--- /dev/null
+++ b/power-dao/src/main/java/com/manage/vo/AuthUserVO.java
@@ -0,0 +1,58 @@
+package com.manage.vo;
+
+import org.simpleframework.xml.Element;
+import org.simpleframework.xml.Root;
+
+@Root(name = "Request")
+public class AuthUserVO {
+ private String SourceSystem;
+
+ @Element(required = false)
+ private String TargetSystem;
+
+ private String username;
+
+ private String password;
+
+ public String getSourceSystem() {
+ return SourceSystem;
+ }
+
+ public void setSourceSystem(String sourceSystem) {
+ SourceSystem = sourceSystem;
+ }
+
+ public String getTargetSystem() {
+ return TargetSystem;
+ }
+
+ public void setTargetSystem(String targetSystem) {
+ TargetSystem = targetSystem;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ @Override
+ public String toString() {
+ return "AuthUserVO{" +
+ "SourceSystem='" + SourceSystem + '\'' +
+ ", TargetSystem='" + TargetSystem + '\'' +
+ ", username='" + username + '\'' +
+ ", password='" + password + '\'' +
+ '}';
+ }
+}
diff --git a/power-dao/src/main/resources/config/gennerator.properties b/power-dao/src/main/resources/config/gennerator.properties
index 8eac501..a494745 100644
--- a/power-dao/src/main/resources/config/gennerator.properties
+++ b/power-dao/src/main/resources/config/gennerator.properties
@@ -2,7 +2,7 @@ jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc\:mysql\://localhost\:3306/power?useUnicode\=true&characterEncoding\=utf-8
jdbc.url=jdbc\:mysql\://120.27.212.36\:3306/power?useUnicode\=true&characterEncoding\=utf-8
jdbc.username=root
-jdbc.password=docus702
+jdbc.password=mamba1998
#执行:右键 Run As ---->Maven build ---->Goals:mybatis-generator:generate
#输出目录
diff --git a/power-foundaton/pom.xml b/power-foundaton/pom.xml
index f4d8ead..6c48bbf 100644
--- a/power-foundaton/pom.xml
+++ b/power-foundaton/pom.xml
@@ -51,6 +51,12 @@
org.slf4j
slf4j-log4j12
+
+
+ org.simpleframework
+ simple-xml
+ 2.7.1
+