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 +}