Explorar o código

求解及求解过程保存

huangxingxing hai 11 meses
pai
achega
8b046f1061
Modificáronse 70 ficheiros con 2133 adicións e 261 borrados
  1. 2 0
      dbscript/init/generate/03-functionInit.sql
  2. 3 0
      definitionsrc/returncode/returncode-business.properties
  3. 3 0
      definitionsrc/returncode/returncode-business_zh_CN.properties
  4. 112 0
      generated/com/miniframe/generate/business/mdo/model/MDO0020BaseModel.java
  5. 112 0
      generated/com/miniframe/generate/business/mdo/model/MDO0021BaseModel.java
  6. 99 0
      generated/com/miniframe/generate/comm/httpmdoapater/MDO0020Client.java
  7. 99 0
      generated/com/miniframe/generate/comm/httpmdoapater/MDO0021Client.java
  8. 25 0
      generated/com/miniframe/generate/comm/mdo/A_MDO0020.java
  9. 25 0
      generated/com/miniframe/generate/comm/mdo/A_MDO0021.java
  10. 12 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0020.java
  11. 26 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0021.java
  12. 77 0
      generated/com/miniframe/generate/comm/mdo/D_MDO0021_ROWS_RECODE.java
  13. 12 0
      generated/validateform/a_mdo0020Form.xml
  14. 12 0
      generated/validateform/a_mdo0021Form.xml
  15. 12 0
      generated/validateform/d_mdo0021Form.xml
  16. 2 0
      generated/validator/resources_a_mdo0020Form_validator.properties
  17. 2 0
      generated/validator/resources_a_mdo0020Form_validator_zh_CN.properties
  18. 2 0
      generated/validator/resources_a_mdo0021Form_validator.properties
  19. 2 0
      generated/validator/resources_a_mdo0021Form_validator_zh_CN.properties
  20. 1 0
      generated/validator/resources_d_mdo0020Form_validator.properties
  21. 1 0
      generated/validator/resources_d_mdo0020Form_validator_zh_CN.properties
  22. 1 0
      generated/validator/resources_d_mdo0021Form_validator.properties
  23. 1 0
      generated/validator/resources_d_mdo0021Form_validator_zh_CN.properties
  24. 6 0
      generated/validator/resources_d_mdo0021_rows_recodeForm_validator.properties
  25. 6 0
      generated/validator/resources_d_mdo0021_rows_recodeForm_validator_zh_CN.properties
  26. 126 0
      modelsrc/com/miniframe/model/mdo/MdoProComval.java
  27. 550 0
      modelsrc/com/miniframe/model/mdo/MdoProComvalSQLBuilder.java
  28. 10 0
      modelsrc/com/miniframe/model/mdo/dao/MdoProComvalMapper.java
  29. 2 1
      modelsrc/com/miniframe/model/mdo/dbconfig/MapperConfig-mdo.xml
  30. 50 0
      modelsrc/com/miniframe/model/mdo/xml/MdoProComvalMapper.xml
  31. 1 1
      modelsrc/com/miniframe/model/system/dbconfig/MapperConfig-system.xml
  32. 363 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0020Service.java
  33. 75 0
      src/main/java/com/miniframe/bisiness/mdo/MDO0021Service.java
  34. 23 0
      src/main/java/com/miniframe/dbtransfer/MdoProComvalDbTransfer.java
  35. 82 0
      src/main/java/com/miniframe/mdo/service/LogService.java
  36. 9 0
      src/main/java/com/miniframe/mdo/service/OptimizerGAService.java
  37. 20 0
      src/main/java/com/miniframe/modo/xml/input/Optimodel_Data.java
  38. 0 1
      src/main/resources/templates/ReadMe.md
  39. 0 7
      src/main/resources/templates/escape.ftl
  40. 0 19
      src/main/resources/templates/fire2Control.ftl
  41. 0 7
      src/main/resources/templates/fire2EscapeControl.ftl
  42. 0 4
      src/main/resources/templates/fire2Runsh.ftl
  43. 0 17
      src/main/resources/templates/fireControl.ftl
  44. 0 16
      src/main/resources/templates/fireInit.ftl
  45. 0 19
      src/main/resources/templates/fireInit.ftlbak
  46. 0 3
      src/main/resources/templates/fireRunsh.ftl
  47. 0 8
      src/main/resources/templates/geometry.ftl
  48. 0 8
      src/main/resources/templates/geometry2.ftl
  49. 0 21
      src/main/resources/templates/mashGasControl.ftl
  50. 0 7
      src/main/resources/templates/mashGasEscapeControl.ftl
  51. 0 18
      src/main/resources/templates/mashGasInit.ftl
  52. 0 16
      src/main/resources/templates/mashGasRunsh.ftl
  53. 0 5
      src/main/resources/templates/monitor.ftl
  54. 0 19
      src/main/resources/templates/water2Control.ftl
  55. 0 9
      src/main/resources/templates/water2EscapeControl.ftl
  56. 0 4
      src/main/resources/templates/water2Runsh.ftl
  57. 0 12
      src/main/resources/templates/waterControl.ftl
  58. 0 16
      src/main/resources/templates/waterInit.ftl
  59. 0 19
      src/main/resources/templates/waterInit.ftlbak
  60. 0 3
      src/main/resources/templates/waterRunsh.ftl
  61. 44 0
      src/test/java/com/miniframe/comm/httpmdoapater/MDO0020Test.java
  62. 44 0
      src/test/java/com/miniframe/comm/httpmdoapater/MDO0021Test.java
  63. 58 0
      src/test/java/com/miniframe/exeWindTest.java
  64. 2 0
      系统设计/实体Bean/mdo(实体列表).csv
  65. 5 1
      系统设计/数据定义/返 回 码/business(业务系统).csv
  66. 2 0
      系统设计/系统模块/MDO(西工大系统).csv
  67. 2 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0020_A(求解).csv
  68. 1 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0020_D(求解).csv
  69. 2 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0021_A(求解过程变量数据获取).csv
  70. 7 0
      系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0021_D(求解过程变量数据获取).csv

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

@@ -21,6 +21,8 @@ INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MD
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0017', '西工大系统','求解输出参数删除',true);
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0018', '西工大系统','进化优化器参数查询',true);
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0019', '西工大系统','进化优化器参数添加修改',true);
+INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0020', '西工大系统','求解',true);
+INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('MDO0021', '西工大系统','求解过程变量数据获取',true);
 -- 基础系统
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('SYSTEM', '基础系统','系统内部服务',true);
 INSERT INTO SYS_FUNCTION(FUNCTIONID, CLASSNAME, FUNCTIONNAME ,ENABLE)VALUES ('A00000', '基础系统','获取图片验证码',true);

+ 3 - 0
definitionsrc/returncode/returncode-business.properties

@@ -56,6 +56,7 @@ EB2000005 = \u53EA\u80FD\u4F20\u8F93\u5355\u4E2A\u6587\u4EF6\uFF01
 EB2000006 = \u6587\u4EF6\u4E0A\u4F20\u5931\u8D25\uFF01
 EB2000007 = \u6587\u4EF6\u8BFB\u53D6\u5931\u8D25\uFF01
 EB2000008 = \u6587\u4EF6\u4E0D\u5B58\u5728\uFF01
+EB2000008 = \u6587\u4EF6\u79FB\u52A8\u62F7\u8D1D\u5931\u8D25\uFF01
 MDO000001 = \u5DE5\u7A0B\u4E0D\u5B58\u5728\uFF01
 MDO000002 = \u6A21\u677F\u4E0D\u5B58\u5728\uFF01
 MDO000003 = \u8BBE\u8BA1\u53D8\u91CF\u6570\u636E\u683C\u5F0F\u9519\u8BEF\uFF01
@@ -64,3 +65,5 @@ MDO000005 = \u76EE\u6807\u51FD\u6570\u6570\u636E\u683C\u5F0F\u9519\u8BEF\uFF01
 MDO000006 = \u8F93\u5165\u53C2\u6570\u4E0D\u5B58\u5728\uFF01
 MDO000007 = \u8F93\u51FA\u53C2\u6570\u4E0D\u5B58\u5728\uFF01
 MDO000008 = \u8FDB\u5316\u4F18\u5316\u5668\u53C2\u6570\u4E0D\u5B58\u5728\uFF01
+MDO000009 = \u6C42\u89E3\u914D\u7F6E\u6587\u4EF6\u751F\u6210\u5931\u8D25\uFF01
+MDO000010 = \u6C42\u89E3\u5931\u8D25\uFF01

+ 3 - 0
definitionsrc/returncode/returncode-business_zh_CN.properties

@@ -56,6 +56,7 @@ EB2000005 = \u53EA\u80FD\u4F20\u8F93\u5355\u4E2A\u6587\u4EF6\uFF01
 EB2000006 = \u6587\u4EF6\u4E0A\u4F20\u5931\u8D25\uFF01
 EB2000007 = \u6587\u4EF6\u8BFB\u53D6\u5931\u8D25\uFF01
 EB2000008 = \u6587\u4EF6\u4E0D\u5B58\u5728\uFF01
