Commit 256d29840cb836a5a14a45fb4c206f76c581b09f

Authored by 娄高锋
1 parent 4b4f29e8

添加了给浦交大屏的人员配置数据接口

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.SimpleDateFormat;  
8 -import java.util.ArrayList;  
9 -import java.util.Date;  
10 -import java.util.HashMap;  
11 -import java.util.HashSet;  
12 -import java.util.Iterator;  
13 -import java.util.List;  
14 -import java.util.Map;  
15 -import java.util.Set;  
16 -  
17 -import javax.ws.rs.GET;  
18 -import javax.ws.rs.Path;  
19 -import javax.ws.rs.Produces;  
20 -import javax.ws.rs.core.MediaType;  
21 -  
22 -import org.apache.commons.lang.StringUtils;  
23 -import org.slf4j.Logger;  
24 -import org.slf4j.LoggerFactory;  
25 -import org.springframework.beans.factory.annotation.Autowired;  
26 -import org.springframework.jdbc.core.JdbcTemplate;  
27 -import org.springframework.jdbc.core.RowMapper;  
28 -import org.springframework.stereotype.Component;  
29 -  
30 -import com.alibaba.fastjson.JSON;  
31 -import com.alibaba.fastjson.JSONObject;  
32 -import com.bsth.entity.ChildTaskPlan;  
33 -import com.bsth.entity.ScheduleRealInfo;  
34 -import com.bsth.repository.ScheduleRealInfoRepository;  
35 -import com.bsth.util.Arith;  
36 -  
37 -@Component  
38 -@Path("/bigscreen")  
39 -@Produces({MediaType.APPLICATION_JSON})  
40 -public class BigscreenService {  
41 - Logger logger = LoggerFactory.getLogger(this.getClass());  
42 -  
43 - @Autowired  
44 - JdbcTemplate jdbcTemplate;  
45 -  
46 - @Autowired  
47 - ScheduleRealInfoRepository scheduleRealInfoRepository;  
48 -  
49 - DecimalFormat df = new DecimalFormat("0.00");  
50 -  
51 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
52 -  
53 - SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");  
54 -  
55 - /*  
56 - * 线路接口开始  
57 - */  
58 - private static String getNature(String natureCode){  
59 - String natureName="";  
60 - if("lj".equals(natureCode)){  
61 - natureName="路救";  
62 - }else if("bc".equals(natureCode)){  
63 - natureName="备车";  
64 - }else if("dbc".equals(natureCode)){  
65 - natureName="定班车";  
66 - }else if("yxl".equals(natureCode)){  
67 - natureName="夜宵路";  
68 - }else if("cgxl".equals(natureCode)){  
69 - natureName="常规线路";  
70 - }else if("gjxl".equals(natureCode)){  
71 - natureName="过江线路";  
72 - }else if("csbs".equals(natureCode)){  
73 - natureName="穿梭巴士";  
74 - }else if("tyxl".equals(natureCode)){  
75 - natureName="特约线路";  
76 - }else if("cctxl".equals(natureCode)){  
77 - natureName="村村通线路";  
78 - }else if("qt".equals(natureCode)){  
79 - natureName="其他";  
80 - }else {  
81 - natureName="";  
82 - }  
83 - return natureName;  
84 - }  
85 -  
86 - private static String getGs(String gs){  
87 - String name="";  
88 - if("05".equals(gs)){  
89 - name="杨高公司";  
90 - }else if("22".equals(gs)){  
91 - name="金高公司";  
92 - }else if("26".equals(gs)){  
93 - name="南汇公司";  
94 - }else if("55".equals(gs)){  
95 - name="上南公司";  
96 - }else{  
97 - name="";  
98 - }  
99 - return name;  
100 - }  
101 -  
102 - private static String getState(String carState){  
103 - if(carState.equals("1")){  
104 - return "在册未在用";  
105 - }else if(carState.equals("2")){  
106 - return "在册在用";  
107 - }else if(carState.equals("3")){  
108 - return "报废审核中";  
109 - }else if(carState.equals("4")){  
110 - return "报废待更新";  
111 - }else if(carState.equals("5")){  
112 - return "报废已更新";  
113 - }else{  
114 - return "";  
115 - }  
116 - }  
117 -  
118 - public static boolean isInOut(ScheduleRealInfo s){  
119 - boolean fage=false;  
120 - if(s.getBcType().equals("in")){  
121 - fage=true;  
122 - }  
123 - if(s.getBcType().equals("out")){  
124 - fage=true;  
125 - }  
126 - if(s.getBcType().equals("ldks")){  
127 - fage=true;  
128 - }  
129 -  
130 - return fage;  
131 - }  
132 -  
133 - public Map<String, Long> getEndtime(String date){  
134 - Map<String, Long> map=new HashMap<String,Long>();  
135 - String sql="select xl,endtime from bsth_c_calc_count "  
136 - + " where date='"+date+"' ";  
137 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
138 - new RowMapper<Map<String, Object>>(){  
139 - @Override  
140 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
141 - Map<String, Object> m=new HashMap<String, Object>();  
142 - m.put("line", rs.getString("xl"));  
143 - m.put("endtime", rs.getString("endtime"));  
144 - return m;  
145 - }  
146 - });  
147 - for (int i = 0; i < list.size(); i++) {  
148 - map.put(list.get(i).get("line").toString(),  
149 - Long.parseLong(list.get(i).get("endtime").toString()));  
150 - }  
151 - return map;  
152 - }  
153 -  
154 - @GET  
155 - @Path("/selectData/getBigScreen")  
156 - public JSONObject getBigScreen(){  
157 - Map<String, Object> resMap = new HashMap<String, Object>();  
158 -  
159 - Date dd = new Date();  
160 - String date = sd.format(dd); //yyyy-MM-dd 当天  
161 - Date dd2 = new Date();  
162 - dd2.setTime(dd.getTime() - 7l*1000*60*60*24);  
163 - String date2 = sd.format(dd2); //yyyy-MM-dd 7天前  
164 -  
165 - String[] dates = new String[8];  
166 - Map<String, Integer> datesMap = new HashMap<String, Integer>();  
167 -  
168 - for(int i = 0; i < 8; i++){  
169 - Date tempDate = new Date();  
170 - tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);  
171 - String format = sd.format(tempDate);  
172 - dates[i] = format;  
173 - datesMap.put(format, i);  
174 - }  
175 -  
176 - String gpLineSql = "select * from bsth_c_line_plate";  
177 - List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,  
178 - new RowMapper<Map<String, Object>>(){  
179 - @Override  
180 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
181 - Map<String, Object> m=new HashMap<String,Object>();  
182 - m.put("lineName", rs.getString("line_name"));  
183 - m.put("lineCode", rs.getString("line_code"));  
184 - return m;  
185 - }  
186 - });  
187 -  
188 - Set<String> gpSet = new HashSet<String>();  
189 - for(Map<String, Object> t : gpLineList){  
190 - if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){  
191 - gpSet.add(t.get("lineCode").toString().trim());  
192 - }  
193 - }  
194 -  
195 - String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"  
196 - + " a.shanghai_linecode, a.nature from "  
197 - + " bsth_c_line a left join bsth_c_line_config b "  
198 - + " on a.id=b.line where "  
199 - + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "  
200 - + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";  
201 - List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,  
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("state", rs.getString("start_opt"));  
207 - m.put("company", rs.getString("company"));  
208 - m.put("companyName", getGs(rs.getString("company")));  
209 - m.put("lineCode",rs.getString("line_code"));  
210 - m.put("name", rs.getString("name"));  
211 - m.put("level", rs.getString("level"));  
212 - m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));  
213 - m.put("nature", getNature(rs.getString("nature")));  
214 - return m;  
215 - }  
216 - });  
217 -  
218 - Set<String> yyLine = new HashSet<String>();  
219 - int level1 = 0, level2 = 0;  
220 - for(Map<String, Object> t : lineList){  
221 - if(t.get("level") != null){  
222 - if("1".equals(t.get("level").toString())){  
223 - ++level1;  
224 - } else if("2".equals(t.get("level").toString())){  
225 - ++level2;  
226 - }  
227 - }  
228 -  
229 - if(t.get("lineCode") != null){  
230 - yyLine.add(t.get("lineCode").toString());  
231 - }  
232 - }  
233 -  
234 - String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"  
235 - + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"  
236 - + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"  
237 - + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"  
238 - + " jhszfcs,sjszfczds,szfczdl,create_date"  
239 - + " from bsth_c_calc_count "  
240 - + " where date >= '"+date2+"' and date <= '"+date+"'";  
241 -  
242 - List<Map<String, Object>> list=jdbcTemplate.query(sql,  
243 - new RowMapper<Map<String, Object>>(){  
244 - @Override  
245 - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {  
246 - Map<String, Object> m=new HashMap<String,Object>();  
247 - m.put("lineCode",rs.getString("xl"));  
248 - m.put("lineName", rs.getString("xl_name"));  
249 - m.put("date", rs.getString("date"));  
250 -  
251 - m.put("jhbc", rs.getString("jhbc"));  
252 - m.put("sjbc", rs.getString("sjbc"));  
253 - m.put("bczxl", rs.getString("bczxl"));  
254 - m.put("jhbcz", rs.getString("jhbcz"));  
255 -  
256 - m.put("jhcc", rs.getString("jhcc"));  
257 - m.put("sjcc", rs.getString("sjcc"));  
258 - m.put("ccl", rs.getString("ccl"));  
259 - m.put("jhccz", rs.getString("jhccz"));  
260 -  
261 - m.put("jhyylc", rs.getString("jhyylc"));  
262 - m.put("sjyylc", rs.getString("sjyylc"));  
263 - m.put("jhyylcz", rs.getString("jhyylcz"));  
264 - m.put("jhkslc", rs.getString("jhkslc"));  
265 - m.put("sjkslc", rs.getString("sjkslc"));  
266 - m.put("jhkslcz", rs.getString("jhkslcz"));  
267 -  
268 - m.put("jhgfbcs", rs.getString("jhssgfbcs"));  
269 - m.put("sjgfbcs", rs.getString("sjgfbcs"));  
270 - m.put("jhgfbcsz", rs.getString("jhgfbcsz"));  
271 - m.put("jhdgbcs", rs.getString("jhssdgbcs"));  
272 - m.put("sjdgbcs", rs.getString("sjdgbcs"));  
273 - m.put("jhdgbcsz", rs.getString("jhdgbcsz"));  
274 -  
275 - m.put("jhsmbcs", rs.getString("jhsmbcs"));  
276 - m.put("sjsmbczds", rs.getString("sjsmbczds"));  
277 - m.put("smbczdl", rs.getString("smbczdl"));  
278 - m.put("jhsmbcsz", rs.getString("jhsmbcsz"));  
279 - m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));  
280 - m.put("smbczdlz", rs.getString("smbczdlz"));  
281 -  
282 - m.put("jhszfcs", rs.getString("jhszfcs"));  
283 - m.put("sjszfczds", rs.getString("sjszfczds"));  
284 - m.put("szfczdl", rs.getString("szfczdl"));  
285 -  
286 - Date date = new Date();  
287 - date.setTime(rs.getTimestamp("create_date").getTime());  
288 - m.put("createDate", sdf.format(date));  
289 - return m;  
290 - }  
291 - });  
292 -  
293 - List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();  
294 - List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();  
295 - List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();  
296 - List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();  
297 -  
298 - List<Map<String, Object>> ccList = createMap("计划出车率", dates);  
299 - List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);  
300 - List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);  
301 - List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);  
302 - List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);  
303 -  
304 - long sjbcs_z = 0l;//实时总班次  
305 - BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程  
306 - long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,  
307 - jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;  
308 -  
309 - for(Map<String, Object> t : list){  
310 - if(yyLine.contains(t.get("lineCode").toString())){  
311 - String d = t.get("date").toString();  
312 - if(date.equals(d)){  
313 - sjbcs_z += Long.valueOf(t.get("sjbc").toString());  
314 - yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));  
315 -  
316 - jhcc += Long.valueOf(t.get("jhccz").toString());  
317 - sjcc += Long.valueOf(t.get("sjcc").toString());  
318 - jhbc += Long.valueOf(t.get("jhbc").toString());  
319 - sjbc += Long.valueOf(t.get("sjbc").toString());  
320 - jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());  
321 - sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());  
322 - jhqqbc += Long.valueOf(t.get("jhszfcs").toString());  
323 - sjqqzd += Long.valueOf(t.get("sjszfczds").toString());  
324 - if(gpSet.contains(t.get("lineCode").toString())){  
325 - jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());  
326 - sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());  
327 - }  
328 -  
329 - Map<String, Object> bc = new HashMap<String, Object>();  
330 - bc.put("type", "班次执行详情");  
331 - bc.put("lineName", t.get("lineName").toString());  
332 - bc.put("jh", t.get("jhbc").toString());  
333 - bc.put("sj", t.get("sjbc").toString());  
334 - bcDetail.add(bc);  
335 -  
336 - Map<String, Object> sm = new HashMap<String, Object>();  
337 - sm.put("type", "首站发车详情");  
338 - sm.put("lineName", t.get("lineName").toString());  
339 - sm.put("jh", t.get("jhsmbcs").toString());  
340 - sm.put("sj", t.get("sjsmbczds").toString());  
341 - smDetail.add(sm);  
342 -  
343 - Map<String, Object> qq = new HashMap<String, Object>();  
344 - qq.put("type", "起讫站发车准点详情");  
345 - qq.put("lineName", t.get("lineName").toString());  
346 - qq.put("jh", t.get("jhszfcs").toString());  
347 - qq.put("sj", t.get("sjszfczds").toString());  
348 - qqDetail.add(qq);  
349 -  
350 - if(gpSet.contains(t.get("lineCode").toString())){  
351 - Map<String, Object> gp = new HashMap<String, Object>();  
352 - gp.put("type", "起讫站发车准点详情");  
353 - gp.put("lineName", t.get("lineName").toString());  
354 - gp.put("jh", t.get("jhszfcs").toString());  
355 - gp.put("sj", t.get("sjszfczds").toString());  
356 - gpDetail.add(gp);  
357 - }  
358 - }  
359 -  
360 - Map<String, Object> ccMap = ccList.get(datesMap.get(d));  
361 - Map<String, Object> bcMap = bcList.get(datesMap.get(d));  
362 - Map<String, Object> smMap = smList.get(datesMap.get(d));  
363 - Map<String, Object> qqMap = qqList.get(datesMap.get(d));  
364 - Map<String, Object> gpMap = gpList.get(datesMap.get(d));  
365 -  
366 - ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));  
367 - ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));  
368 - bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));  
369 - bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));  
370 - smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));  
371 - smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));  
372 - qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));  
373 - qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));  
374 - if(gpSet.contains(t.get("lineCode").toString())){  
375 - gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));  
376 - gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));  
377 - }  
378 -  
379 - }  
380 - }  
381 -  
382 - List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();  
383 - zxlList.addAll(ccList);  
384 - zxlList.addAll(bcList);  
385 - zxlList.addAll(smList);  
386 - zxlList.addAll(qqList);  
387 - zxlList.addAll(gpList);  
388 -  
389 - List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();  
390 - detailsList.addAll(bcDetail);  
391 - detailsList.addAll(smDetail);  
392 - detailsList.addAll(qqDetail);  
393 - detailsList.addAll(gpDetail);  
394 -  
395 - for(Map<String, Object> t : zxlList){  
396 - if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){  
397 - t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),  
398 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());  
399 - } else {  
400 - t.put("ratio", "0");  
401 - }  
402 - t.remove("jh");  
403 - t.remove("sj");  
404 - }  
405 -  
406 - List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();  
407 -  
408 - Date dd1 = new Date();  
409 - dd1.setTime(dd.getTime() - 1l*1000*60*60*24);  
410 - String date1 = sd.format(dd1); //前一天  
411 - List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);  
412 - List<ScheduleRealInfo> list_jh = new ArrayList<ScheduleRealInfo>();  
413 - List<ScheduleRealInfo> list_sj = new ArrayList<ScheduleRealInfo>();  
414 - for(ScheduleRealInfo s : findAll){  
415 - if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路  
416 - Set<ChildTaskPlan> cts = s.getcTasks();  
417 - if (cts != null && cts.size() > 0) {  
418 - list_sj.add(s);  
419 - } else {  
420 - if (s.getZdsjActual() != null && s.getFcsjActual() != null) {  
421 - list_sj.add(s);  
422 - }  
423 - }  
424 - }  
425 - }  
426 - double jhyygl = culateJhgl(list_jh);//计划营运公里  
427 - double sjgl = culateSjgl(list_sj);//实际公里  
428 - double sjljgl = culateLjgl(list_sj);//实际临加公里  
429 - double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里  
430 - double lz = culateCJLC(list_jh, "路阻");  
431 - double dm = culateCJLC(list_jh, "吊慢");  
432 - double gz = culateCJLC(list_jh, "故障");  
433 - double jf = culateCJLC(list_jh, "纠纷");  
434 - double zs = culateCJLC(list_jh, "肇事");  
435 - double qr = culateCJLC(list_jh, "缺人");  
436 - double qc = culateCJLC(list_jh, "缺车");  
437 - double qrqc = Arith.add(qr, qc);//缺人缺车  
438 - double kx = culateCJLC(list_jh, "客稀");  
439 - double qh = culateCJLC(list_jh, "气候");  
440 - double yw = culateCJLC(list_jh, "援外");  
441 - double lb_pc = culateCJLC(list_jh, "配车");  
442 - double lb_by = culateCJLC(list_jh, "保养");  
443 - double lb_cj = culateCJLC(list_jh, "抽减");  
444 - double lb_qt = culateCJLC(list_jh, "其他");  
445 - double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他  
446 -  
447 - Map<String, Object> jhyyglMap = new HashMap<String, Object>();  
448 - jhyyglMap.put("name", "计划营运");  
449 - jhyyglMap.put("value", jhyygl);  
450 - glList.add(jhyyglMap);  
451 - Map<String, Object> sjyyglMap = new HashMap<String, Object>();  
452 - sjyyglMap.put("name", "实际营运");  
453 - sjyyglMap.put("value", sjyygl);  
454 - glList.add(sjyyglMap);  
455 - Map<String, Object> lzMap = new HashMap<String, Object>();  
456 - lzMap.put("name", "路阻");  
457 - lzMap.put("value", lz);  
458 - glList.add(lzMap);  
459 - Map<String, Object> dmMap = new HashMap<String, Object>();  
460 - dmMap.put("name", "吊慢");  
461 - dmMap.put("value", dm);  
462 - glList.add(dmMap);  
463 - Map<String, Object> gzMap = new HashMap<String, Object>();  
464 - gzMap.put("name", "故障");  
465 - gzMap.put("value", gz);  
466 - glList.add(gzMap);  
467 - Map<String, Object> jfMap = new HashMap<String, Object>();  
468 - jfMap.put("name", "纠纷");  
469 - jfMap.put("value", jf);  
470 - glList.add(jfMap);  
471 - Map<String, Object> zsMap = new HashMap<String, Object>();  
472 - zsMap.put("name", "肇事");  
473 - zsMap.put("value", zs);  
474 - glList.add(zsMap);  
475 - Map<String, Object> qrqcMap = new HashMap<String, Object>();  
476 - qrqcMap.put("name", "缺人缺车");  
477 - qrqcMap.put("value", qrqc);  
478 - glList.add(qrqcMap);  
479 - Map<String, Object> kxMap = new HashMap<String, Object>();  
480 - kxMap.put("name", "客稀");  
481 - kxMap.put("value", kx);  
482 - glList.add(kxMap);  
483 - Map<String, Object> qhMap = new HashMap<String, Object>();  
484 - qhMap.put("name", "气候");  
485 - qhMap.put("value", qh);  
486 - glList.add(qhMap);  
487 - Map<String, Object> ywMap = new HashMap<String, Object>();  
488 - ywMap.put("name", "援外");  
489 - ywMap.put("value", yw);  
490 - glList.add(ywMap);  
491 - Map<String, Object> qtMap = new HashMap<String, Object>();  
492 - qtMap.put("name", "其他");  
493 - qtMap.put("value", qt);  
494 - glList.add(qtMap);  
495 -  
496 -  
497 - resMap.put("lineCount", lineList.size());  
498 - resMap.put("level1Count", level1);  
499 - resMap.put("level2Count", level2);  
500 - resMap.put("sjbcs", sjbcs_z);  
501 - resMap.put("sjlcs", yygl_z.doubleValue());  
502 -  
503 - resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),  
504 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
505 - resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),  
506 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
507 - resMap.put("smbzdl", jhbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),  
508 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
509 - resMap.put("qqzzdl", jhbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),  
510 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
511 - resMap.put("gpzdl", jhbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),  
512 - 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");  
513 -  
514 - resMap.put("ratioList", zxlList);  
515 -  
516 - resMap.put("detailsList", detailsList);  
517 -  
518 - resMap.put("mileageList", glList);  
519 -  
520 - return JSON.parseObject(JSON.toJSONString(resMap));  
521 - }  
522 -  
523 - public List<Map<String, Object>> createMap(String type, String[] dates){  
524 - List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();  
525 -  
526 - for(int i = 0; i < dates.length; i++){  
527 - Map<String, Object> tempMap = new HashMap<String, Object>();  
528 - tempMap.put("type", type);  
529 - String[] split = dates[i].split("-");  
530 - tempMap.put("type", split[1] + "/" + split[2]);  
531 - tempMap.put("jh", "0");  
532 - tempMap.put("sj", "0");  
533 - mapList.add(tempMap);  
534 - }  
535 -  
536 - return mapList;  
537 - }  
538 -  
539 - public double culateJhgl(List<ScheduleRealInfo> lists) {  
540 - // TODO Auto-generated method stub  
541 - double jhgl=0;  
542 - for (int i = 0; i < lists.size(); i++) {  
543 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
544 - if (!isInOut(scheduleRealInfo)) {  
545 - if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){  
546 - jhgl=Arith.add(jhgl,scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig());  
547 - }  
548 - }  
549 - }  
550 - return jhgl;  
551 - }  
552 -  
553 - public double culateSjgl(List<ScheduleRealInfo> lists) {  
554 - // TODO Auto-generated method stub  
555 - double sjgl=0;  
556 - for (int i = 0; i < lists.size(); i++) {  
557 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
558 - if (!isInOut(scheduleRealInfo)) {  
559 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
560 - if(!scheduleRealInfo.isSflj()){  
561 - if(childTaskPlans.isEmpty()){  
562 - if(!(scheduleRealInfo.getStatus() == -1)){  
563 - double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();  
564 - double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();  
565 - if(jhlc-jhlcOrig>0){  
566 - sjgl=Arith.add(sjgl,jhlcOrig);  
567 - }else{  
568 - sjgl=Arith.add(sjgl,jhlc);  
569 - }  
570 -  
571 - }  
572 - }else{  
573 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
574 - while (it.hasNext()) {  
575 - ChildTaskPlan childTaskPlan = it.next();  
576 - if(childTaskPlan.getMileageType().equals("service")  
577 - &&"正常".equals(childTaskPlan.getType1())  
578 - && childTaskPlan.getCcId()==null){  
579 - if (!childTaskPlan.isDestroy()) {  
580 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
581 - sjgl=Arith.add(sjgl,jhgl);  
582 - }  
583 - }  
584 - }  
585 - }  
586 - }  
587 - }  
588 - }  
589 - return sjgl;  
590 - }  
591 -  
592 - public double culateLjgl(List<ScheduleRealInfo> lists) {  
593 - // TODO Auto-generated method stub  
594 - double ljgl=0;  
595 - for (int i = 0; i < lists.size(); i++) {  
596 - ScheduleRealInfo scheduleRealInfo=lists.get(i);  
597 - if (!isInOut(scheduleRealInfo)) {  
598 - if(!(scheduleRealInfo.getStatus() == -1)){  
599 - if(scheduleRealInfo.isSflj()){  
600 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
601 - if(childTaskPlans.isEmpty()){  
602 - ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());  
603 - }else{  
604 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
605 - while (it.hasNext()) {  
606 - ChildTaskPlan childTaskPlan = it.next();  
607 - if(childTaskPlan.getMileageType().equals("service") && childTaskPlan.getCcId()==null){  
608 - if (!childTaskPlan.isDestroy()) {  
609 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
610 - ljgl=Arith.add(ljgl,jhgl);  
611 - }  
612 - }  
613 - }  
614 - }  
615 - }else{  
616 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
617 - if(childTaskPlans.isEmpty()){  
618 - double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();  
619 - double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();  
620 - double zjlc=Arith.sub(jhlc, jhlcOrig);  
621 - if(zjlc>0){  
622 - ljgl=Arith.add(zjlc, ljgl);  
623 - }  
624 - }else{  
625 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
626 - while (it.hasNext()) {  
627 - ChildTaskPlan childTaskPlan = it.next();  
628 - if(childTaskPlan.getCcId()==null){  
629 - if("service".equals(childTaskPlan.getMileageType())&&"临加".equals(childTaskPlan.getType1())){  
630 - if (!childTaskPlan.isDestroy()) {  
631 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
632 - ljgl=Arith.add(ljgl,jhgl);  
633 - }  
634 - }  
635 - }  
636 - }  
637 - }  
638 - }  
639 - }  
640 -  
641 - }  
642 - }  
643 - return ljgl;  
644 - }  
645 -  
646 - public double culateCJLC(List<ScheduleRealInfo> list, String item) {  
647 - // TODO Auto-generated method stub  
648 - double sum = 0;  
649 - Set<ChildTaskPlan> cts;  
650 - for(ScheduleRealInfo sch : list){  
651 - if (sch.isSflj())  
652 - continue;  
653 - cts = sch.getcTasks();  
654 - if(isInOut(sch))  
655 - continue;  
656 - //有子任务  
657 - if (cts != null && cts.size() > 0) {  
658 - for(ChildTaskPlan c : cts){  
659 - if(c.getCcId()==null){  
660 - if(c.getMileageType().equals("service")){  
661 - if(item.equals("其他")){  
662 - if(c.isDestroy() &&  
663 - ((c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item)||  
664 - (c.getDestroyReason()==null?"": c.getDestroyReason()).equals("")))  
665 - sum = Arith.add(sum, c.getMileage());  
666 - }else{  
667 - if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))  
668 - sum = Arith.add(sum, c.getMileage());  
669 - }  
670 - }  
671 - }  
672 - }  
673 - }  
674 -  
675 - //主任务烂班  
676 - else if(sch.getStatus() == -1 && !sch.isCcService()){  
677 - if(sch.getAdjustExps().equals(item) ||  
678 - (StringUtils.isEmpty(sch.getAdjustExps()) && item.equals("其他"))){  
679 - sum = Arith.add(sum, sch.getJhlcOrig());  
680 - }  
681 - }  
682 - else if(item.equals("其他")){  
683 - double diff = Arith.sub(sch.getJhlcOrig(), sch.getJhlc());  
684 - if(diff > 0){  
685 - sum = Arith.add(sum, diff);  
686 - }  
687 - }  
688 - }  
689 - return sum;  
690 - }  
691 -} 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.SimpleDateFormat;
  8 +import java.util.ArrayList;
  9 +import java.util.Date;
  10 +import java.util.HashMap;
  11 +import java.util.HashSet;
  12 +import java.util.Iterator;
  13 +import java.util.List;
  14 +import java.util.Map;
  15 +import java.util.Set;
  16 +
  17 +import javax.ws.rs.GET;
  18 +import javax.ws.rs.Path;
  19 +import javax.ws.rs.Produces;
  20 +import javax.ws.rs.core.MediaType;
  21 +
  22 +import org.apache.commons.lang.StringUtils;
  23 +import org.slf4j.Logger;
  24 +import org.slf4j.LoggerFactory;
  25 +import org.springframework.beans.factory.annotation.Autowired;
  26 +import org.springframework.jdbc.core.JdbcTemplate;
  27 +import org.springframework.jdbc.core.RowMapper;
  28 +import org.springframework.stereotype.Component;
  29 +
  30 +import com.alibaba.fastjson.JSON;
  31 +import com.alibaba.fastjson.JSONObject;
  32 +import com.bsth.entity.ChildTaskPlan;
  33 +import com.bsth.entity.ScheduleRealInfo;
  34 +import com.bsth.repository.ScheduleRealInfoRepository;
  35 +import com.bsth.util.Arith;
  36 +import com.mysql.fabric.xmlrpc.base.Array;
  37 +
  38 +@Component
  39 +@Path("/bigscreen")
  40 +@Produces({MediaType.APPLICATION_JSON})
  41 +public class BigscreenService {
  42 + Logger logger = LoggerFactory.getLogger(this.getClass());
  43 +
  44 + @Autowired
  45 + JdbcTemplate jdbcTemplate;
  46 +
  47 + @Autowired
  48 + ScheduleRealInfoRepository scheduleRealInfoRepository;
  49 +
  50 + DecimalFormat df = new DecimalFormat("0.00");
  51 +
  52 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  53 +
  54 + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
  55 +
  56 + /*
  57 + * 线路接口开始
  58 + */
  59 + private static String getNature(String natureCode){
  60 + String natureName="";
  61 + if("lj".equals(natureCode)){
  62 + natureName="路救";
  63 + }else if("bc".equals(natureCode)){
  64 + natureName="备车";
  65 + }else if("dbc".equals(natureCode)){
  66 + natureName="定班车";
  67 + }else if("yxl".equals(natureCode)){
  68 + natureName="夜宵路";
  69 + }else if("cgxl".equals(natureCode)){
  70 + natureName="常规线路";
  71 + }else if("gjxl".equals(natureCode)){
  72 + natureName="过江线路";
  73 + }else if("csbs".equals(natureCode)){
  74 + natureName="穿梭巴士";
  75 + }else if("tyxl".equals(natureCode)){
  76 + natureName="特约线路";
  77 + }else if("cctxl".equals(natureCode)){
  78 + natureName="村村通线路";
  79 + }else if("qt".equals(natureCode)){
  80 + natureName="其他";
  81 + }else {
  82 + natureName="";
  83 + }
  84 + return natureName;
  85 + }
  86 +
  87 + private static String getGs(String gs){
  88 + String name="";
  89 + if("05".equals(gs)){
  90 + name="杨高公司";
  91 + }else if("22".equals(gs)){
  92 + name="金高公司";
  93 + }else if("26".equals(gs)){
  94 + name="南汇公司";
  95 + }else if("55".equals(gs)){
  96 + name="上南公司";
  97 + }else{
  98 + name="";
  99 + }
  100 + return name;
  101 + }
  102 +
  103 + private static String getState(String carState){
  104 + if(carState.equals("1")){
  105 + return "在册未在用";
  106 + }else if(carState.equals("2")){
  107 + return "在册在用";
  108 + }else if(carState.equals("3")){
  109 + return "报废审核中";
  110 + }else if(carState.equals("4")){
  111 + return "报废待更新";
  112 + }else if(carState.equals("5")){
  113 + return "报废已更新";
  114 + }else{
  115 + return "";
  116 + }
  117 + }
  118 +
  119 + public static boolean isInOut(ScheduleRealInfo s){
  120 + boolean fage=false;
  121 + if(s.getBcType().equals("in")){
  122 + fage=true;
  123 + }
  124 + if(s.getBcType().equals("out")){
  125 + fage=true;
  126 + }
  127 + if(s.getBcType().equals("ldks")){
  128 + fage=true;
  129 + }
  130 +
  131 + return fage;
  132 + }
  133 +
  134 + public Map<String, Long> getEndtime(String date){
  135 + Map<String, Long> map=new HashMap<String,Long>();
  136 + String sql="select xl,endtime from bsth_c_calc_count "
  137 + + " where date='"+date+"' ";
  138 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  139 + new RowMapper<Map<String, Object>>(){
  140 + @Override
  141 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  142 + Map<String, Object> m=new HashMap<String, Object>();
  143 + m.put("line", rs.getString("xl"));
  144 + m.put("endtime", rs.getString("endtime"));
  145 + return m;
  146 + }
  147 + });
  148 + for (int i = 0; i < list.size(); i++) {
  149 + map.put(list.get(i).get("line").toString(),
  150 + Long.parseLong(list.get(i).get("endtime").toString()));
  151 + }
  152 + return map;
  153 + }
  154 +
  155 + @GET
  156 + @Path("/selectData/getBigScreen")
  157 + public JSONObject getBigScreen(){
  158 + Map<String, Object> resMap = new HashMap<String, Object>();
  159 +
  160 + int day = 8;//天数
  161 +
  162 + Date dd = new Date();
  163 + String date = sd.format(dd); //yyyy-MM-dd 当天
  164 + Date dd2 = new Date();
  165 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  166 + String date2 = sd.format(dd2); //yyyy-MM-dd 7天前(加上当天就是取8天数据)
  167 +
  168 + String[] dates = new String[day];
  169 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  170 +
  171 + for(int i = 0; i < day; i++){
  172 + Date tempDate = new Date();
  173 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  174 + String format = sd.format(tempDate);
  175 + dates[i] = format;
  176 + datesMap.put(format, i);
  177 + }
  178 +
  179 + String gpLineSql = "select * from bsth_c_line_plate";
  180 + List<Map<String, Object>> gpLineList=jdbcTemplate.query(gpLineSql,
  181 + new RowMapper<Map<String, Object>>(){
  182 + @Override
  183 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  184 + Map<String, Object> m=new HashMap<String,Object>();
  185 + m.put("lineName", rs.getString("line_name"));
  186 + m.put("lineCode", rs.getString("line_code"));
  187 + return m;
  188 + }
  189 + });
  190 +
  191 + Set<String> gpSet = new HashSet<String>();
  192 + for(Map<String, Object> t : gpLineList){
  193 + if(t.get("lineCode") != null && t.get("lineCode").toString().trim().length() > 0){
  194 + gpSet.add(t.get("lineCode").toString().trim());
  195 + }
  196 + }
  197 +
  198 + String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"
  199 + + " a.shanghai_linecode, a.nature from "
  200 + + " bsth_c_line a left join bsth_c_line_config b "
  201 + + " on a.id=b.line where "
  202 + + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "
  203 + + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  204 + List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,
  205 + new RowMapper<Map<String, Object>>(){
  206 + @Override
  207 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  208 + Map<String, Object> m=new HashMap<String,Object>();
  209 + m.put("state", rs.getString("start_opt"));
  210 + m.put("company", rs.getString("company"));
  211 + m.put("companyName", getGs(rs.getString("company")));
  212 + m.put("lineCode",rs.getString("line_code"));
  213 + m.put("name", rs.getString("name"));
  214 + m.put("level", rs.getString("level"));
  215 + m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));
  216 + m.put("nature", getNature(rs.getString("nature")));
  217 + return m;
  218 + }
  219 + });
  220 +
  221 + Set<String> yyLine = new HashSet<String>();
  222 + int level1 = 0, level2 = 0;
  223 + for(Map<String, Object> t : lineList){
  224 + if(t.get("level") != null){
  225 + if("1".equals(t.get("level").toString())){
  226 + ++level1;
  227 + } else if("2".equals(t.get("level").toString())){
  228 + ++level2;
  229 + }
  230 + }
  231 +
  232 + if(t.get("lineCode") != null){
  233 + yyLine.add(t.get("lineCode").toString());
  234 + }
  235 + }
  236 +
  237 + String sql="select xl,xl_name,date,jhbc,bczxl,jhbcz,sjbc,jhcc,sjcc,ccl,jhccz,"
  238 + + " jhyylc,sjyylc,jhyylcz,jhkslc,sjkslc,jhkslcz,"
  239 + + " jhssgfbcs,sjgfbcs,jhgfbcsz,jhssdgbcs,sjdgbcs,jhdgbcsz,"
  240 + + " jhsmbcs,sjsmbczds,smbczdl,jhsmbcsz,sjsmbczdsz,smbczdlz,"
  241 + + " jhszfcs,sjszfczds,szfczdl,create_date"
  242 + + " from bsth_c_calc_count "
  243 + + " where date >= '"+date2+"' and date <= '"+date+"'";
  244 +
  245 + List<Map<String, Object>> list=jdbcTemplate.query(sql,
  246 + new RowMapper<Map<String, Object>>(){
  247 + @Override
  248 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  249 + Map<String, Object> m=new HashMap<String,Object>();
  250 + m.put("lineCode",rs.getString("xl"));
  251 + m.put("lineName", rs.getString("xl_name"));
  252 + m.put("date", rs.getString("date"));
  253 +
  254 + m.put("jhbc", rs.getString("jhbc"));
  255 + m.put("sjbc", rs.getString("sjbc"));
  256 + m.put("bczxl", rs.getString("bczxl"));
  257 + m.put("jhbcz", rs.getString("jhbcz"));
  258 +
  259 + m.put("jhcc", rs.getString("jhcc"));
  260 + m.put("sjcc", rs.getString("sjcc"));
  261 + m.put("ccl", rs.getString("ccl"));
  262 + m.put("jhccz", rs.getString("jhccz"));
  263 +
  264 + m.put("jhyylc", rs.getString("jhyylc"));
  265 + m.put("sjyylc", rs.getString("sjyylc"));
  266 + m.put("jhyylcz", rs.getString("jhyylcz"));
  267 + m.put("jhkslc", rs.getString("jhkslc"));
  268 + m.put("sjkslc", rs.getString("sjkslc"));
  269 + m.put("jhkslcz", rs.getString("jhkslcz"));
  270 +
  271 + m.put("jhgfbcs", rs.getString("jhssgfbcs"));
  272 + m.put("sjgfbcs", rs.getString("sjgfbcs"));
  273 + m.put("jhgfbcsz", rs.getString("jhgfbcsz"));
  274 + m.put("jhdgbcs", rs.getString("jhssdgbcs"));
  275 + m.put("sjdgbcs", rs.getString("sjdgbcs"));
  276 + m.put("jhdgbcsz", rs.getString("jhdgbcsz"));
  277 +
  278 + m.put("jhsmbcs", rs.getString("jhsmbcs"));
  279 + m.put("sjsmbczds", rs.getString("sjsmbczds"));
  280 + m.put("smbczdl", rs.getString("smbczdl"));
  281 + m.put("jhsmbcsz", rs.getString("jhsmbcsz"));
  282 + m.put("sjsmbczdsz", rs.getString("sjsmbczdsz"));
  283 + m.put("smbczdlz", rs.getString("smbczdlz"));
  284 +
  285 + m.put("jhszfcs", rs.getString("jhszfcs"));
  286 + m.put("sjszfczds", rs.getString("sjszfczds"));
  287 + m.put("szfczdl", rs.getString("szfczdl"));
  288 +
  289 + Date date = new Date();
  290 + date.setTime(rs.getTimestamp("create_date").getTime());
  291 + m.put("createDate", sdf.format(date));
  292 + return m;
  293 + }
  294 + });
  295 +
  296 + List<Map<String, Object>> bcDetail = new ArrayList<Map<String,Object>>();
  297 + List<Map<String, Object>> smDetail = new ArrayList<Map<String,Object>>();
  298 + List<Map<String, Object>> qqDetail = new ArrayList<Map<String,Object>>();
  299 + List<Map<String, Object>> gpDetail = new ArrayList<Map<String,Object>>();
  300 +
  301 + List<Map<String, Object>> ccList = createMap("计划出车率", dates);
  302 + List<Map<String, Object>> bcList = createMap("计划班次执行率", dates);
  303 + List<Map<String, Object>> smList = createMap("首末班发车准点率", dates);
  304 + List<Map<String, Object>> qqList = createMap("起讫站发车准点率", dates);
  305 + List<Map<String, Object>> gpList = createMap("挂牌线路发车准点率", dates);
  306 +
  307 + long sjbcs_z = 0l;//实时总班次
  308 + BigDecimal yygl_z = new BigDecimal(0);//实时总营运里程
  309 + long jhcc = 0, sjcc = 0, jhbc = 0, sjbc = 0, jhsmbc = 0, sjsmbc = 0,
  310 + jhqqbc = 0, sjqqzd = 0, jhgpqqbc = 0, sjgpqqzd = 0;
  311 +
  312 + for(Map<String, Object> t : list){
  313 + if(yyLine.contains(t.get("lineCode").toString())){
  314 + String d = t.get("date").toString();
  315 + if(date.equals(d)){
  316 + sjbcs_z += Long.valueOf(t.get("sjbc").toString());
  317 + yygl_z = yygl_z.add(new BigDecimal(t.get("sjyylc").toString()));
  318 +
  319 + jhcc += Long.valueOf(t.get("jhccz").toString());
  320 + sjcc += Long.valueOf(t.get("sjcc").toString());
  321 + jhbc += Long.valueOf(t.get("jhbc").toString());
  322 + sjbc += Long.valueOf(t.get("sjbc").toString());
  323 + jhsmbc += Long.valueOf(t.get("jhsmbcs").toString());
  324 + sjsmbc += Long.valueOf(t.get("sjsmbczds").toString());
  325 + jhqqbc += Long.valueOf(t.get("jhszfcs").toString());
  326 + sjqqzd += Long.valueOf(t.get("sjszfczds").toString());
  327 + if(gpSet.contains(t.get("lineCode").toString())){
  328 + jhgpqqbc += Long.valueOf(t.get("jhszfcs").toString());
  329 + sjgpqqzd += Long.valueOf(t.get("sjszfczds").toString());
  330 + }
  331 +
  332 + Map<String, Object> bc = new HashMap<String, Object>();
  333 + bc.put("type", "班次执行详情");
  334 + bc.put("lineName", t.get("lineName").toString());
  335 + bc.put("jh", t.get("jhbc").toString());
  336 + bc.put("sj", t.get("sjbc").toString());
  337 + bcDetail.add(bc);
  338 +
  339 + Map<String, Object> sm = new HashMap<String, Object>();
  340 + sm.put("type", "首站发车详情");
  341 + sm.put("lineName", t.get("lineName").toString());
  342 + sm.put("jh", t.get("jhsmbcs").toString());
  343 + sm.put("sj", t.get("sjsmbczds").toString());
  344 + smDetail.add(sm);
  345 +
  346 + Map<String, Object> qq = new HashMap<String, Object>();
  347 + qq.put("type", "起讫站发车准点详情");
  348 + qq.put("lineName", t.get("lineName").toString());
  349 + qq.put("jh", t.get("jhszfcs").toString());
  350 + qq.put("sj", t.get("sjszfczds").toString());
  351 + qqDetail.add(qq);
  352 +
  353 + if(gpSet.contains(t.get("lineCode").toString())){
  354 + Map<String, Object> gp = new HashMap<String, Object>();
  355 + gp.put("type", "起讫站发车准点详情");
  356 + gp.put("lineName", t.get("lineName").toString());
  357 + gp.put("jh", t.get("jhszfcs").toString());
  358 + gp.put("sj", t.get("sjszfczds").toString());
  359 + gpDetail.add(gp);
  360 + }
  361 + }
  362 +
  363 + Map<String, Object> ccMap = ccList.get(datesMap.get(d));
  364 + Map<String, Object> bcMap = bcList.get(datesMap.get(d));
  365 + Map<String, Object> smMap = smList.get(datesMap.get(d));
  366 + Map<String, Object> qqMap = qqList.get(datesMap.get(d));
  367 + Map<String, Object> gpMap = gpList.get(datesMap.get(d));
  368 +
  369 + ccMap.put("jh", Long.valueOf(ccMap.get("jh").toString()) + Long.valueOf(t.get("jhccz").toString()));
  370 + ccMap.put("sj", Long.valueOf(ccMap.get("sj").toString()) + Long.valueOf(t.get("sjcc").toString()));
  371 + bcMap.put("jh", Long.valueOf(bcMap.get("jh").toString()) + Long.valueOf(t.get("jhbc").toString()));
  372 + bcMap.put("sj", Long.valueOf(bcMap.get("sj").toString()) + Long.valueOf(t.get("sjbc").toString()));
  373 + smMap.put("jh", Long.valueOf(smMap.get("jh").toString()) + Long.valueOf(t.get("jhsmbcs").toString()));
  374 + smMap.put("sj", Long.valueOf(smMap.get("sj").toString()) + Long.valueOf(t.get("sjsmbczds").toString()));
  375 + qqMap.put("jh", Long.valueOf(qqMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  376 + qqMap.put("sj", Long.valueOf(qqMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  377 + if(gpSet.contains(t.get("lineCode").toString())){
  378 + gpMap.put("jh", Long.valueOf(gpMap.get("jh").toString()) + Long.valueOf(t.get("jhszfcs").toString()));
  379 + gpMap.put("sj", Long.valueOf(gpMap.get("sj").toString()) + Long.valueOf(t.get("sjszfczds").toString()));
  380 + }
  381 +
  382 + }
  383 + }
  384 +
  385 + List<Map<String, Object>> zxlList = new ArrayList<Map<String, Object>>();
  386 + zxlList.addAll(ccList);
  387 + zxlList.addAll(bcList);
  388 + zxlList.addAll(smList);
  389 + zxlList.addAll(qqList);
  390 + zxlList.addAll(gpList);
  391 +
  392 + List<Map<String, Object>> detailsList = new ArrayList<Map<String, Object>>();
  393 + detailsList.addAll(bcDetail);
  394 + detailsList.addAll(smDetail);
  395 + detailsList.addAll(qqDetail);
  396 + detailsList.addAll(gpDetail);
  397 +
  398 + for(Map<String, Object> t : zxlList){
  399 + if(t.get("jh") != null && Long.valueOf(t.get("jh").toString()).longValue() > 0l){
  400 + t.put("ratio", new BigDecimal(t.get("sj").toString()).divide(new BigDecimal(t.get("jh").toString()),
  401 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue());
  402 + } else {
  403 + t.put("ratio", "0");
  404 + }
  405 + }
  406 +
  407 + List<Map<String, Object>> glList = new ArrayList<Map<String, Object>>();
  408 +
  409 + Date dd1 = new Date();
  410 + dd1.setTime(dd.getTime() - 1l*1000*60*60*24);
  411 + String date1 = sd.format(dd1); //前一天
  412 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(date1);
  413 + List<ScheduleRealInfo> list_jh = new ArrayList<ScheduleRealInfo>();
  414 + List<ScheduleRealInfo> list_sj = new ArrayList<ScheduleRealInfo>();
  415 + for(ScheduleRealInfo s : findAll){
  416 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  417 + Set<ChildTaskPlan> cts = s.getcTasks();
  418 + if (cts != null && cts.size() > 0) {
  419 + list_sj.add(s);
  420 + } else {
  421 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  422 + list_sj.add(s);
  423 + }
  424 + }
  425 + }
  426 + }
  427 + double jhyygl = culateJhgl(list_jh);//计划营运公里
  428 + double sjgl = culateSjgl(list_sj);//实际公里
  429 + double sjljgl = culateLjgl(list_sj);//实际临加公里
  430 + double sjyygl = Arith.add(sjgl, sjljgl);//实际营运公里
  431 + double lz = culateCJLC(list_jh, "路阻");
  432 + double dm = culateCJLC(list_jh, "吊慢");
  433 + double gz = culateCJLC(list_jh, "故障");
  434 + double jf = culateCJLC(list_jh, "纠纷");
  435 + double zs = culateCJLC(list_jh, "肇事");
  436 + double qr = culateCJLC(list_jh, "缺人");
  437 + double qc = culateCJLC(list_jh, "缺车");
  438 + double qrqc = Arith.add(qr, qc);//缺人缺车
  439 + double kx = culateCJLC(list_jh, "客稀");
  440 + double qh = culateCJLC(list_jh, "气候");
  441 + double yw = culateCJLC(list_jh, "援外");
  442 + double lb_pc = culateCJLC(list_jh, "配车");
  443 + double lb_by = culateCJLC(list_jh, "保养");
  444 + double lb_cj = culateCJLC(list_jh, "抽减");
  445 + double lb_qt = culateCJLC(list_jh, "其他");
  446 + double qt = Arith.add(Arith.add(lb_pc, lb_by), Arith.add(lb_cj, lb_qt));//其他
  447 +
  448 + Map<String, Object> jhyyglMap = new HashMap<String, Object>();
  449 + jhyyglMap.put("name", "计划营运");
  450 + jhyyglMap.put("value", jhyygl);
  451 + glList.add(jhyyglMap);
  452 + Map<String, Object> sjyyglMap = new HashMap<String, Object>();
  453 + sjyyglMap.put("name", "实际营运");
  454 + sjyyglMap.put("value", sjyygl);
  455 + glList.add(sjyyglMap);
  456 + Map<String, Object> lzMap = new HashMap<String, Object>();
  457 + lzMap.put("name", "路阻");
  458 + lzMap.put("value", lz);
  459 + glList.add(lzMap);
  460 + Map<String, Object> dmMap = new HashMap<String, Object>();
  461 + dmMap.put("name", "吊慢");
  462 + dmMap.put("value", dm);
  463 + glList.add(dmMap);
  464 + Map<String, Object> gzMap = new HashMap<String, Object>();
  465 + gzMap.put("name", "故障");
  466 + gzMap.put("value", gz);
  467 + glList.add(gzMap);
  468 + Map<String, Object> jfMap = new HashMap<String, Object>();
  469 + jfMap.put("name", "纠纷");
  470 + jfMap.put("value", jf);
  471 + glList.add(jfMap);
  472 + Map<String, Object> zsMap = new HashMap<String, Object>();
  473 + zsMap.put("name", "肇事");
  474 + zsMap.put("value", zs);
  475 + glList.add(zsMap);
  476 + Map<String, Object> qrqcMap = new HashMap<String, Object>();
  477 + qrqcMap.put("name", "缺人缺车");
  478 + qrqcMap.put("value", qrqc);
  479 + glList.add(qrqcMap);
  480 + Map<String, Object> kxMap = new HashMap<String, Object>();
  481 + kxMap.put("name", "客稀");
  482 + kxMap.put("value", kx);
  483 + glList.add(kxMap);
  484 + Map<String, Object> qhMap = new HashMap<String, Object>();
  485 + qhMap.put("name", "气候");
  486 + qhMap.put("value", qh);
  487 + glList.add(qhMap);
  488 + Map<String, Object> ywMap = new HashMap<String, Object>();
  489 + ywMap.put("name", "援外");
  490 + ywMap.put("value", yw);
  491 + glList.add(ywMap);
  492 + Map<String, Object> qtMap = new HashMap<String, Object>();
  493 + qtMap.put("name", "其他");
  494 + qtMap.put("value", qt);
  495 + glList.add(qtMap);
  496 +
  497 +
  498 + resMap.put("lineCount", lineList.size());
  499 + resMap.put("level1Count", level1);
  500 + resMap.put("level2Count", level2);
  501 + resMap.put("sjbcs", sjbcs_z);
  502 + resMap.put("sjlcs", yygl_z.doubleValue());
  503 +
  504 + resMap.put("ccl", jhcc>0?new BigDecimal(sjcc).divide(new BigDecimal(jhcc),
  505 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  506 + resMap.put("bczxl", jhbc>0?new BigDecimal(sjbc).divide(new BigDecimal(jhbc),
  507 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  508 + resMap.put("smbzdl", jhbc>0?new BigDecimal(sjsmbc).divide(new BigDecimal(jhsmbc),
  509 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  510 + resMap.put("qqzzdl", jhbc>0?new BigDecimal(sjqqzd).divide(new BigDecimal(jhqqbc),
  511 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  512 + resMap.put("gpzdl", jhbc>0?new BigDecimal(sjgpqqzd).divide(new BigDecimal(jhgpqqbc),
  513 + 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).doubleValue():"0");
  514 +
  515 + resMap.put("ratioList", zxlList);
  516 +
  517 + resMap.put("detailsList", detailsList);
  518 +
  519 + resMap.put("mileageList", glList);
  520 +
  521 + return JSON.parseObject(JSON.toJSONString(resMap));
  522 + }
  523 +
  524 + @GET
  525 + @Path("/selectData/attendance")
  526 + public JSONObject attendance(){
  527 + Map<String, Object> resMap = new HashMap<String, Object>();
  528 +
  529 + int day = 7;//天数
  530 +
  531 + Date dd = new Date();
  532 + String date = sd.format(dd); //yyyy-MM-dd 当天
  533 + Date dd2 = new Date();
  534 + dd2.setTime(dd.getTime() - ((long)(day-1))*1000*60*60*24);
  535 + String date2 = sd.format(dd2); //yyyy-MM-dd 6天前(加上当天就是取7天数据)
  536 +
  537 + String[] dates = new String[day];
  538 + Map<String, Integer> datesMap = new HashMap<String, Integer>();
  539 +
  540 + for(int i = 0; i < day; i++){
  541 + Date tempDate = new Date();
  542 + tempDate.setTime(dd2.getTime() + ((long)i)*1000*60*60*24);
  543 + String format = sd.format(tempDate);
  544 + dates[i] = format;
  545 + datesMap.put(format, i);
  546 + }
  547 +
  548 + String lineSql="SELECT b.start_opt,a.company,a.line_code,a.name,a.level,"
  549 + + " a.shanghai_linecode, a.nature from "
  550 + + " bsth_c_line a left join bsth_c_line_config b "
  551 + + " on a.id=b.line where "
  552 + + " a.shanghai_linecode is not null and a.shanghai_linecode !='' and a.destroy=0 "
  553 + + " and a.remove=0 and a.nature in ('yxl','cgxl','gjxl','csbs','cctxl')";
  554 + List<Map<String, Object>> lineList=jdbcTemplate.query(lineSql,
  555 + new RowMapper<Map<String, Object>>(){
  556 + @Override
  557 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  558 + Map<String, Object> m=new HashMap<String,Object>();
  559 + m.put("state", rs.getString("start_opt"));
  560 + m.put("company", rs.getString("company"));
  561 + m.put("companyName", getGs(rs.getString("company")));
  562 + m.put("lineCode",rs.getString("line_code"));
  563 + m.put("name", rs.getString("name"));
  564 + m.put("level", rs.getString("level"));
  565 + m.put("shanghaiLinecode", rs.getString("shanghai_linecode"));
  566 + m.put("nature", getNature(rs.getString("nature")));
  567 + return m;
  568 + }
  569 + });
  570 +
  571 + Set<String> yyLine = new HashSet<String>();
  572 + for(Map<String, Object> t : lineList){
  573 + if(t.get("lineCode") != null){
  574 + yyLine.add(t.get("lineCode").toString());
  575 + }
  576 + }
  577 +
  578 + List<Map<String, Object>> attList = new ArrayList<Map<String, Object>>();
  579 + List<Map<String, Object>> lackList = new ArrayList<Map<String, Object>>();
  580 +
  581 + for(int i = 0; i < dates.length; i++){
  582 + Set<String> jhSet = new HashSet<String>();
  583 + Set<String> sjSet = new HashSet<String>();
  584 + List<ScheduleRealInfo> findAll = scheduleRealInfoRepository.findAll(dates[i]);
  585 + List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
  586 + for(ScheduleRealInfo s : findAll){
  587 + if(s.getXlBm() != null && yyLine.contains(s.getXlBm())){//营运线路
  588 + if(!isInOut(s)){
  589 + Set<ChildTaskPlan> cts = s.getcTasks();
  590 + if (cts != null && cts.size() > 0) {
  591 + list_s.add(s);
  592 + } else {
  593 + if (s.getZdsjActual() != null && s.getFcsjActual() != null) {
  594 + list_s.add(s);
  595 + }
  596 + }
  597 +
  598 + if(!s.isSflj() && !s.isCcService()){
  599 + jhSet.add(s.getjGh() + "/" + s.getjName());
  600 + }
  601 + }
  602 + }
  603 + }
  604 +
  605 + for(ScheduleRealInfo s : list_s){
  606 + if(!(s.getStatus() == -1)){
  607 + sjSet.add(s.getjGh() + "/" + s.getjName());
  608 + }
  609 +
  610 + if (s.isSflj()){
  611 + continue;
  612 + }
  613 + Set<ChildTaskPlan> cts;
  614 + cts = s.getcTasks();
  615 + //有子任务
  616 + if (cts != null && cts.size() > 0) {
  617 + for(ChildTaskPlan c : cts){
  618 + if(c.getCcId()==null){
  619 + if(c.getMileageType().equals("service")){
  620 + if(c.isDestroy() && (c.getDestroyReason()==null? "" : c.getDestroyReason()).equals("缺人")){
  621 + Map<String, Object> m = new HashMap<String, Object>();
  622 + m.put("gsName", s.getGsName());
  623 + m.put("lineName", s.getXlName());
  624 + m.put("driverName", s.getjName());
  625 + m.put("date", s.getRealExecDate());
  626 + m.put("time", c.getStartDate());
  627 + m.put("explain", c.getRemarks());
  628 + lackList.add(m);
  629 + }
  630 + }
  631 + }
  632 + }
  633 + }
  634 + //主任务烂班
  635 + else if(s.getStatus() == -1 && !s.isCcService()){
  636 + if(s.getAdjustExps().equals("缺人")){
  637 + Map<String, Object> m = new HashMap<String, Object>();
  638 + m.put("gsName", s.getGsName());
  639 + m.put("lineName", s.getXlName());
  640 + m.put("driverName", s.getjName());
  641 + m.put("date", s.getRealExecDate());
  642 + m.put("time", s.getFcsj());
  643 + m.put("explain", s.getRemarks());
  644 + lackList.add(m);
  645 + }
  646 + }
  647 + }
  648 +
  649 + Map<String, Object> att = new HashMap<String, Object>();
  650 + att.put("date", dates[i]);
  651 + att.put("jh", jhSet.size());
  652 + att.put("sj", sjSet.size());
  653 + attList.add(att);
  654 + }
  655 +
  656 + String gpLineSql = "select p.company_code, count(1) jsy, sum(count) line"
  657 + + " from (select e.jsy, e.xl, count(1) count from bsth_c_s_ecinfo e"
  658 + + " where e.is_cancel = 0 group by e.jsy, e.xl ) a"
  659 + + " left join bsth_c_personnel p on a.jsy = p.id"
  660 + + " group by p.company_code";
  661 + List<Map<String, Object>> jsyList=jdbcTemplate.query(gpLineSql,
  662 + new RowMapper<Map<String, Object>>(){
  663 + @Override
  664 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  665 + Map<String, Object> m=new HashMap<String,Object>();
  666 + m.put("company", rs.getString("company_code"));
  667 + m.put("jsy", rs.getString("jsy"));
  668 + m.put("line", rs.getString("line"));
  669 + return m;
  670 + }
  671 + });
  672 +
  673 + for(Map<String, Object> m : jsyList){
  674 + if("55".equals(m.get("company").toString())){
  675 + m.put("company", "上南");
  676 + }
  677 + if("22".equals(m.get("company").toString())){
  678 + m.put("company", "金高");
  679 + }
  680 + if("05".equals(m.get("company").toString())){
  681 + m.put("company", "杨高");
  682 + }
  683 + if("26".equals(m.get("company").toString())){
  684 + m.put("company", "南汇");
  685 + }
  686 + }
  687 +
  688 + resMap.put("jsyList", jsyList);
  689 + resMap.put("attList", attList);
  690 + resMap.put("lackList", lackList);
  691 +
  692 + return JSON.parseObject(JSON.toJSONString(resMap));
  693 + }
  694 +
  695 + public List<Map<String, Object>> createMap(String type, String[] dates){
  696 + List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
  697 +
  698 + for(int i = 0; i < dates.length; i++){
  699 + Map<String, Object> tempMap = new HashMap<String, Object>();
  700 + tempMap.put("type", type);
  701 + String[] split = dates[i].split("-");
  702 + tempMap.put("type", split[1] + "/" + split[2]);
  703 + tempMap.put("jh", "0");
  704 + tempMap.put("sj", "0");
  705 + mapList.add(tempMap);
  706 + }
  707 +
  708 + return mapList;
  709 + }
  710 +
  711 + public double culateJhgl(List<ScheduleRealInfo> lists) {
  712 + // TODO Auto-generated method stub
  713 + double jhgl=0;
  714 + for (int i = 0; i < lists.size(); i++) {
  715 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  716 + if (!isInOut(scheduleRealInfo)) {
  717 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
  718 + jhgl=Arith.add(jhgl,scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig());
  719 + }
  720 + }
  721 + }
  722 + return jhgl;
  723 + }
  724 +
  725 + public double culateSjgl(List<ScheduleRealInfo> lists) {
  726 + // TODO Auto-generated method stub
  727 + double sjgl=0;
  728 + for (int i = 0; i < lists.size(); i++) {
  729 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  730 + if (!isInOut(scheduleRealInfo)) {
  731 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  732 + if(!scheduleRealInfo.isSflj()){
  733 + if(childTaskPlans.isEmpty()){
  734 + if(!(scheduleRealInfo.getStatus() == -1)){
  735 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  736 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  737 + if(jhlc-jhlcOrig>0){
  738 + sjgl=Arith.add(sjgl,jhlcOrig);
  739 + }else{
  740 + sjgl=Arith.add(sjgl,jhlc);
  741 + }
  742 +
  743 + }
  744 + }else{
  745 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  746 + while (it.hasNext()) {
  747 + ChildTaskPlan childTaskPlan = it.next();
  748 + if(childTaskPlan.getMileageType().equals("service")
  749 + &&"正常".equals(childTaskPlan.getType1())
  750 + && childTaskPlan.getCcId()==null){
  751 + if (!childTaskPlan.isDestroy()) {
  752 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  753 + sjgl=Arith.add(sjgl,jhgl);
  754 + }
  755 + }
  756 + }
  757 + }
  758 + }
  759 + }
  760 + }
  761 + return sjgl;
  762 + }
  763 +
  764 + public double culateLjgl(List<ScheduleRealInfo> lists) {
  765 + // TODO Auto-generated method stub
  766 + double ljgl=0;
  767 + for (int i = 0; i < lists.size(); i++) {
  768 + ScheduleRealInfo scheduleRealInfo=lists.get(i);
  769 + if (!isInOut(scheduleRealInfo)) {
  770 + if(!(scheduleRealInfo.getStatus() == -1)){
  771 + if(scheduleRealInfo.isSflj()){
  772 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  773 + if(childTaskPlans.isEmpty()){
  774 + ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
  775 + }else{
  776 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  777 + while (it.hasNext()) {
  778 + ChildTaskPlan childTaskPlan = it.next();
  779 + if(childTaskPlan.getMileageType().equals("service") && childTaskPlan.getCcId()==null){
  780 + if (!childTaskPlan.isDestroy()) {
  781 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  782 + ljgl=Arith.add(ljgl,jhgl);
  783 + }
  784 + }
  785 + }
  786 + }
  787 + }else{
  788 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  789 + if(childTaskPlans.isEmpty()){
  790 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  791 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  792 + double zjlc=Arith.sub(jhlc, jhlcOrig);
  793 + if(zjlc>0){
  794 + ljgl=Arith.add(zjlc, ljgl);
  795 + }
  796 + }else{
  797 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  798 + while (it.hasNext()) {
  799 + ChildTaskPlan childTaskPlan = it.next();
  800 + if(childTaskPlan.getCcId()==null){
  801 + if("service".equals(childTaskPlan.getMileageType())&&"临加".equals(childTaskPlan.getType1())){
  802 + if (!childTaskPlan.isDestroy()) {
  803 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  804 + ljgl=Arith.add(ljgl,jhgl);
  805 + }
  806 + }
  807 + }
  808 + }
  809 + }
  810 + }
  811 + }
  812 +
  813 + }
  814 + }
  815 + return ljgl;
  816 + }
  817 +
  818 + public double culateCJLC(List<ScheduleRealInfo> list, String item) {
  819 + // TODO Auto-generated method stub
  820 + double sum = 0;
  821 + Set<ChildTaskPlan> cts;
  822 + for(ScheduleRealInfo sch : list){
  823 + if (sch.isSflj())
  824 + continue;
  825 + cts = sch.getcTasks();
  826 + if(isInOut(sch))
  827 + continue;
  828 + //有子任务
  829 + if (cts != null && cts.size() > 0) {
  830 + for(ChildTaskPlan c : cts){
  831 + if(c.getCcId()==null){
  832 + if(c.getMileageType().equals("service")){
  833 + if(item.equals("其他")){
  834 + if(c.isDestroy() &&
  835 + ((c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item)||
  836 + (c.getDestroyReason()==null?"": c.getDestroyReason()).equals("")))
  837 + sum = Arith.add(sum, c.getMileage());
  838 + }else{
  839 + if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))
  840 + sum = Arith.add(sum, c.getMileage());
  841 + }
  842 + }
  843 + }
  844 + }
  845 + }
  846 +
  847 + //主任务烂班
  848 + else if(sch.getStatus() == -1 && !sch.isCcService()){
  849 + if(sch.getAdjustExps().equals(item) ||
  850 + (StringUtils.isEmpty(sch.getAdjustExps()) && item.equals("其他"))){
  851 + sum = Arith.add(sum, sch.getJhlcOrig());
  852 + }
  853 + }
  854 + else if(item.equals("其他")){
  855 + double diff = Arith.sub(sch.getJhlcOrig(), sch.getJhlc());
  856 + if(diff > 0){
  857 + sum = Arith.add(sum, diff);
  858 + }
  859 + }
  860 + }
  861 + return sum;
  862 + }
  863 +}