|
@@ -1,11 +1,14 @@
|
|
|
package com.miniframe.bisiness.es;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.nio.file.Files;
|
|
|
+import java.nio.file.Path;
|
|
|
import java.nio.file.Paths;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
import com.github.dockerjava.api.async.ResultCallback;
|
|
|
import com.github.dockerjava.api.model.Frame;
|
|
@@ -13,14 +16,8 @@ import com.miniframe.core.ExecProcessFlow;
|
|
|
import com.miniframe.core.ext.UtilTools;
|
|
|
import com.miniframe.generate.business.es.model.ES0013BaseModel;
|
|
|
import com.miniframe.mappers.es.dao.EsMapper;
|
|
|
-import com.miniframe.model.es.EsProCom;
|
|
|
-import com.miniframe.model.es.EsProJob;
|
|
|
-import com.miniframe.model.es.EsProResultKey;
|
|
|
-import com.miniframe.model.es.EsProResultValue;
|
|
|
-import com.miniframe.model.es.dao.EsProComConMapper;
|
|
|
-import com.miniframe.model.es.dao.EsProJobMapper;
|
|
|
-import com.miniframe.model.es.dao.EsProResultKeyMapper;
|
|
|
-import com.miniframe.model.es.dao.EsProResultValueMapper;
|
|
|
+import com.miniframe.model.es.*;
|
|
|
+import com.miniframe.model.es.dao.*;
|
|
|
import com.miniframe.tools.XIFileUtils;
|
|
|
import com.miniframe.tools.docker.DockerExe;
|
|
|
import es.service.LogService;
|
|
@@ -44,7 +41,20 @@ public class ES0013Service extends ES0013BaseModel implements ExecProcessFlow {
|
|
|
XIFileUtils.mkdir(XIFileUtils.getRootPathStr()+"/es/"+pid+"/Calculate");
|
|
|
XIFileUtils.mkdir(XIFileUtils.getRootPathStr()+"/es/"+pid+"/Calculate/Geometry");//几何路径
|
|
|
TemplateGenerator.createPipenetXml(pid);
|
|
|
-
|
|
|
+ EsMapper esMapper = UtilTools.getBean(EsMapper.class);
|
|
|
+ Integer maxser =esMapper.getProJobSer(pid);
|
|
|
+ maxser=maxser==null?0:maxser;
|
|
|
+ String jobId = insertJob(pid,maxser);
|
|
|
+ run(pid,jobId,maxser+1);
|
|
|
+ }
|
|
|
+ private String updateJob(String jobId) {
|
|
|
+ EsProJobMapper epjDao = UtilTools.getBean(EsProJobMapper.class);
|
|
|
+ EsProJob esjob =epjDao.selectByPrimaryKey(jobId);
|
|
|
+ esjob.setEndTime(new Date());
|
|
|
+ epjDao.updateByPrimaryKey(esjob);
|
|
|
+ return jobId;
|
|
|
+ }
|
|
|
+ private String insertJob(String pid,Integer maxser) {
|
|
|
EsProJobMapper epjDao = UtilTools.getBean(EsProJobMapper.class);
|
|
|
EsProJob esjob = new EsProJob();
|
|
|
String jobId = UtilTools.getUUid();
|
|
@@ -52,20 +62,17 @@ public class ES0013Service extends ES0013BaseModel implements ExecProcessFlow {
|
|
|
esjob.setPid(pid);
|
|
|
esjob.setStartTime(new Date());
|
|
|
esjob.setEndTime(new Date());
|
|
|
- EsMapper esMapper = UtilTools.getBean(EsMapper.class);
|
|
|
- Integer maxser =esMapper.getProJobSer(pid);
|
|
|
- maxser=maxser==null?0:maxser;
|
|
|
+
|
|
|
esjob.setSer(maxser+1);
|
|
|
esjob.setUid(this.getA_eshead().getUserId());
|
|
|
esjob.setCreateTime(new Date());
|
|
|
esjob.setUpdateTime(new Date());
|
|
|
- esjob.setRemark("");
|
|
|
epjDao.insert(esjob);
|
|
|
- run(pid,jobId);
|
|
|
-
|
|
|
-
|
|
|
+ return jobId;
|
|
|
}
|
|
|
- private void run(String pid,String jobId) throws Exception {
|
|
|
+
|
|
|
+ private void run(String pid,String jobId,Integer maxser) throws Exception {
|
|
|
+ LogService.clearLog(pid);
|
|
|
LogService.addLog(pid,"求解——————————————————开始");
|
|
|
DockerExe.stopDocker(pid);
|
|
|
DockerExe.run(pid);
|
|
@@ -105,6 +112,10 @@ public class ES0013Service extends ES0013BaseModel implements ExecProcessFlow {
|
|
|
});
|
|
|
LogService.addLog(pid,"求解——————————————————成功");
|
|
|
readFileSaveTb(pid,jobId);
|
|
|
+ mvFiles(pid, maxser);
|
|
|
+
|
|
|
+
|
|
|
+ updateJob(jobId);
|
|
|
} catch (Exception e) {
|
|
|
LogService.addLog(pid,"求解——————————————————失败");
|
|
|
e.printStackTrace();
|
|
@@ -113,9 +124,30 @@ public class ES0013Service extends ES0013BaseModel implements ExecProcessFlow {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ private void mvFiles(String pid, Integer maxser) {
|
|
|
+ //文件移动
|
|
|
+ XIFileUtils.mkdir(XIFileUtils.getRootPathStr()+"/es/"+ pid +"/Calculate/"+ maxser);
|
|
|
+ Path directory = Paths.get(XIFileUtils.getRootPathStr()+"/es/"+ pid +"/Calculate"); // 替换为你的目录路径
|
|
|
+ try (Stream<Path> stream = Files.list(directory)) {
|
|
|
+ stream.forEach(path -> {
|
|
|
+ if (Files.isRegularFile(path)) { // 确保是普通文件
|
|
|
+ XIFileUtils.fileCopy(path.toString(),
|
|
|
+ XIFileUtils.getRootPathStr()+"/es/"+ pid +"/Calculate/"+ maxser +"/"+path.getFileName());
|
|
|
+ System.out.println("File: " + path.getFileName());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void readFileSaveTb(String pid,String jobId) throws Exception{
|
|
|
- EsMapper esMapper = UtilTools.getBean(EsMapper.class);
|
|
|
- List<EsProCom> epcList = esMapper.selectEsProComListByPid(pid);
|
|
|
+ EsProComMapper pcdao = UtilTools.getBean(EsProComMapper.class);
|
|
|
+ EsProComSQLBuilder pcsb = new EsProComSQLBuilder();
|
|
|
+ EsProComSQLBuilder.Criteria pcsc = pcsb.createCriteria();
|
|
|
+ pcsc.andPidEqualTo(pid);
|
|
|
+ pcsc.andComIdNotEqualTo("-1");//排除模拟数据
|
|
|
+ List<EsProCom> epcList = pcdao.selectByExample(pcsb);
|
|
|
int step = 0;
|
|
|
for(int i=0;i<epcList.size();i++){
|
|
|
String fileName = epcList.get(i).getIdCode();
|