From 51d3c5b57c0e8dc6c0ea324aff02b27801af8699 Mon Sep 17 00:00:00 2001 From: 75349 <753495441@qq.com> Date: Tue, 6 Dec 2022 15:55:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E6=AF=94=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=BB=8E=E6=95=B0=E6=8D=AE=E5=BA=93=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 35 +++++++++++++------ .../mysql/cmp/costCenter/CostCenter01Cmp.java | 33 ++++++++--------- .../mysql/cmp/costCenter/CostCenter02Cmp.java | 26 +++++++------- .../mysql/cmp/costCenter/CostCenterCmp.java | 29 +++++++++------ .../cmp/profitCenter/ProfitCenter01Cmp.java | 30 ++++++++-------- .../cmp/profitCenter/ProfitCenter02Cmp.java | 28 ++++++++------- .../cmp/profitCenter/ProfitCenterCmp.java | 33 +++++++++-------- .../liteflow/mysql/entity/BaseDataEntity.java | 26 ++++++++++++++ .../mysql/enums/BaseDataAttributionEnum.java | 19 ++++++++++ .../mysql/enums/BaseDataContentTypeEnum.java | 20 +++++++++++ .../mysql/enums/MathOperatorEnum.java | 2 +- .../liteflow/mysql/mapper/BaseDataMapper.java | 13 +++++++ .../mysql/service/BaseDataService.java | 12 +++++++ .../service/impl/BaseDataServiceImpl.java | 24 +++++++++++++ src/main/resources/application.yml | 7 +++- src/main/resources/db.sql | 25 +++++++++++++ 16 files changed, 267 insertions(+), 95 deletions(-) create mode 100644 src/main/java/com/example/liteflow/mysql/entity/BaseDataEntity.java create mode 100644 src/main/java/com/example/liteflow/mysql/enums/BaseDataAttributionEnum.java create mode 100644 src/main/java/com/example/liteflow/mysql/enums/BaseDataContentTypeEnum.java create mode 100644 src/main/java/com/example/liteflow/mysql/mapper/BaseDataMapper.java create mode 100644 src/main/java/com/example/liteflow/mysql/service/BaseDataService.java create mode 100644 src/main/java/com/example/liteflow/mysql/service/impl/BaseDataServiceImpl.java 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'); + + +