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