package com.zy.asrs.service.impl;
|
|
import com.zy.asrs.entity.WrkAnalysis;
|
import com.zy.asrs.service.BasCrnpErrLogService;
|
import com.zy.asrs.service.BasDualCrnpErrLogService;
|
import com.zy.asrs.service.BasRgvErrLogService;
|
import com.zy.asrs.service.BasStationService;
|
import com.zy.asrs.service.BasWrkStatusService;
|
import com.zy.asrs.service.WrkMastLogService;
|
import com.zy.asrs.service.WrkMastService;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.Map;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.when;
|
|
class WrkAnalysisServiceImplTest {
|
|
@Test
|
@SuppressWarnings("unchecked")
|
void buildAnalysisResult_calculatesAverageTaskPerHour() {
|
BasWrkStatusService basWrkStatusService = mock(BasWrkStatusService.class);
|
when(basWrkStatusService.getById(org.mockito.ArgumentMatchers.any())).thenReturn(null);
|
WrkAnalysisServiceImpl service = new WrkAnalysisServiceImpl(
|
mock(WrkMastLogService.class),
|
mock(BasCrnpErrLogService.class),
|
mock(BasDualCrnpErrLogService.class),
|
mock(BasRgvErrLogService.class),
|
mock(BasStationService.class),
|
basWrkStatusService,
|
mock(WrkMastService.class)
|
);
|
|
Map<String, Object> result = ReflectionTestUtils.invokeMethod(
|
service,
|
"buildAnalysisResult",
|
Arrays.asList(
|
analysis(1001, date("2026-03-27 13:00:00"), date("2026-03-27 13:10:00"), 600_000L),
|
analysis(1002, date("2026-03-27 13:15:00"), date("2026-03-27 13:30:00"), 900_000L)
|
),
|
"finish_time"
|
);
|
|
Map<String, Object> summary = (Map<String, Object>) result.get("summary");
|
assertEquals(4.0d, ((Number) summary.get("avgTaskPerHour")).doubleValue(), 0.0001d);
|
}
|
|
private WrkAnalysis analysis(int wrkNo, Date appeTime, Date finishTime, long totalDurationMs) {
|
WrkAnalysis item = new WrkAnalysis();
|
item.setWrkNo(wrkNo);
|
item.setAppeTime(appeTime);
|
item.setFinishTime(finishTime);
|
item.setTotalDurationMs(totalDurationMs);
|
item.setFinalWrkSts(80L);
|
item.setMetricCompleteness("COMPLETE");
|
return item;
|
}
|
|
private Date date(String value) {
|
try {
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value);
|
} catch (ParseException e) {
|
throw new IllegalArgumentException(e);
|
}
|
}
|
}
|