huangxingxing 7 months ago
parent
commit
055e80123b
100 changed files with 3352 additions and 32 deletions
  1. 5 0
      dbscript/init/generate/03-functionInit.sql
  2. 112 0
      generated/com/miniframe/generate/business/mdo/model/MDO0035BaseModel.java
  3. 112 0
      generated/com/miniframe/generate/business/mdo/model/MDO0036BaseModel.java
  4. 112 0
      generated/com/miniframe/generate/business/mdo/model/MDO0037BaseModel.java
  5. 112 0
      generated/com/miniframe/generate/business/mdo/model/MDO0038BaseModel.java
  6. 112 0
      generated/com/miniframe/generate/business/mdo/model/MDO0039BaseModel.java
  7. 99 0
      generated/com/miniframe/generate/comm/httpmdoapater/MDO0035Client.java
  8. 99 0
      generated/com/miniframe/generate/comm/httpmdoapater/MDO0036Client.java
  9. 99 0
      generated/com/miniframe/generate/comm/httpmdoapater/MDO0037Client.java
  10. 99 0
      generated/com/miniframe/generate/comm/httpmdoapater/MDO0038Client.java
  11. 99 0
      generated/com/miniframe/generate/comm/httpmdoapater/MDO0039Client.java
  12. 25 0
      generated/com/miniframe/generate/comm/mdo/A_MDO0035.java
  13. 25 0
      generated/com/miniframe/generate/comm/mdo/A_MDO0036.java
  14. 38 0
      generated/com/miniframe/generate/comm/mdo/A_MDO0037.java
  15. 25 0
      generated/com/miniframe/generate/comm/mdo/A_MDO0038.java
  16. 25 0
      generated/com/miniframe/generate/comm/mdo/A_MDO0039.java
  17. 26 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0023_ROWS_RECODE.java
  18. 16 3
      generated/com/miniframe/generate/comm/mdo/D_MDO0024_ROWS_RECODE.java
  19. 0 13
      generated/com/miniframe/generate/comm/mdo/D_MDO0034.java
  20. 12 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0035.java
  21. 51 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0036.java
  22. 25 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0037.java
  23. 25 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0038.java
  24. 12 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0039.java
  25. 12 0
      generated/validateform/a_mdo0035Form.xml
  26. 12 0
      generated/validateform/a_mdo0036Form.xml
  27. 12 0
      generated/validateform/a_mdo0037Form.xml
  28. 12 0
      generated/validateform/a_mdo0038Form.xml
  29. 12 0
      generated/validateform/a_mdo0039Form.xml
  30. 12 0
      generated/validateform/d_mdo0036Form.xml
  31. 12 0
      generated/validateform/d_mdo0037Form.xml
  32. 12 0
      generated/validateform/d_mdo0038Form.xml
  33. 2 0
      generated/validator/resources_a_mdo0035Form_validator.properties
  34. 2 0
      generated/validator/resources_a_mdo0035Form_validator_zh_CN.properties
  35. 2 0
      generated/validator/resources_a_mdo0036Form_validator.properties
  36. 2 0
      generated/validator/resources_a_mdo0036Form_validator_zh_CN.properties
  37. 3 0
      generated/validator/resources_a_mdo0037Form_validator.properties
  38. 3 0
      generated/validator/resources_a_mdo0037Form_validator_zh_CN.properties
  39. 2 0
      generated/validator/resources_a_mdo0038Form_validator.properties
  40. 2 0
      generated/validator/resources_a_mdo0038Form_validator_zh_CN.properties
  41. 2 0
      generated/validator/resources_a_mdo0039Form_validator.properties
  42. 2 0
      generated/validator/resources_a_mdo0039Form_validator_zh_CN.properties
  43. 2 0
      generated/validator/resources_d_mdo0023_rows_recodeForm_validator.properties
  44. 2 0
      generated/validator/resources_d_mdo0023_rows_recodeForm_validator_zh_CN.properties
  45. 2 1
      generated/validator/resources_d_mdo0024_rows_recodeForm_validator.properties
  46. 2 1
      generated/validator/resources_d_mdo0024_rows_recodeForm_validator_zh_CN.properties
  47. 1 2
      generated/validator/resources_d_mdo0034Form_validator.properties
  48. 1 2
      generated/validator/resources_d_mdo0034Form_validator_zh_CN.properties
  49. 1 0
      generated/validator/resources_d_mdo0035Form_validator.properties
  50. 1 0
      generated/validator/resources_d_mdo0035Form_validator_zh_CN.properties
  51. 4 0
      generated/validator/resources_d_mdo0036Form_validator.properties
  52. 4 0
      generated/validator/resources_d_mdo0036Form_validator_zh_CN.properties
  53. 2 0
      generated/validator/resources_d_mdo0037Form_validator.properties
  54. 2 0
      generated/validator/resources_d_mdo0037Form_validator_zh_CN.properties
  55. 2 0
      generated/validator/resources_d_mdo0038Form_validator.properties
  56. 2 0
      generated/validator/resources_d_mdo0038Form_validator_zh_CN.properties
  57. 1 0
      generated/validator/resources_d_mdo0039Form_validator.properties
  58. 1 0
      generated/validator/resources_d_mdo0039Form_validator_zh_CN.properties
  59. 46 0
      modelsrc/com/miniframe/model/mdo/MdoProjectConstraint.java
  60. 140 0
      modelsrc/com/miniframe/model/mdo/MdoProjectConstraintSQLBuilder.java
  61. 23 0
      modelsrc/com/miniframe/model/mdo/MdoProjectObjfun.java
  62. 70 0
      modelsrc/com/miniframe/model/mdo/MdoProjectObjfunSQLBuilder.java
  63. 2 1
      modelsrc/com/miniframe/model/mdo/dbconfig/MapperConfig-mdo.xml
  64. 1 1
      modelsrc/com/miniframe/model/system/dbconfig/MapperConfig-system.xml
  65. 10 1
      pom.xml
  66. 2 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0009Service.java
  67. 1 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0010Service.java
  68. 2 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0023Service.java
  69. 1 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0024Service.java
  70. 70 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0035Service.java
  71. 67 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0036Service.java
  72. 70 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0037Service.java
  73. 55 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0038Service.java
  74. 125 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0039Service.java
  75. 262 0
      src/main/java/com/miniframe/modo/temp/TemplateGenerator.java
  76. 68 0
      src/main/java/com/miniframe/modo/temp/problem/Constraint.java
  77. 73 0
      src/main/java/com/miniframe/modo/temp/problem/DesignVariable.java
  78. 31 0
      src/main/java/com/miniframe/modo/temp/problem/HeaderVo.java
  79. 58 0
      src/main/java/com/miniframe/modo/temp/problem/Objective.java
  80. 98 0
      src/main/java/com/miniframe/modo/temp/problem/ProblemVo.java
  81. 31 0
      src/main/java/com/miniframe/modo/temp/problem/Solver.java
  82. 144 0
      src/main/java/com/miniframe/tools/docker/DockerExe.java
  83. 133 0
      src/main/resources/templates/problem.ftl
  84. 4 0
      src/main/resources/templates/run.ftl
  85. 44 0
      src/test/java/com/miniframe/comm/httpmdoapater/MDO0035Test.java
  86. 44 0
      src/test/java/com/miniframe/comm/httpmdoapater/MDO0036Test.java
  87. 44 0
      src/test/java/com/miniframe/comm/httpmdoapater/MDO0037Test.java
  88. 44 0
      src/test/java/com/miniframe/comm/httpmdoapater/MDO0038Test.java
  89. 44 0
      src/test/java/com/miniframe/comm/httpmdoapater/MDO0039Test.java
  90. 2 1
      系统设计/实体Bean/mdo(实体列表).csv
  91. 10 2
      系统设计/系统模块/MDO(西工大系统).csv
  92. 3 1
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0023_D(约束条件查询).csv
  93. 3 2
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0024_D(目标函数查询).csv
  94. 0 1
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0034_D(梯度优化器参数添加修改).csv
  95. 2 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0035_A(删除所有优化器).csv
  96. 1 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0035_D(删除所有优化器).csv
  97. 2 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0036_A(python查询).csv
  98. 4 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0036_D(python查询).csv
  99. 3 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0037_A(python添加修改).csv
  100. 2 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0037_D(python添加修改).csv

+ 5 - 0
dbscript/init/generate/03-functionInit.sql

@@ -31,6 +31,11 @@ INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MD
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0032', '西工大系统','代理优化器参数添加修改',true);
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0033', '西工大系统','梯度优化器参数查询',true);
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0034', '西工大系统','梯度优化器参数添加修改',true);
+INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0035', '西工大系统','删除所有优化器',true);
+INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0036', '西工大系统','python查询',true);
+INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0037', '西工大系统','python添加修改',true);
+INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0038', '西工大系统','python删除',true);
+INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0039', '西工大系统','新版求解v2',true);
 -- 基础系统
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('SYSTEM', '基础系统','系统内部服务',true);
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('A00000', '基础系统','获取图片验证码',true);

+ 112 - 0
generated/com/miniframe/generate/business/mdo/model/MDO0035BaseModel.java

@@ -0,0 +1,112 @@
+package com.miniframe.generate.business.mdo.model;
+
+import java.util.Map;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import com.miniframe.core.BaseMapModel;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.core.ext.HttpMapFormater;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import com.miniframe.generate.global.AppGlobalVariableSysconfig;
+
+import com.miniframe.generate.comm.mdo.A_MDOHEAD;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+import com.miniframe.generate.comm.mdo.A_MDO0035;
+import com.miniframe.generate.comm.mdo.D_MDO0035;
+
+/**
+ * 系统服务,“删除所有优化器”模型类(不要维护,重新生成将覆盖)。
+ */
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class MDO0035BaseModel extends BaseMapModel {
+
+	private static final long serialVersionUID = -1326184831746814093L;
+
+	A_MDOHEAD a_mdohead;//上行头
+	D_MDOHEAD d_mdohead;//下行头
+	A_MDO0035 a_mdo0035;//上行体
+	D_MDO0035 d_mdo0035;//下行体
+
+	public MDO0035BaseModel(){
+		a_mdohead=new A_MDOHEAD();
+		d_mdohead=new D_MDOHEAD();
+		a_mdo0035=new A_MDO0035();
+		d_mdo0035=new D_MDO0035();
+	}
+
+	public void validater() throws Exception {
+		this.a_mdohead.validater();
+		this.a_mdo0035.validater();
+	}
+
+	public void setTransMap(Map map) throws Exception {
+		Map headMap = HttpMapFormater.format(map, A_MDOHEAD.class);
+		this.a_mdohead = UtilTools.map2Obj(headMap, A_MDOHEAD.class);
+		Map bodyMap = HttpMapFormater.format(map, A_MDO0035.class);
+		this.a_mdo0035 = UtilTools.map2Obj(bodyMap, A_MDO0035.class);
+	}
+
+	public Map getTransMap() throws Exception {
+		Map reMap = new LinkedHashMap();
+
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getTransCode())){
+			(this.d_mdohead).setTransCode((this.a_mdohead).getTransCode());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getChannelNo())){
+			(this.d_mdohead).setChannelNo((this.a_mdohead).getChannelNo());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getUserId())){
+			(this.d_mdohead).setUserId((this.a_mdohead).getUserId());
+		}
+        if(UtilTools.isNullOrBlank((this.d_mdohead).getTransTime())){
+            (this.d_mdohead).setTransTime(DateTimeFormatter.ofPattern(AppGlobalVariableSysconfig.DATETIMEFORMAT).format(ZonedDateTime.now()));
+        }
+
+		reMap.putAll(UtilTools.obj2Map(this.d_mdohead));
+		reMap.putAll(UtilTools.obj2Map(this.d_mdo0035));
+
+		return reMap;
+	}
+
+	public A_MDOHEAD getA_mdohead() {
+		return this.a_mdohead;
+	}
+
+	public void setA_mdohead(A_MDOHEAD a_mdohead) {
+		this.a_mdohead=a_mdohead;
+	}
+
+	public D_MDOHEAD getD_mdohead() {
+		return d_mdohead;
+	}
+
+	public void setD_mdohead(D_MDOHEAD d_mdohead) {
+		this.d_mdohead=d_mdohead;
+	}
+
+	public A_MDO0035 getA_mdo0035() {
+		return a_mdo0035;
+	}
+
+	public void setA_mdo0035(A_MDO0035 a_mdo0035) {
+		this.a_mdo0035=a_mdo0035;
+	}
+
+	public D_MDO0035 getD_mdo0035() {
+		return this.d_mdo0035;
+	}
+
+	public void setD_mdo0035(D_MDO0035 d_mdo0035) {
+		this.d_mdo0035=d_mdo0035;
+	}
+
+	@Override
+	public String toString() {
+		try {
+			return UtilTools.obj2Json(this,true);
+		} catch (IOException e) {
+			return "";
+		}
+	}
+}

+ 112 - 0
generated/com/miniframe/generate/business/mdo/model/MDO0036BaseModel.java

@@ -0,0 +1,112 @@
+package com.miniframe.generate.business.mdo.model;
+
+import java.util.Map;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import com.miniframe.core.BaseMapModel;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.core.ext.HttpMapFormater;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import com.miniframe.generate.global.AppGlobalVariableSysconfig;
+
+import com.miniframe.generate.comm.mdo.A_MDOHEAD;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+import com.miniframe.generate.comm.mdo.A_MDO0036;
+import com.miniframe.generate.comm.mdo.D_MDO0036;
+
+/**
+ * 系统服务,“python查询”模型类(不要维护,重新生成将覆盖)。
+ */
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class MDO0036BaseModel extends BaseMapModel {
+
+	private static final long serialVersionUID = -1326184831746814093L;
+
+	A_MDOHEAD a_mdohead;//上行头
+	D_MDOHEAD d_mdohead;//下行头
+	A_MDO0036 a_mdo0036;//上行体
+	D_MDO0036 d_mdo0036;//下行体
+
+	public MDO0036BaseModel(){
+		a_mdohead=new A_MDOHEAD();
+		d_mdohead=new D_MDOHEAD();
+		a_mdo0036=new A_MDO0036();
+		d_mdo0036=new D_MDO0036();
+	}
+
+	public void validater() throws Exception {
+		this.a_mdohead.validater();
+		this.a_mdo0036.validater();
+	}
+
+	public void setTransMap(Map map) throws Exception {
+		Map headMap = HttpMapFormater.format(map, A_MDOHEAD.class);
+		this.a_mdohead = UtilTools.map2Obj(headMap, A_MDOHEAD.class);
+		Map bodyMap = HttpMapFormater.format(map, A_MDO0036.class);
+		this.a_mdo0036 = UtilTools.map2Obj(bodyMap, A_MDO0036.class);
+	}
+
+	public Map getTransMap() throws Exception {
+		Map reMap = new LinkedHashMap();
+
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getTransCode())){
+			(this.d_mdohead).setTransCode((this.a_mdohead).getTransCode());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getChannelNo())){
+			(this.d_mdohead).setChannelNo((this.a_mdohead).getChannelNo());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getUserId())){
+			(this.d_mdohead).setUserId((this.a_mdohead).getUserId());
+		}
+        if(UtilTools.isNullOrBlank((this.d_mdohead).getTransTime())){
+            (this.d_mdohead).setTransTime(DateTimeFormatter.ofPattern(AppGlobalVariableSysconfig.DATETIMEFORMAT).format(ZonedDateTime.now()));
+        }
+
+		reMap.putAll(UtilTools.obj2Map(this.d_mdohead));
+		reMap.putAll(UtilTools.obj2Map(this.d_mdo0036));
+
+		return reMap;
+	}
+
+	public A_MDOHEAD getA_mdohead() {
+		return this.a_mdohead;
+	}
+
+	public void setA_mdohead(A_MDOHEAD a_mdohead) {
+		this.a_mdohead=a_mdohead;
+	}
+
+	public D_MDOHEAD getD_mdohead() {
+		return d_mdohead;
+	}
+
+	public void setD_mdohead(D_MDOHEAD d_mdohead) {
+		this.d_mdohead=d_mdohead;
+	}
+
+	public A_MDO0036 getA_mdo0036() {
+		return a_mdo0036;
+	}
+
+	public void setA_mdo0036(A_MDO0036 a_mdo0036) {
+		this.a_mdo0036=a_mdo0036;
+	}
+
+	public D_MDO0036 getD_mdo0036() {
+		return this.d_mdo0036;
+	}
+
+	public void setD_mdo0036(D_MDO0036 d_mdo0036) {
+		this.d_mdo0036=d_mdo0036;
+	}
+
+	@Override
+	public String toString() {
+		try {
+			return UtilTools.obj2Json(this,true);
+		} catch (IOException e) {
+			return "";
+		}
+	}
+}

