收退费修改

This commit is contained in:
Zhang.WH
2025-03-31 10:20:16 +08:00
parent b5df8479da
commit 7c296698aa
9 changed files with 129 additions and 10 deletions

View File

@@ -52,4 +52,11 @@ public interface IOutpatientChargeAppService {
* @return 操作结果
*/
R<?> changeToMedicalInsurance(Long encounterId);
/**
* 门诊收费页面初始化
*
* @return 初始化信息
*/
R<?> outpatientChargeInit();
}

View File

@@ -46,4 +46,11 @@ public interface IOutpatientRefundAppService {
*/
R<?> getBilledEncounterPatientPage(EncounterPatientPageParam encounterPatientPageParam, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request);
/**
* 门诊退费页面初始化
*
* @return 初始化信息
*/
R<?> outpatientRefundInit();
}

View File

@@ -3,8 +3,10 @@
*/
package com.openhis.web.chargemanage.appservice.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
@@ -28,6 +30,7 @@ import com.openhis.common.utils.HisQueryUtils;
import com.openhis.web.chargemanage.appservice.IOutpatientChargeAppService;
import com.openhis.web.chargemanage.dto.EncounterPatientPageDto;
import com.openhis.web.chargemanage.dto.EncounterPatientPageParam;
import com.openhis.web.chargemanage.dto.OutpatientInitDto;
import com.openhis.web.chargemanage.mapper.OutpatientChargeAppMapper;
/**
@@ -46,6 +49,25 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
@Autowired
private IAccountService accountService;
/**
* 门诊收费页面初始化
*
* @return 初始化信息
*/
@Override
public R<?> outpatientChargeInit() {
OutpatientInitDto initDto = new OutpatientInitDto();
List<OutpatientInitDto.chargeItemStatusOption> chargeItemStatusOptions = new ArrayList<>();
chargeItemStatusOptions.add(new OutpatientInitDto.chargeItemStatusOption(ChargeItemStatus.PLANNED.getValue(),
ChargeItemStatus.PLANNED.getInfo()));
chargeItemStatusOptions.add(new OutpatientInitDto.chargeItemStatusOption(ChargeItemStatus.BILLABLE.getValue(),
ChargeItemStatus.BILLABLE.getInfo()));
chargeItemStatusOptions.add(new OutpatientInitDto.chargeItemStatusOption(ChargeItemStatus.BILLED.getValue(),
ChargeItemStatus.BILLED.getInfo()));
initDto.setChargeItemStatusOptions(chargeItemStatusOptions);
return R.ok(initDto);
}
/**
* 查询就诊患者分页列表
*

View File

@@ -27,10 +27,7 @@ import com.openhis.common.utils.HisQueryUtils;
import com.openhis.financial.service.IPaymentReconciliationService;
import com.openhis.medication.service.IMedicationDispenseService;
import com.openhis.web.chargemanage.appservice.IOutpatientRefundAppService;
import com.openhis.web.chargemanage.dto.EncounterPatientPageDto;
import com.openhis.web.chargemanage.dto.EncounterPatientPageParam;
import com.openhis.web.chargemanage.dto.EncounterPatientPaymentDto;
import com.openhis.web.chargemanage.dto.RefundItemDto;
import com.openhis.web.chargemanage.dto.*;
import com.openhis.web.chargemanage.mapper.OutpatientRefundAppMapper;
import com.openhis.workflow.service.IDeviceDispenseService;
import com.openhis.workflow.service.IServiceRequestService;
@@ -57,6 +54,27 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
@Autowired
private IServiceRequestService serviceRequestService;
/**
* 门诊退费页面初始化
*
* @return 初始化信息
*/
@Override
public R<?> outpatientRefundInit() {
OutpatientInitDto initDto = new OutpatientInitDto();
List<OutpatientInitDto.chargeItemStatusOption> chargeItemStatusOptions = new ArrayList<>();
chargeItemStatusOptions.add(new OutpatientInitDto.chargeItemStatusOption(ChargeItemStatus.BILLED.getValue(),
ChargeItemStatus.BILLED.getInfo()));
chargeItemStatusOptions.add(new OutpatientInitDto.chargeItemStatusOption(ChargeItemStatus.REFUNDING.getValue(),
ChargeItemStatus.REFUNDING.getInfo()));
chargeItemStatusOptions.add(new OutpatientInitDto.chargeItemStatusOption(ChargeItemStatus.REFUNDED.getValue(),
ChargeItemStatus.REFUNDED.getInfo()));
chargeItemStatusOptions.add(new OutpatientInitDto.chargeItemStatusOption(
ChargeItemStatus.PART_REFUND.getValue(), ChargeItemStatus.PART_REFUND.getInfo()));
initDto.setChargeItemStatusOptions(chargeItemStatusOptions);
return R.ok(initDto);
}
/**
* 根据就诊id查询患者的账单
*
@@ -156,9 +174,10 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
CommonConstants.FieldName.EncounterBusNo, CommonConstants.FieldName.idCard)),
request);
// 就诊患者分页列表
Page<EncounterPatientPageDto> encounterPatientPage =
outpatientRefundAppMapper.selectBilledEncounterPatientPage(new Page<>(pageNo, pageSize), queryWrapper,
ChargeItemStatus.BILLED.getValue(), AccountType.MEDICAL_INSURANCE.getValue());
Page<EncounterPatientPageDto> encounterPatientPage = outpatientRefundAppMapper.selectBilledEncounterPatientPage(
new Page<>(pageNo, pageSize), queryWrapper, ChargeItemStatus.BILLED.getValue(),
ChargeItemStatus.REFUNDING.getValue(), ChargeItemStatus.REFUNDED.getValue(),
ChargeItemStatus.PART_REFUND.getValue(), AccountType.MEDICAL_INSURANCE.getValue());
encounterPatientPage.getRecords().forEach(e -> {
// 性别枚举

View File

@@ -30,6 +30,16 @@ public class OutpatientChargeController {
@Autowired
private IOutpatientChargeAppService outpatientChargeAppService;
/**
* 门诊收费页面初始化
*
* @return 初始化信息
*/
@GetMapping(value = "/init")
public R<?> outpatientChargeInit() {
return outpatientChargeAppService.outpatientChargeInit();
}
/**
* 查询就诊患者分页列表
*

View File

@@ -32,6 +32,16 @@ public class OutpatientRefundController {
@Autowired
private IOutpatientRefundAppService outpatientRefundAppService;
/**
* 门诊退费页面初始化
*
* @return 初始化信息
*/
@GetMapping(value = "/init")
public R<?> outpatientRefundInit() {
return outpatientRefundAppService.outpatientRefundInit();
}
/**
* 查询结算过的就诊患者分页列表
*

View File

@@ -0,0 +1,36 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.chargemanage.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 门诊费用相关初始化
*
* @author zwh
* @date 2025-03-30
*/
@Data
@Accessors(chain = true)
public class OutpatientInitDto {
private List<OutpatientInitDto.chargeItemStatusOption> chargeItemStatusOptions;
/**
* 收费状态
*/
@Data
public static class chargeItemStatusOption {
private Integer value;
private String label;
public chargeItemStatusOption(Integer value, String label) {
this.value = value;
this.label = label;
}
}
}

