Ver Fonte

add a matlab demo and some demo

allen há 1 ano atrás
pai
commit
fb16124ee9

+ 3 - 2
pdaaphm-admin/src/main/java/com/pdaaphm/biz/service/impl/AlgorithmServiceImpl.java

@@ -176,6 +176,7 @@ public class AlgorithmServiceImpl implements IAlgorithmService
         Algorithm algorithm = this.selectAlgorithmById(id);
         AlgorithmSubType algorithmSubType = algorithmSubTypeMapper.selectAlgorithmSubTypeById(algorithm.getSubTypeId());
         RunAlgorithmService runAlgorithmService = algorithmFactory.createRun(algorithmSubType.getRunType());
+        // todo remove this code
         PadaphmConfig.getProfile();
         if(CollectionUtils.isEmpty(list)){
             return res;
@@ -186,6 +187,7 @@ public class AlgorithmServiceImpl implements IAlgorithmService
         String prefix2 = PadaphmConfig.getResultPath();
         int j = 1;
         for (int i = 0; i < list.size(); i++) {
+            // todo "1".equals(list.get(i).get("type"))
             if (list.get(i).get("type").equals("1")) {
                 String s = (String)list.get(i).get("path");
                 if (s.startsWith("/profile")) {
@@ -208,8 +210,7 @@ public class AlgorithmServiceImpl implements IAlgorithmService
         requestDto.setDocList(docAddress);
         requestDto.setResultList(resultAddress);
         runAlgorithmService.runAlgorithm(id, (String)list.get(0).get("url"), requestDto);
-        //3. update Algorithm.completedTime and Algorithm.costSecond
-        //4. res = 1;
+        //3. todo update Algorithm.completedTime and Algorithm.costSecond
         return res;
     }
 }

+ 20 - 0
pdaaphm-admin/src/main/java/com/pdaaphm/biz/service/impl/RunMatlabImpl.java

@@ -5,7 +5,9 @@ import com.pdaaphm.biz.dto.RequestDTO;
 import com.pdaaphm.biz.service.RunAlgorithmService;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.util.List;
+import java.io.IOException;
 
 @Service
 public class RunMatlabImpl implements RunAlgorithmService {
@@ -14,4 +16,22 @@ public class RunMatlabImpl implements RunAlgorithmService {
         System.out.println("runMatlab!");
         return null;
     }
+
+
+    /**
+     * this is a demo
+     */
+    public static void main(String[] args) {
+        try {
+            // 指定要执行的外部程序和参数
+            ProcessBuilder processBuilder = new ProcessBuilder("C:\\soft\\Program Files (x86)\\Tencent\\WeDoc\\WeChat Files\\Allen_AL\\FileStorage\\File\\2023-08\\fuliye\\for_redistribution_files_only\\fuliye.exe");
+            // 启动外部程序
+            Process process = processBuilder.start();
+            // 等待外部程序执行完成
+            int exitCode = process.waitFor();
+            System.out.println("外部程序执行完成,退出码:" + exitCode);
+        } catch (IOException | InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 16 - 8
pdaaphm-admin/src/main/java/com/pdaaphm/biz/service/impl/RunPythonImpl.java

@@ -38,21 +38,17 @@ public class RunPythonImpl implements RunAlgorithmService {
     private SubAlgorithmMapper subAlgorithmMapper;
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
-//    @Override
-//    public void runAlgorithm(String url, List<String> docAddress) {
-//        // create httpclient, post method
-//        // url/docAddress/
-//        System.out.println("runPython!");
-//    }
 
+    @Override
     public BaseResponse runAlgorithm(Long id, String url, RequestDTO requestDto) {
+
+        // create http
         HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
         httpRequestFactory.setConnectionRequestTimeout(3000);
         httpRequestFactory.setConnectTimeout(3000);
         httpRequestFactory.setReadTimeout(3000);
-//        RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
-//        BaseResponse response = restTemplate.postForObject(url, docAddress, BaseResponse.class);
         WebClient webClient = WebClient.create(url);
+        // send post
         Mono<BaseResponse> result = webClient.post()  // 使用POST方法
                 .uri("/request")  // 指定URI
                 .contentType(MediaType.APPLICATION_JSON)  // 设置Content-Type为application/json
@@ -69,9 +65,13 @@ public class RunPythonImpl implements RunAlgorithmService {
                         return Mono.just(BaseResponse.error("Other error"));
                     }
                 });  // 将响应体转换为String
+        // get response
         BaseResponse res = result.block();
+
+        // save result path to subAlgorithm
         List<String> resultList = requestDto.getResultList();
         List<Map> subAlgorithmOutputList = subAlgorithmMapper.selectSubAlgorithmOutputList(id);
+        // todo subAlgorithmOutputList == null || subAlgorithmOutputList.size == 0?
         for (int i = 0; i < resultList.size(); i++) {
             String resultPath = resultList.get(i);
             Map subAlgorithmOutput = subAlgorithmOutputList.get(i);
@@ -89,6 +89,7 @@ public class RunPythonImpl implements RunAlgorithmService {
                 File resultFile = new File();
                 resultFile.setName(map.get("name"));
                 resultFile.setPath(map.get("path"));
+                // todo 魔鬼数字,创建静态变量在File中 xxx=1,yyy=2,这里引用
                 resultFile.setType("2");
                 resultFile.setCreateTime(DateUtils.getNowDate());
                 Long fileId = fileMapper.selectOutputFile(id);
@@ -105,20 +106,25 @@ public class RunPythonImpl implements RunAlgorithmService {
                 subAlgorithm.setFieldId((Long) subAlgorithmOutput.get("field_id"));
                 subAlgorithm.setUploadId(resultFile.getId());
                 subAlgorithm.setCreateTime(DateUtils.getNowDate());
+                // todo 只有update?
                 subAlgorithmMapper.updateSubAlgorithm(subAlgorithm);
             }
             else {
                 logger.error("存在未生成文件!");
+                // todo 对程序结果产生负面影响的分子,应反馈给前端
+                // update algorithm
             }
         }
         return res;
     }
 
+    // todo return type is Map<String,String>
     public Map getFinalNameAndPath(String dirs, String prefixName) {
         // 指定目录路径
         java.io.File directory = new java.io.File(dirs);
 
         // 已知的文件名前缀(不带扩展名)
+        // todo variable is redundant
         String knownFileName = prefixName;
 
         // 使用FilenameFilter筛选与已知文件名开头的文件
@@ -132,9 +138,11 @@ public class RunPythonImpl implements RunAlgorithmService {
             map.put("path",dirs + '/' + matchingFiles[0]);
             return map;
         } else if (matchingFiles != null && matchingFiles.length > 1) {
+            // todo 工程内禁止使用System.out.print 日志统一使用log
             System.out.println("找到多个匹配的文件,这不应该发生。");
             return null;
         } else {
+            // todo 工程内禁止使用System.out.print 日志统一使用log
             System.out.println("没有找到匹配的文件。");
             return null;
         }