eight
2024-10-14 24b7c98e01c211e93f00293e6e4e96ba1b9db93f
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
@@ -1,19 +1,19 @@
package cn.lihu.jh.module.ecg.controller.admin.appointment;
import cn.hutool.core.bean.BeanUtil;
import cn.lihu.jh.framework.common.enums.CommonStatusEnum;
import cn.lihu.jh.framework.common.exception.ErrorCode;
import cn.lihu.jh.framework.common.util.date.DateUtils;
import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.DevRentSaveReqVO;
import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO;
import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO;
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO;
import cn.lihu.jh.module.ecg.feign.RemoteDataService;
import cn.lihu.jh.module.ecg.feign.RestApiReqBodyVo;
import cn.lihu.jh.module.ecg.feign.RestApiResult;
import cn.lihu.jh.module.ecg.feign.dto.AppointmentExternal;
import cn.lihu.jh.module.ecg.service.devrent.DevRentService;
import cn.lihu.jh.module.ecg.service.queue.QueueService;
import cn.lihu.jh.module.ecg.service.room.RoomService;
import cn.lihu.jh.module.system.api.dept.DeptApi;
import cn.lihu.jh.module.system.api.dept.dto.DeptRespDTO;
import com.alibaba.fastjson.JSONObject;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -22,25 +22,25 @@
import io.swagger.v3.oas.annotations.Operation;
import java.time.LocalDateTime;
import java.time.chrono.IsoChronology;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.ResolverStyle;
import java.util.*;
import java.io.IOException;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import cn.lihu.jh.framework.common.pojo.PageParam;
import cn.lihu.jh.framework.common.pojo.PageResult;
import cn.lihu.jh.framework.common.pojo.CommonResult;
import cn.lihu.jh.framework.common.util.object.BeanUtils;
import static cn.lihu.jh.framework.common.pojo.CommonResult.error;
import static cn.lihu.jh.framework.common.pojo.CommonResult.success;
import cn.lihu.jh.framework.excel.core.util.ExcelUtils;
import cn.lihu.jh.framework.apilog.core.annotation.ApiAccessLog;
import static cn.lihu.jh.framework.apilog.core.enums.OperateTypeEnum.*;
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE;
import static java.time.format.DateTimeFormatter.ISO_LOCAL_TIME;
@@ -69,6 +69,9 @@
    @Resource
    private RemoteDataService remoteDataService;
    @Resource
    private DevRentService devRentService;
    @Resource
    private DeptApi deptApi;
@@ -106,6 +109,15 @@
        return success(BeanUtils.toBean(appointment, AppointmentRespVO.class));
    }
    @GetMapping("/get-by-patient")
    @Operation(summary = "获得预约")
    @Parameter(name = "id", description = "编号", required = true, example = "1024")
    @PreAuthorize("@ss.hasPermission('ecg:appointment:query')")
    public CommonResult<AppointmentRespVO> getAppointmentByPatient(@RequestParam("patId") String patId) {
        AppointmentDO appointment = appointmentService.getAppointmentByPatId( patId );
        return success(BeanUtils.toBean(appointment, AppointmentRespVO.class));
    }
    @GetMapping("/page")
    @Operation(summary = "获得预约分页")
    @PreAuthorize("@ss.hasPermission('ecg:appointment:query')")
