From e58ee1b183d7a4ff3140a4547e3634ef6739f6b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=B9=8F?= Date: Mon, 29 Jun 2026 11:04:19 +0800 Subject: [PATCH] Add business loop generation contracts --- .../generator/domain/front/FrontProject.java | 3 + .../front/dto/BusinessLoopAuditResult.java | 30 +++ .../domain/front/dto/BusinessLoopPlan.java | 196 ++++++++++++++++++ .../dto/GenerateBusinessBlueprintRequest.java | 6 + .../dto/GenerateBusinessLoopPlanRequest.java | 21 ++ .../front/dto/GenerateDatabaseRequest.java | 3 + .../mapper/front/FrontProjectMapper.xml | 6 +- RuoYi-Vue/sql/db.sql | 1 + RuoYi-Vue/sql/front_project_upgrade.sql | 17 ++ 9 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessLoopAuditResult.java create mode 100644 RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessLoopPlan.java create mode 100644 RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessLoopPlanRequest.java diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/FrontProject.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/FrontProject.java index ff94bb2..20e1cf5 100644 --- a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/FrontProject.java +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/FrontProject.java @@ -23,6 +23,7 @@ public class FrontProject extends BaseEntity private String generateStatus; private String previewStatus; private String appBlueprint; + private String businessLoopPlan; private String erDiagram; private String businessBlueprint; private String status; @@ -60,6 +61,8 @@ public class FrontProject extends BaseEntity public void setPreviewStatus(String previewStatus) { this.previewStatus = previewStatus; } public String getAppBlueprint() { return appBlueprint; } public void setAppBlueprint(String appBlueprint) { this.appBlueprint = appBlueprint; } + public String getBusinessLoopPlan() { return businessLoopPlan; } + public void setBusinessLoopPlan(String businessLoopPlan) { this.businessLoopPlan = businessLoopPlan; } public String getErDiagram() { return erDiagram; } public void setErDiagram(String erDiagram) { this.erDiagram = erDiagram; } public String getBusinessBlueprint() { return businessBlueprint; } diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessLoopAuditResult.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessLoopAuditResult.java new file mode 100644 index 0000000..eeab8ae --- /dev/null +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessLoopAuditResult.java @@ -0,0 +1,30 @@ +package com.ruoyi.generator.domain.front.dto; + +import java.util.ArrayList; +import java.util.List; + +public class BusinessLoopAuditResult +{ + private boolean complete; + private int loopActions; + private int stateTransitions; + private int quantityRules; + private int recordRules; + private List missingRequiredActions = new ArrayList(); + private List errors = new ArrayList(); + + public boolean isComplete() { return complete; } + public void setComplete(boolean complete) { this.complete = complete; } + public int getLoopActions() { return loopActions; } + public void setLoopActions(int loopActions) { this.loopActions = loopActions; } + public int getStateTransitions() { return stateTransitions; } + public void setStateTransitions(int stateTransitions) { this.stateTransitions = stateTransitions; } + public int getQuantityRules() { return quantityRules; } + public void setQuantityRules(int quantityRules) { this.quantityRules = quantityRules; } + public int getRecordRules() { return recordRules; } + public void setRecordRules(int recordRules) { this.recordRules = recordRules; } + public List getMissingRequiredActions() { return missingRequiredActions; } + public void setMissingRequiredActions(List missingRequiredActions) { this.missingRequiredActions = missingRequiredActions == null ? new ArrayList() : missingRequiredActions; } + public List getErrors() { return errors; } + public void setErrors(List errors) { this.errors = errors == null ? new ArrayList() : errors; } +} diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessLoopPlan.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessLoopPlan.java new file mode 100644 index 0000000..1f2adba --- /dev/null +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/BusinessLoopPlan.java @@ -0,0 +1,196 @@ +package com.ruoyi.generator.domain.front.dto; + +import java.util.ArrayList; +import java.util.List; + +public class BusinessLoopPlan +{ + private String domainName; + private List coreObjects = new ArrayList(); + private List stateMachines = new ArrayList(); + private List actions = new ArrayList(); + private List quantityRules = new ArrayList(); + private List recordRules = new ArrayList(); + private List pageBindings = new ArrayList(); + private List acceptanceScenarios = new ArrayList(); + + public String getDomainName() { return domainName; } + public void setDomainName(String domainName) { this.domainName = domainName; } + public List getCoreObjects() { return coreObjects; } + public void setCoreObjects(List coreObjects) { this.coreObjects = coreObjects == null ? new ArrayList() : coreObjects; } + public List getStateMachines() { return stateMachines; } + public void setStateMachines(List stateMachines) { this.stateMachines = stateMachines == null ? new ArrayList() : stateMachines; } + public List getActions() { return actions; } + public void setActions(List actions) { this.actions = actions == null ? new ArrayList() : actions; } + public List getQuantityRules() { return quantityRules; } + public void setQuantityRules(List quantityRules) { this.quantityRules = quantityRules == null ? new ArrayList() : quantityRules; } + public List getRecordRules() { return recordRules; } + public void setRecordRules(List recordRules) { this.recordRules = recordRules == null ? new ArrayList() : recordRules; } + public List getPageBindings() { return pageBindings; } + public void setPageBindings(List pageBindings) { this.pageBindings = pageBindings == null ? new ArrayList() : pageBindings; } + public List getAcceptanceScenarios() { return acceptanceScenarios; } + public void setAcceptanceScenarios(List acceptanceScenarios) { this.acceptanceScenarios = acceptanceScenarios == null ? new ArrayList() : acceptanceScenarios; } + + public static class BusinessLoopObject + { + private String code; + private String name; + private String tableName; + private String objectType; + + public String getCode() { return code; } + public void setCode(String code) { this.code = code; } + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public String getTableName() { return tableName; } + public void setTableName(String tableName) { this.tableName = tableName; } + public String getObjectType() { return objectType; } + public void setObjectType(String objectType) { this.objectType = objectType; } + } + + public static class BusinessLoopStateMachine + { + private String objectCode; + private String tableName; + private String statusField; + private List states = new ArrayList(); + private List transitions = new ArrayList(); + + public String getObjectCode() { return objectCode; } + public void setObjectCode(String objectCode) { this.objectCode = objectCode; } + public String getTableName() { return tableName; } + public void setTableName(String tableName) { this.tableName = tableName; } + public String getStatusField() { return statusField; } + public void setStatusField(String statusField) { this.statusField = statusField; } + public List getStates() { return states; } + public void setStates(List states) { this.states = states == null ? new ArrayList() : states; } + public List getTransitions() { return transitions; } + public void setTransitions(List transitions) { this.transitions = transitions == null ? new ArrayList() : transitions; } + } + + public static class BusinessLoopStateTransition + { + private String actionCode; + private String fromState; + private String toState; + + public String getActionCode() { return actionCode; } + public void setActionCode(String actionCode) { this.actionCode = actionCode; } + public String getFromState() { return fromState; } + public void setFromState(String fromState) { this.fromState = fromState; } + public String getToState() { return toState; } + public void setToState(String toState) { this.toState = toState; } + } + + public static class BusinessLoopAction + { + private String code; + private String name; + private String actor; + private String ownerObject; + private String ownerTable; + private String triggerPage; + private boolean required; + private List preconditions = new ArrayList(); + private List stateTransitions = new ArrayList(); + private List quantityEffects = new ArrayList(); + private List recordEffects = new ArrayList(); + + public String getCode() { return code; } + public void setCode(String code) { this.code = code; } + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public String getActor() { return actor; } + public void setActor(String actor) { this.actor = actor; } + public String getOwnerObject() { return ownerObject; } + public void setOwnerObject(String ownerObject) { this.ownerObject = ownerObject; } + public String getOwnerTable() { return ownerTable; } + public void setOwnerTable(String ownerTable) { this.ownerTable = ownerTable; } + public String getTriggerPage() { return triggerPage; } + public void setTriggerPage(String triggerPage) { this.triggerPage = triggerPage; } + public boolean isRequired() { return required; } + public void setRequired(boolean required) { this.required = required; } + public List getPreconditions() { return preconditions; } + public void setPreconditions(List preconditions) { this.preconditions = preconditions == null ? new ArrayList() : preconditions; } + public List getStateTransitions() { return stateTransitions; } + public void setStateTransitions(List stateTransitions) { this.stateTransitions = stateTransitions == null ? new ArrayList() : stateTransitions; } + public List getQuantityEffects() { return quantityEffects; } + public void setQuantityEffects(List quantityEffects) { this.quantityEffects = quantityEffects == null ? new ArrayList() : quantityEffects; } + public List getRecordEffects() { return recordEffects; } + public void setRecordEffects(List recordEffects) { this.recordEffects = recordEffects == null ? new ArrayList() : recordEffects; } + } + + public static class BusinessLoopQuantityEffect + { + private String actionCode; + private String objectCode; + private String tableName; + private String quantityField; + private String effectType; + private String amount; + + public String getActionCode() { return actionCode; } + public void setActionCode(String actionCode) { this.actionCode = actionCode; } + public String getObjectCode() { return objectCode; } + public void setObjectCode(String objectCode) { this.objectCode = objectCode; } + public String getTableName() { return tableName; } + public void setTableName(String tableName) { this.tableName = tableName; } + public String getQuantityField() { return quantityField; } + public void setQuantityField(String quantityField) { this.quantityField = quantityField; } + public String getEffectType() { return effectType; } + public void setEffectType(String effectType) { this.effectType = effectType; } + public String getAmount() { return amount; } + public void setAmount(String amount) { this.amount = amount; } + } + + public static class BusinessLoopRecordEffect + { + private String actionCode; + private String objectCode; + private String tableName; + private String operation; + + public String getActionCode() { return actionCode; } + public void setActionCode(String actionCode) { this.actionCode = actionCode; } + public String getObjectCode() { return objectCode; } + public void setObjectCode(String objectCode) { this.objectCode = objectCode; } + public String getTableName() { return tableName; } + public void setTableName(String tableName) { this.tableName = tableName; } + public String getOperation() { return operation; } + public void setOperation(String operation) { this.operation = operation; } + } + + public static class BusinessLoopPageBinding + { + private String actionCode; + private String target; + private String pageCode; + private String tableName; + private String slot; + + public String getActionCode() { return actionCode; } + public void setActionCode(String actionCode) { this.actionCode = actionCode; } + public String getTarget() { return target; } + public void setTarget(String target) { this.target = target; } + public String getPageCode() { return pageCode; } + public void setPageCode(String pageCode) { this.pageCode = pageCode; } + public String getTableName() { return tableName; } + public void setTableName(String tableName) { this.tableName = tableName; } + public String getSlot() { return slot; } + public void setSlot(String slot) { this.slot = slot; } + } + + public static class BusinessLoopAcceptanceScenario + { + private String name; + private List steps = new ArrayList(); + private List expectedResults = new ArrayList(); + + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public List getSteps() { return steps; } + public void setSteps(List steps) { this.steps = steps == null ? new ArrayList() : steps; } + public List getExpectedResults() { return expectedResults; } + public void setExpectedResults(List expectedResults) { this.expectedResults = expectedResults == null ? new ArrayList() : expectedResults; } + } +} diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessBlueprintRequest.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessBlueprintRequest.java index 5e2b30a..549f6ac 100644 --- a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessBlueprintRequest.java +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessBlueprintRequest.java @@ -6,6 +6,8 @@ public class GenerateBusinessBlueprintRequest private String projectDesc; private String industryTemplate; private String extraRequirements; + private String appBlueprint; + private String businessLoopPlan; public String getProjectName() { return projectName; } public void setProjectName(String projectName) { this.projectName = projectName; } @@ -15,4 +17,8 @@ public class GenerateBusinessBlueprintRequest public void setIndustryTemplate(String industryTemplate) { this.industryTemplate = industryTemplate; } public String getExtraRequirements() { return extraRequirements; } public void setExtraRequirements(String extraRequirements) { this.extraRequirements = extraRequirements; } + public String getAppBlueprint() { return appBlueprint; } + public void setAppBlueprint(String appBlueprint) { this.appBlueprint = appBlueprint; } + public String getBusinessLoopPlan() { return businessLoopPlan; } + public void setBusinessLoopPlan(String businessLoopPlan) { this.businessLoopPlan = businessLoopPlan; } } diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessLoopPlanRequest.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessLoopPlanRequest.java new file mode 100644 index 0000000..5dfb690 --- /dev/null +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateBusinessLoopPlanRequest.java @@ -0,0 +1,21 @@ +package com.ruoyi.generator.domain.front.dto; + +public class GenerateBusinessLoopPlanRequest +{ + private String projectName; + private String projectDesc; + private String industryTemplate; + private String extraRequirements; + private String appBlueprint; + + public String getProjectName() { return projectName; } + public void setProjectName(String projectName) { this.projectName = projectName; } + public String getProjectDesc() { return projectDesc; } + public void setProjectDesc(String projectDesc) { this.projectDesc = projectDesc; } + public String getIndustryTemplate() { return industryTemplate; } + public void setIndustryTemplate(String industryTemplate) { this.industryTemplate = industryTemplate; } + public String getExtraRequirements() { return extraRequirements; } + public void setExtraRequirements(String extraRequirements) { this.extraRequirements = extraRequirements; } + public String getAppBlueprint() { return appBlueprint; } + public void setAppBlueprint(String appBlueprint) { this.appBlueprint = appBlueprint; } +} diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateDatabaseRequest.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateDatabaseRequest.java index ef1798a..ac42f04 100644 --- a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateDatabaseRequest.java +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/GenerateDatabaseRequest.java @@ -7,6 +7,7 @@ public class GenerateDatabaseRequest private String industryTemplate; private String extraRequirements; private String appBlueprint; + private String businessLoopPlan; public String getProjectName() { return projectName; } public void setProjectName(String projectName) { this.projectName = projectName; } @@ -18,4 +19,6 @@ public class GenerateDatabaseRequest public void setExtraRequirements(String extraRequirements) { this.extraRequirements = extraRequirements; } public String getAppBlueprint() { return appBlueprint; } public void setAppBlueprint(String appBlueprint) { this.appBlueprint = appBlueprint; } + public String getBusinessLoopPlan() { return businessLoopPlan; } + public void setBusinessLoopPlan(String businessLoopPlan) { this.businessLoopPlan = businessLoopPlan; } } diff --git a/RuoYi-Vue/ruoyi-generator/src/main/resources/mapper/front/FrontProjectMapper.xml b/RuoYi-Vue/ruoyi-generator/src/main/resources/mapper/front/FrontProjectMapper.xml index 34f94e9..1f72133 100644 --- a/RuoYi-Vue/ruoyi-generator/src/main/resources/mapper/front/FrontProjectMapper.xml +++ b/RuoYi-Vue/ruoyi-generator/src/main/resources/mapper/front/FrontProjectMapper.xml @@ -20,6 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -29,7 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select project_id, user_id, project_name, project_file_name, package_name, version, project_desc, requirement_keyword, industry_template, front_framework, back_framework, frontend_enabled, generate_status, preview_status, app_blueprint, er_diagram, business_blueprint, status, create_time, update_time, remark from front_project + select project_id, user_id, project_name, project_file_name, package_name, version, project_desc, requirement_keyword, industry_template, front_framework, back_framework, frontend_enabled, generate_status, preview_status, app_blueprint, business_loop_plan, er_diagram, business_blueprint, status, create_time, update_time, remark from front_project