huangxingxing 1 month ago
parent
commit
2b687d0b84

+ 3 - 3
src/main/java/ac/template/TemplateGenerator.java

@@ -26,9 +26,9 @@ public class TemplateGenerator {
         Template template = cfg.getTemplate("gui.ftl");
         // 定义数据模型(Map)
         Map<String, Object> dataModel = new HashMap<>();
-//        dataModel.put("nodes",TemplateServer.findNodes(pid));
-//        dataModel.put("coms",TemplateServer.findComs(pid));
-//        dataModel.put("sim",TemplateServer.findSimulations(pid));
+        dataModel.put("header",TemplateServer.getHeader());
+        dataModel.put("atts",TemplateServer.getProAttList(pid,type));
+        dataModel.put("type",type);
         // 将数据模型传入模板进行处理
         StringWriter writer = new StringWriter();
         template.process(dataModel, writer);

+ 44 - 0
src/main/java/ac/template/TemplateServer.java

@@ -1,4 +1,48 @@
 package ac.template;
 
+import ac.template.model.gui.AttVo;
+import ac.template.model.gui.HeaderVo;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.mappers.ac.dao.ExtAcMapper;
+import com.miniframe.mappers.ac.model.ProAttVo;
+import com.miniframe.tools.XIDateTimeUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 public class TemplateServer {
+    public static HeaderVo getHeader(){
+        HeaderVo vo =new HeaderVo();
+        vo.setTimestamp(XIDateTimeUtils.getNowStr());
+        return vo;
+    }
+    public static List<AttVo> getProAttList(String pid,Integer astType){
+        ExtAcMapper dao = UtilTools.getBean(ExtAcMapper.class);
+        List<ProAttVo> pvs = dao.getProAttList(pid,astType);
+        List<AttVo> vos = new ArrayList<>();
+        List<ProAttVo> gvs=pvs.stream().filter(v-> v.getFatId().equals("0")).collect(Collectors.toList());//根数据
+        for (ProAttVo gv:gvs) {
+            AttVo vo =getAttVo(gv,pvs);
+            vos.add(vo);
+        }
+        return vos;
+    }
+    public static  AttVo getAttVo(ProAttVo gv,List<ProAttVo> pvs ){
+        AttVo vo = new AttVo();
+        vo.setVo(gv);
+        List<AttVo> svos = new ArrayList<>();
+        if(gv.getValType().equals(3)){
+            List<ProAttVo> sgvs =pvs.stream()
+                    .filter(v-> v.getFatId().equals(gv.getAttId()))
+                    .collect(Collectors.toList());
+            for (ProAttVo sgv:sgvs ) {
+                AttVo svo = getAttVo(sgv,pvs);
+                svos.add(svo);
+            }
+        }
+        vo.setSvo(svos);
+        return vo;
+    }
+
 }

+ 19 - 0
src/main/java/ac/template/model/gui/AttVo.java

@@ -0,0 +1,19 @@
+package ac.template.model.gui;
+
+import com.miniframe.mappers.ac.model.ProAttVo;
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class AttVo {
+    private ProAttVo vo;
+    private List<AttVo> svo;
+
+    @Override
+    public String toString() {
+        return "AttVo{" +
+                "vo=" + vo +
+                ", svo=" + svo +
+                '}';
+    }
+}

+ 11 - 0
src/main/java/ac/template/model/gui/HeaderVo.java

@@ -0,0 +1,11 @@
+package ac.template.model.gui;
+
+import lombok.Data;
+
+@Data
+public class HeaderVo {
+    private String name="soad";
+    private String creator="soad";
+    private String timestamp;
+    private String version="1.0";
+}

+ 15 - 0
src/main/java/com/miniframe/mappers/ac/model/ProAttVo.java

@@ -13,4 +13,19 @@ public class ProAttVo {
    private Integer ser;//属性排序
    private String pattId;//项目属性ID
    private String val;//项目属性值
+
+   @Override
+   public String toString() {
+      return "ProAttVo{" +
+              "attId='" + attId + '\'' +
+              ", fatId='" + fatId + '\'' +
+              ", name='" + name + '\'' +
+              ", code='" + code + '\'' +
+              ", valType=" + valType +
+              ", valCodeType='" + valCodeType + '\'' +
+              ", ser=" + ser +
+              ", pattId='" + pattId + '\'' +
+              ", val='" + val + '\'' +
+              '}';
+   }
 }

+ 6 - 74
src/main/resources/templates/gui.ftl

@@ -1,78 +1,10 @@
 <soad>
 	<header>
-		<name>soad</name>
-		<creator>tyh</creator>
-		<timestamp>2025-07-25</timestamp>
-		<version>1.0</version>
+		<name>${header.name}</name>
+		<creator>${header.creator}</creator>
+		<timestamp>${header.timestamp}</timestamp>
+		<version>${header.version}</version>
 	</header>
-	<Analysis_type>0</Analysis_type>
-	<!--分析工况:0:"气动", 1:"结构", 2:"气弹"-->
-	<doedriver>
-		<switch>1</switch>
-		<!--0:"off", 1:"on"-->
-        <name>LatinHypercubeGenerator</name>
-		<!--采样方法:LatinHypercubeGenerator:"拉丁超立方", BoxBehnkenGenerator:"BoxBehnken",PlackettBurmanGenerator:"PlackettBurman",FullFactorialGenerator:"全因子设计"-->
-        <configuration>
-            <samples>100</samples>
-			<!--拉丁超立方 * 样本数量:100-->
-			<seed>1</seed>
-			<!--拉丁超立方 * 随机种子:1-->
-        </configuration>
-		<is_sbo>1</is_sbo>
-		<!--0:"No", 1:"Yes"-->
-    </doedriver>
-	<surrogatemodel>
-		<switch>1</switch>
-		<!--0:"off", 1:"on"-->
-		<from_file>doe_prob.sql</from_file>
-		<!--选择文件-->
-        <name>KrigingSurrogate</name>
-		<!--选择模型:KrigingSurrogate:"Kriging", NearestNeighbor:"最近邻",ResponseSurface:"响应面"-->
-        <configuration>
-            <eval_rmse>1</eval_rmse>
-			<!--Kriging * 均方根误差:0:"False", 1:"True"-->
-			<lapack_driver>gesdd</lapack_driver>
-			<!--Kriging * 线性代数库:"gesdd", "gesvd"-->
-        </configuration>
-    </surrogatemodel>
-	<optimizedriver>
-		<switch>0</switch>
-        <name>ScipyOptimizeDriver</name>
-		<!--选择优化器:ScipyOptimizeDriver:"ScipyOptimizeDriver", pyOptSparseDriver:"pyOptSparseDriver",DifferentialEvolutionDriver:"DifferentialEvolutionDriver"-->
-        <configuration>
-			<maxiter>50</maxiter>
-			<!--ScipyOptimizeDriver * 迭代次数:50-->
-			<optimizer>SLSQP</optimizer>
-			<!--ScipyOptimizeDriver * 优化方法:SLSQP、CG、BFGS、Powell-->
-            <tol>1e-6</tol>
-			<!--ScipyOptimizeDriver * 终止容差:1e-6-->
-			<disp>1</disp>
-			<!--ScipyOptimizeDriver * 显示收敛信息:0:"off", 1:"on"-->
-        </configuration>
-    </optimizedriver>
-    <problem>
-        <designVariables>
-			<designVariable  uID="扭转分布">
-				<number mapType="integer">5</number>
-				<!--分布个数-->
-				<upper>15.0</upper>
-				<lower>-10.0</lower>
-            </designVariable>
-		</designVariables>
-		<constraints>
-			<is_cons>1</is_cons>
-			<constraint uID="升力系数">
-                <!-- <equals></equals>-->
-				<type>equals</type>
-				<value>0.5</value>
-				<!--约束类型:equals:"=", upper:"<", lower:">"-->
-            </constraint>
-		</constraints>
-		<objectives>
-			<objective uID="阻力系数">
-                <scaler>1e4</scaler>
-				<!--缩放因子:1e4-->
-            </objective>
-		</objectives>
-    </problem>
+	<Analysis_type>${type}</Analysis_type>
+    <#include "guiatt.ftl">
 </soad>

+ 18 - 0
src/main/resources/templates/guiatt.ftl

@@ -0,0 +1,18 @@
+<#list atts as a>
+    <#if a.vo.valType==3>
+     <#if a.vo.code=="designVariable"||  a.vo.code=="constraint" || a.vo.code=="objective" >
+<${a.vo.code} uID="${a.vo.name}">
+     <#else>
+<${a.vo.code}>
+     </#if>
+ <#if a.svo?size gt 0>
+<#assign atts=a.svo/>
+<#include "guiatt.ftl">
+         </#if>
+</${a.vo.code}>
+    <#else>
+<#if a.vo.val??&&a.vo.val!="">
+<${a.vo.code}>${a.vo.val}</${a.vo.code}>
+</#if>
+    </#if>
+</#list>

+ 22 - 0
src/test/java/com/miniframe/AcTest.java

@@ -0,0 +1,22 @@
+package com.miniframe;
+
+import ac.template.TemplateGenerator;
+import ac.template.TemplateServer;
+import ac.template.model.gui.AttVo;
+import freemarker.template.TemplateException;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.io.IOException;
+import java.util.List;
+
+@SpringBootTest
+public class AcTest {
+    @Test
+    void TestGuiTemplate() throws IOException, TemplateException {
+//        List<AttVo>  vos =TemplateServer.getProAttList("d540dd9b4d764895b471e7b077eb1c04",0);
+//        System.out.println(vos);
+        TemplateGenerator.createGuiXml("d540dd9b4d764895b471e7b077eb1c04",0);
+    }
+
+}