|
|
@@ -51,8 +51,8 @@ class CockpitWorkOrderReadControllerTest {
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
- void deviceWorkOrdersReturnNineStateDictionaryAndAuthoritativeMapping() throws Exception {
|
|
|
- when(adapter.loadByDevice(DEVICE_CODE)).thenReturn(nineStateFixture());
|
|
|
+ void deviceWorkOrdersReturnSevenStateDictionary() throws Exception {
|
|
|
+ when(adapter.loadByDevice(DEVICE_CODE)).thenReturn(sevenStateFixture());
|
|
|
|
|
|
mockMvc.perform(get("/api/cockpit/v1/equipments/" + DEVICE_CODE + "/work-orders")
|
|
|
.header("X-Request-Id", "work-order-device-001"))
|
|
|
@@ -62,22 +62,22 @@ class CockpitWorkOrderReadControllerTest {
|
|
|
.andExpect(jsonPath("$.data.apiVersion").value("v1"))
|
|
|
.andExpect(jsonPath("$.data.readOnly").value(true))
|
|
|
.andExpect(jsonPath("$.data.deviceCode").value(DEVICE_CODE))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary", hasSize(9)))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[0].legacyCode").value(1))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[0].legacyName").value("待派单"))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[5].legacyCode").value(6))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[5].legacyName").value("已结案"))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[6].legacyCode").value(7))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[6].legacyName").value("已驳回"))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[6].authoritativeCode").value(7))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[6].authoritativeName").value("已取消"))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[7].deprecated").value(true))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary[8].deprecated").value(true))
|
|
|
- .andExpect(jsonPath("$.data.workOrders", hasSize(9)))
|
|
|
- .andExpect(jsonPath("$.data.workOrders[0].legacyState").value(1))
|
|
|
- .andExpect(jsonPath("$.data.workOrders[0].authoritativeState").value(1))
|
|
|
- .andExpect(jsonPath("$.data.workOrders[8].legacyState").value(9))
|
|
|
- .andExpect(jsonPath("$.data.workOrders[8].authoritativeState").doesNotExist());
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary", hasSize(7)))
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary[0].code").value(1))
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary[0].name").value("待派单"))
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary[5].code").value(6))
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary[5].name").value("已结案"))
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary[6].code").value(7))
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary[6].name").value("已取消"))
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary[0].legacyCode").doesNotExist())
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary[0].deprecated").doesNotExist())
|
|
|
+ .andExpect(jsonPath("$.data.workOrders", hasSize(7)))
|
|
|
+ .andExpect(jsonPath("$.data.workOrders[0].stateCode").value(1))
|
|
|
+ .andExpect(jsonPath("$.data.workOrders[0].stateName").value("待派单"))
|
|
|
+ .andExpect(jsonPath("$.data.workOrders[6].stateCode").value(7))
|
|
|
+ .andExpect(jsonPath("$.data.workOrders[6].stateName").value("已取消"))
|
|
|
+ .andExpect(jsonPath("$.data.workOrders[0].legacyState").doesNotExist())
|
|
|
+ .andExpect(jsonPath("$.data.workOrders[0].deprecatedState").doesNotExist());
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -131,13 +131,14 @@ class CockpitWorkOrderReadControllerTest {
|
|
|
.andExpect(status().isOk())
|
|
|
.andExpect(jsonPath("$.data.requestId").value("timeline-001"))
|
|
|
.andExpect(jsonPath("$.data.workOrderCode").value("WO-2026090200001"))
|
|
|
- .andExpect(jsonPath("$.data.stateDictionary", hasSize(9)))
|
|
|
+ .andExpect(jsonPath("$.data.stateDictionary", hasSize(7)))
|
|
|
.andExpect(jsonPath("$.data.timelineEntries", hasSize(3)))
|
|
|
.andExpect(jsonPath("$.data.timelineEntries[0].workOrderCode").value("WO-2026090200001"))
|
|
|
- .andExpect(jsonPath("$.data.timelineEntries[0].legacyState").value(1))
|
|
|
- .andExpect(jsonPath("$.data.timelineEntries[0].authoritativeState").value(1))
|
|
|
- .andExpect(jsonPath("$.data.timelineEntries[2].legacyState").value(3))
|
|
|
- .andExpect(jsonPath("$.data.timelineEntries[2].authoritativeState").value(3));
|
|
|
+ .andExpect(jsonPath("$.data.timelineEntries[0].stateCode").value(1))
|
|
|
+ .andExpect(jsonPath("$.data.timelineEntries[0].stateName").value("待派单"))
|
|
|
+ .andExpect(jsonPath("$.data.timelineEntries[2].stateCode").value(3))
|
|
|
+ .andExpect(jsonPath("$.data.timelineEntries[2].stateName").value("已接单"))
|
|
|
+ .andExpect(jsonPath("$.data.timelineEntries[0].legacyState").doesNotExist());
|
|
|
|
|
|
mockMvc.perform(get("/api/cockpit/v1/work-orders/WO-2026090200002/timeline")
|
|
|
.header("X-Request-Id", "timeline-002"))
|
|
|
@@ -145,8 +146,8 @@ class CockpitWorkOrderReadControllerTest {
|
|
|
.andExpect(jsonPath("$.data.workOrderCode").value("WO-2026090200002"))
|
|
|
.andExpect(jsonPath("$.data.timelineEntries", hasSize(1)))
|
|
|
.andExpect(jsonPath("$.data.timelineEntries[0].workOrderCode").value("WO-2026090200002"))
|
|
|
- .andExpect(jsonPath("$.data.timelineEntries[0].legacyState").value(6))
|
|
|
- .andExpect(jsonPath("$.data.timelineEntries[0].authoritativeState").value(6));
|
|
|
+ .andExpect(jsonPath("$.data.timelineEntries[0].stateCode").value(6))
|
|
|
+ .andExpect(jsonPath("$.data.timelineEntries[0].stateName").value("已结案"));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -195,9 +196,9 @@ class CockpitWorkOrderReadControllerTest {
|
|
|
org.junit.jupiter.api.Assertions.assertTrue(condition);
|
|
|
}
|
|
|
|
|
|
- private CockpitWorkOrderReadSnapshot nineStateFixture() {
|
|
|
+ private CockpitWorkOrderReadSnapshot sevenStateFixture() {
|
|
|
List<CockpitWorkOrderSummary> summaries = new java.util.ArrayList<>();
|
|
|
- for (int state = 1; state <= 9; state++) {
|
|
|
+ for (int state = 1; state <= 7; state++) {
|
|
|
summaries.add(summary("WO-202609020000" + state, state, "ALM-20260902-00" + state));
|
|
|
}
|
|
|
return new CockpitWorkOrderReadSnapshot(DEVICE_CODE, null, null, summaries);
|
|
|
@@ -216,14 +217,14 @@ class CockpitWorkOrderReadControllerTest {
|
|
|
DEVICE_CODE,
|
|
|
"WARNING",
|
|
|
"WRN-20260902-001",
|
|
|
- Collections.singletonList(new CockpitWorkOrderSummary(
|
|
|
- "WO-2026090200002", DEVICE_CODE, 1, "故障维修", 2, "处理异常", 2, "待接单", 2, "待接单", false,
|
|
|
- "2026-09-02T09:59:30+08:00", "2026-09-02T10:00:00+08:00", "2026-09-02T09:00:00+08:00", "2026-09-02T09:30:00+08:00",
|
|
|
- new CockpitWorkOrderEventAssociation("WARNING", "WRN-20260902-001", "2026-09-02T10:00:00+08:00"))));
|
|
|
+ Collections.singletonList(summary("WO-2026090200002", 2, "WARNING", "WRN-20260902-001")));
|
|
|
+ }
|
|
|
+ private CockpitWorkOrderSummary summary(String workOrderCode, int state, String eventCode) {
|
|
|
+ return summary(workOrderCode, state, "ALARM", eventCode);
|
|
|
}
|
|
|
|
|
|
- private CockpitWorkOrderSummary summary(String workOrderCode, int legacyState, String eventCode) {
|
|
|
- CockpitWorkOrderState state = CockpitWorkOrderStateDictionary.byLegacyCode(legacyState);
|
|
|
+ private CockpitWorkOrderSummary summary(String workOrderCode, int state, String eventSource, String eventCode) {
|
|
|
+ CockpitWorkOrderState stateEntry = CockpitWorkOrderStateDictionary.byLegacyCode(state);
|
|
|
return new CockpitWorkOrderSummary(
|
|
|
workOrderCode,
|
|
|
DEVICE_CODE,
|
|
|
@@ -231,16 +232,13 @@ class CockpitWorkOrderReadControllerTest {
|
|
|
"故障维修",
|
|
|
2,
|
|
|
"处理异常",
|
|
|
- state.getLegacyCode(),
|
|
|
- state.getLegacyName(),
|
|
|
- state.getAuthoritativeCode(),
|
|
|
- state.getAuthoritativeName(),
|
|
|
- state.isDeprecated(),
|
|
|
+ stateEntry.getCode(),
|
|
|
+ stateEntry.getName(),
|
|
|
"2026-09-02T09:59:30+08:00",
|
|
|
"2026-09-02T10:00:00+08:00",
|
|
|
"2026-09-02T09:00:00+08:00",
|
|
|
"2026-09-02T09:30:00+08:00",
|
|
|
- new CockpitWorkOrderEventAssociation("ALARM", eventCode, "2026-09-02T10:00:00+08:00"));
|
|
|
+ new CockpitWorkOrderEventAssociation(eventSource, eventCode, "2026-09-02T10:00:00+08:00"));
|
|
|
}
|
|
|
|
|
|
private CockpitWorkOrderTimelineSnapshot timelineFixture(String workOrderCode, String lastState) {
|
|
|
@@ -249,24 +247,23 @@ class CockpitWorkOrderReadControllerTest {
|
|
|
if (state >= 6) {
|
|
|
return new CockpitWorkOrderTimelineSnapshot(
|
|
|
summary,
|
|
|
- Collections.singletonList(entry(workOrderCode, 6, 6)));
|
|
|
+ Collections.singletonList(entry(workOrderCode, 6)));
|
|
|
}
|
|
|
return new CockpitWorkOrderTimelineSnapshot(
|
|
|
summary,
|
|
|
Arrays.asList(
|
|
|
- entry(workOrderCode, 1, 1),
|
|
|
- entry(workOrderCode, 2, 2),
|
|
|
- entry(workOrderCode, 3, 3)));
|
|
|
+ entry(workOrderCode, 1),
|
|
|
+ entry(workOrderCode, 2),
|
|
|
+ entry(workOrderCode, 3)));
|
|
|
}
|
|
|
- private CockpitWorkOrderTimelineEntry entry(String workOrderCode, int legacyState, int authoritativeState) {
|
|
|
+
|
|
|
+ private CockpitWorkOrderTimelineEntry entry(String workOrderCode, int state) {
|
|
|
+ CockpitWorkOrderState stateEntry = CockpitWorkOrderStateDictionary.byLegacyCode(state);
|
|
|
return new CockpitWorkOrderTimelineEntry(
|
|
|
- (long) legacyState,
|
|
|
+ (long) state,
|
|
|
workOrderCode,
|
|
|
- legacyState,
|
|
|
- CockpitWorkOrderStateDictionary.byLegacyCode(legacyState).getLegacyName(),
|
|
|
- authoritativeState,
|
|
|
- CockpitWorkOrderStateDictionary.byLegacyCode(legacyState).getAuthoritativeName(),
|
|
|
- false,
|
|
|
+ stateEntry.getCode(),
|
|
|
+ stateEntry.getName(),
|
|
|
"创建",
|
|
|
"创建工单",
|
|
|
"系统",
|