diff --git a/pom.xml b/pom.xml
index b96e18e..79679fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -75,6 +75,7 @@
+
org.springdoc
springdoc-openapi-starter-webmvc-ui
@@ -96,6 +97,10 @@
org.springframework.boot
spring-boot-starter-actuator
+
+ org.springframework.boot
+ spring-boot-starter-thymeleaf
+
diff --git a/src/main/java/a8k/a8kproj/optalgo/type/A8kOptPeak.java b/src/main/java/a8k/a8kproj/optalgo/type/A8kOptPeak.java
index 2530a37..b621a25 100644
--- a/src/main/java/a8k/a8kproj/optalgo/type/A8kOptPeak.java
+++ b/src/main/java/a8k/a8kproj/optalgo/type/A8kOptPeak.java
@@ -4,6 +4,7 @@ import a8k.a8kproj.opttype.PeakName;
public class A8kOptPeak {
public PeakFindState state = PeakFindState.NOT_FIND_PEAK;
+ public PeakName peakName;
public Integer off;
public Double area;
@@ -11,7 +12,6 @@ public class A8kOptPeak {
public Integer peakStartPos;
public Integer peakEndPos;
- public PeakName peakName;
public String toString() {
return String.format("[%s: %s]", peakName, area);
@@ -28,4 +28,17 @@ public class A8kOptPeak {
val.peakName = peakName;
return val;
}
+
+ public A8kOptPeak() {
+ }
+
+ public A8kOptPeak(PeakFindState state, PeakName peakName, Integer off, Double area, Integer peakPos, Integer peakStartPos, Integer peakEndPos) {
+ this.state = state;
+ this.peakName = peakName;
+ this.off = off;
+ this.area = area;
+ this.peakPos = peakPos;
+ this.peakStartPos = peakStartPos;
+ this.peakEndPos = peakEndPos;
+ }
}
diff --git a/src/main/java/a8k/constant/FilePathConstant.java b/src/main/java/a8k/constant/FilePathConstant.java
index 85d0b2a..f64939a 100644
--- a/src/main/java/a8k/constant/FilePathConstant.java
+++ b/src/main/java/a8k/constant/FilePathConstant.java
@@ -1,6 +1,7 @@
package a8k.constant;
public class FilePathConstant {
- public static final String FILE_UPLOAD_PATH = "runenv/files/";
- public static final String FILE_DOWNLOAD_PATH = "runenv/files/";
+ public static final String FILE_UPLOAD_PATH = "runenv/files";
+ public static final String FILE_OPT_REPORT_PATH = "runenv/files/optReport";
+ public static final String FILE_DOWNLOAD_PATH = "runenv/files";
}
diff --git a/src/main/java/a8k/controler/filemgr/FileMgrControler.java b/src/main/java/a8k/controler/filemgr/FileMgrControler.java
deleted file mode 100644
index 982515c..0000000
--- a/src/main/java/a8k/controler/filemgr/FileMgrControler.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package a8k.controler.filemgr;
-
-
-import a8k.constant.FilePathConstant;
-import a8k.type.appret.ApiV1Ret;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.core.io.Resource;
-import org.springframework.http.ContentDisposition;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-import java.io.IOException;
-
-@Tag(name = "文件管理")
-@Slf4j
-@RestController
-@RequestMapping(value = "/filemgr")
-public class FileMgrControler {
-
-
- @GetMapping("/download/{path}")
- public ResponseEntity download(@PathVariable String path) {
- String realpath = String.format(FilePathConstant.FILE_DOWNLOAD_PATH + "/%s", path);
- String contentDisposition = ContentDisposition
- .builder("attachment")
- .filename(path) // Use the original filename
- .build().toString();
- return ResponseEntity.ok()
- .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
- .body(new FileSystemResource(realpath));
- }
-
-
- @PostMapping("/upload")
- public String handleFileUpload(@RequestParam("file") MultipartFile file) {
- String uploadDir = FilePathConstant.FILE_UPLOAD_PATH;
- File updatefilepath = new File(uploadDir);
- if (!updatefilepath.exists()) {
- updatefilepath.mkdirs();
- }
-
- try {
- file.transferTo(new File(updatefilepath.getAbsolutePath() + file.getOriginalFilename()));
- return "success";
- } catch (IOException e) {
- return "fail";
- }
- }
-
-}
diff --git a/src/main/java/a8k/controler/filemgr/FileMgrController.java b/src/main/java/a8k/controler/filemgr/FileMgrController.java
new file mode 100644
index 0000000..bf2c51d
--- /dev/null
+++ b/src/main/java/a8k/controler/filemgr/FileMgrController.java
@@ -0,0 +1,153 @@
+//package a8k.controler.filemgr;
+//
+//
+//import a8k.constant.FilePathConstant;
+//import a8k.type.appret.ApiV1Ret;
+//import io.swagger.v3.oas.annotations.tags.Tag;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.core.io.FileSystemResource;
+//import org.springframework.core.io.Resource;
+//import org.springframework.http.ContentDisposition;
+//import org.springframework.http.HttpHeaders;
+//import org.springframework.http.ResponseEntity;
+//import org.springframework.stereotype.Controller;
+//import org.springframework.web.bind.annotation.*;
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import java.io.File;
+//import java.io.IOException;
+//
+//@Tag(name = "文件管理")
+//@Slf4j
+//@Controller
+//@RequestMapping(value = "/files")
+//public class FileMgrControler {
+//
+// @GetMapping("")
+// public String index() {
+// log.info("=======================================================================================");
+// return "files/index.html";
+// }
+//
+// @GetMapping("/download/{path}")
+// @ResponseBody
+// public ResponseEntity download(@PathVariable String path) {
+// String realpath = String.format(FilePathConstant.FILE_DOWNLOAD_PATH + "/%s", path);
+// String contentDisposition = ContentDisposition
+// .builder("attachment")
+// .filename(path) // Use the original filename
+// .build().toString();
+// return ResponseEntity.ok()
+// .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
+// .body(new FileSystemResource(realpath));
+// }
+//
+//
+// @PostMapping("/upload")
+// @ResponseBody
+// public String handleFileUpload(@RequestParam("file") MultipartFile file) {
+// String uploadDir = FilePathConstant.FILE_UPLOAD_PATH;
+// File updatefilepath = new File(uploadDir);
+// if (!updatefilepath.exists()) {
+// updatefilepath.mkdirs();
+// }
+//
+// try {
+// file.transferTo(new File(updatefilepath.getAbsolutePath() + file.getOriginalFilename()));
+// return "success";
+// } catch (IOException e) {
+// return "fail";
+// }
+// }
+//
+//}
+// src/main/java/a8k/controller/FileMgrController.java
+package a8k.controler.filemgr;
+
+import a8k.constant.FilePathConstant;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.UrlResource;
+import org.springframework.http.ContentDisposition;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+@Controller
+@Slf4j
+@RequestMapping("/filemgr")
+public class FileMgrController {
+
+ record FileGroup(String name, List files) {
+ }
+
+ record FileInfo(String filePath, String name) {
+ }
+
+
+ @GetMapping("/index")
+ public String fileDownloadPage(Model model) {
+ // Mock data for file groups and files
+ List fileGroups = List.of(
+ new FileGroup("Group 1", List.of(new FileInfo("runenv/files/optReport/20241112152609.txt", "File1.txt"), new FileInfo("", "File2.txt"))),
+ new FileGroup("Group 2", List.of(new FileInfo("", "File3.txt"), new FileInfo("", "File4.txt")))
+ );
+ model.addAttribute("fileGroups", fileGroups);
+ return "filemgr/index.html";
+ }
+
+ // @GetMapping("/download/{fileId}")
+ // public ResponseEntity downloadFile(@RequestParam("file") MultipartFile file) {
+ // String realpath = String.format(FilePathConstant.FILE_DOWNLOAD_PATH + "/%s", path);
+ // String contentDisposition = ContentDisposition
+ // .builder("attachment")
+ // .filename(path) // Use the original filename
+ // .build().toString();
+ // return ResponseEntity.ok()
+ // .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
+ // .body(new FileSystemResource(realpath));
+ // }
+ //
+ // @GetMapping("/download/{path}")
+ // @ResponseBody
+ // public ResponseEntity download(@PathVariable String path) {
+ // log.info("Download file: {}", path);
+ // // String realpath = String.format(FilePathConstant.FILE_DOWNLOAD_PATH + "/%s", path);
+ // String contentDisposition = ContentDisposition
+ // .builder("attachment")
+ // .filename(path) // Use the original filename
+ // .build().toString();
+ // return ResponseEntity.ok()
+ // .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
+ // .body(new FileSystemResource(path));
+ // }
+
+ @GetMapping("/download/**")
+ @ResponseBody
+ public ResponseEntity download(HttpServletRequest request) {
+ String path = request.getRequestURI().substring("/filemgr/download/".length());
+ String fileName = Paths.get(path).getFileName().toString();
+ log.info("Download file:{} path:{}", fileName, path);
+
+ File file = new File(path);
+
+ String contentDisposition = ContentDisposition
+ .builder("attachment")
+ .filename(fileName) // Use the original filename
+ .build().toString();
+ return ResponseEntity.ok()
+ .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
+ .body(new FileSystemResource(file.getAbsolutePath()));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/a8k/extapi_controler/DownloadMgr.java b/src/main/java/a8k/extapi_controler/DownloadMgr.java
index 74178c7..bdcf2fe 100644
--- a/src/main/java/a8k/extapi_controler/DownloadMgr.java
+++ b/src/main/java/a8k/extapi_controler/DownloadMgr.java
@@ -36,21 +36,21 @@ public class DownloadMgr {
}
- @PostConstruct
- void init() throws IOException {
- //创建一个文件,并保存你好
-
- FileSystemResource file = new FileSystemResource("你好.txt");
- log.info("文件路径:{}", file.getFile().getAbsolutePath());
-
- File file1 = new File("你好.txt");
- log.info("文件路径:{}", file1.getAbsolutePath());
-
- // var output = file.getOutputStream();
- // output.write("你好".getBytes());
- // output.close();
-
-
- }
+// @PostConstruct
+// void init() throws IOException {
+// //创建一个文件,并保存你好
+//
+// FileSystemResource file = new FileSystemResource("你好.txt");
+// log.info("文件路径:{}", file.getFile().getAbsolutePath());
+//
+// File file1 = new File("你好.txt");
+// log.info("文件路径:{}", file1.getAbsolutePath());
+//
+// // var output = file.getOutputStream();
+// // output.write("你好".getBytes());
+// // output.close();
+//
+//
+// }
}
diff --git a/src/main/java/a8k/service/app/appdata/FileMgrService.java b/src/main/java/a8k/service/app/appdata/FileMgrService.java
index 0011c69..b3188d7 100644
--- a/src/main/java/a8k/service/app/appdata/FileMgrService.java
+++ b/src/main/java/a8k/service/app/appdata/FileMgrService.java
@@ -1,8 +1,200 @@
package a8k.service.app.appdata;
+import a8k.a8kproj.optalgo.type.A8kOptPeak;
+import a8k.a8kproj.optalgo.type.OptAlgoAnalysResult;
+import a8k.a8kproj.optalgo.type.OptScanResult;
+import a8k.a8kproj.optalgo.type.PeakFindState;
+import a8k.a8kproj.opttype.PeakDivision;
+import a8k.a8kproj.opttype.PeakName;
+import a8k.constant.FilePathConstant;
+import a8k.service.dao.type.OptRawScanData;
+import a8k.service.dao.type.a8kidcard.zenum.A8kOptType;
+import a8k.utils.ZDateUtils;
+import cn.hutool.core.io.FileUtil;
+import jakarta.annotation.PostConstruct;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Date;
+
+@Slf4j
+@Component
public class FileMgrService {
+ private String createOptReportContent(String projName, Integer projId, OptScanResult optScanResult) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("日期").append("\n");
+ sb.append(ZDateUtils.toDateString(optScanResult.rawData.scanDate)).append("\n");
+ sb.append("项目名称").append("\n");
+ sb.append(projName).append("\n");
+ sb.append("项目ID").append("\n");
+ sb.append(projId).append("\n");
+ sb.append("光学类型").append("\n");
+ sb.append(optScanResult.rawData.optType).append("\n");
+ sb.append("发射增益").append("\n");
+ sb.append(optScanResult.rawData.lasterGain).append("\n");
+ sb.append("接收增益").append("\n");
+ sb.append(optScanResult.rawData.scanGain).append("\n");
+ sb.append("\n");
+
+ sb.append("T4").append("\n");
+ if (optScanResult.analysResult.T4 == null || optScanResult.analysResult.T4.state == PeakFindState.NOT_FIND_PEAK) {
+ sb.append("\n\n\n\n");
+ } else {
+ sb.append(optScanResult.analysResult.T4.peakStartPos).append("\n");
+ sb.append(optScanResult.analysResult.T4.peakEndPos).append("\n");
+ sb.append(optScanResult.analysResult.T4.peakPos).append("\n");
+ sb.append(optScanResult.analysResult.T4.area).append("\n");
+ }
+
+
+ sb.append("R").append("\n");
+ if (optScanResult.analysResult.R == null || optScanResult.analysResult.R.state == PeakFindState.NOT_FIND_PEAK) {
+ sb.append("\n\n\n\n");
+ } else {
+ sb.append(optScanResult.analysResult.R.peakStartPos).append("\n");
+ sb.append(optScanResult.analysResult.R.peakEndPos).append("\n");
+ sb.append(optScanResult.analysResult.R.peakPos).append("\n");
+ sb.append(optScanResult.analysResult.R.area).append("\n");
+ }
+
+ sb.append("H").append("\n");
+ if (optScanResult.analysResult.H == null || optScanResult.analysResult.H.state == PeakFindState.NOT_FIND_PEAK) {
+ sb.append("\n\n\n\n");
+ } else {
+ sb.append(optScanResult.analysResult.H.peakStartPos).append("\n");
+ sb.append(optScanResult.analysResult.H.peakEndPos).append("\n");
+ sb.append(optScanResult.analysResult.H.peakPos).append("\n");
+ sb.append(optScanResult.analysResult.H.area).append("\n");
+ }
+
+
+ sb.append("T").append("\n");
+ if (optScanResult.analysResult.T == null || optScanResult.analysResult.T.state == PeakFindState.NOT_FIND_PEAK) {
+ sb.append("\n\n\n\n");
+ } else {
+ sb.append(optScanResult.analysResult.T.peakStartPos).append("\n");
+ sb.append(optScanResult.analysResult.T.peakEndPos).append("\n");
+ sb.append(optScanResult.analysResult.T.peakPos).append("\n");
+ sb.append(optScanResult.analysResult.T.area).append("\n");
+ }
+
+ sb.append("C").append("\n");
+ if (optScanResult.analysResult.C == null || optScanResult.analysResult.C.state == PeakFindState.NOT_FIND_PEAK) {
+ sb.append("\n\n\n\n");
+ } else {
+ sb.append(optScanResult.analysResult.C.peakStartPos).append("\n");
+ sb.append(optScanResult.analysResult.C.peakEndPos).append("\n");
+ sb.append(optScanResult.analysResult.C.peakPos).append("\n");
+ sb.append(optScanResult.analysResult.C.area).append("\n");
+ }
+ sb.append("\n");
+
+ sb.append("R(").append(PeakDivision.R.numerator).append("/").append(PeakDivision.R.denominator).append(")").append("\n");
+ sb.append(optScanResult.analysResult.pdR).append("\n");
+ sb.append("AR(").append(PeakDivision.AR.numerator).append("/").append(PeakDivision.AR.denominator).append(")").append("\n");
+ sb.append(optScanResult.analysResult.pdAR).append("\n");
+ sb.append("ATR(").append(PeakDivision.ATR.numerator).append("/").append(PeakDivision.ATR.denominator).append(")").append("\n");
+ sb.append(optScanResult.analysResult.pdATR).append("\n");
+ sb.append("RFR(").append(PeakDivision.RFR.numerator).append("/").append(PeakDivision.RFR.denominator).append(")").append("\n");
+ sb.append(optScanResult.analysResult.pdRFR).append("\n");
+ sb.append("T4R(").append(PeakDivision.T4R.numerator).append("/").append(PeakDivision.T4R.denominator).append(")").append("\n");
+ sb.append(optScanResult.analysResult.pdT4R).append("\n");
+ sb.append("T4T3R(").append(PeakDivision.T4T3R.numerator).append("/").append(PeakDivision.T4T3R.denominator).append(")").append("\n");
+ sb.append(optScanResult.analysResult.pdT4T3R).append("\n");
+ sb.append("\n");
+
+
+ sb.append("解析后的数据(250个点)").append("\n");
+ for (int i = 0; i < 250; i++) {
+ if (i < optScanResult.analysResult.resultData.length) {
+ sb.append(optScanResult.analysResult.resultData[i]).append("\n");
+ } else {
+ sb.append(" ").append("\n");
+ }
+ }
+ sb.append("\n");
+
+ sb.append("原始数据(1200个点)").append("\n");
+ for (int i = 0; i < 1200; i++) {
+ if (i < optScanResult.rawData.rawData.length) {
+ sb.append(optScanResult.rawData.rawData[i]).append("\n");
+ } else {
+ sb.append(" ").append("\n");
+ }
+ }
+ sb.append("\n");
+ return sb.toString();
+ }
+
+
+ public String createOptReport(String projName, Integer projId, OptScanResult optScanResult) throws IOException {
+
+ File dir = new File(FilePathConstant.FILE_OPT_REPORT_PATH);
+ dir.mkdir();
+
+ String path = String.format("%s/%s.txt", FilePathConstant.FILE_OPT_REPORT_PATH, ZDateUtils.toID(optScanResult.rawData.scanDate));
+ File file = new File(path);
+
+ FileWriter writer = new FileWriter(file.getAbsolutePath());
+ String content = createOptReportContent(projName, projId, optScanResult);
+ writer.write(content);
+ writer.close();
+ return file.getAbsolutePath();
+ }
+
+ public void createFakeOptReport() throws IOException {
+ OptRawScanData data = new OptRawScanData();
+ data.id = 1;
+ data.dataid = ZDateUtils.toID(new Date());
+ data.scanDate = new Date();
+ data.optType = A8kOptType.FOPT;
+ data.lasterGain = 10;
+ data.scanGain = 11;
+ data.rawData = new Integer[1200];
+ for (int i = 0; i < 1200; i++) {
+ data.rawData[i] = i;
+ }
+
+ OptAlgoAnalysResult optAlgoAnalysResult = new OptAlgoAnalysResult();
+ optAlgoAnalysResult.T4 = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T4, 0, 1.1, 40, 0, 80);
+ optAlgoAnalysResult.R = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.R, 0, 1.1, 80, 40, 120);
+ optAlgoAnalysResult.H = null;
+ optAlgoAnalysResult.T = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.T, 0, 1.1, 160, 120, 200);
+ optAlgoAnalysResult.C = new A8kOptPeak(PeakFindState.FIND_PEAK, PeakName.C, 0, 1.1, 200, 160, 240);
+ optAlgoAnalysResult.pdR = 1.1;
+ optAlgoAnalysResult.pdAR = 1.2;
+ optAlgoAnalysResult.pdATR = 1.3;
+ optAlgoAnalysResult.pdRFR = 1.4;
+ optAlgoAnalysResult.pdT4R = 1.5;
+ optAlgoAnalysResult.pdT4T3R = 1.6;
+ optAlgoAnalysResult.rawData = new Integer[1200];
+ for (int i = 0; i < 1200; i++) {
+ optAlgoAnalysResult.rawData[i] = i;
+ }
+ optAlgoAnalysResult.resultData = new double[250];
+ for (int i = 0; i < 250; i++) {
+ optAlgoAnalysResult.resultData[i] = i;
+ }
+
+ OptScanResult optScanResult = new OptScanResult();
+ optScanResult.rawData = data;
+ optScanResult.analysResult = optAlgoAnalysResult;
+ String path = createOptReport("Fake", 1, optScanResult);
+ log.info("createFakeOptReport success {}", path);
+ }
+// public static void main(String[] args) {
+ // FileMgrService fileMgrService = new FileMgrService();
+ // try {
+ // fileMgrService.createFakeOptReport();
+ // } catch (IOException e) {
+ // e.printStackTrace();
+ // }
+ // }
}
diff --git a/src/main/java/a8k/service/test/A8kOptTest.java b/src/main/java/a8k/service/test/A8kOptTest.java
index 801d2d6..3477e4f 100644
--- a/src/main/java/a8k/service/test/A8kOptTest.java
+++ b/src/main/java/a8k/service/test/A8kOptTest.java
@@ -1,9 +1,11 @@
package a8k.service.test;
+import a8k.a8kproj.optalgo.type.OptAlgoAnalysResult;
import a8k.a8kproj.optalgo.type.OptScanResult;
import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.utils.ExtApiTab;
+import a8k.service.app.appdata.FileMgrService;
import a8k.service.app.appdata.ProjInfoMgrService;
import a8k.service.app.devicectrl.ctrlservice.OptScanModuleCtrlService;
import a8k.service.app.devicectrl.ctrlservice.PlateBoxCtrlService;
@@ -11,13 +13,17 @@ import a8k.service.app.devicectrl.driver.StepMotorCtrlDriver;
import a8k.service.app.devicectrl.driver.type.StepMotorMId;
import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver;
import a8k.service.app.devicectrl.param.param_mgr.OptModuleExtParamsMgr;
+import a8k.type.A8kScanCurve;
import a8k.type.ConsumableGroup;
import a8k.type.IncubatorPos;
import a8k.type.exception.AppException;
import a8k.utils.ProjBuildinInfo;
+import a8k.utils.ZList;
import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -47,6 +53,8 @@ public class A8kOptTest {
@Resource
ProjInfoMgrService projInfoMgrService;
+ @Autowired
+ private FileMgrService fileMgrService;
@ExtApiFn(name = "归零", group = "测试工具", order = 11)
public void deviceReset() throws AppException {
@@ -84,71 +92,61 @@ public class A8kOptTest {
}
- // A8kScanCurve createScanCurve1200Point(Integer[] optScanResult) {
- // // Integer[] optScanResult250 = A8kOptAlgoUtils.supperSamplingAndSubSampling(optScanResult);
- // List refCurve = new ArrayList<>();
- // for (int i = 1; i < 6; i++) {
- // refCurve.add((int) (40 * 4.8 * i));
- // }
- //
- // var result = new A8kScanCurve();
- // result.refCurve = refCurve;
- // result.scanDataCurve = ZList.of(optScanResult);
- // return result;
- // }
- //
- //
- // @ExtApiFn(name = "F光学扫描", group = "扫描", order = 303)
- // public A8kScanCurve FOptScan() throws AppException {
- // Double scanGain = optModuleExtParamsMgr.getScanGain(A8kOptType.FOPT);
- // Integer rawScanGain = OptGainConvert.scanerToRawGain(A8kOptType.FOPT, scanGain);
- // Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.FOPT);
- // var result = optScanModuleCtrlService.startOptScan(A8kOptType.FOPT, rawLasterGain, rawScanGain);
- // return createScanCurve1200Point(result);
- // }
- //
- // @ExtApiFn(name = "T光学扫描", group = "扫描", order = 403)
- // public A8kScanCurve TOptScan() throws AppException {
- // Double scanGain = optModuleExtParamsMgr.getScanGain(A8kOptType.TOPT);
- // Integer rawScanGain = OptGainConvert.scanerToRawGain(A8kOptType.TOPT, scanGain);
- // Integer rawLasterGain = optModuleExtParamsMgr.getOptLasterRawGain(A8kOptType.TOPT);
- //
- // var result = optScanModuleCtrlService.startOptScan(A8kOptType.TOPT, rawLasterGain, rawScanGain);
- // return createScanCurve1200Point(result);
- // }
+ A8kScanCurve createScanCurve1200Point(Integer[] optScanResult) {
+ List refCurve = new ArrayList<>();
+ for (int i = 1; i < 6; i++) {
+ refCurve.add((int) (40 * 4.8 * i));
+ }
+
+ var result = new A8kScanCurve();
+ result.refCurve = refCurve;
+ result.scanDataCurve = ZList.of(optScanResult);
+ return result;
+ }
//
// 生成报告
//
- //
- //
- public void doOptScan(Integer projId) throws AppException {
- // assignName ok
- // R/AR/
+ static class OptScanReport {
+ public A8kScanCurve optScanCurve;
+ public String reportURL;
+ }
- ProjBuildinInfo info = projInfoMgrService.getProjBuildInInfo(projId);
- List scanResults = new ArrayList<>();
- for (int i = 0; i < info.projOptInfos.size(); i++) {
-// OptScanResult scanResult = optScanModuleCtrlService.optScan(info.projInfo, info.projOptInfoList, i);
-// scanResults.add(scanResult);
- }
+ List optScanReports = new ArrayList<>();
+
+ public void generateOptReport(OptScanResult optScanResult) {
+ OptScanReport report = new OptScanReport();
+ report.optScanCurve = createScanCurve1200Point(optScanResult.rawData.rawData);
+ optScanReports.add(report);
+ }
+
+ public List doOptScan(Integer projId) throws AppException {
+ optScanReports.clear();
+ ProjBuildinInfo info = projInfoMgrService.getProjBuildInInfo(projId);
+ List analysResults = new ArrayList<>();
+ for (int i = 0; i < info.projOptInfos.size(); i++) {
+ OptScanResult scanResult = optScanModuleCtrlService.optScan(info.projBaseInfo, info.projOptInfos.get(i), i);
+ generateOptReport(scanResult);
+ analysResults.add(scanResult.analysResult);
+ }
+ return analysResults;
}
- public void parseOptData(String rawOptDataId) {
- // assignName ok
- // R/AR/
+ public A8kScanCurve getScanCurve(Integer subProjIndex) {
+ if (subProjIndex < optScanReports.size()) {
+ return optScanReports.get(subProjIndex).optScanCurve;
+ }
+ return null;
}
- @ExtApiFn(name = "生成光学扫描报告", group = "报告", order = 100)
- public void generateOptReport() {
+ public ProjBuildinInfo getProjInfo(Integer projId) throws AppException {
+ return projInfoMgrService.getProjBuildInInfo(projId);
+ }
- // assignName ok
- // R/AR/
- }
}
diff --git a/src/main/resources/static/filemgr/index.html b/src/main/resources/static/filemgr/index.html
deleted file mode 100644
index f0bb7a2..0000000
--- a/src/main/resources/static/filemgr/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
- File Upload
-
-
-
-
-
- Upload a File
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/templates/filemgr/index.html b/src/main/resources/templates/filemgr/index.html
new file mode 100644
index 0000000..e22dc84
--- /dev/null
+++ b/src/main/resources/templates/filemgr/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ 文件管理
+
+
+文件下载
+
+
+
\ No newline at end of file