From b848c233a51666187bf3e4bcf25ee08ba107313a Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期一, 04 十一月 2024 14:05:45 +0800 Subject: [PATCH] 医院平台对接时,根据长度判断,传哪个参数 --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 166 insertions(+), 9 deletions(-) diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java index cf0654b..a134956 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java @@ -1,20 +1,33 @@ package cn.lihu.jh.module.ecg.service.appointment; +import cn.lihu.jh.framework.common.util.date.DateUtils; +import cn.lihu.jh.framework.common.util.date.LocalDateTimeUtils; +import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO; +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.queue.QueueService; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; -import java.util.*; import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO; import cn.lihu.jh.framework.common.pojo.PageResult; -import cn.lihu.jh.framework.common.pojo.PageParam; import cn.lihu.jh.framework.common.util.object.BeanUtils; import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper; +import javax.annotation.Resource; +import javax.xml.crypto.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.lihu.jh.framework.common.pojo.CommonResult.error; import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*; /** @@ -27,13 +40,28 @@ public class AppointmentServiceImpl implements AppointmentService { @Resource + private RemoteDataService remoteDataService; + + @Resource + private QueueService queueService; + + @Resource private AppointmentMapper appointmentMapper; @Override - public Integer createAppointment(AppointmentSaveReqVO createReqVO) { + public Long createAppointment(AppointmentSaveReqVO createReqVO) { // 鎻掑叆 AppointmentDO appointment = BeanUtils.toBean(createReqVO, AppointmentDO.class); - appointmentMapper.insert(appointment); + + appointment.setBookTime( LocalDateTime.now() ); + appointment.setBookSrc( 1 ); + + try { + appointmentMapper.insert(appointment); + } catch (DuplicateKeyException e) { + throw exception(APPOINTMENT_EXIST_TODAY); + } + // 杩斿洖 return appointment.getId(); } @@ -48,22 +76,46 @@ } @Override - public void deleteAppointment(Integer id) { + public void deleteAppointment(Long id) { // 鏍¢獙瀛樺湪 validateAppointmentExists(id); // 鍒犻櫎 appointmentMapper.deleteById(id); } - private void validateAppointmentExists(Integer id) { + private void validateAppointmentExists(Long id) { if (appointmentMapper.selectById(id) == null) { throw exception(APPOINTMENT_NOT_EXISTS); } } @Override - public AppointmentDO getAppointment(Integer id) { + public AppointmentDO getAppointment(Long id) { return appointmentMapper.selectById(id); + } + + @Override + public AppointmentDO getCurAppointmentByPatId(String patId) { + AppointmentDO appointmentDO = appointmentMapper.getCurrentPatId( patId ); + return appointmentDO; + } + + @Override + public AppointmentDO queryAndCreateAppointmentByPatId(String patId) { + // 鍏堜粠鍖婚櫌骞冲彴鏌ヨ + AppointmentDO appointmentExtermal = getAppointmentExtermal( patId ); + if (null != appointmentExtermal && null != appointmentExtermal.getBookDate() && appointmentExtermal.getBookDate().isEqual(LocalDate.now()) ) { + // 鏌ュ埌褰撳ぉ鐨勯绾﹀悗锛屾煡璇B涓� 鏄惁宸茬粡瀛樺湪 + AppointmentDO appointmentDO = appointmentMapper.getCurrentPatId( patId ); + if (null == appointmentDO ) { + appointmentExtermal.setBookSrc(0); + appointmentMapper.insert( appointmentExtermal ); + return appointmentExtermal; + } + return appointmentDO; + } + + return appointmentMapper.getCurrentPatId( patId ); } @Override @@ -71,4 +123,109 @@ return appointmentMapper.selectPage(pageReqVO); } + @Override + public AppointmentDO getAppointmentExtermal(String patId) { + RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo(); + if (18 == patId.length()) { + reqBodyVo.setSfzh( patId ); + } else { + reqBodyVo.setMzzyh(patId); + } + + // QueryRisReportList queryEcgRequest + RestApiResult<AppointmentExternal> result = remoteDataService.httpApi("queryEcgRequest", "ECG", "ECG", reqBodyVo); + if (0 == result.getRow().size()) { + return null; + } + + AppointmentExternal appointmentExternal = result.getRow().get(0); + AppointmentDO appointmentDO = BeanUtils.toBean( appointmentExternal, AppointmentDO.class ); + + appointmentDO.setPatId( appointmentExternal.getPatientID() ); // 鍐呭涓� 韬唤璇佸彿 鎴� 闂ㄨ瘖浣忛櫌鍙� + appointmentDO.setPatName( appointmentExternal.getPatName() ); + appointmentDO.setPatGender( Byte.valueOf(appointmentExternal.getPatgender()) ); + appointmentDO.setPatBirthday( DateUtils.ofUTC(appointmentExternal.getEncPatBirthDate()).toLocalDate() ); + appointmentDO.setPatIdentityId( appointmentExternal.getIdentityID() ); + appointmentDO.setPatAddr( appointmentExternal.getAddress() ); + appointmentDO.setPatDeptCode( appointmentExternal.getPatLocDeptCode() ); + appointmentDO.setPatDeptDesc( appointmentExternal.getPatLocDeptDesc() ); + appointmentDO.setPatWardCode( appointmentExternal.getPatLocWardCode() ); + appointmentDO.setPatWardDesc( appointmentExternal.getPatLocWardDesc() ); + appointmentDO.setPatMobile( appointmentExternal.getPhone() ); + appointmentDO.setPatBedNo( appointmentExternal.getEnBedno() ); + appointmentDO.setBookId( appointmentExternal.getReqIdeApplyno() ); + appointmentDO.setBookDate( DateUtils.ofUTC( appointmentExternal.getReqExtBooktime() ).toLocalDate() ); + appointmentDO.setBookCheckType( getCorrespondingCheckType(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()) ); + appointmentDO.setBookTime( DateUtils.ofUTC( appointmentExternal.getReqAuthoredOn() ) ); + LocalDateTime bookStartTime = DateUtils.ofUTC( appointmentExternal.getReqExtBooktime() ); + LocalDateTime bookEndTime = bookStartTime.plusMinutes(30); + appointmentDO.setBookTimeslot( (bookStartTime.getHour()*100 + bookStartTime.getMinute())*10000 + bookEndTime.getHour()*100 + bookEndTime.getMinute() ); + appointmentDO.setBookSrc( 0 ); + appointmentDO.setPaid( 1 ); + return appointmentDO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String appoitmentConfirm(AppointmentConfirmReqVO confirmReqVO) { + AppointmentDO appointment = getAppointment(confirmReqVO.getId()); + if (null == appointment) + throw exception(PATIENT_NOT_EXISTS); + + if ( !DateUtils.isToday(appointment.getBookDate()) ) + throw exception( APPOINTMENT_NOT_TODAY); + + 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); + queueSaveReqVO.setPatDetails( appointment.getPatDeptDesc() + "-" + appointment.getPatWardDesc() + "-" + appointment.getPatBedNo()); + queueService.queue(queueSaveReqVO); + } catch (DuplicateKeyException duplicateKeyException) { + throw exception(APPOINTMENT_HAVE_QUEUED); + } + + return "纭鎴愬姛"; + } + + private Integer getCorrespondingCheckType(String strPlanDefItemcode) { + if (strPlanDefItemcode.equals("691133607")) + return 100; + else if (strPlanDefItemcode.equals("201605")) + return 200; + else if (strPlanDefItemcode.equals("200327")) + return 300; + else if (strPlanDefItemcode.equals("201652")) + return 400; + else if (strPlanDefItemcode.equals("502490914")) + return 500; + else if (strPlanDefItemcode.equals("419562119")) + return 600; + else if (strPlanDefItemcode.equals("201604")) + return 700; + else if (strPlanDefItemcode.equals("1202042")) + return 800; + else if (strPlanDefItemcode.equals("1202058")) + return 900; + else if (strPlanDefItemcode.equals("1202065")) + return 1000; + else if (strPlanDefItemcode.equals("559542128")) + return 1100; + else if (strPlanDefItemcode.equals("590244511")) + return 1200; + else if (strPlanDefItemcode.equals("666454217")) + return 1300; + else if (strPlanDefItemcode.equals("720791490")) + return 1400; + else if (strPlanDefItemcode.equals("720792077")) + return 1500; + + return 100; + } } \ No newline at end of file -- Gitblit v1.9.3