+EB2000008 = \u6587\u4EF6\u79FB\u52A8\u62F7\u8D1D\u5931\u8D25\uFF01
 MDO000001 = \u5DE5\u7A0B\u4E0D\u5B58\u5728\uFF01
 MDO000002 = \u6A21\u677F\u4E0D\u5B58\u5728\uFF01
 MDO000003 = \u8BBE\u8BA1\u53D8\u91CF\u6570\u636E\u683C\u5F0F\u9519\u8BEF\uFF01
@@ -64,3 +65,5 @@ MDO000005 = \u76EE\u6807\u51FD\u6570\u6570\u636E\u683C\u5F0F\u9519\u8BEF\uFF01
 MDO000006 = \u8F93\u5165\u53C2\u6570\u4E0D\u5B58\u5728\uFF01
 MDO000007 = \u8F93\u51FA\u53C2\u6570\u4E0D\u5B58\u5728\uFF01
 MDO000008 = \u8FDB\u5316\u4F18\u5316\u5668\u53C2\u6570\u4E0D\u5B58\u5728\uFF01
+MDO000009 = \u6C42\u89E3\u914D\u7F6E\u6587\u4EF6\u751F\u6210\u5931\u8D25\uFF01
+MDO000010 = \u6C42\u89E3\u5931\u8D25\uFF01

+ 112 - 0
generated/com/miniframe/generate/business/mdo/model/MDO0020BaseModel.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_MDO0020;
+import com.miniframe.generate.comm.mdo.D_MDO0020;
+
+/**
+ * 系统服务,“求解”模型类(不要维护,重新生成将覆盖)。
+ */
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class MDO0020BaseModel extends BaseMapModel {
+
+	private static final long serialVersionUID = -1326184831746814093L;
+
+	A_MDOHEAD a_mdohead;//上行头
+	D_MDOHEAD d_mdohead;//下行头
+	A_MDO0020 a_mdo0020;//上行体
+	D_MDO0020 d_mdo0020;//下行体
+
+	public MDO0020BaseModel(){
+		a_mdohead=new A_MDOHEAD();
+		d_mdohead=new D_MDOHEAD();
+		a_mdo0020=new A_MDO0020();
+		d_mdo0020=new D_MDO0020();
+	}
+
+	public void validater() throws Exception {
+		this.a_mdohead.validater();
+		this.a_mdo0020.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_MDO0020.class);
+		this.a_mdo0020 = UtilTools.map2Obj(bodyMap, A_MDO0020.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_mdo0020));
+
+		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_MDO0020 getA_mdo0020() {
+		return a_mdo0020;
+	}
+
+	public void setA_mdo0020(A_MDO0020 a_mdo0020) {
+		this.a_mdo0020=a_mdo0020;
+	}
+
+	public D_MDO0020 getD_mdo0020() {
+		return this.d_mdo0020;
+	}
+
+	public void setD_mdo0020(D_MDO0020 d_mdo0020) {
+		this.d_mdo0020=d_mdo0020;
+	}
+
+	@Override
+	public String toString() {
+		try {
+			return UtilTools.obj2Json(this,true);
+		} catch (IOException e) {
+			return "";
+		}
+	}
+}

+ 112 - 0
generated/com/miniframe/generate/business/mdo/model/MDO0021BaseModel.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_MDO0021;
+import com.miniframe.generate.comm.mdo.D_MDO0021;
+
+/**
+ * 系统服务,“求解过程变量数据获取”模型类(不要维护,重新生成将覆盖)。
+ */
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class MDO0021BaseModel extends BaseMapModel {
+
+	private static final long serialVersionUID = -1326184831746814093L;
+
+	A_MDOHEAD a_mdohead;//上行头
+	D_MDOHEAD d_mdohead;//下行头
+	A_MDO0021 a_mdo0021;//上行体
+	D_MDO0021 d_mdo0021;//下行体
+
+	public MDO0021BaseModel(){
+		a_mdohead=new A_MDOHEAD();
+		d_mdohead=new D_MDOHEAD();
+		a_mdo0021=new A_MDO0021();
+		d_mdo0021=new D_MDO0021();
+	}
+
+	public void validater() throws Exception {
+		this.a_mdohead.validater();
+		this.a_mdo0021.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_MDO0021.class);
+		this.a_mdo0021 = UtilTools.map2Obj(bodyMap, A_MDO0021.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_mdo0021));
+
+		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_MDO0021 getA_mdo0021() {
+		return a_mdo0021;
+	}
+
+	public void setA_mdo0021(A_MDO0021 a_mdo0021) {
+		this.a_mdo0021=a_mdo0021;
+	}
+
+	public D_MDO0021 getD_mdo0021() {
+		return this.d_mdo0021;
+	}
+
+	public void setD_mdo0021(D_MDO0021 d_mdo0021) {
+		this.d_mdo0021=d_mdo0021;
+	}
+
+	@Override
+	public String toString() {
+		try {
+			return UtilTools.obj2Json(this,true);
+		} catch (IOException e) {
+			return "";
+		}
+	}
+}

+ 99 - 0
generated/com/miniframe/generate/comm/httpmdoapater/MDO0020Client.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_MDO0020;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+
+import com.miniframe.generate.business.mdo.model.MDO0020BaseModel;
+
+public class MDO0020Client {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0020Client.class);
+	private MFHttpRespInfo respInfo;
+
+	public MFHttpRespInfo getRespInfo(){
+		return respInfo;
+	}
+
+	/**
+	 * 调用 [系统服务->求解((MDO0020)]的通讯接口
+	 * @param model 接口模型
+	 * @param extMap 扩展输入
+	 * @param url 请求地址
+	 * @return model 接口模型
+	 * @throws Exception
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0020BaseModel execute(MDO0020BaseModel model,final Map extMap,final String url) throws Exception {
+		this.executeToRespInfo(model,extMap,url);
+		return model;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0020BaseModel execute(MDO0020BaseModel model,final Map extMap) throws Exception {
+		this.executeToRespInfo(model,extMap,null);
+		return model;
+	}
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MFHttpRespInfo executeToRespInfo(MDO0020BaseModel model,final Map extMap,final String url) throws Exception {
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0020BaseModel) - start");
+		}
+
+		if(UtilTools.isNullOrBlank(model.getA_mdohead().getTransCode())){
+			model.getA_mdohead().setTransCode("MDO0020");
+		}
+
+		Map inMap = new LinkedHashMap();
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdohead()));
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdo0020()));
+		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_MDO0020 d_mdo0020 =  UtilTools.map2Obj(outMap, D_MDO0020.class);
+			model.setD_mdohead(d_mdohead);
+			model.setD_mdo0020(d_mdo0020);
+
+
+		}
+
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0020BaseModel) - end");
+		}
+
+        this.respInfo=respInfo;
+
+		return respInfo;
+	}
+
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0020BaseModel execute(MDO0020BaseModel model) throws Exception {
+		return this.execute(model,null,null);
+	}
+
+
+}

+ 99 - 0
generated/com/miniframe/generate/comm/httpmdoapater/MDO0021Client.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_MDO0021;
+import com.miniframe.generate.comm.mdo.D_MDOHEAD;
+
+import com.miniframe.generate.business.mdo.model.MDO0021BaseModel;
+
+public class MDO0021Client {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0021Client.class);
+	private MFHttpRespInfo respInfo;
+
+	public MFHttpRespInfo getRespInfo(){
+		return respInfo;
+	}
+
+	/**
+	 * 调用 [系统服务->求解过程变量数据获取((MDO0021)]的通讯接口
+	 * @param model 接口模型
+	 * @param extMap 扩展输入
+	 * @param url 请求地址
+	 * @return model 接口模型
+	 * @throws Exception
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0021BaseModel execute(MDO0021BaseModel model,final Map extMap,final String url) throws Exception {
+		this.executeToRespInfo(model,extMap,url);
+		return model;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0021BaseModel execute(MDO0021BaseModel model,final Map extMap) throws Exception {
+		this.executeToRespInfo(model,extMap,null);
+		return model;
+	}
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MFHttpRespInfo executeToRespInfo(MDO0021BaseModel model,final Map extMap,final String url) throws Exception {
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0021BaseModel) - start");
+		}
+
+		if(UtilTools.isNullOrBlank(model.getA_mdohead().getTransCode())){
+			model.getA_mdohead().setTransCode("MDO0021");
+		}
+
+		Map inMap = new LinkedHashMap();
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdohead()));
+		inMap.putAll(UtilTools.obj2Map(model.getA_mdo0021()));
+		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_MDO0021 d_mdo0021 =  UtilTools.map2Obj(outMap, D_MDO0021.class);
+			model.setD_mdohead(d_mdohead);
+			model.setD_mdo0021(d_mdo0021);
+
+
+		}
+
+		if (logger.isDebugEnabled()) {
+			logger.debug("execute(MDO0021BaseModel) - end");
+		}
+
+        this.respInfo=respInfo;
+
+		return respInfo;
+	}
+
+
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public MDO0021BaseModel execute(MDO0021BaseModel model) throws Exception {
+		return this.execute(model,null,null);
+	}
+
+
+}

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

@@ -0,0 +1,25 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * 求解
+ */
+public class A_MDO0020 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_MDO0021.java

@@ -0,0 +1,25 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * 求解过程变量数据获取
+ */
+public class A_MDO0021 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_MDO0020.java

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

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

@@ -0,0 +1,26 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+import java.util.*;
+/**
+ * 求解过程变量数据获取
+ */
+public class D_MDO0021 extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	List <D_MDO0021_ROWS_RECODE> rows;//数据
+	/**
+	 *数据
+	 */
+	public void setRows(List <D_MDO0021_ROWS_RECODE> rows) {
+		this.rows=rows;
+	}
+	/**
+	 *数据
+	 */
+	public List <D_MDO0021_ROWS_RECODE> getRows() {
+		return this.rows;
+	}
+}

+ 77 - 0
generated/com/miniframe/generate/comm/mdo/D_MDO0021_ROWS_RECODE.java

@@ -0,0 +1,77 @@
+/**
+ * 系统服务
+ */
+package com.miniframe.generate.comm.mdo;
+import com.miniframe.core.BaseMapModel;
+import java.io.Serializable;
+/**
+ * 求解过程变量数据获取->数据
+ */
+public class D_MDO0021_ROWS_RECODE extends BaseMapModel implements Serializable {
+	private static final long serialVersionUID = -1463838678425832212L;
+	String comvid;//过程变量数据ID
+	/**
+	 *过程变量数据ID
+	 */
+	public void setComvid(String comvid) {
+		this.comvid=comvid;
+	}
+	/**
+	 *过程变量数据ID
+	 */
+	public String getComvid() {
+		return this.comvid;
+	}
+	String step;//步数
+	/**
+	 *步数
+	 */
+	public void setStep(String step) {
+		this.step=step;
+	}
+	/**
+	 *步数
+	 */
+	public String getStep() {
+		return this.step;
+	}
+	String vars;//变量
+	/**
+	 *变量
+	 */
+	public void setVars(String vars) {
+		this.vars=vars;
+	}
+	/**
+	 *变量
+	 */
+	public String getVars() {
+		return this.vars;
+	}
+	String vals;//数据
+	/**
+	 *数据
+	 */
+	public void setVals(String vals) {
+		this.vals=vals;
+	}
+	/**
+	 *数据
+	 */
+	public String getVals() {
+		return this.vals;
+	}
+	String pid;//项目
+	/**
+	 *项目
+	 */
+	public void setPid(String pid) {
+		this.pid=pid;
+	}
+	/**
+	 *项目
+	 */
+	public String getPid() {
+		return this.pid;
+	}
+}

+ 12 - 0
generated/validateform/a_mdo0020Form.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_mdo0020Form">
+<field property="pid" depends="required">
+    <arg0 key="a_mdo0020.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/a_mdo0021Form.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_mdo0021Form">
+<field property="pid" depends="required">
+    <arg0 key="a_mdo0021.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 12 - 0
generated/validateform/d_mdo0021Form.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="d_mdo0021Form">
+<field property="pid" depends="required">
+    <arg0 key="d_mdo0021.pid"/>
+</field>
+</form>
+</formset>
+</form-validation>

+ 2 - 0
generated/validator/resources_a_mdo0020Form_validator.properties

@@ -0,0 +1,2 @@
+a_mdo0020.pid = \u9879\u76EEID
+a_mdo0020Form = true

+ 2 - 0
generated/validator/resources_a_mdo0020Form_validator_zh_CN.properties

@@ -0,0 +1,2 @@
+a_mdo0020.pid = \u9879\u76EEID
+a_mdo0020Form = true

+ 2 - 0
generated/validator/resources_a_mdo0021Form_validator.properties

@@ -0,0 +1,2 @@
+a_mdo0021.pid = \u9879\u76EEID
+a_mdo0021Form = true

+ 2 - 0
generated/validator/resources_a_mdo0021Form_validator_zh_CN.properties

@@ -0,0 +1,2 @@
+a_mdo0021.pid = \u9879\u76EEID
+a_mdo0021Form = true

+ 1 - 0
generated/validator/resources_d_mdo0020Form_validator.properties

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

+ 1 - 0
generated/validator/resources_d_mdo0020Form_validator_zh_CN.properties

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

+ 1 - 0
generated/validator/resources_d_mdo0021Form_validator.properties

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

+ 1 - 0
generated/validator/resources_d_mdo0021Form_validator_zh_CN.properties

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

+ 6 - 0
generated/validator/resources_d_mdo0021_rows_recodeForm_validator.properties

@@ -0,0 +1,6 @@
+d_mdo0021_rows_recode.comvid = \u8FC7\u7A0B\u53D8\u91CF\u6570\u636EID
+d_mdo0021_rows_recode.step = \u6B65\u6570
+d_mdo0021_rows_recode.vars = \u53D8\u91CF
+d_mdo0021_rows_recode.vals = \u6570\u636E
+d_mdo0021_rows_recode.pid = \u9879\u76EE
+d_mdo0021_rows_recodeForm = true

+ 6 - 0
generated/validator/resources_d_mdo0021_rows_recodeForm_validator_zh_CN.properties

@@ -0,0 +1,6 @@
+d_mdo0021_rows_recode.comvid = \u8FC7\u7A0B\u53D8\u91CF\u6570\u636EID
+d_mdo0021_rows_recode.step = \u6B65\u6570
+d_mdo0021_rows_recode.vars = \u53D8\u91CF
+d_mdo0021_rows_recode.vals = \u6570\u636E
+d_mdo0021_rows_recode.pid = \u9879\u76EE
+d_mdo0021_rows_recodeForm = true

+ 126 - 0
modelsrc/com/miniframe/model/mdo/MdoProComval.java

@@ -0,0 +1,126 @@
+package com.miniframe.model.mdo;
+
+import com.miniframe.system.MiniserviceBaseModel;
+import java.io.Serializable;
+import javax.persistence.*;
+
+@Table(name = "mdo_pro_comval")
+public class MdoProComval extends MiniserviceBaseModel implements Serializable {
+    /**
+     * 工程ID
+     */
+    @Id
+    private String id;
+
+    /**
+     * 项目ID
+     */
+    private String pid;
+
+    /**
+     * 步数
+     */
+    private String step;
+
+    /**
+     * 变量
+     */
+    private String vars;
+
+    /**
+     * 数据
+     */
+    private String vals;
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 获取工程ID
+     *
+     * @return id - 工程ID
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * 设置工程ID
+     *
+     * @param id 工程ID
+     */
+    public void setId(String id) {
+        this.id = id == null ? null : id.trim();
+    }
+
+    /**
+     * 获取项目ID
+     *
+     * @return pid - 项目ID
+     */
+    public String getPid() {
+        return pid;
+    }
+
+    /**
+     * 设置项目ID
+     *
+     * @param pid 项目ID
+     */
+    public void setPid(String pid) {
+        this.pid = pid == null ? null : pid.trim();
+    }
+
+    /**
+     * 获取步数
+     *
+     * @return step - 步数
+     */
+    public String getStep() {
+        return step;
+    }
+
+    /**
+     * 设置步数
+     *
+     * @param step 步数
+     */
+    public void setStep(String step) {
+        this.step = step == null ? null : step.trim();
+    }
+
+    /**
+     * 获取变量
+     *
+     * @return vars - 变量
+     */
+    public String getVars() {
+        return vars;
+    }
+
+    /**
+     * 设置变量
+     *
+     * @param vars 变量
+     */
+    public void setVars(String vars) {
+        this.vars = vars == null ? null : vars.trim();
+    }
+
+    /**
+     * 获取数据
+     *
+     * @return vals - 数据
+     */
+    public String getVals() {
+        return vals;
+    }
+
+    /**
+     * 设置数据
+     *
+     * @param vals 数据
+     */
+    public void setVals(String vals) {
+        this.vals = vals == null ? null : vals.trim();
+    }
+}

+ 550 - 0
modelsrc/com/miniframe/model/mdo/MdoProComvalSQLBuilder.java

