Explorar o código

事后测试数据测试类

0027005599 %!s(int64=2) %!d(string=hai) anos
pai
achega
d01da4cd1f

+ 12 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AfterIncidentLog.java

@@ -78,7 +78,18 @@ public class AfterIncidentLog implements Serializable {
     @DateTimeFormat(pattern= "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "入院日期")
     private java.util.Date inHospDate;
-
+    /**入院日期*/
+    @Excel(name = "出院日期", width = 15, format =  "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8",pattern =  "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern= "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "出院日期")
+    private java.util.Date outHospDate;
+    @Excel(name = "住院天数", width = 15)
+    @ApiModelProperty(value = "住院天数")
+    private Integer zyts;
+    @Excel(name = "患者年龄(天)", width = 15)
+    @ApiModelProperty(value = "患者年龄(天)")
+    private Integer patientAgeDays;
     @Excel(name = "是否医保", width = 15)
     @ApiModelProperty(value = "是否医保,1=是,0=否")
     private Integer medicalInsurance;

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/entity/AfterwardsAuditDetail.java

@@ -42,7 +42,7 @@ public class AfterwardsAuditDetail implements Serializable {
     private java.lang.Integer afterwardsAuditId;
 	@Excel(name = "金额", width = 15)
     @ApiModelProperty(value = "金额")
-    private BigDecimal amount;
+    private Double amount;
 
     @ApiModelProperty(value = "金额")
     private BigDecimal price;

+ 3 - 3
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/job/AfterWaringLogTestJob.java

@@ -70,8 +70,8 @@ public class AfterWaringLogTestJob{
             afterIncidentDetailLog = new AfterIncidentDetailLog();
 
             afterIncidentDetailLog.setAfterIncidentLogId(afterIncidentLog.getId());
-            afterIncidentDetailLog.setMedical_diagnose_name_str(masterAdmissionBill.getDischargeDiseaseNameMain());
-            afterIncidentDetailLog.setMedical_diagnose_code_str(masterAdmissionBill.getDischargeDiseaseIdMain());
+            afterIncidentDetailLog.setMedical_diagnose_name_str(masterAdmissionBill.getYbAdmissionDiseaseName());
+            afterIncidentDetailLog.setMedical_diagnose_code_str(masterAdmissionBill.getYbAdmissionDiseaseId());
             afterIncidentDetailLog.setAmount(hospitalizatioSettleDetail.getCost());
             afterIncidentDetailLog.setMedical_project_code(hospitalizatioSettleDetail.getItemId());
             afterIncidentDetailLog.setMedical_project_name(hospitalizatioSettleDetail.getItemName());
@@ -98,7 +98,7 @@ public class AfterWaringLogTestJob{
             afterIncidentDetailLog.setMedical_dept_code(masterAdmissionBill.getAdmissionDeptId());
             afterIncidentDetailLog.setMedical_dept_name(masterAdmissionBill.getAdmissionDeptName());
             afterIncidentDetailLog.setPatient_id(masterAdmissionBill.getPatientId());
-            afterIncidentDetailLog.setProject_name(masterAdmissionBill.getPatientName());
+            afterIncidentDetailLog.setPatient_name(masterAdmissionBill.getPatientName());
             afterIncidentDetailLog.setPatient_age(masterAdmissionBill.getPatientAge());
 //            afterIncidentDetailLog.setOrderType();
 //            afterIncidentDetailLog.setOrderCatalog();

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

@@ -207,7 +207,7 @@ public class FactorEnchangeFactory {
             Date date = new Date(System.currentTimeMillis());
             for (Map<String, Object> otherMap : itemList) {
                 AfterwardsAuditDetail afterwardsAuditDetail = new AfterwardsAuditDetail();
-                BigDecimal amount = (BigDecimal) otherMap.getOrDefault(Constant.AMOUNT_KEY, 0);
+                Double amount = (Double) otherMap.getOrDefault(Constant.AMOUNT_KEY, 0.0);
                 afterwardsAuditDetail.setAmount(amount);
                 afterwardsAuditDetail.setProejctCode(otherMap.get(Constant.PROJECT_CODE_KEY).toString());
                 afterwardsAuditDetail.setProejctName(otherMap.get(Constant.PROJECT_NAME_KEY).toString());
@@ -239,7 +239,7 @@ public class FactorEnchangeFactory {
             }
             afterwardsAuditDetailService.saveBatch(afterwardsAuditDetailList);
         } else {
-            BigDecimal amount = (BigDecimal) itemMap.getOrDefault(Constant.AMOUNT_KEY, 0);
+            Double amount = (Double) itemMap.getOrDefault(Constant.AMOUNT_KEY, 0);
             AfterwardsAuditDetail afterwardsAuditDetail = new AfterwardsAuditDetail();
             afterwardsAuditDetail.setProejctCode(itemMap.get(Constant.PROJECT_CODE_KEY).toString());
             afterwardsAuditDetail.setProejctName(itemMap.get(Constant.PROJECT_NAME_KEY).toString());

+ 66 - 8
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/RuleEngine.java

@@ -17,6 +17,7 @@ import org.jeecg.modules.medical.entity.AdviceDetailsVO;
 import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
 import org.jeecg.modules.medical.entity.AfterIncidentLog;
 import org.jeecg.modules.medical.entity.AfterwardsAudit;
+import org.jeecg.modules.medical.entity.AfterwardsAuditDetail;
 import org.jeecg.modules.medical.entity.AfterwardsIncidentAuditDiagnose;
 import org.jeecg.modules.medical.entity.DiagnoseItems;
 import org.jeecg.modules.medical.entity.DiagnosesVO;
@@ -189,7 +190,7 @@ public class RuleEngine {
                         String projectCode = medicalInsRuleProject.getProjectCode();
                         String correlationProjectCode = medicalInsRuleProject.getCorrelationProjectCode();
                         if (StringUtils.isNotBlank(projectCode)) {
-                            if(StringUtils.isNotBlank(medicalInsRuleProject.getViolationDesc())) {
+                            if (StringUtils.isNotBlank(medicalInsRuleProject.getViolationDesc())) {
                                 ruleIdAndCodeMap.put(medicalInsInfoId + "_" + projectCode, medicalInsRuleProject.getViolationDesc());
                             }
                             if (projectCode.startsWith(Constant.CONSUMABLE_START_KEY)) {
@@ -247,7 +248,7 @@ public class RuleEngine {
                     boolean cMedicalDiagnoseCodeFlag = Arrays.stream(rolesArr).anyMatch(role -> role.equals("correlationMedicalDiagnoseCode"));
                     boolean projectCodeFlag = Arrays.stream(rolesArr).anyMatch(role -> role.equals("projectCode"));
                     boolean correlationProjectCodeFlag = Arrays.stream(rolesArr).anyMatch(role -> role.equals("correlationProjectCode"));
-                    if ((!projectCodeFlag && medicalDiagnoseCodeFlag)|| (!correlationProjectCodeFlag && cMedicalDiagnoseCodeFlag)) {
+                    if ((!projectCodeFlag && medicalDiagnoseCodeFlag) || (!correlationProjectCodeFlag && cMedicalDiagnoseCodeFlag)) {
                         List<MedicalInsRuleProjectDiagnose> medicalInsRuleProjectDiagnoseList = medicalInsRuleProjectDiagnoseService.lambdaQuery().eq(MedicalInsRuleProjectDiagnose::getMedicalInsRuleInfoId, medicalInsRuleInfo.getId()).list();
                         if (CollectionUtil.isNotEmpty(medicalInsRuleProjectDiagnoseList)) {
                             Set<String> treatmentProjectCodeList = new HashSet<>();
@@ -271,18 +272,76 @@ public class RuleEngine {
         }
     }
 
-    public void setDesc(Map<String,String> ruleIdAndCodeMap, String medicineCode, String projectCode, Set<Integer> medicalRuleInfoIdSet){
-        if(CollectionUtil.isNotEmpty(ruleIdAndCodeMap)) {
+
+    //    public boolean initTestMedicalInsRule(String medicalProjectCode, AfterwardsAuditDetail afterwardsAuditDetail,List<MedicalInsRuleInfo> medicalInsRuleInfoList,Map<Integer, MedicalInsRuleInfo> medicalMap,Map<String, Boolean> codeDataMap) {
+//        return genItemCodeAndRuleIdMapTest(medicalProjectCode, medicalMap, afterwardsAuditDetail, medicalInsRuleInfoList);
+//    }
+    public void genItemCodeAndRuleIdMapTest(String medicalProjectCode, AfterwardsAuditDetail afterwardsAuditDetail, List<MedicalInsRuleInfo> medicalInsRuleInfoList, Map<Integer, MedicalInsRuleInfo> medicalMap, Map<String, Boolean> codeDataMap) {
+        try {
+            List<Integer> ruleIdList = medicalInsRuleInfoList.stream().map(MedicalInsRuleInfo::getId).collect(Collectors.toList());
+
+            for (Integer medicalInsInfoId : ruleIdList) {
+
+                List<MedicalInsRuleProject> medicalInsRuleProjectList = medicalInsRuleProjectService.lambdaQuery().eq(MedicalInsRuleProject::getMedicalInsRuleInfoId, medicalInsInfoId).list();
+                if (CollectionUtil.isNotEmpty(medicalInsRuleProjectList)) {
+                    for (MedicalInsRuleProject medicalInsRuleProject : medicalInsRuleProjectList) {
+                        boolean startFlag = SPELUtil.startWithKey(medicalProjectCode, medicalInsRuleProject.getProjectCode());
+                        if (startFlag) {
+                            afterwardsAuditDetail.setMedicalInsRuleInfoId(medicalInsRuleProject.getMedicalInsRuleInfoId());
+                            MedicalInsRuleInfo medicalInsRuleInfo = medicalMap.get(medicalInsRuleProject.getMedicalInsRuleInfoId());
+                            afterwardsAuditDetail.setMedicalInsRuleInfoName(medicalInsRuleInfo.getRuleName());
+                            afterwardsAuditDetail.setMedicalInsRuleInfoCode(medicalInsRuleInfo.getRuleCode());
+                            if (StringUtils.isNotBlank(medicalInsRuleProject.getViolationDesc())) {
+                                afterwardsAuditDetail.setDescription(medicalInsRuleProject.getViolationDesc());
+                            } else {
+                                afterwardsAuditDetail.setDescription(medicalInsRuleInfo.getDescription());
+                            }
+                            codeDataMap.put(medicalProjectCode + "_" + medicalInsInfoId, true);
+
+                            return;
+                        }
+                        if (StringUtils.isNotBlank(medicalInsRuleProject.getCorrelationProjectCode())) {
+                            startFlag = SPELUtil.startWithKey(medicalProjectCode, medicalInsRuleProject.getCorrelationProjectCode());
+                            if (startFlag) {
+                                afterwardsAuditDetail.setMedicalInsRuleInfoId(medicalInsRuleProject.getMedicalInsRuleInfoId());
+                                MedicalInsRuleInfo medicalInsRuleInfo = medicalMap.get(medicalInsRuleProject.getMedicalInsRuleInfoId());
+                                afterwardsAuditDetail.setMedicalInsRuleInfoName(medicalInsRuleInfo.getRuleName());
+                                afterwardsAuditDetail.setMedicalInsRuleInfoCode(medicalInsRuleInfo.getRuleCode());
+                                if (StringUtils.isNotBlank(medicalInsRuleProject.getViolationDesc())) {
+                                    afterwardsAuditDetail.setDescription(medicalInsRuleProject.getViolationDesc());
+                                } else {
+                                    afterwardsAuditDetail.setDescription(medicalInsRuleInfo.getDescription());
+                                }
+                                codeDataMap.put(medicalProjectCode + "_" + medicalInsInfoId, true);
+
+                                return;
+                            }
+                        }
+                    }
+                }
+            }
+
+            codeDataMap.put(medicalProjectCode, false);
+
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+
+    }
+
+
+    public void setDesc(Map<String, String> ruleIdAndCodeMap, String medicineCode, String projectCode, Set<Integer> medicalRuleInfoIdSet) {
+        if (CollectionUtil.isNotEmpty(ruleIdAndCodeMap)) {
             for (Integer medicalRuleInfoId : medicalRuleInfoIdSet) {
-                if (ruleIdAndCodeMap.containsKey(medicalRuleInfoId+"_"+projectCode)) {
-                    String desc = ruleIdAndCodeMap.get(medicalRuleInfoId+"_"+projectCode);
+                if (ruleIdAndCodeMap.containsKey(medicalRuleInfoId + "_" + projectCode)) {
+                    String desc = ruleIdAndCodeMap.get(medicalRuleInfoId + "_" + projectCode);
                     redisTemplate.opsForHash().put(Constant.PROJECT_VOLIDATION_DESC_KEY + medicalRuleInfoId, medicineCode, desc);
                 }
             }
         }
     }
 
-    public void setCache(Set<String> projectCodeList, Map<String, Set<Integer>> ruleItemCodeAndRuleIdMap, Map<String,String> ruleIdAndCodeMap, String projectType) {
+    public void setCache(Set<String> projectCodeList, Map<String, Set<Integer>> ruleItemCodeAndRuleIdMap, Map<String, String> ruleIdAndCodeMap, String projectType) {
         if (Constant.PROJECT_TYPE_MEDICINE.equals(projectType) && CollectionUtil.isNotEmpty(ruleItemCodeAndRuleIdMap)) {
             List<MedicalInsuranceDrugs> medicalInsuranceDrugsList = medicalInsuranceDrugsService.lambdaQuery().isNotNull(MedicalInsuranceDrugs::getItemIdHosp).isNotNull(MedicalInsuranceDrugs::getMedicineCode).list();
             if (CollectionUtil.isNotEmpty(medicalInsuranceDrugsList)) {
@@ -540,7 +599,6 @@ public class RuleEngine {
     }
 
 
-
     /**
      * 事后明细
      *

+ 1 - 1
jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml

@@ -160,7 +160,7 @@ mybatis-plus:
       table-underline: true
   configuration:
     # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     # 返回类型为Map,显示null对应的字段
     call-setters-on-nulls: true
 #jeecg专用配置

+ 4 - 4
jeecg-module-system/jeecg-system-start/src/main/resources/logback-spring.xml

@@ -61,10 +61,10 @@
 	<!-- 每天生成一个html格式的日志结束 -->
 
 	<!--myibatis log configure -->
-	<logger name="com.apache.ibatis" level="TRACE" />
-	<logger name="java.sql.Connection" level="DEBUG" />
-	<logger name="java.sql.Statement" level="DEBUG" />
-	<logger name="java.sql.PreparedStatement" level="DEBUG" />
+	<logger name="com.apache.ibatis" level="ERROR" />
+	<logger name="java.sql.Connection" level="ERROR" />
+	<logger name="java.sql.Statement" level="ERROR" />
+	<logger name="java.sql.PreparedStatement" level="ERROR" />
 
 	<!-- 日志输出级别 -->
 	<root level="INFO">

+ 168 - 9
jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/AfterwardsAuditDataTest.java

@@ -1,20 +1,44 @@
 package org.jeecg;
 
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.modules.medical.Constant;
 import org.jeecg.modules.medical.entity.AfterwardsAudit;
 import org.jeecg.modules.medical.entity.AfterwardsAuditDetail;
+import org.jeecg.modules.medical.entity.MedicalInsRuleInfo;
+import org.jeecg.modules.medical.entity.SttlMasterBill;
+import org.jeecg.modules.medical.entity.SttlMasterDetailBill;
 import org.jeecg.modules.medical.job.AfterWaringLogTestJob;
+import org.jeecg.modules.medical.ruleengine.RuleEngine;
+import org.jeecg.modules.medical.ruleengine.SPELUtil;
 import org.jeecg.modules.medical.service.IAfterwardsAuditDetailService;
 import org.jeecg.modules.medical.service.IAfterwardsAuditService;
+import org.jeecg.modules.medical.service.IAfterwardsIncidentAuditDiagnoseService;
+import org.jeecg.modules.medical.service.IMedicalInsRuleInfoService;
+import org.jeecg.modules.medical.service.IMedicalInsRuleProjectDiagnoseService;
+import org.jeecg.modules.medical.service.IMedicalInsRuleProjectService;
+import org.jeecg.modules.medical.service.ISttlMasterBillService;
+import org.jeecg.modules.medical.service.ISttlMasterDetailBillService;
+import org.jeecg.modules.system.service.ISysDepartService;
+import org.jeecg.modules.system.service.ISysUserService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.quartz.JobExecutionException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @author soft01
@@ -23,7 +47,8 @@ import java.util.*;
  * @parentProject medical-java
  */
 @RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,classes = JeecgSystemApplication.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = JeecgSystemApplication.class)
+@Slf4j
 public class AfterwardsAuditDataTest {
 
     List<Map<String, String>> doctorList = new ArrayList<>();
@@ -56,9 +81,30 @@ public class AfterwardsAuditDataTest {
     @Autowired
     private IAfterwardsAuditDetailService afterwardsAuditDetailService;
     @Autowired
+    private IAfterwardsIncidentAuditDiagnoseService afterwardsIncidentAuditDiagnoseService;
+    @Autowired
     private AfterWaringLogTestJob afterWaringLogTestJob;
+    @Autowired
+    ISysUserService sysUserService;
+    @Autowired
+    ISysDepartService sysDepartService;
+    @Autowired
+    ISttlMasterBillService sttlMasterBillService;
+    @Autowired
+    ISttlMasterDetailBillService sttlMasterDetailBillService;
+    @Autowired
+    IMedicalInsRuleProjectService medicalInsRuleProjectService;
+    @Autowired
+    IMedicalInsRuleProjectDiagnoseService medicalInsRuleProjectDiagnoseService;
+    @Autowired
+    RuleEngine ruleEngine;
+    @Autowired
+    IMedicalInsRuleInfoService medicalInsRuleInfoService;
+    @Autowired
+    RedisTemplate redisTemplate;
+
     @Test
-    public void testJob(){
+    public void testJob() {
         try {
             afterWaringLogTestJob.execute(null);
         } catch (JobExecutionException e) {
@@ -66,6 +112,121 @@ public class AfterwardsAuditDataTest {
         }
     }
 
+    @Test
+    public void insertAfterWordDetail() {
+        List<SttlMasterBill> sttlMasterBills = sttlMasterBillService.list();
+        List<AfterwardsAuditDetail> detailList = new ArrayList<>();
+        Map<String, Boolean> codeDataMap = new ConcurrentHashMap<>();
+        String[] sAr = {"1", "3"};
+        List<MedicalInsRuleInfo> medicalInsRuleInfoList = medicalInsRuleInfoService.lambdaQuery().in(MedicalInsRuleInfo::getTreatmentType, sAr).eq(MedicalInsRuleInfo::getState, Constant.EFF_STATE).list();
+        if (!CollectionUtil.isNotEmpty(medicalInsRuleInfoList)) {
+            log.error("规则配置表没有有效的规则");
+            return;
+        }
+        /*
+         * 根据规则id加载规则并初始化到redis里
+         * 后续提醒通过redis加载id,把id传入规则引擎,迅速调用对应规则
+         */
+//        List<MedicalInsRuleInfo> midMedicalInsRuleInfoList = new ArrayList<>();
+        Map<Integer, MedicalInsRuleInfo> medicalMap = new HashMap<>();
+        for (MedicalInsRuleInfo medicalInsRuleInfo : medicalInsRuleInfoList) {
+            medicalMap.put(medicalInsRuleInfo.getId(), medicalInsRuleInfo);
+        }
+        for (SttlMasterBill sttlMasterBill : sttlMasterBills) {
+            AfterwardsAudit afterwardsAudit = afterwardsAuditService.lambdaQuery().eq(AfterwardsAudit::getPrescriptionNumber, sttlMasterBill.getJsdjh()).one();
+            if (null == afterwardsAudit) {
+                log.error("结算单据号找不到稽核单:{}", sttlMasterBill.getJsdjh());
+                continue;
+            }
+            List<SttlMasterDetailBill> sttlMasterDetailBills = sttlMasterDetailBillService.lambdaQuery().eq(SttlMasterDetailBill::getJsdjh, sttlMasterBill.getJsdjh()).list();
+            if (CollectionUtil.isNotEmpty(sttlMasterBills)) {
+
+                for (SttlMasterDetailBill sttlMasterDetailBill : sttlMasterDetailBills) {
+
+                    genData(sttlMasterDetailBill, codeDataMap, afterwardsAudit, medicalInsRuleInfoList, medicalMap);
+                }
+            }
+        }
+
+//        afterwardsAuditDetailService.saveBatch(detailList, 1000);
+    }
+
+    @Async
+    public void genData(SttlMasterDetailBill sttlMasterDetailBill, Map<String, Boolean> codeDataMap, AfterwardsAudit afterwardsAudit, List<MedicalInsRuleInfo> medicalInsRuleInfoList, Map<Integer, MedicalInsRuleInfo> medicalMap) {
+        AfterwardsAuditDetail afterwardsAuditDetail = new AfterwardsAuditDetail();
+
+        String projectCode = sttlMasterDetailBill.getYbxmbm();
+//        if (codeDataMap.containsKey(projectCode)) {
+//            return;
+//        }
+        if (StringUtils.isBlank(projectCode)) {
+            log.error("医保编码:{}", sttlMasterDetailBill);
+            return;
+        }
+
+        if (StringUtils.isNotBlank(projectCode)) {
+            Set<Integer> medicalRuleInfoIdSet = RuleEngine.itemCodeAndRuleIdMap.get(projectCode);
+            if (CollectionUtil.isEmpty(medicalRuleInfoIdSet)) {
+                log.info("医保编码未匹配到规则:{}", projectCode);
+                if(!codeDataMap.containsKey(projectCode)){
+                    ruleEngine.genItemCodeAndRuleIdMapTest(projectCode, afterwardsAuditDetail, medicalInsRuleInfoList, medicalMap,codeDataMap);
+                }
+
+            } else {
+                List<Integer> ruleIdList = new ArrayList<>(medicalRuleInfoIdSet);
+                Integer ruleId = ruleIdList.get(0);
+                MedicalInsRuleInfo medicalInsRuleInfo = medicalInsRuleInfoService.getById(ruleId);
+                afterwardsAuditDetail.setMedicalInsRuleInfoId(ruleId);
+//                            MedicalInsRuleInfo medicalInsRuleInfo = medicalMap.get(medicalInsRuleProject.getMedicalInsRuleInfoId());
+                afterwardsAuditDetail.setMedicalInsRuleInfoName(medicalInsRuleInfo.getRuleName());
+                afterwardsAuditDetail.setMedicalInsRuleInfoCode(medicalInsRuleInfo.getRuleCode());
+                Object desc = redisTemplate.opsForHash().get(Constant.PROJECT_VOLIDATION_DESC_KEY + ruleId, projectCode);
+                if (null != desc && StringUtils.isNotBlank(desc.toString())) {
+                    afterwardsAuditDetail.setDescription(desc.toString());
+                } else {
+                    afterwardsAuditDetail.setDescription(medicalInsRuleInfo.getDescription());
+                }
+            }
+
+        }
+        String projectType = null;
+
+        if (projectCode.startsWith(Constant.CONSUMABLE_START_KEY)) {
+            projectType = "consumable";
+        } else if (projectCode.startsWith(Constant.RESTORATIVES_T_START_KEY) ||
+                projectCode.startsWith(Constant.RESTORATIVES_X_START_KEY) ||
+                projectCode.startsWith(Constant.RESTORATIVES_Z_START_KEY)) {
+            projectType = "medicine";
+            //耗材都是字母c开头, 药品是X或Z T, 医疗服务是数字开头
+        } else if (SPELUtil.isNumeric(projectCode)) {
+            projectType = "diagnoses";
+        }
+        afterwardsAuditDetail.setProjectType(projectType);
+        afterwardsAuditDetail.setAfterwardsAuditId(afterwardsAudit.getId());
+
+        afterwardsAuditDetail.setAmount(Double.parseDouble(sttlMasterDetailBill.get金额()));
+        afterwardsAuditDetail.setTreatmentType("hops");
+        afterwardsAuditDetail.setDoctorId(afterwardsAudit.getDoctorId());
+        afterwardsAuditDetail.setDoctorName(afterwardsAudit.getDoctorName());
+        afterwardsAuditDetail.setMedicalDeptCode(afterwardsAudit.getMedicalDeptCode());
+        afterwardsAuditDetail.setMedicalDeptName(afterwardsAudit.getMedicalDeptName());
+        afterwardsAuditDetail.setNoticeType("after");
+
+        afterwardsAuditDetail.setMedicalProjectCode(projectCode);
+        afterwardsAuditDetail.setMedicalProjectName(sttlMasterDetailBill.get医保项目名称());
+        afterwardsAuditDetail.setPatientId(afterwardsAudit.getPatientId());
+        afterwardsAuditDetail.setPatientName(afterwardsAudit.getPatientName());
+        afterwardsAuditDetail.setViolationLevel(0);
+        afterwardsAuditDetail.setProejctCode(projectCode);
+        afterwardsAuditDetail.setProejctName(sttlMasterDetailBill.get医保项目名称());
+        afterwardsAuditDetail.setCreateTime(new Date());
+        afterwardsAuditDetail.setQuantity(Integer.parseInt(sttlMasterDetailBill.get数量()));
+        afterwardsAuditDetail.setReminderLevel("1");
+//                    detailList.add(afterwardsAuditDetail);
+        afterwardsAuditDetailService.save(afterwardsAuditDetail);
+    }
+
+
     @Test
     public void generateAfterwardsAuditData() {
 
@@ -115,8 +276,6 @@ public class AfterwardsAuditDataTest {
         doctorItem10.put("doctorId", "1001207");
 
 
-
-
         doctorList.add(doctorItem1);
         doctorList.add(doctorItem2);
         doctorList.add(doctorItem3);
@@ -165,11 +324,11 @@ public class AfterwardsAuditDataTest {
             aad.setProjectType(PROJECTTYPE);
             aad.setProejctCode(PROJECTCODE);
 
-            aad.setQuantity(new BigDecimal("1"));
+            aad.setQuantity(1);
             aad.setMedicalProjectCode("8001");
             aad.setMedicalProjectName("1");
 
-            aad.setAmount(BigDecimal.valueOf(AfterwardsAuditDataTest.getRandom()));
+            aad.setAmount(Double.valueOf(AfterwardsAuditDataTest.getRandom()));
 
             aad.setCreateBy("admin");
             aad.setCreateTime(new Date());