Ver código fonte

spel表达式预生成

0027005599 2 anos atrás
pai
commit
aece8411a9

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

@@ -123,8 +123,6 @@ public class FactorEnchangeFactory {
                     if (Constant.WARING_EVENT_ATTR_ID == factorEnchance.getEventAttrId()) {
                         if (result) {
                             insertWarningDetail(localMap, medicalInsRuleInfo, audit, itemList);
-                        } else{
-
                         }
                     } else {
                         localMap.put(getParamName(factorEnchance.getEventAttrId()), result);

+ 7 - 4
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/SPELUtil.java

@@ -33,7 +33,7 @@ public class SPELUtil {
         EventAttr eventAttr = enchanceAttrMap.get(factorCondRela.getEventAttrId());
         EventAttr refEventAttr = enchanceAttrMap.get(factorCondRela.getRefEventAttrId());
 
-        if (null == refEventAttr) {
+        if (2 == factorCondRela.getRefAttrType() && null == refEventAttr) {
             throw new NullPointerException("表达式Id:" + factorCondRela.getId() + " 表达式:" + factorCondRela.getCondStr() + " 要素提取id:" + factorCondRela.getFactorEnhanceId() + " 要素id:" + factorCondRela.getRefEventAttrId() + " 配置的被比较要素不存在,要素管理未配置");
         }
 
@@ -43,7 +43,10 @@ public class SPELUtil {
         String spelStr = null;
         //A包含B == B存在于A
         ColumnTypeEnum eventColumnTypeEnum = ColumnTypeEnum.getType(eventAttr.getDispType());
-        ColumnTypeEnum refEventColumnTypeEnum = ColumnTypeEnum.getType(refEventAttr.getDispType());
+        ColumnTypeEnum refEventColumnTypeEnum = ColumnTypeEnum.STRING;
+        if(2 == factorCondRela.getRefAttrType()) {
+            refEventColumnTypeEnum = ColumnTypeEnum.getType(refEventAttr.getDispType());
+        }
         if (OperaterEnum.MEMBER == operaterEnum) {
 
             String inKey = eventAttr.getDispArgs();
@@ -87,10 +90,10 @@ public class SPELUtil {
         } else {
             if(1 == factorCondRela.getRefAttrType()){
 
-                spelStr = "#" + factorCondRela.getEventAttrId() + operaterEnum.getOperaterStr() + factorCondRela.getExtAttr1();
+                spelStr = "#" + eventAttr.getEnName() + operaterEnum.getOperaterStr() + factorCondRela.getExtAttr1();
 
             }else {
-                spelStr = "#" + factorCondRela.getEventAttrId() + operaterEnum.getOperaterStr() + "#" + factorCondRela.getRefEventAttrId();
+                spelStr = "#" + eventAttr.getEnName() + operaterEnum.getOperaterStr() + "#" + refEventAttr.getEnName();
             }
         }
         return spelStr;

+ 21 - 10
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/service/impl/FactorEnchanceServiceImpl.java

@@ -2,27 +2,22 @@ package org.jeecg.modules.medical.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.jeecg.common.constant.CommonConstant;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.jeecg.modules.medical.Constant;
-import org.jeecg.modules.medical.entity.EventAttr;
 import org.jeecg.modules.medical.entity.FactorAttrRela;
 import org.jeecg.modules.medical.entity.FactorCondRela;
 import org.jeecg.modules.medical.entity.FactorEnchance;
-import org.jeecg.modules.medical.entity.RuleFactorRela;
 import org.jeecg.modules.medical.mapper.FactorAttrRelaMapper;
 import org.jeecg.modules.medical.mapper.FactorCondRelaMapper;
 import org.jeecg.modules.medical.mapper.FactorEnchanceMapper;
-import org.jeecg.modules.medical.mapper.RuleFactorRelaMapper;
-import org.jeecg.modules.medical.service.IFactorCondRelaService;
+import org.jeecg.modules.medical.ruleengine.FactorEnchangeFactory;
+import org.jeecg.modules.medical.ruleengine.SPELUtil;
 import org.jeecg.modules.medical.service.IFactorEnchanceService;
-import org.jeecg.modules.system.entity.SysAnnouncementSend;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
 import javax.annotation.Resource;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -31,6 +26,7 @@ import java.util.List;
  * @Date: 2023-04-23
  * @Version: V1.0
  */
+@Slf4j
 @Service
 public class FactorEnchanceServiceImpl extends ServiceImpl<FactorEnchanceMapper, FactorEnchance> implements IFactorEnchanceService {
 
@@ -38,6 +34,8 @@ public class FactorEnchanceServiceImpl extends ServiceImpl<FactorEnchanceMapper,
     FactorCondRelaMapper factorCondRelaMapper;
     @Resource
     FactorAttrRelaMapper factorAttrRelaMapper;
+    @Autowired
+    SPELUtil spelUtil;
 
     @Override
     public Integer saveSqlFactorEnchance(FactorEnchance factorEnchance) {
@@ -88,10 +86,23 @@ public class FactorEnchanceServiceImpl extends ServiceImpl<FactorEnchanceMapper,
             QueryWrapper<FactorCondRela> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("factor_enhance_id", factorEnchance.getId());
             factorCondRelaMapper.delete(queryWrapper);
-            for (FactorCondRela factorCondRela : factorEnchance.getFactorCondRelaList()) {
+            StringBuffer spelStringBu = new StringBuffer();
+            List<FactorCondRela> factorCondRelaList = factorEnchance.getFactorCondRelaList();
+            for (int i = 0, factorCondRelaListSize = factorCondRelaList.size(); i < factorCondRelaListSize; i++) {
+                FactorCondRela factorCondRela = factorCondRelaList.get(i);
                 factorCondRela.setFactorEnhanceId(factorEnchance.getId());
+                String spelStr = spelUtil.getSPELString(factorCondRela, FactorEnchangeFactory.enchanceAttrMap);
+                log.info("factorCondRela:{}", factorCondRela);
+                log.info("spelStr:{}", spelStr);
+
+                spelStringBu.append(spelStr);
+                if (i < (factorCondRelaListSize - 1)) {
+                    spelStringBu.append(factorEnchance.getExtAttr1());
+                }
+                factorCondRela.setCondStr(spelStr);
                 factorCondRelaMapper.insert(factorCondRela);
             }
+            this.lambdaUpdate().set(FactorEnchance::getEnhanceValue, spelStringBu.toString()).eq(FactorEnchance::getId, factorEnchance.getId()).update();
             return factorEnchance.getFactorCondRelaList().size();
         }
         return -1;