PlanGenerateTest.java
11.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
package com.bsth.service.schedule;
import com.bsth.BaseTest_junit4;
import com.bsth.TestApplication;
import com.bsth.service.schedule.plan.process._2_generate._1_calcu._2_timetable.PlanProcessGenerateCalcuTimeTableService;
import com.bsth.service.schedule.plan.process._2_generate._1_calcu._2_timetable.PlanProcessGenerateCalcuTimeTableService.*;
import com.bsth.service.schedule.plan.process._2_generate._1_calcu._2_timetable.PlanProcessGenerateCalcuTimeTableServiceDroolsImpl;
import org.joda.time.format.DateTimeFormat;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.api.KieBase;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.*;
/**
* 排班计划生成测试。
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {TestApplication.class})
public class PlanGenerateTest extends BaseTest_junit4 {
@Override
public Map<String, String> getDbunitTestDbFileClassPathMap() {
Map<String, String> dbFileMap = new HashMap<>();
dbFileMap.put("_2_generate_calcu_timetable_test_case1", "testdata/_2_generate_calcu_timetable.xml");
dbFileMap.put("_2_generate_calcu_timetable_test_case2", "testdata/_2_generate_calcu_timetable.xml");
return dbFileMap;
}
@Autowired
@Qualifier("kBaseGenerateCalcuTimeTable_plus")
private KieBase kBaseGenerateCalcuTimeTable;
@Autowired
private JdbcTemplate jdbcTemplate;
/**
* 正常计算时刻表路牌启用,总班次数验证
* @throws Exception
*/
@Test
public void _2_generate_calcu_timetable_test_case1() {
LOG.info("--------------- 正常计算时刻表路牌启用,总班次数验证 ------------");
// 使用builder创建服务
PlanProcessGenerateCalcuTimeTableService planProcessGenerateCalcuTimeTableService =
PlanProcessGenerateCalcuTimeTableServiceDroolsImpl.getBuilder()
.setkBaseGenerateCalcuTimeTable(kBaseGenerateCalcuTimeTable)
.setJdbcTemplate(jdbcTemplate)
.build();
// 注意:数据有当日重复的时刻表匹配(包括特殊节假日重复和平日重复)
// 1、当日重复时刻表在业务上一般是错误的(由前置验证规则过滤)
// 2、到了排班的阶段,计算时刻表重复时是不会过滤的
List<TTinfoDetailByLpResult> tTinfoDetailByLpResultList = planProcessGenerateCalcuTimeTableService.generateCalcuTTInfos(
1,
DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2019-01-05").toDate(),
DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2019-01-14").toDate()
);
Assert.assertArrayEquals(
"时刻表路牌班次信息不匹配",
new Object[] {33},
new Object[] {tTinfoDetailByLpResultList.size()}
);
}
/**
* 单独测试某一天的时刻表路牌班次明细属性是否正常。
* @throws Exception
*/
@Test
public void _2_generate_calcu_timetable_test_case2() {
LOG.info("--------------- 单独测试某一天的时刻表路牌班次明细属性 ------------");
// 使用builder创建服务
PlanProcessGenerateCalcuTimeTableService planProcessGenerateCalcuTimeTableService =
PlanProcessGenerateCalcuTimeTableServiceDroolsImpl.getBuilder()
.setkBaseGenerateCalcuTimeTable(kBaseGenerateCalcuTimeTable)
.setJdbcTemplate(jdbcTemplate)
.build();
// 注意:数据有当日重复的时刻表匹配(包括特殊节假日重复和平日重复)
// 1、当日重复时刻表在业务上一般是错误的(由前置验证规则过滤)
// 2、到了排班的阶段,计算时刻表重复时是不会过滤的
List<TTinfoDetailByLpResult> tTinfoDetailByLpResultList = planProcessGenerateCalcuTimeTableService.generateCalcuTTInfos(
1,
DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2019-01-01").toDate(),
DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2019-01-01").toDate()
);
Assert.assertArrayEquals(
"时刻表路牌班次信息不匹配",
new Object[] {5},
new Object[] {tTinfoDetailByLpResultList.size()}
);
// 找出时刻表1路牌1数据,路牌2,路牌3的班次数据,时刻表2的路牌1数据,路牌2数据
TTinfoDetailByLpResult t1_lp1_info = null;
TTinfoDetailByLpResult t1_lp2_info = null;
TTinfoDetailByLpResult t1_lp3_info = null;
TTinfoDetailByLpResult t2_lp1_info = null;
TTinfoDetailByLpResult t2_lp2_info = null;
for (TTinfoDetailByLpResult ttInfoLpInfoResult : tTinfoDetailByLpResultList) {
if (ttInfoLpInfoResult.getTTinfoResult().getId() == 1) {
if (ttInfoLpInfoResult.getLpInfoResult().getId() == 1L) {
t1_lp1_info = ttInfoLpInfoResult;
} else if (ttInfoLpInfoResult.getLpInfoResult().getId() == 2L) {
t1_lp2_info = ttInfoLpInfoResult;
} else if (ttInfoLpInfoResult.getLpInfoResult().getId() == 3L) {
t1_lp3_info = ttInfoLpInfoResult;
}
} else if (ttInfoLpInfoResult.getTTinfoResult().getId() == 2) {
if (ttInfoLpInfoResult.getLpInfoResult().getId() == 1L) {
t2_lp1_info = ttInfoLpInfoResult;
} else if (ttInfoLpInfoResult.getLpInfoResult().getId() == 2L) {
t2_lp2_info = ttInfoLpInfoResult;
}
}
}
Assert.assertArrayEquals(
"时刻表1 路牌1 最小发车顺序号 最大发车顺序号 开始分班顺序号 不一致",
new Object[] {1L, 1L, 1, 6, 6},
new Object[] {t1_lp1_info.getTTinfoResult().getId(), t1_lp1_info.getLpInfoResult().getId(),
t1_lp1_info.getMinFcno(), t1_lp1_info.getMaxFcno(), t1_lp1_info.getStartFbFcno()});
Assert.assertArrayEquals(
"时刻表1 路牌2 最小发车顺序号 最大发车顺序号 开始分班顺序号 不一致",
new Object[] {1L, 2L, 2, 5, null},
new Object[] {t1_lp2_info.getTTinfoResult().getId(), t1_lp2_info.getLpInfoResult().getId(),
t1_lp2_info.getMinFcno(), t1_lp2_info.getMaxFcno(), t1_lp2_info.getStartFbFcno()});
Assert.assertArrayEquals(
"时刻表1 路牌3 最小发车顺序号 最大发车顺序号 开始分班顺序号 不一致",
new Object[] {1L, 3L, 3, 3, null},
new Object[] {t1_lp3_info.getTTinfoResult().getId(), t1_lp3_info.getLpInfoResult().getId(),
t1_lp3_info.getMinFcno(), t1_lp3_info.getMaxFcno(), t1_lp3_info.getStartFbFcno()});
Assert.assertArrayEquals(
"时刻表2 路牌1 最小发车顺序号 最大发车顺序号 开始分班顺序号 不一致",
new Object[] {2L, 1L, 1, 1, null},
new Object[] {t2_lp1_info.getTTinfoResult().getId(), t2_lp1_info.getLpInfoResult().getId(),
t2_lp1_info.getMinFcno(), t2_lp1_info.getMaxFcno(), t2_lp1_info.getStartFbFcno()});
Assert.assertArrayEquals(
"时刻表2 路牌2 最小发车顺序号 最大发车顺序号 开始分班顺序号 不一致",
new Object[] {2L, 2L, 2, 2, null},
new Object[] {t2_lp2_info.getTTinfoResult().getId(), t2_lp2_info.getLpInfoResult().getId(),
t2_lp2_info.getMinFcno(), t2_lp2_info.getMaxFcno(), t2_lp2_info.getStartFbFcno()});
// 验证路牌1 ttinfo中的第一个班次的属性
Collections.sort(t1_lp1_info.getTTinfoDetailResultList(), new Comparator<TTinfoDetailResult>() {
@Override
public int compare(TTinfoDetailResult o1, TTinfoDetailResult o2) {
return o1.getFcno() - o2.getFcno();
}
});
Assert.assertArrayEquals(
"路牌1的第一个班次 对象属性不能为空",
new Object[] {
true,
true,
true
},
new Object[] {
t1_lp1_info.getTTinfoDetailResultList().get(0).getXl() != null,
t1_lp1_info.getTTinfoDetailResultList().get(0).getTtInfo() != null,
t1_lp1_info.getTTinfoDetailResultList().get(0).getLp() != null
}
);
Assert.assertArrayEquals(
"路牌1的第一个班次 属性不一致",
new Object[] {
1L,
1,
1L,
1L,
1,
"0",
"#1",
"上行起点站",
"#2",
"上行终点站",
"08:30",
1,
30D,
30,
"normal",
"mark一下",
1,
false,
false
},
new Object[] {
t1_lp1_info.getTTinfoDetailResultList().get(0).getId(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getXl().getId(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getTtInfo().getId(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getLp().getId(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getFcno(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getXlDir(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getQdzCode(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getQdzName(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getZdzCode(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getZdzName(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getFcsj(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getBcs(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getJhlc(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getBcsj(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getBcType(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getRemark(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getLineVersion(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getIsFB(),
t1_lp1_info.getTTinfoDetailResultList().get(0).getIsTS()
}
);
}
}