@@ -127,14 +139,8 @@
                        BeanUtils.toBean(list, AppointmentRespVO.class));
    }
    @PostMapping("/confirm")
    @Operation(summary = "预约确认")
    @PreAuthorize("@ss.hasPermission('ecg:appointment:confirm')")
    public CommonResult<String> appointmentConfirm(@RequestBody AppointmentConfirmReqVO confirmReqVO) {
        //TODO 处理排队逻辑
        //AppointmentDO appointment = appointmentService.getAppointment(id);
        //return success(BeanUtils.toBean(appointment, AppointmentRespVO.class));
    // TODO 对接数据平台
    private void getRemoteAppointment(AppointmentConfirmReqVO confirmReqVO) {
        RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo();
        reqBodyVo.setSfzh(confirmReqVO.getPatId());
        reqBodyVo.setMzzyh("A34343");
@@ -171,50 +177,49 @@
        LocalDateTime bookEndTime = bookStartTime.plusMinutes(30);
        queueSaveReqVO.setBookTimeslot(
                (bookStartTime.getHour()*100 + bookStartTime.getMinute())*10000
                + bookEndTime.getHour()*100 + bookEndTime.getMinute() );
                        + bookEndTime.getHour()*100 + bookEndTime.getMinute() );
        //queueSaveReqVO.setBookCheckType( Byte.valueOf(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()) );
        queueSaveReqVO.setBookCheckType( (byte)10 );
        queueSaveReqVO.setBookCheckType( 10 );
        queueSaveReqVO.setSeqNum(1);
        queueSaveReqVO.setStatus((byte)10);
        queueSaveReqVO.setPassed((byte)0);
        queueSaveReqVO.setExpired((byte)0);
        queueSaveReqVO.setRoomNum("-");
        queueSaveReqVO.setBedNum("-");
        queueSaveReqVO.setRoomName("-");
        queueSaveReqVO.setBedNo("-");
        queueService.createqueue(queueSaveReqVO);
    }
    @PostMapping("/confirm")
    @Operation(summary = "预约确认")
    @PreAuthorize("@ss.hasPermission('ecg:appointment:confirm')")
    public CommonResult<String> appointmentConfirm(@RequestBody AppointmentConfirmReqVO confirmReqVO) {
        //TODO 先从预约表取数据,后续对接数据平台查预约数据
        AppointmentDO appointment = appointmentService.getAppointment(confirmReqVO.getId());
        if (null == appointment)
            return error(PATIENT_NOT_EXISTS);
        // 获取候诊准备的配置人数  , 营业的诊室
        if ( !DateUtils.isToday(appointment.getBookDate()) )
            return error( APPOINTMENT_NOT_TODAY);
/*
        List<DeptDO> list = deptService.getDeptList(
                new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));
        return success(BeanUtils.toBean(list, DeptSimpleRespVO.class));
*/
        List<DeptRespDTO> deptRespDTOList = deptApi.getSimpleDeptList();
        Optional<DeptRespDTO> ecgDept = deptRespDTOList.stream()
                .filter(a -> a.getName().equals("ECG"))
                .findAny();
        if (ecgDept.isPresent()){
            System.out.println(ecgDept.get().getName());
            List<DeptRespDTO> list2 = deptRespDTOList.stream()
                    .filter(a -> Objects.equals(a.getParentId(), ecgDept.get().getId()))
                    .toList();
            list2.forEach(System.out::println);
            list2.size();
        try {
            QueueSaveReqVO queueSaveReqVO = new QueueSaveReqVO();
            queueSaveReqVO.setPatId(appointment.getPatId());
            queueSaveReqVO.setPatName(appointment.getPatName());
            queueSaveReqVO.setPatGender(appointment.getPatGender());
            queueSaveReqVO.setBookDate(appointment.getBookDate());
            queueSaveReqVO.setBookTimeslot(appointment.getBookTimeslot());
            queueSaveReqVO.setBookCheckType(appointment.getBookCheckType());
            queueSaveReqVO.setPassed((byte) 0);
            queueSaveReqVO.setExpired((byte) 0);
            queueService.queue(queueSaveReqVO);
        } catch (DuplicateKeyException duplicateKeyException) {
            return success("您已经在排队中了");
        }
        // 获取 每个营业的诊室 候诊准备的当前人数  就诊中的当前人数
        // queueService.get
        List<RoomStatisticsDO> roomStatisticsList = roomService.roomStatistics();
        roomStatisticsList.size();
        return success("hello");
        return success("操作成功");
    }
}