+ 112 - 0
generated/com/miniframe/generate/business/mdo/model/MDO0037BaseModel.java

@@ -0,0 +1,112 @@
+package com.miniframe.generate.business.mdo.model;
+
+import java.util.Map;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import com.miniframe.core.BaseMapModel;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.core.ext.HttpMapFormater;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import com.miniframe.generate.global.AppGlobalVariableSysconfig;
+
+import com.miniframe.generate.comm.mdo.A_MDOHEAD;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+import com.miniframe.generate.comm.mdo.A_MDO0037;
+import com.miniframe.generate.comm.mdo.D_MDO0037;
+
+/**
+ * 系统服务,“python添加修改”模型类(不要维护,重新生成将覆盖)。
+ */
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class MDO0037BaseModel extends BaseMapModel {
+
+	private static final long serialVersionUID = -1326184831746814093L;
+
+	A_MDOHEAD a_mdohead;//上行头
+	D_MDOHEAD d_mdohead;//下行头
+	A_MDO0037 a_mdo0037;//上行体
+	D_MDO0037 d_mdo0037;//下行体
+
+	public MDO0037BaseModel(){
+		a_mdohead=new A_MDOHEAD();
+		d_mdohead=new D_MDOHEAD();
+		a_mdo0037=new A_MDO0037();
+		d_mdo0037=new D_MDO0037();
+	}
+
+	public void validater() throws Exception {
+		this.a_mdohead.validater();
+		this.a_mdo0037.validater();
+	}
+
+	public void setTransMap(Map map) throws Exception {
+		Map headMap = HttpMapFormater.format(map, A_MDOHEAD.class);
+		this.a_mdohead = UtilTools.map2Obj(headMap, A_MDOHEAD.class);
+		Map bodyMap = HttpMapFormater.format(map, A_MDO0037.class);
+		this.a_mdo0037 = UtilTools.map2Obj(bodyMap, A_MDO0037.class);
+	}
+
+	public Map getTransMap() throws Exception {
+		Map reMap = new LinkedHashMap();
+
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getTransCode())){
+			(this.d_mdohead).setTransCode((this.a_mdohead).getTransCode());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getChannelNo())){
+			(this.d_mdohead).setChannelNo((this.a_mdohead).getChannelNo());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getUserId())){
+			(this.d_mdohead).setUserId((this.a_mdohead).getUserId());
+		}
+        if(UtilTools.isNullOrBlank((this.d_mdohead).getTransTime())){
+            (this.d_mdohead).setTransTime(DateTimeFormatter.ofPattern(AppGlobalVariableSysconfig.DATETIMEFORMAT).format(ZonedDateTime.now()));
+        }
+
+		reMap.putAll(UtilTools.obj2Map(this.d_mdohead));
+		reMap.putAll(UtilTools.obj2Map(this.d_mdo0037));
+
+		return reMap;
+	}
+
+	public A_MDOHEAD getA_mdohead() {
+		return this.a_mdohead;
+	}
+
+	public void setA_mdohead(A_MDOHEAD a_mdohead) {
+		this.a_mdohead=a_mdohead;
+	}
+
+	public D_MDOHEAD getD_mdohead() {
+		return d_mdohead;
+	}
+
+	public void setD_mdohead(D_MDOHEAD d_mdohead) {
+		this.d_mdohead=d_mdohead;
+	}
+
+	public A_MDO0037 getA_mdo0037() {
+		return a_mdo0037;
+	}
+
+	public void setA_mdo0037(A_MDO0037 a_mdo0037) {
+		this.a_mdo0037=a_mdo0037;
+	}
+
+	public D_MDO0037 getD_mdo0037() {
+		return this.d_mdo0037;
+	}
+
+	public void setD_mdo0037(D_MDO0037 d_mdo0037) {
+		this.d_mdo0037=d_mdo0037;
+	}
+
+	@Override
+	public String toString() {
+		try {
+			return UtilTools.obj2Json(this,true);
+		} catch (IOException e) {
+			return "";
+		}
+	}
+}

+ 112 - 0
generated/com/miniframe/generate/business/mdo/model/MDO0038BaseModel.java

@@ -0,0 +1,112 @@
+package com.miniframe.generate.business.mdo.model;
+
+import java.util.Map;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import com.miniframe.core.BaseMapModel;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.core.ext.HttpMapFormater;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import com.miniframe.generate.global.AppGlobalVariableSysconfig;
+
+import com.miniframe.generate.comm.mdo.A_MDOHEAD;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+import com.miniframe.generate.comm.mdo.A_MDO0038;
+import com.miniframe.generate.comm.mdo.D_MDO0038;
+
+/**
+ * 系统服务,“python删除”模型类(不要维护,重新生成将覆盖)。
+ */
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class MDO0038BaseModel extends BaseMapModel {
+
+	private static final long serialVersionUID = -1326184831746814093L;
+
+	A_MDOHEAD a_mdohead;//上行头
+	D_MDOHEAD d_mdohead;//下行头
+	A_MDO0038 a_mdo0038;//上行体
+	D_MDO0038 d_mdo0038;//下行体
+
+	public MDO0038BaseModel(){
+		a_mdohead=new A_MDOHEAD();
+		d_mdohead=new D_MDOHEAD();
+		a_mdo0038=new A_MDO0038();
+		d_mdo0038=new D_MDO0038();
+	}
+
+	public void validater() throws Exception {
+		this.a_mdohead.validater();
+		this.a_mdo0038.validater();
+	}
+
+	public void setTransMap(Map map) throws Exception {
+		Map headMap = HttpMapFormater.format(map, A_MDOHEAD.class);
+		this.a_mdohead = UtilTools.map2Obj(headMap, A_MDOHEAD.class);
+		Map bodyMap = HttpMapFormater.format(map, A_MDO0038.class);
+		this.a_mdo0038 = UtilTools.map2Obj(bodyMap, A_MDO0038.class);
+	}
+
+	public Map getTransMap() throws Exception {
+		Map reMap = new LinkedHashMap();
+
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getTransCode())){
+			(this.d_mdohead).setTransCode((this.a_mdohead).getTransCode());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getChannelNo())){
+			(this.d_mdohead).setChannelNo((this.a_mdohead).getChannelNo());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getUserId())){
+			(this.d_mdohead).setUserId((this.a_mdohead).getUserId());
+		}
+        if(UtilTools.isNullOrBlank((this.d_mdohead).getTransTime())){
+            (this.d_mdohead).setTransTime(DateTimeFormatter.ofPattern(AppGlobalVariableSysconfig.DATETIMEFORMAT).format(ZonedDateTime.now()));
+        }
+
+		reMap.putAll(UtilTools.obj2Map(this.d_mdohead));
+		reMap.putAll(UtilTools.obj2Map(this.d_mdo0038));
+
+		return reMap;
+	}
+
+	public A_MDOHEAD getA_mdohead() {
+		return this.a_mdohead;
+	}
+
+	public void setA_mdohead(A_MDOHEAD a_mdohead) {
+		this.a_mdohead=a_mdohead;
+	}
+
+	public D_MDOHEAD getD_mdohead() {
+		return d_mdohead;
+	}
+
+	public void setD_mdohead(D_MDOHEAD d_mdohead) {
+		this.d_mdohead=d_mdohead;
+	}
+
+	public A_MDO0038 getA_mdo0038() {
+		return a_mdo0038;
+	}
+
+	public void setA_mdo0038(A_MDO0038 a_mdo0038) {
+		this.a_mdo0038=a_mdo0038;
+	}
+
+	public D_MDO0038 getD_mdo0038() {
+		return this.d_mdo0038;
+	}
+
+	public void setD_mdo0038(D_MDO0038 d_mdo0038) {
+		this.d_mdo0038=d_mdo0038;
+	}
+
+	@Override
+	public String toString() {
+		try {
+			return UtilTools.obj2Json(this,true);
+		} catch (IOException e) {
+			return "";
+		}
+	}
+}

+ 112 - 0
generated/com/miniframe/generate/business/mdo/model/MDO0039BaseModel.java

@@ -0,0 +1,112 @@
+package com.miniframe.generate.business.mdo.model;
+
+import java.util.Map;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import com.miniframe.core.BaseMapModel;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.core.ext.HttpMapFormater;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import com.miniframe.generate.global.AppGlobalVariableSysconfig;
+
+import com.miniframe.generate.comm.mdo.A_MDOHEAD;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+import com.miniframe.generate.comm.mdo.A_MDO0039;
+import com.miniframe.generate.comm.mdo.D_MDO0039;
+
+/**
+ * 系统服务,“新版求解v2”模型类(不要维护,重新生成将覆盖)。
+ */
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class MDO0039BaseModel extends BaseMapModel {
+
+	private static final long serialVersionUID = -1326184831746814093L;
+
+	A_MDOHEAD a_mdohead;//上行头
+	D_MDOHEAD d_mdohead;//下行头
+	A_MDO0039 a_mdo0039;//上行体
+	D_MDO0039 d_mdo0039;//下行体
+
+	public MDO0039BaseModel(){
+		a_mdohead=new A_MDOHEAD();
+		d_mdohead=new D_MDOHEAD();
+		a_mdo0039=new A_MDO0039();
+		d_mdo0039=new D_MDO0039();
+	}
+
+	public void validater() throws Exception {
+		this.a_mdohead.validater();
+		this.a_mdo0039.validater();
+	}
+
+	public void setTransMap(Map map) throws Exception {
+		Map headMap = HttpMapFormater.format(map, A_MDOHEAD.class);
+		this.a_mdohead = UtilTools.map2Obj(headMap, A_MDOHEAD.class);
+		Map bodyMap = HttpMapFormater.format(map, A_MDO0039.class);
+		this.a_mdo0039 = UtilTools.map2Obj(bodyMap, A_MDO0039.class);
+	}
+
+	public Map getTransMap() throws Exception {
+		Map reMap = new LinkedHashMap();
+
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getTransCode())){
+			(this.d_mdohead).setTransCode((this.a_mdohead).getTransCode());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getChannelNo())){
+			(this.d_mdohead).setChannelNo((this.a_mdohead).getChannelNo());
+		}
+		if(UtilTools.isNullOrBlank((this.d_mdohead).getUserId())){
+			(this.d_mdohead).setUserId((this.a_mdohead).getUserId());
+		}
+        if(UtilTools.isNullOrBlank((this.d_mdohead).getTransTime())){
+            (this.d_mdohead).setTransTime(DateTimeFormatter.ofPattern(AppGlobalVariableSysconfig.DATETIMEFORMAT).format(ZonedDateTime.now()));
+        }
+
+		reMap.putAll(UtilTools.obj2Map(this.d_mdohead));
+		reMap.putAll(UtilTools.obj2Map(this.d_mdo0039));
+
+		return reMap;
+	}
+
+	public A_MDOHEAD getA_mdohead() {
+		return this.a_mdohead;
+	}
+
+	public void setA_mdohead(A_MDOHEAD a_mdohead) {
+		this.a_mdohead=a_mdohead;
+	}
+
+	public D_MDOHEAD getD_mdohead() {
+		return d_mdohead;
+	}
+
+	public void setD_mdohead(D_MDOHEAD d_mdohead) {
+		this.d_mdohead=d_mdohead;
+	}
+
+	public A_MDO0039 getA_mdo0039() {
+		return a_mdo0039;
+	}
+
+	public void setA_mdo0039(A_MDO0039 a_mdo0039) {
+		this.a_mdo0039=a_mdo0039;
+	}
+
+	public D_MDO0039 getD_mdo0039() {
+		return this.d_mdo0039;
+	}
+
+	public void setD_mdo0039(D_MDO0039 d_mdo0039) {
+		this.d_mdo0039=d_mdo0039;
+	}
+
+	@Override
+	public String toString() {
+		try {
+			return UtilTools.obj2Json(this,true);
+		} catch (IOException e) {
+			return "";
+		}
+	}
+}

+ 99 - 0
generated/com/miniframe/generate/comm/httpmdoapater/MDO0035Client.java

