diff --git a/src/main/java/com/syjiaer/clinic/server/common/enums/MedicalRecordDetailTypeEnum.java b/src/main/java/com/syjiaer/clinic/server/common/enums/MedicalRecordDetailTypeEnum.java deleted file mode 100644 index 4e42683..0000000 --- a/src/main/java/com/syjiaer/clinic/server/common/enums/MedicalRecordDetailTypeEnum.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.syjiaer.clinic.server.common.enums; - -public enum MedicalRecordDetailTypeEnum { - - item(1,"服务项目"), - goods(2,"药品耗材"); - - private final Integer type; - private final String desc; - - MedicalRecordDetailTypeEnum(final Integer type, final String desc) { - this.type = type; - this.desc = desc; - } - - public Integer getType() { - return type; - } - - public String getDesc() { - return desc; - } - - -} diff --git a/src/main/java/com/syjiaer/clinic/server/common/enums/RegistrationStatusEnum.java b/src/main/java/com/syjiaer/clinic/server/common/enums/RegistrationStatusEnum.java index 4b8767e..c5bc6a8 100644 --- a/src/main/java/com/syjiaer/clinic/server/common/enums/RegistrationStatusEnum.java +++ b/src/main/java/com/syjiaer/clinic/server/common/enums/RegistrationStatusEnum.java @@ -6,16 +6,16 @@ public enum RegistrationStatusEnum { complete(3,"已诊"), cancel(0,"取消"); - private final Integer type; + private final Integer status; private final String desc; - RegistrationStatusEnum(final Integer type, final String desc) { - this.type = type; + RegistrationStatusEnum(final Integer status, final String desc) { + this.status = status; this.desc = desc; } - public Integer getType() { - return type; + public Integer getStatus() { + return status; } public String getDesc() { @@ -24,7 +24,7 @@ public enum RegistrationStatusEnum { public static RegistrationStatusEnum getByType(Integer type) { for (RegistrationStatusEnum goodsTypeEnum : RegistrationStatusEnum.values()) { - if (goodsTypeEnum.getType().equals(type)) { + if (goodsTypeEnum.getStatus().equals(type)) { return goodsTypeEnum; } } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/diagnosis/MedicalRecordController.java b/src/main/java/com/syjiaer/clinic/server/controller/diagnosis/MedicalRecordController.java index 041596f..8d51380 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/diagnosis/MedicalRecordController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/diagnosis/MedicalRecordController.java @@ -6,6 +6,7 @@ import com.syjiaer.clinic.server.controller.BaseController; import com.syjiaer.clinic.server.entity.diagnosis.dto.ChargeQueueQuery; import com.syjiaer.clinic.server.entity.diagnosis.dto.MedicalRecordSaveDto; import com.syjiaer.clinic.server.entity.diagnosis.vo.MedicalRecordVo; +import com.syjiaer.clinic.server.entity.patient.vo.SeeDoctorInfoVo; import com.syjiaer.clinic.server.service.diagnosis.MedicalRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -59,4 +60,15 @@ public class MedicalRecordController extends BaseController { return success( medicalRecordService.getChargeQueue(query)); } + + /** + * 获取就诊信息 + */ + @RequestMapping("/getSeeDockerInfo") + public Result getSeeDockerInfo() { + Integer regisId = parmsUtil.getInteger("regisId", "挂单id不能为空"); + return success( medicalRecordService.getSeeDockerInfo(regisId)); + } + + } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java b/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java index 2320482..9ad0d53 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java @@ -8,6 +8,7 @@ import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.statistics.PersonPayOverviewVo; import com.syjiaer.clinic.server.entity.statistics.RevenueOverviewVo; import com.syjiaer.clinic.server.entity.statistics.SalePersonReportVo; +import com.syjiaer.clinic.server.entity.statistics.TipCountVo; import com.syjiaer.clinic.server.service.goods.GoodsService; import com.syjiaer.clinic.server.service.inventory.InventoryService; import com.syjiaer.clinic.server.service.statistics.StatisticsService; @@ -15,11 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.math.BigDecimal; -import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -50,6 +47,7 @@ public class StatisticsController extends BaseController { public Result> numberEarlyWarning() { QueryWrapper goodsQuery = new QueryWrapper<>(); goodsQuery.apply("inventory_whole_number <= inventory_warn_number"); + goodsQuery.orderByAsc("inventory_whole_number","type"); goodsQuery.last("limit 20"); List list = goodsService.list(goodsQuery); return success(list); @@ -77,7 +75,16 @@ public class StatisticsController extends BaseController { return success( statisticsService.salePersonReport()); } - - + /** + * 获取收费队列 就诊队列数量 + */ + @RequestMapping("/getTipCount") + public Result getChargeQueueCount() { + String begin = parmsUtil.getString("beginTime", "开始时间为空"); + String end = parmsUtil.getString("endTime", "结束时间为空"); + LocalDateTime beginTime = DateUtil.getDateTime(begin); + LocalDateTime endTime = DateUtil.getDateTime(end); + return success( statisticsService.getWaitCount(beginTime, endTime)); + } } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/dto/MedicalRecordSaveDto.java b/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/dto/MedicalRecordSaveDto.java index 8a77205..d8b9223 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/dto/MedicalRecordSaveDto.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/dto/MedicalRecordSaveDto.java @@ -1,12 +1,10 @@ package com.syjiaer.clinic.server.entity.diagnosis.dto; import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalRecord; -import com.syjiaer.clinic.server.entity.item.Item; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; -import java.time.LocalDateTime; import java.util.List; @Getter @@ -19,7 +17,7 @@ public class MedicalRecordSaveDto { private Integer patientId; @ApiModelProperty("接诊医生id") - private Integer dockerId; + private Integer doctorId; @ApiModelProperty("挂单id") private Integer registrationId; diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/SeeDoctorInfoVo.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/SeeDoctorInfoVo.java new file mode 100644 index 0000000..3c7ca01 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/SeeDoctorInfoVo.java @@ -0,0 +1,24 @@ +package com.syjiaer.clinic.server.entity.patient.vo; + +import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +@Data +public class SeeDoctorInfoVo { + //患者信息 + private PatientInfo patientInfo; + //挂号医生id + private Integer dockerId; + //挂号医生姓名 + private String dockerName; + //医生科室名称 + private String sectionName; + //上一次接诊时间 + private LocalDateTime lastSeeDoctorTime; + //就诊次数 + private Integer seeDoctorCount; + //医保余额 + private BigDecimal socialBalance; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java b/src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java new file mode 100644 index 0000000..1594ad3 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java @@ -0,0 +1,19 @@ +package com.syjiaer.clinic.server.entity.statistics; + +import lombok.Data; + +@Data +public class TipCountVo { + //待诊断数量 + private Long waitDiagnosisCount; + //在诊数量 + private Long diagnosingCount; + //完诊数量 + private Long completeDiaCount; + //已收费数量 + private Long chargedCount; + //未收费数量 + private Long unchargedCount; + + +} diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java index 9199be5..c59bde3 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java @@ -20,7 +20,7 @@ public interface InventoryMapper extends BaseMapper { @Select("SELECT" + " inventory.*,goods.expiry_warn_days,goods.unit_price,EXTRACT(EPOCH FROM AGE(expiry_date, CURRENT_DATE)) / 86400 AS remaining_days" + " FROM inventory LEFT JOIN goods ON inventory.good_id = goods.id" + - " WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0 limit 20") + " WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0 ORDER BY inventory.expiry_date ASC LIMIT 20 ") List> selectExpiryWarn(); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java index 3199fa6..373814f 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/diagnosis/MedicalRecordService.java @@ -28,6 +28,7 @@ import com.syjiaer.clinic.server.entity.organization.OrganizationMember; import com.syjiaer.clinic.server.entity.organization.OrganizationSection; import com.syjiaer.clinic.server.entity.patient.PatientInfo; import com.syjiaer.clinic.server.entity.patient.PatientRegistration; +import com.syjiaer.clinic.server.entity.patient.vo.SeeDoctorInfoVo; import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.item.ItemMapper; @@ -92,7 +93,7 @@ public class MedicalRecordService extends BaseService { } PatientRegistration updateRegis = new PatientRegistration(); updateRegis.setId(dbRegis.getId()); - updateRegis.setStatus(RegistrationStatusEnum.complete.getType()); + updateRegis.setStatus(RegistrationStatusEnum.complete.getStatus()); patientRegistrationMapper.updateById(updateRegis); //诊断主表 Diagnosis diagnosis = new Diagnosis(); @@ -304,4 +305,32 @@ public class MedicalRecordService extends BaseService { page.setTotal_count(diagnosisList.getTotal_count()); return page; } + + public SeeDoctorInfoVo getSeeDockerInfo(Integer regisId) { + + PatientRegistration registration = patientRegistrationMapper.selectById(regisId); + if (registration == null){ + throw new MessageException("挂号单不存在"); + } + SeeDoctorInfoVo vo = new SeeDoctorInfoVo(); + vo.setPatientInfo(patientInfoMapper.selectById(registration.getPatientInfoId())); + + OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId()); + vo.setDockerId(docker.getId()); + vo.setDockerName(docker.getName()); + if (docker.getSectionId() != null){ + OrganizationSection section = organizationSectionMapper.selectById(docker.getSectionId()); + vo.setSectionName(section.getName()); + } + QueryWrapper diagnosisQueryWrapper = new QueryWrapper<>(); + diagnosisQueryWrapper.eq("patient_id",vo.getPatientInfo().getId()); + diagnosisQueryWrapper.orderByDesc("create_time"); + List diagnosisList = diagnosisMapper.selectList(diagnosisQueryWrapper); + if (!diagnosisList.isEmpty()){ + vo.setLastSeeDoctorTime(diagnosisList.get(0).getCreateTime()); + vo.setSeeDoctorCount(diagnosisList.size()); + } + vo.setSocialBalance(BigDecimal.ZERO); + return vo; + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java index e8998c7..a8d262a 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java @@ -3,7 +3,6 @@ package com.syjiaer.clinic.server.service.patient; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.syjiaer.clinic.server.common.api.annotations.IMField; import com.syjiaer.clinic.server.common.api.input.IM2201; import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.common.constants.Constants; @@ -296,10 +295,10 @@ public class PatientRegistrationService extends BaseService { if (patientRegistration == null){ throw new MessageException("挂号单不存在"); } - if (statusEnum.equals(RegistrationStatusEnum.waiting) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getType())){ + if (statusEnum.equals(RegistrationStatusEnum.waiting) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getStatus())){ throw new MessageException("初始状态不对"); } - if (statusEnum.equals(RegistrationStatusEnum.cancel) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getType())){ + if (statusEnum.equals(RegistrationStatusEnum.cancel) && !patientRegistration.getStatus().equals(RegistrationStatusEnum.inProgress.getStatus())){ throw new MessageException("初始状态不对"); } PatientRegistration updateRegistration = new PatientRegistration(); diff --git a/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java b/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java index 071808d..7860154 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/statistics/StatisticsService.java @@ -2,17 +2,21 @@ package com.syjiaer.clinic.server.service.statistics; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.syjiaer.clinic.server.common.enums.GoodsTypeEnum; +import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum; import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum; import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum; import com.syjiaer.clinic.server.common.util.DateUtil; import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList; -import com.syjiaer.clinic.server.entity.charge.ChargeItemList; import com.syjiaer.clinic.server.entity.charge.ChargeOrder; +import com.syjiaer.clinic.server.entity.diagnosis.Diagnosis; import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.entity.patient.PatientRegistration; import com.syjiaer.clinic.server.entity.statistics.*; import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper; import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper; +import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper; import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; +import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; import com.syjiaer.clinic.server.service.BaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,6 +34,10 @@ public class StatisticsService extends BaseService { private ChargeGoodsListMapper chargeGoodsListMapper; @Autowired private OrganizationMemberMapper organizationMemberMapper; + @Autowired + private PatientRegistrationMapper patientRegistrationMapper; + @Autowired + private DiagnosisMapper diagnosisMapper; public RevenueOverviewVo getRevenueOverview(LocalDateTime begin, LocalDateTime end) { RevenueOverviewVo overviewVo = new RevenueOverviewVo(); @@ -184,4 +192,48 @@ public class StatisticsService extends BaseService { List result = voMaps.values().stream().toList(); return result; } + + public TipCountVo getWaitCount(LocalDateTime beginTime, LocalDateTime endTime) { + TipCountVo tipCountVo = new TipCountVo(); + RegistrationStatusEnum registrationStatusEnum = RegistrationStatusEnum.waiting; + QueryWrapper registrationWrapper = new QueryWrapper<>(); + registrationWrapper.lt("create_datetime", endTime); + registrationWrapper.ge("create_datetime", beginTime); + registrationWrapper.eq("status", registrationStatusEnum.getStatus()); + registrationWrapper.eq("del_flag",0); + tipCountVo.setWaitDiagnosisCount(patientRegistrationMapper.selectCount(registrationWrapper)); + + registrationStatusEnum = RegistrationStatusEnum.inProgress; + registrationWrapper = new QueryWrapper<>(); + registrationWrapper.lt("create_datetime", endTime); + registrationWrapper.ge("create_datetime", beginTime); + registrationWrapper.eq("status", registrationStatusEnum.getStatus()); + registrationWrapper.eq("del_flag",0); + tipCountVo.setDiagnosingCount(patientRegistrationMapper.selectCount(registrationWrapper)); + + registrationStatusEnum = RegistrationStatusEnum.complete; + registrationWrapper = new QueryWrapper<>(); + registrationWrapper.lt("create_datetime", endTime); + registrationWrapper.ge("create_datetime", beginTime); + registrationWrapper.eq("status", registrationStatusEnum.getStatus()); + registrationWrapper.eq("del_flag",0); + tipCountVo.setCompleteDiaCount(patientRegistrationMapper.selectCount(registrationWrapper)); + + + QueryWrapper diagnosisWrapper = new QueryWrapper<>(); + diagnosisWrapper.lt("create_time", endTime); + diagnosisWrapper.ge("create_time", beginTime); + diagnosisWrapper.eq("status", 0); + tipCountVo.setUnchargedCount(diagnosisMapper.selectCount(diagnosisWrapper)); + + diagnosisWrapper = new QueryWrapper<>(); + diagnosisWrapper.lt("create_time", endTime); + diagnosisWrapper.ge("create_time", beginTime); + diagnosisWrapper.eq("status", 1); + tipCountVo.setChargedCount(diagnosisMapper.selectCount(diagnosisWrapper)); + + return tipCountVo; + + + } }