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 {
* 医院代码
*/
String HOSPITAL_CODE = "hospitalCode";
/**
* 香山中医用户信息
*/
String XSZY_USER_INFO = "xszyUserInfo";
/**
* 租户ID 字段
*/
......
......@@ -28,9 +28,14 @@ public enum LoginTypeEnum {
SSB("ssb", "随申办token"),
/**
* 公众号香山中医医院
* 纳里用户系统公众号
* 香山中医医院公众号
* 上海市黄浦区精神卫生中心
* 上海市黄浦区妇幼保健所
* 上海市黄浦区顺昌医院
* 上海市黄浦区半淞园路街道社区卫生服务中心
*/
WOA_XSZY("woa_xszy", "香山中医医院公众号"),
WOA_NL("woa_nl", "纳里用户系统公众号登录"),
/**
* H5登录
......
......@@ -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());
......
......@@ -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;
......
......@@ -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<? extends GrantedAuthority> authorities) {
Collection<? extends GrantedAuthority> 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;
}
}
......@@ -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());
}
......
......@@ -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;
......
......@@ -30,5 +30,9 @@ public class CurrentUser implements Serializable {
* sict_admin
*/
private String adminStr;
/**
* 香山中医公众号用户信息
*/
private String xszyUserInfo;
}
......@@ -19,6 +19,11 @@ public class UserInfo {
*/
private String hospitalCode;
/**
* 香山中医公众号用户信息
*/
private String xszyUserInfo;
/**
* 用户基本信息
*/
......
......@@ -90,7 +90,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
return this.getBySSBToken(split[0], split[2]);
// 香山中医院公众号登陆
// inStr = 公众号标识符@公众号appId@token@hospitalCode
case WOA_XSZY:
case WOA_NL:
return this.getByXszyWoa(split);
// 微信登录
default:
......@@ -109,9 +109,11 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
private UserInfo getByXszyWoa(String[] infoArray) {
String source = infoArray[0];
String token = infoArray[2];
String hospitalCode = infoArray[3];
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())) {
return null;
}
......@@ -149,8 +151,9 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
info.setSysUserBase(user);
info.setOpenId(xszyUserInfo.getUserId());
// 设置香山中医医院医疗机构代码,后续查询只显示当前医疗机构下的查询结果
info.setHospitalCode(xszyUserInfo.getHospitalCode());
// 设置医疗机构代码,后续查询只显示当前医疗机构下的查询结果
info.setHospitalCode(hospitalCode);
info.setXszyUserInfo(xszyUserInfoStr);
return info;
}
......
......@@ -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.service.HpDeptInfoService;
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.extension.api.ApiController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
......@@ -32,6 +34,7 @@ import java.util.List;
@RestController
@RequestMapping("/hphy/c/dept")
@AllArgsConstructor
@Slf4j
public class HpDeptInfoController extends ApiController {
/**
* 服务对象
......@@ -74,11 +77,14 @@ public class HpDeptInfoController extends ApiController {
@RequestParam(value = "oneDeptCode", required = false) String oneDeptCode,
@RequestParam(value = "dept", required = false) String deptCode,
@RequestParam(value = "flag", required = false, defaultValue = Constant.STRING_NO) Byte flag) {
LambdaQueryWrapper<HpgpDepartmentRank> wrapper = Wrappers.lambdaQuery();
wrapper.eq(StrUtil.isNotEmpty(hospCode), HpgpDepartmentRank::getHospitalCode, hospCode)
QueryWrapper<HpgpDepartmentRank> wrapper = Wrappers.emptyWrapper();
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(deptCode), HpgpDepartmentRank::getDeptCode, deptCode);
List<HpgpDepartmentRank> deptList = hpgpDepartmentRankService.list(wrapper);
List<HpgpDepartmentRank> deptList = hpgpDepartmentRankService.list(queryWrapper);
log.error("医院科室查询结果deptList = {}", deptList);
deptList.forEach(dept -> {
if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) {
return;
......
......@@ -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);
}
......
......@@ -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<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 -> {
if (StrUtil.isEmpty(dept.getOneDeptCode()) || StrUtil.isEmpty(dept.getDeptCode())) {
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