View File

@@ -59,10 +59,14 @@ public interface OutpatientRefundAppMapper {
* @param page 分页
* @param queryWrapper 查询条件
* @param billed 收费状态:已结算
* @param refunding 收费状态:退费中
* @param refunded 收费状态:已退费
* @param partRefund 收费状态:部分退费
* @param insurance 账户类型:医保
* @return 已结算就诊患者分页列表
*/
Page<EncounterPatientPageDto> selectBilledEncounterPatientPage(@Param("page") Page<EncounterPatientPageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<EncounterPatientPageParam> queryWrapper, @Param("billed") Integer billed,
@Param("insurance") Integer insurance);
@Param("refunding") Integer refunding, @Param("refunded") Integer refunded,
@Param("partRefund") Integer partRefund, @Param("insurance") Integer insurance);
}

View File

@@ -18,7 +18,8 @@
T2.account_id
FROM fin_payment_reconciliation AS T1
LEFT JOIN adm_charge_item AS T2
ON T2.id IN (T1.charge_item_ids)
-- 因为T2.id是long型T1.charge_item_ids是例如 "1","2" 的string类型所以需要先转类型再匹配
ON T2.id::TEXT = ANY(string_to_array(T1.charge_item_ids, ','))
WHERE T1.encouter_id =#{encounterId}
AND T1.status_enum IN (#{success},#{refundAll},#{refundPart})
AND T1.delete_flag = '0'
@@ -98,6 +99,7 @@
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPageDto">
SELECT T8.encounter_id,
T8.encounter_bus_no,
T8.status_enum,
T8.start_time,
T8.patient_name,
T8.patient_bus_no,
@@ -116,6 +118,7 @@
T1.start_time,
T1.delete_flag,
T1.tenant_id,
T1.status_enum,
T2."name" AS patient_name,
T2.bus_no AS patient_bus_no,
T2.gender_enum,
@@ -142,13 +145,14 @@
ON T6.encouter_id = T1.id
LEFT JOIN fin_payment_rec_detail AS T7
ON T7.reconciliation_id = T6.id
WHERE T3.status_enum = #{billed}
WHERE T3.status_enum IN (#{billed},#{refunding},#{refunded},#{partRefund})
AND T1.delete_flag = '0'
GROUP BY T1.id,
T1.bus_no,
T1.start_time,
T1.delete_flag,
T1.tenant_id,
T1.status_enum,
T2."name",
T2.bus_no,
T2.gender_enum,