1.新增创建规则和链路方法
This commit is contained in:
parent
ed9b7789b8
commit
4e501863e3
5
pom.xml
5
pom.xml
|
@ -100,5 +100,10 @@
|
||||||
<version>3.22.0</version>
|
<version>3.22.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
|
@ -20,7 +20,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class LiteFlowCommand implements CommandLineRunner {
|
public class LiteFlowCommand {
|
||||||
|
|
||||||
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ public class LiteFlowCommand implements CommandLineRunner {
|
||||||
private final List<String> costCenterList = Lists.newArrayList("cost01AndCost02", "cost01", "cost02");
|
private final List<String> costCenterList = Lists.newArrayList("cost01AndCost02", "cost01", "cost02");
|
||||||
|
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void run(String... args) throws Exception {
|
public void run(String... args) throws Exception {
|
||||||
// 事实对象
|
// 事实对象
|
||||||
// CostCenter costCenter = new CostCenter();
|
// CostCenter costCenter = new CostCenter();
|
||||||
|
|
|
@ -13,6 +13,7 @@ import com.example.liteflow.mysql.enums.BaseDataAttributionEnum;
|
||||||
import com.example.liteflow.mysql.model.BaseCenter;
|
import com.example.liteflow.mysql.model.BaseCenter;
|
||||||
import com.example.liteflow.mysql.model.CostCenter;
|
import com.example.liteflow.mysql.model.CostCenter;
|
||||||
import com.example.liteflow.mysql.service.BaseDataService;
|
import com.example.liteflow.mysql.service.BaseDataService;
|
||||||
|
import com.example.liteflow.mysql.service.BaseRoleService;
|
||||||
import com.example.liteflow.mysql.util.ConditionParser;
|
import com.example.liteflow.mysql.util.ConditionParser;
|
||||||
import com.googlecode.aviator.AviatorEvaluator;
|
import com.googlecode.aviator.AviatorEvaluator;
|
||||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||||
|
@ -31,14 +32,18 @@ import java.lang.reflect.Field;
|
||||||
public class CostCenter01Cmp extends NodeIfComponent {
|
public class CostCenter01Cmp extends NodeIfComponent {
|
||||||
@Resource
|
@Resource
|
||||||
private BaseDataService baseDataService;
|
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 drool = "[{\"$or\": [{\"$and\": [{\"$contains\": [sectionClassification, sectionClassificationList]}, {\"$contains\": [businessType, businessTypeList]}, {\"$contains\": [salesman, salesmanList]}, {\"$contains\": [businessCategory, businessCategoryList]}]}]}]";
|
||||||
|
|
||||||
|
private static final String baseRoleName = "costCenter01Cmp";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean processIf() throws Exception {
|
public boolean processIf() throws Exception {
|
||||||
BaseCenter requestData = this.getRequestData();
|
BaseCenter requestData = this.getRequestData();
|
||||||
log.info("requestData = {}", JSONUtil.toJsonStr(requestData));
|
log.info("requestData = {}", JSONUtil.toJsonStr(requestData));
|
||||||
String droolStr = drool;
|
String droolStr = baseRoleService.getByName(baseRoleName);
|
||||||
|
log.info("droolStr = {}", droolStr);
|
||||||
Field[] fields = ReflectUtil.getFields(BaseCenter.class);
|
Field[] fields = ReflectUtil.getFields(BaseCenter.class);
|
||||||
for (Field field : fields) {
|
for (Field field : fields) {
|
||||||
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
|
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
|
||||||
|
@ -49,7 +54,11 @@ public class CostCenter01Cmp extends NodeIfComponent {
|
||||||
String contentName = baseDataEntity.getContentName();
|
String contentName = baseDataEntity.getContentName();
|
||||||
droolStr = StrUtil.replace(droolStr, contentName, content, false);
|
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);
|
log.info("after - droolStr = {}", droolStr);
|
||||||
|
|
|
@ -12,6 +12,7 @@ import com.example.liteflow.mysql.enums.BaseDataAttributionEnum;
|
||||||
import com.example.liteflow.mysql.model.BaseCenter;
|
import com.example.liteflow.mysql.model.BaseCenter;
|
||||||
import com.example.liteflow.mysql.model.CostCenter;
|
import com.example.liteflow.mysql.model.CostCenter;
|
||||||
import com.example.liteflow.mysql.service.BaseDataService;
|
import com.example.liteflow.mysql.service.BaseDataService;
|
||||||
|
import com.example.liteflow.mysql.service.BaseRoleService;
|
||||||
import com.example.liteflow.mysql.util.ConditionParser;
|
import com.example.liteflow.mysql.util.ConditionParser;
|
||||||
import com.googlecode.aviator.AviatorEvaluator;
|
import com.googlecode.aviator.AviatorEvaluator;
|
||||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||||
|
@ -37,10 +38,15 @@ public class CostCenter02Cmp extends NodeIfComponent {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private BaseDataService baseDataService;
|
private BaseDataService baseDataService;
|
||||||
|
@Resource
|
||||||
|
private BaseRoleService baseRoleService;
|
||||||
|
private static final String baseRoleName = "costCenter02Cmp";
|
||||||
@Override
|
@Override
|
||||||
public boolean processIf() throws Exception {
|
public boolean processIf() throws Exception {
|
||||||
BaseCenter requestData = this.getRequestData();
|
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);
|
Field[] fields = ReflectUtil.getFields(BaseCenter.class);
|
||||||
for (Field field : fields) {
|
for (Field field : fields) {
|
||||||
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
|
Object fieldValue = ReflectUtil.getFieldValue(requestData, field);
|
||||||
|
|
|
@ -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<Role> roles = roleForm.getRoles();
|
||||||
|
// List<Map<String, Object>> collect = roles.stream().map(RoleUtil::parseRole).collect(Collectors.toList());
|
||||||
|
// System.out.println(JSONUtil.toJsonStr(collect));
|
||||||
|
// flowExecutor.reloadRule();
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<Role> roles = roleForm.getRoles();
|
|
||||||
List<Map<String, Object>> collect = roles.stream().map(RoleUtil::parseRole).collect(Collectors.toList());
|
|
||||||
System.out.println(JSONUtil.toJsonStr(collect));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
|
@ -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<BaseRoleEntity> {
|
||||||
|
}
|
|
@ -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<ChainEntity> {
|
||||||
|
}
|
|
@ -10,5 +10,6 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class RoleForm {
|
public class RoleForm {
|
||||||
|
private String roleName;
|
||||||
private List<Role> roles;
|
private List<Role> roles;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
|
||||||
|
}
|
|
@ -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<BaseRoleMapper, BaseRoleEntity> implements BaseRoleService {
|
||||||
|
@Override
|
||||||
|
public void createRole(RoleForm roleForm) {
|
||||||
|
List<Role> roles = roleForm.getRoles();
|
||||||
|
String roleName = roleForm.getRoleName();
|
||||||
|
|
||||||
|
LambdaQueryWrapper<BaseRoleEntity> 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<BaseRoleEntity> 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<Role> roles = JSONUtil.toList(JSONUtil.parseArray(roleStr), Role.class);
|
||||||
|
List<Map<String, Object>> collect = roles.stream().map(RoleUtil::parseRole).collect(Collectors.toList());
|
||||||
|
return JSONUtil.toJsonStr(collect);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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<ChainMapper, ChainEntity> implements ChainService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private FlowExecutor flowExecutor;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createChain(ChainEntity chainEntity) {
|
||||||
|
this.save(chainEntity);
|
||||||
|
flowExecutor.reloadRule();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void executeChain(String chainName) {
|
||||||
|
List<BaseCenter> 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<BaseCenter> generateCostCenterTestData() {
|
||||||
|
List<BaseCenter> 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,13 +1,19 @@
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.example.liteflow.mysql.LiteflowMysqlApplication;
|
||||||
import com.example.liteflow.mysql.enums.MathOperatorEnum;
|
import com.example.liteflow.mysql.enums.MathOperatorEnum;
|
||||||
import com.example.liteflow.mysql.model.role.Match;
|
import com.example.liteflow.mysql.model.role.Match;
|
||||||
import com.example.liteflow.mysql.model.role.Role;
|
import com.example.liteflow.mysql.model.role.Role;
|
||||||
import com.example.liteflow.mysql.model.role.RoleForm;
|
import com.example.liteflow.mysql.model.role.RoleForm;
|
||||||
|
import com.example.liteflow.mysql.service.BaseRoleService;
|
||||||
import org.assertj.core.util.Lists;
|
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.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -18,8 +24,12 @@ import java.util.stream.Collectors;
|
||||||
* @author: 陈韦龙
|
* @author: 陈韦龙
|
||||||
* @date: 2022年12月07日 16:26
|
* @date: 2022年12月07日 16:26
|
||||||
*/
|
*/
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest(classes = LiteflowMysqlApplication.class)
|
||||||
public class MyTest {
|
public class MyTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private BaseRoleService baseRoleService;
|
||||||
@Test
|
@Test
|
||||||
public void test01() {
|
public void test01() {
|
||||||
List<Role> roles = new ArrayList<>();
|
List<Role> roles = new ArrayList<>();
|
||||||
|
@ -205,6 +215,104 @@ public class MyTest {
|
||||||
List<? extends Map<String, ?>> collect = roles.stream().map(this::parseRole).collect(Collectors.toList());
|
List<? extends Map<String, ?>> collect = roles.stream().map(this::parseRole).collect(Collectors.toList());
|
||||||
System.out.println(JSONUtil.toJsonStr(collect));
|
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<Match> 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<Role> children = Lists.newArrayList(child);
|
||||||
|
role.setChildren(children);
|
||||||
|
|
||||||
|
List<Role> roles = Lists.newArrayList(role);
|
||||||
|
RoleForm roleForm = new RoleForm();
|
||||||
|
roleForm.setRoles(roles);
|
||||||
|
roleForm.setRoleName("costCenter01Cmp");
|
||||||
|
baseRoleService.createRole(roleForm);
|
||||||
|
// System.out.println(JSONUtil.toJsonStr(roles));
|
||||||
|
// List<? extends Map<String, ?>> 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<Match> 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<Role> sunList = Lists.newArrayList(sun);
|
||||||
|
child.setChildren(sunList);
|
||||||
|
List<Role> children = Lists.newArrayList(child);
|
||||||
|
role.setChildren(children);
|
||||||
|
|
||||||
|
|
||||||
|
List<Match> 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<Role> 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<? extends Map<String, ?>> collect = roles.stream().map(this::parseRole).collect(Collectors.toList());
|
||||||
|
System.out.println(JSONUtil.toJsonStr(collect));
|
||||||
|
}
|
||||||
private Map<String, Object> parseRole(Role role) {
|
private Map<String, Object> parseRole(Role role) {
|
||||||
List<Match> matchList = role.getMatches();
|
List<Match> matchList = role.getMatches();
|
||||||
List<Role> roleChildren = role.getChildren();
|
List<Role> roleChildren = role.getChildren();
|
||||||
|
|
Loading…
Reference in New Issue