Commit f76d6b8ac4f6b9b7b6d4e1476362ad3d8aaf7942

Authored by 王通
1 parent c2d036f4

青浦版本

src/main/java/com/bsth/server_ws/util/WSDataConver.java
1 -package com.bsth.server_ws.util;  
2 -  
3 -import java.lang.reflect.Field;  
4 -import java.text.ParseException;  
5 -import java.text.SimpleDateFormat;  
6 -import java.util.ArrayList;  
7 -import java.util.Calendar;  
8 -import java.util.Collections;  
9 -import java.util.Comparator;  
10 -import java.util.Date;  
11 -import java.util.HashMap;  
12 -import java.util.List;  
13 -import java.util.Map;  
14 -import java.util.Set;  
15 -  
16 -import org.apache.commons.lang3.StringUtils;  
17 -import org.slf4j.Logger;  
18 -import org.slf4j.LoggerFactory;  
19 -  
20 -import com.bsth.entity.DutyEmployee;  
21 -import com.bsth.entity.ElecInfo;  
22 -import com.bsth.entity.OilInfo;  
23 -import com.bsth.entity.SchedulePlanInfo;  
24 -import com.bsth.entity.ScheduleRealInfo;  
25 -import com.bsth.server_ws.attendance.entity.Jsy_attendance;  
26 -import com.bsth.server_ws.park_station.dto.LsLcPb;  
27 -import com.bsth.server_ws.waybill.entity.NH_waybill;  
28 -import com.bsth.server_ws.waybill.entity.NH_waybillItem;  
29 -import com.bsth.server_ws.waybill.entity.SN_lossMileage;  
30 -import com.bsth.server_ws.waybill.entity.SN_waybill;  
31 -import com.bsth.server_ws.waybill.entity.SN_waybillItem;  
32 -import com.bsth.util.Arith;  
33 -import com.bsth.util.ConvertUtil;  
34 -import com.google.common.collect.ArrayListMultimap;  
35 -  
36 -/**  
37 - * Created by panzhao on 2017/3/15.  
38 - */  
39 -public class WSDataConver {  
40 -  
41 - /**  
42 - * 格式编码和名称映射,与老系统保持一致  
43 - */  
44 - private static Map<String, String> gsMap;  
45 -  
46 - static Logger logger = LoggerFactory.getLogger(WSDataConver.class);  
47 -  
48 - static {  
49 - gsMap = new HashMap<>();  
50 - gsMap.put("55", "上南公司");  
51 - gsMap.put("55_4", "上南一分公司");  
52 - gsMap.put("55_3", "上南六分公司");  
53 - gsMap.put("55_1", "上南二分公司");  
54 - gsMap.put("55_2", "上南三分公司");  
55 - gsMap.put("22", "金高公司");  
56 - gsMap.put("22_2", "二分公司");  
57 - gsMap.put("22_1", "四分公司");  
58 - gsMap.put("22_3", "三分公司");  
59 - gsMap.put("22_5", "一分公司");  
60 - gsMap.put("05", "杨高公司");  
61 - gsMap.put("05_5", "杨高分公司");  
62 - gsMap.put("05_6", "周浦分公司");  
63 - gsMap.put("05_3", "芦潮港分公司");  
64 - gsMap.put("05_1", "川沙分公司");  
65 - gsMap.put("26", "南汇公司");  
66 - gsMap.put("26_3", "南汇三分");  
67 - gsMap.put("26_2", "南汇二分");  
68 - gsMap.put("26_1", "南汇一分");  
69 - gsMap.put("26_4", "南汇维修公司");  
70 - }  
71 -  
72 - /**  
73 - * 将班次list 转换成 getCurrentDayPlan 函数需要的格式  
74 - *  
75 - * @param list  
76 - * @return [0:日期,1:线路名称,2:路牌名称,3:车辆自编号,4:,5:,6:起点时间,7:终点时间,8:起点站名称,9:终点站名称,10:班次类型]  
77 - */  
78 - public static String[] to_getCurrentDayPlan(List<ScheduleRealInfo> list) {  
79 - if (list == null || list.size() == 0)  
80 - return new String[0];  
81 -  
82 - Map<String, String> bcTypeMap = new HashMap<>();  
83 - bcTypeMap.put("out", "出场");  
84 - bcTypeMap.put("in", "进场");  
85 -  
86 - String[] array = new String[list.size()];  
87 - StringBuilder sb;  
88 - ScheduleRealInfo sch;  
89 - int len = list.size();  
90 - for(int i = 0; i < len; i ++){  
91 - sb = new StringBuilder();  
92 - sch = list.get(i);  
93 - sb.append(sch.getScheduleDateStr() + ",");  
94 - sb.append(sch.getXlName() + ",");  
95 - sb.append(sch.getLpName() + ",");  
96 - sb.append(sch.getClZbh() + ",");  
97 - sb.append(",");  
98 - sb.append(",");  
99 - sb.append(sch.getDfsj() + ",");  
100 - sb.append(sch.getZdsj() + ",");  
101 - sb.append(sch.getQdzName() + ",");  
102 - sb.append(sch.getZdzName() + ",");  
103 - sb.append(bcTypeMap.containsKey(sch.getBcType())?bcTypeMap.get(sch.getBcType()):"");  
104 -  
105 - array[i] = sb.toString();  
106 - }  
107 - return array;  
108 - }  
109 -  
110 - /**  
111 - * 将班次list 转换成 returnCCInfo 和 returnJCInfo 函数需要的格式  
112 - *  
113 - * @param list  
114 - * @return [0: 日期, 1: 线路编码, 2: 线路名称, 3: 公司名称, 4: 分公司名称, 5: 路牌, 6: 起点站, 7: 起点计划时间,  
115 - * 8: 起点实际时间, 9: 终点站, 10: 终点计划时间, 11: 终点实际时间, 12: 计划里程, 13: 实际里程,  
116 - * 14: 驾驶员, 15: 售票员, 16: 车辆内部编码, 17: 状态(1 为出场。2为进场), 18: 驾驶员名称, 19: 进场顺序号]  
117 - */  
118 - public static String[] to_returnJCCInfo(List<ScheduleRealInfo> list) {  
119 - if(list == null)  
120 - return new String[0];  
121 -  
122 - int size = list.size();  
123 - String[] array = new String[size];  
124 -  
125 - ScheduleRealInfo sch;  
126 - StringBuffer sb;  
127 - for (int i = 0; i < size; i++) {  
128 - sb = new StringBuffer(",");  
129 -  
130 - sch = list.get(i);  
131 - sb.append(sch.getScheduleDateStr() + ",");  
132 - sb.append(sch.getXlBm() + ",");  
133 - sb.append(sch.getXlName() + ",");  
134 - sb.append(gsMap.get(sch.getGsBm()) + ",");  
135 - sb.append(gsMap.get(sch.getGsBm() + "_" + sch.getFgsBm()) + ",");  
136 - sb.append(sch.getLpName() + ",");  
137 - sb.append(sch.getQdzCode() + ",");  
138 - sb.append(sch.getDfsj() + ",");  
139 - sb.append(nvlGetVal(sch.getFcsjActual()) + ",");  
140 - sb.append(sch.getZdzCode() + ",");  
141 - sb.append(sch.getZdsj() + ",");  
142 - sb.append(nvlGetVal(sch.getZdsjActual()) + ",");  
143 - sb.append(nvlGetVal(sch.getJhlc()) + ",");  
144 - sb.append(nvlGetVal(sch.getJhlc()) + ",");  
145 - sb.append(sch.getjGh() + ",");  
146 - sb.append(nvlGetVal(sch.getsGh()) + ",");  
147 - sb.append(sch.getClZbh() + ",");  
148 - sb.append((sch.getBcType().equals("out") ? 1 : 2) + ",");  
149 - sb.append(sch.getjName() + ",");  
150 - //用ID替代老系统的出场顺序号  
151 - sb.append(sch.getId() + ",");  
152 -  
153 - array[i] = sb.substring(1).toString();  
154 - }  
155 - return array;  
156 - }  
157 -  
158 - public static String nvlGetVal(Object val) {  
159 - return val == null ? "" : val.toString();  
160 - }  
161 -  
162 - /**  
163 - * 将实际排班和油耗数据 转换成南汇路单需要的数据格式  
164 - *  
165 - * @param listMap  
166 - * @param oilInfoMap  
167 - * @return  
168 - */  
169 - public static NH_waybill[] to_waybill_NH(ArrayListMultimap<String, ScheduleRealInfo> listMap, Map<String, OilInfo> oilInfoMap, List<DutyEmployee> des) throws NoSuchFieldException {  
170 - List<String> nbbmArray = new ArrayList<>(listMap.keySet());  
171 -  
172 - NH_waybill[] rs = new NH_waybill[nbbmArray.size()];  
173 - Field jGhField = ScheduleRealInfo.class.getDeclaredField("jGh");  
174 - //Field lpField = ScheduleRealInfo.class.getDeclaredField("lpName");  
175 -  
176 - List<ScheduleRealInfo> list;  
177 - ArrayListMultimap<String, ScheduleRealInfo> jGhListMap;  
178 - ScheduleRealInfo sch;  
179 - NH_waybill nh_waybill;  
180 - NH_waybillItem nh_waybillItem;  
181 - OilInfo oilInfo;  
182 - for (int i = 0; i < nbbmArray.size(); i++) {  
183 - list = listMap.get(nbbmArray.get(i));  
184 - if (list.size() == 0)  
185 - continue;  
186 - //班次信息  
187 - nh_waybill = new NH_waybill();  
188 - sch = list.get(0);  
189 - //日期  
190 - nh_waybill.setM_strYYRQ(sch.getScheduleDateStr());  
191 - //车辆自编号  
192 - nh_waybill.setM_strNBBM(sch.getClZbh());  
193 - //线路编码  
194 - nh_waybill.setM_strXLBM(sch.getXlBm());  
195 - nh_waybill.setM_SubInfos(new ArrayList<NH_waybillItem>());  
196 -  
197 - //按 驾驶员 分组班次,构造路单子项  
198 - jGhListMap = new ConvertUtil<ScheduleRealInfo>().groupMultiList(list, "_", jGhField);  
199 - for (String jGh : jGhListMap.keySet()) {  
200 - list = jGhListMap.get(jGh);  
201 - nh_waybillItem = new NH_waybillItem();  
202 - //计划里程  
203 - nh_waybillItem.setM_dblJHLC(ScheduleCalculator.calcJHLC(list));  
204 - //实际计划公里  
205 - nh_waybillItem.setM_dblSJJHLC(ScheduleCalculator.calcSJLC(list));  
206 - //实际出场里程  
207 - nh_waybillItem.setM_dblCCLC(ScheduleCalculator.calcCCLC(list));  
208 - //实际进场里程  
209 - nh_waybillItem.setM_dblJCLC(ScheduleCalculator.calcJCLC(list));  
210 - //营业公里  
211 - nh_waybillItem.setM_dblYYLC(ScheduleCalculator.calcYYLC(list));  
212 - //空驶公里  
213 - nh_waybillItem.setM_dblKSLC(ScheduleCalculator.calcKSLC(list));  
214 - //抽减公里  
215 - nh_waybillItem.setM_dblCJLC(ScheduleCalculator.calcCJLC(list));  
216 - //烂班公里  
217 - nh_waybillItem.setM_dblLBLC(ScheduleCalculator.calcLBLC(list));  
218 - //增加公里  
219 - nh_waybillItem.setM_dblZJLC(ScheduleCalculator.calcZJLC(list));  
220 - //总公里  
221 - nh_waybillItem.setM_dblZLC(ScheduleCalculator.calcZLC(list));  
222 - //烂班公里原因  
223 - nh_waybillItem.setM_strLBYY(ScheduleCalculator.joinLBYY(list));  
224 - //抽减公里原因  
225 - nh_waybillItem.setM_strCJYY(ScheduleCalculator.joinCJYY(list));  
226 - //计划班次  
227 - nh_waybillItem.setM_intJHBC(ScheduleCalculator.countJHBC(list));  
228 - //实际计划班次  
229 - nh_waybillItem.setM_intSJJHBC(ScheduleCalculator.countSJJHBC(list));  
230 - //实际班次 ————> 暂时和实际计划班次相同  
231 - nh_waybillItem.setM_intSJBC(ScheduleCalculator.countSJJHBC(list));  
232 - //增加班次  
233 - nh_waybillItem.setM_intZJBC(ScheduleCalculator.countZJBC(list));  
234 - //抽减班次  
235 - nh_waybillItem.setM_intCJBC(ScheduleCalculator.countCJBC(list));  
236 - //烂班工时  
237 - nh_waybillItem.setM_dblLBGS(ScheduleCalculator.calcLBGS(list));  
238 - //路牌  
239 - nh_waybillItem.setM_strLP(list.get(0).getLpName());  
240 - //驾驶员工号  
241 - nh_waybillItem.setM_strJSY(list.get(0).getjGh());  
242 - //售票员工号  
243 - nh_waybillItem.setM_strSPY("");  
244 - for (ScheduleRealInfo sri : list) {  
245 - if (StringUtils.isNotEmpty(sri.getsGh())) {  
246 - nh_waybillItem.setM_strSPY(sri.getsGh());  
247 - break;  
248 - }  
249 - }  
250 - //驾驶员考勤  
251 - nh_waybillItem.setM_strJSYKQ("");  
252 - //售票员考勤  
253 - nh_waybillItem.setM_strSPYKQ("");  
254 - //当班调度员  
255 - nh_waybillItem.setM_strDDY(ScheduleCalculator.calcDDY(list, des));  
256 - //营运状态  
257 - nh_waybillItem.setM_strYYZT("");  
258 - //备注  
259 - nh_waybillItem.setM_strBZ("");  
260 -  
261 - oilInfo = oilInfoMap.get(list.get(0).getClZbh() + "_" + list.get(0).getjGh());  
262 - if (oilInfo != null) {  
263 - //出场存油  
264 - nh_waybillItem.setM_dblCCCY(oilInfo.getCzyl());  
265 - //进场存油  
266 - nh_waybillItem.setM_dblJCCY(oilInfo.getJzyl());  
267 - //加注量1  
268 - nh_waybillItem.setM_dblJZL1(oilInfo.getJzl());  
269 - //加注量2  
270 - nh_waybillItem.setM_dblJZL2(0.0);  
271 - //尿素  
272 - nh_waybillItem.setM_dblNS(oilInfo.getNs());  
273 - //消耗量  
274 - nh_waybillItem.setM_dblYH(oilInfo.getYh());  
275 - //加油地点1  
276 - nh_waybillItem.setM_strJYD1("");  
277 - //加油地点2  
278 - nh_waybillItem.setM_strJYD2("");  
279 - //加油工工号1  
280 - nh_waybillItem.setM_strJYG1("");  
281 - //加油工工号1  
282 - nh_waybillItem.setM_strJYG2("");  
283 - //油耗类型1  
284 - nh_waybillItem.setM_strYHLX1(oilInfo.getRylx());  
285 - //油耗类型2  
286 - nh_waybillItem.setM_strYHLX1("");  
287 - }  
288 -  
289 - nh_waybill.getM_SubInfos().add(nh_waybillItem);  
290 - }  
291 -  
292 - rs[i] = nh_waybill;  
293 - }  
294 - return rs;  
295 - }  
296 -  
297 - /**  
298 - * 将实际排班、油耗数据、电量数据 转换成南汇路单需要的数据格式  
299 - *  
300 - * @param listMap  
301 - * @param oilInfoMap  
302 - * @return  
303 - */  
304 - public static NH_waybill[] to_waybill_NH4TH(ArrayListMultimap<String, ScheduleRealInfo> listMap, Map<String, OilInfo> oilInfoMap, Map<String, ElecInfo> elecInfoMap, List<DutyEmployee> des) throws NoSuchFieldException {  
305 - List<String> nbbmArray = new ArrayList<>(listMap.keySet());  
306 -  
307 - NH_waybill[] rs = new NH_waybill[nbbmArray.size()];  
308 - Field jGhField = ScheduleRealInfo.class.getDeclaredField("jGh");  
309 - //Field lpField = ScheduleRealInfo.class.getDeclaredField("lpName");  
310 -  
311 - List<ScheduleRealInfo> list;  
312 - ArrayListMultimap<String, ScheduleRealInfo> jGhListMap;  
313 - ScheduleRealInfo sch;  
314 - NH_waybill nh_waybill;  
315 - NH_waybillItem nh_waybillItem;  
316 - OilInfo oilInfo;  
317 - ElecInfo elecInfo;  
318 - for (int i = 0; i < nbbmArray.size(); i++) {  
319 - list = listMap.get(nbbmArray.get(i));  
320 - if (list.size() == 0)  
321 - continue;  
322 - //班次信息  
323 - nh_waybill = new NH_waybill();  
324 - sch = list.get(0);  
325 - //日期  
326 - nh_waybill.setM_strYYRQ(sch.getScheduleDateStr());  
327 - //车辆自编号  
328 - nh_waybill.setM_strNBBM(sch.getClZbh());  
329 - //线路编码  
330 - nh_waybill.setM_strXLBM(sch.getXlBm());  
331 - nh_waybill.setM_SubInfos(new ArrayList<NH_waybillItem>());  
332 -  
333 - //按 驾驶员 分组班次,构造路单子项  
334 - jGhListMap = new ConvertUtil<ScheduleRealInfo>().groupMultiList(list, "_", jGhField);  
335 - for (String jGh : jGhListMap.keySet()) {  
336 - list = jGhListMap.get(jGh);  
337 - nh_waybillItem = new NH_waybillItem();  
338 - //计划里程  
339 - nh_waybillItem.setM_dblJHLC(ScheduleCalculator.calcJHLC(list));  
340 - //实际计划公里  
341 - nh_waybillItem.setM_dblSJJHLC(ScheduleCalculator.calcSJLC(list));  
342 - //实际出场里程  
343 - nh_waybillItem.setM_dblCCLC(ScheduleCalculator.calcCCLC(list));  
344 - //实际进场里程  
345 - nh_waybillItem.setM_dblJCLC(ScheduleCalculator.calcJCLC(list));  
346 - //营业公里  
347 - nh_waybillItem.setM_dblYYLC(ScheduleCalculator.calcYYLC(list));  
348 - //空驶公里  
349 - nh_waybillItem.setM_dblKSLC(ScheduleCalculator.calcKSLC(list));  
350 - //抽减公里  
351 - nh_waybillItem.setM_dblCJLC(ScheduleCalculator.calcCJLC(list));  
352 - //烂班公里  
353 - nh_waybillItem.setM_dblLBLC(ScheduleCalculator.calcLBLC(list));  
354 - //增加公里  
355 - nh_waybillItem.setM_dblZJLC(ScheduleCalculator.calcZJLC(list));  
356 - //总公里  
357 - nh_waybillItem.setM_dblZLC(ScheduleCalculator.calcZLC(list));  
358 - //烂班公里原因  
359 - nh_waybillItem.setM_strLBYY(ScheduleCalculator.joinLBYY(list));  
360 - //抽减公里原因  
361 - nh_waybillItem.setM_strCJYY(ScheduleCalculator.joinCJYY(list));  
362 - //计划班次  
363 - nh_waybillItem.setM_intJHBC(ScheduleCalculator.countJHBC(list));  
364 - //实际计划班次  
365 - nh_waybillItem.setM_intSJJHBC(ScheduleCalculator.countSJJHBC(list));  
366 - //实际班次 ————> 暂时和实际计划班次相同  
367 - nh_waybillItem.setM_intSJBC(ScheduleCalculator.countSJJHBC(list));  
368 - //增加班次  
369 - nh_waybillItem.setM_intZJBC(ScheduleCalculator.countZJBC(list));  
370 - //抽减班次  
371 - nh_waybillItem.setM_intCJBC(ScheduleCalculator.countCJBC(list));  
372 - //烂班工时  
373 - nh_waybillItem.setM_dblLBGS(ScheduleCalculator.calcLBGS(list));  
374 - //路牌  
375 - nh_waybillItem.setM_strLP(list.get(0).getLpName());  
376 - //驾驶员工号  
377 - nh_waybillItem.setM_strJSY(list.get(0).getjGh());  
378 - //售票员工号  
379 - nh_waybillItem.setM_strSPY("");  
380 - for (ScheduleRealInfo sri : list) {  
381 - if (StringUtils.isNotEmpty(sri.getsGh())) {  
382 - nh_waybillItem.setM_strSPY(sri.getsGh());  
383 - break;  
384 - }  
385 - }  
386 - //驾驶员考勤  
387 - nh_waybillItem.setM_strJSYKQ("");  
388 - //售票员考勤  
389 - nh_waybillItem.setM_strSPYKQ("");  
390 - //当班调度员  
391 - nh_waybillItem.setM_strDDY(ScheduleCalculator.calcDDY(list, des));  
392 - //营运状态  
393 - nh_waybillItem.setM_strYYZT("");  
394 - //备注  
395 - nh_waybillItem.setM_strBZ("");  
396 -  
397 - oilInfo = oilInfoMap.get(list.get(0).getClZbh() + "_" + list.get(0).getjGh());  
398 - if (oilInfo != null) {  
399 - //出场存油  
400 - nh_waybillItem.setM_dblCCCY(oilInfo.getCzyl());  
401 - //进场存油  
402 - nh_waybillItem.setM_dblJCCY(oilInfo.getJzyl());  
403 - //加注量1  
404 - nh_waybillItem.setM_dblJZL1(oilInfo.getJzl());  
405 - //加注量2  
406 - nh_waybillItem.setM_dblJZL2(0.0);  
407 - //尿素  
408 - nh_waybillItem.setM_dblNS(oilInfo.getNs());  
409 - //消耗量  
410 - nh_waybillItem.setM_dblYH(oilInfo.getYh());  
411 - //加油地点1  
412 - nh_waybillItem.setM_strJYD1("");  
413 - //加油地点2  
414 - nh_waybillItem.setM_strJYD2("");  
415 - //加油工工号1  
416 - nh_waybillItem.setM_strJYG1("");  
417 - //加油工工号1  
418 - nh_waybillItem.setM_strJYG2("");  
419 - //油耗类型1  
420 - nh_waybillItem.setM_strYHLX1(oilInfo.getRylx());  
421 - //油耗类型2  
422 - nh_waybillItem.setM_strYHLX1("");  
423 - }  
424 -  
425 - elecInfo = elecInfoMap.get(list.get(0).getClZbh() + "_" + list.get(0).getjGh());  
426 - if (elecInfo != null) {  
427 - //出场存油  
428 - nh_waybillItem.setM_dblCCCY(100.0);  
429 - //进场存油  
430 - nh_waybillItem.setM_dblJCCY(100.0);  
431 - //加注量1  
432 - nh_waybillItem.setM_dblJZL1(elecInfo.getCdl());  
433 - //加注量2  
434 - nh_waybillItem.setM_dblJZL2(0.0);  
435 - //尿素  
436 - nh_waybillItem.setM_dblNS(0.0);  
437 - //消耗量  
438 - nh_waybillItem.setM_dblYH(elecInfo.getHd());  
439 - //加油地点1  
440 - nh_waybillItem.setM_strJYD1("");  
441 - //加油地点2  
442 - nh_waybillItem.setM_strJYD2("");  
443 - //加油工工号1  
444 - nh_waybillItem.setM_strJYG1("");  
445 - //加油工工号1  
446 - nh_waybillItem.setM_strJYG2("");  
447 - //油耗类型1  
448 - nh_waybillItem.setM_strYHLX1("");  
449 - //油耗类型2  
450 - nh_waybillItem.setM_strYHLX1("");  
451 - }  
452 -  
453 - nh_waybill.getM_SubInfos().add(nh_waybillItem);  
454 - }  
455 -  
456 - rs[i] = nh_waybill;  
457 - }  
458 - return rs;  
459 - }  
460 -  
461 -  
462 - /**  
463 - * 将实际排班和油耗数据 转换成上南路单需要的数据格式  
464 - *  
465 - * @param listMap  
466 - * @param oilInfoMap  
467 - * @return  
468 - */  
469 - public static SN_waybill[] to_waybill_SN(ArrayListMultimap<String, ScheduleRealInfo> listMap, Map<String, OilInfo> oilInfoMap) throws NoSuchFieldException {  
470 -  
471 - List<String> nbbmArray = new ArrayList<>(listMap.keySet());  
472 - SN_waybill[] rs = new SN_waybill[nbbmArray.size()];  
473 - Field jGhField = ScheduleRealInfo.class.getDeclaredField("jGh");  
474 -  
475 - List<ScheduleRealInfo> list;  
476 - ArrayListMultimap<String, ScheduleRealInfo> jGhListMap;  
477 - ScheduleRealInfo sch;  
478 - SN_waybill sn_waybill;  
479 - SN_waybillItem sn_waybillItem;  
480 -  
481 - OilComp oilComp = new OilComp();  
482 - List<OilInfo> oilArray;  
483 - for (int i = 0; i < nbbmArray.size(); i++) {  
484 - list = listMap.get(nbbmArray.get(i));  
485 - if (list.size() == 0)  
486 - continue;  
487 -  
488 - sch = list.get(0);  
489 - sn_waybill = new SN_waybill();  
490 - sn_waybill.setLine_no(sch.getXlBm());  
491 - sn_waybill.setWork_date(sch.getScheduleDateStr());  
492 - sn_waybill.setComp_id(sch.getFgsBm());  
493 - sn_waybill.setGuidecard(sch.getLpName());  
494 - sn_waybill.setCar_id(sch.getClZbh());  
495 - //实际班次  
496 - sn_waybill.setAct_num(ScheduleCalculator.countSJJHBC(list));  
497 - //晚班实际班次  
498 - sn_waybill.setL_act_num(ScheduleCalculator.countSJJHBC(ScheduleCalculator.lastArray(list)));  
499 - //营业里程  
500 - sn_waybill.setWork_way(ScheduleCalculator.calcYYLC(list));  
501 - //空驶里程  
502 - sn_waybill.setLeisure_way(ScheduleCalculator.calcKSLC(list));  
503 - //总里程  
504 - sn_waybill.setCount_way(ScheduleCalculator.calcZLC(list));  
505 - //路单类型(0普通,1包车)  
506 - sn_waybill.setLd_type("0");  
507 - //油料类型(2、柴油 3、天然气 4、汽油柴油 5、液化气 6、液化气汽油 7、液化气柴油 8、天然气汽油 9、电)  
508 - //暂时全部柴油车  
509 - sn_waybill.setOil_type("2");  
510 -  
511 - //根据车辆获取油量信息  
512 - oilArray = likeGet(oilInfoMap, sch.getClZbh() + "_");  
513 - if (oilArray.size() > 0) {  
514 - Collections.sort(oilArray, oilComp);  
515 - //出厂存油  
516 - sn_waybill.setOut_oil(oilArray.get(0).getCzyl());  
517 - //油料加注  
518 - sn_waybill.setAdd_oil(sumAddOil(oilArray));  
519 - //进场存油  
520 - sn_waybill.setEnd_oil(oilArray.get(oilArray.size() - 1).getJzyl());  
521 - //油料消耗  
522 - sn_waybill.setExpend_oil(countOilExpend(oilArray));  
523 - //非营业用油类型 非营业用油类型(1.常规车2.包车3.加开包车)  
524 - sn_waybill.setNowork_oil_type("1");  
525 - //非营业用油  
526 - sn_waybill.setNowork_oil(0);  
527 - //非营业用油油耗量(保养用油)  
528 - sn_waybill.setNowork_oil1(0);  
529 - //非营业用油油耗量(票务用油)  
530 - sn_waybill.setNowork_oil2(0);  
531 - //非营业用油油耗量(其他用油)  
532 - sn_waybill.setNowork_oil3(0);  
533 - //营业用油  
534 - sn_waybill.setWork_oil(countOilExpend(oilArray));  
535 - //其他营业用油  
536 - sn_waybill.setQt_work_oil(0);  
537 - }  
538 - sn_waybill.setDriver_detail(new ArrayList<SN_waybillItem>());  
539 -  
540 - //按 驾驶员 分组班次,构造路单子项  
541 - jGhListMap = new ConvertUtil<ScheduleRealInfo>().groupMultiList(list, "_", jGhField);  
542 - for (String jGh : jGhListMap.keySet()) {  
543 - list = jGhListMap.get(jGh);  
544 - sn_waybillItem = new SN_waybillItem();  
545 - sch = list.get(0);  
546 - //司机编号  
547 - sn_waybillItem.setDriver_no(sch.getjGh());  
548 - //司机名称  
549 - sn_waybillItem.setDriver_name(sch.getjName());  
550 - //售票员编号  
551 - sn_waybillItem.setBusman_no(sch.getsGh());  
552 - //售票员名称  
553 - sn_waybillItem.setBusman_name(sch.getsName());  
554 - //行驶里程  
555 - sn_waybillItem.setDriver_way(ScheduleCalculator.calcYYLC(list));  
556 - //空驶公里  
557 - sn_waybillItem.setKs_way(ScheduleCalculator.calcKSLC(list));  
558 - //柴油加注量、电加注量同一字段  
559 - sn_waybillItem.setDo_oil_2(countOilExpend(oilArray, sch.getjGh()));  
560 -  
561 - sn_waybill.getDriver_detail().add(sn_waybillItem);  
562 - }  
563 -  
564 - rs[i] = sn_waybill;  
565 - }  
566 - return rs;  
567 - }  
568 -  
569 - /**  
570 - * 将实际排班转换成上南需要损失公里数据  
571 - *  
572 - * @param listMap  
573 - * @return  
574 - */  
575 - public static SN_lossMileage[] to_lossMileage_SN(ArrayListMultimap<String, ScheduleRealInfo> listMap) throws NoSuchFieldException {  
576 - List<String> lineArray = new ArrayList<>(listMap.keySet());  
577 - SN_lossMileage[] rs = new SN_lossMileage[lineArray.size()];  
578 -  
579 - List<ScheduleRealInfo> list;  
580 - ScheduleRealInfo sch;  
581 - for (int i = 0; i < lineArray.size(); i++) {  
582 - list = listMap.get(lineArray.get(i));  
583 -  
584 - sch = list.get(0);  
585 - SN_lossMileage lossMileage = new SN_lossMileage();  
586 - //线路编号  
587 - lossMileage.setLine_id(sch.getXlBm());  
588 - //营运日期  
589 - lossMileage.setWork_date(sch.getScheduleDateStr());  
590 - //分公司编号  
591 - lossMileage.setComp_id(sch.getFgsBm());  
592 - //少驶公里  
593 - lossMileage.setLoss_way(ScheduleCalculator.calcCJLC(list));  
594 - //实际公里  
595 - lossMileage.setAct_way(ScheduleCalculator.calcYYLC(list));  
596 - //计划公里  
597 - lossMileage.setJh_way(ScheduleCalculator.calcJHLC(list));  
598 -  
599 - //路阻损失公里  
600 - lossMileage.setLoss_lz(ScheduleCalculator.calcCJLC2(list, "路阻"));  
601 - //吊慢损失公里  
602 - lossMileage.setLoss_dm(ScheduleCalculator.calcCJLC2(list, "吊慢"));  
603 - //故障损失公里  
604 - lossMileage.setLoss_gz(ScheduleCalculator.calcCJLC2(list, "故障"));  
605 - //纠纷损失公里  
606 - lossMileage.setLoss_jf(ScheduleCalculator.calcCJLC2(list, "纠纷"));  
607 - //肇事损失公里  
608 - lossMileage.setLoss_zs(ScheduleCalculator.calcCJLC2(list, "肇事"));  
609 - //缺人损失公里  
610 - lossMileage.setLoss_qr(ScheduleCalculator.calcCJLC2(list, "缺人"));  
611 - //缺车损失公里  
612 - lossMileage.setLoss_qc(ScheduleCalculator.calcCJLC2(list, "缺车"));  
613 - //客稀损失公里  
614 - lossMileage.setLoss_kx(ScheduleCalculator.calcCJLC2(list, "客稀"));  
615 - //其他损失公里  
616 - lossMileage.setLoss_qt(ScheduleCalculator.calcCJLC2(list, "其他"));  
617 - //配车损失公里  
618 - lossMileage.setLoss_pc(ScheduleCalculator.calcCJLC2(list, "配车"));  
619 - //保养损失公里  
620 - lossMileage.setLoss_by(ScheduleCalculator.calcCJLC2(list, "保养"));  
621 - //气候损失公里  
622 - lossMileage.setLoss_qh(ScheduleCalculator.calcCJLC2(list, "气候"));  
623 - //援外损失公里  
624 - lossMileage.setLoss_yw(ScheduleCalculator.calcCJLC2(list, "援外"));  
625 - //抽减损失公里  
626 - lossMileage.setLoss_cj(ScheduleCalculator.calcCJLC2(list, "抽减"));  
627 -  
628 - //实际班次  
629 - lossMileage.setAct_num(ScheduleCalculator.countSJJHBC(list));  
630 - //早班班次  
631 - lossMileage.setEarly_num(ScheduleCalculator.countSJJHBC(ScheduleCalculator.earlyArray(list)));  
632 - //晚班班次  
633 - lossMileage.setLate_num(ScheduleCalculator.countSJJHBC(ScheduleCalculator.lastArray(list)));  
634 - //另加班次  
635 - lossMileage.setL_act_num(ScheduleCalculator.countZJBC(list));  
636 - //早班另加班次  
637 - lossMileage.setL_early_num(ScheduleCalculator.countZJBC(ScheduleCalculator.earlyArray(list)));  
638 - //晚班另加班次  
639 - lossMileage.setL_late_num(ScheduleCalculator.countZJBC(ScheduleCalculator.lastArray(list)));  
640 - //计划班次  
641 - lossMileage.setJ_act_num(ScheduleCalculator.countJHBC(list));  
642 - //早班计划班次  
643 - lossMileage.setJ_early_num(ScheduleCalculator.countJHBC(ScheduleCalculator.earlyArray(list)));  
644 - //晚班计划班次  
645 - lossMileage.setJ_late_num(ScheduleCalculator.countJHBC(ScheduleCalculator.lastArray(list)));  
646 - //放站班次  
647 - lossMileage.setF_act_bc(ScheduleCalculator.countEmpty(list));  
648 - //早班放站班次  
649 - lossMileage.setF_early_bc(ScheduleCalculator.countEmpty(ScheduleCalculator.earlyArray(list)));  
650 - //晚班放站班次  
651 - lossMileage.setF_late_bc(ScheduleCalculator.countEmpty(ScheduleCalculator.lastArray(list)));  
652 - //调头班次  
653 - lossMileage.setDt_act_bc(0);  
654 - //早班调头班次  
655 - lossMileage.setDt_early_bc(0);  
656 - //晚班调头班次  
657 - lossMileage.setDt_late_bc(0);  
658 - //大间隔班次  
659 - lossMileage.setD_act_num(ScheduleCalculator.countSpaceLg(list));  
660 - //早班大间隔班次  
661 - lossMileage.setD_early_num(ScheduleCalculator.countSpaceLg(ScheduleCalculator.earlyArray(list)));  
662 - //晚班大间隔班次  
663 - lossMileage.setD_late_num(ScheduleCalculator.countSpaceLg(ScheduleCalculator.lastArray(list)));  
664 - //最大间隔时间  
665 - lossMileage.setD_act_max(ScheduleCalculator.calcMaxSpace(list));  
666 - //故障分  
667 - lossMileage.setLoss_gzf(0);  
668 - //故障次数  
669 - lossMileage.setLoss_gzcs(0);  
670 -  
671 -  
672 - rs[i] = lossMileage;  
673 - }  
674 - return rs;  
675 - }  
676 -  
677 - private static double countOilExpend(List<OilInfo> oilArray) {  
678 - double sum = 0;  
679 - for (OilInfo oilInfo : oilArray) {  
680 - sum = Arith.add(sum, oilInfo.getYh());  
681 - }  
682 - return sum;  
683 - }  
684 -  
685 - private static double sumAddOil(List<OilInfo> oilArray) {  
686 - double sum = 0;  
687 - for (OilInfo oilInfo : oilArray) {  
688 - sum = Arith.add(sum, oilInfo.getJzl());  
689 - }  
690 - return sum;  
691 - }  
692 -  
693 - private static double countOilExpend(List<OilInfo> oilArray, String jGh) {  
694 - double sum = 0;  
695 - for (OilInfo oilInfo : oilArray) {  
696 - if (oilInfo.getJsy().equals(jGh))  
697 - sum = Arith.add(sum, oilInfo.getYh());  
698 - }  
699 - return sum;  
700 - }  
701 -  
702 - public static <T> List<T> likeGet(Map<String, T> map, String key) {  
703 - Set<String> ks = map.keySet();  
704 - List<T> list = new ArrayList<>();  
705 -  
706 - if (StringUtils.isEmpty(key))  
707 - return list;  
708 -  
709 - for (String k : ks) {  
710 - if (k.indexOf(key) != -1) {  
711 - list.add(map.get(k));  
712 - }  
713 - }  
714 - return list;  
715 - }  
716 -  
717 - /**  
718 - * 将数据转换成南汇工资系统需要的驾驶员考勤数据  
719 - *  
720 - * @param plans  
721 - * @param reals  
722 - * @param types  
723 - * @return  
724 - */  
725 - public static Jsy_attendance[] to_jsyAttendanceNH(List<SchedulePlanInfo> plans, List<ScheduleRealInfo> reals, Set<String> jsySet, Map<String, String> types, String rq) {  
726 - //List<String> ghArray = new ArrayList<>(types.keySet());  
727 - Jsy_attendance[] rs = new Jsy_attendance[jsySet.size()];  
728 -  
729 - Jsy_attendance attendance;  
730 - SchedulePlanInfo plan;  
731 - ScheduleRealInfo real;  
732 - //String jGh;  
733 -  
734 - int i = 0;  
735 - for(String jGh : jsySet){  
736 - attendance = new Jsy_attendance();  
737 - attendance.setRq(rq);  
738 - //计划  
739 - plan = searchByJsy(plans, jGh);  
740 - //实际  
741 - real = searchRealByJsy(reals, jGh);  
742 - //考勤  
743 - attendance.setStatus((plan==null?"0":"1") + "," + (real==null?"0":"1"));  
744 - //班型  
745 - attendance.setPlanType(types.get(jGh)==null?"1":types.get(jGh));  
746 - //驾驶员工号  
747 - attendance.setjGh(jGh);  
748 - //早晚班类型  
749 - attendance.calcZybType(reals);  
750 -  
751 - //实际计划  
752 - if(real != null){  
753 - attendance.setXlBm(real.getXlBm());  
754 - attendance.setXlName(real.getXlName());  
755 - attendance.setjName(real.getjName());  
756 - attendance.setsGh(real.getsGh());  
757 - attendance.setsName(real.getsName());  
758 - attendance.setCompany(real.getGsBm());  
759 - attendance.setFgsCompany(real.getFgsBm());  
760 - attendance.addLpName(real.getLpName());  
761 - attendance.addCl(real.getClZbh());  
762 - }  
763 - //计划  
764 - else if(plan != null){  
765 - attendance.setXlBm(plan.getXlBm());  
766 - attendance.setXlName(plan.getXlName());  
767 - attendance.setjName(plan.getjName());  
768 - attendance.setsGh(plan.getsGh());  
769 - attendance.setsName(plan.getsName());  
770 - attendance.setCompany(plan.getGsBm());  
771 - attendance.setFgsCompany(plan.getFgsBm());  
772 - attendance.addLpName(plan.getLpName());  
773 - attendance.addCl(plan.getClZbh());  
774 - }  
775 -  
776 - rs[i] = attendance;  
777 - i++;  
778 - }  
779 - return rs;  
780 - }  
781 -  
782 - public static SchedulePlanInfo searchByJsy(List<SchedulePlanInfo> plans, String jGh){  
783 -  
784 - for(SchedulePlanInfo plan : plans){  
785 - if(plan.getjGh().equals(jGh))  
786 - return plan;  
787 - }  
788 - return null;  
789 - }  
790 -  
791 - public static ScheduleRealInfo searchRealByJsy(List<ScheduleRealInfo> reals, String jGh){  
792 -  
793 - for(ScheduleRealInfo sch : reals){  
794 - if(sch.getjGh().equals(jGh))  
795 - return sch;  
796 - }  
797 - return null;  
798 - }  
799 -  
800 - /**  
801 - * 将排班和油耗转换成综合查询需要的数据  
802 - * @param schList  
803 - * @param oilList  
804 - * @return  
805 - */  
806 - public static String[] to_getLSLC_PB(String fdate, List<ScheduleRealInfo> schList, List<OilInfo> oilList, List<SchedulePlanInfo> planList) {  
807 - String[] array = new String[0];  
808 - try {  
809 - //按日期分组数据  
810 - ArrayListMultimap<String, ScheduleRealInfo> schMultimap =  
811 - new ConvertUtil().groupMultiList(schList, "_", ScheduleRealInfo.class.getDeclaredField("scheduleDateStr"));  
812 -  
813 - ArrayListMultimap<String, OilInfo> oilMultimap =  
814 - new ConvertUtil().groupMultiList(oilList, "_", OilInfo.class.getDeclaredField("rq"));  
815 -  
816 - ArrayListMultimap<String, SchedulePlanInfo> planMultimap =  
817 - new ConvertUtil().groupMultiList(planList, "_", SchedulePlanInfo.class.getDeclaredField("scheduleDate"));  
818 -  
819 -  
820 - //月份有多少天  
821 - int year = Integer.parseInt(fdate.substring(0, 4));  
822 - int month = Integer.parseInt(fdate.substring(5, 7));  
823 - Calendar cal = Calendar.getInstance();  
824 - cal.set(Calendar.YEAR,year);  
825 - cal.set(Calendar.MONTH,month - 1);//从0开始  
826 - int maxDate = cal.getActualMaximum(Calendar.DATE);  
827 -  
828 - List<LsLcPb> rs = new ArrayList<>();  
829 - LsLcPb lcPb;  
830 - List<ScheduleRealInfo> pbList;  
831 - List<SchedulePlanInfo> jhList;  
832 - List<OilInfo> yhList;  
833 - String rq,rq2;  
834 - SchedulePlanInfo outPlan;  
835 - int currentDay = cal.get(Calendar.DAY_OF_MONTH);  
836 - for(int i = 1; i <= maxDate; i++){  
837 - lcPb = new LsLcPb();  
838 - lcPb.setDay(i);  
839 -  
840 - rq = fdate + "-" + (i < 10?"0":"") + i;  
841 - rq2 = rq.replaceAll("-", "");  
842 -  
843 - pbList = schMultimap.get(rq);  
844 - yhList = oilMultimap.get(rq2);  
845 - jhList = planMultimap.get(rq2);  
846 -  
847 - if(i < currentDay){  
848 - if(pbList == null || pbList.size() == 0)  
849 - lcPb.setType(4);//休息  
850 - else{  
851 - lcPb.setType(1);  
852 - lcPb.setLckq("");  
853 - if(yhList != null && yhList.size() > 0){  
854 - lcPb.setLcyh(yhList.get(0).getYh());  
855 - }  
856 - lcPb.setLcyylc(ScheduleCalculator.calcYYLC(pbList));  
857 - lcPb.setLcfyylc(ScheduleCalculator.calcKSLC(pbList));  
858 - }  
859 - }  
860 - else if (i == currentDay)  
861 - lcPb.setType(3);//今天  
862 - else {  
863 - if(jhList == null || jhList.size() == 0)  
864 - lcPb.setType(4);//休息  
865 - else{  
866 - lcPb.setType(2);  
867 - outPlan = getOutSch(jhList);  
868 - if(null != outPlan){  
869 - lcPb.setPbxl(outPlan.getXlName());  
870 - lcPb.setPblp(outPlan.getLpName());  
871 - lcPb.setPbbd(minusMinute(outPlan.getFcsj(), 15));  
872 - lcPb.setPbyc(outPlan.getClZbh());  
873 - }  
874 - else  
875 - lcPb.setType(4);//休息  
876 - }  
877 - }  
878 -  
879 - rs.add(lcPb);  
880 - }  
881 -  
882 - //拼接成字符串数组  
883 - array = new String[rs.size()];  
884 - StringBuilder sb;  
885 - for(int i = 0,len=rs.size(); i < len; i++){  
886 - lcPb = rs.get(i);  
887 - sb = new StringBuilder();  
888 -  
889 - sb.append(lcPb.getType());  
890 -  
891 - switch (lcPb.getType()){  
892 - case 1:  
893 - sb.append("," + lcPb.getLckq());  
894 - sb.append("," + lcPb.getLcyh());  
895 - sb.append("," + lcPb.getLcyylc());  
896 - sb.append("," + lcPb.getLcfyylc());  
897 - break;  
898 - case 2:  
899 - sb.append("," + lcPb.getPbxl());  
900 - sb.append("," + lcPb.getPblp());  
901 - sb.append("," + lcPb.getPbbd());  
902 - sb.append("," + lcPb.getPbyc());  
903 - break;  
904 - }  
905 - sb.append("," + lcPb.getDay());  
906 - array[i] = sb.toString();  
907 - }  
908 - } catch (NoSuchFieldException e) {  
909 - logger.error("", e);  
910 - }  
911 - return array;  
912 - }  
913 -  
914 - /**  
915 - * 将排班和油耗转换成综合查询需要的数据  
916 - * @param schList  
917 - * @param oilList  
918 - * @return  
919 - */  
920 - public static List<LsLcPb> to_getLSLC_PB_list(String fdate, List<ScheduleRealInfo> schList, List<OilInfo> oilList, List<SchedulePlanInfo> planList) {  
921 - List<LsLcPb> rs = new ArrayList<>();  
922 - try {  
923 - //按日期分组数据  
924 - ArrayListMultimap<String, ScheduleRealInfo> schMultimap =  
925 - new ConvertUtil().groupMultiList(schList, "_", ScheduleRealInfo.class.getDeclaredField("scheduleDateStr"));  
926 -  
927 - ArrayListMultimap<String, OilInfo> oilMultimap =  
928 - new ConvertUtil().groupMultiList(oilList, "_", OilInfo.class.getDeclaredField("rq"));  
929 -  
930 - ArrayListMultimap<String, SchedulePlanInfo> planMultimap =  
931 - new ConvertUtil().groupMultiList(planList, "_", SchedulePlanInfo.class.getDeclaredField("scheduleDate"));  
932 -  
933 -  
934 - //月份有多少天  
935 - int year = Integer.parseInt(fdate.substring(0, 4));  
936 - int month = Integer.parseInt(fdate.substring(5, 7));  
937 - Calendar cal = Calendar.getInstance();  
938 - cal.set(Calendar.YEAR,year);  
939 - cal.set(Calendar.MONTH,month - 1);//从0开始  
940 - int maxDate = cal.getActualMaximum(Calendar.DATE);  
941 -  
942 - LsLcPb lcPb;  
943 - List<ScheduleRealInfo> pbList;  
944 - List<SchedulePlanInfo> jhList;  
945 - List<OilInfo> yhList;  
946 - String rq,rq2;  
947 - SchedulePlanInfo outPlan;  
948 - int currentDay = cal.get(Calendar.DAY_OF_MONTH);  
949 - for(int i = 1; i <= maxDate; i++){  
950 - lcPb = new LsLcPb();  
951 - lcPb.setDay(i);  
952 -  
953 - rq = fdate + "-" + (i < 10?"0":"") + i;  
954 - rq2 = rq.replaceAll("-", "");  
955 -  
956 - pbList = schMultimap.get(rq);  
957 - yhList = oilMultimap.get(rq2);  
958 - jhList = planMultimap.get(rq2);  
959 -  
960 - if(i < currentDay){  
961 - if(pbList == null || pbList.size() == 0)  
962 - lcPb.setType(4);//休息  
963 - else{  
964 - lcPb.setType(1);  
965 - lcPb.setLckq("");  
966 - if(yhList != null && yhList.size() > 0){  
967 - lcPb.setLcyh(yhList.get(0).getYh());  
968 - }  
969 - lcPb.setLcyylc(ScheduleCalculator.calcYYLC(pbList));  
970 - lcPb.setLcfyylc(ScheduleCalculator.calcKSLC(pbList));  
971 - }  
972 - }  
973 - else if (i == currentDay)  
974 - lcPb.setType(3);//今天  
975 - else {  
976 - if(jhList == null || jhList.size() == 0)  
977 - lcPb.setType(4);//休息  
978 - else{  
979 - lcPb.setType(2);  
980 - outPlan = getOutSch(jhList);  
981 - if(null != outPlan){  
982 - lcPb.setPbxl(outPlan.getXlName());  
983 - lcPb.setPblp(outPlan.getLpName());  
984 - lcPb.setPbbd(minusMinute(outPlan.getFcsj(), 15));  
985 - lcPb.setPbyc(outPlan.getClZbh());  
986 - }  
987 - else  
988 - lcPb.setType(4);//休息  
989 - }  
990 - }  
991 -  
992 - rs.add(lcPb);  
993 - }  
994 - } catch (NoSuchFieldException e) {  
995 - logger.error("", e);  
996 - }  
997 - return rs;  
998 - }  
999 -  
1000 - /**  
1001 - * HH:mm 格式时间减分钟  
1002 - * @param dfsj  
1003 - * @param i  
1004 - * @return  
1005 - */  
1006 - private static String minusMinute(String hhmm, int i) {  
1007 - try {  
1008 - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");  
1009 - long t = sdf.parse(hhmm).getTime();  
1010 -  
1011 - return sdf.format(new Date(t - (i * 60 * 1000)));  
1012 - } catch (ParseException e) {  
1013 - logger.error("", e);  
1014 - }  
1015 - return null;  
1016 - }  
1017 -  
1018 - private static SchedulePlanInfo getOutSch(List<SchedulePlanInfo> pbList) {  
1019 -  
1020 - for(SchedulePlanInfo sch : pbList){  
1021 - if(sch.getBcType().equals("out"))  
1022 - return sch;  
1023 - }  
1024 - return null;  
1025 - }  
1026 -  
1027 - public static class OilComp implements Comparator<OilInfo> {  
1028 -  
1029 - @Override  
1030 - public int compare(OilInfo o1, OilInfo o2) {  
1031 - return o1.getJcsx() - o2.getJcsx();  
1032 - }  
1033 - }  
1034 -  
1035 -  
1036 -} 1 +package com.bsth.server_ws.util;
  2 +
  3 +import java.lang.reflect.Field;
  4 +import java.text.ParseException;
  5 +import java.text.SimpleDateFormat;
  6 +import java.util.ArrayList;
  7 +import java.util.Calendar;
  8 +import java.util.Collections;
  9 +import java.util.Comparator;
  10 +import java.util.Date;
  11 +import java.util.HashMap;
  12 +import java.util.List;
  13 +import java.util.Map;
  14 +import java.util.Set;
  15 +
  16 +import org.apache.commons.lang3.StringUtils;
  17 +import org.slf4j.Logger;
  18 +import org.slf4j.LoggerFactory;
  19 +
  20 +import com.bsth.entity.DutyEmployee;
  21 +import com.bsth.entity.OilInfo;
  22 +import com.bsth.entity.SchedulePlanInfo;
  23 +import com.bsth.entity.ScheduleRealInfo;
  24 +import com.bsth.server_ws.attendance.entity.Jsy_attendance;
  25 +import com.bsth.server_ws.park_station.dto.LsLcPb;
  26 +import com.bsth.server_ws.waybill.entity.NH_waybill;
  27 +import com.bsth.server_ws.waybill.entity.NH_waybillItem;
  28 +import com.bsth.server_ws.waybill.entity.SN_lossMileage;
  29 +import com.bsth.server_ws.waybill.entity.SN_waybill;
  30 +import com.bsth.server_ws.waybill.entity.SN_waybillItem;
  31 +import com.bsth.util.Arith;
  32 +import com.bsth.util.ConvertUtil;
  33 +import com.google.common.collect.ArrayListMultimap;
  34 +
  35 +/**
  36 + * Created by panzhao on 2017/3/15.
  37 + */
  38 +public class WSDataConver {
  39 +
  40 + /**
  41 + * 格式编码和名称映射,与老系统保持一致
  42 + */
  43 + private static Map<String, String> gsMap;
  44 +
  45 + static Logger logger = LoggerFactory.getLogger(WSDataConver.class);
  46 +
  47 + static {
  48 + gsMap = new HashMap<>();
  49 + gsMap.put("99", "青浦公交");
  50 + gsMap.put("99_100", "青浦公交");
  51 + }
  52 +
  53 + /**
  54 + * 将班次list 转换成 getCurrentDayPlan 函数需要的格式
  55 + *
  56 + * @param list
  57 + * @return [0:日期,1:线路名称,2:路牌名称,3:车辆自编号,4:,5:,6:起点时间,7:终点时间,8:起点站名称,9:终点站名称,10:班次类型]
  58 + */
  59 + public static String[] to_getCurrentDayPlan(List<ScheduleRealInfo> list) {
  60 + if (list == null || list.size() == 0)
  61 + return new String[0];
  62 +
  63 + Map<String, String> bcTypeMap = new HashMap<>();
  64 + bcTypeMap.put("out", "出场");
  65 + bcTypeMap.put("in", "进场");
  66 +
  67 + String[] array = new String[list.size()];
  68 + StringBuilder sb;
  69 + ScheduleRealInfo sch;
  70 + int len = list.size();
  71 + for(int i = 0; i < len; i ++){
  72 + sb = new StringBuilder();
  73 + sch = list.get(i);
  74 + sb.append(sch.getScheduleDateStr() + ",");
  75 + sb.append(sch.getXlName() + ",");
  76 + sb.append(sch.getLpName() + ",");
  77 + sb.append(sch.getClZbh() + ",");
  78 + sb.append(",");
  79 + sb.append(",");
  80 + sb.append(sch.getDfsj() + ",");
  81 + sb.append(sch.getZdsj() + ",");
  82 + sb.append(sch.getQdzName() + ",");
  83 + sb.append(sch.getZdzName() + ",");
  84 + sb.append(bcTypeMap.containsKey(sch.getBcType())?bcTypeMap.get(sch.getBcType()):"");
  85 +
  86 + array[i] = sb.toString();
  87 + }
  88 + return array;
  89 + }
  90 +
  91 + /**
  92 + * 将班次list 转换成 returnCCInfo 和 returnJCInfo 函数需要的格式
  93 + *
  94 + * @param list
  95 + * @return [0: 日期, 1: 线路编码, 2: 线路名称, 3: 公司名称, 4: 分公司名称, 5: 路牌, 6: 起点站, 7: 起点计划时间,
  96 + * 8: 起点实际时间, 9: 终点站, 10: 终点计划时间, 11: 终点实际时间, 12: 计划里程, 13: 实际里程,
  97 + * 14: 驾驶员, 15: 售票员, 16: 车辆内部编码, 17: 状态(1 为出场。2为进场), 18: 驾驶员名称, 19: 进场顺序号]
  98 + */
  99 + public static String[] to_returnJCCInfo(List<ScheduleRealInfo> list) {
  100 + if(list == null)
  101 + return new String[0];
  102 +
  103 + int size = list.size();
  104 + String[] array = new String[size];
  105 +
  106 + ScheduleRealInfo sch;
  107 + StringBuffer sb;
  108 + for (int i = 0; i < size; i++) {
  109 + sb = new StringBuffer(",");
  110 +
  111 + sch = list.get(i);
  112 + sb.append(sch.getScheduleDateStr() + ",");
  113 + sb.append(sch.getXlBm() + ",");
  114 + sb.append(sch.getXlName() + ",");
  115 + sb.append(gsMap.get(sch.getGsBm()) + ",");
  116 + sb.append(gsMap.get(sch.getGsBm() + "_" + sch.getFgsBm()) + ",");
  117 + sb.append(sch.getLpName() + ",");
  118 + sb.append(sch.getQdzCode() + ",");
  119 + sb.append(sch.getDfsj() + ",");
  120 + sb.append(nvlGetVal(sch.getFcsjActual()) + ",");
  121 + sb.append(sch.getZdzCode() + ",");
  122 + sb.append(sch.getZdsj() + ",");
  123 + sb.append(nvlGetVal(sch.getZdsjActual()) + ",");
  124 + sb.append(nvlGetVal(sch.getJhlc()) + ",");
  125 + sb.append(nvlGetVal(sch.getJhlc()) + ",");
  126 + sb.append(sch.getjGh() + ",");
  127 + sb.append(nvlGetVal(sch.getsGh()) + ",");
  128 + sb.append(sch.getClZbh() + ",");
  129 + sb.append((sch.getBcType().equals("out") ? 1 : 2) + ",");
  130 + sb.append(sch.getjName() + ",");
  131 + //用ID替代老系统的出场顺序号
  132 + sb.append(sch.getId() + ",");
  133 +
  134 + array[i] = sb.substring(1).toString();
  135 + }
  136 + return array;
  137 + }
  138 +
  139 + public static String nvlGetVal(Object val) {
  140 + return val == null ? "" : val.toString();
  141 + }
  142 +
  143 + /**
  144 + * 将实际排班和油耗数据 转换成南汇路单需要的数据格式
  145 + *
  146 + * @param listMap
  147 + * @param oilInfoMap
  148 + * @return
  149 + */
  150 + public static NH_waybill[] to_waybill_NH(ArrayListMultimap<String, ScheduleRealInfo> listMap, Map<String, OilInfo> oilInfoMap, List<DutyEmployee> des) throws NoSuchFieldException {
  151 + List<String> nbbmArray = new ArrayList<>(listMap.keySet());
  152 +
  153 + NH_waybill[] rs = new NH_waybill[nbbmArray.size()];
  154 + Field jGhField = ScheduleRealInfo.class.getDeclaredField("jGh");
  155 + //Field lpField = ScheduleRealInfo.class.getDeclaredField("lpName");
  156 +
  157 + List<ScheduleRealInfo> list;
  158 + ArrayListMultimap<String, ScheduleRealInfo> jGhListMap;
  159 + ScheduleRealInfo sch;
  160 + NH_waybill nh_waybill;
  161 + NH_waybillItem nh_waybillItem;
  162 + OilInfo oilInfo;
  163 + for (int i = 0; i < nbbmArray.size(); i++) {
  164 + list = listMap.get(nbbmArray.get(i));
  165 + if (list.size() == 0)
  166 + continue;
  167 + //班次信息
  168 + nh_waybill = new NH_waybill();
  169 + sch = list.get(0);
  170 + //日期
  171 + nh_waybill.setM_strYYRQ(sch.getScheduleDateStr());
  172 + //车辆自编号
  173 + nh_waybill.setM_strNBBM(sch.getClZbh());
  174 + //线路编码
  175 + nh_waybill.setM_strXLBM(sch.getXlBm());
  176 + nh_waybill.setM_SubInfos(new ArrayList<NH_waybillItem>());
  177 +
  178 + //按 驾驶员 分组班次,构造路单子项
  179 + jGhListMap = new ConvertUtil<ScheduleRealInfo>().groupMultiList(list, "_", jGhField);
  180 + for (String jGh : jGhListMap.keySet()) {
  181 + list = jGhListMap.get(jGh);
  182 + nh_waybillItem = new NH_waybillItem();
  183 + //计划里程
  184 + nh_waybillItem.setM_dblJHLC(ScheduleCalculator.calcJHLC(list));
  185 + //实际计划公里
  186 + nh_waybillItem.setM_dblSJJHLC(ScheduleCalculator.calcSJLC(list));
  187 + //实际出场里程
  188 + nh_waybillItem.setM_dblCCLC(ScheduleCalculator.calcCCLC(list));
  189 + //实际进场里程
  190 + nh_waybillItem.setM_dblJCLC(ScheduleCalculator.calcJCLC(list));
  191 + //营业公里
  192 + nh_waybillItem.setM_dblYYLC(ScheduleCalculator.calcYYLC(list));
  193 + //空驶公里
  194 + nh_waybillItem.setM_dblKSLC(ScheduleCalculator.calcKSLC(list));
  195 + //抽减公里
  196 + nh_waybillItem.setM_dblCJLC(ScheduleCalculator.calcCJLC(list));
  197 + //烂班公里
  198 + nh_waybillItem.setM_dblLBLC(ScheduleCalculator.calcLBLC(list));
  199 + //增加公里
  200 + nh_waybillItem.setM_dblZJLC(ScheduleCalculator.calcZJLC(list));
  201 + //总公里
  202 + nh_waybillItem.setM_dblZLC(ScheduleCalculator.calcZLC(list));
  203 + //烂班公里原因
  204 + nh_waybillItem.setM_strLBYY(ScheduleCalculator.joinLBYY(list));
  205 + //抽减公里原因
  206 + nh_waybillItem.setM_strCJYY(ScheduleCalculator.joinCJYY(list));
  207 + //计划班次
  208 + nh_waybillItem.setM_intJHBC(ScheduleCalculator.countJHBC(list));
  209 + //实际计划班次
  210 + nh_waybillItem.setM_intSJJHBC(ScheduleCalculator.countSJJHBC(list));
  211 + //实际班次 ————> 暂时和实际计划班次相同
  212 + nh_waybillItem.setM_intSJBC(ScheduleCalculator.countSJJHBC(list));
  213 + //增加班次
  214 + nh_waybillItem.setM_intZJBC(ScheduleCalculator.countZJBC(list));
  215 + //抽减班次
  216 + nh_waybillItem.setM_intCJBC(ScheduleCalculator.countCJBC(list));
  217 + //烂班工时
  218 + nh_waybillItem.setM_dblLBGS(ScheduleCalculator.calcLBGS(list));
  219 + //路牌
  220 + nh_waybillItem.setM_strLP(list.get(0).getLpName());
  221 + //驾驶员工号
  222 + nh_waybillItem.setM_strJSY(list.get(0).getjGh());
  223 + //售票员工号
  224 + nh_waybillItem.setM_strSPY("");
  225 + for (ScheduleRealInfo sri : list) {
  226 + if (StringUtils.isNotEmpty(sri.getsGh())) {
  227 + nh_waybillItem.setM_strSPY(sri.getsGh());
  228 + break;
  229 + }
  230 + }
  231 + //驾驶员考勤
  232 + nh_waybillItem.setM_strJSYKQ("");
  233 + //售票员考勤
  234 + nh_waybillItem.setM_strSPYKQ("");
  235 + //当班调度员
  236 + nh_waybillItem.setM_strDDY(ScheduleCalculator.calcDDY(list, des));
  237 + //营运状态
  238 + nh_waybillItem.setM_strYYZT("");
  239 + //备注
  240 + nh_waybillItem.setM_strBZ("");
  241 +
  242 + oilInfo = oilInfoMap.get(list.get(0).getClZbh() + "_" + list.get(0).getjGh());
  243 + if (oilInfo != null) {
  244 + //出场存油
  245 + nh_waybillItem.setM_dblCCCY(oilInfo.getCzyl());
  246 + //进场存油
  247 + nh_waybillItem.setM_dblJCCY(oilInfo.getJzyl());
  248 + //加注量1
  249 + nh_waybillItem.setM_dblJZL1(oilInfo.getJzl());
  250 + //加注量2
  251 + nh_waybillItem.setM_dblJZL2(0.0);
  252 + //尿素
  253 + nh_waybillItem.setM_dblNS(oilInfo.getNs());
  254 + //消耗量
  255 + nh_waybillItem.setM_dblYH(oilInfo.getYh());
  256 + //加油地点1
  257 + nh_waybillItem.setM_strJYD1("");
  258 + //加油地点2
  259 + nh_waybillItem.setM_strJYD2("");
  260 + //加油工工号1
  261 + nh_waybillItem.setM_strJYG1("");
  262 + //加油工工号1
  263 + nh_waybillItem.setM_strJYG2("");
  264 + //油耗类型1
  265 + nh_waybillItem.setM_strYHLX1(oilInfo.getRylx());
  266 + //油耗类型2
  267 + nh_waybillItem.setM_strYHLX1("");
  268 + }
  269 +
  270 + nh_waybill.getM_SubInfos().add(nh_waybillItem);
  271 + }
  272 +
  273 + rs[i] = nh_waybill;
  274 + }
  275 + return rs;
  276 + }
  277 +
  278 + /**
  279 + * 将实际排班和油耗数据 转换成上南路单需要的数据格式
  280 + *
  281 + * @param listMap
  282 + * @param oilInfoMap
  283 + * @return
  284 + */
  285 + public static SN_waybill[] to_waybill_SN(ArrayListMultimap<String, ScheduleRealInfo> listMap, Map<String, OilInfo> oilInfoMap) throws NoSuchFieldException {
  286 +
  287 + List<String> nbbmArray = new ArrayList<>(listMap.keySet());
  288 + SN_waybill[] rs = new SN_waybill[nbbmArray.size()];
  289 + Field jGhField = ScheduleRealInfo.class.getDeclaredField("jGh");
  290 +
  291 + List<ScheduleRealInfo> list;
  292 + ArrayListMultimap<String, ScheduleRealInfo> jGhListMap;
  293 + ScheduleRealInfo sch;
  294 + SN_waybill sn_waybill;
  295 + SN_waybillItem sn_waybillItem;
  296 +
  297 + OilComp oilComp = new OilComp();
  298 + List<OilInfo> oilArray;
  299 + for (int i = 0; i < nbbmArray.size(); i++) {
  300 + list = listMap.get(nbbmArray.get(i));
  301 + if (list.size() == 0)
  302 + continue;
  303 +
  304 + sch = list.get(0);
  305 + sn_waybill = new SN_waybill();
  306 + sn_waybill.setLine_no(sch.getXlBm());
  307 + sn_waybill.setWork_date(sch.getScheduleDateStr());
  308 + sn_waybill.setComp_id(sch.getFgsBm());
  309 + sn_waybill.setGuidecard(sch.getLpName());
  310 + sn_waybill.setCar_id(sch.getClZbh());
  311 + //实际班次
  312 + sn_waybill.setAct_num(ScheduleCalculator.countSJJHBC(list));
  313 + //晚班实际班次
  314 + sn_waybill.setL_act_num(ScheduleCalculator.countSJJHBC(ScheduleCalculator.lastArray(list)));
  315 + //营业里程
  316 + sn_waybill.setWork_way(ScheduleCalculator.calcYYLC(list));
  317 + //空驶里程
  318 + sn_waybill.setLeisure_way(ScheduleCalculator.calcKSLC(list));
  319 + //总里程
  320 + sn_waybill.setCount_way(ScheduleCalculator.calcZLC(list));
  321 + //路单类型(0普通,1包车)
  322 + sn_waybill.setLd_type("0");
  323 + //油料类型(2、柴油 3、天然气 4、汽油柴油 5、液化气 6、液化气汽油 7、液化气柴油 8、天然气汽油 9、电)
  324 + //暂时全部柴油车
  325 + sn_waybill.setOil_type("2");
  326 +
  327 + //根据车辆获取油量信息
  328 + oilArray = likeGet(oilInfoMap, sch.getClZbh() + "_");
  329 + if (oilArray.size() > 0) {
  330 + Collections.sort(oilArray, oilComp);
  331 + //出厂存油
  332 + sn_waybill.setOut_oil(oilArray.get(0).getCzyl());
  333 + //油料加注
  334 + sn_waybill.setAdd_oil(sumAddOil(oilArray));
  335 + //进场存油
  336 + sn_waybill.setEnd_oil(oilArray.get(oilArray.size() - 1).getJzyl());
  337 + //油料消耗
  338 + sn_waybill.setExpend_oil(countOilExpend(oilArray));
  339 + //非营业用油类型 非营业用油类型(1.常规车2.包车3.加开包车)
  340 + sn_waybill.setNowork_oil_type("1");
  341 + //非营业用油
  342 + sn_waybill.setNowork_oil(0);
  343 + //非营业用油油耗量(保养用油)
  344 + sn_waybill.setNowork_oil1(0);
  345 + //非营业用油油耗量(票务用油)
  346 + sn_waybill.setNowork_oil2(0);
  347 + //非营业用油油耗量(其他用油)
  348 + sn_waybill.setNowork_oil3(0);
  349 + //营业用油
  350 + sn_waybill.setWork_oil(countOilExpend(oilArray));
  351 + //其他营业用油
  352 + sn_waybill.setQt_work_oil(0);
  353 + }
  354 + sn_waybill.setDriver_detail(new ArrayList<SN_waybillItem>());
  355 +
  356 + //按 驾驶员 分组班次,构造路单子项
  357 + jGhListMap = new ConvertUtil<ScheduleRealInfo>().groupMultiList(list, "_", jGhField);
  358 + for (String jGh : jGhListMap.keySet()) {
  359 + list = jGhListMap.get(jGh);
  360 + sn_waybillItem = new SN_waybillItem();
  361 + sch = list.get(0);
  362 + //司机编号
  363 + sn_waybillItem.setDriver_no(sch.getjGh());
  364 + //司机名称
  365 + sn_waybillItem.setDriver_name(sch.getjName());
  366 + //售票员编号
  367 + sn_waybillItem.setBusman_no(sch.getsGh());
  368 + //售票员名称
  369 + sn_waybillItem.setBusman_name(sch.getsName());
  370 + //行驶里程
  371 + sn_waybillItem.setDriver_way(ScheduleCalculator.calcYYLC(list));
  372 + //空驶公里
  373 + sn_waybillItem.setKs_way(ScheduleCalculator.calcKSLC(list));
  374 + //柴油加注量、电加注量同一字段
  375 + sn_waybillItem.setDo_oil_2(countOilExpend(oilArray, sch.getjGh()));
  376 +
  377 + sn_waybill.getDriver_detail().add(sn_waybillItem);
  378 + }
  379 +
  380 + rs[i] = sn_waybill;
  381 + }
  382 + return rs;
  383 + }
  384 +
  385 + /**
  386 + * 将实际排班转换成上南需要损失公里数据
  387 + *
  388 + * @param listMap
  389 + * @return
  390 + */
  391 + public static SN_lossMileage[] to_lossMileage_SN(ArrayListMultimap<String, ScheduleRealInfo> listMap) throws NoSuchFieldException {
  392 + List<String> lineArray = new ArrayList<>(listMap.keySet());
  393 + SN_lossMileage[] rs = new SN_lossMileage[lineArray.size()];
  394 +
  395 + List<ScheduleRealInfo> list;
  396 + ScheduleRealInfo sch;
  397 + for (int i = 0; i < lineArray.size(); i++) {
  398 + list = listMap.get(lineArray.get(i));
  399 +
  400 + sch = list.get(0);
  401 + SN_lossMileage lossMileage = new SN_lossMileage();
  402 + //线路编号
  403 + lossMileage.setLine_id(sch.getXlBm());
  404 + //营运日期
  405 + lossMileage.setWork_date(sch.getScheduleDateStr());
  406 + //分公司编号
  407 + lossMileage.setComp_id(sch.getFgsBm());
  408 + //少驶公里
  409 + lossMileage.setLoss_way(ScheduleCalculator.calcCJLC(list));
  410 + //实际公里
  411 + lossMileage.setAct_way(ScheduleCalculator.calcYYLC(list));
  412 + //计划公里
  413 + lossMileage.setJh_way(ScheduleCalculator.calcJHLC(list));
  414 +
  415 + //路阻损失公里
  416 + lossMileage.setLoss_lz(ScheduleCalculator.calcCJLC2(list, "路阻"));
  417 + //吊慢损失公里
  418 + lossMileage.setLoss_dm(ScheduleCalculator.calcCJLC2(list, "吊慢"));
  419 + //故障损失公里
  420 + lossMileage.setLoss_gz(ScheduleCalculator.calcCJLC2(list, "故障"));
  421 + //纠纷损失公里
  422 + lossMileage.setLoss_jf(ScheduleCalculator.calcCJLC2(list, "纠纷"));
  423 + //肇事损失公里
  424 + lossMileage.setLoss_zs(ScheduleCalculator.calcCJLC2(list, "肇事"));
  425 + //缺人损失公里
  426 + lossMileage.setLoss_qr(ScheduleCalculator.calcCJLC2(list, "缺人"));
  427 + //缺车损失公里
  428 + lossMileage.setLoss_qc(ScheduleCalculator.calcCJLC2(list, "缺车"));
  429 + //客稀损失公里
  430 + lossMileage.setLoss_kx(ScheduleCalculator.calcCJLC2(list, "客稀"));
  431 + //其他损失公里
  432 + lossMileage.setLoss_qt(ScheduleCalculator.calcCJLC2(list, "其他"));
  433 + //配车损失公里
  434 + lossMileage.setLoss_pc(ScheduleCalculator.calcCJLC2(list, "配车"));
  435 + //保养损失公里
  436 + lossMileage.setLoss_by(ScheduleCalculator.calcCJLC2(list, "保养"));
  437 + //气候损失公里
  438 + lossMileage.setLoss_qh(ScheduleCalculator.calcCJLC2(list, "气候"));
  439 + //援外损失公里
  440 + lossMileage.setLoss_yw(ScheduleCalculator.calcCJLC2(list, "援外"));
  441 + //抽减损失公里
  442 + lossMileage.setLoss_cj(ScheduleCalculator.calcCJLC2(list, "抽减"));
  443 +
  444 + //实际班次
  445 + lossMileage.setAct_num(ScheduleCalculator.countSJJHBC(list));
  446 + //早班班次
  447 + lossMileage.setEarly_num(ScheduleCalculator.countSJJHBC(ScheduleCalculator.earlyArray(list)));
  448 + //晚班班次
  449 + lossMileage.setLate_num(ScheduleCalculator.countSJJHBC(ScheduleCalculator.lastArray(list)));
  450 + //另加班次
  451 + lossMileage.setL_act_num(ScheduleCalculator.countZJBC(list));
  452 + //早班另加班次
  453 + lossMileage.setL_early_num(ScheduleCalculator.countZJBC(ScheduleCalculator.earlyArray(list)));
  454 + //晚班另加班次
  455 + lossMileage.setL_late_num(ScheduleCalculator.countZJBC(ScheduleCalculator.lastArray(list)));
  456 + //计划班次
  457 + lossMileage.setJ_act_num(ScheduleCalculator.countJHBC(list));
  458 + //早班计划班次
  459 + lossMileage.setJ_early_num(ScheduleCalculator.countJHBC(ScheduleCalculator.earlyArray(list)));
  460 + //晚班计划班次
  461 + lossMileage.setJ_late_num(ScheduleCalculator.countJHBC(ScheduleCalculator.lastArray(list)));
  462 + //放站班次
  463 + lossMileage.setF_act_bc(ScheduleCalculator.countEmpty(list));
  464 + //早班放站班次
  465 + lossMileage.setF_early_bc(ScheduleCalculator.countEmpty(ScheduleCalculator.earlyArray(list)));
  466 + //晚班放站班次
  467 + lossMileage.setF_late_bc(ScheduleCalculator.countEmpty(ScheduleCalculator.lastArray(list)));
  468 + //调头班次
  469 + lossMileage.setDt_act_bc(0);
  470 + //早班调头班次
  471 + lossMileage.setDt_early_bc(0);
  472 + //晚班调头班次
  473 + lossMileage.setDt_late_bc(0);
  474 + //大间隔班次
  475 + lossMileage.setD_act_num(ScheduleCalculator.countSpaceLg(list));
  476 + //早班大间隔班次
  477 + lossMileage.setD_early_num(ScheduleCalculator.countSpaceLg(ScheduleCalculator.earlyArray(list)));
  478 + //晚班大间隔班次
  479 + lossMileage.setD_late_num(ScheduleCalculator.countSpaceLg(ScheduleCalculator.lastArray(list)));
  480 + //最大间隔时间
  481 + lossMileage.setD_act_max(ScheduleCalculator.calcMaxSpace(list));
  482 + //故障分
  483 + lossMileage.setLoss_gzf(0);
  484 + //故障次数
  485 + lossMileage.setLoss_gzcs(0);
  486 +
  487 +
  488 + rs[i] = lossMileage;
  489 + }
  490 + return rs;
  491 + }
  492 +
  493 + private static double countOilExpend(List<OilInfo> oilArray) {
  494 + double sum = 0;
  495 + for (OilInfo oilInfo : oilArray) {
  496 + sum = Arith.add(sum, oilInfo.getYh());
  497 + }
  498 + return sum;
  499 + }
  500 +
  501 + private static double sumAddOil(List<OilInfo> oilArray) {
  502 + double sum = 0;
  503 + for (OilInfo oilInfo : oilArray) {
  504 + sum = Arith.add(sum, oilInfo.getJzl());
  505 + }
  506 + return sum;
  507 + }
  508 +
  509 + private static double countOilExpend(List<OilInfo> oilArray, String jGh) {
  510 + double sum = 0;
  511 + for (OilInfo oilInfo : oilArray) {
  512 + if (oilInfo.getJsy().equals(jGh))
  513 + sum = Arith.add(sum, oilInfo.getYh());
  514 + }
  515 + return sum;
  516 + }
  517 +
  518 + public static <T> List<T> likeGet(Map<String, T> map, String key) {
  519 + Set<String> ks = map.keySet();
  520 + List<T> list = new ArrayList<>();
  521 +
  522 + if (StringUtils.isEmpty(key))
  523 + return list;
  524 +
  525 + for (String k : ks) {
  526 + if (k.indexOf(key) != -1) {
  527 + list.add(map.get(k));
  528 + }
  529 + }
  530 + return list;
  531 + }
  532 +
  533 + /**
  534 + * 将数据转换成南汇工资系统需要的驾驶员考勤数据
  535 + *
  536 + * @param plans
  537 + * @param reals
  538 + * @param types
  539 + * @return
  540 + */
  541 + public static Jsy_attendance[] to_jsyAttendanceNH(List<SchedulePlanInfo> plans, List<ScheduleRealInfo> reals, Set<String> jsySet, Map<String, String> types, String rq) {
  542 + //List<String> ghArray = new ArrayList<>(types.keySet());
  543 + Jsy_attendance[] rs = new Jsy_attendance[jsySet.size()];
  544 +
  545 + Jsy_attendance attendance;
  546 + SchedulePlanInfo plan;
  547 + ScheduleRealInfo real;
  548 + //String jGh;
  549 +
  550 + int i = 0;
  551 + for(String jGh : jsySet){
  552 + attendance = new Jsy_attendance();
  553 + attendance.setRq(rq);
  554 + //计划
  555 + plan = searchByJsy(plans, jGh);
  556 + //实际
  557 + real = searchRealByJsy(reals, jGh);
  558 + //考勤
  559 + attendance.setStatus((plan==null?"0":"1") + "," + (real==null?"0":"1"));
  560 + //班型
  561 + attendance.setPlanType(types.get(jGh)==null?"1":types.get(jGh));
  562 + //驾驶员工号
  563 + attendance.setjGh(jGh);
  564 + //早晚班类型
  565 + attendance.calcZybType(reals);
  566 +
  567 + //实际计划
  568 + if(real != null){
  569 + attendance.setXlBm(real.getXlBm());
  570 + attendance.setXlName(real.getXlName());
  571 + attendance.setjName(real.getjName());
  572 + attendance.setsGh(real.getsGh());
  573 + attendance.setsName(real.getsName());
  574 + attendance.setCompany(real.getGsBm());
  575 + attendance.setFgsCompany(real.getFgsBm());
  576 + attendance.addLpName(real.getLpName());
  577 + attendance.addCl(real.getClZbh());
  578 + }
  579 + //计划
  580 + else if(plan != null){
  581 + attendance.setXlBm(plan.getXlBm());
  582 + attendance.setXlName(plan.getXlName());
  583 + attendance.setjName(plan.getjName());
  584 + attendance.setsGh(plan.getsGh());
  585 + attendance.setsName(plan.getsName());
  586 + attendance.setCompany(plan.getGsBm());
  587 + attendance.setFgsCompany(plan.getFgsBm());
  588 + attendance.addLpName(plan.getLpName());
  589 + attendance.addCl(plan.getClZbh());
  590 + }
  591 +
  592 + rs[i] = attendance;
  593 + i++;
  594 + }
  595 + return rs;
  596 + }
  597 +
  598 + public static SchedulePlanInfo searchByJsy(List<SchedulePlanInfo> plans, String jGh){
  599 +
  600 + for(SchedulePlanInfo plan : plans){
  601 + if(plan.getjGh().equals(jGh))
  602 + return plan;
  603 + }
  604 + return null;
  605 + }
  606 +
  607 + public static ScheduleRealInfo searchRealByJsy(List<ScheduleRealInfo> reals, String jGh){
  608 +
  609 + for(ScheduleRealInfo sch : reals){
  610 + if(sch.getjGh().equals(jGh))
  611 + return sch;
  612 + }
  613 + return null;
  614 + }
  615 +
  616 + /**
  617 + * 将排班和油耗转换成综合查询需要的数据
  618 + * @param schList
  619 + * @param oilList
  620 + * @return
  621 + */
  622 + public static String[] to_getLSLC_PB(String fdate, List<ScheduleRealInfo> schList, List<OilInfo> oilList, List<SchedulePlanInfo> planList) {
  623 + String[] array = new String[0];
  624 + try {
  625 + //按日期分组数据
  626 + ArrayListMultimap<String, ScheduleRealInfo> schMultimap =
  627 + new ConvertUtil().groupMultiList(schList, "_", ScheduleRealInfo.class.getDeclaredField("scheduleDateStr"));
  628 +
  629 + ArrayListMultimap<String, OilInfo> oilMultimap =
  630 + new ConvertUtil().groupMultiList(oilList, "_", OilInfo.class.getDeclaredField("rq"));
  631 +
  632 + ArrayListMultimap<String, SchedulePlanInfo> planMultimap =
  633 + new ConvertUtil().groupMultiList(planList, "_", SchedulePlanInfo.class.getDeclaredField("scheduleDate"));
  634 +
  635 +
  636 + //月份有多少天
  637 + int year = Integer.parseInt(fdate.substring(0, 4));
  638 + int month = Integer.parseInt(fdate.substring(5, 7));
  639 + Calendar cal = Calendar.getInstance();
  640 + cal.set(Calendar.YEAR,year);
  641 + cal.set(Calendar.MONTH,month - 1);//从0开始
  642 + int maxDate = cal.getActualMaximum(Calendar.DATE);
  643 +
  644 + List<LsLcPb> rs = new ArrayList<>();
  645 + LsLcPb lcPb;
  646 + List<ScheduleRealInfo> pbList;
  647 + List<SchedulePlanInfo> jhList;
  648 + List<OilInfo> yhList;
  649 + String rq,rq2;
  650 + SchedulePlanInfo outPlan;
  651 + int currentDay = cal.get(Calendar.DAY_OF_MONTH);
  652 + for(int i = 1; i <= maxDate; i++){
  653 + lcPb = new LsLcPb();
  654 + lcPb.setDay(i);
  655 +
  656 + rq = fdate + "-" + (i < 10?"0":"") + i;
  657 + rq2 = rq.replaceAll("-", "");
  658 +
  659 + pbList = schMultimap.get(rq);
  660 + yhList = oilMultimap.get(rq2);
  661 + jhList = planMultimap.get(rq2);
  662 +
  663 + if(i < currentDay){
  664 + if(pbList == null || pbList.size() == 0)
  665 + lcPb.setType(4);//休息
  666 + else{
  667 + lcPb.setType(1);
  668 + lcPb.setLckq("");
  669 + if(yhList != null && yhList.size() > 0){
  670 + lcPb.setLcyh(yhList.get(0).getYh());
  671 + }
  672 + lcPb.setLcyylc(ScheduleCalculator.calcYYLC(pbList));
  673 + lcPb.setLcfyylc(ScheduleCalculator.calcKSLC(pbList));
  674 + }
  675 + }
  676 + else if (i == currentDay)
  677 + lcPb.setType(3);//今天
  678 + else {
  679 + if(jhList == null || jhList.size() == 0)
  680 + lcPb.setType(4);//休息
  681 + else{
  682 + lcPb.setType(2);
  683 + outPlan = getOutSch(jhList);
  684 + if(null != outPlan){
  685 + lcPb.setPbxl(outPlan.getXlName());
  686 + lcPb.setPblp(outPlan.getLpName());
  687 + lcPb.setPbbd(minusMinute(outPlan.getFcsj(), 15));
  688 + lcPb.setPbyc(outPlan.getClZbh());
  689 + }
  690 + else
  691 + lcPb.setType(4);//休息
  692 + }
  693 + }
  694 +
  695 + rs.add(lcPb);
  696 + }
  697 +
  698 + //拼接成字符串数组
  699 + array = new String[rs.size()];
  700 + StringBuilder sb;
  701 + for(int i = 0,len=rs.size(); i < len; i++){
  702 + lcPb = rs.get(i);
  703 + sb = new StringBuilder();
  704 +
  705 + sb.append(lcPb.getType());
  706 +
  707 + switch (lcPb.getType()){
  708 + case 1:
  709 + sb.append("," + lcPb.getLckq());
  710 + sb.append("," + lcPb.getLcyh());
  711 + sb.append("," + lcPb.getLcyylc());
  712 + sb.append("," + lcPb.getLcfyylc());
  713 + break;
  714 + case 2:
  715 + sb.append("," + lcPb.getPbxl());
  716 + sb.append("," + lcPb.getPblp());
  717 + sb.append("," + lcPb.getPbbd());
  718 + sb.append("," + lcPb.getPbyc());
  719 + break;
  720 + }
  721 + sb.append("," + lcPb.getDay());
  722 + array[i] = sb.toString();
  723 + }
  724 + } catch (NoSuchFieldException e) {
  725 + logger.error("", e);
  726 + }
  727 + return array;
  728 + }
  729 +
  730 + /**
  731 + * 将排班和油耗转换成综合查询需要的数据
  732 + * @param schList
  733 + * @param oilList
  734 + * @return
  735 + */
  736 + public static List<LsLcPb> to_getLSLC_PB_list(String fdate, List<ScheduleRealInfo> schList, List<OilInfo> oilList, List<SchedulePlanInfo> planList) {
  737 + List<LsLcPb> rs = new ArrayList<>();
  738 + try {
  739 + //按日期分组数据
  740 + ArrayListMultimap<String, ScheduleRealInfo> schMultimap =
  741 + new ConvertUtil().groupMultiList(schList, "_", ScheduleRealInfo.class.getDeclaredField("scheduleDateStr"));
  742 +
  743 + ArrayListMultimap<String, OilInfo> oilMultimap =
  744 + new ConvertUtil().groupMultiList(oilList, "_", OilInfo.class.getDeclaredField("rq"));
  745 +
  746 + ArrayListMultimap<String, SchedulePlanInfo> planMultimap =
  747 + new ConvertUtil().groupMultiList(planList, "_", SchedulePlanInfo.class.getDeclaredField("scheduleDate"));
  748 +
  749 +
  750 + //月份有多少天
  751 + int year = Integer.parseInt(fdate.substring(0, 4));
  752 + int month = Integer.parseInt(fdate.substring(5, 7));
  753 + Calendar cal = Calendar.getInstance();
  754 + cal.set(Calendar.YEAR,year);
  755 + cal.set(Calendar.MONTH,month - 1);//从0开始
  756 + int maxDate = cal.getActualMaximum(Calendar.DATE);
  757 +
  758 + LsLcPb lcPb;
  759 + List<ScheduleRealInfo> pbList;
  760 + List<SchedulePlanInfo> jhList;
  761 + List<OilInfo> yhList;
  762 + String rq,rq2;
  763 + SchedulePlanInfo outPlan;
  764 + int currentDay = cal.get(Calendar.DAY_OF_MONTH);
  765 + for(int i = 1; i <= maxDate; i++){
  766 + lcPb = new LsLcPb();
  767 + lcPb.setDay(i);
  768 +
  769 + rq = fdate + "-" + (i < 10?"0":"") + i;
  770 + rq2 = rq.replaceAll("-", "");
  771 +
  772 + pbList = schMultimap.get(rq);
  773 + yhList = oilMultimap.get(rq2);
  774 + jhList = planMultimap.get(rq2);
  775 +
  776 + if(i < currentDay){
  777 + if(pbList == null || pbList.size() == 0)
  778 + lcPb.setType(4);//休息
  779 + else{
  780 + lcPb.setType(1);
  781 + lcPb.setLckq("");
  782 + if(yhList != null && yhList.size() > 0){
  783 + lcPb.setLcyh(yhList.get(0).getYh());
  784 + }
  785 + lcPb.setLcyylc(ScheduleCalculator.calcYYLC(pbList));
  786 + lcPb.setLcfyylc(ScheduleCalculator.calcKSLC(pbList));
  787 + }
  788 + }
  789 + else if (i == currentDay)
  790 + lcPb.setType(3);//今天
  791 + else {
  792 + if(jhList == null || jhList.size() == 0)
  793 + lcPb.setType(4);//休息
  794 + else{
  795 + lcPb.setType(2);
  796 + outPlan = getOutSch(jhList);
  797 + if(null != outPlan){
  798 + lcPb.setPbxl(outPlan.getXlName());
  799 + lcPb.setPblp(outPlan.getLpName());
  800 + lcPb.setPbbd(minusMinute(outPlan.getFcsj(), 15));
  801 + lcPb.setPbyc(outPlan.getClZbh());
  802 + }
  803 + else
  804 + lcPb.setType(4);//休息
  805 + }
  806 + }
  807 +
  808 + rs.add(lcPb);
  809 + }
  810 + } catch (NoSuchFieldException e) {
  811 + logger.error("", e);
  812 + }
  813 + return rs;
  814 + }
  815 +
  816 + /**
  817 + * HH:mm 格式时间减分钟
  818 + * @param dfsj
  819 + * @param i
  820 + * @return
  821 + */
  822 + private static String minusMinute(String hhmm, int i) {
  823 + try {
  824 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
  825 + long t = sdf.parse(hhmm).getTime();
  826 +
  827 + return sdf.format(new Date(t - (i * 60 * 1000)));
  828 + } catch (ParseException e) {
  829 + logger.error("", e);
  830 + }
  831 + return null;
  832 + }
  833 +
  834 + private static SchedulePlanInfo getOutSch(List<SchedulePlanInfo> pbList) {
  835 +
  836 + for(SchedulePlanInfo sch : pbList){
  837 + if(sch.getBcType().equals("out"))
  838 + return sch;
  839 + }
  840 + return null;
  841 + }
  842 +
  843 + public static class OilComp implements Comparator<OilInfo> {
  844 +
  845 + @Override
  846 + public int compare(OilInfo o1, OilInfo o2) {
  847 + return o1.getJcsx() - o2.getJcsx();
  848 + }
  849 + }
  850 +
  851 +
  852 +}
