Commit 4d8a93f1 authored by fshenye's avatar fshenye

1. 预约接口兼容门诊预约,医生预约

2. bugfix:查询不到号源时,直接返回空,不要去查询门诊号源
3. bugfix:查询科室时,limit 1
parent c291d99d
package cn.sh.stc.sict.theme.hphy.controller.mp;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.net.Ipv4Util;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.sh.stc.sict.cloud.common.core.constant.Constant;
import cn.sh.stc.sict.cloud.common.core.util.R;
import cn.sh.stc.sict.cloud.common.core.util.WebUtils;
import cn.sh.stc.sict.cloud.common.security.util.SecurityUtils;
import cn.sh.stc.sict.cloud.upms.dto.CurrentUser;
import cn.sh.stc.sict.theme.hphy.constant.PatientConstant;
import cn.sh.stc.sict.theme.hphy.model.HpAppointment;
import cn.sh.stc.sict.theme.hphy.model.HpDocInfo;
import cn.sh.stc.sict.theme.hphy.model.HpHosInfo;
import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase;
import cn.sh.stc.sict.theme.hphy.service.HpAppointmentService;
import cn.sh.stc.sict.theme.hphy.service.HpDocInfoService;
import cn.sh.stc.sict.theme.hphy.service.HpHosInfoService;
import cn.sh.stc.sict.theme.hphy.service.HphyPatientBaseService;
import cn.sh.stc.sict.theme.hphy.model.*;
import cn.sh.stc.sict.theme.hphy.service.*;
import cn.sh.stc.sict.theme.hphy.wd.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -45,6 +41,7 @@ public class AppointmentController {
private HpDocInfoService hpDocInfoService;
private HphyPatientBaseService hphyPatientBaseService;
private HpHosInfoService hosInfoService;
private HpDeptInfoService hpDeptInfoService;
@ApiOperation("预约须知")
@GetMapping("/app/rule")
......@@ -56,16 +53,21 @@ public class AppointmentController {
@ApiOperation("预约")
@PostMapping("/app")
public R appointment(@RequestBody OrderInfo order) throws Exception {
log.error("预约 order = {}", JSONUtil.toJsonStr(order));
CurrentUser current = SecurityUtils.getCurrentUser();
HpAppointment app = new HpAppointment();
if (StrUtil.isBlank(current.getOpenId())) {
return new R().error("患者信息异常!");
}
if (StrUtil.isBlank(order.getHosOrgCode())) {
return new R().error("预约医院信息不可为空!");
}
if (StrUtil.isBlank(order.getDoctorId())) {
if (WanDaConstant.ORDER_TYPE_OUTP.equals(order.getOrderType()) && StrUtil.isBlank(order.getDoctorId())) {
return new R().error("预约医生信息不可为空!");
}
if (WanDaConstant.ORDER_TYPE_CLINC.equals(order.getOrderType()) && StrUtil.isBlank(order.getDeptId())) {
return new R().error("预约门诊信息不可为空!");
}
if (StrUtil.isBlank(order.getScheduleId()) || StrUtil.isBlank(order.getNumSourceId())) {
return new R().error("预约排班号源信息不可为空!");
}
......@@ -77,14 +79,32 @@ public class AppointmentController {
if (null == patient) {
return new R().error("未找到患者信息!");
}
HpDocInfo docInfo = hpDocInfoService.getById(order.getDoctorId());
if (null == docInfo) {
return new R().error("未找到医生信息!");
if(WanDaConstant.ORDER_TYPE_OUTP.equals(order.getOrderType())){
HpDocInfo docInfo = hpDocInfoService.getById(order.getDoctorId());
if (null == docInfo) {
return new R().error("未找到医生信息!");
}
order.setOneDeptCode(docInfo.getOneDeptCode());
order.setDeptCode(docInfo.getDeptCode());
order.setResourceCode(docInfo.getResourceCode());
app.setDoctorId(docInfo.getId().toString());
app.setResourceCertId(docInfo.getPersonId());
app.setHosOrgName(docInfo.getHosName());
app.setDeptName(docInfo.getDeptName());
app.setResourceName(docInfo.getResourceName());
}else{
HpDeptInfo deptInfo = hpDeptInfoService.getById(order.getDeptId());
if (null == deptInfo) {
return new R().error("未找到门诊信息!");
}
order.setOneDeptCode(deptInfo.getOneDeptCode());
order.setDeptCode(deptInfo.getDeptCode());
order.setResourceCode(deptInfo.getDeptCode());
app.setHosOrgName(deptInfo.getHosName());
app.setDeptName(deptInfo.getDeptName());
app.setResourceName(deptInfo.getDeptName());
}
order.setOneDeptCode(docInfo.getOneDeptCode());
order.setDeptCode(docInfo.getDeptCode());
order.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
order.setResourceCode(docInfo.getResourceCode());
// order.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
order.setChannelCode(WanDaConstant.CHANNEL_CODE_OTHER);
order.setPayMode(WanDaConstant.PAY_MODE_HOSP);
order.setUserCardType(WanDaConstant.USER_CARD_TYPE_ID);
......@@ -102,29 +122,25 @@ public class AppointmentController {
order.setChannelName(WanDaConstant.CHANNEL_NAME);
order.setNumSourceFrom(WanDaConstant.NUM_SOURCE_FROM);
order.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL);
if (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType())){
if (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType())) {
order.setMediCardId(patient.getMediCardId());
order.setMediCardType(patient.getMediCardType());
}
order.setUserBD(DateUtil.format(IdcardUtil.getBirthDate(patient.getCertId()), DatePattern.NORM_DATE_PATTERN));
AppResult result = WanDaHttpUtil.submitOrderByUserInfo(order);
if (null != result) {
MapperFactory factory = new DefaultMapperFactory.Builder().build();
HpAppointment app = factory.getMapperFacade().map(order, HpAppointment.class);
// MapperFactory factory = new DefaultMapperFactory.Builder().build();
// HpAppointment app = factory.getMapperFacade().map(order, HpAppointment.class);
BeanUtil.copyProperties(order, app);
app.setOrderId(result.getOrderId());
app.setPatientId(patient.getId().toString());
app.setDoctorId(docInfo.getId().toString());
app.setResourceCertId(docInfo.getPersonId());
app.setNumSourceDetailId(result.getNumSourceDetailId());
app.setNumPassword(result.getNumPassword());
app.setRoom(result.getRoom());
app.setHosNumSourceId(result.getHosNumSourceId());
app.setStatus(Constant.STRING_NO);
app.setHosOrgName(docInfo.getHosName());
app.setDeptName(docInfo.getDeptName());
app.setOrderNumType(order.getOrderNumType());
app.setPatientName(patient.getName());
app.setResourceName(docInfo.getResourceName());
app.setStatus(Constant.STRING_NO);
app.setEvaStatus(Constant.BYTE_NO);
hpAppointmentService.save(app);
......@@ -183,7 +199,7 @@ public class AppointmentController {
@ApiOperation("预约详情")
@GetMapping("/app/info")
public R appInfo(@RequestParam("appId")String appId) {
public R appInfo(@RequestParam("appId") String appId) {
HpAppointment app = hpAppointmentService.getById(appId);
return new R(app);
}
......
......@@ -74,22 +74,22 @@ public class WDController {
List<NumSourceInfo> list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo);
if (CollUtil.isNotEmpty(list)) {
return R.builder().code(Constant.BYTE_YES).data(list).bizCode(Constant.INT_NO).build();
}
DeptInfo deptInfo = new DeptInfo();
deptInfo.setHosOrgCode(numSourceInfo.getHosOrgCode());
deptInfo.setOneDeptCode(numSourceInfo.getOneDeptCode());
deptInfo.setDeptCode(numSourceInfo.getDeptCode());
List<OutPatInfo> outPatInfo = WanDaHttpUtil.getResourceOutPatInfo(deptInfo);
if (CollUtil.isNotEmpty(outPatInfo)) {
numSourceInfo.setOrderType(WanDaConstant.ORDER_TYPE_CLINC);
numSourceInfo.setResourceCode(outPatInfo.get(0).getResourceCode());
list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo);
return new R(list);
}
// if (CollUtil.isNotEmpty(list)) {
// return R.builder().code(Constant.BYTE_YES).data(list).bizCode(Constant.INT_NO).build();
// }
//
// DeptInfo deptInfo = new DeptInfo();
// deptInfo.setHosOrgCode(numSourceInfo.getHosOrgCode());
// deptInfo.setOneDeptCode(numSourceInfo.getOneDeptCode());
// deptInfo.setDeptCode(numSourceInfo.getDeptCode());
// List<OutPatInfo> outPatInfo = WanDaHttpUtil.getResourceOutPatInfo(deptInfo);
// if (CollUtil.isNotEmpty(outPatInfo)) {
// numSourceInfo.setOrderType(WanDaConstant.ORDER_TYPE_CLINC);
// numSourceInfo.setResourceCode(outPatInfo.get(0).getResourceCode());
// list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo);
//
// return new R(list);
// }
return new R().success(list);
}
......
......@@ -44,6 +44,7 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI
.and(i -> i.eq(HpDeptInfo::getOneDeptCode, deptCode)
.or().eq(HpDeptInfo::getDeptCode, deptCode))
.orderByDesc(HpDeptInfo::getDeptLevel)
.last("limit 1")
);
if (deptInfo == null){
log.error("根据医院编码:{} 和科室编码:{} 未查出科室信息", hospitalCode, deptCode);
......
......@@ -7,6 +7,7 @@ import lombok.Data;
@XStreamAlias("OrderInfo")
public class OrderInfo {
private String doctorId;
private String deptId;
private String hosOrgCode;
private String oneDeptCode;
private String deptCode;
......
......@@ -3,7 +3,7 @@ package cn.sh.stc.sict.theme.hphy.wd;
public class WanDaConstant {
/**
* 预约类型:医生
* 预约类型:1-医生 2-门诊
*/
public static final String ORDER_TYPE_OUTP = "1";
public static final String ORDER_TYPE_CLINC = "2";
......
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