关于时间精度调整
This commit is contained in:
@@ -291,8 +291,15 @@ public class SocketFreqConverterDevService {
|
|||||||
private void initDipTestRes(PqDipData pqDipData) {
|
private void initDipTestRes(PqDipData pqDipData) {
|
||||||
Integer suffix = FormalTestManager.freqConverterTableSuffix;
|
Integer suffix = FormalTestManager.freqConverterTableSuffix;
|
||||||
FreqConverterStatus lastStatusData = freqConverterService.getLastStatusData(suffix, pqDipData.getStartTime());
|
FreqConverterStatus lastStatusData = freqConverterService.getLastStatusData(suffix, pqDipData.getStartTime());
|
||||||
|
if (Objects.isNull(lastStatusData)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<FreqConverterStatus> statusList = freqConverterService.getDipDurationStatusData(suffix, lastStatusData.getTimestamp(), pqDipData.getStartTime().plusNanos(pqDipData.getDurationMs() * 1000_000L));
|
List<FreqConverterStatus> statusList = freqConverterService.getDipDurationStatusData(suffix, lastStatusData.getTimestamp(), pqDipData.getStartTime().plusNanos(pqDipData.getDurationMs() * 1000_000L));
|
||||||
boolean originalTolerant = lastStatusData.getStatusWord1() != freqConverterConfig.getNoTolerant();
|
boolean originalTolerant = lastStatusData.getStatusWord1() != freqConverterConfig.getNoTolerant();
|
||||||
|
LocalDateTime targetEndTime = pqDipData.getStartTime()
|
||||||
|
.plusNanos(pqDipData.getDurationMs() * 1000_000L)
|
||||||
|
.plusNanos(freqConverterConfig.getDt() * 1000_000L);
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(statusList)) {
|
if (CollUtil.isNotEmpty(statusList)) {
|
||||||
FreqConverterStatus status = statusList.get(statusList.size() - 1);
|
FreqConverterStatus status = statusList.get(statusList.size() - 1);
|
||||||
@@ -301,13 +308,25 @@ public class SocketFreqConverterDevService {
|
|||||||
testRes.setTolerant(originalTolerant ? status.getStatusWord1() != freqConverterConfig.getNoTolerant() : false);
|
testRes.setTolerant(originalTolerant ? status.getStatusWord1() != freqConverterConfig.getNoTolerant() : false);
|
||||||
testRes.setStartTime(lastStatusData.getTimestamp());
|
testRes.setStartTime(lastStatusData.getTimestamp());
|
||||||
|
|
||||||
int collectCount = (int) Math.ceil((freqConverterConfig.getDt()) / freqConverterConfig.getSchedulePeriod());
|
FormalTestManager.pendingDipTaskMap.put(pqDipData.getId(), new FormalTestManager.PendingDipTask(
|
||||||
if (collectCount > 0) {
|
pqDipData.getId(),
|
||||||
FormalTestManager.pendingDipTaskMap.put(pqDipData.getId(), new FormalTestManager.PendingDipTask(pqDipData.getId(), pqDipData.getStartTime(), originalTolerant, collectCount));
|
pqDipData.getStartTime(),
|
||||||
} else {
|
targetEndTime,
|
||||||
testRes.setEndTime(status.getTimestamp());
|
originalTolerant
|
||||||
}
|
));
|
||||||
pqFreqConverterTestResService.saveTestRes(suffix, Collections.singletonList(testRes));
|
testRes.setEndTime(status.getTimestamp());
|
||||||
|
|
||||||
|
// if (status.getTimestamp().isBefore(targetEndTime)) {
|
||||||
|
// FormalTestManager.pendingDipTaskMap.put(pqDipData.getId(), new FormalTestManager.PendingDipTask(
|
||||||
|
// pqDipData.getId(),
|
||||||
|
// pqDipData.getStartTime(),
|
||||||
|
// targetEndTime,
|
||||||
|
// originalTolerant
|
||||||
|
// ));
|
||||||
|
// } else {
|
||||||
|
// testRes.setEndTime(status.getTimestamp().isAfter(targetEndTime) ? targetEndTime : status.getTimestamp());
|
||||||
|
// }
|
||||||
|
pqFreqConverterTestResService.saveOrUpdateTestRes(suffix, Collections.singletonList(testRes));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -198,8 +198,8 @@ public class SocketFreqConverterService {
|
|||||||
// } else {
|
// } else {
|
||||||
// FormalTestManager.stopFlag = false;
|
// FormalTestManager.stopFlag = false;
|
||||||
// }
|
// }
|
||||||
freqConverterService.saveFreqConverterStatus(FormalTestManager.freqConverterTableSuffix, freqConverterStatus);
|
|
||||||
this.consumePendingDipTasks(freqConverterStatus);
|
this.consumePendingDipTasks(freqConverterStatus);
|
||||||
|
freqConverterService.saveFreqConverterStatus(FormalTestManager.freqConverterTableSuffix, freqConverterStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleCloseSerial(String converterChannelTag, FreqConverterRespDTO respDTO) {
|
private void handleCloseSerial(String converterChannelTag, FreqConverterRespDTO respDTO) {
|
||||||
@@ -257,22 +257,23 @@ public class SocketFreqConverterService {
|
|||||||
List<String> finishedDipIdList = new ArrayList<>();
|
List<String> finishedDipIdList = new ArrayList<>();
|
||||||
List<PqFreqConverterTestRes> testResList = new ArrayList<>();
|
List<PqFreqConverterTestRes> testResList = new ArrayList<>();
|
||||||
for (FormalTestManager.PendingDipTask task : FormalTestManager.pendingDipTaskMap.values()) {
|
for (FormalTestManager.PendingDipTask task : FormalTestManager.pendingDipTaskMap.values()) {
|
||||||
if (task.getRemainingCount() <= 0) {
|
PqFreqConverterTestRes testRes = pqFreqConverterTestResService.getByDipId(suffix, task.getDipId());
|
||||||
|
if (Objects.isNull(testRes)) {
|
||||||
finishedDipIdList.add(task.getDipId());
|
finishedDipIdList.add(task.getDipId());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
PqFreqConverterTestRes testRes = pqFreqConverterTestResService.getByDipId(suffix, task.getDipId());
|
testRes.setEndTime(freqConverterStatus.getTimestamp().isAfter(task.getTargetEndTime())
|
||||||
testRes.setEndTime(freqConverterStatus.getTimestamp());
|
? freqConverterStatus.getTimestamp()
|
||||||
|
: task.getTargetEndTime());
|
||||||
testRes.setTolerant(testRes.getTolerant() && (freqConverterStatus.getStatusWord1() != freqConverterConfig.getNoTolerant()));
|
testRes.setTolerant(testRes.getTolerant() && (freqConverterStatus.getStatusWord1() != freqConverterConfig.getNoTolerant()));
|
||||||
testResList.add(testRes);
|
testResList.add(testRes);
|
||||||
|
|
||||||
task.decrementRemainingCount();
|
if (freqConverterStatus.getTimestamp().isAfter(task.getTargetEndTime())) {
|
||||||
if (task.getRemainingCount() <= 0) {
|
|
||||||
finishedDipIdList.add(task.getDipId());
|
finishedDipIdList.add(task.getDipId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pqFreqConverterTestResService.saveTestRes(suffix, testResList);
|
pqFreqConverterTestResService.saveOrUpdateTestRes(suffix, testResList);
|
||||||
|
|
||||||
for (String dipId : finishedDipIdList) {
|
for (String dipId : finishedDipIdList) {
|
||||||
FormalTestManager.pendingDipTaskMap.remove(dipId);
|
FormalTestManager.pendingDipTaskMap.remove(dipId);
|
||||||
|
|||||||
@@ -229,18 +229,14 @@ public class FormalTestManager {
|
|||||||
public static class PendingDipTask {
|
public static class PendingDipTask {
|
||||||
private final String dipId;
|
private final String dipId;
|
||||||
private LocalDateTime startTime;
|
private LocalDateTime startTime;
|
||||||
|
private LocalDateTime targetEndTime;
|
||||||
private Boolean originalTolerant;
|
private Boolean originalTolerant;
|
||||||
private int remainingCount;
|
|
||||||
|
|
||||||
public PendingDipTask(String dipId, LocalDateTime startTime, Boolean originalTolerant, int remainingCount) {
|
public PendingDipTask(String dipId, LocalDateTime startTime, LocalDateTime targetEndTime, Boolean originalTolerant) {
|
||||||
this.dipId = dipId;
|
this.dipId = dipId;
|
||||||
this.startTime = startTime;
|
this.startTime = startTime;
|
||||||
|
this.targetEndTime = targetEndTime;
|
||||||
this.originalTolerant = originalTolerant;
|
this.originalTolerant = originalTolerant;
|
||||||
this.remainingCount = remainingCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void decrementRemainingCount() {
|
|
||||||
this.remainingCount--;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public interface IPqFreqConverterTestResService extends IService<PqFreqConverter
|
|||||||
* @param testResList 结果数据
|
* @param testResList 结果数据
|
||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
boolean saveTestRes(Integer suffix, List<PqFreqConverterTestRes> testResList);
|
boolean saveOrUpdateTestRes(Integer suffix, List<PqFreqConverterTestRes> testResList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询结果记录
|
* 查询结果记录
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class PqFreqConverterTestResServiceImpl extends ServiceImpl<PqFreqConvert
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean saveTestRes(Integer suffix, List<PqFreqConverterTestRes> testResList) {
|
public boolean saveOrUpdateTestRes(Integer suffix, List<PqFreqConverterTestRes> testResList) {
|
||||||
DynamicTableNameHandler.setTableName("pq_freq_converter_test_res_" + suffix);
|
DynamicTableNameHandler.setTableName("pq_freq_converter_test_res_" + suffix);
|
||||||
|
|
||||||
List<PqFreqConverterTestRes> existedTestResList = new ArrayList<>();
|
List<PqFreqConverterTestRes> existedTestResList = new ArrayList<>();
|
||||||
|
|||||||
Reference in New Issue
Block a user