diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000000000000000000000000000000000000..1fc476f46e52fa03208de46d9b1d9cd78cd3d565 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,8 @@ +[V1.2.0] 2022.11.14 +数据库: +1.新增hpgp_ks_hot表 +2.hpgp_department_rank表新增rank_score = 0的全部医院数据 +功能: +1.从公众号进入时,在李处理的一年内历史就诊记录的表中查询“公众号医院”的三个历史科室展示; +2.从“hpgp_ks_hot”表中查询展示“公众号医院”的科室(热门科室由医院提供,目前暂时用门诊量最大的三个科室代替)为了区分全区和公众号,新增了“gzh”字段;全区的“gzh”字段为“ALL”,公众号的“gzh”字段为“公众号医院编码” +3.在科室排名表(hpgp_department_rank_1028)中新增了全部医院/科室信息,其rank_score标为“0”,与全区排名科室做区分;按照standard_dept(=选择/机器人推荐的科室)、hospital_code(=公众号医院)、rank_score(=0)查询科室,选择有号的进行展示(一个医院中有多个同名科室,如果有号的超过3个那也只展示3个) \ No newline at end of file diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/SecurityConstants.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/SecurityConstants.java index ff18d8b7c0e690741e4c09d224692299256be6aa..7e20491eebfb8cb7221213c19252e9b45b0a4151 100644 --- a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/SecurityConstants.java +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/SecurityConstants.java @@ -140,6 +140,10 @@ public interface SecurityConstants { * 医院代码 */ String HOSPITAL_CODE = "hospitalCode"; + /** + * 香山中医用户信息 + */ + String XSZY_USER_INFO = "xszyUserInfo"; /** * 租户ID 字段 */ diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java index 7b328989475c66fcc98f1a895db5f60498ac38d3..2a07903375d0e82e4e58fb3ccef0a58e5459f916 100644 --- a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java @@ -28,9 +28,14 @@ public enum LoginTypeEnum { SSB("ssb", "随申办token"), /** - * 公众号香山中医医院 + * 纳里用户系统公众号 + * 香山中医医院公众号 + * 上海市黄浦区精神卫生中心 + * 上海市黄浦区妇幼保健所 + * 上海市黄浦区顺昌医院 + * 上海市黄浦区半淞园路街道社区卫生服务中心 */ - WOA_XSZY("woa_xszy", "香山中医医院公众号"), + WOA_NL("woa_nl", "纳里用户系统公众号登录"), /** * H5登录 diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java index 71432e27540a744ecf207a82d7009b8b6b23406e..5a6e808dcbf89915a349faebb282e9ff7e05274d 100644 --- a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java @@ -54,10 +54,6 @@ public class WoaUtil { * 响应头请求唯一ID */ private final static String RESPONSE_HEADER_REQUEST_ID = "X-Ca-RequestId"; - /** - * 香山中医医院编码 - */ - private final static String XSZY_HOSPITAL_CODE = "42502905200"; /** * 获取用户信息 @@ -78,8 +74,6 @@ public class WoaUtil { if (response.isSuccess()) { JSONResponseBean result = response.getJsonResponseBean(); XSZYUserInfo xszyUserInfo = Convert.convert(XSZYUserInfo.class, result.getBody()); - // 设置医院编码 - xszyUserInfo.setHospitalCode(XSZY_HOSPITAL_CODE); return xszyUserInfo; } else { log.error("香山中医医院公众号token获取用户信息异常-1,requestId = [{}],caError = [{}],error = [{}]", response.getHeader(RESPONSE_HEADER_REQUEST_ID), response.getCaErrorMsg(), response.getErrorMessage()); diff --git a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/component/SictUserAuthenticationConverter.java b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/component/SictUserAuthenticationConverter.java index c773919a0f43efdc4aaf8154bc26211d453ddf30..592a0b4a97d07cb75b94ba7a95407deaa9715e9e 100644 --- a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/component/SictUserAuthenticationConverter.java +++ b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/component/SictUserAuthenticationConverter.java @@ -54,8 +54,9 @@ public class SictUserAuthenticationConverter implements UserAuthenticationConver String openid = (String) map.get(SecurityConstants.DETAILS_OPENID); String appid = (String) map.get(SecurityConstants.DETAILS_APPID); String hospitalCode = (String) map.get(SecurityConstants.HOSPITAL_CODE); + String xszyUserInfo = (String) map.get(SecurityConstants.XSZY_USER_INFO); SictUser user = new SictUser(id, "", openid, appid, hospitalCode, username, N_A, true - , true, true, true, authorities); + , true, true, true, authorities, xszyUserInfo); return new UsernamePasswordAuthenticationToken(user, N_A, authorities); } return null; diff --git a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUser.java b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUser.java index e0f1dd06104ac809d801425d4af8a6504d815de0..b3356e1dfc8a269ab6846a1343250306f6f4d718 100644 --- a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUser.java +++ b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUser.java @@ -42,6 +42,10 @@ public class SictUser extends User { @Setter private String hospitalCode; + @Getter + @Setter + private String xszyUserInfo; + @Getter @Setter private transient String token; @@ -77,12 +81,14 @@ public class SictUser extends User { boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, - Collection authorities) { + Collection authorities, + String xszyUserInfo) { super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); this.id = id; this.phone = phone; this.openId = openId; this.appId = appId; this.hospitalCode = hospitalCode; + this.xszyUserInfo = xszyUserInfo; } } diff --git a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUserDetailsServiceImpl.java b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUserDetailsServiceImpl.java index 1bf5b4c6f4e325530f9168d1e8473c834dc8a5f3..def561323f01bce82d734288133ee77eae858a8e 100644 --- a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUserDetailsServiceImpl.java +++ b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUserDetailsServiceImpl.java @@ -134,7 +134,7 @@ public class SictUserDetailsServiceImpl implements SictUserDetailsService { // 登录失败5次锁定半小时 boolean nonLockd = !Constant.BYTE_YES.equals(user.getStatus()); return new SictUser(user.getId(), user.getPhone(), info.getOpenId(), info.getAppId(), info.getHospitalCode(), userName, password, enabled, - true, true, nonLockd, authorities); + true, true, nonLockd, authorities, info.getXszyUserInfo()); } diff --git a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/util/SecurityUtils.java b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/util/SecurityUtils.java index fcc3f5c2ce0c48e8c20b5a97c0565ba701473113..a8d7c86656bedd29036bcb8deb1f90e8e0e3e8dc 100644 --- a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/util/SecurityUtils.java +++ b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/util/SecurityUtils.java @@ -180,6 +180,7 @@ public class SecurityUtils { current.setAppId(user.getAppId()); current.setPhone(user.getPhone()); current.setHospitalCode(user.getHospitalCode()); + current.setXszyUserInfo(user.getXszyUserInfo()); } current.setToken(token); return current; diff --git a/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/CurrentUser.java b/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/CurrentUser.java index 27ccefceb9c83339a55fb5411abe1170cac8b85c..16ff7456500bfb82a6a46d2b182f760ce1c1425d 100644 --- a/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/CurrentUser.java +++ b/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/CurrentUser.java @@ -30,5 +30,9 @@ public class CurrentUser implements Serializable { * sict_admin */ private String adminStr; + /** + * 香山中医公众号用户信息 + */ + private String xszyUserInfo; } diff --git a/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/UserInfo.java b/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/UserInfo.java index 64834bc89d5312c3ea24867a0498421d48b79ba3..73728e2587a41d1cef1896b1c6bf7c28d797cff7 100644 --- a/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/UserInfo.java +++ b/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/UserInfo.java @@ -19,6 +19,11 @@ public class UserInfo { */ private String hospitalCode; + /** + * 香山中医公众号用户信息 + */ + private String xszyUserInfo; + /** * 用户基本信息 */ diff --git a/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java b/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java index ca00fe857c9f4ff96907b27b9de87e8716a826b0..e7c8ddf62e9582f442f9d7a7972a83fa203faef7 100644 --- a/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java +++ b/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java @@ -90,7 +90,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl wrapper = Wrappers.lambdaQuery(); - wrapper.eq(StrUtil.isNotEmpty(hospCode), HpgpDepartmentRank::getHospitalCode, hospCode) + QueryWrapper wrapper = Wrappers.emptyWrapper(); + LambdaQueryWrapper queryWrapper = wrapper.select("DISTINCT standard_dept,hospital_code,hospital_name,one_dept_code,dept_code,dept_name").lambda(); + queryWrapper.eq(StrUtil.isNotEmpty(hospCode), HpgpDepartmentRank::getHospitalCode, hospCode) .eq(StrUtil.isNotEmpty(oneDeptCode), HpgpDepartmentRank::getOneDeptCode, oneDeptCode) .eq(StrUtil.isNotEmpty(deptCode), HpgpDepartmentRank::getDeptCode, deptCode); - List deptList = hpgpDepartmentRankService.list(wrapper); + + List deptList = hpgpDepartmentRankService.list(queryWrapper); + log.error("医院科室查询结果deptList = {}", deptList); deptList.forEach(dept -> { if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) { return; diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java index e8ca6aeb3799b60895c3b6b499bf6950d5765a31..bc2dbadf0adda504f8024ac9f9341417cf4c45f3 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java @@ -161,9 +161,9 @@ public class HphyPatientBaseController { base = hphyPatientBaseService.saveSSbInfo(current, userInfo, cardList); hpPatientCardService.save(base, cardList); } - // 香山中医医院公众号 - if (LoginTypeEnum.WOA_XSZY.getType().equals(source)) { - XSZYUserInfo xszyUserInfo = WoaUtil.getXszyUserInfo(token); + // 纳里用户系统公众号 + if (LoginTypeEnum.WOA_NL.getType().equals(source)) { + XSZYUserInfo xszyUserInfo = JSONUtil.toBean(current.getXszyUserInfo(), XSZYUserInfo.class); log.error("woaXszyUser = {}", xszyUserInfo); base = hphyPatientBaseService.saveWoaXszyInfo(current, xszyUserInfo); } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java index 7ca4c31f26e37c1903c034ab9f3be0b0d3801245..0132f3c867b8d7e25b4b153634843520b54abf2d 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java @@ -19,6 +19,8 @@ import cn.sh.stc.sict.theme.hphy.wd.DoctInfo; import cn.sh.stc.sict.theme.hphy.wd.HosInfo; import cn.sh.stc.sict.theme.hphy.wd.WanDaHttpUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import ma.glasnost.orika.MapperFactory; @@ -113,9 +115,11 @@ public class RefreshJob { * 每天中午12点,晚上12点,统计号源信息 */ // @Scheduled(cron = "0 50 12 * * ? ") - @Scheduled(cron = "0 0 0,12 * * ? ") + @Scheduled(cron = "0 37 9 * * ? ") public void statisticRankDeptResourceInfo() { - List deptList = hpgpDepartmentRankService.list(); + QueryWrapper wrapper = Wrappers.emptyWrapper(); + LambdaQueryWrapper lambda = wrapper.select("DISTINCT standard_dept,hospital_code,hospital_name,one_dept_code,dept_code,dept_name").lambda(); + List deptList = hpgpDepartmentRankService.list(lambda); deptList.forEach(dept -> { if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) { return;