diff --git a/ruisi_java/ruisi-cc-common/src/main/java/com/ccsens/common/core/domain/entity/SysUser.java b/ruisi_java/ruisi-cc-common/src/main/java/com/ccsens/common/core/domain/entity/SysUser.java index eed53fd..1b96f55 100644 --- a/ruisi_java/ruisi-cc-common/src/main/java/com/ccsens/common/core/domain/entity/SysUser.java +++ b/ruisi_java/ruisi-cc-common/src/main/java/com/ccsens/common/core/domain/entity/SysUser.java @@ -208,6 +208,11 @@ public class SysUser extends BaseEntity { */ private String versions; + /** + * 部门权限字段 + */ + private String dataPower; + public SysUser() { } @@ -490,6 +495,14 @@ public class SysUser extends BaseEntity { return timeRemaining; } + public String getDataPower() { + return dataPower; + } + + public void setDataPower(String dataPower) { + this.dataPower = dataPower; + } + public void setTimeRemaining(Long timeRemaining) { this.timeRemaining = timeRemaining; } diff --git a/ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysLoginService.java b/ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysLoginService.java index ee81b20..2e52fe5 100644 --- a/ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysLoginService.java +++ b/ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysLoginService.java @@ -3,11 +3,13 @@ package com.ccsens.framework.web.service; import javax.annotation.Resource; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import com.ccsens.common.constant.ErrorConstant; import com.ccsens.common.exception.base.BaseException; import com.ccsens.common.utils.SecurityUtils; import com.ccsens.framework.security.context.AuthenticationContextHolder; import com.ccsens.framework.security.token.PhoneAuthenticationToken; +import com.ccsens.system.persist.mapper.SysUserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -46,7 +48,6 @@ import java.util.stream.Collectors; public class SysLoginService { @Autowired private TokenService tokenService; - @Resource private AuthenticationManager authenticationManager; @@ -59,6 +60,8 @@ public class SysLoginService { @Autowired private ISysConfigService configService; + @Autowired + private SysPermissionService permissionService; /** * 登录验证 * @@ -322,4 +325,20 @@ public class SysLoginService { // 生成token return tokenService.createToken(loginUser); } + + /** + * 通过工号获取登录信息 + */ + public String getLoginByEmplCode(String emplCode) { + String token = null; + //根据emplCode查询用户信息 + SysUser user = userService.selectUserByUserName(emplCode); + if (ObjectUtil.isNotNull(user)) { + LoginUser loginUser = new LoginUser(user.getUserId(), user.getDeptId(), user.getHospitalId(), user, permissionService.getMenuPermission(user)); + recordLoginInfo(loginUser.getUserId()); + // 生成token + token = tokenService.createToken(loginUser); + } + return token; + } } diff --git a/ruisi_java/ruisi-cc-generator/src/main/resources/mbg.xml b/ruisi_java/ruisi-cc-generator/src/main/resources/mbg.xml index e357257..3125ed2 100644 --- a/ruisi_java/ruisi-cc-generator/src/main/resources/mbg.xml +++ b/ruisi_java/ruisi-cc-generator/src/main/resources/mbg.xml @@ -64,18 +64,18 @@ - + - - - - - - +
+
+
+
+
+
diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/po/DockEmpl.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/po/DockEmpl.java index 8b78ad0..44720a7 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/po/DockEmpl.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/po/DockEmpl.java @@ -26,6 +26,10 @@ public class DockEmpl implements Serializable { private String sync; + private String rolePower; + + private String dataPower; + private static final long serialVersionUID = 1L; public Long getId() { @@ -116,6 +120,22 @@ public class DockEmpl implements Serializable { this.sync = sync == null ? null : sync.trim(); } + public String getRolePower() { + return rolePower; + } + + public void setRolePower(String rolePower) { + this.rolePower = rolePower == null ? null : rolePower.trim(); + } + + public String getDataPower() { + return dataPower; + } + + public void setDataPower(String dataPower) { + this.dataPower = dataPower == null ? null : dataPower.trim(); + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -133,6 +153,8 @@ public class DockEmpl implements Serializable { sb.append(", updateBy=").append(updateBy); sb.append(", updateTime=").append(updateTime); sb.append(", sync=").append(sync); + sb.append(", rolePower=").append(rolePower); + sb.append(", dataPower=").append(dataPower); sb.append("]"); return sb.toString(); } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/po/DockEmplExample.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/po/DockEmplExample.java index 37a6528..5d692a7 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/po/DockEmplExample.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/po/DockEmplExample.java @@ -844,6 +844,146 @@ public class DockEmplExample { addCriterion("sync not between", value1, value2, "sync"); return (Criteria) this; } + + public Criteria andRolePowerIsNull() { + addCriterion("role_power is null"); + return (Criteria) this; + } + + public Criteria andRolePowerIsNotNull() { + addCriterion("role_power is not null"); + return (Criteria) this; + } + + public Criteria andRolePowerEqualTo(String value) { + addCriterion("role_power =", value, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerNotEqualTo(String value) { + addCriterion("role_power <>", value, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerGreaterThan(String value) { + addCriterion("role_power >", value, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerGreaterThanOrEqualTo(String value) { + addCriterion("role_power >=", value, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerLessThan(String value) { + addCriterion("role_power <", value, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerLessThanOrEqualTo(String value) { + addCriterion("role_power <=", value, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerLike(String value) { + addCriterion("role_power like", value, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerNotLike(String value) { + addCriterion("role_power not like", value, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerIn(List values) { + addCriterion("role_power in", values, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerNotIn(List values) { + addCriterion("role_power not in", values, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerBetween(String value1, String value2) { + addCriterion("role_power between", value1, value2, "rolePower"); + return (Criteria) this; + } + + public Criteria andRolePowerNotBetween(String value1, String value2) { + addCriterion("role_power not between", value1, value2, "rolePower"); + return (Criteria) this; + } + + public Criteria andDataPowerIsNull() { + addCriterion("data_power is null"); + return (Criteria) this; + } + + public Criteria andDataPowerIsNotNull() { + addCriterion("data_power is not null"); + return (Criteria) this; + } + + public Criteria andDataPowerEqualTo(String value) { + addCriterion("data_power =", value, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerNotEqualTo(String value) { + addCriterion("data_power <>", value, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerGreaterThan(String value) { + addCriterion("data_power >", value, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerGreaterThanOrEqualTo(String value) { + addCriterion("data_power >=", value, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerLessThan(String value) { + addCriterion("data_power <", value, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerLessThanOrEqualTo(String value) { + addCriterion("data_power <=", value, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerLike(String value) { + addCriterion("data_power like", value, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerNotLike(String value) { + addCriterion("data_power not like", value, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerIn(List values) { + addCriterion("data_power in", values, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerNotIn(List values) { + addCriterion("data_power not in", values, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerBetween(String value1, String value2) { + addCriterion("data_power between", value1, value2, "dataPower"); + return (Criteria) this; + } + + public Criteria andDataPowerNotBetween(String value1, String value2) { + addCriterion("data_power not between", value1, value2, "dataPower"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysDeptMapper.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysDeptMapper.java index dcd5745..7d94155 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysDeptMapper.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysDeptMapper.java @@ -117,4 +117,9 @@ public interface SysDeptMapper { public int deleteDeptById(Long deptId); List queryDeptByIdList(@Param("deptIdList") List deptIdList); + + /** + * 同步——根据部门code查找部门信息(逗号分隔的多个部门code) + */ + List queryDeptByDeptCode(@Param("deptCode") String deptCode); } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysRoleMapper.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysRoleMapper.java index b8575aa..d39d3b5 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysRoleMapper.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysRoleMapper.java @@ -107,4 +107,9 @@ public interface SysRoleMapper { * @return 结果 */ public int deleteRoleByIds(Long[] roleIds); + + /** + * 通过权限key查找角色 + */ + public SysRole queryRoleByRoleKey(@Param("roleKey") String roleKey); } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java index b193b24..f8a5e4d 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/mapper/SysUserMapper.java @@ -154,4 +154,6 @@ public interface SysUserMapper { List selectUserByRoleKey(@Param("roleKey") String roleKey); List getZcpsByHospitalId(@Param("hospitalId")Long hospitalId); + + SysUser selectUserByEmplCode(@Param("emplCode")String emplCode); } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java index 31f5d54..3ed6b40 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/DockService.java @@ -32,4 +32,5 @@ public interface DockService { void syncUmsDeptMaster(List sysDepts); List syncUmsUserSlave(); void syncUmsUserMaster(List sysUsers); + } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java index 066acd5..c56b6f7 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/DockServiceImpl.java @@ -11,7 +11,9 @@ import cn.hutool.extra.pinyin.PinyinUtil; import com.ccsens.common.annotation.DataSource; import com.ccsens.common.constant.ErrorConstant; import com.ccsens.common.core.domain.entity.SysDept; +import com.ccsens.common.core.domain.entity.SysRole; import com.ccsens.common.core.domain.entity.SysUser; +import com.ccsens.common.core.domain.model.LoginUser; import com.ccsens.common.enums.DataSourceType; import com.ccsens.common.exception.base.BaseException; import com.ccsens.common.utils.DateUtils; @@ -25,6 +27,7 @@ import com.ccsens.system.persist.mapper.*; import com.ccsens.system.service.DmsDataValueService; import com.ccsens.system.service.DockService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -78,6 +81,9 @@ public class DockServiceImpl implements DockService { private SysUserMapper sysUserMapper; @Resource private SysUserRoleMapper userRoleMapper; + @Resource + private SysRoleMapper sysRoleMapper; + @Value("${hospitalId:}") private Long hospitalId; @@ -279,6 +285,7 @@ public class DockServiceImpl implements DockService { } } + @Override public void syncHospitalData() { //患者信息 try { @@ -307,6 +314,7 @@ public class DockServiceImpl implements DockService { } + @Override @DataSource(value = DataSourceType.MASTER) @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) public void syncUmsUserMaster(List sysUsers) { @@ -319,13 +327,16 @@ public class DockServiceImpl implements DockService { if (CollUtil.isEmpty(users)) { sysUser.setDeptId(hospitalId); sysUserMapper.insertUser(sysUser); + }else { + sysUser.setUserId(users.get(0).getUserId()); + sysUserMapper.updateUser(sysUser); } } } } - // @DataSource(value = DataSourceType.SLAVE) -// @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + + @Override public List syncUmsUserSlave() { List returnUsers = new ArrayList<>(); DockEmplExample dockEmplExample = new DockEmplExample(); @@ -344,6 +355,26 @@ public class DockServiceImpl implements DockService { } else { sysDept = sysDepts.get(0); } + //处理用户的部门权限 + String dataPower = ""; + if(StrUtil.isNotEmpty(dockEmpl.getDataPower())){ + if("All".equals(dockEmpl.getDataPower())){ + dataPower = "All"; + }else { + List depts = sysDeptMapper.queryDeptByDeptCode(dockEmpl.getDataPower()); + dataPower = depts.stream().map(SysDept::getDeptId).map(String::valueOf).collect(Collectors.joining(",")); + } + } + //处理角色权限 + SysRole role = null; + if(StrUtil.isNotEmpty(dockEmpl.getRolePower()) && "1".equals(dockEmpl.getRolePower())){ + //总评估师 + role = sysRoleMapper.queryRoleByRoleKey("yy_zcps"); + }else { + //评估师 + role = sysRoleMapper.queryRoleByRoleKey("yy_cps"); + } + SysUser sysUser = new SysUser(); sysUser.setEmplCode(dockEmpl.getEmplCode()); List sysUsers = sysUserMapper.selectUserList(sysUser); @@ -355,24 +386,44 @@ public class DockServiceImpl implements DockService { sysUser.setPassword(SecurityUtils.encryptPassword(generalPassword)); //获取一年后的日期 sysUser.setValidDate(DateUtil.offset(new Date(), DateField.YEAR, 1)); + sysUser.setDataPower(dataPower); sysUserMapper.insertUser(sysUser); // 新增用户与角色管理 - SysUserRole ur = new SysUserRole(); - ur.setUserId(sysUser.getUserId()); - ur.setRoleId(104L); - userRoleMapper.batchUserRole(CollUtil.newArrayList(ur)); - + if(role != null) { + SysUserRole ur = new SysUserRole(); + ur.setUserId(sysUser.getUserId()); + ur.setRoleId(role.getRoleId()); + userRoleMapper.batchUserRole(CollUtil.newArrayList(ur)); + } returnUsers.add(sysUser); dockEmpl.setSync("1"); dockEmplMapper.updateByPrimaryKeySelective(dockEmpl); + }else { + //存在则更新 + SysUser user = sysUsers.get(0); + user.setDeptId(sysDept.getDeptId()); + user.setNickName(dockEmpl.getEmplName()); + user.setDataPower(dataPower); + sysUserMapper.updateUser(user); + //删除旧的用户角色关联 + userRoleMapper.deleteUserRoleByUserId(user.getUserId()); + // 新增用户与角色管理 + if(role != null) { + SysUserRole ur = new SysUserRole(); + ur.setUserId(user.getUserId()); + ur.setRoleId(role.getRoleId()); + userRoleMapper.batchUserRole(CollUtil.newArrayList(ur)); + } + returnUsers.add(user); + dockEmpl.setSync("1"); + dockEmplMapper.updateByPrimaryKeySelective(dockEmpl); } } return returnUsers; } - // @DataSource(value = DataSourceType.SLAVE) -// @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + @Override public List syncUmsDeptSlave() { List returnDepts = new ArrayList<>(); //查找同步表中的部门信息 @@ -409,6 +460,7 @@ public class DockServiceImpl implements DockService { return returnDepts; } + @Override @DataSource(value = DataSourceType.MASTER) @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) public void syncUmsDeptMaster(List sysDepts) { @@ -429,7 +481,6 @@ public class DockServiceImpl implements DockService { } } - private void syncPmsPatient() { //查找医院下第一个总测评师 List sysUserList = sysUserMapper.getZcpsByHospitalId(hospitalId); diff --git a/ruisi_java/ruisi-system/src/main/resources/mapper/system/DockEmplMapper.xml b/ruisi_java/ruisi-system/src/main/resources/mapper/system/DockEmplMapper.xml index ece5edb..995bfda 100644 --- a/ruisi_java/ruisi-system/src/main/resources/mapper/system/DockEmplMapper.xml +++ b/ruisi_java/ruisi-system/src/main/resources/mapper/system/DockEmplMapper.xml @@ -13,6 +13,8 @@ + + @@ -74,7 +76,7 @@ id, empl_name, empl_code, empl_type, dept_code, del_flag, create_by, create_time, - update_by, update_time, sync + update_by, update_time, sync, role_power, data_power @@ -231,6 +247,12 @@ sync = #{record.sync,jdbcType=VARCHAR}, + + role_power = #{record.rolePower,jdbcType=VARCHAR}, + + + data_power = #{record.dataPower,jdbcType=VARCHAR}, + @@ -248,7 +270,9 @@ create_time = #{record.createTime,jdbcType=TIMESTAMP}, update_by = #{record.updateBy,jdbcType=VARCHAR}, update_time = #{record.updateTime,jdbcType=TIMESTAMP}, - sync = #{record.sync,jdbcType=VARCHAR} + sync = #{record.sync,jdbcType=VARCHAR}, + role_power = #{record.rolePower,jdbcType=VARCHAR}, + data_power = #{record.dataPower,jdbcType=VARCHAR} @@ -286,6 +310,12 @@ sync = #{sync,jdbcType=VARCHAR}, + + role_power = #{rolePower,jdbcType=VARCHAR}, + + + data_power = #{dataPower,jdbcType=VARCHAR}, + where id = #{id,jdbcType=BIGINT} @@ -300,7 +330,9 @@ create_time = #{createTime,jdbcType=TIMESTAMP}, update_by = #{updateBy,jdbcType=VARCHAR}, update_time = #{updateTime,jdbcType=TIMESTAMP}, - sync = #{sync,jdbcType=VARCHAR} + sync = #{sync,jdbcType=VARCHAR}, + role_power = #{rolePower,jdbcType=VARCHAR}, + data_power = #{dataPower,jdbcType=VARCHAR} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysDeptMapper.xml index efd1783..815910d 100644 --- a/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -23,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time + select d.dept_id, d.parent_id, d.ancestors, d.dept_name,d.dept_code, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time from ums_dept d @@ -171,4 +172,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and parent_id = 0 + + \ No newline at end of file diff --git a/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysRoleMapper.xml index 13f3d48..a7e7e35 100644 --- a/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -105,8 +105,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where r.role_key=#{roleKey} and r.del_flag = '0' limit 1 - - + + + insert into ums_role( role_id, role_name, diff --git a/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml index 98efb30..18fc84b 100644 --- a/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruisi_java/ruisi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -90,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - + insert into ums_user( user_id, dept_id, @@ -263,6 +269,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark, valid_date, skip_check_device, + data_power, create_time )values( #{userId}, @@ -282,6 +289,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{remark}, #{validDate}, #{skipCheckDevice}, + #{dataPower}, sysdate() ) @@ -305,6 +313,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by = #{updateBy}, remark = #{remark}, skip_check_device = #{skipCheckDevice}, + data_power = #{dataPower}, valid_date = #{validDate}, update_time = sysdate() diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/DockController.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/DockController.java index b4bdd1a..1c79948 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/DockController.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/DockController.java @@ -2,18 +2,22 @@ package com.ccsens.client.controller; import com.ccsens.common.annotation.Anonymous; import com.ccsens.common.core.domain.JsonResponse; +import com.ccsens.framework.web.service.SysLoginService; import com.ccsens.system.domain.dto.DockDto; import com.ccsens.system.service.DockService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; /** * @Author zzc @@ -31,6 +35,29 @@ import javax.annotation.Resource; public class DockController { @Resource private DockService dockService; + @Autowired + private SysLoginService loginService; + + @Value("${redirectPath:}") + private String redirectPath; + /** + * 院内调用接口,重定向至患者列表页面 + * @param visitNo 患者就诊流水号 + * @param emplCode 登录用户工号 + * @return 重定向至本系统 + */ + @Anonymous + @ApiOperation("对接院内登录重定向至本系统") + @GetMapping("/redirect") + public void loginRedirect(String visitNo, String emplCode, HttpServletResponse response) throws IOException { + //根据emplCode获取token + String token = loginService.getLoginByEmplCode(emplCode); + // 3. 构建前端URL + String frontendUrl = redirectPath + "?idCard=" + visitNo + "&token=Bearer " + token; + // 4. 重定向 + response.sendRedirect(frontendUrl); + } + @Anonymous @ApiOperation("接收院内推送的待评估患者") diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java index bea9fb1..fe168fb 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java @@ -30,7 +30,7 @@ public class SyncHospitalData { } @DataSource(value = DataSourceType.SLAVE) -// @Scheduled(cron = "0 */1 * * * ?") + @Scheduled(cron = "0 */1 * * * ?") public void syncDeptData() { try { List sysDepts = dockService.syncUmsDeptSlave(); @@ -48,7 +48,7 @@ public class SyncHospitalData { @DataSource(value = DataSourceType.SLAVE) -// @Scheduled(cron = "0 */1 * * * ?") + @Scheduled(cron = "0 */1 * * * ?") public void syncUserData() { try { List sysUsers = dockService.syncUmsUserSlave(); diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/PmsPatientServiceImpl.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/PmsPatientServiceImpl.java index c24218e..f89d56d 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/PmsPatientServiceImpl.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/PmsPatientServiceImpl.java @@ -222,7 +222,7 @@ public class PmsPatientServiceImpl implements IPmsPatientService { PmsPatientBodyExample patientBodyExample = new PmsPatientBodyExample(); patientBodyExample.createCriteria().andPatientIdEqualTo(pmsPatient.getId()) .andDelFlagEqualTo((byte) 0); - patientBodyExample.setOrderByClause("id desc"); + patientBodyExample.setOrderByClause("create_time desc"); List pmsPatientBodies = pmsPatientBodyMapper.selectByExample(patientBodyExample); if (CollUtil.isNotEmpty(pmsPatientBodies)) { PmsPatientBody body = pmsPatientBodies.get(0); diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/RmsServiceImpl.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/RmsServiceImpl.java index 532d950..364a585 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/RmsServiceImpl.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/RmsServiceImpl.java @@ -1628,41 +1628,41 @@ public class RmsServiceImpl implements IRmsService { List queryReportHistoryPatients = rmsDao.queryReportList(dto, userId, SecurityUtils.getUsername(), dataScope); if (CollUtil.isNotEmpty(queryReportHistoryPatients)) { queryReportHistoryPatients.forEach(patient -> { - //查找最后一题信息 - RmsVo.QueryReportHistoryPatient lastQuestion = rmsDao.getLastQuestion(patient.getEvaluationId()); - if (ObjectUtil.isNotNull(lastQuestion)) { - patient.setScaleCode(lastQuestion.getScaleCode()); - patient.setScaleName(lastQuestion.getScaleName()); - patient.setNum(lastQuestion.getNum()); - } +// //查找最后一题信息 +// RmsVo.QueryReportHistoryPatient lastQuestion = rmsDao.getLastQuestion(patient.getEvaluationId()); +// if (ObjectUtil.isNotNull(lastQuestion)) { +// patient.setScaleCode(lastQuestion.getScaleCode()); +// patient.setScaleName(lastQuestion.getScaleName()); +// patient.setNum(lastQuestion.getNum()); +// } //查询关联的量表名称 patient.setScaleNames(rmsDao.queryEvaluationScaleNames(patient.getEvaluationId())); - //根据测评id查找报告单 - RmsReportExample reportExample = new RmsReportExample(); - reportExample.createCriteria().andEvaluationIdEqualTo(patient.getEvaluationId()).andDelFlagEqualTo((byte) 0); - List rmsReports = rmsReportMapper.selectByExample(reportExample); - if (CollUtil.isEmpty(rmsReports)) { - patient.setReport(false); - } else { - patient.setReport(true); - } - - //每次查询报告单 都重新生成分数 - //查询报告单分数 - List reportScore = rmsDao.queryReportScore(patient.getEvaluationId(), null); - //重新封装报告单信息 - List reportScores = getReportScores(reportScore, patient.getEvaluationId()); - int i = 0; - for (RmsVo.ReportScore score : reportScores) { - String result = score.getResult(); - if (StrUtil.isNotEmpty(result)) { - i += 1; - } - } - if (i >= 2) { - patient.setResult(""); - } +// //根据测评id查找报告单 +// RmsReportExample reportExample = new RmsReportExample(); +// reportExample.createCriteria().andEvaluationIdEqualTo(patient.getEvaluationId()).andDelFlagEqualTo((byte) 0); +// List rmsReports = rmsReportMapper.selectByExample(reportExample); +// if (CollUtil.isEmpty(rmsReports)) { +// patient.setReport(false); +// } else { +// patient.setReport(true); +// } + +// //每次查询报告单 都重新生成分数 +// //查询报告单分数 +// List reportScore = rmsDao.queryReportScore(patient.getEvaluationId(), null); +// //重新封装报告单信息 +// List reportScores = getReportScores(reportScore, patient.getEvaluationId()); +// int i = 0; +// for (RmsVo.ReportScore score : reportScores) { +// String result = score.getResult(); +// if (StrUtil.isNotEmpty(result)) { +// i += 1; +// } +// } +// if (i >= 2) { +// patient.setResult(""); +// } }); } diff --git a/ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml b/ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml index bfca84a..d01a384 100644 --- a/ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml +++ b/ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml @@ -11,14 +11,14 @@ spring: # password: po3OynBO[M3579p6L7)o url: jdbc:mysql://127.0.0.1:3306/ruisi_cga?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root - password: q7510327 + password: 123456 # 从库数据源 slave: # 从数据源开关/默认关闭 enabled: true - url: jdbc:mysql://127.0.0.1:3306/ruisi_cga_yf1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://127.0.0.1:3306/ruisi_cga_yf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root - password: q7510327 + password: 123456 # driverClassName: oracle.jdbc.driver.OracleDriver # url: jdbc:oracle:thin:@200.1.8.115:1521:hisdb # username: interface_lnpg @@ -127,5 +127,6 @@ informed: clientVersion: v1.8.3.0 # 医院id,不同医院部署的时候需要修改 -hospitalId: 174 -generalPassword: cga123# \ No newline at end of file +hospitalId: 106 +generalPassword: cga123# +redirectPath: http://localhost:8080/cga/v2/client/#/sickList \ No newline at end of file diff --git a/ruisi_java/ruisi-web-client/src/main/resources/application-prod.yml b/ruisi_java/ruisi-web-client/src/main/resources/application-prod.yml index af25bdf..e329607 100644 --- a/ruisi_java/ruisi-web-client/src/main/resources/application-prod.yml +++ b/ruisi_java/ruisi-web-client/src/main/resources/application-prod.yml @@ -133,4 +133,5 @@ clientVersion: v1.8.3.0 # 医院id,不同医院部署的时候需要修改 hospitalId: 178 -generalPassword: cga123# \ No newline at end of file +generalPassword: cga123# +redirectPath: http://院内ip/cga/v2/client/#/sickList \ No newline at end of file diff --git a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/PmsPatientDao.xml b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/PmsPatientDao.xml index 237ade1..6d28089 100644 --- a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/PmsPatientDao.xml +++ b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/PmsPatientDao.xml @@ -29,7 +29,6 @@ pp.id as patientId, pp.`name` as patientName, pp.sex, --- pp.age, pp.idcard, pp.mobile as phone, pp.birth_year as birthYear, @@ -53,6 +52,7 @@ pms_patient pp LEFT JOIN ems_evaluation ae on pp.id = ae.patient_id LEFT JOIN ums_user uu on pp.create_by = uu.user_name + left join pms_patient_body pb on pp.id = pb.patient_id WHERE pp.del_flag = 0 @@ -65,43 +65,42 @@ or pp.idcard like CONCAT('%',#{searchValue},'%') or - pp.id = #{searchValue} + pb.outpatient_no like CONCAT('%',#{searchValue},'%') ) and (pp.idcard = #{idcard} or pp.idcard = #{idcardEncrypt}) - - - and (pp.create_by = #{userName} or ae.tester_id = #{userId}) - - - - and uu.dept_id = (SELECT dept_id FROM ums_user WHERE user_id = #{userId}) - - - and uu.dept_id in ( - SELECT pud.dept_id FROM ums_user u - LEFT JOIN ums_dept ud ON ud.dept_id = u.dept_id - LEFT JOIN ums_dept pud ON pud.dept_id = ud.parent_id - WHERE u.user_id = #{userId} - UNION ALL - SELECT u.dept_id FROM ums_user u WHERE u.user_id = #{userId} - ) - - - - - - - - - - - - - - + + and uu.dept_id IN ( SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or FIND_IN_SET(u.dept_id,ancestors)) + WHERE user_id = #{userId} + ) + + + + + + + + + + + + + + + + + + + + + + + + + + GROUP BY pp.id order by pp.create_time desc diff --git a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml index 9d50ae6..c31b293 100644 --- a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml +++ b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/RmsDao.xml @@ -1157,9 +1157,6 @@ group by ee.id pp.idcard as idCard, ee.complete_status as completeStatus, ee.status, - ee.duration, a.update_time as aduitTime, b.outpatient_no as outpatientNo, @@ -1176,23 +1173,7 @@ group by ee.id LEFT JOIN ems_evaluation_aduit a on ee.id = a.evaluation_id and a.del_flag = 0 left join pms_patient_body b on pp.id = b.patient_id left join hms_version v on v.id = ee.version - + WHERE ee.del_flag = 0 and pp.id is not null @@ -1219,24 +1200,10 @@ group by ee.id pp.idcard like CONCAT('%',#{dto.searchValue},'%') ) - - - and (pp.create_by = #{userName} or ee.tester_id = #{userId}) - - - and uu.dept_id = (SELECT dept_id FROM ums_user WHERE user_id = #{userId}) - - - and uu.dept_id in ( - SELECT pud.dept_id FROM ums_user u - LEFT JOIN ums_dept ud ON ud.dept_id = u.dept_id - LEFT JOIN ums_dept pud ON pud.dept_id = ud.parent_id - WHERE u.user_id = #{userId} - UNION ALL - SELECT u.dept_id FROM ums_user u WHERE u.user_id = #{userId} - ) - - + + and uu.dept_id IN ( SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or FIND_IN_SET(u.dept_id,ancestors)) + WHERE user_id = #{userId} + ) group by ee.id order by ee.create_time desc diff --git a/web_client/src/main.js b/web_client/src/main.js index 51dfe39..94f5a58 100644 --- a/web_client/src/main.js +++ b/web_client/src/main.js @@ -30,6 +30,16 @@ Vue.prototype.VUE_APP_IMG_VAR = '@@@___'; Vue.prototype.$message = message; router.beforeEach(async (to, from, next) => { + + // 从 window.location.hash 中获取 token + const hash = window.location.hash; + const match = hash.match(/[?&]token=([^&]+)/); + if (match) { + const encodedToken = match[1]; + const decodedToken = decodeURIComponent(encodedToken); + localStorage.setItem("anyringToken", decodedToken); + } + if (to.path === '/login') return next(); store.commit('user/setShowNav', to.meta.nav); store.commit('user/setShowRoute', to.meta.route); @@ -49,6 +59,7 @@ router.beforeEach(async (to, from, next) => { } next(); } else { + if (!localStorage.getItem('anyringToken')) { router.replace('/login'); return next(); diff --git a/web_client/vue.config.js b/web_client/vue.config.js index cf98b8b..476dbd3 100644 --- a/web_client/vue.config.js +++ b/web_client/vue.config.js @@ -38,7 +38,7 @@ module.exports = { // target: "https://www.ylinno.com/cga/v2/api/client/", // target: "http://113.45.159.249:59001/cga/v2/api/client/", // target: "http://127.0.0.1:19331", - target: "http://192.168.1.136:19331", + target: "http://127.0.0.1:19331", changeOrigin: true, pathRewrite: { ["^" + settings.proxyUrl]: "",