From 4e501863e31d9a56da9b31da84bc089c9323a002 Mon Sep 17 00:00:00 2001 From: 75349 <753495441@qq.com> Date: Thu, 8 Dec 2022 18:40:30 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E5=88=9B=E5=BB=BA=E8=A7=84?= =?UTF-8?q?=E5=88=99=E5=92=8C=E9=93=BE=E8=B7=AF=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../liteflow/mysql/LiteFlowCommand.java | 4 +- .../mysql/cmp/costCenter/CostCenter01Cmp.java | 15 ++- .../mysql/cmp/costCenter/CostCenter02Cmp.java | 8 +- .../mysql/controller/BaseRoleController.java | 43 +++++++ .../mysql/controller/ChainController.java | 31 +++++ .../controller/SubmitRoleController.java | 31 ----- .../liteflow/mysql/entity/BaseRoleEntity.java | 22 ++++ .../liteflow/mysql/entity/ChainEntity.java | 30 +++++ .../liteflow/mysql/mapper/BaseRoleMapper.java | 13 ++ .../liteflow/mysql/mapper/ChainMapper.java | 13 ++ .../liteflow/mysql/model/role/RoleForm.java | 1 + .../mysql/service/BaseRoleService.java | 13 ++ .../liteflow/mysql/service/ChainService.java | 14 +++ .../service/impl/BaseRoleServiceImpl.java | 63 ++++++++++ .../mysql/service/impl/ChainServiceImpl.java | 85 +++++++++++++ src/test/java/MyTest.java | 112 +++++++++++++++++- 17 files changed, 464 insertions(+), 39 deletions(-) create mode 100644 src/main/java/com/example/liteflow/mysql/controller/BaseRoleController.java create mode 100644 src/main/java/com/example/liteflow/mysql/controller/ChainController.java delete mode 100644 src/main/java/com/example/liteflow/mysql/controller/SubmitRoleController.java create mode 100644 src/main/java/com/example/liteflow/mysql/entity/BaseRoleEntity.java create mode 100644 src/main/java/com/example/liteflow/mysql/entity/ChainEntity.java create mode 100644 src/main/java/com/example/liteflow/mysql/mapper/BaseRoleMapper.java create mode 100644 src/main/java/com/example/liteflow/mysql/mapper/ChainMapper.java create mode 100644 src/main/java/com/example/liteflow/mysql/service/BaseRoleService.java create mode 100644 src/main/java/com/example/liteflow/mysql/service/ChainService.java create mode 100644 src/main/java/com/example/liteflow/mysql/service/impl/BaseRoleServiceImpl.java create mode 100644 src/main/java/com/example/liteflow/mysql/service/impl/ChainServiceImpl.java diff --git a/pom.xml b/pom.xml index ee1e783..cb577fb 100644 --- a/pom.xml +++ b/pom.xml @@ -100,5 +100,10 @@ 3.22.0 compile + + junit + junit + test + \ No newline at end of file diff --git a/src/main/java/com/example/liteflow/mysql/LiteFlowCommand.java b/src/main/java/com/example/liteflow/mysql/LiteFlowCommand.java index 555a4f7..cda97e2 100644 --- a/src/main/java/com/example/liteflow/mysql/LiteFlowCommand.java +++ b/src/main/java/com/example/liteflow/mysql/LiteFlowCommand.java @@ -20,7 +20,7 @@ import java.util.ArrayList; import java.util.List; @Component -public class LiteFlowCommand implements CommandLineRunner { +public class LiteFlowCommand { private final Logger log = LoggerFactory.getLogger(this.getClass()); @@ -32,7 +32,7 @@ public class LiteFlowCommand implements CommandLineRunner { private final List costCenterList = Lists.newArrayList("cost01AndCost02", "cost01", "cost02"); - @Override +// @Override public void run(String... args) throws Exception { // 事实对象 // CostCenter costCenter = new CostCenter(); 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 20f5e81..1c48dc0 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 @@ -13,6 +13,7 @@ import com.example.liteflow.mysql.enums.BaseDataAttributionEnum; import com.example.liteflow.mysql.model.BaseCenter; import com.example.liteflow.mysql.model.CostCenter; import com.example.liteflow.mysql.service.BaseDataService; +import com.example.liteflow.mysql.service.BaseRoleService; import com.example.liteflow.mysql.util.ConditionParser; import com.googlecode.aviator.AviatorEvaluator; import com.yomahub.liteflow.annotation.LiteflowComponent; @@ -31,14 +32,18 @@ import java.lang.reflect.Field; public class CostCenter01Cmp extends NodeIfComponent { @Resource private BaseDataService baseDataService; - + @Resource + private BaseRoleService baseRoleService; private static final String drool = "[{\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [businessType, businessTypeList]}, {\"$contains\": [salesman, salesmanList]}, {\"$contains\": [businessCategory, businessCategoryList]}]}]}]"; + private static final String baseRoleName = "costCenter01Cmp"; + @Override public boolean processIf() throws Exception { BaseCenter requestData = this.getRequestData(); log.info("requestData = {}", JSONUtil.toJsonStr(requestData)); - String droolStr = drool; + String droolStr = baseRoleService.getByName(baseRoleName); + log.info("droolStr = {}", droolStr); Field[] fields = ReflectUtil.getFields(BaseCenter.class); for (Field field : fields) { Object fieldValue = ReflectUtil.getFieldValue(requestData, field); @@ -49,7 +54,11 @@ public class CostCenter01Cmp extends NodeIfComponent { String contentName = baseDataEntity.getContentName(); droolStr = StrUtil.replace(droolStr, contentName, content, false); } - droolStr = StrUtil.replace(droolStr, name, "\"" + fieldValue + "\"", false); + String filedValueStr = ""; + if (ObjectUtil.isNotNull(fieldValue)) { + filedValueStr = fieldValue.toString(); + } + droolStr = StrUtil.replace(droolStr, name, filedValueStr, false); } log.info("after - droolStr = {}", droolStr); 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 6d163cd..1cf97cc 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 @@ -12,6 +12,7 @@ import com.example.liteflow.mysql.enums.BaseDataAttributionEnum; import com.example.liteflow.mysql.model.BaseCenter; import com.example.liteflow.mysql.model.CostCenter; import com.example.liteflow.mysql.service.BaseDataService; +import com.example.liteflow.mysql.service.BaseRoleService; import com.example.liteflow.mysql.util.ConditionParser; import com.googlecode.aviator.AviatorEvaluator; import com.yomahub.liteflow.annotation.LiteflowComponent; @@ -37,10 +38,15 @@ public class CostCenter02Cmp extends NodeIfComponent { @Resource private BaseDataService baseDataService; + @Resource + private BaseRoleService baseRoleService; + private static final String baseRoleName = "costCenter02Cmp"; @Override public boolean processIf() throws Exception { BaseCenter requestData = this.getRequestData(); - String droolStr = drool; + String droolStr = baseRoleService.getByName(baseRoleName); + log.info("droolStr = {}", droolStr); + log.info("CostCenter02Cmp-droolStr = {}", droolStr); Field[] fields = ReflectUtil.getFields(BaseCenter.class); for (Field field : fields) { Object fieldValue = ReflectUtil.getFieldValue(requestData, field); diff --git a/src/main/java/com/example/liteflow/mysql/controller/BaseRoleController.java b/src/main/java/com/example/liteflow/mysql/controller/BaseRoleController.java new file mode 100644 index 0000000..a611b80 --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/controller/BaseRoleController.java @@ -0,0 +1,43 @@ +package com.example.liteflow.mysql.controller; + +import cn.hutool.json.JSONUtil; +import com.example.liteflow.mysql.model.role.Role; +import com.example.liteflow.mysql.model.role.RoleForm; +import com.example.liteflow.mysql.service.BaseRoleService; +import com.example.liteflow.mysql.util.RoleUtil; +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.enums.FlowParserTypeEnum; +import com.yomahub.liteflow.flow.FlowBus; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author: 陈韦龙 + * @date: 2022年12月07日 10:36 + */ +@Slf4j +@RestController +@RequestMapping("/baseRole") +public class BaseRoleController { + + @Resource + private BaseRoleService baseRoleService; + @Resource + private FlowExecutor flowExecutor; + @PostMapping("/createRole") + public void createRole(@RequestBody RoleForm roleForm) { + baseRoleService.createRole(roleForm); +// List roles = roleForm.getRoles(); +// List> collect = roles.stream().map(RoleUtil::parseRole).collect(Collectors.toList()); +// System.out.println(JSONUtil.toJsonStr(collect)); +// flowExecutor.reloadRule(); + } +} diff --git a/src/main/java/com/example/liteflow/mysql/controller/ChainController.java b/src/main/java/com/example/liteflow/mysql/controller/ChainController.java new file mode 100644 index 0000000..f01e897 --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/controller/ChainController.java @@ -0,0 +1,31 @@ +package com.example.liteflow.mysql.controller; + +import com.example.liteflow.mysql.entity.ChainEntity; +import com.example.liteflow.mysql.model.role.RoleForm; +import com.example.liteflow.mysql.service.ChainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author: 陈韦龙 + * @date: 2022年12月08日 18:31 + */ +@Slf4j +@RestController +@RequestMapping("/chain") +public class ChainController { + + @Resource + private ChainService chainService; + @PostMapping("/createChain") + public void createChain(@RequestBody ChainEntity chainEntity) { + chainService.createChain(chainEntity); + } + + @GetMapping("/executeChain/{chainName}") + public void executeChain(@PathVariable("chainName") String chainName) { + chainService.executeChain(chainName); + } +} diff --git a/src/main/java/com/example/liteflow/mysql/controller/SubmitRoleController.java b/src/main/java/com/example/liteflow/mysql/controller/SubmitRoleController.java deleted file mode 100644 index 39a6875..0000000 --- a/src/main/java/com/example/liteflow/mysql/controller/SubmitRoleController.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.example.liteflow.mysql.controller; - -import cn.hutool.json.JSONUtil; -import com.example.liteflow.mysql.model.role.Role; -import com.example.liteflow.mysql.model.role.RoleForm; -import com.example.liteflow.mysql.util.RoleUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author: 陈韦龙 - * @date: 2022年12月07日 10:36 - */ -@Slf4j -@RestController -@RequestMapping("/submitRole") -public class SubmitRoleController { - @PostMapping - public void orderTicket(@RequestBody RoleForm roleForm) { - List roles = roleForm.getRoles(); - List> collect = roles.stream().map(RoleUtil::parseRole).collect(Collectors.toList()); - System.out.println(JSONUtil.toJsonStr(collect)); - } -} diff --git a/src/main/java/com/example/liteflow/mysql/entity/BaseRoleEntity.java b/src/main/java/com/example/liteflow/mysql/entity/BaseRoleEntity.java new file mode 100644 index 0000000..dd3fdff --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/entity/BaseRoleEntity.java @@ -0,0 +1,22 @@ +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 com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @author: 陈韦龙 + * @date: 2022年12月06日 09:59 + */ +@TableName("base_role") +@Data +public class BaseRoleEntity { + @TableId(value = "ID", type = IdType.ASSIGN_UUID) + private String id; + @TableField("role_str") + private String roleStr; + @TableField("role_name") + private String roleName; +} diff --git a/src/main/java/com/example/liteflow/mysql/entity/ChainEntity.java b/src/main/java/com/example/liteflow/mysql/entity/ChainEntity.java new file mode 100644 index 0000000..699eefe --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/entity/ChainEntity.java @@ -0,0 +1,30 @@ +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 com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author: 陈韦龙 + * @date: 2022年12月06日 09:59 + */ +@TableName("chain") +@Data +public class ChainEntity { + @TableId(value = "ID", type = IdType.AUTO) + private String id; + @TableField("application_name") + private String applicationName; + @TableField("chain_name") + private String chainName; + @TableField("chain_desc") + private String chainDesc; + @TableField("el_data") + private String elData; + @TableField("create_time") + private LocalDateTime createTime = LocalDateTime.now(); +} diff --git a/src/main/java/com/example/liteflow/mysql/mapper/BaseRoleMapper.java b/src/main/java/com/example/liteflow/mysql/mapper/BaseRoleMapper.java new file mode 100644 index 0000000..e6677a4 --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/mapper/BaseRoleMapper.java @@ -0,0 +1,13 @@ +package com.example.liteflow.mysql.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.liteflow.mysql.entity.BaseRoleEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author: 陈韦龙 + * @date: 2022年12月06日 10:08 + */ +@Mapper +public interface BaseRoleMapper extends BaseMapper { +} diff --git a/src/main/java/com/example/liteflow/mysql/mapper/ChainMapper.java b/src/main/java/com/example/liteflow/mysql/mapper/ChainMapper.java new file mode 100644 index 0000000..fdc55d6 --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/mapper/ChainMapper.java @@ -0,0 +1,13 @@ +package com.example.liteflow.mysql.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.liteflow.mysql.entity.ChainEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author: 陈韦龙 + * @date: 2022年12月06日 10:08 + */ +@Mapper +public interface ChainMapper extends BaseMapper { +} diff --git a/src/main/java/com/example/liteflow/mysql/model/role/RoleForm.java b/src/main/java/com/example/liteflow/mysql/model/role/RoleForm.java index f32c3c2..25a257c 100644 --- a/src/main/java/com/example/liteflow/mysql/model/role/RoleForm.java +++ b/src/main/java/com/example/liteflow/mysql/model/role/RoleForm.java @@ -10,5 +10,6 @@ import java.util.List; */ @Data public class RoleForm { + private String roleName; private List roles; } diff --git a/src/main/java/com/example/liteflow/mysql/service/BaseRoleService.java b/src/main/java/com/example/liteflow/mysql/service/BaseRoleService.java new file mode 100644 index 0000000..4c92926 --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/service/BaseRoleService.java @@ -0,0 +1,13 @@ +package com.example.liteflow.mysql.service; + +import com.example.liteflow.mysql.model.role.RoleForm; + +/** + * @author: 陈韦龙 + * @date: 2022年12月08日 16:09 + */ +public interface BaseRoleService { + void createRole(RoleForm roleForm); + + String getByName(String roleName); +} diff --git a/src/main/java/com/example/liteflow/mysql/service/ChainService.java b/src/main/java/com/example/liteflow/mysql/service/ChainService.java new file mode 100644 index 0000000..d8997b4 --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/service/ChainService.java @@ -0,0 +1,14 @@ +package com.example.liteflow.mysql.service; + +import com.example.liteflow.mysql.entity.ChainEntity; + +/** + * @author: 陈韦龙 + * @date: 2022年12月08日 18:23 + */ +public interface ChainService { + void createChain(ChainEntity chainEntity); + + void executeChain(String chainName); + +} diff --git a/src/main/java/com/example/liteflow/mysql/service/impl/BaseRoleServiceImpl.java b/src/main/java/com/example/liteflow/mysql/service/impl/BaseRoleServiceImpl.java new file mode 100644 index 0000000..f1df58e --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/service/impl/BaseRoleServiceImpl.java @@ -0,0 +1,63 @@ +package com.example.liteflow.mysql.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.example.liteflow.mysql.entity.BaseRoleEntity; +import com.example.liteflow.mysql.mapper.BaseRoleMapper; +import com.example.liteflow.mysql.model.role.Role; +import com.example.liteflow.mysql.model.role.RoleForm; +import com.example.liteflow.mysql.service.BaseRoleService; +import com.example.liteflow.mysql.util.RoleUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author: 陈韦龙 + * @date: 2022年12月08日 16:09 + */ +@Slf4j +@Service +public class BaseRoleServiceImpl extends ServiceImpl implements BaseRoleService { + @Override + public void createRole(RoleForm roleForm) { + List roles = roleForm.getRoles(); + String roleName = roleForm.getRoleName(); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BaseRoleEntity::getRoleName, roleName); + BaseRoleEntity baseRoleEntity = this.getOne(queryWrapper); + if(ObjectUtil.isNull(baseRoleEntity)) { + baseRoleEntity = new BaseRoleEntity(); + baseRoleEntity.setRoleStr(JSONUtil.toJsonStr(roles)); + baseRoleEntity.setRoleName(JSONUtil.toJsonStr(roleName)); + this.save(baseRoleEntity); + } else { + baseRoleEntity.setRoleStr(JSONUtil.toJsonStr(roles)); + this.updateById(baseRoleEntity); + } + } + + @Override + public String getByName(String roleName) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BaseRoleEntity::getRoleName, roleName); + BaseRoleEntity baseRoleEntity = this.getOne(queryWrapper); + String roleStr = baseRoleEntity.getRoleStr(); + log.info("roleStr = {}", roleStr); +// JSONObject jsonObject = JSONUtil.parseObj(roleStr); + List roles = JSONUtil.toList(JSONUtil.parseArray(roleStr), Role.class); + List> collect = roles.stream().map(RoleUtil::parseRole).collect(Collectors.toList()); + return JSONUtil.toJsonStr(collect); + } + + + +} diff --git a/src/main/java/com/example/liteflow/mysql/service/impl/ChainServiceImpl.java b/src/main/java/com/example/liteflow/mysql/service/impl/ChainServiceImpl.java new file mode 100644 index 0000000..646393c --- /dev/null +++ b/src/main/java/com/example/liteflow/mysql/service/impl/ChainServiceImpl.java @@ -0,0 +1,85 @@ +package com.example.liteflow.mysql.service.impl; + +import cn.hutool.core.util.RandomUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.example.liteflow.mysql.entity.ChainEntity; +import com.example.liteflow.mysql.mapper.ChainMapper; +import com.example.liteflow.mysql.model.BaseCenter; +import com.example.liteflow.mysql.model.CostCenter; +import com.example.liteflow.mysql.model.ProfitCenter; +import com.example.liteflow.mysql.service.ChainService; +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.LiteflowResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @author: 陈韦龙 + * @date: 2022年12月08日 18:23 + */ +@Service +@Slf4j +public class ChainServiceImpl extends ServiceImpl implements ChainService { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void createChain(ChainEntity chainEntity) { + this.save(chainEntity); + flowExecutor.reloadRule(); + } + + @Override + public void executeChain(String chainName) { + List list = this.generateCostCenterTestData(); + log.info("before-list = {}", JSONUtil.toJsonStr(list)); + list.forEach(item -> { + LiteflowResponse response = flowExecutor.execute2Resp(chainName, item); + if (response.isSuccess()) { + log.info("执行成功"); + } else { + log.info("执行失败"); + } + }); + log.info("after-list = {}", JSONUtil.toJsonStr(list)); + } + + private List generateCostCenterTestData() { + List list = new ArrayList<>(); + CostCenter costCenter = new CostCenter(); + costCenter.setSectionClassification("成本科目"); + costCenter.setBusinessType("货代"); + costCenter.setSalesman("仓干配物流部(物流)"); + costCenter.setBusinessCategory("全货船业务"); + list.add(costCenter); + + costCenter = new CostCenter(); + costCenter.setBusinessType("货代"); + costCenter.setSalesman("仓干配物流部(物流)"); + list.add(costCenter); + + costCenter = new CostCenter(); + costCenter.setBusinessType("货代"); + list.add(costCenter); + + ProfitCenter profitCenter = new ProfitCenter(); + profitCenter.setSectionClassification("银行科目"); + profitCenter.setBusinessType("货代"); + profitCenter.setSalesman("商品车物流部(物流)"); + profitCenter.setBusinessCategory("运输业务"); + list.add(profitCenter); + + profitCenter = new ProfitCenter(); + profitCenter.setBusinessType("货代"); + profitCenter.setSalesman("商品车物流部(物流)"); + list.add(profitCenter); + + return list; + } +} diff --git a/src/test/java/MyTest.java b/src/test/java/MyTest.java index fe8449e..4d533e5 100644 --- a/src/test/java/MyTest.java +++ b/src/test/java/MyTest.java @@ -1,13 +1,19 @@ import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; +import com.example.liteflow.mysql.LiteflowMysqlApplication; import com.example.liteflow.mysql.enums.MathOperatorEnum; import com.example.liteflow.mysql.model.role.Match; import com.example.liteflow.mysql.model.role.Role; import com.example.liteflow.mysql.model.role.RoleForm; +import com.example.liteflow.mysql.service.BaseRoleService; import org.assertj.core.util.Lists; -import org.junit.jupiter.api.Test; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -18,8 +24,12 @@ import java.util.stream.Collectors; * @author: 陈韦龙 * @date: 2022年12月07日 16:26 */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = LiteflowMysqlApplication.class) public class MyTest { + @Resource + private BaseRoleService baseRoleService; @Test public void test01() { List roles = new ArrayList<>(); @@ -205,6 +215,104 @@ public class MyTest { List> collect = roles.stream().map(this::parseRole).collect(Collectors.toList()); System.out.println(JSONUtil.toJsonStr(collect)); } + + + @Test + public void test7() { + Role role = new Role(); + role.setLogicOperators(MathOperatorEnum.or.getOperator()); + + Role child = new Role(); + child.setLogicOperators(MathOperatorEnum.and.getOperator()); + List matches = new ArrayList<>(); + Match match = new Match(); + match.setConditionalOperators(MathOperatorEnum.contains.getOperator()); + match.setMatchingValue("sectionClassification"); + match.setMatchingContent("sectionClassificationList"); + matches.add(match); + + match = new Match(); + match.setConditionalOperators(MathOperatorEnum.contains.getOperator()); + match.setMatchingValue("businessType"); + match.setMatchingContent("businessTypeList"); + matches.add(match); + + match = new Match(); + match.setConditionalOperators(MathOperatorEnum.contains.getOperator()); + match.setMatchingValue("salesman"); + match.setMatchingContent("salesmanList"); + matches.add(match); + + match = new Match(); + match.setConditionalOperators(MathOperatorEnum.contains.getOperator()); + match.setMatchingValue("businessCategory"); + match.setMatchingContent("businessCategoryList"); + matches.add(match); + + child.setMatches(matches); + List children = Lists.newArrayList(child); + role.setChildren(children); + + List roles = Lists.newArrayList(role); + RoleForm roleForm = new RoleForm(); + roleForm.setRoles(roles); + roleForm.setRoleName("costCenter01Cmp"); + baseRoleService.createRole(roleForm); +// System.out.println(JSONUtil.toJsonStr(roles)); +// List> collect = roles.stream().map(this::parseRole).collect(Collectors.toList()); +// System.out.println(JSONUtil.toJsonStr(collect)); + } + + @Test + public void test8() { + Role role = new Role(); + role.setLogicOperators(MathOperatorEnum.or.getOperator()); + + Role child = new Role(); + child.setLogicOperators(MathOperatorEnum.or.getOperator()); + + Role sun = new Role(); + sun.setLogicOperators(MathOperatorEnum.and.getOperator()); + List matches = new ArrayList<>(); + Match match = new Match(); + match.setConditionalOperators(MathOperatorEnum.contains.getOperator()); + match.setMatchingValue("sectionClassification"); + match.setMatchingContent("sectionClassificationList"); + matches.add(match); + + match = new Match(); + match.setConditionalOperators(MathOperatorEnum.contains.getOperator()); + match.setMatchingValue("salesman"); + match.setMatchingContent("salesmanList"); + matches.add(match); + + sun.setMatches(matches); + List sunList = Lists.newArrayList(sun); + child.setChildren(sunList); + List children = Lists.newArrayList(child); + role.setChildren(children); + + + List matches2 = new ArrayList<>(); + Match match2 = new Match(); + match2 = new Match(); + match2.setConditionalOperators(MathOperatorEnum.contains.getOperator()); + match2.setMatchingValue("businessType"); + match2.setMatchingContent("businessTypeList"); + matches2.add(match2); + Role role2 = new Role(); + role2.setLogicOperators(MathOperatorEnum.or.getOperator()); + role2.setMatches(matches2); + + List roles = Lists.newArrayList(role, role2); + RoleForm roleForm = new RoleForm(); + roleForm.setRoles(roles); + roleForm.setRoleName("costCenter02Cmp"); + baseRoleService.createRole(roleForm); + System.out.println(JSONUtil.toJsonStr(roles)); + List> collect = roles.stream().map(this::parseRole).collect(Collectors.toList()); + System.out.println(JSONUtil.toJsonStr(collect)); + } private Map parseRole(Role role) { List matchList = role.getMatches(); List roleChildren = role.getChildren();