Commit 5a77e07b53f6fa910b6afb6042bcc56668056497

Authored by 娄高锋
1 parent 5734f1c0

大屏接口,按闵行的调整。

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   - 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   -}
  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("77".equals(gs)){
  95 + name="闵行客运";
  96 + }else if("300".equals(gs)){
  97 + name="金球公交";
  98 + }else if("302".equals(gs)){
  99 + name="露虹公交";
  100 + }else{
  101 + name="";
  102 + }
  103 + return name;
  104 + }
  105 +
  106 + private static String getState(String carState){
  107 + if(carState.equals("1")){
  108 + return "在册未在用";
  109 + }else if(carState.equals("2")){
  110 + return "在册在用";
  111 + }else if(carState.equals("3")){
  112 + return "报废审核中";
  113 + }else if(carState.equals("4")){
  114 + return "报废待更新";
  115 + }else if(carState.equals("5")){
  116 + return "报废已更新";
  117 + }else{
  118 + return "";
  119 + }
  120 + }
  121 +
  122 + public static boolean isInOut(ScheduleRealInfo s){
  123 + boolean fage=false;
  124 + if(s.getBcType().equals("in")){
  125 + fage=true;
  126 + }
  127 + if(s.getBcType().equals("out")){
  128 + fage=true;
  129 + }
  130 + if(s.getBcType().equals("ldks")){
  131 + fage=true;
  132 + }
  133 + return fage;
  134 + }
  135 +
  136 + public static boolean isInOut(String bcType){
  137 + boolean fage=false;
  138 + if(bcType.equals("in")){
  139 + fage=true;
  140 + }
  141 + if(bcType.equals("out")){
  142 + fage=true;
  143 + }
  144 + if(bcType.equals("ldks")){
  145 + fage=true;
  146 + }
  147 + return fage;
  148 + }
  149 +
  150 + public Map<String, Long> getEndtime(String date){
  151 + Map<String, Long> map=new HashMap<String,Long>();
  152 + String sql="select xl,endtime from bsth_c_calc_count "
  153 + + " where date='"+date+"' ";
  154 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  155 + new RowMapper<Map<String, Object>>(){
  156 + @Override
  157 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  158 + Map<String, Object> m=new HashMap<String, Object>();
  159 + m.put("line", rs.getString("xl"));
  160 + m.put("endtime", rs.getString("endtime"));
  161 + return m;
  162 + }
  163 + });
  164 + for (int i = 0; i < list.size(); i++) {
  165 + map.put(list.get(i).get("line").toString(),
  166 + Long.parseLong(list.get(i).get("endtime").toString()));
  167 + }
  168 + return map;
  169 + }
  170 +
  171 + /**给大屏的线路数、班次、里程汇总接口
  172 + *
  173 + */
  174 + @GET
  175 + @Path("/selectData/getBigScreen")
  176 + public JSONObject getBigScreen(){
  177 + Map<String, Object> resMap = new HashMap<String, Object>();
  178 +
  179 + int day = 8;//天数
  180 +
  181 + Date dd = new Date();
  182 + String date = sd.format(dd); //yyyy-MM-dd 当天
  183 + Date dd2 = new Date();
  184 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  185 + String date2 = sd.format(dd2); //yyyy-MM-dd 7天前(加上当天就是取8天数据)
  186 +
  187 + String[] dates = new String[day];
  188 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  189 +
  190 + for(int i = 0; i < day; i++){
  191 + Date tempDate = new Date();
  192 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  193 + String format = sd.format(tempDate);
  194 + dates[i] = format;
  195 + datesMap.put(format, i);
  196 + }
  197 +
  198 + String gpLineSql = "select * from bsth_c_line_plate";
  199 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  200 + new RowMapper<Map<String, Object>>(){
  201 + @Override
  202 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  203 + Map<String, Object> m=new HashMap<String,Object>();
  204 + m.put("lineName", rs.getString("line_name"));
  205 + m.put("lineCode", rs.getString("line_code"));
  206 + return m;
  207 + }
  208 + });
  209 +
  210 + Set<String> gpSet = new HashSet<String>();
  211 + for(Map<String, Object> t : gpLineList){
  212 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  213 + gpSet.add(t.get("lineCode").toString().trim());
  214 + }
  215 + }
  216 +
  217 + String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"
  218 + + " a.shanghai_linecode, a.nature from "
  219 + + " bsth_c_line a left join bsth_c_line_config b "
  220 + + " on a.id=b.line where "
  221 + + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "
  222 + + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  223 + List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,
  224 + new RowMapper<Map<String, Object>>(){
  225 + @Override
  226 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  227 + Map<String, Object> m=new HashMap<String,Object>();
  228 + m.put("state", rs.getString("start_opt"));
  229 + m.put("company", rs.getString("company"));
  230 + m.put("companyName", getGs(rs.getString("company")));
  231 + m.put("lineCode",rs.getString("line_code"));
  232 + m.put("name", rs.getString("name"));
  233 + m.put("level", rs.getString("level"));
  234 + m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));
  235 + m.put("nature", getNature(rs.getString("nature")));
  236 + return m;
  237 + }
  238 + });
  239 +
  240 + int level1 = 0, level2 = 0;
  241 + for(Map<String, Object> t : lineList){
  242 + if(t.get("level") != null){
  243 + if("1".equals(t.get("level").toString())){
  244 + ++level1;
  245 + } else if("2".equals(t.get("level").toString())){
  246 + ++level2;
  247 + }
  248 + }
  249 + }
  250 +
  251 +
  252 + String yyxlSql="SELECT line_code from bsth_c_line "
  253 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  254 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  255 + new RowMapper<Map<String, Object>>(){
  256 + @Override
  257 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  258 + Map<String, Object> m=new HashMap<String,Object>();
  259 + m.put("lineCode", rs.getString("line_code"));
  260 + return m;
  261 + }
  262 + });
  263 + Set<String> yyLine = new HashSet<String>();
  264 + for(Map<String, Object> t : yyxlList){
  265 + if(t.get("lineCode") != null){
  266 + yyLine.add(t.get("lineCode").toString());
  267 + }
  268 + }
  269 +
  270 +
  271 + List<String> objList = new ArrayList<String>();
  272 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  273 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  274 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  275 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  276 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  277 + + " from bsth_c_calc_count where date >= ? and date <= ?";
  278 + objList.add(date2);
  279 + objList.add(date);
  280 +
  281 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  282 + objList.toArray(),
  283 + new RowMapper<Map<String, Object>>(){
  284 + @Override
  285 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  286 + Map<String, Object> m=new HashMap<String,Object>();
  287 + m.put("lineCode",rs.getString("xl"));
  288 + m.put("lineName", rs.getString("xl_name"));
  289 + m.put("date", rs.getString("date"));
  290 +
  291 + m.put("jhbc", rs.getString("jhbc"));
  292 + m.put("sjbc", rs.getString("sjbc"));
  293 + m.put("bczxl", rs.getString("bczxl"));
  294 + m.put("jhbcz", rs.getString("jhbcz"));
  295 +
  296 + m.put("jhcc", rs.getString("jhcc"));
  297 + m.put("sjcc", rs.getString("sjcc"));
  298 + m.put("ccl", rs.getString("ccl"));
  299 + m.put("jhccz", rs.getString("jhccz"));
  300 +
  301 + m.put("jhyylc", rs.getString("jhyylc"));
  302 + m.put("sjyylc", rs.getString("sjyylc"));
  303 + m.put("jhyylcz", rs.getString("jhyylcz"));
  304 + m.put("jhkslc", rs.getString("jhkslc"));
  305 + m.put("sjkslc", rs.getString("sjkslc"));
  306 + m.put("jhkslcz", rs.getString("jhkslcz"));
  307 +
  308 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  309 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  310 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  311 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  312 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  313 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  314 +
  315 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  316 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  317 + m.put("smbczdl", rs.getString("smbczdl"));
  318 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  319 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  320 + m.put("smbczdlz", rs.getString("smbczdlz"));
  321 +
  322 + m.put("jhszfcs", rs.getString("jhszfcs"));
  323 + m.put("sjszfczds", rs.getString("sjszfczds"));
  324 + m.put("szfczdl", rs.getString("szfczdl"));
  325 +
  326 + Date date = new Date();
  327 + date.setTime(rs.getTimestamp("create_date").getTime());
  328 + m.put("createDate", sdf.format(date));
  329 + return m;
  330 + }
  331 + });
  332 +
  333 + List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();
  334 + List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();
  335 + List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();
  336 + List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();
  337 +
  338 + List<Map<String, Object>> ccList = createMap("计划出车率", dates);
  339 + List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);
  340 + List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);
  341 + List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);
  342 + List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);
  343 + List<Map<String, Object>> qkList = createMap("签卡率", dates);
  344 +
  345 + long sjbcs_z = 0l;//实时总班次
  346 + BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程
  347 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  348 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;
  349 +
  350 + for(Map<String, Object> t : list){
  351 + if(yyLine.contains(t.get("lineCode").toString())){
  352 + String d = t.get("date").toString();
  353 + if(date.equals(d)){
  354 + sjbcs_z += Long.valueOf(t.get("sjbc").toString());
  355 + yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));
  356 +
  357 + jhcc += Long.valueOf(t.get("jhccz").toString());
  358 + sjcc += Long.valueOf(t.get("sjcc").toString());
  359 + jhbc += Long.valueOf(t.get("jhbc").toString());
  360 + sjbc += Long.valueOf(t.get("sjbc").toString());
  361 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  362 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  363 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  364 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  365 + if(gpSet.contains(t.get("lineCode").toString())){
  366 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  367 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  368 + }
  369 +
  370 + Map<String, Object> bc = new HashMap<String, Object>();
  371 + bc.put("type", "班次执行详情");
  372 + bc.put("lineName", t.get("lineName").toString());
  373 + bc.put("jh", t.get("jhbc").toString());
  374 + bc.put("sj", t.get("sjbc").toString());
  375 + bcDetail.add(bc);
  376 +
  377 + Map<String, Object> sm = new HashMap<String, Object>();
  378 + sm.put("type", "首站发车详情");
  379 + sm.put("lineName", t.get("lineName").toString());
  380 + sm.put("jh", t.get("jhsmbcs").toString());
  381 + sm.put("sj", t.get("sjsmbczds").toString());
  382 + smDetail.add(sm);
  383 +
  384 + Map<String, Object> qq = new HashMap<String, Object>();
  385 + qq.put("type", "起讫站发车准点详情");
  386 + qq.put("lineName", t.get("lineName").toString());
  387 + qq.put("jh", t.get("jhszfcs").toString());
  388 + qq.put("sj", t.get("sjszfczds").toString());
  389 + qqDetail.add(qq);
  390 +
  391 + if(gpSet.contains(t.get("lineCode").toString())){
  392 + Map<String, Object> gp = new HashMap<String, Object>();
  393 + gp.put("type", "挂牌线路发车准点详情");
  394 + gp.put("lineName", t.get("lineName").toString());
  395 + gp.put("jh", t.get("jhszfcs").toString());
  396 + gp.put("sj", t.get("sjszfczds").toString());
  397 + gpDetail.add(gp);
  398 + }
  399 + }
  400 +
  401 + Map<String, Object> ccMap = ccList.get(datesMap.get(d));
  402 + Map<String, Object> bcMap = bcList.get(datesMap.get(d));
  403 + Map<String, Object> smMap = smList.get(datesMap.get(d));
  404 + Map<String, Object> qqMap = qqList.get(datesMap.get(d));
  405 + Map<String, Object> gpMap = gpList.get(datesMap.get(d));
  406 +
  407 + ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));
  408 + ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));
  409 + bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));
  410 + bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));
  411 + smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));
  412 + smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));
  413 + qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  414 + qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  415 + if(gpSet.contains(t.get("lineCode").toString())){
  416 + gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  417 + gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  418 + }
  419 +
  420 + }
  421 + }
  422 +
  423 +
  424 + //计算签卡率
  425 + for(String d : dates){
  426 + if(d!=null && d.trim().length() > 0){
  427 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(d);
  428 + Map<String, Object> qkMap = qkList.get(datesMap.get(d));
  429 + long jh = 0, sj = 0;
  430 + for(ScheduleRealInfo s : findAll){
  431 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  432 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  433 + ++jh;
  434 + //String sty = decimalToBinary(s.getRfidState());
  435 + String sty = decimalToBinary(0);
  436 + Integer state = Integer.parseInt(sty);
  437 + if ((state & 4) == 4) {
  438 + ++sj;
  439 + }
  440 + }
  441 + }
  442 + }
  443 + qkMap.put("jh", jh);
  444 + qkMap.put("sj", sj);
  445 +
  446 + if(date.equals(d)){
  447 + bcs_qk = jh;
  448 + qks = sj;
  449 + }
  450 + }
  451 + }
  452 +
  453 +
  454 + List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();
  455 + zxlList.addAll(ccList);
  456 + zxlList.addAll(bcList);
  457 + zxlList.addAll(smList);
  458 + zxlList.addAll(qqList);
  459 + zxlList.addAll(gpList);
  460 + zxlList.addAll(qkList);
  461 +
  462 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  463 + detailsList.addAll(bcDetail);
  464 + detailsList.addAll(smDetail);
  465 + detailsList.addAll(qqDetail);
  466 + detailsList.addAll(gpDetail);
  467 +
  468 + for(Map<String, Object> t : zxlList){
  469 + if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){
  470 + t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),
  471 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());
  472 + } else {
  473 + t.put("ratio", "0");
  474 + }
  475 + }
  476 +
  477 + List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();
  478 +
  479 + Date dd1 = new Date();
  480 + dd1.setTime(dd.getTime() - 1l*1000*60*60*24);
  481 + String date1 = sd.format(dd1); //前一天
  482 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);
  483 + List<ScheduleRealInfo> listSche = new ArrayList<ScheduleRealInfo>();
  484 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  485 + for(ScheduleRealInfo s : findAll){
  486 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  487 + listSche.add(s);
  488 + Set<ChildTaskPlan> cts = s.getcTasks();
  489 + if (cts != null && cts.size() > 0) {
  490 + list_s.add(s);
  491 + } else {
  492 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  493 + list_s.add(s);
  494 + }
  495 + }
  496 + }
  497 + }
  498 + double jhyygl = culateJhgl(listSche);//计划营运公里
  499 + double jhjccgl = culateJhJccgl(listSche);
  500 + double jhzgl = Arith.add(jhyygl, jhjccgl);
  501 + double sjgl = culateSjgl(list_s);//实际营运公里(不含临加)
  502 + double sjljgl = culateLjgl(listSche);//实际临加公里
  503 + double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里
  504 + double sjjccgl = culateJccgl(list_s);
  505 + double sjksgl = culateKsgl(list_s);
  506 + double zksgl = Arith.add(sjjccgl, sjksgl);
  507 + double sjzgl = Arith.add(sjyygl, zksgl);//实际总公里
  508 + double lz = culateCJLC(listSche, "路阻");
  509 + double dm = culateCJLC(listSche, "吊慢");
  510 + double gz = culateCJLC(listSche, "故障");
  511 + double jf = culateCJLC(listSche, "纠纷");
  512 + double zs = culateCJLC(listSche, "肇事");
  513 + double qr = culateCJLC(listSche, "缺人");
  514 + double qc = culateCJLC(listSche, "缺车");
  515 + double qrqc = Arith.add(qr, qc);//缺人缺车
  516 + double kx = culateCJLC(listSche, "客稀");
  517 + double qh = culateCJLC(listSche, "气候");
  518 + double yw = culateCJLC(listSche, "援外");
  519 + double lb_pc = culateCJLC(listSche, "配车");
  520 + double lb_by = culateCJLC(listSche, "保养");
  521 + double lb_cj = culateCJLC(listSche, "抽减");
  522 + double lb_qt = culateCJLC(listSche, "其他");
  523 + double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他
  524 +
  525 + Map<String, Object> jhzglMap = new HashMap<String, Object>();
  526 + jhzglMap.put("name", "计划总公里");
  527 + jhzglMap.put("value", jhzgl);
  528 + glList.add(jhzglMap);
  529 + Map<String, Object> sjzglMap = new HashMap<String, Object>();
  530 + sjzglMap.put("name", "实际总公里");
  531 + sjzglMap.put("value", sjzgl);
  532 + glList.add(sjzglMap);
  533 + Map<String, Object> lzMap = new HashMap<String, Object>();
  534 + lzMap.put("name", "路阻");
  535 + lzMap.put("value", lz);
  536 + glList.add(lzMap);
  537 + Map<String, Object> dmMap = new HashMap<String, Object>();
  538 + dmMap.put("name", "吊慢");
  539 + dmMap.put("value", dm);
  540 + glList.add(dmMap);
  541 + Map<String, Object> gzMap = new HashMap<String, Object>();
  542 + gzMap.put("name", "故障");
  543 + gzMap.put("value", gz);
  544 + glList.add(gzMap);
  545 + Map<String, Object> jfMap = new HashMap<String, Object>();
  546 + jfMap.put("name", "纠纷");
  547 + jfMap.put("value", jf);
  548 + glList.add(jfMap);
  549 + Map<String, Object> zsMap = new HashMap<String, Object>();
  550 + zsMap.put("name", "肇事");
  551 + zsMap.put("value", zs);
  552 + glList.add(zsMap);
  553 + Map<String, Object> qrqcMap = new HashMap<String, Object>();
  554 + qrqcMap.put("name", "缺人缺车");
  555 + qrqcMap.put("value", qrqc);
  556 + glList.add(qrqcMap);
  557 + Map<String, Object> kxMap = new HashMap<String, Object>();
  558 + kxMap.put("name", "客稀");
  559 + kxMap.put("value", kx);
  560 + glList.add(kxMap);
  561 + Map<String, Object> qhMap = new HashMap<String, Object>();
  562 + qhMap.put("name", "气候");
  563 + qhMap.put("value", qh);
  564 + glList.add(qhMap);
  565 + Map<String, Object> ywMap = new HashMap<String, Object>();
  566 + ywMap.put("name", "援外");
  567 + ywMap.put("value", yw);
  568 + glList.add(ywMap);
  569 + Map<String, Object> qtMap = new HashMap<String, Object>();
  570 + qtMap.put("name", "其他");
  571 + qtMap.put("value", qt);
  572 + glList.add(qtMap);
  573 +
  574 +
  575 + resMap.put("lineCount", lineList.size());
  576 + resMap.put("level1Count", level1);
  577 + resMap.put("level2Count", level2);
  578 + resMap.put("sjbcs", sjbcs_z);
  579 + resMap.put("sjlcs", yygl_z.doubleValue());
  580 +
  581 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  582 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  583 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  584 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  585 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  586 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  587 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  588 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  589 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  590 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  591 + resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),
  592 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  593 +
  594 + resMap.put("ratioList", zxlList);
  595 +
  596 + resMap.put("detailsList", detailsList);
  597 +
  598 + resMap.put("mileageList", glList);
  599 +
  600 + return JSON.parseObject(JSON.toJSONString(resMap));
  601 + }
  602 +
  603 + /**给大屏的线路数、班次、里程汇总接口
  604 + * 按直属公司查询
  605 + */
  606 + @GET
  607 + @Path("/selectData/getBigScreen/{gsdm}")
  608 + public JSONObject getBigScreen(@PathParam("gsdm") String gsdm){
  609 + Map<String, Object> resMap = new HashMap<String, Object>();
  610 +
  611 + int day = 8;//天数
  612 +
  613 + Date dd = new Date();
  614 + String date = sd.format(dd); //yyyy-MM-dd 当天
  615 + Date dd2 = new Date();
  616 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  617 + String date2 = sd.format(dd2); //yyyy-MM-dd 7天前(加上当天就是取8天数据)
  618 +
  619 + String[] dates = new String[day];
  620 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  621 +
  622 + for(int i = 0; i < day; i++){
  623 + Date tempDate = new Date();
  624 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  625 + String format = sd.format(tempDate);
  626 + dates[i] = format;
  627 + datesMap.put(format, i);
  628 + }
  629 +
  630 + String gpLineSql = "select * from bsth_c_line_plate";
  631 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  632 + new RowMapper<Map<String, Object>>(){
  633 + @Override
  634 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  635 + Map<String, Object> m=new HashMap<String,Object>();
  636 + m.put("lineName", rs.getString("line_name"));
  637 + m.put("lineCode", rs.getString("line_code"));
  638 + return m;
  639 + }
  640 + });
  641 +
  642 + Set<String> gpSet = new HashSet<String>();
  643 + for(Map<String, Object> t : gpLineList){
  644 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  645 + gpSet.add(t.get("lineCode").toString().trim());
  646 + }
  647 + }
  648 +
  649 + String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"
  650 + + " a.shanghai_linecode, a.nature from "
  651 + + " bsth_c_line a left join bsth_c_line_config b "
  652 + + " on a.id=b.line where "
  653 + + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "
  654 + + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  655 + List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,
  656 + new RowMapper<Map<String, Object>>(){
  657 + @Override
  658 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  659 + Map<String, Object> m=new HashMap<String,Object>();
  660 + m.put("state", rs.getString("start_opt"));
  661 + m.put("company", rs.getString("company"));
  662 + m.put("companyName", getGs(rs.getString("company")));
  663 + m.put("lineCode",rs.getString("line_code"));
  664 + m.put("name", rs.getString("name"));
  665 + m.put("level", rs.getString("level"));
  666 + m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));
  667 + m.put("nature", getNature(rs.getString("nature")));
  668 + return m;
  669 + }
  670 + });
  671 +
  672 + int level1 = 0, level2 = 0, lineCount = 0;
  673 + for(Map<String, Object> t : lineList){
  674 + if(t.containsKey("company") && t.get("company").toString().trim().equals(gsdm)){
  675 + ++lineCount;
  676 + if(t.get("level") != null){
  677 + if("1".equals(t.get("level").toString())){
  678 + ++level1;
  679 + } else if("2".equals(t.get("level").toString())){
  680 + ++level2;
  681 + }
  682 + }
  683 + }
  684 + }
  685 +
  686 +
  687 + String yyxlSql="SELECT line_code from bsth_c_line "
  688 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  689 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  690 + new RowMapper<Map<String, Object>>(){
  691 + @Override
  692 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  693 + Map<String, Object> m=new HashMap<String,Object>();
  694 + m.put("lineCode", rs.getString("line_code"));
  695 + return m;
  696 + }
  697 + });
  698 + Set<String> yyLine = new HashSet<String>();
  699 + for(Map<String, Object> t : yyxlList){
  700 + if(t.get("lineCode") != null){
  701 + yyLine.add(t.get("lineCode").toString());
  702 + }
  703 + }
  704 +
  705 +
  706 + List<String> objList = new ArrayList<String>();
  707 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  708 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  709 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  710 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  711 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  712 + + " from bsth_c_calc_count "
  713 + + " where date >= ? and date <= ? and gsdm = ?";
  714 + objList.add(date2);
  715 + objList.add(date);
  716 + objList.add(gsdm);
  717 +
  718 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  719 + objList.toArray(),
  720 + new RowMapper<Map<String, Object>>(){
  721 + @Override
  722 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  723 + Map<String, Object> m=new HashMap<String,Object>();
  724 + m.put("lineCode",rs.getString("xl"));
  725 + m.put("lineName", rs.getString("xl_name"));
  726 + m.put("date", rs.getString("date"));
  727 +
  728 + m.put("jhbc", rs.getString("jhbc"));
  729 + m.put("sjbc", rs.getString("sjbc"));
  730 + m.put("bczxl", rs.getString("bczxl"));
  731 + m.put("jhbcz", rs.getString("jhbcz"));
  732 +
  733 + m.put("jhcc", rs.getString("jhcc"));
  734 + m.put("sjcc", rs.getString("sjcc"));
  735 + m.put("ccl", rs.getString("ccl"));
  736 + m.put("jhccz", rs.getString("jhccz"));
  737 +
  738 + m.put("jhyylc", rs.getString("jhyylc"));
  739 + m.put("sjyylc", rs.getString("sjyylc"));
  740 + m.put("jhyylcz", rs.getString("jhyylcz"));
  741 + m.put("jhkslc", rs.getString("jhkslc"));
  742 + m.put("sjkslc", rs.getString("sjkslc"));
  743 + m.put("jhkslcz", rs.getString("jhkslcz"));
  744 +
  745 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  746 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  747 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  748 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  749 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  750 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  751 +
  752 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  753 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  754 + m.put("smbczdl", rs.getString("smbczdl"));
  755 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  756 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  757 + m.put("smbczdlz", rs.getString("smbczdlz"));
  758 +
  759 + m.put("jhszfcs", rs.getString("jhszfcs"));
  760 + m.put("sjszfczds", rs.getString("sjszfczds"));
  761 + m.put("szfczdl", rs.getString("szfczdl"));
  762 +
  763 + Date date = new Date();
  764 + date.setTime(rs.getTimestamp("create_date").getTime());
  765 + m.put("createDate", sdf.format(date));
  766 + return m;
  767 + }
  768 + });
  769 +
  770 + List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();
  771 + List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();
  772 + List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();
  773 + List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();
  774 +
  775 + List<Map<String, Object>> ccList = createMap("计划出车率", dates);
  776 + List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);
  777 + List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);
  778 + List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);
  779 + List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);
  780 + List<Map<String, Object>> qkList = createMap("签卡率", dates);
  781 +
  782 + long sjbcs_z = 0l;//实时总班次
  783 + BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程
  784 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  785 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;
  786 +
  787 + for(Map<String, Object> t : list){
  788 + if(yyLine.contains(t.get("lineCode").toString())){
  789 + String d = t.get("date").toString();
  790 + if(date.equals(d)){
  791 + sjbcs_z += Long.valueOf(t.get("sjbc").toString());
  792 + yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));
  793 +
  794 + jhcc += Long.valueOf(t.get("jhccz").toString());
  795 + sjcc += Long.valueOf(t.get("sjcc").toString());
  796 + jhbc += Long.valueOf(t.get("jhbc").toString());
  797 + sjbc += Long.valueOf(t.get("sjbc").toString());
  798 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  799 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  800 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  801 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  802 + if(gpSet.contains(t.get("lineCode").toString())){
  803 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  804 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  805 + }
  806 +
  807 + Map<String, Object> bc = new HashMap<String, Object>();
  808 + bc.put("type", "班次执行详情");
  809 + bc.put("lineName", t.get("lineName").toString());
  810 + bc.put("jh", t.get("jhbc").toString());
  811 + bc.put("sj", t.get("sjbc").toString());
  812 + bcDetail.add(bc);
  813 +
  814 + Map<String, Object> sm = new HashMap<String, Object>();
  815 + sm.put("type", "首站发车详情");
  816 + sm.put("lineName", t.get("lineName").toString());
  817 + sm.put("jh", t.get("jhsmbcs").toString());
  818 + sm.put("sj", t.get("sjsmbczds").toString());
  819 + smDetail.add(sm);
  820 +
  821 + Map<String, Object> qq = new HashMap<String, Object>();
  822 + qq.put("type", "起讫站发车准点详情");
  823 + qq.put("lineName", t.get("lineName").toString());
  824 + qq.put("jh", t.get("jhszfcs").toString());
  825 + qq.put("sj", t.get("sjszfczds").toString());
  826 + qqDetail.add(qq);
  827 +
  828 + if(gpSet.contains(t.get("lineCode").toString())){
  829 + Map<String, Object> gp = new HashMap<String, Object>();
  830 + gp.put("type", "挂牌线路发车准点详情");
  831 + gp.put("lineName", t.get("lineName").toString());
  832 + gp.put("jh", t.get("jhszfcs").toString());
  833 + gp.put("sj", t.get("sjszfczds").toString());
  834 + gpDetail.add(gp);
  835 + }
  836 + }
  837 +
  838 + Map<String, Object> ccMap = ccList.get(datesMap.get(d));
  839 + Map<String, Object> bcMap = bcList.get(datesMap.get(d));
  840 + Map<String, Object> smMap = smList.get(datesMap.get(d));
  841 + Map<String, Object> qqMap = qqList.get(datesMap.get(d));
  842 + Map<String, Object> gpMap = gpList.get(datesMap.get(d));
  843 +
  844 + ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));
  845 + ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));
  846 + bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));
  847 + bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));
  848 + smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));
  849 + smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));
  850 + qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  851 + qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  852 + if(gpSet.contains(t.get("lineCode").toString())){
  853 + gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  854 + gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  855 + }
  856 +
  857 + }
  858 + }
  859 +
  860 +
  861 + //计算签卡率
  862 + for(String d : dates){
  863 + if(d!=null && d.trim().length() > 0){
  864 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(d);
  865 + Map<String, Object> qkMap = qkList.get(datesMap.get(d));
  866 + long jh = 0, sj = 0;
  867 + for(ScheduleRealInfo s : findAll){
  868 + if(s.getGsBm() != null && s.getGsBm().trim().equals(gsdm)){
  869 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  870 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  871 + ++jh;
  872 + //String sty = decimalToBinary(s.getRfidState());
  873 + String sty = decimalToBinary(0);
  874 + Integer state = Integer.parseInt(sty);
  875 + if ((state & 4) == 4) {
  876 + ++sj;
  877 + }
  878 + }
  879 + }
  880 + }
  881 + }
  882 + qkMap.put("jh", jh);
  883 + qkMap.put("sj", sj);
  884 +
  885 + if(date.equals(d)){
  886 + bcs_qk = jh;
  887 + qks = sj;
  888 + }
  889 + }
  890 + }
  891 +
  892 +
  893 + List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();
  894 + zxlList.addAll(ccList);
  895 + zxlList.addAll(bcList);
  896 + zxlList.addAll(smList);
  897 + zxlList.addAll(qqList);
  898 + zxlList.addAll(gpList);
  899 + zxlList.addAll(qkList);
  900 +
  901 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  902 + detailsList.addAll(bcDetail);
  903 + detailsList.addAll(smDetail);
  904 + detailsList.addAll(qqDetail);
  905 + detailsList.addAll(gpDetail);
  906 +
  907 + for(Map<String, Object> t : zxlList){
  908 + if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){
  909 + t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),
  910 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());
  911 + } else {
  912 + t.put("ratio", "0");
  913 + }
  914 + }
  915 +
  916 + List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();
  917 +
  918 + Date dd1 = new Date();
  919 + dd1.setTime(dd.getTime() - 1l*1000*60*60*24);
  920 + String date1 = sd.format(dd1); //前一天
  921 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);
  922 + List<ScheduleRealInfo> listSche = new ArrayList<ScheduleRealInfo>();
  923 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  924 + for(ScheduleRealInfo s : findAll){
  925 + if(s.getGsBm() != null && s.getGsBm().trim().equals(gsdm)){
  926 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  927 + listSche.add(s);
  928 + Set<ChildTaskPlan> cts = s.getcTasks();
  929 + if (cts != null && cts.size() > 0) {
  930 + list_s.add(s);
  931 + } else {
  932 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  933 + list_s.add(s);
  934 + }
  935 + }
  936 + }
  937 + }
  938 + }
  939 + double jhyygl = culateJhgl(listSche);//计划营运公里
  940 + double jhjccgl = culateJhJccgl(listSche);
  941 + double jhzgl = Arith.add(jhyygl, jhjccgl);
  942 + double sjgl = culateSjgl(list_s);//实际营运公里(不含临加)
  943 + double sjljgl = culateLjgl(listSche);//实际临加公里
  944 + double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里
  945 + double sjjccgl = culateJccgl(list_s);
  946 + double sjksgl = culateKsgl(list_s);
  947 + double zksgl = Arith.add(sjjccgl, sjksgl);
  948 + double sjzgl = Arith.add(sjyygl, zksgl);//实际总公里
  949 + double lz = culateCJLC(listSche, "路阻");
  950 + double dm = culateCJLC(listSche, "吊慢");
  951 + double gz = culateCJLC(listSche, "故障");
  952 + double jf = culateCJLC(listSche, "纠纷");
  953 + double zs = culateCJLC(listSche, "肇事");
  954 + double qr = culateCJLC(listSche, "缺人");
  955 + double qc = culateCJLC(listSche, "缺车");
  956 + double qrqc = Arith.add(qr, qc);//缺人缺车
  957 + double kx = culateCJLC(listSche, "客稀");
  958 + double qh = culateCJLC(listSche, "气候");
  959 + double yw = culateCJLC(listSche, "援外");
  960 + double lb_pc = culateCJLC(listSche, "配车");
  961 + double lb_by = culateCJLC(listSche, "保养");
  962 + double lb_cj = culateCJLC(listSche, "抽减");
  963 + double lb_qt = culateCJLC(listSche, "其他");
  964 + double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他
  965 +
  966 + Map<String, Object> jhzglMap = new HashMap<String, Object>();
  967 + jhzglMap.put("name", "计划总公里");
  968 + jhzglMap.put("value", jhzgl);
  969 + glList.add(jhzglMap);
  970 + Map<String, Object> sjzglMap = new HashMap<String, Object>();
  971 + sjzglMap.put("name", "实际总公里");
  972 + sjzglMap.put("value", sjzgl);
  973 + glList.add(sjzglMap);
  974 + Map<String, Object> lzMap = new HashMap<String, Object>();
  975 + lzMap.put("name", "路阻");
  976 + lzMap.put("value", lz);
  977 + glList.add(lzMap);
  978 + Map<String, Object> dmMap = new HashMap<String, Object>();
  979 + dmMap.put("name", "吊慢");
  980 + dmMap.put("value", dm);
  981 + glList.add(dmMap);
  982 + Map<String, Object> gzMap = new HashMap<String, Object>();
  983 + gzMap.put("name", "故障");
  984 + gzMap.put("value", gz);
  985 + glList.add(gzMap);
  986 + Map<String, Object> jfMap = new HashMap<String, Object>();
  987 + jfMap.put("name", "纠纷");
  988 + jfMap.put("value", jf);
  989 + glList.add(jfMap);
  990 + Map<String, Object> zsMap = new HashMap<String, Object>();
  991 + zsMap.put("name", "肇事");
  992 + zsMap.put("value", zs);
  993 + glList.add(zsMap);
  994 + Map<String, Object> qrqcMap = new HashMap<String, Object>();
  995 + qrqcMap.put("name", "缺人缺车");
  996 + qrqcMap.put("value", qrqc);
  997 + glList.add(qrqcMap);
  998 + Map<String, Object> kxMap = new HashMap<String, Object>();
  999 + kxMap.put("name", "客稀");
  1000 + kxMap.put("value", kx);
  1001 + glList.add(kxMap);
  1002 + Map<String, Object> qhMap = new HashMap<String, Object>();
  1003 + qhMap.put("name", "气候");
  1004 + qhMap.put("value", qh);
  1005 + glList.add(qhMap);
  1006 + Map<String, Object> ywMap = new HashMap<String, Object>();
  1007 + ywMap.put("name", "援外");
  1008 + ywMap.put("value", yw);
  1009 + glList.add(ywMap);
  1010 + Map<String, Object> qtMap = new HashMap<String, Object>();
  1011 + qtMap.put("name", "其他");
  1012 + qtMap.put("value", qt);
  1013 + glList.add(qtMap);
  1014 +
  1015 +
  1016 + resMap.put("lineCount", lineCount);
  1017 + resMap.put("level1Count", level1);
  1018 + resMap.put("level2Count", level2);
  1019 + resMap.put("sjbcs", sjbcs_z);
  1020 + resMap.put("sjlcs", yygl_z.doubleValue());
  1021 +
  1022 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  1023 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1024 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  1025 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1026 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  1027 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1028 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  1029 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1030 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  1031 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1032 + resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),
  1033 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1034 +
  1035 + resMap.put("ratioList", zxlList);
  1036 +
  1037 + resMap.put("detailsList", detailsList);
  1038 +
  1039 + resMap.put("mileageList", glList);
  1040 +
  1041 + return JSON.parseObject(JSON.toJSONString(resMap));
  1042 + }
  1043 +
  1044 + /**给大屏按日期查线路指标
  1045 + *
  1046 + */
  1047 + @GET
  1048 + @Path("/selectData/getScheduleStatistics/{date}")
  1049 + public JSONObject getScheduleStatistics(@PathParam("date") String date){
  1050 + Map<String, Object> resMap = new HashMap<String, Object>();
  1051 +
  1052 + String gpLineSql = "select * from bsth_c_line_plate";
  1053 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  1054 + new RowMapper<Map<String, Object>>(){
  1055 + @Override
  1056 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1057 + Map<String, Object> m=new HashMap<String,Object>();
  1058 + m.put("lineName", rs.getString("line_name"));
  1059 + m.put("lineCode", rs.getString("line_code"));
  1060 + return m;
  1061 + }
  1062 + });
  1063 +
  1064 + Set<String> gpSet = new HashSet<String>();
  1065 + for(Map<String, Object> t : gpLineList){
  1066 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  1067 + gpSet.add(t.get("lineCode").toString().trim());
  1068 + }
  1069 + }
  1070 +
  1071 + String yyxlSql="SELECT line_code from bsth_c_line "
  1072 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1073 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1074 + new RowMapper<Map<String, Object>>(){
  1075 + @Override
  1076 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1077 + Map<String, Object> m=new HashMap<String,Object>();
  1078 + m.put("lineCode", rs.getString("line_code"));
  1079 + return m;
  1080 + }
  1081 + });
  1082 + Set<String> yyLine = new HashSet<String>();
  1083 + for(Map<String, Object> t : yyxlList){
  1084 + if(t.get("lineCode") != null){
  1085 + yyLine.add(t.get("lineCode").toString());
  1086 + }
  1087 + }
  1088 +
  1089 +
  1090 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1091 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1092 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1093 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1094 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1095 + + " from bsth_c_calc_count where date = ?";
  1096 +
  1097 + List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{date},
  1098 + new RowMapper<Map<String, Object>>(){
  1099 + @Override
  1100 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1101 + Map<String, Object> m=new HashMap<String,Object>();
  1102 + m.put("lineCode",rs.getString("xl"));
  1103 + m.put("lineName", rs.getString("xl_name"));
  1104 + m.put("date", rs.getString("date"));
  1105 +
  1106 + m.put("jhbc", rs.getString("jhbc"));
  1107 + m.put("sjbc", rs.getString("sjbc"));
  1108 + m.put("bczxl", rs.getString("bczxl"));
  1109 + m.put("jhbcz", rs.getString("jhbcz"));
  1110 +
  1111 + m.put("jhcc", rs.getString("jhcc"));
  1112 + m.put("sjcc", rs.getString("sjcc"));
  1113 + m.put("ccl", rs.getString("ccl"));
  1114 + m.put("jhccz", rs.getString("jhccz"));
  1115 +
  1116 + m.put("jhyylc", rs.getString("jhyylc"));
  1117 + m.put("sjyylc", rs.getString("sjyylc"));
  1118 + m.put("jhyylcz", rs.getString("jhyylcz"));
  1119 + m.put("jhkslc", rs.getString("jhkslc"));
  1120 + m.put("sjkslc", rs.getString("sjkslc"));
  1121 + m.put("jhkslcz", rs.getString("jhkslcz"));
  1122 +
  1123 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  1124 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  1125 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  1126 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  1127 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  1128 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  1129 +
  1130 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  1131 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  1132 + m.put("smbczdl", rs.getString("smbczdl"));
  1133 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  1134 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  1135 + m.put("smbczdlz", rs.getString("smbczdlz"));
  1136 +
  1137 + m.put("jhszfcs", rs.getString("jhszfcs"));
  1138 + m.put("sjszfczds", rs.getString("sjszfczds"));
  1139 + m.put("szfczdl", rs.getString("szfczdl"));
  1140 +
  1141 + Date date = new Date();
  1142 + date.setTime(rs.getTimestamp("create_date").getTime());
  1143 + m.put("createDate", sdf.format(date));
  1144 + return m;
  1145 + }
  1146 + });
  1147 +
  1148 + List<Map<String, Object>> ccDetail = new ArrayList<Map<String,Object>>();
  1149 + List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();
  1150 + List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();
  1151 + List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();
  1152 + List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();
  1153 + List<Map<String, Object>> qkDetail = new ArrayList<Map<String,Object>>();
  1154 +
  1155 + long sjbcs_z = 0l;//实时总班次
  1156 + BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程
  1157 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  1158 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0, bcs_qk = 0, qks = 0;
  1159 +
  1160 + for(Map<String, Object> t : list){
  1161 + if(yyLine.contains(t.get("lineCode").toString())){
  1162 + sjbcs_z += Long.valueOf(t.get("sjbc").toString());
  1163 + yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));
  1164 +
  1165 + jhcc += Long.valueOf(t.get("jhccz").toString());
  1166 + sjcc += Long.valueOf(t.get("sjcc").toString());
  1167 + jhbc += Long.valueOf(t.get("jhbc").toString());
  1168 + sjbc += Long.valueOf(t.get("sjbc").toString());
  1169 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  1170 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  1171 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  1172 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  1173 + if(gpSet.contains(t.get("lineCode").toString())){
  1174 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  1175 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  1176 + }
  1177 +
  1178 + Map<String, Object> cc = new HashMap<String, Object>();
  1179 + cc.put("type", "线路出车详情");
  1180 + cc.put("lineName", t.get("lineName").toString());
  1181 + cc.put("jh", t.get("jhcc").toString());
  1182 + cc.put("sj", t.get("sjcc").toString());
  1183 + ccDetail.add(cc);
  1184 +
  1185 + Map<String, Object> bc = new HashMap<String, Object>();
  1186 + bc.put("type", "班次执行详情");
  1187 + bc.put("lineName", t.get("lineName").toString());
  1188 + bc.put("jh", t.get("jhbc").toString());
  1189 + bc.put("sj", t.get("sjbc").toString());
  1190 + bcDetail.add(bc);
  1191 +
  1192 + Map<String, Object> sm = new HashMap<String, Object>();
  1193 + sm.put("type", "首站发车详情");
  1194 + sm.put("lineName", t.get("lineName").toString());
  1195 + sm.put("jh", t.get("jhsmbcs").toString());
  1196 + sm.put("sj", t.get("sjsmbczds").toString());
  1197 + smDetail.add(sm);
  1198 +
  1199 + Map<String, Object> qq = new HashMap<String, Object>();
  1200 + qq.put("type", "起讫站发车准点详情");
  1201 + qq.put("lineName", t.get("lineName").toString());
  1202 + qq.put("jh", t.get("jhszfcs").toString());
  1203 + qq.put("sj", t.get("sjszfczds").toString());
  1204 + qqDetail.add(qq);
  1205 +
  1206 + if(gpSet.contains(t.get("lineCode").toString())){
  1207 + Map<String, Object> gp = new HashMap<String, Object>();
  1208 + gp.put("type", "挂牌线路发车准点详情");
  1209 + gp.put("lineName", t.get("lineName").toString());
  1210 + gp.put("jh", t.get("jhszfcs").toString());
  1211 + gp.put("sj", t.get("sjszfczds").toString());
  1212 + gpDetail.add(gp);
  1213 + }
  1214 + }
  1215 + }
  1216 +
  1217 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  1218 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  1219 + for(ScheduleRealInfo s : findAll){
  1220 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  1221 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  1222 + String xlName = s.getXlName();
  1223 + if(!(keyMap.containsKey(xlName))){
  1224 + Map<String, Object> qk = new HashMap<String, Object>();
  1225 + qk.put("type", "线路签卡详情");
  1226 + qk.put("lineName", xlName);
  1227 + qk.put("jh", 0);
  1228 + qk.put("sj", 0);
  1229 + keyMap.put(xlName, qk);
  1230 + qkDetail.add(qk);
  1231 + }
  1232 + Map<String, Object> qk = keyMap.get(xlName);
  1233 + qk.put("jh", Long.valueOf(qk.get("jh").toString()) + 1);
  1234 + ++bcs_qk;
  1235 + //String sty = decimalToBinary(s.getRfidState());
  1236 + String sty = decimalToBinary(0);
  1237 + Integer state = Integer.parseInt(sty);
  1238 + if ((state & 4) == 4) {
  1239 + qk.put("sj", Long.valueOf(qk.get("sj").toString()) + 1);
  1240 + ++qks;
  1241 + }
  1242 + }
  1243 + }
  1244 + }
  1245 +
  1246 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1247 + detailsList.addAll(ccDetail);
  1248 + detailsList.addAll(bcDetail);
  1249 + detailsList.addAll(smDetail);
  1250 + detailsList.addAll(qqDetail);
  1251 + detailsList.addAll(gpDetail);
  1252 + detailsList.addAll(qkDetail);
  1253 +
  1254 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  1255 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1256 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  1257 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1258 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  1259 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1260 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  1261 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1262 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  1263 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1264 + resMap.put("qkl", bcs_qk>0?new BigDecimal(qks).divide(new BigDecimal(bcs_qk),
  1265 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  1266 +
  1267 + resMap.put("detailsList", detailsList);
  1268 +
  1269 + return JSON.parseObject(JSON.toJSONString(resMap));
  1270 + }
  1271 +
  1272 + /**给电科手机端查线路指标(出车率)
  1273 + *
  1274 + */
  1275 + @GET
  1276 + @Path("/selectData/getDepartureBus/{company}/{branchCompany}")
  1277 + public JSONObject getDepartureBus(@PathParam("company") String company,
  1278 + @PathParam("branchCompany") String branchCompany){
  1279 + Map<String, Object> resMap = new HashMap<String, Object>();
  1280 + String date = sd.format(new Date());
  1281 + String gs = "", fgs = "";
  1282 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1283 + gs = company.trim();
  1284 + }
  1285 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1286 + fgs = branchCompany.trim();
  1287 + }
  1288 +
  1289 + String yyxlSql="SELECT line_code from bsth_c_line "
  1290 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1291 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1292 + new RowMapper<Map<String, Object>>(){
  1293 + @Override
  1294 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1295 + Map<String, Object> m=new HashMap<String,Object>();
  1296 + m.put("lineCode", rs.getString("line_code"));
  1297 + return m;
  1298 + }
  1299 + });
  1300 + Set<String> yyLine = new HashSet<String>();
  1301 + for(Map<String, Object> t : yyxlList){
  1302 + if(t.get("lineCode") != null){
  1303 + yyLine.add(t.get("lineCode").toString());
  1304 + }
  1305 + }
  1306 +
  1307 + List<String> objList = new ArrayList<String>();
  1308 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1309 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1310 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1311 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1312 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1313 + + " from bsth_c_calc_count where date = ?";
  1314 + objList.add(date);
  1315 + if(fgs.length() > 0){
  1316 + sql +=" and gsdm = ? and fgsdm = ?";
  1317 + objList.add(gs);
  1318 + objList.add(fgs);
  1319 + } else if(gs.length() > 0){
  1320 + sql +=" and gsdm = ?";
  1321 + objList.add(gs);
  1322 + }
  1323 +
  1324 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1325 + objList.toArray(),
  1326 + new RowMapper<Map<String, Object>>(){
  1327 + @Override
  1328 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1329 + Map<String, Object> m=new HashMap<String,Object>();
  1330 + m.put("lineCode",rs.getString("xl"));
  1331 + m.put("lineName", rs.getString("xl_name"));
  1332 + m.put("date", rs.getString("date"));
  1333 +
  1334 + m.put("jhcc", rs.getString("jhcc"));
  1335 + m.put("sjcc", rs.getString("sjcc"));
  1336 + m.put("jhccz", rs.getString("jhccz"));
  1337 +
  1338 + Date date = new Date();
  1339 + date.setTime(rs.getTimestamp("create_date").getTime());
  1340 + m.put("createDate", sdf.format(date));
  1341 + return m;
  1342 + }
  1343 + });
  1344 +
  1345 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1346 +
  1347 + long jh = 0, sj = 0;
  1348 +
  1349 + for(Map<String, Object> t : list){
  1350 + if(yyLine.contains(t.get("lineCode").toString())){
  1351 +
  1352 + Long plan = Long.valueOf(t.get("jhccz").toString());
  1353 + Long real = Long.valueOf(t.get("sjcc").toString());
  1354 +
  1355 + jh += plan;
  1356 + sj += real;
  1357 +
  1358 + Map<String, Object> detail = new HashMap<String, Object>();
  1359 + detail.put("lineName", t.get("lineName").toString());
  1360 + detail.put("plan", plan);
  1361 + detail.put("real", real);
  1362 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1363 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1364 + detailsList.add(detail);
  1365 + }
  1366 + }
  1367 +
  1368 + resMap.put("plan", jh);
  1369 + resMap.put("real", sj);
  1370 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1371 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1372 +
  1373 + resMap.put("detailsList", detailsList);
  1374 +
  1375 + return JSON.parseObject(JSON.toJSONString(resMap));
  1376 + }
  1377 +
  1378 + /**给电科手机端查线路指标(班次执行率)
  1379 + *
  1380 + */
  1381 + @GET
  1382 + @Path("/selectData/getFinishScheduleBus/{company}/{branchCompany}")
  1383 + public JSONObject getFinishScheduleBus(@PathParam("company") String company,
  1384 + @PathParam("branchCompany") String branchCompany){
  1385 + Map<String, Object> resMap = new HashMap<String, Object>();
  1386 + String date = sd.format(new Date());
  1387 + String gs = "", fgs = "";
  1388 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1389 + gs = company.trim();
  1390 + }
  1391 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1392 + fgs = branchCompany.trim();
  1393 + }
  1394 +
  1395 + String yyxlSql="SELECT line_code from bsth_c_line "
  1396 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1397 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1398 + new RowMapper<Map<String, Object>>(){
  1399 + @Override
  1400 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1401 + Map<String, Object> m=new HashMap<String,Object>();
  1402 + m.put("lineCode", rs.getString("line_code"));
  1403 + return m;
  1404 + }
  1405 + });
  1406 + Set<String> yyLine = new HashSet<String>();
  1407 + for(Map<String, Object> t : yyxlList){
  1408 + if(t.get("lineCode") != null){
  1409 + yyLine.add(t.get("lineCode").toString());
  1410 + }
  1411 + }
  1412 +
  1413 + List<String> objList = new ArrayList<String>();
  1414 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1415 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1416 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1417 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1418 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1419 + + " from bsth_c_calc_count where date = ?";
  1420 + objList.add(date);
  1421 + if(fgs.length() > 0){
  1422 + sql +=" and gsdm = ? and fgsdm = ?";
  1423 + objList.add(gs);
  1424 + objList.add(fgs);
  1425 + } else if(gs.length() > 0){
  1426 + sql +=" and gsdm = ?";
  1427 + objList.add(gs);
  1428 + }
  1429 +
  1430 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1431 + objList.toArray(),
  1432 + new RowMapper<Map<String, Object>>(){
  1433 + @Override
  1434 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1435 + Map<String, Object> m=new HashMap<String,Object>();
  1436 + m.put("lineCode",rs.getString("xl"));
  1437 + m.put("lineName", rs.getString("xl_name"));
  1438 + m.put("date", rs.getString("date"));
  1439 +
  1440 + m.put("jhbc", rs.getString("jhbc"));
  1441 + m.put("sjbc", rs.getString("sjbc"));
  1442 +
  1443 + Date date = new Date();
  1444 + date.setTime(rs.getTimestamp("create_date").getTime());
  1445 + m.put("createDate", sdf.format(date));
  1446 + return m;
  1447 + }
  1448 + });
  1449 +
  1450 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1451 +
  1452 + long jh = 0, sj = 0;
  1453 +
  1454 + for(Map<String, Object> t : list){
  1455 + if(yyLine.contains(t.get("lineCode").toString())){
  1456 +
  1457 + Long plan = Long.valueOf(t.get("jhbc").toString());
  1458 + Long real = Long.valueOf(t.get("sjbc").toString());
  1459 +
  1460 + jh += plan;
  1461 + sj += real;
  1462 +
  1463 + Map<String, Object> detail = new HashMap<String, Object>();
  1464 + detail.put("lineName", t.get("lineName").toString());
  1465 + detail.put("plan", plan);
  1466 + detail.put("real", real);
  1467 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1468 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1469 + detailsList.add(detail);
  1470 + }
  1471 + }
  1472 +
  1473 + resMap.put("plan", jh);
  1474 + resMap.put("real", sj);
  1475 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1476 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1477 +
  1478 + resMap.put("detailsList", detailsList);
  1479 +
  1480 + return JSON.parseObject(JSON.toJSONString(resMap));
  1481 + }
  1482 +
  1483 + /**给电科手机端查线路指标(首末班车发车准点率)
  1484 + *
  1485 + */
  1486 + @GET
  1487 + @Path("/selectData/getBeginAndEnd/{company}/{branchCompany}")
  1488 + public JSONObject getBeginAndEnd(@PathParam("company") String company,
  1489 + @PathParam("branchCompany") String branchCompany){
  1490 + Map<String, Object> resMap = new HashMap<String, Object>();
  1491 + String date = sd.format(new Date());
  1492 + String gs = "", fgs = "";
  1493 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1494 + gs = company.trim();
  1495 + }
  1496 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1497 + fgs = branchCompany.trim();
  1498 + }
  1499 +
  1500 + String yyxlSql="SELECT line_code from bsth_c_line "
  1501 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1502 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1503 + new RowMapper<Map<String, Object>>(){
  1504 + @Override
  1505 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1506 + Map<String, Object> m=new HashMap<String,Object>();
  1507 + m.put("lineCode", rs.getString("line_code"));
  1508 + return m;
  1509 + }
  1510 + });
  1511 + Set<String> yyLine = new HashSet<String>();
  1512 + for(Map<String, Object> t : yyxlList){
  1513 + if(t.get("lineCode") != null){
  1514 + yyLine.add(t.get("lineCode").toString());
  1515 + }
  1516 + }
  1517 +
  1518 + List<String> objList = new ArrayList<String>();
  1519 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1520 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1521 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1522 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1523 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1524 + + " from bsth_c_calc_count where date = ?";
  1525 + objList.add(date);
  1526 + if(fgs.length() > 0){
  1527 + sql +=" and gsdm = ? and fgsdm = ?";
  1528 + objList.add(gs);
  1529 + objList.add(fgs);
  1530 + } else if(gs.length() > 0){
  1531 + sql +=" and gsdm = ?";
  1532 + objList.add(gs);
  1533 + }
  1534 +
  1535 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1536 + objList.toArray(),
  1537 + new RowMapper<Map<String, Object>>(){
  1538 + @Override
  1539 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1540 + Map<String, Object> m=new HashMap<String,Object>();
  1541 + m.put("lineCode",rs.getString("xl"));
  1542 + m.put("lineName", rs.getString("xl_name"));
  1543 + m.put("date", rs.getString("date"));
  1544 +
  1545 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  1546 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  1547 +
  1548 + Date date = new Date();
  1549 + date.setTime(rs.getTimestamp("create_date").getTime());
  1550 + m.put("createDate", sdf.format(date));
  1551 + return m;
  1552 + }
  1553 + });
  1554 +
  1555 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1556 +
  1557 + long jh = 0, sj = 0;
  1558 +
  1559 + for(Map<String, Object> t : list){
  1560 + if(yyLine.contains(t.get("lineCode").toString())){
  1561 +
  1562 + Long plan = Long.valueOf(t.get("jhsmbcs").toString());
  1563 + Long real = Long.valueOf(t.get("sjsmbczds").toString());
  1564 +
  1565 + jh += plan;
  1566 + sj += real;
  1567 +
  1568 + Map<String, Object> detail = new HashMap<String, Object>();
  1569 + detail.put("lineName", t.get("lineName").toString());
  1570 + detail.put("plan", plan);
  1571 + detail.put("real", real);
  1572 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1573 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1574 + detailsList.add(detail);
  1575 + }
  1576 + }
  1577 +
  1578 + resMap.put("plan", jh);
  1579 + resMap.put("real", sj);
  1580 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1581 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1582 +
  1583 + resMap.put("detailsList", detailsList);
  1584 +
  1585 + return JSON.parseObject(JSON.toJSONString(resMap));
  1586 + }
  1587 +
  1588 + /**给电科手机端查线路指标(起讫站发车准点率)
  1589 + *
  1590 + */
  1591 + @GET
  1592 + @Path("/selectData/getPunctualBus/{company}/{branchCompany}")
  1593 + public JSONObject getPunctualBus(@PathParam("company") String company,
  1594 + @PathParam("branchCompany") String branchCompany){
  1595 + Map<String, Object> resMap = new HashMap<String, Object>();
  1596 + String date = sd.format(new Date());
  1597 + String gs = "", fgs = "";
  1598 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1599 + gs = company.trim();
  1600 + }
  1601 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1602 + fgs = branchCompany.trim();
  1603 + }
  1604 +
  1605 + String yyxlSql="SELECT line_code from bsth_c_line "
  1606 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1607 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1608 + new RowMapper<Map<String, Object>>(){
  1609 + @Override
  1610 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1611 + Map<String, Object> m=new HashMap<String,Object>();
  1612 + m.put("lineCode", rs.getString("line_code"));
  1613 + return m;
  1614 + }
  1615 + });
  1616 + Set<String> yyLine = new HashSet<String>();
  1617 + for(Map<String, Object> t : yyxlList){
  1618 + if(t.get("lineCode") != null){
  1619 + yyLine.add(t.get("lineCode").toString());
  1620 + }
  1621 + }
  1622 +
  1623 + List<String> objList = new ArrayList<String>();
  1624 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1625 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1626 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1627 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1628 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1629 + + " from bsth_c_calc_count where date = ?";
  1630 + objList.add(date);
  1631 + if(fgs.length() > 0){
  1632 + sql +=" and gsdm = ? and fgsdm = ?";
  1633 + objList.add(gs);
  1634 + objList.add(fgs);
  1635 + } else if(gs.length() > 0){
  1636 + sql +=" and gsdm = ?";
  1637 + objList.add(gs);
  1638 + }
  1639 +
  1640 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1641 + objList.toArray(),
  1642 + new RowMapper<Map<String, Object>>(){
  1643 + @Override
  1644 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1645 + Map<String, Object> m=new HashMap<String,Object>();
  1646 + m.put("lineCode",rs.getString("xl"));
  1647 + m.put("lineName", rs.getString("xl_name"));
  1648 + m.put("date", rs.getString("date"));
  1649 +
  1650 + m.put("jhszfcs", rs.getString("jhszfcs"));
  1651 + m.put("sjszfczds", rs.getString("sjszfczds"));
  1652 +
  1653 + Date date = new Date();
  1654 + date.setTime(rs.getTimestamp("create_date").getTime());
  1655 + m.put("createDate", sdf.format(date));
  1656 + return m;
  1657 + }
  1658 + });
  1659 +
  1660 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1661 +
  1662 + long jh = 0, sj = 0;
  1663 +
  1664 + for(Map<String, Object> t : list){
  1665 + if(yyLine.contains(t.get("lineCode").toString())){
  1666 +
  1667 + Long plan = Long.valueOf(t.get("jhszfcs").toString());
  1668 + Long real = Long.valueOf(t.get("sjszfczds").toString());
  1669 +
  1670 + jh += plan;
  1671 + sj += real;
  1672 +
  1673 + Map<String, Object> detail = new HashMap<String, Object>();
  1674 + detail.put("lineName", t.get("lineName").toString());
  1675 + detail.put("plan", plan);
  1676 + detail.put("real", real);
  1677 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1678 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1679 + detailsList.add(detail);
  1680 + }
  1681 + }
  1682 +
  1683 + resMap.put("plan", jh);
  1684 + resMap.put("real", sj);
  1685 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1686 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1687 +
  1688 + resMap.put("detailsList", detailsList);
  1689 +
  1690 + return JSON.parseObject(JSON.toJSONString(resMap));
  1691 + }
  1692 +
  1693 + /**给电科手机端查线路指标(挂牌线路发车准点率)
  1694 + *
  1695 + */
  1696 + @GET
  1697 + @Path("/selectData/getPlateLineBus/{company}/{branchCompany}")
  1698 + public JSONObject getPlateLineBus(@PathParam("company") String company,
  1699 + @PathParam("branchCompany") String branchCompany){
  1700 + Map<String, Object> resMap = new HashMap<String, Object>();
  1701 +
  1702 + String gpLineSql = "select * from bsth_c_line_plate";
  1703 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  1704 + new RowMapper<Map<String, Object>>(){
  1705 + @Override
  1706 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1707 + Map<String, Object> m=new HashMap<String,Object>();
  1708 + m.put("lineName", rs.getString("line_name"));
  1709 + m.put("lineCode", rs.getString("line_code"));
  1710 + return m;
  1711 + }
  1712 + });
  1713 +
  1714 + Set<String> gpSet = new HashSet<String>();
  1715 + for(Map<String, Object> t : gpLineList){
  1716 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  1717 + gpSet.add(t.get("lineCode").toString().trim());
  1718 + }
  1719 + }
  1720 +
  1721 + String date = sd.format(new Date());
  1722 + String gs = "", fgs = "";
  1723 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1724 + gs = company.trim();
  1725 + }
  1726 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1727 + fgs = branchCompany.trim();
  1728 + }
  1729 +
  1730 + String yyxlSql="SELECT line_code from bsth_c_line "
  1731 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1732 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1733 + new RowMapper<Map<String, Object>>(){
  1734 + @Override
  1735 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1736 + Map<String, Object> m=new HashMap<String,Object>();
  1737 + m.put("lineCode", rs.getString("line_code"));
  1738 + return m;
  1739 + }
  1740 + });
  1741 + Set<String> yyLine = new HashSet<String>();
  1742 + for(Map<String, Object> t : yyxlList){
  1743 + if(t.get("lineCode") != null){
  1744 + yyLine.add(t.get("lineCode").toString());
  1745 + }
  1746 + }
  1747 +
  1748 + List<String> objList = new ArrayList<String>();
  1749 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  1750 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  1751 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  1752 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  1753 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  1754 + + " from bsth_c_calc_count where date = ?";
  1755 + objList.add(date);
  1756 + if(fgs.length() > 0){
  1757 + sql +=" and gsdm = ? and fgsdm = ?";
  1758 + objList.add(gs);
  1759 + objList.add(fgs);
  1760 + } else if(gs.length() > 0){
  1761 + sql +=" and gsdm = ?";
  1762 + objList.add(gs);
  1763 + }
  1764 +
  1765 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  1766 + objList.toArray(),
  1767 + new RowMapper<Map<String, Object>>(){
  1768 + @Override
  1769 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1770 + Map<String, Object> m=new HashMap<String,Object>();
  1771 + m.put("lineCode",rs.getString("xl"));
  1772 + m.put("lineName", rs.getString("xl_name"));
  1773 + m.put("date", rs.getString("date"));
  1774 +
  1775 + m.put("jhszfcs", rs.getString("jhszfcs"));
  1776 + m.put("sjszfczds", rs.getString("sjszfczds"));
  1777 +
  1778 + Date date = new Date();
  1779 + date.setTime(rs.getTimestamp("create_date").getTime());
  1780 + m.put("createDate", sdf.format(date));
  1781 + return m;
  1782 + }
  1783 + });
  1784 +
  1785 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1786 +
  1787 + long jh = 0, sj = 0;
  1788 +
  1789 + for(Map<String, Object> t : list){
  1790 + if(yyLine.contains(t.get("lineCode").toString())){
  1791 +
  1792 + if(gpSet.contains(t.get("lineCode").toString())){
  1793 +
  1794 + Long plan = Long.valueOf(t.get("jhszfcs").toString());
  1795 + Long real = Long.valueOf(t.get("sjszfczds").toString());
  1796 +
  1797 + jh += plan;
  1798 + sj += real;
  1799 +
  1800 + Map<String, Object> detail = new HashMap<String, Object>();
  1801 + detail.put("lineName", t.get("lineName").toString());
  1802 + detail.put("plan", plan);
  1803 + detail.put("real", real);
  1804 + detail.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1805 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1806 + detailsList.add(detail);
  1807 + }
  1808 + }
  1809 + }
  1810 +
  1811 + resMap.put("plan", jh);
  1812 + resMap.put("real", sj);
  1813 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1814 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1815 +
  1816 + resMap.put("detailsList", detailsList);
  1817 +
  1818 + return JSON.parseObject(JSON.toJSONString(resMap));
  1819 + }
  1820 +
  1821 + /**给电科手机端查线路指标(签卡率)
  1822 + *
  1823 + */
  1824 + @GET
  1825 + @Path("/selectData/getCardSigning/{company}/{branchCompany}")
  1826 + public JSONObject getCardSigning(@PathParam("company") String company,
  1827 + @PathParam("branchCompany") String branchCompany){
  1828 + Map<String, Object> resMap = new HashMap<String, Object>();
  1829 + String date = sd.format(new Date());
  1830 + String gs = "", fgs = "";
  1831 + if(company.trim().length() > 0 && !("all".equals(company.trim()))){
  1832 + gs = company.trim();
  1833 + }
  1834 + if(branchCompany.trim().length() > 0 && !("all".equals(branchCompany.trim()))){
  1835 + fgs = branchCompany.trim();
  1836 + }
  1837 +
  1838 + String yyxlSql="SELECT line_code from bsth_c_line "
  1839 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1840 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1841 + new RowMapper<Map<String, Object>>(){
  1842 + @Override
  1843 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1844 + Map<String, Object> m=new HashMap<String,Object>();
  1845 + m.put("lineCode", rs.getString("line_code"));
  1846 + return m;
  1847 + }
  1848 + });
  1849 + Set<String> yyLine = new HashSet<String>();
  1850 + for(Map<String, Object> t : yyxlList){
  1851 + if(t.get("lineCode") != null){
  1852 + yyLine.add(t.get("lineCode").toString());
  1853 + }
  1854 + }
  1855 +
  1856 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  1857 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  1858 +
  1859 + long jh = 0, sj = 0;
  1860 +
  1861 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  1862 + for(ScheduleRealInfo s : findAll){
  1863 + if(s.getGsBm() != null && s.getFgsBm() != null){
  1864 + if("77".equals(s.getGsBm())){
  1865 + continue;
  1866 + }
  1867 + if(fgs.length() > 0){
  1868 + if(!(s.getGsBm().equals(gs)) || !(s.getFgsBm().equals(gs))){
  1869 + continue;
  1870 + }
  1871 + } else if(gs.length() > 0){
  1872 + if(!(s.getGsBm().equals(gs))){
  1873 + continue;
  1874 + }
  1875 + }
  1876 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  1877 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  1878 + long plan = 0, real = 0;
  1879 + ++plan;
  1880 + ++jh;
  1881 + //String sty = decimalToBinary(s.getRfidState());
  1882 + String sty = decimalToBinary(0);
  1883 + Integer state = Integer.parseInt(sty);
  1884 + if ((state & 4) == 4) {
  1885 + ++real;
  1886 + ++sj;
  1887 + }
  1888 + if(!(keyMap.containsKey(s.getXlBm()))){
  1889 + Map<String, Object> m = new HashMap<String, Object>();
  1890 + m = new HashMap<String, Object>();
  1891 + m.put("lineName", s.getXlName());
  1892 + m.put("plan", "0");
  1893 + m.put("real", "0");
  1894 + keyMap.put(s.getXlBm(), m);
  1895 + detailsList.add(m);
  1896 + }
  1897 + Map<String, Object> m = keyMap.get(s.getXlBm());
  1898 + m.put("plan", Long.valueOf(m.get("plan").toString()) + plan);
  1899 + m.put("real", Long.valueOf(m.get("real").toString()) + real);
  1900 + }
  1901 + }
  1902 + }
  1903 + }
  1904 +
  1905 + for(Map<String, Object> m : detailsList){
  1906 + long plan = Long.valueOf(m.get("plan").toString());
  1907 + long real = Long.valueOf(m.get("real").toString());
  1908 + m.put("ratio", plan>0?new BigDecimal(real*100l).divide(
  1909 + new BigDecimal(plan), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1910 + }
  1911 +
  1912 + resMap.put("plan", jh);
  1913 + resMap.put("real", sj);
  1914 + resMap.put("ratio", jh>0?new BigDecimal(sj*100l).divide(
  1915 + new BigDecimal(jh), 2, BigDecimal.ROUND_HALF_UP).doubleValue():"0");
  1916 +
  1917 + resMap.put("detailsList", detailsList);
  1918 +
  1919 + return JSON.parseObject(JSON.toJSONString(resMap));
  1920 + }
  1921 +
  1922 + @GET
  1923 + @Path("/selectData/attendance")
  1924 + public JSONObject attendance(){
  1925 + Map<String, Object> resMap = new HashMap<String, Object>();
  1926 + SimpleDateFormat dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  1927 +
  1928 + int day = 7;//天数
  1929 +
  1930 + Date dd = new Date();
  1931 + String date = sd.format(dd); //yyyy-MM-dd 当天
  1932 + Date dd2 = new Date();
  1933 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  1934 + String date2 = sd.format(dd2); //yyyy-MM-dd 6天前(加上当天就是取7天数据)
  1935 +
  1936 + String[] dates = new String[day];
  1937 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  1938 +
  1939 + for(int i = 0; i < day; i++){
  1940 + Date tempDate = new Date();
  1941 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  1942 + String format = sd.format(tempDate);
  1943 + dates[i] = format;
  1944 + datesMap.put(format, i);
  1945 + }
  1946 +
  1947 +
  1948 + String yyxlSql="SELECT line_code from bsth_c_line "
  1949 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  1950 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  1951 + new RowMapper<Map<String, Object>>(){
  1952 + @Override
  1953 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1954 + Map<String, Object> m=new HashMap<String,Object>();
  1955 + m.put("lineCode", rs.getString("line_code"));
  1956 + return m;
  1957 + }
  1958 + });
  1959 + Set<String> yyLine = new HashSet<String>();
  1960 + for(Map<String, Object> t : yyxlList){
  1961 + if(t.get("lineCode") != null){
  1962 + yyLine.add(t.get("lineCode").toString());
  1963 + }
  1964 + }
  1965 +
  1966 +
  1967 + List<Map<String, Object>> attList = new ArrayList<Map<String, Object>>();
  1968 + List<Map<String, Object>> lackList = new ArrayList<Map<String, Object>>();
  1969 + Set<String> lackSet = new HashSet<String>();
  1970 +
  1971 + for(int i = 0; i < dates.length; i++){
  1972 + Set<String> jhSet = new HashSet<String>();
  1973 + Set<String> sjSet = new HashSet<String>();
  1974 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(dates[i]);
  1975 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  1976 + for(ScheduleRealInfo s : findAll){
  1977 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  1978 + if(!isInOut(s)){
  1979 + Set<ChildTaskPlan> cts = s.getcTasks();
  1980 + if (cts != null && cts.size() > 0) {
  1981 + list_s.add(s);
  1982 + } else {
  1983 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  1984 + list_s.add(s);
  1985 + }
  1986 + }
  1987 +
  1988 + if(!s.isSflj() && !s.isCcService()){
  1989 + jhSet.add(s.getjGh() + "/" + s.getjName());
  1990 + }
  1991 + }
  1992 + }
  1993 + }
  1994 +
  1995 + for(ScheduleRealInfo s : list_s){
  1996 + if(!(s.getStatus() == -1)){
  1997 + sjSet.add(s.getjGh() + "/" + s.getjName());
  1998 + }
  1999 + }
  2000 +
  2001 + for(ScheduleRealInfo s : findAll){
  2002 + try {
  2003 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2004 + if (s.isSflj() || isInOut(s)){
  2005 + continue;
  2006 + }
  2007 +
  2008 + String time = s.getRealExecDate() + " " + s.getFcsj();
  2009 + Date d = dateTime.parse(time);
  2010 + if(dd.getTime() - d.getTime() < 300000l){ //只取当前时间5分钟前的数据
  2011 + continue;
  2012 + }
  2013 +
  2014 + Set<ChildTaskPlan> cts;
  2015 + cts = s.getcTasks();
  2016 + //有子任务
  2017 + if (cts != null && cts.size() > 0) {
  2018 + for(ChildTaskPlan c : cts){
  2019 + if(c.getMileageType().equals("service") && c.getCcId() == null){
  2020 + if(c.isDestroy() && (c.getDestroyReason()==null? "" : c.getDestroyReason()).equals("缺人")){
  2021 + Map<String, Object> m = new HashMap<String, Object>();
  2022 + m.put("gsName", s.getGsName());
  2023 + m.put("lineName", s.getXlName());
  2024 + m.put("driverCode", s.getjGh());
  2025 + m.put("driverName", s.getjName());
  2026 + m.put("cl", s.getClZbh());
  2027 + m.put("date", s.getRealExecDate());
  2028 + m.put("time", c.getStartDate());
  2029 + if(c.getRemarks() != null && c.getRemarks().trim().length() > 0){
  2030 + m.put("explain", c.getRemarks());
  2031 + } else {
  2032 + m.put("explain", s.getRemarks()!=null?s.getRemarks():"");
  2033 + }
  2034 +
  2035 + String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();
  2036 + if(lackSet.add(str)){
  2037 + lackList.add(m);
  2038 + }
  2039 + }
  2040 + }
  2041 + }
  2042 + }
  2043 + //主任务烂班
  2044 + else if(s.getStatus() == -1 && s.getAdjustExps().equals("缺人")){
  2045 + Map<String, Object> m = new HashMap<String, Object>();
  2046 + m.put("gsName", s.getGsName());
  2047 + m.put("lineName", s.getXlName());
  2048 + m.put("driverCode", s.getjGh());
  2049 + m.put("driverName", s.getjName());
  2050 + m.put("cl", s.getClZbh());
  2051 + m.put("date", s.getRealExecDate());
  2052 + m.put("time", s.getFcsj());
  2053 + m.put("explain", s.getRemarks()!=null?s.getRemarks():"");
  2054 +
  2055 + String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();
  2056 + if(lackSet.add(str)){
  2057 + lackList.add(m);
  2058 + }
  2059 + }
  2060 + }
  2061 + } catch (Exception e) {
  2062 + // TODO: handle exception
  2063 + e.printStackTrace();
  2064 + }
  2065 + }
  2066 +
  2067 + Map<String, Object> att = new HashMap<String, Object>();
  2068 + att.put("date", dates[i]);
  2069 + att.put("jh", jhSet.size());
  2070 + att.put("sj", sjSet.size());
  2071 + attList.add(att);
  2072 + }
  2073 +
  2074 + String gpLineSql = "select p.company_code, count(1) jsy"
  2075 + + " from (select e.jsy from bsth_c_s_ecinfo e"
  2076 + + " where e.is_cancel = 0 group by e.jsy) a"
  2077 + + " left join bsth_c_personnel p on a.jsy = p.id"
  2078 + + " group by p.company_code";
  2079 + List<Map<String, Object>> ecList=jdbcTemplate.query(gpLineSql,
  2080 + new RowMapper<Map<String, Object>>(){
  2081 + @Override
  2082 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2083 + Map<String, Object> m=new HashMap<String,Object>();
  2084 + m.put("company", rs.getString("company_code"));
  2085 + m.put("jsy", rs.getString("jsy"));
  2086 + return m;
  2087 + }
  2088 + });
  2089 +
  2090 + List<Map<String, Object>> jsyList = new ArrayList<Map<String, Object>>();
  2091 + Map<String, Object> ygMap = new HashMap<String, Object>();
  2092 + ygMap.put("company", "闵行客运");
  2093 + ygMap.put("jsy", "0");
  2094 + Map<String, Object> snMap = new HashMap<String, Object>();
  2095 + snMap.put("company", "金球公交");
  2096 + snMap.put("jsy", "0");
  2097 + Map<String, Object> jgMap = new HashMap<String, Object>();
  2098 + jgMap.put("company", "露虹公交");
  2099 + jgMap.put("jsy", "0");
  2100 + for(Map<String, Object> m : ecList){ //顺序:闵行客运,金球公交,露虹公交
  2101 + if("77".equals(m.get("company").toString())){
  2102 +// m.put("company", "闵行客运");
  2103 + ygMap.put("jsy", m.get("jsy").toString());
  2104 + }
  2105 + if("300".equals(m.get("company").toString())){
  2106 +// m.put("company", "金球公交");
  2107 + snMap.put("jsy", m.get("jsy").toString());
  2108 + }
  2109 + if("302".equals(m.get("company").toString())){
  2110 +// m.put("company", "露虹公交");
  2111 + jgMap.put("jsy", m.get("jsy").toString());
  2112 + }
  2113 + }
  2114 + jsyList.add(ygMap);
  2115 + jsyList.add(snMap);
  2116 + jsyList.add(jgMap);
  2117 +
  2118 + String xlSql = "select a.jsy, b.spy, c.cl from"
  2119 + + " (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"
  2120 + + " LEFT JOIN"
  2121 + + " (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"
  2122 + + " on 1=1"
  2123 + + " LEFT JOIN"
  2124 + + " (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"
  2125 + + " on 1=1";
  2126 + List<Map<String, Object>> xlConfigList=jdbcTemplate.query(xlSql,
  2127 + new RowMapper<Map<String, Object>>(){
  2128 + @Override
  2129 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2130 + Map<String, Object> m=new HashMap<String,Object>();
  2131 + m.put("jsy", rs.getString("jsy"));
  2132 + m.put("spy", rs.getString("spy"));
  2133 + m.put("cl", rs.getString("cl"));
  2134 + return m;
  2135 + }
  2136 + });
  2137 + long jsy = 0l, spy = 0l, cl = 0l;
  2138 + for(Map<String, Object> t : xlConfigList){
  2139 + if(t.get("jsy") != null){
  2140 + jsy += Long.valueOf(t.get("jsy").toString());
  2141 + }
  2142 + if(t.get("spy") != null){
  2143 + spy += Long.valueOf(t.get("spy").toString());
  2144 + }
  2145 + if(t.get("cl") != null){
  2146 + cl += Long.valueOf(t.get("cl").toString());
  2147 + }
  2148 + }
  2149 +
  2150 + resMap.put("jsyList", jsyList);
  2151 + resMap.put("attList", attList);
  2152 + resMap.put("lackList", lackList);
  2153 + resMap.put("salesmanJsy", jsy);
  2154 + resMap.put("salesmanSpy", spy);
  2155 + resMap.put("salesmanCl", cl);
  2156 +
  2157 + return JSON.parseObject(JSON.toJSONString(resMap));
  2158 + }
  2159 +
  2160 + @GET
  2161 + @Path("/selectData/attendance/{gsdm}")
  2162 + public JSONObject attendance(@PathParam("gsdm") String gsdm){
  2163 + Map<String, Object> resMap = new HashMap<String, Object>();
  2164 + SimpleDateFormat dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  2165 +
  2166 + int day = 7;//天数
  2167 +
  2168 + Date dd = new Date();
  2169 + String date = sd.format(dd); //yyyy-MM-dd 当天
  2170 + Date dd2 = new Date();
  2171 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  2172 + String date2 = sd.format(dd2); //yyyy-MM-dd 6天前(加上当天就是取7天数据)
  2173 +
  2174 + String[] dates = new String[day];
  2175 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  2176 +
  2177 + for(int i = 0; i < day; i++){
  2178 + Date tempDate = new Date();
  2179 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  2180 + String format = sd.format(tempDate);
  2181 + dates[i] = format;
  2182 + datesMap.put(format, i);
  2183 + }
  2184 +
  2185 +
  2186 + String yyxlSql="SELECT line_code from bsth_c_line "
  2187 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  2188 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  2189 + new RowMapper<Map<String, Object>>(){
  2190 + @Override
  2191 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2192 + Map<String, Object> m=new HashMap<String,Object>();
  2193 + m.put("lineCode", rs.getString("line_code"));
  2194 + return m;
  2195 + }
  2196 + });
  2197 + Set<String> yyLine = new HashSet<String>();
  2198 + for(Map<String, Object> t : yyxlList){
  2199 + if(t.get("lineCode") != null){
  2200 + yyLine.add(t.get("lineCode").toString());
  2201 + }
  2202 + }
  2203 +
  2204 +
  2205 + List<Map<String, Object>> attList = new ArrayList<Map<String, Object>>();
  2206 + List<Map<String, Object>> lackList = new ArrayList<Map<String, Object>>();
  2207 + Set<String> lackSet = new HashSet<String>();
  2208 +
  2209 + for(int i = 0; i < dates.length; i++){
  2210 + Set<String> jhSet = new HashSet<String>();
  2211 + Set<String> sjSet = new HashSet<String>();
  2212 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(dates[i]);
  2213 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  2214 + for(ScheduleRealInfo s : findAll){
  2215 + if(s.getGsBm() != null && s.getGsBm().equals(gsdm)){//直属公司
  2216 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2217 + if(!isInOut(s)){
  2218 + Set<ChildTaskPlan> cts = s.getcTasks();
  2219 + if (cts != null && cts.size() > 0) {
  2220 + list_s.add(s);
  2221 + } else {
  2222 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  2223 + list_s.add(s);
  2224 + }
  2225 + }
  2226 +
  2227 + if(!s.isSflj() && !s.isCcService()){
  2228 + jhSet.add(s.getjGh() + "/" + s.getjName());
  2229 + }
  2230 + }
  2231 + }
  2232 + }
  2233 + }
  2234 +
  2235 + for(ScheduleRealInfo s : list_s){
  2236 + if(!(s.getStatus() == -1)){
  2237 + sjSet.add(s.getjGh() + "/" + s.getjName());
  2238 + }
  2239 + }
  2240 +
  2241 + for(ScheduleRealInfo s : findAll){
  2242 + try {
  2243 + if(s.getGsBm() != null && s.getGsBm().equals(gsdm)){//直属公司
  2244 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2245 + if (s.isSflj() || isInOut(s)){
  2246 + continue;
  2247 + }
  2248 +
  2249 + String time = s.getRealExecDate() + " " + s.getFcsj();
  2250 + Date d = dateTime.parse(time);
  2251 + if(dd.getTime() - d.getTime() < 300000l){ //只取当前时间5分钟前的数据
  2252 + continue;
  2253 + }
  2254 +
  2255 + Set<ChildTaskPlan> cts;
  2256 + cts = s.getcTasks();
  2257 + //有子任务
  2258 + if (cts != null && cts.size() > 0) {
  2259 + for(ChildTaskPlan c : cts){
  2260 + if(c.getMileageType().equals("service") && c.getCcId() == null){
  2261 + if(c.isDestroy() && (c.getDestroyReason()==null? "" : c.getDestroyReason()).equals("缺人")){
  2262 + Map<String, Object> m = new HashMap<String, Object>();
  2263 + m.put("gsName", s.getGsName());
  2264 + m.put("lineName", s.getXlName());
  2265 + m.put("driverCode", s.getjGh());
  2266 + m.put("driverName", s.getjName());
  2267 + m.put("cl", s.getClZbh());
  2268 + m.put("date", s.getRealExecDate());
  2269 + m.put("time", c.getStartDate());
  2270 + if(c.getRemarks() != null && c.getRemarks().trim().length() > 0){
  2271 + m.put("explain", c.getRemarks());
  2272 + } else {
  2273 + m.put("explain", s.getRemarks()!=null?s.getRemarks():"");
  2274 + }
  2275 +
  2276 + String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();
  2277 + if(lackSet.add(str)){
  2278 + lackList.add(m);
  2279 + }
  2280 + }
  2281 + }
  2282 + }
  2283 + }
  2284 + //主任务烂班
  2285 + else if(s.getStatus() == -1 && s.getAdjustExps().equals("缺人")){
  2286 + Map<String, Object> m = new HashMap<String, Object>();
  2287 + m.put("gsName", s.getGsName());
  2288 + m.put("lineName", s.getXlName());
  2289 + m.put("driverCode", s.getjGh());
  2290 + m.put("driverName", s.getjName());
  2291 + m.put("cl", s.getClZbh());
  2292 + m.put("date", s.getRealExecDate());
  2293 + m.put("time", s.getFcsj());
  2294 + m.put("explain", s.getRemarks()!=null?s.getRemarks():"");
  2295 +
  2296 + String str = s.getScheduleDateStr()+"/"+s.getXlName()+"/"+s.getjGh()+"/"+s.getjName();
  2297 + if(lackSet.add(str)){
  2298 + lackList.add(m);
  2299 + }
  2300 + }
  2301 + }
  2302 + }
  2303 + } catch (Exception e) {
  2304 + // TODO: handle exception
  2305 + }
  2306 + }
  2307 +
  2308 + Map<String, Object> att = new HashMap<String, Object>();
  2309 + att.put("date", dates[i]);
  2310 + att.put("jh", jhSet.size());
  2311 + att.put("sj", sjSet.size());
  2312 + attList.add(att);
  2313 + }
  2314 +
  2315 + String gpLineSql = "select p.branche_company_code, b.business_name, count(1) jsy"
  2316 + + " from (select e.jsy from bsth_c_s_ecinfo e"
  2317 + + " where e.is_cancel = 0 group by e.jsy) a"
  2318 + + " left join bsth_c_personnel p on a.jsy = p.id"
  2319 + + " left join bsth_c_business b on p.company_code = b.up_code"
  2320 + + " and p.branche_company_code = b.business_code"
  2321 + + " where p.company_code = ?"
  2322 + + " group by p.branche_company_code, b.business_name"
  2323 + + " order by p.branche_company_code";
  2324 + List<Map<String, Object>> ecList=jdbcTemplate.query(gpLineSql, new Object[]{gsdm},
  2325 + new RowMapper<Map<String, Object>>(){
  2326 + @Override
  2327 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2328 + Map<String, Object> m=new HashMap<String,Object>();
  2329 + m.put("company", rs.getString("branche_company_code"));
  2330 + m.put("companyName", rs.getString("business_name"));
  2331 + m.put("jsy", rs.getString("jsy"));
  2332 + return m;
  2333 + }
  2334 + });
  2335 +
  2336 + List<Integer> keyList = new ArrayList<Integer>();
  2337 + Map<Integer, Map<String, Object>> keyMap = new HashMap<Integer, Map<String, Object>>();
  2338 + List<Map<String, Object>> jsyList = new ArrayList<Map<String, Object>>();
  2339 + for(Map<String, Object> m : ecList){
  2340 + if(m.get("company") != null && m.get("company").toString().trim().length() > 0){
  2341 + Integer i = Integer.valueOf(m.get("company").toString().trim());
  2342 + if(!keyMap.containsKey(i)){
  2343 + Map<String, Object> temp = new HashMap<String, Object>();
  2344 + temp.put("company", m.get("companyName").toString());
  2345 + temp.put("jsy", m.get("jsy").toString());
  2346 + keyMap.put(i, temp);
  2347 + keyList.add(i);
  2348 + jsyList.add(temp);
  2349 + }
  2350 + }
  2351 + }
  2352 +
  2353 + String xlSql = "select a.jsy, b.spy, c.cl from"
  2354 + + " (select count(1) jsy from (select a.jsy from bsth_c_s_ecinfo a"
  2355 + + " left join bsth_c_personnel p on a.jsy=p.id where a.is_cancel = 0"
  2356 + + " and a.spy is not null and a.jsy is not null"
  2357 + + " and p.company_code = ?"
  2358 + + " group by jsy) a) a"
  2359 + + " LEFT JOIN"
  2360 + + " (select count(1) spy from (select b.spy from bsth_c_s_ecinfo b"
  2361 + + " left join bsth_c_personnel p on b.spy=p.id where b.is_cancel = 0"
  2362 + + " and b.spy is not null and p.company_code = ?"
  2363 + + " group by spy) b) b"
  2364 + + " on 1=1"
  2365 + + " LEFT JOIN"
  2366 + + " (select count(1) cl from (select c.cl from bsth_c_s_ccinfo c"
  2367 + + " left join bsth_c_cars car on c.cl=car.id where c.is_cancel = 0"
  2368 + + " and c.cl is not null and car.business_code = ?"
  2369 + + " and c.xl in(select e.xl from bsth_c_s_ecinfo e"
  2370 + + " where e.is_cancel = 0 and e.spy is not null) group by c.cl) c) c"
  2371 + + " on 1=1";
  2372 + List<Map<String, Object>> xlConfigList=jdbcTemplate.query(xlSql, new Object[]{gsdm, gsdm, gsdm},
  2373 + new RowMapper<Map<String, Object>>(){
  2374 + @Override
  2375 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2376 + Map<String, Object> m=new HashMap<String,Object>();
  2377 + m.put("jsy", rs.getString("jsy"));
  2378 + m.put("spy", rs.getString("spy"));
  2379 + m.put("cl", rs.getString("cl"));
  2380 + return m;
  2381 + }
  2382 + });
  2383 + long jsy = 0l, spy = 0l, cl = 0l;
  2384 + for(Map<String, Object> t : xlConfigList){
  2385 + if(t.get("jsy") != null){
  2386 + jsy += Long.valueOf(t.get("jsy").toString());
  2387 + }
  2388 + if(t.get("spy") != null){
  2389 + spy += Long.valueOf(t.get("spy").toString());
  2390 + }
  2391 + if(t.get("cl") != null){
  2392 + cl += Long.valueOf(t.get("cl").toString());
  2393 + }
  2394 + }
  2395 +
  2396 + resMap.put("jsyList", jsyList);
  2397 + resMap.put("attList", attList);
  2398 + resMap.put("lackList", lackList);
  2399 + resMap.put("salesmanJsy", jsy);
  2400 + resMap.put("salesmanSpy", spy);
  2401 + resMap.put("salesmanCl", cl);
  2402 +
  2403 + return JSON.parseObject(JSON.toJSONString(resMap));
  2404 + }
  2405 +
  2406 + /** 按月份查询统计指标 */
  2407 + @GET
  2408 + @Path("/selectData/getMonthly/{month}")
  2409 + public JSONObject getMonthly(@PathParam("month") String month){
  2410 + Map<String, Object> resMap = new HashMap<String, Object>();
  2411 +
  2412 + String gpLineSql = "select * from bsth_c_line_plate";
  2413 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  2414 + new RowMapper<Map<String, Object>>(){
  2415 + @Override
  2416 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2417 + Map<String, Object> m=new HashMap<String,Object>();
  2418 + m.put("lineName", rs.getString("line_name"));
  2419 + m.put("lineCode", rs.getString("line_code"));
  2420 + return m;
  2421 + }
  2422 + });
  2423 +
  2424 + Set<String> gpSet = new HashSet<String>();
  2425 + for(Map<String, Object> t : gpLineList){
  2426 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  2427 + gpSet.add(t.get("lineCode").toString().trim());
  2428 + }
  2429 + }
  2430 +
  2431 +
  2432 + String yyxlSql="SELECT line_code from bsth_c_line "
  2433 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  2434 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  2435 + new RowMapper<Map<String, Object>>(){
  2436 + @Override
  2437 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2438 + Map<String, Object> m=new HashMap<String,Object>();
  2439 + m.put("lineCode", rs.getString("line_code"));
  2440 + return m;
  2441 + }
  2442 + });
  2443 + Set<String> yyLine = new HashSet<String>();
  2444 + for(Map<String, Object> t : yyxlList){
  2445 + if(t.get("lineCode") != null){
  2446 + yyLine.add(t.get("lineCode").toString());
  2447 + }
  2448 + }
  2449 +
  2450 +
  2451 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  2452 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  2453 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  2454 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  2455 + + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"
  2456 + + " from bsth_c_calc_count "
  2457 + + " where date like '%"+month+"%'";
  2458 +
  2459 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  2460 + new RowMapper<Map<String, Object>>(){
  2461 + @Override
  2462 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2463 + Map<String, Object> m=new HashMap<String,Object>();
  2464 + m.put("lineCode",rs.getString("xl"));
  2465 + m.put("lineName", rs.getString("xl_name"));
  2466 + m.put("date", rs.getString("date"));
  2467 +
  2468 + m.put("jhbc", rs.getString("jhbc"));
  2469 + m.put("sjbc", rs.getString("sjbc"));
  2470 + m.put("bczxl", rs.getString("bczxl"));
  2471 + m.put("jhbcz", rs.getString("jhbcz"));
  2472 +
  2473 + m.put("jhcc", rs.getString("jhcc"));
  2474 + m.put("sjcc", rs.getString("sjcc"));
  2475 + m.put("ccl", rs.getString("ccl"));
  2476 + m.put("jhccz", rs.getString("jhccz"));
  2477 +
  2478 + m.put("jhyylc", rs.getString("jhyylc"));
  2479 + m.put("sjyylc", rs.getString("sjyylc"));
  2480 + m.put("jhyylcz", rs.getString("jhyylcz"));
  2481 + m.put("jhkslc", rs.getString("jhkslc"));
  2482 + m.put("sjkslc", rs.getString("sjkslc"));
  2483 + m.put("jhkslcz", rs.getString("jhkslcz"));
  2484 +
  2485 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  2486 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  2487 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  2488 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  2489 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  2490 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  2491 +
  2492 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  2493 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  2494 + m.put("smbczdl", rs.getString("smbczdl"));
  2495 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  2496 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  2497 + m.put("smbczdlz", rs.getString("smbczdlz"));
  2498 +
  2499 + m.put("jhszfcs", rs.getString("jhszfcs"));
  2500 + m.put("sjszfczds", rs.getString("sjszfczds"));
  2501 + m.put("szfczdl", rs.getString("szfczdl"));
  2502 +
  2503 + m.put("jhzgl", rs.getString("jhzgl"));
  2504 + m.put("sjzgl", rs.getString("sjzgl"));
  2505 +
  2506 + Date date = new Date();
  2507 + date.setTime(rs.getTimestamp("create_date").getTime());
  2508 + m.put("createDate", sdf.format(date));
  2509 + return m;
  2510 + }
  2511 + });
  2512 +
  2513 +
  2514 + BigDecimal jhzgl = new BigDecimal(0), sjzgl = new BigDecimal(0);//
  2515 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  2516 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;
  2517 +
  2518 + for(Map<String, Object> t : list){
  2519 + if(yyLine.contains(t.get("lineCode").toString())){
  2520 +
  2521 + jhzgl = jhzgl.add(new BigDecimal(t.get("jhzgl").toString()));
  2522 + sjzgl = sjzgl.add(new BigDecimal(t.get("sjzgl").toString()));
  2523 +
  2524 + jhcc += Long.valueOf(t.get("jhccz").toString());
  2525 + sjcc += Long.valueOf(t.get("sjcc").toString());
  2526 + jhbc += Long.valueOf(t.get("jhbc").toString());
  2527 + sjbc += Long.valueOf(t.get("sjbc").toString());
  2528 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  2529 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  2530 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  2531 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  2532 + if(gpSet.contains(t.get("lineCode").toString())){
  2533 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  2534 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  2535 + }
  2536 +
  2537 + }
  2538 + }
  2539 +
  2540 + resMap.put("date", month);
  2541 +
  2542 + resMap.put("jhzgl", df.format(jhzgl));
  2543 + resMap.put("sjzgl", df.format(sjzgl));
  2544 + resMap.put("jhcc", jhcc);
  2545 + resMap.put("sjcc", sjcc);
  2546 + resMap.put("jhbc", jhbc);
  2547 + resMap.put("sjbc", sjbc);
  2548 + resMap.put("jhsm", jhsmbc);
  2549 + resMap.put("sjsm", sjsmbc);
  2550 + resMap.put("jhqq", jhqqbc);
  2551 + resMap.put("sjqq", sjqqzd);
  2552 + resMap.put("jhgp", jhgpqqbc);
  2553 + resMap.put("sjgp", sjgpqqzd);
  2554 +
  2555 + resMap.put("glzxl", jhzgl.doubleValue()>0?sjzgl.divide(jhzgl,
  2556 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2557 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  2558 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2559 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  2560 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2561 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  2562 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2563 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  2564 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2565 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  2566 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2567 +
  2568 + return JSON.parseObject(JSON.toJSONString(resMap));
  2569 + }
  2570 +
  2571 + /** 按月份查询直属公司统计指标 */
  2572 + @GET
  2573 + @Path("/selectData/getMonthly/{gsdm}/{month}")
  2574 + public JSONObject getMonthly(@PathParam("gsdm") String gsdm, @PathParam("month") String month){
  2575 + Map<String, Object> resMap = new HashMap<String, Object>();
  2576 +
  2577 + String gpLineSql = "select * from bsth_c_line_plate";
  2578 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  2579 + new RowMapper<Map<String, Object>>(){
  2580 + @Override
  2581 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2582 + Map<String, Object> m=new HashMap<String,Object>();
  2583 + m.put("lineName", rs.getString("line_name"));
  2584 + m.put("lineCode", rs.getString("line_code"));
  2585 + return m;
  2586 + }
  2587 + });
  2588 +
  2589 + Set<String> gpSet = new HashSet<String>();
  2590 + for(Map<String, Object> t : gpLineList){
  2591 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  2592 + gpSet.add(t.get("lineCode").toString().trim());
  2593 + }
  2594 + }
  2595 +
  2596 +
  2597 + String yyxlSql="SELECT line_code from bsth_c_line "
  2598 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  2599 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  2600 + new RowMapper<Map<String, Object>>(){
  2601 + @Override
  2602 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2603 + Map<String, Object> m=new HashMap<String,Object>();
  2604 + m.put("lineCode", rs.getString("line_code"));
  2605 + return m;
  2606 + }
  2607 + });
  2608 + Set<String> yyLine = new HashSet<String>();
  2609 + for(Map<String, Object> t : yyxlList){
  2610 + if(t.get("lineCode") != null){
  2611 + yyLine.add(t.get("lineCode").toString());
  2612 + }
  2613 + }
  2614 +
  2615 +
  2616 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  2617 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  2618 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  2619 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  2620 + + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"
  2621 + + " from bsth_c_calc_count "
  2622 + + " where gsdm = '"+gsdm+"' and date like '%"+month+"%'";
  2623 +
  2624 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  2625 + new RowMapper<Map<String, Object>>(){
  2626 + @Override
  2627 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2628 + Map<String, Object> m=new HashMap<String,Object>();
  2629 + m.put("lineCode",rs.getString("xl"));
  2630 + m.put("lineName", rs.getString("xl_name"));
  2631 + m.put("date", rs.getString("date"));
  2632 +
  2633 + m.put("jhbc", rs.getString("jhbc"));
  2634 + m.put("sjbc", rs.getString("sjbc"));
  2635 + m.put("bczxl", rs.getString("bczxl"));
  2636 + m.put("jhbcz", rs.getString("jhbcz"));
  2637 +
  2638 + m.put("jhcc", rs.getString("jhcc"));
  2639 + m.put("sjcc", rs.getString("sjcc"));
  2640 + m.put("ccl", rs.getString("ccl"));
  2641 + m.put("jhccz", rs.getString("jhccz"));
  2642 +
  2643 + m.put("jhyylc", rs.getString("jhyylc"));
  2644 + m.put("sjyylc", rs.getString("sjyylc"));
  2645 + m.put("jhyylcz", rs.getString("jhyylcz"));
  2646 + m.put("jhkslc", rs.getString("jhkslc"));
  2647 + m.put("sjkslc", rs.getString("sjkslc"));
  2648 + m.put("jhkslcz", rs.getString("jhkslcz"));
  2649 +
  2650 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  2651 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  2652 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  2653 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  2654 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  2655 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  2656 +
  2657 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  2658 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  2659 + m.put("smbczdl", rs.getString("smbczdl"));
  2660 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  2661 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  2662 + m.put("smbczdlz", rs.getString("smbczdlz"));
  2663 +
  2664 + m.put("jhszfcs", rs.getString("jhszfcs"));
  2665 + m.put("sjszfczds", rs.getString("sjszfczds"));
  2666 + m.put("szfczdl", rs.getString("szfczdl"));
  2667 +
  2668 + m.put("jhzgl", rs.getString("jhzgl"));
  2669 + m.put("sjzgl", rs.getString("sjzgl"));
  2670 +
  2671 + Date date = new Date();
  2672 + date.setTime(rs.getTimestamp("create_date").getTime());
  2673 + m.put("createDate", sdf.format(date));
  2674 + return m;
  2675 + }
  2676 + });
  2677 +
  2678 +
  2679 + BigDecimal jhzgl = new BigDecimal(0), sjzgl = new BigDecimal(0);//
  2680 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  2681 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;
  2682 +
  2683 + for(Map<String, Object> t : list){
  2684 + if(yyLine.contains(t.get("lineCode").toString())){
  2685 +
  2686 + jhzgl = jhzgl.add(new BigDecimal(t.get("jhzgl").toString()));
  2687 + sjzgl = sjzgl.add(new BigDecimal(t.get("sjzgl").toString()));
  2688 +
  2689 + jhcc += Long.valueOf(t.get("jhccz").toString());
  2690 + sjcc += Long.valueOf(t.get("sjcc").toString());
  2691 + jhbc += Long.valueOf(t.get("jhbc").toString());
  2692 + sjbc += Long.valueOf(t.get("sjbc").toString());
  2693 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  2694 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  2695 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  2696 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  2697 + if(gpSet.contains(t.get("lineCode").toString())){
  2698 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  2699 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  2700 + }
  2701 +
  2702 + }
  2703 + }
  2704 +
  2705 + resMap.put("date", month);
  2706 +
  2707 + resMap.put("jhzgl", df.format(jhzgl));
  2708 + resMap.put("sjzgl", df.format(sjzgl));
  2709 + resMap.put("jhcc", jhcc);
  2710 + resMap.put("sjcc", sjcc);
  2711 + resMap.put("jhbc", jhbc);
  2712 + resMap.put("sjbc", sjbc);
  2713 + resMap.put("jhsm", jhsmbc);
  2714 + resMap.put("sjsm", sjsmbc);
  2715 + resMap.put("jhqq", jhqqbc);
  2716 + resMap.put("sjqq", sjqqzd);
  2717 + resMap.put("jhgp", jhgpqqbc);
  2718 + resMap.put("sjgp", sjgpqqzd);
  2719 +
  2720 + resMap.put("glzxl", jhzgl.doubleValue()>0?sjzgl.divide(jhzgl,
  2721 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2722 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  2723 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2724 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  2725 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2726 + resMap.put("smbzdl", jhsmbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  2727 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2728 + resMap.put("qqzzdl", jhqqbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  2729 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2730 + resMap.put("gpzdl", jhgpqqbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  2731 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2732 +
  2733 + return JSON.parseObject(JSON.toJSONString(resMap));
  2734 + }
  2735 +
  2736 + /** 按日期查询四家直属公司统计指标 */
  2737 + @GET
  2738 + @Path("/selectData/getCompanyData/{date}")
  2739 + public List<Map<String, Object>> getCompanyData(@PathParam("date") String date){
  2740 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  2741 +
  2742 +// String date = sd.format(new Date());
  2743 +
  2744 + String gpLineSql = "select * from bsth_c_line_plate";
  2745 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  2746 + new RowMapper<Map<String, Object>>(){
  2747 + @Override
  2748 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2749 + Map<String, Object> m=new HashMap<String,Object>();
  2750 + m.put("lineName", rs.getString("line_name"));
  2751 + m.put("lineCode", rs.getString("line_code"));
  2752 + return m;
  2753 + }
  2754 + });
  2755 +
  2756 + Set<String> gpSet = new HashSet<String>();
  2757 + for(Map<String, Object> t : gpLineList){
  2758 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  2759 + gpSet.add(t.get("lineCode").toString().trim());
  2760 + }
  2761 + }
  2762 +
  2763 +
  2764 + String yyxlSql="SELECT line_code from bsth_c_line "
  2765 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  2766 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  2767 + new RowMapper<Map<String, Object>>(){
  2768 + @Override
  2769 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2770 + Map<String, Object> m=new HashMap<String,Object>();
  2771 + m.put("lineCode", rs.getString("line_code"));
  2772 + return m;
  2773 + }
  2774 + });
  2775 + Set<String> yyLine = new HashSet<String>();
  2776 + for(Map<String, Object> t : yyxlList){
  2777 + if(t.get("lineCode") != null){
  2778 + yyLine.add(t.get("lineCode").toString());
  2779 + }
  2780 + }
  2781 +
  2782 +
  2783 + String gsSql="SELECT business_name, business_code from bsth_c_business ";
  2784 + List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,
  2785 + new RowMapper<Map<String, Object>>(){
  2786 + @Override
  2787 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2788 + Map<String, Object> m=new HashMap<String,Object>();
  2789 + m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");
  2790 + m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");
  2791 + return m;
  2792 + }
  2793 + });
  2794 + final Map<String, String> gsMap = new HashMap<String, String>();
  2795 + for(Map<String, Object> t : gsList){
  2796 + if(t.get("code") != null && t.get("name") != null){
  2797 + gsMap.put(t.get("code").toString(), t.get("name").toString().substring(0, 2));
  2798 + }
  2799 + }
  2800 +
  2801 +
  2802 + String sql="select gsdm,xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  2803 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  2804 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  2805 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  2806 + + " jhszfcs,sjszfczds,szfczdl,jhzgl,sjzgl,create_date"
  2807 + + " from bsth_c_calc_count where date = ?";
  2808 +
  2809 + List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{date},
  2810 + new RowMapper<Map<String, Object>>(){
  2811 + @Override
  2812 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  2813 + Map<String, Object> m=new HashMap<String,Object>();
  2814 + m.put("gs",rs.getString("gsdm")!=null?gsMap.get(rs.getString("gsdm")):"");
  2815 + m.put("lineCode",rs.getString("xl"));
  2816 + m.put("lineName", rs.getString("xl_name"));
  2817 + m.put("date", rs.getString("date"));
  2818 +
  2819 + m.put("jhbc", rs.getString("jhbc"));
  2820 + m.put("sjbc", rs.getString("sjbc"));
  2821 + m.put("bczxl", rs.getString("bczxl"));
  2822 + m.put("jhbcz", rs.getString("jhbcz"));
  2823 +
  2824 + m.put("jhcc", rs.getString("jhcc"));
  2825 + m.put("sjcc", rs.getString("sjcc"));
  2826 + m.put("ccl", rs.getString("ccl"));
  2827 + m.put("jhccz", rs.getString("jhccz"));
  2828 +
  2829 + m.put("jhyylc", rs.getString("jhyylc"));
  2830 + m.put("sjyylc", rs.getString("sjyylc"));
  2831 + m.put("jhyylcz", rs.getString("jhyylcz"));
  2832 + m.put("jhkslc", rs.getString("jhkslc"));
  2833 + m.put("sjkslc", rs.getString("sjkslc"));
  2834 + m.put("jhkslcz", rs.getString("jhkslcz"));
  2835 +
  2836 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  2837 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  2838 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  2839 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  2840 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  2841 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  2842 +
  2843 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  2844 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  2845 + m.put("smbczdl", rs.getString("smbczdl"));
  2846 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  2847 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  2848 + m.put("smbczdlz", rs.getString("smbczdlz"));
  2849 +
  2850 + m.put("jhszfcs", rs.getString("jhszfcs"));
  2851 + m.put("sjszfczds", rs.getString("sjszfczds"));
  2852 + m.put("szfczdl", rs.getString("szfczdl"));
  2853 +
  2854 + m.put("jhzgl", rs.getString("jhzgl"));
  2855 + m.put("sjzgl", rs.getString("sjzgl"));
  2856 +
  2857 + Date date = new Date();
  2858 + date.setTime(rs.getTimestamp("create_date").getTime());
  2859 + m.put("createDate", sdf.format(date));
  2860 + return m;
  2861 + }
  2862 + });
  2863 +
  2864 +
  2865 + Map<String, Integer> sortMap = new HashMap<String, Integer>();
  2866 + sortMap.put("闵行客运", 0);
  2867 + sortMap.put("金球公交", 1);
  2868 + sortMap.put("露虹公交", 2);
  2869 + sortMap.put("合计", 3);
  2870 + Map<String, Object> ygMap = new HashMap<String, Object>();
  2871 + ygMap.put("gs", "闵行客运");
  2872 + resList.add(ygMap);
  2873 + Map<String, Object> snMap = new HashMap<String, Object>();
  2874 + snMap.put("gs", "金球公交");
  2875 + resList.add(snMap);
  2876 + Map<String, Object> jgMap = new HashMap<String, Object>();
  2877 + jgMap.put("gs", "露虹公交");
  2878 + resList.add(jgMap);
  2879 + Map<String, Object> pjMap = new HashMap<String, Object>();
  2880 + pjMap.put("gs", "合计");
  2881 + resList.add(pjMap);
  2882 +
  2883 +
  2884 + for(Map<String, Object> t : list){
  2885 + if(yyLine.contains(t.get("lineCode").toString())){
  2886 + if(sortMap.get(t.get("gs")) != null){
  2887 + Map<String, Object> m = resList.get(sortMap.get(t.get("gs")));
  2888 + mapPut(m, "jhcc", t.get("jhccz").toString());
  2889 + mapPut(m, "sjcc", t.get("sjcc").toString());
  2890 + mapPut(m, "jhbc", t.get("jhbc").toString());
  2891 + mapPut(m, "sjbc", t.get("sjbc").toString());
  2892 + mapPut(m, "jhsmbc", t.get("jhsmbcs").toString());
  2893 + mapPut(m, "sjsmbc", t.get("sjsmbczds").toString());
  2894 + mapPut(m, "jhqqbc", t.get("jhszfcs").toString());
  2895 + mapPut(m, "sjqqzd", t.get("sjszfczds").toString());
  2896 + if(gpSet.contains(t.get("lineCode").toString())){
  2897 + mapPut(m, "jhgpqqbc", t.get("jhszfcs").toString());
  2898 + mapPut(m, "sjgpqqzd", t.get("sjszfczds").toString());
  2899 + }
  2900 + mapPut(m, "jhzgl", t.get("jhzgl").toString());
  2901 + mapPut(m, "sjzgl", t.get("sjzgl").toString());
  2902 + }
  2903 +
  2904 + mapPut(pjMap, "jhcc", t.get("jhccz").toString());
  2905 + mapPut(pjMap, "sjcc", t.get("sjcc").toString());
  2906 + mapPut(pjMap, "jhbc", t.get("jhbc").toString());
  2907 + mapPut(pjMap, "sjbc", t.get("sjbc").toString());
  2908 + mapPut(pjMap, "jhsmbc", t.get("jhsmbcs").toString());
  2909 + mapPut(pjMap, "sjsmbc", t.get("sjsmbczds").toString());
  2910 + mapPut(pjMap, "jhqqbc", t.get("jhszfcs").toString());
  2911 + mapPut(pjMap, "sjqqzd", t.get("sjszfczds").toString());
  2912 + if(gpSet.contains(t.get("lineCode").toString())){
  2913 + mapPut(pjMap, "jhgpqqbc", t.get("jhszfcs").toString());
  2914 + mapPut(pjMap, "sjgpqqzd", t.get("sjszfczds").toString());
  2915 + }
  2916 + mapPut(pjMap, "jhzgl", t.get("jhzgl").toString());
  2917 + mapPut(pjMap, "sjzgl", t.get("sjzgl").toString());
  2918 + }
  2919 + }
  2920 +
  2921 +
  2922 + //计算签卡率
  2923 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  2924 + long jh = 0, sj = 0;
  2925 + for(ScheduleRealInfo s : findAll){
  2926 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  2927 + if(!isInOut(s) && !s.isCcService() && s.getStatus() != -1 && s.getStatus() != 0){
  2928 + if(s.getGsBm()!=null && sortMap.get(gsMap.get(s.getGsBm()!=null?s.getGsBm():"")) != null){
  2929 + Map<String, Object> m = resList.get(sortMap.get(gsMap.get(s.getGsBm())));
  2930 + ++jh;
  2931 + mapPut(m, "bcs", 1);
  2932 + //String sty = decimalToBinary(s.getRfidState());
  2933 + String sty = decimalToBinary(0);
  2934 + Integer state = Integer.parseInt(sty);
  2935 + if ((state & 4) == 4) {
  2936 + ++sj;
  2937 + mapPut(m, "qks", 1);
  2938 + }
  2939 + }
  2940 + }
  2941 + }
  2942 + }
  2943 + mapPut(pjMap, "bcs", jh);
  2944 + mapPut(pjMap, "qks", sj);
  2945 +
  2946 +
  2947 + for(Map<String, Object> m : resList){
  2948 + m.put("date", date);
  2949 +
  2950 + if(m.containsKey("jhzgl") && m.containsKey("sjzgl")){
  2951 + m.put("glzxl", new BigDecimal(m.get("jhzgl").toString()).doubleValue()>0?
  2952 + new BigDecimal(m.get("sjzgl").toString()).divide(new BigDecimal(m.get("jhzgl").toString()),
  2953 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2954 + } else {
  2955 + m.put("glzxl", "0");
  2956 + }
  2957 + if(m.containsKey("jhcc") && m.containsKey("sjcc")){
  2958 + m.put("ccl", new BigDecimal(m.get("jhcc").toString()).doubleValue()>0?
  2959 + new BigDecimal(m.get("sjcc").toString()).divide(new BigDecimal(m.get("jhcc").toString()),
  2960 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2961 + } else {
  2962 + m.put("ccl", "0");
  2963 + }
  2964 + if(m.containsKey("jhcc") && m.containsKey("sjcc")){
  2965 + m.put("bczxl", new BigDecimal(m.get("jhbc").toString()).doubleValue()>0?
  2966 + new BigDecimal(m.get("sjbc").toString()).divide(new BigDecimal(m.get("jhbc").toString()),
  2967 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2968 + } else {
  2969 + m.put("bczxl", "0");
  2970 + }
  2971 + if(m.containsKey("jhsmbc") && m.containsKey("sjsmbc")){
  2972 + m.put("smbzdl", new BigDecimal(m.get("jhsmbc").toString()).doubleValue()>0?
  2973 + new BigDecimal(m.get("sjsmbc").toString()).divide(new BigDecimal(m.get("jhsmbc").toString()),
  2974 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2975 + } else {
  2976 + m.put("smbzdl", "0");
  2977 + }
  2978 + if(m.containsKey("jhqqbc") && m.containsKey("sjqqzd")){
  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 + } else {
  2983 + m.put("qqzzdl", "0");
  2984 + }
  2985 + if(m.containsKey("jhgpqqbc") && m.containsKey("sjgpqqzd")){
  2986 + m.put("gpzdl", new BigDecimal(m.get("jhgpqqbc").toString()).doubleValue()>0?
  2987 + new BigDecimal(m.get("sjgpqqzd").toString()).divide(new BigDecimal(m.get("jhgpqqbc").toString()),
  2988 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2989 + } else {
  2990 + m.put("gpzdl", "0");
  2991 + }
  2992 + if(m.containsKey("bcs") && m.containsKey("qks")){
  2993 + m.put("qkl", new BigDecimal(m.get("bcs")!=null?m.get("bcs").toString():"0").doubleValue()>0?
  2994 + new BigDecimal(m.get("qks")!=null?m.get("qks").toString():"0").divide(new BigDecimal(m.get("bcs").toString()),
  2995 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  2996 + } else {
  2997 + m.put("qkl", "0");
  2998 + }
  2999 + }
  3000 +
  3001 + return resList;
  3002 + }
  3003 +
  3004 + /** 报备登记查询接口 */
  3005 + @GET
  3006 + @Path("/selectData/getReport/startDate/{startDate}/endDate/{endDate}")
  3007 + public List<Map<String, Object>> getReport(@PathParam("startDate") String starDate,
  3008 + @PathParam("endDate") String endDate){
  3009 + Date d1 = new Date(), d2 = new Date();
  3010 + try{
  3011 + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
  3012 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3013 + d1 = sd.parse(starDate);
  3014 + d2 = sd.parse(endDate);
  3015 + d2.setTime(d2.getTime() + (1l*1000*60*60*24 - 1));
  3016 + starDate = sdf.format(d1);
  3017 + endDate = sdf.format(d2);
  3018 + }catch(ParseException e){
  3019 + // TODO Auto-generated catch block
  3020 + e.printStackTrace();
  3021 + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  3022 + Map<String, Object> result = new HashMap<String, Object>();
  3023 + result.put("msg", "参数日期格式错误");
  3024 + list.add(result);
  3025 + return list;
  3026 + }
  3027 + String sql="SELECT ID,REPORT_TYPE,REPORT_GS,REPORT_FGS,REPORT_GSNAME,REPORT_FGSNAME,"
  3028 + + " REPORT_DATE,REPORT_BBR,REPORT_XL,REPORT_XLNAME,REPORT_STATION,REPORT_DWSBBM,"
  3029 + + " REPORT_DWSBSJ,REPORT_YWSJ,REPORT_SMBWD,REPORT_DJGSJ,REPORT_DJGYY,REPORT_TFSJ,"
  3030 + + " REPORT_YXSJ,REPORT_YXBC,REPORT_TZCS,REPORT_SGBH,REPORT_ZBH,REPORT_PZH,REPORT_JSY,"
  3031 + + " REPORT_SGSJ,REPORT_SGDD,REPORT_XSFX,REPORT_SGDX,REPORT_DXPZH,REPORT_SGGK,"
  3032 + + " REPORT_SSRS,REPORT_SWRS,REPORT_BGR,REPORT_BGRDH,REPORT_BZ,REPORT_ROAD,STATUS,"
  3033 + + " CREATE_BY,CREATE_DATE,UPDATE_BY,UPDATE_DATE"
  3034 + + " from bsth_t_report "
  3035 + + " where REPORT_DATE >= ? and REPORT_DATE <= ?";
  3036 + List<Map<String, Object>> list=jdbcTemplate.query(sql, new Object[]{starDate, endDate},
  3037 + new RowMapper<Map<String, Object>>(){
  3038 + @Override
  3039 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3040 + Map<String, Object> m=new HashMap<String,Object>();
  3041 + m.put("ID", rs.getString("ID"));
  3042 + m.put("REPORT_TYPE", rs.getString("REPORT_TYPE"));
  3043 + m.put("REPORT_GS", rs.getString("REPORT_GS"));
  3044 + m.put("REPORT_FGS",rs.getString("REPORT_FGS"));
  3045 + m.put("REPORT_GSNAME",rs.getString("REPORT_GSNAME"));
  3046 + m.put("REPORT_FGSNAME",rs.getString("REPORT_FGSNAME"));
  3047 + m.put("REPORT_DATE",rs.getString("REPORT_DATE"));
  3048 + m.put("REPORT_BBR",rs.getString("REPORT_BBR"));
  3049 + m.put("REPORT_XL",rs.getString("REPORT_XL"));
  3050 + m.put("REPORT_XLNAME",rs.getString("REPORT_XLNAME"));
  3051 + m.put("REPORT_STATION",rs.getString("REPORT_STATION"));
  3052 + m.put("REPORT_DWSBBM",rs.getString("REPORT_DWSBBM"));
  3053 + m.put("REPORT_DWSBSJ",rs.getString("REPORT_DWSBSJ"));
  3054 + m.put("REPORT_YWSJ",rs.getString("REPORT_YWSJ"));
  3055 + m.put("REPORT_SMBWD",rs.getString("REPORT_SMBWD"));
  3056 + m.put("REPORT_DJGSJ",rs.getString("REPORT_DJGSJ"));
  3057 + m.put("REPORT_DJGYY",rs.getString("REPORT_DJGYY"));
  3058 + m.put("REPORT_TFSJ",rs.getString("REPORT_TFSJ"));
  3059 + m.put("REPORT_YXSJ",rs.getString("REPORT_YXSJ"));
  3060 + m.put("REPORT_YXBC",rs.getString("REPORT_YXBC"));
  3061 + m.put("REPORT_TZCS",rs.getString("REPORT_TZCS"));
  3062 + m.put("REPORT_SGBH",rs.getString("REPORT_SGBH"));
  3063 + m.put("REPORT_ZBH",rs.getString("REPORT_ZBH"));
  3064 + m.put("REPORT_PZH",rs.getString("REPORT_PZH"));
  3065 + m.put("REPORT_JSY",rs.getString("REPORT_JSY"));
  3066 + m.put("REPORT_SGSJ",rs.getString("REPORT_SGSJ"));
  3067 + m.put("REPORT_SGDD",rs.getString("REPORT_SGDD"));
  3068 + m.put("REPORT_XSFX", rs.getString("REPORT_XSFX"));
  3069 + m.put("REPORT_SGDX", rs.getString("REPORT_SGDX"));
  3070 + m.put("REPORT_DXPZH", rs.getString("REPORT_DXPZH"));
  3071 + m.put("REPORT_SGGK", rs.getString("REPORT_SGGK"));
  3072 + m.put("REPORT_SSRS", rs.getString("REPORT_SSRS"));
  3073 + m.put("REPORT_SWRS", rs.getString("REPORT_SWRS"));
  3074 + m.put("REPORT_BGR", rs.getString("REPORT_BGR"));
  3075 + m.put("REPORT_BGRDH", rs.getString("REPORT_BGRDH"));
  3076 + m.put("REPORT_BZ", rs.getString("REPORT_BZ"));
  3077 + m.put("REPORT_ROAD", rs.getString("REPORT_ROAD"));
  3078 + m.put("STATUS", rs.getString("STATUS"));
  3079 + m.put("CREATE_BY", rs.getString("CREATE_BY"));
  3080 + m.put("CREATE_DATE", rs.getString("CREATE_DATE"));
  3081 + m.put("UPDATE_BY", rs.getString("UPDATE_BY"));
  3082 + m.put("UPDATE_DATE", rs.getString("UPDATE_DATE"));
  3083 + return m;
  3084 + }
  3085 + });
  3086 +
  3087 + return list;
  3088 + }
  3089 +
  3090 + /** 按日期查询所有线路大间隔情况 */
  3091 + @GET
  3092 + @Path("/selectData/getLineInterval/{date}")
  3093 + public List<Map<String, Object>> getLineInterval(@PathParam("date") String date){
  3094 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  3095 +
  3096 + String gsSql="SELECT business_name, business_code, up_code from bsth_c_business ";
  3097 + List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,
  3098 + new RowMapper<Map<String, Object>>(){
  3099 + @Override
  3100 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3101 + Map<String, Object> m=new HashMap<String,Object>();
  3102 + m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");
  3103 + m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");
  3104 + m.put("upCode", rs.getString("up_code")!=null?rs.getString("up_code"):"");
  3105 + return m;
  3106 + }
  3107 + });
  3108 +
  3109 + Map<String, Object> gsMap = new HashMap<String, Object>();
  3110 + Map<String, Object> fgsMap = new HashMap<String, Object>();
  3111 + for(Map<String, Object> m : gsList){
  3112 + if(m.get("upCode") != null && m.get("upCode").toString().trim().length() > 0
  3113 + && !("0".equals(m.get("upCode").toString().trim()))){
  3114 + if("88".equals(m.get("upCode").toString().trim())){
  3115 + gsMap.put(m.get("code").toString(), m.get("name").toString());
  3116 + } else {
  3117 + fgsMap.put(m.get("code").toString()+"_"+m.get("upCode").toString(), m.get("name").toString());
  3118 + }
  3119 + }
  3120 + }
  3121 +
  3122 + String calcIntervalSql = "select * from bsth_c_calc_interval where date = ? and sfyy = 1";
  3123 + List<Map<String, Object>> calcIntervalList=jdbcTemplate.query(calcIntervalSql,
  3124 + new Object[]{date},
  3125 + new RowMapper<Map<String, Object>>(){
  3126 + @Override
  3127 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3128 + Map<String, Object> m=new HashMap<String,Object>();
  3129 + m.put("gsbm", rs.getString("gsbm"));
  3130 + m.put("fgsbm", rs.getString("fgsbm"));
  3131 + m.put("date", rs.getString("date"));
  3132 + m.put("xlBm", rs.getString("xl_bm"));
  3133 + m.put("xlName", rs.getString("xl_name"));
  3134 + m.put("level", rs.getString("level"));
  3135 + return m;
  3136 + }
  3137 + });
  3138 +
  3139 + String calcIntervalDetailSql = "select * from bsth_c_calc_interval_detail where date = ?";
  3140 + List<Map<String, Object>> calcIntervalDetailList=jdbcTemplate.query(calcIntervalDetailSql,
  3141 + new Object[]{date},
  3142 + new RowMapper<Map<String, Object>>(){
  3143 + @Override
  3144 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3145 + Map<String, Object> m=new HashMap<String,Object>();
  3146 + m.put("date", rs.getString("date"));
  3147 + m.put("xlBm", rs.getString("line_code"));
  3148 + m.put("xlName", rs.getString("line_name"));
  3149 + m.put("level", rs.getString("level"));
  3150 + m.put("station", rs.getString("station"));
  3151 + m.put("jhfc1", rs.getString("jhfc1"));
  3152 + m.put("sjfc1", rs.getString("sjfc1"));
  3153 + m.put("jhfc2", rs.getString("jhfc2"));
  3154 + m.put("sjfc2", rs.getString("sjfc2"));
  3155 + m.put("subTime", rs.getString("sub_time"));
  3156 + m.put("remark", rs.getString("remark"));
  3157 + return m;
  3158 + }
  3159 + });
  3160 +
  3161 + Map<String, Map<String, Object>> calcIntervalMap = new HashMap<String, Map<String, Object>>();
  3162 +
  3163 + for(Map<String, Object> m : calcIntervalList){
  3164 + calcIntervalMap.put(m.get("xlBm").toString(), m);
  3165 + }
  3166 +
  3167 + for(Map<String, Object> m : calcIntervalDetailList){
  3168 + String xlBm = m.get("xlBm").toString();
  3169 + if(calcIntervalMap.containsKey(xlBm)){
  3170 + Map<String, Object> map = calcIntervalMap.get(xlBm);
  3171 + m.put("gs", gsMap.get(map.get("gsbm").toString()));
  3172 + m.put("fgs", fgsMap.get(map.get("fgsbm").toString() + "_" + map.get("gsbm").toString()));
  3173 + resList.add(m);
  3174 + }
  3175 + }
  3176 +
  3177 + return resList;
  3178 + }
  3179 +
  3180 + /** 按日期(加前7天共8天)查询所有线路大间隔次数 */
  3181 + @GET
  3182 + @Path("/selectData/getLastWeekIntervalSum/{date}")
  3183 + public List<Map<String, Object>> getLastWeekIntervalSum(@PathParam("date") String date) throws ParseException{
  3184 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  3185 +
  3186 + String gsSql="SELECT business_name, business_code, up_code from bsth_c_business ";
  3187 + List<Map<String, Object>> gsList=jdbcTemplate.query(gsSql,
  3188 + new RowMapper<Map<String, Object>>(){
  3189 + @Override
  3190 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3191 + Map<String, Object> m=new HashMap<String,Object>();
  3192 + m.put("name", rs.getString("business_name")!=null?rs.getString("business_name"):"");
  3193 + m.put("code", rs.getString("business_code")!=null?rs.getString("business_code"):"");
  3194 + m.put("upCode", rs.getString("up_code")!=null?rs.getString("up_code"):"");
  3195 + return m;
  3196 + }
  3197 + });
  3198 + Map<String, Object> gsMap = new HashMap<String, Object>();
  3199 + for(Map<String, Object> m : gsList){
  3200 + if(m.get("upCode") != null && m.get("upCode").toString().trim().length() > 0
  3201 + && !("0".equals(m.get("upCode").toString().trim()))){
  3202 + if("88".equals(m.get("upCode").toString().trim())){
  3203 + gsMap.put(m.get("code").toString(), m.get("name").toString());
  3204 + }
  3205 + }
  3206 + }
  3207 +
  3208 + String[] gsS = {gsMap.get("77").toString(), gsMap.get("300").toString(), gsMap.get("302").toString()};
  3209 + String[] levelS = {"A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "D", "E"};
  3210 + List<String> keyList = new ArrayList<String>();
  3211 + for(String gs : gsS){
  3212 + for(String level : levelS){
  3213 + keyList.add(gs + "_" + level);
  3214 + }
  3215 + }
  3216 +
  3217 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  3218 + for(long l = 7l; l >= 0l; l--){
  3219 + Date d = sdf.parse(date);
  3220 + d.setTime(d.getTime() - l*1000*60*60*24);
  3221 + String date1 = sdf.format(d);
  3222 +
  3223 + String calcIntervalSql = "select * from bsth_c_calc_interval where date = ? and sfyy = 1";
  3224 + List<Map<String, Object>> calcIntervalList=jdbcTemplate.query(calcIntervalSql,
  3225 + new Object[]{date1},
  3226 + new RowMapper<Map<String, Object>>(){
  3227 + @Override
  3228 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3229 + Map<String, Object> m=new HashMap<String,Object>();
  3230 + m.put("gsbm", rs.getString("gsbm"));
  3231 + m.put("fgsbm", rs.getString("fgsbm"));
  3232 + m.put("date", rs.getString("date"));
  3233 + m.put("level", rs.getString("level"));
  3234 + m.put("djgAll", rs.getString("djg_all"));
  3235 + m.put("djgZgf", rs.getString("djg_zgf"));
  3236 + m.put("djgWgf", rs.getString("djg_wgf"));
  3237 + m.put("djgDg", rs.getString("djg_dg"));
  3238 + return m;
  3239 + }
  3240 + });
  3241 +
  3242 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  3243 + for(Map<String, Object> m : calcIntervalList){
  3244 + String gsName = gsMap.get(m.get("gsbm").toString()).toString();
  3245 + String level = m.get("level").toString();
  3246 + String key = gsName + "_" + level;
  3247 + if(!(keyMap.containsKey(key))){
  3248 + Map<String, Object> map = new HashMap<String, Object>();
  3249 + map.put("date", date1);
  3250 + map.put("gs", gsName);
  3251 + map.put("level", level);
  3252 + map.put("djgAll", 0);
  3253 + map.put("djgZgf", 0);
  3254 + map.put("djgWgf", 0);
  3255 + map.put("djgDg", 0);
  3256 + keyMap.put(key, map);
  3257 + }
  3258 + if(m.get("djgAll") != null && m.get("djgAll").toString().trim().length() > 0
  3259 + && Long.valueOf(m.get("djgAll").toString()) > 0l){
  3260 + Map<String, Object> map = keyMap.get(key);
  3261 + map.put("djgAll", Long.valueOf(map.get("djgAll").toString()) + Long.valueOf(m.get("djgAll").toString()));
  3262 + map.put("djgZgf", Long.valueOf(map.get("djgZgf").toString()) + Long.valueOf(m.get("djgZgf").toString()));
  3263 + map.put("djgWgf", Long.valueOf(map.get("djgWgf").toString()) + Long.valueOf(m.get("djgWgf").toString()));
  3264 + map.put("djgDg", Long.valueOf(map.get("djgDg").toString()) + Long.valueOf(m.get("djgDg").toString()));
  3265 + }
  3266 + }
  3267 +
  3268 + for(String key : keyList){
  3269 + if(keyMap.containsKey(key)){
  3270 + resList.add(keyMap.get(key));
  3271 + }
  3272 + }
  3273 + }
  3274 +
  3275 + return resList;
  3276 + }
  3277 +
  3278 + /** 按日期查询所有线路首班末班班次数 */
  3279 + @GET
  3280 + @Path("/selectData/getFirstAndLast/{date}")
  3281 + public List<Map<String, Object>> getFirstAndLast(@PathParam("date") String date){
  3282 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  3283 +
  3284 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  3285 + SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy-MM-dd");
  3286 + DecimalFormat df = new DecimalFormat("0.00");
  3287 + Date createDate = new Date();
  3288 + String sfss = "1"; //是否实时;=1为实时。
  3289 +
  3290 + String yyxlSql="SELECT line_code from bsth_c_line "
  3291 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  3292 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  3293 + new RowMapper<Map<String, Object>>(){
  3294 + @Override
  3295 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3296 + Map<String, Object> m=new HashMap<String,Object>();
  3297 + m.put("lineCode", rs.getString("line_code"));
  3298 + return m;
  3299 + }
  3300 + });
  3301 +
  3302 + //key:线路编码;value:每日营运开始时间
  3303 + Map<String, Long> yyLine = new HashMap<String, Long>();
  3304 + for(Map<String, Object> t : yyxlList){
  3305 + if(t.get("lineCode") != null){
  3306 + String lineCode = t.get("lineCode").toString();
  3307 +// yyLine.add(t.get("lineCode").toString());
  3308 + String minfcsj="02:00";
  3309 + String sqlMinYysj="select start_opt from bsth_c_line_config where "
  3310 + + " id = ("
  3311 + + "select max(id) from bsth_c_line_config where line = ?"
  3312 + + ")";
  3313 + List<String> list= jdbcTemplate.query(sqlMinYysj,
  3314 + new Object[]{lineCode},
  3315 + new RowMapper<String>(){
  3316 + @Override
  3317 + public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  3318 + String startopt=rs.getString("start_opt");
  3319 + return startopt;
  3320 + }
  3321 + });
  3322 + if(list.size()>0){
  3323 + minfcsj=list.get(0);
  3324 + }
  3325 + String[] minSjs = minfcsj.split(":");
  3326 + //车辆最早发车时间 用来过滤超第二天0点的数据
  3327 + Long minSj=Long.parseLong(minSjs[0])*60+Long.parseLong(minSjs[1]);
  3328 +
  3329 + yyLine.put(lineCode, minSj);
  3330 + }
  3331 + }
  3332 +
  3333 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  3334 + Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>();
  3335 + Map<String, Map<String, Object>> lineXX = new HashMap<String, Map<String, Object>>();
  3336 + for(ScheduleRealInfo s : findAll){
  3337 +// if(s.getBcType().equals("region") || s.getBcType().equals("venting")
  3338 +// || s.getBcType().equals("major") || isInOut(s)){
  3339 + if(s.getBcType().equals("region") || isInOut(s)){
  3340 + continue; //区间班次、直放班次、放站班次与空驶班次不做首末班统计
  3341 + }
  3342 + if(yyLine.containsKey(s.getXlBm())){ //只统计营运线路
  3343 + if(!(keyMap.containsKey(s.getXlBm()))){
  3344 + keyMap.put(s.getXlBm(), new ArrayList<ScheduleRealInfo>());
  3345 + }
  3346 + keyMap.get(s.getXlBm()).add(s);
  3347 +
  3348 + if(!(lineXX.containsKey(s.getXlBm()))){
  3349 + lineXX.put(s.getXlBm(), new HashMap<String, Object>());
  3350 + }
  3351 + Map<String, Object> xx = lineXX.get(s.getXlBm());
  3352 + if(!(xx.containsKey("lineName")) && s.getXlName() != null && s.getXlName().trim().length() > 0){
  3353 + xx.put("lineName", s.getXlName());
  3354 + }
  3355 + if(!(xx.containsKey("gsBm")) && s.getGsBm() != null && s.getGsBm().trim().length() > 0){
  3356 + xx.put("gsBm", s.getGsBm());
  3357 + }
  3358 + if(!(xx.containsKey("gsName")) && s.getGsName() != null && s.getGsName().trim().length() > 0){
  3359 + xx.put("gsName", s.getGsName());
  3360 + }
  3361 + if(!(xx.containsKey("fgsBm")) && s.getFgsBm() != null && s.getFgsBm().trim().length() > 0){
  3362 + xx.put("fgsBm", s.getFgsBm());
  3363 + }
  3364 + if(!(xx.containsKey("fgsName")) && s.getFgsName() != null && s.getFgsName().trim().length() > 0){
  3365 + xx.put("fgsName", s.getFgsName());
  3366 + }
  3367 + }
  3368 + }
  3369 +
  3370 + for(String lineCode : keyMap.keySet()){
  3371 + List<ScheduleRealInfo> listjh0 = new ArrayList<ScheduleRealInfo>();
  3372 + List<ScheduleRealInfo> listjh1 = new ArrayList<ScheduleRealInfo>();
  3373 + List<ScheduleRealInfo> listsj0 = new ArrayList<ScheduleRealInfo>();
  3374 + List<ScheduleRealInfo> listsj1 = new ArrayList<ScheduleRealInfo>();
  3375 + Long minFcsj = yyLine.get(lineCode);
  3376 + for(ScheduleRealInfo s : keyMap.get(lineCode)){
  3377 + String[] fcsj = s.getFcsj().split(":");
  3378 + Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
  3379 + Long fscjT = 0L;
  3380 + if (fcsjL < minFcsj) {
  3381 + Calendar calendar = new GregorianCalendar();
  3382 + calendar.setTime(s.getScheduleDate());
  3383 + calendar.add(calendar.DATE, 1);
  3384 + Date d = calendar.getTime();
  3385 + try {
  3386 + fscjT = sdf.parse(sdf_.format(d) + " " + s.getFcsj()).getTime();
  3387 + } catch (ParseException e) {
  3388 + // TODO Auto-generated catch block
  3389 + e.printStackTrace();
  3390 + }
  3391 + } else {
  3392 + try {
  3393 + fscjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
  3394 + } catch (ParseException e) {
  3395 + // TODO Auto-generated catch block
  3396 + e.printStackTrace();
  3397 + }
  3398 + }
  3399 +
  3400 + if (StringUtils.isEmpty(s.getFcsjActual())) {
  3401 + s.setFcsjActualTime(0L);
  3402 + s.setFcsjT(fscjT);
  3403 + } else {
  3404 + Long fcsjAcual = 0L;
  3405 + try {
  3406 + fcsjAcual = sdf.parse(s.getRealExecDate() + " " + s.getFcsjActual()).getTime();
  3407 + if(fcsjAcual - fscjT > (20l*60*60*1000)){//如果实发比计发大20小时则认为日期有误,如实发在次日,计发为00:00,实发为23:59
  3408 + fcsjAcual -= 1l*24*60*60*1000;
  3409 + } if(fscjT - fcsjAcual > (20l*60*60*1000)){
  3410 + fcsjAcual += 1l*24*60*60*1000;
  3411 + }
  3412 + s.setFcsjActualTime(fcsjAcual);
  3413 + s.setFcsjT(fscjT);
  3414 + } catch (ParseException e) {
  3415 + // TODO Auto-generated catch block
  3416 + e.printStackTrace();
  3417 + }
  3418 + }
  3419 +
  3420 + if (!(s.isSflj())) {
  3421 + if (s.getXlDir().equals("0")) {
  3422 + listjh0.add(s);
  3423 + } else {
  3424 + listjh1.add(s);
  3425 + }
  3426 + }
  3427 +
  3428 + if(s.getFcsjActual() != null && s.getFcsjActual().trim().length() > 0){
  3429 + if (s.getXlDir().equals("0")) {
  3430 + listsj0.add(s);
  3431 + } else {
  3432 + listsj1.add(s);
  3433 + }
  3434 + }
  3435 + }
  3436 +
  3437 + Collections.sort(listjh0, new ComparableJhfc());
  3438 + Collections.sort(listjh1, new ComparableJhfc());
  3439 + Collections.sort(listsj0, new ComparableAcual());
  3440 + Collections.sort(listsj1, new ComparableAcual());
  3441 + int jhFirst = 0, jhLast = 0, sjzdFirst = 0, sjzdLast = 0;
  3442 +
  3443 + //上行
  3444 + if(listjh0.size() > 0){
  3445 + ScheduleRealInfo jhsb = listjh0.get(0); //计划首班
  3446 + for(int f = 0; f < listjh0.size(); f++){
  3447 + jhsb = listjh0.get(f); //计划首班
  3448 + String bcType = jhsb.getBcType();
  3449 + List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhsb.getSpId());
  3450 + if(oList.size() > 0 && oList.get(0) != null
  3451 + && oList.get(0).trim().length() > 0){
  3452 + bcType = oList.get(0).trim();
  3453 + }
  3454 + if(bcType.equals("region") || bcType.equals("venting")
  3455 + || bcType.equals("major") || isInOut(bcType)){
  3456 + continue;
  3457 + }
  3458 + break;
  3459 + }
  3460 + if("1".equals(sfss) ? createDate.getTime() > jhsb.getFcsjT() : true){
  3461 + jhFirst++;
  3462 + for(int i = 0; i < listsj0.size(); i++){
  3463 + ScheduleRealInfo sjsb = listsj0.get(i); //实际首班
  3464 + String bcType = sjsb.getBcType();
  3465 + if(bcType.equals("region") || bcType.equals("venting")
  3466 + || bcType.equals("major") || isInOut(bcType)){
  3467 + continue;
  3468 + }
  3469 + long wd = sjsb.getFcsjActualTime() - jhsb.getFcsjT(); //误点,快1慢2
  3470 + if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){
  3471 + sjzdFirst++;
  3472 + break;
  3473 + }
  3474 + }
  3475 + }
  3476 +
  3477 + if(listjh0.size() > 1){
  3478 + ScheduleRealInfo jhmb = listjh0.get(listjh0.size() - 1); //计划末班
  3479 + for(int l = listjh0.size() - 1; l >= 0; l--){
  3480 + jhmb = listjh0.get(l); //计划首班
  3481 + String bcType = jhmb.getBcType();
  3482 + List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhmb.getSpId());
  3483 + if(oList.size() > 0 && oList.get(0) != null
  3484 + && oList.get(0).trim().length() > 0){
  3485 + bcType = oList.get(0).trim();
  3486 + }
  3487 + if(bcType.equals("region") || bcType.equals("venting")
  3488 + || bcType.equals("major") || isInOut(bcType)){
  3489 + continue;
  3490 + }
  3491 + break;
  3492 + }
  3493 + if("1".equals(sfss) ? createDate.getTime() > jhmb.getFcsjT() : true){
  3494 + jhLast++;
  3495 + for(int i = listsj0.size() - 1; i >= 0; i--){
  3496 + ScheduleRealInfo sjmb = listsj0.get(i); //实际末班
  3497 + String bcType = sjmb.getBcType();
  3498 + if(bcType.equals("region") || bcType.equals("venting")
  3499 + || bcType.equals("major") || isInOut(bcType)){
  3500 + continue;
  3501 + }
  3502 + long wd = sjmb.getFcsjActualTime() - jhmb.getFcsjT(); //误点,快1慢2
  3503 + if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){
  3504 + sjzdLast++;
  3505 + break;
  3506 + }
  3507 + }
  3508 + }
  3509 + }
  3510 + }
  3511 +
  3512 + //下行
  3513 + if(listjh1.size() > 0){
  3514 + ScheduleRealInfo jhsb = listjh1.get(0); //计划首班
  3515 + for(int f = 0; f < listjh1.size(); f++){
  3516 + jhsb = listjh1.get(f); //计划首班
  3517 + String bcType = jhsb.getBcType();
  3518 + List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhsb.getSpId());
  3519 + if(oList.size() > 0 && oList.get(0) != null
  3520 + && oList.get(0).trim().length() > 0){
  3521 + bcType = oList.get(0).trim();
  3522 + }
  3523 + if(bcType.equals("region") || bcType.equals("venting")
  3524 + || bcType.equals("major") || isInOut(bcType)){
  3525 + continue;
  3526 + }
  3527 + break;
  3528 + }
  3529 + if("1".equals(sfss) ? createDate.getTime() > jhsb.getFcsjT() : true){
  3530 + jhFirst++;
  3531 + for(int i = 0; i < listsj1.size(); i++){
  3532 + ScheduleRealInfo sjsb = listsj1.get(i); //实际首班
  3533 + String bcType = sjsb.getBcType();
  3534 + if(bcType.equals("region") || bcType.equals("venting")
  3535 + || bcType.equals("major") || isInOut(bcType)){
  3536 + continue;
  3537 + }
  3538 + long wd = sjsb.getFcsjActualTime() - jhsb.getFcsjT(); //误点,快1慢2
  3539 + if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){
  3540 + sjzdFirst++;
  3541 + break;
  3542 + }
  3543 + }
  3544 + }
  3545 +
  3546 + if(listjh1.size() > 1){
  3547 + ScheduleRealInfo jhmb = listjh1.get(listjh1.size() - 1); //计划末班
  3548 + for(int l = listjh1.size() - 1; l >= 0; l--){
  3549 + jhmb = listjh1.get(l); //计划首班
  3550 + String bcType = jhmb.getBcType();
  3551 + List<String> oList = scheduleRealInfoRepository.findoOriginalType(jhmb.getSpId());
  3552 + if(oList.size() > 0 && oList.get(0) != null
  3553 + && oList.get(0).trim().length() > 0){
  3554 + bcType = oList.get(0).trim();
  3555 + }
  3556 + if(bcType.equals("region") || bcType.equals("venting")
  3557 + || bcType.equals("major") || isInOut(bcType)){
  3558 + continue;
  3559 + }
  3560 + break;
  3561 + }
  3562 + if("1".equals(sfss) ? createDate.getTime() > jhmb.getFcsjT() : true){
  3563 + jhLast++;
  3564 + for(int i = listsj1.size() - 1; i >= 0; i--){
  3565 + ScheduleRealInfo sjmb = listsj1.get(i); //实际末班
  3566 + String bcType = sjmb.getBcType();
  3567 + if(bcType.equals("region") || bcType.equals("venting")
  3568 + || bcType.equals("major") || isInOut(bcType)){
  3569 + continue;
  3570 + }
  3571 + long wd = sjmb.getFcsjActualTime() - jhmb.getFcsjT(); //误点,快1慢2
  3572 + if(-1l * 1000 * 60 <= wd && wd <= 2l * 1000 * 60){
  3573 + sjzdLast++;
  3574 + break;
  3575 + }
  3576 + }
  3577 + }
  3578 + }
  3579 + }
  3580 +
  3581 + Map<String, Object> map = new HashMap<String, Object>();
  3582 + map.put("lineCode", lineCode);
  3583 + Map<String, Object> xx = lineXX.get(lineCode);
  3584 + map.put("lineName", xx!=null&&xx.get("lineName")!=null?xx.get("lineName"):"");
  3585 + map.put("gsBm", xx!=null&&xx.get("gsBm")!=null?xx.get("gsBm"):"");
  3586 + map.put("gsName", xx!=null&&xx.get("gsName")!=null?xx.get("gsName"):"");
  3587 + map.put("fgsBm", xx!=null&&xx.get("fgsBm")!=null?xx.get("fgsBm"):"");
  3588 + map.put("fgsName", xx!=null&&xx.get("fgsName")!=null?xx.get("fgsName"):"");
  3589 + map.put("planFirst", jhFirst);
  3590 + map.put("planLast", jhLast);
  3591 + map.put("realFirst", sjzdFirst);
  3592 + map.put("realLast", sjzdLast);
  3593 + int jhbc = jhFirst + jhLast;
  3594 + int sjzdbc = sjzdFirst + sjzdLast;
  3595 + if(jhbc > 0){
  3596 + double zdl = (sjzdbc * 1.0) / (jhbc * 1.0) * 100;
  3597 + map.put("zdl", df.format(zdl));
  3598 + } else {
  3599 + map.put("zdl", "0");
  3600 + }
  3601 + if(jhFirst > 0){
  3602 + double zdlFirst = (sjzdFirst * 1.0) / (jhFirst * 1.0) * 100;
  3603 + map.put("zdlFirst", df.format(zdlFirst));
  3604 + } else {
  3605 + map.put("zdlFirst", "0");
  3606 + }
  3607 + if(jhLast > 0){
  3608 + double zdlLast = (sjzdLast * 1.0) / (jhLast * 1.0) * 100;
  3609 + map.put("zdlLast", df.format(zdlLast));
  3610 + } else {
  3611 + map.put("zdlLast", "0");
  3612 + }
  3613 +
  3614 + resList.add(map);
  3615 +
  3616 + }
  3617 +
  3618 + return resList;
  3619 + }
  3620 +
  3621 + /** 按日期查询出车的早未到情况 */
  3622 + @GET
  3623 + @Path("/selectData/getNotYet/{date}")
  3624 + public Map<String, Object> getNotYet(@PathParam("date") String date){
  3625 + Map<String, Object> resMap = new HashMap<String, Object>();
  3626 +
  3627 + String yyxlSql="SELECT line_code from bsth_c_line "
  3628 + + " where nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  3629 + List<Map<String, Object>> yyxlList=jdbcTemplate.query(yyxlSql,
  3630 + new RowMapper<Map<String, Object>>(){
  3631 + @Override
  3632 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3633 + Map<String, Object> m=new HashMap<String,Object>();
  3634 + m.put("lineCode", rs.getString("line_code"));
  3635 + return m;
  3636 + }
  3637 + });
  3638 + Set<String> yyLine = new HashSet<String>();
  3639 + for(Map<String, Object> t : yyxlList){
  3640 + if(t.get("lineCode") != null){
  3641 + yyLine.add(t.get("lineCode").toString());
  3642 + }
  3643 + }
  3644 +
  3645 + String sqlMinYysj="select line, start_opt from bsth_c_line_config where "
  3646 + + " id in (select max(id) from bsth_c_line_config group by line)";
  3647 + List<Map<String, Object>> minfcsjList = jdbcTemplate.query(sqlMinYysj,
  3648 + new RowMapper<Map<String, Object>>(){
  3649 + @Override
  3650 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  3651 + Map<String, Object> map = new HashMap<String, Object>();
  3652 + map.put("line", rs.getString("line")!=null?rs.getString("line"):"");
  3653 + map.put("minfcsj", rs.getString("start_opt")!=null?rs.getString("start_opt"):"02:00");
  3654 + return map;
  3655 + }
  3656 + });
  3657 +
  3658 + Map<String, Object> minfcsjMap = new HashMap<String, Object>();
  3659 + for(Map<String, Object> map : minfcsjList){
  3660 + minfcsjMap.put(map.get("line").toString(), map.get("minfcsj").toString());
  3661 + }
  3662 +
  3663 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
  3664 + String format = sdf.format(new Date());
  3665 +
  3666 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date);
  3667 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  3668 + Map<String, ScheduleRealInfo> scheduleMap = new HashMap<String, ScheduleRealInfo>();
  3669 + for(ScheduleRealInfo s : findAll){
  3670 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  3671 + Set<ChildTaskPlan> cts = s.getcTasks();
  3672 + if (cts != null && cts.size() > 0) {
  3673 + list_s.add(s);
  3674 + } else if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  3675 + list_s.add(s);
  3676 + } else if(s.getStatus() != 0){
  3677 + list_s.add(s);
  3678 + }
  3679 + }
  3680 + }
  3681 +
  3682 + for(ScheduleRealInfo s : list_s){
  3683 + if(!isInOut(s) && !s.isCcService()){
  3684 + String[] split = s.getFcsj().split(":");
  3685 + Long time = Long.valueOf(split[0]) * 60 + Long.valueOf(split[1]);
  3686 + String minfcsj = minfcsjMap.get(s.getXlBm())!=null?minfcsjMap.get(s.getXlBm()).toString():"02:00";
  3687 + String[] split_min = minfcsj.trim().split(":");
  3688 + Long min = Long.valueOf(split_min[0]) * 60 + Long.valueOf(split_min[1]);
  3689 + if(time < min){
  3690 + time += 1440;
  3691 + }
  3692 + s.setFcsjT(time);
  3693 + String cl = s.getClZbh();
  3694 + if(scheduleMap.containsKey(cl)){
  3695 + ScheduleRealInfo s2 = scheduleMap.get(cl);
  3696 + if(time < s2.getFcsjT()){
  3697 + scheduleMap.put(cl, s);
  3698 + }
  3699 + } else {
  3700 + scheduleMap.put(cl, s);
  3701 + }
  3702 + }
  3703 + }
  3704 +
  3705 + List<ScheduleRealInfo> notYetList = new ArrayList<ScheduleRealInfo>();
  3706 +
  3707 + long sum = scheduleMap.keySet().size(), zwd = 0;//早未到数
  3708 + long yg_z = 0, sn_z = 0, jg_z = 0, nh_z = 0;
  3709 + long yg_zwd = 0, sn_zwd = 0, jg_zwd = 0, nh_zwd = 0;
  3710 + for(String key : scheduleMap.keySet()){
  3711 + ScheduleRealInfo s = scheduleMap.get(key);
  3712 + if("77".equals(s.getGsBm())){
  3713 + yg_z += 1;
  3714 + } else if("300".equals(s.getGsBm())){
  3715 + sn_z += 1;
  3716 + } else if("302".equals(s.getGsBm())){
  3717 + jg_z += 1;
  3718 + }
  3719 + if("缺人".equals(s.getAdjustExps())){
  3720 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  3721 + list.add(s);
  3722 + BigDecimal sjgl = new BigDecimal(culateSjgl(list));
  3723 + BigDecimal ljgl = new BigDecimal(culateLjgl(list));
  3724 + BigDecimal zero = new BigDecimal(0.0);
  3725 + if(sjgl.compareTo(zero) == 0 && ljgl.compareTo(zero) == 0){
  3726 + zwd += 1;
  3727 + if("77".equals(s.getGsBm())){
  3728 + yg_zwd += 1;
  3729 + } else if("300".equals(s.getGsBm())){
  3730 + sn_zwd += 1;
  3731 + } else if("302".equals(s.getGsBm())){
  3732 + jg_zwd += 1;
  3733 + }
  3734 + notYetList.add(s);
  3735 + }
  3736 + }
  3737 + }
  3738 +
  3739 + resMap.put("sum", sum);
  3740 + resMap.put("notYet", zwd);
  3741 + resMap.put("sum_77", yg_z);
  3742 + resMap.put("notYet_77", yg_zwd);
  3743 + resMap.put("sum_300", sn_z);
  3744 + resMap.put("notYet_300", sn_zwd);
  3745 + resMap.put("sum_302", jg_z);
  3746 + resMap.put("notYet_302", jg_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 +}
... ...