Browse Source

Merge branch 'master-admin' into master-dev

whszxyjhyy
ccsens_zhengzhichuan 6 days ago
parent
commit
c997e0e7ea
  1. 4
      ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/datasource/DataSourceManager.java
  2. 9
      ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysLoginService.java
  3. 2
      ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysPermissionService.java
  4. 7
      ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/UserDetailsServiceImpl.java
  5. 1
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/PmsPatientVo.java
  6. 5
      ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/RmsVo.java
  7. 6
      ruisi_java/ruisi-system/src/main/resources/mapper/dao/StatisticsDao.xml
  8. 3
      ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/persist/dao/RmsDao.java
  9. 4
      ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/PmsPatientServiceImpl.java
  10. 6
      ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/RmsServiceImpl.java
  11. 2
      ruisi_java/ruisi-web-admin/src/main/resources/application-dev.yml
  12. 71
      ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/PmsPatientDao.xml
  13. 57
      ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/RmsDao.xml
  14. 6
      ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java

4
ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/datasource/DataSourceManager.java

@ -48,4 +48,8 @@ public class DataSourceManager {
public static void setDataSourceKey(String key) {
DynamicDataSourceContextHolder.setDataSourceType(key);
}
public static void clearDataSourceKey() {
DynamicDataSourceContextHolder.clearDataSourceType();
}
}

9
ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysLoginService.java

