diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-common/src/main/java/com/muyu/engine/domain/Scope.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-common/src/main/java/com/muyu/engine/domain/Scope.java index 5bd89ec..bc79a90 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-common/src/main/java/com/muyu/engine/domain/Scope.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-common/src/main/java/com/muyu/engine/domain/Scope.java @@ -1,26 +1,43 @@ package com.muyu.engine.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.function.Supplier; + /** * 规则引擎代码对象 scope * * @author Saisai * @date 2024-05-03 */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder public class Scope extends BaseEntity { private static final long serialVersionUID = 1L; /** 主键 */ + @TableId(value = "id",type = IdType.AUTO) private Long id; /** 引擎id */ @Excel(name = "引擎id") - private Long ruleEnginId; + private Long ruleEngineId; /** 类型 */ @Excel(name = "类型") @@ -34,65 +51,17 @@ public class Scope extends BaseEntity @Excel(name = "编码") private String code; - public void setId(Long id) - { - this.id = id; - } - - public Long getId() - { - return id; - } - public void setRuleEnginId(Long ruleEnginId) - { - this.ruleEnginId = ruleEnginId; - } - - public Long getRuleEnginId() - { - return ruleEnginId; - } - public void setType(String type) - { - this.type = type; - } - - public String getType() - { - return type; - } - public void setValue(String value) - { - this.value = value; - } - - public String getValue() - { - return value; - } - public void setCode(String code) - { - this.code = code; - } - - public String getCode() - { - return code; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("ruleEnginId", getRuleEnginId()) - .append("type", getType()) - .append("value", getValue()) - .append("code", getCode()) - .append("remark", getRemark()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); + public static List list(Long id, Supplier username) { + Scope scopetaskContext = new Scope() {{setType("任务");setValue("taskContext");setRuleEngineId(id);setCreateBy(username.get());setCreateTime(new Date());}}; + Scope scoperecordContext = new Scope() {{setType("资产集");setValue("recordContext");setRuleEngineId(id);setCreateBy(username.get());setCreateTime(new Date());}}; + Scope scopedataSetContext = new Scope() {{setType("资产记录");setValue("dataSetContext");setRuleEngineId(id);setCreateBy(username.get());setCreateTime(new Date());}}; + Scope scopedataModelContext = new Scope() {{setType("资产模型");setValue("dataModelContext");setRuleEngineId(id);setCreateBy(username.get());setCreateTime(new Date());}}; + List scopes = new ArrayList<>() {{ + add(scopetaskContext); + add(scoperecordContext); + add(scopedataSetContext); + add(scopedataModelContext); + }}; + return scopes; } } diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/RuleEngineController.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/RuleEngineController.java index e437d69..985ca3a 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/RuleEngineController.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/RuleEngineController.java @@ -12,7 +12,6 @@ import com.muyu.engine.service.RuleEngineService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -24,8 +23,7 @@ import java.util.List; */ @RestController @RequestMapping("/engine") -public class RuleEngineController extends BaseController -{ +public class RuleEngineController extends BaseController { @Autowired private RuleEngineService ruleEngineService; @@ -34,8 +32,7 @@ public class RuleEngineController extends BaseController */ @RequiresPermissions("engine:engine:list") @GetMapping("/list") - public Result> list(RuleEngine ruleEngine) - { + public Result> list(RuleEngine ruleEngine) { startPage(); List list = ruleEngineService.selectRuleEngineList(ruleEngine); return getDataTable(list); @@ -47,8 +44,7 @@ public class RuleEngineController extends BaseController @RequiresPermissions("engine:engine:export") @Log(title = "规则引擎", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, RuleEngine ruleEngine) - { + public void export(HttpServletResponse response, RuleEngine ruleEngine) { List list = ruleEngineService.selectRuleEngineList(ruleEngine); ExcelUtil util = new ExcelUtil(RuleEngine.class); util.exportExcel(response, list, "规则引擎数据"); @@ -59,8 +55,7 @@ public class RuleEngineController extends BaseController */ @RequiresPermissions("engine:engine:query") @GetMapping(value = "/{id}") - public Result getInfo(@PathVariable("id") Long id) - { + public Result getInfo(@PathVariable("id") Long id) { return success(ruleEngineService.selectRuleEngineById(id)); } @@ -70,8 +65,7 @@ public class RuleEngineController extends BaseController @RequiresPermissions("engine:engine:add") @Log(title = "规则引擎", businessType = BusinessType.INSERT) @PostMapping - public Result add(@RequestBody RuleEngine ruleEngine) - { + public Result add(@RequestBody RuleEngine ruleEngine) { return toAjax(ruleEngineService.insertRuleEngine(ruleEngine)); } @@ -81,8 +75,7 @@ public class RuleEngineController extends BaseController @RequiresPermissions("engine:engine:edit") @Log(title = "规则引擎", businessType = BusinessType.UPDATE) @PutMapping - public Result edit(@RequestBody RuleEngine ruleEngine) - { + public Result edit(@RequestBody RuleEngine ruleEngine) { return toAjax(ruleEngineService.updateRuleEngine(ruleEngine)); } @@ -91,22 +84,10 @@ public class RuleEngineController extends BaseController */ @RequiresPermissions("engine:engine:remove") @Log(title = "规则引擎", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public Result remove(@PathVariable Long[] ids) - { + @DeleteMapping("/{ids}") + public Result remove(@PathVariable Long[] ids) { return toAjax(ruleEngineService.deleteRuleEngineByIds(ids)); } - /** - * 测试引擎流程 - */ - @RequiresPermissions("engine:engine:testRuleEngine") - @Log(title = "规则引擎", businessType = BusinessType.DELETE) - @DeleteMapping("testRuleEngine/{id}") - public Result testRuleEngine(@PathVariable Long id) throws ServletException { - return toAjax(ruleEngineService.testRuleEngine(id)); - } - - } diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/ScopeController.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/ScopeController.java new file mode 100644 index 0000000..9dc88ed --- /dev/null +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/ScopeController.java @@ -0,0 +1,122 @@ +package com.muyu.engine.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.engine.domain.Scope; +import com.muyu.engine.service.ScopeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 规则引擎代码Controller + * + * @author Saisai + * @date 2024-05-03 + */ +@RestController +@RequestMapping("/scope") +public class ScopeController extends BaseController +{ + @Autowired + private ScopeService scopeService; + + /** + * 查询规则引擎代码列表 + */ + @RequiresPermissions("engine:scope:list") + @GetMapping("/list") + public Result> list(Scope scope) + { + startPage(); + List list = scopeService.selectScopeList(scope); + return getDataTable(list); + } + + /** + * 导出规则引擎代码列表 + */ + @RequiresPermissions("engine:scope:export") + @Log(title = "规则引擎代码", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, Scope scope) + { + List list = scopeService.selectScopeList(scope); + ExcelUtil util = new ExcelUtil(Scope.class); + util.exportExcel(response, list, "规则引擎代码数据"); + } + + /** + * 获取规则引擎代码详细信息 + */ + @RequiresPermissions("engine:scope:query") + @GetMapping(value = "/{id}") + public Result getInfo(@PathVariable("id") Long id) + { + return success(scopeService.selectScopeById(id)); + } + + /** + * 新增规则引擎代码 + */ + @RequiresPermissions("engine:scope:add") + @Log(title = "规则引擎代码", businessType = BusinessType.INSERT) + @PostMapping + public Result add(@RequestBody Scope scope) + { + return toAjax(scopeService.insertScope(scope)); + } + + /** + * 修改规则引擎代码 + */ + @RequiresPermissions("engine:scope:edit") + @Log(title = "规则引擎代码", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit(@RequestBody Scope scope) + { + return toAjax(scopeService.updateScope(scope)); + } + + /** + * 删除规则引擎代码 + */ + @RequiresPermissions("engine:scope:remove") + @Log(title = "规则引擎代码", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public Result remove(@PathVariable Long[] ids) + { + return toAjax(scopeService.deleteScopeByIds(ids)); + } + + + /** + * 初始化测试 + */ + @RequiresPermissions("engine:scope:init") + @Log(title = "规则引擎", businessType = BusinessType.DELETE) + @GetMapping("init/{id}") + public Result init(@PathVariable Long id) throws ServletException { + return toAjax(scopeService.init(id)); + } + + /** + * 测试 + */ + @RequiresPermissions("engine:scope:test") + @Log(title = "规则引擎", businessType = BusinessType.DELETE) + @GetMapping("test/{id}") + public Result test(@PathVariable Long id) throws ServletException { + return toAjax(scopeService.test(id)); + } + + +} diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/RuleEngineService.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/RuleEngineService.java index 465990c..c5aaf85 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/RuleEngineService.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/RuleEngineService.java @@ -62,10 +62,5 @@ public interface RuleEngineService extends IService */ public int deleteRuleEngineById(Long id); - /** - * 测试引擎流程 - * @param id - * @return - */ - boolean testRuleEngine(Long id) throws ServletException; + } diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/ScopeService.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/ScopeService.java index 1b3f7b1..623f421 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/ScopeService.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/ScopeService.java @@ -5,6 +5,8 @@ import java.util.List; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.engine.domain.Scope; +import javax.servlet.ServletException; + /** * 规则引擎代码Service接口 * @@ -60,4 +62,15 @@ public interface ScopeService extends IService * @return 结果 */ public int deleteScopeById(Long id); + + /** + * 测试引擎流程 + * @param id + * @return + */ + boolean init(Long id) throws ServletException; + + void deleteScopeByRuleIds(Long[] ids); + + boolean test(Long id) throws ServletException; } diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/RuleEngineServiceImpl.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/RuleEngineServiceImpl.java index d9e2985..0b4689a 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/RuleEngineServiceImpl.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/RuleEngineServiceImpl.java @@ -1,19 +1,18 @@ package com.muyu.engine.service.impl; -import com.alibaba.nacos.shaded.com.google.common.base.Supplier; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.security.utils.SecurityUtils; import com.muyu.engine.domain.RuleEngine; +import com.muyu.engine.domain.Scope; import com.muyu.engine.mapper.RuleEngineMapper; import com.muyu.engine.service.RuleEngineService; +import com.muyu.engine.service.ScopeService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.servlet.ServletException; -import java.io.File; import java.util.List; -import java.util.concurrent.Callable; /** * 规则引擎Service业务层处理 @@ -27,7 +26,8 @@ public class RuleEngineServiceImpl extends ServiceImpl booleanSupplier = () -> { - try { - return testEngine(ruleEngine).booleanValue(); - } catch (ServletException e) { - log.error(e.getMessage()); - throw new RuntimeException(e); - } - }; - System.out.println(); - return booleanSupplier.get(); - } - private Boolean testEngine(RuleEngine ruleEngine) throws ServletException { -// new File(ruleEngine); -// if (false)throw new ServletException("不存在"); - return true; - } } diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/ScopeServiceImpl.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/ScopeServiceImpl.java index 0234538..dddf0cb 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/ScopeServiceImpl.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/ScopeServiceImpl.java @@ -1,9 +1,17 @@ package com.muyu.engine.service.impl; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; +import com.alibaba.nacos.shaded.com.google.common.base.Supplier; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.text.Convert; import com.muyu.common.core.utils.DateUtils; +import com.muyu.engine.domain.RuleEngine; +import com.muyu.engine.service.RuleEngineService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -11,6 +19,8 @@ import com.muyu.engine.mapper.ScopeMapper; import com.muyu.engine.domain.Scope; import com.muyu.engine.service.ScopeService; +import javax.servlet.ServletException; + /** * 规则引擎代码Service业务层处理 * @@ -23,6 +33,8 @@ public class ScopeServiceImpl extends ServiceImpl implements { @Autowired private ScopeMapper scopeMapper; + @Autowired + private RuleEngineService ruleEngineService; /** * 查询规则引擎代码 @@ -71,7 +83,12 @@ public class ScopeServiceImpl extends ServiceImpl implements public int updateScope(Scope scope) { scope.setUpdateTime(DateUtils.getNowDate()); - return scopeMapper.updateScope(scope); + Scope one = this.getOne(new LambdaQueryWrapper<>() {{ + eq(Scope::getValue, scope.getValue()); + eq(Scope::getRuleEngineId, scope.getRuleEngineId()); + }}); + one.setCode(scope.getCode()); + return scopeMapper.updateScope(one); } /** @@ -97,4 +114,53 @@ public class ScopeServiceImpl extends ServiceImpl implements { return scopeMapper.deleteScopeById(id); } + + @Override + public void deleteScopeByRuleIds(Long[] ids) { + List longs = new ArrayList<>(); + for (Long id : ids) { + List list = this.list(new LambdaQueryWrapper() {{ + eq(Scope::getRuleEngineId, id); + }}).stream().map(Scope::getId).toList(); + longs.addAll(list); + } + if (!longs.isEmpty()){ + this.deleteScopeByIds(longs.toArray(Long[]::new)); + } + } + + @Override + public boolean test(Long id) throws ServletException { + return false; + } + + /** + * 引擎流程并执行测试 + * @param id + * @return + */ + @Override + public boolean init(Long id) throws ServletException { + RuleEngine ruleEngine = ruleEngineService.getById(id); + if (ruleEngine.getIsActivate().contains("no"))throw new ServletException("未激活"); + if (ruleEngine.getStatus().contains("1"))throw new ServletException("已停用"); + Supplier booleanSupplier = () -> { + try { + return testEngine(ruleEngine); + } catch (ServletException e) { + log.error(e.getMessage()); + throw new RuntimeException(e); + } + }; + System.out.println(); + return booleanSupplier.get(); + } + + private Boolean testEngine(RuleEngine ruleEngine) throws ServletException { + System.out.println("初始化"); + System.out.println(ruleEngine); + if(false)throw new ServletException("读取异常"); + return true; + } } + diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/bootstrap.yml b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/bootstrap.yml index 83ed317..09e4f46 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/bootstrap.yml +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/bootstrap.yml @@ -23,6 +23,8 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + main: + allow-circular-references: true logging: level: - com.muyu.etl.mapper: DEBUG + com.muyu.engine.mapper: DEBUG diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/mapper/RuleEngineMapper.xml b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/mapper/RuleEngineMapper.xml index 262bb95..36276b2 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/mapper/RuleEngineMapper.xml +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/mapper/RuleEngineMapper.xml @@ -11,7 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -21,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, name, type, level, code,description, isActivate, status, remark, create_by, create_time, update_by, update_time from rule_engine + select id, name, type, level, code,description, is_activate, status, remark, create_by, create_time, update_by, update_time from rule_engine @@ -51,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" level, code, description, - isActivate, + is_activate, status, remark, create_by, @@ -84,7 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" level = #{level}, code = #{code}, description = #{description}, - isActivate = #{isActivate}, + is_activate = #{isActivate}, status = #{status}, remark = #{remark}, create_by = #{createBy}, diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/mapper/ScopeMapper.xml b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/mapper/ScopeMapper.xml index fae957c..8576e01 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/mapper/ScopeMapper.xml +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/resources/mapper/ScopeMapper.xml @@ -6,7 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -18,13 +18,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, ruleEnginId, type, value, code, remark, create_by, create_time, update_by, update_time from scope + select id, rule_engine_id, type, value, code, remark, create_by, create_time, update_by, update_time from scope