From 54d78017f02eb95b5cccaf1377b884941954e548 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期五, 20 九月 2024 16:12:15 +0800
Subject: [PATCH] Merge branch 'master' of ssh://172.16.8.100:29418/iailab-plat

---
 iailab-module-model/iailab-module-model-biz/src/main/resources/template/menu.xml.vm                                        |  143 +++++++++++++++++++++++++++++++++++++++++++++++
 iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java |   11 +++
 2 files changed, 153 insertions(+), 1 deletions(-)

diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java
index d0bb2f8..bda62b1 100644
--- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java
+++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mpk/service/impl/MpkFileServiceImpl.java
@@ -25,6 +25,7 @@
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -67,7 +68,8 @@
     @Autowired
     private ConfigApi configApi;
 
-    private String mpkBakFilePath = "";
+    @Value("${mpk.bakFilePath}")
+    private String mpkBakFilePath;
 
     /*@PostConstruct
     public void init() {
@@ -296,6 +298,13 @@
         prop.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
         Velocity.init(prop);
 
+        //生成menu.xml文件
+        Map<String, Map<String, List<MpkFileDTO>>> collect = entities.stream().collect(Collectors.groupingBy(MpkFileDTO::getMenuName, Collectors.groupingBy(e -> StringUtils.isNotBlank(e.getGroupName()) ? e.getGroupName() : "default_group")));
+        Map<String, Object> map1 = new HashMap<>();
+        map1.put("collects",collect);
+        File xmlFile = new File(dirPath.getAbsolutePath() + File.separator + "menu.xml");
+        GenUtils.drawTemplate("menu.xml.vm",new VelocityContext(map1),xmlFile);
+
         //生成cpp文件
         File cppFile = new File(dirPath.getAbsolutePath() + File.separator + UUID.randomUUID() + ".cpp");
         GenUtils.drawTemplate("pkg.cpp.vm",context,cppFile);
diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/template/menu.xml.vm b/iailab-module-model/iailab-module-model-biz/src/main/resources/template/menu.xml.vm
new file mode 100644
index 0000000..a68f42b
--- /dev/null
+++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/template/menu.xml.vm
@@ -0,0 +1,143 @@
+<root version="企业版">
+    <menu name="数据模型">
+        <sub-menu name="数据源">
+            <item name="数据库" shortName="数据库" class="DatabaseUnit" isContant="true" icon="database.png" width="70"
+                  height="70"/>
+            <item name="数据文件" shortName="数据文件" class="OtherDetailDataUnit" isContant="true" icon="txt.png" width="70"
+                  height="70"/>
+        </sub-menu>
+#{foreach} ($collect in $collects.entrySet())
+        <sub-menu name="${collect.getKey()}">
+#{foreach} ($collect1 in $collect.getValue().entrySet())
+            <group name="${collect1.getKey()}">
+#{foreach} ($model in $collect1.getValue())
+                <group-item name="${model.pyChineseName}" shortName="${model.pyChineseName}" isContant="false"
+                    icon="$!{model.icon}" width="70" height="70" isFactor="true">
+#{if}($model.pyType=="predict")
+#{foreach} ($method in $model.modelMethods)
+#{if}($method.methodName=="train")
+                    <tab-train class="${model.pkgName}.impl.${model.pyName}Impl" method="train"
+                               params="#{foreach} ($column in [1..$method.dataLength])double[][],#{end}#{if}($method.model==1)java.util.HashMap,#{end}java.util.HashMap">
+                        <property key="data1" name="数据路径" type="file" valueType="file" min="" max=""/>
+#{foreach} ($setting in $method.methodSettings)
+#{if}($setting.type=="select")
+                        <property key="${setting.settingKey}" name="${setting.name}" type="select" valueType="${setting.valueType}" min="$!{setting.min}" max="$!{setting.max}">
+#{foreach} ($select in $setting.settingSelects)
+                            <select key="$!{select.selectKey}" name="$!{select.name}"/>
+#{end}
+                        </property>
+#{else}
+                        <property key="${setting.settingKey}" name="${setting.name}" value="$!{setting.value}" type="${setting.type}" valueType="${setting.valueType}" min="$!{setting.min}" max="$!{setting.max}"/>
+#{end}
+#{end}
+                    </tab-train>
+#{elseif}($method.methodName=="predict")
+                    <tab-load class="${model.pkgName}.impl.${model.pyName}Impl" method="predict"
+                              params="#{foreach} ($column in [1..$method.dataLength])double[][],#{end}#{if}($method.model==1)java.util.HashMap,#{end}java.util.HashMap" resultKey="$!{method.resultKey}"
+                              modelRules="${model.pkgName}.impl.${model.pyName}Impl.predict">
+                        <property key="data1" name="数据路径" type="file" valueType="file" min="" max=""/>
+#{foreach} ($setting in $method.methodSettings)
+#{if}($setting.type=="select")
+                        <property key="${setting.settingKey}" name="${setting.name}" type="select" valueType="${setting.valueType}" min="$!{setting.min}" max="$!{setting.max}">
+#{foreach} ($select in $setting.settingSelects)
+                            <select key="$!{select.selectKey}" name="$!{select.name}"/>
+#{end}
+                        </property>
+#{else}
+                        <property key="${setting.settingKey}" name="${setting.name}" value="$!{setting.value}" type="${setting.type}" valueType="${setting.valueType}" min="$!{setting.min}" max="$!{setting.max}"/>
+#{end}
+#{end}
+
+                    </tab-load>
+#{else}
+                    <tab-logic class="${model.pkgName}.impl.${model.pyName}Impl" method="$!{method.methodName}"
+                               params="#{foreach} ($column in [1..$method.dataLength])double[][],#{end}#{if}($method.model==1)java.util.HashMap,#{end}java.util.HashMap"
+                               resultKey="$!{method.resultKey}">
+                        <fieldset name="基本参数">
+#{foreach} ($setting in $method.methodSettings)
+#{if}($setting.type=="select")
+                            <property key="${setting.settingKey}" name="${setting.name}" type="select" valueType="${setting.valueType}" min="$!{setting.min}" max="$!{setting.max}">
+#{foreach} ($select in $setting.settingSelects)
+                                <select key="$!{select.selectKey}" name="$!{select.name}"/>
+#{end}
+                            </property>
+#{else}
+                            <property key="${setting.settingKey}" name="${setting.name}" value="$!{setting.value}" type="${setting.type}" valueType="${setting.valueType}" min="$!{setting.min}" max="$!{setting.max}"/>
+#{end}
+#{end}
+                        </fieldset>
+                    </tab-logic>
+#{end}
+#{end}
+#{elseif}($model.pyType=="schedul")
+#{foreach} ($method in $model.modelMethods)
+                    <tab-logic class="${model.pkgName}.impl.${model.pyName}Impl" method="$!{method.methodName}"
+                               params="#{foreach} ($column in [1..$method.dataLength])double[][],#{end}#{if}($method.model==1)java.util.HashMap,#{end}java.util.HashMap"
+                               resultKey="$!{method.resultKey}">
+                        <fieldset name="基本参数">
+#{foreach} ($setting in $method.methodSettings)
+#{if}($setting.type=="select")
+                            <property key="${setting.settingKey}" name="${setting.name}" type="select" valueType="${setting.valueType}" min="$!{setting.min}" max="$!{setting.max}">
+#{foreach} ($select in $setting.settingSelects)
+                                <select key="$!{select.selectKey}" name="$!{select.name}"/>
+#{end}
+                             </property>
+#{else}
+                             <property key="${setting.settingKey}" name="${setting.name}" value="$!{setting.value}" type="${setting.type}" valueType="${setting.valueType}" min="$!{setting.min}" max="$!{setting.max}"/>
+#{end}
+#{end}
+                        </fieldset>
+                    </tab-logic>
+#{end}
+#{end}
+                </group-item>
+#{end}
+            </group>
+#{end}
+        </sub-menu>
+#{end}
+
+        <sub-menu name="流程控制">
+            <item name="控制" shortName="控制" class="TimeControlUnit" isContant="true" icon="control.png" width="50"
+                  height="50" isControl="true"/>
+            <item name="起始时间" shortName="时间" class="StartTimeUnit" isContant="true" icon="time.png" width="50"
+                  height="50" isStartTime="true"/>
+            <item name="延时" shortName="延时" class="DelayUnit" isContant="true" icon="delay.png" width="50" height="50"/>
+        </sub-menu>
+        <sub-menu name="运算方法">
+            <item name="加" shortName="加" class="PlusUnit" isContant="true" icon="plus.png" width="50" height="50"
+                  set="false"/>
+            <item name="减" shortName="减" class="MinusUnit" isContant="true" icon="minus.png" width="50" height="50"
+                  set="false"/>
+            <item name="乘" shortName="乘" class="MultiplyUnit" isContant="true" icon="multiply.png" width="50"
+                  height="50" set="false"/>
+            <item name="除" shortName="除" class="DivideUnit" isContant="true" icon="divide.png" width="50" height="50"
+                  set="false"/>
+            <item name="积分器" shortName="积分器" class="IntegratorUnit" isContant="true" icon="integrator.png" width="50"
+                  height="50"/>
+        </sub-menu>
+        <sub-menu name="图表显示">
+            <item name="图" shortName="图" class="ChartUnit" isContant="true" icon="tu.png" width="70" height="70"
+                  set="false"/>
+            <item name="结果图" shortName="结果图" class="ChartResultUnit" isContant="true" icon="jieguotu.png" width="70"
+                  height="70" set="false"/>
+            <item name="预测图" shortName="预测图" class="RealTimeChartUnit" isContant="true" icon="yucetu.png" width="70"
+                  height="70"/>
+            <item name="散点图" shortName="散点图" class="ScatterPlotChartUnit" isContant="true" icon="sandiantu.png"
+                  width="70" height="70" set="false"/>
+            <item name="表" shortName="表" class="TableUnit" isContant="true" icon="biaoge.png" width="70" height="70"
+                  set="false"/>
+            <item name="文本显示器" shortName="文本显示器" class="TextShowUnit" isContant="true" icon="wenbenxianshi.png"
+                  width="70" height="70"/>
+        </sub-menu>
+        <sub-menu name="其他">
+            <item name="常数" shortName="常数" class="ConstantUnit" isContant="true" icon="changshu.png" width="50"
+                  height="50" runningSet="true"/>
+            <item name="总线" shortName="总线" class="IBusUnit" isContant="true" icon="zongxian.png" width="70"
+                  height="70"/>
+            <item name="行总线" shortName="行总线" class="HIBusUnit" isContant="true" icon="zongxian.png" width="70"
+                  height="70"/>
+            <item name="选择" shortName="选择" class="IKeyUnit" isContant="true" icon="xuanze.png" width="50" height="50"/>
+        </sub-menu>
+    </menu>
+</root>
\ No newline at end of file

--
Gitblit v1.9.3