src/main/java/com/bsth/server_ws/waybill/LD_Service.java
@@ -34,23 +34,6 @@ public interface LD_Service { @@ -34,23 +34,6 @@ public interface LD_Service {
34 @WebParam(name = "companyId") String companyId, 34 @WebParam(name = "companyId") String companyId,
35 @WebParam(name = "resultArray", mode = WebParam.Mode.INOUT) Holder<NH_waybill[]> result, 35 @WebParam(name = "resultArray", mode = WebParam.Mode.INOUT) Holder<NH_waybill[]> result,
36 @WebParam(name = "fError", mode = WebParam.Mode.INOUT) Holder<String> fError); 36 @WebParam(name = "fError", mode = WebParam.Mode.INOUT) Holder<String> fError);
37 -  
38 - /***  
39 - * 路单接口(原南汇格式 公司内部用)  
40 - * @param password 密码  
41 - * @param rq 日期  
42 - * @param companyId 公司编码  
43 - * @param result  
44 - * @param fError  
45 - * @return  
46 - */  
47 - @WebMethod  
48 - boolean waybill_NH4TH(  
49 - @WebParam(name = "password") String password,  
50 - @WebParam(name = "rq") String rq,  
51 - @WebParam(name = "companyId") String companyId,  
52 - @WebParam(name = "resultArray", mode = WebParam.Mode.INOUT) Holder<NH_waybill[]> result,  
53 - @WebParam(name = "fError", mode = WebParam.Mode.INOUT) Holder<String> fError);  
54 37
55 /** 38 /**
56 * 路单接口(上南格式) 39 * 路单接口(上南格式)
src/main/java/com/bsth/server_ws/waybill/LD_ServiceSoap.java
@@ -16,10 +16,8 @@ import org.springframework.context.ApplicationContextAware; @@ -16,10 +16,8 @@ import org.springframework.context.ApplicationContextAware;
16 import org.springframework.stereotype.Component; 16 import org.springframework.stereotype.Component;
17 17
18 import com.bsth.entity.DutyEmployee; 18 import com.bsth.entity.DutyEmployee;
19 -import com.bsth.entity.ElecInfo;  
20 import com.bsth.entity.OilInfo; 19 import com.bsth.entity.OilInfo;
21 import com.bsth.entity.ScheduleRealInfo; 20 import com.bsth.entity.ScheduleRealInfo;
22 -import com.bsth.redis.ElecRedisService;  
23 import com.bsth.redis.OilRedisService; 21 import com.bsth.redis.OilRedisService;
24 import com.bsth.redis.ScheduleRedisService; 22 import com.bsth.redis.ScheduleRedisService;
25 import com.bsth.repository.DutyEmployeeRepository; 23 import com.bsth.repository.DutyEmployeeRepository;
@@ -43,7 +41,6 @@ import com.google.common.collect.ArrayListMultimap; @@ -43,7 +41,6 @@ import com.google.common.collect.ArrayListMultimap;
43 public class LD_ServiceSoap implements LD_Service, ApplicationContextAware { 41 public class LD_ServiceSoap implements LD_Service, ApplicationContextAware {
44 42
45 static OilRedisService oilRedisService; 43 static OilRedisService oilRedisService;
46 - static ElecRedisService elecRedisService;  
47 static ScheduleRedisService scheduleRedisService; 44 static ScheduleRedisService scheduleRedisService;
48 static DutyEmployeeRepository dutyEmployeeRepository; 45 static DutyEmployeeRepository dutyEmployeeRepository;
49 46
@@ -91,44 +88,6 @@ public class LD_ServiceSoap implements LD_Service, ApplicationContextAware { @@ -91,44 +88,6 @@ public class LD_ServiceSoap implements LD_Service, ApplicationContextAware {
91 } 88 }
92 89
93 @Override 90 @Override
94 - public boolean waybill_NH4TH(String password, String rq, String companyId, Holder<NH_waybill[]> result, Holder<String> fError) {  
95 - try {  
96 - if(userService.get(password) == null){  
97 - fError.value = "无效的密码!";  
98 - return false;  
99 - }  
100 - //日期减一天,老接口是这样的  
101 - //rq = fmtyyyyMMdd.print(fmtyyyyMMdd.parseDateTime(rq).minusDays(1));  
102 - String prveRq = fmtyyyyMMdd.print(fmtyyyyMMdd.parseDateTime(rq).minusDays(1));  
103 -  
104 - //实际排班  
105 - ArrayListMultimap<String, ScheduleRealInfo> listMap = scheduleRedisService.findByDateAndGroupByNbbm(prveRq, companyId);  
106 - //油耗信息  
107 - Map<String, OilInfo> oilInfoMap = oilRedisService.findByNbbmGroup(listMap.keySet(), prveRq);  
108 - //电耗信息  
109 - Map<String, ElecInfo> elecInfoMap = elecRedisService.findByNbbmGroup(listMap.keySet(), prveRq);  
110 - //当班调派  
111 - long st = fmtyyyyMMddHHmm.parseMillis(prveRq + "00:00"), et = fmtyyyyMMddHHmm.parseMillis(prveRq + "23:59");  
112 - List<DutyEmployee> des = dutyEmployeeRepository.findByTime(st, et);  
113 - //转换成南汇路单需要的格式  
114 - NH_waybill[] array = WSDataConver.to_waybill_NH4TH(listMap, oilInfoMap, elecInfoMap, des);  
115 - result.value = array;  
116 -  
117 - //不再代理老接口数据  
118 - /*if(companyId.equals("26") && !WebServiceProxy.isAllNew(companyId)){  
119 - ClsLDInfo[] oldArray = OldWSClient.getNH_LD(companyId, rq);  
120 - //合并新老系统的数据  
121 - result.value = WebServiceProxy.mergerData(result.value, oldArray, companyId);  
122 - }*/  
123 - } catch (Exception e) {  
124 - logger.error("", e);  
125 - fError.value = "服务器出现异常!";  
126 - return false;  
127 - }  
128 - return true;  
129 - }  
130 -  
131 - @Override  
132 public boolean waybill_SN(String password, String rq, String companyId, Holder<SN_waybill[]> result, Holder<String> fError) { 91 public boolean waybill_SN(String password, String rq, String companyId, Holder<SN_waybill[]> result, Holder<String> fError) {
133 try { 92 try {
134 if(userService.get(password) == null){ 93 if(userService.get(password) == null){
@@ -176,7 +135,6 @@ public class LD_ServiceSoap implements LD_Service, ApplicationContextAware { @@ -176,7 +135,6 @@ public class LD_ServiceSoap implements LD_Service, ApplicationContextAware {
176 @Override 135 @Override
177 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 136 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
178 oilRedisService = applicationContext.getBean(OilRedisService.class); 137 oilRedisService = applicationContext.getBean(OilRedisService.class);
179 - elecRedisService = applicationContext.getBean(ElecRedisService.class);  
180 scheduleRedisService = applicationContext.getBean(ScheduleRedisService.class); 138 scheduleRedisService = applicationContext.getBean(ScheduleRedisService.class);
181 dutyEmployeeRepository = applicationContext.getBean(DutyEmployeeRepository.class); 139 dutyEmployeeRepository = applicationContext.getBean(DutyEmployeeRepository.class);
182 userService = applicationContext.getBean(UserService.class); 140 userService = applicationContext.getBean(UserService.class);
src/main/resources/application-prod.properties
1 -server.port=9089  
2 -management.port= 9001  
3 -management.address= 127.0.0.1  
4 -  
5 -spring.jpa.hibernate.ddl-auto= none  
6 -spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy  
7 -#DATABASE  
8 -spring.jpa.database= MYSQL  
9 -spring.jpa.show-sql= false  
10 -spring.datasource.driver-class-name= com.mysql.jdbc.Driver  
11 -spring.datasource.url= jdbc:mysql://10.10.150.20:3306/control?useUnicode=true&characterEncoding=utf-8&useSSL=false  
12 -spring.datasource.username= root  
13 -spring.datasource.password= root2jsp@JSP  
14 -#DATASOURCE  
15 -spring.datasource.max-active=100  
16 -spring.datasource.max-idle=8  
17 -spring.datasource.min-idle=8  
18 -spring.datasource.initial-size=3  
19 -  
20 -spring.datasource.test-on-borrow=true  
21 -spring.datasource.test-on-connect=true  
22 -spring.datasource.test-on-return=true  
23 -spring.datasource.test-while-idle=true  
24 -spring.datasource.validation-query=select 1  
25 -  
26 -#REDIS  
27 -spring.redis.database=0  
28 -spring.redis.host=10.10.150.24  
29 -spring.redis.password=bsth_control_001  
30 -spring.redis.port=28008  
31 -  
32 -http.control.service_data_url= http://10.10.150.20:9088/companyService  
33 -http.control.secret.key= dVPHJkWUt5FhMT7jrM2dLV7QvlHAmZFd42rs1P0usBx8A7HZki  
34 -  
35 -http.gps.real.url= http://10.10.200.79:8080/transport_server/rtgps/  
36 \ No newline at end of file 1 \ No newline at end of file
  2 +server.port=9089
  3 +management.port= 9001
  4 +management.address= 127.0.0.1
  5 +
  6 +spring.jpa.hibernate.ddl-auto= none
  7 +spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
  8 +#DATABASE
  9 +spring.jpa.database= MYSQL
  10 +spring.jpa.show-sql= false
  11 +spring.datasource.driver-class-name= com.mysql.jdbc.Driver
  12 +spring.datasource.url= jdbc:mysql://192.168.40.100:3306/qp_control?useUnicode=true&characterEncoding=utf-8&useSSL=false
  13 +spring.datasource.username= root
  14 +spring.datasource.password= root2JSP@jsp
  15 +#DATASOURCE
  16 +spring.datasource.max-active=100
  17 +spring.datasource.max-idle=8
  18 +spring.datasource.min-idle=8
  19 +spring.datasource.initial-size=3
  20 +
  21 +spring.datasource.test-on-borrow=true
  22 +spring.datasource.test-on-connect=true
  23 +spring.datasource.test-on-return=true
  24 +spring.datasource.test-while-idle=true
  25 +spring.datasource.validation-query=select 1
  26 +
  27 +#REDIS
  28 +spring.redis.database=0
  29 +spring.redis.host=192.168.40.100
  30 +spring.redis.password=bsth_control_001
  31 +spring.redis.port=28008
  32 +
  33 +http.control.service_data_url= http://192.168.40.82:9088/companyService
  34 +http.control.secret.key= dVPHJkWUt5FhMT7jrM2dLV7QvlHAmZFd42rs1P0usBx8A7HZki
  35 +
  36 +http.gps.real.url= http://192.168.40.82:8080/transport_server/rtgps/
37 \ No newline at end of file 37 \ No newline at end of file
src/main/resources/ms-jdbc.properties
1 -#ms.mysql.driver= com.mysql.jdbc.Driver  
2 -#ms.mysql.url= jdbc:mysql://127.0.0.1:3306/ms?useUnicode=true&characterEncoding=utf-8  
3 -#ms.mysql.username= root  
4 -#ms.mysql.password= panzhao  
5 -  
6 -ms.mysql.driver= com.mysql.jdbc.Driver  
7 -ms.mysql.url= jdbc:mysql://10.10.200.226:3306/ms?useUnicode=true&characterEncoding=utf-8  
8 -ms.mysql.username= root  
9 -ms.mysql.password= root2jsp  
10 \ No newline at end of file 1 \ No newline at end of file
  2 +#ms.mysql.driver= com.mysql.jdbc.Driver
  3 +#ms.mysql.url= jdbc:mysql://127.0.0.1:3306/ms?useUnicode=true&characterEncoding=utf-8
  4 +#ms.mysql.username= root
  5 +#ms.mysql.password= panzhao
  6 +
  7 +ms.mysql.driver= com.mysql.jdbc.Driver
  8 +ms.mysql.url= jdbc:mysql://192.168.40.82:3306/ms?useUnicode=true&characterEncoding=utf-8
  9 +ms.mysql.username= root
  10 +ms.mysql.password= 123456
11 \ No newline at end of file 11 \ No newline at end of file