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 1 package com.bsth.server_rs.dispatch;
2 2  
3 3 import com.fasterxml.jackson.databind.ObjectMapper;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
4 6 import org.springframework.beans.factory.annotation.Autowired;
5   -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
6 7 import org.springframework.jdbc.core.BeanPropertyRowMapper;
7 8 import org.springframework.jdbc.core.JdbcTemplate;
8 9 import org.springframework.stereotype.Component;
9   -import org.springframework.web.bind.annotation.PathVariable;
10 10  
11 11 import javax.ws.rs.GET;
12 12 import javax.ws.rs.Path;
  13 +import javax.ws.rs.PathParam;
13 14 import javax.ws.rs.Produces;
14 15 import javax.ws.rs.core.MediaType;
15 16 import java.io.IOException;
... ... @@ -24,6 +25,8 @@ import java.util.Map;
24 25 @Produces({MediaType.APPLICATION_JSON})
25 26 public class DispatchService {
26 27  
  28 + private final static Logger log = LoggerFactory.getLogger(DispatchService.class);
  29 +
27 30 @Autowired
28 31 private JdbcTemplate jdbcTemplate;
29 32  
... ... @@ -31,8 +34,9 @@ public class DispatchService {
31 34  
32 35 @GET
33 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 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 40 for (SchEditInfo editInfo : editInfos) {
37 41 editInfo.setDetail(mapper.readValue(editInfo.getJsonArray(), Map.class));
38 42 }
... ...
src/main/resources/logback.xml
... ... @@ -3,7 +3,7 @@
3 3 <configuration>
4 4  
5 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 8 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
9 9  
... ...