提交merge1.3

This commit is contained in:
2025-12-27 15:30:25 +08:00
parent 8c607c8749
commit 088861f66e
1245 changed files with 220442 additions and 77616 deletions

View File

@@ -25,7 +25,7 @@ public interface IAdvancePaymentManageAppService {
* @param request 请求
* @return 患者预交金基本信息
*/
IPage<AdvancePaymentInfoDto> getAdvancePaymentInfo(AdvancePaymentInfoDto advancePaymentInfoDto, String searchKey,
IPage<AdvancePaymentInfoDto> getAdvancePaymentInfo(AdvancePaymentInfoDto advancePaymentInfoDto, String searchKey,Long wardLocationId,
Integer pageNo, Integer pageSize, HttpServletRequest request);
/**

View File

@@ -1,11 +1,13 @@
package com.openhis.web.inhospitalcharge.appservice;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.core.common.core.domain.R;
import com.openhis.web.common.dto.LocationDto;
import com.openhis.web.inhospitalcharge.dto.*;
/**
@@ -83,4 +85,19 @@ public interface IInHospitalRegisterAppService {
*/
R<?> noFilesRegister(NoFilesRegisterDto noFilesRegisterDto);
/**
* 是否登记
*
* @param encounterId 病历ID
* @return true/false
*/
R<Boolean> isRegister(Long encounterId);
/**
* 获取病区列表
*
* @param orgId 科室id
* @return 病区列表
*/
List<LocationDto> getWardList(Long orgId);
}

View File

@@ -70,7 +70,7 @@ public class AdvancePaymentManageAppServiceImpl implements IAdvancePaymentManage
*/
@Override
public IPage<AdvancePaymentInfoDto> getAdvancePaymentInfo(AdvancePaymentInfoDto advancePaymentInfoDto,
String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request) {
String searchKey, Long wardLocationId, Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<AdvancePaymentInfoDto> queryWrapper = HisQueryUtils.buildQueryWrapper(advancePaymentInfoDto,
searchKey, new HashSet<>(Arrays.asList("bus_no", "patient_name", "inHospital_org_name")), request);
@@ -80,7 +80,8 @@ public class AdvancePaymentManageAppServiceImpl implements IAdvancePaymentManage
LocationForm.HOUSE.getValue(), LocationForm.BED.getValue(), EncounterActivityStatus.ACTIVE.getValue(),
ChargeItemStatus.BILLABLE.getValue(), ChargeItemStatus.BILLED.getValue(),
ChargeItemStatus.REFUNDED.getValue(), EncounterClass.IMP.getValue(),
AccountType.PERSONAL_CASH_ACCOUNT.getCode(), queryWrapper);
AccountType.PERSONAL_CASH_ACCOUNT.getCode(), wardLocationId, EncounterZyStatus.TO_BE_REGISTERED.getValue(),
queryWrapper);
advancePaymentInfo.getRecords().forEach(e -> {
// 性别
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
@@ -178,8 +179,14 @@ public class AdvancePaymentManageAppServiceImpl implements IAdvancePaymentManage
// 支付管理子表
PaymentRecDetail paymentDetail = new PaymentRecDetail();
paymentDetail.setAccountId(advancePaymentInAndOutDto.getAccountId()); // 账户
paymentDetail.setPayEnum(YbPayment.SELF_CASH_PAY.getValue()); // 支付类型
paymentDetail.setPayLevelEnum(YbPayment.SELF_CASH_PAY.getLevel()); // 支付类型等级
Integer payEnum = advancePaymentInAndOutDto.getPayEnum();
if (payEnum != null && payEnum != 0) {
paymentDetail.setPayEnum(payEnum); // 支付类型
paymentDetail.setPayLevelEnum(YbPayment.getByValue(payEnum).getLevel());// 支付类型等级
} else {
paymentDetail.setPayEnum(YbPayment.SELF_CASH_PAY.getValue()); // 支付类型
paymentDetail.setPayLevelEnum(YbPayment.SELF_CASH_PAY.getLevel()); // 支付类型等级
}
paymentDetail.setAmount(ammount); // 金额
paymentDetail.setPayTransNo(CommonConstants.BusinessName.DEFAULT_CONTRACT_NO);
paymentDetail.setReconciliationId(payment.getId()); // 付款id

View File

@@ -1,5 +1,6 @@
package com.openhis.web.inhospitalcharge.appservice.impl;
import java.math.BigDecimal;
import java.util.*;
import javax.annotation.Resource;
@@ -13,6 +14,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.utils.*;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.*;
import com.openhis.administration.service.*;
import com.openhis.clinical.domain.Condition;
@@ -28,11 +30,16 @@ import com.openhis.financial.domain.PaymentRecDetail;
import com.openhis.financial.domain.PaymentReconciliation;
import com.openhis.financial.service.IPaymentRecDetailService;
import com.openhis.financial.service.IPaymentReconciliationService;
import com.openhis.web.common.dto.LocationDto;
import com.openhis.web.inhospitalcharge.appservice.IInHospitalRegisterAppService;
import com.openhis.web.inhospitalcharge.dto.*;
import com.openhis.web.inhospitalcharge.mapper.InHospitalRegisterAppMapper;
import com.openhis.web.patientmanage.appservice.IPatientInformationService;
<<<<<<< HEAD
import com.openhis.web.patientmanage.dto.PatientInformationDto;
=======
import com.openhis.web.patientmanage.dto.PatientBaseInfoDto;
>>>>>>> v1.3
import com.openhis.yb.service.YbManager;
import lombok.extern.slf4j.Slf4j;
@@ -222,7 +229,7 @@ public class InHospitalRegisterAppServiceImpl implements IInHospitalRegisterAppS
public InHospitalInfoDto getInHospitalInfo(Long encounterId) {
InHospitalInfoDto inHospitalInfo = inHospitalRegisterAppMapper.getInHospitalInfo(encounterId,
LocationForm.WARD.getValue(), Whether.YES.getValue(), ParticipantType.ADMITTER.getCode(),
AccountType.PERSONAL_CASH_ACCOUNT.getCode());
PublicationStatus.ACTIVE.getValue(), AccountType.PERSONAL_CASH_ACCOUNT.getCode());
// 优先级(患者病情)
inHospitalInfo
.setPriorityEnum_enumText(EnumUtils.getInfoByValue(PriorityLevel.class, inHospitalInfo.getPriorityEnum()));
@@ -303,7 +310,7 @@ public class InHospitalRegisterAppServiceImpl implements IInHospitalRegisterAppS
@Override
public R<?> noFilesRegister(NoFilesRegisterDto noFilesRegisterDto) {
// 患者信息
PatientInformationDto patientInformation = noFilesRegisterDto.getPatientInformation();
PatientBaseInfoDto patientInformation = noFilesRegisterDto.getPatientInformation();
// 新增患者
R<?> r = patientInformationService.addPatient(patientInformation);
if (r.getCode() == 200) {
@@ -318,9 +325,52 @@ public class InHospitalRegisterAppServiceImpl implements IInHospitalRegisterAppS
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"无档登记"}));
}
/**
* 是否登记
*
* @param encounterId 病历ID
* @return true/false
*/
@Override
public R<Boolean> isRegister(Long encounterId) {
if (encounterId == null) {
return R.ok(false);
}
LambdaQueryWrapper<Encounter> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Encounter::getAmbEncounterId, encounterId);
Encounter encounter = iEncounterService.getOne(wrapper);
if (encounter == null) {
return R.ok(false);
} else {
return R.ok(true);
}
}
/**
* 获取病区列表
*
* @param orgId 科室id
* @return 病区列表
*/
@Override
public List<LocationDto> getWardList(Long orgId) {
List<Location> wardList = inHospitalRegisterAppMapper.selectWardList(orgId, LocationForm.WARD.getValue(),
LocationStatus.ACTIVE.getValue());
// 2. 转换为 LocationDto逻辑与原代码完全一致
List<LocationDto> locationDtoList = new ArrayList<>();
for (Location location : wardList) {
LocationDto locationDto = new LocationDto();
BeanUtils.copyProperties(location, locationDto);
locationDtoList.add(locationDto);
}
return locationDtoList;
}
/**
* 处理入院登记信息
*
*
* @param inHospitalInfoDto 住院信息dto
* @param patient 患者信息
*/
@@ -389,46 +439,47 @@ public class InHospitalRegisterAppServiceImpl implements IInHospitalRegisterAppS
accountPersonalCash.setEncounterFlag(Whether.NO.getValue());
}
iAccountService.save(accountPersonalCash);
BigDecimal balanceAmount = inHospitalInfoDto.getBalanceAmount();
if (balanceAmount != null && balanceAmount.compareTo(BigDecimal.ZERO) > 0) {
// 保存支付信息
String paymentNo = assignSeqUtil.getSeqByDay(AssignSeqEnum.PAYMENT_NO.getPrefix(), 20); // 生成流水号
Date setlTime = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(setlTime);
calendar.add(Calendar.HOUR_OF_DAY, 24);
Date futureTime = calendar.getTime();
// 保存支付信息
String paymentNo = assignSeqUtil.getSeqByDay(AssignSeqEnum.PAYMENT_NO.getPrefix(), 20); // 生成流水号
Date setlTime = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(setlTime);
calendar.add(Calendar.HOUR_OF_DAY, 24);
Date futureTime = calendar.getTime();
// 支付管理主表
PaymentReconciliation payment = new PaymentReconciliation();
payment.setStatusEnum(PaymentStatus.SUCCESS.getValue()); // 状态
payment.setPaymentNo(paymentNo); // 支付的业务标识符
payment.setPaymentEnum(PaymentType.PAY.getValue()); // 付款类别
payment.setPaymentReconciliationId(accountPersonalCash.getPatientId()); // 付款实体ID
payment.setKindEnum(PaymentKind.HOSPITAL_DEPOSIT.getValue()); // 发起支付的工作流程类别-住院存款
payment.setEntererId(SecurityUtils.getLoginUser().getPractitionerId()); // 收款员
payment.setPatientId(accountPersonalCash.getPatientId()); // 患者ID
payment.setPractitionerId(SecurityUtils.getLoginUser().getPractitionerId()); // 请求支付责任人ID
payment.setOutcomeEnum(PaymentOutcome.PARTIAL.getCode()); // 付款结果
payment.setLocationId(-99L); // 支付位置
payment.setExpirationDate(futureTime); // 到期时间
payment.setTenderedAmount(inHospitalInfoDto.getBalanceAmount()); // 应收金额
payment.setDisplayAmount(inHospitalInfoDto.getBalanceAmount()); // 付款总额
payment.setPrintCount(0); // 打印标识
payment.setEncounterId(encounterReg.getId()); // 住院就诊id
payment.setBillDate(setlTime); // 结算时间
iPaymentReconciliationService.save(payment);
// 支付管理
PaymentReconciliation payment = new PaymentReconciliation();
payment.setStatusEnum(PaymentStatus.SUCCESS.getValue()); // 状态
payment.setPaymentNo(paymentNo); // 支付的业务标识符
payment.setPaymentEnum(PaymentType.PAY.getValue()); // 付款类别
payment.setPaymentReconciliationId(accountPersonalCash.getPatientId()); // 付款实体ID
payment.setKindEnum(PaymentKind.HOSPITAL_DEPOSIT.getValue()); // 发起支付的工作流程类别-住院存款
payment.setEntererId(SecurityUtils.getLoginUser().getPractitionerId()); // 收款员
payment.setPatientId(accountPersonalCash.getPatientId()); // 患者ID
payment.setPractitionerId(SecurityUtils.getLoginUser().getPractitionerId()); // 请求支付责任人ID
payment.setOutcomeEnum(PaymentOutcome.PARTIAL.getCode()); // 付款结果
payment.setLocationId(-99L); // 支付位置
payment.setExpirationDate(futureTime); // 到期时间
payment.setTenderedAmount(inHospitalInfoDto.getBalanceAmount()); // 应收金额
payment.setDisplayAmount(inHospitalInfoDto.getBalanceAmount()); // 付款总额
payment.setPrintCount(0); // 打印标识
payment.setEncounterId(encounterReg.getId()); // 住院就诊id
payment.setBillDate(setlTime); // 结算时间
iPaymentReconciliationService.save(payment);
// 支付管理子表
PaymentRecDetail paymentDetail = new PaymentRecDetail();
paymentDetail.setAccountId(accountPersonalCash.getId()); // 账户
paymentDetail.setPayEnum(YbPayment.SELF_CASH_PAY.getValue()); // 支付类型
paymentDetail.setPayLevelEnum(YbPayment.SELF_CASH_PAY.getLevel()); // 支付类型等级
paymentDetail.setAmount(inHospitalInfoDto.getBalanceAmount()); // 金额
paymentDetail.setPayTransNo(CommonConstants.BusinessName.DEFAULT_CONTRACT_NO);
paymentDetail.setReconciliationId(payment.getId()); // 付款id
iPaymentRecDetailService.save(paymentDetail);
// 支付管理
PaymentRecDetail paymentDetail = new PaymentRecDetail();
paymentDetail.setAccountId(accountPersonalCash.getId()); // 账户
paymentDetail.setPayEnum(inHospitalInfoDto.getPayEnum()); // 支付类型
paymentDetail.setPayLevelEnum(YbPayment.getByValue(inHospitalInfoDto.getPayEnum()).getLevel()); // 支付类型等级
paymentDetail.setAmount(inHospitalInfoDto.getBalanceAmount()); // 金额
paymentDetail.setPayTransNo(CommonConstants.BusinessName.DEFAULT_CONTRACT_NO);
paymentDetail.setReconciliationId(payment.getId()); // 付款id
iPaymentRecDetailService.save(paymentDetail);
}
// 处理住院诊断(无档登记场景)
if (patient != null && inHospitalInfoDto.getDiagnosisDefinitionId() != null) {
// 住院诊断

View File

@@ -39,9 +39,10 @@ public class AdvancePaymentManageController {
@GetMapping(value = "/advance-payment-info")
public R<?> getAdvancePaymentInfo(AdvancePaymentInfoDto advancePaymentInfoDto,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "wardLocationId", defaultValue = "") Long wardLocationId,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return R.ok(iAdvancePaymentManageAppService.getAdvancePaymentInfo(advancePaymentInfoDto, searchKey, pageNo,
return R.ok(iAdvancePaymentManageAppService.getAdvancePaymentInfo(advancePaymentInfoDto, searchKey,wardLocationId, pageNo,
pageSize, request));
}

View File

@@ -5,11 +5,11 @@ package com.openhis.web.inhospitalcharge.controller;
import javax.servlet.http.HttpServletRequest;
import com.openhis.web.inhospitalcharge.dto.*;
import org.springframework.web.bind.annotation.*;
import com.core.common.core.domain.R;
import com.openhis.web.inhospitalcharge.appservice.IInHospitalRegisterAppService;
import com.openhis.web.inhospitalcharge.dto.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -36,6 +36,17 @@ public class InHospitalRegisterController {
return iInHospitalRegisterAppService.registerByDoctor(inHospitalRegisterDto);
}
/**
* 是否登记
*
* @param encounterId 病历ID
* @return true/false
*/
@GetMapping(value = "/isRegister")
public R<?> isRegister(@RequestParam(value = "encounterId") Long encounterId) {
return iInHospitalRegisterAppService.isRegister(encounterId);
}
/**
* 查询住院登记信息
*
@@ -123,4 +134,14 @@ public class InHospitalRegisterController {
return iInHospitalRegisterAppService.noFilesRegister(noFilesRegisterDto);
}
/**
* 病区列表
*
* @return 病区列表
*/
@GetMapping(value = "/ward-list")
public R<?> getWardList(@RequestParam(value = "orgId", required = false) Long orgId) {
return R.ok(iInHospitalRegisterAppService.getWardList(orgId));
}
}

View File

@@ -38,4 +38,7 @@ public class AdvancePaymentInAndOutDto {
*/
private BigDecimal amount;
/** 支付类型 */
private Integer payEnum;
}

View File

@@ -140,6 +140,9 @@ public class InHospitalInfoDto {
/** 账户余额 */
private BigDecimal balanceAmount;
/** 支付类型 */
private Integer payEnum;
/**
* 诊断定义id
*/
@@ -159,4 +162,9 @@ public class InHospitalInfoDto {
*/
private String diagnosisDesc;
/**
* 备注信息(预交金发票使用)
*/
private String remark;
}

View File

@@ -2,6 +2,7 @@ package com.openhis.web.inhospitalcharge.dto;
import java.util.Date;
import com.openhis.common.annotation.Dict;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -79,4 +80,21 @@ public class InHospitalRegisterQueryDto {
*/
private String wardName;
/**
* 住院号
*/
private String busNo;
/**
* 费用性质(合同编码)
*/
private String contractNo;
/**
* 入院类型
*/
@Dict(dictCode = "admit_source_code")
private String admitSourceCode;
private String admitSourceCode_dictText;
}

View File

@@ -1,6 +1,6 @@
package com.openhis.web.inhospitalcharge.dto;
import com.openhis.web.patientmanage.dto.PatientInformationDto;
import com.openhis.web.patientmanage.dto.PatientBaseInfoDto;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -15,7 +15,7 @@ public class NoFilesRegisterDto {
/**
* 患者信息
*/
private PatientInformationDto patientInformation;
private PatientBaseInfoDto patientInformation;
/**
* 住院信息

View File

@@ -31,6 +31,7 @@ public interface AdvancePaymentManageAppMapper {
* @param status3 已退费
* @param classEnum 住院
* @param accountTypeCode 个人现金账号
* @param registeredFlag 登记标识
* @return 预交金基本信息
*/
IPage<AdvancePaymentInfoDto> getAdvancePaymentInfo(@Param("page") Page<AdvancePaymentInfoDto> page,
@@ -38,6 +39,7 @@ public interface AdvancePaymentManageAppMapper {
@Param("bedEnum") Integer bedEnum, @Param("encounterActivityStatus") Integer encounterActivityStatus,
@Param("status1") Integer status1, @Param("status2") Integer status2, @Param("status3") Integer status3,
@Param("classEnum") Integer classEnum, @Param("accountTypeCode") String accountTypeCode,
@Param("wardLocationId") Long wardLocationId, @Param("registeredFlag") Integer registeredFlag,
@Param(Constants.WRAPPER) QueryWrapper<AdvancePaymentInfoDto> queryWrapper);
/**

View File

@@ -1,5 +1,7 @@
package com.openhis.web.inhospitalcharge.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@@ -7,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.administration.domain.Location;
import com.openhis.web.inhospitalcharge.dto.InHospitalInfoDto;
import com.openhis.web.inhospitalcharge.dto.InHospitalPatientInfoDto;
import com.openhis.web.inhospitalcharge.dto.InHospitalRegisterQueryDto;
@@ -48,12 +51,13 @@ public interface InHospitalRegisterAppMapper {
* @param formEnum 物理位置
* @param maindiseFlag 主诊断标识
* @param participantType 参与者类型
* @param status 状态
* @param accountType 账号类型
* @return 住院就诊信息
*/
InHospitalInfoDto getInHospitalInfo(@Param("encounterId") Long encounterId, @Param("formEnum") Integer formEnum,
@Param("maindiseFlag") Integer maindiseFlag, @Param("participantType") String participantType,
@Param("accountType") String accountType);
@Param("status") Integer status, @Param("accountType") String accountType);
/**
* 根据病区号获取总床位数
@@ -77,4 +81,13 @@ public interface InHospitalRegisterAppMapper {
Integer getIdleBedsNum(@Param("formEnum") Integer formEnum, @Param("status") Integer status,
@Param("wardBusNo") String wardBusNo);
/**
* 获取病区列表
*
* @param orgId 科室id
* @return 病区列表
*/
List<Location> selectWardList(@Param("orgId") Long orgId, @Param("formEnum") Integer formEnum,
@Param("status") Integer status);
}