deb
This commit is contained in:
parent
231590c4de
commit
7d4079d2fd
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<SeeDoctorInfoVo> getSeeDockerInfo() {
|
||||
Integer regisId = parmsUtil.getInteger("regisId", "挂单id不能为空");
|
||||
return success( medicalRecordService.getSeeDockerInfo(regisId));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<List<Goods>> numberEarlyWarning() {
|
||||
QueryWrapper<Goods> goodsQuery = new QueryWrapper<>();
|
||||
goodsQuery.apply("inventory_whole_number <= inventory_warn_number");
|
||||
goodsQuery.orderByAsc("inventory_whole_number","type");
|
||||
goodsQuery.last("limit 20");
|
||||
List<Goods> list = goodsService.list(goodsQuery);
|
||||
return success(list);
|
||||
|
|
@ -77,7 +75,16 @@ public class StatisticsController extends BaseController {
|
|||
return success( statisticsService.salePersonReport());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取收费队列 就诊队列数量
|
||||
*/
|
||||
@RequestMapping("/getTipCount")
|
||||
public Result<TipCountVo> 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));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
|
|||
@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<Map<String, Object>> selectExpiryWarn();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Diagnosis> diagnosisQueryWrapper = new QueryWrapper<>();
|
||||
diagnosisQueryWrapper.eq("patient_id",vo.getPatientInfo().getId());
|
||||
diagnosisQueryWrapper.orderByDesc("create_time");
|
||||
List<Diagnosis> diagnosisList = diagnosisMapper.selectList(diagnosisQueryWrapper);
|
||||
if (!diagnosisList.isEmpty()){
|
||||
vo.setLastSeeDoctorTime(diagnosisList.get(0).getCreateTime());
|
||||
vo.setSeeDoctorCount(diagnosisList.size());
|
||||
}
|
||||
vo.setSocialBalance(BigDecimal.ZERO);
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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<SalePersonReportVo> result = voMaps.values().stream().toList();
|
||||
return result;
|
||||
}
|
||||
|
||||
public TipCountVo getWaitCount(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
TipCountVo tipCountVo = new TipCountVo();
|
||||
RegistrationStatusEnum registrationStatusEnum = RegistrationStatusEnum.waiting;
|
||||
QueryWrapper<PatientRegistration> 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<Diagnosis> 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;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue