Explorar el Código

兼容单价单位类型

0027005599 hace 2 años
padre
commit
0872d36381

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

@@ -40,6 +40,7 @@ import org.springframework.stereotype.Component;
 import javax.annotation.PostConstruct;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -304,20 +305,17 @@ public class FactorEnchangeFactory {
         }
         afterwardsAuditDetail.setHisid(afterwardsAudit.getHisid());
         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);
         log.info("事后工单id:{} 医保规则库单价:{} ", afterwardsAudit.getId(), medicalPrice);
-        if(null != medicalPrice){
+        if(null != medicalPrice && priceFlag){
             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 doubleSubAmount = doubleMedicalPrice * afterwardsAuditDetail.getQuantity() - hisAmount;
+                Double doubleSubAmount = bigDecimalMedicalPrice.doubleValue() * afterwardsAuditDetail.getQuantity() - hisAmount;
                 if (doubleSubAmount > 0) {
                     afterwardsAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
                 } else if (doubleSubAmount < 0) {
@@ -431,17 +429,23 @@ public class FactorEnchangeFactory {
         }
 
         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);
-        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 doubleSubAmount = doubleMedicalPrice * midIncidentAuditDetail.getMedicalNumber().intValue() - hisAmount;
-                if(doubleSubAmount>0){
+                Double doubleSubAmount = bigDecimalMedicalPrice.doubleValue() * midIncidentAuditDetail.getMedicalNumber() - hisAmount;
+                if (doubleSubAmount > 0) {
                     midIncidentAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
-                }else if(doubleSubAmount<0){
+                } else if (doubleSubAmount < 0) {
                     midIncidentAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(doubleSubAmount));
                 }
+                log.info("医保规则库单价:{} his金额:{} 结果金额:{}", medicalPrice, hisAmount, doubleSubAmount);
             }
         }
         return midIncidentAuditDetail;