提交 913f0850 authored 作者: 杨凯's avatar 杨凯

feat:家庭医生初始化

上级 e11965b6
...@@ -23,6 +23,9 @@ public class RequestGetScheduleForWeekDTO { ...@@ -23,6 +23,9 @@ public class RequestGetScheduleForWeekDTO {
@ApiModelProperty("第几周") @ApiModelProperty("第几周")
private Integer week; private Integer week;
@ApiModelProperty("更多周")
private Integer[] weeks;
@ApiModelProperty("医生id") @ApiModelProperty("医生id")
private String doctorId; private String doctorId;
......
package com.ebaiyihui.family.doctor.common.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName: RequestUpdateScheduleStatusDTO
* @Author:yanliang
* @Date:2024/3/25 11:21
* @Description
*/
@Data
public class RequestUpdateScheduleStatusDTO {
@ApiModelProperty("排班id")
private Long id;
@ApiModelProperty("停诊复诊:正常—— 1 停诊—— -1")
private Integer scheduleStatus;
@ApiModelProperty("需要停诊的日期 yyyy-MM-dd")
private String scheduleTime;
@ApiModelProperty("是否开启循环排班 1开启 -1关闭")
private Integer isCycleSchedule;
}
...@@ -2,6 +2,7 @@ package com.ebaiyihui.family.doctor.server.controller; ...@@ -2,6 +2,7 @@ package com.ebaiyihui.family.doctor.server.controller;
import com.ebaiyihui.family.doctor.common.dto.InsertScheduleRecordReqDTO; import com.ebaiyihui.family.doctor.common.dto.InsertScheduleRecordReqDTO;
import com.ebaiyihui.family.doctor.common.dto.RequestGetScheduleForWeekDTO; import com.ebaiyihui.family.doctor.common.dto.RequestGetScheduleForWeekDTO;
import com.ebaiyihui.family.doctor.common.dto.RequestUpdateScheduleStatusDTO;
import com.ebaiyihui.family.doctor.common.dto.ScheduleForWeekReqDTO; import com.ebaiyihui.family.doctor.common.dto.ScheduleForWeekReqDTO;
import com.ebaiyihui.family.doctor.common.vo.ResponseGetScheduleForWeekVo; import com.ebaiyihui.family.doctor.common.vo.ResponseGetScheduleForWeekVo;
import com.ebaiyihui.family.doctor.common.vo.ScheduleForWeekResVo; import com.ebaiyihui.family.doctor.common.vo.ScheduleForWeekResVo;
...@@ -56,4 +57,10 @@ public class ScheduleRecordController { ...@@ -56,4 +57,10 @@ public class ScheduleRecordController {
return scheduleRecordService.scheduleForWeekNew(scheduleForWeekReqDTO); return scheduleRecordService.scheduleForWeekNew(scheduleForWeekReqDTO);
} }
@RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
@ApiOperation("更新或者删除排班")
public BaseResponse<String> updateStatus(@RequestBody RequestUpdateScheduleStatusDTO updateScheduleStatusDTO) {
return scheduleRecordService.updateStatus(updateScheduleStatusDTO);
}
} }
...@@ -2,6 +2,7 @@ package com.ebaiyihui.family.doctor.server.service; ...@@ -2,6 +2,7 @@ package com.ebaiyihui.family.doctor.server.service;
import com.ebaiyihui.family.doctor.common.dto.InsertScheduleRecordReqDTO; import com.ebaiyihui.family.doctor.common.dto.InsertScheduleRecordReqDTO;
import com.ebaiyihui.family.doctor.common.dto.RequestGetScheduleForWeekDTO; import com.ebaiyihui.family.doctor.common.dto.RequestGetScheduleForWeekDTO;
import com.ebaiyihui.family.doctor.common.dto.RequestUpdateScheduleStatusDTO;
import com.ebaiyihui.family.doctor.common.dto.ScheduleForWeekReqDTO; import com.ebaiyihui.family.doctor.common.dto.ScheduleForWeekReqDTO;
import com.ebaiyihui.family.doctor.common.vo.ResponseGetScheduleForWeekVo; import com.ebaiyihui.family.doctor.common.vo.ResponseGetScheduleForWeekVo;
import com.ebaiyihui.family.doctor.common.vo.ScheduleForWeekResVo; import com.ebaiyihui.family.doctor.common.vo.ScheduleForWeekResVo;
...@@ -23,4 +24,6 @@ public interface ScheduleRecordService { ...@@ -23,4 +24,6 @@ public interface ScheduleRecordService {
BaseResponse<List<ResponseGetScheduleForWeekVo>> getScheduleForWeek(RequestGetScheduleForWeekDTO requestGetScheduleForWeekDTO); BaseResponse<List<ResponseGetScheduleForWeekVo>> getScheduleForWeek(RequestGetScheduleForWeekDTO requestGetScheduleForWeekDTO);
BaseResponse<List<ScheduleForWeekResVo>> scheduleForWeekNew(ScheduleForWeekReqDTO scheduleForWeekReqDTO); BaseResponse<List<ScheduleForWeekResVo>> scheduleForWeekNew(ScheduleForWeekReqDTO scheduleForWeekReqDTO);
BaseResponse<String> updateStatus(RequestUpdateScheduleStatusDTO updateScheduleStatusDTO);
} }
...@@ -125,54 +125,57 @@ public class ScheduleRecordServiceImpl implements ScheduleRecordService { ...@@ -125,54 +125,57 @@ public class ScheduleRecordServiceImpl implements ScheduleRecordService {
Date intEndDate = DateUtils.dateToDateAsFormat(DateUtils.getEndDayOfWeek()); Date intEndDate = DateUtils.dateToDateAsFormat(DateUtils.getEndDayOfWeek());
Integer week = requestGetScheduleForWeekDTO.getWeek(); Integer[] weeks = requestGetScheduleForWeekDTO.getWeeks();
Date startDate = null; List<ResponseGetScheduleForWeekVo> resList = new ArrayList<>();
Date endDate = null;
for (Integer week : weeks) {
startDate = DateUtils.getDateAfter(intStartDate, 7 * week); Date startDate = null;
endDate = DateUtils.getDateAfter(intEndDate, 7 * week); Date endDate = null;
QueryWrapper<ScheduleRecordEntity> wrapper = new QueryWrapper(); startDate = DateUtils.getDateAfter(intStartDate, 7 * week);
endDate = DateUtils.getDateAfter(intEndDate, 7 * week);
ScheduleRecordEntity entity = new ScheduleRecordEntity();
entity.setDoctorId(requestGetScheduleForWeekDTO.getDoctorId()); QueryWrapper<ScheduleRecordEntity> wrapper = new QueryWrapper();
entity.setDeptId(String.valueOf(requestGetScheduleForWeekDTO.getDeptId()));
entity.setHospitalId(String.valueOf(requestGetScheduleForWeekDTO.getHospitalId())); ScheduleRecordEntity entity = new ScheduleRecordEntity();
wrapper.setEntity(entity); entity.setDoctorId(requestGetScheduleForWeekDTO.getDoctorId());
wrapper.between("schedule_date", startDate, endDate); entity.setDeptId(String.valueOf(requestGetScheduleForWeekDTO.getDeptId()));
entity.setHospitalId(String.valueOf(requestGetScheduleForWeekDTO.getHospitalId()));
List<ScheduleRecordEntity> recordEntityList = scheduleRecordMapper.selectList(wrapper); wrapper.setEntity(entity);
log.info("查询排班结果{}", recordEntityList.toString()); wrapper.between("schedule_date", startDate, endDate);
List<ResponseGetScheduleForWeekVo> list = new ArrayList<>(); List<ScheduleRecordEntity> recordEntityList = scheduleRecordMapper.selectList(wrapper);
log.info("查询排班结果{}", recordEntityList.toString());
for (int i = 0; i < 7; i++) {
ResponseGetScheduleForWeekVo scheduleForWeekVo = new ResponseGetScheduleForWeekVo(); List<ResponseGetScheduleForWeekVo> list = new ArrayList<>();
Date weekDay = DateUtils.getDateAfter(startDate, i);
scheduleForWeekVo.setScheduleDate(weekDay); for (int i = 0; i < 7; i++) {
List<ScheduleOfDayVo> scheduleOfDayVoList = new ArrayList<>(); ResponseGetScheduleForWeekVo scheduleForWeekVo = new ResponseGetScheduleForWeekVo();
Date weekDay = DateUtils.getDateAfter(startDate, i);
for (int j = 1; j <= 3; j++) { scheduleForWeekVo.setScheduleDate(weekDay);
ScheduleOfDayVo scheduleOfDayVo = new ScheduleOfDayVo(); List<ScheduleOfDayVo> scheduleOfDayVoList = new ArrayList<>();
QueryWrapper<ScheduleRecordEntity> queryWrapper = new QueryWrapper<>();
ScheduleRecordEntity timeIntervalEntity = new ScheduleRecordEntity(); for (int j = 1; j <= 3; j++) {
timeIntervalEntity.setHospitalId(String.valueOf(requestGetScheduleForWeekDTO.getHospitalId())); ScheduleOfDayVo scheduleOfDayVo = new ScheduleOfDayVo();
timeIntervalEntity.setDoctorId(requestGetScheduleForWeekDTO.getDoctorId()); QueryWrapper<ScheduleRecordEntity> queryWrapper = new QueryWrapper<>();
timeIntervalEntity.setDeptId(String.valueOf(requestGetScheduleForWeekDTO.getDeptId())); ScheduleRecordEntity timeIntervalEntity = new ScheduleRecordEntity();
timeIntervalEntity.setScheduleDate(weekDay); timeIntervalEntity.setHospitalId(String.valueOf(requestGetScheduleForWeekDTO.getHospitalId()));
timeIntervalEntity.setScheduleRange(j); timeIntervalEntity.setDoctorId(requestGetScheduleForWeekDTO.getDoctorId());
queryWrapper.setEntity(timeIntervalEntity); timeIntervalEntity.setDeptId(String.valueOf(requestGetScheduleForWeekDTO.getDeptId()));
List<ScheduleRecordEntity> scheduleTimeIntervalEntities = scheduleRecordMapper.selectList(queryWrapper); timeIntervalEntity.setScheduleDate(weekDay);
List<ScheduleTimeSaveListVo> scheduleTimeSaveListVos = new ArrayList<>(); timeIntervalEntity.setScheduleRange(j);
if (null != scheduleTimeIntervalEntities) { queryWrapper.setEntity(timeIntervalEntity);
scheduleTimeIntervalEntities.forEach(scheduleTimeIntervalEntitie -> { List<ScheduleRecordEntity> scheduleTimeIntervalEntities = scheduleRecordMapper.selectList(queryWrapper);
ScheduleTimeSaveListVo saveListVo = new ScheduleTimeSaveListVo(); List<ScheduleTimeSaveListVo> scheduleTimeSaveListVos = new ArrayList<>();
BeanUtils.copyProperties(scheduleTimeIntervalEntitie, saveListVo); if (null != scheduleTimeIntervalEntities) {
scheduleTimeSaveListVos.add(saveListVo); scheduleTimeIntervalEntities.forEach(scheduleTimeIntervalEntitie -> {
}); ScheduleTimeSaveListVo saveListVo = new ScheduleTimeSaveListVo();
} BeanUtils.copyProperties(scheduleTimeIntervalEntitie, saveListVo);
scheduleOfDayVo.setScheduleTimeSaveListVo(scheduleTimeSaveListVos); scheduleTimeSaveListVos.add(saveListVo);
});
}
scheduleOfDayVo.setScheduleTimeSaveListVo(scheduleTimeSaveListVos);
// List<ScheduleRecordVo> scheduleRecordVoList = new ArrayList<>(); // List<ScheduleRecordVo> scheduleRecordVoList = new ArrayList<>();
// if (!recordEntityList.isEmpty()) { // if (!recordEntityList.isEmpty()) {
...@@ -193,12 +196,14 @@ public class ScheduleRecordServiceImpl implements ScheduleRecordService { ...@@ -193,12 +196,14 @@ public class ScheduleRecordServiceImpl implements ScheduleRecordService {
// } // }
// } // }
// scheduleOfDayVo.setRecordVoList(scheduleRecordVoList); // scheduleOfDayVo.setRecordVoList(scheduleRecordVoList);
scheduleOfDayVoList.add(scheduleOfDayVo); scheduleOfDayVoList.add(scheduleOfDayVo);
}
scheduleForWeekVo.setScheduleOfDayVoList(scheduleOfDayVoList);
list.add(scheduleForWeekVo);
resList.addAll(list);
} }
scheduleForWeekVo.setScheduleOfDayVoList(scheduleOfDayVoList);
list.add(scheduleForWeekVo);
} }
return BaseResponse.success(list); return BaseResponse.success(resList);
} }
@Override @Override
...@@ -305,6 +310,111 @@ public class ScheduleRecordServiceImpl implements ScheduleRecordService { ...@@ -305,6 +310,111 @@ public class ScheduleRecordServiceImpl implements ScheduleRecordService {
return BaseResponse.success(list); return BaseResponse.success(list);
} }
@Override
public BaseResponse<String> updateStatus(RequestUpdateScheduleStatusDTO updateScheduleStatusDTO) {
ScheduleRecordEntity entity = scheduleRecordMapper.selectById(updateScheduleStatusDTO.getId());
if (null == entity) {
return BaseResponse.error("排班信息不存在");
}
//操作循环排班
if (null != updateScheduleStatusDTO.getIsCycleSchedule()) {
closeCycle(updateScheduleStatusDTO, entity);
log.info("======循环排班操作成功======");
return BaseResponse.success();
}
//操作停诊
BaseResponse<String> baseResponse = closeSchedule(updateScheduleStatusDTO, entity);
return baseResponse;
}
/**
* Discreption: 关闭循环排班:该排班之后的循环排班停诊
*/
private void closeCycle(RequestUpdateScheduleStatusDTO updateScheduleStatusDTO, ScheduleRecordEntity entity) {
ScheduleRecordEntity entityUpdate = new ScheduleRecordEntity();
entityUpdate.setIsCycleSchedule(updateScheduleStatusDTO.getIsCycleSchedule());
entityUpdate.setId(updateScheduleStatusDTO.getId());
scheduleRecordMapper.updateById(entityUpdate);
String date = DateUtils.dateToSimpleString(entity.getScheduleDate());
//查询循环排班日期
List<String> nextDays = DateUtils.getOneDayNextWeekTwo(new ArrayList<String>() {{
add(date);
}}, 5);
List<ScheduleRecordEntity> list = scheduleRecordMapper.selectList(new QueryWrapper<ScheduleRecordEntity>().lambda()
.eq(ScheduleRecordEntity::getDeptId, entity.getDeptId())
.eq(ScheduleRecordEntity::getDoctorId, entity.getDoctorId())
.eq(ScheduleRecordEntity::getHospitalId, entity.getHospitalId())
.eq(ScheduleRecordEntity::getServType, entity.getServType())
.eq(ScheduleRecordEntity::getStartTime, entity.getStartTime())
.eq(ScheduleRecordEntity::getEndTime, entity.getEndTime())
.in(ScheduleRecordEntity::getScheduleDate, nextDays));
//停诊
for (ScheduleRecordEntity scheduleRecordEntity : list) {
if (!scheduleRecordEntity.getId().equals(entity.getId())) {
closeSchedule(updateScheduleStatusDTO, scheduleRecordEntity);
}
}
}
/**
* Discreption:停诊取消排班
*/
private BaseResponse<String> closeSchedule(RequestUpdateScheduleStatusDTO updateScheduleStatusDTO, ScheduleRecordEntity entity) {
//查询排班
BaseResponse<String> x = getStringBaseResponse(entity);
if (x != null) {
return x;
}
ScheduleRecordEntity entityUpdate = new ScheduleRecordEntity();
entityUpdate.setStatus(-1);
if (Objects.nonNull(updateScheduleStatusDTO.getIsCycleSchedule())) {
entityUpdate.setIsCycleSchedule(updateScheduleStatusDTO.getIsCycleSchedule());
}
entityUpdate.setId(entity.getId());
scheduleRecordMapper.updateById(entityUpdate);
return BaseResponse.success("医生排班停诊成功");
}
private BaseResponse<String> getStringBaseResponse(ScheduleRecordEntity entity) {
String nowDateStr = DateUtils.getCurrentDateSimpleToString();
log.info("nowDateStr{}", nowDateStr);
String hourAndSecond = DateUtils.getHourAndSecond();
log.info("hourAndSecond{}", hourAndSecond);
Date now = null;
Date endEntity = null;
Date hourAndSec = null;
try {
now = DateUtils.strToDate(nowDateStr, "yyyy-MM-dd");
endEntity = DateUtils.strToDate(entity.getEndTime(), "HH:mm");
hourAndSec = DateUtils.strToDate(hourAndSecond, "HH:mm");
} catch (ParseException e) {
e.printStackTrace();
}
if (entity.getStatus().equals(WhetherEnum.FORBID.getValue())) {
return BaseResponse.error("已停诊,请勿重复停诊");
}
if (isBoolean(entity, now, endEntity, hourAndSec)) {
return BaseResponse.error("超时不能停诊");
}
return null;
}
private boolean isBoolean(ScheduleRecordEntity entity, Date now, Date endEntity, Date hourAndSec) {
return entity.getScheduleDate().equals(now) && hourAndSec.after(endEntity) || entity.getScheduleDate().before(now);
}
private void getInsertSchedule(InsertScheduleRecordReqDTO record, DoctorInfoForScheduleDTO doctorInfo, ScheduleRangeAndTimeDTO rangeRes, String s) { private void getInsertSchedule(InsertScheduleRecordReqDTO record, DoctorInfoForScheduleDTO doctorInfo, ScheduleRangeAndTimeDTO rangeRes, String s) {
ScheduleRecordEntity schedule = new ScheduleRecordEntity(); ScheduleRecordEntity schedule = new ScheduleRecordEntity();
BeanUtils.copyProperties(record, schedule); BeanUtils.copyProperties(record, schedule);
......
...@@ -34,7 +34,6 @@ public class ScheduleTask { ...@@ -34,7 +34,6 @@ public class ScheduleTask {
@Autowired @Autowired
private ScheduleRecordMapper scheduleRecordMapper; private ScheduleRecordMapper scheduleRecordMapper;
// @Scheduled(cron = "0 0/2 * * * ?")
@Scheduled(cron = "0 0 0 * * ?") @Scheduled(cron = "0 0 0 * * ?")
public void regularTimeExport() { public void regularTimeExport() {
......
...@@ -22,6 +22,7 @@ import com.ebaiyihui.imforward.client.vo.IMQueryUserLoginRspVO; ...@@ -22,6 +22,7 @@ import com.ebaiyihui.imforward.client.vo.IMQueryUserLoginRspVO;
import com.ebaiyihui.imforward.client.vo.IMSingleMsgResultVO; import com.ebaiyihui.imforward.client.vo.IMSingleMsgResultVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -50,9 +51,11 @@ public class SignedTask { ...@@ -50,9 +51,11 @@ public class SignedTask {
@Autowired @Autowired
private ThirdOrderPushUtil thirdOrderPushUtil; private ThirdOrderPushUtil thirdOrderPushUtil;
// @Scheduled(cron = "0 0 10 * * ?") @Scheduled(cron = "0 0 10 * * ?")
public void healthRecordWhetherUpdate() { public void healthRecordWhetherUpdate() {
List<PatientSignEntity> patientSignEntities = patientSignSevice.selectList(new PatientSignEntity()); PatientSignEntity patientSignEntity = new PatientSignEntity();
patientSignEntity.setStatus(StatusEnum.IN_CONSULTATION.getValue());
List<PatientSignEntity> patientSignEntities = patientSignSevice.selectList(patientSignEntity);
if (!patientSignEntities.isEmpty()) { if (!patientSignEntities.isEmpty()) {
for (PatientSignEntity ps : patientSignEntities) { for (PatientSignEntity ps : patientSignEntities) {
HealthInfoDTO healthInfoDTO = new HealthInfoDTO(); HealthInfoDTO healthInfoDTO = new HealthInfoDTO();
...@@ -128,7 +131,7 @@ public class SignedTask { ...@@ -128,7 +131,7 @@ public class SignedTask {
} }
// @Scheduled(cron = "0 0 20 * * ?") @Scheduled(cron = "0 0 20 * * ?")
public void holidayPush() { public void holidayPush() {
List<PatientSignEntity> patientSignEntities = patientSignSevice.selectList(new PatientSignEntity()); List<PatientSignEntity> patientSignEntities = patientSignSevice.selectList(new PatientSignEntity());
try { try {
...@@ -177,7 +180,7 @@ public class SignedTask { ...@@ -177,7 +180,7 @@ public class SignedTask {
} }
} }
// @Scheduled(cron = "0 0 1 * * ?") @Scheduled(cron = "0 0 1 * * ?")
public void orderInvalidation() { public void orderInvalidation() {
List<MobileBenefitPackageEntity> mobileBenefitPackageEntities = mobileBenefitPackageMapper.queryMaxOneList(); List<MobileBenefitPackageEntity> mobileBenefitPackageEntities = mobileBenefitPackageMapper.queryMaxOneList();
try { try {
......
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
mobile_benefit_package mobile_benefit_package
WHERE WHERE
phone = #{mobile} and activateOrderId = #{activateOrderId} phone = #{mobile} and activateOrderId = #{activateOrderId}
and NOW() BETWEEN STR_TO_DATE(benefitsStartTime, '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE(benefitsEndTime, '%Y-%m-%d %H:%i:%s')
ORDER BY ORDER BY
x_create_time DESC x_create_time DESC
LIMIT 0,1 LIMIT 0,1
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论