Browse Source

update

tags/v0
zhaohe 7 months ago
parent
commit
c0afd4ccab
  1. 4
      src/main/java/a8k/app/a8kproj/optalgo/type/OptScanResult.java
  2. 21
      src/main/java/a8k/app/dao/db/type/ReactionReport.java
  3. 60
      src/main/java/a8k/app/service/data/FileMgrService.java
  4. 6
      src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java
  5. 15
      src/main/java/a8k/extui/page/extsetting/db/ReactionRecordMgrDebugPage.java
  6. BIN
      tools/20250120光学光学报告.xlsx

4
src/main/java/a8k/app/a8kproj/optalgo/type/OptScanResult.java

@ -1,6 +1,7 @@
package a8k.app.a8kproj.optalgo.type;
import a8k.app.dao.db.type.OptRawScanData;
import a8k.app.utils.ZJsonHelper;
import java.util.Date;
@ -8,4 +9,7 @@ public class OptScanResult {
public Date scanDate;
public OptRawScanData rawData;
public OptAlgoAnalysResult analysResult;
public String toString() {
return ZJsonHelper.objectToJson(this);
}
}

21
src/main/java/a8k/app/dao/db/type/ReactionReport.java

@ -3,6 +3,7 @@ package a8k.app.dao.db.type;
import a8k.app.a8kproj.optalgo.type.OptScanResult;
import a8k.app.a8ktype.type.ReactionResult;
import a8k.app.a8ktype.device.BloodType;
import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType;
import a8k.app.utils.ProjInfo;
import a8k.app.utils.ZDateUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
@ -87,4 +88,24 @@ public class ReactionReport implements Serializable { //记录单个反应板的
@Schema(description = "扫描结果")
@JsonIgnore
public List<OptScanResult> detailOptData = new ArrayList<>();// 扫描上下文数据(包含原始结果扫描参数扫描原始数据)
public OptScanResult getOptData(int subProjIndex) {
A8kOptType subProjOptType = getSubProjOptType(subProjIndex);
for (OptScanResult optScanResult : detailOptData) {
if (optScanResult.rawData.optType == subProjOptType) {
return optScanResult;
}
}
return null;
}
public A8kOptType getSubProjOptType(int subProjIndex) {
return projInfo.buildIn.optcfg.get(subProjIndex).optType;
}
public String getSubProjName(int subProjIndex) {
return projInfo.buildIn.optcfg.get(subProjIndex).subProjName;
}
}

60
src/main/java/a8k/app/service/data/FileMgrService.java

@ -51,15 +51,19 @@ public class FileMgrService {
}
public String storageOptReport(String projName, Integer projId, OptScanResult optScanResult) throws IOException {
return storageOptReport("NotSet", projName, projId, "NotSet", optScanResult, "NotSet");
}
public String storageOptReport(String userid, String projName, Integer projId, String subprojName, OptScanResult optScanResult, String result) throws IOException {
File dir = new File(FilePathConstant.FILE_OPT_REPORT_PATH);
dir.mkdir();
String fileName = String.format("%s(%s)-%s-%s.txt", projName, projId, optScanResult.rawData.optType, ZDateUtils.toID(optScanResult.scanDate));
String fileName = String.format("%s-(%s)-%s-%s.txt", userid, projName, projId, optScanResult.rawData.optType, ZDateUtils.toID(optScanResult.scanDate));
String filePath = String.format("%s/%s", FilePathConstant.FILE_OPT_REPORT_PATH, fileName);
File file = new File(filePath);
FileWriter writer = new FileWriter(file.getAbsolutePath());
String content = createOptReportContent(projName, projId, optScanResult);
String content = createOptReportContent(userid, projName, projId, subprojName, optScanResult, result);
writer.write(content);
writer.close();
@ -71,31 +75,39 @@ public class FileMgrService {
//
private String createOptReportContent(String projName, Integer projId, OptScanResult optScanResult) {
private String createOptReportContent(String userid, String projName, Integer projId, String subprojName, OptScanResult optScanResult, String result) {
StringBuilder sb = new StringBuilder();
sb.append("Date").append("\n");
sb.append(ZDateUtils.toDateString(optScanResult.scanDate)).append("\n");
sb.append("userId").append("\n");
sb.append(userid).append("\n");
sb.append("ProjName").append("\n");
sb.append(projName).append("\n");
sb.append("ProjId").append("\n");
sb.append(projId).append("\n");
sb.append("SubProjName").append("\n");
sb.append(subprojName).append("\n");
sb.append("OptType").append("\n");
sb.append(optScanResult.rawData.optType).append("\n");
sb.append("lasterGain").append("\n");
sb.append(optScanResult.rawData.lasterGain).append("\n");
sb.append("scanerGain").append("\n");
sb.append(optScanResult.rawData.scanGain).append("\n");
sb.append("Result").append("\n");
sb.append(result).append("\n");
sb.append("\n");
sb.append("\n");
sb.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(String.format("%d",optScanResult.analysResult.T4.peakStartPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.T4.peakEndPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.T4.peakPos)).append("\n");
sb.append(String.format("%.2f",optScanResult.analysResult.T4.area)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.T4.peakStartPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.T4.peakEndPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.T4.peakPos)).append("\n");
sb.append(String.format("%.2f", optScanResult.analysResult.T4.area)).append("\n");
}
@ -103,20 +115,20 @@ public class FileMgrService {
if (optScanResult.analysResult.R == null || optScanResult.analysResult.R.state == PeakFindState.NOT_FIND_PEAK) {
sb.append("\n\n\n\n");
} else {
sb.append(String.format("%d",optScanResult.analysResult.R.peakStartPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.R.peakEndPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.R.peakPos)).append("\n");
sb.append(String.format("%.2f",optScanResult.analysResult.R.area)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.R.peakStartPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.R.peakEndPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.R.peakPos)).append("\n");
sb.append(String.format("%.2f", 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(String.format("%d",optScanResult.analysResult.H.peakStartPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.H.peakEndPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.H.peakPos)).append("\n");
sb.append(String.format("%.2f",optScanResult.analysResult.H.area)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.H.peakStartPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.H.peakEndPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.H.peakPos)).append("\n");
sb.append(String.format("%.2f", optScanResult.analysResult.H.area)).append("\n");
}
@ -124,20 +136,20 @@ public class FileMgrService {
if (optScanResult.analysResult.T == null || optScanResult.analysResult.T.state == PeakFindState.NOT_FIND_PEAK) {
sb.append("\n\n\n\n");
} else {
sb.append(String.format("%d",optScanResult.analysResult.T.peakStartPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.T.peakEndPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.T.peakPos)).append("\n");
sb.append(String.format("%.2f",optScanResult.analysResult.T.area)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.T.peakStartPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.T.peakEndPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.T.peakPos)).append("\n");
sb.append(String.format("%.2f", 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(String.format("%d",optScanResult.analysResult.C.peakStartPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.C.peakEndPos)).append("\n");
sb.append(String.format("%d",optScanResult.analysResult.C.peakPos)).append("\n");
sb.append(String.format("%.2f",optScanResult.analysResult.C.area)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.C.peakStartPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.C.peakEndPos)).append("\n");
sb.append(String.format("%d", optScanResult.analysResult.C.peakPos)).append("\n");
sb.append(String.format("%.2f", optScanResult.analysResult.C.area)).append("\n");
}
sb.append("\n");

6
src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java

@ -83,6 +83,10 @@ public class ProjIdCardInfoMgrService {
}
public ProjExtInfoCard getByLotId(String lotId) {
var mountedProjInfoCard = getMountedProjInfoCard();
if (mountedProjInfoCard != null && mountedProjInfoCard.lotId.equals(lotId)) {
return mountedProjInfoCard;
}
return a8KProjExtInfoCardDao.getByLotId(lotId);
}
@ -126,7 +130,7 @@ public class ProjIdCardInfoMgrService {
}
for (int i = 0; i < projExtInfoCard.subProjNum; i++) {
ZAppChecker.notNull(projExtInfoCard.projFnFormuals.get(i), A8kEcode.CODEERROR, "项目卡配置的光学%s公式为空",i+1);
ZAppChecker.notNull(projExtInfoCard.projFnFormuals.get(i), A8kEcode.CODEERROR, "项目卡配置的光学%s公式为空", i + 1);
verifyOptFunction(projExtInfoCard.projFnFormuals.get(i), ecodeList);
}

15
src/main/java/a8k/extui/page/extsetting/db/ReactionRecordMgrDebugPage.java

@ -1,6 +1,7 @@
package a8k.extui.page.extsetting.db;
import a8k.app.a8ktype.exception.AppException;
import a8k.app.a8ktype.opttype.ReactionResultStatus;
import a8k.app.controler.filemgr.StorageControler;
import a8k.app.dao.db.type.ReactionReport;
import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType;
@ -59,8 +60,18 @@ public class ReactionRecordMgrDebugPage {
if (report.detailOptData.isEmpty()) {
throw AppException.ofSimplePrompt("没有光学数据");
}
for (var optData : report.detailOptData) {
tasks.urls.add(fileMgrService.storageOptReport(report.projName, report.projId, optData));
int offset = 0;
for (var result : report.results) {
// public String storageOptReport(String userid, String projName, Integer projId, String subprojName, OptScanResult optScanResult, String result) throws IOException {
tasks.urls.add(fileMgrService.storageOptReport(
report.getSampleUserid(),
report.getProjName(),
report.getProjId(),
result.subProjName,
report.getOptData(offset),
result.status.equals(ReactionResultStatus.SUCCESS) ? String.format("%.2f %s", result.result, result.resultConverters.get(0).uintstr) : "ERROR"
));
offset++;
}
return tasks;
}

BIN
tools/20250120光学光学报告.xlsx

Loading…
Cancel
Save