Commit 5734f1c0ab3a104fd13ee7b14c5aea325d6d5ac6

Authored by 王通
1 parent 2cfa5798

1.

src/main/java/com/bsth/entity/ScheduleRealInfo.java
1 -package com.bsth.entity;  
2 -  
3 -import org.joda.time.format.DateTimeFormat;  
4 -import org.joda.time.format.DateTimeFormatter;  
5 -  
6 -import javax.persistence.*;  
7 -import java.io.Serializable;  
8 -import java.util.Date;  
9 -import java.util.HashSet;  
10 -import java.util.Set;  
11 -  
12 -/**  
13 - * 实际排班计划明细。  
14 - */  
15 -@Entity  
16 -@Table(name = "bsth_c_s_sp_info_real")  
17 -@NamedEntityGraphs({  
18 - @NamedEntityGraph(name = "scheduleRealInfo_cTasks", attributeNodes = {  
19 - @NamedAttributeNode("cTasks")  
20 - })  
21 -})  
22 -public class ScheduleRealInfo implements Serializable{  
23 -  
24 -  
25 -  
26 - /** 主键Id */  
27 - @Id  
28 - private Long id;  
29 -  
30 - /** 计划ID */  
31 - private Long spId;  
32 -  
33 - /** 排班计划日期 */  
34 - private Date scheduleDate;  
35 - private String scheduleDateStr;  
36 -  
37 - /** 真实执行时间 yyyy-MM-dd */  
38 - private String realExecDate;  
39 -  
40 - /** 线路名称 */  
41 - private String xlName;  
42 - /** 线路编码 */  
43 - private String xlBm;  
44 -  
45 - /** 路牌名称 */  
46 - private String lpName;  
47 -  
48 - /** 车辆自编号 */  
49 - private String clZbh;  
50 -  
51 - /** 驾驶员工号 */  
52 - private String jGh;  
53 - /** 驾驶员名字 */  
54 - private String jName;  
55 - /** 售票员工号 */  
56 - private String sGh;  
57 - /** 售票员名字 */  
58 - private String sName;  
59 -  
60 - /** 线路方向 */  
61 - private String xlDir;  
62 - /** 起点站code*/  
63 - private String qdzCode;  
64 - /** 起点站名字 */  
65 - private String qdzName;  
66 -  
67 - /** 终点站code*/  
68 - private String zdzCode;  
69 - /** 终点站名字 */  
70 - private String zdzName;  
71 -  
72 - /** 计划发车时间(格式 HH:mm) */  
73 - private String fcsj;  
74 - /** 计划发车时间戳*/  
75 - @Transient  
76 - private Long fcsjT;  
77 -  
78 - /** 计划终点时间(格式 HH:mm) */  
79 - private String zdsj;  
80 - /** 计划终点时间戳*/  
81 - @Transient  
82 - private Long zdsjT;  
83 -  
84 - /** 发车顺序号 */  
85 - private Integer fcno;  
86 - /** 对应班次数 */  
87 - private Integer bcs;  
88 - /** 计划里程 */  
89 - private Double jhlc;  
90 -  
91 - /** 原始计划里程 (原计调的数据) */  
92 - private Double jhlcOrig;  
93 -  
94 - /** 班次历时 */  
95 - private Integer bcsj;  
96 -  
97 - /**  
98 - * 班次类型 TODO:正常班次、出场、进场、加油、区间班次、放空班次、放大站班次、两点间空驶  
99 - */  
100 - private String bcType;  
101 -  
102 - /** 创建日期 */  
103 - @Column(name = "create_date")  
104 - private Date createDate;  
105 - /** 修改日期 */  
106 - @Column(name = "update_date")  
107 - private Date updateDate;  
108 -  
109 - /** 实际发车时间*/  
110 - private String fcsjActual;  
111 - /** 实际发车时间戳*/  
112 - @Transient  
113 - private Long fcsjActualTime;  
114 - /**实际终点时间 */  
115 - private String zdsjActual;  
116 - /** 实际终点时间戳*/  
117 - @Transient  
118 - private Long zdsjActualTime;  
119 -  
120 - /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */  
121 - private int status;  
122 -  
123 - private String adjustExps;  
124 -  
125 - /** 是否是临加班次 */  
126 - private boolean sflj;  
127 -  
128 - /** 是否误点*/  
129 - @Transient  
130 - private boolean late;  
131 -  
132 - /** 备注*/  
133 - private String remarks;  
134 -  
135 - /**待发时间(格式 HH:mm) */  
136 - private String dfsj;  
137 -  
138 - /**待发时间戳 */  
139 - @Transient  
140 - private Long dfsjT;  
141 -  
142 - /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */  
143 - private Integer directiveState = -1;  
144 -  
145 - /** 起点站计划到达时间 */  
146 - @Transient  
147 - private String qdzArrDatejh;  
148 -  
149 - /** 起点站实际到达时间 */  
150 - @Transient  
151 - private String qdzArrDatesj;  
152 -  
153 - /** 子任务 */  
154 - @OneToMany(fetch = FetchType.LAZY, mappedBy = "schedule")  
155 - private Set<ChildTaskPlan> cTasks = new HashSet<>();  
156 -  
157 - /** 关联的公司名称 */  
158 - private String gsName;  
159 - /** 关联的公司编码 */  
160 - private String gsBm;  
161 - /** 关联的分公司名称 */  
162 - private String fgsName;  
163 - /** 关联的分公司编码 */  
164 - private String fgsBm;  
165 - /** 出场顺序号 */  
166 - private Integer ccno;  
167 -  
168 - //待发调试(是否自动调整)  
169 - private boolean dfAuto;  
170 - //是否有GPS信号  
171 - private boolean online;  
172 -  
173 - /** 是否有补发GPS信号 */  
174 - private boolean reissue;  
175 -  
176 -  
177 -  
178 - /**  
179 - * 换车营运标记 true 表示该主任务由 【中途换车子任务】 级联生成  
180 - */  
181 - private boolean ccService;  
182 - private Integer lpChange;  
183 -  
184 - /**  
185 - * rfid状态  
186 - */  
187 - private int rfidState;  
188 -  
189 - /**  
190 - * 起点站rfid状态  
191 - */  
192 - private int firstRfidState;  
193 -  
194 - @Override  
195 - public int hashCode() {  
196 - return (this.id + this.scheduleDateStr + this.xlBm + this.fcsj).hashCode();  
197 - }  
198 -  
199 - @Override  
200 - public boolean equals(Object obj) {  
201 - return this.id.equals(((ScheduleRealInfo)obj).getId());  
202 - }  
203 -  
204 - public Long getId() {  
205 - return id;  
206 - }  
207 -  
208 - public void setId(Long id) {  
209 - this.id = id;  
210 - }  
211 -  
212 - public Long getSpId() {  
213 - return spId;  
214 - }  
215 -  
216 - public void setSpId(Long spId) {  
217 - this.spId = spId;  
218 - }  
219 -  
220 - public Date getScheduleDate() {  
221 - return scheduleDate;  
222 - }  
223 -  
224 - public void setScheduleDate(Date scheduleDate) {  
225 - this.scheduleDate = scheduleDate;  
226 - }  
227 -  
228 - public String getScheduleDateStr() {  
229 - return scheduleDateStr;  
230 - }  
231 -  
232 - public void setScheduleDateStr(String scheduleDateStr) {  
233 - this.scheduleDateStr = scheduleDateStr;  
234 - }  
235 -  
236 - public String getRealExecDate() {  
237 - return realExecDate;  
238 - }  
239 -  
240 - public void setRealExecDate(String realExecDate) {  
241 - this.realExecDate = realExecDate;  
242 - }  
243 -  
244 - public String getXlName() {  
245 - return xlName;  
246 - }  
247 -  
248 - public void setXlName(String xlName) {  
249 - this.xlName = xlName;  
250 - }  
251 -  
252 - public String getXlBm() {  
253 - return xlBm;  
254 - }  
255 -  
256 - public void setXlBm(String xlBm) {  
257 - this.xlBm = xlBm;  
258 - }  
259 -  
260 - public String getLpName() {  
261 - return lpName;  
262 - }  
263 -  
264 - public void setLpName(String lpName) {  
265 - this.lpName = lpName;  
266 - }  
267 -  
268 - public String getClZbh() {  
269 - return clZbh;  
270 - }  
271 -  
272 - public void setClZbh(String clZbh) {  
273 - this.clZbh = clZbh;  
274 - }  
275 -  
276 - public String getjGh() {  
277 - return jGh;  
278 - }  
279 -  
280 - public void setjGh(String jGh) {  
281 - this.jGh = jGh;  
282 - }  
283 -  
284 - public String getjName() {  
285 - return jName;  
286 - }  
287 -  
288 - public void setjName(String jName) {  
289 - this.jName = jName;  
290 - }  
291 -  
292 - public String getsGh() {  
293 - return sGh;  
294 - }  
295 -  
296 - public void setsGh(String sGh) {  
297 - this.sGh = sGh;  
298 - }  
299 -  
300 - public String getsName() {  
301 - return sName;  
302 - }  
303 -  
304 - public void setsName(String sName) {  
305 - this.sName = sName;  
306 - }  
307 -  
308 - public String getXlDir() {  
309 - return xlDir;  
310 - }  
311 -  
312 - public void setXlDir(String xlDir) {  
313 - this.xlDir = xlDir;  
314 - }  
315 -  
316 - public String getQdzCode() {  
317 - return qdzCode;  
318 - }  
319 -  
320 - public void setQdzCode(String qdzCode) {  
321 - this.qdzCode = qdzCode;  
322 - }  
323 -  
324 - public String getQdzName() {  
325 - return qdzName;  
326 - }  
327 -  
328 - public void setQdzName(String qdzName) {  
329 - this.qdzName = qdzName;  
330 - }  
331 -  
332 - public String getZdzCode() {  
333 - return zdzCode;  
334 - }  
335 -  
336 - public void setZdzCode(String zdzCode) {  
337 - this.zdzCode = zdzCode;  
338 - }  
339 -  
340 - public String getZdzName() {  
341 - return zdzName;  
342 - }  
343 -  
344 - public void setZdzName(String zdzName) {  
345 - this.zdzName = zdzName;  
346 - }  
347 -  
348 - public String getFcsj() {  
349 - return fcsj;  
350 - }  
351 -  
352 - public void setFcsj(String fcsj) {  
353 - this.fcsj = fcsj;  
354 - }  
355 -  
356 - public Long getFcsjT() {  
357 - return fcsjT;  
358 - }  
359 -  
360 - public void setFcsjT(Long fcsjT) {  
361 - this.fcsjT = fcsjT;  
362 - }  
363 -  
364 - public String getZdsj() {  
365 - return zdsj;  
366 - }  
367 -  
368 - public void setZdsj(String zdsj) {  
369 - this.zdsj = zdsj;  
370 - }  
371 -  
372 - public Long getZdsjT() {  
373 - return zdsjT;  
374 - }  
375 -  
376 - public void setZdsjT(Long zdsjT) {  
377 - this.zdsjT = zdsjT;  
378 - }  
379 -  
380 - public Integer getFcno() {  
381 - return fcno;  
382 - }  
383 -  
384 - public void setFcno(Integer fcno) {  
385 - this.fcno = fcno;  
386 - }  
387 -  
388 - public Integer getBcs() {  
389 - return bcs;  
390 - }  
391 -  
392 - public void setBcs(Integer bcs) {  
393 - this.bcs = bcs;  
394 - }  
395 -  
396 - public Double getJhlc() {  
397 - return jhlc;  
398 - }  
399 -  
400 - public void setJhlc(Double jhlc) {  
401 - this.jhlc = jhlc;  
402 - }  
403 -  
404 - public Integer getBcsj() {  
405 - return bcsj;  
406 - }  
407 -  
408 - public void setBcsj(Integer bcsj) {  
409 - this.bcsj = bcsj;  
410 - }  
411 -  
412 - public String getBcType() {  
413 - return bcType;  
414 - }  
415 -  
416 - public void setBcType(String bcType) {  
417 - this.bcType = bcType;  
418 - }  
419 -  
420 - public Date getCreateDate() {  
421 - return createDate;  
422 - }  
423 -  
424 - public void setCreateDate(Date createDate) {  
425 - this.createDate = createDate;  
426 - }  
427 -  
428 - public Date getUpdateDate() {  
429 - return updateDate;  
430 - }  
431 -  
432 - public void setUpdateDate(Date updateDate) {  
433 - this.updateDate = updateDate;  
434 - }  
435 -  
436 - public String getFcsjActual() {  
437 - return fcsjActual;  
438 - }  
439 -  
440 - public void setFcsjActual(String fcsjActual) {  
441 - this.fcsjActual = fcsjActual;  
442 - }  
443 -  
444 - public Long getFcsjActualTime() {  
445 - return fcsjActualTime;  
446 - }  
447 -  
448 - public void setFcsjActualTime(Long fcsjActualTime) {  
449 - this.fcsjActualTime = fcsjActualTime;  
450 - }  
451 -  
452 - public String getZdsjActual() {  
453 - return zdsjActual;  
454 - }  
455 -  
456 - public void setZdsjActual(String zdsjActual) {  
457 - this.zdsjActual = zdsjActual;  
458 - }  
459 -  
460 - public Long getZdsjActualTime() {  
461 - return zdsjActualTime;  
462 - }  
463 -  
464 - public void setZdsjActualTime(Long zdsjActualTime) {  
465 - this.zdsjActualTime = zdsjActualTime;  
466 - }  
467 -  
468 - public int getStatus() {  
469 - return status;  
470 - }  
471 -  
472 - public void setStatus(int status) {  
473 - this.status = status;  
474 - }  
475 -  
476 - public String getAdjustExps() {  
477 - return adjustExps;  
478 - }  
479 -  
480 - public void setAdjustExps(String adjustExps) {  
481 - this.adjustExps = adjustExps;  
482 - }  
483 -  
484 - public boolean isSflj() {  
485 - return sflj;  
486 - }  
487 -  
488 - public void setSflj(boolean sflj) {  
489 - this.sflj = sflj;  
490 - }  
491 -  
492 - public boolean isLate() {  
493 - return late;  
494 - }  
495 -  
496 - public void setLate(boolean late) {  
497 - this.late = late;  
498 - }  
499 -  
500 - public String getRemarks() {  
501 - return remarks;  
502 - }  
503 -  
504 - public void setRemarks(String remarks) {  
505 - this.remarks = remarks;  
506 - }  
507 -  
508 - public String getDfsj() {  
509 - return dfsj;  
510 - }  
511 -  
512 - public void setDfsj(String dfsj) {  
513 - this.dfsj = dfsj;  
514 - }  
515 -  
516 - public Long getDfsjT() {  
517 - return dfsjT;  
518 - }  
519 -  
520 - public void setDfsjT(Long dfsjT) {  
521 - this.dfsjT = dfsjT;  
522 - }  
523 -  
524 - public Integer getDirectiveState() {  
525 - return directiveState;  
526 - }  
527 -  
528 - public void setDirectiveState(Integer directiveState) {  
529 - this.directiveState = directiveState;  
530 - }  
531 -  
532 - public String getQdzArrDatejh() {  
533 - return qdzArrDatejh;  
534 - }  
535 -  
536 - public void setQdzArrDatejh(String qdzArrDatejh) {  
537 - this.qdzArrDatejh = qdzArrDatejh;  
538 - }  
539 -  
540 - public String getQdzArrDatesj() {  
541 - return qdzArrDatesj;  
542 - }  
543 -  
544 - public void setQdzArrDatesj(String qdzArrDatesj) {  
545 - this.qdzArrDatesj = qdzArrDatesj;  
546 - }  
547 -  
548 - public Set<ChildTaskPlan> getcTasks() {  
549 - return cTasks;  
550 - }  
551 -  
552 - public void setcTasks(Set<ChildTaskPlan> cTasks) {  
553 - this.cTasks = cTasks;  
554 - }  
555 -  
556 - public String getGsName() {  
557 - return gsName;  
558 - }  
559 -  
560 - public void setGsName(String gsName) {  
561 - this.gsName = gsName;  
562 - }  
563 -  
564 - public String getGsBm() {  
565 - return gsBm;  
566 - }  
567 -  
568 - public void setGsBm(String gsBm) {  
569 - this.gsBm = gsBm;  
570 - }  
571 -  
572 - public String getFgsName() {  
573 - return fgsName;  
574 - }  
575 -  
576 - public void setFgsName(String fgsName) {  
577 - this.fgsName = fgsName;  
578 - }  
579 -  
580 - public String getFgsBm() {  
581 - return fgsBm;  
582 - }  
583 -  
584 - public void setFgsBm(String fgsBm) {  
585 - this.fgsBm = fgsBm;  
586 - }  
587 -  
588 - public Integer getCcno() {  
589 - return ccno;  
590 - }  
591 -  
592 - public void setCcno(Integer ccno) {  
593 - this.ccno = ccno;  
594 - }  
595 -  
596 - public boolean isDfAuto() {  
597 - return dfAuto;  
598 - }  
599 -  
600 - public void setDfAuto(boolean dfAuto) {  
601 - this.dfAuto = dfAuto;  
602 - }  
603 -  
604 - public boolean isOnline() {  
605 - return online;  
606 - }  
607 -  
608 - public void setOnline(boolean online) {  
609 - this.online = online;  
610 - }  
611 -  
612 - public boolean isReissue() {  
613 - return reissue;  
614 - }  
615 -  
616 - public void setReissue(boolean reissue) {  
617 - this.reissue = reissue;  
618 - }  
619 -  
620 - public boolean isCcService() {  
621 - return ccService;  
622 - }  
623 -  
624 - public void setCcService(boolean ccService) {  
625 - this.ccService = ccService;  
626 - }  
627 -  
628 - public Integer getLpChange() {  
629 - return lpChange;  
630 - }  
631 -  
632 - public void setLpChange(Integer lpChange) {  
633 - this.lpChange = lpChange;  
634 - }  
635 -  
636 - public Double getJhlcOrig() {  
637 - return jhlcOrig;  
638 - }  
639 -  
640 - public void setJhlcOrig(Double jhlcOrig) {  
641 - this.jhlcOrig = jhlcOrig;  
642 - }  
643 -  
644 - public int getRfidState() {  
645 - return rfidState;  
646 - }  
647 -  
648 - public void setRfidState(int rfidState) {  
649 - this.rfidState = rfidState;  
650 - }  
651 -  
652 - public int getFirstRfidState() {  
653 - return firstRfidState;  
654 - }  
655 -  
656 - public void setFirstRfidState(int firstRfidState) {  
657 - this.firstRfidState = firstRfidState;  
658 - }  
659 -  
660 - @Transient  
661 - private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");  
662 - /**  
663 - *  
664 - * @Title: setFcsjActualAll  
665 - * @Description: TODO(设置实际发车时间 时间戳)  
666 - * @throws  
667 - */  
668 - public void setFcsjActualAll(Long t){  
669 - this.fcsjActualTime = t;  
670 - this.fcsjActual = fmtHHmm.print(t);  
671 - }  
672 -  
673 - /**  
674 - *  
675 - * @Title: setFcsjActualAll  
676 - * @Description: TODO(设置实际终点时间)  
677 - * @throws  
678 - */  
679 - public void setZdsjActualAll(Long t){  
680 - this.zdsjActualTime = t;  
681 - this.zdsjActual = fmtHHmm.print(t);  
682 - }  
683 -} 1 +package com.bsth.entity;
  2 +
  3 +import org.joda.time.format.DateTimeFormat;
  4 +import org.joda.time.format.DateTimeFormatter;
  5 +
  6 +import javax.persistence.*;
  7 +import java.io.Serializable;
  8 +import java.util.Date;
  9 +import java.util.HashSet;
  10 +import java.util.Set;
  11 +
  12 +/**
  13 + * 实际排班计划明细。
  14 + */
  15 +@Entity
  16 +@Table(name = "bsth_c_s_sp_info_real")
  17 +@NamedEntityGraphs({
  18 + @NamedEntityGraph(name = "scheduleRealInfo_cTasks", attributeNodes = {
  19 + @NamedAttributeNode("cTasks")
  20 + })
  21 +})
  22 +public class ScheduleRealInfo implements Serializable{
  23 +
  24 +
  25 +
  26 + /** 主键Id */
  27 + @Id
  28 + private Long id;
  29 +
  30 + /** 计划ID */
  31 + private Long spId;
  32 +
  33 + /** 排班计划日期 */
  34 + private Date scheduleDate;
  35 + private String scheduleDateStr;
  36 +
  37 + /** 真实执行时间 yyyy-MM-dd */
  38 + private String realExecDate;
  39 +
  40 + /** 线路名称 */
  41 + private String xlName;
  42 + /** 线路编码 */
  43 + private String xlBm;
  44 +
  45 + /** 路牌名称 */
  46 + private String lpName;
  47 +
  48 + /** 车辆自编号 */
  49 + private String clZbh;
  50 +
  51 + /** 驾驶员工号 */
  52 + private String jGh;
  53 + /** 驾驶员名字 */
  54 + private String jName;
  55 + /** 售票员工号 */
  56 + private String sGh;
  57 + /** 售票员名字 */
  58 + private String sName;
  59 +
  60 + /** 线路方向 */
  61 + private String xlDir;
  62 + /** 起点站code*/
  63 + private String qdzCode;
  64 + /** 起点站名字 */
  65 + private String qdzName;
  66 +
  67 + /** 终点站code*/
  68 + private String zdzCode;
  69 + /** 终点站名字 */
  70 + private String zdzName;
  71 +
  72 + /** 计划发车时间(格式 HH:mm) */
  73 + private String fcsj;
  74 + /** 计划发车时间戳*/
  75 + @Transient
  76 + private Long fcsjT;
  77 +
  78 + /** 计划终点时间(格式 HH:mm) */
  79 + private String zdsj;
  80 + /** 计划终点时间戳*/
  81 + @Transient
  82 + private Long zdsjT;
  83 +
  84 + /** 发车顺序号 */
  85 + private Integer fcno;
  86 + /** 对应班次数 */
  87 + private Integer bcs;
  88 + /** 计划里程 */
  89 + private Double jhlc;
  90 +
  91 + /** 原始计划里程 (原计调的数据) */
  92 + private Double jhlcOrig;
  93 +
  94 + /** 班次历时 */
  95 + private Integer bcsj;
  96 +
  97 + /**
  98 + * 班次类型 TODO:正常班次、出场、进场、加油、区间班次、放空班次、放大站班次、两点间空驶
  99 + */
  100 + private String bcType;
  101 +
  102 + /** 创建日期 */
  103 + @Column(name = "create_date")
  104 + private Date createDate;
  105 + /** 修改日期 */
  106 + @Column(name = "update_date")
  107 + private Date updateDate;
  108 +
  109 + /** 实际发车时间*/
  110 + private String fcsjActual;
  111 + /** 实际发车时间戳*/
  112 + @Transient
  113 + private Long fcsjActualTime;
  114 + /**实际终点时间 */
  115 + private String zdsjActual;
  116 + /** 实际终点时间戳*/
  117 + @Transient
  118 + private Long zdsjActualTime;
  119 +
  120 + /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
  121 + private int status;
  122 +
  123 + private String adjustExps;
  124 +
  125 + /** 是否是临加班次 */
  126 + private boolean sflj;
  127 +
  128 + /** 是否误点*/
  129 + @Transient
  130 + private boolean late;
  131 +
  132 + /** 备注*/
  133 + private String remarks;
  134 +
  135 + /**待发时间(格式 HH:mm) */
  136 + private String dfsj;
  137 +
  138 + /**待发时间戳 */
  139 + @Transient
  140 + private Long dfsjT;
  141 +
  142 + /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */
  143 + private Integer directiveState = -1;
  144 +
  145 + /** 起点站计划到达时间 */
  146 + @Transient
  147 + private String qdzArrDatejh;
  148 +
  149 + /** 起点站实际到达时间 */
  150 + @Transient
  151 + private String qdzArrDatesj;
  152 +
  153 + /** 子任务 */
  154 + @OneToMany(fetch = FetchType.LAZY, mappedBy = "schedule")
  155 + private Set<ChildTaskPlan> cTasks = new HashSet<>();
  156 +
  157 + /** 关联的公司名称 */
  158 + private String gsName;
  159 + /** 关联的公司编码 */
  160 + private String gsBm;
  161 + /** 关联的分公司名称 */
  162 + private String fgsName;
  163 + /** 关联的分公司编码 */
  164 + private String fgsBm;
  165 + /** 出场顺序号 */
  166 + private Integer ccno;
  167 +
  168 + //待发调试(是否自动调整)
  169 + private boolean dfAuto;
  170 + //是否有GPS信号
  171 + private boolean online;
  172 +
  173 + /** 是否有补发GPS信号 */
  174 + private boolean reissue;
  175 +
  176 +
  177 +
  178 + /**
  179 + * 换车营运标记 true 表示该主任务由 【中途换车子任务】 级联生成
  180 + */
  181 + private boolean ccService;
  182 +
  183 + @Override
  184 + public int hashCode() {
  185 + return (this.id + this.scheduleDateStr + this.xlBm + this.fcsj).hashCode();
  186 + }
  187 +
  188 + @Override
  189 + public boolean equals(Object obj) {
  190 + return this.id.equals(((ScheduleRealInfo)obj).getId());
  191 + }
  192 +
  193 + public Long getId() {
  194 + return id;
  195 + }
  196 +
  197 + public void setId(Long id) {
  198 + this.id = id;
  199 + }
  200 +
  201 + public Long getSpId() {
  202 + return spId;
  203 + }
  204 +
  205 + public void setSpId(Long spId) {
  206 + this.spId = spId;
  207 + }
  208 +
  209 + public Date getScheduleDate() {
  210 + return scheduleDate;
  211 + }
  212 +
  213 + public void setScheduleDate(Date scheduleDate) {
  214 + this.scheduleDate = scheduleDate;
  215 + }
  216 +
  217 + public String getScheduleDateStr() {
  218 + return scheduleDateStr;
  219 + }
  220 +
  221 + public void setScheduleDateStr(String scheduleDateStr) {
  222 + this.scheduleDateStr = scheduleDateStr;
  223 + }
  224 +
  225 + public String getRealExecDate() {
  226 + return realExecDate;
  227 + }
  228 +
  229 + public void setRealExecDate(String realExecDate) {
  230 + this.realExecDate = realExecDate;
  231 + }
  232 +
  233 + public String getXlName() {
  234 + return xlName;
  235 + }
  236 +
  237 + public void setXlName(String xlName) {
  238 + this.xlName = xlName;
  239 + }
  240 +
  241 + public String getXlBm() {
  242 + return xlBm;
  243 + }
  244 +
  245 + public void setXlBm(String xlBm) {
  246 + this.xlBm = xlBm;
  247 + }
  248 +
  249 + public String getLpName() {
  250 + return lpName;
  251 + }
  252 +
  253 + public void setLpName(String lpName) {
  254 + this.lpName = lpName;
  255 + }
  256 +
  257 + public String getClZbh() {
  258 + return clZbh;
  259 + }
  260 +
  261 + public void setClZbh(String clZbh) {
  262 + this.clZbh = clZbh;
  263 + }
  264 +
  265 + public String getjGh() {
  266 + return jGh;
  267 + }
  268 +
  269 + public void setjGh(String jGh) {
  270 + this.jGh = jGh;
  271 + }
  272 +
  273 + public String getjName() {
  274 + return jName;
  275 + }
  276 +
  277 + public void setjName(String jName) {
  278 + this.jName = jName;
  279 + }
  280 +
  281 + public String getsGh() {
  282 + return sGh;
  283 + }
  284 +
  285 + public void setsGh(String sGh) {
  286 + this.sGh = sGh;
  287 + }
  288 +
  289 + public String getsName() {
  290 + return sName;
  291 + }
  292 +
  293 + public void setsName(String sName) {
  294 + this.sName = sName;
  295 + }
  296 +
  297 + public String getXlDir() {
  298 + return xlDir;
  299 + }
  300 +
  301 + public void setXlDir(String xlDir) {
  302 + this.xlDir = xlDir;
  303 + }
  304 +
  305 + public String getQdzCode() {
  306 + return qdzCode;
  307 + }
  308 +
  309 + public void setQdzCode(String qdzCode) {
  310 + this.qdzCode = qdzCode;
  311 + }
  312 +
  313 + public String getQdzName() {
  314 + return qdzName;
  315 + }
  316 +
  317 + public void setQdzName(String qdzName) {
  318 + this.qdzName = qdzName;
  319 + }
  320 +
  321 + public String getZdzCode() {
  322 + return zdzCode;
  323 + }
  324 +
  325 + public void setZdzCode(String zdzCode) {
  326 + this.zdzCode = zdzCode;
  327 + }
  328 +
  329 + public String getZdzName() {
  330 + return zdzName;
  331 + }
  332 +
  333 + public void setZdzName(String zdzName) {
  334 + this.zdzName = zdzName;
  335 + }
  336 +
  337 + public String getFcsj() {
  338 + return fcsj;
  339 + }
  340 +
  341 + public void setFcsj(String fcsj) {
  342 + this.fcsj = fcsj;
  343 + }
  344 +
  345 + public Long getFcsjT() {
  346 + return fcsjT;
  347 + }
  348 +
  349 + public void setFcsjT(Long fcsjT) {
  350 + this.fcsjT = fcsjT;
  351 + }
  352 +
  353 + public String getZdsj() {
  354 + return zdsj;
  355 + }
  356 +
  357 + public void setZdsj(String zdsj) {
  358 + this.zdsj = zdsj;
  359 + }
  360 +
  361 + public Long getZdsjT() {
  362 + return zdsjT;
  363 + }
  364 +
  365 + public void setZdsjT(Long zdsjT) {
  366 + this.zdsjT = zdsjT;
  367 + }
  368 +
  369 + public Integer getFcno() {
  370 + return fcno;
  371 + }
  372 +
  373 + public void setFcno(Integer fcno) {
  374 + this.fcno = fcno;
  375 + }
  376 +
  377 + public Integer getBcs() {
  378 + return bcs;
  379 + }
  380 +
  381 + public void setBcs(Integer bcs) {
  382 + this.bcs = bcs;
  383 + }
  384 +
  385 + public Double getJhlc() {
  386 + return jhlc;
  387 + }
  388 +
  389 + public void setJhlc(Double jhlc) {
  390 + this.jhlc = jhlc;
  391 + }
  392 +
  393 + public Integer getBcsj() {
  394 + return bcsj;
  395 + }
  396 +
  397 + public void setBcsj(Integer bcsj) {
  398 + this.bcsj = bcsj;
  399 + }
  400 +
  401 + public String getBcType() {
  402 + return bcType;
  403 + }
  404 +
  405 + public void setBcType(String bcType) {
  406 + this.bcType = bcType;
  407 + }
  408 +
  409 + public Date getCreateDate() {
  410 + return createDate;
  411 + }
  412 +
  413 + public void setCreateDate(Date createDate) {
  414 + this.createDate = createDate;
  415 + }
  416 +
  417 + public Date getUpdateDate() {
  418 + return updateDate;
  419 + }
  420 +
  421 + public void setUpdateDate(Date updateDate) {
  422 + this.updateDate = updateDate;
  423 + }
  424 +
  425 + public String getFcsjActual() {
  426 + return fcsjActual;
  427 + }
  428 +
  429 + public void setFcsjActual(String fcsjActual) {
  430 + this.fcsjActual = fcsjActual;
  431 + }
  432 +
  433 + public Long getFcsjActualTime() {
  434 + return fcsjActualTime;
  435 + }
  436 +
  437 + public void setFcsjActualTime(Long fcsjActualTime) {
  438 + this.fcsjActualTime = fcsjActualTime;
  439 + }
  440 +
  441 + public String getZdsjActual() {
  442 + return zdsjActual;
  443 + }
  444 +
  445 + public void setZdsjActual(String zdsjActual) {
  446 + this.zdsjActual = zdsjActual;
  447 + }
  448 +
  449 + public Long getZdsjActualTime() {
  450 + return zdsjActualTime;
  451 + }
  452 +
  453 + public void setZdsjActualTime(Long zdsjActualTime) {
  454 + this.zdsjActualTime = zdsjActualTime;
  455 + }
  456 +
  457 + public int getStatus() {
  458 + return status;
  459 + }
  460 +
  461 + public void setStatus(int status) {
  462 + this.status = status;
  463 + }
  464 +
  465 + public String getAdjustExps() {
  466 + return adjustExps;
  467 + }
  468 +
  469 + public void setAdjustExps(String adjustExps) {
  470 + this.adjustExps = adjustExps;
  471 + }
  472 +
  473 + public boolean isSflj() {
  474 + return sflj;
  475 + }
  476 +
  477 + public void setSflj(boolean sflj) {
  478 + this.sflj = sflj;
  479 + }
  480 +
  481 + public boolean isLate() {
  482 + return late;
  483 + }
  484 +
  485 + public void setLate(boolean late) {
  486 + this.late = late;
  487 + }
  488 +
  489 + public String getRemarks() {
  490 + return remarks;
  491 + }
  492 +
  493 + public void setRemarks(String remarks) {
  494 + this.remarks = remarks;
  495 + }
  496 +
  497 + public String getDfsj() {
  498 + return dfsj;
  499 + }
  500 +
  501 + public void setDfsj(String dfsj) {
  502 + this.dfsj = dfsj;
  503 + }
  504 +
  505 + public Long getDfsjT() {
  506 + return dfsjT;
  507 + }
  508 +
  509 + public void setDfsjT(Long dfsjT) {
  510 + this.dfsjT = dfsjT;
  511 + }
  512 +
  513 + public Integer getDirectiveState() {
  514 + return directiveState;
  515 + }
  516 +
  517 + public void setDirectiveState(Integer directiveState) {
  518 + this.directiveState = directiveState;
  519 + }
  520 +
  521 + public String getQdzArrDatejh() {
  522 + return qdzArrDatejh;
  523 + }
  524 +
  525 + public void setQdzArrDatejh(String qdzArrDatejh) {
  526 + this.qdzArrDatejh = qdzArrDatejh;
  527 + }
  528 +
  529 + public String getQdzArrDatesj() {
  530 + return qdzArrDatesj;
  531 + }
  532 +
  533 + public void setQdzArrDatesj(String qdzArrDatesj) {
  534 + this.qdzArrDatesj = qdzArrDatesj;
  535 + }
  536 +
  537 + public Set<ChildTaskPlan> getcTasks() {
  538 + return cTasks;
  539 + }
  540 +
  541 + public void setcTasks(Set<ChildTaskPlan> cTasks) {
  542 + this.cTasks = cTasks;
  543 + }
  544 +
  545 + public String getGsName() {
  546 + return gsName;
  547 + }
  548 +
  549 + public void setGsName(String gsName) {
  550 + this.gsName = gsName;
  551 + }
  552 +
  553 + public String getGsBm() {
  554 + return gsBm;
  555 + }
  556 +
  557 + public void setGsBm(String gsBm) {
  558 + this.gsBm = gsBm;
  559 + }
  560 +
  561 + public String getFgsName() {
  562 + return fgsName;
  563 + }
  564 +
  565 + public void setFgsName(String fgsName) {
  566 + this.fgsName = fgsName;
  567 + }
  568 +
  569 + public String getFgsBm() {
  570 + return fgsBm;
  571 + }
  572 +
  573 + public void setFgsBm(String fgsBm) {
  574 + this.fgsBm = fgsBm;
  575 + }
  576 +
  577 + public Integer getCcno() {
  578 + return ccno;
  579 + }
  580 +
  581 + public void setCcno(Integer ccno) {
  582 + this.ccno = ccno;
  583 + }
  584 +
  585 + public boolean isDfAuto() {
  586 + return dfAuto;
  587 + }
  588 +
  589 + public void setDfAuto(boolean dfAuto) {
  590 + this.dfAuto = dfAuto;
  591 + }
  592 +
  593 + public boolean isOnline() {
  594 + return online;
  595 + }
  596 +
  597 + public void setOnline(boolean online) {
  598 + this.online = online;
  599 + }
  600 +
  601 + public boolean isReissue() {
  602 + return reissue;
  603 + }
  604 +
  605 + public void setReissue(boolean reissue) {
  606 + this.reissue = reissue;
  607 + }
  608 +
  609 + public boolean isCcService() {
  610 + return ccService;
  611 + }
  612 +
  613 + public void setCcService(boolean ccService) {
  614 + this.ccService = ccService;
  615 + }
  616 +
  617 + public Double getJhlcOrig() {
  618 + return jhlcOrig;
  619 + }
  620 +
  621 + public void setJhlcOrig(Double jhlcOrig) {
  622 + this.jhlcOrig = jhlcOrig;
  623 + }
  624 +
  625 + @Transient
  626 + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
  627 + /**
  628 + *
  629 + * @Title: setFcsjActualAll
  630 + * @Description: TODO(设置实际发车时间 时间戳)
  631 + * @throws
  632 + */
  633 + public void setFcsjActualAll(Long t){
  634 + this.fcsjActualTime = t;
  635 + this.fcsjActual = fmtHHmm.print(t);
  636 + }
  637 +
  638 + /**
  639 + *
  640 + * @Title: setFcsjActualAll
  641 + * @Description: TODO(设置实际终点时间)
  642 + * @throws
  643 + */
  644 + public void setZdsjActualAll(Long t){
  645 + this.zdsjActualTime = t;
  646 + this.zdsjActual = fmtHHmm.print(t);
  647 + }
  648 +}
src/main/java/com/bsth/server_rs/bigdata/BigscreenService.java
1 -package com.bsth.server_rs.bigdata;  
2 -  
3 -import java.math.BigDecimal;  
4 -import java.sql.ResultSet;  
5 -import java.sql.SQLException;  
6 -import java.text.DecimalFormat;  
7 -import java.text.ParseException;  
8 -import java.text.SimpleDateFormat;  
9 -import java.util.ArrayList;  
10 -import java.util.Calendar;  
11 -import java.util.Collections;  
12 -import java.util.Comparator;  
13 -import java.util.Date;  
14 -import java.util.GregorianCalendar;  
15 -import java.util.HashMap;  
16 -import java.util.HashSet;  
17 -import java.util.Iterator;  
18 -import java.util.List;  
19 -import java.util.Map;  
20 -import java.util.Set;  
21 -  
22 -import javax.ws.rs.GET;  
23 -import javax.ws.rs.Path;  
24 -import javax.ws.rs.PathParam;  
25 -import javax.ws.rs.Produces;  
26 -import javax.ws.rs.core.MediaType;  
27 -  
28 -import org.apache.commons.lang.StringUtils;  
29 -import org.slf4j.Logger;  
30 -import org.slf4j.LoggerFactory;  
31 -import org.springframework.beans.factory.annotation.Autowired;  
32 -import org.springframework.jdbc.core.JdbcTemplate;  
33 -import org.springframework.jdbc.core.RowMapper;  
34 -import org.springframework.stereotype.Component;  
35 -  
36 -import com.alibaba.fastjson.JSON;  
37 -import com.alibaba.fastjson.JSONObject;  
38 -import com.bsth.entity.ChildTaskPlan;  
39 -import com.bsth.entity.ScheduleRealInfo;  
40 -import com.bsth.repository.ScheduleRealInfoRepository;  
41 -import com.bsth.util.Arith;  
42 -  
43 -@Component  
44 -@Path("/bigscreen")  
45 -@Produces({MediaType.APPLICATION_JSON})  
46 -public class BigscreenService {  
47 - Logger logger = LoggerFactory.getLogger(this.getClass());  
48 -  
49 - @Autowired  
50 - JdbcTemplate jdbcTemplate;  
51 -  
52 - @Autowired  
53 - ScheduleRealInfoRepository scheduleRealInfoRepository;  
54 -  
55 - DecimalFormat df = new DecimalFormat("0.###");  
56 -  
57 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
58 -  
59 - SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");  
60 -  
61 - /*  
62 - * 线路接口开始  
63 - */  
64 - private static String getNature(String natureCode){  
65 - String natureName="";  
66 - if("lj".equals(natureCode)){  
67 - natureName="路救";  
68 - }else if("bc".equals(natureCode)){  
69 - natureName="备车";  
70 - }else if("dbc".equals(natureCode)){  
71 - natureName="定班车";  
72 - }else if("yxl".equals(natureCode)){  
73 - natureName="夜宵路";  
74 - }else if("cgxl".equals(natureCode)){  
75 - natureName="常规线路";  
76 - }else if("gjxl".equals(natureCode)){  
77 - natureName="过江线路";  
78 - }else if("csbs".equals(natureCode)){  
79 - natureName="穿梭巴士";  
80 - }else if("tyxl".equals(natureCode)){  
81 - natureName="特约线路";  
82 - }else if("cctxl".equals(natureCode)){  
83 - natureName="村村通线路";  
84 - }else if("qt".equals(natureCode)){  
85 - natureName="其他";  
86 - }else {  
87 - natureName="";  
88 - }  
89 - return natureName;  
90 - }  
91 -  
92 - private static String getGs(String gs){  
93 - String name="";  
94 - if("05".equals(gs)){  
95 - name="杨高公司";  
96 - }else if("22".equals(gs)){  
97 - name="金高公司";  
98 - }else if("26".equals(gs)){  
99 - name="南汇公司";  
100 - }else if("55".equals(gs)){  
101 - name="上南公司";  
102 - }else{  
103 - name="";  
104 - }  
105 - return name;  
106 - }  
107 -  
108 - private static String getState(String carState){  
109 - if(carState.equals("1")){  
110 - return "在册未在用";  
111 - }else if(carState.equals("2")){  
112 - return "在册在用";  
113 - }else if(carState.equals("3")){  
114 - return "报废审核中";  
115 - }else if(carState.equals("4")){  
116 - return "报废待更新";  
117 - }else if(carState.equals("5")){  
118 - return "报废已更新";  
119 - }else{  
120 - return "";  
121 - }  
122 - }  
123 -  
124 - public static boolean isInOut(ScheduleRealInfo s){  
125 - boolean fage=false;  
126 - if(s.getBcType().equals("in")){  
127 - fage=true;  
128 - }  
129 - if(s.getBcType().equals("out")){  
130 - fage=true;  
131 - }  
132 - if(s.getBcType().equals("ldks")){  
133 - fage=true;  
134 - }  
135 - return fage;  
136 - }  
137 -  
138 - public static boolean isInOut(String bcType){  
139 - boolean fage=false;  
140 - if(bcType.equals("in")){  
141 - fage=true;  
142 - }  
143 - if(bcType.equals("out")){  
144 - fage=true;  
145 - }  
146 - if(bcType.equals("ldks")){  
147 - fage=true;  
148 - }  
149 - return fage;  
150 - }  
151 -  
152 - public Map<String, Long> getEndtime(String date){  
153 - Map<String, Long> map=new HashMap<String,Long>();  
154 - String sql="select xl,endtime from bsth_c_calc_count "  
155 - + " where date='"+date+"' ";  
156 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
157 - new RowMapper<Map<String, Object>>(){  
158 - @Override  
159 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
160 - Map<String, Object> m=new HashMap<String, Object>();  
161 - m.put("line", rs.getString("xl"));  
162 - m.put("endtime", rs.getString("endtime"));  
163 - return m;  
164 - }  
165 - });  
166 - for (int i = 0; i < list.size(); i++) {  
167 - map.put(list.get(i).get("line").toString(),  
168 - Long.parseLong(list.get(i).get("endtime").toString()));  
169 - }  
170 - return map;  
171 - }  
172 -  
173 - /**给大屏的线路数、班次、里程汇总接口  
174 - *  
175 - */  
176 - @GET  
177 - @Path("/selectData/getBigScreen")  
178 - public JSONObject getBigScreen(){  
179 - Map<String, Object> resMap = new HashMap<String, Object>();  
180 -  
181 - int day = 8;//天数  
182 -  
183 - Date dd = new Date();  
184 - String date = sd.format(dd); //yyyy-MM-dd 当天  
185 - Date dd2 = new Date();  
186 - dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);  
187 - String date2 = sd.format(dd2); //yyyy-MM-dd 7天前(加上当天就是取8天数据)  
188 -  
189 - String[] dates = new String[day];  
190 - Map<String, Integer> datesMap = new HashMap<String, Integer>();  
191 -  
192 - for(int i = 0; i < day; i++){  
193 - Date tempDate = new Date();  
194 - tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);  
195 - String format = sd.format(tempDate);  
196 - dates[i] = format;  
197 - datesMap.put(format, i);  
198 - }  
199 -  
200 - String gpLineSql = "select * from bsth_c_line_plate";  
201 - List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,  
202 - new RowMapper<Map<String, Object>>(){  
203 - @Override  
204 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
205 - Map<String, Object> m=new HashMap<String,Object>();  
206 - m.put("lineName", rs.getString("line_name"));  
207 - m.put("lineCode", rs.getString("line_code"));  
208 - return m;  
209 - }  
210 - });  
211 -  
212 - Set<String> gpSet = new HashSet<String>();  
213 - for(Map<String, Object> t : gpLineList){  
214 - if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){  
215 - gpSet.add(t.get("lineCode").toString().trim());  
216 - }  
217 - }  
218 -  
219 - String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"  
220 - + " a.shanghai_linecode, a.nature from "  
221 - + " bsth_c_line a left join bsth_c_line_config b "  
222 - + " on a.id=b.line where "  
223 - + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "  
224 - + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
225 - List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,  
226 - new RowMapper<Map<String, Object>>(){  
227 - @Override  
228 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
229 - Map<String, Object> m=new HashMap<String,Object>();  
230 - m.put("state", rs.getString("start_opt"));  
231 - m.put("company", rs.getString("company"));  
232 - m.put("companyName", getGs(rs.getString("company")));  
233 - m.put("lineCode",rs.getString("line_code"));  
234 - m.put("name", rs.getString("name"));  
235 - m.put("level", rs.getString("level"));  
236 - m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));  
237 - m.put("nature", getNature(rs.getString("nature")));  
238 - return m;  
239 - }  
240 - });  
241 -  
242 - int level1 = 0, level2 = 0;  
243 - for(Map<String, Object> t : lineList){  
244 - if(t.get("level") != null){  
245 - if("1".equals(t.get("level").toString())){  
246 - ++level1;  
247 - } else if("2".equals(t.get("level").toString())){  
248 - ++level2;  
249 - }  
250 - }  
251 - }  
252 -  
253 -  
254 - String yyxlSql="SELECT line_code from bsth_c_line "  
255 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
256 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
257 - new RowMapper<Map<String, Object>>(){  
258 - @Override  
259 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
260 - Map<String, Object> m=new HashMap<String,Object>();  
261 - m.put("lineCode", rs.getString("line_code"));  
262 - return m;  
263 - }  
264 - });  
265 - Set<String> yyLine = new HashSet<String>();  
266 - for(Map<String, Object> t : yyxlList){  
267 - if(t.get("lineCode") != null){  
268 - yyLine.add(t.get("lineCode").toString());  
269 - }  
270 - }  
271 -  
272 -  
273 - List<String> objList = new ArrayList<String>();  
274 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
275 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
276 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
277 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
278 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
279 - + " from bsth_c_calc_count where gsdm != '77'"  
280 - + " and date >= ? and date <= ?";  
281 - objList.add(date2);  
282 - objList.add(date);  
283 -  
284 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
285 - objList.toArray(),  
286 - new RowMapper<Map<String, Object>>(){  
287 - @Override  
288 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
289 - Map<String, Object> m=new HashMap<String,Object>();  
290 - m.put("lineCode",rs.getString("xl"));  
291 - m.put("lineName", rs.getString("xl_name"));  
292 - m.put("date", rs.getString("date"));  
293 -  
294 - m.put("jhbc", rs.getString("jhbc"));  
295 - m.put("sjbc", rs.getString("sjbc"));  
296 - m.put("bczxl", rs.getString("bczxl"));  
297 - m.put("jhbcz", rs.getString("jhbcz"));  
298 -  
299 - m.put("jhcc", rs.getString("jhcc"));  
300 - m.put("sjcc", rs.getString("sjcc"));  
301 - m.put("ccl", rs.getString("ccl"));  
302 - m.put("jhccz", rs.getString("jhccz"));  
303 -  
304 - m.put("jhyylc", rs.getString("jhyylc"));  
305 - m.put("sjyylc", rs.getString("sjyylc"));  
306 - m.put("jhyylcz", rs.getString("jhyylcz"));  
307 - m.put("jhkslc", rs.getString("jhkslc"));  
308 - m.put("sjkslc", rs.getString("sjkslc"));  
309 - m.put("jhkslcz", rs.getString("jhkslcz"));  
310 -  
311 - m.put("jhgfbcs", rs.getString("jhssgfbcs"));  
312 - m.put("sjgfbcs", rs.getString("sjgfbcs"));  
313 - m.put("jhgfbcsz", rs.getString("jhgfbcsz"));  
314 - m.put("jhdgbcs", rs.getString("jhssdgbcs"));  
315 - m.put("sjdgbcs", rs.getString("sjdgbcs"));  
316 - m.put("jhdgbcsz", rs.getString("jhdgbcsz"));  
317 -  
318 - m.put("jhsmbcs", rs.getString("jhsmbcs"));  
319 - m.put("sjsmbczds", rs.getString("sjsmbczds"));  
320 - m.put("smbczdl", rs.getString("smbczdl"));  
321 - m.put("jhsmbcsz", rs.getString("jhsmbcsz"));  
322 - m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));  
323 - m.put("smbczdlz", rs.getString("smbczdlz"));  
324 -  
325 - m.put("jhszfcs", rs.getString("jhszfcs"));  
326 - m.put("sjszfczds", rs.getString("sjszfczds"));  
327 - m.put("szfczdl", rs.getString("szfczdl"));  
328 -  
329 - Date date = new Date();  
330 - date.setTime(rs.getTimestamp("create_date").getTime());  
331 - m.put("createDate", sdf.format(date));  
332 - return m;  
333 - }  
334 - });  
335 -  
336 - List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();  
337 - List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();  
338 - List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();  
339 - List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();  
340 -  
341 - List<Map<String, Object>> ccList = createMap("计划出车率", dates);  
342 - List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);  
343 - List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);  
344 - List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);  
345 - List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);  
346 - List<Map<String, Object>> qkList = createMap("签卡率", dates);  
347 -  
348 - long sjbcs_z = 0l;//实时总班次  
349 - BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程  
350 - long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,  
351 - jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;  
352 -  
353 - for(Map<String, Object> t : list){  
354 - if(yyLine.contains(t.get("lineCode").toString())){  
355 - String d = t.get("date").toString();  
356 - if(date.equals(d)){  
357 - sjbcs_z += Long.valueOf(t.get("sjbc").toString());  
358 - yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));  
359 -  
360 - jhcc += Long.valueOf(t.get("jhccz").toString());  
361 - sjcc += Long.valueOf(t.get("sjcc").toString());  
362 - jhbc += Long.valueOf(t.get("jhbc").toString());  
363 - sjbc += Long.valueOf(t.get("sjbc").toString());  
364 - jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());  
365 - sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());  
366 - jhqqbc += Long.valueOf(t.get("jhszfcs").toString());  
367 - sjqqzd += Long.valueOf(t.get("sjszfczds").toString());  
368 - if(gpSet.contains(t.get("lineCode").toString())){  
369 - jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());  
370 - sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());  
371 - }  
372 -  
373 - Map<String, Object> bc = new HashMap<String, Object>();  
374 - bc.put("type", "班次执行详情");  
375 - bc.put("lineName", t.get("lineName").toString());  
376 - bc.put("jh", t.get("jhbc").toString());  
377 - bc.put("sj", t.get("sjbc").toString());  
378 - bcDetail.add(bc);  
379 -  
380 - Map<String, Object> sm = new HashMap<String, Object>();  
381 - sm.put("type", "首站发车详情");  
382 - sm.put("lineName", t.get("lineName").toString());  
383 - sm.put("jh", t.get("jhsmbcs").toString());  
384 - sm.put("sj", t.get("sjsmbczds").toString());  
385 - smDetail.add(sm);  
386 -  
387 - Map<String, Object> qq = new HashMap<String, Object>();  
388 - qq.put("type", "起讫站发车准点详情");  
389 - qq.put("lineName", t.get("lineName").toString());  
390 - qq.put("jh", t.get("jhszfcs").toString());  
391 - qq.put("sj", t.get("sjszfczds").toString());  
392 - qqDetail.add(qq);  
393 -  
394 - if(gpSet.contains(t.get("lineCode").toString())){  
395 - Map<String, Object> gp = new HashMap<String, Object>();  
396 - gp.put("type", "挂牌线路发车准点详情");  
397 - gp.put("lineName", t.get("lineName").toString());  
398 - gp.put("jh", t.get("jhszfcs").toString());  
399 - gp.put("sj", t.get("sjszfczds").toString());  
400 - gpDetail.add(gp);  
401 - }  
402 - }  
403 -  
404 - Map<String, Object> ccMap = ccList.get(datesMap.get(d));  
405 - Map<String, Object> bcMap = bcList.get(datesMap.get(d));  
406 - Map<String, Object> smMap = smList.get(datesMap.get(d));  
407 - Map<String, Object> qqMap = qqList.get(datesMap.get(d));  
408 - Map<String, Object> gpMap = gpList.get(datesMap.get(d));  
409 -  
410 - ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));  
411 - ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));  
412 - bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));  
413 - bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));  
414 - smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));  
415 - smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));  
416 - qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));  
417 - qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));  
418 - if(gpSet.contains(t.get("lineCode").toString())){  
419 - gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));  
420 - gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));  
421 - }  
422 -  
423 - }  
424 - }  
425 -  
426 -  
427 - //计算签卡率  
428 - for(String d : dates){  
429 - if(d!=null && d.trim().length() > 0){  
430 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(d);  
431 - Map<String, Object> qkMap = qkList.get(datesMap.get(d));  
432 - long jh = 0, sj = 0;  
433 - for(ScheduleRealInfo s : findAll){  
434 - if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
435 - if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){  
436 - ++jh;  
437 - String sty = decimalToBinary(s.getRfidState());  
438 - Integer state = Integer.parseInt(sty);  
439 - if ((state & 4) == 4) {  
440 - ++sj;  
441 - }  
442 - }  
443 - }  
444 - }  
445 - qkMap.put("jh", jh);  
446 - qkMap.put("sj", sj);  
447 -  
448 - if(date.equals(d)){  
449 - bcs_qk = jh;  
450 - qks = sj;  
451 - }  
452 - }  
453 - }  
454 -  
455 -  
456 - List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();  
457 - zxlList.addAll(ccList);  
458 - zxlList.addAll(bcList);  
459 - zxlList.addAll(smList);  
460 - zxlList.addAll(qqList);  
461 - zxlList.addAll(gpList);  
462 - zxlList.addAll(qkList);  
463 -  
464 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
465 - detailsList.addAll(bcDetail);  
466 - detailsList.addAll(smDetail);  
467 - detailsList.addAll(qqDetail);  
468 - detailsList.addAll(gpDetail);  
469 -  
470 - for(Map<String, Object> t : zxlList){  
471 - if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){  
472 - t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),  
473 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());  
474 - } else {  
475 - t.put("ratio", "0");  
476 - }  
477 - }  
478 -  
479 - List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();  
480 -  
481 - Date dd1 = new Date();  
482 - dd1.setTime(dd.getTime() - 1l*1000*60*60*24);  
483 - String date1 = sd.format(dd1); //前一天  
484 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);  
485 - List<ScheduleRealInfo> listSche = new ArrayList<ScheduleRealInfo>();  
486 - List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();  
487 - for(ScheduleRealInfo s : findAll){  
488 - if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
489 - listSche.add(s);  
490 - Set<ChildTaskPlan> cts = s.getcTasks();  
491 - if (cts != null && cts.size() > 0) {  
492 - list_s.add(s);  
493 - } else {  
494 - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {  
495 - list_s.add(s);  
496 - }  
497 - }  
498 - }  
499 - }  
500 - double jhyygl = culateJhgl(listSche);//计划营运公里  
501 - double jhjccgl = culateJhJccgl(listSche);  
502 - double jhzgl = Arith.add(jhyygl, jhjccgl);  
503 - double sjgl = culateSjgl(list_s);//实际营运公里(不含临加)  
504 - double sjljgl = culateLjgl(listSche);//实际临加公里  
505 - double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里  
506 - double sjjccgl = culateJccgl(list_s);  
507 - double sjksgl = culateKsgl(list_s);  
508 - double zksgl = Arith.add(sjjccgl, sjksgl);  
509 - double sjzgl = Arith.add(sjyygl, zksgl);//实际总公里  
510 - double lz = culateCJLC(listSche, "路阻");  
511 - double dm = culateCJLC(listSche, "吊慢");  
512 - double gz = culateCJLC(listSche, "故障");  
513 - double jf = culateCJLC(listSche, "纠纷");  
514 - double zs = culateCJLC(listSche, "肇事");  
515 - double qr = culateCJLC(listSche, "缺人");  
516 - double qc = culateCJLC(listSche, "缺车");  
517 - double qrqc = Arith.add(qr, qc);//缺人缺车  
518 - double kx = culateCJLC(listSche, "客稀");  
519 - double qh = culateCJLC(listSche, "气候");  
520 - double yw = culateCJLC(listSche, "援外");  
521 - double lb_pc = culateCJLC(listSche, "配车");  
522 - double lb_by = culateCJLC(listSche, "保养");  
523 - double lb_cj = culateCJLC(listSche, "抽减");  
524 - double lb_qt = culateCJLC(listSche, "其他");  
525 - double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他  
526 -  
527 - Map<String, Object> jhzglMap = new HashMap<String, Object>();  
528 - jhzglMap.put("name", "计划总公里");  
529 - jhzglMap.put("value", jhzgl);  
530 - glList.add(jhzglMap);  
531 - Map<String, Object> sjzglMap = new HashMap<String, Object>();  
532 - sjzglMap.put("name", "实际总公里");  
533 - sjzglMap.put("value", sjzgl);  
534 - glList.add(sjzglMap);  
535 - Map<String, Object> lzMap = new HashMap<String, Object>();  
536 - lzMap.put("name", "路阻");  
537 - lzMap.put("value", lz);  
538 - glList.add(lzMap);  
539 - Map<String, Object> dmMap = new HashMap<String, Object>();  
540 - dmMap.put("name", "吊慢");  
541 - dmMap.put("value", dm);  
542 - glList.add(dmMap);  
543 - Map<String, Object> gzMap = new HashMap<String, Object>();  
544 - gzMap.put("name", "故障");  
545 - gzMap.put("value", gz);  
546 - glList.add(gzMap);  
547 - Map<String, Object> jfMap = new HashMap<String, Object>();  
548 - jfMap.put("name", "纠纷");  
549 - jfMap.put("value", jf);  
550 - glList.add(jfMap);  
551 - Map<String, Object> zsMap = new HashMap<String, Object>();  
552 - zsMap.put("name", "肇事");  
553 - zsMap.put("value", zs);  
554 - glList.add(zsMap);  
555 - Map<String, Object> qrqcMap = new HashMap<String, Object>();  
556 - qrqcMap.put("name", "缺人缺车");  
557 - qrqcMap.put("value", qrqc);  
558 - glList.add(qrqcMap);  
559 - Map<String, Object> kxMap = new HashMap<String, Object>();  
560 - kxMap.put("name", "客稀");  
561 - kxMap.put("value", kx);  
562 - glList.add(kxMap);  
563 - Map<String, Object> qhMap = new HashMap<String, Object>();  
564 - qhMap.put("name", "气候");  
565 - qhMap.put("value", qh);  
566 - glList.add(qhMap);  
567 - Map<String, Object> ywMap = new HashMap<String, Object>();  
568 - ywMap.put("name", "援外");  
569 - ywMap.put("value", yw);  
570 - glList.add(ywMap);  
571 - Map<String, Object> qtMap = new HashMap<String, Object>();  
572 - qtMap.put("name", "其他");  
573 - qtMap.put("value", qt);  
574 - glList.add(qtMap);  
575 -  
576 -  
577 - resMap.put("lineCount", lineList.size());  
578 - resMap.put("level1Count", level1);  
579 - resMap.put("level2Count", level2);  
580 - resMap.put("sjbcs", sjbcs_z);  
581 - resMap.put("sjlcs", yygl_z.doubleValue());  
582 -  
583 - resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),  
584 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
585 - resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),  
586 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
587 - resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),  
588 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
589 - resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),  
590 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
591 - resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),  
592 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
593 - resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),  
594 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
595 -  
596 - resMap.put("ratioList", zxlList);  
597 -  
598 - resMap.put("detailsList", detailsList);  
599 -  
600 - resMap.put("mileageList", glList);  
601 -  
602 - return JSON.parseObject(JSON.toJSONString(resMap));  
603 - }  
604 -  
605 - /**给大屏的线路数、班次、里程汇总接口  
606 - * 按直属公司查询  
607 - */  
608 - @GET  
609 - @Path("/selectData/getBigScreen/{gsdm}")  
610 - public JSONObject getBigScreen(@PathParam("gsdm") String gsdm){  
611 - Map<String, Object> resMap = new HashMap<String, Object>();  
612 -  
613 - int day = 8;//天数  
614 -  
615 - Date dd = new Date();  
616 - String date = sd.format(dd); //yyyy-MM-dd 当天  
617 - Date dd2 = new Date();  
618 - dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);  
619 - String date2 = sd.format(dd2); //yyyy-MM-dd 7天前(加上当天就是取8天数据)  
620 -  
621 - String[] dates = new String[day];  
622 - Map<String, Integer> datesMap = new HashMap<String, Integer>();  
623 -  
624 - for(int i = 0; i < day; i++){  
625 - Date tempDate = new Date();  
626 - tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);  
627 - String format = sd.format(tempDate);  
628 - dates[i] = format;  
629 - datesMap.put(format, i);  
630 - }  
631 -  
632 - String gpLineSql = "select * from bsth_c_line_plate";  
633 - List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,  
634 - new RowMapper<Map<String, Object>>(){  
635 - @Override  
636 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
637 - Map<String, Object> m=new HashMap<String,Object>();  
638 - m.put("lineName", rs.getString("line_name"));  
639 - m.put("lineCode", rs.getString("line_code"));  
640 - return m;  
641 - }  
642 - });  
643 -  
644 - Set<String> gpSet = new HashSet<String>();  
645 - for(Map<String, Object> t : gpLineList){  
646 - if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){  
647 - gpSet.add(t.get("lineCode").toString().trim());  
648 - }  
649 - }  
650 -  
651 - String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"  
652 - + " a.shanghai_linecode, a.nature from "  
653 - + " bsth_c_line a left join bsth_c_line_config b "  
654 - + " on a.id=b.line where "  
655 - + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "  
656 - + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
657 - List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,  
658 - new RowMapper<Map<String, Object>>(){  
659 - @Override  
660 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
661 - Map<String, Object> m=new HashMap<String,Object>();  
662 - m.put("state", rs.getString("start_opt"));  
663 - m.put("company", rs.getString("company"));  
664 - m.put("companyName", getGs(rs.getString("company")));  
665 - m.put("lineCode",rs.getString("line_code"));  
666 - m.put("name", rs.getString("name"));  
667 - m.put("level", rs.getString("level"));  
668 - m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));  
669 - m.put("nature", getNature(rs.getString("nature")));  
670 - return m;  
671 - }  
672 - });  
673 -  
674 - int level1 = 0, level2 = 0, lineCount = 0;  
675 - for(Map<String, Object> t : lineList){  
676 - if(t.containsKey("company") && t.get("company").toString().trim().equals(gsdm)){  
677 - ++lineCount;  
678 - if(t.get("level") != null){  
679 - if("1".equals(t.get("level").toString())){  
680 - ++level1;  
681 - } else if("2".equals(t.get("level").toString())){  
682 - ++level2;  
683 - }  
684 - }  
685 - }  
686 - }  
687 -  
688 -  
689 - String yyxlSql="SELECT line_code from bsth_c_line "  
690 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
691 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
692 - new RowMapper<Map<String, Object>>(){  
693 - @Override  
694 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
695 - Map<String, Object> m=new HashMap<String,Object>();  
696 - m.put("lineCode", rs.getString("line_code"));  
697 - return m;  
698 - }  
699 - });  
700 - Set<String> yyLine = new HashSet<String>();  
701 - for(Map<String, Object> t : yyxlList){  
702 - if(t.get("lineCode") != null){  
703 - yyLine.add(t.get("lineCode").toString());  
704 - }  
705 - }  
706 -  
707 -  
708 - List<String> objList = new ArrayList<String>();  
709 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
710 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
711 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
712 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
713 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
714 - + " from bsth_c_calc_count "  
715 - + " where date >= ? and date <= ? and gsdm = ?";  
716 - objList.add(date2);  
717 - objList.add(date);  
718 - objList.add(gsdm);  
719 -  
720 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
721 - objList.toArray(),  
722 - new RowMapper<Map<String, Object>>(){  
723 - @Override  
724 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
725 - Map<String, Object> m=new HashMap<String,Object>();  
726 - m.put("lineCode",rs.getString("xl"));  
727 - m.put("lineName", rs.getString("xl_name"));  
728 - m.put("date", rs.getString("date"));  
729 -  
730 - m.put("jhbc", rs.getString("jhbc"));  
731 - m.put("sjbc", rs.getString("sjbc"));  
732 - m.put("bczxl", rs.getString("bczxl"));  
733 - m.put("jhbcz", rs.getString("jhbcz"));  
734 -  
735 - m.put("jhcc", rs.getString("jhcc"));  
736 - m.put("sjcc", rs.getString("sjcc"));  
737 - m.put("ccl", rs.getString("ccl"));  
738 - m.put("jhccz", rs.getString("jhccz"));  
739 -  
740 - m.put("jhyylc", rs.getString("jhyylc"));  
741 - m.put("sjyylc", rs.getString("sjyylc"));  
742 - m.put("jhyylcz", rs.getString("jhyylcz"));  
743 - m.put("jhkslc", rs.getString("jhkslc"));  
744 - m.put("sjkslc", rs.getString("sjkslc"));  
745 - m.put("jhkslcz", rs.getString("jhkslcz"));  
746 -  
747 - m.put("jhgfbcs", rs.getString("jhssgfbcs"));  
748 - m.put("sjgfbcs", rs.getString("sjgfbcs"));  
749 - m.put("jhgfbcsz", rs.getString("jhgfbcsz"));  
750 - m.put("jhdgbcs", rs.getString("jhssdgbcs"));  
751 - m.put("sjdgbcs", rs.getString("sjdgbcs"));  
752 - m.put("jhdgbcsz", rs.getString("jhdgbcsz"));  
753 -  
754 - m.put("jhsmbcs", rs.getString("jhsmbcs"));  
755 - m.put("sjsmbczds", rs.getString("sjsmbczds"));  
756 - m.put("smbczdl", rs.getString("smbczdl"));  
757 - m.put("jhsmbcsz", rs.getString("jhsmbcsz"));  
758 - m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));  
759 - m.put("smbczdlz", rs.getString("smbczdlz"));  
760 -  
761 - m.put("jhszfcs", rs.getString("jhszfcs"));  
762 - m.put("sjszfczds", rs.getString("sjszfczds"));  
763 - m.put("szfczdl", rs.getString("szfczdl"));  
764 -  
765 - Date date = new Date();  
766 - date.setTime(rs.getTimestamp("create_date").getTime());  
767 - m.put("createDate", sdf.format(date));  
768 - return m;  
769 - }  
770 - });  
771 -  
772 - List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();  
773 - List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();  
774 - List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();  
775 - List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();  
776 -  
777 - List<Map<String, Object>> ccList = createMap("计划出车率", dates);  
778 - List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);  
779 - List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);  
780 - List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);  
781 - List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);  
782 - List<Map<String, Object>> qkList = createMap("签卡率", dates);  
783 -  
784 - long sjbcs_z = 0l;//实时总班次  
785 - BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程  
786 - long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,  
787 - jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;  
788 -  
789 - for(Map<String, Object> t : list){  
790 - if(yyLine.contains(t.get("lineCode").toString())){  
791 - String d = t.get("date").toString();  
792 - if(date.equals(d)){  
793 - sjbcs_z += Long.valueOf(t.get("sjbc").toString());  
794 - yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));  
795 -  
796 - jhcc += Long.valueOf(t.get("jhccz").toString());  
797 - sjcc += Long.valueOf(t.get("sjcc").toString());  
798 - jhbc += Long.valueOf(t.get("jhbc").toString());  
799 - sjbc += Long.valueOf(t.get("sjbc").toString());  
800 - jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());  
801 - sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());  
802 - jhqqbc += Long.valueOf(t.get("jhszfcs").toString());  
803 - sjqqzd += Long.valueOf(t.get("sjszfczds").toString());  
804 - if(gpSet.contains(t.get("lineCode").toString())){  
805 - jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());  
806 - sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());  
807 - }  
808 -  
809 - Map<String, Object> bc = new HashMap<String, Object>();  
810 - bc.put("type", "班次执行详情");  
811 - bc.put("lineName", t.get("lineName").toString());  
812 - bc.put("jh", t.get("jhbc").toString());  
813 - bc.put("sj", t.get("sjbc").toString());  
814 - bcDetail.add(bc);  
815 -  
816 - Map<String, Object> sm = new HashMap<String, Object>();  
817 - sm.put("type", "首站发车详情");  
818 - sm.put("lineName", t.get("lineName").toString());  
819 - sm.put("jh", t.get("jhsmbcs").toString());  
820 - sm.put("sj", t.get("sjsmbczds").toString());  
821 - smDetail.add(sm);  
822 -  
823 - Map<String, Object> qq = new HashMap<String, Object>();  
824 - qq.put("type", "起讫站发车准点详情");  
825 - qq.put("lineName", t.get("lineName").toString());  
826 - qq.put("jh", t.get("jhszfcs").toString());  
827 - qq.put("sj", t.get("sjszfczds").toString());  
828 - qqDetail.add(qq);  
829 -  
830 - if(gpSet.contains(t.get("lineCode").toString())){  
831 - Map<String, Object> gp = new HashMap<String, Object>();  
832 - gp.put("type", "挂牌线路发车准点详情");  
833 - gp.put("lineName", t.get("lineName").toString());  
834 - gp.put("jh", t.get("jhszfcs").toString());  
835 - gp.put("sj", t.get("sjszfczds").toString());  
836 - gpDetail.add(gp);  
837 - }  
838 - }  
839 -  
840 - Map<String, Object> ccMap = ccList.get(datesMap.get(d));  
841 - Map<String, Object> bcMap = bcList.get(datesMap.get(d));  
842 - Map<String, Object> smMap = smList.get(datesMap.get(d));  
843 - Map<String, Object> qqMap = qqList.get(datesMap.get(d));  
844 - Map<String, Object> gpMap = gpList.get(datesMap.get(d));  
845 -  
846 - ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));  
847 - ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));  
848 - bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));  
849 - bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));  
850 - smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));  
851 - smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));  
852 - qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));  
853 - qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));  
854 - if(gpSet.contains(t.get("lineCode").toString())){  
855 - gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));  
856 - gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));  
857 - }  
858 -  
859 - }  
860 - }  
861 -  
862 -  
863 - //计算签卡率  
864 - for(String d : dates){  
865 - if(d!=null && d.trim().length() > 0){  
866 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(d);  
867 - Map<String, Object> qkMap = qkList.get(datesMap.get(d));  
868 - long jh = 0, sj = 0;  
869 - for(ScheduleRealInfo s : findAll){  
870 - if(s.getGsBm() != null && s.getGsBm().trim().equals(gsdm)){  
871 - if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
872 - if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){  
873 - ++jh;  
874 - String sty = decimalToBinary(s.getRfidState());  
875 - Integer state = Integer.parseInt(sty);  
876 - if ((state & 4) == 4) {  
877 - ++sj;  
878 - }  
879 - }  
880 - }  
881 - }  
882 - }  
883 - qkMap.put("jh", jh);  
884 - qkMap.put("sj", sj);  
885 -  
886 - if(date.equals(d)){  
887 - bcs_qk = jh;  
888 - qks = sj;  
889 - }  
890 - }  
891 - }  
892 -  
893 -  
894 - List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();  
895 - zxlList.addAll(ccList);  
896 - zxlList.addAll(bcList);  
897 - zxlList.addAll(smList);  
898 - zxlList.addAll(qqList);  
899 - zxlList.addAll(gpList);  
900 - zxlList.addAll(qkList);  
901 -  
902 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
903 - detailsList.addAll(bcDetail);  
904 - detailsList.addAll(smDetail);  
905 - detailsList.addAll(qqDetail);  
906 - detailsList.addAll(gpDetail);  
907 -  
908 - for(Map<String, Object> t : zxlList){  
909 - if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){  
910 - t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),  
911 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());  
912 - } else {  
913 - t.put("ratio", "0");  
914 - }  
915 - }  
916 -  
917 - List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();  
918 -  
919 - Date dd1 = new Date();  
920 - dd1.setTime(dd.getTime() - 1l*1000*60*60*24);  
921 - String date1 = sd.format(dd1); //前一天  
922 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);  
923 - List<ScheduleRealInfo> listSche = new ArrayList<ScheduleRealInfo>();  
924 - List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();  
925 - for(ScheduleRealInfo s : findAll){  
926 - if(s.getGsBm() != null && s.getGsBm().trim().equals(gsdm)){  
927 - if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
928 - listSche.add(s);  
929 - Set<ChildTaskPlan> cts = s.getcTasks();  
930 - if (cts != null && cts.size() > 0) {  
931 - list_s.add(s);  
932 - } else {  
933 - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {  
934 - list_s.add(s);  
935 - }  
936 - }  
937 - }  
938 - }  
939 - }  
940 - double jhyygl = culateJhgl(listSche);//计划营运公里  
941 - double jhjccgl = culateJhJccgl(listSche);  
942 - double jhzgl = Arith.add(jhyygl, jhjccgl);  
943 - double sjgl = culateSjgl(list_s);//实际营运公里(不含临加)  
944 - double sjljgl = culateLjgl(listSche);//实际临加公里  
945 - double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里  
946 - double sjjccgl = culateJccgl(list_s);  
947 - double sjksgl = culateKsgl(list_s);  
948 - double zksgl = Arith.add(sjjccgl, sjksgl);  
949 - double sjzgl = Arith.add(sjyygl, zksgl);//实际总公里  
950 - double lz = culateCJLC(listSche, "路阻");  
951 - double dm = culateCJLC(listSche, "吊慢");  
952 - double gz = culateCJLC(listSche, "故障");  
953 - double jf = culateCJLC(listSche, "纠纷");  
954 - double zs = culateCJLC(listSche, "肇事");  
955 - double qr = culateCJLC(listSche, "缺人");  
956 - double qc = culateCJLC(listSche, "缺车");  
957 - double qrqc = Arith.add(qr, qc);//缺人缺车  
958 - double kx = culateCJLC(listSche, "客稀");  
959 - double qh = culateCJLC(listSche, "气候");  
960 - double yw = culateCJLC(listSche, "援外");  
961 - double lb_pc = culateCJLC(listSche, "配车");  
962 - double lb_by = culateCJLC(listSche, "保养");  
963 - double lb_cj = culateCJLC(listSche, "抽减");  
964 - double lb_qt = culateCJLC(listSche, "其他");  
965 - double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他  
966 -  
967 - Map<String, Object> jhzglMap = new HashMap<String, Object>();  
968 - jhzglMap.put("name", "计划总公里");  
969 - jhzglMap.put("value", jhzgl);  
970 - glList.add(jhzglMap);  
971 - Map<String, Object> sjzglMap = new HashMap<String, Object>();  
972 - sjzglMap.put("name", "实际总公里");  
973 - sjzglMap.put("value", sjzgl);  
974 - glList.add(sjzglMap);  
975 - Map<String, Object> lzMap = new HashMap<String, Object>();  
976 - lzMap.put("name", "路阻");  
977 - lzMap.put("value", lz);  
978 - glList.add(lzMap);  
979 - Map<String, Object> dmMap = new HashMap<String, Object>();  
980 - dmMap.put("name", "吊慢");  
981 - dmMap.put("value", dm);  
982 - glList.add(dmMap);  
983 - Map<String, Object> gzMap = new HashMap<String, Object>();  
984 - gzMap.put("name", "故障");  
985 - gzMap.put("value", gz);  
986 - glList.add(gzMap);  
987 - Map<String, Object> jfMap = new HashMap<String, Object>();  
988 - jfMap.put("name", "纠纷");  
989 - jfMap.put("value", jf);  
990 - glList.add(jfMap);  
991 - Map<String, Object> zsMap = new HashMap<String, Object>();  
992 - zsMap.put("name", "肇事");  
993 - zsMap.put("value", zs);  
994 - glList.add(zsMap);  
995 - Map<String, Object> qrqcMap = new HashMap<String, Object>();  
996 - qrqcMap.put("name", "缺人缺车");  
997 - qrqcMap.put("value", qrqc);  
998 - glList.add(qrqcMap);  
999 - Map<String, Object> kxMap = new HashMap<String, Object>();  
1000 - kxMap.put("name", "客稀");  
1001 - kxMap.put("value", kx);  
1002 - glList.add(kxMap);  
1003 - Map<String, Object> qhMap = new HashMap<String, Object>();  
1004 - qhMap.put("name", "气候");  
1005 - qhMap.put("value", qh);  
1006 - glList.add(qhMap);  
1007 - Map<String, Object> ywMap = new HashMap<String, Object>();  
1008 - ywMap.put("name", "援外");  
1009 - ywMap.put("value", yw);  
1010 - glList.add(ywMap);  
1011 - Map<String, Object> qtMap = new HashMap<String, Object>();  
1012 - qtMap.put("name", "其他");  
1013 - qtMap.put("value", qt);  
1014 - glList.add(qtMap);  
1015 -  
1016 -  
1017 - resMap.put("lineCount", lineCount);  
1018 - resMap.put("level1Count", level1);  
1019 - resMap.put("level2Count", level2);  
1020 - resMap.put("sjbcs", sjbcs_z);  
1021 - resMap.put("sjlcs", yygl_z.doubleValue());  
1022 -  
1023 - resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),  
1024 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1025 - resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),  
1026 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1027 - resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),  
1028 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1029 - resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),  
1030 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1031 - resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),  
1032 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1033 - resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),  
1034 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1035 -  
1036 - resMap.put("ratioList", zxlList);  
1037 -  
1038 - resMap.put("detailsList", detailsList);  
1039 -  
1040 - resMap.put("mileageList", glList);  
1041 -  
1042 - return JSON.parseObject(JSON.toJSONString(resMap));  
1043 - }  
1044 -  
1045 - /**给大屏按日期查线路指标  
1046 - *  
1047 - */  
1048 - @GET  
1049 - @Path("/selectData/getScheduleStatistics/{date}")  
1050 - public JSONObject getScheduleStatistics(@PathParam("date") String date){  
1051 - Map<String, Object> resMap = new HashMap<String, Object>();  
1052 -  
1053 - String gpLineSql = "select * from bsth_c_line_plate";  
1054 - List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,  
1055 - new RowMapper<Map<String, Object>>(){  
1056 - @Override  
1057 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1058 - Map<String, Object> m=new HashMap<String,Object>();  
1059 - m.put("lineName", rs.getString("line_name"));  
1060 - m.put("lineCode", rs.getString("line_code"));  
1061 - return m;  
1062 - }  
1063 - });  
1064 -  
1065 - Set<String> gpSet = new HashSet<String>();  
1066 - for(Map<String, Object> t : gpLineList){  
1067 - if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){  
1068 - gpSet.add(t.get("lineCode").toString().trim());  
1069 - }  
1070 - }  
1071 -  
1072 - String yyxlSql="SELECT line_code from bsth_c_line "  
1073 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
1074 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
1075 - new RowMapper<Map<String, Object>>(){  
1076 - @Override  
1077 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1078 - Map<String, Object> m=new HashMap<String,Object>();  
1079 - m.put("lineCode", rs.getString("line_code"));  
1080 - return m;  
1081 - }  
1082 - });  
1083 - Set<String> yyLine = new HashSet<String>();  
1084 - for(Map<String, Object> t : yyxlList){  
1085 - if(t.get("lineCode") != null){  
1086 - yyLine.add(t.get("lineCode").toString());  
1087 - }  
1088 - }  
1089 -  
1090 -  
1091 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
1092 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
1093 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
1094 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
1095 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
1096 - + " from bsth_c_calc_count "  
1097 - + " where date = ? and gsdm != '77'";  
1098 -  
1099 - List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{date},  
1100 - new RowMapper<Map<String, Object>>(){  
1101 - @Override  
1102 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1103 - Map<String, Object> m=new HashMap<String,Object>();  
1104 - m.put("lineCode",rs.getString("xl"));  
1105 - m.put("lineName", rs.getString("xl_name"));  
1106 - m.put("date", rs.getString("date"));  
1107 -  
1108 - m.put("jhbc", rs.getString("jhbc"));  
1109 - m.put("sjbc", rs.getString("sjbc"));  
1110 - m.put("bczxl", rs.getString("bczxl"));  
1111 - m.put("jhbcz", rs.getString("jhbcz"));  
1112 -  
1113 - m.put("jhcc", rs.getString("jhcc"));  
1114 - m.put("sjcc", rs.getString("sjcc"));  
1115 - m.put("ccl", rs.getString("ccl"));  
1116 - m.put("jhccz", rs.getString("jhccz"));  
1117 -  
1118 - m.put("jhyylc", rs.getString("jhyylc"));  
1119 - m.put("sjyylc", rs.getString("sjyylc"));  
1120 - m.put("jhyylcz", rs.getString("jhyylcz"));  
1121 - m.put("jhkslc", rs.getString("jhkslc"));  
1122 - m.put("sjkslc", rs.getString("sjkslc"));  
1123 - m.put("jhkslcz", rs.getString("jhkslcz"));  
1124 -  
1125 - m.put("jhgfbcs", rs.getString("jhssgfbcs"));  
1126 - m.put("sjgfbcs", rs.getString("sjgfbcs"));  
1127 - m.put("jhgfbcsz", rs.getString("jhgfbcsz"));  
1128 - m.put("jhdgbcs", rs.getString("jhssdgbcs"));  
1129 - m.put("sjdgbcs", rs.getString("sjdgbcs"));  
1130 - m.put("jhdgbcsz", rs.getString("jhdgbcsz"));  
1131 -  
1132 - m.put("jhsmbcs", rs.getString("jhsmbcs"));  
1133 - m.put("sjsmbczds", rs.getString("sjsmbczds"));  
1134 - m.put("smbczdl", rs.getString("smbczdl"));  
1135 - m.put("jhsmbcsz", rs.getString("jhsmbcsz"));  
1136 - m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));  
1137 - m.put("smbczdlz", rs.getString("smbczdlz"));  
1138 -  
1139 - m.put("jhszfcs", rs.getString("jhszfcs"));  
1140 - m.put("sjszfczds", rs.getString("sjszfczds"));  
1141 - m.put("szfczdl", rs.getString("szfczdl"));  
1142 -  
1143 - Date date = new Date();  
1144 - date.setTime(rs.getTimestamp("create_date").getTime());  
1145 - m.put("createDate", sdf.format(date));  
1146 - return m;  
1147 - }  
1148 - });  
1149 -  
1150 - List<Map<String, Object>> ccDetail = new ArrayList<Map<String,Object>>();  
1151 - List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();  
1152 - List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();  
1153 - List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();  
1154 - List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();  
1155 - List<Map<String, Object>> qkDetail = new ArrayList<Map<String,Object>>();  
1156 -  
1157 - long sjbcs_z = 0l;//实时总班次  
1158 - BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程  
1159 - long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,  
1160 - jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;  
1161 -  
1162 - for(Map<String, Object> t : list){  
1163 - if(yyLine.contains(t.get("lineCode").toString())){  
1164 - sjbcs_z += Long.valueOf(t.get("sjbc").toString());  
1165 - yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));  
1166 -  
1167 - jhcc += Long.valueOf(t.get("jhccz").toString());  
1168 - sjcc += Long.valueOf(t.get("sjcc").toString());  
1169 - jhbc += Long.valueOf(t.get("jhbc").toString());  
1170 - sjbc += Long.valueOf(t.get("sjbc").toString());  
1171 - jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());  
1172 - sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());  
1173 - jhqqbc += Long.valueOf(t.get("jhszfcs").toString());  
1174 - sjqqzd += Long.valueOf(t.get("sjszfczds").toString());  
1175 - if(gpSet.contains(t.get("lineCode").toString())){  
1176 - jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());  
1177 - sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());  
1178 - }  
1179 -  
1180 - Map<String, Object> cc = new HashMap<String, Object>();  
1181 - cc.put("type", "线路出车详情");  
1182 - cc.put("lineName", t.get("lineName").toString());  
1183 - cc.put("jh", t.get("jhcc").toString());  
1184 - cc.put("sj", t.get("sjcc").toString());  
1185 - ccDetail.add(cc);  
1186 -  
1187 - Map<String, Object> bc = new HashMap<String, Object>();  
1188 - bc.put("type", "班次执行详情");  
1189 - bc.put("lineName", t.get("lineName").toString());  
1190 - bc.put("jh", t.get("jhbc").toString());  
1191 - bc.put("sj", t.get("sjbc").toString());  
1192 - bcDetail.add(bc);  
1193 -  
1194 - Map<String, Object> sm = new HashMap<String, Object>();  
1195 - sm.put("type", "首站发车详情");  
1196 - sm.put("lineName", t.get("lineName").toString());  
1197 - sm.put("jh", t.get("jhsmbcs").toString());  
1198 - sm.put("sj", t.get("sjsmbczds").toString());  
1199 - smDetail.add(sm);  
1200 -  
1201 - Map<String, Object> qq = new HashMap<String, Object>();  
1202 - qq.put("type", "起讫站发车准点详情");  
1203 - qq.put("lineName", t.get("lineName").toString());  
1204 - qq.put("jh", t.get("jhszfcs").toString());  
1205 - qq.put("sj", t.get("sjszfczds").toString());  
1206 - qqDetail.add(qq);  
1207 -  
1208 - if(gpSet.contains(t.get("lineCode").toString())){  
1209 - Map<String, Object> gp = new HashMap<String, Object>();  
1210 - gp.put("type", "挂牌线路发车准点详情");  
1211 - gp.put("lineName", t.get("lineName").toString());  
1212 - gp.put("jh", t.get("jhszfcs").toString());  
1213 - gp.put("sj", t.get("sjszfczds").toString());  
1214 - gpDetail.add(gp);  
1215 - }  
1216 - }  
1217 - }  
1218 -  
1219 - Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();  
1220 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);  
1221 - for(ScheduleRealInfo s : findAll){  
1222 - if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
1223 - if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){  
1224 - String xlName = s.getXlName();  
1225 - if(!(keyMap.containsKey(xlName))){  
1226 - Map<String, Object> qk = new HashMap<String, Object>();  
1227 - qk.put("type", "线路签卡详情");  
1228 - qk.put("lineName", xlName);  
1229 - qk.put("jh", 0);  
1230 - qk.put("sj", 0);  
1231 - keyMap.put(xlName, qk);  
1232 - qkDetail.add(qk);  
1233 - }  
1234 - Map<String, Object> qk = keyMap.get(xlName);  
1235 - qk.put("jh", Long.valueOf(qk.get("jh").toString()) + 1);  
1236 - ++bcs_qk;  
1237 - String sty = decimalToBinary(s.getRfidState());  
1238 - Integer state = Integer.parseInt(sty);  
1239 - if ((state & 4) == 4) {  
1240 - qk.put("sj", Long.valueOf(qk.get("sj").toString()) + 1);  
1241 - ++qks;  
1242 - }  
1243 - }  
1244 - }  
1245 - }  
1246 -  
1247 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
1248 - detailsList.addAll(ccDetail);  
1249 - detailsList.addAll(bcDetail);  
1250 - detailsList.addAll(smDetail);  
1251 - detailsList.addAll(qqDetail);  
1252 - detailsList.addAll(gpDetail);  
1253 - detailsList.addAll(qkDetail);  
1254 -  
1255 - resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),  
1256 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1257 - resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),  
1258 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1259 - resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),  
1260 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1261 - resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),  
1262 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1263 - resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),  
1264 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1265 - resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),  
1266 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
1267 -  
1268 - resMap.put("detailsList", detailsList);  
1269 -  
1270 - return JSON.parseObject(JSON.toJSONString(resMap));  
1271 - }  
1272 -  
1273 - /**给电科手机端查线路指标(出车率)  
1274 - *  
1275 - */  
1276 - @GET  
1277 - @Path("/selectData/getDepartureBus/{company}/{branchCompany}")  
1278 - public JSONObject getDepartureBus(@PathParam("company") String company,  
1279 - @PathParam("branchCompany") String branchCompany){  
1280 - Map<String, Object> resMap = new HashMap<String, Object>();  
1281 - String date = sd.format(new Date());  
1282 - String gs = "", fgs = "";  
1283 - if(company.trim().length() > 0 && !("all".equals(company.trim()))){  
1284 - gs = company.trim();  
1285 - }  
1286 - if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){  
1287 - fgs = branchCompany.trim();  
1288 - }  
1289 -  
1290 - String yyxlSql="SELECT line_code from bsth_c_line "  
1291 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
1292 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
1293 - new RowMapper<Map<String, Object>>(){  
1294 - @Override  
1295 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1296 - Map<String, Object> m=new HashMap<String,Object>();  
1297 - m.put("lineCode", rs.getString("line_code"));  
1298 - return m;  
1299 - }  
1300 - });  
1301 - Set<String> yyLine = new HashSet<String>();  
1302 - for(Map<String, Object> t : yyxlList){  
1303 - if(t.get("lineCode") != null){  
1304 - yyLine.add(t.get("lineCode").toString());  
1305 - }  
1306 - }  
1307 -  
1308 - List<String> objList = new ArrayList<String>();  
1309 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
1310 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
1311 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
1312 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
1313 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
1314 - + " from bsth_c_calc_count "  
1315 - + " where date = ? and gsdm != '77'";  
1316 - objList.add(date);  
1317 - if(fgs.length() > 0){  
1318 - sql +=" and gsdm = ? and fgsdm = ?";  
1319 - objList.add(gs);  
1320 - objList.add(fgs);  
1321 - } else if(gs.length() > 0){  
1322 - sql +=" and gsdm = ?";  
1323 - objList.add(gs);  
1324 - }  
1325 -  
1326 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
1327 - objList.toArray(),  
1328 - new RowMapper<Map<String, Object>>(){  
1329 - @Override  
1330 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1331 - Map<String, Object> m=new HashMap<String,Object>();  
1332 - m.put("lineCode",rs.getString("xl"));  
1333 - m.put("lineName", rs.getString("xl_name"));  
1334 - m.put("date", rs.getString("date"));  
1335 -  
1336 - m.put("jhcc", rs.getString("jhcc"));  
1337 - m.put("sjcc", rs.getString("sjcc"));  
1338 - m.put("jhccz", rs.getString("jhccz"));  
1339 -  
1340 - Date date = new Date();  
1341 - date.setTime(rs.getTimestamp("create_date").getTime());  
1342 - m.put("createDate", sdf.format(date));  
1343 - return m;  
1344 - }  
1345 - });  
1346 -  
1347 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
1348 -  
1349 - long jh = 0, sj = 0;  
1350 -  
1351 - for(Map<String, Object> t : list){  
1352 - if(yyLine.contains(t.get("lineCode").toString())){  
1353 -  
1354 - Long plan = Long.valueOf(t.get("jhccz").toString());  
1355 - Long real = Long.valueOf(t.get("sjcc").toString());  
1356 -  
1357 - jh += plan;  
1358 - sj += real;  
1359 -  
1360 - Map<String, Object> detail = new HashMap<String, Object>();  
1361 - detail.put("lineName", t.get("lineName").toString());  
1362 - detail.put("plan", plan);  
1363 - detail.put("real", real);  
1364 - detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(  
1365 - new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1366 - detailsList.add(detail);  
1367 - }  
1368 - }  
1369 -  
1370 - resMap.put("plan", jh);  
1371 - resMap.put("real", sj);  
1372 - resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(  
1373 - new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1374 -  
1375 - resMap.put("detailsList", detailsList);  
1376 -  
1377 - return JSON.parseObject(JSON.toJSONString(resMap));  
1378 - }  
1379 -  
1380 - /**给电科手机端查线路指标(班次执行率)  
1381 - *  
1382 - */  
1383 - @GET  
1384 - @Path("/selectData/getFinishScheduleBus/{company}/{branchCompany}")  
1385 - public JSONObject getFinishScheduleBus(@PathParam("company") String company,  
1386 - @PathParam("branchCompany") String branchCompany){  
1387 - Map<String, Object> resMap = new HashMap<String, Object>();  
1388 - String date = sd.format(new Date());  
1389 - String gs = "", fgs = "";  
1390 - if(company.trim().length() > 0 && !("all".equals(company.trim()))){  
1391 - gs = company.trim();  
1392 - }  
1393 - if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){  
1394 - fgs = branchCompany.trim();  
1395 - }  
1396 -  
1397 - String yyxlSql="SELECT line_code from bsth_c_line "  
1398 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
1399 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
1400 - new RowMapper<Map<String, Object>>(){  
1401 - @Override  
1402 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1403 - Map<String, Object> m=new HashMap<String,Object>();  
1404 - m.put("lineCode", rs.getString("line_code"));  
1405 - return m;  
1406 - }  
1407 - });  
1408 - Set<String> yyLine = new HashSet<String>();  
1409 - for(Map<String, Object> t : yyxlList){  
1410 - if(t.get("lineCode") != null){  
1411 - yyLine.add(t.get("lineCode").toString());  
1412 - }  
1413 - }  
1414 -  
1415 - List<String> objList = new ArrayList<String>();  
1416 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
1417 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
1418 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
1419 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
1420 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
1421 - + " from bsth_c_calc_count "  
1422 - + " where date = ? and gsdm != '77'";  
1423 - objList.add(date);  
1424 - if(fgs.length() > 0){  
1425 - sql +=" and gsdm = ? and fgsdm = ?";  
1426 - objList.add(gs);  
1427 - objList.add(fgs);  
1428 - } else if(gs.length() > 0){  
1429 - sql +=" and gsdm = ?";  
1430 - objList.add(gs);  
1431 - }  
1432 -  
1433 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
1434 - objList.toArray(),  
1435 - new RowMapper<Map<String, Object>>(){  
1436 - @Override  
1437 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1438 - Map<String, Object> m=new HashMap<String,Object>();  
1439 - m.put("lineCode",rs.getString("xl"));  
1440 - m.put("lineName", rs.getString("xl_name"));  
1441 - m.put("date", rs.getString("date"));  
1442 -  
1443 - m.put("jhbc", rs.getString("jhbc"));  
1444 - m.put("sjbc", rs.getString("sjbc"));  
1445 -  
1446 - Date date = new Date();  
1447 - date.setTime(rs.getTimestamp("create_date").getTime());  
1448 - m.put("createDate", sdf.format(date));  
1449 - return m;  
1450 - }  
1451 - });  
1452 -  
1453 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
1454 -  
1455 - long jh = 0, sj = 0;  
1456 -  
1457 - for(Map<String, Object> t : list){  
1458 - if(yyLine.contains(t.get("lineCode").toString())){  
1459 -  
1460 - Long plan = Long.valueOf(t.get("jhbc").toString());  
1461 - Long real = Long.valueOf(t.get("sjbc").toString());  
1462 -  
1463 - jh += plan;  
1464 - sj += real;  
1465 -  
1466 - Map<String, Object> detail = new HashMap<String, Object>();  
1467 - detail.put("lineName", t.get("lineName").toString());  
1468 - detail.put("plan", plan);  
1469 - detail.put("real", real);  
1470 - detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(  
1471 - new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1472 - detailsList.add(detail);  
1473 - }  
1474 - }  
1475 -  
1476 - resMap.put("plan", jh);  
1477 - resMap.put("real", sj);  
1478 - resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(  
1479 - new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1480 -  
1481 - resMap.put("detailsList", detailsList);  
1482 -  
1483 - return JSON.parseObject(JSON.toJSONString(resMap));  
1484 - }  
1485 -  
1486 - /**给电科手机端查线路指标(首末班车发车准点率)  
1487 - *  
1488 - */  
1489 - @GET  
1490 - @Path("/selectData/getBeginAndEnd/{company}/{branchCompany}")  
1491 - public JSONObject getBeginAndEnd(@PathParam("company") String company,  
1492 - @PathParam("branchCompany") String branchCompany){  
1493 - Map<String, Object> resMap = new HashMap<String, Object>();  
1494 - String date = sd.format(new Date());  
1495 - String gs = "", fgs = "";  
1496 - if(company.trim().length() > 0 && !("all".equals(company.trim()))){  
1497 - gs = company.trim();  
1498 - }  
1499 - if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){  
1500 - fgs = branchCompany.trim();  
1501 - }  
1502 -  
1503 - String yyxlSql="SELECT line_code from bsth_c_line "  
1504 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
1505 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
1506 - new RowMapper<Map<String, Object>>(){  
1507 - @Override  
1508 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1509 - Map<String, Object> m=new HashMap<String,Object>();  
1510 - m.put("lineCode", rs.getString("line_code"));  
1511 - return m;  
1512 - }  
1513 - });  
1514 - Set<String> yyLine = new HashSet<String>();  
1515 - for(Map<String, Object> t : yyxlList){  
1516 - if(t.get("lineCode") != null){  
1517 - yyLine.add(t.get("lineCode").toString());  
1518 - }  
1519 - }  
1520 -  
1521 - List<String> objList = new ArrayList<String>();  
1522 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
1523 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
1524 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
1525 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
1526 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
1527 - + " from bsth_c_calc_count "  
1528 - + " where date = ? and gsdm != '77'";  
1529 - objList.add(date);  
1530 - if(fgs.length() > 0){  
1531 - sql +=" and gsdm = ? and fgsdm = ?";  
1532 - objList.add(gs);  
1533 - objList.add(fgs);  
1534 - } else if(gs.length() > 0){  
1535 - sql +=" and gsdm = ?";  
1536 - objList.add(gs);  
1537 - }  
1538 -  
1539 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
1540 - objList.toArray(),  
1541 - new RowMapper<Map<String, Object>>(){  
1542 - @Override  
1543 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1544 - Map<String, Object> m=new HashMap<String,Object>();  
1545 - m.put("lineCode",rs.getString("xl"));  
1546 - m.put("lineName", rs.getString("xl_name"));  
1547 - m.put("date", rs.getString("date"));  
1548 -  
1549 - m.put("jhsmbcs", rs.getString("jhsmbcs"));  
1550 - m.put("sjsmbczds", rs.getString("sjsmbczds"));  
1551 -  
1552 - Date date = new Date();  
1553 - date.setTime(rs.getTimestamp("create_date").getTime());  
1554 - m.put("createDate", sdf.format(date));  
1555 - return m;  
1556 - }  
1557 - });  
1558 -  
1559 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
1560 -  
1561 - long jh = 0, sj = 0;  
1562 -  
1563 - for(Map<String, Object> t : list){  
1564 - if(yyLine.contains(t.get("lineCode").toString())){  
1565 -  
1566 - Long plan = Long.valueOf(t.get("jhsmbcs").toString());  
1567 - Long real = Long.valueOf(t.get("sjsmbczds").toString());  
1568 -  
1569 - jh += plan;  
1570 - sj += real;  
1571 -  
1572 - Map<String, Object> detail = new HashMap<String, Object>();  
1573 - detail.put("lineName", t.get("lineName").toString());  
1574 - detail.put("plan", plan);  
1575 - detail.put("real", real);  
1576 - detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(  
1577 - new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1578 - detailsList.add(detail);  
1579 - }  
1580 - }  
1581 -  
1582 - resMap.put("plan", jh);  
1583 - resMap.put("real", sj);  
1584 - resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(  
1585 - new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1586 -  
1587 - resMap.put("detailsList", detailsList);  
1588 -  
1589 - return JSON.parseObject(JSON.toJSONString(resMap));  
1590 - }  
1591 -  
1592 - /**给电科手机端查线路指标(起讫站发车准点率)  
1593 - *  
1594 - */  
1595 - @GET  
1596 - @Path("/selectData/getPunctualBus/{company}/{branchCompany}")  
1597 - public JSONObject getPunctualBus(@PathParam("company") String company,  
1598 - @PathParam("branchCompany") String branchCompany){  
1599 - Map<String, Object> resMap = new HashMap<String, Object>();  
1600 - String date = sd.format(new Date());  
1601 - String gs = "", fgs = "";  
1602 - if(company.trim().length() > 0 && !("all".equals(company.trim()))){  
1603 - gs = company.trim();  
1604 - }  
1605 - if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){  
1606 - fgs = branchCompany.trim();  
1607 - }  
1608 -  
1609 - String yyxlSql="SELECT line_code from bsth_c_line "  
1610 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
1611 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
1612 - new RowMapper<Map<String, Object>>(){  
1613 - @Override  
1614 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1615 - Map<String, Object> m=new HashMap<String,Object>();  
1616 - m.put("lineCode", rs.getString("line_code"));  
1617 - return m;  
1618 - }  
1619 - });  
1620 - Set<String> yyLine = new HashSet<String>();  
1621 - for(Map<String, Object> t : yyxlList){  
1622 - if(t.get("lineCode") != null){  
1623 - yyLine.add(t.get("lineCode").toString());  
1624 - }  
1625 - }  
1626 -  
1627 - List<String> objList = new ArrayList<String>();  
1628 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
1629 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
1630 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
1631 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
1632 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
1633 - + " from bsth_c_calc_count "  
1634 - + " where date = ? and gsdm != '77'";  
1635 - objList.add(date);  
1636 - if(fgs.length() > 0){  
1637 - sql +=" and gsdm = ? and fgsdm = ?";  
1638 - objList.add(gs);  
1639 - objList.add(fgs);  
1640 - } else if(gs.length() > 0){  
1641 - sql +=" and gsdm = ?";  
1642 - objList.add(gs);  
1643 - }  
1644 -  
1645 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
1646 - objList.toArray(),  
1647 - new RowMapper<Map<String, Object>>(){  
1648 - @Override  
1649 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1650 - Map<String, Object> m=new HashMap<String,Object>();  
1651 - m.put("lineCode",rs.getString("xl"));  
1652 - m.put("lineName", rs.getString("xl_name"));  
1653 - m.put("date", rs.getString("date"));  
1654 -  
1655 - m.put("jhszfcs", rs.getString("jhszfcs"));  
1656 - m.put("sjszfczds", rs.getString("sjszfczds"));  
1657 -  
1658 - Date date = new Date();  
1659 - date.setTime(rs.getTimestamp("create_date").getTime());  
1660 - m.put("createDate", sdf.format(date));  
1661 - return m;  
1662 - }  
1663 - });  
1664 -  
1665 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
1666 -  
1667 - long jh = 0, sj = 0;  
1668 -  
1669 - for(Map<String, Object> t : list){  
1670 - if(yyLine.contains(t.get("lineCode").toString())){  
1671 -  
1672 - Long plan = Long.valueOf(t.get("jhszfcs").toString());  
1673 - Long real = Long.valueOf(t.get("sjszfczds").toString());  
1674 -  
1675 - jh += plan;  
1676 - sj += real;  
1677 -  
1678 - Map<String, Object> detail = new HashMap<String, Object>();  
1679 - detail.put("lineName", t.get("lineName").toString());  
1680 - detail.put("plan", plan);  
1681 - detail.put("real", real);  
1682 - detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(  
1683 - new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1684 - detailsList.add(detail);  
1685 - }  
1686 - }  
1687 -  
1688 - resMap.put("plan", jh);  
1689 - resMap.put("real", sj);  
1690 - resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(  
1691 - new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1692 -  
1693 - resMap.put("detailsList", detailsList);  
1694 -  
1695 - return JSON.parseObject(JSON.toJSONString(resMap));  
1696 - }  
1697 -  
1698 - /**给电科手机端查线路指标(挂牌线路发车准点率)  
1699 - *  
1700 - */  
1701 - @GET  
1702 - @Path("/selectData/getPlateLineBus/{company}/{branchCompany}")  
1703 - public JSONObject getPlateLineBus(@PathParam("company") String company,  
1704 - @PathParam("branchCompany") String branchCompany){  
1705 - Map<String, Object> resMap = new HashMap<String, Object>();  
1706 -  
1707 - String gpLineSql = "select * from bsth_c_line_plate";  
1708 - List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,  
1709 - new RowMapper<Map<String, Object>>(){  
1710 - @Override  
1711 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1712 - Map<String, Object> m=new HashMap<String,Object>();  
1713 - m.put("lineName", rs.getString("line_name"));  
1714 - m.put("lineCode", rs.getString("line_code"));  
1715 - return m;  
1716 - }  
1717 - });  
1718 -  
1719 - Set<String> gpSet = new HashSet<String>();  
1720 - for(Map<String, Object> t : gpLineList){  
1721 - if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){  
1722 - gpSet.add(t.get("lineCode").toString().trim());  
1723 - }  
1724 - }  
1725 -  
1726 - String date = sd.format(new Date());  
1727 - String gs = "", fgs = "";  
1728 - if(company.trim().length() > 0 && !("all".equals(company.trim()))){  
1729 - gs = company.trim();  
1730 - }  
1731 - if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){  
1732 - fgs = branchCompany.trim();  
1733 - }  
1734 -  
1735 - String yyxlSql="SELECT line_code from bsth_c_line "  
1736 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
1737 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
1738 - new RowMapper<Map<String, Object>>(){  
1739 - @Override  
1740 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1741 - Map<String, Object> m=new HashMap<String,Object>();  
1742 - m.put("lineCode", rs.getString("line_code"));  
1743 - return m;  
1744 - }  
1745 - });  
1746 - Set<String> yyLine = new HashSet<String>();  
1747 - for(Map<String, Object> t : yyxlList){  
1748 - if(t.get("lineCode") != null){  
1749 - yyLine.add(t.get("lineCode").toString());  
1750 - }  
1751 - }  
1752 -  
1753 - List<String> objList = new ArrayList<String>();  
1754 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
1755 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
1756 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
1757 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
1758 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
1759 - + " from bsth_c_calc_count "  
1760 - + " where date = ? and gsdm != '77'";  
1761 - objList.add(date);  
1762 - if(fgs.length() > 0){  
1763 - sql +=" and gsdm = ? and fgsdm = ?";  
1764 - objList.add(gs);  
1765 - objList.add(fgs);  
1766 - } else if(gs.length() > 0){  
1767 - sql +=" and gsdm = ?";  
1768 - objList.add(gs);  
1769 - }  
1770 -  
1771 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
1772 - objList.toArray(),  
1773 - new RowMapper<Map<String, Object>>(){  
1774 - @Override  
1775 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1776 - Map<String, Object> m=new HashMap<String,Object>();  
1777 - m.put("lineCode",rs.getString("xl"));  
1778 - m.put("lineName", rs.getString("xl_name"));  
1779 - m.put("date", rs.getString("date"));  
1780 -  
1781 - m.put("jhszfcs", rs.getString("jhszfcs"));  
1782 - m.put("sjszfczds", rs.getString("sjszfczds"));  
1783 -  
1784 - Date date = new Date();  
1785 - date.setTime(rs.getTimestamp("create_date").getTime());  
1786 - m.put("createDate", sdf.format(date));  
1787 - return m;  
1788 - }  
1789 - });  
1790 -  
1791 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
1792 -  
1793 - long jh = 0, sj = 0;  
1794 -  
1795 - for(Map<String, Object> t : list){  
1796 - if(yyLine.contains(t.get("lineCode").toString())){  
1797 -  
1798 - if(gpSet.contains(t.get("lineCode").toString())){  
1799 -  
1800 - Long plan = Long.valueOf(t.get("jhszfcs").toString());  
1801 - Long real = Long.valueOf(t.get("sjszfczds").toString());  
1802 -  
1803 - jh += plan;  
1804 - sj += real;  
1805 -  
1806 - Map<String, Object> detail = new HashMap<String, Object>();  
1807 - detail.put("lineName", t.get("lineName").toString());  
1808 - detail.put("plan", plan);  
1809 - detail.put("real", real);  
1810 - detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(  
1811 - new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1812 - detailsList.add(detail);  
1813 - }  
1814 - }  
1815 - }  
1816 -  
1817 - resMap.put("plan", jh);  
1818 - resMap.put("real", sj);  
1819 - resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(  
1820 - new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1821 -  
1822 - resMap.put("detailsList", detailsList);  
1823 -  
1824 - return JSON.parseObject(JSON.toJSONString(resMap));  
1825 - }  
1826 -  
1827 - /**给电科手机端查线路指标(签卡率)  
1828 - *  
1829 - */  
1830 - @GET  
1831 - @Path("/selectData/getCardSigning/{company}/{branchCompany}")  
1832 - public JSONObject getCardSigning(@PathParam("company") String company,  
1833 - @PathParam("branchCompany") String branchCompany){  
1834 - Map<String, Object> resMap = new HashMap<String, Object>();  
1835 - String date = sd.format(new Date());  
1836 - String gs = "", fgs = "";  
1837 - if(company.trim().length() > 0 && !("all".equals(company.trim()))){  
1838 - gs = company.trim();  
1839 - }  
1840 - if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){  
1841 - fgs = branchCompany.trim();  
1842 - }  
1843 -  
1844 - String yyxlSql="SELECT line_code from bsth_c_line "  
1845 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
1846 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
1847 - new RowMapper<Map<String, Object>>(){  
1848 - @Override  
1849 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1850 - Map<String, Object> m=new HashMap<String,Object>();  
1851 - m.put("lineCode", rs.getString("line_code"));  
1852 - return m;  
1853 - }  
1854 - });  
1855 - Set<String> yyLine = new HashSet<String>();  
1856 - for(Map<String, Object> t : yyxlList){  
1857 - if(t.get("lineCode") != null){  
1858 - yyLine.add(t.get("lineCode").toString());  
1859 - }  
1860 - }  
1861 -  
1862 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
1863 - Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();  
1864 -  
1865 - long jh = 0, sj = 0;  
1866 -  
1867 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);  
1868 - for(ScheduleRealInfo s : findAll){  
1869 - if(s.getGsBm() != null && s.getFgsBm() != null){  
1870 - if("77".equals(s.getGsBm())){  
1871 - continue;  
1872 - }  
1873 - if(fgs.length() > 0){  
1874 - if(!(s.getGsBm().equals(gs)) || !(s.getFgsBm().equals(gs))){  
1875 - continue;  
1876 - }  
1877 - } else if(gs.length() > 0){  
1878 - if(!(s.getGsBm().equals(gs))){  
1879 - continue;  
1880 - }  
1881 - }  
1882 - if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
1883 - if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){  
1884 - long plan = 0, real = 0;  
1885 - ++plan;  
1886 - ++jh;  
1887 - String sty = decimalToBinary(s.getRfidState());  
1888 - Integer state = Integer.parseInt(sty);  
1889 - if ((state & 4) == 4) {  
1890 - ++real;  
1891 - ++sj;  
1892 - }  
1893 - if(!(keyMap.containsKey(s.getXlBm()))){  
1894 - Map<String, Object> m = new HashMap<String, Object>();  
1895 - m = new HashMap<String, Object>();  
1896 - m.put("lineName", s.getXlName());  
1897 - m.put("plan", "0");  
1898 - m.put("real", "0");  
1899 - keyMap.put(s.getXlBm(), m);  
1900 - detailsList.add(m);  
1901 - }  
1902 - Map<String, Object> m = keyMap.get(s.getXlBm());  
1903 - m.put("plan", Long.valueOf(m.get("plan").toString()) + plan);  
1904 - m.put("real", Long.valueOf(m.get("real").toString()) + real);  
1905 - }  
1906 - }  
1907 - }  
1908 - }  
1909 -  
1910 - for(Map<String, Object> m : detailsList){  
1911 - long plan = Long.valueOf(m.get("plan").toString());  
1912 - long real = Long.valueOf(m.get("real").toString());  
1913 - m.put("ratio", plan>0?new BigDecimal(real*100l).divide(  
1914 - new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1915 - }  
1916 -  
1917 - resMap.put("plan", jh);  
1918 - resMap.put("real", sj);  
1919 - resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(  
1920 - new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");  
1921 -  
1922 - resMap.put("detailsList", detailsList);  
1923 -  
1924 - return JSON.parseObject(JSON.toJSONString(resMap));  
1925 - }  
1926 -  
1927 - @GET  
1928 - @Path("/selectData/attendance")  
1929 - public JSONObject attendance(){  
1930 - Map<String, Object> resMap = new HashMap<String, Object>();  
1931 - SimpleDateFormat dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
1932 -  
1933 - int day = 7;//天数  
1934 -  
1935 - Date dd = new Date();  
1936 - String date = sd.format(dd); //yyyy-MM-dd 当天  
1937 - Date dd2 = new Date();  
1938 - dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);  
1939 - String date2 = sd.format(dd2); //yyyy-MM-dd 6天前(加上当天就是取7天数据)  
1940 -  
1941 - String[] dates = new String[day];  
1942 - Map<String, Integer> datesMap = new HashMap<String, Integer>();  
1943 -  
1944 - for(int i = 0; i < day; i++){  
1945 - Date tempDate = new Date();  
1946 - tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);  
1947 - String format = sd.format(tempDate);  
1948 - dates[i] = format;  
1949 - datesMap.put(format, i);  
1950 - }  
1951 -  
1952 -  
1953 - String yyxlSql="SELECT line_code from bsth_c_line "  
1954 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
1955 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
1956 - new RowMapper<Map<String, Object>>(){  
1957 - @Override  
1958 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
1959 - Map<String, Object> m=new HashMap<String,Object>();  
1960 - m.put("lineCode", rs.getString("line_code"));  
1961 - return m;  
1962 - }  
1963 - });  
1964 - Set<String> yyLine = new HashSet<String>();  
1965 - for(Map<String, Object> t : yyxlList){  
1966 - if(t.get("lineCode") != null){  
1967 - yyLine.add(t.get("lineCode").toString());  
1968 - }  
1969 - }  
1970 -  
1971 -  
1972 - List<Map<String, Object>> attList = new ArrayList<Map<String, Object>>();  
1973 - List<Map<String, Object>> lackList = new ArrayList<Map<String, Object>>();  
1974 - Set<String> lackSet = new HashSet<String>();  
1975 -  
1976 - for(int i = 0; i < dates.length; i++){  
1977 - Set<String> jhSet = new HashSet<String>();  
1978 - Set<String> sjSet = new HashSet<String>();  
1979 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(dates[i]);  
1980 - List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();  
1981 - for(ScheduleRealInfo s : findAll){  
1982 - if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
1983 - if(!isInOut(s)){  
1984 - Set<ChildTaskPlan> cts = s.getcTasks();  
1985 - if (cts != null && cts.size() > 0) {  
1986 - list_s.add(s);  
1987 - } else {  
1988 - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {  
1989 - list_s.add(s);  
1990 - }  
1991 - }  
1992 -  
1993 - if(!s.isSflj() && !s.isCcService()){  
1994 - jhSet.add(s.getjGh() + "/" + s.getjName());  
1995 - }  
1996 - }  
1997 - }  
1998 - }  
1999 -  
2000 - for(ScheduleRealInfo s : list_s){  
2001 - if(!(s.getStatus() == -1)){  
2002 - sjSet.add(s.getjGh() + "/" + s.getjName());  
2003 - }  
2004 - }  
2005 -  
2006 - for(ScheduleRealInfo s : findAll){  
2007 - try {  
2008 - if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
2009 - if (s.isSflj() || isInOut(s)){  
2010 - continue;  
2011 - }  
2012 -  
2013 - String time = s.getRealExecDate() + " " + s.getFcsj();  
2014 - Date d = dateTime.parse(time);  
2015 - if(dd.getTime() - d.getTime() < 300000l){ //只取当前时间5分钟前的数据  
2016 - continue;  
2017 - }  
2018 -  
2019 - Set<ChildTaskPlan> cts;  
2020 - cts = s.getcTasks();  
2021 - //有子任务  
2022 - if (cts != null && cts.size() > 0) {  
2023 - for(ChildTaskPlan c : cts){  
2024 - if(c.getMileageType().equals("service") && c.getCcId() == null){  
2025 - if(c.isDestroy() && (c.getDestroyReason()==null? "" : c.getDestroyReason()).equals("缺人")){  
2026 - Map<String, Object> m = new HashMap<String, Object>();  
2027 - m.put("gsName", s.getGsName());  
2028 - m.put("lineName", s.getXlName());  
2029 - m.put("driverCode", s.getjGh());  
2030 - m.put("driverName", s.getjName());  
2031 - m.put("cl", s.getClZbh());  
2032 - m.put("date", s.getRealExecDate());  
2033 - m.put("time", c.getStartDate());  
2034 - if(c.getRemarks() != null && c.getRemarks().trim().length() > 0){  
2035 - m.put("explain", c.getRemarks());  
2036 - } else {  
2037 - m.put("explain", s.getRemarks()!=null?s.getRemarks():"");  
2038 - }  
2039 -  
2040 - String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();  
2041 - if(lackSet.add(str)){  
2042 - lackList.add(m);  
2043 - }  
2044 - }  
2045 - }  
2046 - }  
2047 - }  
2048 - //主任务烂班  
2049 - else if(s.getStatus() == -1 && s.getAdjustExps().equals("缺人")){  
2050 - Map<String, Object> m = new HashMap<String, Object>();  
2051 - m.put("gsName", s.getGsName());  
2052 - m.put("lineName", s.getXlName());  
2053 - m.put("driverCode", s.getjGh());  
2054 - m.put("driverName", s.getjName());  
2055 - m.put("cl", s.getClZbh());  
2056 - m.put("date", s.getRealExecDate());  
2057 - m.put("time", s.getFcsj());  
2058 - m.put("explain", s.getRemarks()!=null?s.getRemarks():"");  
2059 -  
2060 - String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();  
2061 - if(lackSet.add(str)){  
2062 - lackList.add(m);  
2063 - }  
2064 - }  
2065 - }  
2066 - } catch (Exception e) {  
2067 - // TODO: handle exception  
2068 - e.printStackTrace();  
2069 - }  
2070 - }  
2071 -  
2072 - Map<String, Object> att = new HashMap<String, Object>();  
2073 - att.put("date", dates[i]);  
2074 - att.put("jh", jhSet.size());  
2075 - att.put("sj", sjSet.size());  
2076 - attList.add(att);  
2077 - }  
2078 -  
2079 - String gpLineSql = "select p.company_code, count(1) jsy"  
2080 - + " from (select e.jsy from bsth_c_s_ecinfo e"  
2081 - + " where e.is_cancel = 0 group by e.jsy) a"  
2082 - + " left join bsth_c_personnel p on a.jsy = p.id"  
2083 - + " group by p.company_code";  
2084 - List<Map<String, Object>> ecList=jdbcTemplate.query(gpLineSql,  
2085 - new RowMapper<Map<String, Object>>(){  
2086 - @Override  
2087 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2088 - Map<String, Object> m=new HashMap<String,Object>();  
2089 - m.put("company", rs.getString("company_code"));  
2090 - m.put("jsy", rs.getString("jsy"));  
2091 - return m;  
2092 - }  
2093 - });  
2094 -  
2095 - List<Map<String, Object>> jsyList = new ArrayList<Map<String, Object>>();  
2096 - Map<String, Object> ygMap = new HashMap<String, Object>();  
2097 - ygMap.put("company", "杨高");  
2098 - ygMap.put("jsy", "0");  
2099 - Map<String, Object> snMap = new HashMap<String, Object>();  
2100 - snMap.put("company", "上南");  
2101 - snMap.put("jsy", "0");  
2102 - Map<String, Object> jgMap = new HashMap<String, Object>();  
2103 - jgMap.put("company", "金高");  
2104 - jgMap.put("jsy", "0");  
2105 - Map<String, Object> nhMap = new HashMap<String, Object>();  
2106 - nhMap.put("company", "南汇");  
2107 - nhMap.put("jsy", "0");  
2108 - for(Map<String, Object> m : ecList){ //顺序:杨高,上南,金高,南汇  
2109 - if("05".equals(m.get("company").toString())){  
2110 -// m.put("company", "杨高");  
2111 - ygMap.put("jsy", m.get("jsy").toString());  
2112 - }  
2113 - if("55".equals(m.get("company").toString())){  
2114 -// m.put("company", "上南");  
2115 - snMap.put("jsy", m.get("jsy").toString());  
2116 - }  
2117 - if("22".equals(m.get("company").toString())){  
2118 -// m.put("company", "金高");  
2119 - jgMap.put("jsy", m.get("jsy").toString());  
2120 - }  
2121 - if("26".equals(m.get("company").toString())){  
2122 -// m.put("company", "南汇");  
2123 - nhMap.put("jsy", m.get("jsy").toString());  
2124 - }  
2125 - }  
2126 - jsyList.add(ygMap);  
2127 - jsyList.add(snMap);  
2128 - jsyList.add(jgMap);  
2129 - jsyList.add(nhMap);  
2130 -  
2131 - String xlSql = "select a.jsy, b.spy, c.cl from"  
2132 - + " (select count(1) jsy from (select a.jsy from bsth_c_s_ecinfo a where a.is_cancel = 0 and a.spy is not null and a.jsy is not null group by jsy) a) a"  
2133 - + " LEFT JOIN"  
2134 - + " (select count(1) spy from (select b.spy from bsth_c_s_ecinfo b where b.is_cancel = 0 and b.spy is not null group by spy) b) b"  
2135 - + " on 1=1"  
2136 - + " LEFT JOIN"  
2137 - + " (select count(1) cl from (select c.cl from bsth_c_s_ccinfo c where c.is_cancel = 0 and c.cl is not null and c.xl in(select e.xl from bsth_c_s_ecinfo e where e.is_cancel = 0 and e.spy is not null) group by c.cl) c) c"  
2138 - + " on 1=1";  
2139 - List<Map<String, Object>> xlConfigList=jdbcTemplate.query(xlSql,  
2140 - new RowMapper<Map<String, Object>>(){  
2141 - @Override  
2142 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2143 - Map<String, Object> m=new HashMap<String,Object>();  
2144 - m.put("jsy", rs.getString("jsy"));  
2145 - m.put("spy", rs.getString("spy"));  
2146 - m.put("cl", rs.getString("cl"));  
2147 - return m;  
2148 - }  
2149 - });  
2150 - long jsy = 0l, spy = 0l, cl = 0l;  
2151 - for(Map<String, Object> t : xlConfigList){  
2152 - if(t.get("jsy") != null){  
2153 - jsy += Long.valueOf(t.get("jsy").toString());  
2154 - }  
2155 - if(t.get("spy") != null){  
2156 - spy += Long.valueOf(t.get("spy").toString());  
2157 - }  
2158 - if(t.get("cl") != null){  
2159 - cl += Long.valueOf(t.get("cl").toString());  
2160 - }  
2161 - }  
2162 -  
2163 - resMap.put("jsyList", jsyList);  
2164 - resMap.put("attList", attList);  
2165 - resMap.put("lackList", lackList);  
2166 - resMap.put("salesmanJsy", jsy);  
2167 - resMap.put("salesmanSpy", spy);  
2168 - resMap.put("salesmanCl", cl);  
2169 -  
2170 - return JSON.parseObject(JSON.toJSONString(resMap));  
2171 - }  
2172 -  
2173 - @GET  
2174 - @Path("/selectData/attendance/{gsdm}")  
2175 - public JSONObject attendance(@PathParam("gsdm") String gsdm){  
2176 - Map<String, Object> resMap = new HashMap<String, Object>();  
2177 - SimpleDateFormat dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
2178 -  
2179 - int day = 7;//天数  
2180 -  
2181 - Date dd = new Date();  
2182 - String date = sd.format(dd); //yyyy-MM-dd 当天  
2183 - Date dd2 = new Date();  
2184 - dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);  
2185 - String date2 = sd.format(dd2); //yyyy-MM-dd 6天前(加上当天就是取7天数据)  
2186 -  
2187 - String[] dates = new String[day];  
2188 - Map<String, Integer> datesMap = new HashMap<String, Integer>();  
2189 -  
2190 - for(int i = 0; i < day; i++){  
2191 - Date tempDate = new Date();  
2192 - tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);  
2193 - String format = sd.format(tempDate);  
2194 - dates[i] = format;  
2195 - datesMap.put(format, i);  
2196 - }  
2197 -  
2198 -  
2199 - String yyxlSql="SELECT line_code from bsth_c_line "  
2200 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
2201 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
2202 - new RowMapper<Map<String, Object>>(){  
2203 - @Override  
2204 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2205 - Map<String, Object> m=new HashMap<String,Object>();  
2206 - m.put("lineCode", rs.getString("line_code"));  
2207 - return m;  
2208 - }  
2209 - });  
2210 - Set<String> yyLine = new HashSet<String>();  
2211 - for(Map<String, Object> t : yyxlList){  
2212 - if(t.get("lineCode") != null){  
2213 - yyLine.add(t.get("lineCode").toString());  
2214 - }  
2215 - }  
2216 -  
2217 -  
2218 - List<Map<String, Object>> attList = new ArrayList<Map<String, Object>>();  
2219 - List<Map<String, Object>> lackList = new ArrayList<Map<String, Object>>();  
2220 - Set<String> lackSet = new HashSet<String>();  
2221 -  
2222 - for(int i = 0; i < dates.length; i++){  
2223 - Set<String> jhSet = new HashSet<String>();  
2224 - Set<String> sjSet = new HashSet<String>();  
2225 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(dates[i]);  
2226 - List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();  
2227 - for(ScheduleRealInfo s : findAll){  
2228 - if(s.getGsBm() != null && s.getGsBm().equals(gsdm)){//直属公司  
2229 - if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
2230 - if(!isInOut(s)){  
2231 - Set<ChildTaskPlan> cts = s.getcTasks();  
2232 - if (cts != null && cts.size() > 0) {  
2233 - list_s.add(s);  
2234 - } else {  
2235 - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {  
2236 - list_s.add(s);  
2237 - }  
2238 - }  
2239 -  
2240 - if(!s.isSflj() && !s.isCcService()){  
2241 - jhSet.add(s.getjGh() + "/" + s.getjName());  
2242 - }  
2243 - }  
2244 - }  
2245 - }  
2246 - }  
2247 -  
2248 - for(ScheduleRealInfo s : list_s){  
2249 - if(!(s.getStatus() == -1)){  
2250 - sjSet.add(s.getjGh() + "/" + s.getjName());  
2251 - }  
2252 - }  
2253 -  
2254 - for(ScheduleRealInfo s : findAll){  
2255 - try {  
2256 - if(s.getGsBm() != null && s.getGsBm().equals(gsdm)){//直属公司  
2257 - if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
2258 - if (s.isSflj() || isInOut(s)){  
2259 - continue;  
2260 - }  
2261 -  
2262 - String time = s.getRealExecDate() + " " + s.getFcsj();  
2263 - Date d = dateTime.parse(time);  
2264 - if(dd.getTime() - d.getTime() < 300000l){ //只取当前时间5分钟前的数据  
2265 - continue;  
2266 - }  
2267 -  
2268 - Set<ChildTaskPlan> cts;  
2269 - cts = s.getcTasks();  
2270 - //有子任务  
2271 - if (cts != null && cts.size() > 0) {  
2272 - for(ChildTaskPlan c : cts){  
2273 - if(c.getMileageType().equals("service") && c.getCcId() == null){  
2274 - if(c.isDestroy() && (c.getDestroyReason()==null? "" : c.getDestroyReason()).equals("缺人")){  
2275 - Map<String, Object> m = new HashMap<String, Object>();  
2276 - m.put("gsName", s.getGsName());  
2277 - m.put("lineName", s.getXlName());  
2278 - m.put("driverCode", s.getjGh());  
2279 - m.put("driverName", s.getjName());  
2280 - m.put("cl", s.getClZbh());  
2281 - m.put("date", s.getRealExecDate());  
2282 - m.put("time", c.getStartDate());  
2283 - if(c.getRemarks() != null && c.getRemarks().trim().length() > 0){  
2284 - m.put("explain", c.getRemarks());  
2285 - } else {  
2286 - m.put("explain", s.getRemarks()!=null?s.getRemarks():"");  
2287 - }  
2288 -  
2289 - String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();  
2290 - if(lackSet.add(str)){  
2291 - lackList.add(m);  
2292 - }  
2293 - }  
2294 - }  
2295 - }  
2296 - }  
2297 - //主任务烂班  
2298 - else if(s.getStatus() == -1 && s.getAdjustExps().equals("缺人")){  
2299 - Map<String, Object> m = new HashMap<String, Object>();  
2300 - m.put("gsName", s.getGsName());  
2301 - m.put("lineName", s.getXlName());  
2302 - m.put("driverCode", s.getjGh());  
2303 - m.put("driverName", s.getjName());  
2304 - m.put("cl", s.getClZbh());  
2305 - m.put("date", s.getRealExecDate());  
2306 - m.put("time", s.getFcsj());  
2307 - m.put("explain", s.getRemarks()!=null?s.getRemarks():"");  
2308 -  
2309 - String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();  
2310 - if(lackSet.add(str)){  
2311 - lackList.add(m);  
2312 - }  
2313 - }  
2314 - }  
2315 - }  
2316 - } catch (Exception e) {  
2317 - // TODO: handle exception  
2318 - }  
2319 - }  
2320 -  
2321 - Map<String, Object> att = new HashMap<String, Object>();  
2322 - att.put("date", dates[i]);  
2323 - att.put("jh", jhSet.size());  
2324 - att.put("sj", sjSet.size());  
2325 - attList.add(att);  
2326 - }  
2327 -  
2328 - String gpLineSql = "select p.branche_company_code, b.business_name, count(1) jsy"  
2329 - + " from (select e.jsy from bsth_c_s_ecinfo e"  
2330 - + " where e.is_cancel = 0 group by e.jsy) a"  
2331 - + " left join bsth_c_personnel p on a.jsy = p.id"  
2332 - + " left join bsth_c_business b on p.company_code = b.up_code"  
2333 - + " and p.branche_company_code = b.business_code"  
2334 - + " where p.company_code = ?"  
2335 - + " group by p.branche_company_code, b.business_name"  
2336 - + " order by p.branche_company_code";  
2337 - List<Map<String, Object>> ecList=jdbcTemplate.query(gpLineSql, new Object[]{gsdm},  
2338 - new RowMapper<Map<String, Object>>(){  
2339 - @Override  
2340 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2341 - Map<String, Object> m=new HashMap<String,Object>();  
2342 - m.put("company", rs.getString("branche_company_code"));  
2343 - m.put("companyName", rs.getString("business_name"));  
2344 - m.put("jsy", rs.getString("jsy"));  
2345 - return m;  
2346 - }  
2347 - });  
2348 -  
2349 - List<Integer> keyList = new ArrayList<Integer>();  
2350 - Map<Integer, Map<String, Object>> keyMap = new HashMap<Integer, Map<String, Object>>();  
2351 - List<Map<String, Object>> jsyList = new ArrayList<Map<String, Object>>();  
2352 - for(Map<String, Object> m : ecList){  
2353 - if(m.get("company") != null && m.get("company").toString().trim().length() > 0){  
2354 - Integer i = Integer.valueOf(m.get("company").toString().trim());  
2355 - if(!keyMap.containsKey(i)){  
2356 - Map<String, Object> temp = new HashMap<String, Object>();  
2357 - temp.put("company", m.get("companyName").toString());  
2358 - temp.put("jsy", m.get("jsy").toString());  
2359 - keyMap.put(i, temp);  
2360 - keyList.add(i);  
2361 - jsyList.add(temp);  
2362 - }  
2363 - }  
2364 - }  
2365 -  
2366 - String xlSql = "select a.jsy, b.spy, c.cl from"  
2367 - + " (select count(1) jsy from (select a.jsy from bsth_c_s_ecinfo a"  
2368 - + " left join bsth_c_personnel p on a.jsy=p.id where a.is_cancel = 0"  
2369 - + " and a.spy is not null and a.jsy is not null"  
2370 - + " and p.company_code = ?"  
2371 - + " group by jsy) a) a"  
2372 - + " LEFT JOIN"  
2373 - + " (select count(1) spy from (select b.spy from bsth_c_s_ecinfo b"  
2374 - + " left join bsth_c_personnel p on b.spy=p.id where b.is_cancel = 0"  
2375 - + " and b.spy is not null and p.company_code = ?"  
2376 - + " group by spy) b) b"  
2377 - + " on 1=1"  
2378 - + " LEFT JOIN"  
2379 - + " (select count(1) cl from (select c.cl from bsth_c_s_ccinfo c"  
2380 - + " left join bsth_c_cars car on c.cl=car.id where c.is_cancel = 0"  
2381 - + " and c.cl is not null and car.business_code = ?"  
2382 - + " and c.xl in(select e.xl from bsth_c_s_ecinfo e"  
2383 - + " where e.is_cancel = 0 and e.spy is not null) group by c.cl) c) c"  
2384 - + " on 1=1";  
2385 - List<Map<String, Object>> xlConfigList=jdbcTemplate.query(xlSql, new Object[]{gsdm, gsdm, gsdm},  
2386 - new RowMapper<Map<String, Object>>(){  
2387 - @Override  
2388 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2389 - Map<String, Object> m=new HashMap<String,Object>();  
2390 - m.put("jsy", rs.getString("jsy"));  
2391 - m.put("spy", rs.getString("spy"));  
2392 - m.put("cl", rs.getString("cl"));  
2393 - return m;  
2394 - }  
2395 - });  
2396 - long jsy = 0l, spy = 0l, cl = 0l;  
2397 - for(Map<String, Object> t : xlConfigList){  
2398 - if(t.get("jsy") != null){  
2399 - jsy += Long.valueOf(t.get("jsy").toString());  
2400 - }  
2401 - if(t.get("spy") != null){  
2402 - spy += Long.valueOf(t.get("spy").toString());  
2403 - }  
2404 - if(t.get("cl") != null){  
2405 - cl += Long.valueOf(t.get("cl").toString());  
2406 - }  
2407 - }  
2408 -  
2409 - resMap.put("jsyList", jsyList);  
2410 - resMap.put("attList", attList);  
2411 - resMap.put("lackList", lackList);  
2412 - resMap.put("salesmanJsy", jsy);  
2413 - resMap.put("salesmanSpy", spy);  
2414 - resMap.put("salesmanCl", cl);  
2415 -  
2416 - return JSON.parseObject(JSON.toJSONString(resMap));  
2417 - }  
2418 -  
2419 - /** 按月份查询统计指标 */  
2420 - @GET  
2421 - @Path("/selectData/getMonthly/{month}")  
2422 - public JSONObject getMonthly(@PathParam("month") String month){  
2423 - Map<String, Object> resMap = new HashMap<String, Object>();  
2424 -  
2425 - String gpLineSql = "select * from bsth_c_line_plate";  
2426 - List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,  
2427 - new RowMapper<Map<String, Object>>(){  
2428 - @Override  
2429 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2430 - Map<String, Object> m=new HashMap<String,Object>();  
2431 - m.put("lineName", rs.getString("line_name"));  
2432 - m.put("lineCode", rs.getString("line_code"));  
2433 - return m;  
2434 - }  
2435 - });  
2436 -  
2437 - Set<String> gpSet = new HashSet<String>();  
2438 - for(Map<String, Object> t : gpLineList){  
2439 - if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){  
2440 - gpSet.add(t.get("lineCode").toString().trim());  
2441 - }  
2442 - }  
2443 -  
2444 -  
2445 - String yyxlSql="SELECT line_code from bsth_c_line "  
2446 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
2447 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
2448 - new RowMapper<Map<String, Object>>(){  
2449 - @Override  
2450 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2451 - Map<String, Object> m=new HashMap<String,Object>();  
2452 - m.put("lineCode", rs.getString("line_code"));  
2453 - return m;  
2454 - }  
2455 - });  
2456 - Set<String> yyLine = new HashSet<String>();  
2457 - for(Map<String, Object> t : yyxlList){  
2458 - if(t.get("lineCode") != null){  
2459 - yyLine.add(t.get("lineCode").toString());  
2460 - }  
2461 - }  
2462 -  
2463 -  
2464 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
2465 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
2466 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
2467 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
2468 - + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"  
2469 - + " from bsth_c_calc_count "  
2470 - + " where date like '%"+month+"%' and gsdm != '77'";  
2471 -  
2472 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
2473 - new RowMapper<Map<String, Object>>(){  
2474 - @Override  
2475 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2476 - Map<String, Object> m=new HashMap<String,Object>();  
2477 - m.put("lineCode",rs.getString("xl"));  
2478 - m.put("lineName", rs.getString("xl_name"));  
2479 - m.put("date", rs.getString("date"));  
2480 -  
2481 - m.put("jhbc", rs.getString("jhbc"));  
2482 - m.put("sjbc", rs.getString("sjbc"));  
2483 - m.put("bczxl", rs.getString("bczxl"));  
2484 - m.put("jhbcz", rs.getString("jhbcz"));  
2485 -  
2486 - m.put("jhcc", rs.getString("jhcc"));  
2487 - m.put("sjcc", rs.getString("sjcc"));  
2488 - m.put("ccl", rs.getString("ccl"));  
2489 - m.put("jhccz", rs.getString("jhccz"));  
2490 -  
2491 - m.put("jhyylc", rs.getString("jhyylc"));  
2492 - m.put("sjyylc", rs.getString("sjyylc"));  
2493 - m.put("jhyylcz", rs.getString("jhyylcz"));  
2494 - m.put("jhkslc", rs.getString("jhkslc"));  
2495 - m.put("sjkslc", rs.getString("sjkslc"));  
2496 - m.put("jhkslcz", rs.getString("jhkslcz"));  
2497 -  
2498 - m.put("jhgfbcs", rs.getString("jhssgfbcs"));  
2499 - m.put("sjgfbcs", rs.getString("sjgfbcs"));  
2500 - m.put("jhgfbcsz", rs.getString("jhgfbcsz"));  
2501 - m.put("jhdgbcs", rs.getString("jhssdgbcs"));  
2502 - m.put("sjdgbcs", rs.getString("sjdgbcs"));  
2503 - m.put("jhdgbcsz", rs.getString("jhdgbcsz"));  
2504 -  
2505 - m.put("jhsmbcs", rs.getString("jhsmbcs"));  
2506 - m.put("sjsmbczds", rs.getString("sjsmbczds"));  
2507 - m.put("smbczdl", rs.getString("smbczdl"));  
2508 - m.put("jhsmbcsz", rs.getString("jhsmbcsz"));  
2509 - m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));  
2510 - m.put("smbczdlz", rs.getString("smbczdlz"));  
2511 -  
2512 - m.put("jhszfcs", rs.getString("jhszfcs"));  
2513 - m.put("sjszfczds", rs.getString("sjszfczds"));  
2514 - m.put("szfczdl", rs.getString("szfczdl"));  
2515 -  
2516 - m.put("jhzgl", rs.getString("jhzgl"));  
2517 - m.put("sjzgl", rs.getString("sjzgl"));  
2518 -  
2519 - Date date = new Date();  
2520 - date.setTime(rs.getTimestamp("create_date").getTime());  
2521 - m.put("createDate", sdf.format(date));  
2522 - return m;  
2523 - }  
2524 - });  
2525 -  
2526 -  
2527 - BigDecimal jhzgl = new BigDecimal(0), sjzgl = new BigDecimal(0);//  
2528 - long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,  
2529 - jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;  
2530 -  
2531 - for(Map<String, Object> t : list){  
2532 - if(yyLine.contains(t.get("lineCode").toString())){  
2533 -  
2534 - jhzgl = jhzgl.add(new BigDecimal(t.get("jhzgl").toString()));  
2535 - sjzgl = sjzgl.add(new BigDecimal(t.get("sjzgl").toString()));  
2536 -  
2537 - jhcc += Long.valueOf(t.get("jhccz").toString());  
2538 - sjcc += Long.valueOf(t.get("sjcc").toString());  
2539 - jhbc += Long.valueOf(t.get("jhbc").toString());  
2540 - sjbc += Long.valueOf(t.get("sjbc").toString());  
2541 - jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());  
2542 - sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());  
2543 - jhqqbc += Long.valueOf(t.get("jhszfcs").toString());  
2544 - sjqqzd += Long.valueOf(t.get("sjszfczds").toString());  
2545 - if(gpSet.contains(t.get("lineCode").toString())){  
2546 - jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());  
2547 - sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());  
2548 - }  
2549 -  
2550 - }  
2551 - }  
2552 -  
2553 - resMap.put("date", month);  
2554 -  
2555 - resMap.put("jhzgl", df.format(jhzgl));  
2556 - resMap.put("sjzgl", df.format(sjzgl));  
2557 - resMap.put("jhcc", jhcc);  
2558 - resMap.put("sjcc", sjcc);  
2559 - resMap.put("jhbc", jhbc);  
2560 - resMap.put("sjbc", sjbc);  
2561 - resMap.put("jhsm", jhsmbc);  
2562 - resMap.put("sjsm", sjsmbc);  
2563 - resMap.put("jhqq", jhqqbc);  
2564 - resMap.put("sjqq", sjqqzd);  
2565 - resMap.put("jhgp", jhgpqqbc);  
2566 - resMap.put("sjgp", sjgpqqzd);  
2567 -  
2568 - resMap.put("glzxl", jhzgl.doubleValue()>0?sjzgl.divide(jhzgl,  
2569 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2570 - resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),  
2571 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2572 - resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),  
2573 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2574 - resMap.put("smbzdl", jhbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),  
2575 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2576 - resMap.put("qqzzdl", jhbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),  
2577 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2578 - resMap.put("gpzdl", jhbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),  
2579 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2580 -  
2581 - return JSON.parseObject(JSON.toJSONString(resMap));  
2582 - }  
2583 -  
2584 - /** 按月份查询直属公司统计指标 */  
2585 - @GET  
2586 - @Path("/selectData/getMonthly/{gsdm}/{month}")  
2587 - public JSONObject getMonthly(@PathParam("gsdm") String gsdm, @PathParam("month") String month){  
2588 - Map<String, Object> resMap = new HashMap<String, Object>();  
2589 -  
2590 - String gpLineSql = "select * from bsth_c_line_plate";  
2591 - List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,  
2592 - new RowMapper<Map<String, Object>>(){  
2593 - @Override  
2594 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2595 - Map<String, Object> m=new HashMap<String,Object>();  
2596 - m.put("lineName", rs.getString("line_name"));  
2597 - m.put("lineCode", rs.getString("line_code"));  
2598 - return m;  
2599 - }  
2600 - });  
2601 -  
2602 - Set<String> gpSet = new HashSet<String>();  
2603 - for(Map<String, Object> t : gpLineList){  
2604 - if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){  
2605 - gpSet.add(t.get("lineCode").toString().trim());  
2606 - }  
2607 - }  
2608 -  
2609 -  
2610 - String yyxlSql="SELECT line_code from bsth_c_line "  
2611 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
2612 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
2613 - new RowMapper<Map<String, Object>>(){  
2614 - @Override  
2615 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2616 - Map<String, Object> m=new HashMap<String,Object>();  
2617 - m.put("lineCode", rs.getString("line_code"));  
2618 - return m;  
2619 - }  
2620 - });  
2621 - Set<String> yyLine = new HashSet<String>();  
2622 - for(Map<String, Object> t : yyxlList){  
2623 - if(t.get("lineCode") != null){  
2624 - yyLine.add(t.get("lineCode").toString());  
2625 - }  
2626 - }  
2627 -  
2628 -  
2629 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
2630 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
2631 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
2632 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
2633 - + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"  
2634 - + " from bsth_c_calc_count "  
2635 - + " where gsdm = '"+gsdm+"' and date like '%"+month+"%'";  
2636 -  
2637 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
2638 - new RowMapper<Map<String, Object>>(){  
2639 - @Override  
2640 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2641 - Map<String, Object> m=new HashMap<String,Object>();  
2642 - m.put("lineCode",rs.getString("xl"));  
2643 - m.put("lineName", rs.getString("xl_name"));  
2644 - m.put("date", rs.getString("date"));  
2645 -  
2646 - m.put("jhbc", rs.getString("jhbc"));  
2647 - m.put("sjbc", rs.getString("sjbc"));  
2648 - m.put("bczxl", rs.getString("bczxl"));  
2649 - m.put("jhbcz", rs.getString("jhbcz"));  
2650 -  
2651 - m.put("jhcc", rs.getString("jhcc"));  
2652 - m.put("sjcc", rs.getString("sjcc"));  
2653 - m.put("ccl", rs.getString("ccl"));  
2654 - m.put("jhccz", rs.getString("jhccz"));  
2655 -  
2656 - m.put("jhyylc", rs.getString("jhyylc"));  
2657 - m.put("sjyylc", rs.getString("sjyylc"));  
2658 - m.put("jhyylcz", rs.getString("jhyylcz"));  
2659 - m.put("jhkslc", rs.getString("jhkslc"));  
2660 - m.put("sjkslc", rs.getString("sjkslc"));  
2661 - m.put("jhkslcz", rs.getString("jhkslcz"));  
2662 -  
2663 - m.put("jhgfbcs", rs.getString("jhssgfbcs"));  
2664 - m.put("sjgfbcs", rs.getString("sjgfbcs"));  
2665 - m.put("jhgfbcsz", rs.getString("jhgfbcsz"));  
2666 - m.put("jhdgbcs", rs.getString("jhssdgbcs"));  
2667 - m.put("sjdgbcs", rs.getString("sjdgbcs"));  
2668 - m.put("jhdgbcsz", rs.getString("jhdgbcsz"));  
2669 -  
2670 - m.put("jhsmbcs", rs.getString("jhsmbcs"));  
2671 - m.put("sjsmbczds", rs.getString("sjsmbczds"));  
2672 - m.put("smbczdl", rs.getString("smbczdl"));  
2673 - m.put("jhsmbcsz", rs.getString("jhsmbcsz"));  
2674 - m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));  
2675 - m.put("smbczdlz", rs.getString("smbczdlz"));  
2676 -  
2677 - m.put("jhszfcs", rs.getString("jhszfcs"));  
2678 - m.put("sjszfczds", rs.getString("sjszfczds"));  
2679 - m.put("szfczdl", rs.getString("szfczdl"));  
2680 -  
2681 - m.put("jhzgl", rs.getString("jhzgl"));  
2682 - m.put("sjzgl", rs.getString("sjzgl"));  
2683 -  
2684 - Date date = new Date();  
2685 - date.setTime(rs.getTimestamp("create_date").getTime());  
2686 - m.put("createDate", sdf.format(date));  
2687 - return m;  
2688 - }  
2689 - });  
2690 -  
2691 -  
2692 - BigDecimal jhzgl = new BigDecimal(0), sjzgl = new BigDecimal(0);//  
2693 - long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,  
2694 - jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;  
2695 -  
2696 - for(Map<String, Object> t : list){  
2697 - if(yyLine.contains(t.get("lineCode").toString())){  
2698 -  
2699 - jhzgl = jhzgl.add(new BigDecimal(t.get("jhzgl").toString()));  
2700 - sjzgl = sjzgl.add(new BigDecimal(t.get("sjzgl").toString()));  
2701 -  
2702 - jhcc += Long.valueOf(t.get("jhccz").toString());  
2703 - sjcc += Long.valueOf(t.get("sjcc").toString());  
2704 - jhbc += Long.valueOf(t.get("jhbc").toString());  
2705 - sjbc += Long.valueOf(t.get("sjbc").toString());  
2706 - jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());  
2707 - sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());  
2708 - jhqqbc += Long.valueOf(t.get("jhszfcs").toString());  
2709 - sjqqzd += Long.valueOf(t.get("sjszfczds").toString());  
2710 - if(gpSet.contains(t.get("lineCode").toString())){  
2711 - jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());  
2712 - sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());  
2713 - }  
2714 -  
2715 - }  
2716 - }  
2717 -  
2718 - resMap.put("date", month);  
2719 -  
2720 - resMap.put("jhzgl", df.format(jhzgl));  
2721 - resMap.put("sjzgl", df.format(sjzgl));  
2722 - resMap.put("jhcc", jhcc);  
2723 - resMap.put("sjcc", sjcc);  
2724 - resMap.put("jhbc", jhbc);  
2725 - resMap.put("sjbc", sjbc);  
2726 - resMap.put("jhsm", jhsmbc);  
2727 - resMap.put("sjsm", sjsmbc);  
2728 - resMap.put("jhqq", jhqqbc);  
2729 - resMap.put("sjqq", sjqqzd);  
2730 - resMap.put("jhgp", jhgpqqbc);  
2731 - resMap.put("sjgp", sjgpqqzd);  
2732 -  
2733 - resMap.put("glzxl", jhzgl.doubleValue()>0?sjzgl.divide(jhzgl,  
2734 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2735 - resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),  
2736 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2737 - resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),  
2738 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2739 - resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),  
2740 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2741 - resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),  
2742 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2743 - resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),  
2744 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2745 -  
2746 - return JSON.parseObject(JSON.toJSONString(resMap));  
2747 - }  
2748 -  
2749 - /** 按日期查询四家直属公司统计指标 */  
2750 - @GET  
2751 - @Path("/selectData/getCompanyData/{date}")  
2752 - public List<Map<String, Object>> getCompanyData(@PathParam("date") String date){  
2753 - List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();  
2754 -  
2755 -// String date = sd.format(new Date());  
2756 -  
2757 - String gpLineSql = "select * from bsth_c_line_plate";  
2758 - List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,  
2759 - new RowMapper<Map<String, Object>>(){  
2760 - @Override  
2761 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2762 - Map<String, Object> m=new HashMap<String,Object>();  
2763 - m.put("lineName", rs.getString("line_name"));  
2764 - m.put("lineCode", rs.getString("line_code"));  
2765 - return m;  
2766 - }  
2767 - });  
2768 -  
2769 - Set<String> gpSet = new HashSet<String>();  
2770 - for(Map<String, Object> t : gpLineList){  
2771 - if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){  
2772 - gpSet.add(t.get("lineCode").toString().trim());  
2773 - }  
2774 - }  
2775 -  
2776 -  
2777 - String yyxlSql="SELECT line_code from bsth_c_line "  
2778 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
2779 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
2780 - new RowMapper<Map<String, Object>>(){  
2781 - @Override  
2782 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2783 - Map<String, Object> m=new HashMap<String,Object>();  
2784 - m.put("lineCode", rs.getString("line_code"));  
2785 - return m;  
2786 - }  
2787 - });  
2788 - Set<String> yyLine = new HashSet<String>();  
2789 - for(Map<String, Object> t : yyxlList){  
2790 - if(t.get("lineCode") != null){  
2791 - yyLine.add(t.get("lineCode").toString());  
2792 - }  
2793 - }  
2794 -  
2795 -  
2796 - String gsSql="SELECT business_name, business_code from bsth_c_business ";  
2797 - List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,  
2798 - new RowMapper<Map<String, Object>>(){  
2799 - @Override  
2800 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2801 - Map<String, Object> m=new HashMap<String,Object>();  
2802 - m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");  
2803 - m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");  
2804 - return m;  
2805 - }  
2806 - });  
2807 - final Map<String, String> gsMap = new HashMap<String, String>();  
2808 - for(Map<String, Object> t : gsList){  
2809 - if(t.get("code") != null && t.get("name") != null){  
2810 - gsMap.put(t.get("code").toString(), t.get("name").toString().substring(0, 2));  
2811 - }  
2812 - }  
2813 -  
2814 -  
2815 - String sql="select gsdm,xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
2816 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
2817 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
2818 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
2819 - + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"  
2820 - + " from bsth_c_calc_count "  
2821 - + " where date = ? and gsdm != '77'";  
2822 -  
2823 - List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{date},  
2824 - new RowMapper<Map<String, Object>>(){  
2825 - @Override  
2826 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
2827 - Map<String, Object> m=new HashMap<String,Object>();  
2828 - m.put("gs",rs.getString("gsdm")!=null?gsMap.get(rs.getString("gsdm")):"");  
2829 - m.put("lineCode",rs.getString("xl"));  
2830 - m.put("lineName", rs.getString("xl_name"));  
2831 - m.put("date", rs.getString("date"));  
2832 -  
2833 - m.put("jhbc", rs.getString("jhbc"));  
2834 - m.put("sjbc", rs.getString("sjbc"));  
2835 - m.put("bczxl", rs.getString("bczxl"));  
2836 - m.put("jhbcz", rs.getString("jhbcz"));  
2837 -  
2838 - m.put("jhcc", rs.getString("jhcc"));  
2839 - m.put("sjcc", rs.getString("sjcc"));  
2840 - m.put("ccl", rs.getString("ccl"));  
2841 - m.put("jhccz", rs.getString("jhccz"));  
2842 -  
2843 - m.put("jhyylc", rs.getString("jhyylc"));  
2844 - m.put("sjyylc", rs.getString("sjyylc"));  
2845 - m.put("jhyylcz", rs.getString("jhyylcz"));  
2846 - m.put("jhkslc", rs.getString("jhkslc"));  
2847 - m.put("sjkslc", rs.getString("sjkslc"));  
2848 - m.put("jhkslcz", rs.getString("jhkslcz"));  
2849 -  
2850 - m.put("jhgfbcs", rs.getString("jhssgfbcs"));  
2851 - m.put("sjgfbcs", rs.getString("sjgfbcs"));  
2852 - m.put("jhgfbcsz", rs.getString("jhgfbcsz"));  
2853 - m.put("jhdgbcs", rs.getString("jhssdgbcs"));  
2854 - m.put("sjdgbcs", rs.getString("sjdgbcs"));  
2855 - m.put("jhdgbcsz", rs.getString("jhdgbcsz"));  
2856 -  
2857 - m.put("jhsmbcs", rs.getString("jhsmbcs"));  
2858 - m.put("sjsmbczds", rs.getString("sjsmbczds"));  
2859 - m.put("smbczdl", rs.getString("smbczdl"));  
2860 - m.put("jhsmbcsz", rs.getString("jhsmbcsz"));  
2861 - m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));  
2862 - m.put("smbczdlz", rs.getString("smbczdlz"));  
2863 -  
2864 - m.put("jhszfcs", rs.getString("jhszfcs"));  
2865 - m.put("sjszfczds", rs.getString("sjszfczds"));  
2866 - m.put("szfczdl", rs.getString("szfczdl"));  
2867 -  
2868 - m.put("jhzgl", rs.getString("jhzgl"));  
2869 - m.put("sjzgl", rs.getString("sjzgl"));  
2870 -  
2871 - Date date = new Date();  
2872 - date.setTime(rs.getTimestamp("create_date").getTime());  
2873 - m.put("createDate", sdf.format(date));  
2874 - return m;  
2875 - }  
2876 - });  
2877 -  
2878 -  
2879 - Map<String, Integer> sortMap = new HashMap<String, Integer>();  
2880 - sortMap.put("杨高", 0);  
2881 - sortMap.put("上南", 1);  
2882 - sortMap.put("金高", 2);  
2883 - sortMap.put("南汇", 3);  
2884 - sortMap.put("浦交", 4);  
2885 - Map<String, Object> ygMap = new HashMap<String, Object>();  
2886 - ygMap.put("gs", "杨高");  
2887 - resList.add(ygMap);  
2888 - Map<String, Object> snMap = new HashMap<String, Object>();  
2889 - snMap.put("gs", "上南");  
2890 - resList.add(snMap);  
2891 - Map<String, Object> jgMap = new HashMap<String, Object>();  
2892 - jgMap.put("gs", "金高");  
2893 - resList.add(jgMap);  
2894 - Map<String, Object> nhMap = new HashMap<String, Object>();  
2895 - nhMap.put("gs", "南汇");  
2896 - resList.add(nhMap);  
2897 - Map<String, Object> pjMap = new HashMap<String, Object>();  
2898 - pjMap.put("gs", "浦交");  
2899 - resList.add(pjMap);  
2900 -  
2901 -  
2902 - for(Map<String, Object> t : list){  
2903 - if(yyLine.contains(t.get("lineCode").toString())){  
2904 - if(sortMap.get(t.get("gs")) != null){  
2905 - Map<String, Object> m = resList.get(sortMap.get(t.get("gs")));  
2906 - mapPut(m, "jhcc", t.get("jhccz").toString());  
2907 - mapPut(m, "sjcc", t.get("sjcc").toString());  
2908 - mapPut(m, "jhbc", t.get("jhbc").toString());  
2909 - mapPut(m, "sjbc", t.get("sjbc").toString());  
2910 - mapPut(m, "jhsmbc", t.get("jhsmbcs").toString());  
2911 - mapPut(m, "sjsmbc", t.get("sjsmbczds").toString());  
2912 - mapPut(m, "jhqqbc", t.get("jhszfcs").toString());  
2913 - mapPut(m, "sjqqzd", t.get("sjszfczds").toString());  
2914 - if(gpSet.contains(t.get("lineCode").toString())){  
2915 - mapPut(m, "jhgpqqbc", t.get("jhszfcs").toString());  
2916 - mapPut(m, "sjgpqqzd", t.get("sjszfczds").toString());  
2917 - }  
2918 - mapPut(m, "jhzgl", t.get("jhzgl").toString());  
2919 - mapPut(m, "sjzgl", t.get("sjzgl").toString());  
2920 - }  
2921 -  
2922 - mapPut(pjMap, "jhcc", t.get("jhccz").toString());  
2923 - mapPut(pjMap, "sjcc", t.get("sjcc").toString());  
2924 - mapPut(pjMap, "jhbc", t.get("jhbc").toString());  
2925 - mapPut(pjMap, "sjbc", t.get("sjbc").toString());  
2926 - mapPut(pjMap, "jhsmbc", t.get("jhsmbcs").toString());  
2927 - mapPut(pjMap, "sjsmbc", t.get("sjsmbczds").toString());  
2928 - mapPut(pjMap, "jhqqbc", t.get("jhszfcs").toString());  
2929 - mapPut(pjMap, "sjqqzd", t.get("sjszfczds").toString());  
2930 - if(gpSet.contains(t.get("lineCode").toString())){  
2931 - mapPut(pjMap, "jhgpqqbc", t.get("jhszfcs").toString());  
2932 - mapPut(pjMap, "sjgpqqzd", t.get("sjszfczds").toString());  
2933 - }  
2934 - mapPut(pjMap, "jhzgl", t.get("jhzgl").toString());  
2935 - mapPut(pjMap, "sjzgl", t.get("sjzgl").toString());  
2936 - }  
2937 - }  
2938 -  
2939 -  
2940 - //计算签卡率  
2941 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);  
2942 - long jh = 0, sj = 0;  
2943 - for(ScheduleRealInfo s : findAll){  
2944 - if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
2945 - if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){  
2946 - if(s.getGsBm()!=null && sortMap.get(gsMap.get(s.getGsBm()!=null?s.getGsBm():"")) != null){  
2947 - Map<String, Object> m = resList.get(sortMap.get(gsMap.get(s.getGsBm())));  
2948 - ++jh;  
2949 - mapPut(m, "bcs", 1);  
2950 - String sty = decimalToBinary(s.getRfidState());  
2951 - Integer state = Integer.parseInt(sty);  
2952 - if ((state & 4) == 4) {  
2953 - ++sj;  
2954 - mapPut(m, "qks", 1);  
2955 - }  
2956 - }  
2957 - }  
2958 - }  
2959 - }  
2960 - mapPut(pjMap, "bcs", jh);  
2961 - mapPut(pjMap, "qks", sj);  
2962 -  
2963 -  
2964 - for(Map<String, Object> m : resList){  
2965 - m.put("date", date);  
2966 -  
2967 - m.put("glzxl", new BigDecimal(m.get("jhzgl").toString()).doubleValue()>0?  
2968 - new BigDecimal(m.get("sjzgl").toString()).divide(new BigDecimal(m.get("jhzgl").toString()),  
2969 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2970 - m.put("ccl", new BigDecimal(m.get("jhcc").toString()).doubleValue()>0?  
2971 - new BigDecimal(m.get("sjcc").toString()).divide(new BigDecimal(m.get("jhcc").toString()),  
2972 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2973 - m.put("bczxl", new BigDecimal(m.get("jhbc").toString()).doubleValue()>0?  
2974 - new BigDecimal(m.get("sjbc").toString()).divide(new BigDecimal(m.get("jhbc").toString()),  
2975 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2976 - m.put("smbzdl", new BigDecimal(m.get("jhsmbc").toString()).doubleValue()>0?  
2977 - new BigDecimal(m.get("sjsmbc").toString()).divide(new BigDecimal(m.get("jhsmbc").toString()),  
2978 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2979 - m.put("qqzzdl", new BigDecimal(m.get("jhqqbc").toString()).doubleValue()>0?  
2980 - new BigDecimal(m.get("sjqqzd").toString()).divide(new BigDecimal(m.get("jhqqbc").toString()),  
2981 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2982 - m.put("gpzdl", new BigDecimal(m.get("jhgpqqbc").toString()).doubleValue()>0?  
2983 - new BigDecimal(m.get("sjgpqqzd").toString()).divide(new BigDecimal(m.get("jhgpqqbc").toString()),  
2984 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2985 - m.put("qkl", new BigDecimal(m.get("bcs")!=null?m.get("bcs").toString():"0").doubleValue()>0?  
2986 - new BigDecimal(m.get("qks")!=null?m.get("qks").toString():"0").divide(new BigDecimal(m.get("bcs").toString()),  
2987 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
2988 - }  
2989 -  
2990 - return resList;  
2991 - }  
2992 -  
2993 - /** 报备登记查询接口 */  
2994 - @GET  
2995 - @Path("/selectData/getReport/startDate/{startDate}/endDate/{endDate}")  
2996 - public List<Map<String, Object>> getReport(@PathParam("startDate") String starDate,  
2997 - @PathParam("endDate") String endDate){  
2998 - Date d1 = new Date(), d2 = new Date();  
2999 - try{  
3000 - SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");  
3001 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
3002 - d1 = sd.parse(starDate);  
3003 - d2 = sd.parse(endDate);  
3004 - d2.setTime(d2.getTime() + (1l*1000*60*60*24 - 1));  
3005 - starDate = sdf.format(d1);  
3006 - endDate = sdf.format(d2);  
3007 - }catch(ParseException e){  
3008 - // TODO Auto-generated catch block  
3009 - e.printStackTrace();  
3010 - List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
3011 - Map<String, Object> result = new HashMap<String, Object>();  
3012 - result.put("msg", "参数日期格式错误");  
3013 - list.add(result);  
3014 - return list;  
3015 - }  
3016 - String sql="SELECT ID,REPORT_TYPE,REPORT_GS,REPORT_FGS,REPORT_GSNAME,REPORT_FGSNAME,"  
3017 - + " REPORT_DATE,REPORT_BBR,REPORT_XL,REPORT_XLNAME,REPORT_STATION,REPORT_DWSBBM,"  
3018 - + " REPORT_DWSBSJ,REPORT_YWSJ,REPORT_SMBWD,REPORT_DJGSJ,REPORT_DJGYY,REPORT_TFSJ,"  
3019 - + " REPORT_YXSJ,REPORT_YXBC,REPORT_TZCS,REPORT_SGBH,REPORT_ZBH,REPORT_PZH,REPORT_JSY,"  
3020 - + " REPORT_SGSJ,REPORT_SGDD,REPORT_XSFX,REPORT_SGDX,REPORT_DXPZH,REPORT_SGGK,"  
3021 - + " REPORT_SSRS,REPORT_SWRS,REPORT_BGR,REPORT_BGRDH,REPORT_BZ,REPORT_ROAD,STATUS,"  
3022 - + " CREATE_BY,CREATE_DATE,UPDATE_BY,UPDATE_DATE"  
3023 - + " from bsth_t_report "  
3024 - + " where REPORT_DATE >= ? and REPORT_DATE <= ?";  
3025 - List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{starDate, endDate},  
3026 - new RowMapper<Map<String, Object>>(){  
3027 - @Override  
3028 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3029 - Map<String, Object> m=new HashMap<String,Object>();  
3030 - m.put("ID", rs.getString("ID"));  
3031 - m.put("REPORT_TYPE", rs.getString("REPORT_TYPE"));  
3032 - m.put("REPORT_GS", rs.getString("REPORT_GS"));  
3033 - m.put("REPORT_FGS",rs.getString("REPORT_FGS"));  
3034 - m.put("REPORT_GSNAME",rs.getString("REPORT_GSNAME"));  
3035 - m.put("REPORT_FGSNAME",rs.getString("REPORT_FGSNAME"));  
3036 - m.put("REPORT_DATE",rs.getString("REPORT_DATE"));  
3037 - m.put("REPORT_BBR",rs.getString("REPORT_BBR"));  
3038 - m.put("REPORT_XL",rs.getString("REPORT_XL"));  
3039 - m.put("REPORT_XLNAME",rs.getString("REPORT_XLNAME"));  
3040 - m.put("REPORT_STATION",rs.getString("REPORT_STATION"));  
3041 - m.put("REPORT_DWSBBM",rs.getString("REPORT_DWSBBM"));  
3042 - m.put("REPORT_DWSBSJ",rs.getString("REPORT_DWSBSJ"));  
3043 - m.put("REPORT_YWSJ",rs.getString("REPORT_YWSJ"));  
3044 - m.put("REPORT_SMBWD",rs.getString("REPORT_SMBWD"));  
3045 - m.put("REPORT_DJGSJ",rs.getString("REPORT_DJGSJ"));  
3046 - m.put("REPORT_DJGYY",rs.getString("REPORT_DJGYY"));  
3047 - m.put("REPORT_TFSJ",rs.getString("REPORT_TFSJ"));  
3048 - m.put("REPORT_YXSJ",rs.getString("REPORT_YXSJ"));  
3049 - m.put("REPORT_YXBC",rs.getString("REPORT_YXBC"));  
3050 - m.put("REPORT_TZCS",rs.getString("REPORT_TZCS"));  
3051 - m.put("REPORT_SGBH",rs.getString("REPORT_SGBH"));  
3052 - m.put("REPORT_ZBH",rs.getString("REPORT_ZBH"));  
3053 - m.put("REPORT_PZH",rs.getString("REPORT_PZH"));  
3054 - m.put("REPORT_JSY",rs.getString("REPORT_JSY"));  
3055 - m.put("REPORT_SGSJ",rs.getString("REPORT_SGSJ"));  
3056 - m.put("REPORT_SGDD",rs.getString("REPORT_SGDD"));  
3057 - m.put("REPORT_XSFX", rs.getString("REPORT_XSFX"));  
3058 - m.put("REPORT_SGDX", rs.getString("REPORT_SGDX"));  
3059 - m.put("REPORT_DXPZH", rs.getString("REPORT_DXPZH"));  
3060 - m.put("REPORT_SGGK", rs.getString("REPORT_SGGK"));  
3061 - m.put("REPORT_SSRS", rs.getString("REPORT_SSRS"));  
3062 - m.put("REPORT_SWRS", rs.getString("REPORT_SWRS"));  
3063 - m.put("REPORT_BGR", rs.getString("REPORT_BGR"));  
3064 - m.put("REPORT_BGRDH", rs.getString("REPORT_BGRDH"));  
3065 - m.put("REPORT_BZ", rs.getString("REPORT_BZ"));  
3066 - m.put("REPORT_ROAD", rs.getString("REPORT_ROAD"));  
3067 - m.put("STATUS", rs.getString("STATUS"));  
3068 - m.put("CREATE_BY", rs.getString("CREATE_BY"));  
3069 - m.put("CREATE_DATE", rs.getString("CREATE_DATE"));  
3070 - m.put("UPDATE_BY", rs.getString("UPDATE_BY"));  
3071 - m.put("UPDATE_DATE", rs.getString("UPDATE_DATE"));  
3072 - return m;  
3073 - }  
3074 - });  
3075 -  
3076 - return list;  
3077 - }  
3078 -  
3079 - /** 按日期查询所有线路大间隔情况 */  
3080 - @GET  
3081 - @Path("/selectData/getLineInterval/{date}")  
3082 - public List<Map<String, Object>> getLineInterval(@PathParam("date") String date){  
3083 - List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();  
3084 -  
3085 - String gsSql="SELECT business_name, business_code, up_code from bsth_c_business ";  
3086 - List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,  
3087 - new RowMapper<Map<String, Object>>(){  
3088 - @Override  
3089 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3090 - Map<String, Object> m=new HashMap<String,Object>();  
3091 - m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");  
3092 - m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");  
3093 - m.put("upCode", rs.getString("up_code")!=null?rs.getString("up_code"):"");  
3094 - return m;  
3095 - }  
3096 - });  
3097 -  
3098 - Map<String, Object> gsMap = new HashMap<String, Object>();  
3099 - Map<String, Object> fgsMap = new HashMap<String, Object>();  
3100 - for(Map<String, Object> m : gsList){  
3101 - if(m.get("upCode") != null && m.get("upCode").toString().trim().length() > 0  
3102 - && !("0".equals(m.get("upCode").toString().trim()))){  
3103 - if("88".equals(m.get("upCode").toString().trim())){  
3104 - gsMap.put(m.get("code").toString(), m.get("name").toString());  
3105 - } else {  
3106 - fgsMap.put(m.get("code").toString()+"_"+m.get("upCode").toString(), m.get("name").toString());  
3107 - }  
3108 - }  
3109 - }  
3110 -  
3111 - String calcIntervalSql = "select * from bsth_c_calc_interval where date = ? and sfyy = 1 and gsbm != '77'";  
3112 - List<Map<String, Object>> calcIntervalList=jdbcTemplate.query(calcIntervalSql,  
3113 - new Object[]{date},  
3114 - new RowMapper<Map<String, Object>>(){  
3115 - @Override  
3116 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3117 - Map<String, Object> m=new HashMap<String,Object>();  
3118 - m.put("gsbm", rs.getString("gsbm"));  
3119 - m.put("fgsbm", rs.getString("fgsbm"));  
3120 - m.put("date", rs.getString("date"));  
3121 - m.put("xlBm", rs.getString("xl_bm"));  
3122 - m.put("xlName", rs.getString("xl_name"));  
3123 - m.put("level", rs.getString("level"));  
3124 - return m;  
3125 - }  
3126 - });  
3127 -  
3128 - String calcIntervalDetailSql = "select * from bsth_c_calc_interval_detail where date = ?";  
3129 - List<Map<String, Object>> calcIntervalDetailList=jdbcTemplate.query(calcIntervalDetailSql,  
3130 - new Object[]{date},  
3131 - new RowMapper<Map<String, Object>>(){  
3132 - @Override  
3133 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3134 - Map<String, Object> m=new HashMap<String,Object>();  
3135 - m.put("date", rs.getString("date"));  
3136 - m.put("xlBm", rs.getString("line_code"));  
3137 - m.put("xlName", rs.getString("line_name"));  
3138 - m.put("level", rs.getString("level"));  
3139 - m.put("station", rs.getString("station"));  
3140 - m.put("jhfc1", rs.getString("jhfc1"));  
3141 - m.put("sjfc1", rs.getString("sjfc1"));  
3142 - m.put("jhfc2", rs.getString("jhfc2"));  
3143 - m.put("sjfc2", rs.getString("sjfc2"));  
3144 - m.put("subTime", rs.getString("sub_time"));  
3145 - m.put("remark", rs.getString("remark"));  
3146 - return m;  
3147 - }  
3148 - });  
3149 -  
3150 - Map<String, Map<String, Object>> calcIntervalMap = new HashMap<String, Map<String, Object>>();  
3151 -  
3152 - for(Map<String, Object> m : calcIntervalList){  
3153 - calcIntervalMap.put(m.get("xlBm").toString(), m);  
3154 - }  
3155 -  
3156 - for(Map<String, Object> m : calcIntervalDetailList){  
3157 - String xlBm = m.get("xlBm").toString();  
3158 - if(calcIntervalMap.containsKey(xlBm)){  
3159 - Map<String, Object> map = calcIntervalMap.get(xlBm);  
3160 - m.put("gs", gsMap.get(map.get("gsbm").toString()));  
3161 - m.put("fgs", fgsMap.get(map.get("fgsbm").toString() + "_" + map.get("gsbm").toString()));  
3162 - resList.add(m);  
3163 - }  
3164 - }  
3165 -  
3166 - return resList;  
3167 - }  
3168 -  
3169 - /** 按日期(加前7天共8天)查询所有线路大间隔次数 */  
3170 - @GET  
3171 - @Path("/selectData/getLastWeekIntervalSum/{date}")  
3172 - public List<Map<String, Object>> getLastWeekIntervalSum(@PathParam("date") String date) throws ParseException{  
3173 - List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();  
3174 -  
3175 - String gsSql="SELECT business_name, business_code, up_code from bsth_c_business ";  
3176 - List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,  
3177 - new RowMapper<Map<String, Object>>(){  
3178 - @Override  
3179 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3180 - Map<String, Object> m=new HashMap<String,Object>();  
3181 - m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");  
3182 - m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");  
3183 - m.put("upCode", rs.getString("up_code")!=null?rs.getString("up_code"):"");  
3184 - return m;  
3185 - }  
3186 - });  
3187 - Map<String, Object> gsMap = new HashMap<String, Object>();  
3188 - for(Map<String, Object> m : gsList){  
3189 - if(m.get("upCode") != null && m.get("upCode").toString().trim().length() > 0  
3190 - && !("0".equals(m.get("upCode").toString().trim()))){  
3191 - if("88".equals(m.get("upCode").toString().trim())){  
3192 - gsMap.put(m.get("code").toString(), m.get("name").toString());  
3193 - }  
3194 - }  
3195 - }  
3196 -  
3197 - String[] gsS = {gsMap.get("05").toString(), gsMap.get("55").toString(), gsMap.get("22").toString(), gsMap.get("26").toString()};  
3198 - String[] levelS = {"A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "D", "E"};  
3199 - List<String> keyList = new ArrayList<String>();  
3200 - for(String gs : gsS){  
3201 - for(String level : levelS){  
3202 - keyList.add(gs + "_" + level);  
3203 - }  
3204 - }  
3205 -  
3206 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
3207 - for(long l = 7l; l >= 0l; l--){  
3208 - Date d = sdf.parse(date);  
3209 - d.setTime(d.getTime() - l*1000*60*60*24);  
3210 - String date1 = sdf.format(d);  
3211 -  
3212 - String calcIntervalSql = "select * from bsth_c_calc_interval where date = ? and sfyy = 1 and gsbm != '77'";  
3213 - List<Map<String, Object>> calcIntervalList=jdbcTemplate.query(calcIntervalSql,  
3214 - new Object[]{date1},  
3215 - new RowMapper<Map<String, Object>>(){  
3216 - @Override  
3217 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3218 - Map<String, Object> m=new HashMap<String,Object>();  
3219 - m.put("gsbm", rs.getString("gsbm"));  
3220 - m.put("fgsbm", rs.getString("fgsbm"));  
3221 - m.put("date", rs.getString("date"));  
3222 - m.put("level", rs.getString("level"));  
3223 - m.put("djgAll", rs.getString("djg_all"));  
3224 - m.put("djgZgf", rs.getString("djg_zgf"));  
3225 - m.put("djgWgf", rs.getString("djg_wgf"));  
3226 - m.put("djgDg", rs.getString("djg_dg"));  
3227 - return m;  
3228 - }  
3229 - });  
3230 -  
3231 - Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();  
3232 - for(Map<String, Object> m : calcIntervalList){  
3233 - String gsName = gsMap.get(m.get("gsbm").toString()).toString();  
3234 - String level = m.get("level").toString();  
3235 - String key = gsName + "_" + level;  
3236 - if(!(keyMap.containsKey(key))){  
3237 - Map<String, Object> map = new HashMap<String, Object>();  
3238 - map.put("date", date1);  
3239 - map.put("gs", gsName);  
3240 - map.put("level", level);  
3241 - map.put("djgAll", 0);  
3242 - map.put("djgZgf", 0);  
3243 - map.put("djgWgf", 0);  
3244 - map.put("djgDg", 0);  
3245 - keyMap.put(key, map);  
3246 - }  
3247 - if(m.get("djgAll") != null && m.get("djgAll").toString().trim().length() > 0  
3248 - && Long.valueOf(m.get("djgAll").toString()) > 0l){  
3249 - Map<String, Object> map = keyMap.get(key);  
3250 - map.put("djgAll", Long.valueOf(map.get("djgAll").toString()) + Long.valueOf(m.get("djgAll").toString()));  
3251 - map.put("djgZgf", Long.valueOf(map.get("djgZgf").toString()) + Long.valueOf(m.get("djgZgf").toString()));  
3252 - map.put("djgWgf", Long.valueOf(map.get("djgWgf").toString()) + Long.valueOf(m.get("djgWgf").toString()));  
3253 - map.put("djgDg", Long.valueOf(map.get("djgDg").toString()) + Long.valueOf(m.get("djgDg").toString()));  
3254 - }  
3255 - }  
3256 -  
3257 - for(String key : keyList){  
3258 - if(keyMap.containsKey(key)){  
3259 - resList.add(keyMap.get(key));  
3260 - }  
3261 - }  
3262 - }  
3263 -  
3264 - return resList;  
3265 - }  
3266 -  
3267 - /** 按日期查询所有线路首班末班班次数 */  
3268 - @GET  
3269 - @Path("/selectData/getFirstAndLast/{date}")  
3270 - public List<Map<String, Object>> getFirstAndLast(@PathParam("date") String date){  
3271 - List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();  
3272 -  
3273 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
3274 - SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy-MM-dd");  
3275 - DecimalFormat df = new DecimalFormat("0.00");  
3276 - Date createDate = new Date();  
3277 - String sfss = "1"; //是否实时;=1为实时。  
3278 -  
3279 - String yyxlSql="SELECT line_code from bsth_c_line "  
3280 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
3281 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
3282 - new RowMapper<Map<String, Object>>(){  
3283 - @Override  
3284 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3285 - Map<String, Object> m=new HashMap<String,Object>();  
3286 - m.put("lineCode", rs.getString("line_code"));  
3287 - return m;  
3288 - }  
3289 - });  
3290 -  
3291 - //key:线路编码;value:每日营运开始时间  
3292 - Map<String, Long> yyLine = new HashMap<String, Long>();  
3293 - for(Map<String, Object> t : yyxlList){  
3294 - if(t.get("lineCode") != null){  
3295 - String lineCode = t.get("lineCode").toString();  
3296 -// yyLine.add(t.get("lineCode").toString());  
3297 - String minfcsj="02:00";  
3298 - String sqlMinYysj="select start_opt from bsth_c_line_config where "  
3299 - + " id = ("  
3300 - + "select max(id) from bsth_c_line_config where line = ?"  
3301 - + ")";  
3302 - List<String> list= jdbcTemplate.query(sqlMinYysj,  
3303 - new Object[]{lineCode},  
3304 - new RowMapper<String>(){  
3305 - @Override  
3306 - public String mapRow(ResultSet rs, int rowNum) throws SQLException {  
3307 - String startopt=rs.getString("start_opt");  
3308 - return startopt;  
3309 - }  
3310 - });  
3311 - if(list.size()>0){  
3312 - minfcsj=list.get(0);  
3313 - }  
3314 - String[] minSjs = minfcsj.split(":");  
3315 - //车辆最早发车时间 用来过滤超第二天0点的数据  
3316 - Long minSj=Long.parseLong(minSjs[0])*60+Long.parseLong(minSjs[1]);  
3317 -  
3318 - yyLine.put(lineCode, minSj);  
3319 - }  
3320 - }  
3321 -  
3322 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);  
3323 - Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>();  
3324 - Map<String, Map<String, Object>> lineXX = new HashMap<String, Map<String, Object>>();  
3325 - for(ScheduleRealInfo s : findAll){  
3326 -// if(s.getBcType().equals("region") || s.getBcType().equals("venting")  
3327 -// || s.getBcType().equals("major") || isInOut(s)){  
3328 - if(s.getBcType().equals("region") || isInOut(s)){  
3329 - continue; //区间班次、直放班次、放站班次与空驶班次不做首末班统计  
3330 - }  
3331 - if(!("77".equals(s.getGsBm())) && yyLine.containsKey(s.getXlBm())){ //只统计营运线路  
3332 - if(!(keyMap.containsKey(s.getXlBm()))){  
3333 - keyMap.put(s.getXlBm(), new ArrayList<ScheduleRealInfo>());  
3334 - }  
3335 - keyMap.get(s.getXlBm()).add(s);  
3336 -  
3337 - if(!(lineXX.containsKey(s.getXlBm()))){  
3338 - lineXX.put(s.getXlBm(), new HashMap<String, Object>());  
3339 - }  
3340 - Map<String, Object> xx = lineXX.get(s.getXlBm());  
3341 - if(!(xx.containsKey("lineName")) && s.getXlName() != null && s.getXlName().trim().length() > 0){  
3342 - xx.put("lineName", s.getXlName());  
3343 - }  
3344 - if(!(xx.containsKey("gsBm")) && s.getGsBm() != null && s.getGsBm().trim().length() > 0){  
3345 - xx.put("gsBm", s.getGsBm());  
3346 - }  
3347 - if(!(xx.containsKey("gsName")) && s.getGsName() != null && s.getGsName().trim().length() > 0){  
3348 - xx.put("gsName", s.getGsName());  
3349 - }  
3350 - if(!(xx.containsKey("fgsBm")) && s.getFgsBm() != null && s.getFgsBm().trim().length() > 0){  
3351 - xx.put("fgsBm", s.getFgsBm());  
3352 - }  
3353 - if(!(xx.containsKey("fgsName")) && s.getFgsName() != null && s.getFgsName().trim().length() > 0){  
3354 - xx.put("fgsName", s.getFgsName());  
3355 - }  
3356 - }  
3357 - }  
3358 -  
3359 - for(String lineCode : keyMap.keySet()){  
3360 - List<ScheduleRealInfo> listjh0 = new ArrayList<ScheduleRealInfo>();  
3361 - List<ScheduleRealInfo> listjh1 = new ArrayList<ScheduleRealInfo>();  
3362 - List<ScheduleRealInfo> listsj0 = new ArrayList<ScheduleRealInfo>();  
3363 - List<ScheduleRealInfo> listsj1 = new ArrayList<ScheduleRealInfo>();  
3364 - Long minFcsj = yyLine.get(lineCode);  
3365 - for(ScheduleRealInfo s : keyMap.get(lineCode)){  
3366 - String[] fcsj = s.getFcsj().split(":");  
3367 - Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);  
3368 - Long fscjT = 0L;  
3369 - if (fcsjL < minFcsj) {  
3370 - Calendar calendar = new GregorianCalendar();  
3371 - calendar.setTime(s.getScheduleDate());  
3372 - calendar.add(calendar.DATE, 1);  
3373 - Date d = calendar.getTime();  
3374 - try {  
3375 - fscjT = sdf.parse(sdf_.format(d) + " " + s.getFcsj()).getTime();  
3376 - } catch (ParseException e) {  
3377 - // TODO Auto-generated catch block  
3378 - e.printStackTrace();  
3379 - }  
3380 - } else {  
3381 - try {  
3382 - fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();  
3383 - } catch (ParseException e) {  
3384 - // TODO Auto-generated catch block  
3385 - e.printStackTrace();  
3386 - }  
3387 - }  
3388 -  
3389 - if (StringUtils.isEmpty(s.getFcsjActual())) {  
3390 - s.setFcsjActualTime(0L);  
3391 - s.setFcsjT(fscjT);  
3392 - } else {  
3393 - Long fcsjAcual = 0L;  
3394 - try {  
3395 - fcsjAcual = sdf.parse(s.getRealExecDate() + " " + s.getFcsjActual()).getTime();  
3396 - if(fcsjAcual - fscjT > (20l*60*60*1000)){//如果实发比计发大20小时则认为日期有误,如实发在次日,计发为00:00,实发为23:59  
3397 - fcsjAcual -= 1l*24*60*60*1000;  
3398 - } if(fscjT - fcsjAcual > (20l*60*60*1000)){  
3399 - fcsjAcual += 1l*24*60*60*1000;  
3400 - }  
3401 - s.setFcsjActualTime(fcsjAcual);  
3402 - s.setFcsjT(fscjT);  
3403 - } catch (ParseException e) {  
3404 - // TODO Auto-generated catch block  
3405 - e.printStackTrace();  
3406 - }  
3407 - }  
3408 -  
3409 - if (!(s.isSflj())) {  
3410 - if (s.getXlDir().equals("0")) {  
3411 - listjh0.add(s);  
3412 - } else {  
3413 - listjh1.add(s);  
3414 - }  
3415 - }  
3416 -  
3417 - if(s.getFcsjActual() != null && s.getFcsjActual().trim().length() > 0){  
3418 - if (s.getXlDir().equals("0")) {  
3419 - listsj0.add(s);  
3420 - } else {  
3421 - listsj1.add(s);  
3422 - }  
3423 - }  
3424 - }  
3425 -  
3426 - Collections.sort(listjh0, new ComparableJhfc());  
3427 - Collections.sort(listjh1, new ComparableJhfc());  
3428 - Collections.sort(listsj0, new ComparableAcual());  
3429 - Collections.sort(listsj1, new ComparableAcual());  
3430 - int jhFirst = 0, jhLast = 0, sjzdFirst = 0, sjzdLast = 0;  
3431 -  
3432 - //上行  
3433 - if(listjh0.size() > 0){  
3434 - ScheduleRealInfo jhsb = listjh0.get(0); //计划首班  
3435 - for(int f = 0; f < listjh0.size(); f++){  
3436 - jhsb = listjh0.get(f); //计划首班  
3437 - String bcType = jhsb.getBcType();  
3438 - List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhsb.getSpId());  
3439 - if(oList.size() > 0 && oList.get(0) != null  
3440 - && oList.get(0).trim().length() > 0){  
3441 - bcType = oList.get(0).trim();  
3442 - }  
3443 - if(bcType.equals("region") || bcType.equals("venting")  
3444 - || bcType.equals("major") || isInOut(bcType)){  
3445 - continue;  
3446 - }  
3447 - break;  
3448 - }  
3449 - if("1".equals(sfss) ? createDate.getTime() > jhsb.getFcsjT() : true){  
3450 - jhFirst++;  
3451 - for(int i = 0; i < listsj0.size(); i++){  
3452 - ScheduleRealInfo sjsb = listsj0.get(i); //实际首班  
3453 - String bcType = sjsb.getBcType();  
3454 - if(bcType.equals("region") || bcType.equals("venting")  
3455 - || bcType.equals("major") || isInOut(bcType)){  
3456 - continue;  
3457 - }  
3458 - long wd = sjsb.getFcsjActualTime() - jhsb.getFcsjT(); //误点,快1慢2  
3459 - if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){  
3460 - sjzdFirst++;  
3461 - break;  
3462 - }  
3463 - }  
3464 - }  
3465 -  
3466 - if(listjh0.size() > 1){  
3467 - ScheduleRealInfo jhmb = listjh0.get(listjh0.size() - 1); //计划末班  
3468 - for(int l = listjh0.size() - 1; l >= 0; l--){  
3469 - jhmb = listjh0.get(l); //计划首班  
3470 - String bcType = jhmb.getBcType();  
3471 - List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhmb.getSpId());  
3472 - if(oList.size() > 0 && oList.get(0) != null  
3473 - && oList.get(0).trim().length() > 0){  
3474 - bcType = oList.get(0).trim();  
3475 - }  
3476 - if(bcType.equals("region") || bcType.equals("venting")  
3477 - || bcType.equals("major") || isInOut(bcType)){  
3478 - continue;  
3479 - }  
3480 - break;  
3481 - }  
3482 - if("1".equals(sfss) ? createDate.getTime() > jhmb.getFcsjT() : true){  
3483 - jhLast++;  
3484 - for(int i = listsj0.size() - 1; i >= 0; i--){  
3485 - ScheduleRealInfo sjmb = listsj0.get(i); //实际末班  
3486 - String bcType = sjmb.getBcType();  
3487 - if(bcType.equals("region") || bcType.equals("venting")  
3488 - || bcType.equals("major") || isInOut(bcType)){  
3489 - continue;  
3490 - }  
3491 - long wd = sjmb.getFcsjActualTime() - jhmb.getFcsjT(); //误点,快1慢2  
3492 - if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){  
3493 - sjzdLast++;  
3494 - break;  
3495 - }  
3496 - }  
3497 - }  
3498 - }  
3499 - }  
3500 -  
3501 - //下行  
3502 - if(listjh1.size() > 0){  
3503 - ScheduleRealInfo jhsb = listjh1.get(0); //计划首班  
3504 - for(int f = 0; f < listjh1.size(); f++){  
3505 - jhsb = listjh1.get(f); //计划首班  
3506 - String bcType = jhsb.getBcType();  
3507 - List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhsb.getSpId());  
3508 - if(oList.size() > 0 && oList.get(0) != null  
3509 - && oList.get(0).trim().length() > 0){  
3510 - bcType = oList.get(0).trim();  
3511 - }  
3512 - if(bcType.equals("region") || bcType.equals("venting")  
3513 - || bcType.equals("major") || isInOut(bcType)){  
3514 - continue;  
3515 - }  
3516 - break;  
3517 - }  
3518 - if("1".equals(sfss) ? createDate.getTime() > jhsb.getFcsjT() : true){  
3519 - jhFirst++;  
3520 - for(int i = 0; i < listsj1.size(); i++){  
3521 - ScheduleRealInfo sjsb = listsj1.get(i); //实际首班  
3522 - String bcType = sjsb.getBcType();  
3523 - if(bcType.equals("region") || bcType.equals("venting")  
3524 - || bcType.equals("major") || isInOut(bcType)){  
3525 - continue;  
3526 - }  
3527 - long wd = sjsb.getFcsjActualTime() - jhsb.getFcsjT(); //误点,快1慢2  
3528 - if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){  
3529 - sjzdFirst++;  
3530 - break;  
3531 - }  
3532 - }  
3533 - }  
3534 -  
3535 - if(listjh1.size() > 1){  
3536 - ScheduleRealInfo jhmb = listjh1.get(listjh1.size() - 1); //计划末班  
3537 - for(int l = listjh1.size() - 1; l >= 0; l--){  
3538 - jhmb = listjh1.get(l); //计划首班  
3539 - String bcType = jhmb.getBcType();  
3540 - List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhmb.getSpId());  
3541 - if(oList.size() > 0 && oList.get(0) != null  
3542 - && oList.get(0).trim().length() > 0){  
3543 - bcType = oList.get(0).trim();  
3544 - }  
3545 - if(bcType.equals("region") || bcType.equals("venting")  
3546 - || bcType.equals("major") || isInOut(bcType)){  
3547 - continue;  
3548 - }  
3549 - break;  
3550 - }  
3551 - if("1".equals(sfss) ? createDate.getTime() > jhmb.getFcsjT() : true){  
3552 - jhLast++;  
3553 - for(int i = listsj1.size() - 1; i >= 0; i--){  
3554 - ScheduleRealInfo sjmb = listsj1.get(i); //实际末班  
3555 - String bcType = sjmb.getBcType();  
3556 - if(bcType.equals("region") || bcType.equals("venting")  
3557 - || bcType.equals("major") || isInOut(bcType)){  
3558 - continue;  
3559 - }  
3560 - long wd = sjmb.getFcsjActualTime() - jhmb.getFcsjT(); //误点,快1慢2  
3561 - if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){  
3562 - sjzdLast++;  
3563 - break;  
3564 - }  
3565 - }  
3566 - }  
3567 - }  
3568 - }  
3569 -  
3570 - Map<String, Object> map = new HashMap<String, Object>();  
3571 - map.put("lineCode", lineCode);  
3572 - Map<String, Object> xx = lineXX.get(lineCode);  
3573 - map.put("lineName", xx!=null&&xx.get("lineName")!=null?xx.get("lineName"):"");  
3574 - map.put("gsBm", xx!=null&&xx.get("gsBm")!=null?xx.get("gsBm"):"");  
3575 - map.put("gsName", xx!=null&&xx.get("gsName")!=null?xx.get("gsName"):"");  
3576 - map.put("fgsBm", xx!=null&&xx.get("fgsBm")!=null?xx.get("fgsBm"):"");  
3577 - map.put("fgsName", xx!=null&&xx.get("fgsName")!=null?xx.get("fgsName"):"");  
3578 - map.put("planFirst", jhFirst);  
3579 - map.put("planLast", jhLast);  
3580 - map.put("realFirst", sjzdFirst);  
3581 - map.put("realLast", sjzdLast);  
3582 - int jhbc = jhFirst + jhLast;  
3583 - int sjzdbc = sjzdFirst + sjzdLast;  
3584 - if(jhbc > 0){  
3585 - double zdl = (sjzdbc * 1.0) / (jhbc * 1.0) * 100;  
3586 - map.put("zdl", df.format(zdl));  
3587 - } else {  
3588 - map.put("zdl", "0");  
3589 - }  
3590 - if(jhFirst > 0){  
3591 - double zdlFirst = (sjzdFirst * 1.0) / (jhFirst * 1.0) * 100;  
3592 - map.put("zdlFirst", df.format(zdlFirst));  
3593 - } else {  
3594 - map.put("zdlFirst", "0");  
3595 - }  
3596 - if(jhLast > 0){  
3597 - double zdlLast = (sjzdLast * 1.0) / (jhLast * 1.0) * 100;  
3598 - map.put("zdlLast", df.format(zdlLast));  
3599 - } else {  
3600 - map.put("zdlLast", "0");  
3601 - }  
3602 -  
3603 - resList.add(map);  
3604 -  
3605 - }  
3606 -  
3607 - return resList;  
3608 - }  
3609 -  
3610 - /** 按日期查询出车的早未到情况 */  
3611 - @GET  
3612 - @Path("/selectData/getNotYet/{date}")  
3613 - public Map<String, Object> getNotYet(@PathParam("date") String date){  
3614 - Map<String, Object> resMap = new HashMap<String, Object>();  
3615 -  
3616 - String yyxlSql="SELECT line_code from bsth_c_line "  
3617 - + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
3618 - List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,  
3619 - new RowMapper<Map<String, Object>>(){  
3620 - @Override  
3621 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3622 - Map<String, Object> m=new HashMap<String,Object>();  
3623 - m.put("lineCode", rs.getString("line_code"));  
3624 - return m;  
3625 - }  
3626 - });  
3627 - Set<String> yyLine = new HashSet<String>();  
3628 - for(Map<String, Object> t : yyxlList){  
3629 - if(t.get("lineCode") != null){  
3630 - yyLine.add(t.get("lineCode").toString());  
3631 - }  
3632 - }  
3633 -  
3634 - String sqlMinYysj="select line, start_opt from bsth_c_line_config where "  
3635 - + " id in (select max(id) from bsth_c_line_config group by line)";  
3636 - List<Map<String, Object>> minfcsjList = jdbcTemplate.query(sqlMinYysj,  
3637 - new RowMapper<Map<String, Object>>(){  
3638 - @Override  
3639 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
3640 - Map<String, Object> map = new HashMap<String, Object>();  
3641 - map.put("line", rs.getString("line")!=null?rs.getString("line"):"");  
3642 - map.put("minfcsj", rs.getString("start_opt")!=null?rs.getString("start_opt"):"02:00");  
3643 - return map;  
3644 - }  
3645 - });  
3646 -  
3647 - Map<String, Object> minfcsjMap = new HashMap<String, Object>();  
3648 - for(Map<String, Object> map : minfcsjList){  
3649 - minfcsjMap.put(map.get("line").toString(), map.get("minfcsj").toString());  
3650 - }  
3651 -  
3652 - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");  
3653 - String format = sdf.format(new Date());  
3654 -  
3655 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);  
3656 - List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();  
3657 - Map<String, ScheduleRealInfo> scheduleMap = new HashMap<String, ScheduleRealInfo>();  
3658 - for(ScheduleRealInfo s : findAll){  
3659 - if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
3660 - Set<ChildTaskPlan> cts = s.getcTasks();  
3661 - if (cts != null && cts.size() > 0) {  
3662 - list_s.add(s);  
3663 - } else if (s.getZdsjActual() != null && s.getFcsjActual() != null) {  
3664 - list_s.add(s);  
3665 - } else if(s.getStatus() != 0){  
3666 - list_s.add(s);  
3667 - }  
3668 - }  
3669 - }  
3670 -  
3671 - for(ScheduleRealInfo s : list_s){  
3672 - if(!isInOut(s) && !s.isCcService()){  
3673 - String[] split = s.getFcsj().split(":");  
3674 - Long time = Long.valueOf(split[0]) * 60 + Long.valueOf(split[1]);  
3675 - String minfcsj = minfcsjMap.get(s.getXlBm())!=null?minfcsjMap.get(s.getXlBm()).toString():"02:00";  
3676 - String[] split_min = minfcsj.trim().split(":");  
3677 - Long min = Long.valueOf(split_min[0]) * 60 + Long.valueOf(split_min[1]);  
3678 - if(time < min){  
3679 - time += 1440;  
3680 - }  
3681 - s.setFcsjT(time);  
3682 - String cl = s.getClZbh();  
3683 - if(scheduleMap.containsKey(cl)){  
3684 - ScheduleRealInfo s2 = scheduleMap.get(cl);  
3685 - if(time < s2.getFcsjT()){  
3686 - scheduleMap.put(cl, s);  
3687 - }  
3688 - } else {  
3689 - scheduleMap.put(cl, s);  
3690 - }  
3691 - }  
3692 - }  
3693 -  
3694 - List<ScheduleRealInfo> notYetList = new ArrayList<ScheduleRealInfo>();  
3695 -  
3696 - long sum = scheduleMap.keySet().size(), zwd = 0;//早未到数  
3697 - long yg_z = 0, sn_z = 0, jg_z = 0, nh_z = 0;  
3698 - long yg_zwd = 0, sn_zwd = 0, jg_zwd = 0, nh_zwd = 0;  
3699 - for(String key : scheduleMap.keySet()){  
3700 - ScheduleRealInfo s = scheduleMap.get(key);  
3701 - if("05".equals(s.getGsBm())){  
3702 - yg_z += 1;  
3703 - } else if("55".equals(s.getGsBm())){  
3704 - sn_z += 1;  
3705 - } else if("22".equals(s.getGsBm())){  
3706 - jg_z += 1;  
3707 - } else if("26".equals(s.getGsBm())){  
3708 - nh_z += 1;  
3709 - }  
3710 - if("缺人".equals(s.getAdjustExps())){  
3711 - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();  
3712 - list.add(s);  
3713 - BigDecimal sjgl = new BigDecimal(culateSjgl(list));  
3714 - BigDecimal ljgl = new BigDecimal(culateLjgl(list));  
3715 - BigDecimal zero = new BigDecimal(0.0);  
3716 - if(sjgl.compareTo(zero) == 0 && ljgl.compareTo(zero) == 0){  
3717 - zwd += 1;  
3718 - if("05".equals(s.getGsBm())){  
3719 - yg_zwd += 1;  
3720 - } else if("55".equals(s.getGsBm())){  
3721 - sn_zwd += 1;  
3722 - } else if("22".equals(s.getGsBm())){  
3723 - jg_zwd += 1;  
3724 - } else if("26".equals(s.getGsBm())){  
3725 - nh_zwd += 1;  
3726 - }  
3727 - notYetList.add(s);  
3728 - }  
3729 - }  
3730 - }  
3731 -  
3732 - resMap.put("sum", sum);  
3733 - resMap.put("notYet", zwd);  
3734 - resMap.put("sum_05", yg_z);  
3735 - resMap.put("notYet_05", yg_zwd);  
3736 - resMap.put("sum_55", sn_z);  
3737 - resMap.put("notYet_55", sn_zwd);  
3738 - resMap.put("sum_22", jg_z);  
3739 - resMap.put("notYet_22", jg_zwd);  
3740 - resMap.put("sum_26", nh_z);  
3741 - resMap.put("notYet_26", nh_zwd);  
3742 - resMap.put("notYetList", notYetList);  
3743 - return resMap;  
3744 - }  
3745 -  
3746 -// public static void main(String[] args){  
3747 -//  
3748 -// }  
3749 -  
3750 - public List<Map<String, Object>> createMap(String type, String[] dates){  
3751 - List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();  
3752 -  
3753 - for(int i = 0; i < dates.length; i++){  
3754 - Map<String, Object> tempMap = new HashMap<String, Object>();  
3755 - tempMap.put("type", type);  
3756 - String[] split = dates[i].split("-");  
3757 - tempMap.put("date", split[1] + "/" + split[2]);  
3758 - tempMap.put("jh", "0");  
3759 - tempMap.put("sj", "0");  
3760 - mapList.add(tempMap);  
3761 - }  
3762 -  
3763 - return mapList;  
3764 - }  
3765 -  
3766 - public void mapPut(Map<String, Object> m, String key, Object value){  
3767 - if(m.get(key) != null){  
3768 - m.put(key, new BigDecimal(m.get(key).toString()).add(new BigDecimal(value.toString())));  
3769 - } else {  
3770 - m.put(key, value);  
3771 - }  
3772 - }  
3773 -  
3774 - /**计划营运公里*/  
3775 - public double culateJhgl(List<ScheduleRealInfo> lists) {  
3776 - // TODO Auto-generated method stub  
3777 - double jhgl=0;  
3778 - for (int i = 0; i < lists.size(); i++) {  
3779 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
3780 - if (!isInOut(scheduleRealInfo)) {  
3781 - if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){  
3782 - jhgl=Arith.add(jhgl,scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig());  
3783 - }  
3784 - }  
3785 - }  
3786 - return jhgl;  
3787 - }  
3788 -  
3789 - /**实际营运公里(不包含临加)*/  
3790 - public double culateSjgl(List<ScheduleRealInfo> lists) {  
3791 - // TODO Auto-generated method stub  
3792 - double sjgl=0;  
3793 - for (int i = 0; i < lists.size(); i++) {  
3794 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
3795 - if (!isInOut(scheduleRealInfo)) {  
3796 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
3797 - if(!scheduleRealInfo.isSflj()){  
3798 - if(childTaskPlans.isEmpty()){  
3799 - if(!(scheduleRealInfo.getStatus() == -1)){  
3800 - double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();  
3801 - double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();  
3802 - if(jhlc-jhlcOrig>0){  
3803 - sjgl=Arith.add(sjgl,jhlcOrig);  
3804 - }else{  
3805 - sjgl=Arith.add(sjgl,jhlc);  
3806 - }  
3807 - }  
3808 - }else{  
3809 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
3810 - while (it.hasNext()) {  
3811 - ChildTaskPlan childTaskPlan = it.next();  
3812 - if(childTaskPlan.getMileageType().equals("service")  
3813 - &&"正常".equals(childTaskPlan.getType1())  
3814 - && childTaskPlan.getCcId()==null){  
3815 - if (!childTaskPlan.isDestroy()) {  
3816 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
3817 - sjgl=Arith.add(sjgl,jhgl);  
3818 - }  
3819 - }  
3820 - }  
3821 - }  
3822 - }  
3823 - }  
3824 - }  
3825 - return sjgl;  
3826 - }  
3827 -  
3828 - /**临加公里*/  
3829 - public double culateLjgl(List<ScheduleRealInfo> lists) {  
3830 - // TODO Auto-generated method stub  
3831 - double ljgl=0;  
3832 - for (int i = 0; i < lists.size(); i++) {  
3833 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
3834 - if (!isInOut(scheduleRealInfo)) {  
3835 - if(!(scheduleRealInfo.getStatus() == -1)){  
3836 - if(scheduleRealInfo.isSflj()){  
3837 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
3838 - if(childTaskPlans.isEmpty()){  
3839 - ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());  
3840 - }else{  
3841 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
3842 - while (it.hasNext()) {  
3843 - ChildTaskPlan childTaskPlan = it.next();  
3844 - if(childTaskPlan.getMileageType().equals("service")  
3845 - && childTaskPlan.getCcId()==null){  
3846 - if (!childTaskPlan.isDestroy()) {  
3847 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
3848 - ljgl=Arith.add(ljgl,jhgl);  
3849 - }  
3850 - }  
3851 - }  
3852 - }  
3853 - }else{  
3854 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
3855 - if(childTaskPlans.isEmpty()){  
3856 - double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();  
3857 - double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();  
3858 - double zjlc=Arith.sub(jhlc, jhlcOrig);  
3859 - if(zjlc>0){  
3860 - ljgl=Arith.add(zjlc, ljgl);  
3861 - }  
3862 - }else{  
3863 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
3864 - while (it.hasNext()) {  
3865 - ChildTaskPlan childTaskPlan = it.next();  
3866 - if("service".equals(childTaskPlan.getMileageType())  
3867 - && "临加".equals(childTaskPlan.getType1())  
3868 - && childTaskPlan.getCcId()==null){  
3869 - if (!childTaskPlan.isDestroy()) {  
3870 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
3871 - ljgl=Arith.add(ljgl,jhgl);  
3872 - }  
3873 - }  
3874 - }  
3875 - }  
3876 - }  
3877 - }  
3878 - }  
3879 - }  
3880 - return ljgl;  
3881 - }  
3882 -  
3883 - /**烂班(少驶)公里*/  
3884 - public double culateCJLC(List<ScheduleRealInfo> list, String item) {  
3885 - // TODO Auto-generated method stub  
3886 - double sum = 0;  
3887 - Set<ChildTaskPlan> cts;  
3888 - for(ScheduleRealInfo sch : list){  
3889 - if (sch.isSflj())  
3890 - continue;  
3891 - cts = sch.getcTasks();  
3892 - if(isInOut(sch))  
3893 - continue;  
3894 - //有子任务  
3895 - if (cts != null && cts.size() > 0) {  
3896 - for(ChildTaskPlan c : cts){  
3897 - if(c.getCcId()==null){  
3898 - if(c.getMileageType().equals("service")){  
3899 - if(item.equals("其他")){  
3900 - if(c.isDestroy() &&  
3901 - ((c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item)||  
3902 - (c.getDestroyReason()==null?"": c.getDestroyReason()).equals("")))  
3903 - sum = Arith.add(sum, c.getMileage());  
3904 - }else{  
3905 - if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))  
3906 - sum = Arith.add(sum, c.getMileage());  
3907 - }  
3908 - }  
3909 - }  
3910 - }  
3911 - }  
3912 -  
3913 - //主任务烂班  
3914 - else if(sch.getStatus() == -1 && !sch.isCcService()){  
3915 - if(sch.getAdjustExps().equals(item) ||  
3916 - (StringUtils.isEmpty(sch.getAdjustExps()) && item.equals("其他"))){  
3917 - sum = Arith.add(sum, sch.getJhlcOrig());  
3918 - }  
3919 - }  
3920 - else if(item.equals("其他")){  
3921 - double diff = Arith.sub(sch.getJhlcOrig(), sch.getJhlc());  
3922 - if(diff > 0){  
3923 - sum = Arith.add(sum, diff);  
3924 - }  
3925 - }  
3926 - }  
3927 - return sum;  
3928 - }  
3929 -  
3930 - /**计划空驶公里*/  
3931 - public double culateJhJccgl(List<ScheduleRealInfo> lists) {  
3932 - // TODO Auto-generated method stub  
3933 - double jcclc =0;  
3934 - for (int i = 0; i < lists.size(); i++) {  
3935 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
3936 - if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){  
3937 - if (isInOut(scheduleRealInfo)) {  
3938 - jcclc =Arith.add(jcclc, scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig());  
3939 - }  
3940 - }  
3941 - }  
3942 - return jcclc;  
3943 - }  
3944 -  
3945 - /**实际进出场空驶*/  
3946 - public double culateJccgl(List<ScheduleRealInfo> lists) {  
3947 - // TODO Auto-generated method stub  
3948 - double jcclc =0;  
3949 - for (int i = 0; i < lists.size(); i++) {  
3950 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
3951 - if (isInOut(scheduleRealInfo)) {  
3952 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
3953 - if(childTaskPlans.isEmpty()){  
3954 - if(!(scheduleRealInfo.getStatus() == -1)){  
3955 - jcclc =Arith.add(jcclc, scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());  
3956 - }  
3957 - }else{  
3958 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
3959 - while (it.hasNext()) {  
3960 - ChildTaskPlan childTaskPlan = it.next();  
3961 - if(childTaskPlan.getMileageType().equals("empty")  
3962 - && childTaskPlan.getCcId()==null){  
3963 - if (!childTaskPlan.isDestroy()) {  
3964 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
3965 - jcclc=Arith.add(jcclc,jhgl);  
3966 - }  
3967 - }  
3968 - }  
3969 - }  
3970 - }  
3971 - }  
3972 - return jcclc;  
3973 - }  
3974 -  
3975 - /**实际非进出场空驶公里*/  
3976 - public double culateKsgl(List<ScheduleRealInfo> lists) {  
3977 - // TODO Auto-generated method stub  
3978 - double ksgl =0;  
3979 - for (int i = 0; i < lists.size(); i++) {  
3980 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
3981 - if (!isInOut(scheduleRealInfo)) {  
3982 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
3983 - if(!childTaskPlans.isEmpty()){  
3984 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
3985 - while (it.hasNext()) {  
3986 - ChildTaskPlan childTaskPlan = it.next();  
3987 - if(childTaskPlan.getMileageType().equals("empty") && childTaskPlan.getCcId()==null){  
3988 - if (!childTaskPlan.isDestroy()) {  
3989 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
3990 - ksgl=Arith.add(ksgl,jhgl);  
3991 - }  
3992 - }  
3993 - }  
3994 - }  
3995 - }  
3996 - }  
3997 - return ksgl;  
3998 - }  
3999 -  
4000 - class ComparableJhfc implements Comparator<ScheduleRealInfo>{  
4001 -  
4002 - @Override  
4003 - public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {  
4004 - // TODO Auto-generated method stub  
4005 - return o1.getFcsjT().compareTo(o2.getFcsjT());  
4006 - }  
4007 - }  
4008 - class ComparableAcual implements Comparator<ScheduleRealInfo>{  
4009 -  
4010 - @Override  
4011 - public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {  
4012 - // TODO Auto-generated method stub  
4013 - return o1.getFcsjActualTime().compareTo(o2.getFcsjActualTime());  
4014 - }  
4015 - }  
4016 -  
4017 - public static String decimalToBinary(int n) {  
4018 - String str = "";  
4019 - if(n == 0){  
4020 - return str = "0";  
4021 - }  
4022 - while (n != 0) {  
4023 - str = n % 2 + str;  
4024 - n = n / 2;  
4025 - }  
4026 - return str;  
4027 - }  
4028 -  
4029 -} 1 +package com.bsth.server_rs.bigdata;
  2 +
  3 +import java.math.BigDecimal;
  4 +import java.sql.ResultSet;
  5 +import java.sql.SQLException;
  6 +import java.text.DecimalFormat;
  7 +import java.text.ParseException;
  8 +import java.text.SimpleDateFormat;
  9 +import java.util.ArrayList;
  10 +import java.util.Calendar;
  11 +import java.util.Collections;
  12 +import java.util.Comparator;
  13 +import java.util.Date;
  14 +import java.util.GregorianCalendar;
  15 +import java.util.HashMap;
  16 +import java.util.HashSet;
  17 +import java.util.Iterator;
  18 +import java.util.List;
  19 +import java.util.Map;
  20 +import java.util.Set;
  21 +
  22 +import javax.ws.rs.GET;
  23 +import javax.ws.rs.Path;
  24 +import javax.ws.rs.PathParam;
  25 +import javax.ws.rs.Produces;
  26 +import javax.ws.rs.core.MediaType;
  27 +
  28 +import org.apache.commons.lang.StringUtils;
  29 +import org.slf4j.Logger;
  30 +import org.slf4j.LoggerFactory;
  31 +import org.springframework.beans.factory.annotation.Autowired;
  32 +import org.springframework.jdbc.core.JdbcTemplate;
  33 +import org.springframework.jdbc.core.RowMapper;
  34 +import org.springframework.stereotype.Component;
  35 +
  36 +import com.alibaba.fastjson.JSON;
  37 +import com.alibaba.fastjson.JSONObject;
  38 +import com.bsth.entity.ChildTaskPlan;
  39 +import com.bsth.entity.ScheduleRealInfo;
  40 +import com.bsth.repository.ScheduleRealInfoRepository;
  41 +import com.bsth.util.Arith;
  42 +
  43 +@Component
  44 +@Path("/bigscreen")
  45 +@Produces({MediaType.APPLICATION_JSON})
  46 +public class BigscreenService {
  47 + Logger logger = LoggerFactory.getLogger(this.getClass());
  48 +
  49 + @Autowired
  50 + JdbcTemplate jdbcTemplate;
  51 +
  52 + @Autowired
  53 + ScheduleRealInfoRepository scheduleRealInfoRepository;
  54 +
  55 + DecimalFormat df = new DecimalFormat("0.###");
  56 +
  57 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  58 +
  59 + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
  60 +
  61 + /*
  62 + * 线路接口开始
  63 + */
  64 + private static String getNature(String natureCode){
  65 + String natureName="";
  66 + if("lj".equals(natureCode)){
  67 + natureName="路救";
  68 + }else if("bc".equals(natureCode)){
  69 + natureName="备车";
  70 + }else if("dbc".equals(natureCode)){
  71 + natureName="定班车";
  72 + }else if("yxl".equals(natureCode)){
  73 + natureName="夜宵路";
  74 + }else if("cgxl".equals(natureCode)){
  75 + natureName="常规线路";
  76 + }else if("gjxl".equals(natureCode)){
  77 + natureName="过江线路";
  78 + }else if("csbs".equals(natureCode)){
  79 + natureName="穿梭巴士";
  80 + }else if("tyxl".equals(natureCode)){
  81 + natureName="特约线路";
  82 + }else if("cctxl".equals(natureCode)){
  83 + natureName="村村通线路";
  84 + }else if("qt".equals(natureCode)){
  85 + natureName="其他";
  86 + }else {
  87 + natureName="";
  88 + }
  89 + return natureName;
  90 + }
  91 +
  92 + private static String getGs(String gs){
  93 + String name="";
  94 + if("05".equals(gs)){
  95 + name="杨高公司";
  96 + }else if("22".equals(gs)){
  97 + name="金高公司";
  98 + }else if("26".equals(gs)){
  99 + name="南汇公司";
  100 + }else if("55".equals(gs)){
  101 + name="上南公司";
  102 + }else{
  103 + name="";
  104 + }
  105 + return name;
  106 + }
  107 +
  108 + private static String getState(String carState){
  109 + if(carState.equals("1")){
  110 + return "在册未在用";
  111 + }else if(carState.equals("2")){
  112 + return "在册在用";
  113 + }else if(carState.equals("3")){
  114 + return "报废审核中";
  115 + }else if(carState.equals("4")){
  116 + return "报废待更新";
  117 + }else if(carState.equals("5")){
  118 + return "报废已更新";
  119 + }else{
  120 + return "";
  121 + }
  122 + }
  123 +
  124 + public static boolean isInOut(ScheduleRealInfo s){
  125 + boolean fage=false;
  126 + if(s.getBcType().equals("in")){
  127 + fage=true;
  128 + }
  129 + if(s.getBcType().equals("out")){
  130 + fage=true;
  131 + }
  132 + if(s.getBcType().equals("ldks")){
  133 + fage=true;
  134 + }
  135 + return fage;
  136 + }
  137 +
  138 + public static boolean isInOut(String bcType){
  139 + boolean fage=false;
  140 + if(bcType.equals("in")){
  141 + fage=true;
  142 + }
  143 + if(bcType.equals("out")){
  144 + fage=true;
  145 + }
  146 + if(bcType.equals("ldks")){
  147 + fage=true;
  148 + }
  149 + return fage;
  150 + }
  151 +
  152 + public Map<String, Long> getEndtime(String date){
  153 + Map<String, Long> map=new HashMap<String,Long>();
  154 + String sql="select xl,endtime from bsth_c_calc_count "
  155 + + " where date='"+date+"' ";
  156 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  157 + new RowMapper<Map<String, Object>>(){
  158 + @Override
  159 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  160 + Map<String, Object> m=new HashMap<String, Object>();
  161 + m.put("line", rs.getString("xl"));
  162 + m.put("endtime", rs.getString("endtime"));
  163 + return m;
  164 + }
  165 + });
  166 + for (int i = 0; i < list.size(); i++) {
  167 + map.put(list.get(i).get("line").toString(),
  168 + Long.parseLong(list.get(i).get("endtime").toString()));
  169 + }
  170 + return map;
  171 + }
  172 +
  173 + /**给大屏的线路数、班次、里程汇总接口
  174 + *
  175 + */
  176 + @GET
  177 + @Path("/selectData/getBigScreen")
  178 + public JSONObject getBigScreen(){
  179 + Map<String, Object> resMap = new HashMap<String, Object>();
  180 +
  181 + int day = 8;//天数
  182 +
  183 + Date dd = new Date();
  184 + String date = sd.format(dd); //yyyy-MM-dd 当天
  185 + Date dd2 = new Date();
  186 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  187 + String date2 = sd.format(dd2); //yyyy-MM-dd 7天前(加上当天就是取8天数据)
  188 +
  189 + String[] dates = new String[day];
  190 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  191 +
  192 + for(int i = 0; i < day; i++){
  193 + Date tempDate = new Date();
  194 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  195 + String format = sd.format(tempDate);
  196 + dates[i] = format;
  197 + datesMap.put(format, i);
  198 + }
  199 +
  200 + String gpLineSql = "select * from bsth_c_line_plate";
  201 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  202 + new RowMapper<Map<String, Object>>(){
  203 + @Override
  204 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  205 + Map<String, Object> m=new HashMap<String,Object>();
  206 + m.put("lineName", rs.getString("line_name"));
  207 + m.put("lineCode", rs.getString("line_code"));
  208 + return m;
  209 + }
  210 + });
  211 +
  212 + Set<String> gpSet = new HashSet<String>();
  213 + for(Map<String, Object> t : gpLineList){
  214 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  215 + gpSet.add(t.get("lineCode").toString().trim());
  216 + }
  217 + }
  218 +
  219 + String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"
  220 + + " a.shanghai_linecode, a.nature from "
  221 + + " bsth_c_line a left join bsth_c_line_config b "
  222 + + " on a.id=b.line where "
  223 + + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "
  224 + + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  225 + List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,
  226 + new RowMapper<Map<String, Object>>(){
  227 + @Override
  228 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  229 + Map<String, Object> m=new HashMap<String,Object>();
  230 + m.put("state", rs.getString("start_opt"));
  231 + m.put("company", rs.getString("company"));
  232 + m.put("companyName", getGs(rs.getString("company")));
  233 + m.put("lineCode",rs.getString("line_code"));
  234 + m.put("name", rs.getString("name"));
  235 + m.put("level", rs.getString("level"));
  236 + m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));
  237 + m.put("nature", getNature(rs.getString("nature")));
  238 + return m;
  239 + }
  240 + });
  241 +
  242 + int level1 = 0, level2 = 0;
  243 + for(Map<String, Object> t : lineList){
  244 + if(t.get("level") != null){
  245 + if("1".equals(t.get("level").toString())){
  246 + ++level1;
  247 + } else if("2".equals(t.get("level").toString())){
  248 + ++level2;
  249 + }
  250 + }
  251 + }
  252 +
  253 +
  254 + String yyxlSql="SELECT line_code from bsth_c_line "
  255 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  256 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  257 + new RowMapper<Map<String, Object>>(){
  258 + @Override
  259 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  260 + Map<String, Object> m=new HashMap<String,Object>();
  261 + m.put("lineCode", rs.getString("line_code"));
  262 + return m;
  263 + }
  264 + });
  265 + Set<String> yyLine = new HashSet<String>();
  266 + for(Map<String, Object> t : yyxlList){
  267 + if(t.get("lineCode") != null){
  268 + yyLine.add(t.get("lineCode").toString());
  269 + }
  270 + }
  271 +
  272 +
  273 + List<String> objList = new ArrayList<String>();
  274 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  275 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  276 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  277 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  278 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  279 + + " from bsth_c_calc_count where gsdm != '77'"
  280 + + " and date >= ? and date <= ?";
  281 + objList.add(date2);
  282 + objList.add(date);
  283 +
  284 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  285 + objList.toArray(),
  286 + new RowMapper<Map<String, Object>>(){
  287 + @Override
  288 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  289 + Map<String, Object> m=new HashMap<String,Object>();
  290 + m.put("lineCode",rs.getString("xl"));
  291 + m.put("lineName", rs.getString("xl_name"));
  292 + m.put("date", rs.getString("date"));
  293 +
  294 + m.put("jhbc", rs.getString("jhbc"));
  295 + m.put("sjbc", rs.getString("sjbc"));
  296 + m.put("bczxl", rs.getString("bczxl"));
  297 + m.put("jhbcz", rs.getString("jhbcz"));
  298 +
  299 + m.put("jhcc", rs.getString("jhcc"));
  300 + m.put("sjcc", rs.getString("sjcc"));
  301 + m.put("ccl", rs.getString("ccl"));
  302 + m.put("jhccz", rs.getString("jhccz"));
  303 +
  304 + m.put("jhyylc", rs.getString("jhyylc"));
  305 + m.put("sjyylc", rs.getString("sjyylc"));
  306 + m.put("jhyylcz", rs.getString("jhyylcz"));
  307 + m.put("jhkslc", rs.getString("jhkslc"));
  308 + m.put("sjkslc", rs.getString("sjkslc"));
  309 + m.put("jhkslcz", rs.getString("jhkslcz"));
  310 +
  311 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  312 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  313 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  314 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  315 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  316 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  317 +
  318 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  319 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  320 + m.put("smbczdl", rs.getString("smbczdl"));
  321 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  322 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  323 + m.put("smbczdlz", rs.getString("smbczdlz"));
  324 +
  325 + m.put("jhszfcs", rs.getString("jhszfcs"));
  326 + m.put("sjszfczds", rs.getString("sjszfczds"));
  327 + m.put("szfczdl", rs.getString("szfczdl"));
  328 +
  329 + Date date = new Date();
  330 + date.setTime(rs.getTimestamp("create_date").getTime());
  331 + m.put("createDate", sdf.format(date));
  332 + return m;
  333 + }
  334 + });
  335 +
  336 + List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();
  337 + List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();
  338 + List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();
  339 + List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();
  340 +
  341 + List<Map<String, Object>> ccList = createMap("计划出车率", dates);
  342 + List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);
  343 + List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);
  344 + List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);
  345 + List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);
  346 + List<Map<String, Object>> qkList = createMap("签卡率", dates);
  347 +
  348 + long sjbcs_z = 0l;//实时总班次
  349 + BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程
  350 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  351 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;
  352 +
  353 + for(Map<String, Object> t : list){
  354 + if(yyLine.contains(t.get("lineCode").toString())){
  355 + String d = t.get("date").toString();
  356 + if(date.equals(d)){
  357 + sjbcs_z += Long.valueOf(t.get("sjbc").toString());
  358 + yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));
  359 +
  360 + jhcc += Long.valueOf(t.get("jhccz").toString());
  361 + sjcc += Long.valueOf(t.get("sjcc").toString());
  362 + jhbc += Long.valueOf(t.get("jhbc").toString());
  363 + sjbc += Long.valueOf(t.get("sjbc").toString());
  364 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  365 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  366 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  367 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  368 + if(gpSet.contains(t.get("lineCode").toString())){
  369 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  370 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  371 + }
  372 +
  373 + Map<String, Object> bc = new HashMap<String, Object>();
  374 + bc.put("type", "班次执行详情");
  375 + bc.put("lineName", t.get("lineName").toString());
  376 + bc.put("jh", t.get("jhbc").toString());
  377 + bc.put("sj", t.get("sjbc").toString());
  378 + bcDetail.add(bc);
  379 +
  380 + Map<String, Object> sm = new HashMap<String, Object>();
  381 + sm.put("type", "首站发车详情");
  382 + sm.put("lineName", t.get("lineName").toString());
  383 + sm.put("jh", t.get("jhsmbcs").toString());
  384 + sm.put("sj", t.get("sjsmbczds").toString());
  385 + smDetail.add(sm);
  386 +
  387 + Map<String, Object> qq = new HashMap<String, Object>();
  388 + qq.put("type", "起讫站发车准点详情");
  389 + qq.put("lineName", t.get("lineName").toString());
  390 + qq.put("jh", t.get("jhszfcs").toString());
  391 + qq.put("sj", t.get("sjszfczds").toString());
  392 + qqDetail.add(qq);
  393 +
  394 + if(gpSet.contains(t.get("lineCode").toString())){
  395 + Map<String, Object> gp = new HashMap<String, Object>();
  396 + gp.put("type", "挂牌线路发车准点详情");
  397 + gp.put("lineName", t.get("lineName").toString());
  398 + gp.put("jh", t.get("jhszfcs").toString());
  399 + gp.put("sj", t.get("sjszfczds").toString());
  400 + gpDetail.add(gp);
  401 + }
  402 + }
  403 +
  404 + Map<String, Object> ccMap = ccList.get(datesMap.get(d));
  405 + Map<String, Object> bcMap = bcList.get(datesMap.get(d));
  406 + Map<String, Object> smMap = smList.get(datesMap.get(d));
  407 + Map<String, Object> qqMap = qqList.get(datesMap.get(d));
  408 + Map<String, Object> gpMap = gpList.get(datesMap.get(d));
  409 +
  410 + ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));
  411 + ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));
  412 + bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));
  413 + bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));
  414 + smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));
  415 + smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));
  416 + qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  417 + qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  418 + if(gpSet.contains(t.get("lineCode").toString())){
  419 + gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  420 + gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  421 + }
  422 +
  423 + }
  424 + }
  425 +
  426 +
  427 + //计算签卡率
  428 + for(String d : dates){
  429 + if(d!=null && d.trim().length() > 0){
  430 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(d);
  431 + Map<String, Object> qkMap = qkList.get(datesMap.get(d));
  432 + long jh = 0, sj = 0;
  433 + for(ScheduleRealInfo s : findAll){
  434 + if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  435 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  436 + ++jh;
  437 + //String sty = decimalToBinary(s.getRfidState());
  438 + String sty = decimalToBinary(0);
  439 + Integer state = Integer.parseInt(sty);
  440 + if ((state & 4) == 4) {
  441 + ++sj;
  442 + }
  443 + }
  444 + }
  445 + }
  446 + qkMap.put("jh", jh);
  447 + qkMap.put("sj", sj);
  448 +
  449 + if(date.equals(d)){
  450 + bcs_qk = jh;
  451 + qks = sj;
  452 + }
  453 + }
  454 + }
  455 +
  456 +
  457 + List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();
  458 + zxlList.addAll(ccList);
  459 + zxlList.addAll(bcList);
  460 + zxlList.addAll(smList);
  461 + zxlList.addAll(qqList);
  462 + zxlList.addAll(gpList);
  463 + zxlList.addAll(qkList);
  464 +
  465 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  466 + detailsList.addAll(bcDetail);
  467 + detailsList.addAll(smDetail);
  468 + detailsList.addAll(qqDetail);
  469 + detailsList.addAll(gpDetail);
  470 +
  471 + for(Map<String, Object> t : zxlList){
  472 + if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){
  473 + t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),
  474 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());
  475 + } else {
  476 + t.put("ratio", "0");
  477 + }
  478 + }
  479 +
  480 + List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();
  481 +
  482 + Date dd1 = new Date();
  483 + dd1.setTime(dd.getTime() - 1l*1000*60*60*24);
  484 + String date1 = sd.format(dd1); //前一天
  485 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);
  486 + List<ScheduleRealInfo> listSche = new ArrayList<ScheduleRealInfo>();
  487 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  488 + for(ScheduleRealInfo s : findAll){
  489 + if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  490 + listSche.add(s);
  491 + Set<ChildTaskPlan> cts = s.getcTasks();
  492 + if (cts != null && cts.size() > 0) {
  493 + list_s.add(s);
  494 + } else {
  495 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  496 + list_s.add(s);
  497 + }
  498 + }
  499 + }
  500 + }
  501 + double jhyygl = culateJhgl(listSche);//计划营运公里
  502 + double jhjccgl = culateJhJccgl(listSche);
  503 + double jhzgl = Arith.add(jhyygl, jhjccgl);
  504 + double sjgl = culateSjgl(list_s);//实际营运公里(不含临加)
  505 + double sjljgl = culateLjgl(listSche);//实际临加公里
  506 + double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里
  507 + double sjjccgl = culateJccgl(list_s);
  508 + double sjksgl = culateKsgl(list_s);
  509 + double zksgl = Arith.add(sjjccgl, sjksgl);
  510 + double sjzgl = Arith.add(sjyygl, zksgl);//实际总公里
  511 + double lz = culateCJLC(listSche, "路阻");
  512 + double dm = culateCJLC(listSche, "吊慢");
  513 + double gz = culateCJLC(listSche, "故障");
  514 + double jf = culateCJLC(listSche, "纠纷");
  515 + double zs = culateCJLC(listSche, "肇事");
  516 + double qr = culateCJLC(listSche, "缺人");
  517 + double qc = culateCJLC(listSche, "缺车");
  518 + double qrqc = Arith.add(qr, qc);//缺人缺车
  519 + double kx = culateCJLC(listSche, "客稀");
  520 + double qh = culateCJLC(listSche, "气候");
  521 + double yw = culateCJLC(listSche, "援外");
  522 + double lb_pc = culateCJLC(listSche, "配车");
  523 + double lb_by = culateCJLC(listSche, "保养");
  524 + double lb_cj = culateCJLC(listSche, "抽减");
  525 + double lb_qt = culateCJLC(listSche, "其他");
  526 + double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他
  527 +
  528 + Map<String, Object> jhzglMap = new HashMap<String, Object>();
  529 + jhzglMap.put("name", "计划总公里");
  530 + jhzglMap.put("value", jhzgl);
  531 + glList.add(jhzglMap);
  532 + Map<String, Object> sjzglMap = new HashMap<String, Object>();
  533 + sjzglMap.put("name", "实际总公里");
  534 + sjzglMap.put("value", sjzgl);
  535 + glList.add(sjzglMap);
  536 + Map<String, Object> lzMap = new HashMap<String, Object>();
  537 + lzMap.put("name", "路阻");
  538 + lzMap.put("value", lz);
  539 + glList.add(lzMap);
  540 + Map<String, Object> dmMap = new HashMap<String, Object>();
  541 + dmMap.put("name", "吊慢");
  542 + dmMap.put("value", dm);
  543 + glList.add(dmMap);
  544 + Map<String, Object> gzMap = new HashMap<String, Object>();
  545 + gzMap.put("name", "故障");
  546 + gzMap.put("value", gz);
  547 + glList.add(gzMap);
  548 + Map<String, Object> jfMap = new HashMap<String, Object>();
  549 + jfMap.put("name", "纠纷");
  550 + jfMap.put("value", jf);
  551 + glList.add(jfMap);
  552 + Map<String, Object> zsMap = new HashMap<String, Object>();
  553 + zsMap.put("name", "肇事");
  554 + zsMap.put("value", zs);
  555 + glList.add(zsMap);
  556 + Map<String, Object> qrqcMap = new HashMap<String, Object>();
  557 + qrqcMap.put("name", "缺人缺车");
  558 + qrqcMap.put("value", qrqc);
  559 + glList.add(qrqcMap);
  560 + Map<String, Object> kxMap = new HashMap<String, Object>();
  561 + kxMap.put("name", "客稀");
  562 + kxMap.put("value", kx);
  563 + glList.add(kxMap);
  564 + Map<String, Object> qhMap = new HashMap<String, Object>();
  565 + qhMap.put("name", "气候");
  566 + qhMap.put("value", qh);
  567 + glList.add(qhMap);
  568 + Map<String, Object> ywMap = new HashMap<String, Object>();
  569 + ywMap.put("name", "援外");
  570 + ywMap.put("value", yw);
  571 + glList.add(ywMap);
  572 + Map<String, Object> qtMap = new HashMap<String, Object>();
  573 + qtMap.put("name", "其他");
  574 + qtMap.put("value", qt);
  575 + glList.add(qtMap);
  576 +
  577 +
  578 + resMap.put("lineCount", lineList.size());
  579 + resMap.put("level1Count", level1);
  580 + resMap.put("level2Count", level2);
  581 + resMap.put("sjbcs", sjbcs_z);
  582 + resMap.put("sjlcs", yygl_z.doubleValue());
  583 +
  584 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  585 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  586 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  587 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  588 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  589 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  590 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  591 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  592 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  593 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  594 + resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),
  595 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  596 +
  597 + resMap.put("ratioList", zxlList);
  598 +
  599 + resMap.put("detailsList", detailsList);
  600 +
  601 + resMap.put("mileageList", glList);
  602 +
  603 + return JSON.parseObject(JSON.toJSONString(resMap));
  604 + }
  605 +
  606 + /**给大屏的线路数、班次、里程汇总接口
  607 + * 按直属公司查询
  608 + */
  609 + @GET
  610 + @Path("/selectData/getBigScreen/{gsdm}")
  611 + public JSONObject getBigScreen(@PathParam("gsdm") String gsdm){
  612 + Map<String, Object> resMap = new HashMap<String, Object>();
  613 +
  614 + int day = 8;//天数
  615 +
  616 + Date dd = new Date();
  617 + String date = sd.format(dd); //yyyy-MM-dd 当天
  618 + Date dd2 = new Date();
  619 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  620 + String date2 = sd.format(dd2); //yyyy-MM-dd 7天前(加上当天就是取8天数据)
  621 +
  622 + String[] dates = new String[day];
  623 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  624 +
  625 + for(int i = 0; i < day; i++){
  626 + Date tempDate = new Date();
  627 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  628 + String format = sd.format(tempDate);
  629 + dates[i] = format;
  630 + datesMap.put(format, i);
  631 + }
  632 +
  633 + String gpLineSql = "select * from bsth_c_line_plate";
  634 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  635 + new RowMapper<Map<String, Object>>(){
  636 + @Override
  637 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  638 + Map<String, Object> m=new HashMap<String,Object>();
  639 + m.put("lineName", rs.getString("line_name"));
  640 + m.put("lineCode", rs.getString("line_code"));
  641 + return m;
  642 + }
  643 + });
  644 +
  645 + Set<String> gpSet = new HashSet<String>();
  646 + for(Map<String, Object> t : gpLineList){
  647 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  648 + gpSet.add(t.get("lineCode").toString().trim());
  649 + }
  650 + }
  651 +
  652 + String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"
  653 + + " a.shanghai_linecode, a.nature from "
  654 + + " bsth_c_line a left join bsth_c_line_config b "
  655 + + " on a.id=b.line where "
  656 + + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "
  657 + + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  658 + List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,
  659 + new RowMapper<Map<String, Object>>(){
  660 + @Override
  661 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  662 + Map<String, Object> m=new HashMap<String,Object>();
  663 + m.put("state", rs.getString("start_opt"));
  664 + m.put("company", rs.getString("company"));
  665 + m.put("companyName", getGs(rs.getString("company")));
  666 + m.put("lineCode",rs.getString("line_code"));
  667 + m.put("name", rs.getString("name"));
  668 + m.put("level", rs.getString("level"));
  669 + m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));
  670 + m.put("nature", getNature(rs.getString("nature")));
  671 + return m;
  672 + }
  673 + });
  674 +
  675 + int level1 = 0, level2 = 0, lineCount = 0;
  676 + for(Map<String, Object> t : lineList){
  677 + if(t.containsKey("company") && t.get("company").toString().trim().equals(gsdm)){
  678 + ++lineCount;
  679 + if(t.get("level") != null){
  680 + if("1".equals(t.get("level").toString())){
  681 + ++level1;
  682 + } else if("2".equals(t.get("level").toString())){
  683 + ++level2;
  684 + }
  685 + }
  686 + }
  687 + }
  688 +
  689 +
  690 + String yyxlSql="SELECT line_code from bsth_c_line "
  691 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  692 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  693 + new RowMapper<Map<String, Object>>(){
  694 + @Override
  695 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  696 + Map<String, Object> m=new HashMap<String,Object>();
  697 + m.put("lineCode", rs.getString("line_code"));
  698 + return m;
  699 + }
  700 + });
  701 + Set<String> yyLine = new HashSet<String>();
  702 + for(Map<String, Object> t : yyxlList){
  703 + if(t.get("lineCode") != null){
  704 + yyLine.add(t.get("lineCode").toString());
  705 + }
  706 + }
  707 +
  708 +
  709 + List<String> objList = new ArrayList<String>();
  710 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  711 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  712 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  713 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  714 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  715 + + " from bsth_c_calc_count "
  716 + + " where date >= ? and date <= ? and gsdm = ?";
  717 + objList.add(date2);
  718 + objList.add(date);
  719 + objList.add(gsdm);
  720 +
  721 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  722 + objList.toArray(),
  723 + new RowMapper<Map<String, Object>>(){
  724 + @Override
  725 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  726 + Map<String, Object> m=new HashMap<String,Object>();
  727 + m.put("lineCode",rs.getString("xl"));
  728 + m.put("lineName", rs.getString("xl_name"));
  729 + m.put("date", rs.getString("date"));
  730 +
  731 + m.put("jhbc", rs.getString("jhbc"));
  732 + m.put("sjbc", rs.getString("sjbc"));
  733 + m.put("bczxl", rs.getString("bczxl"));
  734 + m.put("jhbcz", rs.getString("jhbcz"));
  735 +
  736 + m.put("jhcc", rs.getString("jhcc"));
  737 + m.put("sjcc", rs.getString("sjcc"));
  738 + m.put("ccl", rs.getString("ccl"));
  739 + m.put("jhccz", rs.getString("jhccz"));
  740 +
  741 + m.put("jhyylc", rs.getString("jhyylc"));
  742 + m.put("sjyylc", rs.getString("sjyylc"));
  743 + m.put("jhyylcz", rs.getString("jhyylcz"));
  744 + m.put("jhkslc", rs.getString("jhkslc"));
  745 + m.put("sjkslc", rs.getString("sjkslc"));
  746 + m.put("jhkslcz", rs.getString("jhkslcz"));
  747 +
  748 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  749 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  750 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  751 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  752 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  753 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  754 +
  755 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  756 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  757 + m.put("smbczdl", rs.getString("smbczdl"));
  758 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  759 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  760 + m.put("smbczdlz", rs.getString("smbczdlz"));
  761 +
  762 + m.put("jhszfcs", rs.getString("jhszfcs"));
  763 + m.put("sjszfczds", rs.getString("sjszfczds"));
  764 + m.put("szfczdl", rs.getString("szfczdl"));
  765 +
  766 + Date date = new Date();
  767 + date.setTime(rs.getTimestamp("create_date").getTime());
  768 + m.put("createDate", sdf.format(date));
  769 + return m;
  770 + }
  771 + });
  772 +
  773 + List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();
  774 + List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();
  775 + List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();
  776 + List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();
  777 +
  778 + List<Map<String, Object>> ccList = createMap("计划出车率", dates);
  779 + List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);
  780 + List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);
  781 + List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);
  782 + List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);
  783 + List<Map<String, Object>> qkList = createMap("签卡率", dates);
  784 +
  785 + long sjbcs_z = 0l;//实时总班次
  786 + BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程
  787 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  788 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;
  789 +
  790 + for(Map<String, Object> t : list){
  791 + if(yyLine.contains(t.get("lineCode").toString())){
  792 + String d = t.get("date").toString();
  793 + if(date.equals(d)){
  794 + sjbcs_z += Long.valueOf(t.get("sjbc").toString());
  795 + yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));
  796 +
  797 + jhcc += Long.valueOf(t.get("jhccz").toString());
  798 + sjcc += Long.valueOf(t.get("sjcc").toString());
  799 + jhbc += Long.valueOf(t.get("jhbc").toString());
  800 + sjbc += Long.valueOf(t.get("sjbc").toString());
  801 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  802 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  803 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  804 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  805 + if(gpSet.contains(t.get("lineCode").toString())){
  806 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  807 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  808 + }
  809 +
  810 + Map<String, Object> bc = new HashMap<String, Object>();
  811 + bc.put("type", "班次执行详情");
  812 + bc.put("lineName", t.get("lineName").toString());
  813 + bc.put("jh", t.get("jhbc").toString());
  814 + bc.put("sj", t.get("sjbc").toString());
  815 + bcDetail.add(bc);
  816 +
  817 + Map<String, Object> sm = new HashMap<String, Object>();
  818 + sm.put("type", "首站发车详情");
  819 + sm.put("lineName", t.get("lineName").toString());
  820 + sm.put("jh", t.get("jhsmbcs").toString());
  821 + sm.put("sj", t.get("sjsmbczds").toString());
  822 + smDetail.add(sm);
  823 +
  824 + Map<String, Object> qq = new HashMap<String, Object>();
  825 + qq.put("type", "起讫站发车准点详情");
  826 + qq.put("lineName", t.get("lineName").toString());
  827 + qq.put("jh", t.get("jhszfcs").toString());
  828 + qq.put("sj", t.get("sjszfczds").toString());
  829 + qqDetail.add(qq);
  830 +
  831 + if(gpSet.contains(t.get("lineCode").toString())){
  832 + Map<String, Object> gp = new HashMap<String, Object>();
  833 + gp.put("type", "挂牌线路发车准点详情");
  834 + gp.put("lineName", t.get("lineName").toString());
  835 + gp.put("jh", t.get("jhszfcs").toString());
  836 + gp.put("sj", t.get("sjszfczds").toString());
  837 + gpDetail.add(gp);
  838 + }
  839 + }
  840 +
  841 + Map<String, Object> ccMap = ccList.get(datesMap.get(d));
  842 + Map<String, Object> bcMap = bcList.get(datesMap.get(d));
  843 + Map<String, Object> smMap = smList.get(datesMap.get(d));
  844 + Map<String, Object> qqMap = qqList.get(datesMap.get(d));
  845 + Map<String, Object> gpMap = gpList.get(datesMap.get(d));
  846 +
  847 + ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));
  848 + ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));
  849 + bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));
  850 + bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));
  851 + smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));
  852 + smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));
  853 + qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  854 + qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  855 + if(gpSet.contains(t.get("lineCode").toString())){
  856 + gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  857 + gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  858 + }
  859 +
  860 + }
  861 + }
  862 +
  863 +
  864 + //计算签卡率
  865 + for(String d : dates){
  866 + if(d!=null && d.trim().length() > 0){
  867 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(d);
  868 + Map<String, Object> qkMap = qkList.get(datesMap.get(d));
  869 + long jh = 0, sj = 0;
  870 + for(ScheduleRealInfo s : findAll){
  871 + if(s.getGsBm() != null && s.getGsBm().trim().equals(gsdm)){
  872 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  873 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  874 + ++jh;
  875 + //String sty = decimalToBinary(s.getRfidState());
  876 + String sty = decimalToBinary(0);
  877 + Integer state = Integer.parseInt(sty);
  878 + if ((state & 4) == 4) {
  879 + ++sj;
  880 + }
  881 + }
  882 + }
  883 + }
  884 + }
  885 + qkMap.put("jh", jh);
  886 + qkMap.put("sj", sj);
  887 +
  888 + if(date.equals(d)){
  889 + bcs_qk = jh;
  890 + qks = sj;
  891 + }
  892 + }
  893 + }
  894 +
  895 +
  896 + List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();
  897 + zxlList.addAll(ccList);
  898 + zxlList.addAll(bcList);
  899 + zxlList.addAll(smList);
  900 + zxlList.addAll(qqList);
  901 + zxlList.addAll(gpList);
  902 + zxlList.addAll(qkList);
  903 +
  904 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  905 + detailsList.addAll(bcDetail);
  906 + detailsList.addAll(smDetail);
  907 + detailsList.addAll(qqDetail);
  908 + detailsList.addAll(gpDetail);
  909 +
  910 + for(Map<String, Object> t : zxlList){
  911 + if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){
  912 + t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),
  913 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());
  914 + } else {
  915 + t.put("ratio", "0");
  916 + }
  917 + }
  918 +
  919 + List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();
  920 +
  921 + Date dd1 = new Date();
  922 + dd1.setTime(dd.getTime() - 1l*1000*60*60*24);
  923 + String date1 = sd.format(dd1); //前一天
  924 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);
  925 + List<ScheduleRealInfo> listSche = new ArrayList<ScheduleRealInfo>();
  926 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  927 + for(ScheduleRealInfo s : findAll){
  928 + if(s.getGsBm() != null && s.getGsBm().trim().equals(gsdm)){
  929 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  930 + listSche.add(s);
  931 + Set<ChildTaskPlan> cts = s.getcTasks();
  932 + if (cts != null && cts.size() > 0) {
  933 + list_s.add(s);
  934 + } else {
  935 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  936 + list_s.add(s);
  937 + }
  938 + }
  939 + }
  940 + }
  941 + }
  942 + double jhyygl = culateJhgl(listSche);//计划营运公里
  943 + double jhjccgl = culateJhJccgl(listSche);
  944 + double jhzgl = Arith.add(jhyygl, jhjccgl);
  945 + double sjgl = culateSjgl(list_s);//实际营运公里(不含临加)
  946 + double sjljgl = culateLjgl(listSche);//实际临加公里
  947 + double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里
  948 + double sjjccgl = culateJccgl(list_s);
  949 + double sjksgl = culateKsgl(list_s);
  950 + double zksgl = Arith.add(sjjccgl, sjksgl);
  951 + double sjzgl = Arith.add(sjyygl, zksgl);//实际总公里
  952 + double lz = culateCJLC(listSche, "路阻");
  953 + double dm = culateCJLC(listSche, "吊慢");
  954 + double gz = culateCJLC(listSche, "故障");
  955 + double jf = culateCJLC(listSche, "纠纷");
  956 + double zs = culateCJLC(listSche, "肇事");
  957 + double qr = culateCJLC(listSche, "缺人");
  958 + double qc = culateCJLC(listSche, "缺车");
  959 + double qrqc = Arith.add(qr, qc);//缺人缺车
  960 + double kx = culateCJLC(listSche, "客稀");
  961 + double qh = culateCJLC(listSche, "气候");
  962 + double yw = culateCJLC(listSche, "援外");
  963 + double lb_pc = culateCJLC(listSche, "配车");
  964 + double lb_by = culateCJLC(listSche, "保养");
  965 + double lb_cj = culateCJLC(listSche, "抽减");
  966 + double lb_qt = culateCJLC(listSche, "其他");
  967 + double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他
  968 +
  969 + Map<String, Object> jhzglMap = new HashMap<String, Object>();
  970 + jhzglMap.put("name", "计划总公里");
  971 + jhzglMap.put("value", jhzgl);
  972 + glList.add(jhzglMap);
  973 + Map<String, Object> sjzglMap = new HashMap<String, Object>();
  974 + sjzglMap.put("name", "实际总公里");
  975 + sjzglMap.put("value", sjzgl);
  976 + glList.add(sjzglMap);
  977 + Map<String, Object> lzMap = new HashMap<String, Object>();
  978 + lzMap.put("name", "路阻");
  979 + lzMap.put("value", lz);
  980 + glList.add(lzMap);
  981 + Map<String, Object> dmMap = new HashMap<String, Object>();
  982 + dmMap.put("name", "吊慢");
  983 + dmMap.put("value", dm);
  984 + glList.add(dmMap);
  985 + Map<String, Object> gzMap = new HashMap<String, Object>();
  986 + gzMap.put("name", "故障");
  987 + gzMap.put("value", gz);
  988 + glList.add(gzMap);
  989 + Map<String, Object> jfMap = new HashMap<String, Object>();
  990 + jfMap.put("name", "纠纷");
  991 + jfMap.put("value", jf);
  992 + glList.add(jfMap);
  993 + Map<String, Object> zsMap = new HashMap<String, Object>();
  994 + zsMap.put("name", "肇事");
  995 + zsMap.put("value", zs);
  996 + glList.add(zsMap);
  997 + Map<String, Object> qrqcMap = new HashMap<String, Object>();
  998 + qrqcMap.put("name", "缺人缺车");
  999 + qrqcMap.put("value", qrqc);
  1000 + glList.add(qrqcMap);
  1001 + Map<String, Object> kxMap = new HashMap<String, Object>();
  1002 + kxMap.put("name", "客稀");
  1003 + kxMap.put("value", kx);
  1004 + glList.add(kxMap);
  1005 + Map<String, Object> qhMap = new HashMap<String, Object>();
  1006 + qhMap.put("name", "气候");
  1007 + qhMap.put("value", qh);
  1008 + glList.add(qhMap);
  1009 + Map<String, Object> ywMap = new HashMap<String, Object>();
  1010 + ywMap.put("name", "援外");
  1011 + ywMap.put("value", yw);
  1012 + glList.add(ywMap);
  1013 + Map<String, Object> qtMap = new HashMap<String, Object>();
  1014 + qtMap.put("name", "其他");
  1015 + qtMap.put("value", qt);
  1016 + glList.add(qtMap);
  1017 +
  1018 +
  1019 + resMap.put("lineCount", lineCount);
  1020 + resMap.put("level1Count", level1);
  1021 + resMap.put("level2Count", level2);
  1022 + resMap.put("sjbcs", sjbcs_z);
  1023 + resMap.put("sjlcs", yygl_z.doubleValue());
  1024 +
  1025 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  1026 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1027 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  1028 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1029 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  1030 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1031 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  1032 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1033 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  1034 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1035 + resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),
  1036 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1037 +
  1038 + resMap.put("ratioList", zxlList);
  1039 +
  1040 + resMap.put("detailsList", detailsList);
  1041 +
  1042 + resMap.put("mileageList", glList);
  1043 +
  1044 + return JSON.parseObject(JSON.toJSONString(resMap));
  1045 + }
  1046 +
  1047 + /**给大屏按日期查线路指标
  1048 + *
  1049 + */
  1050 + @GET
  1051 + @Path("/selectData/getScheduleStatistics/{date}")
  1052 + public JSONObject getScheduleStatistics(@PathParam("date") String date){
  1053 + Map<String, Object> resMap = new HashMap<String, Object>();
  1054 +
  1055 + String gpLineSql = "select * from bsth_c_line_plate";
  1056 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  1057 + new RowMapper<Map<String, Object>>(){
  1058 + @Override
  1059 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1060 + Map<String, Object> m=new HashMap<String,Object>();
  1061 + m.put("lineName", rs.getString("line_name"));
  1062 + m.put("lineCode", rs.getString("line_code"));
  1063 + return m;
  1064 + }
  1065 + });
  1066 +
  1067 + Set<String> gpSet = new HashSet<String>();
  1068 + for(Map<String, Object> t : gpLineList){
  1069 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  1070 + gpSet.add(t.get("lineCode").toString().trim());
  1071 + }
  1072 + }
  1073 +
  1074 + String yyxlSql="SELECT line_code from bsth_c_line "
  1075 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1076 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1077 + new RowMapper<Map<String, Object>>(){
  1078 + @Override
  1079 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1080 + Map<String, Object> m=new HashMap<String,Object>();
  1081 + m.put("lineCode", rs.getString("line_code"));
  1082 + return m;
  1083 + }
  1084 + });
  1085 + Set<String> yyLine = new HashSet<String>();
  1086 + for(Map<String, Object> t : yyxlList){
  1087 + if(t.get("lineCode") != null){
  1088 + yyLine.add(t.get("lineCode").toString());
  1089 + }
  1090 + }
  1091 +
  1092 +
  1093 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1094 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1095 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1096 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1097 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1098 + + " from bsth_c_calc_count "
  1099 + + " where date = ? and gsdm != '77'";
  1100 +
  1101 + List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{date},
  1102 + new RowMapper<Map<String, Object>>(){
  1103 + @Override
  1104 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1105 + Map<String, Object> m=new HashMap<String,Object>();
  1106 + m.put("lineCode",rs.getString("xl"));
  1107 + m.put("lineName", rs.getString("xl_name"));
  1108 + m.put("date", rs.getString("date"));
  1109 +
  1110 + m.put("jhbc", rs.getString("jhbc"));
  1111 + m.put("sjbc", rs.getString("sjbc"));
  1112 + m.put("bczxl", rs.getString("bczxl"));
  1113 + m.put("jhbcz", rs.getString("jhbcz"));
  1114 +
  1115 + m.put("jhcc", rs.getString("jhcc"));
  1116 + m.put("sjcc", rs.getString("sjcc"));
  1117 + m.put("ccl", rs.getString("ccl"));
  1118 + m.put("jhccz", rs.getString("jhccz"));
  1119 +
  1120 + m.put("jhyylc", rs.getString("jhyylc"));
  1121 + m.put("sjyylc", rs.getString("sjyylc"));
  1122 + m.put("jhyylcz", rs.getString("jhyylcz"));
  1123 + m.put("jhkslc", rs.getString("jhkslc"));
  1124 + m.put("sjkslc", rs.getString("sjkslc"));
  1125 + m.put("jhkslcz", rs.getString("jhkslcz"));
  1126 +
  1127 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  1128 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  1129 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  1130 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  1131 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  1132 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  1133 +
  1134 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  1135 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  1136 + m.put("smbczdl", rs.getString("smbczdl"));
  1137 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  1138 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  1139 + m.put("smbczdlz", rs.getString("smbczdlz"));
  1140 +
  1141 + m.put("jhszfcs", rs.getString("jhszfcs"));
  1142 + m.put("sjszfczds", rs.getString("sjszfczds"));
  1143 + m.put("szfczdl", rs.getString("szfczdl"));
  1144 +
  1145 + Date date = new Date();
  1146 + date.setTime(rs.getTimestamp("create_date").getTime());
  1147 + m.put("createDate", sdf.format(date));
  1148 + return m;
  1149 + }
  1150 + });
  1151 +
  1152 + List<Map<String, Object>> ccDetail = new ArrayList<Map<String,Object>>();
  1153 + List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();
  1154 + List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();
  1155 + List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();
  1156 + List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();
  1157 + List<Map<String, Object>> qkDetail = new ArrayList<Map<String,Object>>();
  1158 +
  1159 + long sjbcs_z = 0l;//实时总班次
  1160 + BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程
  1161 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  1162 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;
  1163 +
  1164 + for(Map<String, Object> t : list){
  1165 + if(yyLine.contains(t.get("lineCode").toString())){
  1166 + sjbcs_z += Long.valueOf(t.get("sjbc").toString());
  1167 + yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));
  1168 +
  1169 + jhcc += Long.valueOf(t.get("jhccz").toString());
  1170 + sjcc += Long.valueOf(t.get("sjcc").toString());
  1171 + jhbc += Long.valueOf(t.get("jhbc").toString());
  1172 + sjbc += Long.valueOf(t.get("sjbc").toString());
  1173 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  1174 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  1175 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  1176 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  1177 + if(gpSet.contains(t.get("lineCode").toString())){
  1178 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  1179 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  1180 + }
  1181 +
  1182 + Map<String, Object> cc = new HashMap<String, Object>();
  1183 + cc.put("type", "线路出车详情");
  1184 + cc.put("lineName", t.get("lineName").toString());
  1185 + cc.put("jh", t.get("jhcc").toString());
  1186 + cc.put("sj", t.get("sjcc").toString());
  1187 + ccDetail.add(cc);
  1188 +
  1189 + Map<String, Object> bc = new HashMap<String, Object>();
  1190 + bc.put("type", "班次执行详情");
  1191 + bc.put("lineName", t.get("lineName").toString());
  1192 + bc.put("jh", t.get("jhbc").toString());
  1193 + bc.put("sj", t.get("sjbc").toString());
  1194 + bcDetail.add(bc);
  1195 +
  1196 + Map<String, Object> sm = new HashMap<String, Object>();
  1197 + sm.put("type", "首站发车详情");
  1198 + sm.put("lineName", t.get("lineName").toString());
  1199 + sm.put("jh", t.get("jhsmbcs").toString());
  1200 + sm.put("sj", t.get("sjsmbczds").toString());
  1201 + smDetail.add(sm);
  1202 +
  1203 + Map<String, Object> qq = new HashMap<String, Object>();
  1204 + qq.put("type", "起讫站发车准点详情");
  1205 + qq.put("lineName", t.get("lineName").toString());
  1206 + qq.put("jh", t.get("jhszfcs").toString());
  1207 + qq.put("sj", t.get("sjszfczds").toString());
  1208 + qqDetail.add(qq);
  1209 +
  1210 + if(gpSet.contains(t.get("lineCode").toString())){
  1211 + Map<String, Object> gp = new HashMap<String, Object>();
  1212 + gp.put("type", "挂牌线路发车准点详情");
  1213 + gp.put("lineName", t.get("lineName").toString());
  1214 + gp.put("jh", t.get("jhszfcs").toString());
  1215 + gp.put("sj", t.get("sjszfczds").toString());
  1216 + gpDetail.add(gp);
  1217 + }
  1218 + }
  1219 + }
  1220 +
  1221 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  1222 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  1223 + for(ScheduleRealInfo s : findAll){
  1224 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  1225 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  1226 + String xlName = s.getXlName();
  1227 + if(!(keyMap.containsKey(xlName))){
  1228 + Map<String, Object> qk = new HashMap<String, Object>();
  1229 + qk.put("type", "线路签卡详情");
  1230 + qk.put("lineName", xlName);
  1231 + qk.put("jh", 0);
  1232 + qk.put("sj", 0);
  1233 + keyMap.put(xlName, qk);
  1234 + qkDetail.add(qk);
  1235 + }
  1236 + Map<String, Object> qk = keyMap.get(xlName);
  1237 + qk.put("jh", Long.valueOf(qk.get("jh").toString()) + 1);
  1238 + ++bcs_qk;
  1239 + //String sty = decimalToBinary(s.getRfidState());
  1240 + String sty = decimalToBinary(0);
  1241 + Integer state = Integer.parseInt(sty);
  1242 + if ((state & 4) == 4) {
  1243 + qk.put("sj", Long.valueOf(qk.get("sj").toString()) + 1);
  1244 + ++qks;
  1245 + }
  1246 + }
  1247 + }
  1248 + }
  1249 +
  1250 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1251 + detailsList.addAll(ccDetail);
  1252 + detailsList.addAll(bcDetail);
  1253 + detailsList.addAll(smDetail);
  1254 + detailsList.addAll(qqDetail);
  1255 + detailsList.addAll(gpDetail);
  1256 + detailsList.addAll(qkDetail);
  1257 +
  1258 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  1259 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1260 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  1261 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1262 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  1263 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1264 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  1265 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1266 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  1267 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1268 + resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),
  1269 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1270 +
  1271 + resMap.put("detailsList", detailsList);
  1272 +
  1273 + return JSON.parseObject(JSON.toJSONString(resMap));
  1274 + }
  1275 +
  1276 + /**给电科手机端查线路指标(出车率)
  1277 + *
  1278 + */
  1279 + @GET
  1280 + @Path("/selectData/getDepartureBus/{company}/{branchCompany}")
  1281 + public JSONObject getDepartureBus(@PathParam("company") String company,
  1282 + @PathParam("branchCompany") String branchCompany){
  1283 + Map<String, Object> resMap = new HashMap<String, Object>();
  1284 + String date = sd.format(new Date());
  1285 + String gs = "", fgs = "";
  1286 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1287 + gs = company.trim();
  1288 + }
  1289 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1290 + fgs = branchCompany.trim();
  1291 + }
  1292 +
  1293 + String yyxlSql="SELECT line_code from bsth_c_line "
  1294 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1295 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1296 + new RowMapper<Map<String, Object>>(){
  1297 + @Override
  1298 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1299 + Map<String, Object> m=new HashMap<String,Object>();
  1300 + m.put("lineCode", rs.getString("line_code"));
  1301 + return m;
  1302 + }
  1303 + });
  1304 + Set<String> yyLine = new HashSet<String>();
  1305 + for(Map<String, Object> t : yyxlList){
  1306 + if(t.get("lineCode") != null){
  1307 + yyLine.add(t.get("lineCode").toString());
  1308 + }
  1309 + }
  1310 +
  1311 + List<String> objList = new ArrayList<String>();
  1312 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1313 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1314 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1315 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1316 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1317 + + " from bsth_c_calc_count "
  1318 + + " where date = ? and gsdm != '77'";
  1319 + objList.add(date);
  1320 + if(fgs.length() > 0){
  1321 + sql +=" and gsdm = ? and fgsdm = ?";
  1322 + objList.add(gs);
  1323 + objList.add(fgs);
  1324 + } else if(gs.length() > 0){
  1325 + sql +=" and gsdm = ?";
  1326 + objList.add(gs);
  1327 + }
  1328 +
  1329 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1330 + objList.toArray(),
  1331 + new RowMapper<Map<String, Object>>(){
  1332 + @Override
  1333 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1334 + Map<String, Object> m=new HashMap<String,Object>();
  1335 + m.put("lineCode",rs.getString("xl"));
  1336 + m.put("lineName", rs.getString("xl_name"));
  1337 + m.put("date", rs.getString("date"));
  1338 +
  1339 + m.put("jhcc", rs.getString("jhcc"));
  1340 + m.put("sjcc", rs.getString("sjcc"));
  1341 + m.put("jhccz", rs.getString("jhccz"));
  1342 +
  1343 + Date date = new Date();
  1344 + date.setTime(rs.getTimestamp("create_date").getTime());
  1345 + m.put("createDate", sdf.format(date));
  1346 + return m;
  1347 + }
  1348 + });
  1349 +
  1350 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1351 +
  1352 + long jh = 0, sj = 0;
  1353 +
  1354 + for(Map<String, Object> t : list){
  1355 + if(yyLine.contains(t.get("lineCode").toString())){
  1356 +
  1357 + Long plan = Long.valueOf(t.get("jhccz").toString());
  1358 + Long real = Long.valueOf(t.get("sjcc").toString());
  1359 +
  1360 + jh += plan;
  1361 + sj += real;
  1362 +
  1363 + Map<String, Object> detail = new HashMap<String, Object>();
  1364 + detail.put("lineName", t.get("lineName").toString());
  1365 + detail.put("plan", plan);
  1366 + detail.put("real", real);
  1367 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1368 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1369 + detailsList.add(detail);
  1370 + }
  1371 + }
  1372 +
  1373 + resMap.put("plan", jh);
  1374 + resMap.put("real", sj);
  1375 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1376 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1377 +
  1378 + resMap.put("detailsList", detailsList);
  1379 +
  1380 + return JSON.parseObject(JSON.toJSONString(resMap));
  1381 + }
  1382 +
  1383 + /**给电科手机端查线路指标(班次执行率)
  1384 + *
  1385 + */
  1386 + @GET
  1387 + @Path("/selectData/getFinishScheduleBus/{company}/{branchCompany}")
  1388 + public JSONObject getFinishScheduleBus(@PathParam("company") String company,
  1389 + @PathParam("branchCompany") String branchCompany){
  1390 + Map<String, Object> resMap = new HashMap<String, Object>();
  1391 + String date = sd.format(new Date());
  1392 + String gs = "", fgs = "";
  1393 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1394 + gs = company.trim();
  1395 + }
  1396 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1397 + fgs = branchCompany.trim();
  1398 + }
  1399 +
  1400 + String yyxlSql="SELECT line_code from bsth_c_line "
  1401 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1402 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1403 + new RowMapper<Map<String, Object>>(){
  1404 + @Override
  1405 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1406 + Map<String, Object> m=new HashMap<String,Object>();
  1407 + m.put("lineCode", rs.getString("line_code"));
  1408 + return m;
  1409 + }
  1410 + });
  1411 + Set<String> yyLine = new HashSet<String>();
  1412 + for(Map<String, Object> t : yyxlList){
  1413 + if(t.get("lineCode") != null){
  1414 + yyLine.add(t.get("lineCode").toString());
  1415 + }
  1416 + }
  1417 +
  1418 + List<String> objList = new ArrayList<String>();
  1419 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1420 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1421 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1422 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1423 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1424 + + " from bsth_c_calc_count "
  1425 + + " where date = ? and gsdm != '77'";
  1426 + objList.add(date);
  1427 + if(fgs.length() > 0){
  1428 + sql +=" and gsdm = ? and fgsdm = ?";
  1429 + objList.add(gs);
  1430 + objList.add(fgs);
  1431 + } else if(gs.length() > 0){
  1432 + sql +=" and gsdm = ?";
  1433 + objList.add(gs);
  1434 + }
  1435 +
  1436 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1437 + objList.toArray(),
  1438 + new RowMapper<Map<String, Object>>(){
  1439 + @Override
  1440 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1441 + Map<String, Object> m=new HashMap<String,Object>();
  1442 + m.put("lineCode",rs.getString("xl"));
  1443 + m.put("lineName", rs.getString("xl_name"));
  1444 + m.put("date", rs.getString("date"));
  1445 +
  1446 + m.put("jhbc", rs.getString("jhbc"));
  1447 + m.put("sjbc", rs.getString("sjbc"));
  1448 +
  1449 + Date date = new Date();
  1450 + date.setTime(rs.getTimestamp("create_date").getTime());
  1451 + m.put("createDate", sdf.format(date));
  1452 + return m;
  1453 + }
  1454 + });
  1455 +
  1456 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1457 +
  1458 + long jh = 0, sj = 0;
  1459 +
  1460 + for(Map<String, Object> t : list){
  1461 + if(yyLine.contains(t.get("lineCode").toString())){
  1462 +
  1463 + Long plan = Long.valueOf(t.get("jhbc").toString());
  1464 + Long real = Long.valueOf(t.get("sjbc").toString());
  1465 +
  1466 + jh += plan;
  1467 + sj += real;
  1468 +
  1469 + Map<String, Object> detail = new HashMap<String, Object>();
  1470 + detail.put("lineName", t.get("lineName").toString());
  1471 + detail.put("plan", plan);
  1472 + detail.put("real", real);
  1473 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1474 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1475 + detailsList.add(detail);
  1476 + }
  1477 + }
  1478 +
  1479 + resMap.put("plan", jh);
  1480 + resMap.put("real", sj);
  1481 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1482 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1483 +
  1484 + resMap.put("detailsList", detailsList);
  1485 +
  1486 + return JSON.parseObject(JSON.toJSONString(resMap));
  1487 + }
  1488 +
  1489 + /**给电科手机端查线路指标(首末班车发车准点率)
  1490 + *
  1491 + */
  1492 + @GET
  1493 + @Path("/selectData/getBeginAndEnd/{company}/{branchCompany}")
  1494 + public JSONObject getBeginAndEnd(@PathParam("company") String company,
  1495 + @PathParam("branchCompany") String branchCompany){
  1496 + Map<String, Object> resMap = new HashMap<String, Object>();
  1497 + String date = sd.format(new Date());
  1498 + String gs = "", fgs = "";
  1499 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1500 + gs = company.trim();
  1501 + }
  1502 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1503 + fgs = branchCompany.trim();
  1504 + }
  1505 +
  1506 + String yyxlSql="SELECT line_code from bsth_c_line "
  1507 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1508 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1509 + new RowMapper<Map<String, Object>>(){
  1510 + @Override
  1511 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1512 + Map<String, Object> m=new HashMap<String,Object>();
  1513 + m.put("lineCode", rs.getString("line_code"));
  1514 + return m;
  1515 + }
  1516 + });
  1517 + Set<String> yyLine = new HashSet<String>();
  1518 + for(Map<String, Object> t : yyxlList){
  1519 + if(t.get("lineCode") != null){
  1520 + yyLine.add(t.get("lineCode").toString());
  1521 + }
  1522 + }
  1523 +
  1524 + List<String> objList = new ArrayList<String>();
  1525 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1526 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1527 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1528 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1529 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1530 + + " from bsth_c_calc_count "
  1531 + + " where date = ? and gsdm != '77'";
  1532 + objList.add(date);
  1533 + if(fgs.length() > 0){
  1534 + sql +=" and gsdm = ? and fgsdm = ?";
  1535 + objList.add(gs);
  1536 + objList.add(fgs);
  1537 + } else if(gs.length() > 0){
  1538 + sql +=" and gsdm = ?";
  1539 + objList.add(gs);
  1540 + }
  1541 +
  1542 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1543 + objList.toArray(),
  1544 + new RowMapper<Map<String, Object>>(){
  1545 + @Override
  1546 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1547 + Map<String, Object> m=new HashMap<String,Object>();
  1548 + m.put("lineCode",rs.getString("xl"));
  1549 + m.put("lineName", rs.getString("xl_name"));
  1550 + m.put("date", rs.getString("date"));
  1551 +
  1552 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  1553 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  1554 +
  1555 + Date date = new Date();
  1556 + date.setTime(rs.getTimestamp("create_date").getTime());
  1557 + m.put("createDate", sdf.format(date));
  1558 + return m;
  1559 + }
  1560 + });
  1561 +
  1562 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1563 +
  1564 + long jh = 0, sj = 0;
  1565 +
  1566 + for(Map<String, Object> t : list){
  1567 + if(yyLine.contains(t.get("lineCode").toString())){
  1568 +
  1569 + Long plan = Long.valueOf(t.get("jhsmbcs").toString());
  1570 + Long real = Long.valueOf(t.get("sjsmbczds").toString());
  1571 +
  1572 + jh += plan;
  1573 + sj += real;
  1574 +
  1575 + Map<String, Object> detail = new HashMap<String, Object>();
  1576 + detail.put("lineName", t.get("lineName").toString());
  1577 + detail.put("plan", plan);
  1578 + detail.put("real", real);
  1579 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1580 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1581 + detailsList.add(detail);
  1582 + }
  1583 + }
  1584 +
  1585 + resMap.put("plan", jh);
  1586 + resMap.put("real", sj);
  1587 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1588 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1589 +
  1590 + resMap.put("detailsList", detailsList);
  1591 +
  1592 + return JSON.parseObject(JSON.toJSONString(resMap));
  1593 + }
  1594 +
  1595 + /**给电科手机端查线路指标(起讫站发车准点率)
  1596 + *
  1597 + */
  1598 + @GET
  1599 + @Path("/selectData/getPunctualBus/{company}/{branchCompany}")
  1600 + public JSONObject getPunctualBus(@PathParam("company") String company,
  1601 + @PathParam("branchCompany") String branchCompany){
  1602 + Map<String, Object> resMap = new HashMap<String, Object>();
  1603 + String date = sd.format(new Date());
  1604 + String gs = "", fgs = "";
  1605 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1606 + gs = company.trim();
  1607 + }
  1608 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1609 + fgs = branchCompany.trim();
  1610 + }
  1611 +
  1612 + String yyxlSql="SELECT line_code from bsth_c_line "
  1613 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1614 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1615 + new RowMapper<Map<String, Object>>(){
  1616 + @Override
  1617 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1618 + Map<String, Object> m=new HashMap<String,Object>();
  1619 + m.put("lineCode", rs.getString("line_code"));
  1620 + return m;
  1621 + }
  1622 + });
  1623 + Set<String> yyLine = new HashSet<String>();
  1624 + for(Map<String, Object> t : yyxlList){
  1625 + if(t.get("lineCode") != null){
  1626 + yyLine.add(t.get("lineCode").toString());
  1627 + }
  1628 + }
  1629 +
  1630 + List<String> objList = new ArrayList<String>();
  1631 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1632 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1633 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1634 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1635 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1636 + + " from bsth_c_calc_count "
  1637 + + " where date = ? and gsdm != '77'";
  1638 + objList.add(date);
  1639 + if(fgs.length() > 0){
  1640 + sql +=" and gsdm = ? and fgsdm = ?";
  1641 + objList.add(gs);
  1642 + objList.add(fgs);
  1643 + } else if(gs.length() > 0){
  1644 + sql +=" and gsdm = ?";
  1645 + objList.add(gs);
  1646 + }
  1647 +
  1648 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1649 + objList.toArray(),
  1650 + new RowMapper<Map<String, Object>>(){
  1651 + @Override
  1652 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1653 + Map<String, Object> m=new HashMap<String,Object>();
  1654 + m.put("lineCode",rs.getString("xl"));
  1655 + m.put("lineName", rs.getString("xl_name"));
  1656 + m.put("date", rs.getString("date"));
  1657 +
  1658 + m.put("jhszfcs", rs.getString("jhszfcs"));
  1659 + m.put("sjszfczds", rs.getString("sjszfczds"));
  1660 +
  1661 + Date date = new Date();
  1662 + date.setTime(rs.getTimestamp("create_date").getTime());
  1663 + m.put("createDate", sdf.format(date));
  1664 + return m;
  1665 + }
  1666 + });
  1667 +
  1668 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1669 +
  1670 + long jh = 0, sj = 0;
  1671 +
  1672 + for(Map<String, Object> t : list){
  1673 + if(yyLine.contains(t.get("lineCode").toString())){
  1674 +
  1675 + Long plan = Long.valueOf(t.get("jhszfcs").toString());
  1676 + Long real = Long.valueOf(t.get("sjszfczds").toString());
  1677 +
  1678 + jh += plan;
  1679 + sj += real;
  1680 +
  1681 + Map<String, Object> detail = new HashMap<String, Object>();
  1682 + detail.put("lineName", t.get("lineName").toString());
  1683 + detail.put("plan", plan);
  1684 + detail.put("real", real);
  1685 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1686 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1687 + detailsList.add(detail);
  1688 + }
  1689 + }
  1690 +
  1691 + resMap.put("plan", jh);
  1692 + resMap.put("real", sj);
  1693 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1694 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1695 +
  1696 + resMap.put("detailsList", detailsList);
  1697 +
  1698 + return JSON.parseObject(JSON.toJSONString(resMap));
  1699 + }
  1700 +
  1701 + /**给电科手机端查线路指标(挂牌线路发车准点率)
  1702 + *
  1703 + */
  1704 + @GET
  1705 + @Path("/selectData/getPlateLineBus/{company}/{branchCompany}")
  1706 + public JSONObject getPlateLineBus(@PathParam("company") String company,
  1707 + @PathParam("branchCompany") String branchCompany){
  1708 + Map<String, Object> resMap = new HashMap<String, Object>();
  1709 +
  1710 + String gpLineSql = "select * from bsth_c_line_plate";
  1711 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  1712 + new RowMapper<Map<String, Object>>(){
  1713 + @Override
  1714 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1715 + Map<String, Object> m=new HashMap<String,Object>();
  1716 + m.put("lineName", rs.getString("line_name"));
  1717 + m.put("lineCode", rs.getString("line_code"));
  1718 + return m;
  1719 + }
  1720 + });
  1721 +
  1722 + Set<String> gpSet = new HashSet<String>();
  1723 + for(Map<String, Object> t : gpLineList){
  1724 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  1725 + gpSet.add(t.get("lineCode").toString().trim());
  1726 + }
  1727 + }
  1728 +
  1729 + String date = sd.format(new Date());
  1730 + String gs = "", fgs = "";
  1731 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1732 + gs = company.trim();
  1733 + }
  1734 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1735 + fgs = branchCompany.trim();
  1736 + }
  1737 +
  1738 + String yyxlSql="SELECT line_code from bsth_c_line "
  1739 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1740 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1741 + new RowMapper<Map<String, Object>>(){
  1742 + @Override
  1743 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1744 + Map<String, Object> m=new HashMap<String,Object>();
  1745 + m.put("lineCode", rs.getString("line_code"));
  1746 + return m;
  1747 + }
  1748 + });
  1749 + Set<String> yyLine = new HashSet<String>();
  1750 + for(Map<String, Object> t : yyxlList){
  1751 + if(t.get("lineCode") != null){
  1752 + yyLine.add(t.get("lineCode").toString());
  1753 + }
  1754 + }
  1755 +
  1756 + List<String> objList = new ArrayList<String>();
  1757 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1758 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1759 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1760 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1761 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1762 + + " from bsth_c_calc_count "
  1763 + + " where date = ? and gsdm != '77'";
  1764 + objList.add(date);
  1765 + if(fgs.length() > 0){
  1766 + sql +=" and gsdm = ? and fgsdm = ?";
  1767 + objList.add(gs);
  1768 + objList.add(fgs);
  1769 + } else if(gs.length() > 0){
  1770 + sql +=" and gsdm = ?";
  1771 + objList.add(gs);
  1772 + }
  1773 +
  1774 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1775 + objList.toArray(),
  1776 + new RowMapper<Map<String, Object>>(){
  1777 + @Override
  1778 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1779 + Map<String, Object> m=new HashMap<String,Object>();
  1780 + m.put("lineCode",rs.getString("xl"));
  1781 + m.put("lineName", rs.getString("xl_name"));
  1782 + m.put("date", rs.getString("date"));
  1783 +
  1784 + m.put("jhszfcs", rs.getString("jhszfcs"));
  1785 + m.put("sjszfczds", rs.getString("sjszfczds"));
  1786 +
  1787 + Date date = new Date();
  1788 + date.setTime(rs.getTimestamp("create_date").getTime());
  1789 + m.put("createDate", sdf.format(date));
  1790 + return m;
  1791 + }
  1792 + });
  1793 +
  1794 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1795 +
  1796 + long jh = 0, sj = 0;
  1797 +
  1798 + for(Map<String, Object> t : list){
  1799 + if(yyLine.contains(t.get("lineCode").toString())){
  1800 +
  1801 + if(gpSet.contains(t.get("lineCode").toString())){
  1802 +
  1803 + Long plan = Long.valueOf(t.get("jhszfcs").toString());
  1804 + Long real = Long.valueOf(t.get("sjszfczds").toString());
  1805 +
  1806 + jh += plan;
  1807 + sj += real;
  1808 +
  1809 + Map<String, Object> detail = new HashMap<String, Object>();
  1810 + detail.put("lineName", t.get("lineName").toString());
  1811 + detail.put("plan", plan);
  1812 + detail.put("real", real);
  1813 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1814 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1815 + detailsList.add(detail);
  1816 + }
  1817 + }
  1818 + }
  1819 +
  1820 + resMap.put("plan", jh);
  1821 + resMap.put("real", sj);
  1822 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1823 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1824 +
  1825 + resMap.put("detailsList", detailsList);
  1826 +
  1827 + return JSON.parseObject(JSON.toJSONString(resMap));
  1828 + }
  1829 +
  1830 + /**给电科手机端查线路指标(签卡率)
  1831 + *
  1832 + */
  1833 + @GET
  1834 + @Path("/selectData/getCardSigning/{company}/{branchCompany}")
  1835 + public JSONObject getCardSigning(@PathParam("company") String company,
  1836 + @PathParam("branchCompany") String branchCompany){
  1837 + Map<String, Object> resMap = new HashMap<String, Object>();
  1838 + String date = sd.format(new Date());
  1839 + String gs = "", fgs = "";
  1840 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1841 + gs = company.trim();
  1842 + }
  1843 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1844 + fgs = branchCompany.trim();
  1845 + }
  1846 +
  1847 + String yyxlSql="SELECT line_code from bsth_c_line "
  1848 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1849 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1850 + new RowMapper<Map<String, Object>>(){
  1851 + @Override
  1852 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1853 + Map<String, Object> m=new HashMap<String,Object>();
  1854 + m.put("lineCode", rs.getString("line_code"));
  1855 + return m;
  1856 + }
  1857 + });
  1858 + Set<String> yyLine = new HashSet<String>();
  1859 + for(Map<String, Object> t : yyxlList){
  1860 + if(t.get("lineCode") != null){
  1861 + yyLine.add(t.get("lineCode").toString());
  1862 + }
  1863 + }
  1864 +
  1865 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1866 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  1867 +
  1868 + long jh = 0, sj = 0;
  1869 +
  1870 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  1871 + for(ScheduleRealInfo s : findAll){
  1872 + if(s.getGsBm() != null && s.getFgsBm() != null){
  1873 + if("77".equals(s.getGsBm())){
  1874 + continue;
  1875 + }
  1876 + if(fgs.length() > 0){
  1877 + if(!(s.getGsBm().equals(gs)) || !(s.getFgsBm().equals(gs))){
  1878 + continue;
  1879 + }
  1880 + } else if(gs.length() > 0){
  1881 + if(!(s.getGsBm().equals(gs))){
  1882 + continue;
  1883 + }
  1884 + }
  1885 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  1886 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  1887 + long plan = 0, real = 0;
  1888 + ++plan;
  1889 + ++jh;
  1890 + //String sty = decimalToBinary(s.getRfidState());
  1891 + String sty = decimalToBinary(0);
  1892 + Integer state = Integer.parseInt(sty);
  1893 + if ((state & 4) == 4) {
  1894 + ++real;
  1895 + ++sj;
  1896 + }
  1897 + if(!(keyMap.containsKey(s.getXlBm()))){
  1898 + Map<String, Object> m = new HashMap<String, Object>();
  1899 + m = new HashMap<String, Object>();
  1900 + m.put("lineName", s.getXlName());
  1901 + m.put("plan", "0");
  1902 + m.put("real", "0");
  1903 + keyMap.put(s.getXlBm(), m);
  1904 + detailsList.add(m);
  1905 + }
  1906 + Map<String, Object> m = keyMap.get(s.getXlBm());
  1907 + m.put("plan", Long.valueOf(m.get("plan").toString()) + plan);
  1908 + m.put("real", Long.valueOf(m.get("real").toString()) + real);
  1909 + }
  1910 + }
  1911 + }
  1912 + }
  1913 +
  1914 + for(Map<String, Object> m : detailsList){
  1915 + long plan = Long.valueOf(m.get("plan").toString());
  1916 + long real = Long.valueOf(m.get("real").toString());
  1917 + m.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1918 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1919 + }
  1920 +
  1921 + resMap.put("plan", jh);
  1922 + resMap.put("real", sj);
  1923 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1924 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1925 +
  1926 + resMap.put("detailsList", detailsList);
  1927 +
  1928 + return JSON.parseObject(JSON.toJSONString(resMap));
  1929 + }
  1930 +
  1931 + @GET
  1932 + @Path("/selectData/attendance")
  1933 + public JSONObject attendance(){
  1934 + Map<String, Object> resMap = new HashMap<String, Object>();
  1935 + SimpleDateFormat dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  1936 +
  1937 + int day = 7;//天数
  1938 +
  1939 + Date dd = new Date();
  1940 + String date = sd.format(dd); //yyyy-MM-dd 当天
  1941 + Date dd2 = new Date();
  1942 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  1943 + String date2 = sd.format(dd2); //yyyy-MM-dd 6天前(加上当天就是取7天数据)
  1944 +
  1945 + String[] dates = new String[day];
  1946 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  1947 +
  1948 + for(int i = 0; i < day; i++){
  1949 + Date tempDate = new Date();
  1950 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  1951 + String format = sd.format(tempDate);
  1952 + dates[i] = format;
  1953 + datesMap.put(format, i);
  1954 + }
  1955 +
  1956 +
  1957 + String yyxlSql="SELECT line_code from bsth_c_line "
  1958 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1959 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1960 + new RowMapper<Map<String, Object>>(){
  1961 + @Override
  1962 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1963 + Map<String, Object> m=new HashMap<String,Object>();
  1964 + m.put("lineCode", rs.getString("line_code"));
  1965 + return m;
  1966 + }
  1967 + });
  1968 + Set<String> yyLine = new HashSet<String>();
  1969 + for(Map<String, Object> t : yyxlList){
  1970 + if(t.get("lineCode") != null){
  1971 + yyLine.add(t.get("lineCode").toString());
  1972 + }
  1973 + }
  1974 +
  1975 +
  1976 + List<Map<String, Object>> attList = new ArrayList<Map<String, Object>>();
  1977 + List<Map<String, Object>> lackList = new ArrayList<Map<String, Object>>();
  1978 + Set<String> lackSet = new HashSet<String>();
  1979 +
  1980 + for(int i = 0; i < dates.length; i++){
  1981 + Set<String> jhSet = new HashSet<String>();
  1982 + Set<String> sjSet = new HashSet<String>();
  1983 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(dates[i]);
  1984 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  1985 + for(ScheduleRealInfo s : findAll){
  1986 + if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  1987 + if(!isInOut(s)){
  1988 + Set<ChildTaskPlan> cts = s.getcTasks();
  1989 + if (cts != null && cts.size() > 0) {
  1990 + list_s.add(s);
  1991 + } else {
  1992 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  1993 + list_s.add(s);
  1994 + }
  1995 + }
  1996 +
  1997 + if(!s.isSflj() && !s.isCcService()){
  1998 + jhSet.add(s.getjGh() + "/" + s.getjName());
  1999 + }
  2000 + }
  2001 + }
  2002 + }
  2003 +
  2004 + for(ScheduleRealInfo s : list_s){
  2005 + if(!(s.getStatus() == -1)){
  2006 + sjSet.add(s.getjGh() + "/" + s.getjName());
  2007 + }
  2008 + }
  2009 +
  2010 + for(ScheduleRealInfo s : findAll){
  2011 + try {
  2012 + if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2013 + if (s.isSflj() || isInOut(s)){
  2014 + continue;
  2015 + }
  2016 +
  2017 + String time = s.getRealExecDate() + " " + s.getFcsj();
  2018 + Date d = dateTime.parse(time);
  2019 + if(dd.getTime() - d.getTime() < 300000l){ //只取当前时间5分钟前的数据
  2020 + continue;
  2021 + }
  2022 +
  2023 + Set<ChildTaskPlan> cts;
  2024 + cts = s.getcTasks();
  2025 + //有子任务
  2026 + if (cts != null && cts.size() > 0) {
  2027 + for(ChildTaskPlan c : cts){
  2028 + if(c.getMileageType().equals("service") && c.getCcId() == null){
  2029 + if(c.isDestroy() && (c.getDestroyReason()==null? "" : c.getDestroyReason()).equals("缺人")){
  2030 + Map<String, Object> m = new HashMap<String, Object>();
  2031 + m.put("gsName", s.getGsName());
  2032 + m.put("lineName", s.getXlName());
  2033 + m.put("driverCode", s.getjGh());
  2034 + m.put("driverName", s.getjName());
  2035 + m.put("cl", s.getClZbh());
  2036 + m.put("date", s.getRealExecDate());
  2037 + m.put("time", c.getStartDate());
  2038 + if(c.getRemarks() != null && c.getRemarks().trim().length() > 0){
  2039 + m.put("explain", c.getRemarks());
  2040 + } else {
  2041 + m.put("explain", s.getRemarks()!=null?s.getRemarks():"");
  2042 + }
  2043 +
  2044 + String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();
  2045 + if(lackSet.add(str)){
  2046 + lackList.add(m);
  2047 + }
  2048 + }
  2049 + }
  2050 + }
  2051 + }
  2052 + //主任务烂班
  2053 + else if(s.getStatus() == -1 && s.getAdjustExps().equals("缺人")){
  2054 + Map<String, Object> m = new HashMap<String, Object>();
  2055 + m.put("gsName", s.getGsName());
  2056 + m.put("lineName", s.getXlName());
  2057 + m.put("driverCode", s.getjGh());
  2058 + m.put("driverName", s.getjName());
  2059 + m.put("cl", s.getClZbh());
  2060 + m.put("date", s.getRealExecDate());
  2061 + m.put("time", s.getFcsj());
  2062 + m.put("explain", s.getRemarks()!=null?s.getRemarks():"");
  2063 +
  2064 + String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();
  2065 + if(lackSet.add(str)){
  2066 + lackList.add(m);
  2067 + }
  2068 + }
  2069 + }
  2070 + } catch (Exception e) {
  2071 + // TODO: handle exception
  2072 + e.printStackTrace();
  2073 + }
  2074 + }
  2075 +
  2076 + Map<String, Object> att = new HashMap<String, Object>();
  2077 + att.put("date", dates[i]);
  2078 + att.put("jh", jhSet.size());
  2079 + att.put("sj", sjSet.size());
  2080 + attList.add(att);
  2081 + }
  2082 +
  2083 + String gpLineSql = "select p.company_code, count(1) jsy"
  2084 + + " from (select e.jsy from bsth_c_s_ecinfo e"
  2085 + + " where e.is_cancel = 0 group by e.jsy) a"
  2086 + + " left join bsth_c_personnel p on a.jsy = p.id"
  2087 + + " group by p.company_code";
  2088 + List<Map<String, Object>> ecList=jdbcTemplate.query(gpLineSql,
  2089 + new RowMapper<Map<String, Object>>(){
  2090 + @Override
  2091 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2092 + Map<String, Object> m=new HashMap<String,Object>();
  2093 + m.put("company", rs.getString("company_code"));
  2094 + m.put("jsy", rs.getString("jsy"));
  2095 + return m;
  2096 + }
  2097 + });
  2098 +
  2099 + List<Map<String, Object>> jsyList = new ArrayList<Map<String, Object>>();
  2100 + Map<String, Object> ygMap = new HashMap<String, Object>();
  2101 + ygMap.put("company", "杨高");
  2102 + ygMap.put("jsy", "0");
  2103 + Map<String, Object> snMap = new HashMap<String, Object>();
  2104 + snMap.put("company", "上南");
  2105 + snMap.put("jsy", "0");
  2106 + Map<String, Object> jgMap = new HashMap<String, Object>();
  2107 + jgMap.put("company", "金高");
  2108 + jgMap.put("jsy", "0");
  2109 + Map<String, Object> nhMap = new HashMap<String, Object>();
  2110 + nhMap.put("company", "南汇");
  2111 + nhMap.put("jsy", "0");
  2112 + for(Map<String, Object> m : ecList){ //顺序:杨高,上南,金高,南汇
  2113 + if("05".equals(m.get("company").toString())){
  2114 +// m.put("company", "杨高");
  2115 + ygMap.put("jsy", m.get("jsy").toString());
  2116 + }
  2117 + if("55".equals(m.get("company").toString())){
  2118 +// m.put("company", "上南");
  2119 + snMap.put("jsy", m.get("jsy").toString());
  2120 + }
  2121 + if("22".equals(m.get("company").toString())){
  2122 +// m.put("company", "金高");
  2123 + jgMap.put("jsy", m.get("jsy").toString());
  2124 + }
  2125 + if("26".equals(m.get("company").toString())){
  2126 +// m.put("company", "南汇");
  2127 + nhMap.put("jsy", m.get("jsy").toString());
  2128 + }
  2129 + }
  2130 + jsyList.add(ygMap);
  2131 + jsyList.add(snMap);
  2132 + jsyList.add(jgMap);
  2133 + jsyList.add(nhMap);
  2134 +
  2135 + String xlSql = "select a.jsy, b.spy, c.cl from"
  2136 + + " (select count(1) jsy from (select a.jsy from bsth_c_s_ecinfo a where a.is_cancel = 0 and a.spy is not null and a.jsy is not null group by jsy) a) a"
  2137 + + " LEFT JOIN"
  2138 + + " (select count(1) spy from (select b.spy from bsth_c_s_ecinfo b where b.is_cancel = 0 and b.spy is not null group by spy) b) b"
  2139 + + " on 1=1"
  2140 + + " LEFT JOIN"
  2141 + + " (select count(1) cl from (select c.cl from bsth_c_s_ccinfo c where c.is_cancel = 0 and c.cl is not null and c.xl in(select e.xl from bsth_c_s_ecinfo e where e.is_cancel = 0 and e.spy is not null) group by c.cl) c) c"
  2142 + + " on 1=1";
  2143 + List<Map<String, Object>> xlConfigList=jdbcTemplate.query(xlSql,
  2144 + new RowMapper<Map<String, Object>>(){
  2145 + @Override
  2146 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2147 + Map<String, Object> m=new HashMap<String,Object>();
  2148 + m.put("jsy", rs.getString("jsy"));
  2149 + m.put("spy", rs.getString("spy"));
  2150 + m.put("cl", rs.getString("cl"));
  2151 + return m;
  2152 + }
  2153 + });
  2154 + long jsy = 0l, spy = 0l, cl = 0l;
  2155 + for(Map<String, Object> t : xlConfigList){
  2156 + if(t.get("jsy") != null){
  2157 + jsy += Long.valueOf(t.get("jsy").toString());
  2158 + }
  2159 + if(t.get("spy") != null){
  2160 + spy += Long.valueOf(t.get("spy").toString());
  2161 + }
  2162 + if(t.get("cl") != null){
  2163 + cl += Long.valueOf(t.get("cl").toString());
  2164 + }
  2165 + }
  2166 +
  2167 + resMap.put("jsyList", jsyList);
  2168 + resMap.put("attList", attList);
  2169 + resMap.put("lackList", lackList);
  2170 + resMap.put("salesmanJsy", jsy);
  2171 + resMap.put("salesmanSpy", spy);
  2172 + resMap.put("salesmanCl", cl);
  2173 +
  2174 + return JSON.parseObject(JSON.toJSONString(resMap));
  2175 + }
  2176 +
  2177 + @GET
  2178 + @Path("/selectData/attendance/{gsdm}")
  2179 + public JSONObject attendance(@PathParam("gsdm") String gsdm){
  2180 + Map<String, Object> resMap = new HashMap<String, Object>();
  2181 + SimpleDateFormat dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  2182 +
  2183 + int day = 7;//天数
  2184 +
  2185 + Date dd = new Date();
  2186 + String date = sd.format(dd); //yyyy-MM-dd 当天
  2187 + Date dd2 = new Date();
  2188 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  2189 + String date2 = sd.format(dd2); //yyyy-MM-dd 6天前(加上当天就是取7天数据)
  2190 +
  2191 + String[] dates = new String[day];
  2192 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  2193 +
  2194 + for(int i = 0; i < day; i++){
  2195 + Date tempDate = new Date();
  2196 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  2197 + String format = sd.format(tempDate);
  2198 + dates[i] = format;
  2199 + datesMap.put(format, i);
  2200 + }
  2201 +
  2202 +
  2203 + String yyxlSql="SELECT line_code from bsth_c_line "
  2204 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  2205 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  2206 + new RowMapper<Map<String, Object>>(){
  2207 + @Override
  2208 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2209 + Map<String, Object> m=new HashMap<String,Object>();
  2210 + m.put("lineCode", rs.getString("line_code"));
  2211 + return m;
  2212 + }
  2213 + });
  2214 + Set<String> yyLine = new HashSet<String>();
  2215 + for(Map<String, Object> t : yyxlList){
  2216 + if(t.get("lineCode") != null){
  2217 + yyLine.add(t.get("lineCode").toString());
  2218 + }
  2219 + }
  2220 +
  2221 +
  2222 + List<Map<String, Object>> attList = new ArrayList<Map<String, Object>>();
  2223 + List<Map<String, Object>> lackList = new ArrayList<Map<String, Object>>();
  2224 + Set<String> lackSet = new HashSet<String>();
  2225 +
  2226 + for(int i = 0; i < dates.length; i++){
  2227 + Set<String> jhSet = new HashSet<String>();
  2228 + Set<String> sjSet = new HashSet<String>();
  2229 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(dates[i]);
  2230 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  2231 + for(ScheduleRealInfo s : findAll){
  2232 + if(s.getGsBm() != null && s.getGsBm().equals(gsdm)){//直属公司
  2233 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2234 + if(!isInOut(s)){
  2235 + Set<ChildTaskPlan> cts = s.getcTasks();
  2236 + if (cts != null && cts.size() > 0) {
  2237 + list_s.add(s);
  2238 + } else {
  2239 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  2240 + list_s.add(s);
  2241 + }
  2242 + }
  2243 +
  2244 + if(!s.isSflj() && !s.isCcService()){
  2245 + jhSet.add(s.getjGh() + "/" + s.getjName());
  2246 + }
  2247 + }
  2248 + }
  2249 + }
  2250 + }
  2251 +
  2252 + for(ScheduleRealInfo s : list_s){
  2253 + if(!(s.getStatus() == -1)){
  2254 + sjSet.add(s.getjGh() + "/" + s.getjName());
  2255 + }
  2256 + }
  2257 +
  2258 + for(ScheduleRealInfo s : findAll){
  2259 + try {
  2260 + if(s.getGsBm() != null && s.getGsBm().equals(gsdm)){//直属公司
  2261 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2262 + if (s.isSflj() || isInOut(s)){
  2263 + continue;
  2264 + }
  2265 +
  2266 + String time = s.getRealExecDate() + " " + s.getFcsj();
  2267 + Date d = dateTime.parse(time);
  2268 + if(dd.getTime() - d.getTime() < 300000l){ //只取当前时间5分钟前的数据
  2269 + continue;
  2270 + }
  2271 +
  2272 + Set<ChildTaskPlan> cts;
  2273 + cts = s.getcTasks();
  2274 + //有子任务
  2275 + if (cts != null && cts.size() > 0) {
  2276 + for(ChildTaskPlan c : cts){
  2277 + if(c.getMileageType().equals("service") && c.getCcId() == null){
  2278 + if(c.isDestroy() && (c.getDestroyReason()==null? "" : c.getDestroyReason()).equals("缺人")){
  2279 + Map<String, Object> m = new HashMap<String, Object>();
  2280 + m.put("gsName", s.getGsName());
  2281 + m.put("lineName", s.getXlName());
  2282 + m.put("driverCode", s.getjGh());
  2283 + m.put("driverName", s.getjName());
  2284 + m.put("cl", s.getClZbh());
  2285 + m.put("date", s.getRealExecDate());
  2286 + m.put("time", c.getStartDate());
  2287 + if(c.getRemarks() != null && c.getRemarks().trim().length() > 0){
  2288 + m.put("explain", c.getRemarks());
  2289 + } else {
  2290 + m.put("explain", s.getRemarks()!=null?s.getRemarks():"");
  2291 + }
  2292 +
  2293 + String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();
  2294 + if(lackSet.add(str)){
  2295 + lackList.add(m);
  2296 + }
  2297 + }
  2298 + }
  2299 + }
  2300 + }
  2301 + //主任务烂班
  2302 + else if(s.getStatus() == -1 && s.getAdjustExps().equals("缺人")){
  2303 + Map<String, Object> m = new HashMap<String, Object>();
  2304 + m.put("gsName", s.getGsName());
  2305 + m.put("lineName", s.getXlName());
  2306 + m.put("driverCode", s.getjGh());
  2307 + m.put("driverName", s.getjName());
  2308 + m.put("cl", s.getClZbh());
  2309 + m.put("date", s.getRealExecDate());
  2310 + m.put("time", s.getFcsj());
  2311 + m.put("explain", s.getRemarks()!=null?s.getRemarks():"");
  2312 +
  2313 + String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();
  2314 + if(lackSet.add(str)){
  2315 + lackList.add(m);
  2316 + }
  2317 + }
  2318 + }
  2319 + }
  2320 + } catch (Exception e) {
  2321 + // TODO: handle exception
  2322 + }
  2323 + }
  2324 +
  2325 + Map<String, Object> att = new HashMap<String, Object>();
  2326 + att.put("date", dates[i]);
  2327 + att.put("jh", jhSet.size());
  2328 + att.put("sj", sjSet.size());
  2329 + attList.add(att);
  2330 + }
  2331 +
  2332 + String gpLineSql = "select p.branche_company_code, b.business_name, count(1) jsy"
  2333 + + " from (select e.jsy from bsth_c_s_ecinfo e"
  2334 + + " where e.is_cancel = 0 group by e.jsy) a"
  2335 + + " left join bsth_c_personnel p on a.jsy = p.id"
  2336 + + " left join bsth_c_business b on p.company_code = b.up_code"
  2337 + + " and p.branche_company_code = b.business_code"
  2338 + + " where p.company_code = ?"
  2339 + + " group by p.branche_company_code, b.business_name"
  2340 + + " order by p.branche_company_code";
  2341 + List<Map<String, Object>> ecList=jdbcTemplate.query(gpLineSql, new Object[]{gsdm},
  2342 + new RowMapper<Map<String, Object>>(){
  2343 + @Override
  2344 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2345 + Map<String, Object> m=new HashMap<String,Object>();
  2346 + m.put("company", rs.getString("branche_company_code"));
  2347 + m.put("companyName", rs.getString("business_name"));
  2348 + m.put("jsy", rs.getString("jsy"));
  2349 + return m;
  2350 + }
  2351 + });
  2352 +
  2353 + List<Integer> keyList = new ArrayList<Integer>();
  2354 + Map<Integer, Map<String, Object>> keyMap = new HashMap<Integer, Map<String, Object>>();
  2355 + List<Map<String, Object>> jsyList = new ArrayList<Map<String, Object>>();
  2356 + for(Map<String, Object> m : ecList){
  2357 + if(m.get("company") != null && m.get("company").toString().trim().length() > 0){
  2358 + Integer i = Integer.valueOf(m.get("company").toString().trim());
  2359 + if(!keyMap.containsKey(i)){
  2360 + Map<String, Object> temp = new HashMap<String, Object>();
  2361 + temp.put("company", m.get("companyName").toString());
  2362 + temp.put("jsy", m.get("jsy").toString());
  2363 + keyMap.put(i, temp);
  2364 + keyList.add(i);
  2365 + jsyList.add(temp);
  2366 + }
  2367 + }
  2368 + }
  2369 +
  2370 + String xlSql = "select a.jsy, b.spy, c.cl from"
  2371 + + " (select count(1) jsy from (select a.jsy from bsth_c_s_ecinfo a"
  2372 + + " left join bsth_c_personnel p on a.jsy=p.id where a.is_cancel = 0"
  2373 + + " and a.spy is not null and a.jsy is not null"
  2374 + + " and p.company_code = ?"
  2375 + + " group by jsy) a) a"
  2376 + + " LEFT JOIN"
  2377 + + " (select count(1) spy from (select b.spy from bsth_c_s_ecinfo b"
  2378 + + " left join bsth_c_personnel p on b.spy=p.id where b.is_cancel = 0"
  2379 + + " and b.spy is not null and p.company_code = ?"
  2380 + + " group by spy) b) b"
  2381 + + " on 1=1"
  2382 + + " LEFT JOIN"
  2383 + + " (select count(1) cl from (select c.cl from bsth_c_s_ccinfo c"
  2384 + + " left join bsth_c_cars car on c.cl=car.id where c.is_cancel = 0"
  2385 + + " and c.cl is not null and car.business_code = ?"
  2386 + + " and c.xl in(select e.xl from bsth_c_s_ecinfo e"
  2387 + + " where e.is_cancel = 0 and e.spy is not null) group by c.cl) c) c"
  2388 + + " on 1=1";
  2389 + List<Map<String, Object>> xlConfigList=jdbcTemplate.query(xlSql, new Object[]{gsdm, gsdm, gsdm},
  2390 + new RowMapper<Map<String, Object>>(){
  2391 + @Override
  2392 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2393 + Map<String, Object> m=new HashMap<String,Object>();
  2394 + m.put("jsy", rs.getString("jsy"));
  2395 + m.put("spy", rs.getString("spy"));
  2396 + m.put("cl", rs.getString("cl"));
  2397 + return m;
  2398 + }
  2399 + });
  2400 + long jsy = 0l, spy = 0l, cl = 0l;
  2401 + for(Map<String, Object> t : xlConfigList){
  2402 + if(t.get("jsy") != null){
  2403 + jsy += Long.valueOf(t.get("jsy").toString());
  2404 + }
  2405 + if(t.get("spy") != null){
  2406 + spy += Long.valueOf(t.get("spy").toString());
  2407 + }
  2408 + if(t.get("cl") != null){
  2409 + cl += Long.valueOf(t.get("cl").toString());
  2410 + }
  2411 + }
  2412 +
  2413 + resMap.put("jsyList", jsyList);
  2414 + resMap.put("attList", attList);
  2415 + resMap.put("lackList", lackList);
  2416 + resMap.put("salesmanJsy", jsy);
  2417 + resMap.put("salesmanSpy", spy);
  2418 + resMap.put("salesmanCl", cl);
  2419 +
  2420 + return JSON.parseObject(JSON.toJSONString(resMap));
  2421 + }
  2422 +
  2423 + /** 按月份查询统计指标 */
  2424 + @GET
  2425 + @Path("/selectData/getMonthly/{month}")
  2426 + public JSONObject getMonthly(@PathParam("month") String month){
  2427 + Map<String, Object> resMap = new HashMap<String, Object>();
  2428 +
  2429 + String gpLineSql = "select * from bsth_c_line_plate";
  2430 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  2431 + new RowMapper<Map<String, Object>>(){
  2432 + @Override
  2433 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2434 + Map<String, Object> m=new HashMap<String,Object>();
  2435 + m.put("lineName", rs.getString("line_name"));
  2436 + m.put("lineCode", rs.getString("line_code"));
  2437 + return m;
  2438 + }
  2439 + });
  2440 +
  2441 + Set<String> gpSet = new HashSet<String>();
  2442 + for(Map<String, Object> t : gpLineList){
  2443 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  2444 + gpSet.add(t.get("lineCode").toString().trim());
  2445 + }
  2446 + }
  2447 +
  2448 +
  2449 + String yyxlSql="SELECT line_code from bsth_c_line "
  2450 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  2451 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  2452 + new RowMapper<Map<String, Object>>(){
  2453 + @Override
  2454 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2455 + Map<String, Object> m=new HashMap<String,Object>();
  2456 + m.put("lineCode", rs.getString("line_code"));
  2457 + return m;
  2458 + }
  2459 + });
  2460 + Set<String> yyLine = new HashSet<String>();
  2461 + for(Map<String, Object> t : yyxlList){
  2462 + if(t.get("lineCode") != null){
  2463 + yyLine.add(t.get("lineCode").toString());
  2464 + }
  2465 + }
  2466 +
  2467 +
  2468 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  2469 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  2470 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  2471 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  2472 + + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"
  2473 + + " from bsth_c_calc_count "
  2474 + + " where date like '%"+month+"%' and gsdm != '77'";
  2475 +
  2476 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  2477 + new RowMapper<Map<String, Object>>(){
  2478 + @Override
  2479 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2480 + Map<String, Object> m=new HashMap<String,Object>();
  2481 + m.put("lineCode",rs.getString("xl"));
  2482 + m.put("lineName", rs.getString("xl_name"));
  2483 + m.put("date", rs.getString("date"));
  2484 +
  2485 + m.put("jhbc", rs.getString("jhbc"));
  2486 + m.put("sjbc", rs.getString("sjbc"));
  2487 + m.put("bczxl", rs.getString("bczxl"));
  2488 + m.put("jhbcz", rs.getString("jhbcz"));
  2489 +
  2490 + m.put("jhcc", rs.getString("jhcc"));
  2491 + m.put("sjcc", rs.getString("sjcc"));
  2492 + m.put("ccl", rs.getString("ccl"));
  2493 + m.put("jhccz", rs.getString("jhccz"));
  2494 +
  2495 + m.put("jhyylc", rs.getString("jhyylc"));
  2496 + m.put("sjyylc", rs.getString("sjyylc"));
  2497 + m.put("jhyylcz", rs.getString("jhyylcz"));
  2498 + m.put("jhkslc", rs.getString("jhkslc"));
  2499 + m.put("sjkslc", rs.getString("sjkslc"));
  2500 + m.put("jhkslcz", rs.getString("jhkslcz"));
  2501 +
  2502 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  2503 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  2504 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  2505 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  2506 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  2507 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  2508 +
  2509 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  2510 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  2511 + m.put("smbczdl", rs.getString("smbczdl"));
  2512 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  2513 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  2514 + m.put("smbczdlz", rs.getString("smbczdlz"));
  2515 +
  2516 + m.put("jhszfcs", rs.getString("jhszfcs"));
  2517 + m.put("sjszfczds", rs.getString("sjszfczds"));
  2518 + m.put("szfczdl", rs.getString("szfczdl"));
  2519 +
  2520 + m.put("jhzgl", rs.getString("jhzgl"));
  2521 + m.put("sjzgl", rs.getString("sjzgl"));
  2522 +
  2523 + Date date = new Date();
  2524 + date.setTime(rs.getTimestamp("create_date").getTime());
  2525 + m.put("createDate", sdf.format(date));
  2526 + return m;
  2527 + }
  2528 + });
  2529 +
  2530 +
  2531 + BigDecimal jhzgl = new BigDecimal(0), sjzgl = new BigDecimal(0);//
  2532 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  2533 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;
  2534 +
  2535 + for(Map<String, Object> t : list){
  2536 + if(yyLine.contains(t.get("lineCode").toString())){
  2537 +
  2538 + jhzgl = jhzgl.add(new BigDecimal(t.get("jhzgl").toString()));
  2539 + sjzgl = sjzgl.add(new BigDecimal(t.get("sjzgl").toString()));
  2540 +
  2541 + jhcc += Long.valueOf(t.get("jhccz").toString());
  2542 + sjcc += Long.valueOf(t.get("sjcc").toString());
  2543 + jhbc += Long.valueOf(t.get("jhbc").toString());
  2544 + sjbc += Long.valueOf(t.get("sjbc").toString());
  2545 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  2546 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  2547 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  2548 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  2549 + if(gpSet.contains(t.get("lineCode").toString())){
  2550 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  2551 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  2552 + }
  2553 +
  2554 + }
  2555 + }
  2556 +
  2557 + resMap.put("date", month);
  2558 +
  2559 + resMap.put("jhzgl", df.format(jhzgl));
  2560 + resMap.put("sjzgl", df.format(sjzgl));
  2561 + resMap.put("jhcc", jhcc);
  2562 + resMap.put("sjcc", sjcc);
  2563 + resMap.put("jhbc", jhbc);
  2564 + resMap.put("sjbc", sjbc);
  2565 + resMap.put("jhsm", jhsmbc);
  2566 + resMap.put("sjsm", sjsmbc);
  2567 + resMap.put("jhqq", jhqqbc);
  2568 + resMap.put("sjqq", sjqqzd);
  2569 + resMap.put("jhgp", jhgpqqbc);
  2570 + resMap.put("sjgp", sjgpqqzd);
  2571 +
  2572 + resMap.put("glzxl", jhzgl.doubleValue()>0?sjzgl.divide(jhzgl,
  2573 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2574 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  2575 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2576 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  2577 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2578 + resMap.put("smbzdl", jhbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  2579 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2580 + resMap.put("qqzzdl", jhbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  2581 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2582 + resMap.put("gpzdl", jhbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  2583 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2584 +
  2585 + return JSON.parseObject(JSON.toJSONString(resMap));
  2586 + }
  2587 +
  2588 + /** 按月份查询直属公司统计指标 */
  2589 + @GET
  2590 + @Path("/selectData/getMonthly/{gsdm}/{month}")
  2591 + public JSONObject getMonthly(@PathParam("gsdm") String gsdm, @PathParam("month") String month){
  2592 + Map<String, Object> resMap = new HashMap<String, Object>();
  2593 +
  2594 + String gpLineSql = "select * from bsth_c_line_plate";
  2595 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  2596 + new RowMapper<Map<String, Object>>(){
  2597 + @Override
  2598 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2599 + Map<String, Object> m=new HashMap<String,Object>();
  2600 + m.put("lineName", rs.getString("line_name"));
  2601 + m.put("lineCode", rs.getString("line_code"));
  2602 + return m;
  2603 + }
  2604 + });
  2605 +
  2606 + Set<String> gpSet = new HashSet<String>();
  2607 + for(Map<String, Object> t : gpLineList){
  2608 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  2609 + gpSet.add(t.get("lineCode").toString().trim());
  2610 + }
  2611 + }
  2612 +
  2613 +
  2614 + String yyxlSql="SELECT line_code from bsth_c_line "
  2615 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  2616 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  2617 + new RowMapper<Map<String, Object>>(){
  2618 + @Override
  2619 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2620 + Map<String, Object> m=new HashMap<String,Object>();
  2621 + m.put("lineCode", rs.getString("line_code"));
  2622 + return m;
  2623 + }
  2624 + });
  2625 + Set<String> yyLine = new HashSet<String>();
  2626 + for(Map<String, Object> t : yyxlList){
  2627 + if(t.get("lineCode") != null){
  2628 + yyLine.add(t.get("lineCode").toString());
  2629 + }
  2630 + }
  2631 +
  2632 +
  2633 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  2634 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  2635 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  2636 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  2637 + + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"
  2638 + + " from bsth_c_calc_count "
  2639 + + " where gsdm = '"+gsdm+"' and date like '%"+month+"%'";
  2640 +
  2641 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  2642 + new RowMapper<Map<String, Object>>(){
  2643 + @Override
  2644 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2645 + Map<String, Object> m=new HashMap<String,Object>();
  2646 + m.put("lineCode",rs.getString("xl"));
  2647 + m.put("lineName", rs.getString("xl_name"));
  2648 + m.put("date", rs.getString("date"));
  2649 +
  2650 + m.put("jhbc", rs.getString("jhbc"));
  2651 + m.put("sjbc", rs.getString("sjbc"));
  2652 + m.put("bczxl", rs.getString("bczxl"));
  2653 + m.put("jhbcz", rs.getString("jhbcz"));
  2654 +
  2655 + m.put("jhcc", rs.getString("jhcc"));
  2656 + m.put("sjcc", rs.getString("sjcc"));
  2657 + m.put("ccl", rs.getString("ccl"));
  2658 + m.put("jhccz", rs.getString("jhccz"));
  2659 +
  2660 + m.put("jhyylc", rs.getString("jhyylc"));
  2661 + m.put("sjyylc", rs.getString("sjyylc"));
  2662 + m.put("jhyylcz", rs.getString("jhyylcz"));
  2663 + m.put("jhkslc", rs.getString("jhkslc"));
  2664 + m.put("sjkslc", rs.getString("sjkslc"));
  2665 + m.put("jhkslcz", rs.getString("jhkslcz"));
  2666 +
  2667 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  2668 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  2669 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  2670 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  2671 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  2672 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  2673 +
  2674 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  2675 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  2676 + m.put("smbczdl", rs.getString("smbczdl"));
  2677 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  2678 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  2679 + m.put("smbczdlz", rs.getString("smbczdlz"));
  2680 +
  2681 + m.put("jhszfcs", rs.getString("jhszfcs"));
  2682 + m.put("sjszfczds", rs.getString("sjszfczds"));
  2683 + m.put("szfczdl", rs.getString("szfczdl"));
  2684 +
  2685 + m.put("jhzgl", rs.getString("jhzgl"));
  2686 + m.put("sjzgl", rs.getString("sjzgl"));
  2687 +
  2688 + Date date = new Date();
  2689 + date.setTime(rs.getTimestamp("create_date").getTime());
  2690 + m.put("createDate", sdf.format(date));
  2691 + return m;
  2692 + }
  2693 + });
  2694 +
  2695 +
  2696 + BigDecimal jhzgl = new BigDecimal(0), sjzgl = new BigDecimal(0);//
  2697 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  2698 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;
  2699 +
  2700 + for(Map<String, Object> t : list){
  2701 + if(yyLine.contains(t.get("lineCode").toString())){
  2702 +
  2703 + jhzgl = jhzgl.add(new BigDecimal(t.get("jhzgl").toString()));
  2704 + sjzgl = sjzgl.add(new BigDecimal(t.get("sjzgl").toString()));
  2705 +
  2706 + jhcc += Long.valueOf(t.get("jhccz").toString());
  2707 + sjcc += Long.valueOf(t.get("sjcc").toString());
  2708 + jhbc += Long.valueOf(t.get("jhbc").toString());
  2709 + sjbc += Long.valueOf(t.get("sjbc").toString());
  2710 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  2711 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  2712 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  2713 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  2714 + if(gpSet.contains(t.get("lineCode").toString())){
  2715 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  2716 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  2717 + }
  2718 +
  2719 + }
  2720 + }
  2721 +
  2722 + resMap.put("date", month);
  2723 +
  2724 + resMap.put("jhzgl", df.format(jhzgl));
  2725 + resMap.put("sjzgl", df.format(sjzgl));
  2726 + resMap.put("jhcc", jhcc);
  2727 + resMap.put("sjcc", sjcc);
  2728 + resMap.put("jhbc", jhbc);
  2729 + resMap.put("sjbc", sjbc);
  2730 + resMap.put("jhsm", jhsmbc);
  2731 + resMap.put("sjsm", sjsmbc);
  2732 + resMap.put("jhqq", jhqqbc);
  2733 + resMap.put("sjqq", sjqqzd);
  2734 + resMap.put("jhgp", jhgpqqbc);
  2735 + resMap.put("sjgp", sjgpqqzd);
  2736 +
  2737 + resMap.put("glzxl", jhzgl.doubleValue()>0?sjzgl.divide(jhzgl,
  2738 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2739 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  2740 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2741 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  2742 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2743 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  2744 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2745 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  2746 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2747 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  2748 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2749 +
  2750 + return JSON.parseObject(JSON.toJSONString(resMap));
  2751 + }
  2752 +
  2753 + /** 按日期查询四家直属公司统计指标 */
  2754 + @GET
  2755 + @Path("/selectData/getCompanyData/{date}")
  2756 + public List<Map<String, Object>> getCompanyData(@PathParam("date") String date){
  2757 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  2758 +
  2759 +// String date = sd.format(new Date());
  2760 +
  2761 + String gpLineSql = "select * from bsth_c_line_plate";
  2762 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  2763 + new RowMapper<Map<String, Object>>(){
  2764 + @Override
  2765 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2766 + Map<String, Object> m=new HashMap<String,Object>();
  2767 + m.put("lineName", rs.getString("line_name"));
  2768 + m.put("lineCode", rs.getString("line_code"));
  2769 + return m;
  2770 + }
  2771 + });
  2772 +
  2773 + Set<String> gpSet = new HashSet<String>();
  2774 + for(Map<String, Object> t : gpLineList){
  2775 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  2776 + gpSet.add(t.get("lineCode").toString().trim());
  2777 + }
  2778 + }
  2779 +
  2780 +
  2781 + String yyxlSql="SELECT line_code from bsth_c_line "
  2782 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  2783 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  2784 + new RowMapper<Map<String, Object>>(){
  2785 + @Override
  2786 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2787 + Map<String, Object> m=new HashMap<String,Object>();
  2788 + m.put("lineCode", rs.getString("line_code"));
  2789 + return m;
  2790 + }
  2791 + });
  2792 + Set<String> yyLine = new HashSet<String>();
  2793 + for(Map<String, Object> t : yyxlList){
  2794 + if(t.get("lineCode") != null){
  2795 + yyLine.add(t.get("lineCode").toString());
  2796 + }
  2797 + }
  2798 +
  2799 +
  2800 + String gsSql="SELECT business_name, business_code from bsth_c_business ";
  2801 + List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,
  2802 + new RowMapper<Map<String, Object>>(){
  2803 + @Override
  2804 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2805 + Map<String, Object> m=new HashMap<String,Object>();
  2806 + m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");
  2807 + m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");
  2808 + return m;
  2809 + }
  2810 + });
  2811 + final Map<String, String> gsMap = new HashMap<String, String>();
  2812 + for(Map<String, Object> t : gsList){
  2813 + if(t.get("code") != null && t.get("name") != null){
  2814 + gsMap.put(t.get("code").toString(), t.get("name").toString().substring(0, 2));
  2815 + }
  2816 + }
  2817 +
  2818 +
  2819 + String sql="select gsdm,xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  2820 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  2821 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  2822 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  2823 + + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"
  2824 + + " from bsth_c_calc_count "
  2825 + + " where date = ? and gsdm != '77'";
  2826 +
  2827 + List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{date},
  2828 + new RowMapper<Map<String, Object>>(){
  2829 + @Override
  2830 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2831 + Map<String, Object> m=new HashMap<String,Object>();
  2832 + m.put("gs",rs.getString("gsdm")!=null?gsMap.get(rs.getString("gsdm")):"");
  2833 + m.put("lineCode",rs.getString("xl"));
  2834 + m.put("lineName", rs.getString("xl_name"));
  2835 + m.put("date", rs.getString("date"));
  2836 +
  2837 + m.put("jhbc", rs.getString("jhbc"));
  2838 + m.put("sjbc", rs.getString("sjbc"));
  2839 + m.put("bczxl", rs.getString("bczxl"));
  2840 + m.put("jhbcz", rs.getString("jhbcz"));
  2841 +
  2842 + m.put("jhcc", rs.getString("jhcc"));
  2843 + m.put("sjcc", rs.getString("sjcc"));
  2844 + m.put("ccl", rs.getString("ccl"));
  2845 + m.put("jhccz", rs.getString("jhccz"));
  2846 +
  2847 + m.put("jhyylc", rs.getString("jhyylc"));
  2848 + m.put("sjyylc", rs.getString("sjyylc"));
  2849 + m.put("jhyylcz", rs.getString("jhyylcz"));
  2850 + m.put("jhkslc", rs.getString("jhkslc"));
  2851 + m.put("sjkslc", rs.getString("sjkslc"));
  2852 + m.put("jhkslcz", rs.getString("jhkslcz"));
  2853 +
  2854 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  2855 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  2856 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  2857 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  2858 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  2859 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  2860 +
  2861 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  2862 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  2863 + m.put("smbczdl", rs.getString("smbczdl"));
  2864 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  2865 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  2866 + m.put("smbczdlz", rs.getString("smbczdlz"));
  2867 +
  2868 + m.put("jhszfcs", rs.getString("jhszfcs"));
  2869 + m.put("sjszfczds", rs.getString("sjszfczds"));
  2870 + m.put("szfczdl", rs.getString("szfczdl"));
  2871 +
  2872 + m.put("jhzgl", rs.getString("jhzgl"));
  2873 + m.put("sjzgl", rs.getString("sjzgl"));
  2874 +
  2875 + Date date = new Date();
  2876 + date.setTime(rs.getTimestamp("create_date").getTime());
  2877 + m.put("createDate", sdf.format(date));
  2878 + return m;
  2879 + }
  2880 + });
  2881 +
  2882 +
  2883 + Map<String, Integer> sortMap = new HashMap<String, Integer>();
  2884 + sortMap.put("杨高", 0);
  2885 + sortMap.put("上南", 1);
  2886 + sortMap.put("金高", 2);
  2887 + sortMap.put("南汇", 3);
  2888 + sortMap.put("浦交", 4);
  2889 + Map<String, Object> ygMap = new HashMap<String, Object>();
  2890 + ygMap.put("gs", "杨高");
  2891 + resList.add(ygMap);
  2892 + Map<String, Object> snMap = new HashMap<String, Object>();
  2893 + snMap.put("gs", "上南");
  2894 + resList.add(snMap);
  2895 + Map<String, Object> jgMap = new HashMap<String, Object>();
  2896 + jgMap.put("gs", "金高");
  2897 + resList.add(jgMap);
  2898 + Map<String, Object> nhMap = new HashMap<String, Object>();
  2899 + nhMap.put("gs", "南汇");
  2900 + resList.add(nhMap);
  2901 + Map<String, Object> pjMap = new HashMap<String, Object>();
  2902 + pjMap.put("gs", "浦交");
  2903 + resList.add(pjMap);
  2904 +
  2905 +
  2906 + for(Map<String, Object> t : list){
  2907 + if(yyLine.contains(t.get("lineCode").toString())){
  2908 + if(sortMap.get(t.get("gs")) != null){
  2909 + Map<String, Object> m = resList.get(sortMap.get(t.get("gs")));
  2910 + mapPut(m, "jhcc", t.get("jhccz").toString());
  2911 + mapPut(m, "sjcc", t.get("sjcc").toString());
  2912 + mapPut(m, "jhbc", t.get("jhbc").toString());
  2913 + mapPut(m, "sjbc", t.get("sjbc").toString());
  2914 + mapPut(m, "jhsmbc", t.get("jhsmbcs").toString());
  2915 + mapPut(m, "sjsmbc", t.get("sjsmbczds").toString());
  2916 + mapPut(m, "jhqqbc", t.get("jhszfcs").toString());
  2917 + mapPut(m, "sjqqzd", t.get("sjszfczds").toString());
  2918 + if(gpSet.contains(t.get("lineCode").toString())){
  2919 + mapPut(m, "jhgpqqbc", t.get("jhszfcs").toString());
  2920 + mapPut(m, "sjgpqqzd", t.get("sjszfczds").toString());
  2921 + }
  2922 + mapPut(m, "jhzgl", t.get("jhzgl").toString());
  2923 + mapPut(m, "sjzgl", t.get("sjzgl").toString());
  2924 + }
  2925 +
  2926 + mapPut(pjMap, "jhcc", t.get("jhccz").toString());
  2927 + mapPut(pjMap, "sjcc", t.get("sjcc").toString());
  2928 + mapPut(pjMap, "jhbc", t.get("jhbc").toString());
  2929 + mapPut(pjMap, "sjbc", t.get("sjbc").toString());
  2930 + mapPut(pjMap, "jhsmbc", t.get("jhsmbcs").toString());
  2931 + mapPut(pjMap, "sjsmbc", t.get("sjsmbczds").toString());
  2932 + mapPut(pjMap, "jhqqbc", t.get("jhszfcs").toString());
  2933 + mapPut(pjMap, "sjqqzd", t.get("sjszfczds").toString());
  2934 + if(gpSet.contains(t.get("lineCode").toString())){
  2935 + mapPut(pjMap, "jhgpqqbc", t.get("jhszfcs").toString());
  2936 + mapPut(pjMap, "sjgpqqzd", t.get("sjszfczds").toString());
  2937 + }
  2938 + mapPut(pjMap, "jhzgl", t.get("jhzgl").toString());
  2939 + mapPut(pjMap, "sjzgl", t.get("sjzgl").toString());
  2940 + }
  2941 + }
  2942 +
  2943 +
  2944 + //计算签卡率
  2945 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  2946 + long jh = 0, sj = 0;
  2947 + for(ScheduleRealInfo s : findAll){
  2948 + if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2949 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  2950 + if(s.getGsBm()!=null && sortMap.get(gsMap.get(s.getGsBm()!=null?s.getGsBm():"")) != null){
  2951 + Map<String, Object> m = resList.get(sortMap.get(gsMap.get(s.getGsBm())));
  2952 + ++jh;
  2953 + mapPut(m, "bcs", 1);
  2954 + //String sty = decimalToBinary(s.getRfidState());
  2955 + String sty = decimalToBinary(0);
  2956 + Integer state = Integer.parseInt(sty);
  2957 + if ((state & 4) == 4) {
  2958 + ++sj;
  2959 + mapPut(m, "qks", 1);
  2960 + }
  2961 + }
  2962 + }
  2963 + }
  2964 + }
  2965 + mapPut(pjMap, "bcs", jh);
  2966 + mapPut(pjMap, "qks", sj);
  2967 +
  2968 +
  2969 + for(Map<String, Object> m : resList){
  2970 + m.put("date", date);
  2971 +
  2972 + m.put("glzxl", new BigDecimal(m.get("jhzgl").toString()).doubleValue()>0?
  2973 + new BigDecimal(m.get("sjzgl").toString()).divide(new BigDecimal(m.get("jhzgl").toString()),
  2974 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2975 + m.put("ccl", new BigDecimal(m.get("jhcc").toString()).doubleValue()>0?
  2976 + new BigDecimal(m.get("sjcc").toString()).divide(new BigDecimal(m.get("jhcc").toString()),
  2977 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2978 + m.put("bczxl", new BigDecimal(m.get("jhbc").toString()).doubleValue()>0?
  2979 + new BigDecimal(m.get("sjbc").toString()).divide(new BigDecimal(m.get("jhbc").toString()),
  2980 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2981 + m.put("smbzdl", new BigDecimal(m.get("jhsmbc").toString()).doubleValue()>0?
  2982 + new BigDecimal(m.get("sjsmbc").toString()).divide(new BigDecimal(m.get("jhsmbc").toString()),
  2983 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2984 + m.put("qqzzdl", new BigDecimal(m.get("jhqqbc").toString()).doubleValue()>0?
  2985 + new BigDecimal(m.get("sjqqzd").toString()).divide(new BigDecimal(m.get("jhqqbc").toString()),
  2986 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2987 + m.put("gpzdl", new BigDecimal(m.get("jhgpqqbc").toString()).doubleValue()>0?
  2988 + new BigDecimal(m.get("sjgpqqzd").toString()).divide(new BigDecimal(m.get("jhgpqqbc").toString()),
  2989 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2990 + m.put("qkl", new BigDecimal(m.get("bcs")!=null?m.get("bcs").toString():"0").doubleValue()>0?
  2991 + new BigDecimal(m.get("qks")!=null?m.get("qks").toString():"0").divide(new BigDecimal(m.get("bcs").toString()),
  2992 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2993 + }
  2994 +
  2995 + return resList;
  2996 + }
  2997 +
  2998 + /** 报备登记查询接口 */
  2999 + @GET
  3000 + @Path("/selectData/getReport/startDate/{startDate}/endDate/{endDate}")
  3001 + public List<Map<String, Object>> getReport(@PathParam("startDate") String starDate,
  3002 + @PathParam("endDate") String endDate){
  3003 + Date d1 = new Date(), d2 = new Date();
  3004 + try{
  3005 + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
  3006 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3007 + d1 = sd.parse(starDate);
  3008 + d2 = sd.parse(endDate);
  3009 + d2.setTime(d2.getTime() + (1l*1000*60*60*24 - 1));
  3010 + starDate = sdf.format(d1);
  3011 + endDate = sdf.format(d2);
  3012 + }catch(ParseException e){
  3013 + // TODO Auto-generated catch block
  3014 + e.printStackTrace();
  3015 + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  3016 + Map<String, Object> result = new HashMap<String, Object>();
  3017 + result.put("msg", "参数日期格式错误");
  3018 + list.add(result);
  3019 + return list;
  3020 + }
  3021 + String sql="SELECT ID,REPORT_TYPE,REPORT_GS,REPORT_FGS,REPORT_GSNAME,REPORT_FGSNAME,"
  3022 + + " REPORT_DATE,REPORT_BBR,REPORT_XL,REPORT_XLNAME,REPORT_STATION,REPORT_DWSBBM,"
  3023 + + " REPORT_DWSBSJ,REPORT_YWSJ,REPORT_SMBWD,REPORT_DJGSJ,REPORT_DJGYY,REPORT_TFSJ,"
  3024 + + " REPORT_YXSJ,REPORT_YXBC,REPORT_TZCS,REPORT_SGBH,REPORT_ZBH,REPORT_PZH,REPORT_JSY,"
  3025 + + " REPORT_SGSJ,REPORT_SGDD,REPORT_XSFX,REPORT_SGDX,REPORT_DXPZH,REPORT_SGGK,"
  3026 + + " REPORT_SSRS,REPORT_SWRS,REPORT_BGR,REPORT_BGRDH,REPORT_BZ,REPORT_ROAD,STATUS,"
  3027 + + " CREATE_BY,CREATE_DATE,UPDATE_BY,UPDATE_DATE"
  3028 + + " from bsth_t_report "
  3029 + + " where REPORT_DATE >= ? and REPORT_DATE <= ?";
  3030 + List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{starDate, endDate},
  3031 + new RowMapper<Map<String, Object>>(){
  3032 + @Override
  3033 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3034 + Map<String, Object> m=new HashMap<String,Object>();
  3035 + m.put("ID", rs.getString("ID"));
  3036 + m.put("REPORT_TYPE", rs.getString("REPORT_TYPE"));
  3037 + m.put("REPORT_GS", rs.getString("REPORT_GS"));
  3038 + m.put("REPORT_FGS",rs.getString("REPORT_FGS"));
  3039 + m.put("REPORT_GSNAME",rs.getString("REPORT_GSNAME"));
  3040 + m.put("REPORT_FGSNAME",rs.getString("REPORT_FGSNAME"));
  3041 + m.put("REPORT_DATE",rs.getString("REPORT_DATE"));
  3042 + m.put("REPORT_BBR",rs.getString("REPORT_BBR"));
  3043 + m.put("REPORT_XL",rs.getString("REPORT_XL"));
  3044 + m.put("REPORT_XLNAME",rs.getString("REPORT_XLNAME"));
  3045 + m.put("REPORT_STATION",rs.getString("REPORT_STATION"));
  3046 + m.put("REPORT_DWSBBM",rs.getString("REPORT_DWSBBM"));
  3047 + m.put("REPORT_DWSBSJ",rs.getString("REPORT_DWSBSJ"));
  3048 + m.put("REPORT_YWSJ",rs.getString("REPORT_YWSJ"));
  3049 + m.put("REPORT_SMBWD",rs.getString("REPORT_SMBWD"));
  3050 + m.put("REPORT_DJGSJ",rs.getString("REPORT_DJGSJ"));
  3051 + m.put("REPORT_DJGYY",rs.getString("REPORT_DJGYY"));
  3052 + m.put("REPORT_TFSJ",rs.getString("REPORT_TFSJ"));
  3053 + m.put("REPORT_YXSJ",rs.getString("REPORT_YXSJ"));
  3054 + m.put("REPORT_YXBC",rs.getString("REPORT_YXBC"));
  3055 + m.put("REPORT_TZCS",rs.getString("REPORT_TZCS"));
  3056 + m.put("REPORT_SGBH",rs.getString("REPORT_SGBH"));
  3057 + m.put("REPORT_ZBH",rs.getString("REPORT_ZBH"));
  3058 + m.put("REPORT_PZH",rs.getString("REPORT_PZH"));
  3059 + m.put("REPORT_JSY",rs.getString("REPORT_JSY"));
  3060 + m.put("REPORT_SGSJ",rs.getString("REPORT_SGSJ"));
  3061 + m.put("REPORT_SGDD",rs.getString("REPORT_SGDD"));
  3062 + m.put("REPORT_XSFX", rs.getString("REPORT_XSFX"));
  3063 + m.put("REPORT_SGDX", rs.getString("REPORT_SGDX"));
  3064 + m.put("REPORT_DXPZH", rs.getString("REPORT_DXPZH"));
  3065 + m.put("REPORT_SGGK", rs.getString("REPORT_SGGK"));
  3066 + m.put("REPORT_SSRS", rs.getString("REPORT_SSRS"));
  3067 + m.put("REPORT_SWRS", rs.getString("REPORT_SWRS"));
  3068 + m.put("REPORT_BGR", rs.getString("REPORT_BGR"));
  3069 + m.put("REPORT_BGRDH", rs.getString("REPORT_BGRDH"));
  3070 + m.put("REPORT_BZ", rs.getString("REPORT_BZ"));
  3071 + m.put("REPORT_ROAD", rs.getString("REPORT_ROAD"));
  3072 + m.put("STATUS", rs.getString("STATUS"));
  3073 + m.put("CREATE_BY", rs.getString("CREATE_BY"));
  3074 + m.put("CREATE_DATE", rs.getString("CREATE_DATE"));
  3075 + m.put("UPDATE_BY", rs.getString("UPDATE_BY"));
  3076 + m.put("UPDATE_DATE", rs.getString("UPDATE_DATE"));
  3077 + return m;
  3078 + }
  3079 + });
  3080 +
  3081 + return list;
  3082 + }
  3083 +
  3084 + /** 按日期查询所有线路大间隔情况 */
  3085 + @GET
  3086 + @Path("/selectData/getLineInterval/{date}")
  3087 + public List<Map<String, Object>> getLineInterval(@PathParam("date") String date){
  3088 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  3089 +
  3090 + String gsSql="SELECT business_name, business_code, up_code from bsth_c_business ";
  3091 + List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,
  3092 + new RowMapper<Map<String, Object>>(){
  3093 + @Override
  3094 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3095 + Map<String, Object> m=new HashMap<String,Object>();
  3096 + m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");
  3097 + m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");
  3098 + m.put("upCode", rs.getString("up_code")!=null?rs.getString("up_code"):"");
  3099 + return m;
  3100 + }
  3101 + });
  3102 +
  3103 + Map<String, Object> gsMap = new HashMap<String, Object>();
  3104 + Map<String, Object> fgsMap = new HashMap<String, Object>();
  3105 + for(Map<String, Object> m : gsList){
  3106 + if(m.get("upCode") != null && m.get("upCode").toString().trim().length() > 0
  3107 + && !("0".equals(m.get("upCode").toString().trim()))){
  3108 + if("88".equals(m.get("upCode").toString().trim())){
  3109 + gsMap.put(m.get("code").toString(), m.get("name").toString());
  3110 + } else {
  3111 + fgsMap.put(m.get("code").toString()+"_"+m.get("upCode").toString(), m.get("name").toString());
  3112 + }
  3113 + }
  3114 + }
  3115 +
  3116 + String calcIntervalSql = "select * from bsth_c_calc_interval where date = ? and sfyy = 1 and gsbm != '77'";
  3117 + List<Map<String, Object>> calcIntervalList=jdbcTemplate.query(calcIntervalSql,
  3118 + new Object[]{date},
  3119 + new RowMapper<Map<String, Object>>(){
  3120 + @Override
  3121 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3122 + Map<String, Object> m=new HashMap<String,Object>();
  3123 + m.put("gsbm", rs.getString("gsbm"));
  3124 + m.put("fgsbm", rs.getString("fgsbm"));
  3125 + m.put("date", rs.getString("date"));
  3126 + m.put("xlBm", rs.getString("xl_bm"));
  3127 + m.put("xlName", rs.getString("xl_name"));
  3128 + m.put("level", rs.getString("level"));
  3129 + return m;
  3130 + }
  3131 + });
  3132 +
  3133 + String calcIntervalDetailSql = "select * from bsth_c_calc_interval_detail where date = ?";
  3134 + List<Map<String, Object>> calcIntervalDetailList=jdbcTemplate.query(calcIntervalDetailSql,
  3135 + new Object[]{date},
  3136 + new RowMapper<Map<String, Object>>(){
  3137 + @Override
  3138 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3139 + Map<String, Object> m=new HashMap<String,Object>();
  3140 + m.put("date", rs.getString("date"));
  3141 + m.put("xlBm", rs.getString("line_code"));
  3142 + m.put("xlName", rs.getString("line_name"));
  3143 + m.put("level", rs.getString("level"));
  3144 + m.put("station", rs.getString("station"));
  3145 + m.put("jhfc1", rs.getString("jhfc1"));
  3146 + m.put("sjfc1", rs.getString("sjfc1"));
  3147 + m.put("jhfc2", rs.getString("jhfc2"));
  3148 + m.put("sjfc2", rs.getString("sjfc2"));
  3149 + m.put("subTime", rs.getString("sub_time"));
  3150 + m.put("remark", rs.getString("remark"));
  3151 + return m;
  3152 + }
  3153 + });
  3154 +
  3155 + Map<String, Map<String, Object>> calcIntervalMap = new HashMap<String, Map<String, Object>>();
  3156 +
  3157 + for(Map<String, Object> m : calcIntervalList){
  3158 + calcIntervalMap.put(m.get("xlBm").toString(), m);
  3159 + }
  3160 +
  3161 + for(Map<String, Object> m : calcIntervalDetailList){
  3162 + String xlBm = m.get("xlBm").toString();
  3163 + if(calcIntervalMap.containsKey(xlBm)){
  3164 + Map<String, Object> map = calcIntervalMap.get(xlBm);
  3165 + m.put("gs", gsMap.get(map.get("gsbm").toString()));
  3166 + m.put("fgs", fgsMap.get(map.get("fgsbm").toString() + "_" + map.get("gsbm").toString()));
  3167 + resList.add(m);
  3168 + }
  3169 + }
  3170 +
  3171 + return resList;
  3172 + }
  3173 +
  3174 + /** 按日期(加前7天共8天)查询所有线路大间隔次数 */
  3175 + @GET
  3176 + @Path("/selectData/getLastWeekIntervalSum/{date}")
  3177 + public List<Map<String, Object>> getLastWeekIntervalSum(@PathParam("date") String date) throws ParseException{
  3178 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  3179 +
  3180 + String gsSql="SELECT business_name, business_code, up_code from bsth_c_business ";
  3181 + List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,
  3182 + new RowMapper<Map<String, Object>>(){
  3183 + @Override
  3184 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3185 + Map<String, Object> m=new HashMap<String,Object>();
  3186 + m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");
  3187 + m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");
  3188 + m.put("upCode", rs.getString("up_code")!=null?rs.getString("up_code"):"");
  3189 + return m;
  3190 + }
  3191 + });
  3192 + Map<String, Object> gsMap = new HashMap<String, Object>();
  3193 + for(Map<String, Object> m : gsList){
  3194 + if(m.get("upCode") != null && m.get("upCode").toString().trim().length() > 0
  3195 + && !("0".equals(m.get("upCode").toString().trim()))){
  3196 + if("88".equals(m.get("upCode").toString().trim())){
  3197 + gsMap.put(m.get("code").toString(), m.get("name").toString());
  3198 + }
  3199 + }
  3200 + }
  3201 +
  3202 + String[] gsS = {gsMap.get("05").toString(), gsMap.get("55").toString(), gsMap.get("22").toString(), gsMap.get("26").toString()};
  3203 + String[] levelS = {"A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "D", "E"};
  3204 + List<String> keyList = new ArrayList<String>();
  3205 + for(String gs : gsS){
  3206 + for(String level : levelS){
  3207 + keyList.add(gs + "_" + level);
  3208 + }
  3209 + }
  3210 +
  3211 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  3212 + for(long l = 7l; l >= 0l; l--){
  3213 + Date d = sdf.parse(date);
  3214 + d.setTime(d.getTime() - l*1000*60*60*24);
  3215 + String date1 = sdf.format(d);
  3216 +
  3217 + String calcIntervalSql = "select * from bsth_c_calc_interval where date = ? and sfyy = 1 and gsbm != '77'";
  3218 + List<Map<String, Object>> calcIntervalList=jdbcTemplate.query(calcIntervalSql,
  3219 + new Object[]{date1},
  3220 + new RowMapper<Map<String, Object>>(){
  3221 + @Override
  3222 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3223 + Map<String, Object> m=new HashMap<String,Object>();
  3224 + m.put("gsbm", rs.getString("gsbm"));
  3225 + m.put("fgsbm", rs.getString("fgsbm"));
  3226 + m.put("date", rs.getString("date"));
  3227 + m.put("level", rs.getString("level"));
  3228 + m.put("djgAll", rs.getString("djg_all"));
  3229 + m.put("djgZgf", rs.getString("djg_zgf"));
  3230 + m.put("djgWgf", rs.getString("djg_wgf"));
  3231 + m.put("djgDg", rs.getString("djg_dg"));
  3232 + return m;
  3233 + }
  3234 + });
  3235 +
  3236 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  3237 + for(Map<String, Object> m : calcIntervalList){
  3238 + String gsName = gsMap.get(m.get("gsbm").toString()).toString();
  3239 + String level = m.get("level").toString();
  3240 + String key = gsName + "_" + level;
  3241 + if(!(keyMap.containsKey(key))){
  3242 + Map<String, Object> map = new HashMap<String, Object>();
  3243 + map.put("date", date1);
  3244 + map.put("gs", gsName);
  3245 + map.put("level", level);
  3246 + map.put("djgAll", 0);
  3247 + map.put("djgZgf", 0);
  3248 + map.put("djgWgf", 0);
  3249 + map.put("djgDg", 0);
  3250 + keyMap.put(key, map);
  3251 + }
  3252 + if(m.get("djgAll") != null && m.get("djgAll").toString().trim().length() > 0
  3253 + && Long.valueOf(m.get("djgAll").toString()) > 0l){
  3254 + Map<String, Object> map = keyMap.get(key);
  3255 + map.put("djgAll", Long.valueOf(map.get("djgAll").toString()) + Long.valueOf(m.get("djgAll").toString()));
  3256 + map.put("djgZgf", Long.valueOf(map.get("djgZgf").toString()) + Long.valueOf(m.get("djgZgf").toString()));
  3257 + map.put("djgWgf", Long.valueOf(map.get("djgWgf").toString()) + Long.valueOf(m.get("djgWgf").toString()));
  3258 + map.put("djgDg", Long.valueOf(map.get("djgDg").toString()) + Long.valueOf(m.get("djgDg").toString()));
  3259 + }
  3260 + }
  3261 +
  3262 + for(String key : keyList){
  3263 + if(keyMap.containsKey(key)){
  3264 + resList.add(keyMap.get(key));
  3265 + }
  3266 + }
  3267 + }
  3268 +
  3269 + return resList;
  3270 + }
  3271 +
  3272 + /** 按日期查询所有线路首班末班班次数 */
  3273 + @GET
  3274 + @Path("/selectData/getFirstAndLast/{date}")
  3275 + public List<Map<String, Object>> getFirstAndLast(@PathParam("date") String date){
  3276 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  3277 +
  3278 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  3279 + SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy-MM-dd");
  3280 + DecimalFormat df = new DecimalFormat("0.00");
  3281 + Date createDate = new Date();
  3282 + String sfss = "1"; //是否实时;=1为实时。
  3283 +
  3284 + String yyxlSql="SELECT line_code from bsth_c_line "
  3285 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  3286 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  3287 + new RowMapper<Map<String, Object>>(){
  3288 + @Override
  3289 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3290 + Map<String, Object> m=new HashMap<String,Object>();
  3291 + m.put("lineCode", rs.getString("line_code"));
  3292 + return m;
  3293 + }
  3294 + });
  3295 +
  3296 + //key:线路编码;value:每日营运开始时间
  3297 + Map<String, Long> yyLine = new HashMap<String, Long>();
  3298 + for(Map<String, Object> t : yyxlList){
  3299 + if(t.get("lineCode") != null){
  3300 + String lineCode = t.get("lineCode").toString();
  3301 +// yyLine.add(t.get("lineCode").toString());
  3302 + String minfcsj="02:00";
  3303 + String sqlMinYysj="select start_opt from bsth_c_line_config where "
  3304 + + " id = ("
  3305 + + "select max(id) from bsth_c_line_config where line = ?"
  3306 + + ")";
  3307 + List<String> list= jdbcTemplate.query(sqlMinYysj,
  3308 + new Object[]{lineCode},
  3309 + new RowMapper<String>(){
  3310 + @Override
  3311 + public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  3312 + String startopt=rs.getString("start_opt");
  3313 + return startopt;
  3314 + }
  3315 + });
  3316 + if(list.size()>0){
  3317 + minfcsj=list.get(0);
  3318 + }
  3319 + String[] minSjs = minfcsj.split(":");
  3320 + //车辆最早发车时间 用来过滤超第二天0点的数据
  3321 + Long minSj=Long.parseLong(minSjs[0])*60+Long.parseLong(minSjs[1]);
  3322 +
  3323 + yyLine.put(lineCode, minSj);
  3324 + }
  3325 + }
  3326 +
  3327 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  3328 + Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>();
  3329 + Map<String, Map<String, Object>> lineXX = new HashMap<String, Map<String, Object>>();
  3330 + for(ScheduleRealInfo s : findAll){
  3331 +// if(s.getBcType().equals("region") || s.getBcType().equals("venting")
  3332 +// || s.getBcType().equals("major") || isInOut(s)){
  3333 + if(s.getBcType().equals("region") || isInOut(s)){
  3334 + continue; //区间班次、直放班次、放站班次与空驶班次不做首末班统计
  3335 + }
  3336 + if(!("77".equals(s.getGsBm())) && yyLine.containsKey(s.getXlBm())){ //只统计营运线路
  3337 + if(!(keyMap.containsKey(s.getXlBm()))){
  3338 + keyMap.put(s.getXlBm(), new ArrayList<ScheduleRealInfo>());
  3339 + }
  3340 + keyMap.get(s.getXlBm()).add(s);
  3341 +
  3342 + if(!(lineXX.containsKey(s.getXlBm()))){
  3343 + lineXX.put(s.getXlBm(), new HashMap<String, Object>());
  3344 + }
  3345 + Map<String, Object> xx = lineXX.get(s.getXlBm());
  3346 + if(!(xx.containsKey("lineName")) && s.getXlName() != null && s.getXlName().trim().length() > 0){
  3347 + xx.put("lineName", s.getXlName());
  3348 + }
  3349 + if(!(xx.containsKey("gsBm")) && s.getGsBm() != null && s.getGsBm().trim().length() > 0){
  3350 + xx.put("gsBm", s.getGsBm());
  3351 + }
  3352 + if(!(xx.containsKey("gsName")) && s.getGsName() != null && s.getGsName().trim().length() > 0){
  3353 + xx.put("gsName", s.getGsName());
  3354 + }
  3355 + if(!(xx.containsKey("fgsBm")) && s.getFgsBm() != null && s.getFgsBm().trim().length() > 0){
  3356 + xx.put("fgsBm", s.getFgsBm());
  3357 + }
  3358 + if(!(xx.containsKey("fgsName")) && s.getFgsName() != null && s.getFgsName().trim().length() > 0){
  3359 + xx.put("fgsName", s.getFgsName());
  3360 + }
  3361 + }
  3362 + }
  3363 +
  3364 + for(String lineCode : keyMap.keySet()){
  3365 + List<ScheduleRealInfo> listjh0 = new ArrayList<ScheduleRealInfo>();
  3366 + List<ScheduleRealInfo> listjh1 = new ArrayList<ScheduleRealInfo>();
  3367 + List<ScheduleRealInfo> listsj0 = new ArrayList<ScheduleRealInfo>();
  3368 + List<ScheduleRealInfo> listsj1 = new ArrayList<ScheduleRealInfo>();
  3369 + Long minFcsj = yyLine.get(lineCode);
  3370 + for(ScheduleRealInfo s : keyMap.get(lineCode)){
  3371 + String[] fcsj = s.getFcsj().split(":");
  3372 + Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
  3373 + Long fscjT = 0L;
  3374 + if (fcsjL < minFcsj) {
  3375 + Calendar calendar = new GregorianCalendar();
  3376 + calendar.setTime(s.getScheduleDate());
  3377 + calendar.add(calendar.DATE, 1);
  3378 + Date d = calendar.getTime();
  3379 + try {
  3380 + fscjT = sdf.parse(sdf_.format(d) + " " + s.getFcsj()).getTime();
  3381 + } catch (ParseException e) {
  3382 + // TODO Auto-generated catch block
  3383 + e.printStackTrace();
  3384 + }
  3385 + } else {
  3386 + try {
  3387 + fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
  3388 + } catch (ParseException e) {
  3389 + // TODO Auto-generated catch block
  3390 + e.printStackTrace();
  3391 + }
  3392 + }
  3393 +
  3394 + if (StringUtils.isEmpty(s.getFcsjActual())) {
  3395 + s.setFcsjActualTime(0L);
  3396 + s.setFcsjT(fscjT);
  3397 + } else {
  3398 + Long fcsjAcual = 0L;
  3399 + try {
  3400 + fcsjAcual = sdf.parse(s.getRealExecDate() + " " + s.getFcsjActual()).getTime();
  3401 + if(fcsjAcual - fscjT > (20l*60*60*1000)){//如果实发比计发大20小时则认为日期有误,如实发在次日,计发为00:00,实发为23:59
  3402 + fcsjAcual -= 1l*24*60*60*1000;
  3403 + } if(fscjT - fcsjAcual > (20l*60*60*1000)){
  3404 + fcsjAcual += 1l*24*60*60*1000;
  3405 + }
  3406 + s.setFcsjActualTime(fcsjAcual);
  3407 + s.setFcsjT(fscjT);
  3408 + } catch (ParseException e) {
  3409 + // TODO Auto-generated catch block
  3410 + e.printStackTrace();
  3411 + }
  3412 + }
  3413 +
  3414 + if (!(s.isSflj())) {
  3415 + if (s.getXlDir().equals("0")) {
  3416 + listjh0.add(s);
  3417 + } else {
  3418 + listjh1.add(s);
  3419 + }
  3420 + }
  3421 +
  3422 + if(s.getFcsjActual() != null && s.getFcsjActual().trim().length() > 0){
  3423 + if (s.getXlDir().equals("0")) {
  3424 + listsj0.add(s);
  3425 + } else {
  3426 + listsj1.add(s);
  3427 + }
  3428 + }
  3429 + }
  3430 +
  3431 + Collections.sort(listjh0, new ComparableJhfc());
  3432 + Collections.sort(listjh1, new ComparableJhfc());
  3433 + Collections.sort(listsj0, new ComparableAcual());
  3434 + Collections.sort(listsj1, new ComparableAcual());
  3435 + int jhFirst = 0, jhLast = 0, sjzdFirst = 0, sjzdLast = 0;
  3436 +
  3437 + //上行
  3438 + if(listjh0.size() > 0){
  3439 + ScheduleRealInfo jhsb = listjh0.get(0); //计划首班
  3440 + for(int f = 0; f < listjh0.size(); f++){
  3441 + jhsb = listjh0.get(f); //计划首班
  3442 + String bcType = jhsb.getBcType();
  3443 + List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhsb.getSpId());
  3444 + if(oList.size() > 0 && oList.get(0) != null
  3445 + && oList.get(0).trim().length() > 0){
  3446 + bcType = oList.get(0).trim();
  3447 + }
  3448 + if(bcType.equals("region") || bcType.equals("venting")
  3449 + || bcType.equals("major") || isInOut(bcType)){
  3450 + continue;
  3451 + }
  3452 + break;
  3453 + }
  3454 + if("1".equals(sfss) ? createDate.getTime() > jhsb.getFcsjT() : true){
  3455 + jhFirst++;
  3456 + for(int i = 0; i < listsj0.size(); i++){
  3457 + ScheduleRealInfo sjsb = listsj0.get(i); //实际首班
  3458 + String bcType = sjsb.getBcType();
  3459 + if(bcType.equals("region") || bcType.equals("venting")
  3460 + || bcType.equals("major") || isInOut(bcType)){
  3461 + continue;
  3462 + }
  3463 + long wd = sjsb.getFcsjActualTime() - jhsb.getFcsjT(); //误点,快1慢2
  3464 + if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){
  3465 + sjzdFirst++;
  3466 + break;
  3467 + }
  3468 + }
  3469 + }
  3470 +
  3471 + if(listjh0.size() > 1){
  3472 + ScheduleRealInfo jhmb = listjh0.get(listjh0.size() - 1); //计划末班
  3473 + for(int l = listjh0.size() - 1; l >= 0; l--){
  3474 + jhmb = listjh0.get(l); //计划首班
  3475 + String bcType = jhmb.getBcType();
  3476 + List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhmb.getSpId());
  3477 + if(oList.size() > 0 && oList.get(0) != null
  3478 + && oList.get(0).trim().length() > 0){
  3479 + bcType = oList.get(0).trim();
  3480 + }
  3481 + if(bcType.equals("region") || bcType.equals("venting")
  3482 + || bcType.equals("major") || isInOut(bcType)){
  3483 + continue;
  3484 + }
  3485 + break;
  3486 + }
  3487 + if("1".equals(sfss) ? createDate.getTime() > jhmb.getFcsjT() : true){
  3488 + jhLast++;
  3489 + for(int i = listsj0.size() - 1; i >= 0; i--){
  3490 + ScheduleRealInfo sjmb = listsj0.get(i); //实际末班
  3491 + String bcType = sjmb.getBcType();
  3492 + if(bcType.equals("region") || bcType.equals("venting")
  3493 + || bcType.equals("major") || isInOut(bcType)){
  3494 + continue;
  3495 + }
  3496 + long wd = sjmb.getFcsjActualTime() - jhmb.getFcsjT(); //误点,快1慢2
  3497 + if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){
  3498 + sjzdLast++;
  3499 + break;
  3500 + }
  3501 + }
  3502 + }
  3503 + }
  3504 + }
  3505 +
  3506 + //下行
  3507 + if(listjh1.size() > 0){
  3508 + ScheduleRealInfo jhsb = listjh1.get(0); //计划首班
  3509 + for(int f = 0; f < listjh1.size(); f++){
  3510 + jhsb = listjh1.get(f); //计划首班
  3511 + String bcType = jhsb.getBcType();
  3512 + List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhsb.getSpId());
  3513 + if(oList.size() > 0 && oList.get(0) != null
  3514 + && oList.get(0).trim().length() > 0){
  3515 + bcType = oList.get(0).trim();
  3516 + }
  3517 + if(bcType.equals("region") || bcType.equals("venting")
  3518 + || bcType.equals("major") || isInOut(bcType)){
  3519 + continue;
  3520 + }
  3521 + break;
  3522 + }
  3523 + if("1".equals(sfss) ? createDate.getTime() > jhsb.getFcsjT() : true){
  3524 + jhFirst++;
  3525 + for(int i = 0; i < listsj1.size(); i++){
  3526 + ScheduleRealInfo sjsb = listsj1.get(i); //实际首班
  3527 + String bcType = sjsb.getBcType();
  3528 + if(bcType.equals("region") || bcType.equals("venting")
  3529 + || bcType.equals("major") || isInOut(bcType)){
  3530 + continue;
  3531 + }
  3532 + long wd = sjsb.getFcsjActualTime() - jhsb.getFcsjT(); //误点,快1慢2
  3533 + if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){
  3534 + sjzdFirst++;
  3535 + break;
  3536 + }
  3537 + }
  3538 + }
  3539 +
  3540 + if(listjh1.size() > 1){
  3541 + ScheduleRealInfo jhmb = listjh1.get(listjh1.size() - 1); //计划末班
  3542 + for(int l = listjh1.size() - 1; l >= 0; l--){
  3543 + jhmb = listjh1.get(l); //计划首班
  3544 + String bcType = jhmb.getBcType();
  3545 + List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhmb.getSpId());
  3546 + if(oList.size() > 0 && oList.get(0) != null
  3547 + && oList.get(0).trim().length() > 0){
  3548 + bcType = oList.get(0).trim();
  3549 + }
  3550 + if(bcType.equals("region") || bcType.equals("venting")
  3551 + || bcType.equals("major") || isInOut(bcType)){
  3552 + continue;
  3553 + }
  3554 + break;
  3555 + }
  3556 + if("1".equals(sfss) ? createDate.getTime() > jhmb.getFcsjT() : true){
  3557 + jhLast++;
  3558 + for(int i = listsj1.size() - 1; i >= 0; i--){
  3559 + ScheduleRealInfo sjmb = listsj1.get(i); //实际末班
  3560 + String bcType = sjmb.getBcType();
  3561 + if(bcType.equals("region") || bcType.equals("venting")
  3562 + || bcType.equals("major") || isInOut(bcType)){
  3563 + continue;
  3564 + }
  3565 + long wd = sjmb.getFcsjActualTime() - jhmb.getFcsjT(); //误点,快1慢2
  3566 + if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){
  3567 + sjzdLast++;
  3568 + break;
  3569 + }
  3570 + }
  3571 + }
  3572 + }
  3573 + }
  3574 +
  3575 + Map<String, Object> map = new HashMap<String, Object>();
  3576 + map.put("lineCode", lineCode);
  3577 + Map<String, Object> xx = lineXX.get(lineCode);
  3578 + map.put("lineName", xx!=null&&xx.get("lineName")!=null?xx.get("lineName"):"");
  3579 + map.put("gsBm", xx!=null&&xx.get("gsBm")!=null?xx.get("gsBm"):"");
  3580 + map.put("gsName", xx!=null&&xx.get("gsName")!=null?xx.get("gsName"):"");
  3581 + map.put("fgsBm", xx!=null&&xx.get("fgsBm")!=null?xx.get("fgsBm"):"");
  3582 + map.put("fgsName", xx!=null&&xx.get("fgsName")!=null?xx.get("fgsName"):"");
  3583 + map.put("planFirst", jhFirst);
  3584 + map.put("planLast", jhLast);
  3585 + map.put("realFirst", sjzdFirst);
  3586 + map.put("realLast", sjzdLast);
  3587 + int jhbc = jhFirst + jhLast;
  3588 + int sjzdbc = sjzdFirst + sjzdLast;
  3589 + if(jhbc > 0){
  3590 + double zdl = (sjzdbc * 1.0) / (jhbc * 1.0) * 100;
  3591 + map.put("zdl", df.format(zdl));
  3592 + } else {
  3593 + map.put("zdl", "0");
  3594 + }
  3595 + if(jhFirst > 0){
  3596 + double zdlFirst = (sjzdFirst * 1.0) / (jhFirst * 1.0) * 100;
  3597 + map.put("zdlFirst", df.format(zdlFirst));
  3598 + } else {
  3599 + map.put("zdlFirst", "0");
  3600 + }
  3601 + if(jhLast > 0){
  3602 + double zdlLast = (sjzdLast * 1.0) / (jhLast * 1.0) * 100;
  3603 + map.put("zdlLast", df.format(zdlLast));
  3604 + } else {
  3605 + map.put("zdlLast", "0");
  3606 + }
  3607 +
  3608 + resList.add(map);
  3609 +
  3610 + }
  3611 +
  3612 + return resList;
  3613 + }
  3614 +
  3615 + /** 按日期查询出车的早未到情况 */
  3616 + @GET
  3617 + @Path("/selectData/getNotYet/{date}")
  3618 + public Map<String, Object> getNotYet(@PathParam("date") String date){
  3619 + Map<String, Object> resMap = new HashMap<String, Object>();
  3620 +
  3621 + String yyxlSql="SELECT line_code from bsth_c_line "
  3622 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  3623 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  3624 + new RowMapper<Map<String, Object>>(){
  3625 + @Override
  3626 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3627 + Map<String, Object> m=new HashMap<String,Object>();
  3628 + m.put("lineCode", rs.getString("line_code"));
  3629 + return m;
  3630 + }
  3631 + });
  3632 + Set<String> yyLine = new HashSet<String>();
  3633 + for(Map<String, Object> t : yyxlList){
  3634 + if(t.get("lineCode") != null){
  3635 + yyLine.add(t.get("lineCode").toString());
  3636 + }
  3637 + }
  3638 +
  3639 + String sqlMinYysj="select line, start_opt from bsth_c_line_config where "
  3640 + + " id in (select max(id) from bsth_c_line_config group by line)";
  3641 + List<Map<String, Object>> minfcsjList = jdbcTemplate.query(sqlMinYysj,
  3642 + new RowMapper<Map<String, Object>>(){
  3643 + @Override
  3644 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3645 + Map<String, Object> map = new HashMap<String, Object>();
  3646 + map.put("line", rs.getString("line")!=null?rs.getString("line"):"");
  3647 + map.put("minfcsj", rs.getString("start_opt")!=null?rs.getString("start_opt"):"02:00");
  3648 + return map;
  3649 + }
  3650 + });
  3651 +
  3652 + Map<String, Object> minfcsjMap = new HashMap<String, Object>();
  3653 + for(Map<String, Object> map : minfcsjList){
  3654 + minfcsjMap.put(map.get("line").toString(), map.get("minfcsj").toString());
  3655 + }
  3656 +
  3657 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
  3658 + String format = sdf.format(new Date());
  3659 +
  3660 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  3661 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  3662 + Map<String, ScheduleRealInfo> scheduleMap = new HashMap<String, ScheduleRealInfo>();
  3663 + for(ScheduleRealInfo s : findAll){
  3664 + if(!("77".equals(s.getGsBm())) && s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  3665 + Set<ChildTaskPlan> cts = s.getcTasks();
  3666 + if (cts != null && cts.size() > 0) {
  3667 + list_s.add(s);
  3668 + } else if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  3669 + list_s.add(s);
  3670 + } else if(s.getStatus() != 0){
  3671 + list_s.add(s);
  3672 + }
  3673 + }
  3674 + }
  3675 +
  3676 + for(ScheduleRealInfo s : list_s){
  3677 + if(!isInOut(s) && !s.isCcService()){
  3678 + String[] split = s.getFcsj().split(":");
  3679 + Long time = Long.valueOf(split[0]) * 60 + Long.valueOf(split[1]);
  3680 + String minfcsj = minfcsjMap.get(s.getXlBm())!=null?minfcsjMap.get(s.getXlBm()).toString():"02:00";
  3681 + String[] split_min = minfcsj.trim().split(":");
  3682 + Long min = Long.valueOf(split_min[0]) * 60 + Long.valueOf(split_min[1]);
  3683 + if(time < min){
  3684 + time += 1440;
  3685 + }
  3686 + s.setFcsjT(time);
  3687 + String cl = s.getClZbh();
  3688 + if(scheduleMap.containsKey(cl)){
  3689 + ScheduleRealInfo s2 = scheduleMap.get(cl);
  3690 + if(time < s2.getFcsjT()){
  3691 + scheduleMap.put(cl, s);
  3692 + }
  3693 + } else {
  3694 + scheduleMap.put(cl, s);
  3695 + }
  3696 + }
  3697 + }
  3698 +
  3699 + List<ScheduleRealInfo> notYetList = new ArrayList<ScheduleRealInfo>();
  3700 +
  3701 + long sum = scheduleMap.keySet().size(), zwd = 0;//早未到数
  3702 + long yg_z = 0, sn_z = 0, jg_z = 0, nh_z = 0;
  3703 + long yg_zwd = 0, sn_zwd = 0, jg_zwd = 0, nh_zwd = 0;
  3704 + for(String key : scheduleMap.keySet()){
  3705 + ScheduleRealInfo s = scheduleMap.get(key);
  3706 + if("05".equals(s.getGsBm())){
  3707 + yg_z += 1;
  3708 + } else if("55".equals(s.getGsBm())){
  3709 + sn_z += 1;
  3710 + } else if("22".equals(s.getGsBm())){
  3711 + jg_z += 1;
  3712 + } else if("26".equals(s.getGsBm())){
  3713 + nh_z += 1;
  3714 + }
  3715 + if("缺人".equals(s.getAdjustExps())){
  3716 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  3717 + list.add(s);
  3718 + BigDecimal sjgl = new BigDecimal(culateSjgl(list));
  3719 + BigDecimal ljgl = new BigDecimal(culateLjgl(list));
  3720 + BigDecimal zero = new BigDecimal(0.0);
  3721 + if(sjgl.compareTo(zero) == 0 && ljgl.compareTo(zero) == 0){
  3722 + zwd += 1;
  3723 + if("05".equals(s.getGsBm())){
  3724 + yg_zwd += 1;
  3725 + } else if("55".equals(s.getGsBm())){
  3726 + sn_zwd += 1;
  3727 + } else if("22".equals(s.getGsBm())){
  3728 + jg_zwd += 1;
  3729 + } else if("26".equals(s.getGsBm())){
  3730 + nh_zwd += 1;
  3731 + }
  3732 + notYetList.add(s);
  3733 + }
  3734 + }
  3735 + }
  3736 +
  3737 + resMap.put("sum", sum);
  3738 + resMap.put("notYet", zwd);
  3739 + resMap.put("sum_05", yg_z);
  3740 + resMap.put("notYet_05", yg_zwd);
  3741 + resMap.put("sum_55", sn_z);
  3742 + resMap.put("notYet_55", sn_zwd);
  3743 + resMap.put("sum_22", jg_z);
  3744 + resMap.put("notYet_22", jg_zwd);
  3745 + resMap.put("sum_26", nh_z);
  3746 + resMap.put("notYet_26", nh_zwd);
  3747 + resMap.put("notYetList", notYetList);
  3748 + return resMap;
  3749 + }
  3750 +
  3751 +// public static void main(String[] args){
  3752 +//
  3753 +// }
  3754 +
  3755 + public List<Map<String, Object>> createMap(String type, String[] dates){
  3756 + List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
  3757 +
  3758 + for(int i = 0; i < dates.length; i++){
  3759 + Map<String, Object> tempMap = new HashMap<String, Object>();
  3760 + tempMap.put("type", type);
  3761 + String[] split = dates[i].split("-");
  3762 + tempMap.put("date", split[1] + "/" + split[2]);
  3763 + tempMap.put("jh", "0");
  3764 + tempMap.put("sj", "0");
  3765 + mapList.add(tempMap);
  3766 + }
  3767 +
  3768 + return mapList;
  3769 + }
  3770 +
  3771 + public void mapPut(Map<String, Object> m, String key, Object value){
  3772 + if(m.get(key) != null){
  3773 + m.put(key, new BigDecimal(m.get(key).toString()).add(new BigDecimal(value.toString())));
  3774 + } else {
  3775 + m.put(key, value);
  3776 + }
  3777 + }
  3778 +
  3779 + /**计划营运公里*/
  3780 + public double culateJhgl(List<ScheduleRealInfo> lists) {
  3781 + // TODO Auto-generated method stub
  3782 + double jhgl=0;
  3783 + for (int i = 0; i < lists.size(); i++) {
  3784 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  3785 + if (!isInOut(scheduleRealInfo)) {
  3786 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
  3787 + jhgl=Arith.add(jhgl,scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig());
  3788 + }
  3789 + }
  3790 + }
  3791 + return jhgl;
  3792 + }
  3793 +
  3794 + /**实际营运公里(不包含临加)*/
  3795 + public double culateSjgl(List<ScheduleRealInfo> lists) {
  3796 + // TODO Auto-generated method stub
  3797 + double sjgl=0;
  3798 + for (int i = 0; i < lists.size(); i++) {
  3799 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  3800 + if (!isInOut(scheduleRealInfo)) {
  3801 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  3802 + if(!scheduleRealInfo.isSflj()){
  3803 + if(childTaskPlans.isEmpty()){
  3804 + if(!(scheduleRealInfo.getStatus() == -1)){
  3805 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  3806 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  3807 + if(jhlc-jhlcOrig>0){
  3808 + sjgl=Arith.add(sjgl,jhlcOrig);
  3809 + }else{
  3810 + sjgl=Arith.add(sjgl,jhlc);
  3811 + }
  3812 + }
  3813 + }else{
  3814 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  3815 + while (it.hasNext()) {
  3816 + ChildTaskPlan childTaskPlan = it.next();
  3817 + if(childTaskPlan.getMileageType().equals("service")
  3818 + &&"正常".equals(childTaskPlan.getType1())
  3819 + && childTaskPlan.getCcId()==null){
  3820 + if (!childTaskPlan.isDestroy()) {
  3821 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  3822 + sjgl=Arith.add(sjgl,jhgl);
  3823 + }
  3824 + }
  3825 + }
  3826 + }
  3827 + }
  3828 + }
  3829 + }
  3830 + return sjgl;
  3831 + }
  3832 +
  3833 + /**临加公里*/
  3834 + public double culateLjgl(List<ScheduleRealInfo> lists) {
  3835 + // TODO Auto-generated method stub
  3836 + double ljgl=0;
  3837 + for (int i = 0; i < lists.size(); i++) {
  3838 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  3839 + if (!isInOut(scheduleRealInfo)) {
  3840 + if(!(scheduleRealInfo.getStatus() == -1)){
  3841 + if(scheduleRealInfo.isSflj()){
  3842 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  3843 + if(childTaskPlans.isEmpty()){
  3844 + ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
  3845 + }else{
  3846 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  3847 + while (it.hasNext()) {
  3848 + ChildTaskPlan childTaskPlan = it.next();
  3849 + if(childTaskPlan.getMileageType().equals("service")
  3850 + && childTaskPlan.getCcId()==null){
  3851 + if (!childTaskPlan.isDestroy()) {
  3852 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  3853 + ljgl=Arith.add(ljgl,jhgl);
  3854 + }
  3855 + }
  3856 + }
  3857 + }
  3858 + }else{
  3859 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  3860 + if(childTaskPlans.isEmpty()){
  3861 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  3862 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  3863 + double zjlc=Arith.sub(jhlc, jhlcOrig);
  3864 + if(zjlc>0){
  3865 + ljgl=Arith.add(zjlc, ljgl);
  3866 + }
  3867 + }else{
  3868 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  3869 + while (it.hasNext()) {
  3870 + ChildTaskPlan childTaskPlan = it.next();
  3871 + if("service".equals(childTaskPlan.getMileageType())
  3872 + && "临加".equals(childTaskPlan.getType1())
  3873 + && childTaskPlan.getCcId()==null){
  3874 + if (!childTaskPlan.isDestroy()) {
  3875 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  3876 + ljgl=Arith.add(ljgl,jhgl);
  3877 + }
  3878 + }
  3879 + }
  3880 + }
  3881 + }
  3882 + }
  3883 + }
  3884 + }
  3885 + return ljgl;
  3886 + }
  3887 +
  3888 + /**烂班(少驶)公里*/
  3889 + public double culateCJLC(List<ScheduleRealInfo> list, String item) {
  3890 + // TODO Auto-generated method stub
  3891 + double sum = 0;
  3892 + Set<ChildTaskPlan> cts;
  3893 + for(ScheduleRealInfo sch : list){
  3894 + if (sch.isSflj())
  3895 + continue;
  3896 + cts = sch.getcTasks();
  3897 + if(isInOut(sch))
  3898 + continue;
  3899 + //有子任务
  3900 + if (cts != null && cts.size() > 0) {
  3901 + for(ChildTaskPlan c : cts){
  3902 + if(c.getCcId()==null){
  3903 + if(c.getMileageType().equals("service")){
  3904 + if(item.equals("其他")){
  3905 + if(c.isDestroy() &&
  3906 + ((c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item)||
  3907 + (c.getDestroyReason()==null?"": c.getDestroyReason()).equals("")))
  3908 + sum = Arith.add(sum, c.getMileage());
  3909 + }else{
  3910 + if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))
  3911 + sum = Arith.add(sum, c.getMileage());
  3912 + }
  3913 + }
  3914 + }
  3915 + }
  3916 + }
  3917 +
  3918 + //主任务烂班
  3919 + else if(sch.getStatus() == -1 && !sch.isCcService()){
  3920 + if(sch.getAdjustExps().equals(item) ||
  3921 + (StringUtils.isEmpty(sch.getAdjustExps()) && item.equals("其他"))){
  3922 + sum = Arith.add(sum, sch.getJhlcOrig());
  3923 + }
  3924 + }
  3925 + else if(item.equals("其他")){
  3926 + double diff = Arith.sub(sch.getJhlcOrig(), sch.getJhlc());
  3927 + if(diff > 0){
  3928 + sum = Arith.add(sum, diff);
  3929 + }
  3930 + }
  3931 + }
  3932 + return sum;
  3933 + }
  3934 +
  3935 + /**计划空驶公里*/
  3936 + public double culateJhJccgl(List<ScheduleRealInfo> lists) {
  3937 + // TODO Auto-generated method stub
  3938 + double jcclc =0;
  3939 + for (int i = 0; i < lists.size(); i++) {
  3940 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  3941 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
  3942 + if (isInOut(scheduleRealInfo)) {
  3943 + jcclc =Arith.add(jcclc, scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig());
  3944 + }
  3945 + }
  3946 + }
  3947 + return jcclc;
  3948 + }
  3949 +
  3950 + /**实际进出场空驶*/
  3951 + public double culateJccgl(List<ScheduleRealInfo> lists) {
  3952 + // TODO Auto-generated method stub
  3953 + double jcclc =0;
  3954 + for (int i = 0; i < lists.size(); i++) {
  3955 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  3956 + if (isInOut(scheduleRealInfo)) {
  3957 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  3958 + if(childTaskPlans.isEmpty()){
  3959 + if(!(scheduleRealInfo.getStatus() == -1)){
  3960 + jcclc =Arith.add(jcclc, scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
  3961 + }
  3962 + }else{
  3963 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  3964 + while (it.hasNext()) {
  3965 + ChildTaskPlan childTaskPlan = it.next();
  3966 + if(childTaskPlan.getMileageType().equals("empty")
  3967 + && childTaskPlan.getCcId()==null){
  3968 + if (!childTaskPlan.isDestroy()) {
  3969 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  3970 + jcclc=Arith.add(jcclc,jhgl);
  3971 + }
  3972 + }
  3973 + }
  3974 + }
  3975 + }
  3976 + }
  3977 + return jcclc;
  3978 + }
  3979 +
  3980 + /**实际非进出场空驶公里*/
  3981 + public double culateKsgl(List<ScheduleRealInfo> lists) {
  3982 + // TODO Auto-generated method stub
  3983 + double ksgl =0;
  3984 + for (int i = 0; i < lists.size(); i++) {
  3985 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  3986 + if (!isInOut(scheduleRealInfo)) {
  3987 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  3988 + if(!childTaskPlans.isEmpty()){
  3989 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  3990 + while (it.hasNext()) {
  3991 + ChildTaskPlan childTaskPlan = it.next();
  3992 + if(childTaskPlan.getMileageType().equals("empty") && childTaskPlan.getCcId()==null){
  3993 + if (!childTaskPlan.isDestroy()) {
  3994 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  3995 + ksgl=Arith.add(ksgl,jhgl);
  3996 + }
  3997 + }
  3998 + }
  3999 + }
  4000 + }
  4001 + }
  4002 + return ksgl;
  4003 + }
  4004 +
  4005 + class ComparableJhfc implements Comparator<ScheduleRealInfo>{
  4006 +
  4007 + @Override
  4008 + public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
  4009 + // TODO Auto-generated method stub
  4010 + return o1.getFcsjT().compareTo(o2.getFcsjT());
  4011 + }
  4012 + }
  4013 + class ComparableAcual implements Comparator<ScheduleRealInfo>{
  4014 +
  4015 + @Override
  4016 + public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
  4017 + // TODO Auto-generated method stub
  4018 + return o1.getFcsjActualTime().compareTo(o2.getFcsjActualTime());
  4019 + }
  4020 + }
  4021 +
  4022 + public static String decimalToBinary(int n) {
  4023 + String str = "";
  4024 + if(n == 0){
  4025 + return str = "0";
  4026 + }
  4027 + while (n != 0) {
  4028 + str = n % 2 + str;
  4029 + n = n / 2;
  4030 + }
  4031 + return str;
  4032 + }
  4033 +
  4034 +}
src/main/java/com/bsth/server_rs/dispatch/DispatchService.java
1 package com.bsth.server_rs.dispatch; 1 package com.bsth.server_rs.dispatch;
2 2
3 import com.fasterxml.jackson.databind.ObjectMapper; 3 import com.fasterxml.jackson.databind.ObjectMapper;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
4 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.beans.factory.annotation.Autowired;
5 -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;  
6 import org.springframework.jdbc.core.BeanPropertyRowMapper; 7 import org.springframework.jdbc.core.BeanPropertyRowMapper;
7 import org.springframework.jdbc.core.JdbcTemplate; 8 import org.springframework.jdbc.core.JdbcTemplate;
8 import org.springframework.stereotype.Component; 9 import org.springframework.stereotype.Component;
9 -import org.springframework.web.bind.annotation.PathVariable;  
10 10
11 import javax.ws.rs.GET; 11 import javax.ws.rs.GET;
12 import javax.ws.rs.Path; 12 import javax.ws.rs.Path;
  13 +import javax.ws.rs.PathParam;
13 import javax.ws.rs.Produces; 14 import javax.ws.rs.Produces;
14 import javax.ws.rs.core.MediaType; 15 import javax.ws.rs.core.MediaType;
15 import java.io.IOException; 16 import java.io.IOException;
@@ -24,6 +25,8 @@ import java.util.Map; @@ -24,6 +25,8 @@ import java.util.Map;
24 @Produces({MediaType.APPLICATION_JSON}) 25 @Produces({MediaType.APPLICATION_JSON})
25 public class DispatchService { 26 public class DispatchService {
26 27
  28 + private final static Logger log = LoggerFactory.getLogger(DispatchService.class);
  29 +
27 @Autowired 30 @Autowired
28 private JdbcTemplate jdbcTemplate; 31 private JdbcTemplate jdbcTemplate;
29 32
@@ -31,8 +34,9 @@ public class DispatchService { @@ -31,8 +34,9 @@ public class DispatchService {
31 34
32 @GET 35 @GET
33 @Path("/{rq}") 36 @Path("/{rq}")
34 - public List<SchEditInfo> findByRq(@PathVariable String rq) throws IOException { 37 + public List<SchEditInfo> findByRq(@PathParam("rq") String rq) throws IOException {
35 List<SchEditInfo> editInfos = jdbcTemplate.query("SELECT a.*,b.xl_name line_name,b.gs_name gsmc,b.fgs_name fgsmc,b.schedule_date_str,b.fcsj FROM logger_sch_modify a JOIN bsth_c_s_sp_info_real b ON a.sch_id = b.id WHERE a.rq = ? AND a.type = 'TZRC'", new Object[]{ rq }, BeanPropertyRowMapper.newInstance(SchEditInfo.class)); 38 List<SchEditInfo> editInfos = jdbcTemplate.query("SELECT a.*,b.xl_name line_name,b.gs_name gsmc,b.fgs_name fgsmc,b.schedule_date_str,b.fcsj FROM logger_sch_modify a JOIN bsth_c_s_sp_info_real b ON a.sch_id = b.id WHERE a.rq = ? AND a.type = 'TZRC'", new Object[]{ rq }, BeanPropertyRowMapper.newInstance(SchEditInfo.class));
  39 + log.error(String.format("%s,%d", rq, editInfos.size()));
36 for (SchEditInfo editInfo : editInfos) { 40 for (SchEditInfo editInfo : editInfos) {
37 editInfo.setDetail(mapper.readValue(editInfo.getJsonArray(), Map.class)); 41 editInfo.setDetail(mapper.readValue(editInfo.getJsonArray(), Map.class));
38 } 42 }
src/main/resources/logback.xml
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <configuration> 3 <configuration>
4 4
5 <!-- <property resource="application.properties" /> --> 5 <!-- <property resource="application.properties" /> -->
6 - <property name="LOG_BASE" value="E:/control_interface_logs" /> 6 + <property name="LOG_BASE" value="D:/control_interface_logs" />
7 <!-- 控制台输出 --> 7 <!-- 控制台输出 -->
8 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 8 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
9 9