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
-
-
+
+ select * from ums_role where role_key=#{roleKey} 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"
select u.user_id, u.dept_id, u.post_id, u.title_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_name, d.leader, d1.dept_name as parent_name, d1.dept_id as parent_id,
- p.post_name, p.post_code,
+ p.post_name, p.post_code, u.empl_code,
t.title_name, u.skip_check_device, t.title_code
from ums_user u
left join ums_dept d on u.dept_id = d.dept_id
@@ -243,8 +244,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and r.del_flag = 0
and u.dept_id = #{hospitalId}
+
+
+ where u.empl_code = #{emplCode} and u.del_flag = '0'
+ group by u.user_id order by u.create_time desc limit 1
+
-
+
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]: "",