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