From a186c8e88b5ea9203bbfe5bd2c699fd366d75cec Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Sat, 17 May 2025 15:45:53 +0800 Subject: [PATCH] dev --- .../common/enums/DiagnosisStatusEnum.java | 28 +++++++++++++++++++ .../controller/charge/ChargeController.java | 11 ++++++++ .../server/entity/statistics/TipCountVo.java | 2 ++ .../server/service/charge/ChargeService.java | 28 +++++++++++++++++++ .../service/statistics/StatisticsService.java | 10 +++++-- 5 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/common/enums/DiagnosisStatusEnum.java diff --git a/src/main/java/com/syjiaer/clinic/server/common/enums/DiagnosisStatusEnum.java b/src/main/java/com/syjiaer/clinic/server/common/enums/DiagnosisStatusEnum.java new file mode 100644 index 0000000..153805f --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/enums/DiagnosisStatusEnum.java @@ -0,0 +1,28 @@ +package com.syjiaer.clinic.server.common.enums; + +public enum DiagnosisStatusEnum { + WAIT_CHARGE(0, "待收费"), + CHARGE_FINISH(1, "已收费"), + REFUND_FINISH(2, "已退费"); + + private Integer status; + private String desc; + DiagnosisStatusEnum(Integer status, String desc) { + this.status = status; + this.desc = desc; + } + public Integer getStatus() { + return status; + } + public String getDesc() { + return desc; + } + public static DiagnosisStatusEnum getByStatus(Integer status) { + for (DiagnosisStatusEnum diagnosisStatusEnum : values()) { + if (diagnosisStatusEnum.getStatus().equals(status)) { + return diagnosisStatusEnum; + } + } + return null; + } +} 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 caeff99..7fe71ea 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 @@ -72,6 +72,17 @@ public class ChargeController extends BaseController { chargeService.completeOrder(id,payType); return success(); } + /** + * 根据诊断code和状态获取诊断信息 + */ + @RequestMapping("/getOrderByDiagnosisCode") + public Result getOrderByDiagnosisCode() { + String diagnosisCode = parmsUtil.getString("diagnosisCode","诊断code不能为空"); + Integer status = parmsUtil.getInteger("status","诊断状态不能为空"); + ChargeOrder chargeOrder = chargeService.getOrderByDiagnosisCode(diagnosisCode,status); + + return success(chargeOrder); + } /** * 根据code查询订单详情 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 index 1594ad3..9c7085f 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/statistics/TipCountVo.java @@ -12,6 +12,8 @@ public class TipCountVo { private Long completeDiaCount; //已收费数量 private Long chargedCount; + //已退费数量 + private Long refundedCount; //未收费数量 private Long unchargedCount; 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 80146d6..37fd90c 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 @@ -1,6 +1,7 @@ package com.syjiaer.clinic.server.service.charge; 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.*; import com.syjiaer.clinic.server.common.api.output.OM2206A; @@ -882,6 +883,17 @@ public class ChargeService extends BaseService { return; } + //诊断状态改为已退费 + Diagnosis diagnosis = diagnosisMapper.selectByCode(chargeOrder.getDiagnosisCode()); + if (diagnosis == null){ + throw new MessageException("诊断不存在"); + } + UpdateWrapper diagnosisUpdate = new UpdateWrapper<>(); + diagnosisUpdate.eq("id", diagnosis.getId()); + diagnosisUpdate.set("status", DiagnosisStatusEnum.REFUND_FINISH.getStatus()); + diagnosisMapper.update(diagnosisUpdate); + + if (chargeOrder.getPayType().equals(RetailOrderPayTypeEnum.MEDICARE.getCode())) { ChargeSocialPayLog socialPayLog = chargeSocialPayLogMapper.selectOne(new QueryWrapper().eq("charge_order_code", chargeOrder.getCode()).last("limit 1")); if (socialPayLog == null) { @@ -901,6 +913,8 @@ public class ChargeService extends BaseService { updateOrder.setId(chargeOrder.getId()); updateOrder.setStatus(RetailOrderStatusEnum.REFUNDED.getCode()); chargeOrderMapper.updateById(updateOrder); + + //记录退费日志 recordChargeLog(chargeOrder, ChargeSourceEnum.REFUND, ChargeTypeEnum.REFUND); //库存添加回去 @@ -978,6 +992,20 @@ public class ChargeService extends BaseService { } + /** + * 根据诊断id和状态查询订单 + * @param diagnosisCode + * @param status + * @return + */ + public ChargeOrder getOrderByDiagnosisCode(String diagnosisCode, Integer status) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("diagnosis_code",diagnosisCode); + queryWrapper.eq("status",status); + queryWrapper.last("limit 1"); + return chargeOrderMapper.selectOne(queryWrapper); + } + // public void recordSocialInfo(OM2103 om2103, RetailOrder dbOrder) { // QueryWrapper logQuery = new QueryWrapper<>(); // logQuery.eq("retail_order_code", dbOrder.getCode()); 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 2baf87d..804f936 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 @@ -212,15 +212,21 @@ public class StatisticsService extends BaseService { QueryWrapper diagnosisWrapper = new QueryWrapper<>(); diagnosisWrapper.lt("create_time", endTime); diagnosisWrapper.ge("create_time", beginTime); - diagnosisWrapper.eq("status", 0); + diagnosisWrapper.eq("status", DiagnosisStatusEnum.WAIT_CHARGE.getStatus()); tipCountVo.setUnchargedCount(diagnosisMapper.selectCount(diagnosisWrapper)); diagnosisWrapper = new QueryWrapper<>(); diagnosisWrapper.lt("create_time", endTime); diagnosisWrapper.ge("create_time", beginTime); - diagnosisWrapper.eq("status", 1); + diagnosisWrapper.eq("status", DiagnosisStatusEnum.CHARGE_FINISH.getStatus()); tipCountVo.setChargedCount(diagnosisMapper.selectCount(diagnosisWrapper)); + diagnosisWrapper = new QueryWrapper<>(); + diagnosisWrapper.lt("create_time", endTime); + diagnosisWrapper.ge("create_time", beginTime); + diagnosisWrapper.eq("status", DiagnosisStatusEnum.REFUND_FINISH.getStatus()); + tipCountVo.setRefundedCount(diagnosisMapper.selectCount(diagnosisWrapper)); + return tipCountVo;