|
|
@@ -1,5 +1,6 @@
|
|
|
package cn.tr.module.smart.common.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
@@ -8,18 +9,19 @@ import cn.tr.core.strategy.LoginUserStrategy;
|
|
|
import cn.tr.module.smart.app.controller.dto.WxDoctorClinicRoomDTO;
|
|
|
import cn.tr.module.smart.app.controller.vo.WxDoctorClinicRoomVO;
|
|
|
import cn.tr.module.smart.common.dto.BizDeptDTO;
|
|
|
+import cn.tr.module.smart.common.enums.ClinicPhaseEnums;
|
|
|
import cn.tr.module.smart.common.enums.UserTypeEnums;
|
|
|
import cn.tr.module.smart.common.po.BizClinicRoomWxUserPO;
|
|
|
import cn.tr.module.smart.common.po.BizPatientPO;
|
|
|
import cn.tr.module.smart.common.repository.BizClinicRoomWxUserRepository;
|
|
|
import cn.tr.module.smart.common.repository.BizPatientRepository;
|
|
|
-import cn.tr.module.smart.common.repository.BizQuestionAnswerRepository;
|
|
|
import cn.tr.module.smart.common.service.*;
|
|
|
import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicDetailVO;
|
|
|
import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicVO;
|
|
|
import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
|
|
|
import cn.tr.module.smart.wx.dto.BizClinicAddOrEditDTO;
|
|
|
import cn.tr.module.smart.wx.dto.BizWxAppletClinicQueryDTO;
|
|
|
+import cn.tr.module.smart.wx.dto.BizWxAppletFinishClinicDTO;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -61,14 +63,12 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
@Lazy
|
|
|
private IBizClinicRoomWxUserService roomWxUserService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private BizQuestionAnswerRepository answerRepository;
|
|
|
-
|
|
|
@Autowired
|
|
|
private IBizQuestionService bizQuestionService;
|
|
|
|
|
|
@Autowired
|
|
|
private IBizDeptService bizDeptService;
|
|
|
+
|
|
|
@Override
|
|
|
public List<BizWxAppletClinicVO> stdSelectWxAppletClinicList(BizWxAppletClinicQueryDTO query) {
|
|
|
return baseRepository.stdSelectWxAppletClinicList(query);
|
|
|
@@ -124,6 +124,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
clinicRoom.setFollowUp(Boolean.FALSE);
|
|
|
clinicRoom.setLastModifyUserType(UserTypeEnums.PATIENT_WX_APPLET);
|
|
|
clinicRoom.setLastModifyUserBy(userId);
|
|
|
+ clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
|
|
|
this.baseRepository.insert(clinicRoom);
|
|
|
//更新患者绑定的最新手术id
|
|
|
patient.setCurrentClinicId(clinicRoom.getId());
|
|
|
@@ -164,6 +165,39 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
return baseRepository.stdSelectWxAppletById(id);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean wxAppletFinishClinic(BizWxAppletFinishClinicDTO source) {
|
|
|
+ BizClinicRoomPO clinicRoom = baseRepository.selectById(source.getClinicId());
|
|
|
+ if(ObjectUtil.compare(source.getClinicEndTime(),new Date())>0){
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001
|
|
|
+ ,String.format("手术结束时间[%s],不得大于当前时间[%s]"
|
|
|
+ ,DateUtil.formatDateTime(source.getClinicEndTime())
|
|
|
+ ,DateUtil.formatDateTime(new Date())));
|
|
|
+ }
|
|
|
+ //精确到
|
|
|
+ if (ObjectUtil.isNull(clinicRoom)) {
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"未查询到手术信息");
|
|
|
+ }
|
|
|
+ String currentUserId = LoginUserStrategy.tr.getCurrentUserId();
|
|
|
+ BizClinicRoomWxUserPO clinicRoomWxUser = clinicRoomWxUserRepository.selectOne(new LambdaQueryWrapper<BizClinicRoomWxUserPO>()
|
|
|
+ .eq(BizClinicRoomWxUserPO::getWxUserId, currentUserId)
|
|
|
+ .eq(BizClinicRoomWxUserPO::getClinicRoomId, source.getClinicId())
|
|
|
+ .last("limit 1"));
|
|
|
+ if(ObjectUtil.isNull(clinicRoomWxUser)){
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"当前用户无权限操作所选手术信息");
|
|
|
+ }
|
|
|
+ if(ObjectUtil.compare(clinicRoom.getClinicStartTime(),source.getClinicEndTime())>0){
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001
|
|
|
+ ,String.format("手术结束时间[%s],不得早于手术开始时间[%s]"
|
|
|
+ ,DateUtil.formatDateTime(source.getClinicEndTime())
|
|
|
+ ,DateUtil.formatDateTime(clinicRoom.getClinicStartTime())));
|
|
|
+ }
|
|
|
+ clinicRoom.setClinicEndTime(source.getClinicEndTime());
|
|
|
+ clinicRoom.setClinicStatus(ClinicPhaseEnums.AFTER);
|
|
|
+ return baseRepository.updateById(clinicRoom)!=0;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Integer removeBizClinicByIds(Collection<String> ids) {
|
|
|
@@ -196,8 +230,6 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"手术信息不存在");
|
|
|
}
|
|
|
String deptId = clinic.getDeptId();
|
|
|
- Date lastQuestionTime = clinic.getLastQuestionTime();
|
|
|
-
|
|
|
//判断科室id是否为空
|
|
|
if(StrUtil.isBlank(deptId)){
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"手术未关联科室");
|