|
@@ -40,6 +40,7 @@ import org.springframework.stereotype.Component;
|
|
|
import javax.annotation.PostConstruct;
|
|
import javax.annotation.PostConstruct;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
@@ -304,20 +305,17 @@ public class FactorEnchangeFactory {
|
|
|
}
|
|
}
|
|
|
afterwardsAuditDetail.setHisid(afterwardsAudit.getHisid());
|
|
afterwardsAuditDetail.setHisid(afterwardsAudit.getHisid());
|
|
|
afterwardsAuditDetail.setDoctorLevel(itemMap.get(SystemEventAttrConstant.HIS_DOCTOR_LEVEL).toString());
|
|
afterwardsAuditDetail.setDoctorLevel(itemMap.get(SystemEventAttrConstant.HIS_DOCTOR_LEVEL).toString());
|
|
|
|
|
+ String seachField = medicalInsRuleInfo.getSelectedRoles();
|
|
|
|
|
+ String[] selectedRolesArr = seachField.split(Constant.SPLIT_STR);
|
|
|
|
|
+ boolean priceFlag = Arrays.stream(selectedRolesArr).anyMatch(attr -> attr.equals(SystemEventAttrConstant.PRICE));
|
|
|
Object medicalPrice = itemMap.get(SystemEventAttrConstant.MEDICAL_INS_PRICE);
|
|
Object medicalPrice = itemMap.get(SystemEventAttrConstant.MEDICAL_INS_PRICE);
|
|
|
log.info("事后工单id:{} 医保规则库单价:{} ", afterwardsAudit.getId(), medicalPrice);
|
|
log.info("事后工单id:{} 医保规则库单价:{} ", afterwardsAudit.getId(), medicalPrice);
|
|
|
- if(null != medicalPrice){
|
|
|
|
|
|
|
+ if(null != medicalPrice && priceFlag){
|
|
|
log.info("medicalPrice type:{}", medicalPrice.getClass());
|
|
log.info("medicalPrice type:{}", medicalPrice.getClass());
|
|
|
- Double doubleMedicalPrice = null;
|
|
|
|
|
- try {
|
|
|
|
|
- doubleMedicalPrice = (Double) medicalPrice;
|
|
|
|
|
- }catch (Exception e){
|
|
|
|
|
- log.error(e.getMessage(), e);
|
|
|
|
|
- doubleMedicalPrice = ((BigDecimal) medicalPrice).doubleValue();
|
|
|
|
|
- }
|
|
|
|
|
- if(doubleMedicalPrice>0) {
|
|
|
|
|
|
|
+ BigDecimal bigDecimalMedicalPrice = (BigDecimal) medicalPrice;
|
|
|
|
|
+ if(bigDecimalMedicalPrice.doubleValue()>0) {
|
|
|
Double hisAmount = afterwardsAuditDetail.getAmount();
|
|
Double hisAmount = afterwardsAuditDetail.getAmount();
|
|
|
- Double doubleSubAmount = doubleMedicalPrice * afterwardsAuditDetail.getQuantity() - hisAmount;
|
|
|
|
|
|
|
+ Double doubleSubAmount = bigDecimalMedicalPrice.doubleValue() * afterwardsAuditDetail.getQuantity() - hisAmount;
|
|
|
if (doubleSubAmount > 0) {
|
|
if (doubleSubAmount > 0) {
|
|
|
afterwardsAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
|
|
afterwardsAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
|
|
|
} else if (doubleSubAmount < 0) {
|
|
} else if (doubleSubAmount < 0) {
|
|
@@ -431,17 +429,23 @@ public class FactorEnchangeFactory {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
midIncidentAuditDetail.setDoctorLevel(itemMap.get(SystemEventAttrConstant.HIS_DOCTOR_LEVEL).toString());
|
|
midIncidentAuditDetail.setDoctorLevel(itemMap.get(SystemEventAttrConstant.HIS_DOCTOR_LEVEL).toString());
|
|
|
|
|
+ String seachField = medicalInsRuleInfo.getSelectedRoles();
|
|
|
|
|
+ String[] selectedRolesArr = seachField.split(Constant.SPLIT_STR);
|
|
|
|
|
+ boolean priceFlag = Arrays.stream(selectedRolesArr).anyMatch(attr -> attr.equals(SystemEventAttrConstant.PRICE));
|
|
|
Object medicalPrice = itemMap.get(SystemEventAttrConstant.MEDICAL_INS_PRICE);
|
|
Object medicalPrice = itemMap.get(SystemEventAttrConstant.MEDICAL_INS_PRICE);
|
|
|
- if(null != medicalPrice){
|
|
|
|
|
- Double doubleMedicalPrice = (Double) medicalPrice;
|
|
|
|
|
- if(doubleMedicalPrice>0){
|
|
|
|
|
|
|
+ log.info("事中工单id:{} 医保规则库单价:{} ", midIncidentAudit.getId(), medicalPrice);
|
|
|
|
|
+ if(null != medicalPrice && priceFlag){
|
|
|
|
|
+ log.info("medicalPrice type:{}", medicalPrice.getClass());
|
|
|
|
|
+ BigDecimal bigDecimalMedicalPrice = (BigDecimal) medicalPrice;
|
|
|
|
|
+ if(bigDecimalMedicalPrice.doubleValue()>0) {
|
|
|
Double hisAmount = midIncidentAuditDetail.getAmount();
|
|
Double hisAmount = midIncidentAuditDetail.getAmount();
|
|
|
- Double doubleSubAmount = doubleMedicalPrice * midIncidentAuditDetail.getMedicalNumber().intValue() - hisAmount;
|
|
|
|
|
- if(doubleSubAmount>0){
|
|
|
|
|
|
|
+ Double doubleSubAmount = bigDecimalMedicalPrice.doubleValue() * midIncidentAuditDetail.getMedicalNumber() - hisAmount;
|
|
|
|
|
+ if (doubleSubAmount > 0) {
|
|
|
midIncidentAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
|
|
midIncidentAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
|
|
|
- }else if(doubleSubAmount<0){
|
|
|
|
|
|
|
+ } else if (doubleSubAmount < 0) {
|
|
|
midIncidentAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(doubleSubAmount));
|
|
midIncidentAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(doubleSubAmount));
|
|
|
}
|
|
}
|
|
|
|
|
+ log.info("医保规则库单价:{} his金额:{} 结果金额:{}", medicalPrice, hisAmount, doubleSubAmount);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return midIncidentAuditDetail;
|
|
return midIncidentAuditDetail;
|