parent
9f17c168ca
commit
30d011c74f
|
@ -0,0 +1,50 @@
|
||||||
|
package com.example.liteflow.mysql.bean;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.example.liteflow.mysql.entity.DynamicScriptEntity;
|
||||||
|
import com.example.liteflow.mysql.enums.NodeEnum;
|
||||||
|
import com.example.liteflow.mysql.service.DynamicScriptService;
|
||||||
|
import com.yomahub.liteflow.builder.LiteFlowNodeBuilder;
|
||||||
|
import com.yomahub.liteflow.flow.FlowBus;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.boot.CommandLineRunner;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 陈韦龙
|
||||||
|
* @date: 2022年12月12日 17:21
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class AviatorEvaluatorRunner implements CommandLineRunner {
|
||||||
|
@Resource
|
||||||
|
private DynamicScriptService dynamicScriptService;
|
||||||
|
@Override
|
||||||
|
public void run(String... args) throws Exception {
|
||||||
|
List<DynamicScriptEntity> list = dynamicScriptService.list();
|
||||||
|
log.info("AviatorEvaluatorRunner-list = {}", list.size());
|
||||||
|
list.forEach(item -> {
|
||||||
|
String scriptId = item.getScriptId();
|
||||||
|
boolean containNode = FlowBus.containNode(scriptId);
|
||||||
|
if (!containNode) {
|
||||||
|
String scriptName = item.getScriptName();
|
||||||
|
String scriptClass = item.getScriptClass();
|
||||||
|
String nodeType = item.getNodeType();
|
||||||
|
if (NodeEnum.CommonNode.getName().equals(nodeType)) {
|
||||||
|
LiteFlowNodeBuilder.createCommonNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(scriptClass)
|
||||||
|
.build();
|
||||||
|
} else if (NodeEnum.IfNode.getName().equals(nodeType)) {
|
||||||
|
LiteFlowNodeBuilder.createIfNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(scriptClass)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package com.example.liteflow.mysql.controller;
|
||||||
|
|
||||||
|
import com.example.liteflow.mysql.model.dynamicScript.CreateDynamicScriptFrom;
|
||||||
|
import com.example.liteflow.mysql.service.DynamicScriptService;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 陈韦龙
|
||||||
|
* @date: 2022年12月12日 15:51
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/dynamicScript")
|
||||||
|
public class DynamicScriptController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DynamicScriptService dynamicScriptService;
|
||||||
|
|
||||||
|
@PostMapping("/createCostCenterNode")
|
||||||
|
public void createCostCenterNode(@RequestBody CreateDynamicScriptFrom createDynamicScriptFrom) {
|
||||||
|
dynamicScriptService.createCostCenterNode(createDynamicScriptFrom);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/createCostCenterIfNode")
|
||||||
|
public void createCostCenterIfNode(@RequestBody CreateDynamicScriptFrom createDynamicScriptFrom) {
|
||||||
|
dynamicScriptService.createCostCenterIfNode(createDynamicScriptFrom);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/createProfitCenterNode")
|
||||||
|
public void createProfitCenterNode(@RequestBody CreateDynamicScriptFrom createDynamicScriptFrom) {
|
||||||
|
dynamicScriptService.createProfitCenterNode(createDynamicScriptFrom);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/createProfitCenterIfNode")
|
||||||
|
public void createProfitCenterIfNode(@RequestBody CreateDynamicScriptFrom createDynamicScriptFrom) {
|
||||||
|
dynamicScriptService.createProfitCenterIfNode(createDynamicScriptFrom);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @TableName dynamic_script
|
||||||
|
*/
|
||||||
|
@TableName("dynamic_script")
|
||||||
|
@Data
|
||||||
|
public class DynamicScriptEntity {
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@TableId(value = "ID", type = IdType.ASSIGN_ID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 脚本Id
|
||||||
|
*/
|
||||||
|
@TableField("script_id")
|
||||||
|
private String scriptId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 脚本名称
|
||||||
|
*/
|
||||||
|
@TableField("script_name")
|
||||||
|
private String scriptName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 脚本对应类名
|
||||||
|
*/
|
||||||
|
@TableField("script_class")
|
||||||
|
private String scriptClass;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 脚本对应节点类型
|
||||||
|
*/
|
||||||
|
@TableField("node_type")
|
||||||
|
private String nodeType;
|
||||||
|
/**
|
||||||
|
* 脚本规则
|
||||||
|
*/
|
||||||
|
@TableField("script_role")
|
||||||
|
private String scriptRole;
|
||||||
|
/**
|
||||||
|
* 脚本内容
|
||||||
|
*/
|
||||||
|
@TableField("script_content")
|
||||||
|
private String scriptContent;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.example.liteflow.mysql.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 陈韦龙
|
||||||
|
* @date: 2022年12月12日 17:24
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@ToString
|
||||||
|
public enum NodeEnum {
|
||||||
|
CommonNode("CommonNode"),
|
||||||
|
IfNode("IfNode"),
|
||||||
|
;
|
||||||
|
private final String name;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.example.liteflow.mysql.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.example.liteflow.mysql.entity.DynamicScriptEntity;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 75349
|
||||||
|
* @description 针对表【dynamic_script】的数据库操作Mapper
|
||||||
|
* @createDate 2022-12-12 15:46:00
|
||||||
|
* @Entity generator.domain.DynamicScript
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface DynamicScriptMapper extends BaseMapper<DynamicScriptEntity> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.example.liteflow.mysql.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 陈韦龙
|
||||||
|
* @date: 2022年12月12日 18:30
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class SoutFrom {
|
||||||
|
private String code;
|
||||||
|
private String name;
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.example.liteflow.mysql.model.dynamicScript;
|
||||||
|
|
||||||
|
import com.example.liteflow.mysql.model.SoutFrom;
|
||||||
|
import com.example.liteflow.mysql.model.role.Role;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 陈韦龙
|
||||||
|
* @date: 2022年12月12日 15:52
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CreateDynamicScriptFrom {
|
||||||
|
/**
|
||||||
|
* 脚本Id
|
||||||
|
*/
|
||||||
|
private String scriptId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 脚本名称
|
||||||
|
*/
|
||||||
|
private String scriptName;
|
||||||
|
/**
|
||||||
|
* 规则
|
||||||
|
*/
|
||||||
|
private List<Role> roles;
|
||||||
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
|
private SoutFrom content;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package com.example.liteflow.mysql.model.dynamicScript;
|
||||||
|
|
||||||
|
import com.example.liteflow.mysql.model.SoutFrom;
|
||||||
|
import com.example.liteflow.mysql.model.role.Role;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: 陈韦龙
|
||||||
|
* @date: 2022年12月12日 15:52
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UpdateDynamicScriptFrom {
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
/**
|
||||||
|
* 脚本Id
|
||||||
|
*/
|
||||||
|
private String scriptId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 脚本名称
|
||||||
|
*/
|
||||||
|
private String scriptName;
|
||||||
|
/**
|
||||||
|
* 规则
|
||||||
|
*/
|
||||||
|
private List<Role> roles;
|
||||||
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
|
private SoutFrom content;
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.example.liteflow.mysql.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.example.liteflow.mysql.entity.DynamicScriptEntity;
|
||||||
|
import com.example.liteflow.mysql.model.dynamicScript.CreateDynamicScriptFrom;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 75349
|
||||||
|
* @description 针对表【dynamic_script】的数据库操作Service
|
||||||
|
* @createDate 2022-12-12 15:46:00
|
||||||
|
*/
|
||||||
|
public interface DynamicScriptService extends IService<DynamicScriptEntity> {
|
||||||
|
|
||||||
|
void createCostCenterNode(CreateDynamicScriptFrom createDynamicScriptFrom);
|
||||||
|
|
||||||
|
void createCostCenterIfNode(CreateDynamicScriptFrom createDynamicScriptFrom);
|
||||||
|
|
||||||
|
void createProfitCenterNode(CreateDynamicScriptFrom createDynamicScriptFrom);
|
||||||
|
|
||||||
|
void createProfitCenterIfNode(CreateDynamicScriptFrom createDynamicScriptFrom);
|
||||||
|
}
|
|
@ -0,0 +1,210 @@
|
||||||
|
package com.example.liteflow.mysql.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.example.liteflow.mysql.entity.DynamicScriptEntity;
|
||||||
|
import com.example.liteflow.mysql.enums.NodeEnum;
|
||||||
|
import com.example.liteflow.mysql.mapper.DynamicScriptMapper;
|
||||||
|
import com.example.liteflow.mysql.model.SoutFrom;
|
||||||
|
import com.example.liteflow.mysql.model.dynamicScript.CreateDynamicScriptFrom;
|
||||||
|
import com.example.liteflow.mysql.model.dynamicScript.UpdateDynamicScriptFrom;
|
||||||
|
import com.example.liteflow.mysql.model.role.Role;
|
||||||
|
import com.example.liteflow.mysql.service.DynamicScriptService;
|
||||||
|
import com.yomahub.liteflow.builder.LiteFlowNodeBuilder;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 75349
|
||||||
|
* @description 针对表【dynamic_script】的数据库操作Service实现
|
||||||
|
* @createDate 2022-12-12 15:46:00
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class DynamicScriptServiceImpl extends ServiceImpl<DynamicScriptMapper, DynamicScriptEntity>
|
||||||
|
implements DynamicScriptService {
|
||||||
|
private final static String costCenterCmp = "com.example.liteflow.mysql.cmp.costCenter.CostCenterCmp";
|
||||||
|
private final static String costCenterSoutCmp = "com.example.liteflow.mysql.cmp.costCenter.CostCenterSoutCmp";
|
||||||
|
private final static String profitCenterCmp = "com.example.liteflow.mysql.cmp.profitCenter.ProfitCenterCmp";
|
||||||
|
private final static String profitCenterSoutCmp = "com.example.liteflow.mysql.cmp.profitCenter.ProfitCenterSoutCmp";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createCostCenterNode(CreateDynamicScriptFrom createDynamicScriptFrom) {
|
||||||
|
String scriptId = createDynamicScriptFrom.getScriptId();
|
||||||
|
String scriptName = createDynamicScriptFrom.getScriptName();
|
||||||
|
SoutFrom content = createDynamicScriptFrom.getContent();
|
||||||
|
LambdaQueryWrapper<DynamicScriptEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(DynamicScriptEntity::getScriptId, scriptId);
|
||||||
|
DynamicScriptEntity entity = this.getOne(queryWrapper);
|
||||||
|
if (ObjectUtil.isNotNull(entity)) {
|
||||||
|
UpdateDynamicScriptFrom updateDynamicScriptFrom = BeanUtil.toBean(createDynamicScriptFrom, UpdateDynamicScriptFrom.class);
|
||||||
|
updateDynamicScriptFrom.setId(entity.getId());
|
||||||
|
this.updateCostCenterNode(updateDynamicScriptFrom);
|
||||||
|
} else {
|
||||||
|
DynamicScriptEntity dynamicScriptEntity = new DynamicScriptEntity();
|
||||||
|
dynamicScriptEntity.setScriptId(scriptId);
|
||||||
|
dynamicScriptEntity.setScriptName(scriptName);
|
||||||
|
dynamicScriptEntity.setScriptContent(JSONUtil.toJsonStr(content));
|
||||||
|
dynamicScriptEntity.setNodeType(NodeEnum.CommonNode.getName());
|
||||||
|
dynamicScriptEntity.setScriptClass(costCenterSoutCmp);
|
||||||
|
this.save(dynamicScriptEntity);
|
||||||
|
LiteFlowNodeBuilder.createCommonNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(costCenterSoutCmp)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createCostCenterIfNode(CreateDynamicScriptFrom createDynamicScriptFrom) {
|
||||||
|
String scriptId = createDynamicScriptFrom.getScriptId();
|
||||||
|
String scriptName = createDynamicScriptFrom.getScriptName();
|
||||||
|
List<Role> roles = createDynamicScriptFrom.getRoles();
|
||||||
|
LambdaQueryWrapper<DynamicScriptEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(DynamicScriptEntity::getScriptId, scriptId);
|
||||||
|
DynamicScriptEntity entity = this.getOne(queryWrapper);
|
||||||
|
if (ObjectUtil.isNotNull(entity)) {
|
||||||
|
UpdateDynamicScriptFrom updateDynamicScriptFrom = BeanUtil.toBean(createDynamicScriptFrom, UpdateDynamicScriptFrom.class);
|
||||||
|
updateDynamicScriptFrom.setId(entity.getId());
|
||||||
|
this.updateCostCenterNode(updateDynamicScriptFrom);
|
||||||
|
} else {
|
||||||
|
DynamicScriptEntity dynamicScriptEntity = new DynamicScriptEntity();
|
||||||
|
dynamicScriptEntity.setScriptId(scriptId);
|
||||||
|
dynamicScriptEntity.setScriptName(scriptName);
|
||||||
|
dynamicScriptEntity.setScriptRole(JSONUtil.toJsonStr(roles));
|
||||||
|
dynamicScriptEntity.setNodeType(NodeEnum.IfNode.getName());
|
||||||
|
dynamicScriptEntity.setScriptClass(costCenterCmp);
|
||||||
|
this.save(dynamicScriptEntity);
|
||||||
|
LiteFlowNodeBuilder.createIfNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(costCenterCmp)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateCostCenterNode(UpdateDynamicScriptFrom updateDynamicScriptFrom) {
|
||||||
|
String id = updateDynamicScriptFrom.getId();
|
||||||
|
String scriptId = updateDynamicScriptFrom.getScriptId();
|
||||||
|
String scriptName = updateDynamicScriptFrom.getScriptName();
|
||||||
|
SoutFrom content = updateDynamicScriptFrom.getContent();
|
||||||
|
LambdaUpdateWrapper<DynamicScriptEntity> queryWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
queryWrapper.eq(DynamicScriptEntity::getId, id)
|
||||||
|
.set(DynamicScriptEntity::getScriptId, scriptId)
|
||||||
|
.set(DynamicScriptEntity::getScriptName, scriptName)
|
||||||
|
.set(DynamicScriptEntity::getScriptContent, JSONUtil.toJsonStr(content));
|
||||||
|
this.update(queryWrapper);
|
||||||
|
LiteFlowNodeBuilder.createCommonNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(costCenterSoutCmp)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateCostCenterIfNode(UpdateDynamicScriptFrom updateDynamicScriptFrom) {
|
||||||
|
String id = updateDynamicScriptFrom.getId();
|
||||||
|
String scriptId = updateDynamicScriptFrom.getScriptId();
|
||||||
|
String scriptName = updateDynamicScriptFrom.getScriptName();
|
||||||
|
List<Role> roles = updateDynamicScriptFrom.getRoles();
|
||||||
|
LambdaUpdateWrapper<DynamicScriptEntity> queryWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
queryWrapper.eq(DynamicScriptEntity::getId, id)
|
||||||
|
.set(DynamicScriptEntity::getScriptId, scriptId)
|
||||||
|
.set(DynamicScriptEntity::getScriptName, scriptName)
|
||||||
|
.set(DynamicScriptEntity::getScriptRole, JSONUtil.toJsonStr(roles));
|
||||||
|
this.update(queryWrapper);
|
||||||
|
LiteFlowNodeBuilder.createIfNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(costCenterCmp)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createProfitCenterNode(CreateDynamicScriptFrom createDynamicScriptFrom) {
|
||||||
|
String scriptId = createDynamicScriptFrom.getScriptId();
|
||||||
|
String scriptName = createDynamicScriptFrom.getScriptName();
|
||||||
|
SoutFrom content = createDynamicScriptFrom.getContent();
|
||||||
|
LambdaQueryWrapper<DynamicScriptEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(DynamicScriptEntity::getScriptId, scriptId);
|
||||||
|
DynamicScriptEntity entity = this.getOne(queryWrapper);
|
||||||
|
if (ObjectUtil.isNotNull(entity)) {
|
||||||
|
UpdateDynamicScriptFrom updateDynamicScriptFrom = BeanUtil.toBean(createDynamicScriptFrom, UpdateDynamicScriptFrom.class);
|
||||||
|
updateDynamicScriptFrom.setId(entity.getId());
|
||||||
|
this.updateProfitCenterNode(updateDynamicScriptFrom);
|
||||||
|
} else {
|
||||||
|
DynamicScriptEntity dynamicScriptEntity = new DynamicScriptEntity();
|
||||||
|
dynamicScriptEntity.setScriptId(scriptId);
|
||||||
|
dynamicScriptEntity.setScriptName(scriptName);
|
||||||
|
dynamicScriptEntity.setScriptContent(JSONUtil.toJsonStr(content));
|
||||||
|
dynamicScriptEntity.setNodeType(NodeEnum.CommonNode.getName());
|
||||||
|
dynamicScriptEntity.setScriptClass(profitCenterSoutCmp);
|
||||||
|
this.save(dynamicScriptEntity);
|
||||||
|
LiteFlowNodeBuilder.createCommonNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(profitCenterSoutCmp)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createProfitCenterIfNode(CreateDynamicScriptFrom createDynamicScriptFrom) {
|
||||||
|
String scriptId = createDynamicScriptFrom.getScriptId();
|
||||||
|
String scriptName = createDynamicScriptFrom.getScriptName();
|
||||||
|
List<Role> roles = createDynamicScriptFrom.getRoles();
|
||||||
|
LambdaQueryWrapper<DynamicScriptEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(DynamicScriptEntity::getScriptId, scriptId);
|
||||||
|
DynamicScriptEntity entity = this.getOne(queryWrapper);
|
||||||
|
if (ObjectUtil.isNotNull(entity)) {
|
||||||
|
UpdateDynamicScriptFrom updateDynamicScriptFrom = BeanUtil.toBean(createDynamicScriptFrom, UpdateDynamicScriptFrom.class);
|
||||||
|
updateDynamicScriptFrom.setId(entity.getId());
|
||||||
|
this.updateProfitCenterIfNode(updateDynamicScriptFrom);
|
||||||
|
} else {
|
||||||
|
DynamicScriptEntity dynamicScriptEntity = new DynamicScriptEntity();
|
||||||
|
dynamicScriptEntity.setScriptId(scriptId);
|
||||||
|
dynamicScriptEntity.setScriptName(scriptName);
|
||||||
|
dynamicScriptEntity.setScriptRole(JSONUtil.toJsonStr(roles));
|
||||||
|
dynamicScriptEntity.setNodeType(NodeEnum.IfNode.getName());
|
||||||
|
dynamicScriptEntity.setScriptClass(profitCenterCmp);
|
||||||
|
this.save(dynamicScriptEntity);
|
||||||
|
LiteFlowNodeBuilder.createIfNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(profitCenterCmp)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateProfitCenterNode(UpdateDynamicScriptFrom updateDynamicScriptFrom) {
|
||||||
|
String id = updateDynamicScriptFrom.getId();
|
||||||
|
String scriptId = updateDynamicScriptFrom.getScriptId();
|
||||||
|
String scriptName = updateDynamicScriptFrom.getScriptName();
|
||||||
|
SoutFrom content = updateDynamicScriptFrom.getContent();
|
||||||
|
LambdaUpdateWrapper<DynamicScriptEntity> queryWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
queryWrapper.eq(DynamicScriptEntity::getId, id)
|
||||||
|
.set(DynamicScriptEntity::getScriptId, scriptId)
|
||||||
|
.set(DynamicScriptEntity::getScriptName, scriptName)
|
||||||
|
.set(DynamicScriptEntity::getScriptContent, JSONUtil.toJsonStr(content));
|
||||||
|
this.update(queryWrapper);
|
||||||
|
LiteFlowNodeBuilder.createCommonNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(profitCenterSoutCmp)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateProfitCenterIfNode(UpdateDynamicScriptFrom updateDynamicScriptFrom) {
|
||||||
|
String id = updateDynamicScriptFrom.getId();
|
||||||
|
String scriptId = updateDynamicScriptFrom.getScriptId();
|
||||||
|
String scriptName = updateDynamicScriptFrom.getScriptName();
|
||||||
|
List<Role> roles = updateDynamicScriptFrom.getRoles();
|
||||||
|
LambdaUpdateWrapper<DynamicScriptEntity> queryWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
queryWrapper.eq(DynamicScriptEntity::getId, id)
|
||||||
|
.set(DynamicScriptEntity::getScriptId, scriptId)
|
||||||
|
.set(DynamicScriptEntity::getScriptName, scriptName)
|
||||||
|
.set(DynamicScriptEntity::getScriptRole, JSONUtil.toJsonStr(roles));
|
||||||
|
this.update(queryWrapper);
|
||||||
|
LiteFlowNodeBuilder.createIfNode().setId(scriptId)
|
||||||
|
.setName(scriptName)
|
||||||
|
.setClazz(profitCenterCmp)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -78,7 +78,7 @@ public class NodeServiceImpl implements NodeService {
|
||||||
public void createProfitCenterNode(CreateNodeFrom createNodeFrom) {
|
public void createProfitCenterNode(CreateNodeFrom createNodeFrom) {
|
||||||
LiteFlowNodeBuilder.createCommonNode().setId(createNodeFrom.getId())
|
LiteFlowNodeBuilder.createCommonNode().setId(createNodeFrom.getId())
|
||||||
.setName(createNodeFrom.getName())
|
.setName(createNodeFrom.getName())
|
||||||
.setClazz("com.example.liteflow.mysql.cmp.profitCenter .ProfitCenterSoutCmp")
|
.setClazz("com.example.liteflow.mysql.cmp.profitCenter.ProfitCenterSoutCmp")
|
||||||
.build();
|
.build();
|
||||||
// flowExecutor.reloadRule();
|
// flowExecutor.reloadRule();
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,22 +8,22 @@ spring:
|
||||||
password: 123456
|
password: 123456
|
||||||
|
|
||||||
liteflow:
|
liteflow:
|
||||||
# rule-source: liteflow/*.el.xml
|
rule-source: liteflow/*.el.xml
|
||||||
rule-source-ext-data-map:
|
# rule-source-ext-data-map:
|
||||||
url: jdbc:mysql://localhost:3306/test_db
|
# url: jdbc:mysql://localhost:3306/test_db
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
# driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
username: root
|
# username: root
|
||||||
password: 123456
|
# password: 123456
|
||||||
applicationName: demo
|
# applicationName: demo
|
||||||
#以下是chain表的配置,这个一定得有
|
#以下是chain表的配置,这个一定得有
|
||||||
chainTableName: chain
|
# chainTableName: chain
|
||||||
chainApplicationNameField: application_name
|
# chainApplicationNameField: application_name
|
||||||
chainNameField: chain_name
|
# chainNameField: chain_name
|
||||||
elDataField: el_data
|
# elDataField: el_data
|
||||||
#以下是script表的配置,如果你没使用到脚本,下面可以不配置
|
#以下是script表的配置,如果你没使用到脚本,下面可以不配置
|
||||||
scriptTableName: script
|
# scriptTableName: script
|
||||||
scriptApplicationNameField: application_name
|
# scriptApplicationNameField: application_name
|
||||||
scriptIdField: script_id
|
# scriptIdField: script_id
|
||||||
scriptNameField: script_name
|
# scriptNameField: script_name
|
||||||
scriptDataField: script_data
|
# scriptDataField: script_data
|
||||||
scriptTypeField: script_type
|
# scriptTypeField: script_type
|
||||||
|
|
|
@ -67,7 +67,16 @@ INSERT INTO `base_data`(`id`, `type`, `attribution`, `content`, `content_type`,
|
||||||
-- INSERT INTO `chain`(`id`, `application_name`, `chain_name`, `chain_desc`, `el_data`, `create_time`) VALUES (8, 'demo', 'profit02', '测试流程', 'IF(profitCenter02Cmp, ProfitCenter02SoutCmp, sout);', '2022-12-06 16:03:34');
|
-- INSERT INTO `chain`(`id`, `application_name`, `chain_name`, `chain_desc`, `el_data`, `create_time`) VALUES (8, 'demo', 'profit02', '测试流程', 'IF(profitCenter02Cmp, ProfitCenter02SoutCmp, sout);', '2022-12-06 16:03:34');
|
||||||
-- INSERT INTO `chain`(`id`, `application_name`, `chain_name`, `chain_desc`, `el_data`, `create_time`) VALUES (9, 'demo', 'costAndProfit', '测试流程', 'THEN(cost01AndCost02, profit01AndProfit02);', '2022-12-06 16:03:34');
|
-- INSERT INTO `chain`(`id`, `application_name`, `chain_name`, `chain_desc`, `el_data`, `create_time`) VALUES (9, 'demo', 'costAndProfit', '测试流程', 'THEN(cost01AndCost02, profit01AndProfit02);', '2022-12-06 16:03:34');
|
||||||
|
|
||||||
|
CREATE TABLE `dynamic_script` (
|
||||||
|
`id` varchar(255) NOT NULL COMMENT '主键',
|
||||||
|
`script_id` varchar(32) NULL DEFAULT NULL COMMENT '脚本Id',
|
||||||
|
`script_name` varchar(64) NULL DEFAULT NULL COMMENT '脚本名称',
|
||||||
|
`script_class` text NULL COMMENT '脚本对应类名',
|
||||||
|
`node_type` varchar(30) NULL COMMENT '脚本对应节点类型',
|
||||||
|
`script_role` text NULL COMMENT '脚本规则',
|
||||||
|
`script_content` text NULL COMMENT '脚本内容'
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,60 +1,60 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<flow>
|
<flow>
|
||||||
<chain name="mainChain">
|
<!-- <chain name="mainChain">-->
|
||||||
THEN(
|
<!-- THEN(-->
|
||||||
s3, s4, s5, s6,
|
<!-- s3, s4, s5, s6,-->
|
||||||
IF (sectionClassification,
|
<!-- IF (sectionClassification,-->
|
||||||
IF (businessType,
|
<!-- IF (businessType,-->
|
||||||
IF (salesman,
|
<!-- IF (salesman,-->
|
||||||
IF (businessCategory,
|
<!-- IF (businessCategory,-->
|
||||||
s7,
|
<!-- s7,-->
|
||||||
s9
|
<!-- s9-->
|
||||||
),
|
<!-- ),-->
|
||||||
s9
|
<!-- s9-->
|
||||||
),
|
<!-- ),-->
|
||||||
s9
|
<!-- s9-->
|
||||||
),
|
<!-- ),-->
|
||||||
IF (businessType,
|
<!-- IF (businessType,-->
|
||||||
IF (salesman,
|
<!-- IF (salesman,-->
|
||||||
s8,
|
<!-- s8,-->
|
||||||
s9
|
<!-- s9-->
|
||||||
),
|
<!-- ),-->
|
||||||
IF (businessType,
|
<!-- IF (businessType,-->
|
||||||
s8,
|
<!-- s8,-->
|
||||||
s9
|
<!-- s9-->
|
||||||
)
|
<!-- )-->
|
||||||
)
|
<!-- )-->
|
||||||
)
|
<!-- )-->
|
||||||
);
|
<!-- );-->
|
||||||
</chain>
|
<!-- </chain>-->
|
||||||
|
|
||||||
<chain name="costAndProfit">
|
<!-- <chain name="costAndProfit">-->
|
||||||
THEN(cost01AndCost02, profit01AndProfit02);
|
<!-- THEN(cost01AndCost02, profit01AndProfit02);-->
|
||||||
</chain>
|
<!-- </chain>-->
|
||||||
|
|
||||||
<chain name="cost01AndCost02">
|
<!-- <chain name="cost01AndCost02">-->
|
||||||
IF(costCenter01Cmp, CostCenter01SoutCmp, IF(costCenter02Cmp, CostCenter02SoutCmp, sout));
|
<!-- IF(costCenter01Cmp, CostCenter01SoutCmp, IF(costCenter02Cmp, CostCenter02SoutCmp, sout));-->
|
||||||
</chain>
|
<!-- </chain>-->
|
||||||
|
|
||||||
<chain name="cost01">
|
<!-- <chain name="cost01">-->
|
||||||
IF(costCenter01Cmp, CostCenter01SoutCmp, sout);
|
<!-- IF(costCenter01Cmp, CostCenter01SoutCmp, sout);-->
|
||||||
</chain>
|
<!-- </chain>-->
|
||||||
|
|
||||||
<chain name="cost02">
|
<!-- <chain name="cost02">-->
|
||||||
IF(costCenter02Cmp, CostCenter02SoutCmp, sout);
|
<!-- IF(costCenter02Cmp, CostCenter02SoutCmp, sout);-->
|
||||||
</chain>
|
<!-- </chain>-->
|
||||||
|
|
||||||
<chain name="profit01AndProfit02">
|
<!-- <chain name="profit01AndProfit02">-->
|
||||||
IF(profitCenter01Cmp, ProfitCenter01SoutCmp, IF(profitCenter02Cmp, ProfitCenter02SoutCmp, sout));
|
<!-- IF(profitCenter01Cmp, ProfitCenter01SoutCmp, IF(profitCenter02Cmp, ProfitCenter02SoutCmp, sout));-->
|
||||||
</chain>
|
<!-- </chain>-->
|
||||||
|
|
||||||
<chain name="profit01">
|
<!-- <chain name="profit01">-->
|
||||||
IF(profitCenter01Cmp, ProfitCenter01SoutCmp, sout);
|
<!-- IF(profitCenter01Cmp, ProfitCenter01SoutCmp, sout);-->
|
||||||
</chain>
|
<!-- </chain>-->
|
||||||
|
|
||||||
<chain name="profit02">
|
<!-- <chain name="profit02">-->
|
||||||
IF(profitCenter02Cmp, ProfitCenter02SoutCmp, sout);
|
<!-- IF(profitCenter02Cmp, ProfitCenter02SoutCmp, sout);-->
|
||||||
</chain>
|
<!-- </chain>-->
|
||||||
|
|
||||||
<nodes>
|
<nodes>
|
||||||
<node id="s3" name="sectionClassification" type="script">
|
<node id="s3" name="sectionClassification" type="script">
|
||||||
|
|
Loading…
Reference in New Issue