@ -5,6 +5,7 @@ import javax.annotation.Resource;
import cn.hutool.core.collection.CollectionUtil;
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 org.springframework.beans.factory.annotation.Autowired;
@ -90,6 +91,10 @@ public class SysLoginService {
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"), null));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
//非总测评师不能登录
if (!loginUser.getUser().isAdmin() || CollectionUtil.isEmpty(loginUser.getUser().getRoles()) || !loginUser.getUser().getRoles().stream().map(e -> e.getRoleKey()).collect(Collectors.toList()).contains("yy_zcps")) {
throw new BaseException(ErrorConstant.USER_NO_PERMISSION);
}
recordLoginInfo(loginUser.getUserId());
// 生成token
return tokenService.createToken(loginUser);
@ -129,6 +134,10 @@ public class SysLoginService {
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"),null));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
//非总测评师不能登录
if (!SecurityUtils.isAdmin(loginUser.getUserId()) && (CollectionUtil.isEmpty(loginUser.getUser().getRoles()) || !loginUser.getUser().getRoles().stream().map(e -> e.getRoleKey()).collect(Collectors.toList()).contains("yy_zcps"))) {
throw new BaseException(ErrorConstant.USER_NO_PERMISSION);
}
recordLoginInfo(loginUser.getUserId());
// 生成token
return tokenService.createToken(loginUser);

2
ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/SysPermissionService.java

@ -55,7 +55,7 @@ public class SysPermissionService {
perms.add("*:*:*");
} else {
List<SysRole> roles = user.getRoles();
if (!roles.isEmpty() && roles.size() > 1) {
if (!roles.isEmpty()) {
// 多角色设置permissions属性,以便数据权限匹配权限
for (SysRole role : roles) {
Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId(), clientType);

7
ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/web/service/UserDetailsServiceImpl.java

@ -7,6 +7,8 @@ import com.ccsens.common.enums.UserStatus;
import com.ccsens.common.exception.ServiceException;
import com.ccsens.common.utils.ServletUtils;
import com.ccsens.common.utils.StringUtils;
import com.ccsens.framework.datasource.DataSourceManager;
import com.ccsens.framework.datasource.DynamicDataSource;
import com.ccsens.system.service.ISysUserService;
import com.ccsens.system.service.IUmsDeviceService;
import org.slf4j.Logger;
@ -101,6 +103,9 @@ public class UserDetailsServiceImpl implements UserDetailsService {
}
public UserDetails createLoginUser(SysUser user) {
return new LoginUser(user.getUserId(), user.getDeptId(), user.getHospitalId(), user, permissionService.getMenuPermission(user));
DataSourceManager.setDataSourceKey(user.getDataSourceKey());
LoginUser loginUser = new LoginUser(user.getUserId(), user.getDeptId(), user.getHospitalId(), user, permissionService.getMenuPermission(user));
DataSourceManager.clearDataSourceKey();
return loginUser;
}
}

1
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/PmsPatientVo.java

@ -98,6 +98,7 @@ public class PmsPatientVo {
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
private String createBy;
@ApiModelProperty("医院名称")
private String hospitalName;

5
ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/vo/RmsVo.java

@ -144,6 +144,8 @@ public class RmsVo {
@ApiModelProperty("测评ID")
private Long evaluationId;
private String testerName;
@ApiModelProperty("患者姓名")
private String name;
private Long patientId;
@ -169,7 +171,7 @@ public class RmsVo {
private String createBy;
private Date createTime;
private Date evaluationTime;
private String updateBy;
@ -186,6 +188,7 @@ public class RmsVo {
private Byte needPlan;
private String deptName;
private Byte evaluationStatus = 1;
}

6
ruisi_java/ruisi-system/src/main/resources/mapper/dao/StatisticsDao.xml

@ -75,7 +75,7 @@
<select id="nntgb" resultType="com.ccsens.system.domain.vo.HomeDpVo$Tz">
SELECT SUM(CASE WHEN IFNULL(p.tz,0) >= -1 THEN 1 ELSE 0 END) t1,
SUM(CASE WHEN IFNULL(p.tz,0) > -2.5 AND IFNULL(b.tz,0) &lt; -1 THEN 1 ELSE 0 END) t2,
SUM(CASE WHEN IFNULL(p.tz,0) > -2.5 AND IFNULL(p.tz,0) &lt; -1 THEN 1 ELSE 0 END) t2,
SUM(CASE WHEN IFNULL(p.tz,0) &lt;= -2.5 THEN 1 ELSE 0 END) t3
FROM
pms_patient p
@ -158,7 +158,7 @@
FROM pms_patient
WHERE del_flag = 0
<if test="dto.deptId != null">
AND dept_id = #{dto.deptId}
AND hospital_id = #{dto.deptId}
</if>
<if test="dto.beginTime != null">
AND create_time >= #{dto.beginTime}
@ -274,7 +274,7 @@
and b.diagnosis_date between #{param.beginTime} and #{param.endTime}
</if>
<if test="param.deptId != null">
and p.dept_id = #{param.deptId}
and p.hospital_id = #{param.deptId}
</if>
</where>

3
ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/persist/dao/RmsDao.java

@ -135,7 +135,8 @@ public interface RmsDao {
List<ReportVo.EvaResult> countReportResult(@Param("evaId") Long evaId,
@Param("code") String scaleCode);
List<RmsVo.Report> queryReport(@Param("dto") RmsDto.ReportQuery dto);
List<RmsVo.Report> queryReport(@Param("dto") RmsDto.ReportQuery dto,
@Param("userId") Long userId);
List<RmsVo.ReportScore> queryEmsScaleScore(@Param("evaId") Long evaId,
@Param("scaleCodeList") List<String> scaleCodeList);

4
ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/PmsPatientServiceImpl.java

@ -107,7 +107,7 @@ public class PmsPatientServiceImpl implements IPmsPatientService {
String hash = Md5Utils.hash(param.getIdCard().substring(2, 14));
param.setIdCard(param.getIdCard().substring(0, 2) + hash + param.getIdCard().substring(14, 18));
}
return patientDao.queryPatientList(param, dataScope, userId, userName);
return patientDao.queryPatientList(param, dataScope, SecurityUtils.isAdmin(userId) ? null : userId, userName);
}
@Override
@ -2218,7 +2218,7 @@ public class PmsPatientServiceImpl implements IPmsPatientService {
@Override
public List<PmsPatientVo.QueryPatientJz> queryPatientJzList(PmsPatientDto.QueryPatientJz param, String dataScope, Long userId, String userName) {
List<PmsPatientVo.QueryPatientJz> queryPatientJzs = patientDao.queryPatientJzList(param, dataScope, userId, userName);
List<PmsPatientVo.QueryPatientJz> queryPatientJzs = patientDao.queryPatientJzList(param, dataScope, SecurityUtils.isAdmin(userId) ? null : userId, userName);
if (CollUtil.isNotEmpty(queryPatientJzs)) {
for (PmsPatientVo.QueryPatientJz queryPatientJz : queryPatientJzs) {
//查询就诊

6
ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/RmsServiceImpl.java

@ -1305,7 +1305,7 @@ public class RmsServiceImpl implements IRmsService {
@Override
public List<RmsVo.QueryReportHistoryPatient> queryReportListCopyClient(RmsDto.QueryReportList dto, Long userId, String dataScope) {
return rmsDao.queryReportListCopyClient(dto, userId, SecurityUtils.getUsername(), dataScope);
return rmsDao.queryReportListCopyClient(dto, SecurityUtils.isAdmin(userId) ? null : userId, SecurityUtils.getUsername(), dataScope);
}
@Override
@ -1775,12 +1775,12 @@ public class RmsServiceImpl implements IRmsService {
@Override
public List<RmsVo.Report> queryReportList(RmsDto.ReportQuery param, Long userId) {
return rmsDao.queryReport(param);
return rmsDao.queryReport(param, SecurityUtils.isAdmin(userId) ? null : userId);
}
@Override
public void exportEvaluation(RmsDto.ReportQuery param, HttpServletResponse response) throws IOException {
List<RmsVo.Report> reports = queryReportList(param, null);
List<RmsVo.Report> reports = queryReportList(param, SecurityUtils.isAdmin(SecurityUtils.getUserId()) ? null : SecurityUtils.getUserId());
if (CollUtil.isEmpty(reports)) {
return;
}

2
ruisi_java/ruisi-web-admin/src/main/resources/application-dev.yml

@ -8,7 +8,7 @@ spring:
master:
url: jdbc:mysql://localhost:3306/ruisi_cga?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
password: q7510327
# url: jdbc:mysql://localhost:3306/htage2023?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
# username: root
# password: 123456

71
ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/PmsPatientDao.xml

@ -94,7 +94,21 @@
COUNT(ee.id) as evaluationCount,
(select nick_name from ums_user where user_name = pp.create_by and del_flag = 0) as creatorName,
pp.create_time as createTime,
ud.dept_name as hospitalName
ud.dept_name as hospitalName,
pp.birthday,
pp.career,
pp.marital_status as maritalStatus,
pp.domicile,
pp.nation,
pp.native_place as nativePlace,
pp.contact_name as contactName,
pp.contact_relation as contactRelation,
pp.contact_mobile as contactMobile,
pp.address,
pp.belief,
pp.hobby,
pp.abo_blood_type as aboBloodType,
pp.rh_blood_type as rhBloodType
FROM
pms_patient pp
LEFT JOIN ems_evaluation ee ON pp.id = ee.patient_id and ee.del_flag = 0
@ -155,25 +169,33 @@
</when>
</choose>
</if>
<choose>
<when test="dataScope == 5">
and (pp.create_by = #{userName} or ae.tester_id = #{userId})
</when>
<!-- 当前医院不区分多级,所以本部门及以下权限和本部门数据权限使用相同的查询语句 -->
<when test="dataScope == 3 or dataScope == 4">
and uu.dept_id = (SELECT dept_id FROM ums_user WHERE user_id = #{userId})
</when>
<when test="dataScope == 2">
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}
)
</when>
</choose>
<if test="userId != null">
<!-- 权限 总测评师和测评师都是本部门及以下 -->
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}
)
</if>
<!-- <choose>-->
<!-- <when test="dataScope == 5">-->
<!-- and (pp.create_by = #{userName} or ae.tester_id = #{userId})-->
<!-- </when>-->
<!-- &lt;!&ndash; 当前医院不区分多级,所以本部门及以下权限和本部门数据权限使用相同的查询语句 &ndash;&gt;-->
<!-- <when test="dataScope == 3 or dataScope == 4">-->
<!-- and uu.dept_id = (SELECT dept_id FROM ums_user WHERE user_id = #{userId})-->
<!-- </when>-->
<!-- <when test="dataScope == 2">-->
<!-- 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}-->
<!-- )-->
<!-- </when>-->
<!-- </choose>-->
GROUP BY pp.id
order by pp.create_time desc
</select>
@ -264,6 +286,7 @@
from
pms_patient_body b
left join pms_patient p on b.patient_id = p.id
left join ums_user uu on p.create_by = uu.user_name
<where>
b.del_flag = 0 and p.del_flag = 0
<if test="param.visitType != null">
@ -281,6 +304,14 @@
<if test="param.diagnosisCode != null and param.diagnosisCode != ''">
and b.diagnosis_code like concat('%',#{param.diagnosisCode},'%')
</if>
<if test="userId != null">
<!-- 权限 总测评师和测评师都是本部门及以下 -->
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}
)
</if>
</where>
order by b.id desc
</select>

57
ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/RmsDao.xml

@ -1057,24 +1057,32 @@ d.dept_name as hospitalName
pp.name_full like CONCAT('%',LOWER(#{dto.searchValue}),'%')
)
</if>
<choose>
<when test="dataScope == 5">
and (pp.create_by = #{userName} or ee.tester_id = #{userId})
</when>
<when test="dataScope == 3 or dataScope == 4">
and uu.dept_id = (SELECT dept_id FROM ums_user WHERE user_id = #{userId})
</when>
<when test="dataScope == 2">
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}
)
</when>
</choose>
<if test="userId != null">
<!-- 权限 总测评师和测评师都是本部门及以下 -->
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}
)
</if>
<!-- <choose>-->
<!-- <when test="dataScope == 5">-->
<!-- and (pp.create_by = #{userName} or ee.tester_id = #{userId})-->
<!-- </when>-->
<!-- <when test="dataScope == 3 or dataScope == 4">-->
<!-- and uu.dept_id = (SELECT dept_id FROM ums_user WHERE user_id = #{userId})-->
<!-- </when>-->
<!-- <when test="dataScope == 2">-->
<!-- 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}-->
<!-- )-->
<!-- </when>-->
<!-- </choose>-->
group by rr.id
order by rr.create_time desc
</select>
@ -1437,14 +1445,13 @@ d.dept_name as hospitalName
e.patient_age as patientAge,
e.tester_id as testerId,
e.serial_number as serialNumber,
e.check_time as evaluationTime,
e.remark,
e.hospital,
e.complete_status as completeStatus,
e.recording,
e.duration,
e.create_by as createBy,
e.create_time as createTime,
e.create_time as evaluationTime,
e.status,
e.version,
e.visit_no as visitNo ,
@ -1489,7 +1496,15 @@ d.dept_name as hospitalName
pp.idcard like CONCAT('%',#{dto.searchValue},'%')
)
</if>
group by r.id
<if test="userId != null">
<!-- 权限 总测评师和测评师都是本部门及以下 -->
and u.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}
)
</if>
group by r.id desc
</select>
<!-- <resultMap id="ResultMap" type="com.ccsens.system.domain.vo.RmsVo$ReportScore">-->

6
ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/controller/scheduled/SyncHospitalData.java

@ -24,13 +24,13 @@ public class SyncHospitalData {
private DockService dockService;
@DataSource(value = DataSourceType.SLAVE)
@Scheduled(cron = "0 */1 * * * ?")
// @Scheduled(cron = "0 */1 * * * ?")
public void syncHospitalData() {
dockService.syncHospitalData();
}
@DataSource(value = DataSourceType.SLAVE)
@Scheduled(cron = "0 */1 * * * ?")
// @Scheduled(cron = "0 */1 * * * ?")
public void syncDeptData() {
try {
List<SysDept> 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<SysUser> sysUsers = dockService.syncUmsUserSlave();

Loading…
Cancel
Save