@@ -0,0 +1,99 @@
+package com.miniframe.generate.comm.httpmdoapater;
+
+import com.miniframe.spring.httpclient.MFHttpRespInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import com.miniframe.core.Transmitter;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.comm.mdo.D_MDO0035;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+
+import com.miniframe.generate.business.mdo.model.MDO0035BaseModel;
+
+public class MDO0035Client {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0035Client.class);
+	private MFHttpRespInfo respInfo;
+
+	public MFHttpRespInfo getRespInfo(){
+		return respInfo;
+	}
+
+	/**
+	 * 调用 [系统服务->删除所有优化器((MDO0035)]的通讯接口
+	 * @param model 接口模型
+	 * @param extMap 扩展输入
+	 * @param url 请求地址
+	 * @return model 接口模型
+	 * @throws Exception
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0035BaseModel execute(MDO0035BaseModel model,final Map extMap,final String url) throws Exception {
+		this.executeToRespInfo(model,extMap,url);
+		return model;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0035BaseModel execute(MDO0035BaseModel model,final Map extMap) throws Exception {
+		this.executeToRespInfo(model,extMap,null);
+		return model;
+	}
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MFHttpRespInfo executeToRespInfo(MDO0035BaseModel model,final Map extMap,final String url) throws Exception {
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0035BaseModel) - start");
+		}
+
+		if(UtilTools.isNullOrBlank(model.getA_mdohead().getTransCode())){
+			model.getA_mdohead().setTransCode("MDO0035");
+		}
+
+		Map inMap = new LinkedHashMap();
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdohead()));
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdo0035()));
+		if(extMap!=null && extMap.size()>0){
+			inMap.putAll(extMap);
+		}
+
+		Transmitter httpmdoApater = (Transmitter) UtilTools.getBean("httpmdoApater");
+		MFHttpRespInfo respInfo;
+		if(UtilTools.isNotNullAndBlank(url)){
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap,url);
+		}else{
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap);
+		}
+
+		if(respInfo!=null) {
+			Map outMap=respInfo.getParamMap();
+			D_MDOHEAD d_mdohead =  UtilTools.map2Obj(outMap, D_MDOHEAD.class);
+			D_MDO0035 d_mdo0035 =  UtilTools.map2Obj(outMap, D_MDO0035.class);
+			model.setD_mdohead(d_mdohead);
+			model.setD_mdo0035(d_mdo0035);
+
+
+		}
+
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0035BaseModel) - end");
+		}
+
+        this.respInfo=respInfo;
+
+		return respInfo;
+	}
+
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0035BaseModel execute(MDO0035BaseModel model) throws Exception {
+		return this.execute(model,null,null);
+	}
+
+
+}

+ 99 - 0
generated/com/miniframe/generate/comm/httpmdoapater/MDO0036Client.java

@@ -0,0 +1,99 @@
+package com.miniframe.generate.comm.httpmdoapater;
+
+import com.miniframe.spring.httpclient.MFHttpRespInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import com.miniframe.core.Transmitter;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.comm.mdo.D_MDO0036;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+
+import com.miniframe.generate.business.mdo.model.MDO0036BaseModel;
+
+public class MDO0036Client {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0036Client.class);
+	private MFHttpRespInfo respInfo;
+
+	public MFHttpRespInfo getRespInfo(){
+		return respInfo;
+	}
+
+	/**
+	 * 调用 [系统服务->python查询((MDO0036)]的通讯接口
+	 * @param model 接口模型
+	 * @param extMap 扩展输入
+	 * @param url 请求地址
+	 * @return model 接口模型
+	 * @throws Exception
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0036BaseModel execute(MDO0036BaseModel model,final Map extMap,final String url) throws Exception {
+		this.executeToRespInfo(model,extMap,url);
+		return model;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0036BaseModel execute(MDO0036BaseModel model,final Map extMap) throws Exception {
+		this.executeToRespInfo(model,extMap,null);
+		return model;
+	}
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MFHttpRespInfo executeToRespInfo(MDO0036BaseModel model,final Map extMap,final String url) throws Exception {
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0036BaseModel) - start");
+		}
+
+		if(UtilTools.isNullOrBlank(model.getA_mdohead().getTransCode())){
+			model.getA_mdohead().setTransCode("MDO0036");
+		}
+
+		Map inMap = new LinkedHashMap();
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdohead()));
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdo0036()));
+		if(extMap!=null && extMap.size()>0){
+			inMap.putAll(extMap);
+		}
+
+		Transmitter httpmdoApater = (Transmitter) UtilTools.getBean("httpmdoApater");
+		MFHttpRespInfo respInfo;
+		if(UtilTools.isNotNullAndBlank(url)){
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap,url);
+		}else{
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap);
+		}
+
+		if(respInfo!=null) {
+			Map outMap=respInfo.getParamMap();
+			D_MDOHEAD d_mdohead =  UtilTools.map2Obj(outMap, D_MDOHEAD.class);
+			D_MDO0036 d_mdo0036 =  UtilTools.map2Obj(outMap, D_MDO0036.class);
+			model.setD_mdohead(d_mdohead);
+			model.setD_mdo0036(d_mdo0036);
+
+
+		}
+
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0036BaseModel) - end");
+		}
+
+        this.respInfo=respInfo;
+
+		return respInfo;
+	}
+
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0036BaseModel execute(MDO0036BaseModel model) throws Exception {
+		return this.execute(model,null,null);
+	}
+
+
+}

+ 99 - 0
generated/com/miniframe/generate/comm/httpmdoapater/MDO0037Client.java

@@ -0,0 +1,99 @@
+package com.miniframe.generate.comm.httpmdoapater;
+
+import com.miniframe.spring.httpclient.MFHttpRespInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import com.miniframe.core.Transmitter;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.comm.mdo.D_MDO0037;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+
+import com.miniframe.generate.business.mdo.model.MDO0037BaseModel;
+
+public class MDO0037Client {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0037Client.class);
+	private MFHttpRespInfo respInfo;
+
+	public MFHttpRespInfo getRespInfo(){
+		return respInfo;
+	}
+
+	/**
+	 * 调用 [系统服务->python添加修改((MDO0037)]的通讯接口
+	 * @param model 接口模型
+	 * @param extMap 扩展输入
+	 * @param url 请求地址
+	 * @return model 接口模型
+	 * @throws Exception
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0037BaseModel execute(MDO0037BaseModel model,final Map extMap,final String url) throws Exception {
+		this.executeToRespInfo(model,extMap,url);
+		return model;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0037BaseModel execute(MDO0037BaseModel model,final Map extMap) throws Exception {
+		this.executeToRespInfo(model,extMap,null);
+		return model;
+	}
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MFHttpRespInfo executeToRespInfo(MDO0037BaseModel model,final Map extMap,final String url) throws Exception {
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0037BaseModel) - start");
+		}
+
+		if(UtilTools.isNullOrBlank(model.getA_mdohead().getTransCode())){
+			model.getA_mdohead().setTransCode("MDO0037");
+		}
+
+		Map inMap = new LinkedHashMap();
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdohead()));
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdo0037()));
+		if(extMap!=null && extMap.size()>0){
+			inMap.putAll(extMap);
+		}
+
+		Transmitter httpmdoApater = (Transmitter) UtilTools.getBean("httpmdoApater");
+		MFHttpRespInfo respInfo;
+		if(UtilTools.isNotNullAndBlank(url)){
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap,url);
+		}else{
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap);
+		}
+
+		if(respInfo!=null) {
+			Map outMap=respInfo.getParamMap();
+			D_MDOHEAD d_mdohead =  UtilTools.map2Obj(outMap, D_MDOHEAD.class);
+			D_MDO0037 d_mdo0037 =  UtilTools.map2Obj(outMap, D_MDO0037.class);
+			model.setD_mdohead(d_mdohead);
+			model.setD_mdo0037(d_mdo0037);
+
+
+		}
+
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0037BaseModel) - end");
+		}
+
+        this.respInfo=respInfo;
+
+		return respInfo;
+	}
+
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0037BaseModel execute(MDO0037BaseModel model) throws Exception {
+		return this.execute(model,null,null);
+	}
+
+
+}

+ 99 - 0
generated/com/miniframe/generate/comm/httpmdoapater/MDO0038Client.java

@@ -0,0 +1,99 @@
+package com.miniframe.generate.comm.httpmdoapater;
+
+import com.miniframe.spring.httpclient.MFHttpRespInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import com.miniframe.core.Transmitter;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.comm.mdo.D_MDO0038;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+
+import com.miniframe.generate.business.mdo.model.MDO0038BaseModel;
+
+public class MDO0038Client {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0038Client.class);
+	private MFHttpRespInfo respInfo;
+
+	public MFHttpRespInfo getRespInfo(){
+		return respInfo;
+	}
+
+	/**
+	 * 调用 [系统服务->python删除((MDO0038)]的通讯接口
+	 * @param model 接口模型
+	 * @param extMap 扩展输入
+	 * @param url 请求地址
+	 * @return model 接口模型
+	 * @throws Exception
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0038BaseModel execute(MDO0038BaseModel model,final Map extMap,final String url) throws Exception {
+		this.executeToRespInfo(model,extMap,url);
+		return model;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0038BaseModel execute(MDO0038BaseModel model,final Map extMap) throws Exception {
+		this.executeToRespInfo(model,extMap,null);
+		return model;
+	}
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MFHttpRespInfo executeToRespInfo(MDO0038BaseModel model,final Map extMap,final String url) throws Exception {
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0038BaseModel) - start");
+		}
+
+		if(UtilTools.isNullOrBlank(model.getA_mdohead().getTransCode())){
+			model.getA_mdohead().setTransCode("MDO0038");
+		}
+
+		Map inMap = new LinkedHashMap();
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdohead()));
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdo0038()));
+		if(extMap!=null && extMap.size()>0){
+			inMap.putAll(extMap);
+		}
+
+		Transmitter httpmdoApater = (Transmitter) UtilTools.getBean("httpmdoApater");
+		MFHttpRespInfo respInfo;
+		if(UtilTools.isNotNullAndBlank(url)){
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap,url);
+		}else{
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap);
+		}
+
+		if(respInfo!=null) {
+			Map outMap=respInfo.getParamMap();
+			D_MDOHEAD d_mdohead =  UtilTools.map2Obj(outMap, D_MDOHEAD.class);
+			D_MDO0038 d_mdo0038 =  UtilTools.map2Obj(outMap, D_MDO0038.class);
+			model.setD_mdohead(d_mdohead);
+			model.setD_mdo0038(d_mdo0038);
+
+
+		}
+
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0038BaseModel) - end");
+		}
+
+        this.respInfo=respInfo;
+
+		return respInfo;
+	}
+
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0038BaseModel execute(MDO0038BaseModel model) throws Exception {
+		return this.execute(model,null,null);
+	}
+
+
+}

+ 99 - 0
generated/com/miniframe/generate/comm/httpmdoapater/MDO0039Client.java

@@ -0,0 +1,99 @@
+package com.miniframe.generate.comm.httpmdoapater;
+
+import com.miniframe.spring.httpclient.MFHttpRespInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import com.miniframe.core.Transmitter;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.comm.mdo.D_MDO0039;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+
+import com.miniframe.generate.business.mdo.model.MDO0039BaseModel;
+
+public class MDO0039Client {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0039Client.class);
+	private MFHttpRespInfo respInfo;
+
+	public MFHttpRespInfo getRespInfo(){
+		return respInfo;
+	}
+
+	/**
+	 * 调用 [系统服务->新版求解v2((MDO0039)]的通讯接口
+	 * @param model 接口模型
+	 * @param extMap 扩展输入
+	 * @param url 请求地址
+	 * @return model 接口模型
+	 * @throws Exception
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0039BaseModel execute(MDO0039BaseModel model,final Map extMap,final String url) throws Exception {
+		this.executeToRespInfo(model,extMap,url);
+		return model;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0039BaseModel execute(MDO0039BaseModel model,final Map extMap) throws Exception {
+		this.executeToRespInfo(model,extMap,null);
+		return model;
+	}
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MFHttpRespInfo executeToRespInfo(MDO0039BaseModel model,final Map extMap,final String url) throws Exception {
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0039BaseModel) - start");
+		}
+
+		if(UtilTools.isNullOrBlank(model.getA_mdohead().getTransCode())){
+			model.getA_mdohead().setTransCode("MDO0039");
+		}
+
+		Map inMap = new LinkedHashMap();
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdohead()));
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdo0039()));
+		if(extMap!=null && extMap.size()>0){
+			inMap.putAll(extMap);
+		}
+
+		Transmitter httpmdoApater = (Transmitter) UtilTools.getBean("httpmdoApater");
+		MFHttpRespInfo respInfo;
+		if(UtilTools.isNotNullAndBlank(url)){
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap,url);
+		}else{
+			respInfo = httpmdoApater.doPostDataToRespInfo(inMap);
+		}
+
+		if(respInfo!=null) {
+			Map outMap=respInfo.getParamMap();
+			D_MDOHEAD d_mdohead =  UtilTools.map2Obj(outMap, D_MDOHEAD.class);
+			D_MDO0039 d_mdo0039 =  UtilTools.map2Obj(outMap, D_MDO0039.class);
+			model.setD_mdohead(d_mdohead);
+			model.setD_mdo0039(d_mdo0039);
+
+
+		}
+
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0039BaseModel) - end");
+		}
+
+        this.respInfo=respInfo;
+
+		return respInfo;
+	}
+
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0039BaseModel execute(MDO0039BaseModel model) throws Exception {
+		return this.execute(model,null,null);
+	}
+
+
+}

+ 25 - 0
generated/com/miniframe/generate/comm/mdo/A_MDO0035.java

@@ -0,0 +1,25 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * 删除所有优化器
+ */
+public class A_MDO0035 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String pid;//项目ID
+	/**
+	 *项目ID
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目ID
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+}

+ 25 - 0
generated/com/miniframe/generate/comm/mdo/A_MDO0036.java

@@ -0,0 +1,25 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * python查询
+ */
+public class A_MDO0036 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String pid;//项目ID
+	/**
+	 *项目ID
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目ID
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+}

+ 38 - 0
generated/com/miniframe/generate/comm/mdo/A_MDO0037.java

@@ -0,0 +1,38 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * python添加修改
+ */
+public class A_MDO0037 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String pid;//项目ID
+	/**
+	 *项目ID
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目ID
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+	String python;//代码
+	/**
+	 *代码
+	 */
+	public void setPython(String python) {
+		this.python=python;
+	}
+	/**
+	 *代码
+	 */
+	public String getPython() {
+		return this.python;
+	}
+}

+ 25 - 0
generated/com/miniframe/generate/comm/mdo/A_MDO0038.java

@@ -0,0 +1,25 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * python删除
+ */
+public class A_MDO0038 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String pid;//项目ID
+	/**
+	 *项目ID
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目ID
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+}

+ 25 - 0
generated/com/miniframe/generate/comm/mdo/A_MDO0039.java

@@ -0,0 +1,25 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * 新版求解v2
+ */
+public class A_MDO0039 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String pid;//项目ID
+	/**
+	 *项目ID
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目ID
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+}

+ 26 - 0
generated/com/miniframe/generate/comm/mdo/D_MDO0023_ROWS_RECODE.java

@@ -74,4 +74,30 @@ public class D_MDO0023_ROWS_RECODE extends BaseMapModel implements Serializable
 	public String getPid() {
 		return this.pid;
 	}
+	String upper;//上线值
+	/**
+	 *上线值
+	 */
+	public void setUpper(String upper) {
+		this.upper=upper;
+	}
+	/**
+	 *上线值
+	 */
+	public String getUpper() {
+		return this.upper;
+	}
+	String lower;//下线值
+	/**
+	 *下线值
+	 */
+	public void setLower(String lower) {
+		this.lower=lower;
+	}
+	/**
+	 *下线值
+	 */
+	public String getLower() {
+		return this.lower;
+	}
 }

+ 16 - 3
generated/com/miniframe/generate/comm/mdo/D_MDO0024_ROWS_RECODE.java

@@ -35,15 +35,15 @@ public class D_MDO0024_ROWS_RECODE extends BaseMapModel implements Serializable
 	public String getName() {
 		return this.name;
 	}
-	String optdir;//优化方向
+	String optdir;//优化方向 -1最大化 1最小化
 	/**
-	 *优化方向
+	 *优化方向 -1最大化 1最小化
 	 */
 	public void setOptdir(String optdir) {
 		this.optdir=optdir;
 	}
 	/**
-	 *优化方向
+	 *优化方向 -1最大化 1最小化
 	 */
 	public String getOptdir() {
 		return this.optdir;
@@ -113,4 +113,17 @@ public class D_MDO0024_ROWS_RECODE extends BaseMapModel implements Serializable
 	public String getPid() {
 		return this.pid;
 	}
+	String reference;//基准值
+	/**
+	 *基准值
+	 */
+	public void setReference(String reference) {
+		this.reference=reference;
+	}
+	/**
+	 *基准值
+	 */
+	public String getReference() {
+		return this.reference;
+	}
 }

+ 0 - 13
generated/com/miniframe/generate/comm/mdo/D_MDO0034.java

@@ -9,17 +9,4 @@ import java.io.Serializable;
  */
 public class D_MDO0034 extends BaseMapModel implements Serializable {
 	private static final long serialVersionUID = -1463838678425832212L;
-	String pid;//项目ID
-	/**
-	 *项目ID
-	 */
-	public void setPid(String pid) {
-		this.pid=pid;
-	}
-	/**
-	 *项目ID
-	 */
-	public String getPid() {
-		return this.pid;
-	}
 }

+ 12 - 0
generated/com/miniframe/generate/comm/mdo/D_MDO0035.java

@@ -0,0 +1,12 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * 删除所有优化器
+ */
+public class D_MDO0035 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+}

+ 51 - 0
generated/com/miniframe/generate/comm/mdo/D_MDO0036.java

@@ -0,0 +1,51 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * python查询
+ */
+public class D_MDO0036 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String pid;//项目ID
+	/**
+	 *项目ID
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目ID
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+	String pythonid;//PythonID
+	/**
+	 *PythonID
+	 */
+	public void setPythonid(String pythonid) {
+		this.pythonid=pythonid;
+	}
+	/**
+	 *PythonID
+	 */
+	public String getPythonid() {
+		return this.pythonid;
+	}
+	String ptython;//代码
+	/**
+	 *代码
+	 */
+	public void setPtython(String ptython) {
+		this.ptython=ptython;
+	}
+	/**
+	 *代码
+	 */
+	public String getPtython() {
+		return this.ptython;
+	}
+}

+ 25 - 0
generated/com/miniframe/generate/comm/mdo/D_MDO0037.java

@@ -0,0 +1,25 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * python添加修改
+ */
+public class D_MDO0037 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String pid;//项目ID
+	/**
+	 *项目ID
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目ID
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+}

+ 25 - 0
generated/com/miniframe/generate/comm/mdo/D_MDO0038.java

@@ -0,0 +1,25 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * python删除
+ */
+public class D_MDO0038 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String pid;//项目ID
+	/**
+	 *项目ID
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目ID
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+}

+ 12 - 0
generated/com/miniframe/generate/comm/mdo/D_MDO0039.java

@@ -0,0 +1,12 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * 新版求解v2
+ */
+public class D_MDO0039 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+}

+ 12 - 0
generated/validateform/a_mdo0035Form.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+<!-- 删除所有优化器Form配置文件系统生成请勿修改,否则重新生成将覆盖 -->
+<form-validation>
+<formset>
+<form name="a_mdo0035Form">
+<field property="pid" depends="required">
+    <arg0 key="a_mdo0035.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/a_mdo0036Form.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+<!-- python查询Form配置文件系统生成请勿修改,否则重新生成将覆盖 -->
+<form-validation>
+<formset>
+<form name="a_mdo0036Form">
+<field property="pid" depends="required">
+    <arg0 key="a_mdo0036.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/a_mdo0037Form.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+<!-- python添加修改Form配置文件系统生成请勿修改,否则重新生成将覆盖 -->
+<form-validation>
+<formset>
+<form name="a_mdo0037Form">
+<field property="pid" depends="required">
+    <arg0 key="a_mdo0037.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/a_mdo0038Form.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+<!-- python删除Form配置文件系统生成请勿修改,否则重新生成将覆盖 -->
+<form-validation>
+<formset>
+<form name="a_mdo0038Form">
+<field property="pid" depends="required">
+    <arg0 key="a_mdo0038.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/a_mdo0039Form.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+<!-- 新版求解v2Form配置文件系统生成请勿修改,否则重新生成将覆盖 -->
+<form-validation>
+<formset>
+<form name="a_mdo0039Form">
+<field property="pid" depends="required">
+    <arg0 key="a_mdo0039.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/d_mdo0036Form.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+<!-- python查询Form配置文件系统生成请勿修改,否则重新生成将覆盖 -->
+<form-validation>
+<formset>
+<form name="d_mdo0036Form">
+<field property="pid" depends="required">
+    <arg0 key="d_mdo0036.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/d_mdo0037Form.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+<!-- python添加修改Form配置文件系统生成请勿修改,否则重新生成将覆盖 -->
+<form-validation>
+<formset>
+<form name="d_mdo0037Form">
+<field property="pid" depends="required">
+    <arg0 key="d_mdo0037.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/d_mdo0038Form.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+<!-- python删除Form配置文件系统生成请勿修改,否则重新生成将覆盖 -->
+<form-validation>
+<formset>
+<form name="d_mdo0038Form">
+<field property="pid" depends="required">
+    <arg0 key="d_mdo0038.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 2 - 0
generated/validator/resources_a_mdo0035Form_validator.properties

@@ -0,0 +1,2 @@
+a_mdo0035.pid = \u9879\u76EEID
+a_mdo0035Form = true

+ 2 - 0
generated/validator/resources_a_mdo0035Form_validator_zh_CN.properties

@@ -0,0 +1,2 @@
+a_mdo0035.pid = \u9879\u76EEID
+a_mdo0035Form = true

+ 2 - 0
generated/validator/resources_a_mdo0036Form_validator.properties

@@ -0,0 +1,2 @@
+a_mdo0036.pid = \u9879\u76EEID
+a_mdo0036Form = true

+ 2 - 0
generated/validator/resources_a_mdo0036Form_validator_zh_CN.properties

@@ -0,0 +1,2 @@
+a_mdo0036.pid = \u9879\u76EEID
+a_mdo0036Form = true

+ 3 - 0
generated/validator/resources_a_mdo0037Form_validator.properties

@@ -0,0 +1,3 @@
+a_mdo0037.pid = \u9879\u76EEID
+a_mdo0037.python = \u4EE3\u7801
+a_mdo0037Form = true

+ 3 - 0
generated/validator/resources_a_mdo0037Form_validator_zh_CN.properties

@@ -0,0 +1,3 @@
+a_mdo0037.pid = \u9879\u76EEID
+a_mdo0037.python = \u4EE3\u7801
+a_mdo0037Form = true

+ 2 - 0
generated/validator/resources_a_mdo0038Form_validator.properties

@@ -0,0 +1,2 @@
+a_mdo0038.pid = \u9879\u76EEID
+a_mdo0038Form = true

+ 2 - 0
generated/validator/resources_a_mdo0038Form_validator_zh_CN.properties

@@ -0,0 +1,2 @@
+a_mdo0038.pid = \u9879\u76EEID
+a_mdo0038Form = true

+ 2 - 0
generated/validator/resources_a_mdo0039Form_validator.properties

@@ -0,0 +1,2 @@
+a_mdo0039.pid = \u9879\u76EEID
+a_mdo0039Form = true

+ 2 - 0
generated/validator/resources_a_mdo0039Form_validator_zh_CN.properties

@@ -0,0 +1,2 @@
+a_mdo0039.pid = \u9879\u76EEID
+a_mdo0039Form = true

+ 2 - 0
generated/validator/resources_d_mdo0023_rows_recodeForm_validator.properties

@@ -3,4 +3,6 @@ d_mdo0023_rows_recode.name = \u7EA6\u675F\u540D\u79F0
 d_mdo0023_rows_recode.con = \u7EA6\u675F\u5173\u7CFB
 d_mdo0023_rows_recode.reference = \u57FA\u51C6\u503C
 d_mdo0023_rows_recode.pid = \u9879\u76EE
+d_mdo0023_rows_recode.upper = \u4E0A\u7EBF\u503C
+d_mdo0023_rows_recode.lower = \u4E0B\u7EBF\u503C
 d_mdo0023_rows_recodeForm = true

+ 2 - 0
generated/validator/resources_d_mdo0023_rows_recodeForm_validator_zh_CN.properties

@@ -3,4 +3,6 @@ d_mdo0023_rows_recode.name = \u7EA6\u675F\u540D\u79F0
 d_mdo0023_rows_recode.con = \u7EA6\u675F\u5173\u7CFB
 d_mdo0023_rows_recode.reference = \u57FA\u51C6\u503C
 d_mdo0023_rows_recode.pid = \u9879\u76EE
+d_mdo0023_rows_recode.upper = \u4E0A\u7EBF\u503C
+d_mdo0023_rows_recode.lower = \u4E0B\u7EBF\u503C
 d_mdo0023_rows_recodeForm = true

+ 2 - 1
generated/validator/resources_d_mdo0024_rows_recodeForm_validator.properties

@@ -1,9 +1,10 @@
 d_mdo0024_rows_recode.fid = \u76EE\u6807\u51FD\u6570ID
 d_mdo0024_rows_recode.name = \u76EE\u6807\u540D\u79F0
-d_mdo0024_rows_recode.optdir = \u4F18\u5316\u65B9\u5411
+d_mdo0024_rows_recode.optdir = \u4F18\u5316\u65B9\u5411-1\u6700\u5927\u53161\u6700\u5C0F\u5316
 d_mdo0024_rows_recode.weight = \u6743\u91CD\u7CFB\u6570
 d_mdo0024_rows_recode.scaling = \u6570\u636E\u7F29\u653E
 d_mdo0024_rows_recode.factor = \u7F29\u653E\u56E0\u5B50
 d_mdo0024_rows_recode.remark = \u8BF4\u660E
 d_mdo0024_rows_recode.pid = \u9879\u76EE
+d_mdo0024_rows_recode.reference = \u57FA\u51C6\u503C
 d_mdo0024_rows_recodeForm = true

+ 2 - 1
generated/validator/resources_d_mdo0024_rows_recodeForm_validator_zh_CN.properties

@@ -1,9 +1,10 @@
 d_mdo0024_rows_recode.fid = \u76EE\u6807\u51FD\u6570ID
 d_mdo0024_rows_recode.name = \u76EE\u6807\u540D\u79F0
-d_mdo0024_rows_recode.optdir = \u4F18\u5316\u65B9\u5411
+d_mdo0024_rows_recode.optdir = \u4F18\u5316\u65B9\u5411-1\u6700\u5927\u53161\u6700\u5C0F\u5316
 d_mdo0024_rows_recode.weight = \u6743\u91CD\u7CFB\u6570
 d_mdo0024_rows_recode.scaling = \u6570\u636E\u7F29\u653E
 d_mdo0024_rows_recode.factor = \u7F29\u653E\u56E0\u5B50
 d_mdo0024_rows_recode.remark = \u8BF4\u660E
 d_mdo0024_rows_recode.pid = \u9879\u76EE
+d_mdo0024_rows_recode.reference = \u57FA\u51C6\u503C
 d_mdo0024_rows_recodeForm = true

+ 1 - 2
generated/validator/resources_d_mdo0034Form_validator.properties

@@ -1,2 +1 @@
-d_mdo0034.pid = \u9879\u76EEID
-d_mdo0034Form = true
+d_mdo0034Form = false

+ 1 - 2
generated/validator/resources_d_mdo0034Form_validator_zh_CN.properties

@@ -1,2 +1 @@
-d_mdo0034.pid = \u9879\u76EEID
-d_mdo0034Form = true
+d_mdo0034Form = false

+ 1 - 0
generated/validator/resources_d_mdo0035Form_validator.properties

@@ -0,0 +1 @@
+d_mdo0035Form = false

+ 1 - 0
generated/validator/resources_d_mdo0035Form_validator_zh_CN.properties

@@ -0,0 +1 @@
+d_mdo0035Form = false

+ 4 - 0
generated/validator/resources_d_mdo0036Form_validator.properties

@@ -0,0 +1,4 @@
+d_mdo0036.pid = \u9879\u76EEID
+d_mdo0036.pythonid = PythonID
+d_mdo0036.ptython = \u4EE3\u7801
+d_mdo0036Form = true

+ 4 - 0
generated/validator/resources_d_mdo0036Form_validator_zh_CN.properties

@@ -0,0 +1,4 @@
+d_mdo0036.pid = \u9879\u76EEID
+d_mdo0036.pythonid = PythonID
+d_mdo0036.ptython = \u4EE3\u7801
+d_mdo0036Form = true

+ 2 - 0
generated/validator/resources_d_mdo0037Form_validator.properties

@@ -0,0 +1,2 @@
+d_mdo0037.pid = \u9879\u76EEID
+d_mdo0037Form = true

+ 2 - 0
generated/validator/resources_d_mdo0037Form_validator_zh_CN.properties

@@ -0,0 +1,2 @@
+d_mdo0037.pid = \u9879\u76EEID
+d_mdo0037Form = true

+ 2 - 0
generated/validator/resources_d_mdo0038Form_validator.properties

@@ -0,0 +1,2 @@
+d_mdo0038.pid = \u9879\u76EEID
+d_mdo0038Form = true

+ 2 - 0
generated/validator/resources_d_mdo0038Form_validator_zh_CN.properties

@@ -0,0 +1,2 @@
+d_mdo0038.pid = \u9879\u76EEID
+d_mdo0038Form = true

+ 1 - 0
generated/validator/resources_d_mdo0039Form_validator.properties

@@ -0,0 +1 @@
+d_mdo0039Form = false

+ 1 - 0
generated/validator/resources_d_mdo0039Form_validator_zh_CN.properties

@@ -0,0 +1 @@
+d_mdo0039Form = false

+ 46 - 0
modelsrc/com/miniframe/model/mdo/MdoProjectConstraint.java

@@ -32,6 +32,16 @@ public class MdoProjectConstraint extends MiniserviceBaseModel implements Serial
      */
     private String reference;
 
+    /**
+     * 下线值
+     */
+    private String lower;
+
+    /**
+     * 上线值
+     */
+    private String upper;
+
     private static final long serialVersionUID = 1L;
 
     /**
@@ -123,4 +133,40 @@ public class MdoProjectConstraint extends MiniserviceBaseModel implements Serial
     public void setReference(String reference) {
         this.reference = reference == null ? null : reference.trim();
     }
+
+    /**
+     * 获取下线值
+     *
+     * @return lower - 下线值
+     */
+    public String getLower() {
+        return lower;
+    }
+
+    /**
+     * 设置下线值
+     *
+     * @param lower 下线值
+     */
+    public void setLower(String lower) {
+        this.lower = lower == null ? null : lower.trim();
+    }
+
+    /**
+     * 获取上线值
+     *
+     * @return upper - 上线值
+     */
+    public String getUpper() {
+        return upper;
+    }
+
+    /**
+     * 设置上线值
+     *
+     * @param upper 上线值
+     */
+    public void setUpper(String upper) {
+        this.upper = upper == null ? null : upper.trim();
+    }
 }

+ 140 - 0
modelsrc/com/miniframe/model/mdo/MdoProjectConstraintSQLBuilder.java

@@ -453,6 +453,146 @@ public class MdoProjectConstraintSQLBuilder {
             addCriterion("reference not between", value1, value2, "reference");
             return (Criteria) this;
         }
