Browse Source

未测试,临时代码。有问题

尚正平 2 years ago
parent
commit
29aa33848f

+ 11 - 0
pom.xml

@@ -60,6 +60,12 @@
             <groupId>com.diagbot</groupId>
             <artifactId>common</artifactId>
             <version>0.0.1-SNAPSHOT</version>
+            <exclusions>
+                <exclusion>
+                   <groupId>com.github.promeg</groupId>
+            <artifactId>tinypinyin</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -225,6 +231,11 @@
             <scope>runtime</scope>
         </dependency>
 
+		<dependency>
+		     <groupId>org.apache.httpcomponents.client5</groupId>
+		     <artifactId>httpclient5</artifactId>
+		     <version>5.1.1</version>
+		</dependency>
     </dependencies>
 
     <!-- 私有仓库 -->

+ 74 - 13
src/main/java/com/diagbot/facade/MedCheckWorkFacade.java

@@ -1,5 +1,23 @@
 package com.diagbot.facade;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -19,6 +37,7 @@ import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
 import com.diagbot.service.impl.MedCheckInfoServiceImpl;
 import com.diagbot.service.impl.MedicalRecordServiceImpl;
 import com.diagbot.util.DateUtil;
+import com.diagbot.util.DateUtils;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
@@ -27,17 +46,8 @@ import com.diagbot.vo.MedCheckWorkAddVO;
 import com.diagbot.vo.RecordTypeVO;
 import com.diagbot.vo.SysUserBaseVO;
 import com.google.common.collect.Lists;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
