From b0a5fd76f59b52cf09760a52169272202bf98039 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Tue, 29 Apr 2025 10:17:31 +0800 Subject: [PATCH 01/13] deb --- .../patient/RegistrationController.java | 3 +- .../server/entity/patient/PatientInfo.java | 52 +++++++- .../entity/patient/PatientRegistration.java | 2 +- .../patient/dto/RegistrationSaveDto.java | 79 +++++++++++ .../service/patient/PatientInfoService.java | 123 +++++++++++++++++- .../patient/PatientRegistrationService.java | 26 ++-- 6 files changed, 268 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/patient/dto/RegistrationSaveDto.java diff --git a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java index dc02b00..80e591f 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java @@ -6,6 +6,7 @@ import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; import com.syjiaer.clinic.server.entity.patient.PatientRegistration; import com.syjiaer.clinic.server.entity.patient.dto.RegistrationQuery; +import com.syjiaer.clinic.server.entity.patient.dto.RegistrationSaveDto; import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo; import com.syjiaer.clinic.server.service.patient.PatientInfoService; import com.syjiaer.clinic.server.service.patient.PatientRegistrationService; @@ -30,7 +31,7 @@ public class RegistrationController extends BaseController { @RequestMapping("/add") public Result registration() { - PatientRegistration registrationParam = parmsUtil.getObjectWithCheck("data", PatientRegistration.class); + RegistrationSaveDto registrationParam = parmsUtil.getObjectWithCheck("data", RegistrationSaveDto.class); String mdtrtCertNo = parmsUtil.getString("mdtrtCertNo"); String mdtrtCertType = parmsUtil.getString("mdtrtCertType"); patientRegistrationService.registration(registrationParam,mdtrtCertType,mdtrtCertNo); diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java index 2975c01..9e0edbb 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java @@ -5,20 +5,21 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; - -import java.io.Serializable; - /** *

* 患者信息 *

* * @author NiuZiYuan - * @since 2025-04-17 + * @since 2025-04-29 */ @Getter @Setter @@ -40,12 +41,51 @@ public class PatientInfo implements Serializable { @ApiModelProperty("手机号") private String phone; - @ApiModelProperty("身份证号") - private String certno; + @ApiModelProperty("证件号码") + private String certNo; @ApiModelProperty("性别") private String sex; @ApiModelProperty("年龄") private Integer age; + + @ApiModelProperty("证件类型") + private String certType; + + @ApiModelProperty("来源") + private String source; + + @ApiModelProperty("民族") + private String nation; + + @ApiModelProperty("地区") + private String area; + + @ApiModelProperty("地址") + private String address; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("创建日期") + private LocalDateTime createDatetime; + + @ApiModelProperty("会员等级") + private Integer levelId; + + @ApiModelProperty("经验值") + private Integer exp; + + @ApiModelProperty("积分余额") + private Integer integralBalance; + + @ApiModelProperty("0没绑医保 1已绑定") + private Integer isBindSocial; + + @ApiModelProperty("余额") + private BigDecimal balance; + + @ApiModelProperty("生日") + private LocalDate brithday; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java index f9a3bbc..43550a9 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java @@ -18,7 +18,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-23 + * @since 2025-04-29 */ @Getter @Setter diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/dto/RegistrationSaveDto.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/dto/RegistrationSaveDto.java new file mode 100644 index 0000000..308af7a --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/dto/RegistrationSaveDto.java @@ -0,0 +1,79 @@ +package com.syjiaer.clinic.server.entity.patient.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +@Data +public class RegistrationSaveDto { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("科室id") + private Integer organizationSectionId; + + @ApiModelProperty("医生id") + private Integer organizationDoctorId; + + @ApiModelProperty("患者姓名") + private String name; + + @ApiModelProperty("患者年龄") + private Integer age; + + @ApiModelProperty("患者手机号") + private String phone; + + @ApiModelProperty("就诊类型") + private Short visitType; + + @ApiModelProperty("挂号时间") + private LocalDateTime createDatetime; + + @ApiModelProperty("推荐") + private String recommendations; + + @ApiModelProperty("备注") + private String memo; + + @ApiModelProperty("预诊") + private String advanceDiagnosis; + + @ApiModelProperty("挂号费") + private BigDecimal registrationMoney; + + @ApiModelProperty("逻辑删除") + private Integer delFlag; + + @ApiModelProperty("挂号类型") + private Integer type; + + @ApiModelProperty("性别") + private String gender; + + @ApiModelProperty("病人id") + private Integer patientInfoId; + + @ApiModelProperty("挂号状态 1候诊 2在诊 3已诊 0取消") + private Integer status; + + @ApiModelProperty("人员编号") + private String psnNo; + + @ApiModelProperty("险种类型") + private String insutype; + + @ApiModelProperty("就诊id 挂号后医保返会") + private String mdtrtId; + + @ApiModelProperty("流水号") + private String fstNo; + + @ApiModelProperty("证件号码") + private String certNo; + @ApiModelProperty("证件类型") + private String certType; +} diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java index d6a0dbb..acf393f 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java @@ -1,26 +1,147 @@ package com.syjiaer.clinic.server.service.patient; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import com.syjiaer.clinic.server.entity.vip.Vip; +import com.syjiaer.clinic.server.entity.vip.VipExpLog; +import com.syjiaer.clinic.server.entity.vip.VipIntegralLog; +import com.syjiaer.clinic.server.entity.vip.VipLevelConfig; import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; +import com.syjiaer.clinic.server.mapper.vip.VipExpLogMapper; +import com.syjiaer.clinic.server.mapper.vip.VipIntegralLogMapper; +import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper; import com.syjiaer.clinic.server.service.BaseService; +import com.syjiaer.clinic.server.service.vip.VipLevelConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + @Service public class PatientInfoService extends BaseService { @Autowired private PatientInfoMapper patientInfoMapper; + @Autowired + private VipLevelConfigMapper vipLevelConfigMapper; + @Autowired + private VipLevelConfigService vipLevelConfigService; + @Autowired + private VipExpLogMapper vipExpLogMapper; + @Autowired + private VipIntegralLogMapper vipIntegralLogMapper; public void save(PatientInfo patientInfo){ + patientInfo.setCreateDatetime(LocalDateTime.now()); + if (patientInfo.getBrithday() != null) { + int currentYear = LocalDate.now().getYear(); + int birthYear = patientInfo.getBrithday().getYear(); + patientInfo.setAge(currentYear - birthYear); + } + VipLevelConfig level = vipLevelConfigService.getByExp(patientInfo.getExp()); + if (level != null){ + patientInfo.setLevelId(level.getLevelId()); + }else { + patientInfo.setLevelId(0); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("phone", patientInfo.getPhone()); + queryWrapper.eq("certno", patientInfo.getPhone()); PatientInfo dbInfo = patientInfoMapper.selectOne(queryWrapper); if (dbInfo != null){ patientInfo.setId(dbInfo.getId()); + patientInfo.setExp(null); + patientInfo.setLevelId(null); + patientInfo.setIntegralBalance(null); + patientInfo.setBalance(null); } patientInfoMapper.insertOrUpdate(patientInfo); } + + /** + * 改变会员经验值 + * @param patientId + * @param changeExp + * @param remark + */ + @Transactional(rollbackFor = Exception.class) + public void changeExp(int patientId, int changeExp, String remark){ + PatientInfo patientInfo = patientInfoMapper.selectById(patientId); + if(patientInfo==null){ + throw new MessageException("会员不存在"); + } + int start_exp = patientInfo.getExp(); + int end_exp = start_exp + changeExp; + if(end_exp<0){ + end_exp=0; + changeExp = -start_exp; + } + patientInfo.setExp(end_exp); + // 记录日志 + VipExpLog vipExpLog = new VipExpLog(); + vipExpLog.setStartExp(start_exp); + vipExpLog.setChangeExp(changeExp); + vipExpLog.setEndExp(end_exp); + vipExpLog.setVipId(patientId); + vipExpLog.setCreateDatetime(LocalDateTime.now()); + vipExpLog.setRemark(remark); + //更新VIP等级 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByDesc("start_exp"); + List vipLevelConfigs = vipLevelConfigMapper.selectList(queryWrapper); + for (VipLevelConfig vipLevelConfig : vipLevelConfigs) { + if(end_exp>=vipLevelConfig.getStartExp()){ + patientInfo.setLevelId(vipLevelConfig.getLevelId()); + System.out.println(vipLevelConfig.getLevelId()); + System.out.println(end_exp); + break; + } + } + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id",patientId); + updateWrapper.set("level_id",patientInfo.getLevelId()); + updateWrapper.set("exp",patientInfo.getExp()); + // 保存 + patientInfoMapper.update(updateWrapper); + vipExpLogMapper.insert(vipExpLog); + } + + + /** + * 改变vip积分 + * @param patientId + * @param addIntegral + * @param remark + */ + @Transactional(rollbackFor = Exception.class) + public void changeIntegral(int patientId, int addIntegral, String remark) { + PatientInfo patientInfo = patientInfoMapper.selectById(patientId); + if(patientInfo==null){ + throw new MessageException("会员不存在"); + } + Integer beforeIntegral = patientInfo.getIntegralBalance(); + Integer finalIntegral = beforeIntegral + addIntegral; + PatientInfo updatePatient = new PatientInfo(); + updatePatient.setId(patientId); + updatePatient.setIntegralBalance(finalIntegral); + patientInfoMapper.updateById(updatePatient); + //记录日志 + VipIntegralLog vipIntegralLog = new VipIntegralLog(); + vipIntegralLog.setBeforeIntegral(beforeIntegral); + vipIntegralLog.setAfterIntegral(finalIntegral); + vipIntegralLog.setChangeIntegral(addIntegral); + vipIntegralLog.setRemark(remark); + vipIntegralLog.setCreateTime(LocalDateTime.now()); + vipIntegralLog.setVipId(patientId); + vipIntegralLogMapper.insert(vipIntegralLog); + } + + } 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 3ddda46..7221143 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,6 +3,7 @@ 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; @@ -16,6 +17,7 @@ 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.dto.RegistrationQuery; +import com.syjiaer.clinic.server.entity.patient.dto.RegistrationSaveDto; import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo; import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; @@ -48,7 +50,7 @@ public class PatientRegistrationService extends BaseService { private OrganizationSectionMapper organizationSectionMapper; @Autowired @Lazy - private PatientRegistrationService patientRegistrationService; + private PatientRegistrationService patientRegistrationService; @Autowired private SocialRequest socialRequest; @@ -58,11 +60,18 @@ public class PatientRegistrationService extends BaseService { * @param patientRegistrationParam 挂号信息 */ @Transactional(rollbackFor = Exception.class) - public PatientRegistration registration(PatientRegistration registrationParam,String mdtrtCertType, String mdtrtCertNo) { - //TODO 挂号和患者 记录身份证号非必填 + public PatientRegistration registration(RegistrationSaveDto registrationParam, String mdtrtCertType, String mdtrtCertNo) { if (registrationParam == null) { throw new MessageException("data参数为空"); } + if (registrationParam.getCertType() == null){ + throw new MessageException("证件类型不能为空"); + } + if (registrationParam.getCertNo() == null){ + throw new MessageException("证件号码不能为空"); + } + + LocalDateTime now =LocalDateTime.now(); String fstNo = StringUtil.getCode("FSN"); if (registrationParam.getPatientInfoId() == null){ @@ -73,9 +82,11 @@ public class PatientRegistrationService extends BaseService { patientInfo.setPhone(registrationParam.getPhone()); patientInfo.setSex(registrationParam.getGender()); patientInfo.setAge(registrationParam.getAge()); + patientInfo.setCertType(registrationParam.getCertType()); + patientInfo.setCertNo(registrationParam.getCertNo()); QueryWrapper patientInfoQuery = new QueryWrapper<>(); - patientInfoQuery.eq("phone", registrationParam.getPhone()); + patientInfoQuery.eq("cert_no", registrationParam.getCertNo()); List patientInfoList = patientInfoMapper.selectList(patientInfoQuery); if (patientInfoList.isEmpty()) { patientInfoMapper.insert(patientInfo); @@ -120,14 +131,11 @@ public class PatientRegistrationService extends BaseService { regisWrapper.set("type",2); regisWrapper.eq("id",registration.getId()); patientRegistrationMapper.update(null,regisWrapper); - - - return registration; } public PatientRegistration regisByDockerAndPatient(OrganizationMember docker, PatientInfo patient, Short type, Integer status){ - PatientRegistration registration = new PatientRegistration(); + RegistrationSaveDto registration = new RegistrationSaveDto(); //病人信息 registration.setPatientInfoId(patient.getId()); registration.setName(patient.getName()); @@ -143,6 +151,8 @@ public class PatientRegistrationService extends BaseService { registration.setCreateDatetime(LocalDateTime.now()); registration.setRegistrationMoney(BigDecimal.valueOf(0)); registration.setDelFlag(0); + + return patientRegistrationService.registration(registration,null,null); } From e6d05506d8401d3c5b0339da040805c168c38d98 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Tue, 29 Apr 2025 13:32:20 +0800 Subject: [PATCH 02/13] deb --- .../server/common/enums/ChargeSourceEnum.java | 13 ++ .../server/common/enums/ChargeTypeEnum.java | 12 ++ .../controller/charge/ChargeController.java | 11 +- .../controller/patient/PatientController.java | 86 ++++++++++ .../server/controller/vip/VipController.java | 148 +++++++++--------- .../controller/vip/VipIntegralController.java | 8 +- .../server/entity/charge/ChargeOrder.java | 5 +- .../server/entity/patient/PatientInfo.java | 2 +- .../entity/patient/PatientRegistration.java | 8 +- .../server/service/charge/ChargeService.java | 143 +++++++++++++---- .../vo/RetailOrderDailyChargingReportVo.java | 2 + .../service/patient/PatientInfoService.java | 134 +++++++++++++++- .../patient/PatientRegistrationService.java | 14 +- .../service/vip/VipIntegralLogService.java | 16 +- .../service/vip/VipLevelConfigService.java | 8 +- 15 files changed, 471 insertions(+), 139 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/common/enums/ChargeSourceEnum.java create mode 100644 src/main/java/com/syjiaer/clinic/server/common/enums/ChargeTypeEnum.java create mode 100644 src/main/java/com/syjiaer/clinic/server/controller/patient/PatientController.java diff --git a/src/main/java/com/syjiaer/clinic/server/common/enums/ChargeSourceEnum.java b/src/main/java/com/syjiaer/clinic/server/common/enums/ChargeSourceEnum.java new file mode 100644 index 0000000..3b896d3 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/enums/ChargeSourceEnum.java @@ -0,0 +1,13 @@ +package com.syjiaer.clinic.server.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum ChargeSourceEnum { + CHARGE(0,"门诊收费"); + private final Integer type; + private final String desc; + +} diff --git a/src/main/java/com/syjiaer/clinic/server/common/enums/ChargeTypeEnum.java b/src/main/java/com/syjiaer/clinic/server/common/enums/ChargeTypeEnum.java new file mode 100644 index 0000000..3efc3d4 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/enums/ChargeTypeEnum.java @@ -0,0 +1,12 @@ +package com.syjiaer.clinic.server.common.enums; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum ChargeTypeEnum { + CHARGE(1,"收费"), + REFUND(0,"退费"); + private final Integer chargeType; + private final String desc; +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java index 1bca2eb..6bf5309 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; +import java.util.List; import java.util.Map; @RestController @@ -79,7 +80,7 @@ public class ChargeController extends BaseController { * 每日收费报表 */ @RequestMapping("/dailyChargingReport") - public Result> dailyChargingReport() { + public Result> dailyChargingReport() { String startDateStr = parmsUtil.getString("startDate", "请选择开始时间"); String endDateStr = parmsUtil.getString("endDate", "请选择结束时间"); LocalDateTime startDateTime = DateUtil.getDateTime(startDateStr); @@ -89,4 +90,12 @@ public class ChargeController extends BaseController { return success(chargeService.dailyChargingReport(startDateTime, endDateTime)); } + + @RequestMapping("/getListByPatientId") + public Result> getListByPatientId() { + Integer patientId = parmsUtil.getInteger("patientId"); + return success(chargeService.getListByPatientId(patientId)); + } + + } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/patient/PatientController.java b/src/main/java/com/syjiaer/clinic/server/controller/patient/PatientController.java new file mode 100644 index 0000000..16c57ba --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/controller/patient/PatientController.java @@ -0,0 +1,86 @@ +package com.syjiaer.clinic.server.controller.patient; + +import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.common.vo.Result; +import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; +import com.syjiaer.clinic.server.entity.vip.Vip; +import com.syjiaer.clinic.server.service.patient.PatientInfoService; +import com.syjiaer.clinic.server.service.vip.VipLevelConfigService; +import com.syjiaer.clinic.server.service.vip.VipService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + *

+ * 商品 前端控制器 + *

+ * + * @author NiuZiYuan + * @since 2025-02-21 + */ +@RestController +@RequestMapping("/vip/vip") +public class PatientController extends BaseController { + + @Autowired + private PatientInfoService patientInfoService; + + @RequestMapping("/create") + public Result create() { + PatientInfo patientInfo = parmsUtil.getObject("vipInfo", PatientInfo.class); + patientInfoService.create(patientInfo); + + return success(); + } + + @RequestMapping("/update") + public Result update() { + PatientInfo patientInfo = parmsUtil.getObject("vipInfo", PatientInfo.class); + patientInfoService.update(patientInfo); + return success(); + } + + @RequestMapping("/delete") + public Result delete() { + int patientId = parmsUtil.getInteger("id", "ID不能为空"); + return success(patientInfoService.removeById(patientId)); + } + + @RequestMapping("/list") + public Result> selectList() { + String keyword = parmsUtil.getString("keyword"); + int page = parmsUtil.getInteger("page", "请输入页码"); + int pageSize = parmsUtil.getInteger("pageSize", "请输入每页条数"); + Page list = patientInfoService.pageList(keyword, page, pageSize); + return success(list); + } + + @RequestMapping("/get") + public Result get() { + int id = parmsUtil.getInteger("id", "ID不能为空"); + PatientInfo patientInfo = patientInfoService.getById(id); + return success(patientInfo); + } + + @RequestMapping("/search") + public Result> search() { + String keyword = parmsUtil.getString("keyword", "关键字不能为空"); + List list = patientInfoService.search(keyword); + return success(list); + } + + @RequestMapping("/changeLevel") + public Result changeLevel() { + int vipId = parmsUtil.getInteger("vipId", "会员ID不能为空"); + int levelId = parmsUtil.getInteger("levelId", "等级id不能为空"); + patientInfoService.changeLevel(vipId, levelId); + + return success(); + } + + +} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/vip/VipController.java b/src/main/java/com/syjiaer/clinic/server/controller/vip/VipController.java index a91b19e..c409eaa 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/vip/VipController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/vip/VipController.java @@ -14,77 +14,77 @@ import org.springframework.web.bind.annotation.RestController; import java.time.LocalDate; import java.util.List; -/** - *

- * 商品 前端控制器 - *

- * - * @author NiuZiYuan - * @since 2025-02-21 - */ -@RestController -@RequestMapping("/vip/vip") -public class VipController extends BaseController { - - @Autowired - private VipService vipService; - @Autowired - private VipLevelConfigService vipLevelConfigService; - - @RequestMapping("/create") - public Result create() { - Vip vip = parmsUtil.getObject("vipInfo", Vip.class); - vipService.create(vip); - - return success(); - } - - @RequestMapping("/update") - public Result update() { - Vip vip = parmsUtil.getObject("vipInfo", Vip.class); - - vipService.update(vip); - - return success(); - } - - @RequestMapping("/delete") - public Result delete() { - int vipId = parmsUtil.getInteger("id", "ID不能为空"); - return success(vipService.removeById(vipId)); - } - - @RequestMapping("/list") - public Result> selectList() { - String keyword = parmsUtil.getString("keyword"); - int page = parmsUtil.getInteger("page", "请输入页码"); - int pageSize = parmsUtil.getInteger("pageSize", "请输入每页条数"); - Page list = vipService.pageList(keyword, page, pageSize); - return success(list); - } - - @RequestMapping("/get") - public Result get() { - int id = parmsUtil.getInteger("id", "ID不能为空"); - Vip vip = vipService.getById(id); - return success(vip); - } - - @RequestMapping("/search") - public Result> search() { - String keyword = parmsUtil.getString("keyword", "关键字不能为空"); - List list = vipService.search(keyword); - return success(list); - } - - @RequestMapping("/changeLevel") - public Result changeLevel() { - int vipId = parmsUtil.getInteger("vipId", "会员ID不能为空"); - int levelId = parmsUtil.getInteger("levelId", "等级id不能为空"); - vipService.changeLevel(vipId, levelId); - - return success(); - } - - -} +///** +// *

+// * 商品 前端控制器 +// *

+// * +// * @author NiuZiYuan +// * @since 2025-02-21 +// */ +//@RestController +//@RequestMapping("/vip/vip") +//public class VipController extends BaseController { +// +// @Autowired +// private VipService vipService; +// @Autowired +// private VipLevelConfigService vipLevelConfigService; +// +// @RequestMapping("/create") +// public Result create() { +// Vip vip = parmsUtil.getObject("vipInfo", Vip.class); +// vipService.create(vip); +// +// return success(); +// } +// +// @RequestMapping("/update") +// public Result update() { +// Vip vip = parmsUtil.getObject("vipInfo", Vip.class); +// +// vipService.update(vip); +// +// return success(); +// } +// +// @RequestMapping("/delete") +// public Result delete() { +// int vipId = parmsUtil.getInteger("id", "ID不能为空"); +// return success(vipService.removeById(vipId)); +// } +// +// @RequestMapping("/list") +// public Result> selectList() { +// String keyword = parmsUtil.getString("keyword"); +// int page = parmsUtil.getInteger("page", "请输入页码"); +// int pageSize = parmsUtil.getInteger("pageSize", "请输入每页条数"); +// Page list = vipService.pageList(keyword, page, pageSize); +// return success(list); +// } +// +// @RequestMapping("/get") +// public Result get() { +// int id = parmsUtil.getInteger("id", "ID不能为空"); +// Vip vip = vipService.getById(id); +// return success(vip); +// } +// +// @RequestMapping("/search") +// public Result> search() { +// String keyword = parmsUtil.getString("keyword", "关键字不能为空"); +// List list = vipService.search(keyword); +// return success(list); +// } +// +// @RequestMapping("/changeLevel") +// public Result changeLevel() { +// int vipId = parmsUtil.getInteger("vipId", "会员ID不能为空"); +// int levelId = parmsUtil.getInteger("levelId", "等级id不能为空"); +// vipService.changeLevel(vipId, levelId); +// +// return success(); +// } +// +// +//} diff --git a/src/main/java/com/syjiaer/clinic/server/controller/vip/VipIntegralController.java b/src/main/java/com/syjiaer/clinic/server/controller/vip/VipIntegralController.java index 9dc7eca..054ea7c 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/vip/VipIntegralController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/vip/VipIntegralController.java @@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; import com.syjiaer.clinic.server.entity.vip.VipIntegralLog; import com.syjiaer.clinic.server.entity.vip.dto.VipIntegralLogQuery; +import com.syjiaer.clinic.server.service.patient.PatientInfoService; import com.syjiaer.clinic.server.service.vip.VipIntegralLogService; import com.syjiaer.clinic.server.service.vip.VipService; import org.springframework.beans.factory.annotation.Autowired; @@ -17,17 +19,17 @@ import java.util.List; @RestController @RequestMapping("/vip/integral") public class VipIntegralController extends BaseController { - @Autowired - private VipService vipService; @Autowired private VipIntegralLogService vipIntegralLogService; + @Autowired + private PatientInfoService patientInfoService; @RequestMapping("/add") public Result add(){ Integer vipId = parmsUtil.getInteger("vipId","请输入会员id"); Integer Integral = parmsUtil.getInteger("integral","请输入积分"); String remark = parmsUtil.getString("remark","请输入备注"); - vipService.changeIntegral(vipId,Integral,remark); + patientInfoService.changeIntegral(vipId,Integral,remark); return success(); } @RequestMapping("/list") diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java index f83fd46..4fff2de 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java @@ -19,7 +19,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-27 + * @since 2025-04-29 */ @Getter @Setter @@ -73,4 +73,7 @@ public class ChargeOrder implements Serializable { @ApiModelProperty("总成本") private BigDecimal totalCost; + + @ApiModelProperty("销售人id") + private Integer salePersionId; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java index 9e0edbb..a193301 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java @@ -87,5 +87,5 @@ public class PatientInfo implements Serializable { private BigDecimal balance; @ApiModelProperty("生日") - private LocalDate brithday; + private LocalDate birthday; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java index 43550a9..2501787 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java @@ -48,7 +48,7 @@ public class PatientRegistration implements Serializable { @ApiModelProperty("患者手机号") private String phone; - @ApiModelProperty("就诊类型") + @ApiModelProperty("就诊类型 初诊 复诊") private Short visitType; @ApiModelProperty("挂号时间") @@ -69,11 +69,11 @@ public class PatientRegistration implements Serializable { @ApiModelProperty("逻辑删除") private Integer delFlag; - @ApiModelProperty("挂号类型") + @ApiModelProperty("挂号类型 1普通挂号 2医保挂号") private Integer type; - @ApiModelProperty("性别") - private String gender; + @ApiModelProperty("1男 2女") + private Integer gender; @ApiModelProperty("病人id") private Integer patientInfoId; diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java index 23f14c2..2701241 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java @@ -10,16 +10,11 @@ import com.syjiaer.clinic.server.common.api.output.OM2207A; import com.syjiaer.clinic.server.common.api.request.SocialRequest; import com.syjiaer.clinic.server.common.config.Config; import com.syjiaer.clinic.server.common.constants.Constants; -import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum; -import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum; -import com.syjiaer.clinic.server.common.enums.RetailOrderPayTypeEnum; -import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum; +import com.syjiaer.clinic.server.common.enums.*; import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.util.StringUtil; import com.syjiaer.clinic.server.common.vo.Page; -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.charge.*; import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery; import com.syjiaer.clinic.server.entity.charge.dto.ChargeSaveDto; import com.syjiaer.clinic.server.entity.charge.vo.ChargeDetailVo; @@ -35,11 +30,14 @@ import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.manager.ManagerUser; 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.social.SocialDirectory; import com.syjiaer.clinic.server.entity.social.SocialItem; +import com.syjiaer.clinic.server.entity.social.SocialUser; import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper; import com.syjiaer.clinic.server.mapper.charge.ChargeItemListMapper; +import com.syjiaer.clinic.server.mapper.charge.ChargeLogMapper; import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper; import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper; import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalGoodsListMapper; @@ -54,6 +52,7 @@ import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; import com.syjiaer.clinic.server.mapper.social.SocialDirectoryMapper; import com.syjiaer.clinic.server.mapper.social.SocialItemMapper; +import com.syjiaer.clinic.server.mapper.social.SocialUserMapper; import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.charge.vo.PaymentMethodVo; import com.syjiaer.clinic.server.service.charge.vo.RetailOrderDailyChargingReportVo; @@ -69,16 +68,17 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Service public class ChargeService extends BaseService { @Autowired private ChargeOrderMapper chargeOrderMapper; @Autowired + private ChargeLogMapper chargeLogMapper; + @Autowired + private SocialUserMapper socialUserMapper; + @Autowired private ChargeItemListMapper chargeItemListMapper; @Autowired private ChargeGoodsListMapper chargeGoodsListMapper; @@ -129,7 +129,7 @@ public class ChargeService extends BaseService { } Diagnosis diagnosis = diagnosisMapper.selectById(dto.getId()); //清除该诊断的病例信息 - if (diagnosis != null){ + if (diagnosis != null) { String diaCode = diagnosis.getCode(); diagnosisMedicalGoodsListMapper.delete(new QueryWrapper().eq("diagnosis_code", diaCode)); diagnosisMedicalItemListMapper.delete(new QueryWrapper().eq("diagnosis_code", diaCode)); @@ -137,8 +137,8 @@ public class ChargeService extends BaseService { DiagnosisMedicalRecord medicalRecord = new DiagnosisMedicalRecord(); BeanUtils.copyProperties(dto.getDiagnosisMedicalRecord(), medicalRecord); diagnosisMedicalRecordMapper.updateById(medicalRecord); - List mdItmeList= new ArrayList<>(); - for (ChargeItemListVo item : dto.getItemDetail()){ + List mdItmeList = new ArrayList<>(); + for (ChargeItemListVo item : dto.getItemDetail()) { DiagnosisMedicalItemList itemDetail = new DiagnosisMedicalItemList(); itemDetail.setItemId(item.getId()); itemDetail.setDiagnosisCode(diaCode); @@ -150,8 +150,8 @@ public class ChargeService extends BaseService { mdItmeList.add(itemDetail); } diagnosisMedicalItemListMapper.insert(mdItmeList); - List mdGoodsList= new ArrayList<>(); - for (ChargeGoodsListVo goods : dto.getGoodsDetail()){ + List mdGoodsList = new ArrayList<>(); + for (ChargeGoodsListVo goods : dto.getGoodsDetail()) { DiagnosisMedicalGoodsList goodDetail = new DiagnosisMedicalGoodsList(); goodDetail.setGoodsId(goods.getId()); goodDetail.setDiagnosisCode(diaCode); @@ -169,14 +169,14 @@ public class ChargeService extends BaseService { QueryWrapper listWrapper = new QueryWrapper<>(); listWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode()); - listWrapper.eq("status",RetailOrderStatusEnum.FINISHED.getCode()); + listWrapper.eq("status", RetailOrderStatusEnum.FINISHED.getCode()); List dbList = chargeOrderMapper.selectList(listWrapper); - if (!dbList.isEmpty()){ + if (!dbList.isEmpty()) { throw new MessageException("该诊断已完成收费"); } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("diagnosis_code", dto.getDiagnosisMedicalRecord().getDiagnosisCode()); - queryWrapper.eq("status",RetailOrderStatusEnum.UNFINISHED.getCode()); + queryWrapper.eq("status", RetailOrderStatusEnum.UNFINISHED.getCode()); chargeOrderMapper.delete(queryWrapper); ManagerUser user = getManagerUser(); @@ -202,7 +202,7 @@ public class ChargeService extends BaseService { itemList.setCreateDate(nowLocalDate); itemList.setCreateTime(nowLocalDateTime); chargeServiceLists.add(itemList); - BigDecimal subPrice =service.getSelectedPrice().multiply(BigDecimal.valueOf(service.getSelectedNum())); + BigDecimal subPrice = service.getSelectedPrice().multiply(BigDecimal.valueOf(service.getSelectedNum())); preTotalPrice = preTotalPrice.add(subPrice); totalPrice = totalPrice.add(subPrice); } @@ -284,7 +284,7 @@ public class ChargeService extends BaseService { return resultPage; } -// @Transactional(rollbackFor = Exception.class) + // @Transactional(rollbackFor = Exception.class) // public ChargeOrder updateOrCreate(ChargeOrderDto dto) { // //创建患者 // PatientInfo patientInfo = dto.getPatientInfo(); @@ -348,6 +348,8 @@ public class ChargeService extends BaseService { } inventoryLogMapper.insert(logs); } + //记录收费日志 + this.recordChargeLog(order, ChargeSourceEnum.CHARGE, ChargeTypeEnum.CHARGE); } @@ -371,7 +373,7 @@ public class ChargeService extends BaseService { im2205.setPsnNo(registration.getPsnNo()); im2205.setExpContent(""); socialRequest.call2205(im2205); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } @@ -437,7 +439,7 @@ public class ChargeService extends BaseService { ChargeOrder order = chargeOrderMapper.selectByCode(changeOrderCode); Diagnosis diagnosis = diagnosisMapper.selectByCode(order.getDiagnosisCode()); //预支付只需要卡号 - String cardNumber = mdtrtCertNo.substring(0,mdtrtCertNo.indexOf("|")); + String cardNumber = mdtrtCertNo.substring(0, mdtrtCertNo.indexOf("|")); PatientRegistration registration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId()); IM2206A im2206A = new IM2206A(); @@ -483,7 +485,7 @@ public class ChargeService extends BaseService { OM2207A om2207A = socialRequest.call2207A(im2207A); //完成订单 chargeService.completeOrder(order.getId(), RetailOrderPayTypeEnum.MEDICARE.getCode()); - return om2207A; + return om2207A; } @@ -494,8 +496,8 @@ public class ChargeService extends BaseService { * @param endDateTime * @return */ - public Map dailyChargingReport(LocalDateTime startDateTime, LocalDateTime endDateTime) { - Map result = new HashMap<>(); + public List dailyChargingReport(LocalDateTime startDateTime, LocalDateTime endDateTime) { + Map result = new TreeMap<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.between("create_datetime", startDateTime, endDateTime) .eq("status", RetailOrderStatusEnum.FINISHED.getCode()) @@ -518,13 +520,21 @@ public class ChargeService extends BaseService { } result.put(dateKey, retailOrderDailyChargingReportVo); } - + List voList = new ArrayList<>(); result.forEach((key, value) -> { BigDecimal grossMargin = value.getTotalMoney().subtract(value.getTotalCost()); value.setGrossMargin(grossMargin); - value.setGrossProfitRate(String.format("%.2f%%", grossMargin.divide(value.getTotalMoney(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")))); + BigDecimal divisor = value.getTotalMoney(); + if (divisor.compareTo(BigDecimal.ZERO) == 0) { + // 处理除数为零的情况,例如抛出自定义异常或返回默认值 + value.setGrossProfitRate("0.00%"); + }else { + value.setGrossProfitRate(String.format("%.2f%%", grossMargin.divide(value.getTotalMoney(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")))); + } + value.setDate(LocalDate.parse(key)); + voList.add(value); }); - return result; + return voList; } //获取各支付方式支付的金额 @@ -553,6 +563,79 @@ public class ChargeService extends BaseService { public ChargeOrder getByCode(String code) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("code", code); - return chargeOrderMapper.selectOne(queryWrapper); + return chargeOrderMapper.selectOne(queryWrapper); + } + + /** + * 查询患者消费记录 + * + * @param patientId + * @return + */ + public List getListByPatientId(Integer patientId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("patient_id", patientId); + return chargeOrderMapper.selectList(queryWrapper); + } + + + /** + * 收款 退款 记录 + */ + public void recordChargeLog(ChargeOrder chargeOrder, ChargeSourceEnum sourceEnum, ChargeTypeEnum chargeType){ + ChargeLog chargeLog = new ChargeLog(); + String customer = null; + if (chargeOrder.getPatientId() != null){ + PatientInfo patient = patientInfoMapper.selectById(chargeOrder.getPatientId()); + customer = patient.getName(); + }else if (chargeOrder.getSocialUserId() != null){ + SocialUser socialUser = socialUserMapper.selectById(chargeOrder.getSocialUserId()); + customer = socialUser.getPsnName(); + }else { + customer = "-"; + } + chargeLog.setSource(sourceEnum.getType()); + chargeLog.setCustomer(customer); + chargeLog.setType(chargeType.getChargeType()); + chargeLog.setOriginalPrice(chargeOrder.getPreTotalPrice()); + chargeLog.setReceivable(chargeOrder.getTotalPrice()); + chargeLog.setNetReceipts(chargeOrder.getTotalPrice()); + chargeLog.setDiscount(chargeOrder.getTotalPrice().subtract(chargeOrder.getPreTotalPrice())); + chargeLog.setPayType(chargeOrder.getPayType()); + if (chargeOrder.getSalePersionId() != null){ + OrganizationMember organizationMember = organizationMemberMapper.selectById(chargeOrder.getSalePersionId()); + chargeLog.setSalePersonName(organizationMember.getName()); + chargeLog.setSalePersonId(chargeOrder.getSalePersionId()); + } + chargeLog.setChargeTime(LocalDateTime.now()); + chargeLog.setProjectCode(chargeOrder.getCode()); + chargeLogMapper.insert(chargeLog); + } + /** + * 销售库存变更 日志 + */ + public void recordChargeInventoryLog(InventoryLog log,ChargeOrder chargeOrder){ + ChargeInventoryLog chargeInventoryLog = new ChargeInventoryLog(); + chargeInventoryLog.setChargeOrderCode(chargeOrder.getCode()); + chargeInventoryLog.setGoodsId(log.getGoodsId()); + chargeInventoryLog.setInventoryId(log.getInventoryId()); + chargeInventoryLog.setNumber(log.getChangeWholeNumber()); + Goods dbGoods = goodsMapper.selectById(log.getGoodsId()); + chargeInventoryLog.setTrdnFlag(false); + chargeInventoryLog.setUnit(dbGoods.getPackagingUnit()); + chargeInventoryLog.setNumber(log.getChangeWholeNumber()); + if (log.getChangeFragmentNumber() > 0 ){ + chargeInventoryLog.setTrdnFlag(true); + chargeInventoryLog.setUnit(dbGoods.getMinPackagingUnit()); + chargeInventoryLog.setNumber(log.getChangeWholeNumber()*dbGoods.getMinPackagingNumber()+log.getChangeFragmentNumber()); + } + QueryWrapper listWrapper = new QueryWrapper<>(); + listWrapper.eq("charge_order_code",chargeOrder.getCode()); + listWrapper.eq("goods_id",log.getGoodsId()); + ChargeGoodsList chargeGoodsList = chargeGoodsListMapper.selectOne(listWrapper); +// chargeInventoryLog.setUnitPrice(chargeGoodsList.getUnitPrice()); + + + } } diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java b/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java index 9efee1c..cf12e48 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/vo/RetailOrderDailyChargingReportVo.java @@ -7,6 +7,8 @@ import java.time.LocalDate; @Data public class RetailOrderDailyChargingReportVo { + //日期 + private LocalDate date; //总金额 private BigDecimal totalMoney; //总成本 diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java index acf393f..b3f75b2 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java @@ -3,6 +3,7 @@ package com.syjiaer.clinic.server.service.patient; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.entity.patient.PatientInfo; import com.syjiaer.clinic.server.entity.vip.Vip; import com.syjiaer.clinic.server.entity.vip.VipExpLog; @@ -15,31 +16,37 @@ import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper; import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.vip.VipLevelConfigService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.Iterator; import java.util.List; @Service public class PatientInfoService extends BaseService { + @Autowired + @Lazy + private PatientInfoService patientInfoService; @Autowired private PatientInfoMapper patientInfoMapper; @Autowired private VipLevelConfigMapper vipLevelConfigMapper; @Autowired + @Lazy private VipLevelConfigService vipLevelConfigService; @Autowired private VipExpLogMapper vipExpLogMapper; @Autowired private VipIntegralLogMapper vipIntegralLogMapper; - public void save(PatientInfo patientInfo){ + public PatientInfo save(PatientInfo patientInfo){ patientInfo.setCreateDatetime(LocalDateTime.now()); - if (patientInfo.getBrithday() != null) { + if (patientInfo.getBirthday() != null) { int currentYear = LocalDate.now().getYear(); - int birthYear = patientInfo.getBrithday().getYear(); + int birthYear = patientInfo.getBirthday().getYear(); patientInfo.setAge(currentYear - birthYear); } VipLevelConfig level = vipLevelConfigService.getByExp(patientInfo.getExp()); @@ -50,7 +57,7 @@ public class PatientInfoService extends BaseService { } QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("certno", patientInfo.getPhone()); + queryWrapper.eq("cert_no", patientInfo.getPhone()); PatientInfo dbInfo = patientInfoMapper.selectOne(queryWrapper); if (dbInfo != null){ patientInfo.setId(dbInfo.getId()); @@ -60,6 +67,7 @@ public class PatientInfoService extends BaseService { patientInfo.setBalance(null); } patientInfoMapper.insertOrUpdate(patientInfo); + return patientInfo; } @@ -144,4 +152,122 @@ public class PatientInfoService extends BaseService { } + + /** + * 新建vip + * @param patientInfo + */ + public void create(PatientInfo patientInfo) { + patientInfo.setCreateDatetime(LocalDateTime.now()); + Integer exp = patientInfo.getExp(); + if (patientInfo.getBirthday() != null) { + int currentYear = LocalDate.now().getYear(); + int birthYear = patientInfo.getBirthday().getYear(); + patientInfo.setAge(currentYear - birthYear); + } + patientInfo.setExp(0); + VipLevelConfig level = vipLevelConfigService.getByExp(patientInfo.getExp()); + if (level != null){ + patientInfo.setLevelId(level.getLevelId()); + }else { + patientInfo.setLevelId(0); + } + + patientInfoMapper.insert(patientInfo); + if (exp != null && exp > 0){ + patientInfoService.changeExp(patientInfo.getId(), exp, "会员创建"); + } + } + + + /** + * 更新vip基本信息 经验值和积分不更新 + * @param patientInfo + */ + public void update(PatientInfo patientInfo) { + patientInfo.setExp(null); + patientInfo.setLevelId(null); + patientInfoMapper.updateById(patientInfo); + } + + public int removeById(int vipId) { + return patientInfoMapper.deleteById(vipId); + } + + /** + * vip分页查询 + * @param keyword + * @param pageNum + * @param pageSize + * @return + */ + public Page pageList(String keyword, int pageNum, int pageSize) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (keyword != null && !keyword.isEmpty()){ + queryWrapper.like("name",keyword); + queryWrapper.or().like("phone",keyword); + queryWrapper.or().like("cert_no",keyword); + } + return pageHelper(pageNum, pageSize, queryWrapper, patientInfoMapper, "create_datetime", false); + } + + public PatientInfo getById(int id) { + return patientInfoMapper.selectById(id); + } + + /** + * 根据名称 手机号 身份证搜索vip + * @param keyword + * @return + */ + public List search(String keyword) { + QueryWrapper query = new QueryWrapper<>(); + query.like("name", keyword); + query.or().like("phone", keyword); + query.or().like("cert_no", keyword); + return patientInfoMapper.selectList(query); + } + + + /** + * 改变vip等级 + * @param patientId + * @param levelId + */ + public void changeLevel(int patientId, int levelId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("level_id", levelId); + VipLevelConfig levelConfig = vipLevelConfigMapper.selectOne(queryWrapper); + if (levelConfig == null) { + throw new MessageException("等级不存在"); + } + PatientInfo patientInfo = patientInfoMapper.selectById(patientId); + int changeExp = levelConfig.getStartExp() - patientInfo.getExp(); + patientInfoService.changeExp(patientId, changeExp, "会员等级修改"); + } + + + + /** + * 刷新所有vip等级信息 + */ + public void reFreshAllVipLevel() { + //更新所有vip的等级 + QueryWrapper patientQuery = new QueryWrapper<>(); + patientQuery.select("id,exp"); + List patientList = patientInfoMapper.selectList(patientQuery); + Iterator iterator = patientList.iterator(); + while (iterator.hasNext()) { + PatientInfo patientInfo = iterator.next(); + VipLevelConfig levelConfig = vipLevelConfigService.getByExp(patientInfo.getExp()); + if (levelConfig != null) { + patientInfo.setLevelId(levelConfig.getLevelId()); + } else { + patientInfo.setLevelId(0); + } + patientInfo.setExp(null); + + } + patientInfoMapper.updateById(patientList); + } } 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 7221143..e8998c7 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 @@ -45,6 +45,8 @@ public class PatientRegistrationService extends BaseService { @Autowired private PatientInfoMapper patientInfoMapper; @Autowired + private PatientInfoService patientInfoService; + @Autowired private OrganizationMemberMapper organizationMemberMapper; @Autowired private OrganizationSectionMapper organizationSectionMapper; @@ -84,17 +86,9 @@ public class PatientRegistrationService extends BaseService { patientInfo.setAge(registrationParam.getAge()); patientInfo.setCertType(registrationParam.getCertType()); patientInfo.setCertNo(registrationParam.getCertNo()); + PatientInfo dbPatientInfo = patientInfoService.save(patientInfo); - QueryWrapper patientInfoQuery = new QueryWrapper<>(); - patientInfoQuery.eq("cert_no", registrationParam.getCertNo()); - List patientInfoList = patientInfoMapper.selectList(patientInfoQuery); - if (patientInfoList.isEmpty()) { - patientInfoMapper.insert(patientInfo); - } else { - patientInfo.setId(patientInfoList.get(0).getId()); - patientInfoMapper.updateById(patientInfo); - } - registrationParam.setPatientInfoId(patientInfo.getId()); + registrationParam.setPatientInfoId(dbPatientInfo.getId()); } PatientRegistration registration = new PatientRegistration(); BeanUtils.copyProperties(registrationParam, registration); diff --git a/src/main/java/com/syjiaer/clinic/server/service/vip/VipIntegralLogService.java b/src/main/java/com/syjiaer/clinic/server/service/vip/VipIntegralLogService.java index 07d1ab5..558b65d 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/vip/VipIntegralLogService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/vip/VipIntegralLogService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.syjiaer.clinic.server.common.constants.Constants; import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.entity.patient.PatientInfo; import com.syjiaer.clinic.server.entity.vip.Vip; import com.syjiaer.clinic.server.entity.vip.VipIntegralLog; import com.syjiaer.clinic.server.entity.vip.dto.VipIntegralLogQuery; +import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; import com.syjiaer.clinic.server.mapper.vip.VipIntegralLogMapper; import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper; import com.syjiaer.clinic.server.mapper.vip.VipMapper; @@ -18,12 +20,10 @@ import java.util.List; @Service public class VipIntegralLogService extends BaseService { - @Autowired - private VipMapper vipMapper; - @Autowired - private VipLevelConfigMapper vipLevelConfigMapper; @Autowired private VipIntegralLogMapper vipIntegralLogMapper; + @Autowired + private PatientInfoMapper patientInfoMapper; public Page pageList(VipIntegralLogQuery query) { if (query == null){ @@ -35,12 +35,12 @@ public class VipIntegralLogService extends BaseService { if (query.getPageSize() == null || query.getPageSize() == 0){ query.setPageSize(Constants.DetailPageSize); } - Vip vip = null; + PatientInfo patientInfo = null; if (query.getVipId() != null){ - vip = vipMapper.selectById(query.getVipId()); + patientInfo = patientInfoMapper.selectById(query.getVipId()); } - if (vip == null){ - throw new MessageException("会员不存在"); + if (patientInfo == null){ + throw new MessageException("患者不存在"); } QueryWrapper queryWrapper = new QueryWrapper<>(); diff --git a/src/main/java/com/syjiaer/clinic/server/service/vip/VipLevelConfigService.java b/src/main/java/com/syjiaer/clinic/server/service/vip/VipLevelConfigService.java index 88f6857..6462b32 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/vip/VipLevelConfigService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/vip/VipLevelConfigService.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.syjiaer.clinic.server.entity.vip.VipLevelConfig; import com.syjiaer.clinic.server.mapper.vip.VipLevelConfigMapper; import com.syjiaer.clinic.server.service.BaseService; +import com.syjiaer.clinic.server.service.patient.PatientInfoService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,7 +19,7 @@ public class VipLevelConfigService extends BaseService { @Autowired private VipLevelConfigMapper vipLevelConfigMapper; @Autowired - private VipService vipService; + private PatientInfoService patientInfoService; /** * 根据经验值获取会员等级 @@ -102,14 +104,14 @@ public class VipLevelConfigService extends BaseService { for (VipLevelConfig levelConfig : insertList){ vipLevelConfigMapper.insert(levelConfig); } - vipService.reFreshAllVipLevel(); + patientInfoService.reFreshAllVipLevel(); } @Transactional(rollbackFor = Exception.class) public Integer delete(int id) { Integer count = vipLevelConfigMapper.deleteById(id); - vipService.reFreshAllVipLevel(); + patientInfoService.reFreshAllVipLevel(); return count; } From 8447c5c0c006f633165f802256d1d121a95e2e1d Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Tue, 29 Apr 2025 16:45:56 +0800 Subject: [PATCH 03/13] deb --- .../controller/charge/ChargeController.java | 10 +++ .../statistics/StatisticsController.java | 9 ++ .../server/entity/charge/ChargeOrder.java | 2 +- .../entity/statistics/PayTypeRevenue.java | 1 + .../entity/statistics/RevenueOverviewVo.java | 10 ++- .../entity/statistics/SalePersonReportVo.java | 28 +++++++ .../mapper/charge/ChargeOrderMapper.java | 6 +- .../mapper/inventory/InventoryMapper.java | 2 +- .../server/service/charge/ChargeService.java | 78 ++++++++++------- .../diagnosis/MedicalRecordService.java | 1 + .../service/statistics/StatisticsService.java | 84 +++++++++++++++---- 11 files changed, 180 insertions(+), 51 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/statistics/SalePersonReportVo.java diff --git a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java index 6bf5309..076e649 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java @@ -3,8 +3,10 @@ package com.syjiaer.clinic.server.controller.charge; import com.syjiaer.clinic.server.common.api.output.OM2206A; import com.syjiaer.clinic.server.common.api.output.OM2207A; import com.syjiaer.clinic.server.common.util.DateUtil; +import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.charge.ChargeLog; import com.syjiaer.clinic.server.entity.charge.ChargeOrder; import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery; import com.syjiaer.clinic.server.entity.charge.dto.ChargeSaveDto; @@ -91,6 +93,7 @@ public class ChargeController extends BaseController { } + @RequestMapping("/getListByPatientId") public Result> getListByPatientId() { Integer patientId = parmsUtil.getInteger("patientId"); @@ -98,4 +101,11 @@ public class ChargeController extends BaseController { } + + @RequestMapping("/getChargeRecord") + public Result> getChargeRecord() { + return success(chargeService.getChargeRecordPageList()); + } + + } 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 afbccca..2320482 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 @@ -7,6 +7,7 @@ import com.syjiaer.clinic.server.controller.BaseController; 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.service.goods.GoodsService; import com.syjiaer.clinic.server.service.inventory.InventoryService; import com.syjiaer.clinic.server.service.statistics.StatisticsService; @@ -49,6 +50,7 @@ public class StatisticsController extends BaseController { public Result> numberEarlyWarning() { QueryWrapper goodsQuery = new QueryWrapper<>(); goodsQuery.apply("inventory_whole_number <= inventory_warn_number"); + goodsQuery.last("limit 20"); List list = goodsService.list(goodsQuery); return success(list); } @@ -70,5 +72,12 @@ public class StatisticsController extends BaseController { } + @RequestMapping("/salePerson") + public Result> salePerson() { + return success( statisticsService.salePersonReport()); + } + + + } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java index 4fff2de..76643c3 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/ChargeOrder.java @@ -75,5 +75,5 @@ public class ChargeOrder implements Serializable { private BigDecimal totalCost; @ApiModelProperty("销售人id") - private Integer salePersionId; + private Integer salePersonId; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/statistics/PayTypeRevenue.java b/src/main/java/com/syjiaer/clinic/server/entity/statistics/PayTypeRevenue.java index 8af47e1..ee8be13 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/statistics/PayTypeRevenue.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/statistics/PayTypeRevenue.java @@ -7,6 +7,7 @@ import java.math.BigDecimal; @Getter @Setter public class PayTypeRevenue { + private Integer payType; private BigDecimal totalRevenue; private String name; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/statistics/RevenueOverviewVo.java b/src/main/java/com/syjiaer/clinic/server/entity/statistics/RevenueOverviewVo.java index c6837b1..1b5fd8e 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/statistics/RevenueOverviewVo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/statistics/RevenueOverviewVo.java @@ -14,16 +14,18 @@ import java.util.List; public class RevenueOverviewVo { //总营业额 private BigDecimal totalRevenue; - //会员销售额 - private BigDecimal vipRevenue; + //医保销售额 + private BigDecimal socialRevenue; //总完成单数 private Long totalOrderCount; - //会员单数 - private Long vipOrderCount; + //医保单数 + private Long socialOrderCount; private List goodsTypeRevenue; private List payTypeRevenue; + + } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/statistics/SalePersonReportVo.java b/src/main/java/com/syjiaer/clinic/server/entity/statistics/SalePersonReportVo.java new file mode 100644 index 0000000..b39a64e --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/statistics/SalePersonReportVo.java @@ -0,0 +1,28 @@ +package com.syjiaer.clinic.server.entity.statistics; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class SalePersonReportVo { + private Integer salePersonId; + private String salePersonName; + private BigDecimal totalIncome; + private BigDecimal wechatIncome; + private BigDecimal aliPayIncome; + private BigDecimal cashIncome; + private BigDecimal otherIncome; + private BigDecimal socialIncome; + private Long count; + + public SalePersonReportVo() { + this.totalIncome = BigDecimal.ZERO; + this.wechatIncome = BigDecimal.ZERO; + this.aliPayIncome = BigDecimal.ZERO; + this.cashIncome = BigDecimal.ZERO; + this.otherIncome = BigDecimal.ZERO; + this.socialIncome = BigDecimal.ZERO; + this.count = 0L; + } +} diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeOrderMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeOrderMapper.java index f89ace6..ebb9ef4 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeOrderMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeOrderMapper.java @@ -4,6 +4,9 @@ import com.syjiaer.clinic.server.entity.charge.ChargeOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Select; +import java.util.List; +import java.util.Map; + /** *

@@ -16,6 +19,7 @@ import org.apache.ibatis.annotations.Select; public interface ChargeOrderMapper extends BaseMapper { @Select("select * from charge_order where code = #{code}") ChargeOrder selectByCode(String code); - + @Select("SELECT sale_person_id,pay_type,\"sum\"(total_price) ,\"count\"(0) FROM \"public\".\"charge_order\" GROUP BY sale_person_id,pay_type") + List> selectSaleReport(); } 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 913005b..9199be5 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") + " WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0 limit 20") List> selectExpiryWarn(); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java index 2701241..aca9800 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java @@ -35,10 +35,7 @@ import com.syjiaer.clinic.server.entity.patient.PatientRegistration; import com.syjiaer.clinic.server.entity.social.SocialDirectory; import com.syjiaer.clinic.server.entity.social.SocialItem; import com.syjiaer.clinic.server.entity.social.SocialUser; -import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper; -import com.syjiaer.clinic.server.mapper.charge.ChargeItemListMapper; -import com.syjiaer.clinic.server.mapper.charge.ChargeLogMapper; -import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper; +import com.syjiaer.clinic.server.mapper.charge.*; import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper; import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalGoodsListMapper; import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalItemListMapper; @@ -77,6 +74,8 @@ public class ChargeService extends BaseService { @Autowired private ChargeLogMapper chargeLogMapper; @Autowired + private ChargeInventoryLogMapper chargeInventoryLogMapper; + @Autowired private SocialUserMapper socialUserMapper; @Autowired private ChargeItemListMapper chargeItemListMapper; @@ -330,6 +329,8 @@ public class ChargeService extends BaseService { updateOrder.setPayType(payType); updateOrder.setPayTime(LocalDateTime.now()); chargeOrderMapper.updateById(updateOrder); + + order = chargeOrderMapper.selectById(id); //扣除商品库存 List goodsLists = chargeGoodsListMapper.selectDetailByCode(order.getCode()); for (ChargeGoodsListVo goodsList : goodsLists) { @@ -347,10 +348,12 @@ public class ChargeService extends BaseService { log.setSocialType(InventorySocialTypeEnum.INVENTORY_SURPLUS.getType()); } inventoryLogMapper.insert(logs); + this.recordChargeInventoryLog(logs,order); } //记录收费日志 this.recordChargeLog(order, ChargeSourceEnum.CHARGE, ChargeTypeEnum.CHARGE); + } public void uploadCostDetails(String changeOrderCode) { @@ -602,10 +605,10 @@ public class ChargeService extends BaseService { chargeLog.setNetReceipts(chargeOrder.getTotalPrice()); chargeLog.setDiscount(chargeOrder.getTotalPrice().subtract(chargeOrder.getPreTotalPrice())); chargeLog.setPayType(chargeOrder.getPayType()); - if (chargeOrder.getSalePersionId() != null){ - OrganizationMember organizationMember = organizationMemberMapper.selectById(chargeOrder.getSalePersionId()); + if (chargeOrder.getSalePersonId() != null){ + OrganizationMember organizationMember = organizationMemberMapper.selectById(chargeOrder.getSalePersonId()); chargeLog.setSalePersonName(organizationMember.getName()); - chargeLog.setSalePersonId(chargeOrder.getSalePersionId()); + chargeLog.setSalePersonId(chargeOrder.getSalePersonId()); } chargeLog.setChargeTime(LocalDateTime.now()); chargeLog.setProjectCode(chargeOrder.getCode()); @@ -614,28 +617,47 @@ public class ChargeService extends BaseService { /** * 销售库存变更 日志 */ - public void recordChargeInventoryLog(InventoryLog log,ChargeOrder chargeOrder){ - ChargeInventoryLog chargeInventoryLog = new ChargeInventoryLog(); - chargeInventoryLog.setChargeOrderCode(chargeOrder.getCode()); - chargeInventoryLog.setGoodsId(log.getGoodsId()); - chargeInventoryLog.setInventoryId(log.getInventoryId()); - chargeInventoryLog.setNumber(log.getChangeWholeNumber()); - Goods dbGoods = goodsMapper.selectById(log.getGoodsId()); - chargeInventoryLog.setTrdnFlag(false); - chargeInventoryLog.setUnit(dbGoods.getPackagingUnit()); - chargeInventoryLog.setNumber(log.getChangeWholeNumber()); - if (log.getChangeFragmentNumber() > 0 ){ - chargeInventoryLog.setTrdnFlag(true); - chargeInventoryLog.setUnit(dbGoods.getMinPackagingUnit()); - chargeInventoryLog.setNumber(log.getChangeWholeNumber()*dbGoods.getMinPackagingNumber()+log.getChangeFragmentNumber()); + public void recordChargeInventoryLog(List logs,ChargeOrder chargeOrder){ + List chargeInventoryLogs = new ArrayList<>(); + for (InventoryLog log : logs){ + ChargeInventoryLog chargeInventoryLog = new ChargeInventoryLog(); + chargeInventoryLog.setChargeOrderCode(chargeOrder.getCode()); + chargeInventoryLog.setGoodsId(log.getGoodsId()); + chargeInventoryLog.setInventoryId(log.getInventoryId()); + chargeInventoryLog.setNumber(log.getChangeWholeNumber()); + Goods dbGoods = goodsMapper.selectById(log.getGoodsId()); + chargeInventoryLog.setTrdnFlag(false); + chargeInventoryLog.setUnit(dbGoods.getPackagingUnit()); + chargeInventoryLog.setNumber(log.getChangeWholeNumber()); + if (log.getChangeFragmentNumber() != 0 ){ + chargeInventoryLog.setTrdnFlag(true); + chargeInventoryLog.setUnit(dbGoods.getMinPackagingUnit()); + chargeInventoryLog.setNumber(log.getChangeWholeNumber()*dbGoods.getMinPackagingNumber()+log.getChangeFragmentNumber()); + } + QueryWrapper listWrapper = new QueryWrapper<>(); + listWrapper.eq("charge_order_code",chargeOrder.getCode()); + listWrapper.eq("goods_id",log.getGoodsId()); + ChargeGoodsList chargeGoodsList = chargeGoodsListMapper.selectOne(listWrapper); + chargeInventoryLog.setFeedetlSn(chargeGoodsList.getFeedetlSn()); + chargeInventoryLog.setCreateTime(LocalDateTime.now()); + chargeInventoryLog.setGoodsType(chargeGoodsList.getType()); + chargeInventoryLog.setUploadStatus(UploadStatusEnum.NoUpload.getStatus()); + chargeInventoryLog.setType(ChargeTypeEnum.CHARGE.getChargeType()); + + chargeInventoryLogs.add(chargeInventoryLog); + } - QueryWrapper listWrapper = new QueryWrapper<>(); - listWrapper.eq("charge_order_code",chargeOrder.getCode()); - listWrapper.eq("goods_id",log.getGoodsId()); - ChargeGoodsList chargeGoodsList = chargeGoodsListMapper.selectOne(listWrapper); -// chargeInventoryLog.setUnitPrice(chargeGoodsList.getUnitPrice()); - - + chargeInventoryLogMapper.insert(chargeInventoryLogs); } + + /** + * 获取收费记录 + * @return + */ + public Page getChargeRecordPageList() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + Page page = pageHelper(1, 20, queryWrapper, chargeLogMapper, "charge_time", false); + return page; + } } 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 d8a2286..7d516df 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 @@ -99,6 +99,7 @@ public class MedicalRecordService extends BaseService { Diagnosis diagnosis = new Diagnosis(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("registration_id", saveDto.getRegistrationId()); + queryWrapper.last("limit 1"); Diagnosis dbDiagnosis = diagnosisMapper.selectOne(queryWrapper); if (dbDiagnosis!=null){ diagnosis.setId(dbDiagnosis.getId()); 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 f3a848d..27e487c 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 @@ -8,12 +8,11 @@ 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.statistics.GoodsTypeRevenue; -import com.syjiaer.clinic.server.entity.statistics.PayTypeRevenue; -import com.syjiaer.clinic.server.entity.statistics.PersonPayOverviewVo; -import com.syjiaer.clinic.server.entity.statistics.RevenueOverviewVo; +import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +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.organization.OrganizationMemberMapper; import com.syjiaer.clinic.server.service.BaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,6 +28,9 @@ public class StatisticsService extends BaseService { private ChargeOrderMapper chargeOrderMapper; @Autowired private ChargeGoodsListMapper chargeGoodsListMapper; + @Autowired + private OrganizationMemberMapper organizationMemberMapper; + public RevenueOverviewVo getRevenueOverview(LocalDateTime begin, LocalDateTime end) { RevenueOverviewVo overviewVo = new RevenueOverviewVo(); QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -37,13 +39,21 @@ public class StatisticsService extends BaseService { queryWrapper.le("pay_time", end); queryWrapper.eq("status", RetailOrderStatusEnum.FINISHED.getCode()); Map map = chargeOrderMapper.selectMaps(queryWrapper).get(0); - overviewVo.setTotalRevenue((BigDecimal) map.getOrDefault("total_revenue",new BigDecimal(0))); - overviewVo.setTotalOrderCount((Long) map.getOrDefault("total_order_count",new BigDecimal(0))); -// -// queryWrapper.isNotNull("vip_id"); -// Map vipMap = retailOrderService.getMap(queryWrapper); -// overviewVo.setVipRevenue((BigDecimal) vipMap.getOrDefault("total_revenue",new BigDecimal(0))); -// overviewVo.setVipOrderCount((Long) vipMap.getOrDefault("total_order_count",new BigDecimal(0))); + overviewVo.setTotalRevenue((BigDecimal) map.getOrDefault("total_revenue", new BigDecimal(0))); + overviewVo.setTotalOrderCount((Long) map.getOrDefault("total_order_count", new BigDecimal(0))); + + //医保概况数据 + QueryWrapper socialQuery = new QueryWrapper<>(); + socialQuery.select("sum(total_price) as total_revenue,count(*) as total_order_count"); + socialQuery.ge("pay_time", begin); + socialQuery.le("pay_time", end); + socialQuery.eq("pay_type", RetailOrderPayTypeEnum.MEDICARE.getCode()); + socialQuery.eq("status", RetailOrderStatusEnum.FINISHED.getCode()); + Map socialMap = chargeOrderMapper.selectMaps(socialQuery).get(0); + overviewVo.setSocialRevenue((BigDecimal) socialMap.getOrDefault("total_revenue", new BigDecimal(0))); + overviewVo.setSocialOrderCount((Long) socialMap.getOrDefault("total_order_count", new BigDecimal(0))); + + QueryWrapper payTypeQuery = new QueryWrapper<>(); payTypeQuery.ge("pay_time", begin); @@ -58,8 +68,9 @@ public class StatisticsService extends BaseService { List payTypeRevenueList = new ArrayList<>(); for (Map payTypeMap : payTypeMaps) { PayTypeRevenue revenue = new PayTypeRevenue(); + revenue.setPayType((Integer) payTypeMap.get("pay_type")); revenue.setName(RetailOrderPayTypeEnum.getByCode((Integer) payTypeMap.get("pay_type")).getDesc()); - revenue.setTotalRevenue((BigDecimal) payTypeMap.getOrDefault("total_revenue",new BigDecimal(0))); + revenue.setTotalRevenue((BigDecimal) payTypeMap.getOrDefault("total_revenue", new BigDecimal(0))); payTypeRevenueList.add(revenue); } overviewVo.setPayTypeRevenue(payTypeRevenueList); @@ -70,8 +81,8 @@ public class StatisticsService extends BaseService { retailListQuery.ge("create_time", begin); retailListQuery.le("create_time", end); List> goodsTypeMaps = new ArrayList<>(); - if (!retailOrderCodes.isEmpty() ){ - retailListQuery.in("charge_order_code",retailOrderCodes); + if (!retailOrderCodes.isEmpty()) { + retailListQuery.in("charge_order_code", retailOrderCodes); goodsTypeMaps = chargeGoodsListMapper.selectMaps(retailListQuery); } @@ -80,13 +91,14 @@ public class StatisticsService extends BaseService { for (Map goodsTypeMap : goodsTypeMaps) { GoodsTypeRevenue goodsTypeRevenue = new GoodsTypeRevenue(); goodsTypeRevenue.setName(GoodsTypeEnum.getByType((Integer) goodsTypeMap.get("type")).getDesc()); - goodsTypeRevenue.setTotalRevenue((BigDecimal) goodsTypeMap.getOrDefault("total_revenue",new BigDecimal(0))); + goodsTypeRevenue.setTotalRevenue((BigDecimal) goodsTypeMap.getOrDefault("total_revenue", new BigDecimal(0))); goodsTypeRevenuesList.add(goodsTypeRevenue); } overviewVo.setGoodsTypeRevenue(goodsTypeRevenuesList); + return overviewVo; } @@ -111,7 +123,7 @@ public class StatisticsService extends BaseService { commonQuery.groupBy("create_date"); commonQuery.orderByAsc("create_date"); // commonQuery.isNull("vip_id"); - List> commonMaps = chargeOrderMapper.selectMaps(commonQuery); + List> commonMaps = chargeOrderMapper.selectMaps(commonQuery); List dateList = DateUtil.getDatesBetween(beginTime, endTime); Map tempMap = new TreeMap<>(); for (LocalDate date : dateList) { @@ -130,4 +142,44 @@ public class StatisticsService extends BaseService { return personPayOverview; } + + public List salePersonReport() { + List> maps = chargeOrderMapper.selectSaleReport(); + Map voMaps = new HashMap<>(); + for (Map map : maps) { + Integer salePersonId = (Integer) map.get("sale_person_id"); + SalePersonReportVo vo = voMaps.getOrDefault(salePersonId, new SalePersonReportVo()); + vo.setSalePersonId(salePersonId); + OrganizationMember organizationMember = organizationMemberMapper.selectById(salePersonId); + vo.setSalePersonName(organizationMember.getName()); + vo.setTotalIncome(vo.getTotalIncome().add((BigDecimal) map.get("sum"))); + vo.setCount(vo.getCount()+(Long) map.get("count")); + RetailOrderPayTypeEnum payType = RetailOrderPayTypeEnum.getByCode((Integer) map.get("pay_type")); + if (payType == null){ + continue; + } + switch (payType) { + case WXPAY: + vo.setWechatIncome(vo.getWechatIncome().add((BigDecimal) map.get("sum"))); + break; + case ALIPAY: + vo.setAliPayIncome(vo.getAliPayIncome().add((BigDecimal) map.get("sum"))); + break; + case CASH: + vo.setCashIncome(vo.getCashIncome().add((BigDecimal) map.get("sum"))); + break; + case OTHER: + vo.setOtherIncome(vo.getOtherIncome().add((BigDecimal) map.get("sum"))); + break; + case MEDICARE: + vo.setSocialIncome(vo.getSocialIncome().add((BigDecimal) map.get("sum"))); + break; + default: + break; + } + voMaps.put(salePersonId, vo); + } + List result = voMaps.values().stream().toList(); + return result; + } } From 9ac8ef0eeeba9244f6537e50841066b161af3922 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 30 Apr 2025 10:12:43 +0800 Subject: [PATCH 04/13] deb --- .../OrganizationMemberController.java | 10 +++- .../server/entity/charge/dto/ChargeQuery.java | 1 + .../entity/charge/vo/ChargeDetailVo.java | 3 +- .../organization/dto/DockerSearchQuery.java | 10 ++++ .../entity/organization/vo/MemberVo.java | 56 +++++++++++++++++++ .../OrganizationMemberMapper.java | 5 ++ .../server/service/charge/ChargeService.java | 9 ++- .../diagnosis/MedicalRecordService.java | 1 - .../OrganizationMemberService.java | 26 ++++++++- .../service/statistics/StatisticsService.java | 6 +- .../xml/OrganizationMemberMapper.xml | 9 +++ 11 files changed, 123 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/organization/dto/DockerSearchQuery.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/organization/vo/MemberVo.java diff --git a/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationMemberController.java b/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationMemberController.java index 96b6f08..fa86d99 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationMemberController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/organization/OrganizationMemberController.java @@ -4,8 +4,11 @@ import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; +import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery; import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.entity.organization.dto.DockerSearchQuery; import com.syjiaer.clinic.server.entity.organization.dto.OrganizationMemberSaveDto; +import com.syjiaer.clinic.server.entity.organization.vo.MemberVo; import com.syjiaer.clinic.server.service.organization.OrganizationMemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -56,8 +59,9 @@ public class OrganizationMemberController extends BaseController { return success(organizationMemberService.get(id)); } - @RequestMapping("/allDoctorList") - public Result> allDoctorList() { - return success(organizationMemberService.doctorList()); + @RequestMapping("/search") + public Result> allDoctorList() { + DockerSearchQuery dockerSearchQuery = parmsUtil.getObject("query", DockerSearchQuery.class); + return success(organizationMemberService.doctorList(dockerSearchQuery)); } } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeQuery.java index d01ec2f..c20a8ca 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeQuery.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeQuery.java @@ -7,5 +7,6 @@ public class ChargeQuery { private String patientName; private Integer pageNum; private Integer pageSize; + private Integer patientId; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java index 60f0ac6..16739dd 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java @@ -1,5 +1,6 @@ package com.syjiaer.clinic.server.entity.charge.vo; +import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList; import com.syjiaer.clinic.server.entity.charge.ChargeItemList; import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalRecord; import com.syjiaer.clinic.server.entity.patient.PatientInfo; @@ -60,6 +61,6 @@ public class ChargeDetailVo { @ApiModelProperty("诊疗服务") private List serviceDetail; @ApiModelProperty("药品耗材") - private List goodsDetail; + private List goodsDetail; } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/organization/dto/DockerSearchQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/organization/dto/DockerSearchQuery.java new file mode 100644 index 0000000..3099f11 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/organization/dto/DockerSearchQuery.java @@ -0,0 +1,10 @@ +package com.syjiaer.clinic.server.entity.organization.dto; + +import lombok.Data; + +@Data +public class DockerSearchQuery { + private String name; + private Integer sectionId; + private Integer role; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/organization/vo/MemberVo.java b/src/main/java/com/syjiaer/clinic/server/entity/organization/vo/MemberVo.java new file mode 100644 index 0000000..a4ee1df --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/organization/vo/MemberVo.java @@ -0,0 +1,56 @@ +package com.syjiaer.clinic.server.entity.organization.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +@Data +public class MemberVo { + @ApiModelProperty("自增主键") + private Integer id; + + @ApiModelProperty("成员电话") + private String tel; + + @ApiModelProperty("医保人员代码") + private String socialMemberCode; + + @ApiModelProperty("电子签名") + private String electronicSignature; + + @ApiModelProperty("性别") + private String gender; + + @ApiModelProperty("年龄") + private String age; + + @ApiModelProperty("创建时间") + private LocalDateTime createDatetime; + + @ApiModelProperty("身份证号") + private String idCardNumber; + + @ApiModelProperty("所属科室") + private Integer sectionId; + + @ApiModelProperty("备注") + private String memo; + + @ApiModelProperty("管理员id") + private Integer managerUserId; + + @ApiModelProperty("成员名") + private String name; + + @ApiModelProperty("角色") + private Integer role; + + @ApiModelProperty("删除标记") + private Boolean delFlag; + + @ApiModelProperty("科室名称") + private String sectionName; + +} diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java index 052ee61..dfac745 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java @@ -2,9 +2,12 @@ package com.syjiaer.clinic.server.mapper.organization; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.entity.organization.vo.MemberVo; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.io.Serializable; +import java.util.List; /** @@ -16,5 +19,7 @@ import java.io.Serializable; * @since 2025-04-11 */ public interface OrganizationMemberMapper extends BaseMapper { + + List selectDetailByIds(@Param("ids") List ids); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java index aca9800..a1d65cc 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java @@ -247,6 +247,7 @@ public class ChargeService extends BaseService { chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode()); chargeOrder.setPatientId(dto.getPatientInfo().getId()); chargeOrder.setDiagnosisCode(dto.getDiagnosisMedicalRecord().getDiagnosisCode()); + chargeOrder.setSalePersonId(dto.getPatientRegistration().getOrganizationDoctorId()); chargeOrderMapper.insert(chargeOrder); return chargeOrder; @@ -264,16 +265,18 @@ public class ChargeService extends BaseService { if (query.getPatientName() != null) { queryWrapper.like("patient_name", query.getPatientName()); } + if (query.getPatientId() != null){ + queryWrapper.eq("patient_id", query.getPatientId()); + } Page orderPage = pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, chargeOrderMapper, "create_datetime", false); List voList = new ArrayList<>(); for (ChargeOrder chargeOrder : orderPage.getList()) { ChargeDetailVo detailVo = new ChargeDetailVo(); BeanUtils.copyProperties(chargeOrder, detailVo); detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId())); - detailVo.setServiceDetail(chargeItemListMapper.selectList(new QueryWrapper() - .eq("charge_order_code", chargeOrder.getCode()))); + detailVo.setServiceDetail(chargeItemListMapper.selectByCode(chargeOrder.getCode())); - detailVo.setGoodsDetail(chargeGoodsListMapper.selectDetailByCode(chargeOrder.getCode())); + detailVo.setGoodsDetail(chargeGoodsListMapper.selectByCode(chargeOrder.getCode())); voList.add(detailVo); } Page resultPage = new Page<>(); 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 7d516df..6dcc33c 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 @@ -10,7 +10,6 @@ import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum; import com.syjiaer.clinic.server.common.exception.MessageException; import com.syjiaer.clinic.server.common.util.StringUtil; import com.syjiaer.clinic.server.common.vo.Page; -import com.syjiaer.clinic.server.entity.charge.vo.ChargeDetailVo; import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo; import com.syjiaer.clinic.server.entity.charge.vo.ChargeItemListVo; import com.syjiaer.clinic.server.entity.diagnosis.Diagnosis; diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java index 5c35568..6995359 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java @@ -2,12 +2,16 @@ package com.syjiaer.clinic.server.service.organization; 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.exception.MessageException; import com.syjiaer.clinic.server.common.util.FileUtil; import com.syjiaer.clinic.server.common.vo.Page; +import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery; import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.entity.organization.dto.DockerSearchQuery; import com.syjiaer.clinic.server.entity.organization.dto.OrganizationMemberSaveDto; +import com.syjiaer.clinic.server.entity.organization.vo.MemberVo; import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper; import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; import com.syjiaer.clinic.server.service.BaseService; @@ -145,9 +149,25 @@ public class OrganizationMemberService extends BaseService { /* * 获取医生列表 */ - public List doctorList() { + public List doctorList(DockerSearchQuery dockerSearchQuery) { + if (dockerSearchQuery == null){ + return new ArrayList<>(); + } QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("role", 1); - return organizationMemberMapper.selectList(queryWrapper); + + queryWrapper.select("id"); + if (dockerSearchQuery.getName() != null){ + queryWrapper.like("name", dockerSearchQuery.getName()); + } + if (dockerSearchQuery.getSectionId() != null){ + queryWrapper.eq("section_id", dockerSearchQuery.getSectionId()); + } + if (dockerSearchQuery.getRole() != null){ + queryWrapper.eq("role", dockerSearchQuery.getRole()); + } + + List ids = organizationMemberMapper.selectObjs(queryWrapper); + + return organizationMemberMapper.selectDetailByIds(ids); } } 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 27e487c..071808d 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 @@ -150,8 +150,10 @@ public class StatisticsService extends BaseService { Integer salePersonId = (Integer) map.get("sale_person_id"); SalePersonReportVo vo = voMaps.getOrDefault(salePersonId, new SalePersonReportVo()); vo.setSalePersonId(salePersonId); - OrganizationMember organizationMember = organizationMemberMapper.selectById(salePersonId); - vo.setSalePersonName(organizationMember.getName()); + if (salePersonId != null){ + OrganizationMember organizationMember = organizationMemberMapper.selectById(salePersonId); + vo.setSalePersonName(organizationMember.getName()); + } vo.setTotalIncome(vo.getTotalIncome().add((BigDecimal) map.get("sum"))); vo.setCount(vo.getCount()+(Long) map.get("count")); RetailOrderPayTypeEnum payType = RetailOrderPayTypeEnum.getByCode((Integer) map.get("pay_type")); diff --git a/src/main/resources/xml/OrganizationMemberMapper.xml b/src/main/resources/xml/OrganizationMemberMapper.xml index 4d96655..f1dbb52 100644 --- a/src/main/resources/xml/OrganizationMemberMapper.xml +++ b/src/main/resources/xml/OrganizationMemberMapper.xml @@ -2,4 +2,13 @@ + From 10929596a45512d8f1abb5c1e06be5ab27c7d30f Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 30 Apr 2025 10:34:26 +0800 Subject: [PATCH 05/13] deb --- .../organization/dto/DockerSearchQuery.java | 5 +++-- .../organization/OrganizationMemberMapper.java | 3 ++- .../organization/OrganizationMemberService.java | 17 +---------------- .../resources/xml/OrganizationMemberMapper.xml | 16 ++++++++++------ 4 files changed, 16 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/syjiaer/clinic/server/entity/organization/dto/DockerSearchQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/organization/dto/DockerSearchQuery.java index 3099f11..add886e 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/organization/dto/DockerSearchQuery.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/organization/dto/DockerSearchQuery.java @@ -4,7 +4,8 @@ import lombok.Data; @Data public class DockerSearchQuery { - private String name; - private Integer sectionId; + private String keyword; private Integer role; + + } diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java index dfac745..4a0d5c6 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/organization/OrganizationMemberMapper.java @@ -2,6 +2,7 @@ package com.syjiaer.clinic.server.mapper.organization; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.syjiaer.clinic.server.entity.organization.OrganizationMember; +import com.syjiaer.clinic.server.entity.organization.dto.DockerSearchQuery; import com.syjiaer.clinic.server.entity.organization.vo.MemberVo; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -20,6 +21,6 @@ import java.util.List; */ public interface OrganizationMemberMapper extends BaseMapper { - List selectDetailByIds(@Param("ids") List ids); + List selectDetailByQuery(DockerSearchQuery query); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java index 6995359..ec85a3f 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java @@ -153,21 +153,6 @@ public class OrganizationMemberService extends BaseService { if (dockerSearchQuery == null){ return new ArrayList<>(); } - QueryWrapper queryWrapper = new QueryWrapper<>(); - - queryWrapper.select("id"); - if (dockerSearchQuery.getName() != null){ - queryWrapper.like("name", dockerSearchQuery.getName()); - } - if (dockerSearchQuery.getSectionId() != null){ - queryWrapper.eq("section_id", dockerSearchQuery.getSectionId()); - } - if (dockerSearchQuery.getRole() != null){ - queryWrapper.eq("role", dockerSearchQuery.getRole()); - } - - List ids = organizationMemberMapper.selectObjs(queryWrapper); - - return organizationMemberMapper.selectDetailByIds(ids); + return organizationMemberMapper.selectDetailByQuery(dockerSearchQuery); } } diff --git a/src/main/resources/xml/OrganizationMemberMapper.xml b/src/main/resources/xml/OrganizationMemberMapper.xml index f1dbb52..c1a5e1d 100644 --- a/src/main/resources/xml/OrganizationMemberMapper.xml +++ b/src/main/resources/xml/OrganizationMemberMapper.xml @@ -2,13 +2,17 @@ - SELECT om.*,os.name AS section_name FROM organization_member AS om LEFT JOIN organization_section AS os ON om.section_id = os.id - WHERE om.id IN - - #{id} - - + + + om.name LIKE concat('%', #{keyword}, '%') + or os.name LIKE concat('%', #{keyword}, '%') + + + And om.role = #{role} + + From 231590c4de0df0dede268f6b948645ff85f55729 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 30 Apr 2025 10:48:24 +0800 Subject: [PATCH 06/13] deb --- .../clinic/server/entity/diagnosis/dto/ChargeQueueQuery.java | 1 + .../clinic/server/service/diagnosis/MedicalRecordService.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/dto/ChargeQueueQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/dto/ChargeQueueQuery.java index bb149be..0c2cc31 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/dto/ChargeQueueQuery.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/dto/ChargeQueueQuery.java @@ -7,4 +7,5 @@ public class ChargeQueueQuery { private String patientName; private Integer pageNum; private Integer pageSize; + private Integer status; } 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 6dcc33c..3199fa6 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 @@ -286,7 +286,9 @@ public class MedicalRecordService extends BaseService { */ public Page getChargeQueue(ChargeQueueQuery query) { QueryWrapper queryWrapper = new QueryWrapper<>(); - + if (query.getStatus() != null){ + queryWrapper.eq("status", query.getStatus()); + } Page diagnosisList =pageHelper(query.getPageNum(), query.getPageSize(),queryWrapper,diagnosisMapper,"create_time", false); List list = new ArrayList<>(); From 7d4079d2fd56a008ede52993b8f5183089d16668 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 30 Apr 2025 13:15:22 +0800 Subject: [PATCH 07/13] deb --- .../enums/MedicalRecordDetailTypeEnum.java | 25 --------- .../common/enums/RegistrationStatusEnum.java | 12 ++--- .../diagnosis/MedicalRecordController.java | 12 +++++ .../statistics/StatisticsController.java | 19 ++++--- .../diagnosis/dto/MedicalRecordSaveDto.java | 4 +- .../entity/patient/vo/SeeDoctorInfoVo.java | 24 +++++++++ .../server/entity/statistics/TipCountVo.java | 19 +++++++ .../mapper/inventory/InventoryMapper.java | 2 +- .../diagnosis/MedicalRecordService.java | 31 ++++++++++- .../patient/PatientRegistrationService.java | 5 +- .../service/statistics/StatisticsService.java | 54 ++++++++++++++++++- 11 files changed, 161 insertions(+), 46 deletions(-) delete mode 100644 src/main/java/com/syjiaer/clinic/server/common/enums/MedicalRecordDetailTypeEnum.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/patient/vo/SeeDoctorInfoVo.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java 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; + + + } } From 885a482bf3df589b1643a89c96a3f7b0ea77fbd2 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 30 Apr 2025 14:28:06 +0800 Subject: [PATCH 08/13] deb --- .../com/syjiaer/clinic/server/entity/patient/PatientInfo.java | 4 ++-- .../clinic/server/entity/patient/dto/RegistrationSaveDto.java | 2 +- .../syjiaer/clinic/server/service/charge/ChargeService.java | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java index a193301..772ade2 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientInfo.java @@ -19,7 +19,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-29 + * @since 2025-04-30 */ @Getter @Setter @@ -45,7 +45,7 @@ public class PatientInfo implements Serializable { private String certNo; @ApiModelProperty("性别") - private String sex; + private Integer sex; @ApiModelProperty("年龄") private Integer age; diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/dto/RegistrationSaveDto.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/dto/RegistrationSaveDto.java index 308af7a..85dc0ab 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/dto/RegistrationSaveDto.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/dto/RegistrationSaveDto.java @@ -52,7 +52,7 @@ public class RegistrationSaveDto { private Integer type; @ApiModelProperty("性别") - private String gender; + private Integer gender; @ApiModelProperty("病人id") private Integer patientInfoId; diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java index a1d65cc..f90a3e7 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java @@ -273,6 +273,7 @@ public class ChargeService extends BaseService { for (ChargeOrder chargeOrder : orderPage.getList()) { ChargeDetailVo detailVo = new ChargeDetailVo(); BeanUtils.copyProperties(chargeOrder, detailVo); + detailVo.setDiagnosisMedicalRecord(diagnosisMedicalRecordMapper.selectByDiagnosisCode(chargeOrder.getDiagnosisCode())); detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId())); detailVo.setServiceDetail(chargeItemListMapper.selectByCode(chargeOrder.getCode())); From e35fc0536e37124a11ada539250c6d81ed66738c Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 30 Apr 2025 14:48:56 +0800 Subject: [PATCH 09/13] deb --- .../controller/charge/ChargeController.java | 1 + .../diagnosis/MedicalRecordController.java | 9 +- .../entity/diagnosis/vo/ChargeQueueVo.java | 33 ++++++++ .../diagnosis/MedicalRecordService.java | 84 +++++++++++-------- 4 files changed, 90 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/diagnosis/vo/ChargeQueueVo.java diff --git a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java index 076e649..e4ba3bb 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java @@ -108,4 +108,5 @@ public class ChargeController extends BaseController { } + } 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 8d51380..4c6d08e 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 @@ -5,6 +5,7 @@ import com.syjiaer.clinic.server.common.vo.Result; 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.ChargeQueueVo; 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; @@ -55,7 +56,7 @@ public class MedicalRecordController extends BaseController { * 获取收费队列 */ @RequestMapping("/getChargeQueue") - public Result> getChargeQueue() { + public Result> getChargeQueue() { ChargeQueueQuery query = parmsUtil.getObject("query", ChargeQueueQuery.class); return success( medicalRecordService.getChargeQueue(query)); @@ -70,5 +71,11 @@ public class MedicalRecordController extends BaseController { return success( medicalRecordService.getSeeDockerInfo(regisId)); } + @RequestMapping("/getByDiagnosisCode") + public Result getByDiagnosisCode() { + String diagnosisCode = parmsUtil.getString("diagnosisCode", "诊断code不能为空"); + return success( medicalRecordService.getByDiagnosisCode(diagnosisCode)); + } + } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/vo/ChargeQueueVo.java b/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/vo/ChargeQueueVo.java new file mode 100644 index 0000000..9e12c72 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/diagnosis/vo/ChargeQueueVo.java @@ -0,0 +1,33 @@ +package com.syjiaer.clinic.server.entity.diagnosis.vo; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +@Data +public class ChargeQueueVo { + + @ApiModelProperty("自增id") + private Integer id; + + @ApiModelProperty("患者id") + private Integer patientId; + + @ApiModelProperty("诊断code") + private String code; + + @ApiModelProperty("挂单id") + private Integer registrationId; + @ApiModelProperty("状态") + private Integer status; + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + @ApiModelProperty("患者名称") + private String patientName; + @ApiModelProperty("患者性别") + private Integer patientGender; +} 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 373814f..cfc0f1f 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 @@ -15,6 +15,7 @@ import com.syjiaer.clinic.server.entity.charge.vo.ChargeItemListVo; import com.syjiaer.clinic.server.entity.diagnosis.Diagnosis; import com.syjiaer.clinic.server.entity.diagnosis.dto.ChargeQueueQuery; import com.syjiaer.clinic.server.entity.diagnosis.dto.ItemRetailDto; +import com.syjiaer.clinic.server.entity.diagnosis.vo.ChargeQueueVo; import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.manager.ManagerUser; @@ -78,18 +79,19 @@ public class MedicalRecordService extends BaseService { @Autowired private DiagnosisMapper diagnosisMapper; @Autowired - private PatientInfoMapper patientInfoMapper; + private PatientInfoMapper patientInfoMapper; + /* - * 保存 - * @param saveDto 病历信息 + * 保存 + * @param saveDto 病历信息 */ @Transactional(rollbackFor = Exception.class) public void save(MedicalRecordSaveDto saveDto) { //改变挂号单状态 - PatientRegistration dbRegis = patientRegistrationMapper.selectById(saveDto.getRegistrationId()); - if (dbRegis == null){ - throw new MessageException("挂号单不存在"); + PatientRegistration dbRegis = patientRegistrationMapper.selectById(saveDto.getRegistrationId()); + if (dbRegis == null) { + throw new MessageException("挂号单不存在"); } PatientRegistration updateRegis = new PatientRegistration(); updateRegis.setId(dbRegis.getId()); @@ -101,17 +103,17 @@ public class MedicalRecordService extends BaseService { queryWrapper.eq("registration_id", saveDto.getRegistrationId()); queryWrapper.last("limit 1"); Diagnosis dbDiagnosis = diagnosisMapper.selectOne(queryWrapper); - if (dbDiagnosis!=null){ - diagnosis.setId(dbDiagnosis.getId()); + if (dbDiagnosis != null) { + diagnosis.setId(dbDiagnosis.getId()); } String code = StringUtil.getCode("ZD"); LocalDateTime now = LocalDateTime.now(); BeanUtils.copyProperties(saveDto, diagnosis); diagnosis.setStatus(0); - if (diagnosis.getId() == null){ + if (diagnosis.getId() == null) { diagnosis.setCode(code); diagnosis.setCreateTime(now); - }else { + } else { code = diagnosis.getCode(); } @@ -137,8 +139,8 @@ public class MedicalRecordService extends BaseService { itemDetail.setSocialCode(dbItem.getItemSocialCode()); itemDetail.setUnit(dbItem.getUnit()); itemDetail.setUnitPrice(dbItem.getUnitPrice()); - if (item.getSelectedNum() == null ||item.getSelectedNum() <= 0){ - throw new MessageException("["+item.getItemName()+"]数量为0"); + if (item.getSelectedNum() == null || item.getSelectedNum() <= 0) { + throw new MessageException("[" + item.getItemName() + "]数量为0"); } itemDetail.setNumber(item.getSelectedNum()); itemLists.add(itemDetail); @@ -157,8 +159,8 @@ public class MedicalRecordService extends BaseService { goodsDetail.setUnit(goodsRetailDto.getSelectedUnit()); goodsDetail.setUnitPrice(goodsRetailDto.getSelectedPrice()); goodsDetail.setNumber(goodsRetailDto.getSelectedNum()); - if (goodsRetailDto.getSelectedNum() == null ||goodsRetailDto.getSelectedNum() <= 0){ - throw new MessageException("["+goodsRetailDto.getName()+"]数量为0"); + if (goodsRetailDto.getSelectedNum() == null || goodsRetailDto.getSelectedNum() <= 0) { + throw new MessageException("[" + goodsRetailDto.getName() + "]数量为0"); } goodsLists.add(goodsDetail); } @@ -169,6 +171,7 @@ public class MedicalRecordService extends BaseService { /** * 根据患者的id查询病历 + * * @param patientId * @return */ @@ -200,6 +203,7 @@ public class MedicalRecordService extends BaseService { /** * 根据挂单号回显病历信息 + * * @param regisId * @return */ @@ -227,18 +231,18 @@ public class MedicalRecordService extends BaseService { return vo; } - public void uploadDiagnosis(String diagnosisCode){ + public void uploadDiagnosis(String diagnosisCode) { Diagnosis diagnosis = diagnosisMapper.selectByCode(diagnosisCode); - if (diagnosis == null){ + if (diagnosis == null) { throw new MessageException("诊断不存在"); } DiagnosisMedicalRecord diagnosisMedicalRecord = diagnosisMedicalRecordMapper.selectByDiagnosisCode(diagnosisCode); - if (diagnosisMedicalRecord == null){ + if (diagnosisMedicalRecord == null) { throw new MessageException("病历不存在"); } PatientRegistration patientRegistration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId()); - if (patientRegistration == null){ + if (patientRegistration == null) { throw new MessageException("挂号单不存在"); } OrganizationSection section = organizationSectionMapper.selectById(patientRegistration.getOrganizationSectionId()); @@ -251,7 +255,7 @@ public class MedicalRecordService extends BaseService { IM2203A.Mdtrtinfo mdtrtinfo = new IM2203A.Mdtrtinfo(); mdtrtinfo.setMdtrt_id(patientRegistration.getMdtrtId()); mdtrtinfo.setPsn_no(patientRegistration.getPsnNo()); - mdtrtinfo.setMed_type(config.get("social","medType")); + mdtrtinfo.setMed_type(config.get("social", "medType")); mdtrtinfo.setBegntime(curTime); IM2203A.ExpContent expContent = new IM2203A.ExpContent(); expContent.setTrum_flag("0"); @@ -259,9 +263,9 @@ public class MedicalRecordService extends BaseService { mdtrtinfo.setExp_content(expContent); im2203A.setMdtrtinfo(mdtrtinfo); JSONArray jsonArray = JSONArray.parseArray(diagnosisMedicalRecord.getDiagnosisDetail()); - int i =0; + int i = 0; List diagList = new ArrayList<>(); - for (Object object : jsonArray){ + for (Object object : jsonArray) { i++; JSONObject json = (JSONObject) object; IM2203A.Diseinfo diag = new IM2203A.Diseinfo(); @@ -282,24 +286,27 @@ public class MedicalRecordService extends BaseService { } - /* - 获取收费队列 - */ - public Page getChargeQueue(ChargeQueueQuery query) { + + + public Page getChargeQueue(ChargeQueueQuery query) { QueryWrapper queryWrapper = new QueryWrapper<>(); - if (query.getStatus() != null){ + if (query.getStatus() != null) { queryWrapper.eq("status", query.getStatus()); } - Page diagnosisList =pageHelper(query.getPageNum(), query.getPageSize(),queryWrapper,diagnosisMapper,"create_time", false); + Page diagnosisList = pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, diagnosisMapper, "create_time", false); - List list = new ArrayList<>(); - for (Diagnosis diagnosis : diagnosisList.getList()){ - MedicalRecordVo vo = new MedicalRecordVo(); - vo = getDetailByRegisId(diagnosis.getRegistrationId()); + List list = new ArrayList<>(); + for (Diagnosis diagnosis : diagnosisList.getList()) { + ChargeQueueVo vo = new ChargeQueueVo(); + BeanUtils.copyProperties(diagnosis, vo); + PatientRegistration registration = patientRegistrationMapper.selectById(diagnosis.getRegistrationId()); + vo.setPatientId(registration.getPatientInfoId()); + vo.setPatientName(registration.getName()); + vo.setPatientGender(registration.getGender()); list.add(vo); } - Page page = new Page<>(); + Page page = new Page<>(); page.setList(list); page.setTotal_page(diagnosisList.getTotal_page()); page.setTotal_count(diagnosisList.getTotal_count()); @@ -309,7 +316,7 @@ public class MedicalRecordService extends BaseService { public SeeDoctorInfoVo getSeeDockerInfo(Integer regisId) { PatientRegistration registration = patientRegistrationMapper.selectById(regisId); - if (registration == null){ + if (registration == null) { throw new MessageException("挂号单不存在"); } SeeDoctorInfoVo vo = new SeeDoctorInfoVo(); @@ -318,19 +325,24 @@ public class MedicalRecordService extends BaseService { OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId()); vo.setDockerId(docker.getId()); vo.setDockerName(docker.getName()); - if (docker.getSectionId() != null){ + 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.eq("patient_id", vo.getPatientInfo().getId()); diagnosisQueryWrapper.orderByDesc("create_time"); List diagnosisList = diagnosisMapper.selectList(diagnosisQueryWrapper); - if (!diagnosisList.isEmpty()){ + if (!diagnosisList.isEmpty()) { vo.setLastSeeDoctorTime(diagnosisList.get(0).getCreateTime()); vo.setSeeDoctorCount(diagnosisList.size()); } vo.setSocialBalance(BigDecimal.ZERO); return vo; } + + public MedicalRecordVo getByDiagnosisCode(String diagnosisCode) { + Diagnosis diagnosis = diagnosisMapper.selectByCode(diagnosisCode); + return getDetailByRegisId(diagnosis.getRegistrationId()); + } } From 661d0856e257567ae2162657ce828e4eededb760 Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 30 Apr 2025 16:39:59 +0800 Subject: [PATCH 10/13] deb --- .../clinic/server/service/patient/PatientInfoService.java | 2 +- src/main/resources/xml/OrganizationMemberMapper.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java index b3f75b2..d2a2c2d 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java @@ -57,7 +57,7 @@ public class PatientInfoService extends BaseService { } QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("cert_no", patientInfo.getPhone()); + queryWrapper.eq("cert_no", patientInfo.getCertNo()); PatientInfo dbInfo = patientInfoMapper.selectOne(queryWrapper); if (dbInfo != null){ patientInfo.setId(dbInfo.getId()); diff --git a/src/main/resources/xml/OrganizationMemberMapper.xml b/src/main/resources/xml/OrganizationMemberMapper.xml index c1a5e1d..24443d9 100644 --- a/src/main/resources/xml/OrganizationMemberMapper.xml +++ b/src/main/resources/xml/OrganizationMemberMapper.xml @@ -7,8 +7,8 @@ FROM organization_member AS om LEFT JOIN organization_section AS os ON om.section_id = os.id - om.name LIKE concat('%', #{keyword}, '%') - or os.name LIKE concat('%', #{keyword}, '%') + (om.name LIKE concat('%', #{keyword}, '%') + or os.name LIKE concat('%', #{keyword}, '%')) And om.role = #{role} From 0a234525fd8a8050ed2da43afc4932a15ef1b31a Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Wed, 30 Apr 2025 17:01:54 +0800 Subject: [PATCH 11/13] deb --- .../patient/RegistrationController.java | 5 +- .../entity/patient/PatientRegistration.java | 2 +- .../patient/vo/PatientRegistrationVo.java | 81 +++++++++++++++++++ .../diagnosis/MedicalRecordService.java | 7 +- .../patient/PatientRegistrationService.java | 16 +++- 5 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/patient/vo/PatientRegistrationVo.java diff --git a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java index 80e591f..517ac97 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/patient/RegistrationController.java @@ -8,6 +8,7 @@ import com.syjiaer.clinic.server.entity.patient.PatientRegistration; import com.syjiaer.clinic.server.entity.patient.dto.RegistrationQuery; import com.syjiaer.clinic.server.entity.patient.dto.RegistrationSaveDto; import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo; +import com.syjiaer.clinic.server.entity.patient.vo.PatientRegistrationVo; import com.syjiaer.clinic.server.service.patient.PatientInfoService; import com.syjiaer.clinic.server.service.patient.PatientRegistrationService; import org.springframework.beans.factory.annotation.Autowired; @@ -85,12 +86,12 @@ public class RegistrationController extends BaseController { * @return */ @RequestMapping("/getById") - public Result getById() { + public Result getById() { Integer id = parmsUtil.getInteger("id"); if (id == null) { throw new MessageException("id参数为空"); } - PatientRegistration result = patientRegistrationService.getById(id); + PatientRegistrationVo result = patientRegistrationService.getById(id); return success(result); } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java index 2501787..a2efd65 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java @@ -18,7 +18,7 @@ import lombok.experimental.Accessors; *

* * @author NiuZiYuan - * @since 2025-04-29 + * @since 2025-04-30 */ @Getter @Setter diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/PatientRegistrationVo.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/PatientRegistrationVo.java new file mode 100644 index 0000000..632a0f7 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/vo/PatientRegistrationVo.java @@ -0,0 +1,81 @@ +package com.syjiaer.clinic.server.entity.patient.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +@Data +public class PatientRegistrationVo { + + @ApiModelProperty("挂号id") + private Integer id; + + @ApiModelProperty("科室id") + private Integer organizationSectionId; + + @ApiModelProperty("医生id") + private Integer organizationDoctorId; + + @ApiModelProperty("患者姓名") + private String name; + + @ApiModelProperty("患者年龄") + private Integer age; + + @ApiModelProperty("患者手机号") + private String phone; + + @ApiModelProperty("就诊类型 初诊 复诊") + private Short visitType; + + @ApiModelProperty("挂号时间") + private LocalDateTime createDatetime; + + @ApiModelProperty("推荐") + private String recommendations; + + @ApiModelProperty("备注") + private String memo; + + @ApiModelProperty("预诊") + private String advanceDiagnosis; + + @ApiModelProperty("挂号费") + private BigDecimal registrationMoney; + + @ApiModelProperty("逻辑删除") + private Integer delFlag; + + @ApiModelProperty("挂号类型 1普通挂号 2医保挂号") + private Integer type; + + @ApiModelProperty("1男 2女") + private Integer gender; + + @ApiModelProperty("病人id") + private Integer patientInfoId; + + @ApiModelProperty("挂号状态 1候诊 2在诊 3已诊 0取消") + private Integer status; + + @ApiModelProperty("人员编号") + private String psnNo; + + @ApiModelProperty("险种类型") + private String insutype; + + @ApiModelProperty("就诊id 挂号后医保返会") + private String mdtrtId; + + @ApiModelProperty("流水号") + private String fstNo; + + @ApiModelProperty("证件类型") + private String certType; + @ApiModelProperty("证件号码") + private String certNo; +} + 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 cfc0f1f..105a386 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 @@ -87,7 +87,12 @@ public class MedicalRecordService extends BaseService { */ @Transactional(rollbackFor = Exception.class) public void save(MedicalRecordSaveDto saveDto) { - + if (saveDto == null){ + throw new MessageException("参数不能为空"); + } + if (saveDto.getDiagnosisMedicalRecord().getDiagnosisDetail() == null){ + throw new MessageException("请填写诊断详情"); + } //改变挂号单状态 PatientRegistration dbRegis = patientRegistrationMapper.selectById(saveDto.getRegistrationId()); if (dbRegis == null) { 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 a8d262a..e405bb4 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 @@ -18,6 +18,7 @@ import com.syjiaer.clinic.server.entity.patient.PatientRegistration; import com.syjiaer.clinic.server.entity.patient.dto.RegistrationQuery; import com.syjiaer.clinic.server.entity.patient.dto.RegistrationSaveDto; import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo; +import com.syjiaer.clinic.server.entity.patient.vo.PatientRegistrationVo; import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper; import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper; import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper; @@ -184,8 +185,19 @@ public class PatientRegistrationService extends BaseService { * 根据id查询挂号信息 * @param id 挂号id */ - public PatientRegistration getById(int id) { - return patientRegistrationMapper.selectById(id); + public PatientRegistrationVo getById(int id) { + PatientRegistrationVo registrationVo = new PatientRegistrationVo(); + PatientRegistration registration = patientRegistrationMapper.selectById(id); + if (registration == null){ + throw new MessageException("id不存在"); + } + BeanUtils.copyProperties(registration, registrationVo); + PatientInfo patientInfo = patientInfoMapper.selectById(registration.getPatientInfoId()); + if (patientInfo != null){ + registrationVo.setCertNo(patientInfo.getCertNo()); + registrationVo.setCertType(patientInfo.getCertType()); + } + return registrationVo; } /* * 获取所有已删除挂号信息 From 986d698d508138ba095d943f3459977df38db092 Mon Sep 17 00:00:00 2001 From: NiuZiYuan Date: Sat, 3 May 2025 13:04:36 +0800 Subject: [PATCH 12/13] dev --- .../clinic/server/ServerApplicationTests.java | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java index 3633029..13937ed 100644 --- a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java +++ b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java @@ -14,38 +14,5 @@ import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class ServerApplicationTests { - @Autowired - private MedicalRecordService medicalRecordService; - @Autowired - private SocialDiagnoseService socialDiagnoseService; - @Autowired - private SocialItemService socialItemService; - @Autowired - private ChargeService chargeService; - @Autowired - private SocialRequest socialRequest; - @Test - void contextLoads() { -// chargeService.uploadCostDetails("CO20250424130233778296"); -// String meCode = "AD1537643"; -// String medType = "03"; -// String in = "310"; -// chargeService.socialPrePay("CO20250424130233778296",medType,meCode,"310"); - String meCode = "AD1537643|eZFLx0k4i8izV3NdLvOKRF16BQ6yCj3Cv+PS4dyDK/fy4l30EzRhIDFV5W0E+jZVkPFpsUkVVUU0WX+58IafhGQxzYO25uuEaZkwhDFyPF+RbV14gcURcjR7BjU8m+xWQV1jmrEygKcJ0fbjtdEZrjZRgjNtiz+KCqw5qeWlkvtfcI/pnYeD6Y0CI64KnBGFfMxd9n2pM2GnZp08tJRb/50KnDqwZY1tHLNmiCX0Cnk="; - chargeService.socialRealPay("CO20250424130233778296","03",meCode,"310"); - - } - @Test - void text(){ - IM9001 im9001 = new IM9001(); - im9001.setOpter_no("0"); - im9001.setMac("00-FF-F2-10-61-2D"); - im9001.setIp("10.42.131.10"); - socialRequest.call9001(im9001); - } - @Test - void test(){ - socialItemService.download("F002_20210915000001_A"); - } } From 740af771d44a865fd99e255d5d0db8b4227b5337 Mon Sep 17 00:00:00 2001 From: NiuZiYuan Date: Sat, 3 May 2025 13:05:26 +0800 Subject: [PATCH 13/13] dev --- .../java/com/syjiaer/clinic/server/.gitignore | 2 ++ .../clinic/server/ServerApplicationTests.java | 18 ------------------ 2 files changed, 2 insertions(+), 18 deletions(-) create mode 100644 src/test/java/com/syjiaer/clinic/server/.gitignore delete mode 100644 src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java diff --git a/src/test/java/com/syjiaer/clinic/server/.gitignore b/src/test/java/com/syjiaer/clinic/server/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/src/test/java/com/syjiaer/clinic/server/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java deleted file mode 100644 index 13937ed..0000000 --- a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.syjiaer.clinic.server; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.syjiaer.clinic.server.common.api.input.IM9001; -import com.syjiaer.clinic.server.common.api.request.SocialRequest; -import com.syjiaer.clinic.server.service.charge.ChargeService; -import com.syjiaer.clinic.server.service.diagnosis.MedicalRecordService; -import com.syjiaer.clinic.server.service.social.SocialDiagnoseService; -import com.syjiaer.clinic.server.service.social.SocialItemService; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class ServerApplicationTests { - - -}