diff --git a/pom.xml b/pom.xml
index 12c8bf5..425cd77 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,12 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
-
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.7.0
+
+
org.example
liteflow-demo
1.0-SNAPSHOT
@@ -20,13 +25,23 @@
org.springframework.boot
spring-boot-starter
- ${spring-boot.version}
-
org.springframework.boot
spring-boot-starter-test
- ${spring-boot.version}
+ test
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.2
+
+
+
+ com.h2database
+ h2
+ runtime
@@ -35,12 +50,6 @@
3.3.2
-
- org.projectlombok
- lombok
- provided
-
-
mysql
mysql-connector-java
@@ -81,5 +90,11 @@
aviator
5.2.7
+
+ org.assertj
+ assertj-core
+ 3.22.0
+ compile
+
\ No newline at end of file
diff --git a/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenter01Cmp.java b/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenter01Cmp.java
index 006ea1b..b8b2c20 100644
--- a/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenter01Cmp.java
+++ b/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenter01Cmp.java
@@ -2,22 +2,23 @@ package com.example.liteflow.mysql.cmp.costCenter;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+import com.example.liteflow.mysql.enums.BaseDataAttributionEnum;
import com.example.liteflow.mysql.model.CostCenter;
+import com.example.liteflow.mysql.service.BaseDataService;
import com.example.liteflow.mysql.util.ConditionParser;
import com.googlecode.aviator.AviatorEvaluator;
import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.core.NodeIfComponent;
import lombok.extern.slf4j.Slf4j;
-import org.assertj.core.util.Lists;
+import javax.annotation.Resource;
import java.lang.reflect.Field;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
/**
* @author: 陈韦龙
@@ -26,33 +27,29 @@ import java.util.Map;
@LiteflowComponent("costCenter01Cmp")
@Slf4j
public class CostCenter01Cmp extends NodeIfComponent {
+ @Resource
+ private BaseDataService baseDataService;
- private static final String drool = "[{\"$or\": [{\"$and\": [{\"contains\": [sectionClassification, sectionClassificationList]}, {\"contains\": [businessType, businessTypeList]}, {\"contains\": [salesman, salesmanList]}, {\"contains\": [businessCategory, businessCategoryList]}]}]}]";
+ private static final String drool = "[{\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [businessType, businessTypeList]}, {\"$contains\": [salesman, salesmanList]}, {\"$contains\": [businessCategory, businessCategoryList]}]}]}]";
- private final LinkedHashMap> map = new LinkedHashMap>(){{
- put("sectionClassificationList", Lists.newArrayList("汇差", "手续费", "成本科目"));
- put("businessTypeList", Lists.newArrayList("货代", "报关", "船代", "散杂货"));
- put("salesmanList", Lists.newArrayList("仓干配物流部(物流)"));
- put("businessCategoryList", Lists.newArrayList("全货船业务", "进出岛仓干配"));
- }};
@Override
public boolean processIf() throws Exception {
CostCenter requestData = this.getRequestData();
String droolStr = drool;
- for (Map.Entry> entry : map.entrySet()) {
- String key = entry.getKey();
- List list = entry.getValue();
- droolStr = StrUtil.replace(droolStr, key, list.toString(), false);
- }
- log.info("before - droolStr = {}", droolStr);
Field[] fields = ReflectUtil.getFields(CostCenter.class);
for (Field field : fields) {
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
String name = field.getName();
+ BaseDataEntity baseDataEntity = baseDataService.getByType(name, BaseDataAttributionEnum.costCenter.getAttribution());
+ if (ObjectUtil.isNotNull(baseDataEntity)) {
+ String content = baseDataEntity.getContent();
+ String contentName = baseDataEntity.getContentName();
+ droolStr = StrUtil.replace(droolStr, contentName, content, false);
+ }
droolStr = StrUtil.replace(droolStr, name, "\"" + fieldValue + "\"", false);
}
- log.info("after - replace4 = {}", droolStr);
+ log.info("after - droolStr = {}", droolStr);
JSONArray jsonArray = JSONUtil.parseArray(droolStr);
log.info("jsonArray = {}", jsonArray);
diff --git a/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenter02Cmp.java b/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenter02Cmp.java
index 67b70b8..f34d57c 100644
--- a/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenter02Cmp.java
+++ b/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenter02Cmp.java
@@ -2,11 +2,15 @@ package com.example.liteflow.mysql.cmp.costCenter;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+import com.example.liteflow.mysql.enums.BaseDataAttributionEnum;
import com.example.liteflow.mysql.model.CostCenter;
+import com.example.liteflow.mysql.service.BaseDataService;
import com.example.liteflow.mysql.util.ConditionParser;
import com.googlecode.aviator.AviatorEvaluator;
import com.yomahub.liteflow.annotation.LiteflowComponent;
@@ -14,6 +18,7 @@ import com.yomahub.liteflow.core.NodeIfComponent;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
+import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.LinkedHashMap;
import java.util.List;
@@ -27,27 +32,24 @@ import java.util.Map;
@Slf4j
public class CostCenter02Cmp extends NodeIfComponent {
- private static final String drool = "[{\"$or\": [{\"$or\": [{\"$and\": [{\"contains\": [sectionClassification, sectionClassificationList]}, {\"contains\": [salesman, salesmanList]}]}]}, {\"$or\": [{\"contains\": [businessType, businessTypeList]}]}]}]";
+ private static final String drool = "[{\"$or\": [{\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [salesman, salesmanList]}]}]}, {\"$or\": [{\"$contains\": [businessType, businessTypeList]}]}]}]";
- private final LinkedHashMap> map = new LinkedHashMap>(){{
- put("sectionClassificationList", Lists.newArrayList("汇差", "手续费", "成本科目"));
- put("businessTypeList", Lists.newArrayList("货代", "报关", "船代", "散杂货"));
- put("salesmanList", Lists.newArrayList("仓干配物流部(物流)"));
- }};
+ @Resource
+ private BaseDataService baseDataService;
@Override
public boolean processIf() throws Exception {
CostCenter requestData = this.getRequestData();
String droolStr = drool;
- for (Map.Entry> entry : map.entrySet()) {
- String key = entry.getKey();
- List list = entry.getValue();
- droolStr = StrUtil.replace(droolStr, key, list.toString(), false);
- }
- log.info("before - droolStr = {}", droolStr);
Field[] fields = ReflectUtil.getFields(CostCenter.class);
for (Field field : fields) {
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
String name = field.getName();
+ BaseDataEntity baseDataEntity = baseDataService.getByType(name, BaseDataAttributionEnum.costCenter.getAttribution());
+ if (ObjectUtil.isNotNull(baseDataEntity)) {
+ String content = baseDataEntity.getContent();
+ String contentName = baseDataEntity.getContentName();
+ droolStr = StrUtil.replace(droolStr, contentName, content, false);
+ }
droolStr = StrUtil.replace(droolStr, name, "\"" + fieldValue + "\"", false);
}
diff --git a/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenterCmp.java b/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenterCmp.java
index 2975cb4..26704f1 100644
--- a/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenterCmp.java
+++ b/src/main/java/com/example/liteflow/mysql/cmp/costCenter/CostCenterCmp.java
@@ -1,11 +1,15 @@
package com.example.liteflow.mysql.cmp.costCenter;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+import com.example.liteflow.mysql.enums.BaseDataAttributionEnum;
import com.example.liteflow.mysql.model.CostCenter;
+import com.example.liteflow.mysql.service.BaseDataService;
import com.example.liteflow.mysql.util.ConditionParser;
import com.googlecode.aviator.AviatorEvaluator;
import com.yomahub.liteflow.annotation.LiteflowComponent;
@@ -13,6 +17,7 @@ import com.yomahub.liteflow.core.NodeIfComponent;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
+import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.List;
@@ -24,31 +29,33 @@ import java.util.List;
@Slf4j
public class CostCenterCmp extends NodeIfComponent {
- private static final String droolStr = "[{\"$or\": [{\"$and\": [{\"contains\": [sectionClassification, sectionClassificationList]}, {\"contains\": [businessType, businessTypeList]}, {\"contains\": [salesman, salesmanList]}, {\"contains\": [businessCategory, businessCategoryList]}]}]}, {\"$or\": [{\"$or\": [{\"$and\": [{\"contains\": [sectionClassification, sectionClassificationList]}, {\"contains\": [salesman, salesmanList]}]}]}, {\"$or\": [{\"contains\": [businessType, businessTypeList]}]}]}]";
+ private static final String drool = "[{\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [businessType, businessTypeList]}, {\"$contains\": [salesman, salesmanList]}, {\"$contains\": [businessCategory, businessCategoryList]}]}]}, {\"$or\": [{\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [salesman, salesmanList]}]}]}, {\"$or\": [{\"$contains\": [businessType, businessTypeList]}]}]}]";
private static final List sectionClassificationList = Lists.newArrayList("汇差", "手续费", "成本科目");
private static final List businessTypeList = Lists.newArrayList("货代", "报关", "船代", "散杂货");
private static final List salesmanList = Lists.newArrayList("仓干配物流部(物流)");
private static final List businessCategoryList = Lists.newArrayList("全货船业务", "进出岛仓干配");
+ @Resource
+ private BaseDataService baseDataService;
@Override
public boolean processIf() throws Exception {
CostCenter requestData = this.getRequestData();
- String replace = StrUtil.replace(droolStr, "sectionClassificationList", sectionClassificationList.toString(), false);
-
- String replace2 = StrUtil.replace(replace, "businessTypeList", businessTypeList.toString(), false);
-
- String replace3 = StrUtil.replace(replace2, "salesmanList", salesmanList.toString(), false);
- String replace4 = StrUtil.replace(replace3, "businessCategoryList", businessCategoryList.toString(), false);
- log.info("before - replace4 = {}", replace4);
+ String droolStr = drool;
Field[] fields = ReflectUtil.getFields(CostCenter.class);
for (Field field : fields) {
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
String name = field.getName();
- replace4 = StrUtil.replace(replace4, name, "\"" + fieldValue + "\"", false);
+ BaseDataEntity baseDataEntity = baseDataService.getByType(name, BaseDataAttributionEnum.costCenter.getAttribution());
+ if (ObjectUtil.isNotNull(baseDataEntity)) {
+ String content = baseDataEntity.getContent();
+ String contentName = baseDataEntity.getContentName();
+ droolStr = StrUtil.replace(droolStr, contentName, content, false);
+ }
+ droolStr = StrUtil.replace(droolStr, name, "\"" + fieldValue + "\"", false);
}
- log.info("after - replace4 = {}", replace4);
- JSONArray jsonArray = JSONUtil.parseArray(replace4);
+ log.info("after - droolStr = {}", droolStr);
+ JSONArray jsonArray = JSONUtil.parseArray(droolStr);
log.info("jsonArray = {}", jsonArray);
String conditionResult = ConditionParser.parseCondition(jsonArray);
diff --git a/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenter01Cmp.java b/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenter01Cmp.java
index a4288ff..7556d23 100644
--- a/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenter01Cmp.java
+++ b/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenter01Cmp.java
@@ -2,11 +2,16 @@ package com.example.liteflow.mysql.cmp.profitCenter;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+import com.example.liteflow.mysql.enums.BaseDataAttributionEnum;
+import com.example.liteflow.mysql.model.CostCenter;
import com.example.liteflow.mysql.model.ProfitCenter;
+import com.example.liteflow.mysql.service.BaseDataService;
import com.example.liteflow.mysql.util.ConditionParser;
import com.googlecode.aviator.AviatorEvaluator;
import com.yomahub.liteflow.annotation.LiteflowComponent;
@@ -14,6 +19,7 @@ import com.yomahub.liteflow.core.NodeIfComponent;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
+import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.LinkedHashMap;
import java.util.List;
@@ -27,28 +33,24 @@ import java.util.Map;
@Slf4j
public class ProfitCenter01Cmp extends NodeIfComponent {
- private static final String drool = "[{\"$or\": [{\"$and\": [{\"contains\": [businessType, businessTypeList]}, {\"contains\": [salesman, salesmanList]}, {\"contains\": [businessCategory, businessCategoryList]}]}]}, {\"$or\": [{\"$and\": [{\"contains\": [sectionClassification, sectionClassificationList]}, {\"contains\": [businessType, businessTypeList]}]}]}]";
+ private static final String drool = "[{\"$or\": [{\"$and\": [{\"$contains\": [businessType, businessTypeList]}, {\"$contains\": [salesman, salesmanList]}, {\"$contains\": [businessCategory, businessCategoryList]}]}]}, {\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [businessType, businessTypeList]}]}]}]";
- private final LinkedHashMap> map = new LinkedHashMap>(){{
- put("sectionClassificationList", Lists.newArrayList("银行科目", "预付科目", "预收科目"));
- put("businessTypeList", Lists.newArrayList("货代", "船代", "散杂货"));
- put("salesmanList", Lists.newArrayList("仓干配物流部(物流)"));
- put("businessCategoryList", Lists.newArrayList("运输业务", "全货船业务", "进出岛仓干配"));
- }};
+ @Resource
+ private BaseDataService baseDataService;
@Override
public boolean processIf() throws Exception {
ProfitCenter requestData = this.getRequestData();
String droolStr = drool;
- for (Map.Entry> entry : map.entrySet()) {
- String key = entry.getKey();
- List list = entry.getValue();
- droolStr = StrUtil.replace(droolStr, key, list.toString(), false);
- }
- log.info("before - droolStr = {}", droolStr);
- Field[] fields = ReflectUtil.getFields(ProfitCenter.class);
+ Field[] fields = ReflectUtil.getFields(CostCenter.class);
for (Field field : fields) {
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
String name = field.getName();
+ BaseDataEntity baseDataEntity = baseDataService.getByType(name, BaseDataAttributionEnum.profitCenter.getAttribution());
+ if (ObjectUtil.isNotNull(baseDataEntity)) {
+ String content = baseDataEntity.getContent();
+ String contentName = baseDataEntity.getContentName();
+ droolStr = StrUtil.replace(droolStr, contentName, content, false);
+ }
droolStr = StrUtil.replace(droolStr, name, "\"" + fieldValue + "\"", false);
}
diff --git a/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenter02Cmp.java b/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenter02Cmp.java
index 3c8bbda..eb0bee3 100644
--- a/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenter02Cmp.java
+++ b/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenter02Cmp.java
@@ -2,12 +2,16 @@ package com.example.liteflow.mysql.cmp.profitCenter;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+import com.example.liteflow.mysql.enums.BaseDataAttributionEnum;
import com.example.liteflow.mysql.model.CostCenter;
import com.example.liteflow.mysql.model.ProfitCenter;
+import com.example.liteflow.mysql.service.BaseDataService;
import com.example.liteflow.mysql.util.ConditionParser;
import com.googlecode.aviator.AviatorEvaluator;
import com.yomahub.liteflow.annotation.LiteflowComponent;
@@ -15,6 +19,7 @@ import com.yomahub.liteflow.core.NodeIfComponent;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
+import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.LinkedHashMap;
import java.util.List;
@@ -28,31 +33,28 @@ import java.util.Map;
@Slf4j
public class ProfitCenter02Cmp extends NodeIfComponent {
- private static final String drool = "[{\"$or\": [{\"$and\": [{\"contains\": [businessType, businessTypeList]}, {\"contains\": [salesman, salesmanList]}]}]}, {\"$or\": [{\"$and\": [{\"contains\":[sectionClassification, sectionClassificationList]}, {\"contains\": [businessType, businessTypeList]}]}]}]";
+ private static final String drool = "[{\"$or\": [{\"$and\": [{\"$contains\": [businessType, businessTypeList]}, {\"$contains\": [salesman, salesmanList]}]}]}, {\"$or\": [{\"$and\": [{\"$contains\":[sectionClassification, sectionClassificationList]}, {\"$contains\": [businessType, businessTypeList]}]}]}]";
- private final LinkedHashMap> map = new LinkedHashMap>(){{
- put("sectionClassificationList", Lists.newArrayList("银行科目", "预付科目", "预收科目"));
- put("businessTypeList", Lists.newArrayList("货代", "船代", "散杂货"));
- put("salesmanList", Lists.newArrayList("仓干配物流部(物流)"));
- }};
+ @Resource
+ private BaseDataService baseDataService;
@Override
public boolean processIf() throws Exception {
ProfitCenter requestData = this.getRequestData();
String droolStr = drool;
- for (Map.Entry> entry : map.entrySet()) {
- String key = entry.getKey();
- List list = entry.getValue();
- droolStr = StrUtil.replace(droolStr, key, list.toString(), false);
- }
- log.info("before - droolStr = {}", droolStr);
Field[] fields = ReflectUtil.getFields(CostCenter.class);
for (Field field : fields) {
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
String name = field.getName();
+ BaseDataEntity baseDataEntity = baseDataService.getByType(name, BaseDataAttributionEnum.profitCenter.getAttribution());
+ if (ObjectUtil.isNotNull(baseDataEntity)) {
+ String content = baseDataEntity.getContent();
+ String contentName = baseDataEntity.getContentName();
+ droolStr = StrUtil.replace(droolStr, contentName, content, false);
+ }
droolStr = StrUtil.replace(droolStr, name, "\"" + fieldValue + "\"", false);
}
- log.info("after - replace4 = {}", droolStr);
+ log.info("after - droolStr = {}", droolStr);
JSONArray jsonArray = JSONUtil.parseArray(droolStr);
log.info("jsonArray = {}", jsonArray);
diff --git a/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenterCmp.java b/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenterCmp.java
index 42a652f..8a6470e 100644
--- a/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenterCmp.java
+++ b/src/main/java/com/example/liteflow/mysql/cmp/profitCenter/ProfitCenterCmp.java
@@ -1,11 +1,15 @@
package com.example.liteflow.mysql.cmp.profitCenter;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+import com.example.liteflow.mysql.enums.BaseDataAttributionEnum;
import com.example.liteflow.mysql.model.CostCenter;
+import com.example.liteflow.mysql.service.BaseDataService;
import com.example.liteflow.mysql.util.ConditionParser;
import com.googlecode.aviator.AviatorEvaluator;
import com.yomahub.liteflow.annotation.LiteflowComponent;
@@ -13,6 +17,7 @@ import com.yomahub.liteflow.core.NodeIfComponent;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Lists;
+import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.List;
@@ -24,31 +29,29 @@ import java.util.List;
@Slf4j
public class ProfitCenterCmp extends NodeIfComponent {
- private static final String droolStr = "[{\"$or\": [{\"$and\": [{\"contains\": [sectionClassification, sectionClassificationList]}, {\"contains\": [businessType, businessTypeList]}, {\"contains\": [salesman, salesmanList]}, {\"contains\": [businessCategory, businessCategoryList]}]}]}, {\"$or\": [{\"$or\": [{\"$and\": [{\"contains\": [sectionClassification, sectionClassificationList]}, {\"contains\": [salesman, salesmanList]}]}]}, {\"$or\": [{\"contains\": [businessType, businessTypeList]}]}]}]";
+ private static final String drool = "[{\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [businessType, businessTypeList]}, {\"$contains\": [salesman, salesmanList]}, {\"$contains\": [businessCategory, businessCategoryList]}]}]}, {\"$or\": [{\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [salesman, salesmanList]}]}]}, {\"$or\": [{\"$contains\": [businessType, businessTypeList]}]}]}]";
- private static final List sectionClassificationList = Lists.newArrayList("汇差", "手续费", "成本科目");
- private static final List businessTypeList = Lists.newArrayList("货代", "报关", "船代", "散杂货");
- private static final List salesmanList = Lists.newArrayList("仓干配物流部(物流)");
- private static final List businessCategoryList = Lists.newArrayList("全货船业务", "进出岛仓干配");
+ @Resource
+ private BaseDataService baseDataService;
@Override
public boolean processIf() throws Exception {
CostCenter requestData = this.getRequestData();
- String replace = StrUtil.replace(droolStr, "sectionClassificationList", sectionClassificationList.toString(), false);
-
- String replace2 = StrUtil.replace(replace, "businessTypeList", businessTypeList.toString(), false);
-
- String replace3 = StrUtil.replace(replace2, "salesmanList", salesmanList.toString(), false);
- String replace4 = StrUtil.replace(replace3, "businessCategoryList", businessCategoryList.toString(), false);
- log.info("before - replace4 = {}", replace4);
+ String droolStr = drool;
Field[] fields = ReflectUtil.getFields(CostCenter.class);
for (Field field : fields) {
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
String name = field.getName();
- replace4 = StrUtil.replace(replace4, name, "\"" + fieldValue + "\"", false);
+ BaseDataEntity baseDataEntity = baseDataService.getByType(name, BaseDataAttributionEnum.profitCenter.getAttribution());
+ if (ObjectUtil.isNotNull(baseDataEntity)) {
+ String content = baseDataEntity.getContent();
+ String contentName = baseDataEntity.getContentName();
+ droolStr = StrUtil.replace(droolStr, contentName, content, false);
+ }
+ droolStr = StrUtil.replace(droolStr, name, "\"" + fieldValue + "\"", false);
}
- log.info("after - replace4 = {}", replace4);
- JSONArray jsonArray = JSONUtil.parseArray(replace4);
+ log.info("after - droolStr = {}", droolStr);
+ JSONArray jsonArray = JSONUtil.parseArray(droolStr);
log.info("jsonArray = {}", jsonArray);
String conditionResult = ConditionParser.parseCondition(jsonArray);
diff --git a/src/main/java/com/example/liteflow/mysql/entity/BaseDataEntity.java b/src/main/java/com/example/liteflow/mysql/entity/BaseDataEntity.java
new file mode 100644
index 0000000..e0f107b
--- /dev/null
+++ b/src/main/java/com/example/liteflow/mysql/entity/BaseDataEntity.java
@@ -0,0 +1,26 @@
+package com.example.liteflow.mysql.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * @author: 陈韦龙
+ * @date: 2022年12月06日 09:59
+ */
+@Data
+public class BaseDataEntity {
+ @TableId(value = "ID", type = IdType.ASSIGN_UUID)
+ private String id;
+ @TableField("type")
+ private String type;
+ @TableField("attribution")
+ private String attribution;
+ @TableField("content")
+ private String content;
+ @TableField("content_type")
+ private String contentType;
+ @TableField("content_name")
+ private String contentName;
+}
diff --git a/src/main/java/com/example/liteflow/mysql/enums/BaseDataAttributionEnum.java b/src/main/java/com/example/liteflow/mysql/enums/BaseDataAttributionEnum.java
new file mode 100644
index 0000000..d9dc7e3
--- /dev/null
+++ b/src/main/java/com/example/liteflow/mysql/enums/BaseDataAttributionEnum.java
@@ -0,0 +1,19 @@
+package com.example.liteflow.mysql.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.ToString;
+
+/**
+ * @author: 陈韦龙
+ * @date: 2022年12月06日 14:43
+ */
+@Getter
+@AllArgsConstructor
+@ToString
+public enum BaseDataAttributionEnum {
+ costCenter("costCenter"),
+ profitCenter("profitCenter"),
+ ;
+ private final String attribution;
+}
diff --git a/src/main/java/com/example/liteflow/mysql/enums/BaseDataContentTypeEnum.java b/src/main/java/com/example/liteflow/mysql/enums/BaseDataContentTypeEnum.java
new file mode 100644
index 0000000..0240735
--- /dev/null
+++ b/src/main/java/com/example/liteflow/mysql/enums/BaseDataContentTypeEnum.java
@@ -0,0 +1,20 @@
+package com.example.liteflow.mysql.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.ToString;
+
+/**
+ * @author: 陈韦龙
+ * @date: 2022年12月06日 10:17
+ */
+@Getter
+@AllArgsConstructor
+@ToString
+public enum BaseDataContentTypeEnum {
+ List("List"),
+ String("String")
+ ;
+ private final String contentType;
+
+}
diff --git a/src/main/java/com/example/liteflow/mysql/enums/MathOperatorEnum.java b/src/main/java/com/example/liteflow/mysql/enums/MathOperatorEnum.java
index 133152b..91f13dc 100644
--- a/src/main/java/com/example/liteflow/mysql/enums/MathOperatorEnum.java
+++ b/src/main/java/com/example/liteflow/mysql/enums/MathOperatorEnum.java
@@ -39,7 +39,7 @@ public enum MathOperatorEnum {
$match("$match", "match", "Logical", "匹配"),
// 特殊运算符
- contains("contains", "CollUtil.contains(StrUtil.split(\"{}\", \",\"), '{}')", "Special", "包含"),
+ contains("$contains", "CollUtil.contains(StrUtil.split(\"{}\", \",\"), '{}')", "Special", "包含"),
;
diff --git a/src/main/java/com/example/liteflow/mysql/mapper/BaseDataMapper.java b/src/main/java/com/example/liteflow/mysql/mapper/BaseDataMapper.java
new file mode 100644
index 0000000..ad0ca8c
--- /dev/null
+++ b/src/main/java/com/example/liteflow/mysql/mapper/BaseDataMapper.java
@@ -0,0 +1,13 @@
+package com.example.liteflow.mysql.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author: 陈韦龙
+ * @date: 2022年12月06日 10:08
+ */
+@Mapper
+public interface BaseDataMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/example/liteflow/mysql/service/BaseDataService.java b/src/main/java/com/example/liteflow/mysql/service/BaseDataService.java
new file mode 100644
index 0000000..2efd355
--- /dev/null
+++ b/src/main/java/com/example/liteflow/mysql/service/BaseDataService.java
@@ -0,0 +1,12 @@
+package com.example.liteflow.mysql.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+
+/**
+ * @author: 陈韦龙
+ * @date: 2022年12月06日 09:58
+ */
+public interface BaseDataService extends IService {
+ BaseDataEntity getByType(String type, String attribution);
+}
diff --git a/src/main/java/com/example/liteflow/mysql/service/impl/BaseDataServiceImpl.java b/src/main/java/com/example/liteflow/mysql/service/impl/BaseDataServiceImpl.java
new file mode 100644
index 0000000..cb1ad1c
--- /dev/null
+++ b/src/main/java/com/example/liteflow/mysql/service/impl/BaseDataServiceImpl.java
@@ -0,0 +1,24 @@
+package com.example.liteflow.mysql.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.liteflow.mysql.entity.BaseDataEntity;
+import com.example.liteflow.mysql.mapper.BaseDataMapper;
+import com.example.liteflow.mysql.service.BaseDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author: 陈韦龙
+ * @date: 2022年12月06日 09:59
+ */
+@Slf4j
+@Service
+public class BaseDataServiceImpl extends ServiceImpl implements BaseDataService {
+ @Override
+ public BaseDataEntity getByType(String type, String attribution) {
+ return this.lambdaQuery()
+ .eq(BaseDataEntity::getType, type)
+ .eq(BaseDataEntity::getAttribution, attribution)
+ .getEntity();
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index c17ede1..03a6857 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,6 +1,11 @@
spring:
application:
name: liteflow-mysql
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/test_db?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
+ username: root
+ password: 123456
liteflow:
rule-source: liteflow/*.el.xml
@@ -21,4 +26,4 @@ liteflow:
# scriptIdField: script_id
# scriptNameField: script_name
# scriptDataField: script_data
-# scriptTypeField: script_type
\ No newline at end of file
+# scriptTypeField: script_type
diff --git a/src/main/resources/db.sql b/src/main/resources/db.sql
index 72b15dc..997fd38 100644
--- a/src/main/resources/db.sql
+++ b/src/main/resources/db.sql
@@ -34,4 +34,29 @@ INSERT INTO `script`(`id`, `application_name`, `script_id`, `script_name`, `scri
INSERT INTO `script`(`id`, `application_name`, `script_id`, `script_name`, `script_data`, `script_type`) VALUES (8, 'demo', 's8', 'costCenter02', 'def costCenter02Code = \"P350401026\"\r\ncostCenterContext.setCode(costCenter02Code)\r\n\r\ndef costCenter02Name = \"商品车物流部利润中心\"\r\ncostCenterContext.setName(costCenter02Name)\r\n\r\ncostCenterContext.setGenerateCode(costCenter02Code + costCenter02Name)', 'script');
INSERT INTO `script`(`id`, `application_name`, `script_id`, `script_name`, `script_data`, `script_type`) VALUES (9, 'demo', 's9', 'sout', 'def defaultName = \"无匹配项\"\r\ncostCenterContext.setGenerateCode(defaultName)', 'script');
+CREATE TABLE `base_data` (
+ `id` varchar(255) NOT NULL,
+ `type` varchar(30) NULL,
+ `content` text NULL,
+ `content_type` varchar(30) NULL,
+ PRIMARY KEY (`id`)
+);
+
+ALTER TABLE `base_data`
+ ADD COLUMN `content_name` varchar(30) NULL AFTER `content_type`;
+
+ALTER TABLE `base_data`
+ ADD COLUMN `attribution` varchar(30) NULL AFTER `type`;
+
+INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`, `content_name`) VALUES ('0927941726325838', 'sectionClassification', 'costCenter', '[银行科目, 预付科目, 预收科目]', 'List', 'sectionClassificationList');
+INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`, `content_name`) VALUES ('3927088550655742', 'businessCategory', 'costCenter', '[运输业务, 全货船业务, 进出岛仓干配]', 'List', 'businessCategoryList');
+INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`, `content_name`) VALUES ('5363457043311084', 'businessType', 'costCenter', '[货代, 船代, 散杂货]', 'List', 'businessTypeList');
+INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`, `content_name`) VALUES ('5587514507650183', 'salesman', 'costCenter', '[仓干配物流部(物流)]', 'List', 'salesmanList');
+INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`, `content_name`) VALUES ('7203685907622705', 'sectionClassification', 'costCenter', '[汇差, 手续费, 成本科目]', 'List','sectionClassificationList');
+INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`, `content_name`) VALUES ('3843512879501886', 'businessCategory', 'costCenter', '[全货船业务, 进出岛仓干配]', 'List', 'businessCategoryList');
+INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`, `content_name`) VALUES ('9047450688035130', 'businessType', 'costCenter', '[货代, 报关, 船代, 散杂货]', 'List', 'businessTypeList');
+INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`, `content_name`) VALUES ('2790513253702116', 'salesman', 'costCenter', '[仓干配物流部(物流)]', 'List', 'salesmanList');
+
+
+