Forráskód Böngészése

多收,少收计算

0027005599 2 éve
szülő
commit
2dad57b112

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/SystemEventAttrConstant.java

@@ -57,6 +57,11 @@ public class SystemEventAttrConstant {
      */
     public static final String MEDICAL_PROJECT_NAME_LIST = "medicalProjectNameList";
 
+    /**
+     * 医保配置的药品单价
+     */
+    public static final String MEDICAL_INS_PRICE = "medical_ins_price";
+
 
     /**
      * 医院项目编码 eventAttrId: 992
@@ -238,5 +243,10 @@ public class SystemEventAttrConstant {
      * his的结算单总金额
      */
     public static final String HIS_TOTAL_AMOUNT = "total_amount";
+
+    /**
+     * 当有配置价格,则会自动计算差价
+     */
+    public static final String TEMP_SUB_AMOUNT_KEY = "TEMP_SUB_AMOUNT";
 }
 

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

@@ -304,6 +304,19 @@ public class FactorEnchangeFactory {
         }
         afterwardsAuditDetail.setHisid(afterwardsAudit.getHisid());
         afterwardsAuditDetail.setDoctorLevel(itemMap.get(SystemEventAttrConstant.HIS_DOCTOR_LEVEL).toString());
+        Object medicalPrice = itemMap.get(SystemEventAttrConstant.MEDICAL_INS_PRICE);
+        if(null != medicalPrice){
+            Double doubleMedicalPrice = (Double) medicalPrice;
+            if(doubleMedicalPrice>0) {
+                Double hisAmount = afterwardsAuditDetail.getAmount();
+                Double doubleSubAmount = doubleMedicalPrice * afterwardsAuditDetail.getQuantity() - hisAmount;
+                if (doubleSubAmount > 0) {
+                    afterwardsAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
+                } else if (doubleSubAmount < 0) {
+                    afterwardsAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(doubleSubAmount));
+                }
+            }
+        }
         return afterwardsAuditDetail;
     }
 
@@ -408,6 +421,19 @@ public class FactorEnchangeFactory {
         }
 
         midIncidentAuditDetail.setDoctorLevel(itemMap.get(SystemEventAttrConstant.HIS_DOCTOR_LEVEL).toString());
+        Object medicalPrice = itemMap.get(SystemEventAttrConstant.MEDICAL_INS_PRICE);
+        if(null != medicalPrice){
+            Double doubleMedicalPrice = (Double) medicalPrice;
+            if(doubleMedicalPrice>0){
+                Double hisAmount = midIncidentAuditDetail.getAmount();
+                Double doubleSubAmount = doubleMedicalPrice * midIncidentAuditDetail.getMedicalNumber().intValue() - hisAmount;
+                if(doubleSubAmount>0){
+                    midIncidentAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(doubleSubAmount));
+                }else if(doubleSubAmount<0){
+                    midIncidentAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(doubleSubAmount));
+                }
+            }
+        }
         return midIncidentAuditDetail;
     }