|  | @ -3,6 +3,8 @@ package com.yihu.ehr.basic.user.controller;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.node.ObjectNode;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.dict.service.SystemDictEntryService;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.fileresource.service.FileResource;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.fileresource.service.XFileResourceRepository;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.getui.ConstantUtil;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.org.model.OrgMemberRelation;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.org.service.OrgMemberRelationService;
 | 
	
	
		
			
				|  | @ -13,6 +15,7 @@ import com.yihu.ehr.basic.user.entity.Roles;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.user.entity.UserTypeRoles;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.user.service.RoleUserService;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.user.service.RolesService;
 | 
	
		
			
				|  |  | import com.yihu.ehr.commons.constants.BasicServiceApi;
 | 
	
		
			
				|  |  | import com.yihu.ehr.constants.ServiceApi;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.user.entity.Doctors;
 | 
	
		
			
				|  |  | import com.yihu.ehr.basic.user.entity.User;
 | 
	
	
		
			
				|  | @ -47,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  | import org.springframework.web.bind.annotation.*;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.activation.MimetypesFileTypeMap;
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | import java.io.*;
 | 
	
	
		
			
				|  | @ -75,6 +79,10 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |     private String orgcode;
 | 
	
		
			
				|  |  |     @Value("${jksr-app.registerRoleClientId}")
 | 
	
		
			
				|  |  |     public String registerRoleClientId;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Value("${fast-dfs.public-server}")
 | 
	
		
			
				|  |  |     private String fastDfsPublicServers;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private UserService userService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
	
		
			
				|  | @ -97,6 +105,8 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |     private OrgMemberRelationService relationService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private XUserTypeRolesRepository xUserTypeRolesRepository;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private XFileResourceRepository resourceRepository;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @RequestMapping(value = ServiceApi.Users.Users, method = RequestMethod.GET)
 | 
	
		
			
				|  |  |     @ApiOperation(value = "获取用户列表", notes = "根据查询条件获取用户列表在前端表格展示")
 | 
	
	
		
			
				|  | @ -178,6 +188,11 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |         if (dict != null) {
 | 
	
		
			
				|  |  |             user.setDType(userType);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         String imgPath = user.getImgRemotePath();
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(imgPath) && imageCheck(imgPath)) {
 | 
	
		
			
				|  |  |             //公众健康-个人设置传的是路径
 | 
	
		
			
				|  |  |             user.setImgRemotePath(saveImgFileSource(imgPath));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         userService.saveUser(user);
 | 
	
		
			
				|  |  |         //同时修改医生表及用户表信息
 | 
	
		
			
				|  |  |         Doctors doctors = doctorService.getByIdCardNo(user.getIdCardNo());
 | 
	
	
		
			
				|  | @ -186,6 +201,7 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |             doctors.setPyCode(PinyinUtil.getPinYinHeadChar(user.getRealName(), false));
 | 
	
		
			
				|  |  |             doctors.setSex(user.getGender());
 | 
	
		
			
				|  |  |             doctors.setPhone(user.getTelephone());
 | 
	
		
			
				|  |  |             doctors.setPhoto(user.getImgRemotePath());
 | 
	
		
			
				|  |  |             doctorService.save(doctors);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         DemographicInfo demographicInfo = demographicService.getDemographicInfoByIdCardNo(user.getIdCardNo());
 | 
	
	
		
			
				|  | @ -197,7 +213,9 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |             demographicInfo.setBirthday(DateUtil.strToDate(user.getBirthday()));
 | 
	
		
			
				|  |  |             demographicService.save(demographicInfo);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return convertToModel(user, MUser.class);
 | 
	
		
			
				|  |  |         MUser mUser =convertToModel(user, MUser.class);
 | 
	
		
			
				|  |  |         mUser.setImgRemotePath(imgPath);
 | 
	
		
			
				|  |  |         return mUser;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @RequestMapping(value = ServiceApi.Users.UserAdmin, method = RequestMethod.GET)
 | 
	
	
		
			
				|  | @ -235,15 +253,13 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |     public MUser getUserByLoginCode(
 | 
	
		
			
				|  |  |             @ApiParam(name = "user_name", value = "登录账号", defaultValue = "")
 | 
	
		
			
				|  |  |             @PathVariable(value = "user_name") String userName) {
 | 
	
		
			
				|  |  |         //User user = userManager.getUserByUserName(userName);
 | 
	
		
			
				|  |  |         //TODO 可根据帐户,手机号,身份证号登陆接口新增
 | 
	
		
			
				|  |  |         // 帐户:手机号,身份证号,登录账号
 | 
	
		
			
				|  |  |         List<User> users = userService.getUserForLogin(userName);
 | 
	
		
			
				|  |  |         if (users != null) {
 | 
	
		
			
				|  |  |             if (users.size() == 1) {
 | 
	
		
			
				|  |  |                 MUser mUser = new MUser();
 | 
	
		
			
				|  |  |                 List<OrgMemberRelation> memberRelations = orgMemberRelationService.findByField("userId", users.get(0).getId());
 | 
	
		
			
				|  |  |                 mUser = convertToModel(users.get(0), MUser.class);
 | 
	
		
			
				|  |  |                 mUser = convertToModel(users.get(0), MUser.class);
 | 
	
		
			
				|  |  |                 if (memberRelations != null && memberRelations.size() > 0) {
 | 
	
		
			
				|  |  |                     mUser.setPosition(memberRelations.get(0).getDutyName());
 | 
	
		
			
				|  |  |                     mUser.setDepartment(memberRelations.get(0).getDeptName());
 | 
	
	
		
			
				|  | @ -532,6 +548,16 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         userService.saveUser(user);
 | 
	
		
			
				|  |  |         //将基础信息同步到医生表
 | 
	
		
			
				|  |  |         Doctors doctors = doctorService.getByIdCardNo(user.getIdCardNo());
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(doctors)) {
 | 
	
		
			
				|  |  |             doctors.setName(user.getRealName());
 | 
	
		
			
				|  |  |             doctors.setPyCode(PinyinUtil.getPinYinHeadChar(user.getRealName(), false));
 | 
	
		
			
				|  |  |             doctors.setSex(user.getGender());
 | 
	
		
			
				|  |  |             doctors.setPhone(user.getTelephone());
 | 
	
		
			
				|  |  |             doctors.setPhoto(user.getImgRemotePath());
 | 
	
		
			
				|  |  |             doctorService.save(doctors);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return convertToModel(user, MUser.class);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -681,6 +707,7 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |             doctor.setPyCode(PinyinUtil.getPinYinHeadChar(detailModel.getRealName(), false));
 | 
	
		
			
				|  |  |             doctor.setSex(detailModel.getGender());
 | 
	
		
			
				|  |  |             doctor.setPhone(detailModel.getTelephone());
 | 
	
		
			
				|  |  |             doctor.setPhoto(detailModel.getImgRemotePath());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         DemographicInfo demographicInfo = demographicService.getDemographicInfoByIdCardNo(detailModel.getIdCardNo());
 | 
	
		
			
				|  |  |         if (demographicInfo != null) {
 | 
	
	
		
			
				|  | @ -906,10 +933,10 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |         for (String rgAppId : appIds) {
 | 
	
		
			
				|  |  |             //根据用户类型、应用id判断是否关联角色,
 | 
	
		
			
				|  |  |             List<UserTypeRoles> list = xUserTypeRolesRepository.ListUserTypeRolesByTypeIdAndClientId(Integer.valueOf(ConstantUtil.PATIENTUSERTYPEID), rgAppId);
 | 
	
		
			
				|  |  |             if(null!=list && list.size()>0){
 | 
	
		
			
				|  |  |             if (null != list && list.size() > 0) {
 | 
	
		
			
				|  |  |                 //卫生人员初始化授权
 | 
	
		
			
				|  |  |                 userService.initializationAuthorization(Integer.valueOf(ConstantUtil.PATIENTUSERTYPEID),userId);
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 userService.initializationAuthorization(Integer.valueOf(ConstantUtil.PATIENTUSERTYPEID), userId);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 // orgcode卫计委机构编码-PDY026797 添加居民的时候 默认 加到卫计委-居民角色中
 | 
	
		
			
				|  |  |                 List<Roles> rolesList = rolesService.findByCodeAndAppIdAndOrgCode(Arrays.asList(new String[]{orgcode}), rgAppId, "Patient");
 | 
	
		
			
				|  |  |                 Roles roles = new Roles();
 | 
	
	
		
			
				|  | @ -1120,11 +1147,11 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |     @ApiOperation(value = "根据用户类型id,用户id进行初始化授权")
 | 
	
		
			
				|  |  |     public Envelop initializationAuthorization(
 | 
	
		
			
				|  |  |             @ApiParam(name = "userTypeId", value = "用户类型id", defaultValue = "")
 | 
	
		
			
				|  |  |             @RequestParam(value = "userTypeId",required =true) int userTypeId,
 | 
	
		
			
				|  |  |             @RequestParam(value = "userTypeId", required = true) int userTypeId,
 | 
	
		
			
				|  |  |             @ApiParam(name = "userId", value = "用户id", defaultValue = "")
 | 
	
		
			
				|  |  |             @RequestParam(value = "userId",required =true) String userId) {
 | 
	
		
			
				|  |  |             @RequestParam(value = "userId", required = true) String userId) {
 | 
	
		
			
				|  |  |         Envelop envelop = new Envelop();
 | 
	
		
			
				|  |  |         boolean authorrizationFlag= userService.initializationAuthorization(userTypeId,userId);
 | 
	
		
			
				|  |  |         boolean authorrizationFlag = userService.initializationAuthorization(userTypeId, userId);
 | 
	
		
			
				|  |  |         if (authorrizationFlag) {
 | 
	
		
			
				|  |  |             envelop.setSuccessFlg(true);
 | 
	
		
			
				|  |  |         } else {
 | 
	
	
		
			
				|  | @ -1134,4 +1161,129 @@ public class UserEndPoint extends EnvelopRestEndPoint {
 | 
	
		
			
				|  |  |         return envelop;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @RequestMapping(value = BasicServiceApi.Users.GetUserByLoginCode, method = RequestMethod.GET)
 | 
	
		
			
				|  |  |     @ApiOperation(value = "政府服务平台-根据登录账号获取当前用户", notes = "政府服务平台-根据登陆用户名及密码验证用户(一个人可属于多个机构)")
 | 
	
		
			
				|  |  |     public Envelop getUserInfoByLoginCode(
 | 
	
		
			
				|  |  |             @ApiParam(name = "userName", value = "登录账号", defaultValue = "")
 | 
	
		
			
				|  |  |             @PathVariable(value = "userName") String userName) {
 | 
	
		
			
				|  |  |         Envelop envelop = new Envelop();
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             // 帐户:手机号,身份证号,登录账号
 | 
	
		
			
				|  |  |             List<User> users = userService.getUserForLogin(userName);
 | 
	
		
			
				|  |  |             if (users != null) {
 | 
	
		
			
				|  |  |                 User user = users.get(0);
 | 
	
		
			
				|  |  |                 String path = getImgPathByFileResource(users.get(0).getImgRemotePath());
 | 
	
		
			
				|  |  |                 user.setImgRemotePath(path);
 | 
	
		
			
				|  |  |                 envelop.setObj(users);
 | 
	
		
			
				|  |  |                 if (users.size() == 1) {
 | 
	
		
			
				|  |  |                     List<OrgMemberRelation> memberRelations = orgMemberRelationService.findByField("userId", users.get(0).getId());
 | 
	
		
			
				|  |  |                     envelop.setSuccessFlg(true);
 | 
	
		
			
				|  |  |                     envelop.setDetailModelList(memberRelations);
 | 
	
		
			
				|  |  |                 } else {
 | 
	
		
			
				|  |  |                     envelop.setSuccessFlg(false);
 | 
	
		
			
				|  |  |                     envelop.setErrorMsg("账号重复,请联系管理员!");
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 envelop.setSuccessFlg(false);
 | 
	
		
			
				|  |  |                 envelop.setErrorMsg("该账号不存在,请确认或联系管理员!");
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             envelop.setSuccessFlg(false);
 | 
	
		
			
				|  |  |             envelop.setErrorMsg(e.getMessage());
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return envelop;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @RequestMapping(value = BasicServiceApi.Users.UpdateUserByUsers, method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
 | 
	
		
			
				|  |  |     @ApiOperation(value = "健康上饶app-修改用户", notes = "因为头像的获取方式与基础信息管理不同,基础信息管理在app-admin处理了图片路径")
 | 
	
		
			
				|  |  |     public MUser updateUserByUsers(
 | 
	
		
			
				|  |  |             @ApiParam(name = "user_json_data", value = "", defaultValue = "")
 | 
	
		
			
				|  |  |             @RequestBody String userJsonData) throws Exception {
 | 
	
		
			
				|  |  |         User user = toEntity(userJsonData, User.class);
 | 
	
		
			
				|  |  |         String userType = user.getUserType();
 | 
	
		
			
				|  |  |         SystemDictEntry dict = dictEntryService.getDictEntry(15, userType);
 | 
	
		
			
				|  |  |         if (dict != null) {
 | 
	
		
			
				|  |  |             user.setDType(userType);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         //获取用户头像,保存至file_resource
 | 
	
		
			
				|  |  |         if (null != user.getImgRemotePath() && !StringUtils.isEmpty(user.getImgRemotePath())) {
 | 
	
		
			
				|  |  |             user.setImgRemotePath(saveImgFileSource(user.getImgRemotePath()));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         userService.saveUser(user);
 | 
	
		
			
				|  |  |         //同时修改医生表及用户表信息
 | 
	
		
			
				|  |  |         Doctors doctors = doctorService.getByIdCardNo(user.getIdCardNo());
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(doctors)) {
 | 
	
		
			
				|  |  |             doctors.setName(user.getRealName());
 | 
	
		
			
				|  |  |             doctors.setPyCode(PinyinUtil.getPinYinHeadChar(user.getRealName(), false));
 | 
	
		
			
				|  |  |             doctors.setSex(user.getGender());
 | 
	
		
			
				|  |  |             doctors.setPhone(user.getTelephone());
 | 
	
		
			
				|  |  |             doctors.setPhoto(user.getImgRemotePath());
 | 
	
		
			
				|  |  |             doctorService.save(doctors);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         DemographicInfo demographicInfo = demographicService.getDemographicInfoByIdCardNo(user.getIdCardNo());
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(demographicInfo)) {
 | 
	
		
			
				|  |  |             demographicInfo.setName(user.getRealName());
 | 
	
		
			
				|  |  |             demographicInfo.setTelephoneNo("{\"联系电话\":\"" + user.getTelephone() + "\"}");
 | 
	
		
			
				|  |  |             demographicInfo.setGender(user.getGender());
 | 
	
		
			
				|  |  |             demographicInfo.setMartialStatus(user.getMartialStatus());
 | 
	
		
			
				|  |  |             demographicInfo.setBirthday(DateUtil.strToDate(user.getBirthday()));
 | 
	
		
			
				|  |  |             demographicService.save(demographicInfo);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return convertToModel(user, MUser.class);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 健康上饶app,前端单独调用头像上传接口,将头像的路径传到后端。后端需要将路径保存到fileResource表中,再将id存到用户表
 | 
	
		
			
				|  |  |      * http://172.19.103.52:80/group1/M00/26/AF/rBFuWFr5BkWAZfYmAAAeqtdiKIY039.png
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param path
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public String saveImgFileSource(String path) throws Exception {
 | 
	
		
			
				|  |  |         //获取用户头像,保存至file_resource
 | 
	
		
			
				|  |  |         FileResource fileResource = new FileResource();
 | 
	
		
			
				|  |  |         fileResource.setId(getObjectId(BizObject.FileResource));
 | 
	
		
			
				|  |  |         //获取groupName
 | 
	
		
			
				|  |  |         String[] str = path.split("/");
 | 
	
		
			
				|  |  |         String groupName = str[3];
 | 
	
		
			
				|  |  |         String remoteFileName = path.substring(path.indexOf(groupName)+ groupName.length()+1);
 | 
	
		
			
				|  |  |         //保存到resource表中
 | 
	
		
			
				|  |  |         fileResource.setStoragePath(groupName + ":" + remoteFileName);
 | 
	
		
			
				|  |  |         fileResource.setCreateDate(new Date());
 | 
	
		
			
				|  |  |         fileResource.setMime("user");
 | 
	
		
			
				|  |  |         fileResource.setObjectId("");
 | 
	
		
			
				|  |  |         return resourceRepository.save(fileResource).getId();
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 健康上饶app,根据fileResourceId获取图片路径
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param fileResourceId
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public String getImgPathByFileResource(String fileResourceId) throws Exception {
 | 
	
		
			
				|  |  |         FileResource fileResource = resourceRepository.findById(fileResourceId);
 | 
	
		
			
				|  |  |         String path = null == fileResource ? "" : fileResource.getStoragePath();
 | 
	
		
			
				|  |  |         if (!StringUtils.isEmpty(path)) {
 | 
	
		
			
				|  |  |             return fastDfsPublicServers + "/" + path.replace(":", "/");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return "";
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 判断是否为图片
 | 
	
		
			
				|  |  |      * @param imgPath
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public boolean imageCheck(String imgPath) throws Exception {
 | 
	
		
			
				|  |  |         MimetypesFileTypeMap   mtftp = new MimetypesFileTypeMap();
 | 
	
		
			
				|  |  |         mtftp.addMimeTypes("image png tif jpg jpeg bmp");
 | 
	
		
			
				|  |  |         String mimetype= mtftp.getContentType(imgPath);
 | 
	
		
			
				|  |  |         String type = mimetype.split("/")[0];
 | 
	
		
			
				|  |  |         return type.equals("image");
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |