Commit 60036a5f authored by gaozhaochen's avatar gaozhaochen

更新 -> 纳里用户系统医院公众号

香山中医
上海市黄浦区精神卫生中心
上海市黄浦区妇幼保健所
上海市黄浦区顺昌医院
上海市黄浦区半淞园路街道社区卫生服务中心
parent ed8ac7bf
[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
...@@ -140,6 +140,10 @@ public interface SecurityConstants { ...@@ -140,6 +140,10 @@ public interface SecurityConstants {
* 医院代码 * 医院代码
*/ */
String HOSPITAL_CODE = "hospitalCode"; String HOSPITAL_CODE = "hospitalCode";
/**
* 香山中医用户信息
*/
String XSZY_USER_INFO = "xszyUserInfo";
/** /**
* 租户ID 字段 * 租户ID 字段
*/ */
......
...@@ -28,9 +28,14 @@ public enum LoginTypeEnum { ...@@ -28,9 +28,14 @@ public enum LoginTypeEnum {
SSB("ssb", "随申办token"), SSB("ssb", "随申办token"),
/** /**
* 公众号香山中医医院 * 纳里用户系统公众号
* 香山中医医院公众号
* 上海市黄浦区精神卫生中心
* 上海市黄浦区妇幼保健所
* 上海市黄浦区顺昌医院
* 上海市黄浦区半淞园路街道社区卫生服务中心
*/ */
WOA_XSZY("woa_xszy", "香山中医医院公众号"), WOA_NL("woa_nl", "纳里用户系统公众号登录"),
/** /**
* H5登录 * H5登录
......
...@@ -54,10 +54,6 @@ public class WoaUtil { ...@@ -54,10 +54,6 @@ public class WoaUtil {
* 响应头请求唯一ID * 响应头请求唯一ID
*/ */
private final static String RESPONSE_HEADER_REQUEST_ID = "X-Ca-RequestId"; 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 { ...@@ -78,8 +74,6 @@ public class WoaUtil {
if (response.isSuccess()) { if (response.isSuccess()) {
JSONResponseBean result = response.getJsonResponseBean(); JSONResponseBean result = response.getJsonResponseBean();
XSZYUserInfo xszyUserInfo = Convert.convert(XSZYUserInfo.class, result.getBody()); XSZYUserInfo xszyUserInfo = Convert.convert(XSZYUserInfo.class, result.getBody());
// 设置医院编码
xszyUserInfo.setHospitalCode(XSZY_HOSPITAL_CODE);
return xszyUserInfo; return xszyUserInfo;
} else { } else {
log.error("香山中医医院公众号token获取用户信息异常-1,requestId = [{}],caError = [{}],error = [{}]", response.getHeader(RESPONSE_HEADER_REQUEST_ID), response.getCaErrorMsg(), response.getErrorMessage()); log.error("香山中医医院公众号token获取用户信息异常-1,requestId = [{}],caError = [{}],error = [{}]", response.getHeader(RESPONSE_HEADER_REQUEST_ID), response.getCaErrorMsg(), response.getErrorMessage());
......
...@@ -54,8 +54,9 @@ public class SictUserAuthenticationConverter implements UserAuthenticationConver ...@@ -54,8 +54,9 @@ public class SictUserAuthenticationConverter implements UserAuthenticationConver
String openid = (String) map.get(SecurityConstants.DETAILS_OPENID); String openid = (String) map.get(SecurityConstants.DETAILS_OPENID);
String appid = (String) map.get(SecurityConstants.DETAILS_APPID); String appid = (String) map.get(SecurityConstants.DETAILS_APPID);
String hospitalCode = (String) map.get(SecurityConstants.HOSPITAL_CODE); 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 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 new UsernamePasswordAuthenticationToken(user, N_A, authorities);
} }
return null; return null;
......
...@@ -42,6 +42,10 @@ public class SictUser extends User { ...@@ -42,6 +42,10 @@ public class SictUser extends User {
@Setter @Setter
private String hospitalCode; private String hospitalCode;
@Getter
@Setter
private String xszyUserInfo;
@Getter @Getter
@Setter @Setter
private transient String token; private transient String token;
...@@ -77,12 +81,14 @@ public class SictUser extends User { ...@@ -77,12 +81,14 @@ public class SictUser extends User {
boolean accountNonExpired, boolean accountNonExpired,
boolean credentialsNonExpired, boolean credentialsNonExpired,
boolean accountNonLocked, boolean accountNonLocked,
Collection<? extends GrantedAuthority> authorities) { Collection<? extends GrantedAuthority> authorities,
String xszyUserInfo) {
super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
this.id = id; this.id = id;
this.phone = phone; this.phone = phone;
this.openId = openId; this.openId = openId;
this.appId = appId; this.appId = appId;
this.hospitalCode = hospitalCode; this.hospitalCode = hospitalCode;
this.xszyUserInfo = xszyUserInfo;
} }
} }
...@@ -134,7 +134,7 @@ public class SictUserDetailsServiceImpl implements SictUserDetailsService { ...@@ -134,7 +134,7 @@ public class SictUserDetailsServiceImpl implements SictUserDetailsService {
// 登录失败5次锁定半小时 // 登录失败5次锁定半小时
boolean nonLockd = !Constant.BYTE_YES.equals(user.getStatus()); boolean nonLockd = !Constant.BYTE_YES.equals(user.getStatus());
return new SictUser(user.getId(), user.getPhone(), info.getOpenId(), info.getAppId(), info.getHospitalCode(), userName, password, enabled, 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());
} }
......
...@@ -180,6 +180,7 @@ public class SecurityUtils { ...@@ -180,6 +180,7 @@ public class SecurityUtils {
current.setAppId(user.getAppId()); current.setAppId(user.getAppId());
current.setPhone(user.getPhone()); current.setPhone(user.getPhone());
current.setHospitalCode(user.getHospitalCode()); current.setHospitalCode(user.getHospitalCode());
current.setXszyUserInfo(user.getXszyUserInfo());
} }
current.setToken(token); current.setToken(token);
return current; return current;
......
...@@ -30,5 +30,9 @@ public class CurrentUser implements Serializable { ...@@ -30,5 +30,9 @@ public class CurrentUser implements Serializable {
* sict_admin * sict_admin
*/ */
private String adminStr; private String adminStr;
/**
* 香山中医公众号用户信息
*/
private String xszyUserInfo;
} }
...@@ -19,6 +19,11 @@ public class UserInfo { ...@@ -19,6 +19,11 @@ public class UserInfo {
*/ */
private String hospitalCode; private String hospitalCode;
/**
* 香山中医公众号用户信息
*/
private String xszyUserInfo;
/** /**
* 用户基本信息 * 用户基本信息
*/ */
......
...@@ -90,7 +90,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs ...@@ -90,7 +90,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
return this.getBySSBToken(split[0], split[2]); return this.getBySSBToken(split[0], split[2]);
// 香山中医院公众号登陆 // 香山中医院公众号登陆
// inStr = 公众号标识符@公众号appId@token@hospitalCode // inStr = 公众号标识符@公众号appId@token@hospitalCode
case WOA_XSZY: case WOA_NL:
return this.getByXszyWoa(split); return this.getByXszyWoa(split);
// 微信登录 // 微信登录
default: default:
...@@ -109,9 +109,11 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs ...@@ -109,9 +109,11 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
private UserInfo getByXszyWoa(String[] infoArray) { private UserInfo getByXszyWoa(String[] infoArray) {
String source = infoArray[0]; String source = infoArray[0];
String token = infoArray[2]; String token = infoArray[2];
String hospitalCode = infoArray[3];
XSZYUserInfo xszyUserInfo = WoaUtil.getXszyUserInfo(token); XSZYUserInfo xszyUserInfo = WoaUtil.getXszyUserInfo(token);
log.error("woa.login.xszyUser = {}", JSONUtil.toJsonStr(xszyUserInfo)); String xszyUserInfoStr = JSONUtil.toJsonStr(xszyUserInfo);
log.error("woa.login.xszyUser = {}", xszyUserInfoStr);
if (ObjectUtil.isNull(xszyUserInfo) || StrUtil.isBlank(xszyUserInfo.getUserId())) { if (ObjectUtil.isNull(xszyUserInfo) || StrUtil.isBlank(xszyUserInfo.getUserId())) {
return null; return null;
} }
...@@ -149,8 +151,9 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs ...@@ -149,8 +151,9 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
info.setSysUserBase(user); info.setSysUserBase(user);
info.setOpenId(xszyUserInfo.getUserId()); info.setOpenId(xszyUserInfo.getUserId());
// 设置香山中医医院医疗机构代码,后续查询只显示当前医疗机构下的查询结果 // 设置医疗机构代码,后续查询只显示当前医疗机构下的查询结果
info.setHospitalCode(xszyUserInfo.getHospitalCode()); info.setHospitalCode(hospitalCode);
info.setXszyUserInfo(xszyUserInfoStr);
return info; return info;
} }
......
...@@ -11,12 +11,14 @@ import cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService; ...@@ -11,12 +11,14 @@ import cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService;
import cn.sh.stc.sict.theme.hphy.model.HpDeptInfo; import cn.sh.stc.sict.theme.hphy.model.HpDeptInfo;
import cn.sh.stc.sict.theme.hphy.service.HpDeptInfoService; import cn.sh.stc.sict.theme.hphy.service.HpDeptInfoService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.api.ApiController; import com.baomidou.mybatisplus.extension.api.ApiController;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date; import java.util.Date;
...@@ -32,6 +34,7 @@ import java.util.List; ...@@ -32,6 +34,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/hphy/c/dept") @RequestMapping("/hphy/c/dept")
@AllArgsConstructor @AllArgsConstructor
@Slf4j
public class HpDeptInfoController extends ApiController { public class HpDeptInfoController extends ApiController {
/** /**
* 服务对象 * 服务对象
...@@ -74,11 +77,14 @@ public class HpDeptInfoController extends ApiController { ...@@ -74,11 +77,14 @@ public class HpDeptInfoController extends ApiController {
@RequestParam(value = "oneDeptCode", required = false) String oneDeptCode, @RequestParam(value = "oneDeptCode", required = false) String oneDeptCode,
@RequestParam(value = "dept", required = false) String deptCode, @RequestParam(value = "dept", required = false) String deptCode,
@RequestParam(value = "flag", required = false, defaultValue = Constant.STRING_NO) Byte flag) { @RequestParam(value = "flag", required = false, defaultValue = Constant.STRING_NO) Byte flag) {
LambdaQueryWrapper<HpgpDepartmentRank> wrapper = Wrappers.lambdaQuery(); QueryWrapper<HpgpDepartmentRank> wrapper = Wrappers.emptyWrapper();
wrapper.eq(StrUtil.isNotEmpty(hospCode), HpgpDepartmentRank::getHospitalCode, hospCode) LambdaQueryWrapper<HpgpDepartmentRank> 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(oneDeptCode), HpgpDepartmentRank::getOneDeptCode, oneDeptCode)
.eq(StrUtil.isNotEmpty(deptCode), HpgpDepartmentRank::getDeptCode, deptCode); .eq(StrUtil.isNotEmpty(deptCode), HpgpDepartmentRank::getDeptCode, deptCode);
List<HpgpDepartmentRank> deptList = hpgpDepartmentRankService.list(wrapper);
List<HpgpDepartmentRank> deptList = hpgpDepartmentRankService.list(queryWrapper);
log.error("医院科室查询结果deptList = {}", deptList);
deptList.forEach(dept -> { deptList.forEach(dept -> {
if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) { if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) {
return; return;
......
...@@ -161,9 +161,9 @@ public class HphyPatientBaseController { ...@@ -161,9 +161,9 @@ public class HphyPatientBaseController {
base = hphyPatientBaseService.saveSSbInfo(current, userInfo, cardList); base = hphyPatientBaseService.saveSSbInfo(current, userInfo, cardList);
hpPatientCardService.save(base, cardList); hpPatientCardService.save(base, cardList);
} }
// 香山中医医院公众号 // 纳里用户系统公众号
if (LoginTypeEnum.WOA_XSZY.getType().equals(source)) { if (LoginTypeEnum.WOA_NL.getType().equals(source)) {
XSZYUserInfo xszyUserInfo = WoaUtil.getXszyUserInfo(token); XSZYUserInfo xszyUserInfo = JSONUtil.toBean(current.getXszyUserInfo(), XSZYUserInfo.class);
log.error("woaXszyUser = {}", xszyUserInfo); log.error("woaXszyUser = {}", xszyUserInfo);
base = hphyPatientBaseService.saveWoaXszyInfo(current, xszyUserInfo); base = hphyPatientBaseService.saveWoaXszyInfo(current, xszyUserInfo);
} }
......
...@@ -19,6 +19,8 @@ import cn.sh.stc.sict.theme.hphy.wd.DoctInfo; ...@@ -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.HosInfo;
import cn.sh.stc.sict.theme.hphy.wd.WanDaHttpUtil; import cn.sh.stc.sict.theme.hphy.wd.WanDaHttpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFactory; import ma.glasnost.orika.MapperFactory;
...@@ -113,9 +115,11 @@ public class RefreshJob { ...@@ -113,9 +115,11 @@ public class RefreshJob {
* 每天中午12点,晚上12点,统计号源信息 * 每天中午12点,晚上12点,统计号源信息
*/ */
// @Scheduled(cron = "0 50 12 * * ? ") // @Scheduled(cron = "0 50 12 * * ? ")
@Scheduled(cron = "0 0 0,12 * * ? ") @Scheduled(cron = "0 37 9 * * ? ")
public void statisticRankDeptResourceInfo() { public void statisticRankDeptResourceInfo() {
List<HpgpDepartmentRank> deptList = hpgpDepartmentRankService.list(); QueryWrapper<HpgpDepartmentRank> wrapper = Wrappers.emptyWrapper();
LambdaQueryWrapper<HpgpDepartmentRank> lambda = wrapper.select("DISTINCT standard_dept,hospital_code,hospital_name,one_dept_code,dept_code,dept_name").lambda();
List<HpgpDepartmentRank> deptList = hpgpDepartmentRankService.list(lambda);
deptList.forEach(dept -> { deptList.forEach(dept -> {
if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) { if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) {
return; return;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment