提交merge1.3
This commit is contained in:
@@ -4,9 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.financial.domain.ThreePartPayCallBack;
|
||||
|
||||
public interface ThreePartPayCallBackService extends IService<ThreePartPayCallBack> {
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
ThreePartPayCallBack getByPayment(Long paymentId);
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
@@ -32,11 +32,7 @@ import com.openhis.administration.service.impl.PatientServiceImpl;
|
||||
import com.openhis.administration.service.impl.PatientStudentServiceImpl;
|
||||
import com.openhis.common.constant.CommonConstants;
|
||||
import com.openhis.common.constant.YbCommonConstants;
|
||||
<<<<<<< HEAD
|
||||
import com.openhis.common.enums.DelFlag;
|
||||
=======
|
||||
import com.core.common.enums.DelFlag;
|
||||
>>>>>>> v1.3
|
||||
import com.openhis.common.enums.ItemType;
|
||||
import com.openhis.common.enums.PaymentKind;
|
||||
import com.openhis.common.enums.PaymentStatus;
|
||||
@@ -71,7 +67,8 @@ import com.openhis.yb.service.YbManager;
|
||||
*/
|
||||
@Service
|
||||
public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconciliationMapper, PaymentReconciliation>
|
||||
implements IPaymentReconciliationService {
|
||||
implements IPaymentReconciliationService {
|
||||
|
||||
@Resource
|
||||
private AssignSeqUtil assignSeqUtil;
|
||||
@Autowired
|
||||
@@ -107,22 +104,22 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
public List<Long> getChargeItemIdListByPayment(List<Long> paymentIdList) {
|
||||
|
||||
// 根据支付id获取支付信息
|
||||
List<PaymentReconciliation> paymentReconciliationList =
|
||||
baseMapper.selectList(new LambdaQueryWrapper<PaymentReconciliation>()
|
||||
.select(PaymentReconciliation::getChargeItemIds).in(PaymentReconciliation::getId, paymentIdList));
|
||||
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());
|
||||
.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()));
|
||||
.stream(
|
||||
chargeItemId.replaceAll("\\[", "").replaceAll("\\]", "").split(CommonConstants.Common.COMMA))
|
||||
.map(Long::parseLong).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
// 将收费项目集合转换成列表
|
||||
@@ -137,15 +134,16 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
@Override
|
||||
public void updateRefundingStatus(List<Long> paymentIdList) {
|
||||
baseMapper.update(new PaymentReconciliation().setStatusEnum(PaymentStatus.REFUNDING.getValue()),
|
||||
new LambdaUpdateWrapper<PaymentReconciliation>().in(PaymentReconciliation::getId, paymentIdList));
|
||||
new LambdaUpdateWrapper<PaymentReconciliation>().in(PaymentReconciliation::getId, paymentIdList));
|
||||
}
|
||||
|
||||
/**
|
||||
* PS:对chargeItem分付款方式 2025/05/23 ChargeItem分完付款方式之后,医保支付的ChargeItem还要分特慢病和普通门诊,特慢病等支付与常规门诊支付传参不一样
|
||||
* PS:对chargeItem分付款方式 2025/05/23
|
||||
* ChargeItem分完付款方式之后,医保支付的ChargeItem还要分特慢病和普通门诊,特慢病等支付与常规门诊支付传参不一样
|
||||
*/
|
||||
/**
|
||||
* 【预结算】
|
||||
*
|
||||
*
|
||||
* @param ybMdtrtCertType 医保凭证类型
|
||||
* @param busiCardInfo 读卡获取的密钥
|
||||
* @param contractBusNo 合同编号
|
||||
@@ -154,7 +152,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
*/
|
||||
@Override
|
||||
public PrePaymentResult preSettle(YbMdtrtCertType ybMdtrtCertType, String busiCardInfo, String contractBusNo,
|
||||
List<PaymentedItemModel> paymentedItemList) {
|
||||
List<PaymentedItemModel> paymentedItemList) {
|
||||
|
||||
PrePaymentResult prePaymentResult = null;
|
||||
String ybSwitchFlag = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH);
|
||||
@@ -180,8 +178,8 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
case "229900":// 吉林省医保
|
||||
case "220199":// 长春市医保(农大)
|
||||
case "220100":// 长春市医保(长大)
|
||||
Map<String, List<PaymentedItemModel>> collect =
|
||||
paymentedItemList.stream().collect(Collectors.groupingBy(PaymentedItemModel::getMedType));
|
||||
Map<String, List<PaymentedItemModel>> collect
|
||||
= paymentedItemList.stream().collect(Collectors.groupingBy(PaymentedItemModel::getMedType));
|
||||
if (collect.entrySet().size() > 1) {
|
||||
throw new ServiceException("医保只接受同种医疗类型结算(普通门诊与慢病等不可以同时结算)!");
|
||||
}
|
||||
@@ -190,21 +188,21 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
Clinic2206OrderOutput clinic2206OrderOutput = null;
|
||||
ClinicReg2201Output reg2201Output = null;
|
||||
if (!medTypeKV.getKey().equals(YbMedType.GENERAL_OUTPATIENT.getValue()) && "1".equals(
|
||||
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH))) {
|
||||
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()));
|
||||
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());
|
||||
reg2201Output
|
||||
= ybManager.getClinicRegByEncounterId(medTypeKV.getValue().get(0).getEncounterId());
|
||||
}
|
||||
// 调用预结算
|
||||
clinic2206OrderOutput = ybManager.preSettle(contract, medTypeKV.getValue().get(0).getEncounterId(),
|
||||
ybMdtrtCertType, busiCardInfo, reg2201Output, "01", medTypeKV.getValue(),
|
||||
YbMedType.getByValue(medTypeKV.getKey()));
|
||||
ybMdtrtCertType, busiCardInfo, reg2201Output, "01", medTypeKV.getValue(),
|
||||
YbMedType.getByValue(medTypeKV.getKey()));
|
||||
prePaymentResult = new PrePaymentResult();
|
||||
BeanUtils.copyProperties(clinic2206OrderOutput, prePaymentResult);
|
||||
}
|
||||
@@ -225,7 +223,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
|
||||
/**
|
||||
* 学生二次报销
|
||||
*
|
||||
*
|
||||
* @param contract 合同
|
||||
* @param ybMdtrtCertType 医疗类别
|
||||
* @param busiCardInfo 电子码
|
||||
@@ -234,7 +232,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
* @return 预结算结果
|
||||
*/
|
||||
private PrePaymentResult studentYbPay(Contract contract, YbMdtrtCertType ybMdtrtCertType, String busiCardInfo,
|
||||
String s, List<PaymentedItemModel> paymentedItemList) {
|
||||
String s, List<PaymentedItemModel> paymentedItemList) {
|
||||
|
||||
// 查比例及分类信息(PaymentedItemModel在chargeItem表中不是一定存在的所以此处改用单独查询)
|
||||
List<StudentPaymentItemModel> allPaymentItemList = getStudentPaymentItemModelList(paymentedItemList);
|
||||
@@ -244,16 +242,16 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
for (StudentPaymentItemModel studentPaymentItemModel : allPaymentItemList) {
|
||||
// 获取折扣比例
|
||||
BigDecimal ratio = studentPaymentItemModel.getTwiceRatio() == null ? studentPaymentItemModel.getSelfRatio()
|
||||
: studentPaymentItemModel.getTwiceRatio();
|
||||
: studentPaymentItemModel.getTwiceRatio();
|
||||
|
||||
// 计算金额
|
||||
onceReceivedAmount = onceReceivedAmount.add(studentPaymentItemModel.getTotalPrice()
|
||||
.multiply(ratio.divide(new BigDecimal("100"), 6, RoundingMode.HALF_UP)));
|
||||
.multiply(ratio.divide(new BigDecimal("100"), 6, RoundingMode.HALF_UP)));
|
||||
}
|
||||
|
||||
// 医保结算
|
||||
PrePaymentResult prePaymentResult =
|
||||
this.studentPreSettleYb(contract, ybMdtrtCertType, busiCardInfo, paymentedItemList);
|
||||
PrePaymentResult prePaymentResult
|
||||
= this.studentPreSettleYb(contract, ybMdtrtCertType, busiCardInfo, paymentedItemList);
|
||||
if (prePaymentResult == null) {
|
||||
throw new ServiceException("医生开具的收费项未分配对应的医疗类型!");
|
||||
}
|
||||
@@ -272,7 +270,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
|
||||
/**
|
||||
* 学生一次报销
|
||||
*
|
||||
*
|
||||
* @param paymentedItemList 收费项
|
||||
* @return 预结算结果
|
||||
*/
|
||||
@@ -285,7 +283,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
for (StudentPaymentItemModel studentPaymentItemModel : allPaymentItemList) {
|
||||
// 获取折扣比例
|
||||
BigDecimal ratio = studentPaymentItemModel.getTwiceRatio() == null ? studentPaymentItemModel.getSelfRatio()
|
||||
: studentPaymentItemModel.getTwiceRatio();
|
||||
: studentPaymentItemModel.getTwiceRatio();
|
||||
|
||||
// 计算金额
|
||||
onceReceivedAmount = onceReceivedAmount.add(studentPaymentItemModel.getTotalPrice().multiply(ratio));
|
||||
@@ -307,7 +305,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
|
||||
/**
|
||||
* 【门诊结算】
|
||||
*
|
||||
*
|
||||
* @param contract 合同
|
||||
* @param payTransNo 支付批次号
|
||||
* @param ybMdtrtCertType 凭证类型
|
||||
@@ -318,13 +316,13 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
*/
|
||||
@Override
|
||||
public PaymentResult settle(Contract contract, String payTransNo, YbMdtrtCertType ybMdtrtCertType,
|
||||
String busiCardInfo, Integer minpacuntDrugTracCnt, Integer mcsTracCnt) {
|
||||
String busiCardInfo, Integer minpacuntDrugTracCnt, Integer mcsTracCnt) {
|
||||
PaymentResult paymentResult = null;
|
||||
if (!(CommonConstants.BusinessName.DEFAULT_CONTRACT_NO.equals(payTransNo)
|
||||
|| CommonConstants.BusinessName.DEFAULT_STUDENT_CONTRACT_NO.equals(payTransNo))) {
|
||||
|| CommonConstants.BusinessName.DEFAULT_STUDENT_CONTRACT_NO.equals(payTransNo))) {
|
||||
// 医保支付 todo:支付的详细信息在于结算中已经存好了,但是还没有存储卡余额
|
||||
Clinic2207OrderModel clinic2207OrderModel =
|
||||
ybManager.settle(contract, payTransNo, busiCardInfo, ybMdtrtCertType, minpacuntDrugTracCnt, mcsTracCnt);
|
||||
Clinic2207OrderModel clinic2207OrderModel
|
||||
= ybManager.settle(contract, payTransNo, busiCardInfo, ybMdtrtCertType, minpacuntDrugTracCnt, mcsTracCnt);
|
||||
paymentResult = new PaymentResult();
|
||||
BeanUtils.copyProperties(clinic2207OrderModel, paymentResult);
|
||||
} else {
|
||||
@@ -365,43 +363,43 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
@Override
|
||||
public void updatePaymentStatusById(Long id, PaymentStatus success) {
|
||||
baseMapper.update(new PaymentReconciliation().setStatusEnum(success.getValue()),
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getId, id));
|
||||
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, Integer paymentOutcome,
|
||||
List<String> settleId) {
|
||||
List<String> settleId) {
|
||||
if (settleId == null || settleId.isEmpty()) {
|
||||
baseMapper.update(
|
||||
new PaymentReconciliation().setStatusEnum(success.getValue()).setOutcomeEnum(paymentOutcome),
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getId, id));
|
||||
new PaymentReconciliation().setStatusEnum(success.getValue()).setOutcomeEnum(paymentOutcome),
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getId, id));
|
||||
} else {
|
||||
baseMapper.update(
|
||||
new PaymentReconciliation().setStatusEnum(success.getValue()).setYbSettleIds(String.join(",", settleId))
|
||||
.setOutcomeEnum(paymentOutcome),
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getId, id));
|
||||
new PaymentReconciliation().setStatusEnum(success.getValue()).setYbSettleIds(String.join(",", settleId))
|
||||
.setOutcomeEnum(paymentOutcome),
|
||||
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));
|
||||
.eq(PaymentReconciliation::getEncounterId, encounterId)
|
||||
.eq(PaymentReconciliation::getKindEnum, PaymentKind.HOSPITAL_DEPOSIT.getValue())
|
||||
.eq(PaymentReconciliation::getDeleteFlag, DelFlag.NO.getCode()).last(YbCommonConstants.sqlConst.LIMIT1));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -414,7 +412,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
public List<PaymentReconciliation> getListByEncounterId(Long encounterId, PaymentKind paymentKind) {
|
||||
return baseMapper.selectList(new LambdaQueryWrapper<PaymentReconciliation>()
|
||||
.eq(PaymentReconciliation::getEncounterId, encounterId)
|
||||
.in(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue(),PaymentStatus.REFUNDING.getValue())
|
||||
.in(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue(), PaymentStatus.REFUNDING.getValue())
|
||||
.eq(PaymentReconciliation::getKindEnum, PaymentKind.HOSPITAL_DEPOSIT.getValue())
|
||||
.eq(PaymentReconciliation::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
@@ -428,10 +426,10 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
@Override
|
||||
public boolean isReturn(Long paymentId) {
|
||||
List<PaymentReconciliation> paymentReconciliations = baseMapper.selectList(
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getRelationId, paymentId)
|
||||
.in(PaymentReconciliation::getStatusEnum, PaymentStatus.REFUNDING.getValue(),
|
||||
PaymentStatus.REFUND_ALL.getValue(), PaymentStatus.REFUND_PART.getValue())
|
||||
.eq(PaymentReconciliation::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
new LambdaQueryWrapper<PaymentReconciliation>().eq(PaymentReconciliation::getRelationId, paymentId)
|
||||
.in(PaymentReconciliation::getStatusEnum, PaymentStatus.REFUNDING.getValue(),
|
||||
PaymentStatus.REFUND_ALL.getValue(), PaymentStatus.REFUND_PART.getValue())
|
||||
.eq(PaymentReconciliation::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
if (paymentReconciliations != null && paymentReconciliations.size() > 0) {
|
||||
return true;
|
||||
}
|
||||
@@ -452,14 +450,14 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
*/
|
||||
@Override
|
||||
public List<PaymentReconciliationAccountDel> getPaymentAccountContract(String startTime, String endTime,
|
||||
Long entererId, String contractNo, Integer success, Integer returnAll, Integer clinic) {
|
||||
Long entererId, String contractNo, Integer success, Integer returnAll, Integer clinic) {
|
||||
return baseMapper.getPaymentAccountContract(startTime, endTime, entererId, contractNo, success, returnAll,
|
||||
clinic);
|
||||
clinic);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询自付比例等
|
||||
*
|
||||
*
|
||||
* @param paymentedItemList 收款明细
|
||||
* @return 学生付款实体
|
||||
*/
|
||||
@@ -468,18 +466,18 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
// 大项比例
|
||||
List<GfTypeRatioDto> typeRatioList = gfRatioService.getTypeRatioList();
|
||||
Map<String, Map<String, List<GfTypeRatioDto>>> result = typeRatioList.stream().collect(
|
||||
// 第一次分组:按 ybClass 分组(外层 key 为 ybClass)
|
||||
Collectors.groupingBy(GfTypeRatioDto::getYbClass,
|
||||
// 第二次分组:对每个分组的 List 再按 subType 分组(内层 key 为 subType)
|
||||
Collectors.groupingBy(GfTypeRatioDto::getYbLv)));
|
||||
// 第一次分组:按 ybClass 分组(外层 key 为 ybClass)
|
||||
Collectors.groupingBy(GfTypeRatioDto::getYbClass,
|
||||
// 第二次分组:对每个分组的 List 再按 subType 分组(内层 key 为 subType)
|
||||
Collectors.groupingBy(GfTypeRatioDto::getYbLv)));
|
||||
|
||||
List<StudentPaymentItemModel> allPaymentItemList = new ArrayList<>();
|
||||
|
||||
Map<String, List<PaymentedItemModel>> paymentedItemListByServiceTableMap =
|
||||
paymentedItemList.stream().collect(Collectors.groupingBy(PaymentedItemModel::getServiceTable));
|
||||
Map<String, List<PaymentedItemModel>> paymentedItemListByServiceTableMap
|
||||
= paymentedItemList.stream().collect(Collectors.groupingBy(PaymentedItemModel::getServiceTable));
|
||||
|
||||
for (Map.Entry<String, List<PaymentedItemModel>> stringListEntry : paymentedItemListByServiceTableMap
|
||||
.entrySet()) {
|
||||
.entrySet()) {
|
||||
|
||||
String key = stringListEntry.getKey();
|
||||
ItemType itemType;
|
||||
@@ -500,13 +498,13 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
continue;
|
||||
}
|
||||
// 查定价分类
|
||||
ChargeItemDefinition chargeItemDefinition =
|
||||
chargeItemDefinitionService.getById(studentPaymentItemModel.getDefinitionId());
|
||||
ChargeItemDefinition chargeItemDefinition
|
||||
= chargeItemDefinitionService.getById(studentPaymentItemModel.getDefinitionId());
|
||||
|
||||
// 查医保等级
|
||||
if (CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(studentPaymentItemModel.getProductTable())) {
|
||||
DeviceDefinition deviceDefinition =
|
||||
deviceDefinitionService.getById(studentPaymentItemModel.getProductId());
|
||||
DeviceDefinition deviceDefinition
|
||||
= deviceDefinitionService.getById(studentPaymentItemModel.getProductId());
|
||||
if (deviceDefinition != null && chargeItemDefinition != null) {
|
||||
// 约定大项目的自付比例获取条件
|
||||
YbMedChrgItmType medChrgItmType = YbMedChrgItmType.getByValue(chargeItemDefinition.getYbType());
|
||||
@@ -517,11 +515,11 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
if (chrgitmLv == null) {
|
||||
throw new ServiceException(chargeItemDefinition.getChargeName() + "未配置正确的医保等级!请检查!!!");
|
||||
}
|
||||
List<GfTypeRatioDto> gfTypeRatioDtos =
|
||||
result.get(chargeItemDefinition.getYbType()).get(chrgitmLv.getCode());
|
||||
List<GfTypeRatioDto> gfTypeRatioDtos
|
||||
= result.get(chargeItemDefinition.getYbType()).get(chrgitmLv.getCode());
|
||||
if (gfTypeRatioDtos == null || gfTypeRatioDtos.isEmpty()) {
|
||||
throw new ServiceException(
|
||||
"医保分类:" + medChrgItmType.getInfo() + "医保等级:" + chrgitmLv.getInfo() + "未配置自付比例!请检查!!!");
|
||||
"医保分类:" + medChrgItmType.getInfo() + "医保等级:" + chrgitmLv.getInfo() + "未配置自付比例!请检查!!!");
|
||||
}
|
||||
|
||||
studentPaymentItemModel.setSelfRatio(gfTypeRatioDtos.get(0).getSelfRatio());
|
||||
@@ -529,9 +527,9 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
|
||||
}
|
||||
} else if (CommonConstants.TableName.WOR_ACTIVITY_DEFINITION
|
||||
.equals(studentPaymentItemModel.getProductTable())) {
|
||||
ActivityDefinition activityDefinition =
|
||||
activityDefinitionService.getById(studentPaymentItemModel.getProductId());
|
||||
.equals(studentPaymentItemModel.getProductTable())) {
|
||||
ActivityDefinition activityDefinition
|
||||
= activityDefinitionService.getById(studentPaymentItemModel.getProductId());
|
||||
if (activityDefinition != null && chargeItemDefinition != null) {
|
||||
// 约定大项目的自付比例获取条件
|
||||
YbMedChrgItmType medChrgItmType = YbMedChrgItmType.getByValue(chargeItemDefinition.getYbType());
|
||||
@@ -542,20 +540,20 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
if (chrgitmLv == null) {
|
||||
throw new ServiceException(chargeItemDefinition.getChargeName() + "未配置正确的医保等级!请检查!!!");
|
||||
}
|
||||
List<GfTypeRatioDto> gfTypeRatioDtos =
|
||||
result.get(chargeItemDefinition.getYbType()).get(chrgitmLv.getCode());
|
||||
List<GfTypeRatioDto> gfTypeRatioDtos
|
||||
= result.get(chargeItemDefinition.getYbType()).get(chrgitmLv.getCode());
|
||||
if (gfTypeRatioDtos == null || gfTypeRatioDtos.isEmpty()) {
|
||||
throw new ServiceException(
|
||||
"医保分类:" + medChrgItmType.getInfo() + "医保等级:" + chrgitmLv.getInfo() + "未配置自付比例!请检查!!!");
|
||||
"医保分类:" + medChrgItmType.getInfo() + "医保等级:" + chrgitmLv.getInfo() + "未配置自付比例!请检查!!!");
|
||||
}
|
||||
|
||||
studentPaymentItemModel.setSelfRatio(gfTypeRatioDtos.get(0).getSelfRatio());
|
||||
studentPaymentItemModel.setTwiceRatio(gfTypeRatioDtos.get(0).getSelfRatio());
|
||||
}
|
||||
} else if (CommonConstants.TableName.MED_MEDICATION_DEFINITION
|
||||
.equals(studentPaymentItemModel.getProductTable())) {
|
||||
MedicationDefinition medicationDefinition =
|
||||
medicationDefinitionService.getById(studentPaymentItemModel.getProductId());
|
||||
.equals(studentPaymentItemModel.getProductTable())) {
|
||||
MedicationDefinition medicationDefinition
|
||||
= medicationDefinitionService.getById(studentPaymentItemModel.getProductId());
|
||||
if (medicationDefinition != null && chargeItemDefinition != null) {
|
||||
// 约定大项目的自付比例获取条件
|
||||
YbMedChrgItmType medChrgItmType = YbMedChrgItmType.getByValue(chargeItemDefinition.getYbType());
|
||||
@@ -566,19 +564,19 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
if (chrgitmLv == null) {
|
||||
throw new ServiceException(chargeItemDefinition.getChargeName() + "未配置正确的医保等级!请检查!!!");
|
||||
}
|
||||
List<GfTypeRatioDto> gfTypeRatioDtos =
|
||||
result.get(chargeItemDefinition.getYbType()).get(chrgitmLv.getCode());
|
||||
List<GfTypeRatioDto> gfTypeRatioDtos
|
||||
= result.get(chargeItemDefinition.getYbType()).get(chrgitmLv.getCode());
|
||||
if (gfTypeRatioDtos == null || gfTypeRatioDtos.isEmpty()) {
|
||||
throw new ServiceException(
|
||||
"医保分类:" + medChrgItmType.getInfo() + "医保等级:" + chrgitmLv.getInfo() + "未配置自付比例!请检查!!!");
|
||||
"医保分类:" + medChrgItmType.getInfo() + "医保等级:" + chrgitmLv.getInfo() + "未配置自付比例!请检查!!!");
|
||||
}
|
||||
|
||||
studentPaymentItemModel.setSelfRatio(gfTypeRatioDtos.get(0).getSelfRatio());
|
||||
studentPaymentItemModel.setTwiceRatio(gfTypeRatioDtos.get(0).getSelfRatio());
|
||||
}
|
||||
} else {
|
||||
HealthcareService healthcareService =
|
||||
healthcareServiceService.getById(studentPaymentItemModel.getServiceId());
|
||||
HealthcareService healthcareService
|
||||
= healthcareServiceService.getById(studentPaymentItemModel.getServiceId());
|
||||
if (healthcareService != null && chargeItemDefinition != null) {
|
||||
// 约定大项目的自付比例获取条件 医疗服务没有定义医保等级,默认百分百还是直接抛异常?
|
||||
studentPaymentItemModel.setSelfRatio(new BigDecimal("100"));
|
||||
@@ -593,7 +591,7 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
|
||||
/**
|
||||
* 医保预结算
|
||||
*
|
||||
*
|
||||
* @param contract 合同b
|
||||
* @param ybMdtrtCertType 证件类型
|
||||
* @param busiCardInfo 电子密钥
|
||||
@@ -601,19 +599,19 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
* @return 预结算参数
|
||||
*/
|
||||
private PrePaymentResult studentPreSettleYb(Contract contract, YbMdtrtCertType ybMdtrtCertType, String busiCardInfo,
|
||||
List<PaymentedItemModel> paymentedItemList) {
|
||||
Map<String, List<PaymentedItemModel>> collect =
|
||||
paymentedItemList.stream().collect(Collectors.groupingBy(PaymentedItemModel::getMedType));
|
||||
List<PaymentedItemModel> paymentedItemList) {
|
||||
Map<String, List<PaymentedItemModel>> collect
|
||||
= paymentedItemList.stream().collect(Collectors.groupingBy(PaymentedItemModel::getMedType));
|
||||
// 一次医保结算只能支持一种医疗类型的结算
|
||||
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))) {
|
||||
.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()));
|
||||
medTypeKV.getValue().get(0).getEncounterId(),
|
||||
YbMedType.getByValue(medTypeKV.getValue().get(0).getMedType()));
|
||||
reg2201Output.setMedType(medTypeKV.getKey());// 2025/06/05慢病挂号后上传2206信息报错,2201返回值没有medType,此处更正赋值
|
||||
} else {
|
||||
// 从数据库里取reg2201
|
||||
@@ -623,9 +621,9 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl<PaymentReconci
|
||||
throw new ServiceException("未查询到医保挂号信息");
|
||||
}
|
||||
// 调用预结算
|
||||
clinic2206OrderOutput =
|
||||
ybManager.preSettle(contract, medTypeKV.getValue().get(0).getEncounterId(), ybMdtrtCertType,
|
||||
busiCardInfo, reg2201Output, "01", medTypeKV.getValue(), YbMedType.getByValue(medTypeKV.getKey()));
|
||||
clinic2206OrderOutput
|
||||
= ybManager.preSettle(contract, medTypeKV.getValue().get(0).getEncounterId(), ybMdtrtCertType,
|
||||
busiCardInfo, reg2201Output, "01", medTypeKV.getValue(), YbMedType.getByValue(medTypeKV.getKey()));
|
||||
PrePaymentResult prePaymentResult = new PrePaymentResult();
|
||||
BeanUtils.copyProperties(clinic2206OrderOutput, prePaymentResult);
|
||||
return prePaymentResult;
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
package com.openhis.financial.service.impl;
|
||||
|
||||
<<<<<<< HEAD
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.openhis.financial.domain.ThreePartPayCallBack;
|
||||
import com.openhis.financial.mapper.ThreePartPayCallBackMapper;
|
||||
import com.openhis.financial.service.ThreePartPayCallBackService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class ThreePartPayCallBackServiceImpl extends ServiceImpl<ThreePartPayCallBackMapper, ThreePartPayCallBack> implements ThreePartPayCallBackService {
|
||||
=======
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@@ -22,12 +12,12 @@ import com.openhis.financial.service.ThreePartPayCallBackService;
|
||||
|
||||
@Service
|
||||
public class ThreePartPayCallBackServiceImpl extends ServiceImpl<ThreePartPayCallBackMapper, ThreePartPayCallBack>
|
||||
implements ThreePartPayCallBackService {
|
||||
implements ThreePartPayCallBackService {
|
||||
|
||||
@Override
|
||||
public ThreePartPayCallBack getByPayment(Long paymentId) {
|
||||
return baseMapper
|
||||
.selectOne(new LambdaQueryWrapper<ThreePartPayCallBack>().eq(ThreePartPayCallBack::getPaymentId, paymentId)
|
||||
.eq(ThreePartPayCallBack::getDeleteFlag, DelFlag.NO.getCode()).last(YbCommonConstants.sqlConst.LIMIT1));
|
||||
.selectOne(new LambdaQueryWrapper<ThreePartPayCallBack>().eq(ThreePartPayCallBack::getPaymentId, paymentId)
|
||||
.eq(ThreePartPayCallBack::getDeleteFlag, DelFlag.NO.getCode()).last(YbCommonConstants.sqlConst.LIMIT1));
|
||||
}
|
||||
>>>>>>> v1.3
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user