+import lombok.extern.slf4j.Slf4j;
 
 
 /**
@@ -74,8 +84,8 @@ public class MedCheckWorkFacade {
 
         boolean flag = false;
         Date now = DateUtil.now();
-        //获取核查任务类型(0-科室任务 1-院级 2-质控科)
-        Integer workType = medCheckWorkVO.getJobType();
+//        //获取核查任务类型(0-科室任务 1-院级 2-质控科)
+//        Integer workType = medCheckWorkVO.getJobType();
         //获取操作类型(0-取消,1-添加)
         Integer checkStatus = medCheckWorkVO.getCheckStatus();
         Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
@@ -144,6 +154,58 @@ public class MedCheckWorkFacade {
         return flag;
     }
 
+    
+    //温州附一个性化闭环改造
+    /**
+     * 
+     * @param nodeId			节点编号
+     * @param behospitalCode	病人住院序号
+     * @param remark			温附一单点登录传过来的用户信息
+     * @param nodeName			节点名称
+     * @param cardNum			病案号
+     */
+    public void aaa(int nodeId,String behospitalCode,String remark,String nodeName,String cardNum) {
+    	Map<String,Object> map = new HashMap<>();
+    	map.put("code", "1201");
+    	map.put("tabName", "e_zyblbr");
+    	map.put("frontProTabName", "e_zyblbr");
+    	map.put("appCode", "020");
+    	map.put("tabKey", behospitalCode);			//病人住院序号
+    	map.put("frontProTabKey", behospitalCode);	//病人住院序号
+    	map.put("medrecId", behospitalCode);		//病人住院序号
+    	map.put("closedLoopKey", behospitalCode);	//病人住院序号
+    	map.put("nodeId", nodeId);					//闭环节点
+    	map.put("time", DateUtils.getCurrentDayTimeByStr(DateUtils.ymdhms));	
+    	map.put("opTime", map.get("time"));
+    	map.put("proName",nodeName+ behospitalCode);
+    	map.put("detailProName",nodeName+ behospitalCode);
+    	map.put("cardNum",cardNum);
+    	
+    	JSONObject json = JSON.parseObject(remark);
+    	map.put("doctorId",json.getJSONObject("data").get("yongHuID"));
+    	map.put("wardId",json.getJSONObject("data").get("xianBingQuID"));
+    	map.put("wardId",json.getJSONObject("data").get("xianZhuankeID"));
+    	map.put("opId",map.get("doctorId"));
+    	map.put("opName",json.getJSONObject("data").get("XingMing"));
+    	map.put("operatorDepId",json.getJSONObject("data").get("XianBuMenID"));
+    	map.put("operatorDepName",json.getJSONObject("data").get("XianBuMenMC"));
+    	try {
+	    	HttpPost post = new HttpPost("https://wsyy.wzhospital.cn:8443/authentication/v1/login/getTokenUser");
+	    	post.setHeader("Content-Type", "application/json;charset=UTF-8");
+	    	StringEntity se = new StringEntity(JSON.toJSONString(map));
+	    	se.setContentEncoding("utf-8");
+	    	se.setContentType("application/json");
+	    	post.setEntity(se);
+	    	CloseableHttpResponse execute = HttpClients.createDefault().execute(post);
+	    	if(execute.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
+	    		log.info("上报数据成功,上报的信息为:{};\t结果信息为:{}",JSON.toJSONString(map),EntityUtils.toString(execute.getEntity()));
+	    	}
+    	}catch(Exception e) {
+    		log.error("数据上报出现异常",e);
+    	}
+    }
+    
+    
     /**
      * @Author songxl
      * @Description 获取每日住院患者的类型(出院、病危、抢救。。。)
@@ -156,7 +218,6 @@ public class MedCheckWorkFacade {
         JSONObject paramJson = JSONObject.parseObject(param);
         JSONObject typeValue = paramJson.getJSONObject("typeVal");
         JSONObject typeName = paramJson.getJSONObject("typeName");
-        int searchSize = paramJson.getInteger("searchSize");
         int batchSize = paramJson.getInteger("batchSize");
 
 

+ 175 - 30
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -1,10 +1,53 @@
 package com.diagbot.facade;
 
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.imageio.ImageIO;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
+import org.apache.http.HttpStatus;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.security.crypto.factory.PasswordEncoderFactories;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.oauth2.common.OAuth2AccessToken;
+import org.springframework.stereotype.Component;
+import org.springframework.util.DigestUtils;
+import org.springframework.util.StringUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.AuthServiceClient;
-import com.diagbot.dto.*;
+import com.diagbot.dto.BasDeptInfoDTO;
+import com.diagbot.dto.BasHospitalInfoDTO;
+import com.diagbot.dto.JwtDTO;
+import com.diagbot.dto.LoginDTO;
+import com.diagbot.dto.SysRoleDTO;
+import com.diagbot.dto.SysUserDeptDTO;
+import com.diagbot.dto.SysUserPermissionDTO;
+import com.diagbot.dto.SysUserQueryDTO;
+import com.diagbot.dto.SysUserRoleDTO;
+import com.diagbot.dto.UserLoginDTO;
 import com.diagbot.entity.BasHospitalInfo;
 import com.diagbot.entity.ImageCaptchaParams;
 import com.diagbot.entity.JWT;
@@ -38,25 +81,6 @@ import com.diagbot.vo.SysUserDeptVO;
 import com.diagbot.vo.SysUserQueryVO;
 import com.diagbot.vo.SysUserRoleVO;
 import com.diagbot.vo.UserLoginVO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.security.crypto.factory.PasswordEncoderFactories;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.oauth2.common.OAuth2AccessToken;
-import org.springframework.stereotype.Component;
-import org.springframework.util.DigestUtils;
-import org.springframework.util.StringUtils;
-
-import javax.imageio.ImageIO;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @Description: 用户业务层
@@ -149,21 +173,143 @@ public class SysUserFacade extends SysUserServiceImpl {
      * @return jwt
      */
     public JwtDTO getJwt(HttpServletRequest request, UserLoginVO userLoginVO) {
-        JwtDTO data = new JwtDTO();
+    	JwtDTO data = new JwtDTO();
+    	if(userLoginVO.getAuthToken() != null && userLoginVO.getAuthToken().trim().length() > 0) {	//说明温附一的单点登录
+    		//调用接口获取相应的数据
+    		
+    		// 请求路径及参数
+    		try {
+    		// 创建 GET 请求对象
+	    		HttpGet httpGet = new HttpGet("https://wsyy.wzhospital.cn:8443/authentication/v1/login/getTokenUser");
+	    		httpGet.addHeader("token", userLoginVO.getAuthToken());
+	    		// 调用 HttpClient 的 execute 方法执行请求
+	    		CloseableHttpResponse response = HttpClients.createDefault().execute(httpGet);
+	    		// 获取请求状态
+	    		int code = response.getCode();
+	    		// 如果请求成功
+	    		if(code == HttpStatus.SC_OK){
+	    			String result = EntityUtils.toString(response.getEntity());
+	    			JSONObject json = JSON.parseObject(result);
+	    			
+	    			String userId = json.getJSONObject("data").getInteger("yongHuID")+"_"+json.getJSONObject("data").getString("xingMing");
+	    			
+	    			sys_user
+	    			sys_user_role
+	    			sys_user_hospital
+	    			
+	    			
+	    	        QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
+	    	        userQueryWrapper.eq("username", userId);
+	    	        SysUser user = this.getOne(userQueryWrapper, false);
+	    	        if (null == user) {
+	    	        	//新增这个用户
+	    	        	SysUser new_user = new SysUser();
+	    	        	new_user.setIsDeleted("N");
+	    	        	new_user.setCreator("0");
+	    	        	new_user.setUsername(userId);
+	    	        	new_user.setLinkman(json.getJSONObject("data").getString("xingMing"));
+	    	        	new_user.setType(0);
+	    	        	new_user.setStatus(1);
+	    	        	save(new_user);
+	    	        	
+	    	        	user = new_user;
+	    	        	//关联角色
+	    	        	
+	    	        	SysUserRole sur = new SysUserRole();
+	    	        	sur.setIsDeleted("N");
+	    	        	sur.setCreator("0");
+	    	        	sur.setUserId(new_user.getId());
+	    	        	sur.setRoleId(1L);
+	    	        	sysUserRoleService.save(sur);
+	    	        	
+	    	        	//关联医院
+	    	        	SysUserHospital suh = new SysUserHospital();
+	    	        	suh.setIsDeleted();
+	    	        	
+	    	        	 /**
+	    	             * 是否删除,N:未删除,Y:删除
+	    	             */
+	    	            private String isDeleted;
+
+
+	    	            /**
+	    	             * 用户主键
+	    	             */
+	    	            private Long userId;
+
+	    	            /**
+	    	             * 医院ID
+	    	             */
+	    	            private Long hospitalId;
+
+	    	            /**
+	    	             * 备注
+	    	             */
+	    	            private String remark;
+	    	            
+	    	        	
+	    	        }else {
+	    	        	//设置部门
+	    	        	user.setRemark(result);
+	    	        }
+	    	        JWT jwt = authServiceClient.getToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2","password", userLoginVO.getUsername(), "");
+	    	        if (null == jwt) {
+	    	            throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
+	    	        }
+	    	        data.setAccessToken(jwt.getAccess_token());
+	    	        data.setRefreshToken(jwt.getRefresh_token());
+	    	        data.setType(user.getType());
+	    	        data.setTypeCn(ConstantEnum.getName(user.getType()));//返回中文
+	    	        //获取用户角色
+	    	        try {
+	    	            SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
+	    	            sysUserBaseVO.setUserId(user.getId());
+	    	            List<SysRoleDTO> selRoles = getlocalUserRoles(sysUserBaseVO);
+	    	            if (selRoles != null && !selRoles.isEmpty()) {
+	    	                data.setSelRoles(selRoles);
+	    	            }
+	    	        } catch (Exception e) {
+	    	            e.printStackTrace();
+	    	        }
+	    	        //token存入redis
+	    	        JwtStore jwtStore = new JwtStore();
+	    	        jwtStore.setAccessToken(jwt.getAccess_token());
+	    	        jwtStore.setRefreshToken(jwt.getRefresh_token());
+	    	        tokenFacade.createToken(jwtStore);
+
+	    	        //每次登录在redis缓存该用户登录成功的token;缓存时间为token有效时间
+	    	        long accessTokenTime = sysDictionaryFacade.getAccessTokenOutTime();
+	    	        redisUtils.set("user:refreshToken:outTime_" + user.getId(), accessTokenTime, accessTokenTime);
+	    	        //   获取用户医院id
+	    	        //     String hospitalID = SysUserUtils.getCurrentHospitalID();
+	    	        Long id = user.getId();
+	    	        QueryWrapper<SysUserHospital> UserHospitalQueryWrapper = new QueryWrapper<>();
+	    	        UserHospitalQueryWrapper.eq("user_id", id).eq("is_deleted", IsDeleteEnum.N.getKey());
+	    	        SysUserHospital userHospital = sysUserHospitalFacade.getOne(UserHospitalQueryWrapper, false);
+	    	        Long hospitalId = userHospital.getHospitalId();
+	    	        String idStr = String.valueOf(hospitalId);
+	    	        Boolean passwordRegular = passwordRegular(userLoginVO.getPassword(), idStr);
+	    	        if (!passwordRegular) {
+	    	            data.setPasswordComplexity("未修改初始密码,请及时修改密码");
+	    	        }
+	    	        return data;
+	    			//查找是否有这个用户
+	    		}
+    		}catch(Exception e) {
+    			e.printStackTrace();
+    		}
+    	}
         if (StringUtil.isBlank(userLoginVO.getUsername())) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "请输入用户名");
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,"请输入用户名");
         }
         if (StringUtil.isBlank(userLoginVO.getPassword())) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "请输入密码");
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,"请输入密码");
         }
         //非湘雅医院执行
         String captchaId = "";
         if (0L == getHospitalMark()) {
             if (StringUtils.isEmpty(userLoginVO.getCaptcha())) {
-                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                        "请输入验证码");
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL,"请输入验证码");
             }
             // 验证码校验
             captchaId = request.getSession().getId();