@@ -0,0 +1,550 @@
+package com.miniframe.model.mdo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MdoProComvalSQLBuilder {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public MdoProComvalSQLBuilder() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(String value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(String value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(String value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(String value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(String value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(String value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLike(String value) {
+            addCriterion("id like", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotLike(String value) {
+            addCriterion("id not like", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<String> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<String> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(String value1, String value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(String value1, String value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidIsNull() {
+            addCriterion("pid is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidIsNotNull() {
+            addCriterion("pid is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidEqualTo(String value) {
+            addCriterion("pid =", value, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidNotEqualTo(String value) {
+            addCriterion("pid <>", value, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidGreaterThan(String value) {
+            addCriterion("pid >", value, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidGreaterThanOrEqualTo(String value) {
+            addCriterion("pid >=", value, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidLessThan(String value) {
+            addCriterion("pid <", value, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidLessThanOrEqualTo(String value) {
+            addCriterion("pid <=", value, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidLike(String value) {
+            addCriterion("pid like", value, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidNotLike(String value) {
+            addCriterion("pid not like", value, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidIn(List<String> values) {
+            addCriterion("pid in", values, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidNotIn(List<String> values) {
+            addCriterion("pid not in", values, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidBetween(String value1, String value2) {
+            addCriterion("pid between", value1, value2, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andPidNotBetween(String value1, String value2) {
+            addCriterion("pid not between", value1, value2, "pid");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepIsNull() {
+            addCriterion("step is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepIsNotNull() {
+            addCriterion("step is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepEqualTo(String value) {
+            addCriterion("step =", value, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepNotEqualTo(String value) {
+            addCriterion("step <>", value, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepGreaterThan(String value) {
+            addCriterion("step >", value, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepGreaterThanOrEqualTo(String value) {
+            addCriterion("step >=", value, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepLessThan(String value) {
+            addCriterion("step <", value, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepLessThanOrEqualTo(String value) {
+            addCriterion("step <=", value, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepLike(String value) {
+            addCriterion("step like", value, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepNotLike(String value) {
+            addCriterion("step not like", value, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepIn(List<String> values) {
+            addCriterion("step in", values, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepNotIn(List<String> values) {
+            addCriterion("step not in", values, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepBetween(String value1, String value2) {
+            addCriterion("step between", value1, value2, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andStepNotBetween(String value1, String value2) {
+            addCriterion("step not between", value1, value2, "step");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsIsNull() {
+            addCriterion("vars is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsIsNotNull() {
+            addCriterion("vars is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsEqualTo(String value) {
+            addCriterion("vars =", value, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsNotEqualTo(String value) {
+            addCriterion("vars <>", value, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsGreaterThan(String value) {
+            addCriterion("vars >", value, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsGreaterThanOrEqualTo(String value) {
+            addCriterion("vars >=", value, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsLessThan(String value) {
+            addCriterion("vars <", value, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsLessThanOrEqualTo(String value) {
+            addCriterion("vars <=", value, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsLike(String value) {
+            addCriterion("vars like", value, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsNotLike(String value) {
+            addCriterion("vars not like", value, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsIn(List<String> values) {
+            addCriterion("vars in", values, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsNotIn(List<String> values) {
+            addCriterion("vars not in", values, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsBetween(String value1, String value2) {
+            addCriterion("vars between", value1, value2, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andVarsNotBetween(String value1, String value2) {
+            addCriterion("vars not between", value1, value2, "vars");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsIsNull() {
+            addCriterion("vals is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsIsNotNull() {
+            addCriterion("vals is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsEqualTo(String value) {
+            addCriterion("vals =", value, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsNotEqualTo(String value) {
+            addCriterion("vals <>", value, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsGreaterThan(String value) {
+            addCriterion("vals >", value, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsGreaterThanOrEqualTo(String value) {
+            addCriterion("vals >=", value, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsLessThan(String value) {
+            addCriterion("vals <", value, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsLessThanOrEqualTo(String value) {
+            addCriterion("vals <=", value, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsLike(String value) {
+            addCriterion("vals like", value, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsNotLike(String value) {
+            addCriterion("vals not like", value, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsIn(List<String> values) {
+            addCriterion("vals in", values, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsNotIn(List<String> values) {
+            addCriterion("vals not in", values, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsBetween(String value1, String value2) {
+            addCriterion("vals between", value1, value2, "vals");
+            return (Criteria) this;
+        }
+
+        public Criteria andValsNotBetween(String value1, String value2) {
+            addCriterion("vals not between", value1, value2, "vals");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 10 - 0
modelsrc/com/miniframe/model/mdo/dao/MdoProComvalMapper.java

@@ -0,0 +1,10 @@
+package com.miniframe.model.mdo.dao;
+
+import com.miniframe.model.mdo.MdoProComval;
+import com.miniframe.model.mdo.MdoProComvalSQLBuilder;
+import com.miniframe.spring.db.MFBaseMapper;
+import com.miniframe.system.MiniserviceBaseDao;
+
+public interface MdoProComvalMapper extends MiniserviceBaseDao, MFBaseMapper<MdoProComval> {
+    long countByExample(MdoProComvalSQLBuilder example);
+}

+ 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 Thu Oct 10 17:31:58 CST 2024.
+    This file was generated on Fri Oct 11 11:01:10 CST 2024.
   -->
   <mappers>
     <mapper resource="com/miniframe/model/mdo/xml/MdoProjectMapper.xml" />
@@ -16,5 +16,6 @@
     <mapper resource="com/miniframe/model/mdo/xml/MdoProInputMapper.xml" />
     <mapper resource="com/miniframe/model/mdo/xml/MdoProOutputMapper.xml" />
     <mapper resource="com/miniframe/model/mdo/xml/MdoProEvolutionMapper.xml" />
+    <mapper resource="com/miniframe/model/mdo/xml/MdoProComvalMapper.xml" />
   </mappers>
 </configuration>

+ 50 - 0
modelsrc/com/miniframe/model/mdo/xml/MdoProComvalMapper.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miniframe.model.mdo.dao.MdoProComvalMapper">
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <select id="countByExample" parameterType="com.miniframe.model.mdo.MdoProComvalSQLBuilder" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    select count(*) from mdo_pro_comval
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <cache>
+    <!--
+      WARNING - @mbg.generated
+    -->
+  </cache>
+</mapper>

+ 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 Thu Oct 10 17:31:59 CST 2024.
+    This file was generated on Fri Oct 11 11:01:10 CST 2024.
   -->
   <mappers>
     <mapper resource="com/miniframe/model/system/xml/SysAppcodeMapper.xml" />

+ 363 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0020Service.java

@@ -0,0 +1,363 @@
+package com.miniframe.bisiness.mdo;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+import com.miniframe.core.ExecProcessFlow;
+import com.miniframe.core.exception.BusinessException;
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.generate.business.mdo.model.MDO0020BaseModel;
+import com.miniframe.mdo.service.LogService;
+import com.miniframe.model.mdo.*;
+import com.miniframe.model.mdo.dao.*;
+import com.miniframe.modo.xml.input.Configure_Data;
+import com.miniframe.modo.xml.input.Optimizer_GA_Input;
+import com.miniframe.modo.xml.input.Optimodel_Data;
+import com.miniframe.modo.xml.input.Subsolver_Data;
+import com.miniframe.tools.XIFileUtils;
+import com.miniframe.tools.XiJsonUtil;
+import lombok.SneakyThrows;
+import tk.mybatis.mapper.util.StringUtil;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+/**
+ * 西工大系统,“求解”逻辑处理(重新生成不覆盖)。
+ */
+public class MDO0020Service extends MDO0020BaseModel implements ExecProcessFlow {
+	
+	private static final long serialVersionUID = -7051358269847459502L;
+		
+	/**
+	 * 西工大系统,“求解”业务核心处理
+ 	 */
+	public void transExecute() throws Exception {
+		String pid =this.getA_mdo0020().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);
+
+		//创建inputxml 文件
+		String inputxml =LogService.BPATH+"/"+pro.getId()+"/in/Optimizer_GA_Input.xml";
+		File filexml =new File(inputxml);
+		//生成配置文件
+		createXml(pid, inputxml);
+
+
+		//将配置文件移动到执行目录
+		//执行目录
+		File excFolder = new File("D:\\mdo\\20241008_Version");
+
+		// 使用Files类的copy方法移动文件
+		try {
+			Path sourcePath = filexml.toPath();
+			Path destinationPath = excFolder.toPath().resolve(sourcePath.getFileName());
+			Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
+			System.out.println("文件移动成功");
+		} catch (Exception e) {
+			System.out.println("文件移动失败:" + e.getMessage());
+			throw  new BusinessException("EB2000008");
+		}
+
+		exeWindow(pid);
+
+
+	}
+
+		//异步执行
+	@SneakyThrows
+	public void exeWindow(String pid) throws Exception{
+		CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()->{
+			try {
+				//获取变量信息
+				Optimizer_GA_Input ga_input = readInputXml(pid);
+				String x_name = ga_input.getOptimodel_data().getX_name();
+				MdoProComvalMapper comvalDao =UtilTools.getBean(MdoProComvalMapper.class);
+				MdoProComvalSQLBuilder sb =new MdoProComvalSQLBuilder();
+				MdoProComvalSQLBuilder.Criteria sc = sb.createCriteria();
+				sc.andPidEqualTo(pid);
+				comvalDao.deleteByExample(sb);
+
+				File exeOutFile = delOutxml();
+				String batPath =createWindowBat(pid);
+				Runtime runtime = Runtime.getRuntime();
+				Process p =null;
+				LogService.addLog(pid,"求解——————————————————开始");
+				p= runtime.exec(batPath);
+				InputStream fis = p.getInputStream();
+				InputStreamReader isr = new InputStreamReader(fis);
+				BufferedReader br = new BufferedReader(isr);
+				String line = null;
+				while ((line = br.readLine()) != null) {
+					LogService.addLog(pid,line);
+					//存储每步数据
+					//Gen20: BestX-[0.60371031 0.38946135 0.26024623 0.02400547 0.10866815], Fitness-[4.63029182], Index-[27]
+					if(line.startsWith("Gen")){
+						line =line.replace("Gen","");
+						String step =line.substring(0,line.indexOf(":"));
+						line =line.substring(line.indexOf(":")+1).trim();
+						String vals =line.substring(line.indexOf("[")+1,line.indexOf("]"));
+						MdoProComval comval =new MdoProComval();
+						comval.setId(UtilTools.getUUid());
+						comval.setPid(pid);
+						comval.setStep(step);
+						comval.setVars(x_name);
+						comval.setVals(vals);
+						comvalDao.insert(comval);
+						LogService.addLog(pid,XiJsonUtil.objectToJson(comval));
+					}
+					System.out.println(line);
+				}
+				LogService.addLog(pid,"求解——————————————————成功");
+				outxmlmv(pid, exeOutFile);//结果文件转移
+			} catch (IOException | JAXBException e) {
+				LogService.addLog(pid,"求解——————————————————失败");
+				e.printStackTrace();
+			}
+			return null;
+		});
+	}
+
+	private Optimizer_GA_Input readInputXml(String pid) throws JAXBException {
+		String inputxml =LogService.BPATH+"/"+ pid +"/in/Optimizer_GA_Input.xml";
+		JAXBContext jaxbContext = JAXBContext.newInstance(Optimizer_GA_Input.class);
+		Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
+		Optimizer_GA_Input ga_input = (Optimizer_GA_Input) jaxbUnmarshaller.unmarshal(new File(inputxml));
+		return ga_input;
+	}
+
+	private File delOutxml() {
+		File exeOutFile=new File("D:\\mdo\\20241008_Version\\Optimizer_GA_Output.xml");
+		exeOutFile.delete();
+		return exeOutFile;
+	}
+	private  String createWindowBat(String pid) throws IOException {
+
+		File batFile = new File(LogService.BPATH+"/"+pid+"/in/ga.bat");
+		FileWriter writer =null;
+		try {
+			if (batFile.exists()) {
+				batFile.delete();
+			}
+			batFile.createNewFile();
+			writer = new FileWriter(batFile,true);
+			writer.write("D:");
+			writer.write("\r\n");//换行
+			writer.write("cd D:\\mdo\\20241008_Version");
+			writer.write("\r\n");//换行
+			writer.write("python Optimizer_GA.py");
+			writer.close();
+		}catch (Exception o){
+			o.printStackTrace();
+		}finally {
+			if (writer != null) {
+				try {
+					writer.close();
+				} catch (IOException e1) {
+					e1.printStackTrace();
+				}
+			}
+		}
+		return  batFile.getPath();
+	}
+	private void outxmlmv(String pid, File exeOutFile) {
+		if(exeOutFile.exists()){//文件存在
+			File outFolder = new File(LogService.BPATH+"/"+ pid +"/out");
+			try {
+				Path sourcePath = exeOutFile.toPath();
+				Path destinationPath = outFolder.toPath().resolve(sourcePath.getFileName());
+				Files.move(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
+				System.out.println("文件移动成功");
+			} catch (Exception e) {
+				System.out.println("文件移动失败:" + e.getMessage());
+//						throw  new BusinessException("EB2000008");
+			}
+		}
+
+	}
+
+	private void createXml(String pid, String inputxml) throws BusinessException, JAXBException, IOException {
+		Optimodel_Data optimodelData=new Optimodel_Data();
+
+		String x_name = "";// <x_name>x1,x2,x3,x4,x5</x_name>  --变量名称
+		String xu = "";// <xu>[2,2,2,2,2]</xu>
+		String xl = "";// <xl>[0,0,0,0,0]</xl>
+		//输入参数
+		MdoProInputMapper proInputDao= UtilTools.getBean(MdoProInputMapper.class);
+		MdoProInputSQLBuilder proInputSb =new MdoProInputSQLBuilder();
+		MdoProInputSQLBuilder.Criteria proInputSc = proInputSb.createCriteria();
+		proInputSc.andPidEqualTo(pid);
+		proInputSc.andEnableEqualTo("1");//启用
+		List<MdoProInput> proInputList = proInputDao.selectByExample(proInputSb);
+
+
+
+		MdoProjectVariateMapper provDao= UtilTools.getBean(MdoProjectVariateMapper.class);
+		for (MdoProInput proi:proInputList) {
+			if(!StringUtil.isEmpty(proi.getVid())){
+				x_name+=proi.getName()+",";
+				MdoProjectVariate prov=provDao.selectByPrimaryKey(proi.getVid());
+				xu+=prov.getUpper()+",";
+				xl+=prov.getLower()+",";
+			}
+			//TODO 新增参数如何使用?
+//			x_name+=proi.getName()+",";
+		}
+		if(x_name.length()>0){
+			x_name= x_name.substring(0,x_name.length()-1);
+		}
+		if(xl.length()>0){
+			xl=xl.substring(0,xl.length()-1);
+			xl="["+xl+"]";
+		}
+		if(xu.length()>0){
+			xu=xu.substring(0,xu.length()-1);
+			xu="["+xu+"]";
+		}
+		String f_name="";	//  <f_name>f1</f_name>  --优化目标函数
+		String f_direction=""; //<f_direction>1</f_direction> --优化方向 最小化 1   最大化 -1
+		String g_name="";	//  <g_name>g1</g_name>
+		String g_direction=""; //  <g_direction>-1</g_direction>
+
+		MdoProOutputMapper proOutputDao= UtilTools.getBean(MdoProOutputMapper.class);
+		MdoProOutputSQLBuilder proOutputSb =new MdoProOutputSQLBuilder();
+		MdoProOutputSQLBuilder.Criteria proOutputSc = proOutputSb.createCriteria();
+		proOutputSc.andPidEqualTo(pid);
+		proOutputSc.andEnableEqualTo("1");//启用
+		List<MdoProOutput> proOutputList = proOutputDao.selectByExample(proOutputSb);
+
+		MdoProjectObjfunMapper profDao= UtilTools.getBean(MdoProjectObjfunMapper.class);
+		MdoProjectConstraintMapper procDao= UtilTools.getBean(MdoProjectConstraintMapper.class);
+		for (MdoProOutput proo:proOutputList) {
+			if(!StringUtil.isEmpty(proo.getFid())){
+				f_name+=proo.getName()+",";
+				MdoProjectObjfun prof=profDao.selectByPrimaryKey(proo.getFid());
+				f_direction=prof.getOptdir()+",";
+			}
+			if(!StringUtil.isEmpty(proo.getConid())){
+				g_name+=proo.getName()+",";
+				MdoProjectConstraint proc=procDao.selectByPrimaryKey(proo.getConid());
+				g_direction=proc.getCon()+",";
+			}
+		}
+		if(f_name.length()>0) {
+			f_name = f_name.substring(0, f_name.length() - 1);
+		}
+		if(f_direction.length()>0) {
+			f_direction = f_direction.substring(0, f_direction.length() - 1);
+		}
+		if(g_name.length()>0) {
+			g_name = g_name.substring(0, g_name.length() - 1);
+		}
+		if(g_direction.length()>0) {
+			g_direction = g_direction.substring(0, g_direction.length() - 1);
+		}
+
+
+		optimodelData.setX_name(x_name.length()>0?x_name:null);
+		optimodelData.setXu(xu.length()>0?xu:null);
+		optimodelData.setXl(xl.length()>0?xl:null);
+		optimodelData.setG_name(g_name.length()>0?g_name:null);
+		optimodelData.setG_direction(g_direction.length()>0?g_direction:null);
+		optimodelData.setF_name(f_name.length()>0?f_name:null);
+		optimodelData.setF_direction(f_direction.length()>0?f_direction:null);
+
+		Subsolver_Data solverdata =new Subsolver_Data();
+		solverdata.setX_name(x_name);
+		String y_name ="";
+		if(f_name.length()>0&&g_name.length()>0){
+			y_name = f_name+","+g_name;
+		}else if(f_name.length()>0&&g_name.length()<=0){
+			y_name = f_name;
+		}else if(f_name.length()<=0&&g_name.length()>0){
+			y_name = g_name;
+		}else{
+			y_name=null;
+		}
+		solverdata.setY_name(y_name);
+		solverdata.setSolver_path("F:\\jupyter-notebook\\ADI_Project\\NWPU_Project\\20241008_Version\\Rosenbrock\\Rosenbrock.py");
+
+		Configure_Data configureData =new Configure_Data();
+
+		MdoProEvolutionMapper evoDao = UtilTools.getBean(MdoProEvolutionMapper.class);
+		MdoProEvolutionSQLBuilder sb =new MdoProEvolutionSQLBuilder();
+		MdoProEvolutionSQLBuilder.Criteria sc =sb.createCriteria();
+		sc.andPidEqualTo(pid);
+		List<MdoProEvolution> evoList =evoDao.selectByExample(sb);
+		if(evoList==null||evoList.isEmpty()){
+			throw new BusinessException("MDO000008");
+		}
+		MdoProEvolution evo =evoList.get(0);
+		configureData.setAlgorithm_name(evo.getAlgorithm());
+		configureData.setEpoch(evo.getEpoch());
+		configureData.setPop_size(evo.getPopsize());
+		configureData.setProb_crossover(evo.getProbcrossover());
+		configureData.setProb_mut(evo.getProbmut());
+
+		Optimizer_GA_Input ga_input =new Optimizer_GA_Input();
+		ga_input.setConfigure_data(configureData);
+		ga_input.setOptimodel_data(optimodelData);
+		ga_input.setSubsolver_data(solverdata);
+
+		JAXBContext context = JAXBContext.newInstance(Optimizer_GA_Input.class);
+		Marshaller marshaller = context.createMarshaller();
+		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+		Writer writer = new FileWriter(inputxml);
+		try {
+			marshaller.marshal(ga_input, writer);
+			writer.close();
+		}catch (Exception e){
+			writer.close();
+			throw new BusinessException("");
+		}finally {
+			writer.close();
+		}
+	}
+
+	/**
+	 * 西工大系统,“求解”业务前处理
+ 	 */
+	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();
+	}
+
+}

+ 75 - 0
src/main/java/com/miniframe/bisiness/mdo/MDO0021Service.java

@@ -0,0 +1,75 @@
+package com.miniframe.bisiness.mdo;
+
+import java.util.ArrayList;
+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.MDO0021BaseModel;
+import com.miniframe.generate.comm.mdo.D_MDO0021_ROWS_RECODE;
+import com.miniframe.mdo.service.LogService;
+import com.miniframe.model.mdo.MdoProComval;
+import com.miniframe.model.mdo.MdoProComvalSQLBuilder;
+import com.miniframe.model.mdo.dao.MdoProComvalMapper;
+import com.miniframe.tools.XiJsonUtil;
+
+/**
+ * 西工大系统,“求解过程变量数据获取”逻辑处理(重新生成不覆盖)。
+ */
+public class MDO0021Service extends MDO0021BaseModel implements ExecProcessFlow {
+	
+	private static final long serialVersionUID = -7051358269847459502L;
+		
+	/**
+	 * 西工大系统,“求解过程变量数据获取”业务核心处理
+ 	 */
+	public void transExecute() throws Exception {
+		String pid =this.getA_mdo0021().getPid();
+		MdoProComvalMapper comvalDao = UtilTools.getBean(MdoProComvalMapper.class);
+		MdoProComvalSQLBuilder sb =new MdoProComvalSQLBuilder();
+		MdoProComvalSQLBuilder.Criteria sc = sb.createCriteria();
+		sc.andPidEqualTo(pid);
+		List<MdoProComval> comvals =comvalDao.selectByExample(sb);
+		List<D_MDO0021_ROWS_RECODE> rows =new ArrayList<>();
+		for (MdoProComval comval:comvals) {
+			D_MDO0021_ROWS_RECODE row =new D_MDO0021_ROWS_RECODE();
+			row.setComvid(comval.getId());
+			row.setPid(pid);
+			row.setStep(comval.getStep());
+			row.setVals(comval.getVals());
+			row.setVars(comval.getVars());
+			rows.add(row);
+//			LogService.addLog(pid, XiJsonUtil.objectToJson(comval));
+		}
+		this.getD_mdo0021().setRows(rows);
+
+	}
+	
+	/**
+	 * 西工大系统,“求解过程变量数据获取”业务前处理
+ 	 */
+	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();
+	}
+
+}

+ 23 - 0
src/main/java/com/miniframe/dbtransfer/MdoProComvalDbTransfer.java

@@ -0,0 +1,23 @@
+package com.miniframe.dbtransfer;
+
+import com.miniframe.core.DbTransfer;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+import com.miniframe.model.mdo.MdoProComval;
+
+/**
+ * 实体列表,“MDO_PRO_COMVAL”数据库数据转化逻辑处理(重新生成不覆盖)。
+ */
+public class MdoProComvalDbTransfer extends DbTransfer implements Serializable {
+	
+	private static final long serialVersionUID = -7051358269847459502L;
+
+	@Override
+	public List transfer(final List l,Map map) throws Exception{
+		List<MdoProComval> list=l;
+		return list;
+	};
+
+}

+ 82 - 0
src/main/java/com/miniframe/mdo/service/LogService.java

@@ -0,0 +1,82 @@
+package com.miniframe.mdo.service;
+
+import com.miniframe.core.ext.UtilTools;
+import com.miniframe.model.mdo.MdoProject;
+
+import com.miniframe.tools.XIFileUtils;
+import com.miniframe.websocket.WebsocketEndPoint;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * 日志存储
+ */
+public class LogService {
+    public static final String BPATH = "/cephfs/mdo";
+    /**
+     * 创建文件
+     * @param pro
+     * @return
+     */
+    public static File createLog(MdoProject pro){
+        String filePath =LogService.BPATH+"/"+pro.getId()+"/log.txt";
+        XIFileUtils.mkdir(LogService.BPATH);
+        XIFileUtils.mkdir(LogService.BPATH+"/"+pro.getId());
+        File file =new File(filePath);
+        return file;
+    }
+
+    /**
+     * 清空文件
+     * @param
+     */
+    public static void clearLog(String pid){
+        String filePath =LogService.BPATH+"/"+pid+"/log.txt";
+        FileWriter writer = null;
+        try {
+            writer = new FileWriter(filePath);
+            writer.write("");  // 将内容设置为空字符串即可清空文件
+            writer.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 文件内容追加
+     * @param
+     */
+    public static void addLog(String pid,String log){
+        String filePath =LogService.BPATH+"/"+pid+"/log.txt";
+        FileWriter writer = null;
+        try {
+            writer = new FileWriter(filePath,true);
+            BufferedWriter bwriter = new BufferedWriter(writer);
+            bwriter.write(log);  // 将内容写入文件末尾
+            bwriter.newLine();
+            bwriter.close();
+            writer.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()->{
+//                System.out.println("s消息发送:aid:"+aid+"--log:"+log);
+        WebsocketEndPoint webs =  (WebsocketEndPoint) UtilTools.getBean("websocketEndPoint");
+        webs.sendMessageToUser(String.valueOf(pid),log);
+//                System.out.println("d消息发送:aid:"+aid+"--log:"+log);
+        return null;
+        });
+    }
+    /**
+     * 文件内容追加
+     * @param
+     */
+    public static void addLog(MdoProject pro,String log){
+        addLog(pro.getId(),log);
+    }
+
+}

+ 9 - 0
src/main/java/com/miniframe/mdo/service/OptimizerGAService.java

@@ -0,0 +1,9 @@
+package com.miniframe.mdo.service;
+
+/**
+ * 求解服务
+ */
+public class OptimizerGAService {
+
+
+}

+ 20 - 0
src/main/java/com/miniframe/modo/xml/input/Optimodel_Data.java

@@ -10,6 +10,8 @@ import javax.xml.bind.annotation.XmlRootElement;
  *         <xl>[0,0,0,0,0]</xl>
  *         <f_name>f1</f_name>
  *         <f_direction>1</f_direction>
+ *         <g_name>g1</g_name>
+ *         <g_direction>-1</g_direction>
  *     </optimodel_data>
  */
 @XmlRootElement(name = "optimodel_data")
@@ -19,6 +21,24 @@ public class Optimodel_Data {
     private String xl;
     private String f_name;
     private String f_direction;
+    private String g_name;
+    private String g_direction;
+
+    public String getG_name() {
+        return g_name;
+    }
+
+    public void setG_name(String g_name) {
+        this.g_name = g_name;
+    }
+
+    public String getG_direction() {
+        return g_direction;
+    }
+
+    public void setG_direction(String g_direction) {
+        this.g_direction = g_direction;
+    }
 
     public String getXl() {
         return xl;

+ 0 - 1
src/main/resources/templates/ReadMe.md

@@ -1 +0,0 @@
-存放模板文件

+ 0 - 7
src/main/resources/templates/escape.ftl

@@ -1,7 +0,0 @@
-EscapeNumber:${escapenum}
-<#list vos as vo>
-EscapeLine: ${vo.way.code},${vo.nodenum}
-<#list vo.nodes as node>
-${node.ncode}
-</#list>
-</#list>

+ 0 - 19
src/main/resources/templates/fire2Control.ftl

@@ -1,19 +0,0 @@
-geoFile : ${geoFilePath}
-initFile :  ${initFilePath}
-interaction file name : ${fireInteractionPath}
-equipmentFile : /home/disaster/zhty/Program/Equipment
-monitorFile : ${monitorPath}
-peakFile : /home/disaster/zhty/Program/peakin
-midPath : ${midPath}
-outPath : ${outPath}
-totaltime : ${totaltime}
-dt: ${dt}
-dx: ${dx}
-report step : ${reportstep}
-interactionstep : ${interactionstep}
-Boundary number :${boundarynum}
-FireSource number:${fireSourceNum}
-Number Con:${conNum}
-<#list cons as b>
-${b.code},${b.diffcoe}
-</#list>

+ 0 - 7
src/main/resources/templates/fire2EscapeControl.ftl

@@ -1,7 +0,0 @@
-geoFile : ${geoFilePath}
-midPath : ${midPath}
-outPath : ${outPath}
-escapeFile : ${escape}
-personnumber : 1
-person1,pipes22,0.1,500,1
-#end

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

@@ -1,4 +0,0 @@
-cd /home/disaster/zhty/Program
-export LD_LIBRARY_PATH=./bin:$LD_LIBRARY_PATH
-./Fire ${firecontrolPath}
-./calDanger ${fireEscapeControlPath}

+ 0 - 17
src/main/resources/templates/fireControl.ftl

@@ -1,17 +0,0 @@
-geoFile : ${geoFilePath}
-initFile :  ${initFilePath}
-interaction file name : ${fireInteractionPath}
-monitorFile : ${monitorPath}
-midPath : ${midPath}
-outPath : ${outPath}
-totaltime : ${totaltime}
-dt: ${dt}
-dx: ${dx}
-report step : ${reportstep}
-interactionstep : ${interactionstep}
-Boundary number :${boundarynum}
-FireSource number:${fireSourceNum}
-Number Con:${conNum}
-<#list cons as b>
-${b.code},${b.diffcoe}
-</#list>

+ 0 - 16
src/main/resources/templates/fireInit.ftl

@@ -1,16 +0,0 @@
-<#setting number_format="0.##">
-#nodes
-#end
-#boundaries Inlet
-<#list boundaries as b>
-${b.nname},${b.type},${b.flow},${b.pressure},${b.temperature} ,${b.polcon1} ,${b.polcon2}
-</#list>
-#end
-#Fires
-<#list vo.dourceVos as d>
-Fire ${d.dsource.pname} ${d.dsource.site} ${d.dsourceVals?size}
-<#list d.dsourceVals as dv>
-${dv.timeline}  ${dv.val1}  ${dv.val2}  ${dv.val3}
-</#list>
-</#list>
-#end

+ 0 - 19
src/main/resources/templates/fireInit.ftlbak

@@ -1,19 +0,0 @@
-<#setting number_format="0.##">
-#nodes
-<#list vo.nodeVals as nval>
-${nval.nname},${nval.ntype} ,${nval.val1} ,${nval.val2} ,${nval.val3} ,${nval.val4}
-</#list>
-#end
-#boundaries Inlet
-<#list boundaries as b>
-${b.nname},${b.type},${b.pressure},${b.temperature} ,${b.polcon1} ,${b.polcon2}
-</#list>
-#end
-#Fires
-<#list vo.dourceVos as d>
-Fire ${d.dsource.pname} ${d.dsource.site} ${d.dsourceVals?size}
-<#list d.dsourceVals as dv>
-${dv.timeline}  ${dv.val1}  ${dv.val2}  ${dv.val3}
-</#list>
-</#list>
-#end

+ 0 - 3
src/main/resources/templates/fireRunsh.ftl

@@ -1,3 +0,0 @@
-cd /home/disaster/fire
-export LD_LIBRARY_PATH=./bin:$LD_LIBRARY_PATH
-./Fire ${firecontrolPath}

+ 0 - 8
src/main/resources/templates/geometry.ftl

@@ -1,8 +0,0 @@
-nodes number:${nodenum}
-<#list nodes as node>
-${node.name},${node.x},${node.y},${node.z}
-</#list>
-pipes number:${pipenum}
-<#list pipes as p>
-${p.name},${p.snid},${p.enid},${p.roughCoe},${p.sectionType},${p.sectionPara1},${p.sectionPara2},${p.sectionPara3},${p.sectionPara4},${p.sectionPara5}
-</#list>

+ 0 - 8
src/main/resources/templates/geometry2.ftl

@@ -1,8 +0,0 @@
-nodes number : ${nodenum}
-<#list nodes as node>
-${node.name},${node.x},${node.y},${node.z}
-</#list>
-pipes number:${pipenum}
-<#list pipes as p>
-${p.dPipe.name},${p.snName},${p.enName},${p.dPipe.roughCoe},${p.dPipe.sectionType},${p.dPipe.sectionPara1},${p.dPipe.sectionPara2},${p.dPipe.sectionPara3},${p.dPipe.sectionPara4},${p.dPipe.sectionPara5}
-</#list>

+ 0 - 21
src/main/resources/templates/mashGasControl.ftl

@@ -1,21 +0,0 @@
-geoFile : ${geoFilePath}
-initFile : ${initFilePath}
-monitorFile : ${monitorPath}
-midPath : ${midPath}
-outPath : ${outPath}
-CPUS: ${cups}
-3Dtotaltime: 0.000002
-totaltime: ${totaltime}
-dt: ${dt}
-dx: ${dx}
-report step: ${reportstep}
-Boundary number:${boundarynum}
-MashGas number:${mashgasnumber}
-tecplot : OK
-interactionstep : ${interactionstep}
-interaction file name : ${fireInteractionPath}
-Number Con:${conNum}
-<#list cons as b>
-${b.code},${b.diffcoe}
-</#list>
-#end

+ 0 - 7
src/main/resources/templates/mashGasEscapeControl.ftl

@@ -1,7 +0,0 @@
-geoFile : ${geoFilePath}
-midPath : ${midPath}
-outPath : ${outPath}
-escapeFile : ${escape}
-personnumber : 1
-person1,pipes22,0.1,500,1
-#end

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

@@ -1,18 +0,0 @@
-#odes
-#end
-#boundaries Inlet 
-<#list boundaries as b>
-${b.nname},${b.type},${b.flow},${b.pressure},${b.temperature} ,${b.polcon1} ,${b.polcon2}
-</#list>
-#end 
-#MashGass
-MashGas1,${blastnum},${gathernum}
-<#list blastList as b>
-${b.pname},${b.ssite},${b.esite}
-</#list>
-grdfile,${gas.gfname}
-inpfile,${gas.bfname}
-<#list gatherList as b>
-${b.name},${b.type},${b.gasdensity}
-</#list>
-#end

+ 0 - 16
src/main/resources/templates/mashGasRunsh.ftl

@@ -1,16 +0,0 @@
-ulimit -s unlimited
-cd /home/disaster/gas/bin
-export PATH="/home/disaster/gas/mpich2/bin:/home/disaster/gas/bin:$PATH"
-./couple --proc=1d-3d --path=${casepath} --input-1d=${gascontrol}
-./convert_input --path=${casepath}
-./grid_split --path=${casepath}
-./prepch --path=${casepath}
-
-mpirun -n 4 ./solver --path=${casepath}
-
-./couple --proc=3d-1d --path=${casepath} --input-1d=${gascontrol} --delhis
-
-cd /home/disaster/zhty/Program
-export LD_LIBRARY_PATH=./bin:$LD_LIBRARY_PATH
-./Gas2 ${gascontrol}
-./calDanger ${gasescapecontrol}

+ 0 - 5
src/main/resources/templates/monitor.ftl

@@ -1,5 +0,0 @@
-#monitor number:${monnum}
-<#list monitors as m>
-${m.chname},${m.pname},${m.site}
-</#list>
-#end

+ 0 - 19
src/main/resources/templates/water2Control.ftl

@@ -1,19 +0,0 @@
-geoFile : ${geoFilePath}
-initFile : ${initFilePath}
-monitorFile : ${monitorPath}
-equipmentFile : /home/disaster/zhty/Program/Equipment
-midPath : ${midPath}
-outPath : ${outPath}
-calpeak : OK
-peakFile : /home/disaster/zhty/Program/peakin
-totaltime : ${totaltime}
-report step : ${reportstep}
-dt : ${dt}
-dx : ${dx}
-Boundary number : ${boundarynum}
-WaterSource number : ${waterSourcenum}
-interactionstep : ${interactionstep}
-escapeFile : ${escape}
-personnumber : 1
-pipes22,0.1,500
-#end

+ 0 - 9
src/main/resources/templates/water2EscapeControl.ftl

@@ -1,9 +0,0 @@
-geoFile : ${geoFilePath}
-initFile : ${initFilePath}
-monitorFile : ${monitorPath}
-midPath : ${midPath}
-outPath : ${outPath}
-escapeFile : ${escape}
-personnumber : 1
-person1,pipes22,0.1,500,1
-#end

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

@@ -1,4 +0,0 @@
-cd /home/disaster/zhty/Program
-./WaterPre ${waterControlPath}
-./Water ${waterControlPath}
-./calDanger ${waterEscapeControlPath}

+ 0 - 12
src/main/resources/templates/waterControl.ftl

@@ -1,12 +0,0 @@
-geoFile : ${geoFilePath}
-initFile : ${initFilePath}
-midPath : ${midPath}
-outPath : ${outPath}
-monitorFile : ${monitorPath}
-totaltime : ${totaltime}
-report step : ${reportstep}
-interactionstep : ${interactionstep}
-dt : ${dt}
-dx : ${dx}
-Boundary number : ${boundarynum}
-WaterSource number : ${waterSourcenum}

+ 0 - 16
src/main/resources/templates/waterInit.ftl

@@ -1,16 +0,0 @@
-<#setting number_format="0.##">
-#nodes
-#end
-#boundaries
-<#list boundaries as b>
-${b.nname},outlet
-</#list>
-#end
-#waters
-<#list vo.dourceVos as d>
-water ${d.dsource.pname} ${d.dsource.site} ${d.dsourceVals?size}
-<#list d.dsourceVals as dv>
-${dv.timeline}  ${dv.val1}
-</#list>
-</#list>
-#end

+ 0 - 19
src/main/resources/templates/waterInit.ftlbak

@@ -1,19 +0,0 @@
-<#setting number_format="0.##">
-#nodes
-<#list vo.nodeVals as nval>
-${nval.nname},${nval.ntype} ,${nval.val1} ,${nval.val2} ,${nval.val3} ,${nval.val4}
-</#list>
-#end
-#boundaries Inlet
-<#list boundaries as b>
-${b.nname},${b.type},${b.pressure},${b.temperature} ,${b.polcon1} ,${b.polcon2}
-</#list>
-#end
-#waters
-<#list vo.dourceVos as d>
-water ${d.dsource.pname} ${d.dsource.pname} ${d.dsource.site} ${d.dsourceVals?size}
-<#list d.dsourceVals as dv>
-${dv.timeline}  ${dv.val1}  ${dv.val2}  ${dv.val3}
-</#list>
-</#list>
-#end

+ 0 - 3
src/main/resources/templates/waterRunsh.ftl

@@ -1,3 +0,0 @@
-cd /home/disaster/Water
-./pre   ${waterControlPath}
-./Water ${waterControlPath}

+ 44 - 0
src/test/java/com/miniframe/comm/httpmdoapater/MDO0020Test.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_MDO0020;
+import com.miniframe.generate.comm.httpmdoapater.MDO0020Client;
+import com.miniframe.generate.business.mdo.model.MDO0020BaseModel;
+
+public class MDO0020Test {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0020Test.class);
+
+	/**
+	 * 求解,获取报文体
+	 * @return
+	 */
+	public static A_MDO0020 getA_mdo0020() {
+		A_MDO0020 a_mdo0020 = new A_MDO0020();
+
+		// ----------以下增加【求解】上行体赋值-------------
+
+
+
+		// ---------------------------------------------------
+		return a_mdo0020;
+	}
+	
+	/**
+	 * 运行客户端测试,求解
+	 * 
+	 * @param args
+	 * @throws Exception
+	 */
+	public static void main(String[] args) throws Exception {
+		MDO0020BaseModel model = new MDO0020BaseModel();
+		model.setA_mdohead(HttpmdoapaterUtil.getA_mdohead("MDO0020"));
+		model.setA_mdo0020(MDO0020Test.getA_mdo0020());
+		MDO0020Client client = new MDO0020Client();
+		logger.error("客户端发送前总线:\r\n"+model);
+		model = client.execute(model);
+		logger.error("客户端发送后总线:\r\n"+model);
+	}
+}

+ 44 - 0
src/test/java/com/miniframe/comm/httpmdoapater/MDO0021Test.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_MDO0021;
+import com.miniframe.generate.comm.httpmdoapater.MDO0021Client;
+import com.miniframe.generate.business.mdo.model.MDO0021BaseModel;
+
+public class MDO0021Test {
+
+	private static final Logger logger = LoggerFactory.getLogger(MDO0021Test.class);
+
+	/**
+	 * 求解过程变量数据获取,获取报文体
+	 * @return
+	 */
+	public static A_MDO0021 getA_mdo0021() {
+		A_MDO0021 a_mdo0021 = new A_MDO0021();
+
+		// ----------以下增加【求解过程变量数据获取】上行体赋值-------------
+
+
+
+		// ---------------------------------------------------
+		return a_mdo0021;
+	}
+	
+	/**
+	 * 运行客户端测试,求解过程变量数据获取
+	 * 
+	 * @param args
+	 * @throws Exception
+	 */
+	public static void main(String[] args) throws Exception {
+		MDO0021BaseModel model = new MDO0021BaseModel();
+		model.setA_mdohead(HttpmdoapaterUtil.getA_mdohead("MDO0021"));
+		model.setA_mdo0021(MDO0021Test.getA_mdo0021());
+		MDO0021Client client = new MDO0021Client();
+		logger.error("客户端发送前总线:\r\n"+model);
+		model = client.execute(model);
+		logger.error("客户端发送后总线:\r\n"+model);
+	}
+}

+ 58 - 0
src/test/java/com/miniframe/exeWindTest.java

@@ -0,0 +1,58 @@
+package com.miniframe;
+
+import com.miniframe.mdo.service.LogService;
+import com.miniframe.modo.xml.input.Optimizer_GA_Input;
+import com.miniframe.tools.XiJsonUtil;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import java.io.*;
+
+public class exeWindTest {
+
+
+    public static void main(String[] args) throws Exception {
+        String pid = "540b8c5e3ddb4d1884bc980e61e8786d";
+        Runtime runtime = Runtime.getRuntime();
+        Process p = null;
+        LogService.addLog(pid, "求解——————————————————开始");
+        p = runtime.exec("F:\\cephfs\\mdo\\540b8c5e3ddb4d1884bc980e61e8786d\\in\\ga.bat");
+        InputStream fis = p.getInputStream();
+        InputStreamReader isr = new InputStreamReader(fis);
+        BufferedReader br = new BufferedReader(isr);
+        String line = null;
+        while ((line = br.readLine()) != null) {
+//            LogService.addLog(pid,line);
+            System.out.println(line);
+        }
+        LogService.addLog(pid, "求解——————————————————成功");
+    }
+
+//        String pythonScriptPath = "D:\\mdo\\20241008_Version\\Optimizer_GA.py";
+//        ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScriptPath);
+//        processBuilder.redirectErrorStream(true);
+//
+//        try {
+//            Process process = processBuilder.start();
+//
+//            // 读取Python脚本的输出
+//            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+//            String line;
+//            while ((line = reader.readLine()) != null) {
+//                System.out.println(line);
+//            }
+//
+//            // 等待Python脚本执行完成
+//            int exitCode = process.waitFor();
+//            if (exitCode != 0) {
+//                System.out.println("Python script exited with error code: " + exitCode);
+//            }
+//
+//            reader.close();
+//        } catch (IOException | InterruptedException e) {
+//            e.printStackTrace();
+//        }
+//    }
+
+}

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

@@ -7,3 +7,5 @@
 6,MDO_PRO_INPUT,执行输入条件,FALSE,
 7,MDO_PRO_OUTPUT,执行输出条件,FALSE,
 8,MDO_PRO_EVOLUTION,进化优化器参数,FALSE,
+9,MDO_PRO_COMVAL,计算过程数据,FALSE,
+

+ 5 - 1
系统设计/数据定义/返 回 码/business(业务系统).csv

@@ -60,6 +60,7 @@
 2000006,EB2000006,文件上传失败!,
 2000007,EB2000007,文件读取失败!,
 2000008,EB2000008,文件不存在!,
+2000009,EB2000008,文件移动拷贝失败!,
 
 3000001,MDO000001,工程不存在!,
 3000002,MDO000002,模板不存在!,
@@ -69,4 +70,7 @@
 
 3000006,MDO000006,输入参数不存在!,
 3000007,MDO000007,输出参数不存在!,
-3000008,MDO000008,进化优化器参数不存在!,
+3000008,MDO000008,进化优化器参数不存在!,
+
+3000009,MDO000009,求解配置文件生成失败!,
+3000010,MDO000010,求解失败!,

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

@@ -20,3 +20,5 @@
 100017,MDO0017,求解输出参数删除,service,
 100018,MDO0018,进化优化器参数查询,service,
 100019,MDO0019,进化优化器参数添加修改,service,
+100020,MDO0020,求解,service,
+100021,MDO0021,求解过程变量数据获取,service,

+ 2 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0020_A(求解).csv

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

+ 1 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0020_D(求解).csv

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

+ 2 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0021_A(求解过程变量数据获取).csv

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

+ 7 - 0
系统设计/通信设计/通讯报文/mdo(系统服务)/报文体/MDO0021_D(求解过程变量数据获取).csv

@@ -0,0 +1,7 @@
+序号,英文名称,中文名称,数据类型,默认值,格式化,非空/引用,最小(长度/值),最大(长度/值),验证规则,标准数据ID,XML样式,TAG标签,映射/子标签,CDATA
+1,rows,数据,list,,,,0,,,,,,,
+1.1,comvid,过程变量数据ID,string,,,,,,,,,,,
+1.2,step,步数,string,,,,,,,,,,,
+1.3,vars,变量,string,,,,,,,,,,,
+1.4,vals,数据,string,,,,,,,,,,,
+1.5,pid,项目,string,,,,,,,,,,,