+
+        public Criteria andLowerIsNull() {
+            addCriterion("lower is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerIsNotNull() {
+            addCriterion("lower is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerEqualTo(String value) {
+            addCriterion("lower =", value, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerNotEqualTo(String value) {
+            addCriterion("lower <>", value, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerGreaterThan(String value) {
+            addCriterion("lower >", value, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerGreaterThanOrEqualTo(String value) {
+            addCriterion("lower >=", value, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerLessThan(String value) {
+            addCriterion("lower <", value, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerLessThanOrEqualTo(String value) {
+            addCriterion("lower <=", value, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerLike(String value) {
+            addCriterion("lower like", value, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerNotLike(String value) {
+            addCriterion("lower not like", value, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerIn(List<String> values) {
+            addCriterion("lower in", values, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerNotIn(List<String> values) {
+            addCriterion("lower not in", values, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerBetween(String value1, String value2) {
+            addCriterion("lower between", value1, value2, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andLowerNotBetween(String value1, String value2) {
+            addCriterion("lower not between", value1, value2, "lower");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperIsNull() {
+            addCriterion("upper is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperIsNotNull() {
+            addCriterion("upper is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperEqualTo(String value) {
+            addCriterion("upper =", value, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperNotEqualTo(String value) {
+            addCriterion("upper <>", value, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperGreaterThan(String value) {
+            addCriterion("upper >", value, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperGreaterThanOrEqualTo(String value) {
+            addCriterion("upper >=", value, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperLessThan(String value) {
+            addCriterion("upper <", value, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperLessThanOrEqualTo(String value) {
+            addCriterion("upper <=", value, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperLike(String value) {
+            addCriterion("upper like", value, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperNotLike(String value) {
+            addCriterion("upper not like", value, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperIn(List<String> values) {
+            addCriterion("upper in", values, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperNotIn(List<String> values) {
+            addCriterion("upper not in", values, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperBetween(String value1, String value2) {
+            addCriterion("upper between", value1, value2, "upper");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpperNotBetween(String value1, String value2) {
+            addCriterion("upper not between", value1, value2, "upper");
+            return (Criteria) this;
+        }
     }
 
     public static class Criteria extends GeneratedCriteria {

+ 23 - 0
modelsrc/com/miniframe/model/mdo/MdoProjectObjfun.java

@@ -47,6 +47,11 @@ public class MdoProjectObjfun extends MiniserviceBaseModel implements Serializab
      */
     private String remark;
 
+    /**
+     * 基准值
+     */
+    private String reference;
+
     private static final long serialVersionUID = 1L;
 
     /**
@@ -192,4 +197,22 @@ public class MdoProjectObjfun extends MiniserviceBaseModel implements Serializab
     public void setRemark(String remark) {
         this.remark = remark == null ? null : remark.trim();
     }
+
+    /**
+     * 获取基准值
+     *
+     * @return reference - 基准值
+     */
+    public String getReference() {
+        return reference;
+    }
+
+    /**
+     * 设置基准值
+     *
+     * @param reference 基准值
+     */
+    public void setReference(String reference) {
+        this.reference = reference == null ? null : reference.trim();
+    }
 }

+ 70 - 0
modelsrc/com/miniframe/model/mdo/MdoProjectObjfunSQLBuilder.java

@@ -663,6 +663,76 @@ public class MdoProjectObjfunSQLBuilder {
             addCriterion("remark not between", value1, value2, "remark");
             return (Criteria) this;
         }
+
+        public Criteria andReferenceIsNull() {
+            addCriterion("reference is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceIsNotNull() {
+            addCriterion("reference is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceEqualTo(String value) {
+            addCriterion("reference =", value, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceNotEqualTo(String value) {
+            addCriterion("reference <>", value, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceGreaterThan(String value) {
+            addCriterion("reference >", value, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceGreaterThanOrEqualTo(String value) {
+            addCriterion("reference >=", value, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceLessThan(String value) {
+            addCriterion("reference <", value, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceLessThanOrEqualTo(String value) {
+            addCriterion("reference <=", value, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceLike(String value) {
+            addCriterion("reference like", value, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceNotLike(String value) {
+            addCriterion("reference not like", value, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceIn(List<String> values) {
+            addCriterion("reference in", values, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceNotIn(List<String> values) {
+            addCriterion("reference not in", values, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceBetween(String value1, String value2) {
+            addCriterion("reference between", value1, value2, "reference");
+            return (Criteria) this;
+        }
+
+        public Criteria andReferenceNotBetween(String value1, String value2) {
+            addCriterion("reference not between", value1, value2, "reference");
+            return (Criteria) this;
+        }
     }
 
     public static class Criteria extends GeneratedCriteria {

+ 2 - 1
modelsrc/com/miniframe/model/mdo/dbconfig/MapperConfig-mdo.xml

@@ -5,7 +5,7 @@
     This file is generated by MyBatis Generator.
     This file is the shell of a Mapper Config file - in many cases you will need to add
       to this file before it is usable by MyBatis.
-    This file was generated on Wed Feb 05 14:24:51 CST 2025.
+    This file was generated on Sat Feb 08 12:00:57 CST 2025.
   -->
   <mappers>
     <mapper resource="com/miniframe/model/mdo/xml/MdoProjectMapper.xml" />
@@ -19,5 +19,6 @@
     <mapper resource="com/miniframe/model/mdo/xml/MdoProComvalMapper.xml" />
     <mapper resource="com/miniframe/model/mdo/xml/MdoProGradMapper.xml" />
     <mapper resource="com/miniframe/model/mdo/xml/MdoProSurroMapper.xml" />
+    <mapper resource="com/miniframe/model/mdo/xml/MdoProPythonMapper.xml" />
   </mappers>
 </configuration>

+ 1 - 1
modelsrc/com/miniframe/model/system/dbconfig/MapperConfig-system.xml

@@ -5,7 +5,7 @@
     This file is generated by MyBatis Generator.
     This file is the shell of a Mapper Config file - in many cases you will need to add
       to this file before it is usable by MyBatis.
-    This file was generated on Wed Feb 05 14:24:51 CST 2025.
+    This file was generated on Sat Feb 08 12:00:58 CST 2025.
   -->
   <mappers>
     <mapper resource="com/miniframe/model/system/xml/SysAppcodeMapper.xml" />

+ 10 - 1
pom.xml

@@ -281,7 +281,16 @@
             <artifactId>freemarker</artifactId>
             <version>2.3.29</version>
         </dependency>
-
+        <dependency>
+            <groupId>com.github.docker-java</groupId>
+            <artifactId>docker-java</artifactId>
+            <version>3.2.13</version> <!-- 请检查最新版本 -->
+        </dependency>
+        <dependency>
+            <groupId>com.github.docker-java</groupId>
+            <artifactId>docker-java-transport-httpclient5</artifactId>
+            <version>3.2.13</version>
+        </dependency>
 
 
     </dependencies>

+ 2 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0009Service.java

@@ -36,6 +36,8 @@ public class MDO0009Service extends MDO0009BaseModel implements ExecProcessFlow
 				con.setName(conbt[0]);
 				con.setCon(conbt[1]);
 				con.setReference(conbt[2]);
+				con.setUpper(conbt[3]);
+				con.setLower(conbt[4]);
 				conObjList.add(con);
 			}
 		}catch (Exception e){

+ 1 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0010Service.java

@@ -38,6 +38,7 @@ public class MDO0010Service extends MDO0010BaseModel implements ExecProcessFlow
 				fun.setScaling(funbt[3]);
 				fun.setFactor(funbt[4]);
 				fun.setRemark(funbt[5]);
+				fun.setReference(funbt[6]);
 				funObjList.add(fun);
 			}
 		}catch (Exception e){

+ 2 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0023Service.java

@@ -38,6 +38,8 @@ public class MDO0023Service extends MDO0023BaseModel implements ExecProcessFlow
 			row.setName(con.getName());
 			row.setCon(con.getCon());
 			row.setReference(con.getReference());
+			row.setUpper(con.getUpper());
+			row.setLower(con.getLower());
 			rows.add(row);
 
 		}

+ 1 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0024Service.java

@@ -40,6 +40,7 @@ public class MDO0024Service extends MDO0024BaseModel implements ExecProcessFlow
 			row.setScaling(fun.getScaling());
 			row.setFactor(fun.getFactor());
 			row.setRemark(fun.getRemark());
+			row.setReference(fun.getReference());
 			rows.add(row);
 
 		}

+ 70 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0035Service.java

@@ -0,0 +1,70 @@
+package com.miniframe.bisiness.mdo;
+
+import java.util.Map;
+import com.miniframe.core.ExecProcessFlow;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.business.mdo.model.MDO0035BaseModel;
+import com.miniframe.model.mdo.MdoProEvolutionSQLBuilder;
+import com.miniframe.model.mdo.MdoProGradSQLBuilder;
+import com.miniframe.model.mdo.MdoProSurroSQLBuilder;
+import com.miniframe.model.mdo.dao.MdoProEvolutionMapper;
+import com.miniframe.model.mdo.dao.MdoProGradMapper;
+import com.miniframe.model.mdo.dao.MdoProSurroMapper;
+
+/**
+ * 西工大系统,“删除所有优化器”逻辑处理(重新生成不覆盖)。
+ */
+public class MDO0035Service extends MDO0035BaseModel implements ExecProcessFlow {
+	
+	private static final long serialVersionUID = -7051358269847459502L;
+		
+	/**
+	 * 西工大系统,“删除所有优化器”业务核心处理
+ 	 */
+	public void transExecute() throws Exception {
+		String pid =this.getA_mdo0035().getPid();
+		MdoProEvolutionMapper peDao = UtilTools.getBean(MdoProEvolutionMapper.class);
+		MdoProEvolutionSQLBuilder pesb = new MdoProEvolutionSQLBuilder();
+		pesb.createCriteria().andPidEqualTo(pid);
+		peDao.deleteByExample(pesb);
+
+		MdoProGradMapper pgDao = UtilTools.getBean(MdoProGradMapper.class);
+		MdoProGradSQLBuilder pgsb = new MdoProGradSQLBuilder();
+		pgsb.createCriteria().andPidEqualTo(pid);
+		pgDao.deleteByExample(pesb);
+
+		MdoProSurroMapper psDao =UtilTools.getBean(MdoProSurroMapper.class);
+		MdoProSurroSQLBuilder pssb = new MdoProSurroSQLBuilder();
+		pssb.createCriteria().andPidEqualTo(pid);
+		psDao.deleteByExample(pssb);
+	
+	}
+	
+	/**
+	 * 西工大系统,“删除所有优化器”业务前处理
+ 	 */
+	public void preTransFlow() throws Exception {
+		this.validater();
+	}
+	
+	/**
+	 * 西工大系统,“删除所有优化器”业务后处理
+ 	 */
+	public void afterTransFlow() throws Exception {
+	
+	}
+	
+	/**
+	 * 西工大系统,“删除所有优化器”逻辑入口处理方法
+ 	 */
+ 	@SuppressWarnings("rawtypes")
+	@Override
+	public Map execute(Map vars) throws Exception {
+		this.setTransMap(vars);
+		preTransFlow();// 执行业务开始的规则检查和校验
+		transExecute();// 执行核心业务段
+		afterTransFlow();// 执行核心逻辑完成后的收尾逻辑
+		return this.getTransMap();
+	}
+
+}

+ 67 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0036Service.java

@@ -0,0 +1,67 @@
+package com.miniframe.bisiness.mdo;
+
+import java.util.List;
+import java.util.Map;
+import com.miniframe.core.ExecProcessFlow;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.business.mdo.model.MDO0036BaseModel;
+import com.miniframe.generate.comm.mdo.D_MDO0036;
+import com.miniframe.model.mdo.MdoProPython;
+import com.miniframe.model.mdo.MdoProPythonSQLBuilder;
+import com.miniframe.model.mdo.dao.MdoProPythonMapper;
+
+/**
+ * 西工大系统,“python查询”逻辑处理(重新生成不覆盖)。
+ */
+public class MDO0036Service extends MDO0036BaseModel implements ExecProcessFlow {
+	
+	private static final long serialVersionUID = -7051358269847459502L;
+		
+	/**
+	 * 西工大系统,“python查询”业务核心处理
+ 	 */
+	public void transExecute() throws Exception {
+		String pid = this.getA_mdo0036().getPid();
+		MdoProPythonMapper ppDao = UtilTools.getBean(MdoProPythonMapper.class);
+		MdoProPythonSQLBuilder ppsb = new MdoProPythonSQLBuilder();
+		ppsb.createCriteria().andPidEqualTo(pid);
+		List<MdoProPython> ppList  = ppDao.selectByExample(ppsb);
+		if(ppList !=null&&!ppList.isEmpty()){
+			MdoProPython pp =ppList.get(0);
+			D_MDO0036 dm = new D_MDO0036();
+			dm.setPid(pp.getPid());
+			dm.setPythonid(pp.getId());
+			dm.setPtython(pp.getPtython());
+			this.setD_mdo0036(dm);
+		}
+
+	}
+	
+	/**
+	 * 西工大系统,“python查询”业务前处理
+ 	 */
+	public void preTransFlow() throws Exception {
+		this.validater();
+	}
+	
+	/**
+	 * 西工大系统,“python查询”业务后处理
+ 	 */
+	public void afterTransFlow() throws Exception {
+	
+	}
+	
+	/**
+	 * 西工大系统,“python查询”逻辑入口处理方法
+ 	 */
+ 	@SuppressWarnings("rawtypes")
+	@Override
+	public Map execute(Map vars) throws Exception {
+		this.setTransMap(vars);
+		preTransFlow();// 执行业务开始的规则检查和校验
+		transExecute();// 执行核心业务段
+		afterTransFlow();// 执行核心逻辑完成后的收尾逻辑
+		return this.getTransMap();
+	}
+
+}

+ 70 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0037Service.java

@@ -0,0 +1,70 @@
+package com.miniframe.bisiness.mdo;
+
+import java.util.List;
+import java.util.Map;
+import com.miniframe.core.ExecProcessFlow;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.business.mdo.model.MDO0037BaseModel;
+import com.miniframe.model.mdo.MdoProPython;
+import com.miniframe.model.mdo.MdoProPythonSQLBuilder;
+import com.miniframe.model.mdo.dao.MdoProPythonMapper;
+
+/**
+ * 西工大系统,“python添加修改”逻辑处理(重新生成不覆盖)。
+ */
+public class MDO0037Service extends MDO0037BaseModel implements ExecProcessFlow {
+	
+	private static final long serialVersionUID = -7051358269847459502L;
+		
+	/**
+	 * 西工大系统,“python添加修改”业务核心处理
+ 	 */
+	public void transExecute() throws Exception {
+		String pid = this.getA_mdo0037().getPid();
+		String python =this.getA_mdo0037().getPython();
+		MdoProPythonMapper ppDao = UtilTools.getBean(MdoProPythonMapper.class);
+		MdoProPythonSQLBuilder ppsb = new MdoProPythonSQLBuilder();
+		ppsb.createCriteria().andPidEqualTo(pid);
+		List<MdoProPython> ppList  = ppDao.selectByExample(ppsb);
+		if(ppList !=null&&!ppList.isEmpty()){//修改
+			MdoProPython pp =ppList.get(0);
+			pp.setPtython(python);
+			ppDao.updateByPrimaryKey(pp);
+		}else{
+			MdoProPython pp =new MdoProPython();
+			pp.setId(UtilTools.getUUid());
+			pp.setPtython(python);
+			pp.setPid(pid);
+			ppDao.insert(pp);
+		}
+
+	}
+	
+	/**
+	 * 西工大系统,“python添加修改”业务前处理
+ 	 */
+	public void preTransFlow() throws Exception {
+		this.validater();
+	}
+	
+	/**
+	 * 西工大系统,“python添加修改”业务后处理
+ 	 */
+	public void afterTransFlow() throws Exception {
+	
+	}
+	
+	/**
+	 * 西工大系统,“python添加修改”逻辑入口处理方法
+ 	 */
+ 	@SuppressWarnings("rawtypes")
+	@Override
+	public Map execute(Map vars) throws Exception {
+		this.setTransMap(vars);
+		preTransFlow();// 执行业务开始的规则检查和校验
+		transExecute();// 执行核心业务段
+		afterTransFlow();// 执行核心逻辑完成后的收尾逻辑
+		return this.getTransMap();
+	}
+
+}

+ 55 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0038Service.java

@@ -0,0 +1,55 @@
+package com.miniframe.bisiness.mdo;
+
+import java.util.Map;
+import com.miniframe.core.ExecProcessFlow;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.business.mdo.model.MDO0038BaseModel;
+import com.miniframe.model.mdo.MdoProPythonSQLBuilder;
+import com.miniframe.model.mdo.dao.MdoProPythonMapper;
+
+/**
+ * 西工大系统,“python删除”逻辑处理(重新生成不覆盖)。
+ */
+public class MDO0038Service extends MDO0038BaseModel implements ExecProcessFlow {
+	
+	private static final long serialVersionUID = -7051358269847459502L;
+		
+	/**
+	 * 西工大系统,“python删除”业务核心处理
+ 	 */
+	public void transExecute() throws Exception {
+		String pid = this.getA_mdo0038().getPid();
+		MdoProPythonMapper ppDao = UtilTools.getBean(MdoProPythonMapper.class);
+		MdoProPythonSQLBuilder ppsb = new MdoProPythonSQLBuilder();
+		ppsb.createCriteria().andPidEqualTo(pid);
+		ppDao.deleteByExample(ppsb);
+	}
+	
+	/**
+	 * 西工大系统,“python删除”业务前处理
+ 	 */
+	public void preTransFlow() throws Exception {
+		this.validater();
+	}
+	
+	/**
+	 * 西工大系统,“python删除”业务后处理
+ 	 */
+	public void afterTransFlow() throws Exception {
+	
+	}
+	
+	/**
+	 * 西工大系统,“python删除”逻辑入口处理方法
+ 	 */
+ 	@SuppressWarnings("rawtypes")
+	@Override
+	public Map execute(Map vars) throws Exception {
+		this.setTransMap(vars);
+		preTransFlow();// 执行业务开始的规则检查和校验
+		transExecute();// 执行核心业务段
+		afterTransFlow();// 执行核心逻辑完成后的收尾逻辑
+		return this.getTransMap();
+	}
+
+}

+ 125 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0039Service.java

@@ -0,0 +1,125 @@
+package com.miniframe.bisiness.mdo;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+import com.github.dockerjava.api.async.ResultCallback;
+import com.github.dockerjava.api.model.Frame;
+import com.miniframe.core.ExecProcessFlow;
+import com.miniframe.core.exception.BusinessException;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.business.mdo.model.MDO0039BaseModel;
+import com.miniframe.mdo.service.LogService;
+import com.miniframe.model.mdo.MdoProPython;
+import com.miniframe.model.mdo.MdoProPythonSQLBuilder;
+import com.miniframe.model.mdo.MdoProject;
+import com.miniframe.model.mdo.dao.MdoProPythonMapper;
+import com.miniframe.model.mdo.dao.MdoProjectMapper;
+import com.miniframe.modo.temp.TemplateGenerator;
+import com.miniframe.tools.XIFileUtils;
+import com.miniframe.tools.docker.DockerExe;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import lombok.SneakyThrows;
+
+/**
+ * 西工大系统,“新版求解v2”逻辑处理(重新生成不覆盖)。
+ */
+public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow {
+	
+	private static final long serialVersionUID = -7051358269847459502L;
+		
+	/**
+	 * 西工大系统,“新版求解v2”业务核心处理
+ 	 */
+	public void transExecute() throws Exception {
+		String pid = this.getA_mdo0039().getPid();
+		MdoProjectMapper proDao = UtilTools.getBean(MdoProjectMapper.class);
+		MdoProject pro =proDao.selectByPrimaryKey(pid);
+		if(pro==null){
+			throw new BusinessException("MDO000001");
+		}
+		//创建文件路径
+		XIFileUtils.mkdir(LogService.BPATH);
+		XIFileUtils.mkdir(LogService.BPATH+"/"+pro.getId());
+		XIFileUtils.mkdir(LogService.BPATH+"/"+pro.getId()+"/in");
+		XIFileUtils.mkdir(LogService.BPATH+"/"+pro.getId()+"/out");
+		//日志文件清空
+		LogService.clearLog(pid);
+		//创建problem.xml
+		TemplateGenerator.createProblemXml(pid);
+		//创建run.py
+		TemplateGenerator.createRunpy(pid);
+//		run(pid);
+	}
+
+	//异步执行
+	@SneakyThrows
+	public void run(String pid )throws Exception{
+		LogService.addLog(pid,"求解——————————————————开始");
+		DockerExe.stopDocker(pid);
+		CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()-> {try {
+			DockerExe.getDockerLogs(pid,new ResultCallback.Adapter<Frame>() {
+				@Override
+				public void onNext(Frame frame) {
+					LogService.addLog(pid,new String(frame.getPayload()));
+					System.out.print(new String(frame.getPayload()));
+					super.onNext(frame);
+				}
+				@Override
+				public void onError(Throwable throwable) {
+					System.err.println("日志获取失败");
+					throwable.printStackTrace();
+					super.onError(throwable);
+				}
+				@Override
+				public void onComplete() {
+					System.out.println("日志获取完成");
+					super.onComplete();
+				}
+			});
+
+			LogService.addLog(pid,"求解——————————————————成功");
+		} catch (Exception e) {
+			LogService.addLog(pid,"求解——————————————————失败");
+
+			e.printStackTrace();
+		}
+			return null;
+		});
+	}
+
+
+
+	/**
+	 * 西工大系统,“新版求解v2”业务前处理
+ 	 */
+	public void preTransFlow() throws Exception {
+		this.validater();
+	}
+	
+	/**
+	 * 西工大系统,“新版求解v2”业务后处理
+ 	 */
+	public void afterTransFlow() throws Exception {
+	
+	}
+	
+	/**
+	 * 西工大系统,“新版求解v2”逻辑入口处理方法
+ 	 */
+ 	@SuppressWarnings("rawtypes")
+	@Override
+	public Map execute(Map vars) throws Exception {
+		this.setTransMap(vars);
+		preTransFlow();// 执行业务开始的规则检查和校验
+		transExecute();// 执行核心业务段
+		afterTransFlow();// 执行核心逻辑完成后的收尾逻辑
+		return this.getTransMap();
+	}
+
+}

+ 262 - 0
src/main/java/com/miniframe/modo/temp/TemplateGenerator.java

@@ -0,0 +1,262 @@
+package com.miniframe.modo.temp;
+
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.mdo.service.LogService;
+import com.miniframe.model.mdo.*;
+import com.miniframe.model.mdo.dao.*;
+import com.miniframe.modo.temp.problem.*;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+import tk.mybatis.mapper.util.StringUtil;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.*;
+
+public class TemplateGenerator {
+
+    /**
+     * 创建 执行文件
+     * @param pid
+     * @throws IOException
+     * @throws TemplateException
+     */
+    public static void createRunpy(String pid) throws IOException, TemplateException {
+        Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
+        // 设置模板所在目录
+        cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
+        // 获取模板对象
+        Template template = cfg.getTemplate("run.ftl");
+        // 定义数据模型(Map)
+        Map<String, Object> dataModel = new HashMap<>();
+        dataModel.put("problemPath",LogService.BPATH + "/" + pid + "/in/problem.xml");
+        // 将数据模型传入模板进行处理
+        StringWriter writer = new StringWriter();
+        template.process(dataModel, writer);
+        FileWriter fileWriter = new FileWriter(LogService.BPATH + "/" + pid + "/in/run.py");
+        fileWriter.write(writer.toString());
+        fileWriter.close();
+    }
+    /**
+     * 创建problem.xml
+     * @param pid
+     * @throws IOException
+     * @throws TemplateException
+     */
+    public static void createProblemXml(String pid) throws IOException, TemplateException {
+        //Problem.xml 写入
+        Configuration cfg = new Configuration(Configuration.VERSION_2_3_0);
+        // 设置模板所在目录
+        cfg.setClassForTemplateLoading(TemplateGenerator.class, "/templates");
+        // 获取模板对象
+        Template template = cfg.getTemplate("problem.ftl");
+        // 定义数据模型(Map)
+        Map<String, Object> dataModel = new HashMap<>();
+
+        ProblemVo vo = new ProblemVo();
+        HeaderVo header =new HeaderVo();
+        header.setName(pid);
+        header.setTimestamp(new Date());
+        vo.setHeader(header);
+        List<DesignVariable> designVariables=findDesignVariables(pid);
+        vo.setDesignVariables(designVariables);
+        List<Objective> objectives = findObjectives(pid);
+        vo.setObjectives(objectives);
+        List<Constraint> constraints = findConstraints(pid);
+        vo.setConstraints(constraints);
+        MdoProEvolution evolution = findEvolution(pid);
+        vo.setEvolution(evolution);
+        MdoProSurro surro = findSurro(pid);
+        vo.setSurro(surro);
+        MdoProGrad grad = findGrad(pid);
+        vo.setGrad(grad);
+
+        List<Solver> solvers = findSolvers(pid);
+        vo.setSolvers(solvers);
+
+        dataModel.put("vo",vo);
+//        dataModel.put("geoFilePath", BPATH + "/" + aid + "/" + jid + "/Geometry");
+        // 将数据模型传入模板进行处理
+        StringWriter writer = new StringWriter();
+        template.process(dataModel, writer);
+        FileWriter fileWriter = new FileWriter(LogService.BPATH + "/" + pid + "/in/problem.xml");
+        fileWriter.write(writer.toString());
+        fileWriter.close();
+    }
+
+    /**
+     * 获取 求解器配置
+     * @param pid
+     * @return
+     * @throws IOException
+     */
+    private static List<Solver> findSolvers(String pid) throws IOException {
+        //TODO 目前只有函数求解器
+        List<Solver> solvers =new ArrayList<>();
+        //ptyon py.py 文件 写入
+        String ppPath=writePython(pid);
+        if(!StringUtil.isEmpty(ppPath)){
+            Solver solver =new Solver();
+            solver.setPythonPath(ppPath);
+            solvers.add(solver);
+        }
+        return solvers;
+    }
+
+
+    private static MdoProGrad findGrad(String pid) {
+        MdoProGrad grad = null;
+        MdoProGradMapper edao = UtilTools.getBean(MdoProGradMapper.class);
+        MdoProGradSQLBuilder esb =new MdoProGradSQLBuilder();
+        MdoProGradSQLBuilder.Criteria esc = esb.createCriteria();
+        esc.andPidEqualTo(pid);
+        esc.andCheckedEqualTo((short) 1);
+        List<MdoProGrad> eList = edao.selectByExample(esb);
+        if(eList==null || eList.isEmpty()){
+            grad=null;
+        }else{
+            grad = eList.get(0);
+        }
+        return grad;
+    }
+
+
+    private static MdoProSurro findSurro(String pid) {
+        MdoProSurro surro = null;
+        MdoProSurroMapper edao = UtilTools.getBean(MdoProSurroMapper.class);
+        MdoProSurroSQLBuilder esb =new MdoProSurroSQLBuilder();
+        MdoProSurroSQLBuilder.Criteria esc = esb.createCriteria();
+        esc.andPidEqualTo(pid);
+        esc.andCheckedEqualTo((short) 1);
+        List<MdoProSurro> eList = edao.selectByExample(esb);
+        if(eList==null || eList.isEmpty()){
+            surro=null;
+        }else{
+            surro = eList.get(0);
+        }
+        return surro;
+    }
+
+    private static MdoProEvolution findEvolution(String pid) {
+        MdoProEvolution evolution = null;
+        MdoProEvolutionMapper edao = UtilTools.getBean(MdoProEvolutionMapper.class);
+        MdoProEvolutionSQLBuilder esb =new MdoProEvolutionSQLBuilder();
+        MdoProEvolutionSQLBuilder.Criteria esc = esb.createCriteria();
+        esc.andPidEqualTo(pid);
+        esc.andCheckedEqualTo((short) 1);
+        List<MdoProEvolution> eList = edao.selectByExample(esb);
+        if(eList==null || eList.isEmpty()){
+            evolution=null;
+        }else{
+            evolution = eList.get(0);
+        }
+        return evolution;
+    }
+
+    private static List<Constraint> findConstraints(String pid) {
+        List<Constraint> constraints = new ArrayList<>();
+        MdoProjectConstraintMapper cdao = UtilTools.getBean(MdoProjectConstraintMapper.class);
+        MdoProjectConstraintSQLBuilder csb = new MdoProjectConstraintSQLBuilder();
+        csb.createCriteria().andPidEqualTo(pid);
+        List<MdoProjectConstraint> cList = cdao.selectByExample(csb);
+        for (MdoProjectConstraint c:cList) {
+            Constraint vc =new Constraint();
+            vc.setuID(c.getId());
+            vc.setName(c.getName());
+            vc.setValue(c.getReference());
+            vc.setLower(c.getLower());
+            vc.setUpper(c.getUpper());
+            constraints.add(vc);
+        }
+        return constraints;
+    }
+
+    private static List<Objective> findObjectives(String pid) {
+        List<Objective> objectives = new ArrayList<>();
+        MdoProjectObjfunMapper objdao = UtilTools.getBean(MdoProjectObjfunMapper.class);
+        MdoProjectObjfunSQLBuilder objsb = new MdoProjectObjfunSQLBuilder();
+        objsb.createCriteria().andPidEqualTo(pid);
+        List<MdoProjectObjfun> objList =objdao.selectByExample(objsb);
+        for (MdoProjectObjfun obj:objList) {
+            Objective  vObj =new Objective();
+            vObj.setuID(obj.getId());
+            vObj.setName(obj.getName());
+            vObj.setValue(obj.getReference());
+            vObj.setWeight(obj.getWeight());
+            if("-1".equals(obj.getOptdir())){ //-1 最大化 1 最小化
+                vObj.setFlag("max");
+            }else{
+                vObj.setFlag("min");
+            }
+            objectives.add(vObj);
+        }
+        return objectives;
+    }
+
+    /**
+     * 查询设计变量
+     * @param pid
+     * @return
+     */
+    private static  List<DesignVariable> findDesignVariables(String pid) {
+        List<DesignVariable> designVariables =new ArrayList<>();
+        MdoProjectVariateMapper vDao =UtilTools.getBean(MdoProjectVariateMapper.class);
+        MdoProjectVariateSQLBuilder vsb = new MdoProjectVariateSQLBuilder();
+        vsb.createCriteria().andPidEqualTo(pid);
+        List<MdoProjectVariate> vList =vDao.selectByExample(vsb);
+        Map<String,List<MdoProjectVariate>> vMap=new HashMap<>();
+        for (MdoProjectVariate v:vList) {
+            String vName =v.getName();
+            if(vMap.get(vName)==null||vMap.get(vName).isEmpty()){
+                vMap.put(vName,new ArrayList<>());
+                vMap.get(vName).add(v);
+            }else{
+                vMap.get(vName).add(v);
+            }
+        }
+        Set<String> vkeys =vMap.keySet();
+        for (String key : vkeys) {
+            DesignVariable  dv = new DesignVariable();
+            dv.setName(key);
+            List<MdoProjectVariate> tVlist =vMap.get(key);
+            List<String> values = new ArrayList<>();
+            List<String> lowerbounds = new ArrayList<>();
+            List<String> upperbounds = new ArrayList<>();
+            for (MdoProjectVariate tv:tVlist) {
+                values.add(tv.getReference());
+                lowerbounds.add(tv.getLower());
+                upperbounds.add(tv.getUpper());
+            }
+            dv.setValue(values);
+            dv.setLowerbound(lowerbounds);
+            dv.setUpperbound(upperbounds);
+            dv.setuID("");//TODO 目前结构不清
+            designVariables.add(dv);
+        }
+        return designVariables;
+    }
+
+    /**
+     * python 控件写入
+     * @param pid
+     * @return
+     * @throws IOException
+     */
+    private static String writePython(String pid) throws IOException {
+        MdoProPythonMapper ppDao = UtilTools.getBean(MdoProPythonMapper.class);
+        MdoProPythonSQLBuilder ppsb = new MdoProPythonSQLBuilder();
+        ppsb.createCriteria().andPidEqualTo(pid);
+        List<MdoProPython> ppList = ppDao.selectByExample(ppsb);
+        if(!ppList.isEmpty()){
+            String ppPath =LogService.BPATH+"/"+ pid+"/in/py.py";
+            MdoProPython pp =ppList.get(0);
+            FileWriter writer =new FileWriter(ppPath);
+            writer.write(pp.getPtython());
+            writer.close();
+            return  ppPath;
+        }
+        return "";
+    }
+}

+ 68 - 0
src/main/java/com/miniframe/modo/temp/problem/Constraint.java

@@ -0,0 +1,68 @@
+package com.miniframe.modo.temp.problem;
+
+import tk.mybatis.mapper.util.StringUtil;
+
+/**
+ * 约束条件
+ *  <constraint uID="">
+ *         <name>con</name>
+ *         <value>0.0</value>
+ *         <lower>None</lower>
+ *         <upper>None</upper>
+ *       </constraint>
+ */
+public class Constraint {
+    private String uID;
+    private String name;
+    private String value;
+    private String lower;
+    private String upper;
+
+    public String getuID() {
+        return uID;
+    }
+
+    public void setuID(String uID) {
+        this.uID = uID;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getLower() {
+        return lower;
+    }
+
+    public void setLower(String lower) {
+        if(StringUtil.isEmpty(lower)){
+            this.lower = "None";
+        }else{
+            this.lower = lower;
+        }
+    }
+
+    public String getUpper() {
+        return upper;
+    }
+
+    public void setUpper(String upper) {
+        if(StringUtil.isEmpty(lower)){
+            this.upper = "None";
+        }else{
+            this.upper = upper;
+        }
+    }
+}

+ 73 - 0
src/main/java/com/miniframe/modo/temp/problem/DesignVariable.java

@@ -0,0 +1,73 @@
+package com.miniframe.modo.temp.problem;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *  设计变量 数据格式
+ *      <designVariable uID="">
+ *         <name>x</name>
+ *         <value>[0.0]</value>
+ *         <lowerbound>[0]</lowerbound>
+ *         <upperbound>[1]</upperbound>
+ *       </designVariable>
+ */
+public class DesignVariable {
+    private String uID;
+    private String name;
+    private String value;
+    private String lowerbound;
+    private String upperbound;
+
+    public String getuID() {
+        return uID;
+    }
+
+    public void setuID(String uID) {
+        this.uID = uID;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public void setValue(List<String> values) {
+        this.value = values.toString();
+    }
+
+    public String getLowerbound() {
+        return lowerbound;
+    }
+
+    public void setLowerbound(String lowerbound) {
+        this.lowerbound = lowerbound;
+    }
+
+    public void setLowerbound(List<String> lowerbounds) {
+        this.lowerbound = lowerbounds.toString();
+    }
+
+    public String getUpperbound() {
+        return upperbound;
+    }
+
+    public void setUpperbound(String upperbound) {
+        this.upperbound = upperbound;
+    }
+
+    public void setUpperbound(List<String> upperbounds) {
+        this.upperbound = upperbounds.toString();
+    }
+}

+ 31 - 0
src/main/java/com/miniframe/modo/temp/problem/HeaderVo.java

@@ -0,0 +1,31 @@
+package com.miniframe.modo.temp.problem;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class HeaderVo {
+    private String name;
+    private String timestamp;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(String timestamp) {
+        this.timestamp = timestamp;
+    }
+    public void setTimestamp(Date timestamp) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        // 格式化Date对象为字符串
+        String formattedDate = sdf.format(timestamp);
+        this.timestamp = formattedDate.replace(" ","T");
+    }
+}

+ 58 - 0
src/main/java/com/miniframe/modo/temp/problem/Objective.java

@@ -0,0 +1,58 @@
+package com.miniframe.modo.temp.problem;
+
+/**
+ * 优化目标
+ *   <objective uID="">
+ *         <name>obj</name>
+ *         <value>0.0</value>
+ *         <weight>0.0</weight>
+ *         <flag>min</flag>
+ *       </objective>
+ */
+public class Objective {
+    private String uID;
+    private String name;
+    private String value;
+    private String weight;
+    private String flag;
+
+    public String getuID() {
+        return uID;
+    }
+
+    public void setuID(String uID) {
+        this.uID = uID;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getWeight() {
+        return weight;
+    }
+
+    public void setWeight(String weight) {
+        this.weight = weight;
+    }
+
+    public String getFlag() {
+        return flag;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+}

+ 98 - 0
src/main/java/com/miniframe/modo/temp/problem/ProblemVo.java

@@ -0,0 +1,98 @@
+package com.miniframe.modo.temp.problem;
+
+import com.miniframe.model.mdo.MdoProEvolution;
+import com.miniframe.model.mdo.MdoProGrad;
+import com.miniframe.model.mdo.MdoProPython;
+import com.miniframe.model.mdo.MdoProSurro;
+
+import java.util.List;
+
+public class ProblemVo {
+    private HeaderVo header;
+    private List<DesignVariable> designVariables;
+    private List<Objective> objectives;
+    private List<Constraint> constraints;
+
+    /**
+     * 进化优化器
+     */
+    private MdoProEvolution evolution;
+    /**
+     * 代理优化器
+     */
+    private MdoProSurro surro;
+
+    /**
+     * 梯度优化器
+     */
+    private MdoProGrad grad;
+
+    /**
+     * 求解器
+     */
+    private List<Solver> solvers;
+
+    public HeaderVo getHeader() {
+        return header;
+    }
+
+    public void setHeader(HeaderVo header) {
+        this.header = header;
+    }
+
+    public List<DesignVariable> getDesignVariables() {
+        return designVariables;
+    }
+
+    public void setDesignVariables(List<DesignVariable> designVariables) {
+        this.designVariables = designVariables;
+    }
+
+    public List<Objective> getObjectives() {
+        return objectives;
+    }
+
+    public void setObjectives(List<Objective> objectives) {
+        this.objectives = objectives;
+    }
+
+    public List<Constraint> getConstraints() {
+        return constraints;
+    }
+
+    public void setConstraints(List<Constraint> constraints) {
+        this.constraints = constraints;
+    }
+
+    public MdoProEvolution getEvolution() {
+        return evolution;
+    }
+
+    public void setEvolution(MdoProEvolution evolution) {
+        this.evolution = evolution;
+    }
+
+    public MdoProSurro getSurro() {
+        return surro;
+    }
+
+    public void setSurro(MdoProSurro surro) {
+        this.surro = surro;
+    }
+
+    public MdoProGrad getGrad() {
+        return grad;
+    }
+
+    public void setGrad(MdoProGrad grad) {
+        this.grad = grad;
+    }
+
+    public List<Solver> getSolvers() {
+        return solvers;
+    }
+
+    public void setSolvers(List<Solver> solvers) {
+        this.solvers = solvers;
+    }
+}

+ 31 - 0
src/main/java/com/miniframe/modo/temp/problem/Solver.java

@@ -0,0 +1,31 @@
+package com.miniframe.modo.temp.problem;
+
+public class Solver {
+    private String cpacsPath;
+    private String workflowPath;
+    private String pythonPath;
+
+    public String getCpacsPath() {
+        return cpacsPath;
+    }
+
+    public void setCpacsPath(String cpacsPath) {
+        this.cpacsPath = cpacsPath;
+    }
+
+    public String getWorkflowPath() {
+        return workflowPath;
+    }
+
+    public void setWorkflowPath(String workflowPath) {
+        this.workflowPath = workflowPath;
+    }
+
+    public String getPythonPath() {
+        return pythonPath;
+    }
+
+    public void setPythonPath(String pythonPath) {
+        this.pythonPath = pythonPath;
+    }
+}

+ 144 - 0
src/main/java/com/miniframe/tools/docker/DockerExe.java

@@ -0,0 +1,144 @@
+package com.miniframe.tools.docker;
+
+import com.github.dockerjava.api.DockerClient;
+import com.github.dockerjava.api.async.ResultCallback;
+import com.github.dockerjava.api.command.CreateContainerResponse;
+import com.github.dockerjava.api.command.InspectContainerResponse;
+import com.github.dockerjava.api.command.LogContainerCmd;
+import com.github.dockerjava.api.command.RemoveContainerCmd;
+import com.github.dockerjava.api.model.Frame;
+import com.github.dockerjava.api.model.HostConfig;
+import com.github.dockerjava.api.model.Mount;
+import com.github.dockerjava.api.model.MountType;
+import com.github.dockerjava.core.DefaultDockerClientConfig;
+import com.github.dockerjava.core.DockerClientBuilder;
+import com.github.dockerjava.core.DockerClientConfig;
+import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
+import com.github.dockerjava.transport.DockerHttpClient;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DockerExe {
+//    public static  String DOCKERHOST="tcp://127.0.0.1:2375/";
+//    public static  String APIVERSION="26.1.0";
+    public static final String DOCKERHOST="tcp://192.168.0.132:2375/";
+    public static final String APIVERSION="1.13.1";
+    // 获取容器信息
+    public static String getDocker(String pid){
+        DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
+                .withDockerHost(DOCKERHOST) // 设置 Docker 主机地址
+                .withDockerTlsVerify(false) // 启用 TLS 验证
+                .withApiVersion(APIVERSION) // 设置 API 版本
+                .build();
+        DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
+                .dockerHost(config.getDockerHost())
+                .sslConfig(config.getSSLConfig())
+                .build();
+        DockerClient dockerClient = DockerClientBuilder.getInstance(config)
+                .withDockerHttpClient(httpClient)
+                .build();
+        InspectContainerResponse containerInfo = dockerClient.inspectContainerCmd(pid).exec();
+        //exited 停止  running  运行
+        try{
+            return containerInfo.getState().getStatus();
+        }catch (Exception e){
+            return "No such container:"+pid;
+        }
+
+
+    }
+    public static void stopDocker(String pid){
+        DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
+                .withDockerHost(DOCKERHOST) // 设置 Docker 主机地址
+                .withDockerTlsVerify(false) // 启用 TLS 验证
+                .withApiVersion(APIVERSION) // 设置 API 版本
+                .build();
+        DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
+                .dockerHost(config.getDockerHost())
+                .sslConfig(config.getSSLConfig())
+                .build();
+        DockerClient dockerClient = DockerClientBuilder.getInstance(config)
+                .withDockerHttpClient(httpClient)
+                .build();
+        try {
+            RemoveContainerCmd removeContainerCmd = dockerClient.removeContainerCmd(pid)
+                    .withForce(true);
+            removeContainerCmd.exec();
+            System.out.println("容器已停止: " + pid);
+        } catch (Exception e) {
+            System.err.println("停止容器失败: " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+    public static void getDockerLogs(String pid, ResultCallback.Adapter<Frame> logsexe) throws InterruptedException {
+        DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
+                .withDockerHost(DOCKERHOST) // 设置 Docker 主机地址
+                .withDockerTlsVerify(false) // 启用 TLS 验证
+                .withApiVersion(APIVERSION) // 设置 API 版本
+                .build();
+        DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
+                .dockerHost(config.getDockerHost())
+                .sslConfig(config.getSSLConfig())
+                .build();
+        DockerClient dockerClient = DockerClientBuilder.getInstance(config)
+                .withDockerHttpClient(httpClient)
+                .build();
+        // 获取容器日志
+        LogContainerCmd logContainerCmd = dockerClient.logContainerCmd(pid)
+                .withStdOut(true)
+                .withStdErr(true)
+                .withFollowStream(true);
+        // 使用 ResultCallback.Adapter 处理日志
+        logContainerCmd.exec(logsexe).awaitCompletion();
+    }
+    public static void runMdo(String pid) {
+        DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
+                .withDockerHost(DOCKERHOST) // 设置 Docker 主机地址
+                .withDockerTlsVerify(false) // 启用 TLS 验证
+                .withApiVersion(APIVERSION) // 设置 API 版本
+                .build();
+        DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
+                .dockerHost(config.getDockerHost())
+                .sslConfig(config.getSSLConfig())
+                .build();
+        DockerClient dockerClient = DockerClientBuilder.getInstance(config)
+                .withDockerHttpClient(httpClient)
+                .build();
+
+        Mount cephfsVMount = new Mount()
+                .withType(MountType.BIND)
+                .withSource("/cephfs/mdo/")
+                .withTarget("/cephfs/mdo/")
+                .withReadOnly(false);
+
+        Mount outMount = new Mount()
+                .withType(MountType.BIND)
+                .withSource("/workspace/")
+                .withTarget("/cephfs/mdo/"+pid +"/out/")
+                .withReadOnly(false);
+
+        Mount runMount = new Mount()
+                .withType(MountType.BIND)
+                .withSource("/cephfs/mdo/"+pid +"/in/run.py")
+                .withTarget("/workspace/run.py")
+                .withReadOnly(false);
+        List<Mount> am =new ArrayList<>();
+        am.add(cephfsVMount);
+        am.add(outMount);
+        am.add(runMount);
+        //创建容器
+        CreateContainerResponse container = dockerClient
+                .createContainerCmd("xgd:2.0")//镜像名称
+                .withName(pid)//容器名称
+                .withHostConfig(
+                        HostConfig.newHostConfig()
+                                .withMounts(am)
+                ).exec();
+        dockerClient.startContainerCmd(container.getId()).exec();
+        System.out.println("容器启动成功,ID: " + container.getId());
+    }
+
+
+
+}

+ 133 - 0
src/main/resources/templates/problem.ftl

@@ -0,0 +1,133 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<surromdaoProblem>
+  <header>
+    <name>${vo.header.name}</name>
+    <creator>SurroMDAO</creator>
+    <timestamp>${vo.header.timestamp}</timestamp>
+    <fileversion>1.0</fileversion>
+    <surromdaoVersion>V1.1</surromdaoVersion>
+  </header>
+  <problem>
+    <designVariables>
+      <#list vo.designVariables as b>
+      <designVariable uID="${b.uID}">
+        <name>${b.name}</name>
+        <value>${b.value}</value>
+        <lowerbound>${b.lowerbound}</lowerbound>
+        <upperbound>${b.upperbound}</upperbound>
+      </designVariable>
+      </#list>
+    </designVariables>
+    <objectives>
+      <#list vo.objectives as b>
+      <objective uID="${b.uID}">
+        <name>${b.name}</name>
+        <value>${b.value}</value>
+        <weight>${b.weight}</weight>
+        <flag>${b.flag}</flag>
+      </objective>
+      </#list>
+    </objectives>
+    <constraints>
+      <#list vo.constraints as b>
+      <constraint uID="${b.uID}">
+            <name>${b.name}</name>
+            <value>${b.value}</value>
+            <lower>${b.lower}</lower>
+            <upper>${b.upper}</upper>
+      </constraint>
+      </#list>
+    </constraints>
+  </problem>
+  <optimizers>
+    <optimizer>
+      <#if vo.evolution??>
+      <name>${vo.evolution.algorithm}</name>
+      <configFile/>
+      <configuration>
+        <maxgen>${vo.evolution.popsize}</maxgen>
+        <ipopsize>${vo.evolution.popsize}</ipopsize>
+        <nobj>1</nobj>
+        <ncstr>0</ncstr>
+        <pc>${vo.evolution.probcrossover}</pc>
+        <pm>${vo.evolution.probmut}</pm>
+      </configuration>
+      <#else>
+      </#if>
+      <#if vo.surro??>
+        <name>${vo.surro.algorithm}</name>
+        <configuration>
+            <optimization>
+                <iout>${vo.surro.iout}</iout>
+                <irestart>${vo.surro.irestart}</irestart>
+                <ndoe>${vo.surro.ndoe}</ndoe>
+                <ns>${vo.surro.ns}</ns>
+                <nsmax>${vo.surro.nsmax}</nsmax>
+                <ns_lf>${vo.surro.nsLf}</ns_lf>
+                <nsmax_lf>${vo.surro.nsmaxLf}</nsmax_lf>
+                <ns_mk>[${vo.surro.nsMk}]</ns_mk>
+                <nsmax_mk>[${vo.surro.nsmaxMk}]</nsmax_mk>
+                <x_tol>${vo.surro.xTol}</x_tol>
+                <feasibility_tol_real>${vo.surro.feasibilityTolReal}</feasibility_tol_real>
+                <feasibility_tol_surro>${vo.surro.feasibilityTolSurro}</feasibility_tol_surro>
+            </optimization>
+            <model>
+                <nsurro>${vo.surro.nsurro}</nsurro>
+                <n_kriging>${vo.surro.nKriging}</n_kriging>
+                <corr>${vo.surro.corr}</corr>
+                <const_theta>${vo.surro.constTheta}</const_theta>
+                <porder>${vo.surro.porder}</porder>
+                <dcmp>${vo.surro.dcmp}</dcmp>
+                <paraopt>${vo.surro.paraopt}</paraopt>
+                <regular>${vo.surro.regular}</regular>
+            </model>
+            <subopt>
+                <infill>${vo.surro.infill}</infill>
+                <nparallel>${vo.surro.nparallel}</nparallel>
+                <iopt>${vo.surro.iopt}</iopt>
+                <icstr>${vo.surro.icstr}</icstr>
+                <ipopsize>${vo.surro.ipopsize}</ipopsize>
+                <maxgen>${vo.surro.maxgen}</maxgen>
+                <pc>${vo.surro.pc}</pc>
+                <pm>${vo.surro.pm}</pm>
+            </subopt>
+        </configuration>
+      <#else>
+      </#if>
+      <#if vo.grad??>
+        <name>${vo.grad.algorithm}</name>
+        <configuration>
+            <major_iterations_limit>${vo.grad.majorIterationsLimit}</major_iterations_limit>                     <!--最大外迭代步数 -->
+            <major_print_level>${vo.grad.majorPrintLevel}</major_print_level> 		    				     <!--输出精度等级-->
+            <linear_feasibility_tolerance>${vo.grad.linearFeasibilityTolerance}</linear_feasibility_tolerance>        <!--线性约束容差 -->
+            <nonlinear_feasibility_tolerance>${vo.grad.nonlinearFeasibilityTolerance}</nonlinear_feasibility_tolerance>  <!--非线性约束容差-->
+            <optimality_tolerance>${vo.grad.optimalityTolerance}</optimality_tolerance>    	                 <!--最优性度量(KKT 条件)容差-->
+            <verify_level>${vo.grad.verifyLevel}</verify_level> 		    					             <!--梯度验证级别 -1:不验证 0:简单验证 1-3:详细验证(1目标-2约束-3目标+约束)-->
+        </configuration>
+      <#else>
+      </#if>
+    </optimizer>
+  </optimizers>
+  <solvers>
+    <#list vo.solvers as b>
+    <solver>
+       <#if b.cpacsPath??>
+       <cpacsPath>${b.cpacsPath}</cpacsPath>
+       <#else>
+        <cpacsPath/>
+       </#if>
+       <#if b.workflowPath??>
+         <workflowPath>${b.workflowPath}</workflowPath>
+       <#else>
+        <workflowPath/>
+       </#if>
+       <#if b.pythonPath??>
+        <pythonPath>${b.pythonPath}</pythonPath>
+       <#else>
+        <pythonPath/>
+       </#if>
+      <workflowPath/>
+    </solver>
+    </#list>
+  </solvers>
+</surromdaoProblem>

+ 4 - 0
src/main/resources/templates/run.ftl

@@ -0,0 +1,4 @@
+from surromdao.utils import *
+prob = Problem.load_problem_from_xml('${problemPath}}')
+opt = OptTask(prob, "tz")
+opt.run()

+ 44 - 0
src/test/java/com/miniframe/comm/httpmdoapater/MDO0035Test.java

@@ -0,0 +1,44 @@
+package com.miniframe.comm.httpmdoapater;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.miniframe.comm.httpmdoapater.HttpmdoapaterUtil;
+import com.miniframe.generate.comm.mdo.A_MDO0035;
+import com.miniframe.generate.comm.httpmdoapater.MDO0035Client;
+import com.miniframe.generate.business.mdo.model.MDO0035BaseModel;
+
+public class MDO0035Test {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0035Test.class);
+
+	/**
+	 * 删除所有优化器,获取报文体
+	 * @return
+	 */
+	public static A_MDO0035 getA_mdo0035() {
+		A_MDO0035 a_mdo0035 = new A_MDO0035();
+
+		// ----------以下增加【删除所有优化器】上行体赋值-------------
+
+
+
+		// ---------------------------------------------------
+		return a_mdo0035;
+	}
+	
+	/**
+	 * 运行客户端测试,删除所有优化器
+	 * 
+	 * @param args
+	 * @throws Exception
+	 */
+	public static void main(String[] args) throws Exception {
+		MDO0035BaseModel model = new MDO0035BaseModel();
+		model.setA_mdohead(HttpmdoapaterUtil.getA_mdohead("MDO0035"));
+		model.setA_mdo0035(MDO0035Test.getA_mdo0035());
+		MDO0035Client client = new MDO0035Client();
+		logger.error("客户端发送前总线:\r\n"+model);
+		model = client.execute(model);
+		logger.error("客户端发送后总线:\r\n"+model);
+	}
+}

+ 44 - 0
src/test/java/com/miniframe/comm/httpmdoapater/MDO0036Test.java

@@ -0,0 +1,44 @@
+package com.miniframe.comm.httpmdoapater;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.miniframe.comm.httpmdoapater.HttpmdoapaterUtil;
+import com.miniframe.generate.comm.mdo.A_MDO0036;
+import com.miniframe.generate.comm.httpmdoapater.MDO0036Client;
+import com.miniframe.generate.business.mdo.model.MDO0036BaseModel;
+
+public class MDO0036Test {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0036Test.class);
+
+	/**
+	 * PYTHON查询,获取报文体
+	 * @return
+	 */
+	public static A_MDO0036 getA_mdo0036() {
+		A_MDO0036 a_mdo0036 = new A_MDO0036();
+
+		// ----------以下增加【PYTHON查询】上行体赋值-------------
+
+
+
+		// ---------------------------------------------------
+		return a_mdo0036;
+	}
+	
+	/**
+	 * 运行客户端测试,PYTHON查询
+	 * 
+	 * @param args
+	 * @throws Exception
+	 */
+	public static void main(String[] args) throws Exception {
+		MDO0036BaseModel model = new MDO0036BaseModel();
+		model.setA_mdohead(HttpmdoapaterUtil.getA_mdohead("MDO0036"));
+		model.setA_mdo0036(MDO0036Test.getA_mdo0036());
+		MDO0036Client client = new MDO0036Client();
+		logger.error("客户端发送前总线:\r\n"+model);
+		model = client.execute(model);
+		logger.error("客户端发送后总线:\r\n"+model);
+	}
+}

+ 44 - 0
src/test/java/com/miniframe/comm/httpmdoapater/MDO0037Test.java

@@ -0,0 +1,44 @@
+package com.miniframe.comm.httpmdoapater;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.miniframe.comm.httpmdoapater.HttpmdoapaterUtil;
+import com.miniframe.generate.comm.mdo.A_MDO0037;
+import com.miniframe.generate.comm.httpmdoapater.MDO0037Client;
+import com.miniframe.generate.business.mdo.model.MDO0037BaseModel;
+
+public class MDO0037Test {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0037Test.class);
+
+	/**
+	 * PYTHON添加修改,获取报文体
+	 * @return
+	 */
+	public static A_MDO0037 getA_mdo0037() {
+		A_MDO0037 a_mdo0037 = new A_MDO0037();
+
+		// ----------以下增加【PYTHON添加修改】上行体赋值-------------
+
+
+
+		// ---------------------------------------------------
+		return a_mdo0037;
+	}
+	
+	/**
+	 * 运行客户端测试,PYTHON添加修改
+	 * 
+	 * @param args
+	 * @throws Exception
+	 */
+	public static void main(String[] args) throws Exception {
+		MDO0037BaseModel model = new MDO0037BaseModel();
+		model.setA_mdohead(HttpmdoapaterUtil.getA_mdohead("MDO0037"));
+		model.setA_mdo0037(MDO0037Test.getA_mdo0037());
+		MDO0037Client client = new MDO0037Client();
+		logger.error("客户端发送前总线:\r\n"+model);
+		model = client.execute(model);
+		logger.error("客户端发送后总线:\r\n"+model);
+	}
+}

+ 44 - 0
src/test/java/com/miniframe/comm/httpmdoapater/MDO0038Test.java

@@ -0,0 +1,44 @@
+package com.miniframe.comm.httpmdoapater;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.miniframe.comm.httpmdoapater.HttpmdoapaterUtil;
+import com.miniframe.generate.comm.mdo.A_MDO0038;
+import com.miniframe.generate.comm.httpmdoapater.MDO0038Client;
+import com.miniframe.generate.business.mdo.model.MDO0038BaseModel;
+
+public class MDO0038Test {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0038Test.class);
+
+	/**
+	 * PYTHON删除,获取报文体
+	 * @return
+	 */
+	public static A_MDO0038 getA_mdo0038() {
+		A_MDO0038 a_mdo0038 = new A_MDO0038();
+
+		// ----------以下增加【PYTHON删除】上行体赋值-------------
+
+
+
+		// ---------------------------------------------------
+		return a_mdo0038;
+	}
+	
+	/**
+	 * 运行客户端测试,PYTHON删除
+	 * 
+	 * @param args
+	 * @throws Exception
+	 */
+	public static void main(String[] args) throws Exception {
+		MDO0038BaseModel model = new MDO0038BaseModel();
+		model.setA_mdohead(HttpmdoapaterUtil.getA_mdohead("MDO0038"));
+		model.setA_mdo0038(MDO0038Test.getA_mdo0038());
+		MDO0038Client client = new MDO0038Client();
+		logger.error("客户端发送前总线:\r\n"+model);
+		model = client.execute(model);
+		logger.error("客户端发送后总线:\r\n"+model);
+	}
+}

+ 44 - 0
src/test/java/com/miniframe/comm/httpmdoapater/MDO0039Test.java

@@ -0,0 +1,44 @@
+package com.miniframe.comm.httpmdoapater;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.miniframe.comm.httpmdoapater.HttpmdoapaterUtil;
+import com.miniframe.generate.comm.mdo.A_MDO0039;
+import com.miniframe.generate.comm.httpmdoapater.MDO0039Client;
+import com.miniframe.generate.business.mdo.model.MDO0039BaseModel;
+
+public class MDO0039Test {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0039Test.class);
+
+	/**
+	 * 新版求解V2,获取报文体
+	 * @return
+	 */
+	public static A_MDO0039 getA_mdo0039() {
+		A_MDO0039 a_mdo0039 = new A_MDO0039();
+
+		// ----------以下增加【新版求解V2】上行体赋值-------------
+
+
+
+		// ---------------------------------------------------
+		return a_mdo0039;
+	}
+	
+	/**
+	 * 运行客户端测试,新版求解V2
+	 * 
+	 * @param args
+	 * @throws Exception
+	 */
+	public static void main(String[] args) throws Exception {
+		MDO0039BaseModel model = new MDO0039BaseModel();
+		model.setA_mdohead(HttpmdoapaterUtil.getA_mdohead("MDO0039"));
+		model.setA_mdo0039(MDO0039Test.getA_mdo0039());
+		MDO0039Client client = new MDO0039Client();
+		logger.error("客户端发送前总线:\r\n"+model);
+		model = client.execute(model);
+		logger.error("客户端发送后总线:\r\n"+model);
+	}
+}

+ 2 - 1
系统设计/实体Bean/mdo(实体列表).csv

@@ -10,4 +10,5 @@
 9,MDO_PRO_COMVAL,计算过程数据,FALSE,
 
 10,mdo_pro_grad,梯度优化器参数,FALSE,
-11,mdo_pro_surro,代理优化器参数,FALSE,
+11,mdo_pro_surro,代理优化器参数,FALSE,
+12,mdo_pro_python,python,FALSE,

+ 10 - 2
系统设计/系统模块/MDO(西工大系统).csv

@@ -11,6 +11,7 @@
 100009,MDO0009,约束条件添加,service,
 100010,MDO0010,目标函数添加,service,
 100011,MDO0011,初始化求解参数,service,
+
 100012,MDO0012,求解输入参数查询,service,
 100013,MDO0013,求解输入参数添加修改,service,
 100014,MDO0014,求解输入参数删除,service,
@@ -26,8 +27,15 @@
 100024,MDO0024,目标函数查询,service,
 100025,MDO0025,求解日志获取,service,
 
-
 100031,MDO0031,代理优化器参数查询,service,
 100032,MDO0032,代理优化器参数添加修改,service,
 100033,MDO0033,梯度优化器参数查询,service,
-100034,MDO0034,梯度优化器参数添加修改,service,
+100034,MDO0034,梯度优化器参数添加修改,service,
+
+100035,MDO0035,删除所有优化器,service,
+100036,MDO0036,python查询,service,
+100037,MDO0037,python添加修改,service,
+100038,MDO0038,python删除,service,
+
+100039,MDO0039,新版求解v2,service,
+

+ 3 - 1
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0023_D(约束条件查询).csv

@@ -4,4 +4,6 @@
 1.2,name,约束名称,string,,,,,,,,,,,
 1.3,con,约束关系,string,,,,,,,,,,,
 1.4,reference,基准值,string,,,,,,,,,,,
-1.5,pid,项目,string,,,,,,,,,,,
+1.5,pid,项目,string,,,,,,,,,,,
+1.6,upper,上线值,string,,,,,,,,,,,
+1.7,lower,下线值,string,,,,,,,,,,,

+ 3 - 2
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0024_D(目标函数查询).csv

@@ -2,9 +2,10 @@
 1,rows,数据,list,,,,0,,,,,,,
 1.1,fid,目标函数ID,string,,,,,,,,,,,
 1.2,name,目标名称,string,,,,,,,,,,,
-1.3,optdir,优化方向,string,,,,,,,,,,,
+1.3,optdir,优化方向 -1最大化 1最小化,string,,,,,,,,,,,
 1.4,weight,权重系数,string,,,,,,,,,,,
 1.5,scaling,数据缩放,string,,,,,,,,,,,
 1.6,factor,缩放因子,string,,,,,,,,,,,
 1.7,remark,说明,string,,,,,,,,,,,
-1.8,pid,项目,string,,,,,,,,,,,
+1.8,pid,项目,string,,,,,,,,,,,
+1.9,reference,基准值,string,,,,,,,,,,,

+ 0 - 1
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0034_D(梯度优化器参数添加修改).csv

@@ -1,2 +1 @@
 序号,英文名称,中文名称,数据类型,默认值,格式化,非空/引用,最小(长度/值),最大(长度/值),验证规则,标准数据ID,XML样式,TAG标签,映射/子标签,CDATA
-1,pid,项目ID,string,,,是,,,,,,,,

+ 2 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0035_A(删除所有优化器).csv

@@ -0,0 +1,2 @@
+序号,英文名称,中文名称,数据类型,默认值,格式化,非空/引用,最小(长度/值),最大(长度/值),验证规则,标准数据ID,XML样式,TAG标签,映射/子标签,CDATA
+1,pid,项目ID,string,,,是,,,,,,,,

+ 1 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0035_D(删除所有优化器).csv

@@ -0,0 +1 @@
+序号,英文名称,中文名称,数据类型,默认值,格式化,非空/引用,最小(长度/值),最大(长度/值),验证规则,标准数据ID,XML样式,TAG标签,映射/子标签,CDATA

+ 2 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0036_A(python查询).csv

@@ -0,0 +1,2 @@
+序号,英文名称,中文名称,数据类型,默认值,格式化,非空/引用,最小(长度/值),最大(长度/值),验证规则,标准数据ID,XML样式,TAG标签,映射/子标签,CDATA
+1,pid,项目ID,string,,,是,,,,,,,,

+ 4 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0036_D(python查询).csv

@@ -0,0 +1,4 @@
+序号,英文名称,中文名称,数据类型,默认值,格式化,非空/引用,最小(长度/值),最大(长度/值),验证规则,标准数据ID,XML样式,TAG标签,映射/子标签,CDATA
+1,pid,项目ID,string,,,是,,,,,,,,
+2,pythonid,PythonID,string,,,,,,,,,,,
+3,ptython,代码,string,,,,,,,,,,,

+ 3 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0037_A(python添加修改).csv

@@ -0,0 +1,3 @@
+序号,英文名称,中文名称,数据类型,默认值,格式化,非空/引用,最小(长度/值),最大(长度/值),验证规则,标准数据ID,XML样式,TAG标签,映射/子标签,CDATA
+1,pid,项目ID,string,,,是,,,,,,,,
+2,python,代码,string,,,,,,,,,,,

+ 2 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0037_D(python添加修改).csv

@@ -0,0 +1,2 @@
+序号,英文名称,中文名称,数据类型,默认值,格式化,非空/引用,最小(长度/值),最大(长度/值),验证规则,标准数据ID,XML样式,TAG标签,映射/子标签,CDATA
+1,pid,项目ID,string,,,是,,,,,,,,

Some files were not shown because too many files changed in this diff