@@ -176,9 +322,8 @@ public class SysUserFacade extends SysUserServiceImpl {
         //使用MD5对密码进行加密
         String MD5Password = DigestUtils.md5DigestAsHex(userLoginVO.getPassword().getBytes());
         QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
-        userQueryWrapper.eq("username", userLoginVO.getUsername())
-                .eq("status", StatusEnum.Enable.getKey())
-                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        userQueryWrapper.eq("username", userLoginVO.getUsername()).eq("status", StatusEnum.Enable.getKey()).eq("is_deleted", IsDeleteEnum.N.getKey());
+        
         SysUser user = this.getOne(userQueryWrapper, false);
         if (null == user) {
             throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);

+ 13 - 0
src/main/java/com/diagbot/util/DateUtils.java

@@ -0,0 +1,13 @@
+package com.diagbot.util;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class DateUtils {
+	
+	public static final SimpleDateFormat ymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+	
+	 public static String getCurrentDayTimeByStr(SimpleDateFormat df){
+            return df.format(new Date());
+    }
+}

+ 4 - 0
src/main/java/com/diagbot/vo/UserLoginVO.java

@@ -20,4 +20,8 @@ public class UserLoginVO {
     private String password;
    //验证码
     private String captcha;
+    
+    
+    
+    private String authToken;
 }

+ 8 - 6
src/main/java/com/diagbot/web/MedCheckWorkController.java

@@ -1,6 +1,12 @@
 package com.diagbot.web;
 
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.CheckWorkDTO;
@@ -8,14 +14,9 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.MedCheckWorkFacade;
 import com.diagbot.vo.CheckWorkPageVO;
 import com.diagbot.vo.MedCheckWorkAddVO;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
 
 /**
  *
@@ -42,6 +43,7 @@ public class MedCheckWorkController {
         Boolean res = medCheckworkFacade.addCheckWork(medCheckWorkVO);
         return RespDTO.onSuc(res);
     }
+    
 
     @ApiOperation(value = "获取患者病历列表[by:wangsy]",
             notes = "startDate:出院开始时间 【必填】<br>" +