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 +