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..39c8456 100644
--- a/power-admin/src/main/java/com/manage/controller/FontController.java
+++ b/power-admin/src/main/java/com/manage/controller/FontController.java
@@ -1,6 +1,6 @@
package com.manage.controller;
-
import com.fasterxml.jackson.databind.ObjectMapper;
+
import com.manage.dao.Power_NoticeMapper;
import com.manage.dao.Power_UserMapper;
import com.manage.encrypt.Base64;
@@ -16,15 +16,21 @@ 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.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.SAXReader;
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 java.io.StringReader;
+import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -63,6 +69,10 @@ public class FontController {
@Autowired
private Power_DeptService power_deptService;
+ public static Class getUserClass(Object root) {
+ return null;
+ }
+
/**
* 2.1
* @ProjectName: getRolePowerTreeBySysFlag
@@ -363,6 +373,227 @@ 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(@RequestParam("username") String userName,@RequestParam("password")String password) throws Exception{
+ if(StringUtils.isBlank(userName)){
+ return Msg.fail("用户名不能为空");
+ }
+ if(StringUtils.isBlank(password)){
+ return Msg.fail("密码不能为空");
+ }
+ //2.根据userName查询我们的用户表是否存在
+ Power_UserVo userVo = new Power_UserVo();
+ // 判断数据库中是否有此用户,如果没有则插入数据库
+ String result = linkHisLogin(userName, password);
+ if(StringUtils.isBlank(result)){
+ return Msg.fail("调用第三方认证失败");
+ }
+ List userList = userMapper.checkUserName(userName);
+ if (CollectionUtils.isEmpty(userList)) {
+ //2.1不存在往用户表新增这条用户
+ userVo.setUserName(userName);
+// userVo.setUserPwd(Base64.encode(MD5.KL("1C821B22D0402F317E40D93213C66843")));
+ userVo.setUserPwd(Base64.encode(MD5.KL("123456")));
+ //TODO name从应答的xml解析
+ String name = analysis(result,"Name");
+ userVo.setName(name);
+ userVo.setRoleId(1);
+ userVo.setDeptId("3");
+ userVo.setEffective(1);
+ userVo.setCreater("his");
+ SimpleDateFormat fmt= new SimpleDateFormat("yyyy-MM-dd");
+ userVo.setCreateDate(fmt.format(new Date()));
+ //插入00
+ userMapper.insert(userVo);
+ }
+ String token = setToken(userVo);
+ return Msg.success().add("token",token);
+ }
+
+ /**
+ * 将xml转换为Map。 支持xml标签多层嵌套,并以"."分隔多级标签(不包括根节点)。 不支持XML标签重复时的情况
+ *
+ * @param xml
+ * @param map
+ * @return
+ */
+ private Map parseXml2Map(String xml, Map map) {
+ try {
+ SAXReader reader = new SAXReader();
+ Document doc = reader.read(new StringReader(xml));
+ Element root = doc.getRootElement();
+ String path = "";
+ if (map.containsKey(root.getName().trim())) {
+ path = map.get(root.getName().trim());
+ map.remove(root.getName().trim());
+ }
+ for (Iterator i = root.elementIterator(); i.hasNext();) {
+ Element element = (Element) i.next();
+ if (element.isTextOnly()) {
+ if (path.length() > 0) {
+ map.put(path + element.getName().trim(), element.getTextTrim());
+ } else {
+ map.put(element.getName().trim(), element.getTextTrim());
+ }
+ } else {
+ map.put(element.getName().trim(), path+ element.getName().trim() + ".");
+ parseXml2Map(element.asXML(), map);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return map;
+ }
+
+
+ /**
+ * 解析result中xml中的name节点值
+ * @param result
+ * @param name
+ * @return
+ */
+ private String analysis(String result, String name) {
+ String nameValue = "";
+ Map map = new HashMap<>();
+ Map valueMap = parseXml2Map(result, map);
+ nameValue = valueMap.get("Name");
+ return nameValue;
+ }
+
+
+ private String linkHisLogin(String userName, String password) {
+
+ //创建连接工厂
+ JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance();
+ //创建客户端
+ Object[] objects = new Object[0];
+
+ Client client = dcf.createClient("http://192.168.128.170/csp/hsb/DHC.Published.PUB0025.BS.PUB0025.CLS?WSDL=1");
+ 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 result = objects[0].toString();
+ System.out.println(result);
+ //新用户存到数据库
+ if (result.contains("成功")) {
+ return result;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if(null != client) {
+ client.destroy();
+ }
+ }
+ return null;
+ }
+
+
+ private String getXml(String userName, String password) {
+
+ // 1、创建document对象
+ Document document = DocumentHelper.createDocument();
+ // 2、创建根节点rss
+ Element requestElement = document.addElement("Request");
+// Element patInfo = Requst.addElement("PatInfo");
+// patInfo.addElement("VUID").setText("12412");
+ requestElement.addElement("SourceSystem").setText("厦门嘉时");
+ requestElement.addElement("TargetSystem").setText("医院信息平台");
+ requestElement.addElement("username").setText(userName);
+ requestElement.addElement("password").setText(password);
+
+ OutputFormat format = OutputFormat.createPrettyPrint();
+ // 设置编码格式
+ format.setEncoding("UTF-8");
+ String xml = document.asXML();
+ System.out.println(xml);
+
+// String res = service.outHOSREG(xml);
+// TBasicWebServiceService serviceService=new TBasicWebServiceService();
+// TBasicWebService service = serviceService.getTBasicWebServicePort();
+// String res = service.outHOSCAN(xml);
+// System.out.println(res);
+
+ return document.asXML();
+ }
+
+ 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