版本更新
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package com.openhis.financial.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import com.openhis.common.enums.ClaimUse;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 索赔管理Entity实体
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
@TableName("fin_claim")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class Claim extends HisBaseEntity {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 交易号 */
|
||||
private String traceNumber;
|
||||
|
||||
/** 状态 */
|
||||
private Integer statusEnum;
|
||||
|
||||
/** 类别 */
|
||||
private String typeCode;
|
||||
|
||||
/** (详细)索赔类别 */
|
||||
private String subtypeCode;
|
||||
|
||||
/** 用途 */
|
||||
private ClaimUse useEnum;
|
||||
|
||||
/** 索赔指向 */
|
||||
private Integer insurerEnum;
|
||||
|
||||
/** condition_dis */
|
||||
private String conditionDis;
|
||||
|
||||
/** procedure_id */
|
||||
private String procedureIds;
|
||||
|
||||
/** item_ids */
|
||||
private String itemIds;
|
||||
|
||||
/** 索赔涵盖时间 */
|
||||
private Date billablePeriodStart;
|
||||
|
||||
/** 索赔涵盖时间 */
|
||||
private Date billablePeriodEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.openhis.financial.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 索赔响应管理Entity实体
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
@TableName("fin_claim_response")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class ClaimResponse extends HisBaseEntity {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 交易号 */
|
||||
private Long traceNumber;
|
||||
|
||||
/** 状态 */
|
||||
private Integer statusEnum;
|
||||
|
||||
/** 类别 */
|
||||
private String typeCode;
|
||||
|
||||
/** (详细)索赔类别 */
|
||||
private String subtypeCode;
|
||||
|
||||
/** 用途 */
|
||||
private Integer useEnum;
|
||||
|
||||
/** 索赔指向 */
|
||||
private Integer insurer;
|
||||
|
||||
/** 最终结果 */
|
||||
private Integer outcomeEnum;
|
||||
|
||||
/** 索赔结果的额外文本信息 */
|
||||
private String disposition;
|
||||
|
||||
/** 索赔结果 */
|
||||
private Integer claimResult;
|
||||
|
||||
/** 索赔金额 */
|
||||
private BigDecimal total;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.openhis.financial.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 合同管理Entity实体
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
@TableName("fin_contract")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class Contract extends HisBaseEntity {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 合同名称 */
|
||||
private String contractName;
|
||||
|
||||
/** 状态 */
|
||||
private Integer statusEnum;
|
||||
|
||||
/** 合同的类别 */
|
||||
private Integer categoryEnum;
|
||||
|
||||
/** 合同编码 */
|
||||
private String busNo;
|
||||
|
||||
/** 机构 */
|
||||
private Long orgId;
|
||||
|
||||
/** 是否医保 */
|
||||
private Integer ybFlag;
|
||||
|
||||
/** 優先使用標志 */
|
||||
private Integer sort;
|
||||
|
||||
/** 医保区划 */
|
||||
private String admVs;
|
||||
|
||||
//2025-06-18 新加字段,医保相关配置信息从sys_option表迁移至本表
|
||||
/** 医保PrvKey */
|
||||
private String cliPrvKey;
|
||||
|
||||
/** 医保PubKey */
|
||||
private String cliPubKey;
|
||||
|
||||
/** */
|
||||
private String serverPubKey;//暂时不知用处
|
||||
|
||||
/** 医保终端授权范围 */
|
||||
private String scope;
|
||||
|
||||
/** 医保终端授权类型 */
|
||||
private String grantType;
|
||||
|
||||
/** 医保密码 */
|
||||
private String password;
|
||||
|
||||
/** 医保账号 */
|
||||
private String username;
|
||||
|
||||
/** 医保客户端密钥 */
|
||||
private String clientSecret;
|
||||
|
||||
/** 医保客户端Id */
|
||||
private String clientId;
|
||||
|
||||
/** fixmedinsCode */
|
||||
private String fixmedinsCode;
|
||||
|
||||
/** fixmedinsName */
|
||||
private String fixmedinsName;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.openhis.financial.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 合同管理Entity实体
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
@TableName("fin_payment_notice")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PaymentNotice extends HisBaseEntity {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 状态 */
|
||||
private Integer statusEnum;
|
||||
|
||||
/** 支付通知类型 */
|
||||
private Integer typeEnum;
|
||||
|
||||
/** 付款实体ID */
|
||||
private Long paypmentReconciliationId;
|
||||
|
||||
/** 被支付方 */
|
||||
private Long payeeId;
|
||||
|
||||
/** 通知方式 */
|
||||
private String wayCode;
|
||||
|
||||
/** 通知内容 */
|
||||
private String contentText;
|
||||
|
||||
/** 被通知方 */
|
||||
private String recipient;
|
||||
|
||||
/** 金额 */
|
||||
private BigDecimal amount;
|
||||
|
||||
/** 支付状态 */
|
||||
private Integer payStatus;
|
||||
|
||||
/** 机构 */
|
||||
private Integer orgId;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.openhis.financial.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 付款管理Entity实体
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
@TableName("fin_payment_rec_detail")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PaymentRecDetail extends HisBaseEntity {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 先前支付明细id */
|
||||
private Long predecessorId;
|
||||
|
||||
/** 付款id */
|
||||
private Long reconciliationId;
|
||||
|
||||
/** 付款类型 */
|
||||
private Integer targetEnum;//暂时没用
|
||||
|
||||
/** 账户 */
|
||||
private Long accountId;
|
||||
|
||||
/** 账户类型 */
|
||||
private String accountCode;
|
||||
|
||||
/** 支付类型 */
|
||||
private Integer payEnum;
|
||||
|
||||
/** 支付类型等级 */
|
||||
private Integer payLevelEnum;
|
||||
|
||||
/** 金额 */
|
||||
private BigDecimal amount;
|
||||
|
||||
/** 找零 */
|
||||
private BigDecimal returnAmount;
|
||||
|
||||
/** 交款 */
|
||||
private BigDecimal chargeAmount;
|
||||
|
||||
/** 支付平台返回交易号 医保批次号*/
|
||||
private String payTransNo;
|
||||
|
||||
/** 支付平台返回交易信息 医保结算ID*/
|
||||
private String payTransText;
|
||||
|
||||
/** 支付平台返回交易时间 */
|
||||
private Date payTransDate;
|
||||
|
||||
/** 支付平台账前余额 */
|
||||
private BigDecimal beforeBalance;
|
||||
|
||||
/** 支付平台账后余额 */
|
||||
private BigDecimal afterBalance;
|
||||
|
||||
/** 单笔交易结果 */
|
||||
private Integer resultEnum;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.financial.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 付款记录的快照(用于统计报表等使用)
|
||||
*
|
||||
* @author SunJQ
|
||||
* @date 2025-08-08
|
||||
*/
|
||||
@Data
|
||||
@TableName("fin_payment_rec_static")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PaymentRecStatic extends HisBaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 付款id
|
||||
*/
|
||||
private Long reconciliationId;
|
||||
|
||||
/**
|
||||
* 统计方式:1-字典fin_type_code;2-医保十四项med_chrgitm_type 默认值为2
|
||||
*/
|
||||
private Integer countBy;
|
||||
|
||||
/**
|
||||
* 编码(字典码):1时用财富分类字典,2时用医保分类的字典
|
||||
*/
|
||||
private String typeCode;
|
||||
|
||||
/**
|
||||
* 编码名称(字典名称)
|
||||
*/
|
||||
private String typeName;// 2025/08/08 李要求加此字段,但是实际使用的时候该字段可能不好用,要查字典然后save
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 关联收费项Id
|
||||
*/
|
||||
private String chargeItemIds;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package com.openhis.financial.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 付款管理Entity实体
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Data
|
||||
@TableName("fin_payment_reconciliation")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PaymentReconciliation extends HisBaseEntity {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 状态 */
|
||||
private Integer statusEnum;
|
||||
|
||||
/** 关联ID */
|
||||
private Long relationId;
|
||||
|
||||
/** 支付的业务标识符 */
|
||||
private String paymentNo;
|
||||
|
||||
/** 付款类别 */
|
||||
private Integer paymentEnum;
|
||||
|
||||
/** 付款实体ID */
|
||||
private Long paymentReconciliationId;
|
||||
|
||||
/** 发起支付的工作流程类别 */
|
||||
private Integer kindEnum;
|
||||
|
||||
/** 收款员 */
|
||||
private Long entererId;
|
||||
|
||||
/** 支付发起人类型 */
|
||||
private Integer issuerEnum;
|
||||
|
||||
/** 支付的患者ID */
|
||||
private Long patientId;
|
||||
|
||||
/** 请求支付责任人ID */
|
||||
private Long practitionerId;
|
||||
|
||||
/** 付款结果 */
|
||||
private Integer outcomeEnum;
|
||||
|
||||
/** 支付位置 */
|
||||
private Long locationId;
|
||||
|
||||
/** 到期时间 */
|
||||
private Date expirationDate;
|
||||
|
||||
/** 应收金额 */
|
||||
private BigDecimal tenderedAmount;
|
||||
|
||||
/** 找零金额 */
|
||||
private BigDecimal returnedAmount;
|
||||
|
||||
/** 付款总额 */
|
||||
private BigDecimal displayAmount;
|
||||
|
||||
/** 打印标识 */
|
||||
private Integer printCount;
|
||||
|
||||
/** 合同编码 */
|
||||
private String contractNo;//2025/05/08李:自付和医保同时付费时只生成一条payment,故此该字段在insert时先为null
|
||||
|
||||
/** 处方号集合 */
|
||||
private String chargeItemIds;
|
||||
|
||||
/** 就诊ID */
|
||||
private Long encounterId;
|
||||
|
||||
/** 结算时间 */
|
||||
private Date billDate;
|
||||
|
||||
/** 发票编号 */
|
||||
private Long invoiceId;
|
||||
|
||||
/** 关联账户Id */
|
||||
private Long accountId;//2025/05/08李:自付和医保同时付费时只生成一条payment,故此该字段在insert时先为null
|
||||
|
||||
/** 医保结算id */
|
||||
private String ybSettleIds;//记录医保结算id
|
||||
|
||||
/** 医保清算标志 */
|
||||
private Integer ybClearFlag;//默认值0 未清算
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.openhis.financial.mapper;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.openhis.financial.domain.Claim;
|
||||
|
||||
/**
|
||||
* 索赔管理Mapper接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Repository
|
||||
public interface ClaimMapper extends BaseMapper<Claim> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.openhis.financial.mapper;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.openhis.financial.domain.ClaimResponse;
|
||||
|
||||
/**
|
||||
* 索赔响应管理Mapper接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Repository
|
||||
public interface ClaimResponseMapper extends BaseMapper<ClaimResponse> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.openhis.financial.mapper;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.openhis.financial.domain.Contract;
|
||||
|
||||
/**
|
||||
* 合同管理Mapper接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Repository
|
||||
public interface ContractMapper extends BaseMapper<Contract> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.openhis.financial.mapper;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.openhis.financial.domain.PaymentNotice;
|
||||
|
||||
/**
|
||||
* 合同管理Mapper接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Repository
|
||||
public interface PaymentNoticeMapper extends BaseMapper<PaymentNotice> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.openhis.financial.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.openhis.financial.domain.PaymentRecDetail;
|
||||
import com.openhis.financial.model.PaymentRecDetailAccountResult;
|
||||
|
||||
/**
|
||||
* 付款管理Mapper接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Repository
|
||||
public interface PaymentRecDetailMapper extends BaseMapper<PaymentRecDetail> {
|
||||
|
||||
/**
|
||||
* 根据paymentId集合查询详情信息
|
||||
*
|
||||
* @param paymentIdList 集合
|
||||
* @return 集合
|
||||
*/
|
||||
List<PaymentRecDetailAccountResult> getListByReconciliationIds(@Param("paymentIdList") List<Long> paymentIdList);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.financial.mapper;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.openhis.financial.domain.PaymentRecStatic;
|
||||
|
||||
/**
|
||||
* 付款管理Mapper接口
|
||||
*
|
||||
* @author SunJQ
|
||||
* @date 2025-08-08
|
||||
*/
|
||||
@Repository
|
||||
public interface PaymentRecStaticMapper extends BaseMapper<PaymentRecStatic> {}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.openhis.financial.mapper;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.openhis.financial.domain.PaymentReconciliation;
|
||||
|
||||
/**
|
||||
* 付款管理Mapper接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Repository
|
||||
public interface PaymentReconciliationMapper extends BaseMapper<PaymentReconciliation> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.financial.model;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 付款详情与账户信息实体
|
||||
*
|
||||
* @author SunJQ
|
||||
* @date 2025-08-05
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class PaymentRecDetailAccountResult {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 先前支付明细id */
|
||||
private Long predecessorId;
|
||||
|
||||
/** 付款id */
|
||||
private Long reconciliationId;
|
||||
|
||||
/** 付款类型 */
|
||||
private Integer targetEnum;// 暂时没用
|
||||
|
||||
/** 账户 */
|
||||
private Long accountId;
|
||||
|
||||
/** 账户类型 */
|
||||
private String accountCode;
|
||||
|
||||
/** 支付类型 */
|
||||
private Integer payEnum;
|
||||
|
||||
/** 支付类型等级 */
|
||||
private Integer payLevelEnum;
|
||||
|
||||
/** 金额 */
|
||||
private BigDecimal amount;
|
||||
|
||||
/** 找零 */
|
||||
private BigDecimal returnAmount;
|
||||
|
||||
/** 交款 */
|
||||
private BigDecimal chargeAmount;
|
||||
|
||||
/** 支付平台返回交易号 医保批次号 */
|
||||
private String payTransNo;
|
||||
|
||||
/** 支付平台返回交易信息 医保结算ID */
|
||||
private String payTransText;
|
||||
|
||||
/** 支付平台返回交易时间 */
|
||||
private Date payTransDate;
|
||||
|
||||
/** 支付平台账前余额 */
|
||||
private BigDecimal beforeBalance;
|
||||
|
||||
/** 支付平台账后余额 */
|
||||
private BigDecimal afterBalance;
|
||||
|
||||
/** 单笔交易结果 */
|
||||
private Integer resultEnum;
|
||||
|
||||
/** 状态枚举 */
|
||||
private Integer statusEnum;
|
||||
|
||||
/** 结账状态枚举 */
|
||||
private Integer billingStatusEnum;
|
||||
|
||||
// 2025.04.10 经确认此处原有的【1 CASH 个人现金账户 | 2 医保账户】改为【01医保电子凭证 | 02 居民身份证 | 03 社会保障卡 | 04 个人现金账户】
|
||||
/** 账户类型编码 */
|
||||
private String typeCode;
|
||||
|
||||
/** 编码 */
|
||||
private String no;
|
||||
|
||||
/** 名称 */
|
||||
private String name;
|
||||
|
||||
/** 患者id */
|
||||
private Long patientId;
|
||||
|
||||
/** 就诊id */
|
||||
private Long encounterId;
|
||||
|
||||
/** 账户余额 */
|
||||
private BigDecimal balanceAmount;
|
||||
|
||||
/** 医保区域编码 */
|
||||
private String ybAreaNo;
|
||||
|
||||
/** 合同编码 */
|
||||
private String contractNo;
|
||||
|
||||
/** 欠费限制额度 */
|
||||
private BigDecimal limitAccount;
|
||||
|
||||
/** 是否为就诊登记使用 */
|
||||
private Integer encounterFlag;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.openhis.financial.model;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import liquibase.pro.packaged.D;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class PaymentRecDetailDto {
|
||||
|
||||
private Long id;
|
||||
|
||||
/** 账户 */
|
||||
private Long accountId;
|
||||
|
||||
/** 支付类型 */
|
||||
private Integer payEnum;
|
||||
|
||||
/** 支付类型 */
|
||||
private String payEnumText;
|
||||
|
||||
/** 金额 */
|
||||
private BigDecimal amount;
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package com.openhis.financial.model;
|
||||
|
||||
import com.openhis.yb.dto.Clinic2206FundPaymentResult;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class PaymentResult {
|
||||
// 主键字段
|
||||
private String mdtrtId; // 就诊ID
|
||||
|
||||
private String setlId;// 结算id
|
||||
|
||||
private String psnNo; // 人员编号
|
||||
|
||||
private String psnName; // 人员姓名
|
||||
|
||||
private String psnCertType; // 人员证件类型
|
||||
|
||||
private String certno; // 证件号码
|
||||
|
||||
private String gend; // 性别
|
||||
|
||||
private String naty; // 民族
|
||||
|
||||
private Date brdy; // 出生日期
|
||||
|
||||
private BigDecimal age; // 年龄
|
||||
|
||||
private String insutype; // 险种类型
|
||||
|
||||
private String psnType; // 人员类别
|
||||
|
||||
private String cvlservFlag; // 公务员标志
|
||||
|
||||
private Date setlTime; // 结算时间
|
||||
|
||||
private String mdtrtCertType; // 就诊凭证类型
|
||||
|
||||
private String medType; // 医疗类别
|
||||
|
||||
private BigDecimal medfeeSumamt; // 医疗费总额
|
||||
|
||||
private BigDecimal fulamtOwnpayAmt; // 全自费金额
|
||||
|
||||
private BigDecimal overlmtSelfpay; // 超限价自费费用
|
||||
|
||||
private BigDecimal preselfpayAmt; // 先行自付金额
|
||||
|
||||
private BigDecimal inscpScpAmt; // 符合政策范围金额
|
||||
|
||||
private BigDecimal actPayDedc; // 实际支付起付线
|
||||
|
||||
private BigDecimal hifpPay; // 基本医疗保险统筹基金支出
|
||||
|
||||
private BigDecimal poolPropSelfpay; // 基本医疗保险统筹基金支付比例
|
||||
|
||||
private BigDecimal cvlservPay; // 公务员医疗补助资金支出
|
||||
|
||||
private BigDecimal hifesPay; // 企业补充医疗保险基金支出
|
||||
|
||||
private BigDecimal hifmiPay; // 居民大病保险资金支出
|
||||
|
||||
private BigDecimal hifobPay; // 职工大额医疗费用补助基金支出
|
||||
|
||||
private BigDecimal mafPay; // 医疗救助基金支出
|
||||
|
||||
private BigDecimal othPay; // 其他支出
|
||||
|
||||
private BigDecimal fundPaySumamt; // 基金支付总额
|
||||
|
||||
private BigDecimal psnPartAmt; // 个人负担总金额
|
||||
|
||||
private BigDecimal acctPay; // 个人账户支出
|
||||
|
||||
private BigDecimal psnCashPay; // 个人现金支出
|
||||
|
||||
private BigDecimal hospPartAmt; // 医院负担金额
|
||||
|
||||
private BigDecimal balc; // 余额
|
||||
|
||||
private BigDecimal acctMulaidPay; // 个人账户共济支付金额
|
||||
|
||||
private String medinsSetlId; // 医药机构结算ID 存放发送方报文ID
|
||||
|
||||
private String clrOptins; // 清算经办机构
|
||||
|
||||
private String clrWay; // 清算方式
|
||||
|
||||
private String clrType; // 清算类别
|
||||
|
||||
private BigDecimal hifdmPay; // 伤残人员医疗保障基金支出
|
||||
|
||||
private String expContent; // 字段扩展
|
||||
|
||||
private List<Clinic2206FundPaymentResult> setldetail;// 结算详细信息
|
||||
|
||||
private String chrgBchno; // 收费批次号
|
||||
private String paymentNo; // 收费批次号
|
||||
|
||||
private Long accountId; // 收费批次号
|
||||
|
||||
public PaymentResult() {
|
||||
this.setMedfeeSumamt(new BigDecimal("0.0")).setFulamtOwnpayAmt(new BigDecimal("0.0"))
|
||||
.setOverlmtSelfpay(new BigDecimal("0.0")).setPreselfpayAmt(new BigDecimal("0.0"))
|
||||
.setInscpScpAmt(new BigDecimal("0.0")).setActPayDedc(new BigDecimal("0.0"))
|
||||
.setHifpPay(new BigDecimal("0.0")).setPoolPropSelfpay(new BigDecimal("0.0"))
|
||||
.setCvlservPay(new BigDecimal("0.0")).setHifesPay(new BigDecimal("0.0")).setHifmiPay(new BigDecimal("0.0"))
|
||||
.setHifobPay(new BigDecimal("0.00")).setMafPay(new BigDecimal("0.0")).setOthPay(new BigDecimal("0.0"))
|
||||
.setFundPaySumamt(new BigDecimal("0.0")).setPsnPartAmt(new BigDecimal("0.0"))
|
||||
.setAcctPay(new BigDecimal("0.0")).setPsnCashPay(new BigDecimal("0.0"))
|
||||
.setHospPartAmt(new BigDecimal("0.0")).setBalc(new BigDecimal("0.0"))
|
||||
.setAcctMulaidPay(new BigDecimal("0.0")).setHifdmPay(new BigDecimal("0.0"));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.openhis.financial.model;
|
||||
import com.openhis.administration.domain.ChargeItem;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class PaymentedItemModel {
|
||||
/** 就诊id */
|
||||
private Long encounterId;
|
||||
|
||||
/** 层级 */
|
||||
private String busNo;
|
||||
|
||||
/** 医疗类型 */
|
||||
private String medType;
|
||||
|
||||
/** 总价 */
|
||||
private BigDecimal totalPrice;
|
||||
|
||||
/** 总价 */
|
||||
private Long chargeItemId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
package com.openhis.financial.model;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import com.openhis.yb.dto.Clinic2206FundPaymentResult;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PrePaymentResult {
|
||||
|
||||
@JSONField(name = "medfee_sumamt")
|
||||
private BigDecimal medfeeSumamt; // 医疗费总额
|
||||
|
||||
@JSONField(name = "fulamt_ownpay_amt")
|
||||
private BigDecimal fulamtOwnpayAmt; // 全自费金额
|
||||
|
||||
@JSONField(name = "overlmt_selfpay")
|
||||
private BigDecimal overlmtSelfpay; // 超限价自费费用
|
||||
|
||||
@JSONField(name = "preselfpay_amt")
|
||||
private BigDecimal preselfpayAmt; // 先行自付金额
|
||||
|
||||
@JSONField(name = "inscp_scp_amt")
|
||||
private BigDecimal inscpScpAmt; // 符合政策范围金额
|
||||
|
||||
@JSONField(name = "act_pay_dedc")
|
||||
private BigDecimal actPayDedc; // 实际支付起付线
|
||||
|
||||
@JSONField(name = "hifp_pay")
|
||||
private BigDecimal hifpPay; // 基本医疗保险统筹基金支出
|
||||
|
||||
@JSONField(name = "pool_prop_selfpay")
|
||||
private BigDecimal poolPropSelfpay; // 基本医疗保险统筹基金支付比例
|
||||
|
||||
@JSONField(name = "cvlserv_pay")
|
||||
private BigDecimal cvlservPay; // 公务员医疗补助资金支出
|
||||
|
||||
@JSONField(name = "hifes_pay")
|
||||
private BigDecimal hifesPay; // 企业补充医疗保险基金支出
|
||||
|
||||
@JSONField(name = "hifmi_pay")
|
||||
private BigDecimal hifmiPay; // 居民大病保险资金支出
|
||||
|
||||
@JSONField(name = "hifob_pay")
|
||||
private BigDecimal hifobPay; // 职工大额医疗费用补助基金支出
|
||||
|
||||
@JSONField(name = "maf_pay")
|
||||
private BigDecimal mafPay; // 医疗救助基金支出
|
||||
|
||||
@JSONField(name = "oth_pay")
|
||||
private BigDecimal othPay; // 其他支出
|
||||
|
||||
@JSONField(name = "fund_pay_sumamt")
|
||||
private BigDecimal fundPaySumamt; // 基金支付总额
|
||||
|
||||
@JSONField(name = "psn_part_amt")
|
||||
private BigDecimal psnPartAmt; // 个人负担总金额
|
||||
|
||||
@JSONField(name = "acct_pay")
|
||||
private BigDecimal acctPay; // 个人账户支出
|
||||
|
||||
@JSONField(name = "psn_cash_pay")
|
||||
private BigDecimal psnCashPay; // 个人现金支出
|
||||
|
||||
@JSONField(name = "hosp_part_amt")
|
||||
private BigDecimal hospPartAmt; // 医院负担金额
|
||||
|
||||
@JSONField(name = "hifdm_pay")
|
||||
private BigDecimal hifdmPay;
|
||||
|
||||
@JSONField(name = "acct_mulaid_pay")
|
||||
private BigDecimal acctMulaidPay; // 个人账户共济支付金额
|
||||
|
||||
private List<Clinic2206FundPaymentResult> setldetail;// 结算详细信息
|
||||
|
||||
private String mdtrtCertNo; // 就诊凭证编号
|
||||
|
||||
private String chrgBchno; // 收费批次号
|
||||
|
||||
private String busNo; // 挂号采访码
|
||||
|
||||
private Long accountId; // 账号ID码
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.openhis.financial.model;
|
||||
|
||||
import com.openhis.financial.domain.PaymentRecDetail;
|
||||
import com.openhis.financial.domain.PaymentReconciliation;
|
||||
import com.openhis.financial.mapper.PaymentReconciliationMapper;
|
||||
import com.openhis.yb.dto.Clinic2206FundPaymentResult;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class PrePaymentResultModel {
|
||||
|
||||
private List<PaymentRecDetailDto> details;
|
||||
|
||||
private PaymentReconciliation paymentReconciliation;
|
||||
|
||||
private String paymentId;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.openhis.financial.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.financial.domain.ClaimResponse;
|
||||
|
||||
/**
|
||||
* 索赔响应管理Service接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
public interface IClaimResponseService extends IService<ClaimResponse> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.openhis.financial.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.financial.domain.Claim;
|
||||
|
||||
/**
|
||||
* 索赔管理Service接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
public interface IClaimService extends IService<Claim> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.openhis.financial.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.financial.domain.Contract;
|
||||
|
||||
/**
|
||||
* 合同管理Service接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
public interface IContractService extends IService<Contract> {
|
||||
|
||||
/**
|
||||
* 根据医保码找合同信息
|
||||
*
|
||||
* @param contractNo 医保码
|
||||
* @return 合同实体
|
||||
*/
|
||||
Contract getByContractNo(String contractNo);
|
||||
|
||||
/**
|
||||
* 查询租户合同信息分页
|
||||
*
|
||||
* @param tenantId 租户ID
|
||||
* @param pageNum 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 租户合同信息分页
|
||||
*/
|
||||
IPage<Contract> getTenantContractPage(Integer tenantId, Integer pageNum, Integer pageSize);
|
||||
|
||||
/**
|
||||
* 查询租户合同信息详情
|
||||
*
|
||||
* @param id ID
|
||||
* @return 租户合同信息详情
|
||||
*/
|
||||
Contract getTenantContractDetail(Long id);
|
||||
|
||||
/**
|
||||
* 新增租户合同信息
|
||||
*
|
||||
* @param contract 合同管理实体
|
||||
*/
|
||||
void addTenantContract(Contract contract);
|
||||
|
||||
/**
|
||||
* 编辑租户合同信息
|
||||
*
|
||||
* @param contract 合同管理实体
|
||||
*/
|
||||
void editTenantContract(Contract contract);
|
||||
|
||||
/**
|
||||
* 删除租户合同信息
|
||||
*
|
||||
* @param id ID
|
||||
*/
|
||||
void delTenantContract(Long id);
|
||||
|
||||
/**
|
||||
* 查詢合同的集合
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<Contract> getContractList();
|
||||
|
||||
/**
|
||||
* 查詢合同的集合
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<Contract> getRedisContractList();
|
||||
|
||||
/**
|
||||
* 通過合同編碼查詢合同
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
Contract getContract(String contractNo);
|
||||
|
||||
/**
|
||||
* 根据参保地信息找到对应的合同
|
||||
*
|
||||
* @param insuplcAdmdvs
|
||||
* @return
|
||||
*/
|
||||
Contract getContractByInsuplcAdmdvs(String insuplcAdmdvs);
|
||||
|
||||
/**
|
||||
* 查詢合同的集合
|
||||
*
|
||||
* @return 合同集合
|
||||
*/
|
||||
List<Contract> getContractListByYb();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.openhis.financial.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.financial.domain.PaymentNotice;
|
||||
|
||||
/**
|
||||
* 合同管理Service接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
public interface IPaymentNoticeService extends IService<PaymentNotice> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.openhis.financial.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.common.enums.PaymentResult;
|
||||
import com.openhis.financial.domain.PaymentRecDetail;
|
||||
import com.openhis.financial.model.PaymentRecDetailAccountResult;
|
||||
|
||||
/**
|
||||
* 付款管理Service接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
public interface IPaymentRecDetailService extends IService<PaymentRecDetail> {
|
||||
|
||||
/**
|
||||
* 根据paymentId更改结算结果
|
||||
*
|
||||
* @param id id
|
||||
* @param paid PaymentResult
|
||||
*/
|
||||
void updateResultByPaymentId(Long id, PaymentResult paid);
|
||||
|
||||
/**
|
||||
* 根据paymentId集合查询详情信息
|
||||
*
|
||||
* @param paymentIdList 集合
|
||||
* @return 集合
|
||||
*/
|
||||
List<PaymentRecDetailAccountResult> getListByReconciliationIds(List<Long> paymentIdList);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.financial.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.administration.dto.ChargeItemDefInfo;
|
||||
import com.openhis.common.enums.PaymentStatisticalMethod;
|
||||
import com.openhis.common.enums.PaymentType;
|
||||
import com.openhis.financial.domain.PaymentRecStatic;
|
||||
|
||||
/**
|
||||
* 付款管理Service接口
|
||||
*
|
||||
* @author SunJQ
|
||||
* @date 2025-08-08
|
||||
*/
|
||||
public interface IPaymentRecStaticService extends IService<PaymentRecStatic> {
|
||||
/**
|
||||
* 批量保存付款快照信息
|
||||
*
|
||||
* @param paymentId 付款id
|
||||
* @param paymentType 付款/退款
|
||||
* @param paymentStatisticalMethod 统计方式:字典/医保分类
|
||||
* @param chargeItemDefInfoList chargeItem基础信息
|
||||
*/
|
||||
void savePaymentRecStatics(Long paymentId, PaymentType paymentType,
|
||||
PaymentStatisticalMethod paymentStatisticalMethod, List<ChargeItemDefInfo> chargeItemDefInfoList);
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
package com.openhis.financial.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.common.enums.PaymentKind;
|
||||
import com.openhis.common.enums.PaymentStatus;
|
||||
import com.openhis.common.enums.ybenums.YbMdtrtCertType;
|
||||
import com.openhis.financial.domain.Contract;
|
||||
import com.openhis.financial.domain.PaymentReconciliation;
|
||||
import com.openhis.financial.model.PaymentResult;
|
||||
import com.openhis.financial.model.PaymentedItemModel;
|
||||
import com.openhis.financial.model.PrePaymentResult;
|
||||
import com.openhis.yb.dto.PaymentInpatientDto;
|
||||
|
||||
/**
|
||||
* 付款管理Service接口
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
public interface IPaymentReconciliationService extends IService<PaymentReconciliation> {
|
||||
|
||||
/**
|
||||
* 根据支付id获取对应收费项目的id列表
|
||||
*
|
||||
* @param paymentIdList 支付id列表
|
||||
* @return 收费项目的id列表
|
||||
*/
|
||||
List<Long> getChargeItemIdListByPayment(List<Long> paymentIdList);
|
||||
|
||||
/**
|
||||
* 更新付款状态:退款中
|
||||
*
|
||||
* @param paymentIdList 支付id列表
|
||||
*/
|
||||
void updateRefundingStatus(List<Long> paymentIdList);
|
||||
|
||||
/**
|
||||
* 【门诊预结算】
|
||||
*
|
||||
* @param ybMdtrtCertType 医保凭证类型
|
||||
* @param busiCardInfo 读卡获取的密钥
|
||||
* @param contractBusNo 合同编号
|
||||
* @param paymentedItemList 收费项
|
||||
* @return 结果
|
||||
*/
|
||||
PrePaymentResult preSettle(YbMdtrtCertType ybMdtrtCertType, String busiCardInfo, String contractBusNo,
|
||||
List<PaymentedItemModel> paymentedItemList);
|
||||
|
||||
/**
|
||||
* 【门诊结算】
|
||||
*
|
||||
* @param contract 合同
|
||||
* @param payTransNo 收费批次号
|
||||
* @param byValue 医保凭证类型
|
||||
* @param busiCardInfo 读卡获取的密钥
|
||||
* @param minpacuntDrugTracCnt 追溯码相关
|
||||
* @param mcsTracCnt 追溯码相关
|
||||
* @return 结算结果
|
||||
*/
|
||||
PaymentResult settle(Contract contract, String payTransNo, YbMdtrtCertType byValue, String busiCardInfo,
|
||||
Integer minpacuntDrugTracCnt, Integer mcsTracCnt);
|
||||
|
||||
/**
|
||||
* 更改付款状态
|
||||
*
|
||||
* @param id paymentId
|
||||
* @param success 付款状态
|
||||
*/
|
||||
void updatePaymentStatusById(Long id, PaymentStatus success);
|
||||
|
||||
/**
|
||||
* 更改状态
|
||||
*
|
||||
* @param id 主键id
|
||||
* @param success 付款状态
|
||||
* @param settleId 医保结算id
|
||||
*/
|
||||
void updatePaymentStatusAndSettleIdsById(Long id, PaymentStatus success, List<String> settleId);
|
||||
|
||||
/**
|
||||
* 【住院结算】
|
||||
*
|
||||
* @param contract 合同
|
||||
* @param paymentDto 收费参数
|
||||
* @return 结算结果
|
||||
*/
|
||||
PaymentResult inpatientSettle(Contract contract, PaymentInpatientDto paymentDto);
|
||||
|
||||
/**
|
||||
* 查询付款实体
|
||||
*
|
||||
* @param encounterId 就诊id
|
||||
* @return 付款实体
|
||||
*/
|
||||
PaymentReconciliation getByEncounterId(Long encounterId, PaymentKind kindEnum);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.openhis.financial.service.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.openhis.financial.domain.ClaimResponse;
|
||||
import com.openhis.financial.mapper.ClaimResponseMapper;
|
||||
import com.openhis.financial.service.IClaimResponseService;
|
||||
|
||||
/**
|
||||
* 索赔响应管理Service业务层处理
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Service
|
||||
public class ClaimResponseServiceImpl extends ServiceImpl<ClaimResponseMapper, ClaimResponse> implements IClaimResponseService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.openhis.financial.service.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.openhis.financial.domain.Claim;
|
||||
import com.openhis.financial.mapper.ClaimMapper;
|
||||
import com.openhis.financial.service.IClaimService;
|
||||
|
||||
/**
|
||||
* 索赔管理Service业务层处理
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Service
|
||||
public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements IClaimService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
package com.openhis.financial.service.impl;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.core.redis.RedisCache;
|
||||
import com.core.common.enums.DeleteFlag;
|
||||
import com.core.common.utils.SecurityUtils;
|
||||
import com.openhis.common.constant.YbCommonConstants;
|
||||
import com.openhis.common.enums.Whether;
|
||||
import com.openhis.financial.domain.Contract;
|
||||
import com.openhis.financial.mapper.ContractMapper;
|
||||
import com.openhis.financial.service.IContractService;
|
||||
|
||||
/**
|
||||
* 合同管理Service业务层处理
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Service
|
||||
public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements IContractService {
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param contractNo 医保码
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Contract getByContractNo(String contractNo) {
|
||||
return baseMapper.selectOne(new LambdaUpdateWrapper<Contract>().eq(Contract::getBusNo, contractNo)
|
||||
.last(YbCommonConstants.sqlConst.LIMIT1));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询租户合同信息分页
|
||||
*
|
||||
* @param tenantId 租户ID
|
||||
* @param pageNum 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 租户合同信息分页
|
||||
*/
|
||||
@Override
|
||||
public IPage<Contract> getTenantContractPage(Integer tenantId, Integer pageNum, Integer pageSize) {
|
||||
return baseMapper.selectPage(new Page<>(pageNum, pageSize), new LambdaQueryWrapper<Contract>()
|
||||
.eq(Contract::getTenantId, tenantId).eq(Contract::getDeleteFlag, DeleteFlag.NOT_DELETED.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询租户合同信息详情
|
||||
*
|
||||
* @param id ID
|
||||
* @return 租户合同信息详情
|
||||
*/
|
||||
@Override
|
||||
public Contract getTenantContractDetail(Long id) {
|
||||
return baseMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增租户合同信息
|
||||
*
|
||||
* @param contract 合同管理实体
|
||||
*/
|
||||
@Override
|
||||
public void addTenantContract(Contract contract) {
|
||||
baseMapper.insert(contract);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑租户合同信息
|
||||
*
|
||||
* @param contract 合同管理实体
|
||||
*/
|
||||
@Override
|
||||
public void editTenantContract(Contract contract) {
|
||||
baseMapper.updateById(contract);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除租户合同信息
|
||||
*
|
||||
* @param id ID
|
||||
*/
|
||||
@Override
|
||||
public void delTenantContract(Long id) {
|
||||
baseMapper.update(new Contract(), new LambdaUpdateWrapper<Contract>().eq(Contract::getId, id)
|
||||
.set(Contract::getDeleteFlag, DeleteFlag.DELETED.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查詢合同的集合
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Contract> getContractList() {
|
||||
return baseMapper.selectList(
|
||||
new LambdaQueryWrapper<Contract>().eq(Contract::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查詢合同的集合
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(value = "contractListCache", key = "'contractList'")
|
||||
public List<Contract> getRedisContractList() {
|
||||
return getContractList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查詢合同的集合
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Contract getContract(String contractNo) {
|
||||
List<Contract> contractList = getRedisContractList();
|
||||
for (Contract contract : contractList) {
|
||||
if (contractNo.equals(contract.getBusNo())) {
|
||||
return contract;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据参保地信息找到对应的合同
|
||||
*
|
||||
* @param insuplcAdmdvs
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Contract getContractByInsuplcAdmdvs(String insuplcAdmdvs) {
|
||||
List<Contract> contractList = getRedisContractList();
|
||||
for (Contract contract : contractList) {
|
||||
if (insuplcAdmdvs.equals(contract.getBusNo())) {
|
||||
return contract;
|
||||
}
|
||||
}
|
||||
if (!contractList.isEmpty()) {
|
||||
Optional<Contract> max = contractList.stream().max(Comparator.comparingInt(Contract::getSort));
|
||||
if (max.isPresent()) {
|
||||
return max.get();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查詢合同的集合
|
||||
*
|
||||
* @return 合同集合
|
||||
*/
|
||||
@Override
|
||||
public List<Contract> getContractListByYb() {
|
||||
return baseMapper.selectList(new LambdaQueryWrapper<Contract>().eq(Contract::getYbFlag, Whether.YES.getValue())
|
||||
.eq(Contract::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.openhis.financial.service.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.openhis.financial.domain.PaymentNotice;
|
||||
import com.openhis.financial.mapper.PaymentNoticeMapper;
|
||||
import com.openhis.financial.service.IPaymentNoticeService;
|
||||
|
||||
/**
|
||||
* 合同管理Service业务层处理
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Service
|
||||
public class PaymentNoticeServiceImpl extends ServiceImpl<PaymentNoticeMapper, PaymentNotice> implements IPaymentNoticeService {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.openhis.financial.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.openhis.common.enums.PaymentResult;
|
||||
import com.openhis.financial.domain.PaymentRecDetail;
|
||||
import com.openhis.financial.mapper.PaymentRecDetailMapper;
|
||||
import com.openhis.financial.model.PaymentRecDetailAccountResult;
|
||||
import com.openhis.financial.service.IPaymentRecDetailService;
|
||||
|
||||
/**
|
||||
* 付款管理Service业务层处理
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Service
|
||||
public class PaymentRecDetailServiceImpl extends ServiceImpl<PaymentRecDetailMapper, PaymentRecDetail>
|
||||
implements IPaymentRecDetailService {
|
||||
|
||||
/**
|
||||
* 根据paymentId更改结算结果
|
||||
*
|
||||
* @param id id
|
||||
* @param paid PaymentResult
|
||||
*/
|
||||
@Override
|
||||
public void updateResultByPaymentId(Long id, PaymentResult paid) {
|
||||
baseMapper.update(new PaymentRecDetail().setResultEnum(PaymentResult.PAID.getValue()),
|
||||
new LambdaQueryWrapper<PaymentRecDetail>().eq(PaymentRecDetail::getReconciliationId, id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据paymentId集合查询详情信息
|
||||
*
|
||||
* @param paymentIdList 集合
|
||||
* @return 集合
|
||||
*/
|
||||
@Override
|
||||
public List<PaymentRecDetailAccountResult> getListByReconciliationIds(List<Long> paymentIdList) {
|
||||
return baseMapper.getListByReconciliationIds(paymentIdList);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.financial.service.impl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.openhis.administration.dto.ChargeItemDefInfo;
|
||||
import com.openhis.common.enums.PaymentStatisticalMethod;
|
||||
import com.openhis.common.enums.PaymentType;
|
||||
import com.openhis.financial.domain.PaymentRecStatic;
|
||||
import com.openhis.financial.mapper.PaymentRecStaticMapper;
|
||||
import com.openhis.financial.service.IPaymentRecStaticService;
|
||||
|
||||
/**
|
||||
* 付款管理Service业务层处理
|
||||
*
|
||||
* @author SunJQ
|
||||
* @date 2025-08-08
|
||||
*/
|
||||
@Service
|
||||
public class PaymentRecStaticServiceImpl extends ServiceImpl<PaymentRecStaticMapper, PaymentRecStatic>
|
||||
implements IPaymentRecStaticService {
|
||||
|
||||
/**
|
||||
* 批量保存付款快照信息
|
||||
*
|
||||
* @param paymentId 付款id
|
||||
* @param paymentType 付款/退款
|
||||
* @param paymentStatisticalMethod 统计方式:字典/医保分类
|
||||
* @param chargeItemDefInfoList chargeItem基础信息
|
||||
*/
|
||||
@Override
|
||||
public void savePaymentRecStatics(Long paymentId, PaymentType paymentType,
|
||||
PaymentStatisticalMethod paymentStatisticalMethod, List<ChargeItemDefInfo> chargeItemDefInfoList) {
|
||||
if (chargeItemDefInfoList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
Map<String, List<ChargeItemDefInfo>> collect;
|
||||
List<PaymentRecStatic> paymentRecStatics = new ArrayList<>();
|
||||
if (paymentStatisticalMethod == PaymentStatisticalMethod.FIN_TYPE_CODE) {
|
||||
collect = chargeItemDefInfoList.stream().collect(Collectors.groupingBy(ChargeItemDefInfo::getTypeCode));
|
||||
getPaymentRecStaticList(paymentId, paymentType, paymentStatisticalMethod, collect, paymentRecStatics);
|
||||
} else if (paymentStatisticalMethod == PaymentStatisticalMethod.MED_CHRGITM_TYPE) {
|
||||
collect = chargeItemDefInfoList.stream().collect(Collectors.groupingBy(ChargeItemDefInfo::getYbType));
|
||||
getPaymentRecStaticList(paymentId, paymentType, paymentStatisticalMethod, collect, paymentRecStatics);
|
||||
} else {
|
||||
collect = chargeItemDefInfoList.stream().collect(Collectors.groupingBy(ChargeItemDefInfo::getTypeCode));
|
||||
getPaymentRecStaticList(paymentId, paymentType, PaymentStatisticalMethod.FIN_TYPE_CODE, collect,
|
||||
paymentRecStatics);
|
||||
collect = chargeItemDefInfoList.stream().collect(Collectors.groupingBy(ChargeItemDefInfo::getYbType));
|
||||
getPaymentRecStaticList(paymentId, paymentType, PaymentStatisticalMethod.MED_CHRGITM_TYPE, collect,
|
||||
paymentRecStatics);
|
||||
}
|
||||
saveBatch(paymentRecStatics);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param paymentId 付款id
|
||||
* @param paymentType 付款/退款
|
||||
* @param paymentStatisticalMethod 统计方式:字典/医保分类
|
||||
* @param collect map
|
||||
* @param paymentRecStatics 集合
|
||||
*/
|
||||
public void getPaymentRecStaticList(Long paymentId, PaymentType paymentType,
|
||||
PaymentStatisticalMethod paymentStatisticalMethod, Map<String, List<ChargeItemDefInfo>> collect,
|
||||
List<PaymentRecStatic> paymentRecStatics) {
|
||||
PaymentRecStatic paymentRecStatic;
|
||||
BigDecimal bigDecimal;
|
||||
for (Map.Entry<String, List<ChargeItemDefInfo>> stringListEntry : collect.entrySet()) {
|
||||
paymentRecStatic = new PaymentRecStatic();
|
||||
bigDecimal = BigDecimal.ZERO;
|
||||
for (ChargeItemDefInfo chargeItemDefInfo : stringListEntry.getValue()) {
|
||||
bigDecimal = bigDecimal.add(chargeItemDefInfo.getTotalPrice().multiply(paymentType.getMultiplier()));
|
||||
}
|
||||
paymentRecStatic.setAmount(bigDecimal).setReconciliationId(paymentId).setTypeCode(stringListEntry.getKey())
|
||||
.setChargeItemIds(JSON.toJSONString(
|
||||
stringListEntry.getValue().stream().map(ChargeItemDefInfo::getId).collect(Collectors.toList())))
|
||||
.setCountBy(paymentStatisticalMethod.getValue());
|
||||
paymentRecStatics.add(paymentRecStatic);
|
||||
}
|
||||
// return paymentRecStatics;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,271 @@
|
||||
package com.openhis.financial.service.impl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.utils.AssignSeqUtil;
|
||||
import com.core.common.utils.SecurityUtils;
|
||||
import com.core.common.utils.StringUtils;
|
||||
import com.openhis.common.constant.CommonConstants;
|
||||
import com.openhis.common.constant.YbCommonConstants;
|
||||
import com.openhis.common.enums.DelFlag;
|
||||
import com.openhis.common.enums.PaymentKind;
|
||||
import com.openhis.common.enums.PaymentStatus;
|
||||
import com.openhis.common.enums.ybenums.YbMdtrtCertType;
|
||||
import com.openhis.common.enums.ybenums.YbMedType;
|
||||
import com.openhis.financial.domain.Contract;
|
||||
import com.openhis.financial.domain.PaymentReconciliation;
|
||||
import com.openhis.financial.mapper.PaymentReconciliationMapper;
|
||||
import com.openhis.financial.model.PaymentResult;
|
||||
import com.openhis.financial.model.PaymentedItemModel;
|
||||
import com.openhis.financial.model.PrePaymentResult;
|
||||
import com.openhis.financial.service.IContractService;
|
||||
import com.openhis.financial.service.IPaymentReconciliationService;
|
||||
import com.openhis.yb.dto.Clinic2206OrderOutput;
|
||||
import com.openhis.yb.dto.ClinicReg2201Output;
|
||||
import com.openhis.yb.dto.PaymentInpatientDto;
|
||||
import com.openhis.yb.dto.Yb2304OutputSetlInfo;
|
||||
import com.openhis.yb.model.Clinic2207OrderModel;
|
||||
import com.openhis.yb.service.YbManager;
|
||||
|
||||
/**
|
||||
* 付款管理Service业务层处理
|
||||
*
|
||||
* @author system
|
||||
* @date 2025-02-20
|
||||
*/
|
||||
@Service
|
||||
public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconciliationMapper, PaymentReconciliation>
|
||||
implements IPaymentReconciliationService {
|
||||
@Resource
|
||||
private AssignSeqUtil assignSeqUtil;
|
||||
@Autowired
|
||||
private IContractService iContractService;
|
||||
@Autowired
|
||||
private YbManager ybManager;
|
||||
|
||||
/**
|
||||
* 根据支付id获取对应收费项目的id列表
|
||||
*
|
||||
* @param paymentIdList 支付id列表
|
||||
* @return 收费项目的id列表
|
||||
*/
|
||||
@Override
|
||||
public List<Long> getChargeItemIdListByPayment(List<Long> paymentIdList) {
|
||||
|
||||
// 根据支付id获取支付信息
|
||||
List<PaymentReconciliation> paymentReconciliationList =
|
||||
baseMapper.selectList(new LambdaQueryWrapper<PaymentReconciliation>()
|
||||
.select(PaymentReconciliation::getChargeItemIds).in(PaymentReconciliation::getId, paymentIdList));
|
||||
if (paymentReconciliationList.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
// 拆解所有的chargeItemId,拼装成一个集合
|
||||
List<String> chargeItemIdList = paymentReconciliationList.stream().map(PaymentReconciliation::getChargeItemIds)
|
||||
.collect(Collectors.toList());
|
||||
List<Long> chargeItemIds = new ArrayList<>();
|
||||
for (String chargeItemId : chargeItemIdList) {
|
||||
if (StringUtils.isNotEmpty(chargeItemId)) {
|
||||
chargeItemIds.addAll(Arrays
|
||||
.stream(
|
||||
chargeItemId.replaceAll("\\[", "").replaceAll("\\]", "").split(CommonConstants.Common.COMMA))
|
||||
.map(Long::parseLong).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
// 将收费项目集合转换成列表
|
||||
return chargeItemIds;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新付款状态:退款中
|
||||
*
|
||||
* @param paymentIdList 支付id列表
|
||||
*/
|
||||
@Override
|
||||
public void updateRefundingStatus(List<Long> paymentIdList) {
|
||||
baseMapper.update(new PaymentReconciliation().setStatusEnum(PaymentStatus.REFUNDING.getValue()),
|
||||
new LambdaUpdateWrapper<PaymentReconciliation>().in(PaymentReconciliation::getId, paymentIdList));
|
||||
}
|
||||
|
||||
/**
|
||||
* PS:对chargeItem分付款方式 2025/05/23 ChargeItem分完付款方式之后,医保支付的ChargeItem还要分特慢病和普通门诊,特慢病等支付与常规门诊支付传参不一样
|
||||
*/
|
||||
/**
|
||||
* 【预结算】
|
||||
*
|
||||
* @param ybMdtrtCertType 医保凭证类型
|
||||
* @param busiCardInfo 读卡获取的密钥
|
||||
* @param contractBusNo 合同编号
|
||||
* @param paymentedItemList 收费项
|
||||
* @return 预结算结果
|
||||
*/
|
||||
@Override
|
||||
public PrePaymentResult preSettle(YbMdtrtCertType ybMdtrtCertType, String busiCardInfo, String contractBusNo,
|
||||
List<PaymentedItemModel> paymentedItemList) {
|
||||
|
||||
PrePaymentResult prePaymentResult = null;
|
||||
String ybSwitchFlag = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH);
|
||||
if (ybSwitchFlag.equals("0")) {
|
||||
contractBusNo = CommonConstants.BusinessName.DEFAULT_CONTRACT_NO;
|
||||
}
|
||||
|
||||
Contract contract = iContractService.getContract(contractBusNo);
|
||||
|
||||
switch (contractBusNo) {
|
||||
case CommonConstants.BusinessName.DEFAULT_CONTRACT_NO:
|
||||
prePaymentResult = new PrePaymentResult();
|
||||
BigDecimal sumAmount = BigDecimal.ZERO;
|
||||
for (PaymentedItemModel item : paymentedItemList) {
|
||||
sumAmount = sumAmount.add(item.getTotalPrice());
|
||||
}
|
||||
prePaymentResult.setMedfeeSumamt(sumAmount);
|
||||
prePaymentResult.setFulamtOwnpayAmt(sumAmount);
|
||||
prePaymentResult.setPsnPartAmt(sumAmount);
|
||||
prePaymentResult.setPsnCashPay(sumAmount);
|
||||
prePaymentResult.setChrgBchno(CommonConstants.BusinessName.DEFAULT_CONTRACT_NO);
|
||||
break;
|
||||
case "229900":// 吉林省医保
|
||||
case "220199":// 长春市医保(农大)
|
||||
case "220100":// 长春市医保(长大)
|
||||
Map<String, List<PaymentedItemModel>> collect =
|
||||
paymentedItemList.stream().collect(Collectors.groupingBy(PaymentedItemModel::getMedType));
|
||||
PrePaymentResult result;
|
||||
for (Map.Entry<String, List<PaymentedItemModel>> medTypeKV : collect.entrySet()) {
|
||||
Clinic2206OrderOutput clinic2206OrderOutput = null;
|
||||
ClinicReg2201Output reg2201Output = null;
|
||||
if (!medTypeKV.getKey().equals(YbMedType.GENERAL_OUTPATIENT.getValue()) && "1".equals(
|
||||
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH))) {
|
||||
// 不是普通门诊就诊类型,补充挂号信息
|
||||
reg2201Output = ybManager.createRegWithMedType(contract, ybMdtrtCertType, busiCardInfo,
|
||||
medTypeKV.getValue().get(0).getEncounterId(),
|
||||
YbMedType.getByValue(medTypeKV.getValue().get(0).getMedType()));
|
||||
reg2201Output.setMedType(medTypeKV.getKey());// 2025/06/05慢病挂号后上传2206信息报错,2201返回值没有medType,此处更正赋值
|
||||
} else {
|
||||
// 从数据库里取reg2201
|
||||
reg2201Output =
|
||||
ybManager.getClinicRegByEncounterId(medTypeKV.getValue().get(0).getEncounterId());
|
||||
}
|
||||
// 调用预结算
|
||||
clinic2206OrderOutput = ybManager.preSettle(contract, medTypeKV.getValue().get(0).getEncounterId(),
|
||||
ybMdtrtCertType, busiCardInfo, reg2201Output, "01", medTypeKV.getValue().stream()
|
||||
.map(PaymentedItemModel::getChargeItemId).collect(Collectors.toList()),
|
||||
YbMedType.getByValue(medTypeKV.getKey()));
|
||||
prePaymentResult = new PrePaymentResult();
|
||||
BeanUtils.copyProperties(clinic2206OrderOutput, prePaymentResult);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return prePaymentResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 【门诊结算】
|
||||
*
|
||||
* @param contract 合同
|
||||
* @param payTransNo 支付批次号
|
||||
* @param ybMdtrtCertType 凭证类型
|
||||
* @param busiCardInfo 读卡获取到的凭证
|
||||
* @param minpacuntDrugTracCnt 追溯码相关信息
|
||||
* @param mcsTracCnt 追溯码相关信息
|
||||
* @return 结算结果
|
||||
*/
|
||||
@Override
|
||||
public PaymentResult settle(Contract contract, String payTransNo, YbMdtrtCertType ybMdtrtCertType,
|
||||
String busiCardInfo, Integer minpacuntDrugTracCnt, Integer mcsTracCnt) {
|
||||
PaymentResult paymentResult = null;
|
||||
if (!CommonConstants.BusinessName.DEFAULT_CONTRACT_NO.equals(payTransNo)) {
|
||||
// 医保支付 todo:支付的详细信息在于结算中已经存好了,但是还没有存储卡余额
|
||||
Clinic2207OrderModel clinic2207OrderModel =
|
||||
ybManager.settle(contract, payTransNo, busiCardInfo, ybMdtrtCertType, minpacuntDrugTracCnt, mcsTracCnt);
|
||||
paymentResult = new PaymentResult();
|
||||
BeanUtils.copyProperties(clinic2207OrderModel, paymentResult);
|
||||
} else {
|
||||
// 自费返回new实体
|
||||
paymentResult = new PaymentResult();
|
||||
}
|
||||
return paymentResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 【住院结算】
|
||||
*
|
||||
* @param contract 合同
|
||||
* @param paymentDto 收费参数
|
||||
* @return 结算结果
|
||||
*/
|
||||
@Override
|
||||
public PaymentResult inpatientSettle(Contract contract, PaymentInpatientDto paymentDto) {
|
||||
PaymentResult paymentResult = null;
|
||||
if (!CommonConstants.BusinessName.DEFAULT_CONTRACT_NO.equals(contract.getBusNo())) {
|
||||
// 医保支付 todo:支付的详细信息在于结算中已经存好了,但是还没有存储卡余额
|
||||
Yb2304OutputSetlInfo yb2304OutputSetlInfo = ybManager.inpatientSettle(contract, paymentDto);
|
||||
paymentResult = new PaymentResult();
|
||||
BeanUtils.copyProperties(yb2304OutputSetlInfo, paymentResult);
|
||||
} else {
|
||||
// 自费返回new实体
|
||||
paymentResult = new PaymentResult();
|
||||
}
|
||||
return paymentResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改付款状态
|
||||
*
|
||||
* @param id paymentId
|
||||
* @param success 付款状态
|
||||
*/
|
||||
@Override
|
||||
public void updatePaymentStatusById(Long id, PaymentStatus success) {
|
||||
baseMapper.update(new PaymentReconciliation().setStatusEnum(success.getValue()),
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getId, id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改payment状态以及医保支付结算id
|
||||
*
|
||||
* @param id 主键id
|
||||
* @param success 状态
|
||||
* @param settleId 医保结算id
|
||||
*/
|
||||
@Override
|
||||
public void updatePaymentStatusAndSettleIdsById(Long id, PaymentStatus success, List<String> settleId) {
|
||||
if (settleId.isEmpty()) {
|
||||
baseMapper.update(new PaymentReconciliation().setStatusEnum(success.getValue()),
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getId, id));
|
||||
} else {
|
||||
baseMapper.update(
|
||||
new PaymentReconciliation().setStatusEnum(success.getValue())
|
||||
.setYbSettleIds(String.join(",", settleId)),
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getId, id));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询付款实体
|
||||
*
|
||||
* @param encounterId 就诊id
|
||||
* @return 付款实体
|
||||
*/
|
||||
@Override
|
||||
public PaymentReconciliation getByEncounterId(Long encounterId, PaymentKind paymentKind) {
|
||||
return baseMapper.selectOne(new LambdaQueryWrapper<PaymentReconciliation>()
|
||||
.eq(PaymentReconciliation::getEncounterId, encounterId)
|
||||
.eq(PaymentReconciliation::getKindEnum, PaymentKind.HOSPITAL_DEPOSIT.getValue())
|
||||
.eq(PaymentReconciliation::getDeleteFlag, DelFlag.NO.getCode()).last(YbCommonConstants.sqlConst.LIMIT1));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user