Quellcode durchsuchen

兼容单价单位类型

0027005599 vor 2 Jahren
Ursprung
Commit
965aaa07d5

+ 24 - 10
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/FactorEnchangeFactory.java

@@ -315,11 +315,11 @@ public class FactorEnchangeFactory {
             BigDecimal bigDecimalMedicalPrice = (BigDecimal) medicalPrice;
             if(bigDecimalMedicalPrice.doubleValue()>0) {
                 Double hisAmount = afterwardsAuditDetail.getAmount();
-                Double doubleSubAmount = bigDecimalMedicalPrice.doubleValue() * afterwardsAuditDetail.getQuantity() - hisAmount;
-                if (doubleSubAmount > 0) {
-                    afterwardsAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
-                } else if (doubleSubAmount < 0) {
-                    afterwardsAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(doubleSubAmount));
+                BigDecimal doubleSubAmount= bigDecimalMedicalPrice.multiply(new BigDecimal(afterwardsAuditDetail.getQuantity())).subtract(new BigDecimal(hisAmount));
+                if (doubleSubAmount.doubleValue() > 0) {
+                    afterwardsAuditDetail.setErrorRelativelyManyAmt(doubleSubAmount.setScale(2,BigDecimal.ROUND_HALF_UP));
+                } else if (doubleSubAmount.doubleValue() < 0) {
+                    afterwardsAuditDetail.setErrorRelativelyFewAmt(doubleSubAmount.setScale(2,BigDecimal.ROUND_HALF_UP));
                 }
                 log.info("医保规则库单价:{} his金额:{} 结果金额:{}", medicalPrice, hisAmount, doubleSubAmount);
             }
@@ -434,16 +434,30 @@ public class FactorEnchangeFactory {
         boolean priceFlag = Arrays.stream(selectedRolesArr).anyMatch(attr -> attr.equals(SystemEventAttrConstant.PRICE));
         Object medicalPrice = itemMap.get(SystemEventAttrConstant.MEDICAL_INS_PRICE);
         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 doubleSubAmount = bigDecimalMedicalPrice.doubleValue() * midIncidentAuditDetail.getMedicalNumber().intValue() - hisAmount;
+//                if (doubleSubAmount > 0) {
+//                    midIncidentAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
+//                } else if (doubleSubAmount < 0) {
+//                    midIncidentAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(doubleSubAmount));
+//                }
+//                log.info("医保规则库单价:{} his金额:{} 结果金额:{}", medicalPrice, hisAmount, doubleSubAmount);
+//            }
+//        }
         if(null != medicalPrice && priceFlag){
             log.info("medicalPrice type:{}", medicalPrice.getClass());
             BigDecimal bigDecimalMedicalPrice = (BigDecimal) medicalPrice;
             if(bigDecimalMedicalPrice.doubleValue()>0) {
                 Double hisAmount = midIncidentAuditDetail.getAmount();
-                Double doubleSubAmount = bigDecimalMedicalPrice.doubleValue() * midIncidentAuditDetail.getMedicalNumber() - hisAmount;
-                if (doubleSubAmount > 0) {
-                    midIncidentAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
-                } else if (doubleSubAmount < 0) {
-                    midIncidentAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(doubleSubAmount));
+                BigDecimal doubleSubAmount= bigDecimalMedicalPrice.multiply(new BigDecimal(midIncidentAuditDetail.getMedicalNumber()).subtract(new BigDecimal(hisAmount)));
+                if (doubleSubAmount.doubleValue() > 0) {
+                    midIncidentAuditDetail.setErrorRelativelyManyAmt(doubleSubAmount.setScale(2,BigDecimal.ROUND_HALF_UP).abs());
+                } else if (doubleSubAmount.doubleValue() < 0) {
+                    midIncidentAuditDetail.setErrorRelativelyFewAmt(doubleSubAmount.setScale(2,BigDecimal.ROUND_HALF_UP).abs());
                 }
                 log.info("医保规则库单价:{} his金额:{} 结果金额:{}", medicalPrice, hisAmount, doubleSubAmount);
             }