Commit 026c3f25c97779c6be61692a1453b341f4add80b

Authored by 王通
1 parent 4ccd76ef

1.

src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
1   -package com.bsth.service.report.impl;
2   -import com.bsth.common.ResponseCode;
3   -import com.bsth.data.BasicData;
4   -import com.bsth.entity.Business;
5   -import com.bsth.entity.Line;
6   -import com.bsth.entity.Personnel;
7   -import com.bsth.entity.StationRoute;
8   -import com.bsth.entity.excep.ArrivalInfo;
9   -import com.bsth.entity.mcy_forms.Singledata;
10   -import com.bsth.entity.oil.Dlb;
11   -import com.bsth.entity.oil.Ylb;
12   -import com.bsth.entity.realcontrol.ChildTaskPlan;
13   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
14   -import com.bsth.entity.sys.Dictionary;
15   -import com.bsth.entity.sys.Interval;
16   -import com.bsth.repository.BusinessRepository;
17   -import com.bsth.repository.LineRepository;
18   -import com.bsth.repository.LsStationRouteRepository;
19   -import com.bsth.repository.StationRouteRepository;
20   -import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
21   -import com.bsth.service.LineService;
22   -import com.bsth.service.calc.CalcWaybillService;
23   -import com.bsth.service.report.CulateMileageService;
24   -import com.bsth.service.report.ReportService;
25   -import com.bsth.service.sys.DictionaryService;
26   -import com.bsth.util.Arith;
27   -import com.bsth.util.ComparableChild;
28   -import com.bsth.util.ComparableJob;
29   -import com.bsth.util.ReportUtils;
30   -import com.bsth.util.db.DBUtils_MS;
31   -
32   -import org.apache.commons.lang.StringUtils;
33   -import org.slf4j.Logger;
34   -import org.slf4j.LoggerFactory;
35   -import org.springframework.beans.factory.annotation.Autowired;
36   -import org.springframework.jdbc.core.JdbcTemplate;
37   -import org.springframework.jdbc.core.RowMapper;
38   -import org.springframework.stereotype.Service;
39   -
40   -import java.math.BigDecimal;
41   -import java.sql.Connection;
42   -import java.sql.PreparedStatement;
43   -import java.sql.ResultSet;
44   -import java.sql.SQLException;
45   -import java.text.DecimalFormat;
46   -import java.text.ParseException;
47   -import java.text.SimpleDateFormat;
48   -import java.util.*;
49   -
50   -@Service
51   -public class ReportServiceImpl implements ReportService{
52   -
53   - private static long zgf1 = 6 * 60 + 31,
54   - zgf2 = 8 * 60 + 30,
55   - wgf1 = 16 * 60 + 1,
56   - wgf2 = 18 * 60;
57   -
58   - private Logger logger = LoggerFactory.getLogger(this.getClass());
59   -
60   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
61   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
62   -
63   - @Autowired
64   - JdbcTemplate jdbcTemplate;
65   -
66   - @Autowired
67   - ScheduleRealInfoRepository scheduleRealInfoRepository;
68   - @Autowired
69   - StationRouteRepository stationRoutRepository;
70   - @Autowired
71   - CulateMileageService culateService;
72   - @Autowired
73   - LineService lineService;
74   - @Autowired
75   - LineRepository lineRepository;
76   - @Autowired
77   - StationRouteRepository stationRouteRepository;
78   - @Autowired
79   - LsStationRouteRepository lsStationRouteRepository;
80   - @Autowired
81   - CulateMileageService culateMileageService;
82   - @Autowired
83   - DictionaryService dictionaryService;
84   - @Autowired
85   - CalcWaybillService calcWaybillService;
86   - @Autowired
87   - BusinessRepository businessRepository;
88   -
89   - @Override
90   - public List<ScheduleRealInfo> queryListBczx(String line, String date,String clzbh) {
91   - // TODO Auto-generated method stub
92   - List<ScheduleRealInfo> list=scheduleRealInfoRepository.findByDate2(line,date,clzbh);
93   -
94   -// jdbcTemplate.query("select * from bsth_c_s_sp_info_real where line=?1 "
95   -// + "and DATE_FORMAT(schedule_date,'%Y-%m-%d')=?2 and cl_zbl=?3",
96   -// new Object[]{line,date,clzbh},
97   -// new RowMapper(){
98   -// @Override
99   -// public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
100   -// ScheduleRealInfo s = new ScheduleRealInfo();
101   -//// s.
102   -// return s;
103   -// }
104   -// });
105   -
106   - return list;
107   - }
108   - @Override
109   - public List<ArrivalInfo> queryListZdxx(String line, String date, String clzbh, String sjfc, String sjdd) {
110   - // TODO Auto-generated method stub
111   - List<ArrivalInfo> list=new ArrayList<ArrivalInfo>();
112   - try {
113   - String sbbb=BasicData.deviceId2NbbmMap.inverse().get(clzbh);
114   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
115   - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
116   -// Long date1=simpleDateFormat.parse(date+" "+sjfc+":00").getTime();
117   -// Long date2=simpleDateFormat.parse(date+" "+sjdd+":00").getTime();
118   - Long date1=simpleDateFormat.parse(sjfc+":00").getTime();
119   - Long date2=simpleDateFormat.parse(sjdd+":00").getTime();
120   - Date dates=simpleDateFormat.parse(date+" 00:00:00");
121   - List<ArrivalInfo> lists=load(line,sbbb,date1,date2,dates,date);
122   -
123   - for(int i=0;i<lists.size();i++){
124   - ArrivalInfo t1=lists.get(i);
125   - if(t1.getInOut()==0){
126   - t1.setJzsj(sdf.format(new Date(t1.getTs())));
127   - for(int j=0;j<lists.size();j++){
128   - ArrivalInfo t2=lists.get(j);
129   - if(t2.getInOut()==1 && t2.getDeviceId().equals(t1.getDeviceId()) && t2.getStopNo().equals(t1.getStopNo())){
130   - t1.setCzsj(sdf.format(new Date(t2.getTs())));
131   - }
132   - }
133   - list.add(t1);
134   - }
135   -
136   - }
137   -
138   -
139   - } catch (ParseException e) {
140   - // TODO Auto-generated catch block
141   - e.printStackTrace();
142   - }
143   -
144   - return list;
145   - }
146   -
147   -
148   - public List<ArrivalInfo> load(String line,String sbbb,Long date1,Long date2,Date dates,String date){
149   - List<ArrivalInfo> list = null;
150   - Calendar cal = Calendar.getInstance();
151   - cal.setTime(dates);
152   - //周数,表分区字段
153   - int weeks_year = cal.get(Calendar.WEEK_OF_YEAR);
154   - int weeks_year_next=weeks_year +1;
155   - Connection conn = null;
156   - PreparedStatement ps = null;
157   - ResultSet rs = null;
158   - String year=date.substring(0,4);
159   - String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year in (?, ?) AND line_id=? "
160   - + " AND ts >= ? AND ts <=? AND device_id=? order by ts";
161   - try{
162   - conn = DBUtils_MS.getConnection();
163   - ps = conn.prepareStatement(sql);
164   - ps.setInt(1, weeks_year);
165   - ps.setInt(2, weeks_year_next);
166   - ps.setString(3,line);
167   - ps.setLong(4, date1);
168   - ps.setLong(5, date2);
169   - ps.setString(6, sbbb);
170   - rs = ps.executeQuery();
171   -
172   - list = resultSet2Set(rs);
173   - }catch(Exception e){
174   - logger.error("", e);
175   - }finally {
176   - DBUtils_MS.close(rs, ps, conn);
177   - }
178   - return list;
179   - }
180   -
181   - public List<ArrivalInfo> resultSet2Set(ResultSet rs) throws SQLException{
182   - List<ArrivalInfo> list = new ArrayList<>();
183   -
184   - ArrivalInfo arr;
185   - while(rs.next()){
186   - arr = new ArrivalInfo();
187   - arr.setDeviceId(rs.getString("device_id"));
188   - String nbbm=BasicData.deviceId2NbbmMap.get(arr.getDeviceId());
189   - arr.setNbbm(nbbm);
190   - arr.setPzh(BasicData.nbbmCompanyPlateMap.get(nbbm));
191   - if(null == arr.getNbbm()){
192   - logger.warn("未注册的设备号," + arr.getDeviceId());
193   - continue;
194   - }
195   -
196   - arr.setTs(rs.getLong("ts"));
197   - arr.setLineCode(rs.getString("line_id"));
198   - arr.setUpDown(rs.getInt("up_down"));
199   - arr.setStopNo(rs.getString("stop_no"));
200   - arr.setStopName(BasicData.stationCode2NameMap.get(rs.getString("line_id")+"_"+rs.getInt("up_down")+"_"+rs.getString("stop_no")));
201   - arr.setInOut(rs.getInt("in_out"));
202   - arr.setCreateDate(rs.getLong("create_timestamp"));
203   - arr.setWeeksYear(rs.getInt("weeks_year"));
204   - arr.setEnable(true);
205   -
206   - list.add(arr);
207   - }
208   - return list;
209   - }
210   - @Override
211   - public List<ArrivalInfo> queryListClzd(String line, String zd, String zdlx, String fcsj, String ddsj) {
212   - // TODO Auto-generated method stub
213   - List<ArrivalInfo> list=new ArrayList<ArrivalInfo>();
214   - try {
215   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
216   - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
217   - Long date1=simpleDateFormat.parse(fcsj+":00").getTime();
218   - Long date2=simpleDateFormat.parse(ddsj+":00").getTime();
219   - Date dates1=simpleDateFormat.parse(fcsj+":00");
220   - Date dates2=simpleDateFormat.parse(ddsj+":00");
221   - List<ArrivalInfo> lists = new ArrayList<ArrivalInfo>();
222   - if(zd.contains(",")){
223   - String[] split = zd.split(",");
224   - for(String s : split){
225   - lists.addAll(load2(line,date1,date2,dates1,dates2,s,zdlx,fcsj));
226   - }
227   - } else {
228   - lists.addAll(load2(line,date1,date2,dates1,dates2,zd,zdlx,fcsj));
229   - }
230   -
231   - for(int i=0;i<lists.size();i++){
232   - ArrivalInfo t1=lists.get(i);
233   - if(t1.getInOut()==0){
234   - t1.setJzsj(sdf.format(new Date(t1.getTs())));
235   - for(int j=0;j<lists.size();j++){
236   - ArrivalInfo t2=lists.get(j);
237   - if(t2.getDeviceId().equals(t1.getDeviceId())
238   - && t2.getStopNo().equals(t1.getStopNo())
239   - && t2.getTs()>t1.getTs()){
240   - if(t2.getInOut() == 1){//下一个同站同车是出站信号则获取出站时间
241   - t1.setCzsj(sdf.format(new Date(t2.getTs())));
242   - break;//下一个同站同车是进站信号则认为出站信号丢失
243   - } else if(t2.getInOut() == 0){
244   - break;
245   - }
246   - }
247   - }
248   - list.add(t1);
249   - }
250   -
251   - }
252   -
253   -
254   - } catch (ParseException e) {
255   - // TODO Auto-generated catch block
256   - e.printStackTrace();
257   - }
258   -
259   - return list;
260   - }
261   -
262   -
263   - public List<ArrivalInfo> load2(String line,Long date1,Long date2,Date dates1,Date dates2,String zd,String zdlx,String fcsj){
264   - SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy");
265   - List<ArrivalInfo> list = new ArrayList<ArrivalInfo>();
266   - Calendar cal = Calendar.getInstance();
267   - cal.setTime(dates1);
268   - //周数,表分区字段
269   - int weeks_year1 = cal.get(Calendar.WEEK_OF_YEAR);
270   - cal.setTime(dates2);
271   - int weeks_year2 = cal.get(Calendar.WEEK_OF_YEAR);
272   - Connection conn = null;
273   - PreparedStatement ps = null;
274   - ResultSet rs = null;
275   - String year=fcsj.substring(0,4);
276   -
277   - String year1 = yearFormat.format(dates1);
278   - String year2 = yearFormat.format(dates2);
279   - List<Integer> weeksList = new ArrayList<Integer>();
280   - if(year1.equals(year2)){
281   - //把每一周的编号加入list,一年最多五十几周。最多循环60次避免意外死循环
282   - for(int w = 0, weeks_num = weeks_year1; w < 60 && weeks_num <= weeks_year2; w++, weeks_num++){
283   - weeksList.add(weeks_num);
284   - }
285   - } else {
286   - weeksList.add(weeks_year1);
287   - weeksList.add(weeks_year2);
288   - }
289   -
290   - String tempStr = "";
291   - for(int i = 0; i < weeksList.size(); i++){
292   - tempStr += "?,";
293   - }
294   - if(tempStr.length() > 0){
295   - tempStr = tempStr.substring(0, tempStr.length() - 1);
296   - }
297   -
298   - String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year in ("+tempStr+") "
299   - + " AND line_id=? AND up_down=? AND stop_no like ? AND ts between ? AND ? order by ts";
300   - System.out.println(sql);
301   - try{
302   - conn = DBUtils_MS.getConnection();
303   - ps = conn.prepareStatement(sql);
304   - int no = 1;
305   - for(;no <= weeksList.size(); no++){
306   - ps.setInt(no, weeksList.get(no-1));
307   - }
308   - ps.setString(no++, line);
309   - ps.setString(no++, zdlx);
310   - ps.setString(no++, ""+zd+"%");
311   - ps.setLong(no++, date1);
312   - ps.setLong(no++, date2);
313   - rs = ps.executeQuery();
314   -
315   - list = resultSet2Set(rs);
316   - }catch(Exception e){
317   - logger.error("", e);
318   - }finally {
319   - DBUtils_MS.close(rs, ps, conn);
320   - }
321   - return list;
322   - }
323   - @Override
324   - public List<Map<String, String>> sreachZd(String line, int zdlx, String date1, String date2) {
325   - List<Map<String, String>> list = new ArrayList<>();
326   - // TODO Auto-generated method stub
327   - if(date1.length() >= 10 && date1.length() >= 10){
328   - date1 = date1.substring(0, 10);
329   - date2 = date2.substring(0, 10);
330   - List<Object[]> findHistory = lsStationRouteRepository.findHistory(line, zdlx, date1, date2);
331   - Set<String> tempSet = new HashSet<String>();
332   - for(Object[] obj : findHistory){
333   - if(obj[2] != null && obj[2].toString().trim().length() > 0){
334   - tempSet.add(obj[2].toString().trim());
335   - }
336   - }
337   - for(Object[] obj : findHistory){
338   - int length = tempSet.toArray().length;
339   - Map<String, String> reMap = new HashMap<String, String>();
340   - reMap.put("id", obj[0].toString());
341   - reMap.put("text", obj[1] + (length > 1 ? (" -版本" + obj[2]) : ""));
342   - list.add(reMap);
343   - }
344   - }
345   -
346   - return list;
347   - }
348   - @Override
349   - public List<Object[]> historyMessageCount(String line, String date, String code) {
350   - // TODO Auto-generated method stub
351   - List<Object[]> list = scheduleRealInfoRepository.historyMessageCount(line, date, code);
352   - return list;
353   - }
354   - @Override
355   - public List<Object[]> historyMessageList(String line, String date, String code,String type) {
356   - // TODO Auto-generated method stub
357   - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
358   -
359   - List<Object[]> list = scheduleRealInfoRepository.historyMessageList(line, date, code);
360   - for (Object[] obj : list) {
361   - if (obj != null) {
362   - obj[3] = sdf.format(new Date(Long.parseLong(obj[3].toString())));
363   - }
364   - }
365   -
366   - if (type != null && type.length() != 0 && type.equals("export_msg")) {
367   - String lineName = BasicData.lineCode2NameMap.get(line);
368   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
369   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
370   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
371   - Map<String, Object> m = new HashMap<String, Object>();
372   - ReportUtils ee = new ReportUtils();
373   - List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
374   - for (int i = 0; i < list.size(); i++) {
375   - Map<String, Object> map = new HashMap<String, Object>();
376   - Object[] obj = list.get(i);
377   - map.put("num", i + 1);
378   - map.put("line", obj[0]);
379   - map.put("clZbh", obj[1]);
380   - map.put("sender", obj[2]);
381   - map.put("date", obj[3]);
382   - map.put("text", obj[4]);
383   - newList.add(map);
384   - }
385   - try {
386   - listI.add(newList.iterator());
387   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
388   - ee.excelReplace(listI, new Object[]{m}, path + "mould/message.xls",
389   - path + "export/" + sdfSimple.format(sdfMonth.parse(date))
390   - + "-" + lineName + "-调度消息分析.xls");
391   - } catch (Exception e) {
392   - // TODO: handle exception
393   - e.printStackTrace();
394   - }
395   - }
396   - return list;
397   - }
398   -
399   - @Override
400   - public Map<String, Object> tbodyTime1(String line, String ttinfo) {
401   - DecimalFormat df = new DecimalFormat("#0.00");
402   - Map<String, Object> map=new HashMap<String,Object>();
403   - // TODO Auto-generated method stub
404   -
405   - List<String> objList = new ArrayList<String>();
406   - objList.add(ttinfo);
407   -
408   - //查询配车
409   - String sqlPc=" select count(*) from (select lp, count(*) from"
410   - + " bsth_c_s_ttinfo_detail where ttinfo = ?"
411   - + " group by lp ) a";
412   - //配车
413   - int pcs=jdbcTemplate.queryForObject(sqlPc, objList.toArray(), Integer.class);
414   -
415   -
416   - String sqlPlan=" SELECT jhlc,bc_type,fcsj FROM bsth_c_s_ttinfo_detail "
417   - +" where ttinfo = ? ";
418   -
419   - //查询班次
420   - List<Map<String, Object>> listPlan= jdbcTemplate.query(sqlPlan, objList.toArray(),
421   - new RowMapper<Map<String, Object>>(){
422   - @Override
423   - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
424   - Map<String, Object> m2=new HashMap<String,Object>();
425   - m2.put("jhlc", rs.getDouble("jhlc"));
426   - m2.put("bcType", rs.getString("bc_type"));
427   - m2.put("fcsj", rs.getString("fcsj"));
428   - return m2;
429   - }
430   - });
431   -
432   - //班次
433   - int zgf_0 = 6*60+31,zgf_1 = 8*60+30,wgf_0 = 16*60+1,wgf_1 = 18*60;
434   - int qcBc=0,qjBc=0,zqcBc=0,zqjBc=0,wqcBc=0,wqjBc=0;
435   - double zlc = 0 , yylc = 0,kslc=0;
436   -
437   - for (int i = 0; i < listPlan.size(); i++) {
438   - Map<String, Object> m=listPlan.get(i);
439   - double jhlc=Double.parseDouble(m.get("jhlc").toString());
440   - String bcType=m.get("bcType").toString();
441   - String fcsjs[]=m.get("fcsj").toString().split(":");
442   -
443   - zlc +=jhlc;
444   - if(bcType.equals("in") || bcType.equals("out")){
445   - kslc+=jhlc;
446   - }
447   - else if(bcType.equals("region")){
448   - qjBc++;
449   - if((Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) > zgf_0
450   - && (Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) < zgf_1){
451   - zqjBc++;
452   - }else if((Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) > wgf_0
453   - && (Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) < wgf_1){
454   - wqjBc++;
455   - }
456   -
457   - yylc+=jhlc;
458   - }else{
459   - qcBc ++;
460   - if((Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) > zgf_0
461   - && (Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) < zgf_1){
462   - zqcBc++;
463   - }else if((Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) > wgf_0
464   - && (Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) < wgf_1){
465   - wqcBc++;
466   - }
467   - yylc +=jhlc;
468   - }
469   - }
470   -
471   - map.put("pcs", pcs);
472   - map.put("qcbc", qcBc);
473   - map.put("qjbc", qjBc);
474   - map.put("zqcbc", zqcBc);
475   - map.put("zqjbc", zqjBc);
476   - map.put("wqcbc", wqcBc);
477   - map.put("wqjbc", wqjBc);
478   - map.put("zlc", df.format( zlc));
479   - map.put("yylc", df.format(yylc));
480   - map.put("kslc",df.format( kslc));
481   - //查询里程
482   - return map;
483   - }
484   - @Override
485   - public Map<String, Object> tbodyTime2(String line, String ttinfo) {
486   - DecimalFormat df = new DecimalFormat("#0.00");
487   - // TODO Auto-generated method stub
488   - //最早营运时间 区分夜宵线
489   - String minfcsj="02:00";
490   - List<Line> lineList=lineRepository.findLineByCode(line);
491   - if(lineList.size()>0){
492   - List<String> objList = new ArrayList<String>();
493   - objList.add(lineList.get(0).getId() + "");
494   - String sql = "select count(*) from bsth_c_line_config where line = ? ";
495   - if(jdbcTemplate.queryForObject(sql, objList.toArray(), Integer.class) > 0){
496   - String sqlMinYysj="select start_opt from bsth_c_line_config where "
497   - + " id = ("
498   - + "select max(id) from bsth_c_line_config where line = ? "
499   - + ")";
500   - minfcsj=jdbcTemplate.queryForObject(sqlMinYysj, objList.toArray(), String.class);
501   - }
502   - }
503   - String[] minSjs = minfcsj.split(":");
504   - int minSj=Integer.parseInt(minSjs[0])*60+Integer.parseInt(minSjs[1]);
505   -
506   - List<String> objList = new ArrayList<String>();
507   - objList.add(ttinfo);
508   - objList.add(minfcsj);
509   - objList.add(ttinfo);
510   - objList.add(minfcsj);
511   - //查询时间里程
512   - String sqlPc=" (SELECT jhlc,fcsj,bc_type,bcsj,lp,2 as xh, ists FROM bsth_c_s_ttinfo_detail "
513   - + " where ttinfo = ? and fcsj <= ? ) "
514   - + " union "
515   - + " (SELECT jhlc,fcsj,bc_type,bcsj,lp,1 as xh, ists FROM bsth_c_s_ttinfo_detail "
516   - + " where ttinfo = ? and fcsj > ? ) order by lp,xh,fcsj";
517   - Map<String, Object> map=new HashMap<String,Object>();
518   - List<Map<String, Object>> list= jdbcTemplate.query(sqlPc, objList.toArray(),
519   - new RowMapper<Map<String, Object>>(){
520   - @Override
521   - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
522   - Map<String, Object> m=new HashMap<String,Object>();
523   - m.put("fcsj", rs.getString("fcsj"));
524   - m.put("yygl", rs.getString("jhlc")==null?"0":rs.getString("jhlc"));
525   - m.put("bcType", rs.getString("bc_type"));
526   - m.put("bcsj", rs.getString("bcsj"));
527   - m.put("lp", rs.getString("lp"));
528   - m.put("ists", rs.getObject("ists")==null?"0":rs.getString("ists"));
529   - return m;
530   - }
531   - });
532   -
533   - int yysj=0;
534   - double yycs=0 ,yygl=0;
535   - String lp ="0";
536   - int sj=0, bcsj = 0;
537   - int temp = 0;
538   - for(int i=0;i<list.size();i++){
539   - Map<String, Object> m=list.get(i);
540   - String time=m.get("fcsj").toString();
541   - String[] times = time.split(":");
542   - int sjT = Integer.parseInt(times[0])*60+Integer.parseInt(times[1]);
543   - if(lp.equals(m.get("lp").toString())){
544   - if(sjT <= minSj){
545   - if(m.get("bcType").equals("in") || m.get("bcType").equals("out")){
546   - if(m.get("bcType").equals("in")){
547   - if(sj!=0){
548   -// yysj += sjT + (24*60) - sj;
549   - yysj += bcsj;
550   - bcsj = 0;
551   - }
552   - sj=0;
553   - }
554   - }else{
555   - yygl += Double.parseDouble(m.get("yygl").toString());
556   -
557   - if(sj==0){
558   - sj = sjT + (24*60);
559   - }else{
560   - yysj += sjT + (24*60) - sj;
561   - if(m.containsKey("ists") && m.get("ists").equals("1")){
562   - yysj += Integer.valueOf(m.get("bcsj").toString());
563   - } else {
564   - sj = sjT + (24*60);
565   - }
566   - }
567   - }
568   - }else{
569   - if(m.get("bcType").equals("in") || m.get("bcType").equals("out")){
570   - if(m.get("bcType").equals("in")){
571   - if(sj!=0){
572   -// yysj += sjT - sj;
573   - yysj += bcsj;
574   - bcsj = 0;
575   - }
576   - sj=0;
577   - }
578   - } else {
579   - yygl += Double.parseDouble(m.get("yygl").toString());
580   -
581   - if(sj==0){
582   - sj = sjT;
583   - }else{
584   - yysj += sjT - sj;
585   - if(m.containsKey("ists") && m.get("ists").equals("1")){
586   - yysj += Integer.valueOf(m.get("bcsj").toString());
587   - } else {
588   - sj = sjT;
589   - }
590   - }
591   - }
592   - }
593   - }else{
594   - if(sj == 0){
595   - yysj += bcsj;
596   - bcsj = 0;
597   - }
598   - if( !(m.get("bcType").equals("in") || m.get("bcType").equals("out"))){
599   - yygl += Double.parseDouble(m.get("yygl").toString());
600   - sj = sjT;
601   - }else{
602   - sj=0;
603   - }
604   - lp=m.get("lp").toString();
605   - }
606   -
607   - if(m.containsKey("ists") && m.get("ists").equals("1")){
608   - sj = 0;
609   - }
610   - if( !(m.get("bcType").equals("in") || m.get("bcType").equals("out")))
611   - bcsj = Integer.valueOf(m.get("bcsj").toString());
612   - }
613   -
614   - if(yysj>0){
615   - yycs =yygl/(yysj*1.0/60);
616   - }
617   - int hh=yysj/60;
618   - int mm=yysj%60;
619   -
620   - map.put("yysj", hh+":"+mm);
621   - map.put("yycs", df.format(yycs)+"公里/小时");
622   -// map.put(key, value)
623   -
624   - return map;
625   - }
626   -
627   - public static void main(String[] args) {
628   - System.out.println(609360/60);
629   - System.out.println(609360%60);
630   - }
631   -
632   - @Override
633   - public List<Map<String, Object>> tbodyTime3(String line, String ttinfo) {
634   - // TODO Auto-generated method stub
635   - List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
636   - List<Map<String, Object>> list_s=new ArrayList<Map<String,Object>>();
637   -
638   - List<String> objList = new ArrayList<String>();
639   - objList.add(ttinfo);
640   - String sqlCl="SELECT lp cl_zbh,qdz_name,bc_type,fcsj,bcsj FROM"
641   - + " bsth_c_s_ttinfo_detail WHERE ttinfo = ? "
642   - + " AND (bc_type = 'normal' or bc_type='region') order by qdz_name";
643   -
644   - List<Map<String, Object>> listj= jdbcTemplate.query(sqlCl, objList.toArray(),
645   - new RowMapper<Map<String, Object>>(){
646   - @Override
647   - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
648   - Map<String, Object> m=new HashMap<String,Object>();
649   - m.put("cl_zbh", rs.getString("cl_zbh"));
650   - m.put("qdz_name", rs.getString("qdz_name"));
651   - m.put("bcType", rs.getString("bc_type"));
652   - m.put("fcsj", rs.getString("fcsj"));
653   - m.put("bcsj", rs.getString("bcsj"));
654   - return m;
655   - }
656   - });
657   -
658   - String sqlZd="select qdz_name,bc_type from bsth_c_s_ttinfo_detail WHERE ttinfo = ? "
659   - + " AND (bc_type = 'normal' or bc_type='region') group by qdz_name ,bc_type "
660   - + " order by qdz_name";
661   - List<Map<String, Object>> lists= jdbcTemplate.query(sqlZd, objList.toArray(),
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("zdm", rs.getString("qdz_name"));
667   - m.put("bcType", rs.getString("bc_type"));
668   - return m;
669   - }
670   - });
671   -
672   - for (int i = 0; i < lists.size(); i++) {
673   - Map<String, Object> z=new HashMap<String,Object>();
674   - Map<String, Object> w=new HashMap<String,Object>();
675   - Map<String, Object> p=lists.get(i);
676   - int zbcs=0;
677   - int wbcs=0;
678   - if(p.get("bcType").toString().equals("normal")){
679   - for (int j = 0; j < listj.size(); j++) {
680   - if(listj.get(j).get("qdz_name").toString().equals(p.get("zdm").toString()) &&
681   - listj.get(j).get("bcType").toString().equals("normal")){
682   - String time=listj.get(j).get("fcsj").toString();
683   - long bcsj= Long.parseLong(listj.get(j).get("bcsj").toString());
684   - String clZbh=listj.get(j).get("cl_zbh").toString();
685   - String[] fcsjStr = time.split(":");
686   - long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
687   - long ddsj=fcsj+bcsj;
688   - if((fcsj>=zgf1 && fcsj<=zgf2) || (ddsj>=zgf1&&ddsj<=zgf2)
689   - || (fcsj<zgf1&&ddsj>zgf2)){
690   - if(p.get("z"+clZbh)==null){
691   - zbcs++;
692   - p.put("z"+clZbh, clZbh);
693   - }
694   - }
695   -
696   - if((fcsj>=wgf1 && fcsj<=wgf2) || (ddsj>=wgf1&&ddsj<=wgf2)
697   - || (fcsj<wgf1&&ddsj>wgf2)){
698   - if(p.get("w"+clZbh)==null){
699   - wbcs++;
700   - p.put("w"+clZbh, clZbh);
701   - }
702   - }
703   - }
704   -
705   - }
706   - if(zbcs>0){
707   - z.put("zdm", p.get("zdm"));
708   - z.put("cls", zbcs);
709   - z.put("lx", "zqc");
710   - list_s.add(z);
711   - }
712   - if(wbcs>0){
713   - w.put("zdm", p.get("zdm"));
714   - w.put("cls", zbcs);
715   - w.put("lx", "wqc");
716   - list_s.add(w);
717   - }
718   -
719   - }
720   -
721   - if(p.get("bcType").equals("region")){
722   - for (int j = 0; j < listj.size(); j++) {
723   - if(listj.get(j).get("qdz_name").toString().equals(p.get("zdm").toString()) &&
724   - listj.get(j).get("bcType").toString().equals("region")){
725   - String time=listj.get(j).get("fcsj").toString();
726   - long bcsj= Long.parseLong(listj.get(j).get("bcsj").toString());
727   - String clZbh=listj.get(j).get("cl_zbh").toString();
728   - String[] fcsjStr = time.split(":");
729   - long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
730   - long ddsj=fcsj+bcsj;
731   - if((fcsj>=zgf1 && fcsj<=zgf2) || (ddsj>=zgf1&&ddsj<=zgf2)
732   - || (fcsj<zgf1&&ddsj>zgf2)){
733   - if(p.get("z"+clZbh)==null){
734   - zbcs++;
735   - p.put("z"+clZbh, clZbh);
736   - }
737   - }
738   -
739   - if((fcsj>=wgf1 && fcsj<=wgf2) || (ddsj>=wgf1&&ddsj<=wgf2)
740   - || (fcsj<wgf1&&ddsj>wgf2)){
741   - if(p.get("w"+clZbh)==null){
742   - wbcs++;
743   - p.put("w"+clZbh, clZbh);
744   - }
745   - }
746   - }
747   -
748   - }
749   - if(zbcs>0){
750   - z.put("zdm", p.get("zdm"));
751   - z.put("cls", zbcs);
752   - z.put("lx", "zqj");
753   - list_s.add(z);
754   - }
755   - if(wbcs>0){
756   - w.put("zdm", p.get("zdm"));
757   - w.put("cls", zbcs);
758   - w.put("lx", "wqj");
759   - list_s.add(w);
760   - }
761   - }
762   -
763   - }
764   - int a=0;
765   - int b=0;
766   - int c=0;
767   - int d=0;
768   - for(int i=0;i<list_s.size();i++){
769   - boolean fage=true;
770   - Map<String, Object> newMap= new HashMap<String, Object>();
771   - list.add(newMap);
772   - Map<String, Object> maps=list_s.get(i);
773   - if(maps.get("lx").equals("zqc")){
774   - list.get(a).put("zqcZm", maps.get("zdm"));
775   - list.get(a).put("zqcCls", maps.get("cls"));
776   - a++;
777   - fage=false;
778   - }else if(maps.get("lx").equals("wqc")){
779   - list.get(b).put("wqcZm", maps.get("zdm"));
780   - list.get(b).put("wqcCls", maps.get("cls"));
781   - b++;
782   - fage=false;
783   - }else if(maps.get("lx").equals("zqj")){
784   - list.get(c).put("zqjZm", maps.get("zdm"));
785   - list.get(c).put("zqjCls", maps.get("cls"));
786   - c++;
787   - fage=false;
788   - }else if(maps.get("lx").equals("wqj")){
789   - list.get(d).put("wqjZm", maps.get("zdm"));
790   - list.get(d).put("wqjCls", maps.get("cls"));
791   - d++;
792   - fage=false;
793   - }
794   - if(fage){
795   - break;
796   - }
797   - }
798   - boolean status=true;
799   - while (status) {
800   - if(list.size() == 0)
801   - break;
802   - for (int i = 0; i < list.size(); i++) {
803   - if(list.get(i).isEmpty()){
804   - list.remove(i);
805   - status=true;
806   - }else{
807   - status=false;
808   - }
809   - }
810   - }
811   -
812   - return list;
813   - }
814   -
815   - @Override
816   - public List<Map<String, Object>> tbodyTime4(String line, String ttinfo) {
817   - List<Map<String, Object>> list =new ArrayList<>();
818   - // TODO Auto-generated method stub
819   - //最早营运时间 区分夜宵线
820   - String minfcsj="02:00";
821   - List<Line> lineList=lineRepository.findLineByCode(line);
822   - if(lineList.size()>0){
823   - List<String> objList = new ArrayList<String>();
824   - objList.add(lineList.get(0).getId() + "");
825   - String sql = "select count(*) from bsth_c_line_config where line = ? ";
826   - if(jdbcTemplate.queryForObject(sql, objList.toArray(), Integer.class) > 0){
827   - String sqlMinYysj="select start_opt from bsth_c_line_config where "
828   - + " id = ("
829   - + "select max(id) from bsth_c_line_config where line = ?"
830   - + ")";
831   - minfcsj=jdbcTemplate.queryForObject(sqlMinYysj, objList.toArray(), String.class);
832   - }
833   - }
834   -
835   - List<String> objList = new ArrayList<String>();
836   - objList.add(ttinfo);
837   - objList.add(minfcsj);
838   - objList.add(ttinfo);
839   - objList.add(minfcsj);
840   - //查询全程
841   - String sqlqc="select t.* from ( "
842   - + " (SELECT bc_type, fcsj,qdz,2 as xh,xl_dir,qdz_name FROM bsth_c_s_ttinfo_detail "
843   - + " where ttinfo = ? and (bc_type='normal' || bc_type='region') "
844   - + " and fcsj <= ?) "
845   - + " union "
846   - + " (SELECT bc_type, fcsj,qdz,1 as xh,xl_dir,qdz_name FROM bsth_c_s_ttinfo_detail "
847   - + " where ttinfo = ? and (bc_type='normal' || bc_type='region') "
848   - + " and fcsj > ?) "
849   - + "order by xl_dir,xh,fcsj ) t ";
850   - List<Map<String, String>> qclist= jdbcTemplate.query(sqlqc, objList.toArray(),
851   - new RowMapper<Map<String, String>>(){
852   - @Override
853   - public Map<String, String> mapRow(ResultSet rs, int rowNum) throws SQLException {
854   - Map<String, String> m=new HashMap<String,String>();
855   - m.put("qdz_name", rs.getString("qdz_name"));
856   - m.put("bcType", rs.getString("bc_type"));
857   - m.put("fcsj", rs.getString("fcsj"));
858   - m.put("xl", rs.getString("xl_dir"));
859   - m.put("xh", rs.getString("xh"));
860   - return m;
861   - }
862   -
863   - });
864   -
865   - List<List<Map<String, String>>> mapList = new ArrayList<List<Map<String,String>>>();
866   - mapList.add(new ArrayList<Map<String, String>>());
867   - mapList.add(new ArrayList<Map<String, String>>());
868   - for(Map<String, String> m : qclist){
869   - String bcType = m.get("bcType");
870   - if(bcType.equals("normal")){
871   - mapList.get(0).add(m);
872   - } else {
873   - mapList.get(1).add(m);
874   - }
875   - }
876   -
877   - for(int i = 0; i < mapList.size(); i++){
878   - List<Map<String, String>> l = mapList.get(i);
879   - Map<String, Object> tempMap = new HashMap<String, Object>();
880   - List<String> upfcsj = new ArrayList<String>();
881   - List<String> downfcsj = new ArrayList<String>();
882   - String sxqdz = "", xxqdz = "";
883   - String sxfcsj = "", xxfcsj = "";
884   - int sxbc = 0, xxbc = 0;
885   - for(Map<String, String> m : l){
886   - if(m.get("xl").equals("0")){
887   - sxbc++;
888   - upfcsj.add(m.get("fcsj"));
889   - if(sxqdz.length() == 0 && m.containsKey("qdz_name"))
890   - sxqdz = m.get("qdz_name")==null?"":m.get("qdz_name").toString();
891   - } else {
892   - xxbc++;
893   - downfcsj.add(m.get("fcsj"));
894   - if(xxqdz.length() == 0 && m.containsKey("qdz_name"))
895   - xxqdz = m.get("qdz_name")==null?"":m.get("qdz_name").toString();
896   - }
897   - }
898   - if(upfcsj.size() != 0)
899   - sxfcsj = upfcsj.get(0) + "-" + upfcsj.get(upfcsj.size() - 1);
900   - if(downfcsj.size() != 0)
901   - xxfcsj = downfcsj.get(0) + "-" + downfcsj.get(downfcsj.size() - 1);
902   - tempMap.put("sxqdz", sxqdz);
903   - tempMap.put("sxfcsj", i==0?sxfcsj:"");
904   - tempMap.put("sxbc", sxbc!=0?sxbc:"");
905   - tempMap.put("xxqdz", xxqdz);
906   - tempMap.put("xxfcsj", i==0?xxfcsj:"");
907   - tempMap.put("xxbc", xxbc!=0?xxbc:"");
908   - tempMap.put("bcType", i);
909   - if(sxqdz.length()!=0 || xxqdz.length()!=0)
910   - list.add(tempMap);
911   - }
912   -
913   - return list;
914   - }
915   - @Override
916   - public List<Map<String, Object>> tbodyTime5(String line, String ttinfo) {
917   - // TODO Auto-generated method stub
918   - //最早营运时间 区分夜宵线
919   - String minfcsj="02:00";
920   - List<Line> lineList=lineRepository.findLineByCode(line);
921   - if(lineList.size()>0){
922   - List<String> objList = new ArrayList<String>();
923   - objList.add(lineList.get(0).getId() + "");
924   - String sql = "select count(*) from bsth_c_line_config where line = ? ";
925   - if(jdbcTemplate.queryForObject(sql, objList.toArray(), Integer.class) > 0){
926   - String sqlMinYysj="select start_opt from bsth_c_line_config where "
927   - + " id = ("
928   - + "select max(id) from bsth_c_line_config where line = ?"
929   - + ")";
930   - minfcsj= jdbcTemplate.queryForObject(sqlMinYysj, objList.toArray(), String.class);
931   - }
932   - }
933   - String[] minSjs = minfcsj.split(":");
934   - int minSj=Integer.parseInt(minSjs[0])*60+Integer.parseInt(minSjs[1]);
935   -
936   - List<String> objList = new ArrayList<String>();
937   - objList.add(ttinfo);
938   - objList.add(minfcsj);
939   - objList.add(ttinfo);
940   - objList.add(minfcsj);
941   - //查询时间里程
942   - String sqlPc=" (SELECT jhlc,fcsj,bcsj,bc_type,lp,xl_dir,ists,2 as xh FROM "
943   - + " bsth_c_s_ttinfo_detail where ttinfo = ? and "
944   - + " fcsj <= ? and bc_type!='ldks'"
945   - + " and bc_type !='region' and bc_type !='venting' and bc_type !='major') "
946   - + " union "
947   - + " (SELECT jhlc,fcsj,bcsj,bc_type,lp,xl_dir,ists,1 as xh FROM "
948   - + " bsth_c_s_ttinfo_detail where ttinfo = ? and "
949   - + " fcsj > ? and bc_type!='ldks' "
950   - + " and bc_type !='region' and bc_type !='venting' and bc_type !='major') "
951   - + " order by xh, lp,fcsj";
952   - Map<String, Object> map=new HashMap<String,Object>();
953   - List<Map<String, Object>> list= jdbcTemplate.query(sqlPc, objList.toArray(),
954   - new RowMapper<Map<String, Object>>(){
955   - @Override
956   - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
957   - Map<String, Object> m=new HashMap<String,Object>();
958   - m.put("fcsj", rs.getString("fcsj"));
959   - m.put("yygl", rs.getString("jhlc")==null?"0":rs.getString("jhlc"));
960   - m.put("bcsj", rs.getString("bcsj"));
961   - m.put("bcType", rs.getString("bc_type"));
962   - m.put("lp", rs.getString("lp"));
963   - m.put("dir", rs.getString("xl_dir"));
964   - m.put("ists", rs.getString("ists")!=null?rs.getString("ists"):"");
965   - String[] split = m.get("fcsj").toString().split(":");
966   - if(rs.getString("xh").equals("2")){
967   - m.put("fcsj", (Integer.valueOf(split[0]) + 24) + ":"+split[1]);
968   - }
969   -
970   - return m;
971   - }
972   - });
973   - List<Map<String, Object>> newList=new ArrayList<Map<String,Object>>();
974   - int yysxZq=0,yyxxZq=0,tzsxZq=0,tzxxZq=0,minZqcj=0,maxZqcj=0,sxcountZqbc=0,xxcountZqbc=0; //早前
975   - int yysxZgf=0,yyxxZgf=0,tzsxZgf=0,tzxxZgf=0,minZgfcj=0,maxZgfcj=0,sxcountZgfbc=0,xxcountZgfbc=0;//早高峰
976   - int yysxZw=0,yyxxZw=0,tzsxZw=0,tzxxZw=0,minZwcj=0,maxZwcj=0,sxcountZwbc=0,xxcountZwbc=0;//中午
977   - int yysxWgf=0,yyxxWgf=0,tzsxWgf=0,tzxxWgf=0,minWgfcj=0,maxWgfcj=0,sxcountWgfbc=0,xxcountWgfbc=0;//晚高峰
978   - int yysxWh=0,yyxxWh=0,tzsxWh=0,tzxxWh=0,minWhcj=0,maxWhcj=0,sxcountWhbc=0,xxcountWhbc=0;//晚后
979   - List<Integer> zqFcsj0=new ArrayList<Integer>();
980   - List<Integer> zgfFcsj0=new ArrayList<Integer>();
981   - List<Integer> zwFcsj0=new ArrayList<Integer>();
982   - List<Integer> wgfFcsj0=new ArrayList<Integer>();
983   - List<Integer> whFcsj0=new ArrayList<Integer>();
984   -
985   - List<Integer> zqFcsj1=new ArrayList<Integer>();
986   - List<Integer> zgfFcsj1=new ArrayList<Integer>();
987   - List<Integer> zwFcsj1=new ArrayList<Integer>();
988   - List<Integer> wgfFcsj1=new ArrayList<Integer>();
989   - List<Integer> whFcsj1=new ArrayList<Integer>();
990   - int temp = 48*60+1, zcj = 0;
991   - boolean ists = true;
992   - String lpname="";
993   - int dir =-1;
994   - int fcsjT_= 0;
995   - for (int i = 0; i < list.size(); i++) {
996   - Map<String, Object> m=list.get(i);
997   - int xlDir = Integer.valueOf(m.get("dir").toString());
998   - String[] split = m.get("fcsj").toString().split(":");
999   - int fcsjT = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);
1000   - String bcType=m.get("bcType").toString();
1001   - int bcsj = Integer.valueOf(m.get("bcsj").toString());
1002   - if(i==0){
1003   - lpname=m.get("lp").toString();
1004   - if(temp>fcsjT){
1005   - temp=fcsjT+bcsj;
1006   - }
1007   - dir =xlDir;
1008   - if(bcType.equals("in") || bcType.equals("out")){
1009   - ists=false;
1010   - }
1011   - }else{
1012   -// if(temp>fcsjT){
1013   -// temp=fcsjT;
1014   -// }
1015   - if(bcType.equals("in") || bcType.equals("out")){
1016   - temp = fcsjT+bcsj;
1017   - lpname=m.get("lp").toString();
1018   - dir =xlDir;
1019   - ists=false;
1020   - }else{
1021   -// if(xlDir==0){
1022   - //上行数据
1023   - if(fcsjT>= minSj && fcsjT <= 6*60+30){
1024   - //早高峰前
1025   - if(xlDir==0){
1026   - yysxZq +=bcsj;
1027   - sxcountZqbc ++;
1028   - zqFcsj0.add(fcsjT);
1029   - }else{
1030   - yyxxZq +=bcsj;
1031   - xxcountZqbc ++;
1032   - zqFcsj1.add(fcsjT);
1033   - }
1034   - if(ists){
1035   - if(lpname.equals(m.get("lp").toString())){
1036   - if(dir==0)
1037   - tzsxZq +=fcsjT-temp;
1038   - else
1039   - tzxxZq +=fcsjT-temp;
1040   - }
1041   - }
1042   - temp = fcsjT+bcsj;
1043   -
1044   - }else if(fcsjT > 6*60+30 && fcsjT <= 8*60+30){
1045   - //早高峰
1046   - if(xlDir==0){
1047   - yysxZgf +=bcsj;
1048   - sxcountZgfbc ++;
1049   - zgfFcsj0.add(fcsjT);
1050   - }else{
1051   - yyxxZgf +=bcsj;
1052   - xxcountZgfbc ++;
1053   - zgfFcsj1.add(fcsjT);
1054   - }
1055   -
1056   - if(ists){
1057   - if(lpname.equals(m.get("lp").toString())){
1058   - if(dir==0){
1059   - if(fcsjT_>= minSj && fcsjT_ <= 6*60+30)
1060   - tzsxZq +=fcsjT-temp;
1061   - else
1062   - tzsxZgf +=fcsjT-temp;
1063   - }else{
1064   - if(fcsjT_>= minSj && fcsjT_ <= 6*60+30)
1065   - tzxxZq +=fcsjT-temp;
1066   - else
1067   - tzxxZgf +=fcsjT-temp;
1068   - }
1069   - }
1070   - }
1071   - temp =fcsjT+bcsj;
1072   -
1073   - }else if(fcsjT > 8*60+30 && fcsjT <= 16*60){
1074   - //中午
1075   - if(xlDir==0){
1076   - yysxZw +=bcsj;
1077   - sxcountZwbc ++;
1078   - zwFcsj0.add(fcsjT);
1079   - }else{
1080   - yyxxZw +=bcsj;
1081   - xxcountZwbc ++;
1082   - zwFcsj1.add(fcsjT);
1083   - }
1084   - if(ists){
1085   - if(lpname.equals(m.get("lp").toString())){
1086   - if(dir==0){
1087   - if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
1088   - tzsxZgf +=fcsjT-temp;
1089   - else
1090   - tzsxZw +=fcsjT-temp;
1091   - }else{
1092   - if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
1093   - tzxxZgf +=fcsjT-temp;
1094   - else
1095   - tzxxZw +=fcsjT-temp;
1096   - }
1097   - }
1098   - }
1099   - temp =fcsjT+bcsj;
1100   - }else if(fcsjT > 16*60 && fcsjT <= 18*60){
1101   - //晚高峰
1102   - if(xlDir==0){
1103   - yysxWgf +=bcsj;
1104   - sxcountWgfbc ++;
1105   - wgfFcsj0.add(fcsjT);
1106   - }else{
1107   - yyxxWgf +=bcsj;
1108   - xxcountWgfbc ++;
1109   - wgfFcsj1.add(fcsjT);
1110   - }
1111   -
1112   - if(ists){
1113   - if(lpname.equals(m.get("lp").toString())){
1114   - if(dir==0){
1115   - if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
1116   - tzsxZw +=fcsjT-temp;
1117   - else
1118   - tzsxWgf +=fcsjT-temp;
1119   - }else{
1120   - if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
1121   - tzxxZw +=fcsjT-temp;
1122   - else
1123   - tzxxWgf +=fcsjT-temp;
1124   - }
1125   - }
1126   - }
1127   - temp =fcsjT+bcsj;
1128   - }else{
1129   - //晚高峰后
1130   - if(xlDir==0){
1131   - yysxWh +=bcsj;
1132   - sxcountWhbc ++;
1133   - whFcsj0.add(fcsjT);
1134   - }else{
1135   - yyxxWh +=bcsj;
1136   - xxcountWhbc ++;
1137   - whFcsj1.add(fcsjT);
1138   - }
1139   - if(ists){
1140   - if(lpname.equals(m.get("lp").toString())){
1141   - if(dir==0){
1142   - if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
1143   - tzsxWgf +=fcsjT-temp;
1144   - else
1145   - tzsxWh +=fcsjT-temp;
1146   - }else{
1147   - if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
1148   - tzxxWgf +=fcsjT-temp;
1149   - else
1150   - tzxxWh +=fcsjT-temp;
1151   - }
1152   - }
1153   - }
1154   - temp =fcsjT+bcsj;
1155   - }
1156   -
1157   - /*}else{
1158   - //下行数据
1159   - if(fcsjT>= minSj && fcsjT <= 6*60+30){
1160   - //早高峰前
1161   - yyxxZq +=bcsj;
1162   - xxcountZqbc ++;
1163   - zqFcsj1.add(fcsjT);
1164   - if(ists){
1165   - if(lpname.equals(m.get("lp").toString())){
1166   - tzxxZq +=fcsjT-temp;
1167   - }
1168   - }
1169   - temp =fcsjT+bcsj;
1170   - }else if(fcsjT > 6*60+30 && fcsjT <= 8*60+30){
1171   - //早高峰
1172   - yyxxZgf +=bcsj;
1173   - xxcountZgfbc ++;
1174   - zgfFcsj1.add(fcsjT);
1175   - if(ists){
1176   - if(lpname.equals(m.get("lp").toString())){
1177   - if(fcsjT_>= minSj && fcsjT_ <= 6*60+30)
1178   - tzxxZq +=fcsjT-temp;
1179   - else
1180   - tzxxZgf +=fcsjT-temp;
1181   - }
1182   - }
1183   - temp =fcsjT+bcsj;
1184   - }else if(fcsjT > 8*60+30 && fcsjT <= 16*60){
1185   - //中午
1186   - yyxxZw +=bcsj;
1187   - xxcountZwbc ++;
1188   - zwFcsj1.add(fcsjT);
1189   - if(ists){
1190   - if(lpname.equals(m.get("lp").toString())){
1191   - if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
1192   - tzxxZgf +=fcsjT-temp;
1193   - else
1194   - tzxxZw +=fcsjT-temp;
1195   - }
1196   - }
1197   - temp =fcsjT+bcsj;
1198   - }else if(fcsjT > 16*60 && fcsjT <= 18*60){
1199   - //晚高峰
1200   - yyxxWgf +=bcsj;
1201   - xxcountWgfbc ++;
1202   - wgfFcsj1.add(fcsjT);
1203   - if(ists){
1204   - if(lpname.equals(m.get("lp").toString())){
1205   - if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
1206   - tzxxZw +=fcsjT-temp;
1207   - else
1208   - tzxxWgf +=fcsjT-temp;
1209   - }
1210   - }
1211   - temp =fcsjT+bcsj;
1212   - }else{
1213   - //晚高峰后
1214   - yyxxWh +=bcsj;
1215   - xxcountWhbc ++;
1216   - whFcsj1.add(fcsjT);
1217   - if(ists){
1218   - if(lpname.equals(m.get("lp").toString())){
1219   - if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
1220   - tzxxWgf +=fcsjT-temp;
1221   - else
1222   - tzxxWh +=fcsjT-temp;
1223   - }
1224   - }
1225   - temp =fcsjT+bcsj;
1226   - }
1227   -// }
1228   - }*/
1229   - lpname=m.get("lp").toString();
1230   - fcsjT_=fcsjT;
1231   - dir =xlDir;
1232   - if(m.get("ists").toString().trim().equals("1")){
1233   - ists=false;
1234   - }else{
1235   - ists = true;
1236   - }
1237   - }
1238   - }
1239   -
1240   - }
1241   -
1242   - //---------------------------------------早前
1243   - List<Integer> cjs = new ArrayList<Integer>();
1244   - Collections.sort(zqFcsj0);
1245   - int fcsjs=0;
1246   - for (int i = 0; i < zqFcsj0.size(); i++) {
1247   - if(i==0){
1248   - fcsjs =zqFcsj0.get(i);
1249   - }else{
1250   - cjs.add(zqFcsj0.get(i)-fcsjs);
1251   - fcsjs=zqFcsj0.get(i);
1252   - }
1253   -
1254   - }
1255   - Collections.sort(zqFcsj1);
1256   - int fcsjx=0;
1257   - for (int i = 0; i < zqFcsj1.size(); i++) {
1258   - if(i==0){
1259   - fcsjx =zqFcsj1.get(i);
1260   - }else{
1261   - cjs.add(zqFcsj1.get(i)-fcsjx);
1262   - fcsjx =zqFcsj1.get(i);
1263   - }
1264   -
1265   - }
1266   - Collections.sort(cjs);
1267   - for(int i : cjs){
1268   - zcj += i;
1269   - }
1270   - Map<String, Object> tempMap = new HashMap<String, Object>();
1271   - double sxtszq=0.0;
1272   - double sxsjzq=0.0;
1273   - if(sxcountZqbc>0){
1274   - sxtszq=Arith.div(tzsxZq, sxcountZqbc, 1);
1275   - sxsjzq=Arith.div(yysxZq, sxcountZqbc,1);
1276   - }
1277   -
1278   - double xxtszq=0.0;
1279   - double xxsjzq=0.0;
1280   - if(xxcountZqbc>0){
1281   - xxtszq=Arith.div(tzxxZq, xxcountZqbc, 1);
1282   - xxsjzq=Arith.div(yyxxZq, xxcountZqbc,1);
1283   - }
1284   - tempMap.put("sjd", "(首)——6:30");
1285   - tempMap.put("sxsj", sxsjzq);
1286   - tempMap.put("xxsj", xxsjzq);
1287   - tempMap.put("sxtssj", sxtszq);
1288   - tempMap.put("xxtssj", xxtszq);
1289   - tempMap.put("fqsj", Arith.add(Arith.add(sxtszq, sxsjzq), Arith.add(xxtszq, xxsjzq)));
1290   - tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
1291   - tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
1292   - newList.add(tempMap);
1293   -
1294   - //----------------------------------早高峰
1295   - cjs = new ArrayList<Integer>();
1296   - zcj =0;
1297   -
1298   - Collections.sort(zgfFcsj0);
1299   - fcsjs=0;
1300   - for (int i = 0; i < zgfFcsj0.size(); i++) {
1301   - if(i==0){
1302   - fcsjs =zgfFcsj0.get(i);
1303   - }else{
1304   - cjs.add(zgfFcsj0.get(i)-fcsjs);
1305   - fcsjs=zgfFcsj0.get(i);
1306   - }
1307   -
1308   - }
1309   - Collections.sort(zgfFcsj1);
1310   - fcsjx=0;
1311   - for (int i = 0; i < zgfFcsj1.size(); i++) {
1312   - if(i==0){
1313   - fcsjx =zgfFcsj1.get(i);
1314   - }else{
1315   - cjs.add(zgfFcsj1.get(i)-fcsjx);
1316   - fcsjx =zgfFcsj1.get(i);
1317   - }
1318   -
1319   - }
1320   - Collections.sort(cjs);
1321   - for(int i : cjs){
1322   - zcj += i;
1323   - }
1324   - double sxtszgf=0.0;
1325   - double sxsjzgf=0.0;
1326   - if(sxcountZgfbc>0){
1327   - sxtszgf=Arith.div(tzsxZgf, sxcountZgfbc, 1);
1328   - sxsjzgf =Arith.div(yysxZgf, sxcountZgfbc, 1);
1329   - }
1330   -
1331   - double xxtszgf=0.0;
1332   - double xxsjzgf=0.0;
1333   - if(xxcountZgfbc>0){
1334   - xxtszgf=Arith.div(tzxxZgf, xxcountZgfbc, 1);
1335   - xxsjzgf=Arith.div(yyxxZgf, xxcountZgfbc,1);
1336   - }
1337   -
1338   -
1339   - tempMap = new HashMap<String, Object>();
1340   - tempMap.put("sjd", "6:31——8:30");
1341   - tempMap.put("sxsj", sxsjzgf);
1342   - tempMap.put("xxsj", xxsjzgf);
1343   - tempMap.put("sxtssj", sxtszgf);
1344   - tempMap.put("xxtssj", xxtszgf);
1345   - tempMap.put("fqsj", Arith.add(Arith.add(sxtszgf, sxsjzgf), Arith.add(xxtszgf, xxsjzgf)));
1346   - tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
1347   - tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
1348   - newList.add(tempMap);
1349   - //----------------------------------------------中午
1350   - cjs = new ArrayList<Integer>();
1351   - zcj =0;
1352   -
1353   - Collections.sort(zwFcsj0);
1354   - fcsjs=0;
1355   - for (int i = 0; i < zwFcsj0.size(); i++) {
1356   - if(i==0){
1357   - fcsjs =zwFcsj0.get(i);
1358   - }else{
1359   - cjs.add(zwFcsj0.get(i)-fcsjs);
1360   - fcsjs=zwFcsj0.get(i);
1361   - }
1362   -
1363   - }
1364   - Collections.sort(zwFcsj1);
1365   - fcsjx=0;
1366   - for (int i = 0; i < zwFcsj1.size(); i++) {
1367   - if(i==0){
1368   - fcsjx =zwFcsj1.get(i);
1369   - }else{
1370   - cjs.add(zwFcsj1.get(i)-fcsjx);
1371   - fcsjx =zwFcsj1.get(i);
1372   - }
1373   -
1374   - }
1375   - Collections.sort(cjs);
1376   - for(int i : cjs){
1377   - zcj += i;
1378   - }
1379   - double sxtzsjzw=0.0;
1380   - double sxsjsjzw=0.0;
1381   - if(sxcountZwbc>0){
1382   - sxtzsjzw=Arith.div(tzsxZw, sxcountZwbc, 1);
1383   - sxsjsjzw=Arith.div(yysxZw, sxcountZwbc,1);
1384   - }
1385   -
1386   - double xxtzsjzw=0.0;
1387   - double xxsjsjzw=0.0;
1388   - if(xxcountZwbc>0){
1389   - xxtzsjzw=Arith.div(tzxxZw, xxcountZwbc,1);
1390   - xxsjsjzw=Arith.div(yyxxZw, xxcountZwbc, 1);
1391   - }
1392   - tempMap = new HashMap<String, Object>();
1393   - tempMap.put("sjd", "8:31——16:00");
1394   - tempMap.put("sxsj", sxsjsjzw);
1395   - tempMap.put("xxsj", xxsjsjzw);
1396   - tempMap.put("sxtssj", sxtzsjzw);
1397   - tempMap.put("xxtssj", xxtzsjzw);
1398   - tempMap.put("fqsj", Arith.add(Arith.add(sxtzsjzw, sxsjsjzw), Arith.add(xxtzsjzw, xxsjsjzw)));
1399   - tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
1400   - tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
1401   - newList.add(tempMap);
1402   - //-------------------------------------------------晚高峰
1403   - cjs = new ArrayList<Integer>();
1404   - zcj =0;
1405   -
1406   - Collections.sort(wgfFcsj0);
1407   - fcsjs=0;
1408   - for (int i = 0; i < wgfFcsj0.size(); i++) {
1409   - if(i==0){
1410   - fcsjs =wgfFcsj0.get(i);
1411   - }else{
1412   - cjs.add(wgfFcsj0.get(i)-fcsjs);
1413   - fcsjs=wgfFcsj0.get(i);
1414   - }
1415   -
1416   - }
1417   - Collections.sort(wgfFcsj1);
1418   - fcsjx=0;
1419   - for (int i = 0; i < wgfFcsj1.size(); i++) {
1420   - if(i==0){
1421   - fcsjx =wgfFcsj1.get(i);
1422   - }else{
1423   - cjs.add(wgfFcsj1.get(i)-fcsjx);
1424   - fcsjx =wgfFcsj1.get(i);
1425   - }
1426   -
1427   - }
1428   - Collections.sort(cjs);
1429   - for(int i : cjs){
1430   - zcj += i;
1431   - }
1432   -
1433   - double sxtzsjwgf=0.0;
1434   - double sxsjsjwgf=0.0;
1435   - if(sxcountWgfbc>0){
1436   - sxtzsjwgf=Arith.div(tzsxWgf, sxcountWgfbc, 1);
1437   - sxsjsjwgf=Arith.div(yysxWgf, sxcountWgfbc,1);
1438   - }
1439   -
1440   - double xxtzsjwgf=0.0;
1441   - double xxsjsjwgf=0.0;
1442   - if(xxcountWgfbc>0){
1443   - xxtzsjwgf=Arith.div(tzxxWgf, xxcountWgfbc, 1);
1444   - xxsjsjwgf=Arith.div(yyxxWgf, xxcountWgfbc,1);
1445   - }
1446   -
1447   - tempMap = new HashMap<String, Object>();
1448   - tempMap.put("sjd", "16:01——18:00");
1449   - tempMap.put("sxsj", sxsjsjwgf);
1450   - tempMap.put("xxsj", xxsjsjwgf);
1451   - tempMap.put("sxtssj", sxtzsjwgf);
1452   - tempMap.put("xxtssj", xxtzsjwgf);
1453   - tempMap.put("fqsj", Arith.add(Arith.add(sxsjsjwgf, sxtzsjwgf), Arith.add(xxsjsjwgf, xxtzsjwgf)));
1454   - tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
1455   - tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
1456   - newList.add(tempMap);
1457   -
1458   - //----------------------------------晚后
1459   - cjs = new ArrayList<Integer>();
1460   - zcj =0;
1461   -
1462   - Collections.sort(whFcsj0);
1463   - fcsjs=0;
1464   - for (int i = 0; i < whFcsj0.size(); i++) {
1465   - if(i==0){
1466   - fcsjs =whFcsj0.get(i);
1467   - }else{
1468   - cjs.add(whFcsj0.get(i)-fcsjs);
1469   - fcsjs=whFcsj0.get(i);
1470   - }
1471   -
1472   - }
1473   - Collections.sort(whFcsj1);
1474   - fcsjx=0;
1475   - for (int i = 0; i < whFcsj1.size(); i++) {
1476   - if(i==0){
1477   - fcsjx =whFcsj1.get(i);
1478   - }else{
1479   - cjs.add(whFcsj1.get(i)-fcsjx);
1480   - fcsjx =whFcsj1.get(i);
1481   - }
1482   -
1483   - }
1484   - Collections.sort(cjs);
1485   - for(int i : cjs){
1486   - zcj += i;
1487   - }
1488   - double sxtzsjwh=0.0;
1489   - double sxsjsjwh=0.0;
1490   - if(sxcountWhbc>0){
1491   - sxtzsjwh=Arith.div(tzsxWh,sxcountWhbc,1);
1492   - sxsjsjwh=Arith.div(yysxWh, sxcountWhbc,1);
1493   - }
1494   -
1495   - double xxtzsjwh=0.0;
1496   - double xxsjsjwh=0.0;
1497   - if(xxcountWhbc>0){
1498   - xxtzsjwh=Arith.div(tzxxWh, xxcountWhbc,1);
1499   - xxsjsjwh=Arith.div(yyxxWh, xxcountWhbc, 1);
1500   - }
1501   - tempMap = new HashMap<String, Object>();
1502   - tempMap.put("sjd", "18:01——(末)");
1503   - tempMap.put("sxsj", sxsjsjwh);
1504   - tempMap.put("xxsj", xxsjsjwh);
1505   - tempMap.put("sxtssj", sxtzsjwh);
1506   - tempMap.put("xxtssj", xxtzsjwh);
1507   - tempMap.put("fqsj", Arith.add(Arith.add(sxsjsjwh, sxtzsjwh), Arith.add(xxsjsjwh,xxtzsjwh)));
1508   - tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
1509   - tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
1510   - newList.add(tempMap);
1511   - /*
1512   - Map<String, List<Map<String, Object>>> keyMap = new HashMap<String, List<Map<String, Object>>>();
1513   - Map<String, Map<String, Object>> maps = new HashMap<String, Map<String, Object>>();
1514   - keyMap.put("(首)——6:30", new ArrayList<Map<String, Object>>());
1515   - keyMap.put("6:31——8:30", new ArrayList<Map<String, Object>>());
1516   - keyMap.put("8:31——16:00", new ArrayList<Map<String, Object>>());
1517   - keyMap.put("16:01——18:00", new ArrayList<Map<String, Object>>());
1518   - keyMap.put("18:01——(末)", new ArrayList<Map<String, Object>>());
1519   - for(int i = 0; i < list.size(); i++){
1520   - Map<String, Object> ttMap = list.get(i);
1521   - String fcsj = ttMap.get("fcsj").toString();
1522   - String[] split = fcsj.split(":");
1523   - int fcsjT = Integer.valueOf(split[0])*60+Integer.valueOf(split[1]);
1524   - if(fcsjT >= minSj && fcsjT <= 6*60+30){
1525   - keyMap.get("(首)——6:30").add(ttMap);
1526   - } else if(fcsjT > 6*60+30 && fcsjT <= 8*60+30){
1527   - keyMap.get("6:31——8:30").add(ttMap);
1528   - } else if(fcsjT > 8*60+30 && fcsjT <= 16*60){
1529   - keyMap.get("8:31——16:00").add(ttMap);
1530   - } else if(fcsjT > 16*60 && fcsjT <= 18*60){
1531   - keyMap.get("16:01——18:00").add(ttMap);
1532   - } else {
1533   - keyMap.get("18:01——(末)").add(ttMap);
1534   - }
1535   - }
1536   -
1537   - for(String key : keyMap.keySet()){
1538   - Map<String, Object> tempMap = new HashMap<String, Object>();
1539   - List<Map<String, Object>> list2 = keyMap.get(key);
1540   - List<Integer> cjs = new ArrayList<Integer>();
1541   - List<Integer> fcsj_s = new ArrayList<Integer>();
1542   - List<Integer> fcsj_x = new ArrayList<Integer>();
1543   - int sxsj = 0, xxsj = 0, sxtssj = 0, xxtssj = 0;
1544   - int sxbc = 0, xxbc = 0, sxtsbc = 0, xxtsbc = 0;
1545   - int temp = 48*60+1, zcj = 0;
1546   - boolean ists = false;
1547   - String lpname="";
1548   - for(Map<String, Object> m : list2){
1549   - String bcType=m.get("bcType").toString();
1550   - if(bcType.equals("in") || bcType.equals("out")){
1551   - temp=24*60+1;
1552   - }else{
1553   - String[] split = m.get("fcsj").toString().split(":");
1554   - int fcsj = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);
1555   -
1556   - int xlDir = Integer.valueOf(m.get("dir").toString());
1557   - int bcsj = Integer.valueOf(m.get("bcsj").toString());
1558   - if(temp >= fcsj){
1559   - temp = fcsj+bcsj;
1560   - ists = false;
1561   - }
1562   - if(xlDir == 0){
1563   - fcsj_s.add(fcsj);
1564   - sxsj += bcsj;
1565   - sxbc ++;
1566   - if(!ists){
1567   - if(lpname.equals("")){
1568   - lpname=m.get("lp").toString();
1569   - }else{
1570   - if(lpname.equals(m.get("lp").toString())){
1571   - if(fcsj-temp<90){
1572   - sxtssj += fcsj - temp;
1573   - }
1574   - }
1575   - lpname=m.get("lp").toString();
1576   -
1577   - }
1578   - sxtsbc++;
1579   - }
1580   -
1581   - } else {
1582   -
1583   - fcsj_x.add(fcsj);
1584   - xxsj += bcsj;
1585   - xxbc ++;
1586   -
1587   - if(!ists){
1588   - if(lpname.equals("")){
1589   - lpname=m.get("lp").toString();
1590   - }else{
1591   - if(lpname.equals(m.get("lp").toString())){
1592   - if(fcsj-temp<90){
1593   - xxtssj += fcsj- temp;
1594   - }
1595   - }
1596   - lpname=m.get("lp").toString();
1597   - }
1598   - xxtsbc++;
1599   - }
1600   -
1601   - }
1602   - if(temp < fcsj){
1603   - cjs.add(fcsj - temp);
1604   - temp = fcsj;
1605   - }
1606   - if(m.get("ists").toString().trim().equals("1")){
1607   - ists = true;
1608   - }else{
1609   - ists=false;
1610   - }
1611   - }
1612   - }
1613   - Collections.sort(fcsj_s);
1614   - int fcsjs=0;
1615   - for (int i = 0; i < fcsj_s.size(); i++) {
1616   - if(i==0){
1617   - fcsjs =fcsj_s.get(i);
1618   - }else{
1619   - cjs.add(fcsj_s.get(i)-fcsjs);
1620   - fcsjs=fcsj_s.get(i);
1621   - }
1622   -
1623   - }
1624   - Collections.sort(fcsj_x);
1625   - int fcsjx=0;
1626   - for (int i = 0; i < fcsj_x.size(); i++) {
1627   - if(i==0){
1628   - fcsjx =fcsj_x.get(i);
1629   - }else{
1630   - cjs.add(fcsj_x.get(i)-fcsjx);
1631   - fcsjx =fcsj_x.get(i);
1632   - }
1633   -
1634   - }
1635   - Collections.sort(cjs);
1636   - for(int i : cjs){
1637   - zcj += i;
1638   - }
1639   - tempMap.put("sjd", key);
1640   - tempMap.put("sxsj", sxbc != 0 ? sxsj / sxbc : "0");
1641   - tempMap.put("xxsj", xxbc != 0 ? xxsj / xxbc : "0");
1642   - tempMap.put("sxtssj", sxtsbc != 0 ? sxtssj / sxtsbc : "0");
1643   - tempMap.put("xxtssj", xxtsbc != 0 ? xxtssj / xxtsbc : "0");
1644   - tempMap.put("fqsj", Integer.valueOf(tempMap.get("sxsj").toString()) + Integer.valueOf(tempMap.get("xxsj").toString())
1645   - + Integer.valueOf(tempMap.get("sxtssj").toString()) + Integer.valueOf(tempMap.get("xxtssj").toString()));
1646   - tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
1647   - tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
1648   - maps.put(key, tempMap);
1649   - }
1650   - newList.add(maps.get("(首)——6:30"));
1651   - newList.add(maps.get("6:31——8:30"));
1652   - newList.add(maps.get("8:31——16:00"));
1653   - newList.add(maps.get("16:01——18:00"));
1654   - newList.add(maps.get("18:01——(末)"));*/
1655   -
1656   - return newList;
1657   - }
1658   - @Override
1659   - public List<Map<String, Object>> getTtinfo(Map<String, Object> map) {
1660   - // TODO Auto-generated method stub
1661   - List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
1662   - String line = map.get("line").toString();
1663   - try {
1664   - List<String> objList = new ArrayList<String>();
1665   - String sql = "select tt.id, tt.name from bsth_c_s_ttinfo tt"
1666   - + " left join bsth_c_line cl on cl.id = tt.xl"
1667   - + " where tt.is_cancel = 0 and tt.is_enable_dis_template = 1";
1668   - if(line.length() != 0){
1669   - sql += " and cl.line_code = ?";
1670   - objList.add(line);
1671   - }
1672   - sql += " order by tt.create_date desc";
1673   -
1674   - list = jdbcTemplate.query(sql, objList.toArray(),
1675   - new RowMapper<Map<String, Object>>(){
1676   - @Override
1677   - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
1678   - Map<String, Object> map = new HashMap<String, Object>();
1679   - map.put("id", rs.getString("id"));
1680   - map.put("name", rs.getString("name"));
1681   - return map;
1682   - }
1683   - });
1684   - }catch (Exception e) {
1685   - // TODO Auto-generated catch block
1686   - e.printStackTrace();
1687   - }
1688   - return list;
1689   - }
1690   -
1691   - @Override
1692   - public List<Map<String, Object>> jobFwqk(Map<String, Object> map) {
1693   - // TODO Auto-generated method stub
1694   - String[] lblxs = {"配车","保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","路救抛锚","其他" };
1695   - Set<String> lblxSet = new HashSet<String>();
1696   - for(String s : lblxs){
1697   - lblxSet.add(s);
1698   - }
1699   - String line=map.get("line").toString();
1700   - String date=map.get("date").toString();
1701   - map.put("bcType", "normal");
1702   - List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
1703   - List<ScheduleRealInfo> sList=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date);
1704   - for (int i = 0; i < sList.size(); i++) {
1705   - ScheduleRealInfo scheduleRealInfo = sList.get(i);
1706   - if (!(scheduleRealInfo.getBcType().equals("in")
1707   - || scheduleRealInfo.getBcType().equals("out")
1708   - ||scheduleRealInfo.getBcType().equals("ldks"))) {
1709   - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
1710   - if (childTaskPlans.isEmpty()) {
1711   - Map<String, Object> newMap = new HashMap<String, Object>();
1712   - String adjustExps = "";
1713   - if (scheduleRealInfo.getAdjustExps() == null) {
1714   - adjustExps = "其他";
1715   - } else if(scheduleRealInfo.getAdjustExps().equals("")){
1716   - adjustExps = "其他";
1717   - } else if(!(lblxSet.contains(scheduleRealInfo.getAdjustExps()))){
1718   - adjustExps = "其他";
1719   - } else {
1720   - adjustExps = scheduleRealInfo.getAdjustExps();
1721   - }
1722   - if (scheduleRealInfo.getStatus() == -1) {
1723   - newMap.put("nr", adjustExps);
1724   - newMap.put("lp", scheduleRealInfo.getLpName());
1725   - newMap.put("nbbm", scheduleRealInfo.getClZbh());
1726   - newMap.put("jgh", scheduleRealInfo.getjGh()+scheduleRealInfo.getjName()+"/"+scheduleRealInfo.getsGh()+scheduleRealInfo.getsName());
1727   - newMap.put("dz", scheduleRealInfo.getQdzName());
1728   - newMap.put("sj", scheduleRealInfo.getFcsj());
1729   - newMap.put("lbbc", 1);
1730   - newMap.put("gzf", " ");
1731   - newMap.put("lblc", scheduleRealInfo.getJhlcOrig());
1732   - newMap.put("jyqp", scheduleRealInfo.getRemarks());
1733   - list.add(newMap);
1734   - }
1735   -
1736   - } else {
1737   - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
1738   - if (scheduleRealInfo.getStatus() == -1) {
1739   - double zlblc=0.0;
1740   - while (it.hasNext()) {
1741   - ChildTaskPlan childTaskPlan = it.next();
1742   - if(childTaskPlan.getMileageType().equals("service")){
1743   - if (childTaskPlan.isDestroy()) {
1744   - zlblc=Arith.add(zlblc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());
1745   - }
1746   - }
1747   - }
1748   - Map<String, Object> newMap = new HashMap<String, Object>();
1749   - String adjustExps = "";
1750   - if (scheduleRealInfo.getAdjustExps() == "" || scheduleRealInfo.getAdjustExps() == null) {
1751   - adjustExps = "其他";
1752   - } else if(!(lblxSet.contains(scheduleRealInfo.getAdjustExps()))){
1753   - adjustExps = "其他";
1754   - } else {
1755   - adjustExps = scheduleRealInfo.getAdjustExps();
1756   - }
1757   - newMap.put("nr", adjustExps);
1758   - newMap.put("lp", scheduleRealInfo.getLpName());
1759   - newMap.put("nbbm", scheduleRealInfo.getClZbh());
1760   - newMap.put("jgh", scheduleRealInfo.getjGh()+scheduleRealInfo.getjName()+"/"+scheduleRealInfo.getsGh()+scheduleRealInfo.getsName());
1761   - newMap.put("dz", scheduleRealInfo.getQdzName());
1762   - newMap.put("sj", scheduleRealInfo.getFcsj());
1763   - newMap.put("lbbc", 1);
1764   - newMap.put("lblc", zlblc);
1765   - newMap.put("jyqp", scheduleRealInfo.getRemarks());
1766   - list.add(newMap);
1767   - } else {
1768   - while (it.hasNext()) {
1769   - ChildTaskPlan childTaskPlan = it.next();
1770   - if (childTaskPlan.isDestroy()) {
1771   - if(childTaskPlan.getMileageType().equals("service")){
1772   - String destroyReason = "";
1773   - if (childTaskPlan.getDestroyReason() == null) {
1774   - destroyReason = "其他";
1775   - } else if (childTaskPlan.getDestroyReason().equals("")) {
1776   - destroyReason = "其他";
1777   - } else if(!(lblxSet.contains(childTaskPlan.getDestroyReason()))){
1778   - destroyReason = "其他";
1779   - } else {
1780   - destroyReason = childTaskPlan.getDestroyReason();
1781   - }
1782   - Map<String, Object> newMap = new HashMap<String, Object>();
1783   - newMap.put("nr", destroyReason);
1784   - newMap.put("lp", scheduleRealInfo.getLpName());
1785   - newMap.put("nbbm", scheduleRealInfo.getClZbh());
1786   - newMap.put("jgh", scheduleRealInfo.getjGh()+scheduleRealInfo.getjName()+"/"+scheduleRealInfo.getsGh()+scheduleRealInfo.getsName());
1787   - newMap.put("dz", childTaskPlan.getStartStationName());
1788   - newMap.put("sj", childTaskPlan.getStartDate());
1789   - newMap.put("gzf", " ");
1790   - newMap.put("lbbc", 0);
1791   - newMap.put("lblc", childTaskPlan.getMileage());
1792   - newMap.put("jyqp", childTaskPlan.getRemarks());
1793   - list.add(newMap);
1794   - }
1795   - }
1796   - }
1797   - }
1798   -
1799   - }
1800   - }
1801   - }
1802   - List<Map<String, Object>> listNew=new ArrayList<Map<String,Object>>();
1803   - for (int i = 0; i < lblxs.length; i++) {
1804   - String lx=lblxs[i];
1805   - double lblc=0.0;
1806   - int lbbc=0;
1807   - for (int j = 0; j < list.size(); j++) {
1808   - Map<String, Object> m1=list.get(j);
1809   - if(lx.equals(m1.get("nr").toString())){
1810   - m1.put("lx", 0);
1811   - listNew.add(m1);
1812   - lblc =Arith.add(lblc,Double.parseDouble(m1.get("lblc").toString()));
1813   - lbbc += Integer.parseInt(m1.get("lbbc").toString());
1814   - }
1815   - }
1816   - if(lblc>0){
1817   - Map<String, Object> newMap = new HashMap<String, Object>();
1818   - newMap.put("lx", 1);
1819   - newMap.put("nr", lx);
1820   - newMap.put("lp", "小计");
1821   - newMap.put("nbbm", "少驶班次");
1822   - newMap.put("jgh", lbbc);
1823   - newMap.put("lbbc", "少驶公里");
1824   - newMap.put("lblc", lblc);
1825   - newMap.put("dz", " ");
1826   - newMap.put("sj", " ");
1827   - newMap.put("gzf", " ");
1828   - newMap.put("jyqp"," ");
1829   - listNew.add(newMap);
1830   - }
1831   -
1832   -
1833   - }
1834   - Collections.sort(listNew, new ComparableJob());
1835   - return listNew;
1836   - }
1837   -
1838   - //统计临加班次详细信息
1839   - @Override
1840   - public List<Map<String, Object>> jobLjqk(Map<String, Object> map) {
1841   - // TODO Auto-generated method stub
1842   - String line=map.get("line").toString();
1843   - String date=map.get("date").toString();
1844   - map.put("bcType", "normal");
1845   - List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
1846   - List<ScheduleRealInfo> sList=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date);
1847   - for (int i = 0; i < sList.size(); i++) {
1848   - ScheduleRealInfo scheduleRealInfo=sList.get(i);
1849   - if (!(scheduleRealInfo.getBcType().equals("in")
1850   - || scheduleRealInfo.getBcType().equals("out")
1851   - || scheduleRealInfo.getBcType().equals("ldks"))) {
1852   -// Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
1853   -// if(childTaskPlans.isEmpty()){
1854   - if(scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
1855   - Map<String, Object> newMap=new HashMap<String,Object>();
1856   - newMap.put("lp", scheduleRealInfo.getLpName());
1857   - newMap.put("nbbm", scheduleRealInfo.getClZbh());
1858   - newMap.put("jgh", scheduleRealInfo.getjGh());
1859   - newMap.put("dz", scheduleRealInfo.getQdzName());
1860   - newMap.put("sj", scheduleRealInfo.getFcsj());
1861   - newMap.put("ljlc", scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
1862   - newMap.put("jyqp", scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks());
1863   - list.add(newMap);
1864   - }
1865   -// }else{
1866   -// Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
1867   -// while (it.hasNext()) {
1868   -// ChildTaskPlan childTaskPlan = it.next();
1869   -// if (childTaskPlan.isDestroy()) {
1870   -// }
1871   -// }
1872   -// }
1873   - }
1874   - }
1875   - return list;
1876   - }
1877   -
1878   - public static double culateCJLC2(List<ScheduleRealInfo> list, String item) {
1879   - // TODO Auto-generated method stub
1880   - double sum = 0;
1881   - Set<ChildTaskPlan> cts;
1882   - for(ScheduleRealInfo sch : list){
1883   - if (sch.isSflj())
1884   - continue;
1885   - cts = sch.getcTasks();
1886   - //有子任务
1887   - if (cts != null && cts.size() > 0) {
1888   - for(ChildTaskPlan c : cts){
1889   - if(c.isDestroy() && c.getDestroyReason().equals(item))
1890   - sum = Arith.add(sum, c.getMileage());
1891   - }
1892   - }
1893   -// else if(isInOut(sch))
1894   -// continue;
1895   - //主任务烂班
1896   - else if(sch.getStatus() == -1){
1897   - if(sch.getAdjustExps().equals(item) ||
1898   - (StringUtils.isEmpty(sch.getAdjustExps()) && item.equals("其他"))){
1899   - sum = Arith.add(sum, sch.getJhlcOrig());
1900   - }
1901   - }
1902   - else if(item.equals("其他")){
1903   - double diff = Arith.sub(sch.getJhlcOrig(), sch.getJhlc());
1904   - if(diff > 0){
1905   - sum = Arith.add(sum, diff);
1906   - }
1907   - }
1908   - }
1909   - return sum;
1910   -
1911   - }
1912   - @Override
1913   - public Map<String, Object> jobHzxx(Map<String, Object> map) {
1914   - // TODO Auto-generated method stub
1915   - String line="";
1916   - if(map.get("line")!=null){
1917   - line=map.get("line").toString();
1918   - }
1919   - String date="";
1920   - if(map.get("date")!=null){
1921   - date=map.get("date").toString();
1922   - }
1923   -
1924   - List<ScheduleRealInfo> sList=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date);
1925   - List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
1926   - for (int i = 0; i < sList.size(); i++) {
1927   - ScheduleRealInfo s=sList.get(i);
1928   - Set<ChildTaskPlan> cts = s.getcTasks();
1929   - if(cts != null && cts.size() > 0){
1930   - lists.add(s);
1931   - }else{
1932   - if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
1933   - lists.add(s);
1934   - }
1935   - }
1936   - }
1937   - Map<String, Object> newMap=culateService.culateWdbcs(lists);
1938   - newMap.put("jhbc", culateService.culateJhbc(sList,""));
1939   - newMap.put("jhbczgf", culateService.culateJhbc(sList,"zgf"));
1940   - newMap.put("jhbcwgf", culateService.culateJhbc(sList,"wgf"));
1941   - newMap.put("jhgl", culateService.culateJhgl(sList));
1942   - newMap.put("jhglzgf", culateService.culateJhgl_(sList,"zgf"));
1943   - newMap.put("jhglwgf", culateService.culateJhgl_(sList,"wgf"));
1944   -
1945   - newMap.put("lbgl", culateService.culateLbgl(sList));
1946   - newMap.put("lbbc", culateService.culateLbbc(sList));
1947   -
1948   - newMap.put("sjbc", culateService.culateSjbc(lists,""));
1949   - newMap.put("sjbczgf", culateService.culateSjbc(lists,"zgf"));
1950   - newMap.put("sjbcwgf", culateService.culateSjbc(lists,"wgf"));
1951   - newMap.put("sjgl", culateService.culateSjgl(lists));
1952   - newMap.put("sjglzgf", culateService.culateSjgl_(lists,"zgf"));
1953   - newMap.put("sjglwgf", culateService.culateSjgl_(lists,"wgf"));
1954   -
1955   -
1956   - newMap.put("ljgl", culateService.culateLjgl(lists));
1957   - newMap.put("ljglzgf", culateService.culateLjgl_(lists,"zgf"));
1958   - newMap.put("ljglwgf", culateService.culateLjgl_(lists,"wgf"));
1959   -
1960   - newMap.put("ljbc", culateService.culateLjbc(lists,""));
1961   - newMap.put("ksgl", culateService.culateKsgl(lists));
1962   -
1963   - newMap.put("jhfbbc",culateService.culateDtfzbc(lists, "venting", "jh", ""));
1964   - newMap.put("jhfbbczgf",culateService.culateDtfzbc(lists, "venting", "jh", "zgf"));
1965   - newMap.put("jhfbbcwgf",culateService.culateDtfzbc(lists, "venting", "jh", "wgf"));
1966   - newMap.put("sjfbbc",culateService.culateDtfzbc(lists, "venting", "sj", ""));
1967   - newMap.put("sjfbbczgf",culateService.culateDtfzbc(lists, "venting", "sj", "zgf"));
1968   - newMap.put("sjfbbcwgf",culateService.culateDtfzbc(lists, "venting", "sj", "wgf"));
1969   -
1970   - newMap.put("jhdtbc",culateService.culateDtfzbc(lists, "major", "jh", ""));
1971   - newMap.put("jhdtbczgf",culateService.culateDtfzbc(lists, "major", "jh", "zgf"));
1972   - newMap.put("jhdtbcwgf",culateService.culateDtfzbc(lists, "major", "jh", "wgf"));
1973   - newMap.put("sjdtbc",culateService.culateDtfzbc(lists, "major", "sj", ""));
1974   - newMap.put("sjdtbczgf",culateService.culateDtfzbc(lists, "major", "sj", "zgf"));
1975   - newMap.put("sjdtbcwgf",culateService.culateDtfzbc(lists, "major", "sj", "wgf"));
1976   - return newMap;
1977   - }
1978   - @Override
1979   - public List<Map<String, Object>> lineList() {
1980   - // TODO Auto-generated method stub
1981   - List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
1982   - List<Line> findAllLine = lineRepository.findAllLine();
1983   - for(Line line : findAllLine){
1984   - Map<String, Object> map=new HashMap<String,Object>();
1985   - map.put("gsbm", line.getCompany());
1986   - map.put("fgsbm", line.getBrancheCompany());
1987   - map.put("xlbm", line.getLineCode());
1988   - if(line.getDestroy() == 1){
1989   - map.put("xlname", line.getName() + "(撤销)");
1990   - } else {
1991   - map.put("xlname", line.getName());
1992   - }
1993   - list.add(map);
1994   - }
1995   - return list;
1996   - }
1997   - @Override
1998   - public List<Map<String, Object>> lineListNotDestroy() {
1999   - // TODO Auto-generated method stub
2000   - List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
2001   - Iterator<Line> iterator = lineRepository.findAllService().iterator();
2002   - Line line;
2003   - while (iterator.hasNext()) {
2004   - line = iterator.next();
2005   - Map<String, Object> map=new HashMap<String,Object>();
2006   - map.put("gsbm", line.getCompany());
2007   - map.put("fgsbm", line.getBrancheCompany());
2008   - map.put("xlbm", line.getLineCode());
2009   - map.put("xlname", line.getName());
2010   - list.add(map);
2011   - }
2012   - return list;
2013   - }
2014   - @Override
2015   - public List<Map<String, String>> carList(Map<String, Object> maps) {
2016   - // TODO Auto-generated method stub
2017   - // 转大写
2018   - String nbbm =maps.get("nbbm").toString().toUpperCase();
2019   - String gsbm="";
2020   -
2021   - if(maps.get("gsbm")!=null)
2022   - gsbm= maps.get("gsbm").toString().trim();
2023   -// String fgsbm=maps.get("fgsbm").toString().trim();
2024   - String xlbm=maps.get("xlbm").toString().trim();
2025   - List<Map<String, String>> list = new ArrayList<Map<String, String>>();
2026   - Map<String, String> map;
2027   - Set<String> allSet = BasicData.nbbm2CompanyCodeMap.keySet();
2028   -
2029   - Line line;
2030   - for (String k : allSet) {
2031   - if (k.indexOf(nbbm) != -1) {
2032   - // 所属线路
2033   - boolean fage=true;
2034   - map = new HashMap<>();
2035   - line = BasicData.nbbm2LineMap.get(k);
2036   - String clgsdm= BasicData.nbbm2CompanyCodeMap.get(k);
2037   -
2038   - map.put("id", k);
2039   - map.put("text", k);
2040   - if (null != line) {
2041   - map.put("lineName", line.getName());
2042   - map.put("lineCode", line.getLineCode());
2043   - }
2044   -
2045   - if(!xlbm.equals("")){
2046   - if(null!=line){
2047   - if(!line.getLineCode().equals(xlbm)){
2048   - fage=false;
2049   - }
2050   - }
2051   -
2052   - }
2053   -
2054   - if(!gsbm.equals("")){
2055   - if(!clgsdm.equals(gsbm)){
2056   - fage=false;
2057   - }
2058   - }
2059   -
2060   - if(fage){
2061   - list.add(map);
2062   - }
2063   -
2064   - }
2065   -
2066   - if (list.size() > 20)
2067   - break;
2068   - }
2069   - return list;
2070   - }
2071   - @Override
2072   - public List<Map<String, String>> carListByHistory(Map<String, Object> maps) {
2073   - // TODO Auto-generated method stub
2074   - // 转大写
2075   - String nbbm = maps.get("nbbm").toString().toUpperCase();
2076   -
2077   - String xlbm = maps.get("xlbm").toString().trim();
2078   - List<Map<String, String>> list = new ArrayList<Map<String, String>>();
2079   - Map<String, String> map;
2080   -
2081   - List<String> allNbbm = BasicData.lineCodeHistoryNbbmMap.get(xlbm);
2082   -
2083   - if(allNbbm != null){
2084   - for(String n : allNbbm){
2085   - if(n.indexOf(nbbm) != -1){
2086   - map = new HashMap<>();
2087   - map.put("id", n);
2088   - map.put("text", n);
2089   -
2090   - list.add(map);
2091   - }
2092   -
2093   - if (list.size() > 20)
2094   - break;
2095   - }
2096   - }
2097   -
2098   - return list;
2099   - }
2100   -
2101   -
2102   - @Override
2103   - public List<Map<String, String>> userList(Map<String, Object> maps) {
2104   - // TODO Auto-generated method stub
2105   - // 转大写
2106   - String jsy =maps.get("jsy").toString().toUpperCase();
2107   - String gsbm="";
2108   - if(maps.get("gsbm")!=null)
2109   - gsbm=maps.get("gsbm").toString().trim();
2110   -// String fgsbm=maps.get("fgsbm").toString().trim();
2111   - List<Map<String, String>> list = new ArrayList<Map<String, String>>();
2112   - Map<String, String> map;
2113   -// Set<String> allSet = BasicData.nbbm2CompanyCodeMap.keySet();
2114   - Set<String> allJsy = BasicData.perMap.keySet();
2115   -
2116   - Personnel per;
2117   - for (String k : allJsy) {
2118   - if (k.indexOf(jsy) != -1) {
2119   - map = new HashMap<>();
2120   - // 通过人员查找公司
2121   - per = BasicData.perMap.get(k);
2122   - String rygsdm="";
2123   - if(null != per){
2124   - if(per.getCompanyCode()!=null){
2125   - rygsdm = per.getCompanyCode();
2126   - }
2127   - String jboCode=per.getJobCode().substring(per.getJobCode().indexOf("-")+1);
2128   - map.put("id", jboCode);
2129   - map.put("text", jboCode+"/"+per.getPersonnelName());
2130   - if(!gsbm.equals("")){
2131   - if(rygsdm.equals(gsbm)){
2132   - list.add(map);
2133   - }
2134   - }
2135   - }
2136   - }
2137   -
2138   - if (list.size() > 20)
2139   - break;
2140   - }
2141   - return list;
2142   - }
2143   -
2144   - public List<ArrivalInfo> load4(String line, String date, int zd,String minfcsj){
2145   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2146   - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
2147   - Long date1=0L;
2148   - Long date2=0L;
2149   - Calendar cal = Calendar.getInstance();
2150   - List<ArrivalInfo> list=null;
2151   - try {
2152   - Date dates1 = simpleDateFormat.parse(date+" "+minfcsj+":01");
2153   - String d1=date+" "+minfcsj+":01";
2154   -// Date dates2=simpleDateFormat.parse(date+" 23:59:59");
2155   - date1=dates1.getTime();
2156   -
2157   - cal.setTime(dates1);
2158   - int weeks_year1 = cal.get(Calendar.WEEK_OF_YEAR);
2159   - cal.add(cal.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
2160   - int weeks_year2 = cal.get(Calendar.WEEK_OF_YEAR);
2161   - Date dates2=cal.getTime();
2162   - date2=dates2.getTime();
2163   - String d2=simpleDateFormat.format(dates2);
2164   -
2165   - Connection conn = null;
2166   - PreparedStatement ps = null;
2167   - ResultSet rs = null;
2168   - String year=date.substring(0,4);
2169   - String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year=? AND line_id=? "
2170   - + " AND up_down=? AND ts >= ? AND ts <=? order by device_id,ts";
2171   - try{
2172   - conn = DBUtils_MS.getConnection();
2173   - ps = conn.prepareStatement(sql);
2174   - ps.setInt(1, weeks_year1);
2175   - ps.setString(2, line);
2176   - ps.setInt(3, zd);
2177   - ps.setLong(4, date1);
2178   - ps.setLong(5, date2);
2179   - rs = ps.executeQuery();
2180   -
2181   - list = resultSet2Set(rs);
2182   - }catch(Exception e){
2183   - logger.error("", e);
2184   - }finally {
2185   - DBUtils_MS.close(rs, ps, conn);
2186   - }
2187   -
2188   - } catch (ParseException e1) {
2189   - // TODO Auto-generated catch block
2190   - e1.printStackTrace();
2191   - }
2192   - return list;
2193   -
2194   - }
2195   -
2196   - public List<ArrivalInfo> load3(String line, String date, int zd){
2197   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2198   - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
2199   - Long date1=0L;
2200   - Long date2=0L;
2201   - Calendar cal = Calendar.getInstance();
2202   - try {
2203   - Date dates1 = simpleDateFormat.parse(date+" 00:00:01");
2204   - Date dates2=simpleDateFormat.parse(date+" 23:59:59");
2205   - date1=dates1.getTime();
2206   - date2=dates2.getTime();
2207   - cal.setTime(dates1);
2208   - } catch (ParseException e1) {
2209   - // TODO Auto-generated catch block
2210   - e1.printStackTrace();
2211   - }
2212   - //周数,表分区字段
2213   - int weeks_year1 = cal.get(Calendar.WEEK_OF_YEAR);
2214   - List<ArrivalInfo> list = null;
2215   - Connection conn = null;
2216   - PreparedStatement ps = null;
2217   - ResultSet rs = null;
2218   - String year=date.substring(0,4);
2219   - String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year=? AND line_id=? "
2220   - + " AND up_down=? AND ts >= ? AND ts <=? order by device_id,ts";
2221   - try{
2222   - conn = DBUtils_MS.getConnection();
2223   - ps = conn.prepareStatement(sql);
2224   - ps.setInt(1, weeks_year1);
2225   - ps.setString(2, line);
2226   - ps.setInt(3, zd);
2227   - ps.setLong(4, date1);
2228   - ps.setLong(5, date2);
2229   - rs = ps.executeQuery();
2230   -
2231   - list = resultSet2Set(rs);
2232   - }catch(Exception e){
2233   - logger.error("", e);
2234   - }finally {
2235   - DBUtils_MS.close(rs, ps, conn);
2236   - }
2237   - return list;
2238   - }
2239   -
2240   - //根据排班查到离站
2241   - @Override
2242   - public List<Map<String, Object>> queryInOutStrtion(String line, String date, int zd,String lzsj) {
2243   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2244   - //查询线路所有的站点
2245   - List<ArrivalInfo> arrInfoList=this.load3(line, date, zd);
2246   - List<StationRoute> listStation= stationRouteRepository.findByLine(line,zd);
2247   - List<Map<String, Object>> inoutList=new ArrayList<Map<String,Object>>();
2248   - //保存的所以的站点信息
2249   - Map<String, Object> map1=new HashMap<String,Object>();
2250   - map1.put("bc", "");
2251   - map1.put("nbbm", "");
2252   -
2253   - //所有的班次信息(实际排班排序)
2254   - List<ScheduleRealInfo> realList= scheduleRealInfoRepository.scheduleByDateAndLineInOut(line, date,zd+"");
2255   - for (int i = 0; i < listStation.size(); i++) {
2256   - map1.put(listStation.get(i).getStationCode()+"in"
2257   - , listStation.get(i).getStationName());
2258   - map1.put(listStation.get(i).getStationCode()+"out"
2259   - , (i+1));
2260   - }
2261   - inoutList.add(map1);
2262   -
2263   - for (int i = 0; i < realList.size(); i++) {
2264   - ScheduleRealInfo sinfo=realList.get(i);
2265   - String devuceId=BasicData.deviceId2NbbmMap.inverse().get(sinfo.getClZbh());
2266   - String sjfcsj=sinfo.getRealExecDate()+" "+sinfo.getFcsjActual()+":00";
2267   - String sjddsj=sinfo.getRealExecDate()+" "+sinfo.getZdsjActual()+":59";
2268   -
2269   - try {
2270   - Date dates1 = simpleDateFormat.parse(sjfcsj);
2271   - Date dates2=simpleDateFormat.parse(sjddsj);
2272   - Long date1=dates1.getTime();
2273   - Long date2=dates2.getTime();
2274   - List<ArrivalInfo> arrList=new ArrayList<ArrivalInfo>();
2275   - for (int j = 0; j < arrInfoList.size(); j++) {
2276   - ArrivalInfo a=arrInfoList.get(j);
2277   - if(a.getDeviceId().equals(devuceId) && a.getTs()>=date1 && a.getTs()<=date2){
2278   - arrList.add(a);
2279   - }
2280   - }
2281   -
2282   - Map<String, Object> map2=new HashMap<String,Object>();
2283   - map2.put("bc", (i+1));
2284   - map2.put("nbbm", sinfo.getClZbh());
2285   -
2286   - for (int j = 0; j < listStation.size(); j++) {
2287   - StationRoute s=listStation.get(j);
2288   - List<ArrivalInfo> arrivalList=new ArrayList<ArrivalInfo>();
2289   - for (int j2 = 0; j2 < arrList.size(); j2++) {
2290   - ArrivalInfo a=arrList.get(j2);
2291   - if(s.getStationCode().equals(a.getStopNo())){
2292   - arrivalList.add(a);
2293   - }
2294   - }
2295   - Map<String, String> m=this.strInOut(arrivalList,lzsj);
2296   -
2297   - map2.put(s.getStationCode()+"in", m.get("in"));
2298   - map2.put(s.getStationCode()+"out", m.get("out"));
2299   - map2.put(s.getStationCode(), m.get("type"));
2300   - }
2301   - inoutList.add(map2);
2302   - } catch (ParseException e) {
2303   - // TODO Auto-generated catch block
2304   - e.printStackTrace();
2305   - }
2306   - }
2307   - return inoutList;
2308   - }
2309   -
2310   - //根据GPS查到离站
2311   - @Override
2312   - public List<Map<String, Object>> queryInOutStrtions(String line, String date, int zd,String lzsj) {
2313   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2314   - String minfcsj="02:00";
2315   - List<Line> lineList=lineRepository.findLineByCode(line);
2316   - if(lineList.size()>0){
2317   - List<String> objList = new ArrayList<String>();
2318   - objList.add(lineList.get(0).getId() + "");
2319   - String sqlMinYysj="select start_opt from bsth_c_line_config where "
2320   - + " id = ("
2321   - + "select max(id) from bsth_c_line_config where line = ?"
2322   - + ")";
2323   - minfcsj= jdbcTemplate.queryForObject(sqlMinYysj, objList.toArray(), String.class);
2324   - }
2325   - List<ArrivalInfo> arrInfoList=this.load4(line, date, zd,minfcsj);
2326   -
2327   - //查询线路所有的站点
2328   - List<StationRoute> listStation= stationRouteRepository.findByLine(line,zd);
2329   - List<Map<String, Object>> inoutList=new ArrayList<Map<String,Object>>();
2330   - //保存的所以的站点信息
2331   - Map<String, Object> map1=new HashMap<String,Object>();
2332   - map1.put("bc", "");
2333   - map1.put("nbbm", "");
2334   -
2335   - for (int i = 0; i < listStation.size(); i++) {
2336   - map1.put(listStation.get(i).getStationCode()+"in"
2337   - , listStation.get(i).getStationName());
2338   - map1.put(listStation.get(i).getStationCode()+"out"
2339   - , (i+1));
2340   - }
2341   - inoutList.add(map1);
2342   - List<String> list_nbbm=new ArrayList<String>();
2343   - Map<String, Object> m=new HashMap<String,Object>();
2344   - for (int i = 0; i < arrInfoList.size(); i++) {
2345   - arrInfoList.get(i).setRoute(-1);
2346   - for (int j = 0; j < listStation.size(); j++) {
2347   - if(arrInfoList.get(i).getStopNo().equals(listStation.get(j).getStationCode())){
2348   - arrInfoList.get(i).setRoute(listStation.get(j).getStationRouteCode());
2349   -
2350   - }
2351   - }
2352   - if(m.get(arrInfoList.get(i).getDeviceId())==null){
2353   - m.put(arrInfoList.get(i).getDeviceId(), arrInfoList.get(i).getDeviceId());
2354   - list_nbbm.add(arrInfoList.get(i).getDeviceId());
2355   - }
2356   - }
2357   -
2358   - Map<String, Object> map2=new HashMap<String, Object>();
2359   - for (int i = 0; i < list_nbbm.size(); i++) {
2360   - String nbbm=list_nbbm.get(i);
2361   -
2362   - int zdbm =0;
2363   - int inout=-1;
2364   - List<ArrivalInfo> arrivalList=new ArrayList<ArrivalInfo>();
2365   - for (int j = 0; j < arrInfoList.size(); j++) {
2366   - ArrivalInfo aif=arrInfoList.get(j);
2367   -
2368   - if(aif.getDeviceId().equals(nbbm)){
2369   - map2.put("nbbm", BasicData.deviceId2NbbmMap.get(nbbm));
2370   - if(aif.getRoute()>-1){
2371   - if(((inout==aif.getInOut() && zdbm==aif.getRoute()) || !(zdbm ==aif.getRoute()))){
2372   - if(aif.getRoute()<=zdbm ){
2373   - inoutList.add(map2);
2374   - map2=new HashMap<String, Object>();
2375   - arrivalList=new ArrayList<ArrivalInfo>();
2376   - }
2377   - }
2378   - arrivalList.add(aif);
2379   -// if(!(zdbm ==aif.getRoute())){
2380   - Map<String, String> m_=this.strInOut(arrivalList,lzsj);
2381   - map2.put(aif.getStopNo()+"in", m_.get("in"));
2382   - map2.put(aif.getStopNo()+"out", m_.get("out"));
2383   - map2.put(aif.getStopNo(), m_.get("type"));
2384   -// arrivalList=new ArrayList<ArrivalInfo>();
2385   -// }
2386   - zdbm =aif.getRoute();
2387   - inout=aif.getInOut();
2388   -
2389   - }
2390   -
2391   - }
2392   -
2393   - }
2394   - }
2395   -
2396   - return inoutList;
2397   - }
2398   -
2399   - public Map<String, String> strInOut(List<ArrivalInfo> lists,String lzsj){
2400   - String inout="";
2401   - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
2402   - Long in=0L;
2403   - Long out=0L;
2404   - for(int i=0;i<lists.size();i++){
2405   - ArrivalInfo t1=lists.get(i);
2406   - if(t1.getInOut()==0){
2407   - in=t1.getTs();
2408   - t1.setJzsj(sdf.format(new Date(t1.getTs())));
2409   - for(int j=0;j<lists.size();j++){
2410   - ArrivalInfo t2=lists.get(j);
2411   - if(t2.getInOut()==1 && t2.getDeviceId().equals(t1.getDeviceId())
2412   - && t2.getStopNo().equals(t1.getStopNo())
2413   - && t2.getTs()>t1.getTs()){
2414   - t1.setCzsj(sdf.format(new Date(t2.getTs())));
2415   - out =t2.getTs();
2416   - break;
2417   - }else{
2418   - t1.setCzsj("");
2419   - out =0l;
2420   - }
2421   - }
2422   -
2423   - }else{
2424   - out =t1.getTs();
2425   - t1.setCzsj(sdf.format(new Date(t1.getTs())));
2426   - for(int j=0;j<lists.size();j++){
2427   - ArrivalInfo t2=lists.get(j);
2428   - if(t2.getInOut()==0 && t2.getDeviceId().equals(t1.getDeviceId())
2429   - && t2.getStopNo().equals(t1.getStopNo())
2430   - && t2.getTs()>t1.getTs()){
2431   - in =t2.getTs();
2432   - t1.setJzsj(sdf.format(new Date(t2.getTs())));
2433   - break;
2434   - }
2435   - }
2436   - }
2437   - }
2438   -
2439   - Map<String, String> map=new HashMap<String,String>();
2440   - if(in>0 ){
2441   - map.put("in",sdf.format(new Date(in)));
2442   -
2443   - }else{
2444   - map.put("in", "");
2445   - }
2446   - if(out>0){
2447   - map.put("out", sdf.format(new Date(out)));
2448   - }else{
2449   - map.put("out", "");
2450   - }
2451   - Long sj=1000000000L;
2452   - if(!lzsj.trim().equals("")){
2453   - sj =Long.parseLong(lzsj);
2454   - }
2455   - if(in>0 && out >0){
2456   - if((out-in)/1000>sj){
2457   - map.put("type", "y");
2458   - }else{
2459   - map.put("type", "n");
2460   - }
2461   - }
2462   - return map;
2463   - }
2464   - @Override
2465   - public List<StationRoute> queryStrinon(String line, int zd) {
2466   - // TODO Auto-generated method stub
2467   - List<StationRoute> listStation= stationRouteRepository.findByLine(line,zd);
2468   - return listStation;
2469   - }
2470   -
2471   - @Override
2472   - public List<Map<String, Object>> countMileageSum(Map<String, Object> map) {
2473   - List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
2474   -
2475   - String date="", date2="";
2476   - if(map.get("date")!=null){
2477   - date=map.get("date").toString();
2478   - }
2479   - if(map.get("date2")!=null){
2480   - date2=map.get("date2").toString();
2481   - }
2482   - String nature="0";
2483   - if(map.get("nature")!=null){
2484   - nature=map.get("nature").toString();
2485   - }
2486   - String type="";
2487   - if(map.get("type")!=null){
2488   - type=map.get("type").toString();
2489   - }
2490   -
2491   - List<Map<String, Object>> listAll = calcWaybillService.getLineMileage("", "", "", date, date2, "", "", "", "query");
2492   - List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
2493   - Map<String, Boolean> lineMap=lineService.lineNature();
2494   - if(nature.equals("0")){
2495   - list=listAll;
2496   - }else{
2497   - for (Map<String, Object> m : listAll) {
2498   - if(m.get("xl") != null && m.get("xl").toString().trim().length() > 0){
2499   - String xl = m.get("xl").toString();
2500   - if(nature.equals("1")){
2501   - if(lineMap.containsKey(xl) && lineMap.get(xl)){
2502   - list.add(m);
2503   - }
2504   - }else{
2505   - if(!(lineMap.containsKey(xl) && lineMap.get(xl))){
2506   - list.add(m);
2507   - }
2508   - }
2509   - }
2510   - }
2511   - }
2512   -
2513   - List<Business> allBusiness = businessRepository.getOrder();
2514   - Set<String> gsFgsSet = new HashSet<String>(); // 有排序编号的公司,防止乱序或者合计值出问题。
2515   - for(Business b : allBusiness){
2516   - gsFgsSet.add(b.getUpCode() + "_" + b.getBusinessCode());
2517   - gsFgsSet.add(b.getBusinessCode());
2518   - }
2519   -
2520   - Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
2521   - List<String> keyList = new ArrayList<String>();
2522   -
2523   - Map<String, Object> hj = new HashMap<String, Object>(); // 合计
2524   - hj.put("gsName", "合计");
2525   - hj.put("fgsBm", " ");
2526   -
2527   - for(Map<String, Object> m : list){
2528   - m.put("gsBm", m.get("gsdm"));
2529   - m.put("fgsBm", m.get("fgsdm"));
2530   - if(m.get("gsBm") != null && m.get("fgsBm") != null
2531   - && m.get("gsBm").toString().trim().length() > 0
2532   - && m.get("fgsBm").toString().trim().length() > 0){
2533   - String gsBm = m.get("gsBm").toString().trim();
2534   - String fgsBm = m.get("fgsBm").toString().trim();
2535   - String key = gsBm + "_" + fgsBm; // 分公司key
2536   - String key2 = gsBm + "_sum"; // 直属公司key
2537   - if(!gsFgsSet.contains(key) && !gsFgsSet.contains(gsBm)){
2538   - continue;
2539   - }
2540   - if(!keyMap.containsKey(key)){ // 每个分公司一条
2541   - Map<String, Object> t = new HashMap<String, Object>();
2542   - t.put("gsName", m.get("gs"));
2543   - t.put("fgsName", m.get("fgs"));
2544   - t.put("key", key);
2545   - keyMap.put(key, t);
2546   - keyList.add(key);
2547   - if(!keyMap.containsKey(key2)){ // 直属公司小计
2548   - Map<String, Object> t2 = new HashMap<String, Object>();
2549   - t2.put("gsName", m.get("gs"));
2550   - t2.put("fgsName", "小计");
2551   - t2.put("key", key2);
2552   - keyMap.put(key2, t2);
2553   - keyList.add(key2);
2554   - }
2555   - }
2556   - Map<String, Object> t = keyMap.get(key);
2557   - Map<String, Object> t2 = keyMap.get(key2);
2558   - for(String s : m.keySet()){
2559   - if("gsName,fgsName,key".contains(s)){
2560   - continue;
2561   - }
2562   - try {
2563   - if(t.containsKey(s)){ // 分公司
2564   - t.put(s, new BigDecimal(t.get(s).toString()).add(new BigDecimal(m.get(s).toString())));
2565   - } else {
2566   - t.put(s, m.get(s).toString());
2567   - }
2568   - if(t2.containsKey(s)){ // 直属公司
2569   - t2.put(s, new BigDecimal(t2.get(s).toString()).add(new BigDecimal(m.get(s).toString())));
2570   - } else {
2571   - t2.put(s, m.get(s).toString());
2572   - }
2573   - if(hj.containsKey(s)){ // 合计
2574   - hj.put(s, new BigDecimal(hj.get(s).toString()).add(new BigDecimal(m.get(s).toString())));
2575   - } else {
2576   - hj.put(s, m.get(s).toString());
2577   - }
2578   - } catch (Exception e) {
2579   - // TODO: handle exception
2580   - continue;
2581   - }
2582   - }
2583   - }
2584   - }
2585   -
2586   - for(Business b : allBusiness){ // 根据公司排序插入返回对象
2587   - String gs = b.getBusinessCode();
2588   - String gsfgs = b.getUpCode() + "_" + b.getBusinessCode();
2589   - for(String key : keyList){
2590   - if(key.equals(gsfgs)){
2591   - resList.add(keyMap.get(key));
2592   - break;
2593   - } else if(key.replaceAll("_sum", "").equals(gs)){
2594   - resList.add(keyMap.get(key));
2595   - break;
2596   - }
2597   - }
2598   - }
2599   - resList.add(hj);
2600   -
2601   - if(type.equals("export")){
2602   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
2603   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
2604   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
2605   - Map<String, Object> m = new HashMap<String, Object>();
2606   - String xls="countMileageSum.xls";
2607   - ReportUtils ee = new ReportUtils();
2608   - try {
2609   - String dateTime = "";
2610   - if(date.equals(date2)){
2611   - m.put("date", date);
2612   - dateTime = sdfSimple.format(sdfMonth.parse(date));
2613   - } else {
2614   - m.put("date", date + "至" + date2);
2615   - dateTime = sdfSimple.format(sdfMonth.parse(date))
2616   - +"-"+sdfSimple.format(sdfMonth.parse(date2));
2617   - }
2618   - listI.add(resList.iterator());
2619   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
2620   - ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
2621   - path + "export/"+dateTime+"-审计公里汇总表.xls");
2622   - } catch (Exception e) {
2623   - // TODO: handle exception
2624   - e.printStackTrace();
2625   - }
2626   - }
2627   -
2628   - return resList;
2629   - }
2630   -
2631   - @Override
2632   - public List<Map<String, Object>> countByList(Map<String, Object> map) {
2633   - // TODO Auto-generated method stub
2634   -
2635   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
2636   - String gsdm="";
2637   - if(map.get("gsdm")!=null){
2638   - gsdm=map.get("gsdm").toString();
2639   - }
2640   - String fgsdm="";
2641   - if(map.get("fgsdm")!=null){
2642   - fgsdm=map.get("fgsdm").toString();
2643   - }
2644   - String line="";
2645   - if(map.get("line")!=null){
2646   - line=map.get("line").toString();
2647   - }
2648   - String date="";
2649   - if(map.get("date")!=null){
2650   - date=map.get("date").toString();
2651   - }
2652   - String date2="";
2653   - if(map.get("date2")!=null){
2654   - date2=map.get("date2").toString();
2655   - }
2656   - String xlName="";
2657   - if(map.get("xlName")!=null){
2658   - xlName=map.get("xlName").toString();
2659   - }
2660   - String nature="0";
2661   - if(map.get("nature")!=null){
2662   - nature=map.get("nature").toString();
2663   - }
2664   - String type="";
2665   - if(map.get("type")!=null){
2666   - type=map.get("type").toString();
2667   - }
2668   - //所有班次信息
2669   - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
2670   - line =line.trim();
2671   - if(gsdm.equals("") && fgsdm.equals("") && line.equals("")){
2672   - list = scheduleRealInfoRepository.scheduleByDateAndLineTj3(date, date2);
2673   - } else if(line.equals("")){
2674   - //查询所有线路
2675   - list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date,date2,gsdm,fgsdm);
2676   - }else{
2677   - //查询单条线路
2678   - list = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date,date2);
2679   - }
2680   -
2681   - Map<String, Boolean> lineMap = lineService.lineNature();
2682   -
2683   - List<String> objList = new ArrayList<String>();
2684   - String sql="select r.xl_bm"
2685   - + " from bsth_c_s_sp_info_real r where"
2686   - + " r.schedule_date_str BETWEEN ? and ?";
2687   - objList.add(date);
2688   - objList.add(date2);
2689   - if("".equals(gsdm.trim()) && "".equals(fgsdm.trim()) && "".equals(line.trim())){
2690   -
2691   - } else if(line.equals("")){
2692   - sql +=" and r.gs_bm=?"
2693   - + " and r.fgs_bm like CONCAT('%',?,'%')";
2694   - objList.add(gsdm);
2695   - objList.add(fgsdm);
2696   - }else{
2697   - sql += " and r.xl_bm = ?";
2698   - objList.add(line);
2699   - }
2700   - sql += " group by r.xl_bm";
2701   -
2702   - List<String> listLine=jdbcTemplate.query(sql, objList.toArray(), new RowMapper<String>() {
2703   - @Override
2704   - public String mapRow(ResultSet arg0, int arg1) throws SQLException {
2705   - String ve = arg0.getString("xl_bm");
2706   - return ve;
2707   - }
2708   - });
2709   - for (int i = 0; i < listLine.size(); i++) {
2710   - List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
2711   - String lineStr=listLine.get(i);
2712   - if("0".equals(nature)){ // 全部
2713   -
2714   - } else if("1".equals(nature)){ // 营运
2715   - if(!(lineMap.containsKey(lineStr) && lineMap.get(lineStr))){
2716   - continue;
2717   - }
2718   - } else { // 非营运
2719   - if(lineMap.containsKey(lineStr) && lineMap.get(lineStr)){
2720   - continue;
2721   - }
2722   - }
2723   -
2724   - for (int j = 0; j < list.size(); j++) {
2725   - ScheduleRealInfo s=list.get(j);
2726   - if(s.getXlBm().equals(lineStr)){
2727   - lists.add(s);
2728   - }
2729   - }
2730   -
2731   - //计算线路的各项公里
2732   - if(lists.size()>0){
2733   - Map<String, Object> newMap=staticTj(lists,"z");
2734   - lMap.add(newMap);
2735   - }
2736   - }
2737   - if(list.size()>0){
2738   - Map<String, Object> newMap=staticTj(list,"f");
2739   - lMap.add(newMap);
2740   - }
2741   - if(type.equals("export")){
2742   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
2743   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
2744   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
2745   - Map<String, Object> m = new HashMap<String, Object>();
2746   - m.put("date", date);
2747   - m.put("date1", date2);
2748   - String by=map.get("by").toString();
2749   - String xls="";
2750   - if(by.equals("sj")){
2751   - xls="countByLine.xls";
2752   - }else{
2753   - xls="countByLines.xls";
2754   - }
2755   - ReportUtils ee = new ReportUtils();
2756   - try {
2757   - String dateTime = "";
2758   - if(date.equals(date2)){
2759   - dateTime = sdfSimple.format(sdfMonth.parse(date));
2760   - } else {
2761   - dateTime = sdfSimple.format(sdfMonth.parse(date))
2762   - +"-"+sdfSimple.format(sdfMonth.parse(date2));
2763   - }
2764   - listI.add(lMap.iterator());
2765   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
2766   - ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
2767   - path + "export/"+dateTime+"-"+xlName+"-线路公里统计表.xls");
2768   - } catch (Exception e) {
2769   - // TODO: handle exception
2770   - e.printStackTrace();
2771   - }
2772   - }
2773   - return lMap;
2774   - }
2775   -
2776   -
2777   - @Override
2778   - public List<Map<String, Object>> countByList2(Map<String, Object> map) {
2779   - // TODO Auto-generated method stub
2780   -
2781   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
2782   - String gsdm="";
2783   - if(map.get("gsdm")!=null){
2784   - gsdm=map.get("gsdm").toString();
2785   - }
2786   - String fgsdm="";
2787   - if(map.get("fgsdm")!=null){
2788   - fgsdm=map.get("fgsdm").toString();
2789   - }
2790   - String line="";
2791   - if(map.get("line")!=null){
2792   - line=map.get("line").toString();
2793   - }
2794   - String date="";
2795   - if(map.get("date")!=null){
2796   - date=map.get("date").toString();
2797   - }
2798   - String date2="";
2799   - if(map.get("date2")!=null){
2800   - date2=map.get("date2").toString();
2801   - }
2802   - String xlName="";
2803   - if(map.get("xlName")!=null){
2804   - xlName=map.get("xlName").toString();
2805   - }
2806   - String type="";
2807   - if(map.get("type")!=null){
2808   - type=map.get("type").toString();
2809   - }
2810   - //所有班次信息
2811   - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
2812   - line = line.trim();
2813   -
2814   - List<String> objList = new ArrayList<String>();
2815   - objList.add(date);
2816   - objList.add(date2);
2817   - String sql="select r.xl_bm"
2818   - + " from bsth_c_s_sp_info_real r where"
2819   - + " r.schedule_date_str >= ? and r.schedule_date_str >= ?";
2820   -
2821   -
2822   - if(line.equals("")){
2823   - sql +=" and r.gs_bm = ?"
2824   - + " and r.fgs_bm = ?";
2825   - objList.add(gsdm);
2826   - objList.add(fgsdm);
2827   - }else{
2828   - sql += " and r.xl_bm = ?";
2829   - objList.add(line);
2830   - }
2831   - sql += " group by r.xl_bm";
2832   -
2833   - List<String> listLine=jdbcTemplate.query(sql, objList.toArray(), new RowMapper<String>() {
2834   - @Override
2835   - public String mapRow(ResultSet arg0, int arg1) throws SQLException {
2836   - String ve = arg0.getString("xl_bm");
2837   - return ve;
2838   - }
2839   - });
2840   - for (int i = 0; i < listLine.size(); i++) {
2841   - List<ScheduleRealInfo> lists =scheduleRealInfoRepository.scheduleByDateAndLineTj2(listLine.get(i), date,date2);
2842   - list.addAll(lists);
2843   - //计算线路的各项公里
2844   - if(lists.size()>0){
2845   - Map<String, Object> newMap=staticTj(lists,"z");
2846   - lMap.add(newMap);
2847   - }
2848   - }
2849   - if(list.size()>0){
2850   - Map<String, Object> newMap=staticTj(list,"f");
2851   - lMap.add(newMap);
2852   - }
2853   - if(type.equals("export")){
2854   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
2855   - Map<String, Object> m = new HashMap<String, Object>();
2856   - m.put("date", date);
2857   - m.put("date1", date2);
2858   - String by=map.get("by").toString();
2859   - String xls="";
2860   - if(by.equals("sj")){
2861   - xls="countByLine.xls";
2862   - }else{
2863   - xls="countByLines.xls";
2864   - }
2865   - ReportUtils ee = new ReportUtils();
2866   - try {
2867   - listI.add(lMap.iterator());
2868   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
2869   - ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
2870   - path + "export/线路公里统计表.xls");
2871   - } catch (Exception e) {
2872   - // TODO: handle exception
2873   - e.printStackTrace();
2874   - }
2875   - }
2876   - return lMap;
2877   - }
2878   -
2879   - public final Map<String, Object> staticTj(List<ScheduleRealInfo> list,String status){
2880   -
2881   - List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
2882   - for(int i=0;i<list.size();i++){
2883   - ScheduleRealInfo s=list.get(i);
2884   - Set<ChildTaskPlan> cts = s.getcTasks();
2885   - if(cts != null && cts.size() > 0){
2886   - lists.add(s);
2887   - }else{
2888   - if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2889   - lists.add(s);
2890   - }
2891   - }
2892   - }
2893   - Map<String, Object> map = new HashMap<String, Object>();
2894   - if(list.size()>0){
2895   - if(status.equals("f")){
2896   - map.put("xlName","合计");
2897   - map.put("gs", "");
2898   - map.put("fgs", "");
2899   - }else{
2900   - map.put("xlName", list.get(0).getXlName());
2901   - map.put("xlBm", list.get(0).getXlBm());
2902   - map.put("gsBm", list.get(0).getGsBm());
2903   - map.put("fgsBm", list.get(0).getFgsBm());
2904   - map.put("gs", list.get(0).getGsName());
2905   - map.put("fgs", list.get(0).getFgsName());
2906   - map.put("jGh", list.get(0).getjGh());
2907   - map.put("sGh", list.get(0).getsGh()==null?"":list.get(0).getsGh());
2908   - map.put("nbbm",list.get(0).getClZbh());
2909   - map.put("line", list.get(0).getXlBm());
2910   - }
2911   -
2912   - double jhyygl=culateService.culateJhgl(list);//计划营运公里
2913   - double jhjcclc= culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里)
2914   - map.put("jhlc", jhyygl);
2915   - map.put("jcclc", jhjcclc);
2916   - map.put("jhzlc", Arith.add(jhyygl, jhjcclc));//计划总里程
2917   -
2918   - //计划内外营运
2919   - Map<String, Double> culateSjlcMap=culateService.culateSjlcMap(lists);
2920   - double jhnlc=culateSjlcMap.get("jhnlc");
2921   - double jhwlc=culateSjlcMap.get("jhwlc");
2922   - map.put("jhnlc", jhnlc);
2923   - map.put("jhwlc", jhwlc);
2924   - double zyylc=Arith.add(jhnlc, jhwlc);
2925   -
2926   - //计划内外进出场
2927   - Map<String, Double> culateSjJcclcMap=culateService.culateSjJcclcMap(lists);
2928   - double jhwjcclc=culateSjJcclcMap.get("jhwlc");
2929   - double jhnjcclc=culateSjJcclcMap.get("jhnlc");
2930   - map.put("jhwjcclc", jhwjcclc);
2931   - map.put("jhnjcclc", jhnjcclc);
2932   - double zjcclc=Arith.add(jhwjcclc, jhnjcclc);
2933   -
2934   - //临加公里
2935   - Map<String, Double> culateLjMile=culateService.culateLjMile(lists);
2936   - double ljyy=culateLjMile.get("ljyy");
2937   - double ljjcc=culateLjMile.get("ljjcc");
2938   - double ljkfks=culateLjMile.get("ljkfks");
2939   - map.put("ljyy", ljyy);
2940   - map.put("ljjcc", ljjcc);
2941   - map.put("ljkfks", ljkfks);
2942   -
2943   - double ljlc=Arith.add(Arith.add(ljyy, ljjcc),ljkfks);
2944   -
2945   - double lbss=culateService.culateSsMile(list);//烂班少驶
2946   - map.put("lbss", lbss);
2947   - map.put("ssgl_lz", culateService.culateSsMileXx(list, "路阻"));
2948   - map.put("ssgl_dm", culateService.culateSsMileXx(list, "吊慢"));
2949   - map.put("ssgl_gz", culateService.culateSsMileXx(list, "故障"));
2950   - map.put("ssgl_jf", culateService.culateSsMileXx(list, "纠纷"));
2951   - map.put("ssgl_zs", culateService.culateSsMileXx(list, "肇事"));
2952   - map.put("ssgl_qr", culateService.culateSsMileXx(list, "缺人"));
2953   - map.put("ssgl_qc", culateService.culateSsMileXx(list, "缺车"));
2954   - map.put("ssgl_kx", culateService.culateSsMileXx(list, "客稀"));
2955   - map.put("ssgl_qh", culateService.culateSsMileXx(list, "气候"));
2956   - map.put("ssgl_yw", culateService.culateSsMileXx(list, "援外"));
2957   - map.put("ssgl_ljpm", culateService.culateSsMileXx(list, "路救抛锚"));
2958   - map.put("ssgl_other", culateService.culateSsMileXx(list, "其他"));
2959   -
2960   -
2961   - double zrwjcclc=culateService.culateZrwJccLc(list, "故障");
2962   - double zrwjcclc1=culateService.culateZrwJccLc(list, "肇事");
2963   - double zrwjcclc2=culateService.culateZrwJccLc(list, "纠纷");
2964   - double zrwjcclcqt=Arith.add(culateService.culateZrwJccLc(list, "其他"),culateService.culateZrwJccLc(list, ""));
2965   - map.put("jhwjcclc_z", Arith.add(jhwjcclc,zrwjcclcqt));
2966   - map.put("zrwjcclc", zrwjcclc);
2967   - map.put("zrwjcclc1", zrwjcclc1);
2968   - map.put("zrwjcclc2", zrwjcclc2);
2969   - map.put("zrwjcclcqt", zrwjcclcqt);
2970   - double zrwjcc=Arith.add(Arith.add(Arith.add(zrwjcclc, zrwjcclc1), zrwjcclc2),zrwjcclcqt);
2971   - double kfks=culateService.culateKfksLc(lists);
2972   - map.put("kfks", kfks);
2973   - double zlc=Arith.add(Arith.add(Arith.add(zrwjcc, ljlc),
2974   - Arith.add(zjcclc, zyylc)),kfks);
2975   - map.put("zlc", zlc);
2976   -
2977   - //备用
2978   - double ljgl= culateService.culateLjgl(lists);
2979   - double sjyygl= culateService.culateSjgl(lists);
2980   - double zyygl= Arith.add(sjyygl,ljgl);
2981   -
2982   - double sjjccgl=culateService.culateJccgl(lists);
2983   - double sjksgl=culateService.culateKsgl(lists);
2984   - double zksgl=Arith.add(sjjccgl, sjksgl);
2985   - map.put("sjzgl", Arith.add(zyygl, zksgl));
2986   - }
2987   - return map;
2988   - }
2989   - @Override
2990   - public List<Map<String, Object>> countByBusList(Map<String, Object> map) {
2991   - // TODO Auto-generated method stub
2992   - SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
2993   - List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
2994   - List<Map<String, Object>> lMaps = new ArrayList<Map<String, Object>>();
2995   - String gsdm="";
2996   - if(map.get("gsdm")!=null){
2997   - gsdm=map.get("gsdm").toString();
2998   - }
2999   - String fgsdm="";
3000   - if(map.get("fgsdm")!=null){
3001   - fgsdm=map.get("fgsdm").toString();
3002   - }
3003   - String line="";
3004   - if(map.get("line")!=null){
3005   - line=map.get("line").toString();
3006   - }
3007   - String date="";
3008   - if(map.get("date")!=null){
3009   - date=map.get("date").toString();
3010   - }
3011   - String date2="";
3012   - if(map.get("date2")!=null){
3013   - date2=map.get("date2").toString();
3014   - }
3015   - String xlName="";
3016   - if(map.get("xlName")!=null){
3017   - xlName=map.get("xlName").toString();
3018   - }
3019   - String zt="";
3020   - if(map.get("zt")!=null){
3021   - zt=map.get("zt").toString();
3022   - }
3023   - String type="";
3024   - if(map.get("type")!=null){
3025   - type=map.get("type").toString();
3026   - }
3027   - //所有班次信息
3028   - List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
3029   - line =line.trim();
3030   - if(line.equals("")){
3031   - //查询所有线路
3032   - list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date,date2,gsdm,fgsdm);
3033   - }else{
3034   - //查询单条线路
3035   - list = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date,date2);
3036   - }
3037   -
3038   - List<String> objList = new ArrayList<String>();
3039   - objList.add(date);
3040   - objList.add(date2);
3041   - String ylbSql=" select * from bsth_c_ylb where rq BETWEEN ? and ?";
3042   - if(line.equals("")){
3043   - ylbSql +=" and ssgsdm = ?"
3044   - + " and fgsdm = ?";
3045   - objList.add(gsdm);
3046   - objList.add(fgsdm);
3047   - }else{
3048   - ylbSql += " and xlbm = ?";
3049   - objList.add(line);
3050   - }
3051   - List<Ylb> ylbList = ylbList(ylbSql, objList);
3052   -
3053   - List<String> objList2 = new ArrayList<String>();
3054   - objList2.add(date);
3055   - objList2.add(date2);
3056   - String dlbSql=" select * from bsth_c_dlb where rq BETWEEN ? and ?";
3057   - if(line.equals("")){
3058   - dlbSql +=" and ssgsdm = ?"
3059   - + " and fgsdm = ?";
3060   - objList2.add(gsdm);
3061   - objList2.add(fgsdm);
3062   - }else{
3063   - dlbSql += " and xlbm = ?";
3064   - objList2.add(line);
3065   - }
3066   - List<Dlb> dlbList=dlbList(dlbSql, objList2);
3067   - List<Map<String, Object>> listGroupBy =null;
3068   - String sql="";
3069   - if(zt.equals("zbh")){
3070   - List<String> objList3 = new ArrayList<String>();
3071   - objList3.add(date);
3072   - objList3.add(date2);
3073   - sql+="select r.xl_bm,r.cl_zbh"
3074   - + " from bsth_c_s_sp_info_real r where"
3075   - + " r.schedule_date_str BETWEEN ? and ?";
3076   - if(line.equals("")){
3077   - sql +=" and r.gs_bm = ?"
3078   - + " and r.fgs_bm = ?";
3079   - objList3.add(gsdm);
3080   - objList3.add(fgsdm);
3081   - }else{
3082   - sql += " and r.xl_bm = ?";
3083   - objList3.add(line);
3084   - }
3085   - sql += " group by r.xl_bm,r.cl_zbh";
3086   - listGroupBy=jdbcTemplate.query(sql, objList3.toArray(), new RowMapper<Map<String, Object>>() {
3087   - @Override
3088   - public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
3089   - Map<String, Object> map=new HashMap<String,Object>();
3090   - map.put("line",arg0.getString("xl_bm"));
3091   - map.put("nbbm", arg0.getString("cl_zbh"));
3092   - return map;
3093   - }
3094   - });
3095   - }else{
3096   - List<String> objList4 = new ArrayList<String>();
3097   - objList4.add(date);
3098   - objList4.add(date2);
3099   - sql+="select r.xl_bm,r.cl_zbh,r.j_gh,r.s_gh"
3100   - + " from bsth_c_s_sp_info_real r where"
3101   - + " r.schedule_date_str BETWEEN ? and ?";
3102   - if(line.equals("")){
3103   - sql +=" and r.gs_bm = ? "
3104   - + " and r.fgs_bm = ?";
3105   - objList4.add(gsdm);
3106   - objList4.add(fgsdm);
3107   - }else{
3108   - sql += " and r.xl_bm = ?";
3109   - objList4.add(line);
3110   - }
3111   - sql += " group by r.xl_bm,r.cl_zbh,r.j_gh,r.s_gh";
3112   - listGroupBy=jdbcTemplate.query(sql, objList4.toArray(), new RowMapper<Map<String, Object>>() {
3113   - @Override
3114   - public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
3115   - Map<String, Object> map=new HashMap<String,Object>();
3116   - map.put("line",arg0.getString("xl_bm"));
3117   - map.put("nbbm", arg0.getString("cl_zbh"));
3118   - map.put("jGh", arg0.getString("j_gh"));
3119   - map.put("sGh", arg0.getString("s_gh"));
3120   -// map.put("jName", arg0.getString("j_name"));
3121   -// map.put("sName", arg0.getString("s_name"));
3122   - return map;
3123   - }
3124   - });
3125   - }
3126   -
3127   -
3128   - for (int i = 0; i < listGroupBy.size(); i++) {
3129   - Map<String, Object> m=listGroupBy.get(i);
3130   - String xl_bm=m.get("line")==null?"":m.get("line").toString();
3131   - String nbbm =m.get("nbbm")==null?"":m.get("nbbm").toString();
3132   - String jGh= m.get("jGh")==null?"":m.get("jGh").toString();
3133   - String sGh= m.get("sGh")==null?"":m.get("sGh").toString();
3134   - List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
3135   - for (int j = 0; j < list.size(); j++) {
3136   - ScheduleRealInfo s=list.get(j);
3137   - if(zt.equals("zbh")){
3138   - if(xl_bm.equals(s.getXlBm())
3139   - && nbbm.equals(s.getClZbh())){
3140   - lists.add(s);
3141   - }
3142   - }else{
3143   - if(xl_bm.equals(s.getXlBm()) && nbbm.equals(s.getClZbh())
3144   - && jGh.equals(s.getjGh()) && sGh.equals(s.getsGh())){
3145   - lists.add(s);
3146   -
3147   - if((m.get("jName") == null || m.get("jName").toString().length() == 0)
3148   - && s.getjName() != null && s.getjName().length() > 0){
3149   - m.put("jName", s.getjName());
3150   - }
3151   - if((m.get("sName") == null || m.get("sName").toString().length() == 0)
3152   - && s.getsName() != null && s.getsName().length() > 0){
3153   - m.put("sName", s.getsName());
3154   - }
3155   - }
3156   - }
3157   - }
3158   -
3159   - if(zt.equals("zbh")){
3160   - Map<String, Object> newMap=staticTj(lists, "");
3161   - double yhl=0.0;
3162   - double jzl=0.0;
3163   - double hyl=0.0;
3164   - double dhl=0.0;
3165   - double cdl=0.0;
3166   - for (int j = 0; j < ylbList.size(); j++) {
3167   - Ylb y=ylbList.get(j);
3168   - if(nbbm.equals(y.getNbbm()) && xl_bm.equals(y.getXlbm())){
3169   - yhl=Arith.add(yhl, y.getYh());
3170   - jzl=Arith.add(jzl, y.getJzl());
3171   - hyl=Arith.add(hyl, y.getSh());
3172   - }
3173   -
3174   - }
3175   - for (int j = 0; j < dlbList.size(); j++) {
3176   - Dlb d=dlbList.get(j);
3177   - if(nbbm.equals(d.getNbbm())&&xl_bm.equals(d.getXlbm())){
3178   - dhl=Arith.add(dhl, d.getHd());
3179   - cdl=Arith.add(cdl, d.getCdl());
3180   - }
3181   - }
3182   - if(date.equals(date2)){
3183   - newMap.put("rq",date);
3184   - }else{
3185   - newMap.put("rq",date+"至"+date2);
3186   - }
3187   - newMap.put("yhl", yhl);
3188   - newMap.put("jzl", jzl);
3189   - newMap.put("hyl", hyl);
3190   - newMap.put("dhl", dhl);
3191   - newMap.put("cdl", cdl);
3192   - lMap.add(newMap);
3193   - }else{
3194   - Map<String, Object> newMap=staticTj(lists, "");
3195   - double lc=Double.parseDouble(newMap.get("zlc").toString());
3196   - double yhl=0.0;
3197   - double jzl=0.0;
3198   - double hyl=0.0;
3199   - double dhl=0.0;
3200   - double cdl=0.0;
3201   - double zlc=0.0;
3202   - for (int j = 0; j < ylbList.size(); j++) {
3203   - Ylb y=ylbList.get(j);
3204   - if(nbbm.equals(y.getNbbm()) && xl_bm.equals(y.getXlbm())
3205   - &&jGh.equals(y.getJsy())){
3206   - yhl=Arith.add(yhl, y.getYh());
3207   - jzl=Arith.add(jzl, y.getJzl());
3208   - hyl=Arith.add(hyl, y.getSh());
3209   - zlc=Arith.add(zlc, y.getZlc());
3210   - }
3211   -
3212   - }
3213   -
3214   - for (int j = 0; j < dlbList.size(); j++) {
3215   - Dlb d=dlbList.get(j);
3216   - if(nbbm.equals(d.getNbbm())&&xl_bm.equals(d.getXlbm())
3217   - &&jGh.equals(d.getJsy())){
3218   - dhl=Arith.add(dhl, d.getHd());
3219   - cdl=Arith.add(cdl, d.getCdl());
3220   - zlc=Arith.add(zlc, d.getZlc());
3221   - }
3222   - }
3223   - double div=0.0;
3224   - if(lc>0){
3225   - div=Arith.div(zlc, lc,2);
3226   - }
3227   - newMap.put("yhl", yhl*div);
3228   - newMap.put("jzl", jzl*div);
3229   - newMap.put("hyl", hyl*div);
3230   - newMap.put("dhl", dhl*div);
3231   - newMap.put("cdl", cdl*div);
3232   - lMaps.add(newMap);
3233   - }
3234   -
3235   - }
3236   - if(!zt.equals("zbh")){
3237   - lMap=lists(listGroupBy, lMaps, gsdm, fgsdm, date, date2);
3238   - }
3239   - if(type.equals("export")){
3240   - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
3241   - sdfSimple = new SimpleDateFormat("yyyyMMdd");
3242   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
3243   - Map<String, Object> m = new HashMap<String, Object>();
3244   - m.put("date", date);
3245   - m.put("date1", date2);
3246   - String xls="";
3247   - String by=map.get("by").toString();
3248   -
3249   -
3250   - if(zt.equals("zbh")){
3251   - if(by.equals("sj")){
3252   - xls="countByBus1.xls";
3253   - }else{
3254   - xls="countByBus1s.xls";
3255   - }
3256   - }else{
3257   -
3258   - if(by.equals("sj")){
3259   - xls="countByBus2.xls";
3260   - }else{
3261   - xls="countByBus2s.xls";
3262   - }
3263   - }
3264   - ReportUtils ee = new ReportUtils();
3265   - try {
3266   - String dateTime = "";
3267   - if(date.equals(date2)){
3268   - dateTime = sdfSimple.format(sdfMonth.parse(date));
3269   - } else {
3270   - dateTime = sdfSimple.format(sdfMonth.parse(date))
3271   - +"-"+sdfSimple.format(sdfMonth.parse(date2));
3272   - }
3273   - listI.add(lMap.iterator());
3274   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
3275   - ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
3276   - path + "export/"+dateTime+"-"+xlName+"-路单数据统计表.xls");
3277   - } catch (Exception e) {
3278   - // TODO: handle exception
3279   - e.printStackTrace();
3280   - }
3281   - }
3282   -
3283   - return lMap;
3284   - }
3285   -
3286   - public final List<Ylb> ylbList(String sql, List<String> objList){
3287   - List<Ylb> ylbList= jdbcTemplate.query(sql, objList.toArray(), new RowMapper<Ylb>() {
3288   - @Override
3289   - public Ylb mapRow(ResultSet arg0, int arg1) throws SQLException {
3290   - Ylb y = new Ylb();
3291   - y.setRq(arg0.getDate("rq"));
3292   - y.setJsy(arg0.getString("jsy"));
3293   - y.setXlbm(arg0.getString("xlbm"));
3294   - y.setZlc(arg0.getDouble("zlc"));
3295   - y.setNbbm(arg0.getString("nbbm"));
3296   - y.setJzl(arg0.getDouble("jzl"));
3297   - y.setYh(arg0.getDouble("yh"));
3298   - y.setSh(arg0.getDouble("sh"));
3299   - return y;
3300   - }
3301   - });
3302   - return ylbList;
3303   - }
3304   -
3305   - public final List<Dlb> dlbList(String sql, List<String> objList){
3306   - List<Dlb> dlbList= jdbcTemplate.query(sql, objList.toArray(), new RowMapper<Dlb>() {
3307   - @Override
3308   - public Dlb mapRow(ResultSet arg0, int arg1) throws SQLException {
3309   - Dlb y = new Dlb();
3310   - y.setRq(arg0.getDate("rq"));
3311   - y.setXlbm(arg0.getString("xlbm"));
3312   - y.setJsy(arg0.getString("jsy"));
3313   - y.setNbbm(arg0.getString("nbbm"));
3314   - y.setZlc(arg0.getDouble("zlc"));
3315   - y.setCdl(arg0.getDouble("cdl"));
3316   - y.setHd(arg0.getDouble("hd"));
3317   - y.setSh(arg0.getDouble("sh"));
3318   - return y;
3319   - }
3320   - });
3321   - return dlbList;
3322   - }
3323   -
3324   - public final List<Map<String, Object>> lists(List<Map<String, Object>> listGb,
3325   - List<Map<String, Object>> listLc,
3326   - String gsdm,String fgsdm,
3327   - String date,String date2){
3328   - List<Map<String, Object>> lMap=new ArrayList<Map<String,Object>>();
3329   - for (int i = 0; i < listGb.size(); i++) {
3330   - Map<String, Object> m=listGb.get(i);
3331   - String xl_bm=m.get("line")==null?"":m.get("line").toString();
3332   - String nbbm =m.get("nbbm")==null?"":m.get("nbbm").toString();
3333   - String jGh= m.get("jGh")==null?"":m.get("jGh").toString();
3334   - String jName=m.get("jName")==null?"":m.get("jName").toString();
3335   - String sGh= m.get("sGh")==null?"":m.get("sGh").toString();
3336   - String sName=m.get("sName")==null?"":m.get("sName").toString();
3337   - double jhzlc = 0.0,jhlc= 0.0,jcclc= 0.0,zlc= 0.0,jhnlc= 0.0,jhwlc= 0.0,
3338   - jhnjcclc= 0.0,jhwjcclc= 0.0,jhwjcclc_z=0.0,zrwjcclc= 0.0,zrwjcclc1= 0.0,zrwjcclc2= 0.0,
3339   - zrwjcclcqt=0.0,lbss= 0.0,ssgl_lz= 0.0,
3340   - ssgl_dm= 0.0,ssgl_gz= 0.0,ssgl_jf= 0.0,ssgl_zs= 0.0,ssgl_qr= 0.0,ssgl_qc= 0.0,
3341   - ssgl_kx= 0.0,ssgl_qh= 0.0,ssgl_yw= 0.0,ssgl_other= 0.0,ljyy=0.0,ljjcc=0.0,
3342   - kfks=0.0,yhl=0.0,jzl=0.0,hyl=0.0,dhl=0.0,cdl=0.0;
3343   -
3344   - for (int j = 0; j < listLc.size(); j++) {
3345   - Map<String, Object> map=listLc.get(j);
3346   - if(xl_bm.equals(map.get("line").toString())
3347   - && nbbm.equals(map.get("nbbm").toString())
3348   - && sGh.equals(map.get("sGh")==null?"":map.get("sGh").toString())
3349   - && jGh.equals(map.get("jGh").toString())){
3350   - jhzlc=Arith.add(jhzlc, map.get("jhzlc"));
3351   - jhlc =Arith.add(jhlc, map.get("jhlc"));
3352   - jcclc=Arith.add(jcclc, map.get("jcclc"));
3353   - zlc=Arith.add(zlc, map.get("zlc"));
3354   - jhnlc=Arith.add(jhnlc, map.get("jhnlc"));
3355   - jhwlc=Arith.add(jhwlc, map.get("jhwlc"));
3356   - jhnjcclc=Arith.add(jhnjcclc, map.get("jhnjcclc"));
3357   - jhwjcclc=Arith.add(jhwjcclc, map.get("jhwjcclc"));
3358   - jhwjcclc_z=Arith.add(jhwjcclc_z, map.get("jhwjcclc_z"));
3359   - zrwjcclc=Arith.add(zrwjcclc, map.get("zrwjcclc"));
3360   - zrwjcclc1=Arith.add(zrwjcclc1, map.get("zrwjcclc1"));
3361   - zrwjcclc2=Arith.add(zrwjcclc2, map.get("zrwjcclc2"));
3362   - zrwjcclcqt=Arith.add(zrwjcclcqt, map.get("zrwjcclcqt"));
3363   - lbss=Arith.add(lbss, map.get("lbss"));
3364   - ssgl_lz=Arith.add(ssgl_lz, map.get("ssgl_lz"));
3365   - ssgl_dm=Arith.add(ssgl_dm, map.get("ssgl_dm"));
3366   - ssgl_gz=Arith.add(ssgl_gz, map.get("ssgl_gz"));
3367   - ssgl_jf=Arith.add(ssgl_jf, map.get("ssgl_jf"));
3368   - ssgl_zs=Arith.add(ssgl_zs, map.get("ssgl_zs"));
3369   - ssgl_qr=Arith.add(ssgl_qr, map.get("ssgl_qr"));
3370   - ssgl_qc=Arith.add(ssgl_qc, map.get("ssgl_qc"));
3371   - ssgl_kx=Arith.add(ssgl_kx, map.get("ssgl_kx"));
3372   - ssgl_qh=Arith.add(ssgl_qh, map.get("ssgl_qh"));
3373   - ssgl_yw=Arith.add(ssgl_yw, map.get("ssgl_yw"));
3374   - ssgl_other=Arith.add(ssgl_other, map.get("ssgl_other"));
3375   - kfks=Arith.add(kfks, map.get("kfks"));
3376   - ljyy=Arith.add(ljyy, map.get("ljyy"));
3377   - ljjcc=Arith.add(ljjcc, map.get("ljjcc"));
3378   - yhl=Arith.add(yhl, map.get("yhl"));
3379   - jzl=Arith.add(jzl, map.get("jzl"));
3380   - hyl=Arith.add(hyl, map.get("hyl"));
3381   - dhl=Arith.add(dhl, map.get("dhl"));
3382   - cdl=Arith.add(cdl, map.get("cdl"));
3383   -
3384   -
3385   - }
3386   - }
3387   -
3388   - Map<String, Object> newMap=new HashMap<String,Object>();
3389   - if(date.equals(date2)){
3390   - newMap.put("rq", date);
3391   - }else{
3392   - newMap.put("rq", date+"至"+date2);
3393   - }
3394   - newMap.put("fgs", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
3395   - newMap.put("xlName", BasicData.lineCode2NameMap.get(xl_bm));
3396   - newMap.put("xlBm", xl_bm);
3397   - newMap.put("jGh", jGh);
3398   - newMap.put("jName", jName);
3399   - newMap.put("sGh",sGh);
3400   - newMap.put("sName", sName);
3401   - newMap.put("nbbm", nbbm);
3402   - newMap.put("jhzlc", jhzlc);
3403   - newMap.put("jhlc", jhlc);
3404   - newMap.put("jcclc", jcclc);
3405   - newMap.put("zlc", zlc);
3406   - newMap.put("jhnlc", jhnlc);
3407   - newMap.put("jhwlc", jhwlc);
3408   - newMap.put("jhnjcclc", jhnjcclc);
3409   - newMap.put("jhwjcclc", jhwjcclc);
3410   - newMap.put("jhwjcclc_z", jhwjcclc_z);
3411   - newMap.put("zrwjcclc", zrwjcclc);
3412   - newMap.put("zrwjcclc1", zrwjcclc1);
3413   - newMap.put("zrwjcclc2", zrwjcclc2);
3414   - newMap.put("zrwjcclcqt", zrwjcclcqt);
3415   - newMap.put("lbss", lbss);
3416   - newMap.put("ssgl_lz", ssgl_lz);
3417   - newMap.put("ssgl_dm",ssgl_dm);
3418   - newMap.put("ssgl_gz", ssgl_gz);
3419   - newMap.put("ssgl_jf", ssgl_jf);
3420   - newMap.put("ssgl_zs", ssgl_zs);
3421   - newMap.put("ssgl_qr", ssgl_qr);
3422   - newMap.put("ssgl_qc", ssgl_qc);
3423   - newMap.put("ssgl_kx", ssgl_kx);
3424   - newMap.put("ssgl_qh", ssgl_qh);
3425   - newMap.put("ssgl_yw", ssgl_yw);
3426   - newMap.put("ssgl_other", ssgl_other);
3427   - newMap.put("kfks", kfks);
3428   - newMap.put("ljyy", ljyy);
3429   - newMap.put("ljjcc", ljjcc);
3430   - newMap.put("yhl", yhl);
3431   - newMap.put("jzl", jzl);
3432   - newMap.put("hyl", hyl);
3433   - newMap.put("dhl", dhl);
3434   - newMap.put("cdl", cdl);
3435   - lMap.add(newMap);
3436   - }
3437   - return lMap;
3438   - }
3439   - @Override
3440   - public List<Map<String, Object>> countDjg(Map<String, Object> map) {
3441   - // TODO Auto-generated method stub
3442   - List<Map<String, Object>> lMap=new ArrayList<Map<String,Object>>();
3443   - String line=map.get("line").toString().trim();
3444   - String date=map.get("date").toString();
3445   - String gsbm=map.get("gsbm").toString();
3446   - String fgsbm=map.get("fgsbm").toString();
3447   - String type=map.get("type").toString();
3448   - List<ScheduleRealInfo> list=new ArrayList<ScheduleRealInfo>();
3449   - if(line.equals("")){
3450   - list=scheduleRealInfoRepository.scheduleByDateAndLineByGs(gsbm, fgsbm, date);
3451   -
3452   - }else{
3453   - list=scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
3454   - }
3455   - SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
3456   -// Collections.sort(listInfo,new ComparableAcuals());
3457   -
3458   - List<String> objList = new ArrayList<String>();
3459   - //查询所有线路
3460   - String xlSql="select line_code,spac_grade from bsth_c_line ";
3461   - if(line.equals("")){
3462   - xlSql +=" where company = ?";
3463   - objList.add(gsbm);
3464   - }else{
3465   - xlSql +=" where line_code = ?";
3466   - objList.add(line);
3467   - }
3468   -
3469   - List<Map<String, Object>> xlList=jdbcTemplate.query(xlSql, objList.toArray(), new RowMapper<Map<String, Object>>() {
3470   - @Override
3471   - public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
3472   - Map<String, Object> map=new HashMap<String,Object>();
3473   - map.put("line",arg0.getString("line_code"));
3474   - map.put("grade", arg0.getString("spac_grade"));
3475   - return map;
3476   - }
3477   - });
3478   - //查询大间隔时间
3479   - String djgSql="select * from bsth_c_interval";
3480   - List<Interval> djgList=jdbcTemplate.query(djgSql, new RowMapper<Interval>() {
3481   - @Override
3482   - public Interval mapRow(ResultSet arg0, int arg1) throws SQLException {
3483   - Interval m=new Interval();
3484   - m.setLevel(arg0.getString("level"));
3485   - m.setPeak(arg0.getInt("peak"));
3486   - m.setTrough(arg0.getInt("trough"));
3487   - return m;
3488   - }
3489   - });
3490   -
3491   - for (int i = 0; i < xlList.size(); i++) {
3492   - String lineCode=xlList.get(i).get("line").toString();
3493   - String grade =xlList.get(i).get("grade")==null?"1":xlList.get(i).get("grade").toString();
3494   - int peak=0;
3495   - int trough=0;
3496   - for (int j = 0; j < djgList.size(); j++) {
3497   - Interval il=djgList.get(j);
3498   - if(il.getLevel().equals(grade)){
3499   - peak=il.getPeak();
3500   - trough=il.getTrough();
3501   - continue;
3502   - }
3503   - }
3504   - List<ScheduleRealInfo> list_=new ArrayList<ScheduleRealInfo>();
3505   - List<ScheduleRealInfo> listInfo=new ArrayList<ScheduleRealInfo>();
3506   - for (int j = 0; j < list.size(); j++) {
3507   - ScheduleRealInfo sinfo=list.get(j);
3508   - try {
3509   - if(sinfo.getXlBm().equals(lineCode)){
3510   - boolean type_=false;
3511   - Set<ChildTaskPlan> cts = sinfo.getcTasks();
3512   - if(cts != null && cts.size() > 0){
3513   - type_=true;
3514   - }else{
3515   - if(sinfo.getZdsjActual()!=null && sinfo.getFcsjActual()!=null){
3516   - type_=true;
3517   - }
3518   - }
3519   - if(type_){
3520   - list_.add(sinfo);
3521   - ScheduleRealInfo s=checkBc(sinfo);
3522   - String fcsj=s.getFcsjActual()==null?"":s.getFcsjActual();
3523   - if(!fcsj.equals("")){
3524   - Long fcsjAcual = sdf.parse(s.getRealExecDate() + " " + s.getFcsjActual()).getTime();
3525   - s.setFcsjActualTime(fcsjAcual);
3526   - s.setFcsjActual(fcsj);
3527   - listInfo.add(s);
3528   - }
3529   - }
3530   -
3531   - }
3532   - } catch (ParseException e) {
3533   - // TODO Auto-generated catch block
3534   - e.printStackTrace();
3535   - }
3536   - }
3537   -
3538   - if(listInfo.size()>0){
3539   - int sjbcs=culateService.culateSjbc(list_, "")+culateService.culateLjbc(list_, "");
3540   - Map<String, Object> m=listDjg(gsbm,fgsbm,lineCode,sjbcs,peak,trough,listInfo,grade);
3541   - lMap.add(m);
3542   - }
3543   -
3544   - }
3545   - if(type.equals("export")){
3546   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
3547   - Map<String, Object> m = new HashMap<String, Object>();
3548   - m.put("date", date);
3549   - ReportUtils ee = new ReportUtils();
3550   - try {
3551   - listI.add(lMap.iterator());
3552   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
3553   - ee.excelReplace(listI, new Object[]{m}, path + "mould/countInterval.xls",
3554   - path + "export/大间隔统计表.xls");
3555   - } catch (Exception e) {
3556   - // TODO: handle exception
3557   - e.printStackTrace();
3558   - }
3559   - }
3560   - return lMap;
3561   - }
3562   -
3563   - public ScheduleRealInfo checkBc(ScheduleRealInfo s){
3564   - //如果班次有子任务 且 子任务中有属于营运的。把该子任务的发车时间设置成班次的发车时间
3565   - String fcsj=s.getFcsjActual()==null?"":s.getFcsjActual();
3566   - if(fcsj.equals("")){
3567   - Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
3568   - if(!childTaskPlans.isEmpty()){
3569   - List<ChildTaskPlan> listit=new ArrayList<ChildTaskPlan>(childTaskPlans);
3570   - Collections.sort(listit, new ComparableChild());
3571   - for (int i = 0; i < listit.size(); i++) {
3572   - ChildTaskPlan c=listit.get(i);
3573   - if(!c.isDestroy()){
3574   - if(c.getMileageType().equals("service")){
3575   - s.setFcsjActual(c.getStartDate());
3576   - break;
3577   - }
3578   -
3579   - }
3580   - }
3581   - }
3582   - }
3583   - return s;
3584   - }
3585   -
3586   - public Map<String, Object> listDjg(String gsdm,String fgsdm,String line,int sjbcs,int peak,int trough,List<ScheduleRealInfo> listInfo,String grade){
3587   - DecimalFormat df = new DecimalFormat("#0.00");
3588   - Collections.sort(listInfo,new ComparableAcuals());
3589   - List<ScheduleRealInfo> listInfo0=new ArrayList<ScheduleRealInfo>();
3590   - List<ScheduleRealInfo> listInfo1=new ArrayList<ScheduleRealInfo>();
3591   - for (int i = 0; i < listInfo.size(); i++) {
3592   - ScheduleRealInfo s=listInfo.get(i);
3593   - if(s.getXlDir().equals("0")){
3594   - listInfo0.add(s);
3595   - }else{
3596   - listInfo1.add(s);
3597   - }
3598   -
3599   - }
3600   - Map<String, Object> map=new HashMap<String, Object>();
3601   - map.put("line", line);
3602   - map.put("xlName", BasicData.lineCode2NameMap.get(line));
3603   - map.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
3604   - map.put("bcs", sjbcs);
3605   - map.put("djgde", grade);
3606   - int djgcs=0;
3607   - List<Map<String, Object>> mapList=new ArrayList<Map<String, Object>>();
3608   - for (int i = 0; i < listInfo0.size(); i++) {
3609   - ScheduleRealInfo s=listInfo0.get(i);
3610   - Long fcsjTime=s.getFcsjActualTime();
3611   - String time=s.getFcsjActual();
3612   - String[] fcsjStr = time.split(":");
3613   - long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
3614   - if(i<listInfo0.size()-1){
3615   - Long djg=0l;
3616   - Long fscjNext=listInfo0.get(i+1).getFcsjActualTime();
3617   - if((fcsj>=zgf1&&fcsj<=zgf2)||(fcsj>=wgf1&&fcsj<=wgf2)){
3618   - djg = (long) (peak*60*1000);
3619   - if(fscjNext-fcsjTime>djg){
3620   - djgcs ++;
3621   - Map<String, Object> m=new HashMap<String,Object>();
3622   - m.put("xlName", BasicData.lineCode2NameMap.get(line));
3623   - m.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
3624   - m.put("djgde", grade);
3625   - m.put("qJh", s.getFcsj());
3626   - m.put("qSj", time);
3627   - m.put("hJh", listInfo0.get(i+1).getFcsj());
3628   - m.put("hSj", listInfo0.get(i+1).getFcsjActual());
3629   - m.put("djgsj", peak);
3630   - m.put("bcjgsj", (fscjNext-fcsjTime)/60000);
3631   - mapList.add(m);
3632   - }
3633   - }else{
3634   - djg = (long) (trough*60*1000);
3635   - if(fscjNext-fcsjTime>djg){
3636   - djgcs ++;
3637   - Map<String, Object> m=new HashMap<String,Object>();
3638   - m.put("xlName", BasicData.lineCode2NameMap.get(line));
3639   - m.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
3640   - m.put("djgde", grade);
3641   - m.put("qJh", s.getFcsj());
3642   - m.put("qSj", time);
3643   - m.put("hJh", listInfo0.get(i+1).getFcsj());
3644   - m.put("hSj", listInfo0.get(i+1).getFcsjActual());
3645   - m.put("djgsj", trough);
3646   - m.put("bcjgsj", (fscjNext-fcsjTime)/60000);
3647   - mapList.add(m);
3648   - }
3649   - }
3650   - }
3651   - }
3652   -
3653   - for (int i = 0; i < listInfo1.size(); i++) {
3654   - ScheduleRealInfo s=listInfo1.get(i);
3655   - Long fcsjTime=s.getFcsjActualTime();
3656   - String time=s.getFcsjActual();
3657   - String[] fcsjStr = time.split(":");
3658   - long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
3659   - if(i<listInfo1.size()-1){
3660   - Long djg=0l;
3661   - Long fscjNext=listInfo1.get(i+1).getFcsjActualTime();
3662   - if((fcsj>=zgf1&&fcsj<=zgf2)||(fcsj>=wgf1&&fcsj<=wgf2)){
3663   - djg = (long) (peak*60*1000);
3664   - if(fscjNext-fcsjTime>djg){
3665   - djgcs ++;
3666   - Map<String, Object> m=new HashMap<String,Object>();
3667   - m.put("xlName", BasicData.lineCode2NameMap.get(line));
3668   - m.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
3669   - m.put("djgde", grade);
3670   - m.put("qJh", s.getFcsj());
3671   - m.put("qSj", time);
3672   - m.put("hJh", listInfo1.get(i+1).getFcsj());
3673   - m.put("hSj", listInfo1.get(i+1).getFcsjActual());
3674   - m.put("djgsj", peak);
3675   - m.put("bcjgsj", (fscjNext-fcsjTime)/60000);
3676   - mapList.add(m);
3677   - }
3678   - }else{
3679   - djg = (long) (trough*60*1000);
3680   - if(fscjNext-fcsjTime>djg){
3681   - djgcs ++;
3682   - Map<String, Object> m=new HashMap<String,Object>();
3683   - m.put("xlName", BasicData.lineCode2NameMap.get(line));
3684   - m.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
3685   - m.put("djgde", grade);
3686   - m.put("qJh", s.getFcsj());
3687   - m.put("qSj", time);
3688   - m.put("hJh", listInfo1.get(i+1).getFcsj());
3689   - m.put("hSj", listInfo1.get(i+1).getFcsjActual());
3690   - m.put("djgsj", trough);
3691   - m.put("bcjgsj", (fscjNext-fcsjTime)/60000);
3692   - mapList.add(m);
3693   - }
3694   - }
3695   - }
3696   - }
3697   - double fsl=0.0;
3698   - if(sjbcs>0){
3699   - fsl=Arith.div(djgcs,sjbcs, 2)*100;
3700   - }
3701   -
3702   - map.put("djgcs", djgcs);
3703   - map.put("fsl", df.format(fsl)+"%");
3704   - map.put("djgxx", mapList);
3705   - return map;
3706   - }
3707   -
3708   -
3709   - @Override
3710   - public Map<String, Object> online(Map<String, Object> map) {
3711   - String line =map.get("line").toString();
3712   - String date =map.get("date").toString();
3713   - String type =map.get("type").toString();
3714   - DecimalFormat df = new DecimalFormat("#0.00");
3715   -
3716   - List<String> objList = new ArrayList<String>();
3717   - objList.add(date);
3718   - objList.add(line);
3719   - String sql="select cl_zbh from bsth_c_s_sp_info_real where "
3720   - + " schedule_date_str = ? and xl_bm = ? group by cl_zbh";
3721   - List<String> list= jdbcTemplate.query(sql, objList.toArray(),
3722   - new RowMapper<String>(){
3723   - @Override
3724   - public String mapRow(ResultSet rs, int rowNum) throws SQLException {
3725   - String clzbh=rs.getString("cl_zbh");
3726   - return clzbh;
3727   - }
3728   - });
3729   - List<Line> lineList=lineRepository.findLineByCode(line);
3730   - int qzpcs =0;
3731   - for (int i = 0; i < lineList.size(); i++) {
3732   - Line l=lineList.get(i);
3733   - qzpcs = l.getWarrantCar()==null?0:l.getWarrantCar();
3734   - }
3735   -
3736   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
3737   - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
3738   - int zxcl=0;
3739   - try {
3740   - Long date1 = simpleDateFormat.parse(date+" 00:00:01").getTime();
3741   - Long date2=simpleDateFormat.parse(date+" 23:59:59").getTime();
3742   - Date dates=simpleDateFormat.parse(date+" 00:00:00");
3743   - List<ArrivalInfo> lists=load_online(line,date1,date2,dates,date);
3744   - for (int i = 0; i < list.size(); i++) {
3745   - String nbbm=list.get(i);
3746   - String sbbb=BasicData.deviceId2NbbmMap.inverse().get(nbbm);
3747   - for (int j = 0; j < lists.size(); j++) {
3748   - ArrivalInfo a=lists.get(i);
3749   - if(a.getDeviceId().equals(sbbb)){
3750   - zxcl ++;
3751   - break;
3752   - }
3753   - }
3754   -
3755   - }
3756   - } catch (ParseException e) {
3757   - // TODO Auto-generated catch block
3758   - e.printStackTrace();
3759   - }
3760   - map.put("xlName", BasicData.lineCode2NameMap.get(line));
3761   - map.put("qzpcs", qzpcs);
3762   - map.put("ccs", list.size());
3763   - map.put("zxcl", zxcl);
3764   - String zxl="0";
3765   - if(list.size()>0){
3766   - zxl = df.format(zxcl/list.size());
3767   - }
3768   - map.put("zxl", zxl+"%");
3769   -
3770   - if(type.equals("export")){
3771   - List<Map<String, Object>> lMap=new ArrayList<Map<String,Object>>();
3772   -
3773   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
3774   - Map<String, Object> m = new HashMap<String, Object>();
3775   - m.put("date", date);
3776   - m.put("xlName", BasicData.lineCode2NameMap.get(line));
3777   - m.put("qzpcs", qzpcs);
3778   - m.put("ccs", list.size());
3779   - m.put("zxcl", zxcl);
3780   - m.put("zxl", zxl+"%");
3781   - lMap.add(m);
3782   - ReportUtils ee = new ReportUtils();
3783   - try {
3784   - listI.add(lMap.iterator());
3785   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
3786   - ee.excelReplace(listI, new Object[]{m}, path + "mould/onlinelist.xls",
3787   - path + "export/车辆在线率统计.xls");
3788   - } catch (Exception e) {
3789   - // TODO: handle exception
3790   - e.printStackTrace();
3791   - }
3792   - }
3793   - return map;
3794   - }
3795   -
3796   - public List<ArrivalInfo> load_online(String line,Long date1,Long date2,Date dates,String date){
3797   - List<ArrivalInfo> list = null;
3798   - Calendar cal = Calendar.getInstance();
3799   - cal.setTime(dates);
3800   - //周数,表分区字段
3801   - int weeks_year = cal.get(Calendar.WEEK_OF_YEAR);
3802   -
3803   - Connection conn = null;
3804   - PreparedStatement ps = null;
3805   - ResultSet rs = null;
3806   - String year=date.substring(0,4);
3807   - String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year=? AND line_id=? AND ts > ? AND ts <=? order by ts";
3808   - try{
3809   - conn = DBUtils_MS.getConnection();
3810   - ps = conn.prepareStatement(sql);
3811   - ps.setInt(1, weeks_year);
3812   - ps.setString(2,line);
3813   - ps.setLong(3, date1);
3814   - ps.setLong(4, date2);
3815   - rs = ps.executeQuery();
3816   -
3817   - list = resultSet2Set(rs);
3818   - }catch(Exception e){
3819   - logger.error("", e);
3820   - }finally {
3821   - DBUtils_MS.close(rs, ps, conn);
3822   - }
3823   - return list;
3824   - }
3825   - @Override
3826   - public List<Singledata> singledatatj(Map<String, Object> map) {
3827   - String sfyy="";
3828   - if(map.get("sfyy")!=null){
3829   - sfyy=map.get("sfyy").toString();
3830   - }
3831   - String gsdm="";
3832   - if(map.get("gsdmSing")!=null){
3833   - gsdm=map.get("gsdmSing").toString();
3834   - }
3835   - String fgsdm="";
3836   - if(map.get("fgsdmSing")!=null){
3837   - fgsdm=map.get("fgsdmSing").toString();
3838   - }
3839   - String type="";
3840   - if(map.get("type")!=null){
3841   - type=map.get("type").toString();
3842   - }
3843   - String tjtype=map.get("tjtype").toString();
3844   - String xlbm=map.get("line").toString().trim();
3845   - String startDate = map.get("startDate").toString();
3846   - String endDate = map.get("endDate").toString();
3847   -
3848   - List<ScheduleRealInfo> listReal=new ArrayList<ScheduleRealInfo>();
3849   - if(xlbm.equals("")){
3850   - listReal=scheduleRealInfoRepository.scheduleByDateAndLineTj(xlbm, startDate, endDate, gsdm, fgsdm);
3851   - }else{
3852   - listReal=scheduleRealInfoRepository.scheduleByDateAndLineTj2(xlbm, startDate, endDate);
3853   - }
3854   - List<Singledata> list=new ArrayList<Singledata>();
3855   - List<Singledata> list_=new ArrayList<Singledata>();
3856   - if(tjtype.equals("jsy")){
3857   - List<String> objList = new ArrayList<String>();
3858   - objList.add(startDate);
3859   - objList.add(endDate);
3860   - //油统计
3861   - String sql="select r.j_gh, r.xl_bm,r.cl_zbh,r.fgs_bm"
3862   - + " from bsth_c_s_sp_info_real r where "
3863   - + " r.schedule_date_str >= ?"
3864   - + " and r.schedule_date_str <= ?";
3865   - if(xlbm.length() != 0){
3866   - sql += " and r.xl_bm = ?";
3867   - objList.add(xlbm);
3868   - }
3869   - if(gsdm.length() != 0){
3870   - sql += " and r.gs_bm = ?";
3871   - objList.add(gsdm);
3872   - }
3873   - if(fgsdm.length() != 0){
3874   - sql += " and r.fgs_bm = ?";
3875   - objList.add(fgsdm);
3876   - }
3877   - sql += " group by r.j_gh,r.xl_bm,r.cl_zbh,r.fgs_bm order by r.xl_bm,r.cl_zbh";
3878   -
3879   - list = jdbcTemplate.query(sql, objList.toArray(), new RowMapper<Singledata>() {
3880   - @Override
3881   - public Singledata mapRow(ResultSet arg0, int arg1) throws SQLException {
3882   - Singledata sin = new Singledata();
3883   - sin.setxL(arg0.getString("xl_bm"));
3884   - sin.setJsy(arg0.getString("j_gh"));
3885   - sin.setClzbh(arg0.getString("cl_zbh"));
3886   - sin.setgS(arg0.getString("fgs_bm"));
3887   - return sin;
3888   - }
3889   - });
3890   -
3891   - List<String> objList2 = new ArrayList<String>();
3892   - List<String> tempList2 = new ArrayList<String>();
3893   - tempList2.add(startDate);
3894   - tempList2.add(endDate);
3895   - String linesql="";
3896   - if(!xlbm.equals("")){
3897   - linesql +=" and xlbm = ?";
3898   - tempList2.add(xlbm);
3899   - }
3900   - if(!gsdm.equals("")){
3901   - linesql +=" and ssgsdm = ?";
3902   - tempList2.add(gsdm);
3903   - }
3904   - if(!fgsdm.equals("")){
3905   - linesql +=" and fgsdm = ?";
3906   - tempList2.add(fgsdm);
3907   - }
3908   -
3909   - for(int i = 0; i < 2; i++){ // sql中使用两次重复参数
3910   - for(String s : tempList2){
3911   - objList2.add(s);
3912   - }
3913   - }
3914   -
3915   - String nysql="SELECT 'yh' as type,xlbm,nbbm,jsy,sum(jzl*1000)/1000 as jzl,"
3916   - + " sum(yh*1000)/1000 as yh,"
3917   - + " sum(sh*1000)/1000 as sh FROM "
3918   - + "bsth_c_ylb where rq >= ? "
3919   - + " and rq <= ? " +linesql
3920   - + " group by xlbm ,nbbm,jsy "
3921   - + " union SELECT 'dh' as type,xlbm,nbbm,jsy, "
3922   - + " sum(cdl*1000)/1000 as jzl,sum(hd*1000)/1000 as yh,"
3923   - + " sum(sh * 1000) / 1000 AS sh"
3924   - + " FROM bsth_c_dlb where rq >= ? "
3925   - + " and rq <= ? " +linesql
3926   - + " group by xlbm ,nbbm,jsy" ;
3927   -
3928   - List<Singledata> listNy = jdbcTemplate.query(nysql, objList2.toArray(), new RowMapper<Singledata>() {
3929   - @Override
3930   - public Singledata mapRow(ResultSet arg0, int arg1) throws SQLException {
3931   - Singledata sin = new Singledata();
3932   - sin.setxL(arg0.getString("xlbm"));
3933   - sin.setJsy(arg0.getString("jsy"));
3934   - sin.setClzbh(arg0.getString("nbbm"));
3935   - sin.setJzl(arg0.getString("jzl"));
3936   - sin.setHyl(arg0.getString("yh"));
3937   - sin.setUnyyyl(arg0.getString("sh"));
3938   - return sin;
3939   - }
3940   - });
3941   - //统计油,电表中手动添加的或者有加注没里程的数据
3942   - for (int i = 0; i < listNy.size(); i++) {
3943   - Singledata sin_=listNy.get(i);
3944   - String jsy=sin_.getJsy();
3945   - String line=sin_.getxL();
3946   - String clzbh=sin_.getClzbh();
3947   - boolean fages=true;
3948   - for (int j = 0; j < list.size(); j++) {
3949   - Singledata sin=list.get(j);
3950   - String jsy_=sin.getJsy();
3951   - String line_=sin.getxL();
3952   - String clzbh_=sin.getClzbh();
3953   - if(jsy.equals(jsy_)
3954   - &&line.equals(line_)
3955   - &&clzbh.equals(clzbh_)){
3956   - fages=false;
3957   - }
3958   - }
3959   - if(fages){
3960   - Singledata s=new Singledata();
3961   - s.setJsy(jsy);
3962   - s.setjName(BasicData.allPerson.get(gsdm+"-"+jsy));
3963   - s.setClzbh(clzbh);
3964   - s.setSgh("");
3965   - s.setsName("");
3966   - s.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
3967   - s.setxL(line);
3968   - s.setXlmc(BasicData.lineCodeAllNameMap.get(line));
3969   - s.setJzl(sin_.getJzl());
3970   - s.setHyl(sin_.getHyl());
3971   - s.setUnyyyl(sin_.getUnyyyl());
3972   - s.setJhlc("0.0");
3973   - s.setEmptMileage("0.0");
3974   - s.setJhjl("0.0");
3975   - if(startDate.equals(endDate))
3976   - s.setrQ(startDate);
3977   - else
3978   - s.setrQ(startDate+"-"+endDate);
3979   -
3980   - list_.add(s);
3981   - }
3982   - }
3983   - for (int i= 0; i < list.size(); i++) {
3984   - Singledata sin=list.get(i);
3985   - String jsy=sin.getJsy();
3986   - String line=sin.getxL();
3987   - String clzbh=sin.getClzbh();
3988   - double jzl=0.0;
3989   - double yh=0.0;
3990   - double sh=0.0;
3991   - for (int j = 0; j < listNy.size(); j++) {
3992   - Singledata y=listNy.get(j);
3993   - if(y.getJsy().equals(jsy)
3994   - &&y.getClzbh().equals(clzbh)
3995   - &&y.getxL().equals(line)){
3996   - jzl=Arith.add(jzl, y.getJzl());
3997   - yh=Arith.add(yh, y.getHyl());
3998   - sh=Arith.add(sh, y.getUnyyyl());
3999   - }
4000   - }
4001   - sin.setHyl(String.valueOf(yh));
4002   - sin.setJzl(String.valueOf(jzl));
4003   - sin.setUnyyyl(String.valueOf(sh));
4004   -
4005   - List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
4006   - List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
4007   - for (int j = 0; j < listReal.size(); j++) {
4008   - ScheduleRealInfo s=listReal.get(j);
4009   - if(s.getjGh().equals(jsy)
4010   - && s.getClZbh().equals(clzbh)
4011   - &&s.getXlBm().equals(line)){
4012   - newList.add(s);
4013   - Set<ChildTaskPlan> cts = s.getcTasks();
4014   - if(cts != null && cts.size() > 0){
4015   - newList_.add(s);
4016   - }else{
4017   - if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
4018   - newList_.add(s);
4019   - }
4020   - }
4021   - }
4022   - }
4023   - double jhgl=culateMileageService.culateJhgl(newList);
4024   - double jhjcc=culateMileageService.culateJhJccgl(newList);
4025   - double yygl=culateMileageService.culateSjgl(newList_);
4026   - double ljgl=culateMileageService.culateLjgl(newList_);
4027   - double ksgl=culateMileageService.culateKsgl(newList_);
4028   - double jcgl=culateMileageService.culateJccgl(newList_);
4029   -
4030   - double zyygl=Arith.add(yygl, ljgl);
4031   - double zksgl=Arith.add(ksgl, jcgl);
4032   - sin.setJhlc(String.valueOf(Arith.add(zyygl,zksgl)));
4033   - sin.setEmptMileage(String.valueOf(zksgl));
4034   - sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc)));
4035   - if(newList.size()>0){
4036   - sin.setXlmc(newList.get(0).getXlName());
4037   - sin.setjName(newList.get(0).getjName());
4038   - }else{
4039   - sin.setXlmc(BasicData.lineCodeAllNameMap.get(line));
4040   - sin.setjName(BasicData.allPerson.get(gsdm+"-"+jsy));
4041   -
4042   - }
4043   - if(startDate.equals(endDate))
4044   - sin.setrQ(startDate);
4045   - else
4046   - sin.setrQ(startDate+"-"+endDate);
4047   -// sin.setjName(BasicData.allPerson.get(gsdm+"-"+jsy));
4048   - sin.setSgh("");
4049   - sin.setsName("");
4050   - sin.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
4051   - list_.add(sin);
4052   -
4053   - }
4054   - }else{
4055   - List<String> objList3 = new ArrayList<String>();
4056   - objList3.add(startDate);
4057   - objList3.add(endDate);
4058   - String sql="select r.s_gh,r.s_name, "
4059   - + " r.xl_bm,r.cl_zbh,r.gs_bm,r.fgs_bm"
4060   - + " from bsth_c_s_sp_info_real r where "
4061   - + " r.schedule_date_str >= ?"
4062   - + " schedule_date_str <= ?"
4063   - + " and r.s_gh !='' and r.s_gh is not null ";
4064   - if(!xlbm.equals("")){
4065   - sql += " and r.xl_bm = ?";
4066   - objList3.add(xlbm);
4067   - }
4068   - if(!gsdm.equals("")){
4069   - sql += " and r.gs_bm = ?";
4070   - objList3.add(gsdm);
4071   - }
4072   - if(!fgsdm.equals("")){
4073   - sql += " and r.fgs_bm = ?";
4074   - objList3.add(fgsdm);
4075   - }
4076   - sql += " group by r.s_gh,r.s_name,"
4077   - + " r.xl_bm,r.cl_zbh,r.gs_bm,r.fgs_bm order by r.xl_bm,r.cl_zbh";
4078   -
4079   - list = jdbcTemplate.query(sql, objList3.toArray(), new RowMapper<Singledata>() {
4080   - //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
4081   - @Override
4082   - public Singledata mapRow(ResultSet arg0, int arg1) throws SQLException {
4083   - Singledata sin = new Singledata();
4084   -// sin.setrQ(startDate);
4085   - sin.setxL(arg0.getString("xl_bm"));
4086   - sin.setClzbh(arg0.getString("cl_zbh"));
4087   - sin.setSgh(arg0.getString("s_gh"));
4088   - sin.setsName(arg0.getString("s_name"));
4089   - sin.setgS(arg0.getString("fgs_bm"));
4090   - return sin;
4091   - }
4092   - });
4093   -
4094   - String spy="";
4095   - if(map.get("map")!=null){
4096   - spy=map.get("spy").toString();
4097   - }
4098   - for (int i = 0; i < list.size(); i++) {
4099   - Singledata sin=list.get(i);
4100   - sin.setrQ(startDate+"-"+endDate);
4101   - String jsy=sin.getSgh();
4102   - String line=sin.getxL();
4103   - String clzbh=sin.getClzbh();
4104   - List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
4105   - List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
4106   -
4107   - for (int j = 0; j < listReal.size(); j++) {
4108   - ScheduleRealInfo s=listReal.get(j);
4109   - if(s.getsGh().equals(jsy) && s.getClZbh().equals(clzbh)
4110   - &&s.getXlBm().equals(line)){
4111   - newList.add(s);
4112   - Set<ChildTaskPlan> cts = s.getcTasks();
4113   - if(cts != null && cts.size() > 0){
4114   - newList_.add(s);
4115   - }else{
4116   - if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
4117   - newList_.add(s);
4118   - }
4119   - }
4120   - }
4121   - }
4122   - double jhgl=culateMileageService.culateJhgl(newList);;
4123   - double jhjcc=culateMileageService.culateJhJccgl(newList);
4124   - double yygl=0.0;
4125   - double ljgl=0.0;
4126   - double zksgl=0.0;
4127   - if(spy.equals("zrw")){
4128   - yygl=culateMileageService.culateSjgl_spy(newList_);
4129   - ljgl=culateMileageService.culateLjgl_spy(newList_);
4130   - zksgl=culateMileageService.culateSjfyylc_spy(newList_);
4131   - }else{
4132   - yygl=culateMileageService.culateSjgl(newList_);
4133   - ljgl=culateMileageService.culateLjgl(newList_);
4134   - double ksgl=culateMileageService.culateKsgl(newList_);
4135   - double jcgl=culateMileageService.culateJccgl(newList_);
4136   - zksgl=Arith.add(ksgl, jcgl);
4137   - }
4138   - double zyygl=Arith.add(yygl, ljgl);
4139   - sin.setJhlc(String.valueOf(Arith.add(zyygl,zksgl)));
4140   - sin.setEmptMileage(String.valueOf(zksgl));
4141   - sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc)));
4142   - if(newList.size()>0)
4143   - sin.setXlmc(newList.get(0).getXlName());
4144   - else
4145   - sin.setXlmc(BasicData.lineCodeAllNameMap.get(line));
4146   - sin.setClzbh(clzbh);
4147   - sin.setJsy("");
4148   - sin.setjName("");
4149   - sin.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
4150   - sin.setHyl("");
4151   - sin.setJzl("");
4152   - sin.setUnyyyl("");
4153   - list_.add(sin);
4154   - }
4155   - }
4156   -
4157   -
4158   -
4159   - if (type.equals("export")) {
4160   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
4161   - ReportUtils ee = new ReportUtils();
4162   -
4163   - List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
4164   - int i = 1;
4165   - for (Singledata l : list_) {
4166   - Map<String, Object> m = new HashMap<String, Object>();
4167   - m.put("i", i);
4168   - m.put("rQ", l.getrQ());
4169   - m.put("gS", l.getgS());
4170   - m.put("xL", l.getXlmc());
4171   - m.put("clzbh", l.getClzbh());
4172   - m.put("jsy", l.getJsy());
4173   - m.put("jName", l.getjName());
4174   - m.put("sgh", l.getSgh());
4175   - m.put("sName", l.getsName());
4176   - m.put("jhlc", l.getJhlc());
4177   - m.put("emptMileage", l.getEmptMileage());
4178   - m.put("hyl", l.getHyl());
4179   - m.put("jzl", l.getJzl());
4180   - m.put("unyyyl", l.getUnyyyl());
4181   - m.put("jhjl", l.getJhjl());
4182   - resList.add(m);
4183   -
4184   - i++;
4185   - }
4186   -
4187   - listI.add(resList.iterator());
4188   - try {
4189   - String exportDate="";
4190   - if(startDate.equals(endDate)){
4191   - exportDate =sdfSimple.format(sdfMonth.parse(startDate)) ;
4192   - }else{
4193   - exportDate =sdfSimple.format(sdfMonth.parse(startDate))+"-"+sdfSimple.format(sdfMonth.parse(endDate)) ;
4194   - }
4195   - String lineName = "";
4196   - if(map.containsKey("lineName"))
4197   - lineName = map.get("lineName").toString();
4198   -
4199   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
4200   - ee.excelReplace(listI, new Object[] { map }, path + "mould/singledata.xls",
4201   - path + "export/" +exportDate
4202   - + "-" + lineName + "-路单统计.xls");
4203   - } catch (ParseException e) {
4204   - e.printStackTrace();
4205   - }
4206   - }
4207   - return list_;
4208   - }
4209   -
4210   - @Override
4211   - public List<Map<String, Object>> singleEnergy(Map<String, Object> map) {
4212   - // TODO Auto-generated method stub
4213   - Map<String, Map<String,Object>> mm=new HashMap<String, Map<String,Object>>();
4214   -
4215   - String gsdm="";
4216   - if(map.get("gs")!=null){
4217   - gsdm=map.get("gs").toString();
4218   - }
4219   - String fgsdm="";
4220   - if(map.get("fgs")!=null){
4221   - fgsdm=map.get("fgs").toString();
4222   - }
4223   - String energy="";
4224   - if(map.get("energy")!=null){
4225   - energy=map.get("energy").toString();
4226   - }
4227   - String xlbm="";
4228   - if(map.get("line")!=null){
4229   - xlbm=map.get("line").toString().trim();
4230   - }
4231   - String date = map.get("date").toString();
4232   -
4233   - List<ScheduleRealInfo> listReal=new ArrayList<ScheduleRealInfo>();
4234   - if(xlbm.equals("")){
4235   - listReal=scheduleRealInfoRepository.scheduleByDateAndLineByGs_(gsdm, fgsdm,date);
4236   - }else{
4237   - listReal=scheduleRealInfoRepository.scheduleByDateAndLineQp(xlbm, date);
4238   - }
4239   -
4240   - List<String> objList = new ArrayList<String>();
4241   - objList.add(date);
4242   - String sql="select r.j_gh, r.xl_bm,r.cl_zbh,r.lp_name "
4243   - + " from bsth_c_s_sp_info_real r where "
4244   - + " r.schedule_date_str = ?";
4245   - if(xlbm.length() != 0){
4246   - sql += " and r.xl_bm = ?";
4247   - objList.add(xlbm);
4248   - }
4249   - if(gsdm.length() != 0){
4250   - sql += " and r.gs_bm = ?";
4251   - objList.add(gsdm);
4252   - }
4253   - if(fgsdm.length() != 0){
4254   - sql += " and r.fgs_bm = ?";
4255   - objList.add(fgsdm);
4256   - }
4257   - sql += " group by r.j_gh,r.xl_bm,r.cl_zbh,r.lp_name order by r.xl_bm,r.cl_zbh,r.lp_name";
4258   -
4259   -
4260   - List<Map<String, Object>> list = jdbcTemplate.query(sql, objList.toArray(), new RowMapper<Map<String,Object>>() {
4261   - @Override
4262   - public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
4263   - Map<String, Object> m=new HashMap<String, Object>();
4264   - m.put("jGh", arg0.getString("j_gh"));
4265   - m.put("xlBm", arg0.getString("xl_bm"));
4266   - m.put("clZbh", arg0.getString("cl_zbh"));
4267   - m.put("lpName", arg0.getString("lp_name"));
4268   - return m;
4269   - }
4270   - });
4271   -
4272   - for (int i = 0; i < list.size(); i++) {
4273   - Map<String, Object> m=list.get(i);
4274   - String jGh=m.get("jGh").toString();
4275   - String xlBm=m.get("xlBm").toString();
4276   - String clZbh=m.get("clZbh").toString();
4277   - String lpName=m.get("lpName").toString();
4278   - List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
4279   - List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
4280   - String sGh="";
4281   - String sName="";
4282   - String jName="";
4283   - String xlName="";
4284   - for (int j = 0; j < listReal.size(); j++) {
4285   - ScheduleRealInfo s=listReal.get(j);
4286   - if(s.getjGh().equals(jGh)
4287   - && s.getClZbh().equals(clZbh)
4288   - &&s.getXlBm().equals(xlBm)
4289   - &&s.getLpName().equals(lpName)){
4290   - newList.add(s);
4291   - if(jName.equals("")){
4292   - jName=s.getjName();
4293   - xlName=s.getXlName();
4294   - }
4295   - if(sGh.equals("")){
4296   - if(!StringUtils.isEmpty(s.getsGh())){
4297   - sGh=s.getsGh();
4298   - sName=s.getsName();
4299   - }
4300   - }
4301   - Set<ChildTaskPlan> cts = s.getcTasks();
4302   - if(cts != null && cts.size() > 0){
4303   - newList_.add(s);
4304   - }else{
4305   - if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
4306   - newList_.add(s);
4307   - }
4308   - }
4309   - }
4310   - }
4311   - double yygl=culateMileageService.culateSjgl(newList_);
4312   - double ljgl=culateMileageService.culateLjgl(newList_);
4313   - double ksgl=culateMileageService.culateKsgl(newList_);
4314   - double jcgl=culateMileageService.culateJccgl(newList_);
4315   - double zyygl=Arith.add(yygl, ljgl);
4316   - double zksgl=Arith.add(ksgl, jcgl);
4317   - double zlc=Arith.add(zyygl, zksgl);
4318   - Map<String, Object> m_=new HashMap<String, Object>();
4319   - m_.put("zlc", zlc);
4320   - m_.put("zksgl", zksgl);
4321   - m_.put("sGh", sGh);
4322   - m_.put("sName", sName);
4323   - m_.put("jGh", jGh);
4324   - m_.put("jName", jName);
4325   - m_.put("xlName", xlName);
4326   - mm.put(xlBm+jGh+clZbh+lpName, m_);
4327   - }
4328   - List<Map<String, Object>> listAll=new ArrayList<Map<String,Object>>();
4329   - if(energy.equals("1")){
4330   - List<String> objList1 = new ArrayList<String>();
4331   - objList1.add(date);
4332   - //油统计
4333   - String ylbSql="select ssgsdm,fgsdm,xlbm,nbbm,jsy,ifnull(lp,'') as lp,czlc,"
4334   - + " czyl,jzl,jzlc,jzyl,yh,sh,shyy,rylx,ns,zlc,linename,jname "
4335   - + " from bsth_c_ylb where rq = ?";
4336   -
4337   - if(xlbm.length() != 0){
4338   - ylbSql += " and xlbm = ?";
4339   - objList1.add(xlbm);
4340   - }
4341   - if(gsdm.length() != 0){
4342   - ylbSql += " and ssgsdm = ?";
4343   - objList1.add(gsdm);
4344   - }
4345   - if(fgsdm.length() != 0){
4346   - ylbSql += " and fgsdm = ?";
4347   - objList1.add(fgsdm);
4348   - }
4349   - ylbSql += " order by xlbm,nbbm,jcsx";
4350   - listAll = jdbcTemplate.query(ylbSql, objList1.toArray(), new RowMapper<Map<String,Object>>() {
4351   - @Override
4352   - public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
4353   - Map<String, Object> m=new HashMap<String, Object>();
4354   - m.put("ssgsdm", arg0.getString("ssgsdm"));
4355   - m.put("fgsdm", arg0.getString("fgsdm"));
4356   - m.put("xlbm", arg0.getString("xlbm"));
4357   - m.put("nbbm", arg0.getString("nbbm"));
4358   - m.put("jsy", arg0.getString("jsy"));
4359   - m.put("lp", arg0.getString("lp"));
4360   - m.put("czlc", arg0.getDouble("czlc"));
4361   - m.put("czyl", arg0.getDouble("czyl"));
4362   - m.put("jzl", arg0.getDouble("jzl"));
4363   - m.put("jzlc", arg0.getDouble("jzlc"));
4364   - m.put("jzyl", arg0.getDouble("jzyl"));
4365   - m.put("yh", arg0.getDouble("yh"));
4366   - m.put("sh", arg0.getDouble("sh"));
4367   - m.put("shyy", arg0.getString("shyy"));
4368   - m.put("rylx", arg0.getString("rylx"));
4369   - m.put("ns", arg0.getDouble("ns"));
4370   - m.put("zlc", arg0.getDouble("zlc"));
4371   - m.put("linename", arg0.getString("linename"));
4372   - m.put("jname", arg0.getString("jname"));
4373   - if(arg0.getDouble("zlc")==0){
4374   - m.put("bglyh", "0.000");
4375   - }else{
4376   - DecimalFormat df = new DecimalFormat("0.000");
4377   - m.put("bglyh", df.format(arg0.getDouble("yh")/arg0.getDouble("zlc")*100));
4378   - }
4379   - m.put("gsName", BasicData.businessCodeNameMap.get(arg0.getString("ssgsdm")));
4380   - m.put("fgsName", BasicData.businessFgsCodeNameMap.get(arg0.getString("fgsdm")+"_"+arg0.getString("ssgsdm")));
4381   - return m;
4382   - }
4383   - });
4384   -
4385   - }else{
4386   - List<String> objList2 = new ArrayList<String>();
4387   - objList2.add(date);
4388   - //电统计
4389   - String dlbSql="select ssgsdm,fgsdm,xlbm,nbbm,jsy,ifnull(lp,'') as lp,czlc,"
4390   - + " czcd,cdl,jzlc,jzcd,hd,sh,shyy,ns,zlc,linename,jname "
4391   - + " from bsth_c_dlb where rq = ?";
4392   - if(xlbm.length() != 0){
4393   - dlbSql += " and xlbm = ?";
4394   - objList2.add(xlbm);
4395   - }
4396   - if(gsdm.length() != 0){
4397   - dlbSql += " and ssgsdm = ?";
4398   - objList2.add(gsdm);
4399   - }
4400   - if(fgsdm.length() != 0){
4401   - dlbSql += " and fgsdm = ?";
4402   - objList2.add(fgsdm);
4403   - }
4404   - dlbSql += " order by xlbm,nbbm,jcsx";
4405   - listAll = jdbcTemplate.query(dlbSql, objList2.toArray(), new RowMapper<Map<String,Object>>() {
4406   - @Override
4407   - public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
4408   - Map<String, Object> m=new HashMap<String, Object>();
4409   - m.put("ssgsdm", arg0.getString("ssgsdm"));
4410   - m.put("fgsdm", arg0.getString("fgsdm"));
4411   - m.put("xlbm", arg0.getString("xlbm"));
4412   - m.put("nbbm", arg0.getString("nbbm"));
4413   - m.put("jsy", arg0.getString("jsy"));
4414   - m.put("lp", arg0.getString("lp"));
4415   - m.put("czlc", arg0.getDouble("czlc"));
4416   - m.put("czcd", arg0.getDouble("czcd"));
4417   - m.put("cdl", arg0.getDouble("cdl"));
4418   - m.put("jzlc", arg0.getDouble("jzlc"));
4419   - m.put("jzcd", arg0.getDouble("jzcd"));
4420   - m.put("hd", arg0.getDouble("hd"));
4421   - m.put("sh", arg0.getDouble("sh"));
4422   - m.put("shyy", arg0.getString("shyy"));
4423   - m.put("linename", arg0.getString("linename"));
4424   - m.put("jname", arg0.getString("jname"));
4425   - m.put("zlc", arg0.getDouble("zlc"));
4426   - //电量统计中添加默认中 燃油类型,尿素,保证导出模板相同
4427   - m.put("rylx", "");
4428   - m.put("ns", "0");
4429   - if(arg0.getDouble("zlc")==0){
4430   - m.put("bglyh", "0.000");
4431   - }else{
4432   - DecimalFormat df = new DecimalFormat("0.000");
4433   - m.put("bglyh", df.format(arg0.getDouble("hd")/arg0.getDouble("zlc")*100));
4434   - }
4435   - m.put("gsName", BasicData.businessCodeNameMap.get(arg0.getString("ssgsdm")));
4436   - m.put("fgsName", BasicData.businessFgsCodeNameMap.get(arg0.getString("fgsdm")+"_"+arg0.getString("ssgsdm")));
4437   - return m;
4438   - }
4439   - });
4440   - }
4441   -
4442   - Map<String, Object> dMap=new HashMap<>();
4443   - dMap.put("dGroup_eq", "oilType");
4444   - Iterator<Dictionary> it= dictionaryService.list(dMap).iterator();
4445   - while (it.hasNext()) {
4446   - Dictionary d=it.next();
4447   - dMap.put(d.getdCode(), d.getdName());
4448   - }
4449   - for (int i = 0; i < listAll.size(); i++) {
4450   - Map<String, Object> m=listAll.get(i);
4451   - String jGh=m.get("jsy").toString();
4452   - String xlBm=m.get("xlbm").toString();
4453   - String clZbh=m.get("nbbm").toString();
4454   - String lpName=m.get("lp")==null?"":m.get("lp").toString();
4455   - String shyy=m.get("shyy")==null?"":m.get("shyy").toString();
4456   - String rylx=m.get("rylx")==null?"":m.get("rylx").toString();
4457   - if(dMap.get(rylx)==null){
4458   - rylx="";
4459   - }else{
4460   - rylx=dMap.get(rylx).toString();
4461   - }
4462   - m.put("rylx", rylx);
4463   - m.put("shyy", getShyy(shyy));
4464   - m.put("date", date);
4465   -
4466   - if(mm.get(xlBm+jGh+clZbh+lpName)!=null){
4467   - Map<String, Object> m_=mm.get(xlBm+jGh+clZbh+lpName);
4468   - m.put("zlcAll", m_.get("zlc")==null?"":m_.get("zlc").toString());
4469   - m.put("zksgl", m_.get("zksgl")==null?"":m_.get("zksgl").toString());
4470   - m.put("sGh", m_.get("sGh")==null?"":m_.get("sGh").toString());
4471   - m.put("sName", m_.get("sName")==null?"":m_.get("sName").toString());
4472   - m.put("jname", m_.get("jName")==null?"":m_.get("jName").toString());
4473   - m.put("linename", m_.get("xlName")==null?"":m_.get("xlName").toString());
4474   - }else{
4475   - m.put("zlcAll", "");
4476   - m.put("zksgl", "");
4477   - m.put("sGh", "");
4478   - m.put("sName", "");
4479   - //油量表中历史数据和手动添加数据没有储存线路名字与驾驶员名字,是null的字段则根据编号查找
4480   - if(m.get("linename")==null){
4481   - m.put("linename", BasicData.lineCode2NameMap.get(xlBm));
4482   - }
4483   - if(m.get("jname")==null){
4484   - m.put("jname", BasicData.allPerson.get(m.get("ssgsdm")+"-"+jGh));
4485   - }
4486   - }
4487   - }
4488   -
4489   - if(map.get("type").toString().equals("export")){
4490   - List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
4491   - Map<String, Object> m = new HashMap<String, Object>();
4492   - m.put("date", date);
4493   - ReportUtils ee = new ReportUtils();
4494   - try {
4495   - listI.add(listAll.iterator());
4496   - if(energy.equals("1")){
4497   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
4498   - ee.excelReplace(listI, new Object[]{m}, path + "mould/energy_ylb.xls",
4499   - path + "export/"+date+"路单油量统计表.xls");
4500   - }else{
4501   - String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
4502   - ee.excelReplace(listI, new Object[]{m}, path + "mould/energy_dlb.xls",
4503   - path + "export/"+date+"路单电量统计表.xls");
4504   - }
4505   -
4506   - } catch (Exception e) {
4507   - // TODO: handle exception
4508   - e.printStackTrace();
4509   - }
4510   - }
4511   - return listAll;
4512   - }
4513   -
4514   - public Map<String,Object> calcDetailMonthlyE(Map<String, Object> map){
4515   -
4516   -// List<List<String>> list = calcWaybillService.calcDetailMonthly(map);
4517   - List<List<String>> list = calcWaybillService.calcDetailMonthlyNew(map);
4518   -
4519   - Map<String, Object> resultMap = new HashMap<String, Object>();
4520   - try {
4521   - String name = map.get("name").toString();
4522   - String type = map.get("statisticalObj").toString();
4523   - if(list.size()>0){
4524   - ReportUtils ee = new ReportUtils();
4525   - ee.createFlie(list,name,type);
4526   - }
4527   -
4528   - resultMap.put("status", ResponseCode.SUCCESS);
4529   - } catch (Exception e) {
4530   - resultMap.put("status", ResponseCode.ERROR);
4531   - logger.error("save erro.", e);
4532   - }
4533   - return resultMap;
4534   - }
4535   -
4536   - private String getShyy(String node){
4537   - String shyy ="无";
4538   - if(!node.equals("")){
4539   - if(node.equals("1")){shyy="票务用油";}
4540   - else if(node.equals("2")){shyy="保养用油";}
4541   - else if(node.equals("3")){shyy="报废车用油";}
4542   - else if(node.equals("4")){shyy="其它用油";}
4543   - else if(node.equals("5")){shyy="人保部";}
4544   - else if(node.equals("6")){shyy="车队";}
4545   - else if(node.equals("7")){shyy="车间(高保)";}
4546   - else if(node.equals("8")){shyy="车间(小修)";}
4547   - else{shyy ="无";}
4548   - }
4549   - return shyy;
4550   - }
4551   -
4552   -}
4553   -
4554   -class ComparableAcuals implements Comparator<ScheduleRealInfo>{
4555   -
4556   - @Override
4557   - public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
4558   - // TODO Auto-generated method stub
4559   - return o1.getFcsjActualTime().compareTo(o2.getFcsjActualTime());
4560   - }
4561   -
  1 +package com.bsth.service.report.impl;
  2 +import com.bsth.common.ResponseCode;
  3 +import com.bsth.data.BasicData;
  4 +import com.bsth.entity.Business;
  5 +import com.bsth.entity.Line;
  6 +import com.bsth.entity.Personnel;
  7 +import com.bsth.entity.StationRoute;
  8 +import com.bsth.entity.excep.ArrivalInfo;
  9 +import com.bsth.entity.mcy_forms.Singledata;
  10 +import com.bsth.entity.oil.Dlb;
  11 +import com.bsth.entity.oil.Ylb;
  12 +import com.bsth.entity.realcontrol.ChildTaskPlan;
  13 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  14 +import com.bsth.entity.sys.Dictionary;
  15 +import com.bsth.entity.sys.Interval;
  16 +import com.bsth.repository.BusinessRepository;
  17 +import com.bsth.repository.LineRepository;
  18 +import com.bsth.repository.LsStationRouteRepository;
  19 +import com.bsth.repository.StationRouteRepository;
  20 +import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
  21 +import com.bsth.service.LineService;
  22 +import com.bsth.service.calc.CalcWaybillService;
  23 +import com.bsth.service.report.CulateMileageService;
  24 +import com.bsth.service.report.ReportService;
  25 +import com.bsth.service.sys.DictionaryService;
  26 +import com.bsth.util.Arith;
  27 +import com.bsth.util.ComparableChild;
  28 +import com.bsth.util.ComparableJob;
  29 +import com.bsth.util.ReportUtils;
  30 +import com.bsth.util.db.DBUtils_MS;
  31 +
  32 +import org.apache.commons.lang.StringUtils;
  33 +import org.slf4j.Logger;
  34 +import org.slf4j.LoggerFactory;
  35 +import org.springframework.beans.factory.annotation.Autowired;
  36 +import org.springframework.jdbc.core.JdbcTemplate;
  37 +import org.springframework.jdbc.core.RowMapper;
  38 +import org.springframework.stereotype.Service;
  39 +
  40 +import java.math.BigDecimal;
  41 +import java.sql.Connection;
  42 +import java.sql.PreparedStatement;
  43 +import java.sql.ResultSet;
  44 +import java.sql.SQLException;
  45 +import java.text.DecimalFormat;
  46 +import java.text.ParseException;
  47 +import java.text.SimpleDateFormat;
  48 +import java.util.*;
  49 +import java.util.concurrent.atomic.AtomicBoolean;
  50 +
  51 +@Service
  52 +public class ReportServiceImpl implements ReportService{
  53 +
  54 + private static long zgf1 = 6 * 60 + 31,
  55 + zgf2 = 8 * 60 + 30,
  56 + wgf1 = 16 * 60 + 1,
  57 + wgf2 = 18 * 60;
  58 +
  59 + private Logger logger = LoggerFactory.getLogger(this.getClass());
  60 +
  61 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  62 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  63 +
  64 + @Autowired
  65 + JdbcTemplate jdbcTemplate;
  66 +
  67 + @Autowired
  68 + ScheduleRealInfoRepository scheduleRealInfoRepository;
  69 + @Autowired
  70 + StationRouteRepository stationRoutRepository;
  71 + @Autowired
  72 + CulateMileageService culateService;
  73 + @Autowired
  74 + LineService lineService;
  75 + @Autowired
  76 + LineRepository lineRepository;
  77 + @Autowired
  78 + StationRouteRepository stationRouteRepository;
  79 + @Autowired
  80 + LsStationRouteRepository lsStationRouteRepository;
  81 + @Autowired
  82 + CulateMileageService culateMileageService;
  83 + @Autowired
  84 + DictionaryService dictionaryService;
  85 + @Autowired
  86 + CalcWaybillService calcWaybillService;
  87 + @Autowired
  88 + BusinessRepository businessRepository;
  89 +
  90 + /**
  91 + * calcDetailMonthlyE是否正在执行
  92 + */
  93 + private boolean executing = false;
  94 +
  95 + @Override
  96 + public List<ScheduleRealInfo> queryListBczx(String line, String date,String clzbh) {
  97 + // TODO Auto-generated method stub
  98 + List<ScheduleRealInfo> list=scheduleRealInfoRepository.findByDate2(line,date,clzbh);
  99 +
  100 +// jdbcTemplate.query("select * from bsth_c_s_sp_info_real where line=?1 "
  101 +// + "and DATE_FORMAT(schedule_date,'%Y-%m-%d')=?2 and cl_zbl=?3",
  102 +// new Object[]{line,date,clzbh},
  103 +// new RowMapper(){
  104 +// @Override
  105 +// public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
  106 +// ScheduleRealInfo s = new ScheduleRealInfo();
  107 +//// s.
  108 +// return s;
  109 +// }
  110 +// });
  111 +
  112 + return list;
  113 + }
  114 + @Override
  115 + public List<ArrivalInfo> queryListZdxx(String line, String date, String clzbh, String sjfc, String sjdd) {
  116 + // TODO Auto-generated method stub
  117 + List<ArrivalInfo> list=new ArrayList<ArrivalInfo>();
  118 + try {
  119 + String sbbb=BasicData.deviceId2NbbmMap.inverse().get(clzbh);
  120 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  121 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  122 +// Long date1=simpleDateFormat.parse(date+" "+sjfc+":00").getTime();
  123 +// Long date2=simpleDateFormat.parse(date+" "+sjdd+":00").getTime();
  124 + Long date1=simpleDateFormat.parse(sjfc+":00").getTime();
  125 + Long date2=simpleDateFormat.parse(sjdd+":00").getTime();
  126 + Date dates=simpleDateFormat.parse(date+" 00:00:00");
  127 + List<ArrivalInfo> lists=load(line,sbbb,date1,date2,dates,date);
  128 +
  129 + for(int i=0;i<lists.size();i++){
  130 + ArrivalInfo t1=lists.get(i);
  131 + if(t1.getInOut()==0){
  132 + t1.setJzsj(sdf.format(new Date(t1.getTs())));
  133 + for(int j=0;j<lists.size();j++){
  134 + ArrivalInfo t2=lists.get(j);
  135 + if(t2.getInOut()==1 && t2.getDeviceId().equals(t1.getDeviceId()) && t2.getStopNo().equals(t1.getStopNo())){
  136 + t1.setCzsj(sdf.format(new Date(t2.getTs())));
  137 + }
  138 + }
  139 + list.add(t1);
  140 + }
  141 +
  142 + }
  143 +
  144 +
  145 + } catch (ParseException e) {
  146 + // TODO Auto-generated catch block
  147 + e.printStackTrace();
  148 + }
  149 +
  150 + return list;
  151 + }
  152 +
  153 +
  154 + public List<ArrivalInfo> load(String line,String sbbb,Long date1,Long date2,Date dates,String date){
  155 + List<ArrivalInfo> list = null;
  156 + Calendar cal = Calendar.getInstance();
  157 + cal.setTime(dates);
  158 + //周数,表分区字段
  159 + int weeks_year = cal.get(Calendar.WEEK_OF_YEAR);
  160 + int weeks_year_next=weeks_year +1;
  161 + Connection conn = null;
  162 + PreparedStatement ps = null;
  163 + ResultSet rs = null;
  164 + String year=date.substring(0,4);
  165 + String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year in (?, ?) AND line_id=? "
  166 + + " AND ts >= ? AND ts <=? AND device_id=? order by ts";
  167 + try{
  168 + conn = DBUtils_MS.getConnection();
  169 + ps = conn.prepareStatement(sql);
  170 + ps.setInt(1, weeks_year);
  171 + ps.setInt(2, weeks_year_next);
  172 + ps.setString(3,line);
  173 + ps.setLong(4, date1);
  174 + ps.setLong(5, date2);
  175 + ps.setString(6, sbbb);
  176 + rs = ps.executeQuery();
  177 +
  178 + list = resultSet2Set(rs);
  179 + }catch(Exception e){
  180 + logger.error("", e);
  181 + }finally {
  182 + DBUtils_MS.close(rs, ps, conn);
  183 + }
  184 + return list;
  185 + }
  186 +
  187 + public List<ArrivalInfo> resultSet2Set(ResultSet rs) throws SQLException{
  188 + List<ArrivalInfo> list = new ArrayList<>();
  189 +
  190 + ArrivalInfo arr;
  191 + while(rs.next()){
  192 + arr = new ArrivalInfo();
  193 + arr.setDeviceId(rs.getString("device_id"));
  194 + String nbbm=BasicData.deviceId2NbbmMap.get(arr.getDeviceId());
  195 + arr.setNbbm(nbbm);
  196 + arr.setPzh(BasicData.nbbmCompanyPlateMap.get(nbbm));
  197 + if(null == arr.getNbbm()){
  198 + logger.warn("未注册的设备号," + arr.getDeviceId());
  199 + continue;
  200 + }
  201 +
  202 + arr.setTs(rs.getLong("ts"));
  203 + arr.setLineCode(rs.getString("line_id"));
  204 + arr.setUpDown(rs.getInt("up_down"));
  205 + arr.setStopNo(rs.getString("stop_no"));
  206 + arr.setStopName(BasicData.stationCode2NameMap.get(rs.getString("line_id")+"_"+rs.getInt("up_down")+"_"+rs.getString("stop_no")));
  207 + arr.setInOut(rs.getInt("in_out"));
  208 + arr.setCreateDate(rs.getLong("create_timestamp"));
  209 + arr.setWeeksYear(rs.getInt("weeks_year"));
  210 + arr.setEnable(true);
  211 +
  212 + list.add(arr);
  213 + }
  214 + return list;
  215 + }
  216 + @Override
  217 + public List<ArrivalInfo> queryListClzd(String line, String zd, String zdlx, String fcsj, String ddsj) {
  218 + // TODO Auto-generated method stub
  219 + List<ArrivalInfo> list=new ArrayList<ArrivalInfo>();
  220 + try {
  221 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  222 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  223 + Long date1=simpleDateFormat.parse(fcsj+":00").getTime();
  224 + Long date2=simpleDateFormat.parse(ddsj+":00").getTime();
  225 + Date dates1=simpleDateFormat.parse(fcsj+":00");
  226 + Date dates2=simpleDateFormat.parse(ddsj+":00");
  227 + List<ArrivalInfo> lists = new ArrayList<ArrivalInfo>();
  228 + if(zd.contains(",")){
  229 + String[] split = zd.split(",");
  230 + for(String s : split){
  231 + lists.addAll(load2(line,date1,date2,dates1,dates2,s,zdlx,fcsj));
  232 + }
  233 + } else {
  234 + lists.addAll(load2(line,date1,date2,dates1,dates2,zd,zdlx,fcsj));
  235 + }
  236 +
  237 + for(int i=0;i<lists.size();i++){
  238 + ArrivalInfo t1=lists.get(i);
  239 + if(t1.getInOut()==0){
  240 + t1.setJzsj(sdf.format(new Date(t1.getTs())));
  241 + for(int j=0;j<lists.size();j++){
  242 + ArrivalInfo t2=lists.get(j);
  243 + if(t2.getDeviceId().equals(t1.getDeviceId())
  244 + && t2.getStopNo().equals(t1.getStopNo())
  245 + && t2.getTs()>t1.getTs()){
  246 + if(t2.getInOut() == 1){//下一个同站同车是出站信号则获取出站时间
  247 + t1.setCzsj(sdf.format(new Date(t2.getTs())));
  248 + break;//下一个同站同车是进站信号则认为出站信号丢失
  249 + } else if(t2.getInOut() == 0){
  250 + break;
  251 + }
  252 + }
  253 + }
  254 + list.add(t1);
  255 + }
  256 +
  257 + }
  258 +
  259 +
  260 + } catch (ParseException e) {
  261 + // TODO Auto-generated catch block
  262 + e.printStackTrace();
  263 + }
  264 +
  265 + return list;
  266 + }
  267 +
  268 +
  269 + public List<ArrivalInfo> load2(String line,Long date1,Long date2,Date dates1,Date dates2,String zd,String zdlx,String fcsj){
  270 + SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy");
  271 + List<ArrivalInfo> list = new ArrayList<ArrivalInfo>();
  272 + Calendar cal = Calendar.getInstance();
  273 + cal.setTime(dates1);
  274 + //周数,表分区字段
  275 + int weeks_year1 = cal.get(Calendar.WEEK_OF_YEAR);
  276 + cal.setTime(dates2);
  277 + int weeks_year2 = cal.get(Calendar.WEEK_OF_YEAR);
  278 + Connection conn = null;
  279 + PreparedStatement ps = null;
  280 + ResultSet rs = null;
  281 + String year=fcsj.substring(0,4);
  282 +
  283 + String year1 = yearFormat.format(dates1);
  284 + String year2 = yearFormat.format(dates2);
  285 + List<Integer> weeksList = new ArrayList<Integer>();
  286 + if(year1.equals(year2)){
  287 + //把每一周的编号加入list,一年最多五十几周。最多循环60次避免意外死循环
  288 + for(int w = 0, weeks_num = weeks_year1; w < 60 && weeks_num <= weeks_year2; w++, weeks_num++){
  289 + weeksList.add(weeks_num);
  290 + }
  291 + } else {
  292 + weeksList.add(weeks_year1);
  293 + weeksList.add(weeks_year2);
  294 + }
  295 +
  296 + String tempStr = "";
  297 + for(int i = 0; i < weeksList.size(); i++){
  298 + tempStr += "?,";
  299 + }
  300 + if(tempStr.length() > 0){
  301 + tempStr = tempStr.substring(0, tempStr.length() - 1);
  302 + }
  303 +
  304 + String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year in ("+tempStr+") "
  305 + + " AND line_id=? AND up_down=? AND stop_no like ? AND ts between ? AND ? order by ts";
  306 + System.out.println(sql);
  307 + try{
  308 + conn = DBUtils_MS.getConnection();
  309 + ps = conn.prepareStatement(sql);
  310 + int no = 1;
  311 + for(;no <= weeksList.size(); no++){
  312 + ps.setInt(no, weeksList.get(no-1));
  313 + }
  314 + ps.setString(no++, line);
  315 + ps.setString(no++, zdlx);
  316 + ps.setString(no++, ""+zd+"%");
  317 + ps.setLong(no++, date1);
  318 + ps.setLong(no++, date2);
  319 + rs = ps.executeQuery();
  320 +
  321 + list = resultSet2Set(rs);
  322 + }catch(Exception e){
  323 + logger.error("", e);
  324 + }finally {
  325 + DBUtils_MS.close(rs, ps, conn);
  326 + }
  327 + return list;
  328 + }
  329 + @Override
  330 + public List<Map<String, String>> sreachZd(String line, int zdlx, String date1, String date2) {
  331 + List<Map<String, String>> list = new ArrayList<>();
  332 + // TODO Auto-generated method stub
  333 + if(date1.length() >= 10 && date1.length() >= 10){
  334 + date1 = date1.substring(0, 10);
  335 + date2 = date2.substring(0, 10);
  336 + List<Object[]> findHistory = lsStationRouteRepository.findHistory(line, zdlx, date1, date2);
  337 + Set<String> tempSet = new HashSet<String>();
  338 + for(Object[] obj : findHistory){
  339 + if(obj[2] != null && obj[2].toString().trim().length() > 0){
  340 + tempSet.add(obj[2].toString().trim());
  341 + }
  342 + }
  343 + for(Object[] obj : findHistory){
  344 + int length = tempSet.toArray().length;
  345 + Map<String, String> reMap = new HashMap<String, String>();
  346 + reMap.put("id", obj[0].toString());
  347 + reMap.put("text", obj[1] + (length > 1 ? (" -版本" + obj[2]) : ""));
  348 + list.add(reMap);
  349 + }
  350 + }
  351 +
  352 + return list;
  353 + }
  354 + @Override
  355 + public List<Object[]> historyMessageCount(String line, String date, String code) {
  356 + // TODO Auto-generated method stub
  357 + List<Object[]> list = scheduleRealInfoRepository.historyMessageCount(line, date, code);
  358 + return list;
  359 + }
  360 + @Override
  361 + public List<Object[]> historyMessageList(String line, String date, String code,String type) {
  362 + // TODO Auto-generated method stub
  363 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  364 +
  365 + List<Object[]> list = scheduleRealInfoRepository.historyMessageList(line, date, code);
  366 + for (Object[] obj : list) {
  367 + if (obj != null) {
  368 + obj[3] = sdf.format(new Date(Long.parseLong(obj[3].toString())));
  369 + }
  370 + }
  371 +
  372 + if (type != null && type.length() != 0 && type.equals("export_msg")) {
  373 + String lineName = BasicData.lineCode2NameMap.get(line);
  374 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  375 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  376 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  377 + Map<String, Object> m = new HashMap<String, Object>();
  378 + ReportUtils ee = new ReportUtils();
  379 + List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
  380 + for (int i = 0; i < list.size(); i++) {
  381 + Map<String, Object> map = new HashMap<String, Object>();
  382 + Object[] obj = list.get(i);
  383 + map.put("num", i + 1);
  384 + map.put("line", obj[0]);
  385 + map.put("clZbh", obj[1]);
  386 + map.put("sender", obj[2]);
  387 + map.put("date", obj[3]);
  388 + map.put("text", obj[4]);
  389 + newList.add(map);
  390 + }
  391 + try {
  392 + listI.add(newList.iterator());
  393 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  394 + ee.excelReplace(listI, new Object[]{m}, path + "mould/message.xls",
  395 + path + "export/" + sdfSimple.format(sdfMonth.parse(date))
  396 + + "-" + lineName + "-调度消息分析.xls");
  397 + } catch (Exception e) {
  398 + // TODO: handle exception
  399 + e.printStackTrace();
  400 + }
  401 + }
  402 + return list;
  403 + }
  404 +
  405 + @Override
  406 + public Map<String, Object> tbodyTime1(String line, String ttinfo) {
  407 + DecimalFormat df = new DecimalFormat("#0.00");
  408 + Map<String, Object> map=new HashMap<String,Object>();
  409 + // TODO Auto-generated method stub
  410 +
  411 + List<String> objList = new ArrayList<String>();
  412 + objList.add(ttinfo);
  413 +
  414 + //查询配车
  415 + String sqlPc=" select count(*) from (select lp, count(*) from"
  416 + + " bsth_c_s_ttinfo_detail where ttinfo = ?"
  417 + + " group by lp ) a";
  418 + //配车
  419 + int pcs=jdbcTemplate.queryForObject(sqlPc, objList.toArray(), Integer.class);
  420 +
  421 +
  422 + String sqlPlan=" SELECT jhlc,bc_type,fcsj FROM bsth_c_s_ttinfo_detail "
  423 + +" where ttinfo = ? ";
  424 +
  425 + //查询班次
  426 + List<Map<String, Object>> listPlan= jdbcTemplate.query(sqlPlan, objList.toArray(),
  427 + new RowMapper<Map<String, Object>>(){
  428 + @Override
  429 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  430 + Map<String, Object> m2=new HashMap<String,Object>();
  431 + m2.put("jhlc", rs.getDouble("jhlc"));
  432 + m2.put("bcType", rs.getString("bc_type"));
  433 + m2.put("fcsj", rs.getString("fcsj"));
  434 + return m2;
  435 + }
  436 + });
  437 +
  438 + //班次
  439 + int zgf_0 = 6*60+31,zgf_1 = 8*60+30,wgf_0 = 16*60+1,wgf_1 = 18*60;
  440 + int qcBc=0,qjBc=0,zqcBc=0,zqjBc=0,wqcBc=0,wqjBc=0;
  441 + double zlc = 0 , yylc = 0,kslc=0;
  442 +
  443 + for (int i = 0; i < listPlan.size(); i++) {
  444 + Map<String, Object> m=listPlan.get(i);
  445 + double jhlc=Double.parseDouble(m.get("jhlc").toString());
  446 + String bcType=m.get("bcType").toString();
  447 + String fcsjs[]=m.get("fcsj").toString().split(":");
  448 +
  449 + zlc +=jhlc;
  450 + if(bcType.equals("in") || bcType.equals("out")){
  451 + kslc+=jhlc;
  452 + }
  453 + else if(bcType.equals("region")){
  454 + qjBc++;
  455 + if((Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) > zgf_0
  456 + && (Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) < zgf_1){
  457 + zqjBc++;
  458 + }else if((Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) > wgf_0
  459 + && (Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) < wgf_1){
  460 + wqjBc++;
  461 + }
  462 +
  463 + yylc+=jhlc;
  464 + }else{
  465 + qcBc ++;
  466 + if((Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) > zgf_0
  467 + && (Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) < zgf_1){
  468 + zqcBc++;
  469 + }else if((Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) > wgf_0
  470 + && (Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1])) < wgf_1){
  471 + wqcBc++;
  472 + }
  473 + yylc +=jhlc;
  474 + }
  475 + }
  476 +
  477 + map.put("pcs", pcs);
  478 + map.put("qcbc", qcBc);
  479 + map.put("qjbc", qjBc);
  480 + map.put("zqcbc", zqcBc);
  481 + map.put("zqjbc", zqjBc);
  482 + map.put("wqcbc", wqcBc);
  483 + map.put("wqjbc", wqjBc);
  484 + map.put("zlc", df.format( zlc));
  485 + map.put("yylc", df.format(yylc));
  486 + map.put("kslc",df.format( kslc));
  487 + //查询里程
  488 + return map;
  489 + }
  490 + @Override
  491 + public Map<String, Object> tbodyTime2(String line, String ttinfo) {
  492 + DecimalFormat df = new DecimalFormat("#0.00");
  493 + // TODO Auto-generated method stub
  494 + //最早营运时间 区分夜宵线
  495 + String minfcsj="02:00";
  496 + List<Line> lineList=lineRepository.findLineByCode(line);
  497 + if(lineList.size()>0){
  498 + List<String> objList = new ArrayList<String>();
  499 + objList.add(lineList.get(0).getId() + "");
  500 + String sql = "select count(*) from bsth_c_line_config where line = ? ";
  501 + if(jdbcTemplate.queryForObject(sql, objList.toArray(), Integer.class) > 0){
  502 + String sqlMinYysj="select start_opt from bsth_c_line_config where "
  503 + + " id = ("
  504 + + "select max(id) from bsth_c_line_config where line = ? "
  505 + + ")";
  506 + minfcsj=jdbcTemplate.queryForObject(sqlMinYysj, objList.toArray(), String.class);
  507 + }
  508 + }
  509 + String[] minSjs = minfcsj.split(":");
  510 + int minSj=Integer.parseInt(minSjs[0])*60+Integer.parseInt(minSjs[1]);
  511 +
  512 + List<String> objList = new ArrayList<String>();
  513 + objList.add(ttinfo);
  514 + objList.add(minfcsj);
  515 + objList.add(ttinfo);
  516 + objList.add(minfcsj);
  517 + //查询时间里程
  518 + String sqlPc=" (SELECT jhlc,fcsj,bc_type,bcsj,lp,2 as xh, ists FROM bsth_c_s_ttinfo_detail "
  519 + + " where ttinfo = ? and fcsj <= ? ) "
  520 + + " union "
  521 + + " (SELECT jhlc,fcsj,bc_type,bcsj,lp,1 as xh, ists FROM bsth_c_s_ttinfo_detail "
  522 + + " where ttinfo = ? and fcsj > ? ) order by lp,xh,fcsj";
  523 + Map<String, Object> map=new HashMap<String,Object>();
  524 + List<Map<String, Object>> list= jdbcTemplate.query(sqlPc, objList.toArray(),
  525 + new RowMapper<Map<String, Object>>(){
  526 + @Override
  527 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  528 + Map<String, Object> m=new HashMap<String,Object>();
  529 + m.put("fcsj", rs.getString("fcsj"));
  530 + m.put("yygl", rs.getString("jhlc")==null?"0":rs.getString("jhlc"));
  531 + m.put("bcType", rs.getString("bc_type"));
  532 + m.put("bcsj", rs.getString("bcsj"));
  533 + m.put("lp", rs.getString("lp"));
  534 + m.put("ists", rs.getObject("ists")==null?"0":rs.getString("ists"));
  535 + return m;
  536 + }
  537 + });
  538 +
  539 + int yysj=0;
  540 + double yycs=0 ,yygl=0;
  541 + String lp ="0";
  542 + int sj=0, bcsj = 0;
  543 + int temp = 0;
  544 + for(int i=0;i<list.size();i++){
  545 + Map<String, Object> m=list.get(i);
  546 + String time=m.get("fcsj").toString();
  547 + String[] times = time.split(":");
  548 + int sjT = Integer.parseInt(times[0])*60+Integer.parseInt(times[1]);
  549 + if(lp.equals(m.get("lp").toString())){
  550 + if(sjT <= minSj){
  551 + if(m.get("bcType").equals("in") || m.get("bcType").equals("out")){
  552 + if(m.get("bcType").equals("in")){
  553 + if(sj!=0){
  554 +// yysj += sjT + (24*60) - sj;
  555 + yysj += bcsj;
  556 + bcsj = 0;
  557 + }
  558 + sj=0;
  559 + }
  560 + }else{
  561 + yygl += Double.parseDouble(m.get("yygl").toString());
  562 +
  563 + if(sj==0){
  564 + sj = sjT + (24*60);
  565 + }else{
  566 + yysj += sjT + (24*60) - sj;
  567 + if(m.containsKey("ists") && m.get("ists").equals("1")){
  568 + yysj += Integer.valueOf(m.get("bcsj").toString());
  569 + } else {
  570 + sj = sjT + (24*60);
  571 + }
  572 + }
  573 + }
  574 + }else{
  575 + if(m.get("bcType").equals("in") || m.get("bcType").equals("out")){
  576 + if(m.get("bcType").equals("in")){
  577 + if(sj!=0){
  578 +// yysj += sjT - sj;
  579 + yysj += bcsj;
  580 + bcsj = 0;
  581 + }
  582 + sj=0;
  583 + }
  584 + } else {
  585 + yygl += Double.parseDouble(m.get("yygl").toString());
  586 +
  587 + if(sj==0){
  588 + sj = sjT;
  589 + }else{
  590 + yysj += sjT - sj;
  591 + if(m.containsKey("ists") && m.get("ists").equals("1")){
  592 + yysj += Integer.valueOf(m.get("bcsj").toString());
  593 + } else {
  594 + sj = sjT;
  595 + }
  596 + }
  597 + }
  598 + }
  599 + }else{
  600 + if(sj == 0){
  601 + yysj += bcsj;
  602 + bcsj = 0;
  603 + }
  604 + if( !(m.get("bcType").equals("in") || m.get("bcType").equals("out"))){
  605 + yygl += Double.parseDouble(m.get("yygl").toString());
  606 + sj = sjT;
  607 + }else{
  608 + sj=0;
  609 + }
  610 + lp=m.get("lp").toString();
  611 + }
  612 +
  613 + if(m.containsKey("ists") && m.get("ists").equals("1")){
  614 + sj = 0;
  615 + }
  616 + if( !(m.get("bcType").equals("in") || m.get("bcType").equals("out")))
  617 + bcsj = Integer.valueOf(m.get("bcsj").toString());
  618 + }
  619 +
  620 + if(yysj>0){
  621 + yycs =yygl/(yysj*1.0/60);
  622 + }
  623 + int hh=yysj/60;
  624 + int mm=yysj%60;
  625 +
  626 + map.put("yysj", hh+":"+mm);
  627 + map.put("yycs", df.format(yycs)+"公里/小时");
  628 +// map.put(key, value)
  629 +
  630 + return map;
  631 + }
  632 +
  633 + public static void main(String[] args) {
  634 + System.out.println(609360/60);
  635 + System.out.println(609360%60);
  636 + }
  637 +
  638 + @Override
  639 + public List<Map<String, Object>> tbodyTime3(String line, String ttinfo) {
  640 + // TODO Auto-generated method stub
  641 + List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
  642 + List<Map<String, Object>> list_s=new ArrayList<Map<String,Object>>();
  643 +
  644 + List<String> objList = new ArrayList<String>();
  645 + objList.add(ttinfo);
  646 + String sqlCl="SELECT lp cl_zbh,qdz_name,bc_type,fcsj,bcsj FROM"
  647 + + " bsth_c_s_ttinfo_detail WHERE ttinfo = ? "
  648 + + " AND (bc_type = 'normal' or bc_type='region') order by qdz_name";
  649 +
  650 + List<Map<String, Object>> listj= jdbcTemplate.query(sqlCl, objList.toArray(),
  651 + new RowMapper<Map<String, Object>>(){
  652 + @Override
  653 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  654 + Map<String, Object> m=new HashMap<String,Object>();
  655 + m.put("cl_zbh", rs.getString("cl_zbh"));
  656 + m.put("qdz_name", rs.getString("qdz_name"));
  657 + m.put("bcType", rs.getString("bc_type"));
  658 + m.put("fcsj", rs.getString("fcsj"));
  659 + m.put("bcsj", rs.getString("bcsj"));
  660 + return m;
  661 + }
  662 + });
  663 +
  664 + String sqlZd="select qdz_name,bc_type from bsth_c_s_ttinfo_detail WHERE ttinfo = ? "
  665 + + " AND (bc_type = 'normal' or bc_type='region') group by qdz_name ,bc_type "
  666 + + " order by qdz_name";
  667 + List<Map<String, Object>> lists= jdbcTemplate.query(sqlZd, objList.toArray(),
  668 + new RowMapper<Map<String, Object>>(){
  669 + @Override
  670 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  671 + Map<String, Object> m=new HashMap<String,Object>();
  672 + m.put("zdm", rs.getString("qdz_name"));
  673 + m.put("bcType", rs.getString("bc_type"));
  674 + return m;
  675 + }
  676 + });
  677 +
  678 + for (int i = 0; i < lists.size(); i++) {
  679 + Map<String, Object> z=new HashMap<String,Object>();
  680 + Map<String, Object> w=new HashMap<String,Object>();
  681 + Map<String, Object> p=lists.get(i);
  682 + int zbcs=0;
  683 + int wbcs=0;
  684 + if(p.get("bcType").toString().equals("normal")){
  685 + for (int j = 0; j < listj.size(); j++) {
  686 + if(listj.get(j).get("qdz_name").toString().equals(p.get("zdm").toString()) &&
  687 + listj.get(j).get("bcType").toString().equals("normal")){
  688 + String time=listj.get(j).get("fcsj").toString();
  689 + long bcsj= Long.parseLong(listj.get(j).get("bcsj").toString());
  690 + String clZbh=listj.get(j).get("cl_zbh").toString();
  691 + String[] fcsjStr = time.split(":");
  692 + long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
  693 + long ddsj=fcsj+bcsj;
  694 + if((fcsj>=zgf1 && fcsj<=zgf2) || (ddsj>=zgf1&&ddsj<=zgf2)
  695 + || (fcsj<zgf1&&ddsj>zgf2)){
  696 + if(p.get("z"+clZbh)==null){
  697 + zbcs++;
  698 + p.put("z"+clZbh, clZbh);
  699 + }
  700 + }
  701 +
  702 + if((fcsj>=wgf1 && fcsj<=wgf2) || (ddsj>=wgf1&&ddsj<=wgf2)
  703 + || (fcsj<wgf1&&ddsj>wgf2)){
  704 + if(p.get("w"+clZbh)==null){
  705 + wbcs++;
  706 + p.put("w"+clZbh, clZbh);
  707 + }
  708 + }
  709 + }
  710 +
  711 + }
  712 + if(zbcs>0){
  713 + z.put("zdm", p.get("zdm"));
  714 + z.put("cls", zbcs);
  715 + z.put("lx", "zqc");
  716 + list_s.add(z);
  717 + }
  718 + if(wbcs>0){
  719 + w.put("zdm", p.get("zdm"));
  720 + w.put("cls", zbcs);
  721 + w.put("lx", "wqc");
  722 + list_s.add(w);
  723 + }
  724 +
  725 + }
  726 +
  727 + if(p.get("bcType").equals("region")){
  728 + for (int j = 0; j < listj.size(); j++) {
  729 + if(listj.get(j).get("qdz_name").toString().equals(p.get("zdm").toString()) &&
  730 + listj.get(j).get("bcType").toString().equals("region")){
  731 + String time=listj.get(j).get("fcsj").toString();
  732 + long bcsj= Long.parseLong(listj.get(j).get("bcsj").toString());
  733 + String clZbh=listj.get(j).get("cl_zbh").toString();
  734 + String[] fcsjStr = time.split(":");
  735 + long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
  736 + long ddsj=fcsj+bcsj;
  737 + if((fcsj>=zgf1 && fcsj<=zgf2) || (ddsj>=zgf1&&ddsj<=zgf2)
  738 + || (fcsj<zgf1&&ddsj>zgf2)){
  739 + if(p.get("z"+clZbh)==null){
  740 + zbcs++;
  741 + p.put("z"+clZbh, clZbh);
  742 + }
  743 + }
  744 +
  745 + if((fcsj>=wgf1 && fcsj<=wgf2) || (ddsj>=wgf1&&ddsj<=wgf2)
  746 + || (fcsj<wgf1&&ddsj>wgf2)){
  747 + if(p.get("w"+clZbh)==null){
  748 + wbcs++;
  749 + p.put("w"+clZbh, clZbh);
  750 + }
  751 + }
  752 + }
  753 +
  754 + }
  755 + if(zbcs>0){
  756 + z.put("zdm", p.get("zdm"));
  757 + z.put("cls", zbcs);
  758 + z.put("lx", "zqj");
  759 + list_s.add(z);
  760 + }
  761 + if(wbcs>0){
  762 + w.put("zdm", p.get("zdm"));
  763 + w.put("cls", zbcs);
  764 + w.put("lx", "wqj");
  765 + list_s.add(w);
  766 + }
  767 + }
  768 +
  769 + }
  770 + int a=0;
  771 + int b=0;
  772 + int c=0;
  773 + int d=0;
  774 + for(int i=0;i<list_s.size();i++){
  775 + boolean fage=true;
  776 + Map<String, Object> newMap= new HashMap<String, Object>();
  777 + list.add(newMap);
  778 + Map<String, Object> maps=list_s.get(i);
  779 + if(maps.get("lx").equals("zqc")){
  780 + list.get(a).put("zqcZm", maps.get("zdm"));
  781 + list.get(a).put("zqcCls", maps.get("cls"));
  782 + a++;
  783 + fage=false;
  784 + }else if(maps.get("lx").equals("wqc")){
  785 + list.get(b).put("wqcZm", maps.get("zdm"));
  786 + list.get(b).put("wqcCls", maps.get("cls"));
  787 + b++;
  788 + fage=false;
  789 + }else if(maps.get("lx").equals("zqj")){
  790 + list.get(c).put("zqjZm", maps.get("zdm"));
  791 + list.get(c).put("zqjCls", maps.get("cls"));
  792 + c++;
  793 + fage=false;
  794 + }else if(maps.get("lx").equals("wqj")){
  795 + list.get(d).put("wqjZm", maps.get("zdm"));
  796 + list.get(d).put("wqjCls", maps.get("cls"));
  797 + d++;
  798 + fage=false;
  799 + }
  800 + if(fage){
  801 + break;
  802 + }
  803 + }
  804 + boolean status=true;
  805 + while (status) {
  806 + if(list.size() == 0)
  807 + break;
  808 + for (int i = 0; i < list.size(); i++) {
  809 + if(list.get(i).isEmpty()){
  810 + list.remove(i);
  811 + status=true;
  812 + }else{
  813 + status=false;
  814 + }
  815 + }
  816 + }
  817 +
  818 + return list;
  819 + }
  820 +
  821 + @Override
  822 + public List<Map<String, Object>> tbodyTime4(String line, String ttinfo) {
  823 + List<Map<String, Object>> list =new ArrayList<>();
  824 + // TODO Auto-generated method stub
  825 + //最早营运时间 区分夜宵线
  826 + String minfcsj="02:00";
  827 + List<Line> lineList=lineRepository.findLineByCode(line);
  828 + if(lineList.size()>0){
  829 + List<String> objList = new ArrayList<String>();
  830 + objList.add(lineList.get(0).getId() + "");
  831 + String sql = "select count(*) from bsth_c_line_config where line = ? ";
  832 + if(jdbcTemplate.queryForObject(sql, objList.toArray(), Integer.class) > 0){
  833 + String sqlMinYysj="select start_opt from bsth_c_line_config where "
  834 + + " id = ("
  835 + + "select max(id) from bsth_c_line_config where line = ?"
  836 + + ")";
  837 + minfcsj=jdbcTemplate.queryForObject(sqlMinYysj, objList.toArray(), String.class);
  838 + }
  839 + }
  840 +
  841 + List<String> objList = new ArrayList<String>();
  842 + objList.add(ttinfo);
  843 + objList.add(minfcsj);
  844 + objList.add(ttinfo);
  845 + objList.add(minfcsj);
  846 + //查询全程
  847 + String sqlqc="select t.* from ( "
  848 + + " (SELECT bc_type, fcsj,qdz,2 as xh,xl_dir,qdz_name FROM bsth_c_s_ttinfo_detail "
  849 + + " where ttinfo = ? and (bc_type='normal' || bc_type='region') "
  850 + + " and fcsj <= ?) "
  851 + + " union "
  852 + + " (SELECT bc_type, fcsj,qdz,1 as xh,xl_dir,qdz_name FROM bsth_c_s_ttinfo_detail "
  853 + + " where ttinfo = ? and (bc_type='normal' || bc_type='region') "
  854 + + " and fcsj > ?) "
  855 + + "order by xl_dir,xh,fcsj ) t ";
  856 + List<Map<String, String>> qclist= jdbcTemplate.query(sqlqc, objList.toArray(),
  857 + new RowMapper<Map<String, String>>(){
  858 + @Override
  859 + public Map<String, String> mapRow(ResultSet rs, int rowNum) throws SQLException {
  860 + Map<String, String> m=new HashMap<String,String>();
  861 + m.put("qdz_name", rs.getString("qdz_name"));
  862 + m.put("bcType", rs.getString("bc_type"));
  863 + m.put("fcsj", rs.getString("fcsj"));
  864 + m.put("xl", rs.getString("xl_dir"));
  865 + m.put("xh", rs.getString("xh"));
  866 + return m;
  867 + }
  868 +
  869 + });
  870 +
  871 + List<List<Map<String, String>>> mapList = new ArrayList<List<Map<String,String>>>();
  872 + mapList.add(new ArrayList<Map<String, String>>());
  873 + mapList.add(new ArrayList<Map<String, String>>());
  874 + for(Map<String, String> m : qclist){
  875 + String bcType = m.get("bcType");
  876 + if(bcType.equals("normal")){
  877 + mapList.get(0).add(m);
  878 + } else {
  879 + mapList.get(1).add(m);
  880 + }
  881 + }
  882 +
  883 + for(int i = 0; i < mapList.size(); i++){
  884 + List<Map<String, String>> l = mapList.get(i);
  885 + Map<String, Object> tempMap = new HashMap<String, Object>();
  886 + List<String> upfcsj = new ArrayList<String>();
  887 + List<String> downfcsj = new ArrayList<String>();
  888 + String sxqdz = "", xxqdz = "";
  889 + String sxfcsj = "", xxfcsj = "";
  890 + int sxbc = 0, xxbc = 0;
  891 + for(Map<String, String> m : l){
  892 + if(m.get("xl").equals("0")){
  893 + sxbc++;
  894 + upfcsj.add(m.get("fcsj"));
  895 + if(sxqdz.length() == 0 && m.containsKey("qdz_name"))
  896 + sxqdz = m.get("qdz_name")==null?"":m.get("qdz_name").toString();
  897 + } else {
  898 + xxbc++;
  899 + downfcsj.add(m.get("fcsj"));
  900 + if(xxqdz.length() == 0 && m.containsKey("qdz_name"))
  901 + xxqdz = m.get("qdz_name")==null?"":m.get("qdz_name").toString();
  902 + }
  903 + }
  904 + if(upfcsj.size() != 0)
  905 + sxfcsj = upfcsj.get(0) + "-" + upfcsj.get(upfcsj.size() - 1);
  906 + if(downfcsj.size() != 0)
  907 + xxfcsj = downfcsj.get(0) + "-" + downfcsj.get(downfcsj.size() - 1);
  908 + tempMap.put("sxqdz", sxqdz);
  909 + tempMap.put("sxfcsj", i==0?sxfcsj:"");
  910 + tempMap.put("sxbc", sxbc!=0?sxbc:"");
  911 + tempMap.put("xxqdz", xxqdz);
  912 + tempMap.put("xxfcsj", i==0?xxfcsj:"");
  913 + tempMap.put("xxbc", xxbc!=0?xxbc:"");
  914 + tempMap.put("bcType", i);
  915 + if(sxqdz.length()!=0 || xxqdz.length()!=0)
  916 + list.add(tempMap);
  917 + }
  918 +
  919 + return list;
  920 + }
  921 + @Override
  922 + public List<Map<String, Object>> tbodyTime5(String line, String ttinfo) {
  923 + // TODO Auto-generated method stub
  924 + //最早营运时间 区分夜宵线
  925 + String minfcsj="02:00";
  926 + List<Line> lineList=lineRepository.findLineByCode(line);
  927 + if(lineList.size()>0){
  928 + List<String> objList = new ArrayList<String>();
  929 + objList.add(lineList.get(0).getId() + "");
  930 + String sql = "select count(*) from bsth_c_line_config where line = ? ";
  931 + if(jdbcTemplate.queryForObject(sql, objList.toArray(), Integer.class) > 0){
  932 + String sqlMinYysj="select start_opt from bsth_c_line_config where "
  933 + + " id = ("
  934 + + "select max(id) from bsth_c_line_config where line = ?"
  935 + + ")";
  936 + minfcsj= jdbcTemplate.queryForObject(sqlMinYysj, objList.toArray(), String.class);
  937 + }
  938 + }
  939 + String[] minSjs = minfcsj.split(":");
  940 + int minSj=Integer.parseInt(minSjs[0])*60+Integer.parseInt(minSjs[1]);
  941 +
  942 + List<String> objList = new ArrayList<String>();
  943 + objList.add(ttinfo);
  944 + objList.add(minfcsj);
  945 + objList.add(ttinfo);
  946 + objList.add(minfcsj);
  947 + //查询时间里程
  948 + String sqlPc=" (SELECT jhlc,fcsj,bcsj,bc_type,lp,xl_dir,ists,2 as xh FROM "
  949 + + " bsth_c_s_ttinfo_detail where ttinfo = ? and "
  950 + + " fcsj <= ? and bc_type!='ldks'"
  951 + + " and bc_type !='region' and bc_type !='venting' and bc_type !='major') "
  952 + + " union "
  953 + + " (SELECT jhlc,fcsj,bcsj,bc_type,lp,xl_dir,ists,1 as xh FROM "
  954 + + " bsth_c_s_ttinfo_detail where ttinfo = ? and "
  955 + + " fcsj > ? and bc_type!='ldks' "
  956 + + " and bc_type !='region' and bc_type !='venting' and bc_type !='major') "
  957 + + " order by xh, lp,fcsj";
  958 + Map<String, Object> map=new HashMap<String,Object>();
  959 + List<Map<String, Object>> list= jdbcTemplate.query(sqlPc, objList.toArray(),
  960 + new RowMapper<Map<String, Object>>(){
  961 + @Override
  962 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  963 + Map<String, Object> m=new HashMap<String,Object>();
  964 + m.put("fcsj", rs.getString("fcsj"));
  965 + m.put("yygl", rs.getString("jhlc")==null?"0":rs.getString("jhlc"));
  966 + m.put("bcsj", rs.getString("bcsj"));
  967 + m.put("bcType", rs.getString("bc_type"));
  968 + m.put("lp", rs.getString("lp"));
  969 + m.put("dir", rs.getString("xl_dir"));
  970 + m.put("ists", rs.getString("ists")!=null?rs.getString("ists"):"");
  971 + String[] split = m.get("fcsj").toString().split(":");
  972 + if(rs.getString("xh").equals("2")){
  973 + m.put("fcsj", (Integer.valueOf(split[0]) + 24) + ":"+split[1]);
  974 + }
  975 +
  976 + return m;
  977 + }
  978 + });
  979 + List<Map<String, Object>> newList=new ArrayList<Map<String,Object>>();
  980 + int yysxZq=0,yyxxZq=0,tzsxZq=0,tzxxZq=0,minZqcj=0,maxZqcj=0,sxcountZqbc=0,xxcountZqbc=0; //早前
  981 + int yysxZgf=0,yyxxZgf=0,tzsxZgf=0,tzxxZgf=0,minZgfcj=0,maxZgfcj=0,sxcountZgfbc=0,xxcountZgfbc=0;//早高峰
  982 + int yysxZw=0,yyxxZw=0,tzsxZw=0,tzxxZw=0,minZwcj=0,maxZwcj=0,sxcountZwbc=0,xxcountZwbc=0;//中午
  983 + int yysxWgf=0,yyxxWgf=0,tzsxWgf=0,tzxxWgf=0,minWgfcj=0,maxWgfcj=0,sxcountWgfbc=0,xxcountWgfbc=0;//晚高峰
  984 + int yysxWh=0,yyxxWh=0,tzsxWh=0,tzxxWh=0,minWhcj=0,maxWhcj=0,sxcountWhbc=0,xxcountWhbc=0;//晚后
  985 + List<Integer> zqFcsj0=new ArrayList<Integer>();
  986 + List<Integer> zgfFcsj0=new ArrayList<Integer>();
  987 + List<Integer> zwFcsj0=new ArrayList<Integer>();
  988 + List<Integer> wgfFcsj0=new ArrayList<Integer>();
  989 + List<Integer> whFcsj0=new ArrayList<Integer>();
  990 +
  991 + List<Integer> zqFcsj1=new ArrayList<Integer>();
  992 + List<Integer> zgfFcsj1=new ArrayList<Integer>();
  993 + List<Integer> zwFcsj1=new ArrayList<Integer>();
  994 + List<Integer> wgfFcsj1=new ArrayList<Integer>();
  995 + List<Integer> whFcsj1=new ArrayList<Integer>();
  996 + int temp = 48*60+1, zcj = 0;
  997 + boolean ists = true;
  998 + String lpname="";
  999 + int dir =-1;
  1000 + int fcsjT_= 0;
  1001 + for (int i = 0; i < list.size(); i++) {
  1002 + Map<String, Object> m=list.get(i);
  1003 + int xlDir = Integer.valueOf(m.get("dir").toString());
  1004 + String[] split = m.get("fcsj").toString().split(":");
  1005 + int fcsjT = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);
  1006 + String bcType=m.get("bcType").toString();
  1007 + int bcsj = Integer.valueOf(m.get("bcsj").toString());
  1008 + if(i==0){
  1009 + lpname=m.get("lp").toString();
  1010 + if(temp>fcsjT){
  1011 + temp=fcsjT+bcsj;
  1012 + }
  1013 + dir =xlDir;
  1014 + if(bcType.equals("in") || bcType.equals("out")){
  1015 + ists=false;
  1016 + }
  1017 + }else{
  1018 +// if(temp>fcsjT){
  1019 +// temp=fcsjT;
  1020 +// }
  1021 + if(bcType.equals("in") || bcType.equals("out")){
  1022 + temp = fcsjT+bcsj;
  1023 + lpname=m.get("lp").toString();
  1024 + dir =xlDir;
  1025 + ists=false;
  1026 + }else{
  1027 +// if(xlDir==0){
  1028 + //上行数据
  1029 + if(fcsjT>= minSj && fcsjT <= 6*60+30){
  1030 + //早高峰前
  1031 + if(xlDir==0){
  1032 + yysxZq +=bcsj;
  1033 + sxcountZqbc ++;
  1034 + zqFcsj0.add(fcsjT);
  1035 + }else{
  1036 + yyxxZq +=bcsj;
  1037 + xxcountZqbc ++;
  1038 + zqFcsj1.add(fcsjT);
  1039 + }
  1040 + if(ists){
  1041 + if(lpname.equals(m.get("lp").toString())){
  1042 + if(dir==0)
  1043 + tzsxZq +=fcsjT-temp;
  1044 + else
  1045 + tzxxZq +=fcsjT-temp;
  1046 + }
  1047 + }
  1048 + temp = fcsjT+bcsj;
  1049 +
  1050 + }else if(fcsjT > 6*60+30 && fcsjT <= 8*60+30){
  1051 + //早高峰
  1052 + if(xlDir==0){
  1053 + yysxZgf +=bcsj;
  1054 + sxcountZgfbc ++;
  1055 + zgfFcsj0.add(fcsjT);
  1056 + }else{
  1057 + yyxxZgf +=bcsj;
  1058 + xxcountZgfbc ++;
  1059 + zgfFcsj1.add(fcsjT);
  1060 + }
  1061 +
  1062 + if(ists){
  1063 + if(lpname.equals(m.get("lp").toString())){
  1064 + if(dir==0){
  1065 + if(fcsjT_>= minSj && fcsjT_ <= 6*60+30)
  1066 + tzsxZq +=fcsjT-temp;
  1067 + else
  1068 + tzsxZgf +=fcsjT-temp;
  1069 + }else{
  1070 + if(fcsjT_>= minSj && fcsjT_ <= 6*60+30)
  1071 + tzxxZq +=fcsjT-temp;
  1072 + else
  1073 + tzxxZgf +=fcsjT-temp;
  1074 + }
  1075 + }
  1076 + }
  1077 + temp =fcsjT+bcsj;
  1078 +
  1079 + }else if(fcsjT > 8*60+30 && fcsjT <= 16*60){
  1080 + //中午
  1081 + if(xlDir==0){
  1082 + yysxZw +=bcsj;
  1083 + sxcountZwbc ++;
  1084 + zwFcsj0.add(fcsjT);
  1085 + }else{
  1086 + yyxxZw +=bcsj;
  1087 + xxcountZwbc ++;
  1088 + zwFcsj1.add(fcsjT);
  1089 + }
  1090 + if(ists){
  1091 + if(lpname.equals(m.get("lp").toString())){
  1092 + if(dir==0){
  1093 + if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
  1094 + tzsxZgf +=fcsjT-temp;
  1095 + else
  1096 + tzsxZw +=fcsjT-temp;
  1097 + }else{
  1098 + if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
  1099 + tzxxZgf +=fcsjT-temp;
  1100 + else
  1101 + tzxxZw +=fcsjT-temp;
  1102 + }
  1103 + }
  1104 + }
  1105 + temp =fcsjT+bcsj;
  1106 + }else if(fcsjT > 16*60 && fcsjT <= 18*60){
  1107 + //晚高峰
  1108 + if(xlDir==0){
  1109 + yysxWgf +=bcsj;
  1110 + sxcountWgfbc ++;
  1111 + wgfFcsj0.add(fcsjT);
  1112 + }else{
  1113 + yyxxWgf +=bcsj;
  1114 + xxcountWgfbc ++;
  1115 + wgfFcsj1.add(fcsjT);
  1116 + }
  1117 +
  1118 + if(ists){
  1119 + if(lpname.equals(m.get("lp").toString())){
  1120 + if(dir==0){
  1121 + if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
  1122 + tzsxZw +=fcsjT-temp;
  1123 + else
  1124 + tzsxWgf +=fcsjT-temp;
  1125 + }else{
  1126 + if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
  1127 + tzxxZw +=fcsjT-temp;
  1128 + else
  1129 + tzxxWgf +=fcsjT-temp;
  1130 + }
  1131 + }
  1132 + }
  1133 + temp =fcsjT+bcsj;
  1134 + }else{
  1135 + //晚高峰后
  1136 + if(xlDir==0){
  1137 + yysxWh +=bcsj;
  1138 + sxcountWhbc ++;
  1139 + whFcsj0.add(fcsjT);
  1140 + }else{
  1141 + yyxxWh +=bcsj;
  1142 + xxcountWhbc ++;
  1143 + whFcsj1.add(fcsjT);
  1144 + }
  1145 + if(ists){
  1146 + if(lpname.equals(m.get("lp").toString())){
  1147 + if(dir==0){
  1148 + if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
  1149 + tzsxWgf +=fcsjT-temp;
  1150 + else
  1151 + tzsxWh +=fcsjT-temp;
  1152 + }else{
  1153 + if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
  1154 + tzxxWgf +=fcsjT-temp;
  1155 + else
  1156 + tzxxWh +=fcsjT-temp;
  1157 + }
  1158 + }
  1159 + }
  1160 + temp =fcsjT+bcsj;
  1161 + }
  1162 +
  1163 + /*}else{
  1164 + //下行数据
  1165 + if(fcsjT>= minSj && fcsjT <= 6*60+30){
  1166 + //早高峰前
  1167 + yyxxZq +=bcsj;
  1168 + xxcountZqbc ++;
  1169 + zqFcsj1.add(fcsjT);
  1170 + if(ists){
  1171 + if(lpname.equals(m.get("lp").toString())){
  1172 + tzxxZq +=fcsjT-temp;
  1173 + }
  1174 + }
  1175 + temp =fcsjT+bcsj;
  1176 + }else if(fcsjT > 6*60+30 && fcsjT <= 8*60+30){
  1177 + //早高峰
  1178 + yyxxZgf +=bcsj;
  1179 + xxcountZgfbc ++;
  1180 + zgfFcsj1.add(fcsjT);
  1181 + if(ists){
  1182 + if(lpname.equals(m.get("lp").toString())){
  1183 + if(fcsjT_>= minSj && fcsjT_ <= 6*60+30)
  1184 + tzxxZq +=fcsjT-temp;
  1185 + else
  1186 + tzxxZgf +=fcsjT-temp;
  1187 + }
  1188 + }
  1189 + temp =fcsjT+bcsj;
  1190 + }else if(fcsjT > 8*60+30 && fcsjT <= 16*60){
  1191 + //中午
  1192 + yyxxZw +=bcsj;
  1193 + xxcountZwbc ++;
  1194 + zwFcsj1.add(fcsjT);
  1195 + if(ists){
  1196 + if(lpname.equals(m.get("lp").toString())){
  1197 + if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
  1198 + tzxxZgf +=fcsjT-temp;
  1199 + else
  1200 + tzxxZw +=fcsjT-temp;
  1201 + }
  1202 + }
  1203 + temp =fcsjT+bcsj;
  1204 + }else if(fcsjT > 16*60 && fcsjT <= 18*60){
  1205 + //晚高峰
  1206 + yyxxWgf +=bcsj;
  1207 + xxcountWgfbc ++;
  1208 + wgfFcsj1.add(fcsjT);
  1209 + if(ists){
  1210 + if(lpname.equals(m.get("lp").toString())){
  1211 + if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
  1212 + tzxxZw +=fcsjT-temp;
  1213 + else
  1214 + tzxxWgf +=fcsjT-temp;
  1215 + }
  1216 + }
  1217 + temp =fcsjT+bcsj;
  1218 + }else{
  1219 + //晚高峰后
  1220 + yyxxWh +=bcsj;
  1221 + xxcountWhbc ++;
  1222 + whFcsj1.add(fcsjT);
  1223 + if(ists){
  1224 + if(lpname.equals(m.get("lp").toString())){
  1225 + if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
  1226 + tzxxWgf +=fcsjT-temp;
  1227 + else
  1228 + tzxxWh +=fcsjT-temp;
  1229 + }
  1230 + }
  1231 + temp =fcsjT+bcsj;
  1232 + }
  1233 +// }
  1234 + }*/
  1235 + lpname=m.get("lp").toString();
  1236 + fcsjT_=fcsjT;
  1237 + dir =xlDir;
  1238 + if(m.get("ists").toString().trim().equals("1")){
  1239 + ists=false;
  1240 + }else{
  1241 + ists = true;
  1242 + }
  1243 + }
  1244 + }
  1245 +
  1246 + }
  1247 +
  1248 + //---------------------------------------早前
  1249 + List<Integer> cjs = new ArrayList<Integer>();
  1250 + Collections.sort(zqFcsj0);
  1251 + int fcsjs=0;
  1252 + for (int i = 0; i < zqFcsj0.size(); i++) {
  1253 + if(i==0){
  1254 + fcsjs =zqFcsj0.get(i);
  1255 + }else{
  1256 + cjs.add(zqFcsj0.get(i)-fcsjs);
  1257 + fcsjs=zqFcsj0.get(i);
  1258 + }
  1259 +
  1260 + }
  1261 + Collections.sort(zqFcsj1);
  1262 + int fcsjx=0;
  1263 + for (int i = 0; i < zqFcsj1.size(); i++) {
  1264 + if(i==0){
  1265 + fcsjx =zqFcsj1.get(i);
  1266 + }else{
  1267 + cjs.add(zqFcsj1.get(i)-fcsjx);
  1268 + fcsjx =zqFcsj1.get(i);
  1269 + }
  1270 +
  1271 + }
  1272 + Collections.sort(cjs);
  1273 + for(int i : cjs){
  1274 + zcj += i;
  1275 + }
  1276 + Map<String, Object> tempMap = new HashMap<String, Object>();
  1277 + double sxtszq=0.0;
  1278 + double sxsjzq=0.0;
  1279 + if(sxcountZqbc>0){
  1280 + sxtszq=Arith.div(tzsxZq, sxcountZqbc, 1);
  1281 + sxsjzq=Arith.div(yysxZq, sxcountZqbc,1);
  1282 + }
  1283 +
  1284 + double xxtszq=0.0;
  1285 + double xxsjzq=0.0;
  1286 + if(xxcountZqbc>0){
  1287 + xxtszq=Arith.div(tzxxZq, xxcountZqbc, 1);
  1288 + xxsjzq=Arith.div(yyxxZq, xxcountZqbc,1);
  1289 + }
  1290 + tempMap.put("sjd", "(首)——6:30");
  1291 + tempMap.put("sxsj", sxsjzq);
  1292 + tempMap.put("xxsj", xxsjzq);
  1293 + tempMap.put("sxtssj", sxtszq);
  1294 + tempMap.put("xxtssj", xxtszq);
  1295 + tempMap.put("fqsj", Arith.add(Arith.add(sxtszq, sxsjzq), Arith.add(xxtszq, xxsjzq)));
  1296 + tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
  1297 + tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
  1298 + newList.add(tempMap);
  1299 +
  1300 + //----------------------------------早高峰
  1301 + cjs = new ArrayList<Integer>();
  1302 + zcj =0;
  1303 +
  1304 + Collections.sort(zgfFcsj0);
  1305 + fcsjs=0;
  1306 + for (int i = 0; i < zgfFcsj0.size(); i++) {
  1307 + if(i==0){
  1308 + fcsjs =zgfFcsj0.get(i);
  1309 + }else{
  1310 + cjs.add(zgfFcsj0.get(i)-fcsjs);
  1311 + fcsjs=zgfFcsj0.get(i);
  1312 + }
  1313 +
  1314 + }
  1315 + Collections.sort(zgfFcsj1);
  1316 + fcsjx=0;
  1317 + for (int i = 0; i < zgfFcsj1.size(); i++) {
  1318 + if(i==0){
  1319 + fcsjx =zgfFcsj1.get(i);
  1320 + }else{
  1321 + cjs.add(zgfFcsj1.get(i)-fcsjx);
  1322 + fcsjx =zgfFcsj1.get(i);
  1323 + }
  1324 +
  1325 + }
  1326 + Collections.sort(cjs);
  1327 + for(int i : cjs){
  1328 + zcj += i;
  1329 + }
  1330 + double sxtszgf=0.0;
  1331 + double sxsjzgf=0.0;
  1332 + if(sxcountZgfbc>0){
  1333 + sxtszgf=Arith.div(tzsxZgf, sxcountZgfbc, 1);
  1334 + sxsjzgf =Arith.div(yysxZgf, sxcountZgfbc, 1);
  1335 + }
  1336 +
  1337 + double xxtszgf=0.0;
  1338 + double xxsjzgf=0.0;
  1339 + if(xxcountZgfbc>0){
  1340 + xxtszgf=Arith.div(tzxxZgf, xxcountZgfbc, 1);
  1341 + xxsjzgf=Arith.div(yyxxZgf, xxcountZgfbc,1);
  1342 + }
  1343 +
  1344 +
  1345 + tempMap = new HashMap<String, Object>();
  1346 + tempMap.put("sjd", "6:31——8:30");
  1347 + tempMap.put("sxsj", sxsjzgf);
  1348 + tempMap.put("xxsj", xxsjzgf);
  1349 + tempMap.put("sxtssj", sxtszgf);
  1350 + tempMap.put("xxtssj", xxtszgf);
  1351 + tempMap.put("fqsj", Arith.add(Arith.add(sxtszgf, sxsjzgf), Arith.add(xxtszgf, xxsjzgf)));
  1352 + tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
  1353 + tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
  1354 + newList.add(tempMap);
  1355 + //----------------------------------------------中午
  1356 + cjs = new ArrayList<Integer>();
  1357 + zcj =0;
  1358 +
  1359 + Collections.sort(zwFcsj0);
  1360 + fcsjs=0;
  1361 + for (int i = 0; i < zwFcsj0.size(); i++) {
  1362 + if(i==0){
  1363 + fcsjs =zwFcsj0.get(i);
  1364 + }else{
  1365 + cjs.add(zwFcsj0.get(i)-fcsjs);
  1366 + fcsjs=zwFcsj0.get(i);
  1367 + }
  1368 +
  1369 + }
  1370 + Collections.sort(zwFcsj1);
  1371 + fcsjx=0;
  1372 + for (int i = 0; i < zwFcsj1.size(); i++) {
  1373 + if(i==0){
  1374 + fcsjx =zwFcsj1.get(i);
  1375 + }else{
  1376 + cjs.add(zwFcsj1.get(i)-fcsjx);
  1377 + fcsjx =zwFcsj1.get(i);
  1378 + }
  1379 +
  1380 + }
  1381 + Collections.sort(cjs);
  1382 + for(int i : cjs){
  1383 + zcj += i;
  1384 + }
  1385 + double sxtzsjzw=0.0;
  1386 + double sxsjsjzw=0.0;
  1387 + if(sxcountZwbc>0){
  1388 + sxtzsjzw=Arith.div(tzsxZw, sxcountZwbc, 1);
  1389 + sxsjsjzw=Arith.div(yysxZw, sxcountZwbc,1);
  1390 + }
  1391 +
  1392 + double xxtzsjzw=0.0;
  1393 + double xxsjsjzw=0.0;
  1394 + if(xxcountZwbc>0){
  1395 + xxtzsjzw=Arith.div(tzxxZw, xxcountZwbc,1);
  1396 + xxsjsjzw=Arith.div(yyxxZw, xxcountZwbc, 1);
  1397 + }
  1398 + tempMap = new HashMap<String, Object>();
  1399 + tempMap.put("sjd", "8:31——16:00");
  1400 + tempMap.put("sxsj", sxsjsjzw);
  1401 + tempMap.put("xxsj", xxsjsjzw);
  1402 + tempMap.put("sxtssj", sxtzsjzw);
  1403 + tempMap.put("xxtssj", xxtzsjzw);
  1404 + tempMap.put("fqsj", Arith.add(Arith.add(sxtzsjzw, sxsjsjzw), Arith.add(xxtzsjzw, xxsjsjzw)));
  1405 + tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
  1406 + tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
  1407 + newList.add(tempMap);
  1408 + //-------------------------------------------------晚高峰
  1409 + cjs = new ArrayList<Integer>();
  1410 + zcj =0;
  1411 +
  1412 + Collections.sort(wgfFcsj0);
  1413 + fcsjs=0;
  1414 + for (int i = 0; i < wgfFcsj0.size(); i++) {
  1415 + if(i==0){
  1416 + fcsjs =wgfFcsj0.get(i);
  1417 + }else{
  1418 + cjs.add(wgfFcsj0.get(i)-fcsjs);
  1419 + fcsjs=wgfFcsj0.get(i);
  1420 + }
  1421 +
  1422 + }
  1423 + Collections.sort(wgfFcsj1);
  1424 + fcsjx=0;
  1425 + for (int i = 0; i < wgfFcsj1.size(); i++) {
  1426 + if(i==0){
  1427 + fcsjx =wgfFcsj1.get(i);
  1428 + }else{
  1429 + cjs.add(wgfFcsj1.get(i)-fcsjx);
  1430 + fcsjx =wgfFcsj1.get(i);
  1431 + }
  1432 +
  1433 + }
  1434 + Collections.sort(cjs);
  1435 + for(int i : cjs){
  1436 + zcj += i;
  1437 + }
  1438 +
  1439 + double sxtzsjwgf=0.0;
  1440 + double sxsjsjwgf=0.0;
  1441 + if(sxcountWgfbc>0){
  1442 + sxtzsjwgf=Arith.div(tzsxWgf, sxcountWgfbc, 1);
  1443 + sxsjsjwgf=Arith.div(yysxWgf, sxcountWgfbc,1);
  1444 + }
  1445 +
  1446 + double xxtzsjwgf=0.0;
  1447 + double xxsjsjwgf=0.0;
  1448 + if(xxcountWgfbc>0){
  1449 + xxtzsjwgf=Arith.div(tzxxWgf, xxcountWgfbc, 1);
  1450 + xxsjsjwgf=Arith.div(yyxxWgf, xxcountWgfbc,1);
  1451 + }
  1452 +
  1453 + tempMap = new HashMap<String, Object>();
  1454 + tempMap.put("sjd", "16:01——18:00");
  1455 + tempMap.put("sxsj", sxsjsjwgf);
  1456 + tempMap.put("xxsj", xxsjsjwgf);
  1457 + tempMap.put("sxtssj", sxtzsjwgf);
  1458 + tempMap.put("xxtssj", xxtzsjwgf);
  1459 + tempMap.put("fqsj", Arith.add(Arith.add(sxsjsjwgf, sxtzsjwgf), Arith.add(xxsjsjwgf, xxtzsjwgf)));
  1460 + tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
  1461 + tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
  1462 + newList.add(tempMap);
  1463 +
  1464 + //----------------------------------晚后
  1465 + cjs = new ArrayList<Integer>();
  1466 + zcj =0;
  1467 +
  1468 + Collections.sort(whFcsj0);
  1469 + fcsjs=0;
  1470 + for (int i = 0; i < whFcsj0.size(); i++) {
  1471 + if(i==0){
  1472 + fcsjs =whFcsj0.get(i);
  1473 + }else{
  1474 + cjs.add(whFcsj0.get(i)-fcsjs);
  1475 + fcsjs=whFcsj0.get(i);
  1476 + }
  1477 +
  1478 + }
  1479 + Collections.sort(whFcsj1);
  1480 + fcsjx=0;
  1481 + for (int i = 0; i < whFcsj1.size(); i++) {
  1482 + if(i==0){
  1483 + fcsjx =whFcsj1.get(i);
  1484 + }else{
  1485 + cjs.add(whFcsj1.get(i)-fcsjx);
  1486 + fcsjx =whFcsj1.get(i);
  1487 + }
  1488 +
  1489 + }
  1490 + Collections.sort(cjs);
  1491 + for(int i : cjs){
  1492 + zcj += i;
  1493 + }
  1494 + double sxtzsjwh=0.0;
  1495 + double sxsjsjwh=0.0;
  1496 + if(sxcountWhbc>0){
  1497 + sxtzsjwh=Arith.div(tzsxWh,sxcountWhbc,1);
  1498 + sxsjsjwh=Arith.div(yysxWh, sxcountWhbc,1);
  1499 + }
  1500 +
  1501 + double xxtzsjwh=0.0;
  1502 + double xxsjsjwh=0.0;
  1503 + if(xxcountWhbc>0){
  1504 + xxtzsjwh=Arith.div(tzxxWh, xxcountWhbc,1);
  1505 + xxsjsjwh=Arith.div(yyxxWh, xxcountWhbc, 1);
  1506 + }
  1507 + tempMap = new HashMap<String, Object>();
  1508 + tempMap.put("sjd", "18:01——(末)");
  1509 + tempMap.put("sxsj", sxsjsjwh);
  1510 + tempMap.put("xxsj", xxsjsjwh);
  1511 + tempMap.put("sxtssj", sxtzsjwh);
  1512 + tempMap.put("xxtssj", xxtzsjwh);
  1513 + tempMap.put("fqsj", Arith.add(Arith.add(sxsjsjwh, sxtzsjwh), Arith.add(xxsjsjwh,xxtzsjwh)));
  1514 + tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
  1515 + tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
  1516 + newList.add(tempMap);
  1517 + /*
  1518 + Map<String, List<Map<String, Object>>> keyMap = new HashMap<String, List<Map<String, Object>>>();
  1519 + Map<String, Map<String, Object>> maps = new HashMap<String, Map<String, Object>>();
  1520 + keyMap.put("(首)——6:30", new ArrayList<Map<String, Object>>());
  1521 + keyMap.put("6:31——8:30", new ArrayList<Map<String, Object>>());
  1522 + keyMap.put("8:31——16:00", new ArrayList<Map<String, Object>>());
  1523 + keyMap.put("16:01——18:00", new ArrayList<Map<String, Object>>());
  1524 + keyMap.put("18:01——(末)", new ArrayList<Map<String, Object>>());
  1525 + for(int i = 0; i < list.size(); i++){
  1526 + Map<String, Object> ttMap = list.get(i);
  1527 + String fcsj = ttMap.get("fcsj").toString();
  1528 + String[] split = fcsj.split(":");
  1529 + int fcsjT = Integer.valueOf(split[0])*60+Integer.valueOf(split[1]);
  1530 + if(fcsjT >= minSj && fcsjT <= 6*60+30){
  1531 + keyMap.get("(首)——6:30").add(ttMap);
  1532 + } else if(fcsjT > 6*60+30 && fcsjT <= 8*60+30){
  1533 + keyMap.get("6:31——8:30").add(ttMap);
  1534 + } else if(fcsjT > 8*60+30 && fcsjT <= 16*60){
  1535 + keyMap.get("8:31——16:00").add(ttMap);
  1536 + } else if(fcsjT > 16*60 && fcsjT <= 18*60){
  1537 + keyMap.get("16:01——18:00").add(ttMap);
  1538 + } else {
  1539 + keyMap.get("18:01——(末)").add(ttMap);
  1540 + }
  1541 + }
  1542 +
  1543 + for(String key : keyMap.keySet()){
  1544 + Map<String, Object> tempMap = new HashMap<String, Object>();
  1545 + List<Map<String, Object>> list2 = keyMap.get(key);
  1546 + List<Integer> cjs = new ArrayList<Integer>();
  1547 + List<Integer> fcsj_s = new ArrayList<Integer>();
  1548 + List<Integer> fcsj_x = new ArrayList<Integer>();
  1549 + int sxsj = 0, xxsj = 0, sxtssj = 0, xxtssj = 0;
  1550 + int sxbc = 0, xxbc = 0, sxtsbc = 0, xxtsbc = 0;
  1551 + int temp = 48*60+1, zcj = 0;
  1552 + boolean ists = false;
  1553 + String lpname="";
  1554 + for(Map<String, Object> m : list2){
  1555 + String bcType=m.get("bcType").toString();
  1556 + if(bcType.equals("in") || bcType.equals("out")){
  1557 + temp=24*60+1;
  1558 + }else{
  1559 + String[] split = m.get("fcsj").toString().split(":");
  1560 + int fcsj = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);
  1561 +
  1562 + int xlDir = Integer.valueOf(m.get("dir").toString());
  1563 + int bcsj = Integer.valueOf(m.get("bcsj").toString());
  1564 + if(temp >= fcsj){
  1565 + temp = fcsj+bcsj;
  1566 + ists = false;
  1567 + }
  1568 + if(xlDir == 0){
  1569 + fcsj_s.add(fcsj);
  1570 + sxsj += bcsj;
  1571 + sxbc ++;
  1572 + if(!ists){
  1573 + if(lpname.equals("")){
  1574 + lpname=m.get("lp").toString();
  1575 + }else{
  1576 + if(lpname.equals(m.get("lp").toString())){
  1577 + if(fcsj-temp<90){
  1578 + sxtssj += fcsj - temp;
  1579 + }
  1580 + }
  1581 + lpname=m.get("lp").toString();
  1582 +
  1583 + }
  1584 + sxtsbc++;
  1585 + }
  1586 +
  1587 + } else {
  1588 +
  1589 + fcsj_x.add(fcsj);
  1590 + xxsj += bcsj;
  1591 + xxbc ++;
  1592 +
  1593 + if(!ists){
  1594 + if(lpname.equals("")){
  1595 + lpname=m.get("lp").toString();
  1596 + }else{
  1597 + if(lpname.equals(m.get("lp").toString())){
  1598 + if(fcsj-temp<90){
  1599 + xxtssj += fcsj- temp;
  1600 + }
  1601 + }
  1602 + lpname=m.get("lp").toString();
  1603 + }
  1604 + xxtsbc++;
  1605 + }
  1606 +
  1607 + }
  1608 + if(temp < fcsj){
  1609 + cjs.add(fcsj - temp);
  1610 + temp = fcsj;
  1611 + }
  1612 + if(m.get("ists").toString().trim().equals("1")){
  1613 + ists = true;
  1614 + }else{
  1615 + ists=false;
  1616 + }
  1617 + }
  1618 + }
  1619 + Collections.sort(fcsj_s);
  1620 + int fcsjs=0;
  1621 + for (int i = 0; i < fcsj_s.size(); i++) {
  1622 + if(i==0){
  1623 + fcsjs =fcsj_s.get(i);
  1624 + }else{
  1625 + cjs.add(fcsj_s.get(i)-fcsjs);
  1626 + fcsjs=fcsj_s.get(i);
  1627 + }
  1628 +
  1629 + }
  1630 + Collections.sort(fcsj_x);
  1631 + int fcsjx=0;
  1632 + for (int i = 0; i < fcsj_x.size(); i++) {
  1633 + if(i==0){
  1634 + fcsjx =fcsj_x.get(i);
  1635 + }else{
  1636 + cjs.add(fcsj_x.get(i)-fcsjx);
  1637 + fcsjx =fcsj_x.get(i);
  1638 + }
  1639 +
  1640 + }
  1641 + Collections.sort(cjs);
  1642 + for(int i : cjs){
  1643 + zcj += i;
  1644 + }
  1645 + tempMap.put("sjd", key);
  1646 + tempMap.put("sxsj", sxbc != 0 ? sxsj / sxbc : "0");
  1647 + tempMap.put("xxsj", xxbc != 0 ? xxsj / xxbc : "0");
  1648 + tempMap.put("sxtssj", sxtsbc != 0 ? sxtssj / sxtsbc : "0");
  1649 + tempMap.put("xxtssj", xxtsbc != 0 ? xxtssj / xxtsbc : "0");
  1650 + tempMap.put("fqsj", Integer.valueOf(tempMap.get("sxsj").toString()) + Integer.valueOf(tempMap.get("xxsj").toString())
  1651 + + Integer.valueOf(tempMap.get("sxtssj").toString()) + Integer.valueOf(tempMap.get("xxtssj").toString()));
  1652 + tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
  1653 + tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
  1654 + maps.put(key, tempMap);
  1655 + }
  1656 + newList.add(maps.get("(首)——6:30"));
  1657 + newList.add(maps.get("6:31——8:30"));
  1658 + newList.add(maps.get("8:31——16:00"));
  1659 + newList.add(maps.get("16:01——18:00"));
  1660 + newList.add(maps.get("18:01——(末)"));*/
  1661 +
  1662 + return newList;
  1663 + }
  1664 + @Override
  1665 + public List<Map<String, Object>> getTtinfo(Map<String, Object> map) {
  1666 + // TODO Auto-generated method stub
  1667 + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  1668 + String line = map.get("line").toString();
  1669 + try {
  1670 + List<String> objList = new ArrayList<String>();
  1671 + String sql = "select tt.id, tt.name from bsth_c_s_ttinfo tt"
  1672 + + " left join bsth_c_line cl on cl.id = tt.xl"
  1673 + + " where tt.is_cancel = 0 and tt.is_enable_dis_template = 1";
  1674 + if(line.length() != 0){
  1675 + sql += " and cl.line_code = ?";
  1676 + objList.add(line);
  1677 + }
  1678 + sql += " order by tt.create_date desc";
  1679 +
  1680 + list = jdbcTemplate.query(sql, objList.toArray(),
  1681 + new RowMapper<Map<String, Object>>(){
  1682 + @Override
  1683 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  1684 + Map<String, Object> map = new HashMap<String, Object>();
  1685 + map.put("id", rs.getString("id"));
  1686 + map.put("name", rs.getString("name"));
  1687 + return map;
  1688 + }
  1689 + });
  1690 + }catch (Exception e) {
  1691 + // TODO Auto-generated catch block
  1692 + e.printStackTrace();
  1693 + }
  1694 + return list;
  1695 + }
  1696 +
  1697 + @Override
  1698 + public List<Map<String, Object>> jobFwqk(Map<String, Object> map) {
  1699 + // TODO Auto-generated method stub
  1700 + String[] lblxs = {"配车","保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","路救抛锚","其他" };
  1701 + Set<String> lblxSet = new HashSet<String>();
  1702 + for(String s : lblxs){
  1703 + lblxSet.add(s);
  1704 + }
  1705 + String line=map.get("line").toString();
  1706 + String date=map.get("date").toString();
  1707 + map.put("bcType", "normal");
  1708 + List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
  1709 + List<ScheduleRealInfo> sList=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date);
  1710 + for (int i = 0; i < sList.size(); i++) {
  1711 + ScheduleRealInfo scheduleRealInfo = sList.get(i);
  1712 + if (!(scheduleRealInfo.getBcType().equals("in")
  1713 + || scheduleRealInfo.getBcType().equals("out")
  1714 + ||scheduleRealInfo.getBcType().equals("ldks"))) {
  1715 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  1716 + if (childTaskPlans.isEmpty()) {
  1717 + Map<String, Object> newMap = new HashMap<String, Object>();
  1718 + String adjustExps = "";
  1719 + if (scheduleRealInfo.getAdjustExps() == null) {
  1720 + adjustExps = "其他";
  1721 + } else if(scheduleRealInfo.getAdjustExps().equals("")){
  1722 + adjustExps = "其他";
  1723 + } else if(!(lblxSet.contains(scheduleRealInfo.getAdjustExps()))){
  1724 + adjustExps = "其他";
  1725 + } else {
  1726 + adjustExps = scheduleRealInfo.getAdjustExps();
  1727 + }
  1728 + if (scheduleRealInfo.getStatus() == -1) {
  1729 + newMap.put("nr", adjustExps);
  1730 + newMap.put("lp", scheduleRealInfo.getLpName());
  1731 + newMap.put("nbbm", scheduleRealInfo.getClZbh());
  1732 + newMap.put("jgh", scheduleRealInfo.getjGh()+scheduleRealInfo.getjName()+"/"+scheduleRealInfo.getsGh()+scheduleRealInfo.getsName());
  1733 + newMap.put("dz", scheduleRealInfo.getQdzName());
  1734 + newMap.put("sj", scheduleRealInfo.getFcsj());
  1735 + newMap.put("lbbc", 1);
  1736 + newMap.put("gzf", " ");
  1737 + newMap.put("lblc", scheduleRealInfo.getJhlcOrig());
  1738 + newMap.put("jyqp", scheduleRealInfo.getRemarks());
  1739 + list.add(newMap);
  1740 + }
  1741 +
  1742 + } else {
  1743 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  1744 + if (scheduleRealInfo.getStatus() == -1) {
  1745 + double zlblc=0.0;
  1746 + while (it.hasNext()) {
  1747 + ChildTaskPlan childTaskPlan = it.next();
  1748 + if(childTaskPlan.getMileageType().equals("service")){
  1749 + if (childTaskPlan.isDestroy()) {
  1750 + zlblc=Arith.add(zlblc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());
  1751 + }
  1752 + }
  1753 + }
  1754 + Map<String, Object> newMap = new HashMap<String, Object>();
  1755 + String adjustExps = "";
  1756 + if (scheduleRealInfo.getAdjustExps() == "" || scheduleRealInfo.getAdjustExps() == null) {
  1757 + adjustExps = "其他";
  1758 + } else if(!(lblxSet.contains(scheduleRealInfo.getAdjustExps()))){
  1759 + adjustExps = "其他";
  1760 + } else {
  1761 + adjustExps = scheduleRealInfo.getAdjustExps();
  1762 + }
  1763 + newMap.put("nr", adjustExps);
  1764 + newMap.put("lp", scheduleRealInfo.getLpName());
  1765 + newMap.put("nbbm", scheduleRealInfo.getClZbh());
  1766 + newMap.put("jgh", scheduleRealInfo.getjGh()+scheduleRealInfo.getjName()+"/"+scheduleRealInfo.getsGh()+scheduleRealInfo.getsName());
  1767 + newMap.put("dz", scheduleRealInfo.getQdzName());
  1768 + newMap.put("sj", scheduleRealInfo.getFcsj());
  1769 + newMap.put("lbbc", 1);
  1770 + newMap.put("lblc", zlblc);
  1771 + newMap.put("jyqp", scheduleRealInfo.getRemarks());
  1772 + list.add(newMap);
  1773 + } else {
  1774 + while (it.hasNext()) {
  1775 + ChildTaskPlan childTaskPlan = it.next();
  1776 + if (childTaskPlan.isDestroy()) {
  1777 + if(childTaskPlan.getMileageType().equals("service")){
  1778 + String destroyReason = "";
  1779 + if (childTaskPlan.getDestroyReason() == null) {
  1780 + destroyReason = "其他";
  1781 + } else if (childTaskPlan.getDestroyReason().equals("")) {
  1782 + destroyReason = "其他";
  1783 + } else if(!(lblxSet.contains(childTaskPlan.getDestroyReason()))){
  1784 + destroyReason = "其他";
  1785 + } else {
  1786 + destroyReason = childTaskPlan.getDestroyReason();
  1787 + }
  1788 + Map<String, Object> newMap = new HashMap<String, Object>();
  1789 + newMap.put("nr", destroyReason);
  1790 + newMap.put("lp", scheduleRealInfo.getLpName());
  1791 + newMap.put("nbbm", scheduleRealInfo.getClZbh());
  1792 + newMap.put("jgh", scheduleRealInfo.getjGh()+scheduleRealInfo.getjName()+"/"+scheduleRealInfo.getsGh()+scheduleRealInfo.getsName());
  1793 + newMap.put("dz", childTaskPlan.getStartStationName());
  1794 + newMap.put("sj", childTaskPlan.getStartDate());
  1795 + newMap.put("gzf", " ");
  1796 + newMap.put("lbbc", 0);
  1797 + newMap.put("lblc", childTaskPlan.getMileage());
  1798 + newMap.put("jyqp", childTaskPlan.getRemarks());
  1799 + list.add(newMap);
  1800 + }
  1801 + }
  1802 + }
  1803 + }
  1804 +
  1805 + }
  1806 + }
  1807 + }
  1808 + List<Map<String, Object>> listNew=new ArrayList<Map<String,Object>>();
  1809 + for (int i = 0; i < lblxs.length; i++) {
  1810 + String lx=lblxs[i];
  1811 + double lblc=0.0;
  1812 + int lbbc=0;
  1813 + for (int j = 0; j < list.size(); j++) {
  1814 + Map<String, Object> m1=list.get(j);
  1815 + if(lx.equals(m1.get("nr").toString())){
  1816 + m1.put("lx", 0);
  1817 + listNew.add(m1);
  1818 + lblc =Arith.add(lblc,Double.parseDouble(m1.get("lblc").toString()));
  1819 + lbbc += Integer.parseInt(m1.get("lbbc").toString());
  1820 + }
  1821 + }
  1822 + if(lblc>0){
  1823 + Map<String, Object> newMap = new HashMap<String, Object>();
  1824 + newMap.put("lx", 1);
  1825 + newMap.put("nr", lx);
  1826 + newMap.put("lp", "小计");
  1827 + newMap.put("nbbm", "少驶班次");
  1828 + newMap.put("jgh", lbbc);
  1829 + newMap.put("lbbc", "少驶公里");
  1830 + newMap.put("lblc", lblc);
  1831 + newMap.put("dz", " ");
  1832 + newMap.put("sj", " ");
  1833 + newMap.put("gzf", " ");
  1834 + newMap.put("jyqp"," ");
  1835 + listNew.add(newMap);
  1836 + }
  1837 +
  1838 +
  1839 + }
  1840 + Collections.sort(listNew, new ComparableJob());
  1841 + return listNew;
  1842 + }
  1843 +
  1844 + //统计临加班次详细信息
  1845 + @Override
  1846 + public List<Map<String, Object>> jobLjqk(Map<String, Object> map) {
  1847 + // TODO Auto-generated method stub
  1848 + String line=map.get("line").toString();
  1849 + String date=map.get("date").toString();
  1850 + map.put("bcType", "normal");
  1851 + List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
  1852 + List<ScheduleRealInfo> sList=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date);
  1853 + for (int i = 0; i < sList.size(); i++) {
  1854 + ScheduleRealInfo scheduleRealInfo=sList.get(i);
  1855 + if (!(scheduleRealInfo.getBcType().equals("in")
  1856 + || scheduleRealInfo.getBcType().equals("out")
  1857 + || scheduleRealInfo.getBcType().equals("ldks"))) {
  1858 +// Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  1859 +// if(childTaskPlans.isEmpty()){
  1860 + if(scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
  1861 + Map<String, Object> newMap=new HashMap<String,Object>();
  1862 + newMap.put("lp", scheduleRealInfo.getLpName());
  1863 + newMap.put("nbbm", scheduleRealInfo.getClZbh());
  1864 + newMap.put("jgh", scheduleRealInfo.getjGh());
  1865 + newMap.put("dz", scheduleRealInfo.getQdzName());
  1866 + newMap.put("sj", scheduleRealInfo.getFcsj());
  1867 + newMap.put("ljlc", scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc());
  1868 + newMap.put("jyqp", scheduleRealInfo.getRemarks()==null?"":scheduleRealInfo.getRemarks());
  1869 + list.add(newMap);
  1870 + }
  1871 +// }else{
  1872 +// Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  1873 +// while (it.hasNext()) {
  1874 +// ChildTaskPlan childTaskPlan = it.next();
  1875 +// if (childTaskPlan.isDestroy()) {
  1876 +// }
  1877 +// }
  1878 +// }
  1879 + }
  1880 + }
  1881 + return list;
  1882 + }
  1883 +
  1884 + public static double culateCJLC2(List<ScheduleRealInfo> list, String item) {
  1885 + // TODO Auto-generated method stub
  1886 + double sum = 0;
  1887 + Set<ChildTaskPlan> cts;
  1888 + for(ScheduleRealInfo sch : list){
  1889 + if (sch.isSflj())
  1890 + continue;
  1891 + cts = sch.getcTasks();
  1892 + //有子任务
  1893 + if (cts != null && cts.size() > 0) {
  1894 + for(ChildTaskPlan c : cts){
  1895 + if(c.isDestroy() && c.getDestroyReason().equals(item))
  1896 + sum = Arith.add(sum, c.getMileage());
  1897 + }
  1898 + }
  1899 +// else if(isInOut(sch))
  1900 +// continue;
  1901 + //主任务烂班
  1902 + else if(sch.getStatus() == -1){
  1903 + if(sch.getAdjustExps().equals(item) ||
  1904 + (StringUtils.isEmpty(sch.getAdjustExps()) && item.equals("其他"))){
  1905 + sum = Arith.add(sum, sch.getJhlcOrig());
  1906 + }
  1907 + }
  1908 + else if(item.equals("其他")){
  1909 + double diff = Arith.sub(sch.getJhlcOrig(), sch.getJhlc());
  1910 + if(diff > 0){
  1911 + sum = Arith.add(sum, diff);
  1912 + }
  1913 + }
  1914 + }
  1915 + return sum;
  1916 +
  1917 + }
  1918 + @Override
  1919 + public Map<String, Object> jobHzxx(Map<String, Object> map) {
  1920 + // TODO Auto-generated method stub
  1921 + String line="";
  1922 + if(map.get("line")!=null){
  1923 + line=map.get("line").toString();
  1924 + }
  1925 + String date="";
  1926 + if(map.get("date")!=null){
  1927 + date=map.get("date").toString();
  1928 + }
  1929 +
  1930 + List<ScheduleRealInfo> sList=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date);
  1931 + List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
  1932 + for (int i = 0; i < sList.size(); i++) {
  1933 + ScheduleRealInfo s=sList.get(i);
  1934 + Set<ChildTaskPlan> cts = s.getcTasks();
  1935 + if(cts != null && cts.size() > 0){
  1936 + lists.add(s);
  1937 + }else{
  1938 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
  1939 + lists.add(s);
  1940 + }
  1941 + }
  1942 + }
  1943 + Map<String, Object> newMap=culateService.culateWdbcs(lists);
  1944 + newMap.put("jhbc", culateService.culateJhbc(sList,""));
  1945 + newMap.put("jhbczgf", culateService.culateJhbc(sList,"zgf"));
  1946 + newMap.put("jhbcwgf", culateService.culateJhbc(sList,"wgf"));
  1947 + newMap.put("jhgl", culateService.culateJhgl(sList));
  1948 + newMap.put("jhglzgf", culateService.culateJhgl_(sList,"zgf"));
  1949 + newMap.put("jhglwgf", culateService.culateJhgl_(sList,"wgf"));
  1950 +
  1951 + newMap.put("lbgl", culateService.culateLbgl(sList));
  1952 + newMap.put("lbbc", culateService.culateLbbc(sList));
  1953 +
  1954 + newMap.put("sjbc", culateService.culateSjbc(lists,""));
  1955 + newMap.put("sjbczgf", culateService.culateSjbc(lists,"zgf"));
  1956 + newMap.put("sjbcwgf", culateService.culateSjbc(lists,"wgf"));
  1957 + newMap.put("sjgl", culateService.culateSjgl(lists));
  1958 + newMap.put("sjglzgf", culateService.culateSjgl_(lists,"zgf"));
  1959 + newMap.put("sjglwgf", culateService.culateSjgl_(lists,"wgf"));
  1960 +
  1961 +
  1962 + newMap.put("ljgl", culateService.culateLjgl(lists));
  1963 + newMap.put("ljglzgf", culateService.culateLjgl_(lists,"zgf"));
  1964 + newMap.put("ljglwgf", culateService.culateLjgl_(lists,"wgf"));
  1965 +
  1966 + newMap.put("ljbc", culateService.culateLjbc(lists,""));
  1967 + newMap.put("ksgl", culateService.culateKsgl(lists));
  1968 +
  1969 + newMap.put("jhfbbc",culateService.culateDtfzbc(lists, "venting", "jh", ""));
  1970 + newMap.put("jhfbbczgf",culateService.culateDtfzbc(lists, "venting", "jh", "zgf"));
  1971 + newMap.put("jhfbbcwgf",culateService.culateDtfzbc(lists, "venting", "jh", "wgf"));
  1972 + newMap.put("sjfbbc",culateService.culateDtfzbc(lists, "venting", "sj", ""));
  1973 + newMap.put("sjfbbczgf",culateService.culateDtfzbc(lists, "venting", "sj", "zgf"));
  1974 + newMap.put("sjfbbcwgf",culateService.culateDtfzbc(lists, "venting", "sj", "wgf"));
  1975 +
  1976 + newMap.put("jhdtbc",culateService.culateDtfzbc(lists, "major", "jh", ""));
  1977 + newMap.put("jhdtbczgf",culateService.culateDtfzbc(lists, "major", "jh", "zgf"));
  1978 + newMap.put("jhdtbcwgf",culateService.culateDtfzbc(lists, "major", "jh", "wgf"));
  1979 + newMap.put("sjdtbc",culateService.culateDtfzbc(lists, "major", "sj", ""));
  1980 + newMap.put("sjdtbczgf",culateService.culateDtfzbc(lists, "major", "sj", "zgf"));
  1981 + newMap.put("sjdtbcwgf",culateService.culateDtfzbc(lists, "major", "sj", "wgf"));
  1982 + return newMap;
  1983 + }
  1984 + @Override
  1985 + public List<Map<String, Object>> lineList() {
  1986 + // TODO Auto-generated method stub
  1987 + List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
  1988 + List<Line> findAllLine = lineRepository.findAllLine();
  1989 + for(Line line : findAllLine){
  1990 + Map<String, Object> map=new HashMap<String,Object>();
  1991 + map.put("gsbm", line.getCompany());
  1992 + map.put("fgsbm", line.getBrancheCompany());
  1993 + map.put("xlbm", line.getLineCode());
  1994 + if(line.getDestroy() == 1){
  1995 + map.put("xlname", line.getName() + "(撤销)");
  1996 + } else {
  1997 + map.put("xlname", line.getName());
  1998 + }
  1999 + list.add(map);
  2000 + }
  2001 + return list;
  2002 + }
  2003 + @Override
  2004 + public List<Map<String, Object>> lineListNotDestroy() {
  2005 + // TODO Auto-generated method stub
  2006 + List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
  2007 + Iterator<Line> iterator = lineRepository.findAllService().iterator();
  2008 + Line line;
  2009 + while (iterator.hasNext()) {
  2010 + line = iterator.next();
  2011 + Map<String, Object> map=new HashMap<String,Object>();
  2012 + map.put("gsbm", line.getCompany());
  2013 + map.put("fgsbm", line.getBrancheCompany());
  2014 + map.put("xlbm", line.getLineCode());
  2015 + map.put("xlname", line.getName());
  2016 + list.add(map);
  2017 + }
  2018 + return list;
  2019 + }
  2020 + @Override
  2021 + public List<Map<String, String>> carList(Map<String, Object> maps) {
  2022 + // TODO Auto-generated method stub
  2023 + // 转大写
  2024 + String nbbm =maps.get("nbbm").toString().toUpperCase();
  2025 + String gsbm="";
  2026 +
  2027 + if(maps.get("gsbm")!=null)
  2028 + gsbm= maps.get("gsbm").toString().trim();
  2029 +// String fgsbm=maps.get("fgsbm").toString().trim();
  2030 + String xlbm=maps.get("xlbm").toString().trim();
  2031 + List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  2032 + Map<String, String> map;
  2033 + Set<String> allSet = BasicData.nbbm2CompanyCodeMap.keySet();
  2034 +
  2035 + Line line;
  2036 + for (String k : allSet) {
  2037 + if (k.indexOf(nbbm) != -1) {
  2038 + // 所属线路
  2039 + boolean fage=true;
  2040 + map = new HashMap<>();
  2041 + line = BasicData.nbbm2LineMap.get(k);
  2042 + String clgsdm= BasicData.nbbm2CompanyCodeMap.get(k);
  2043 +
  2044 + map.put("id", k);
  2045 + map.put("text", k);
  2046 + if (null != line) {
  2047 + map.put("lineName", line.getName());
  2048 + map.put("lineCode", line.getLineCode());
  2049 + }
  2050 +
  2051 + if(!xlbm.equals("")){
  2052 + if(null!=line){
  2053 + if(!line.getLineCode().equals(xlbm)){
  2054 + fage=false;
  2055 + }
  2056 + }
  2057 +
  2058 + }
  2059 +
  2060 + if(!gsbm.equals("")){
  2061 + if(!clgsdm.equals(gsbm)){
  2062 + fage=false;
  2063 + }
  2064 + }
  2065 +
  2066 + if(fage){
  2067 + list.add(map);
  2068 + }
  2069 +
  2070 + }
  2071 +
  2072 + if (list.size() > 20)
  2073 + break;
  2074 + }
  2075 + return list;
  2076 + }
  2077 + @Override
  2078 + public List<Map<String, String>> carListByHistory(Map<String, Object> maps) {
  2079 + // TODO Auto-generated method stub
  2080 + // 转大写
  2081 + String nbbm = maps.get("nbbm").toString().toUpperCase();
  2082 +
  2083 + String xlbm = maps.get("xlbm").toString().trim();
  2084 + List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  2085 + Map<String, String> map;
  2086 +
  2087 + List<String> allNbbm = BasicData.lineCodeHistoryNbbmMap.get(xlbm);
  2088 +
  2089 + if(allNbbm != null){
  2090 + for(String n : allNbbm){
  2091 + if(n.indexOf(nbbm) != -1){
  2092 + map = new HashMap<>();
  2093 + map.put("id", n);
  2094 + map.put("text", n);
  2095 +
  2096 + list.add(map);
  2097 + }
  2098 +
  2099 + if (list.size() > 20)
  2100 + break;
  2101 + }
  2102 + }
  2103 +
  2104 + return list;
  2105 + }
  2106 +
  2107 +
  2108 + @Override
  2109 + public List<Map<String, String>> userList(Map<String, Object> maps) {
  2110 + // TODO Auto-generated method stub
  2111 + // 转大写
  2112 + String jsy =maps.get("jsy").toString().toUpperCase();
  2113 + String gsbm="";
  2114 + if(maps.get("gsbm")!=null)
  2115 + gsbm=maps.get("gsbm").toString().trim();
  2116 +// String fgsbm=maps.get("fgsbm").toString().trim();
  2117 + List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  2118 + Map<String, String> map;
  2119 +// Set<String> allSet = BasicData.nbbm2CompanyCodeMap.keySet();
  2120 + Set<String> allJsy = BasicData.perMap.keySet();
  2121 +
  2122 + Personnel per;
  2123 + for (String k : allJsy) {
  2124 + if (k.indexOf(jsy) != -1) {
  2125 + map = new HashMap<>();
  2126 + // 通过人员查找公司
  2127 + per = BasicData.perMap.get(k);
  2128 + String rygsdm="";
  2129 + if(null != per){
  2130 + if(per.getCompanyCode()!=null){
  2131 + rygsdm = per.getCompanyCode();
  2132 + }
  2133 + String jboCode=per.getJobCode().substring(per.getJobCode().indexOf("-")+1);
  2134 + map.put("id", jboCode);
  2135 + map.put("text", jboCode+"/"+per.getPersonnelName());
  2136 + if(!gsbm.equals("")){
  2137 + if(rygsdm.equals(gsbm)){
  2138 + list.add(map);
  2139 + }
  2140 + }
  2141 + }
  2142 + }
  2143 +
  2144 + if (list.size() > 20)
  2145 + break;
  2146 + }
  2147 + return list;
  2148 + }
  2149 +
  2150 + public List<ArrivalInfo> load4(String line, String date, int zd,String minfcsj){
  2151 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2152 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  2153 + Long date1=0L;
  2154 + Long date2=0L;
  2155 + Calendar cal = Calendar.getInstance();
  2156 + List<ArrivalInfo> list=null;
  2157 + try {
  2158 + Date dates1 = simpleDateFormat.parse(date+" "+minfcsj+":01");
  2159 + String d1=date+" "+minfcsj+":01";
  2160 +// Date dates2=simpleDateFormat.parse(date+" 23:59:59");
  2161 + date1=dates1.getTime();
  2162 +
  2163 + cal.setTime(dates1);
  2164 + int weeks_year1 = cal.get(Calendar.WEEK_OF_YEAR);
  2165 + cal.add(cal.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
  2166 + int weeks_year2 = cal.get(Calendar.WEEK_OF_YEAR);
  2167 + Date dates2=cal.getTime();
  2168 + date2=dates2.getTime();
  2169 + String d2=simpleDateFormat.format(dates2);
  2170 +
  2171 + Connection conn = null;
  2172 + PreparedStatement ps = null;
  2173 + ResultSet rs = null;
  2174 + String year=date.substring(0,4);
  2175 + String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year=? AND line_id=? "
  2176 + + " AND up_down=? AND ts >= ? AND ts <=? order by device_id,ts";
  2177 + try{
  2178 + conn = DBUtils_MS.getConnection();
  2179 + ps = conn.prepareStatement(sql);
  2180 + ps.setInt(1, weeks_year1);
  2181 + ps.setString(2, line);
  2182 + ps.setInt(3, zd);
  2183 + ps.setLong(4, date1);
  2184 + ps.setLong(5, date2);
  2185 + rs = ps.executeQuery();
  2186 +
  2187 + list = resultSet2Set(rs);
  2188 + }catch(Exception e){
  2189 + logger.error("", e);
  2190 + }finally {
  2191 + DBUtils_MS.close(rs, ps, conn);
  2192 + }
  2193 +
  2194 + } catch (ParseException e1) {
  2195 + // TODO Auto-generated catch block
  2196 + e1.printStackTrace();
  2197 + }
  2198 + return list;
  2199 +
  2200 + }
  2201 +
  2202 + public List<ArrivalInfo> load3(String line, String date, int zd){
  2203 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2204 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  2205 + Long date1=0L;
  2206 + Long date2=0L;
  2207 + Calendar cal = Calendar.getInstance();
  2208 + try {
  2209 + Date dates1 = simpleDateFormat.parse(date+" 00:00:01");
  2210 + Date dates2=simpleDateFormat.parse(date+" 23:59:59");
  2211 + date1=dates1.getTime();
  2212 + date2=dates2.getTime();
  2213 + cal.setTime(dates1);
  2214 + } catch (ParseException e1) {
  2215 + // TODO Auto-generated catch block
  2216 + e1.printStackTrace();
  2217 + }
  2218 + //周数,表分区字段
  2219 + int weeks_year1 = cal.get(Calendar.WEEK_OF_YEAR);
  2220 + List<ArrivalInfo> list = null;
  2221 + Connection conn = null;
  2222 + PreparedStatement ps = null;
  2223 + ResultSet rs = null;
  2224 + String year=date.substring(0,4);
  2225 + String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year=? AND line_id=? "
  2226 + + " AND up_down=? AND ts >= ? AND ts <=? order by device_id,ts";
  2227 + try{
  2228 + conn = DBUtils_MS.getConnection();
  2229 + ps = conn.prepareStatement(sql);
  2230 + ps.setInt(1, weeks_year1);
  2231 + ps.setString(2, line);
  2232 + ps.setInt(3, zd);
  2233 + ps.setLong(4, date1);
  2234 + ps.setLong(5, date2);
  2235 + rs = ps.executeQuery();
  2236 +
  2237 + list = resultSet2Set(rs);
  2238 + }catch(Exception e){
  2239 + logger.error("", e);
  2240 + }finally {
  2241 + DBUtils_MS.close(rs, ps, conn);
  2242 + }
  2243 + return list;
  2244 + }
  2245 +
  2246 + //根据排班查到离站
  2247 + @Override
  2248 + public List<Map<String, Object>> queryInOutStrtion(String line, String date, int zd,String lzsj) {
  2249 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2250 + //查询线路所有的站点
  2251 + List<ArrivalInfo> arrInfoList=this.load3(line, date, zd);
  2252 + List<StationRoute> listStation= stationRouteRepository.findByLine(line,zd);
  2253 + List<Map<String, Object>> inoutList=new ArrayList<Map<String,Object>>();
  2254 + //保存的所以的站点信息
  2255 + Map<String, Object> map1=new HashMap<String,Object>();
  2256 + map1.put("bc", "");
  2257 + map1.put("nbbm", "");
  2258 +
  2259 + //所有的班次信息(实际排班排序)
  2260 + List<ScheduleRealInfo> realList= scheduleRealInfoRepository.scheduleByDateAndLineInOut(line, date,zd+"");
  2261 + for (int i = 0; i < listStation.size(); i++) {
  2262 + map1.put(listStation.get(i).getStationCode()+"in"
  2263 + , listStation.get(i).getStationName());
  2264 + map1.put(listStation.get(i).getStationCode()+"out"
  2265 + , (i+1));
  2266 + }
  2267 + inoutList.add(map1);
  2268 +
  2269 + for (int i = 0; i < realList.size(); i++) {
  2270 + ScheduleRealInfo sinfo=realList.get(i);
  2271 + String devuceId=BasicData.deviceId2NbbmMap.inverse().get(sinfo.getClZbh());
  2272 + String sjfcsj=sinfo.getRealExecDate()+" "+sinfo.getFcsjActual()+":00";
  2273 + String sjddsj=sinfo.getRealExecDate()+" "+sinfo.getZdsjActual()+":59";
  2274 +
  2275 + try {
  2276 + Date dates1 = simpleDateFormat.parse(sjfcsj);
  2277 + Date dates2=simpleDateFormat.parse(sjddsj);
  2278 + Long date1=dates1.getTime();
  2279 + Long date2=dates2.getTime();
  2280 + List<ArrivalInfo> arrList=new ArrayList<ArrivalInfo>();
  2281 + for (int j = 0; j < arrInfoList.size(); j++) {
  2282 + ArrivalInfo a=arrInfoList.get(j);
  2283 + if(a.getDeviceId().equals(devuceId) && a.getTs()>=date1 && a.getTs()<=date2){
  2284 + arrList.add(a);
  2285 + }
  2286 + }
  2287 +
  2288 + Map<String, Object> map2=new HashMap<String,Object>();
  2289 + map2.put("bc", (i+1));
  2290 + map2.put("nbbm", sinfo.getClZbh());
  2291 +
  2292 + for (int j = 0; j < listStation.size(); j++) {
  2293 + StationRoute s=listStation.get(j);
  2294 + List<ArrivalInfo> arrivalList=new ArrayList<ArrivalInfo>();
  2295 + for (int j2 = 0; j2 < arrList.size(); j2++) {
  2296 + ArrivalInfo a=arrList.get(j2);
  2297 + if(s.getStationCode().equals(a.getStopNo())){
  2298 + arrivalList.add(a);
  2299 + }
  2300 + }
  2301 + Map<String, String> m=this.strInOut(arrivalList,lzsj);
  2302 +
  2303 + map2.put(s.getStationCode()+"in", m.get("in"));
  2304 + map2.put(s.getStationCode()+"out", m.get("out"));
  2305 + map2.put(s.getStationCode(), m.get("type"));
  2306 + }
  2307 + inoutList.add(map2);
  2308 + } catch (ParseException e) {
  2309 + // TODO Auto-generated catch block
  2310 + e.printStackTrace();
  2311 + }
  2312 + }
  2313 + return inoutList;
  2314 + }
  2315 +
  2316 + //根据GPS查到离站
  2317 + @Override
  2318 + public List<Map<String, Object>> queryInOutStrtions(String line, String date, int zd,String lzsj) {
  2319 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2320 + String minfcsj="02:00";
  2321 + List<Line> lineList=lineRepository.findLineByCode(line);
  2322 + if(lineList.size()>0){
  2323 + List<String> objList = new ArrayList<String>();
  2324 + objList.add(lineList.get(0).getId() + "");
  2325 + String sqlMinYysj="select start_opt from bsth_c_line_config where "
  2326 + + " id = ("
  2327 + + "select max(id) from bsth_c_line_config where line = ?"
  2328 + + ")";
  2329 + minfcsj= jdbcTemplate.queryForObject(sqlMinYysj, objList.toArray(), String.class);
  2330 + }
  2331 + List<ArrivalInfo> arrInfoList=this.load4(line, date, zd,minfcsj);
  2332 +
  2333 + //查询线路所有的站点
  2334 + List<StationRoute> listStation= stationRouteRepository.findByLine(line,zd);
  2335 + List<Map<String, Object>> inoutList=new ArrayList<Map<String,Object>>();
  2336 + //保存的所以的站点信息
  2337 + Map<String, Object> map1=new HashMap<String,Object>();
  2338 + map1.put("bc", "");
  2339 + map1.put("nbbm", "");
  2340 +
  2341 + for (int i = 0; i < listStation.size(); i++) {
  2342 + map1.put(listStation.get(i).getStationCode()+"in"
  2343 + , listStation.get(i).getStationName());
  2344 + map1.put(listStation.get(i).getStationCode()+"out"
  2345 + , (i+1));
  2346 + }
  2347 + inoutList.add(map1);
  2348 + List<String> list_nbbm=new ArrayList<String>();
  2349 + Map<String, Object> m=new HashMap<String,Object>();
  2350 + for (int i = 0; i < arrInfoList.size(); i++) {
  2351 + arrInfoList.get(i).setRoute(-1);
  2352 + for (int j = 0; j < listStation.size(); j++) {
  2353 + if(arrInfoList.get(i).getStopNo().equals(listStation.get(j).getStationCode())){
  2354 + arrInfoList.get(i).setRoute(listStation.get(j).getStationRouteCode());
  2355 +
  2356 + }
  2357 + }
  2358 + if(m.get(arrInfoList.get(i).getDeviceId())==null){
  2359 + m.put(arrInfoList.get(i).getDeviceId(), arrInfoList.get(i).getDeviceId());
  2360 + list_nbbm.add(arrInfoList.get(i).getDeviceId());
  2361 + }
  2362 + }
  2363 +
  2364 + Map<String, Object> map2=new HashMap<String, Object>();
  2365 + for (int i = 0; i < list_nbbm.size(); i++) {
  2366 + String nbbm=list_nbbm.get(i);
  2367 +
  2368 + int zdbm =0;
  2369 + int inout=-1;
  2370 + List<ArrivalInfo> arrivalList=new ArrayList<ArrivalInfo>();
  2371 + for (int j = 0; j < arrInfoList.size(); j++) {
  2372 + ArrivalInfo aif=arrInfoList.get(j);
  2373 +
  2374 + if(aif.getDeviceId().equals(nbbm)){
  2375 + map2.put("nbbm", BasicData.deviceId2NbbmMap.get(nbbm));
  2376 + if(aif.getRoute()>-1){
  2377 + if(((inout==aif.getInOut() && zdbm==aif.getRoute()) || !(zdbm ==aif.getRoute()))){
  2378 + if(aif.getRoute()<=zdbm ){
  2379 + inoutList.add(map2);
  2380 + map2=new HashMap<String, Object>();
  2381 + arrivalList=new ArrayList<ArrivalInfo>();
  2382 + }
  2383 + }
  2384 + arrivalList.add(aif);
  2385 +// if(!(zdbm ==aif.getRoute())){
  2386 + Map<String, String> m_=this.strInOut(arrivalList,lzsj);
  2387 + map2.put(aif.getStopNo()+"in", m_.get("in"));
  2388 + map2.put(aif.getStopNo()+"out", m_.get("out"));
  2389 + map2.put(aif.getStopNo(), m_.get("type"));
  2390 +// arrivalList=new ArrayList<ArrivalInfo>();
  2391 +// }
  2392 + zdbm =aif.getRoute();
  2393 + inout=aif.getInOut();
  2394 +
  2395 + }
  2396 +
  2397 + }
  2398 +
  2399 + }
  2400 + }
  2401 +
  2402 + return inoutList;
  2403 + }
  2404 +
  2405 + public Map<String, String> strInOut(List<ArrivalInfo> lists,String lzsj){
  2406 + String inout="";
  2407 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  2408 + Long in=0L;
  2409 + Long out=0L;
  2410 + for(int i=0;i<lists.size();i++){
  2411 + ArrivalInfo t1=lists.get(i);
  2412 + if(t1.getInOut()==0){
  2413 + in=t1.getTs();
  2414 + t1.setJzsj(sdf.format(new Date(t1.getTs())));
  2415 + for(int j=0;j<lists.size();j++){
  2416 + ArrivalInfo t2=lists.get(j);
  2417 + if(t2.getInOut()==1 && t2.getDeviceId().equals(t1.getDeviceId())
  2418 + && t2.getStopNo().equals(t1.getStopNo())
  2419 + && t2.getTs()>t1.getTs()){
  2420 + t1.setCzsj(sdf.format(new Date(t2.getTs())));
  2421 + out =t2.getTs();
  2422 + break;
  2423 + }else{
  2424 + t1.setCzsj("");
  2425 + out =0l;
  2426 + }
  2427 + }
  2428 +
  2429 + }else{
  2430 + out =t1.getTs();
  2431 + t1.setCzsj(sdf.format(new Date(t1.getTs())));
  2432 + for(int j=0;j<lists.size();j++){
  2433 + ArrivalInfo t2=lists.get(j);
  2434 + if(t2.getInOut()==0 && t2.getDeviceId().equals(t1.getDeviceId())
  2435 + && t2.getStopNo().equals(t1.getStopNo())
  2436 + && t2.getTs()>t1.getTs()){
  2437 + in =t2.getTs();
  2438 + t1.setJzsj(sdf.format(new Date(t2.getTs())));
  2439 + break;
  2440 + }
  2441 + }
  2442 + }
  2443 + }
  2444 +
  2445 + Map<String, String> map=new HashMap<String,String>();
  2446 + if(in>0 ){
  2447 + map.put("in",sdf.format(new Date(in)));
  2448 +
  2449 + }else{
  2450 + map.put("in", "");
  2451 + }
  2452 + if(out>0){
  2453 + map.put("out", sdf.format(new Date(out)));
  2454 + }else{
  2455 + map.put("out", "");
  2456 + }
  2457 + Long sj=1000000000L;
  2458 + if(!lzsj.trim().equals("")){
  2459 + sj =Long.parseLong(lzsj);
  2460 + }
  2461 + if(in>0 && out >0){
  2462 + if((out-in)/1000>sj){
  2463 + map.put("type", "y");
  2464 + }else{
  2465 + map.put("type", "n");
  2466 + }
  2467 + }
  2468 + return map;
  2469 + }
  2470 + @Override
  2471 + public List<StationRoute> queryStrinon(String line, int zd) {
  2472 + // TODO Auto-generated method stub
  2473 + List<StationRoute> listStation= stationRouteRepository.findByLine(line,zd);
  2474 + return listStation;
  2475 + }
  2476 +
  2477 + @Override
  2478 + public List<Map<String, Object>> countMileageSum(Map<String, Object> map) {
  2479 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  2480 +
  2481 + String date="", date2="";
  2482 + if(map.get("date")!=null){
  2483 + date=map.get("date").toString();
  2484 + }
  2485 + if(map.get("date2")!=null){
  2486 + date2=map.get("date2").toString();
  2487 + }
  2488 + String nature="0";
  2489 + if(map.get("nature")!=null){
  2490 + nature=map.get("nature").toString();
  2491 + }
  2492 + String type="";
  2493 + if(map.get("type")!=null){
  2494 + type=map.get("type").toString();
  2495 + }
  2496 +
  2497 + List<Map<String, Object>> listAll = calcWaybillService.getLineMileage("", "", "", date, date2, "", "", "", "query");
  2498 + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  2499 + Map<String, Boolean> lineMap=lineService.lineNature();
  2500 + if(nature.equals("0")){
  2501 + list=listAll;
  2502 + }else{
  2503 + for (Map<String, Object> m : listAll) {
  2504 + if(m.get("xl") != null && m.get("xl").toString().trim().length() > 0){
  2505 + String xl = m.get("xl").toString();
  2506 + if(nature.equals("1")){
  2507 + if(lineMap.containsKey(xl) && lineMap.get(xl)){
  2508 + list.add(m);
  2509 + }
  2510 + }else{
  2511 + if(!(lineMap.containsKey(xl) && lineMap.get(xl))){
  2512 + list.add(m);
  2513 + }
  2514 + }
  2515 + }
  2516 + }
  2517 + }
  2518 +
  2519 + List<Business> allBusiness = businessRepository.getOrder();
  2520 + Set<String> gsFgsSet = new HashSet<String>(); // 有排序编号的公司,防止乱序或者合计值出问题。
  2521 + for(Business b : allBusiness){
  2522 + gsFgsSet.add(b.getUpCode() + "_" + b.getBusinessCode());
  2523 + gsFgsSet.add(b.getBusinessCode());
  2524 + }
  2525 +
  2526 + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>();
  2527 + List<String> keyList = new ArrayList<String>();
  2528 +
  2529 + Map<String, Object> hj = new HashMap<String, Object>(); // 合计
  2530 + hj.put("gsName", "合计");
  2531 + hj.put("fgsBm", " ");
  2532 +
  2533 + for(Map<String, Object> m : list){
  2534 + m.put("gsBm", m.get("gsdm"));
  2535 + m.put("fgsBm", m.get("fgsdm"));
  2536 + if(m.get("gsBm") != null && m.get("fgsBm") != null
  2537 + && m.get("gsBm").toString().trim().length() > 0
  2538 + && m.get("fgsBm").toString().trim().length() > 0){
  2539 + String gsBm = m.get("gsBm").toString().trim();
  2540 + String fgsBm = m.get("fgsBm").toString().trim();
  2541 + String key = gsBm + "_" + fgsBm; // 分公司key
  2542 + String key2 = gsBm + "_sum"; // 直属公司key
  2543 + if(!gsFgsSet.contains(key) && !gsFgsSet.contains(gsBm)){
  2544 + continue;
  2545 + }
  2546 + if(!keyMap.containsKey(key)){ // 每个分公司一条
  2547 + Map<String, Object> t = new HashMap<String, Object>();
  2548 + t.put("gsName", m.get("gs"));
  2549 + t.put("fgsName", m.get("fgs"));
  2550 + t.put("key", key);
  2551 + keyMap.put(key, t);
  2552 + keyList.add(key);
  2553 + if(!keyMap.containsKey(key2)){ // 直属公司小计
  2554 + Map<String, Object> t2 = new HashMap<String, Object>();
  2555 + t2.put("gsName", m.get("gs"));
  2556 + t2.put("fgsName", "小计");
  2557 + t2.put("key", key2);
  2558 + keyMap.put(key2, t2);
  2559 + keyList.add(key2);
  2560 + }
  2561 + }
  2562 + Map<String, Object> t = keyMap.get(key);
  2563 + Map<String, Object> t2 = keyMap.get(key2);
  2564 + for(String s : m.keySet()){
  2565 + if("gsName,fgsName,key".contains(s)){
  2566 + continue;
  2567 + }
  2568 + try {
  2569 + if(t.containsKey(s)){ // 分公司
  2570 + t.put(s, new BigDecimal(t.get(s).toString()).add(new BigDecimal(m.get(s).toString())));
  2571 + } else {
  2572 + t.put(s, m.get(s).toString());
  2573 + }
  2574 + if(t2.containsKey(s)){ // 直属公司
  2575 + t2.put(s, new BigDecimal(t2.get(s).toString()).add(new BigDecimal(m.get(s).toString())));
  2576 + } else {
  2577 + t2.put(s, m.get(s).toString());
  2578 + }
  2579 + if(hj.containsKey(s)){ // 合计
  2580 + hj.put(s, new BigDecimal(hj.get(s).toString()).add(new BigDecimal(m.get(s).toString())));
  2581 + } else {
  2582 + hj.put(s, m.get(s).toString());
  2583 + }
  2584 + } catch (Exception e) {
  2585 + // TODO: handle exception
  2586 + continue;
  2587 + }
  2588 + }
  2589 + }
  2590 + }
  2591 +
  2592 + for(Business b : allBusiness){ // 根据公司排序插入返回对象
  2593 + String gs = b.getBusinessCode();
  2594 + String gsfgs = b.getUpCode() + "_" + b.getBusinessCode();
  2595 + for(String key : keyList){
  2596 + if(key.equals(gsfgs)){
  2597 + resList.add(keyMap.get(key));
  2598 + break;
  2599 + } else if(key.replaceAll("_sum", "").equals(gs)){
  2600 + resList.add(keyMap.get(key));
  2601 + break;
  2602 + }
  2603 + }
  2604 + }
  2605 + resList.add(hj);
  2606 +
  2607 + if(type.equals("export")){
  2608 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  2609 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  2610 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  2611 + Map<String, Object> m = new HashMap<String, Object>();
  2612 + String xls="countMileageSum.xls";
  2613 + ReportUtils ee = new ReportUtils();
  2614 + try {
  2615 + String dateTime = "";
  2616 + if(date.equals(date2)){
  2617 + m.put("date", date);
  2618 + dateTime = sdfSimple.format(sdfMonth.parse(date));
  2619 + } else {
  2620 + m.put("date", date + "至" + date2);
  2621 + dateTime = sdfSimple.format(sdfMonth.parse(date))
  2622 + +"-"+sdfSimple.format(sdfMonth.parse(date2));
  2623 + }
  2624 + listI.add(resList.iterator());
  2625 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  2626 + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
  2627 + path + "export/"+dateTime+"-审计公里汇总表.xls");
  2628 + } catch (Exception e) {
  2629 + // TODO: handle exception
  2630 + e.printStackTrace();
  2631 + }
  2632 + }
  2633 +
  2634 + return resList;
  2635 + }
  2636 +
  2637 + @Override
  2638 + public List<Map<String, Object>> countByList(Map<String, Object> map) {
  2639 + // TODO Auto-generated method stub
  2640 +
  2641 + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
  2642 + String gsdm="";
  2643 + if(map.get("gsdm")!=null){
  2644 + gsdm=map.get("gsdm").toString();
  2645 + }
  2646 + String fgsdm="";
  2647 + if(map.get("fgsdm")!=null){
  2648 + fgsdm=map.get("fgsdm").toString();
  2649 + }
  2650 + String line="";
  2651 + if(map.get("line")!=null){
  2652 + line=map.get("line").toString();
  2653 + }
  2654 + String date="";
  2655 + if(map.get("date")!=null){
  2656 + date=map.get("date").toString();
  2657 + }
  2658 + String date2="";
  2659 + if(map.get("date2")!=null){
  2660 + date2=map.get("date2").toString();
  2661 + }
  2662 + String xlName="";
  2663 + if(map.get("xlName")!=null){
  2664 + xlName=map.get("xlName").toString();
  2665 + }
  2666 + String nature="0";
  2667 + if(map.get("nature")!=null){
  2668 + nature=map.get("nature").toString();
  2669 + }
  2670 + String type="";
  2671 + if(map.get("type")!=null){
  2672 + type=map.get("type").toString();
  2673 + }
  2674 + //所有班次信息
  2675 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  2676 + line =line.trim();
  2677 + if(gsdm.equals("") && fgsdm.equals("") && line.equals("")){
  2678 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj3(date, date2);
  2679 + } else if(line.equals("")){
  2680 + //查询所有线路
  2681 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date,date2,gsdm,fgsdm);
  2682 + }else{
  2683 + //查询单条线路
  2684 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date,date2);
  2685 + }
  2686 +
  2687 + Map<String, Boolean> lineMap = lineService.lineNature();
  2688 +
  2689 + List<String> objList = new ArrayList<String>();
  2690 + String sql="select r.xl_bm"
  2691 + + " from bsth_c_s_sp_info_real r where"
  2692 + + " r.schedule_date_str BETWEEN ? and ?";
  2693 + objList.add(date);
  2694 + objList.add(date2);
  2695 + if("".equals(gsdm.trim()) && "".equals(fgsdm.trim()) && "".equals(line.trim())){
  2696 +
  2697 + } else if(line.equals("")){
  2698 + sql +=" and r.gs_bm=?"
  2699 + + " and r.fgs_bm like CONCAT('%',?,'%')";
  2700 + objList.add(gsdm);
  2701 + objList.add(fgsdm);
  2702 + }else{
  2703 + sql += " and r.xl_bm = ?";
  2704 + objList.add(line);
  2705 + }
  2706 + sql += " group by r.xl_bm";
  2707 +
  2708 + List<String> listLine=jdbcTemplate.query(sql, objList.toArray(), new RowMapper<String>() {
  2709 + @Override
  2710 + public String mapRow(ResultSet arg0, int arg1) throws SQLException {
  2711 + String ve = arg0.getString("xl_bm");
  2712 + return ve;
  2713 + }
  2714 + });
  2715 + for (int i = 0; i < listLine.size(); i++) {
  2716 + List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
  2717 + String lineStr=listLine.get(i);
  2718 + if("0".equals(nature)){ // 全部
  2719 +
  2720 + } else if("1".equals(nature)){ // 营运
  2721 + if(!(lineMap.containsKey(lineStr) && lineMap.get(lineStr))){
  2722 + continue;
  2723 + }
  2724 + } else { // 非营运
  2725 + if(lineMap.containsKey(lineStr) && lineMap.get(lineStr)){
  2726 + continue;
  2727 + }
  2728 + }
  2729 +
  2730 + for (int j = 0; j < list.size(); j++) {
  2731 + ScheduleRealInfo s=list.get(j);
  2732 + if(s.getXlBm().equals(lineStr)){
  2733 + lists.add(s);
  2734 + }
  2735 + }
  2736 +
  2737 + //计算线路的各项公里
  2738 + if(lists.size()>0){
  2739 + Map<String, Object> newMap=staticTj(lists,"z");
  2740 + lMap.add(newMap);
  2741 + }
  2742 + }
  2743 + if(list.size()>0){
  2744 + Map<String, Object> newMap=staticTj(list,"f");
  2745 + lMap.add(newMap);
  2746 + }
  2747 + if(type.equals("export")){
  2748 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  2749 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  2750 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  2751 + Map<String, Object> m = new HashMap<String, Object>();
  2752 + m.put("date", date);
  2753 + m.put("date1", date2);
  2754 + String by=map.get("by").toString();
  2755 + String xls="";
  2756 + if(by.equals("sj")){
  2757 + xls="countByLine.xls";
  2758 + }else{
  2759 + xls="countByLines.xls";
  2760 + }
  2761 + ReportUtils ee = new ReportUtils();
  2762 + try {
  2763 + String dateTime = "";
  2764 + if(date.equals(date2)){
  2765 + dateTime = sdfSimple.format(sdfMonth.parse(date));
  2766 + } else {
  2767 + dateTime = sdfSimple.format(sdfMonth.parse(date))
  2768 + +"-"+sdfSimple.format(sdfMonth.parse(date2));
  2769 + }
  2770 + listI.add(lMap.iterator());
  2771 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  2772 + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
  2773 + path + "export/"+dateTime+"-"+xlName+"-线路公里统计表.xls");
  2774 + } catch (Exception e) {
  2775 + // TODO: handle exception
  2776 + e.printStackTrace();
  2777 + }
  2778 + }
  2779 + return lMap;
  2780 + }
  2781 +
  2782 +
  2783 + @Override
  2784 + public List<Map<String, Object>> countByList2(Map<String, Object> map) {
  2785 + // TODO Auto-generated method stub
  2786 +
  2787 + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
  2788 + String gsdm="";
  2789 + if(map.get("gsdm")!=null){
  2790 + gsdm=map.get("gsdm").toString();
  2791 + }
  2792 + String fgsdm="";
  2793 + if(map.get("fgsdm")!=null){
  2794 + fgsdm=map.get("fgsdm").toString();
  2795 + }
  2796 + String line="";
  2797 + if(map.get("line")!=null){
  2798 + line=map.get("line").toString();
  2799 + }
  2800 + String date="";
  2801 + if(map.get("date")!=null){
  2802 + date=map.get("date").toString();
  2803 + }
  2804 + String date2="";
  2805 + if(map.get("date2")!=null){
  2806 + date2=map.get("date2").toString();
  2807 + }
  2808 + String xlName="";
  2809 + if(map.get("xlName")!=null){
  2810 + xlName=map.get("xlName").toString();
  2811 + }
  2812 + String type="";
  2813 + if(map.get("type")!=null){
  2814 + type=map.get("type").toString();
  2815 + }
  2816 + //所有班次信息
  2817 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  2818 + line = line.trim();
  2819 +
  2820 + List<String> objList = new ArrayList<String>();
  2821 + objList.add(date);
  2822 + objList.add(date2);
  2823 + String sql="select r.xl_bm"
  2824 + + " from bsth_c_s_sp_info_real r where"
  2825 + + " r.schedule_date_str >= ? and r.schedule_date_str >= ?";
  2826 +
  2827 +
  2828 + if(line.equals("")){
  2829 + sql +=" and r.gs_bm = ?"
  2830 + + " and r.fgs_bm = ?";
  2831 + objList.add(gsdm);
  2832 + objList.add(fgsdm);
  2833 + }else{
  2834 + sql += " and r.xl_bm = ?";
  2835 + objList.add(line);
  2836 + }
  2837 + sql += " group by r.xl_bm";
  2838 +
  2839 + List<String> listLine=jdbcTemplate.query(sql, objList.toArray(), new RowMapper<String>() {
  2840 + @Override
  2841 + public String mapRow(ResultSet arg0, int arg1) throws SQLException {
  2842 + String ve = arg0.getString("xl_bm");
  2843 + return ve;
  2844 + }
  2845 + });
  2846 + for (int i = 0; i < listLine.size(); i++) {
  2847 + List<ScheduleRealInfo> lists =scheduleRealInfoRepository.scheduleByDateAndLineTj2(listLine.get(i), date,date2);
  2848 + list.addAll(lists);
  2849 + //计算线路的各项公里
  2850 + if(lists.size()>0){
  2851 + Map<String, Object> newMap=staticTj(lists,"z");
  2852 + lMap.add(newMap);
  2853 + }
  2854 + }
  2855 + if(list.size()>0){
  2856 + Map<String, Object> newMap=staticTj(list,"f");
  2857 + lMap.add(newMap);
  2858 + }
  2859 + if(type.equals("export")){
  2860 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  2861 + Map<String, Object> m = new HashMap<String, Object>();
  2862 + m.put("date", date);
  2863 + m.put("date1", date2);
  2864 + String by=map.get("by").toString();
  2865 + String xls="";
  2866 + if(by.equals("sj")){
  2867 + xls="countByLine.xls";
  2868 + }else{
  2869 + xls="countByLines.xls";
  2870 + }
  2871 + ReportUtils ee = new ReportUtils();
  2872 + try {
  2873 + listI.add(lMap.iterator());
  2874 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  2875 + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
  2876 + path + "export/线路公里统计表.xls");
  2877 + } catch (Exception e) {
  2878 + // TODO: handle exception
  2879 + e.printStackTrace();
  2880 + }
  2881 + }
  2882 + return lMap;
  2883 + }
  2884 +
  2885 + public final Map<String, Object> staticTj(List<ScheduleRealInfo> list,String status){
  2886 +
  2887 + List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
  2888 + for(int i=0;i<list.size();i++){
  2889 + ScheduleRealInfo s=list.get(i);
  2890 + Set<ChildTaskPlan> cts = s.getcTasks();
  2891 + if(cts != null && cts.size() > 0){
  2892 + lists.add(s);
  2893 + }else{
  2894 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
  2895 + lists.add(s);
  2896 + }
  2897 + }
  2898 + }
  2899 + Map<String, Object> map = new HashMap<String, Object>();
  2900 + if(list.size()>0){
  2901 + if(status.equals("f")){
  2902 + map.put("xlName","合计");
  2903 + map.put("gs", "");
  2904 + map.put("fgs", "");
  2905 + }else{
  2906 + map.put("xlName", list.get(0).getXlName());
  2907 + map.put("xlBm", list.get(0).getXlBm());
  2908 + map.put("gsBm", list.get(0).getGsBm());
  2909 + map.put("fgsBm", list.get(0).getFgsBm());
  2910 + map.put("gs", list.get(0).getGsName());
  2911 + map.put("fgs", list.get(0).getFgsName());
  2912 + map.put("jGh", list.get(0).getjGh());
  2913 + map.put("sGh", list.get(0).getsGh()==null?"":list.get(0).getsGh());
  2914 + map.put("nbbm",list.get(0).getClZbh());
  2915 + map.put("line", list.get(0).getXlBm());
  2916 + }
  2917 +
  2918 + double jhyygl=culateService.culateJhgl(list);//计划营运公里
  2919 + double jhjcclc= culateService.culateJhJccgl(list);//计划进出场公里(计划空驶公里)
  2920 + map.put("jhlc", jhyygl);
  2921 + map.put("jcclc", jhjcclc);
  2922 + map.put("jhzlc", Arith.add(jhyygl, jhjcclc));//计划总里程
  2923 +
  2924 + //计划内外营运
  2925 + Map<String, Double> culateSjlcMap=culateService.culateSjlcMap(lists);
  2926 + double jhnlc=culateSjlcMap.get("jhnlc");
  2927 + double jhwlc=culateSjlcMap.get("jhwlc");
  2928 + map.put("jhnlc", jhnlc);
  2929 + map.put("jhwlc", jhwlc);
  2930 + double zyylc=Arith.add(jhnlc, jhwlc);
  2931 +
  2932 + //计划内外进出场
  2933 + Map<String, Double> culateSjJcclcMap=culateService.culateSjJcclcMap(lists);
  2934 + double jhwjcclc=culateSjJcclcMap.get("jhwlc");
  2935 + double jhnjcclc=culateSjJcclcMap.get("jhnlc");
  2936 + map.put("jhwjcclc", jhwjcclc);
  2937 + map.put("jhnjcclc", jhnjcclc);
  2938 + double zjcclc=Arith.add(jhwjcclc, jhnjcclc);
  2939 +
  2940 + //临加公里
  2941 + Map<String, Double> culateLjMile=culateService.culateLjMile(lists);
  2942 + double ljyy=culateLjMile.get("ljyy");
  2943 + double ljjcc=culateLjMile.get("ljjcc");
  2944 + double ljkfks=culateLjMile.get("ljkfks");
  2945 + map.put("ljyy", ljyy);
  2946 + map.put("ljjcc", ljjcc);
  2947 + map.put("ljkfks", ljkfks);
  2948 +
  2949 + double ljlc=Arith.add(Arith.add(ljyy, ljjcc),ljkfks);
  2950 +
  2951 + double lbss=culateService.culateSsMile(list);//烂班少驶
  2952 + map.put("lbss", lbss);
  2953 + map.put("ssgl_lz", culateService.culateSsMileXx(list, "路阻"));
  2954 + map.put("ssgl_dm", culateService.culateSsMileXx(list, "吊慢"));
  2955 + map.put("ssgl_gz", culateService.culateSsMileXx(list, "故障"));
  2956 + map.put("ssgl_jf", culateService.culateSsMileXx(list, "纠纷"));
  2957 + map.put("ssgl_zs", culateService.culateSsMileXx(list, "肇事"));
  2958 + map.put("ssgl_qr", culateService.culateSsMileXx(list, "缺人"));
  2959 + map.put("ssgl_qc", culateService.culateSsMileXx(list, "缺车"));
  2960 + map.put("ssgl_kx", culateService.culateSsMileXx(list, "客稀"));
  2961 + map.put("ssgl_qh", culateService.culateSsMileXx(list, "气候"));
  2962 + map.put("ssgl_yw", culateService.culateSsMileXx(list, "援外"));
  2963 + map.put("ssgl_ljpm", culateService.culateSsMileXx(list, "路救抛锚"));
  2964 + map.put("ssgl_other", culateService.culateSsMileXx(list, "其他"));
  2965 +
  2966 +
  2967 + double zrwjcclc=culateService.culateZrwJccLc(list, "故障");
  2968 + double zrwjcclc1=culateService.culateZrwJccLc(list, "肇事");
  2969 + double zrwjcclc2=culateService.culateZrwJccLc(list, "纠纷");
  2970 + double zrwjcclcqt=Arith.add(culateService.culateZrwJccLc(list, "其他"),culateService.culateZrwJccLc(list, ""));
  2971 + map.put("jhwjcclc_z", Arith.add(jhwjcclc,zrwjcclcqt));
  2972 + map.put("zrwjcclc", zrwjcclc);
  2973 + map.put("zrwjcclc1", zrwjcclc1);
  2974 + map.put("zrwjcclc2", zrwjcclc2);
  2975 + map.put("zrwjcclcqt", zrwjcclcqt);
  2976 + double zrwjcc=Arith.add(Arith.add(Arith.add(zrwjcclc, zrwjcclc1), zrwjcclc2),zrwjcclcqt);
  2977 + double kfks=culateService.culateKfksLc(lists);
  2978 + map.put("kfks", kfks);
  2979 + double zlc=Arith.add(Arith.add(Arith.add(zrwjcc, ljlc),
  2980 + Arith.add(zjcclc, zyylc)),kfks);
  2981 + map.put("zlc", zlc);
  2982 +
  2983 + //备用
  2984 + double ljgl= culateService.culateLjgl(lists);
  2985 + double sjyygl= culateService.culateSjgl(lists);
  2986 + double zyygl= Arith.add(sjyygl,ljgl);
  2987 +
  2988 + double sjjccgl=culateService.culateJccgl(lists);
  2989 + double sjksgl=culateService.culateKsgl(lists);
  2990 + double zksgl=Arith.add(sjjccgl, sjksgl);
  2991 + map.put("sjzgl", Arith.add(zyygl, zksgl));
  2992 + }
  2993 + return map;
  2994 + }
  2995 + @Override
  2996 + public List<Map<String, Object>> countByBusList(Map<String, Object> map) {
  2997 + // TODO Auto-generated method stub
  2998 + SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
  2999 + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
  3000 + List<Map<String, Object>> lMaps = new ArrayList<Map<String, Object>>();
  3001 + String gsdm="";
  3002 + if(map.get("gsdm")!=null){
  3003 + gsdm=map.get("gsdm").toString();
  3004 + }
  3005 + String fgsdm="";
  3006 + if(map.get("fgsdm")!=null){
  3007 + fgsdm=map.get("fgsdm").toString();
  3008 + }
  3009 + String line="";
  3010 + if(map.get("line")!=null){
  3011 + line=map.get("line").toString();
  3012 + }
  3013 + String date="";
  3014 + if(map.get("date")!=null){
  3015 + date=map.get("date").toString();
  3016 + }
  3017 + String date2="";
  3018 + if(map.get("date2")!=null){
  3019 + date2=map.get("date2").toString();
  3020 + }
  3021 + String xlName="";
  3022 + if(map.get("xlName")!=null){
  3023 + xlName=map.get("xlName").toString();
  3024 + }
  3025 + String zt="";
  3026 + if(map.get("zt")!=null){
  3027 + zt=map.get("zt").toString();
  3028 + }
  3029 + String type="";
  3030 + if(map.get("type")!=null){
  3031 + type=map.get("type").toString();
  3032 + }
  3033 + //所有班次信息
  3034 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  3035 + line =line.trim();
  3036 + if(line.equals("")){
  3037 + //查询所有线路
  3038 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date,date2,gsdm,fgsdm);
  3039 + }else{
  3040 + //查询单条线路
  3041 + list = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date,date2);
  3042 + }
  3043 +
  3044 + List<String> objList = new ArrayList<String>();
  3045 + objList.add(date);
  3046 + objList.add(date2);
  3047 + String ylbSql=" select * from bsth_c_ylb where rq BETWEEN ? and ?";
  3048 + if(line.equals("")){
  3049 + ylbSql +=" and ssgsdm = ?"
  3050 + + " and fgsdm = ?";
  3051 + objList.add(gsdm);
  3052 + objList.add(fgsdm);
  3053 + }else{
  3054 + ylbSql += " and xlbm = ?";
  3055 + objList.add(line);
  3056 + }
  3057 + List<Ylb> ylbList = ylbList(ylbSql, objList);
  3058 +
  3059 + List<String> objList2 = new ArrayList<String>();
  3060 + objList2.add(date);
  3061 + objList2.add(date2);
  3062 + String dlbSql=" select * from bsth_c_dlb where rq BETWEEN ? and ?";
  3063 + if(line.equals("")){
  3064 + dlbSql +=" and ssgsdm = ?"
  3065 + + " and fgsdm = ?";
  3066 + objList2.add(gsdm);
  3067 + objList2.add(fgsdm);
  3068 + }else{
  3069 + dlbSql += " and xlbm = ?";
  3070 + objList2.add(line);
  3071 + }
  3072 + List<Dlb> dlbList=dlbList(dlbSql, objList2);
  3073 + List<Map<String, Object>> listGroupBy =null;
  3074 + String sql="";
  3075 + if(zt.equals("zbh")){
  3076 + List<String> objList3 = new ArrayList<String>();
  3077 + objList3.add(date);
  3078 + objList3.add(date2);
  3079 + sql+="select r.xl_bm,r.cl_zbh"
  3080 + + " from bsth_c_s_sp_info_real r where"
  3081 + + " r.schedule_date_str BETWEEN ? and ?";
  3082 + if(line.equals("")){
  3083 + sql +=" and r.gs_bm = ?"
  3084 + + " and r.fgs_bm = ?";
  3085 + objList3.add(gsdm);
  3086 + objList3.add(fgsdm);
  3087 + }else{
  3088 + sql += " and r.xl_bm = ?";
  3089 + objList3.add(line);
  3090 + }
  3091 + sql += " group by r.xl_bm,r.cl_zbh";
  3092 + listGroupBy=jdbcTemplate.query(sql, objList3.toArray(), new RowMapper<Map<String, Object>>() {
  3093 + @Override
  3094 + public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
  3095 + Map<String, Object> map=new HashMap<String,Object>();
  3096 + map.put("line",arg0.getString("xl_bm"));
  3097 + map.put("nbbm", arg0.getString("cl_zbh"));
  3098 + return map;
  3099 + }
  3100 + });
  3101 + }else{
  3102 + List<String> objList4 = new ArrayList<String>();
  3103 + objList4.add(date);
  3104 + objList4.add(date2);
  3105 + sql+="select r.xl_bm,r.cl_zbh,r.j_gh,r.s_gh"
  3106 + + " from bsth_c_s_sp_info_real r where"
  3107 + + " r.schedule_date_str BETWEEN ? and ?";
  3108 + if(line.equals("")){
  3109 + sql +=" and r.gs_bm = ? "
  3110 + + " and r.fgs_bm = ?";
  3111 + objList4.add(gsdm);
  3112 + objList4.add(fgsdm);
  3113 + }else{
  3114 + sql += " and r.xl_bm = ?";
  3115 + objList4.add(line);
  3116 + }
  3117 + sql += " group by r.xl_bm,r.cl_zbh,r.j_gh,r.s_gh";
  3118 + listGroupBy=jdbcTemplate.query(sql, objList4.toArray(), new RowMapper<Map<String, Object>>() {
  3119 + @Override
  3120 + public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
  3121 + Map<String, Object> map=new HashMap<String,Object>();
  3122 + map.put("line",arg0.getString("xl_bm"));
  3123 + map.put("nbbm", arg0.getString("cl_zbh"));
  3124 + map.put("jGh", arg0.getString("j_gh"));
  3125 + map.put("sGh", arg0.getString("s_gh"));
  3126 +// map.put("jName", arg0.getString("j_name"));
  3127 +// map.put("sName", arg0.getString("s_name"));
  3128 + return map;
  3129 + }
  3130 + });
  3131 + }
  3132 +
  3133 +
  3134 + for (int i = 0; i < listGroupBy.size(); i++) {
  3135 + Map<String, Object> m=listGroupBy.get(i);
  3136 + String xl_bm=m.get("line")==null?"":m.get("line").toString();
  3137 + String nbbm =m.get("nbbm")==null?"":m.get("nbbm").toString();
  3138 + String jGh= m.get("jGh")==null?"":m.get("jGh").toString();
  3139 + String sGh= m.get("sGh")==null?"":m.get("sGh").toString();
  3140 + List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
  3141 + for (int j = 0; j < list.size(); j++) {
  3142 + ScheduleRealInfo s=list.get(j);
  3143 + if(zt.equals("zbh")){
  3144 + if(xl_bm.equals(s.getXlBm())
  3145 + && nbbm.equals(s.getClZbh())){
  3146 + lists.add(s);
  3147 + }
  3148 + }else{
  3149 + if(xl_bm.equals(s.getXlBm()) && nbbm.equals(s.getClZbh())
  3150 + && jGh.equals(s.getjGh()) && sGh.equals(s.getsGh())){
  3151 + lists.add(s);
  3152 +
  3153 + if((m.get("jName") == null || m.get("jName").toString().length() == 0)
  3154 + && s.getjName() != null && s.getjName().length() > 0){
  3155 + m.put("jName", s.getjName());
  3156 + }
  3157 + if((m.get("sName") == null || m.get("sName").toString().length() == 0)
  3158 + && s.getsName() != null && s.getsName().length() > 0){
  3159 + m.put("sName", s.getsName());
  3160 + }
  3161 + }
  3162 + }
  3163 + }
  3164 +
  3165 + if(zt.equals("zbh")){
  3166 + Map<String, Object> newMap=staticTj(lists, "");
  3167 + double yhl=0.0;
  3168 + double jzl=0.0;
  3169 + double hyl=0.0;
  3170 + double dhl=0.0;
  3171 + double cdl=0.0;
  3172 + for (int j = 0; j < ylbList.size(); j++) {
  3173 + Ylb y=ylbList.get(j);
  3174 + if(nbbm.equals(y.getNbbm()) && xl_bm.equals(y.getXlbm())){
  3175 + yhl=Arith.add(yhl, y.getYh());
  3176 + jzl=Arith.add(jzl, y.getJzl());
  3177 + hyl=Arith.add(hyl, y.getSh());
  3178 + }
  3179 +
  3180 + }
  3181 + for (int j = 0; j < dlbList.size(); j++) {
  3182 + Dlb d=dlbList.get(j);
  3183 + if(nbbm.equals(d.getNbbm())&&xl_bm.equals(d.getXlbm())){
  3184 + dhl=Arith.add(dhl, d.getHd());
  3185 + cdl=Arith.add(cdl, d.getCdl());
  3186 + }
  3187 + }
  3188 + if(date.equals(date2)){
  3189 + newMap.put("rq",date);
  3190 + }else{
  3191 + newMap.put("rq",date+"至"+date2);
  3192 + }
  3193 + newMap.put("yhl", yhl);
  3194 + newMap.put("jzl", jzl);
  3195 + newMap.put("hyl", hyl);
  3196 + newMap.put("dhl", dhl);
  3197 + newMap.put("cdl", cdl);
  3198 + lMap.add(newMap);
  3199 + }else{
  3200 + Map<String, Object> newMap=staticTj(lists, "");
  3201 + double lc=Double.parseDouble(newMap.get("zlc").toString());
  3202 + double yhl=0.0;
  3203 + double jzl=0.0;
  3204 + double hyl=0.0;
  3205 + double dhl=0.0;
  3206 + double cdl=0.0;
  3207 + double zlc=0.0;
  3208 + for (int j = 0; j < ylbList.size(); j++) {
  3209 + Ylb y=ylbList.get(j);
  3210 + if(nbbm.equals(y.getNbbm()) && xl_bm.equals(y.getXlbm())
  3211 + &&jGh.equals(y.getJsy())){
  3212 + yhl=Arith.add(yhl, y.getYh());
  3213 + jzl=Arith.add(jzl, y.getJzl());
  3214 + hyl=Arith.add(hyl, y.getSh());
  3215 + zlc=Arith.add(zlc, y.getZlc());
  3216 + }
  3217 +
  3218 + }
  3219 +
  3220 + for (int j = 0; j < dlbList.size(); j++) {
  3221 + Dlb d=dlbList.get(j);
  3222 + if(nbbm.equals(d.getNbbm())&&xl_bm.equals(d.getXlbm())
  3223 + &&jGh.equals(d.getJsy())){
  3224 + dhl=Arith.add(dhl, d.getHd());
  3225 + cdl=Arith.add(cdl, d.getCdl());
  3226 + zlc=Arith.add(zlc, d.getZlc());
  3227 + }
  3228 + }
  3229 + double div=0.0;
  3230 + if(lc>0){
  3231 + div=Arith.div(zlc, lc,2);
  3232 + }
  3233 + newMap.put("yhl", yhl*div);
  3234 + newMap.put("jzl", jzl*div);
  3235 + newMap.put("hyl", hyl*div);
  3236 + newMap.put("dhl", dhl*div);
  3237 + newMap.put("cdl", cdl*div);
  3238 + lMaps.add(newMap);
  3239 + }
  3240 +
  3241 + }
  3242 + if(!zt.equals("zbh")){
  3243 + lMap=lists(listGroupBy, lMaps, gsdm, fgsdm, date, date2);
  3244 + }
  3245 + if(type.equals("export")){
  3246 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  3247 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  3248 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  3249 + Map<String, Object> m = new HashMap<String, Object>();
  3250 + m.put("date", date);
  3251 + m.put("date1", date2);
  3252 + String xls="";
  3253 + String by=map.get("by").toString();
  3254 +
  3255 +
  3256 + if(zt.equals("zbh")){
  3257 + if(by.equals("sj")){
  3258 + xls="countByBus1.xls";
  3259 + }else{
  3260 + xls="countByBus1s.xls";
  3261 + }
  3262 + }else{
  3263 +
  3264 + if(by.equals("sj")){
  3265 + xls="countByBus2.xls";
  3266 + }else{
  3267 + xls="countByBus2s.xls";
  3268 + }
  3269 + }
  3270 + ReportUtils ee = new ReportUtils();
  3271 + try {
  3272 + String dateTime = "";
  3273 + if(date.equals(date2)){
  3274 + dateTime = sdfSimple.format(sdfMonth.parse(date));
  3275 + } else {
  3276 + dateTime = sdfSimple.format(sdfMonth.parse(date))
  3277 + +"-"+sdfSimple.format(sdfMonth.parse(date2));
  3278 + }
  3279 + listI.add(lMap.iterator());
  3280 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  3281 + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
  3282 + path + "export/"+dateTime+"-"+xlName+"-路单数据统计表.xls");
  3283 + } catch (Exception e) {
  3284 + // TODO: handle exception
  3285 + e.printStackTrace();
  3286 + }
  3287 + }
  3288 +
  3289 + return lMap;
  3290 + }
  3291 +
  3292 + public final List<Ylb> ylbList(String sql, List<String> objList){
  3293 + List<Ylb> ylbList= jdbcTemplate.query(sql, objList.toArray(), new RowMapper<Ylb>() {
  3294 + @Override
  3295 + public Ylb mapRow(ResultSet arg0, int arg1) throws SQLException {
  3296 + Ylb y = new Ylb();
  3297 + y.setRq(arg0.getDate("rq"));
  3298 + y.setJsy(arg0.getString("jsy"));
  3299 + y.setXlbm(arg0.getString("xlbm"));
  3300 + y.setZlc(arg0.getDouble("zlc"));
  3301 + y.setNbbm(arg0.getString("nbbm"));
  3302 + y.setJzl(arg0.getDouble("jzl"));
  3303 + y.setYh(arg0.getDouble("yh"));
  3304 + y.setSh(arg0.getDouble("sh"));
  3305 + return y;
  3306 + }
  3307 + });
  3308 + return ylbList;
  3309 + }
  3310 +
  3311 + public final List<Dlb> dlbList(String sql, List<String> objList){
  3312 + List<Dlb> dlbList= jdbcTemplate.query(sql, objList.toArray(), new RowMapper<Dlb>() {
  3313 + @Override
  3314 + public Dlb mapRow(ResultSet arg0, int arg1) throws SQLException {
  3315 + Dlb y = new Dlb();
  3316 + y.setRq(arg0.getDate("rq"));
  3317 + y.setXlbm(arg0.getString("xlbm"));
  3318 + y.setJsy(arg0.getString("jsy"));
  3319 + y.setNbbm(arg0.getString("nbbm"));
  3320 + y.setZlc(arg0.getDouble("zlc"));
  3321 + y.setCdl(arg0.getDouble("cdl"));
  3322 + y.setHd(arg0.getDouble("hd"));
  3323 + y.setSh(arg0.getDouble("sh"));
  3324 + return y;
  3325 + }
  3326 + });
  3327 + return dlbList;
  3328 + }
  3329 +
  3330 + public final List<Map<String, Object>> lists(List<Map<String, Object>> listGb,
  3331 + List<Map<String, Object>> listLc,
  3332 + String gsdm,String fgsdm,
  3333 + String date,String date2){
  3334 + List<Map<String, Object>> lMap=new ArrayList<Map<String,Object>>();
  3335 + for (int i = 0; i < listGb.size(); i++) {
  3336 + Map<String, Object> m=listGb.get(i);
  3337 + String xl_bm=m.get("line")==null?"":m.get("line").toString();
  3338 + String nbbm =m.get("nbbm")==null?"":m.get("nbbm").toString();
  3339 + String jGh= m.get("jGh")==null?"":m.get("jGh").toString();
  3340 + String jName=m.get("jName")==null?"":m.get("jName").toString();
  3341 + String sGh= m.get("sGh")==null?"":m.get("sGh").toString();
  3342 + String sName=m.get("sName")==null?"":m.get("sName").toString();
  3343 + double jhzlc = 0.0,jhlc= 0.0,jcclc= 0.0,zlc= 0.0,jhnlc= 0.0,jhwlc= 0.0,
  3344 + jhnjcclc= 0.0,jhwjcclc= 0.0,jhwjcclc_z=0.0,zrwjcclc= 0.0,zrwjcclc1= 0.0,zrwjcclc2= 0.0,
  3345 + zrwjcclcqt=0.0,lbss= 0.0,ssgl_lz= 0.0,
  3346 + ssgl_dm= 0.0,ssgl_gz= 0.0,ssgl_jf= 0.0,ssgl_zs= 0.0,ssgl_qr= 0.0,ssgl_qc= 0.0,
  3347 + ssgl_kx= 0.0,ssgl_qh= 0.0,ssgl_yw= 0.0,ssgl_other= 0.0,ljyy=0.0,ljjcc=0.0,
  3348 + kfks=0.0,yhl=0.0,jzl=0.0,hyl=0.0,dhl=0.0,cdl=0.0;
  3349 +
  3350 + for (int j = 0; j < listLc.size(); j++) {
  3351 + Map<String, Object> map=listLc.get(j);
  3352 + if(xl_bm.equals(map.get("line").toString())
  3353 + && nbbm.equals(map.get("nbbm").toString())
  3354 + && sGh.equals(map.get("sGh")==null?"":map.get("sGh").toString())
  3355 + && jGh.equals(map.get("jGh").toString())){
  3356 + jhzlc=Arith.add(jhzlc, map.get("jhzlc"));
  3357 + jhlc =Arith.add(jhlc, map.get("jhlc"));
  3358 + jcclc=Arith.add(jcclc, map.get("jcclc"));
  3359 + zlc=Arith.add(zlc, map.get("zlc"));
  3360 + jhnlc=Arith.add(jhnlc, map.get("jhnlc"));
  3361 + jhwlc=Arith.add(jhwlc, map.get("jhwlc"));
  3362 + jhnjcclc=Arith.add(jhnjcclc, map.get("jhnjcclc"));
  3363 + jhwjcclc=Arith.add(jhwjcclc, map.get("jhwjcclc"));
  3364 + jhwjcclc_z=Arith.add(jhwjcclc_z, map.get("jhwjcclc_z"));
  3365 + zrwjcclc=Arith.add(zrwjcclc, map.get("zrwjcclc"));
  3366 + zrwjcclc1=Arith.add(zrwjcclc1, map.get("zrwjcclc1"));
  3367 + zrwjcclc2=Arith.add(zrwjcclc2, map.get("zrwjcclc2"));
  3368 + zrwjcclcqt=Arith.add(zrwjcclcqt, map.get("zrwjcclcqt"));
  3369 + lbss=Arith.add(lbss, map.get("lbss"));
  3370 + ssgl_lz=Arith.add(ssgl_lz, map.get("ssgl_lz"));
  3371 + ssgl_dm=Arith.add(ssgl_dm, map.get("ssgl_dm"));
  3372 + ssgl_gz=Arith.add(ssgl_gz, map.get("ssgl_gz"));
  3373 + ssgl_jf=Arith.add(ssgl_jf, map.get("ssgl_jf"));
  3374 + ssgl_zs=Arith.add(ssgl_zs, map.get("ssgl_zs"));
  3375 + ssgl_qr=Arith.add(ssgl_qr, map.get("ssgl_qr"));
  3376 + ssgl_qc=Arith.add(ssgl_qc, map.get("ssgl_qc"));
  3377 + ssgl_kx=Arith.add(ssgl_kx, map.get("ssgl_kx"));
  3378 + ssgl_qh=Arith.add(ssgl_qh, map.get("ssgl_qh"));
  3379 + ssgl_yw=Arith.add(ssgl_yw, map.get("ssgl_yw"));
  3380 + ssgl_other=Arith.add(ssgl_other, map.get("ssgl_other"));
  3381 + kfks=Arith.add(kfks, map.get("kfks"));
  3382 + ljyy=Arith.add(ljyy, map.get("ljyy"));
  3383 + ljjcc=Arith.add(ljjcc, map.get("ljjcc"));
  3384 + yhl=Arith.add(yhl, map.get("yhl"));
  3385 + jzl=Arith.add(jzl, map.get("jzl"));
  3386 + hyl=Arith.add(hyl, map.get("hyl"));
  3387 + dhl=Arith.add(dhl, map.get("dhl"));
  3388 + cdl=Arith.add(cdl, map.get("cdl"));
  3389 +
  3390 +
  3391 + }
  3392 + }
  3393 +
  3394 + Map<String, Object> newMap=new HashMap<String,Object>();
  3395 + if(date.equals(date2)){
  3396 + newMap.put("rq", date);
  3397 + }else{
  3398 + newMap.put("rq", date+"至"+date2);
  3399 + }
  3400 + newMap.put("fgs", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  3401 + newMap.put("xlName", BasicData.lineCode2NameMap.get(xl_bm));
  3402 + newMap.put("xlBm", xl_bm);
  3403 + newMap.put("jGh", jGh);
  3404 + newMap.put("jName", jName);
  3405 + newMap.put("sGh",sGh);
  3406 + newMap.put("sName", sName);
  3407 + newMap.put("nbbm", nbbm);
  3408 + newMap.put("jhzlc", jhzlc);
  3409 + newMap.put("jhlc", jhlc);
  3410 + newMap.put("jcclc", jcclc);
  3411 + newMap.put("zlc", zlc);
  3412 + newMap.put("jhnlc", jhnlc);
  3413 + newMap.put("jhwlc", jhwlc);
  3414 + newMap.put("jhnjcclc", jhnjcclc);
  3415 + newMap.put("jhwjcclc", jhwjcclc);
  3416 + newMap.put("jhwjcclc_z", jhwjcclc_z);
  3417 + newMap.put("zrwjcclc", zrwjcclc);
  3418 + newMap.put("zrwjcclc1", zrwjcclc1);
  3419 + newMap.put("zrwjcclc2", zrwjcclc2);
  3420 + newMap.put("zrwjcclcqt", zrwjcclcqt);
  3421 + newMap.put("lbss", lbss);
  3422 + newMap.put("ssgl_lz", ssgl_lz);
  3423 + newMap.put("ssgl_dm",ssgl_dm);
  3424 + newMap.put("ssgl_gz", ssgl_gz);
  3425 + newMap.put("ssgl_jf", ssgl_jf);
  3426 + newMap.put("ssgl_zs", ssgl_zs);
  3427 + newMap.put("ssgl_qr", ssgl_qr);
  3428 + newMap.put("ssgl_qc", ssgl_qc);
  3429 + newMap.put("ssgl_kx", ssgl_kx);
  3430 + newMap.put("ssgl_qh", ssgl_qh);
  3431 + newMap.put("ssgl_yw", ssgl_yw);
  3432 + newMap.put("ssgl_other", ssgl_other);
  3433 + newMap.put("kfks", kfks);
  3434 + newMap.put("ljyy", ljyy);
  3435 + newMap.put("ljjcc", ljjcc);
  3436 + newMap.put("yhl", yhl);
  3437 + newMap.put("jzl", jzl);
  3438 + newMap.put("hyl", hyl);
  3439 + newMap.put("dhl", dhl);
  3440 + newMap.put("cdl", cdl);
  3441 + lMap.add(newMap);
  3442 + }
  3443 + return lMap;
  3444 + }
  3445 + @Override
  3446 + public List<Map<String, Object>> countDjg(Map<String, Object> map) {
  3447 + // TODO Auto-generated method stub
  3448 + List<Map<String, Object>> lMap=new ArrayList<Map<String,Object>>();
  3449 + String line=map.get("line").toString().trim();
  3450 + String date=map.get("date").toString();
  3451 + String gsbm=map.get("gsbm").toString();
  3452 + String fgsbm=map.get("fgsbm").toString();
  3453 + String type=map.get("type").toString();
  3454 + List<ScheduleRealInfo> list=new ArrayList<ScheduleRealInfo>();
  3455 + if(line.equals("")){
  3456 + list=scheduleRealInfoRepository.scheduleByDateAndLineByGs(gsbm, fgsbm, date);
  3457 +
  3458 + }else{
  3459 + list=scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
  3460 + }
  3461 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
  3462 +// Collections.sort(listInfo,new ComparableAcuals());
  3463 +
  3464 + List<String> objList = new ArrayList<String>();
  3465 + //查询所有线路
  3466 + String xlSql="select line_code,spac_grade from bsth_c_line ";
  3467 + if(line.equals("")){
  3468 + xlSql +=" where company = ?";
  3469 + objList.add(gsbm);
  3470 + }else{
  3471 + xlSql +=" where line_code = ?";
  3472 + objList.add(line);
  3473 + }
  3474 +
  3475 + List<Map<String, Object>> xlList=jdbcTemplate.query(xlSql, objList.toArray(), new RowMapper<Map<String, Object>>() {
  3476 + @Override
  3477 + public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
  3478 + Map<String, Object> map=new HashMap<String,Object>();
  3479 + map.put("line",arg0.getString("line_code"));
  3480 + map.put("grade", arg0.getString("spac_grade"));
  3481 + return map;
  3482 + }
  3483 + });
  3484 + //查询大间隔时间
  3485 + String djgSql="select * from bsth_c_interval";
  3486 + List<Interval> djgList=jdbcTemplate.query(djgSql, new RowMapper<Interval>() {
  3487 + @Override
  3488 + public Interval mapRow(ResultSet arg0, int arg1) throws SQLException {
  3489 + Interval m=new Interval();
  3490 + m.setLevel(arg0.getString("level"));
  3491 + m.setPeak(arg0.getInt("peak"));
  3492 + m.setTrough(arg0.getInt("trough"));
  3493 + return m;
  3494 + }
  3495 + });
  3496 +
  3497 + for (int i = 0; i < xlList.size(); i++) {
  3498 + String lineCode=xlList.get(i).get("line").toString();
  3499 + String grade =xlList.get(i).get("grade")==null?"1":xlList.get(i).get("grade").toString();
  3500 + int peak=0;
  3501 + int trough=0;
  3502 + for (int j = 0; j < djgList.size(); j++) {
  3503 + Interval il=djgList.get(j);
  3504 + if(il.getLevel().equals(grade)){
  3505 + peak=il.getPeak();
  3506 + trough=il.getTrough();
  3507 + continue;
  3508 + }
  3509 + }
  3510 + List<ScheduleRealInfo> list_=new ArrayList<ScheduleRealInfo>();
  3511 + List<ScheduleRealInfo> listInfo=new ArrayList<ScheduleRealInfo>();
  3512 + for (int j = 0; j < list.size(); j++) {
  3513 + ScheduleRealInfo sinfo=list.get(j);
  3514 + try {
  3515 + if(sinfo.getXlBm().equals(lineCode)){
  3516 + boolean type_=false;
  3517 + Set<ChildTaskPlan> cts = sinfo.getcTasks();
  3518 + if(cts != null && cts.size() > 0){
  3519 + type_=true;
  3520 + }else{
  3521 + if(sinfo.getZdsjActual()!=null && sinfo.getFcsjActual()!=null){
  3522 + type_=true;
  3523 + }
  3524 + }
  3525 + if(type_){
  3526 + list_.add(sinfo);
  3527 + ScheduleRealInfo s=checkBc(sinfo);
  3528 + String fcsj=s.getFcsjActual()==null?"":s.getFcsjActual();
  3529 + if(!fcsj.equals("")){
  3530 + Long fcsjAcual = sdf.parse(s.getRealExecDate() + " " + s.getFcsjActual()).getTime();
  3531 + s.setFcsjActualTime(fcsjAcual);
  3532 + s.setFcsjActual(fcsj);
  3533 + listInfo.add(s);
  3534 + }
  3535 + }
  3536 +
  3537 + }
  3538 + } catch (ParseException e) {
  3539 + // TODO Auto-generated catch block
  3540 + e.printStackTrace();
  3541 + }
  3542 + }
  3543 +
  3544 + if(listInfo.size()>0){
  3545 + int sjbcs=culateService.culateSjbc(list_, "")+culateService.culateLjbc(list_, "");
  3546 + Map<String, Object> m=listDjg(gsbm,fgsbm,lineCode,sjbcs,peak,trough,listInfo,grade);
  3547 + lMap.add(m);
  3548 + }
  3549 +
  3550 + }
  3551 + if(type.equals("export")){
  3552 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  3553 + Map<String, Object> m = new HashMap<String, Object>();
  3554 + m.put("date", date);
  3555 + ReportUtils ee = new ReportUtils();
  3556 + try {
  3557 + listI.add(lMap.iterator());
  3558 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  3559 + ee.excelReplace(listI, new Object[]{m}, path + "mould/countInterval.xls",
  3560 + path + "export/大间隔统计表.xls");
  3561 + } catch (Exception e) {
  3562 + // TODO: handle exception
  3563 + e.printStackTrace();
  3564 + }
  3565 + }
  3566 + return lMap;
  3567 + }
  3568 +
  3569 + public ScheduleRealInfo checkBc(ScheduleRealInfo s){
  3570 + //如果班次有子任务 且 子任务中有属于营运的。把该子任务的发车时间设置成班次的发车时间
  3571 + String fcsj=s.getFcsjActual()==null?"":s.getFcsjActual();
  3572 + if(fcsj.equals("")){
  3573 + Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
  3574 + if(!childTaskPlans.isEmpty()){
  3575 + List<ChildTaskPlan> listit=new ArrayList<ChildTaskPlan>(childTaskPlans);
  3576 + Collections.sort(listit, new ComparableChild());
  3577 + for (int i = 0; i < listit.size(); i++) {
  3578 + ChildTaskPlan c=listit.get(i);
  3579 + if(!c.isDestroy()){
  3580 + if(c.getMileageType().equals("service")){
  3581 + s.setFcsjActual(c.getStartDate());
  3582 + break;
  3583 + }
  3584 +
  3585 + }
  3586 + }
  3587 + }
  3588 + }
  3589 + return s;
  3590 + }
  3591 +
  3592 + public Map<String, Object> listDjg(String gsdm,String fgsdm,String line,int sjbcs,int peak,int trough,List<ScheduleRealInfo> listInfo,String grade){
  3593 + DecimalFormat df = new DecimalFormat("#0.00");
  3594 + Collections.sort(listInfo,new ComparableAcuals());
  3595 + List<ScheduleRealInfo> listInfo0=new ArrayList<ScheduleRealInfo>();
  3596 + List<ScheduleRealInfo> listInfo1=new ArrayList<ScheduleRealInfo>();
  3597 + for (int i = 0; i < listInfo.size(); i++) {
  3598 + ScheduleRealInfo s=listInfo.get(i);
  3599 + if(s.getXlDir().equals("0")){
  3600 + listInfo0.add(s);
  3601 + }else{
  3602 + listInfo1.add(s);
  3603 + }
  3604 +
  3605 + }
  3606 + Map<String, Object> map=new HashMap<String, Object>();
  3607 + map.put("line", line);
  3608 + map.put("xlName", BasicData.lineCode2NameMap.get(line));
  3609 + map.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  3610 + map.put("bcs", sjbcs);
  3611 + map.put("djgde", grade);
  3612 + int djgcs=0;
  3613 + List<Map<String, Object>> mapList=new ArrayList<Map<String, Object>>();
  3614 + for (int i = 0; i < listInfo0.size(); i++) {
  3615 + ScheduleRealInfo s=listInfo0.get(i);
  3616 + Long fcsjTime=s.getFcsjActualTime();
  3617 + String time=s.getFcsjActual();
  3618 + String[] fcsjStr = time.split(":");
  3619 + long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
  3620 + if(i<listInfo0.size()-1){
  3621 + Long djg=0l;
  3622 + Long fscjNext=listInfo0.get(i+1).getFcsjActualTime();
  3623 + if((fcsj>=zgf1&&fcsj<=zgf2)||(fcsj>=wgf1&&fcsj<=wgf2)){
  3624 + djg = (long) (peak*60*1000);
  3625 + if(fscjNext-fcsjTime>djg){
  3626 + djgcs ++;
  3627 + Map<String, Object> m=new HashMap<String,Object>();
  3628 + m.put("xlName", BasicData.lineCode2NameMap.get(line));
  3629 + m.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  3630 + m.put("djgde", grade);
  3631 + m.put("qJh", s.getFcsj());
  3632 + m.put("qSj", time);
  3633 + m.put("hJh", listInfo0.get(i+1).getFcsj());
  3634 + m.put("hSj", listInfo0.get(i+1).getFcsjActual());
  3635 + m.put("djgsj", peak);
  3636 + m.put("bcjgsj", (fscjNext-fcsjTime)/60000);
  3637 + mapList.add(m);
  3638 + }
  3639 + }else{
  3640 + djg = (long) (trough*60*1000);
  3641 + if(fscjNext-fcsjTime>djg){
  3642 + djgcs ++;
  3643 + Map<String, Object> m=new HashMap<String,Object>();
  3644 + m.put("xlName", BasicData.lineCode2NameMap.get(line));
  3645 + m.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  3646 + m.put("djgde", grade);
  3647 + m.put("qJh", s.getFcsj());
  3648 + m.put("qSj", time);
  3649 + m.put("hJh", listInfo0.get(i+1).getFcsj());
  3650 + m.put("hSj", listInfo0.get(i+1).getFcsjActual());
  3651 + m.put("djgsj", trough);
  3652 + m.put("bcjgsj", (fscjNext-fcsjTime)/60000);
  3653 + mapList.add(m);
  3654 + }
  3655 + }
  3656 + }
  3657 + }
  3658 +
  3659 + for (int i = 0; i < listInfo1.size(); i++) {
  3660 + ScheduleRealInfo s=listInfo1.get(i);
  3661 + Long fcsjTime=s.getFcsjActualTime();
  3662 + String time=s.getFcsjActual();
  3663 + String[] fcsjStr = time.split(":");
  3664 + long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
  3665 + if(i<listInfo1.size()-1){
  3666 + Long djg=0l;
  3667 + Long fscjNext=listInfo1.get(i+1).getFcsjActualTime();
  3668 + if((fcsj>=zgf1&&fcsj<=zgf2)||(fcsj>=wgf1&&fcsj<=wgf2)){
  3669 + djg = (long) (peak*60*1000);
  3670 + if(fscjNext-fcsjTime>djg){
  3671 + djgcs ++;
  3672 + Map<String, Object> m=new HashMap<String,Object>();
  3673 + m.put("xlName", BasicData.lineCode2NameMap.get(line));
  3674 + m.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  3675 + m.put("djgde", grade);
  3676 + m.put("qJh", s.getFcsj());
  3677 + m.put("qSj", time);
  3678 + m.put("hJh", listInfo1.get(i+1).getFcsj());
  3679 + m.put("hSj", listInfo1.get(i+1).getFcsjActual());
  3680 + m.put("djgsj", peak);
  3681 + m.put("bcjgsj", (fscjNext-fcsjTime)/60000);
  3682 + mapList.add(m);
  3683 + }
  3684 + }else{
  3685 + djg = (long) (trough*60*1000);
  3686 + if(fscjNext-fcsjTime>djg){
  3687 + djgcs ++;
  3688 + Map<String, Object> m=new HashMap<String,Object>();
  3689 + m.put("xlName", BasicData.lineCode2NameMap.get(line));
  3690 + m.put("fgsname", BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  3691 + m.put("djgde", grade);
  3692 + m.put("qJh", s.getFcsj());
  3693 + m.put("qSj", time);
  3694 + m.put("hJh", listInfo1.get(i+1).getFcsj());
  3695 + m.put("hSj", listInfo1.get(i+1).getFcsjActual());
  3696 + m.put("djgsj", trough);
  3697 + m.put("bcjgsj", (fscjNext-fcsjTime)/60000);
  3698 + mapList.add(m);
  3699 + }
  3700 + }
  3701 + }
  3702 + }
  3703 + double fsl=0.0;
  3704 + if(sjbcs>0){
  3705 + fsl=Arith.div(djgcs,sjbcs, 2)*100;
  3706 + }
  3707 +
  3708 + map.put("djgcs", djgcs);
  3709 + map.put("fsl", df.format(fsl)+"%");
  3710 + map.put("djgxx", mapList);
  3711 + return map;
  3712 + }
  3713 +
  3714 +
  3715 + @Override
  3716 + public Map<String, Object> online(Map<String, Object> map) {
  3717 + String line =map.get("line").toString();
  3718 + String date =map.get("date").toString();
  3719 + String type =map.get("type").toString();
  3720 + DecimalFormat df = new DecimalFormat("#0.00");
  3721 +
  3722 + List<String> objList = new ArrayList<String>();
  3723 + objList.add(date);
  3724 + objList.add(line);
  3725 + String sql="select cl_zbh from bsth_c_s_sp_info_real where "
  3726 + + " schedule_date_str = ? and xl_bm = ? group by cl_zbh";
  3727 + List<String> list= jdbcTemplate.query(sql, objList.toArray(),
  3728 + new RowMapper<String>(){
  3729 + @Override
  3730 + public String mapRow(ResultSet rs, int rowNum) throws SQLException {
  3731 + String clzbh=rs.getString("cl_zbh");
  3732 + return clzbh;
  3733 + }
  3734 + });
  3735 + List<Line> lineList=lineRepository.findLineByCode(line);
  3736 + int qzpcs =0;
  3737 + for (int i = 0; i < lineList.size(); i++) {
  3738 + Line l=lineList.get(i);
  3739 + qzpcs = l.getWarrantCar()==null?0:l.getWarrantCar();
  3740 + }
  3741 +
  3742 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3743 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  3744 + int zxcl=0;
  3745 + try {
  3746 + Long date1 = simpleDateFormat.parse(date+" 00:00:01").getTime();
  3747 + Long date2=simpleDateFormat.parse(date+" 23:59:59").getTime();
  3748 + Date dates=simpleDateFormat.parse(date+" 00:00:00");
  3749 + List<ArrivalInfo> lists=load_online(line,date1,date2,dates,date);
  3750 + for (int i = 0; i < list.size(); i++) {
  3751 + String nbbm=list.get(i);
  3752 + String sbbb=BasicData.deviceId2NbbmMap.inverse().get(nbbm);
  3753 + for (int j = 0; j < lists.size(); j++) {
  3754 + ArrivalInfo a=lists.get(i);
  3755 + if(a.getDeviceId().equals(sbbb)){
  3756 + zxcl ++;
  3757 + break;
  3758 + }
  3759 + }
  3760 +
  3761 + }
  3762 + } catch (ParseException e) {
  3763 + // TODO Auto-generated catch block
  3764 + e.printStackTrace();
  3765 + }
  3766 + map.put("xlName", BasicData.lineCode2NameMap.get(line));
  3767 + map.put("qzpcs", qzpcs);
  3768 + map.put("ccs", list.size());
  3769 + map.put("zxcl", zxcl);
  3770 + String zxl="0";
  3771 + if(list.size()>0){
  3772 + zxl = df.format(zxcl/list.size());
  3773 + }
  3774 + map.put("zxl", zxl+"%");
  3775 +
  3776 + if(type.equals("export")){
  3777 + List<Map<String, Object>> lMap=new ArrayList<Map<String,Object>>();
  3778 +
  3779 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  3780 + Map<String, Object> m = new HashMap<String, Object>();
  3781 + m.put("date", date);
  3782 + m.put("xlName", BasicData.lineCode2NameMap.get(line));
  3783 + m.put("qzpcs", qzpcs);
  3784 + m.put("ccs", list.size());
  3785 + m.put("zxcl", zxcl);
  3786 + m.put("zxl", zxl+"%");
  3787 + lMap.add(m);
  3788 + ReportUtils ee = new ReportUtils();
  3789 + try {
  3790 + listI.add(lMap.iterator());
  3791 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  3792 + ee.excelReplace(listI, new Object[]{m}, path + "mould/onlinelist.xls",
  3793 + path + "export/车辆在线率统计.xls");
  3794 + } catch (Exception e) {
  3795 + // TODO: handle exception
  3796 + e.printStackTrace();
  3797 + }
  3798 + }
  3799 + return map;
  3800 + }
  3801 +
  3802 + public List<ArrivalInfo> load_online(String line,Long date1,Long date2,Date dates,String date){
  3803 + List<ArrivalInfo> list = null;
  3804 + Calendar cal = Calendar.getInstance();
  3805 + cal.setTime(dates);
  3806 + //周数,表分区字段
  3807 + int weeks_year = cal.get(Calendar.WEEK_OF_YEAR);
  3808 +
  3809 + Connection conn = null;
  3810 + PreparedStatement ps = null;
  3811 + ResultSet rs = null;
  3812 + String year=date.substring(0,4);
  3813 + String sql = "select * from bsth_c_arrival_info_"+year+" where weeks_year=? AND line_id=? AND ts > ? AND ts <=? order by ts";
  3814 + try{
  3815 + conn = DBUtils_MS.getConnection();
  3816 + ps = conn.prepareStatement(sql);
  3817 + ps.setInt(1, weeks_year);
  3818 + ps.setString(2,line);
  3819 + ps.setLong(3, date1);
  3820 + ps.setLong(4, date2);
  3821 + rs = ps.executeQuery();
  3822 +
  3823 + list = resultSet2Set(rs);
  3824 + }catch(Exception e){
  3825 + logger.error("", e);
  3826 + }finally {
  3827 + DBUtils_MS.close(rs, ps, conn);
  3828 + }
  3829 + return list;
  3830 + }
  3831 + @Override
  3832 + public List<Singledata> singledatatj(Map<String, Object> map) {
  3833 + String sfyy="";
  3834 + if(map.get("sfyy")!=null){
  3835 + sfyy=map.get("sfyy").toString();
  3836 + }
  3837 + String gsdm="";
  3838 + if(map.get("gsdmSing")!=null){
  3839 + gsdm=map.get("gsdmSing").toString();
  3840 + }
  3841 + String fgsdm="";
  3842 + if(map.get("fgsdmSing")!=null){
  3843 + fgsdm=map.get("fgsdmSing").toString();
  3844 + }
  3845 + String type="";
  3846 + if(map.get("type")!=null){
  3847 + type=map.get("type").toString();
  3848 + }
  3849 + String tjtype=map.get("tjtype").toString();
  3850 + String xlbm=map.get("line").toString().trim();
  3851 + String startDate = map.get("startDate").toString();
  3852 + String endDate = map.get("endDate").toString();
  3853 +
  3854 + List<ScheduleRealInfo> listReal=new ArrayList<ScheduleRealInfo>();
  3855 + if(xlbm.equals("")){
  3856 + listReal=scheduleRealInfoRepository.scheduleByDateAndLineTj(xlbm, startDate, endDate, gsdm, fgsdm);
  3857 + }else{
  3858 + listReal=scheduleRealInfoRepository.scheduleByDateAndLineTj2(xlbm, startDate, endDate);
  3859 + }
  3860 + List<Singledata> list=new ArrayList<Singledata>();
  3861 + List<Singledata> list_=new ArrayList<Singledata>();
  3862 + if(tjtype.equals("jsy")){
  3863 + List<String> objList = new ArrayList<String>();
  3864 + objList.add(startDate);
  3865 + objList.add(endDate);
  3866 + //油统计
  3867 + String sql="select r.j_gh, r.xl_bm,r.cl_zbh,r.fgs_bm"
  3868 + + " from bsth_c_s_sp_info_real r where "
  3869 + + " r.schedule_date_str >= ?"
  3870 + + " and r.schedule_date_str <= ?";
  3871 + if(xlbm.length() != 0){
  3872 + sql += " and r.xl_bm = ?";
  3873 + objList.add(xlbm);
  3874 + }
  3875 + if(gsdm.length() != 0){
  3876 + sql += " and r.gs_bm = ?";
  3877 + objList.add(gsdm);
  3878 + }
  3879 + if(fgsdm.length() != 0){
  3880 + sql += " and r.fgs_bm = ?";
  3881 + objList.add(fgsdm);
  3882 + }
  3883 + sql += " group by r.j_gh,r.xl_bm,r.cl_zbh,r.fgs_bm order by r.xl_bm,r.cl_zbh";
  3884 +
  3885 + list = jdbcTemplate.query(sql, objList.toArray(), new RowMapper<Singledata>() {
  3886 + @Override
  3887 + public Singledata mapRow(ResultSet arg0, int arg1) throws SQLException {
  3888 + Singledata sin = new Singledata();
  3889 + sin.setxL(arg0.getString("xl_bm"));
  3890 + sin.setJsy(arg0.getString("j_gh"));
  3891 + sin.setClzbh(arg0.getString("cl_zbh"));
  3892 + sin.setgS(arg0.getString("fgs_bm"));
  3893 + return sin;
  3894 + }
  3895 + });
  3896 +
  3897 + List<String> objList2 = new ArrayList<String>();
  3898 + List<String> tempList2 = new ArrayList<String>();
  3899 + tempList2.add(startDate);
  3900 + tempList2.add(endDate);
  3901 + String linesql="";
  3902 + if(!xlbm.equals("")){
  3903 + linesql +=" and xlbm = ?";
  3904 + tempList2.add(xlbm);
  3905 + }
  3906 + if(!gsdm.equals("")){
  3907 + linesql +=" and ssgsdm = ?";
  3908 + tempList2.add(gsdm);
  3909 + }
  3910 + if(!fgsdm.equals("")){
  3911 + linesql +=" and fgsdm = ?";
  3912 + tempList2.add(fgsdm);
  3913 + }
  3914 +
  3915 + for(int i = 0; i < 2; i++){ // sql中使用两次重复参数
  3916 + for(String s : tempList2){
  3917 + objList2.add(s);
  3918 + }
  3919 + }
  3920 +
  3921 + String nysql="SELECT 'yh' as type,xlbm,nbbm,jsy,sum(jzl*1000)/1000 as jzl,"
  3922 + + " sum(yh*1000)/1000 as yh,"
  3923 + + " sum(sh*1000)/1000 as sh FROM "
  3924 + + "bsth_c_ylb where rq >= ? "
  3925 + + " and rq <= ? " +linesql
  3926 + + " group by xlbm ,nbbm,jsy "
  3927 + + " union SELECT 'dh' as type,xlbm,nbbm,jsy, "
  3928 + + " sum(cdl*1000)/1000 as jzl,sum(hd*1000)/1000 as yh,"
  3929 + + " sum(sh * 1000) / 1000 AS sh"
  3930 + + " FROM bsth_c_dlb where rq >= ? "
  3931 + + " and rq <= ? " +linesql
  3932 + + " group by xlbm ,nbbm,jsy" ;
  3933 +
  3934 + List<Singledata> listNy = jdbcTemplate.query(nysql, objList2.toArray(), new RowMapper<Singledata>() {
  3935 + @Override
  3936 + public Singledata mapRow(ResultSet arg0, int arg1) throws SQLException {
  3937 + Singledata sin = new Singledata();
  3938 + sin.setxL(arg0.getString("xlbm"));
  3939 + sin.setJsy(arg0.getString("jsy"));
  3940 + sin.setClzbh(arg0.getString("nbbm"));
  3941 + sin.setJzl(arg0.getString("jzl"));
  3942 + sin.setHyl(arg0.getString("yh"));
  3943 + sin.setUnyyyl(arg0.getString("sh"));
  3944 + return sin;
  3945 + }
  3946 + });
  3947 + //统计油,电表中手动添加的或者有加注没里程的数据
  3948 + for (int i = 0; i < listNy.size(); i++) {
  3949 + Singledata sin_=listNy.get(i);
  3950 + String jsy=sin_.getJsy();
  3951 + String line=sin_.getxL();
  3952 + String clzbh=sin_.getClzbh();
  3953 + boolean fages=true;
  3954 + for (int j = 0; j < list.size(); j++) {
  3955 + Singledata sin=list.get(j);
  3956 + String jsy_=sin.getJsy();
  3957 + String line_=sin.getxL();
  3958 + String clzbh_=sin.getClzbh();
  3959 + if(jsy.equals(jsy_)
  3960 + &&line.equals(line_)
  3961 + &&clzbh.equals(clzbh_)){
  3962 + fages=false;
  3963 + }
  3964 + }
  3965 + if(fages){
  3966 + Singledata s=new Singledata();
  3967 + s.setJsy(jsy);
  3968 + s.setjName(BasicData.allPerson.get(gsdm+"-"+jsy));
  3969 + s.setClzbh(clzbh);
  3970 + s.setSgh("");
  3971 + s.setsName("");
  3972 + s.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  3973 + s.setxL(line);
  3974 + s.setXlmc(BasicData.lineCodeAllNameMap.get(line));
  3975 + s.setJzl(sin_.getJzl());
  3976 + s.setHyl(sin_.getHyl());
  3977 + s.setUnyyyl(sin_.getUnyyyl());
  3978 + s.setJhlc("0.0");
  3979 + s.setEmptMileage("0.0");
  3980 + s.setJhjl("0.0");
  3981 + if(startDate.equals(endDate))
  3982 + s.setrQ(startDate);
  3983 + else
  3984 + s.setrQ(startDate+"-"+endDate);
  3985 +
  3986 + list_.add(s);
  3987 + }
  3988 + }
  3989 + for (int i= 0; i < list.size(); i++) {
  3990 + Singledata sin=list.get(i);
  3991 + String jsy=sin.getJsy();
  3992 + String line=sin.getxL();
  3993 + String clzbh=sin.getClzbh();
  3994 + double jzl=0.0;
  3995 + double yh=0.0;
  3996 + double sh=0.0;
  3997 + for (int j = 0; j < listNy.size(); j++) {
  3998 + Singledata y=listNy.get(j);
  3999 + if(y.getJsy().equals(jsy)
  4000 + &&y.getClzbh().equals(clzbh)
  4001 + &&y.getxL().equals(line)){
  4002 + jzl=Arith.add(jzl, y.getJzl());
  4003 + yh=Arith.add(yh, y.getHyl());
  4004 + sh=Arith.add(sh, y.getUnyyyl());
  4005 + }
  4006 + }
  4007 + sin.setHyl(String.valueOf(yh));
  4008 + sin.setJzl(String.valueOf(jzl));
  4009 + sin.setUnyyyl(String.valueOf(sh));
  4010 +
  4011 + List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
  4012 + List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
  4013 + for (int j = 0; j < listReal.size(); j++) {
  4014 + ScheduleRealInfo s=listReal.get(j);
  4015 + if(s.getjGh().equals(jsy)
  4016 + && s.getClZbh().equals(clzbh)
  4017 + &&s.getXlBm().equals(line)){
  4018 + newList.add(s);
  4019 + Set<ChildTaskPlan> cts = s.getcTasks();
  4020 + if(cts != null && cts.size() > 0){
  4021 + newList_.add(s);
  4022 + }else{
  4023 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
  4024 + newList_.add(s);
  4025 + }
  4026 + }
  4027 + }
  4028 + }
  4029 + double jhgl=culateMileageService.culateJhgl(newList);
  4030 + double jhjcc=culateMileageService.culateJhJccgl(newList);
  4031 + double yygl=culateMileageService.culateSjgl(newList_);
  4032 + double ljgl=culateMileageService.culateLjgl(newList_);
  4033 + double ksgl=culateMileageService.culateKsgl(newList_);
  4034 + double jcgl=culateMileageService.culateJccgl(newList_);
  4035 +
  4036 + double zyygl=Arith.add(yygl, ljgl);
  4037 + double zksgl=Arith.add(ksgl, jcgl);
  4038 + sin.setJhlc(String.valueOf(Arith.add(zyygl,zksgl)));
  4039 + sin.setEmptMileage(String.valueOf(zksgl));
  4040 + sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc)));
  4041 + if(newList.size()>0){
  4042 + sin.setXlmc(newList.get(0).getXlName());
  4043 + sin.setjName(newList.get(0).getjName());
  4044 + }else{
  4045 + sin.setXlmc(BasicData.lineCodeAllNameMap.get(line));
  4046 + sin.setjName(BasicData.allPerson.get(gsdm+"-"+jsy));
  4047 +
  4048 + }
  4049 + if(startDate.equals(endDate))
  4050 + sin.setrQ(startDate);
  4051 + else
  4052 + sin.setrQ(startDate+"-"+endDate);
  4053 +// sin.setjName(BasicData.allPerson.get(gsdm+"-"+jsy));
  4054 + sin.setSgh("");
  4055 + sin.setsName("");
  4056 + sin.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  4057 + list_.add(sin);
  4058 +
  4059 + }
  4060 + }else{
  4061 + List<String> objList3 = new ArrayList<String>();
  4062 + objList3.add(startDate);
  4063 + objList3.add(endDate);
  4064 + String sql="select r.s_gh,r.s_name, "
  4065 + + " r.xl_bm,r.cl_zbh,r.gs_bm,r.fgs_bm"
  4066 + + " from bsth_c_s_sp_info_real r where "
  4067 + + " r.schedule_date_str >= ?"
  4068 + + " schedule_date_str <= ?"
  4069 + + " and r.s_gh !='' and r.s_gh is not null ";
  4070 + if(!xlbm.equals("")){
  4071 + sql += " and r.xl_bm = ?";
  4072 + objList3.add(xlbm);
  4073 + }
  4074 + if(!gsdm.equals("")){
  4075 + sql += " and r.gs_bm = ?";
  4076 + objList3.add(gsdm);
  4077 + }
  4078 + if(!fgsdm.equals("")){
  4079 + sql += " and r.fgs_bm = ?";
  4080 + objList3.add(fgsdm);
  4081 + }
  4082 + sql += " group by r.s_gh,r.s_name,"
  4083 + + " r.xl_bm,r.cl_zbh,r.gs_bm,r.fgs_bm order by r.xl_bm,r.cl_zbh";
  4084 +
  4085 + list = jdbcTemplate.query(sql, objList3.toArray(), new RowMapper<Singledata>() {
  4086 + //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  4087 + @Override
  4088 + public Singledata mapRow(ResultSet arg0, int arg1) throws SQLException {
  4089 + Singledata sin = new Singledata();
  4090 +// sin.setrQ(startDate);
  4091 + sin.setxL(arg0.getString("xl_bm"));
  4092 + sin.setClzbh(arg0.getString("cl_zbh"));
  4093 + sin.setSgh(arg0.getString("s_gh"));
  4094 + sin.setsName(arg0.getString("s_name"));
  4095 + sin.setgS(arg0.getString("fgs_bm"));
  4096 + return sin;
  4097 + }
  4098 + });
  4099 +
  4100 + String spy="";
  4101 + if(map.get("map")!=null){
  4102 + spy=map.get("spy").toString();
  4103 + }
  4104 + for (int i = 0; i < list.size(); i++) {
  4105 + Singledata sin=list.get(i);
  4106 + sin.setrQ(startDate+"-"+endDate);
  4107 + String jsy=sin.getSgh();
  4108 + String line=sin.getxL();
  4109 + String clzbh=sin.getClzbh();
  4110 + List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
  4111 + List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
  4112 +
  4113 + for (int j = 0; j < listReal.size(); j++) {
  4114 + ScheduleRealInfo s=listReal.get(j);
  4115 + if(s.getsGh().equals(jsy) && s.getClZbh().equals(clzbh)
  4116 + &&s.getXlBm().equals(line)){
  4117 + newList.add(s);
  4118 + Set<ChildTaskPlan> cts = s.getcTasks();
  4119 + if(cts != null && cts.size() > 0){
  4120 + newList_.add(s);
  4121 + }else{
  4122 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
  4123 + newList_.add(s);
  4124 + }
  4125 + }
  4126 + }
  4127 + }
  4128 + double jhgl=culateMileageService.culateJhgl(newList);;
  4129 + double jhjcc=culateMileageService.culateJhJccgl(newList);
  4130 + double yygl=0.0;
  4131 + double ljgl=0.0;
  4132 + double zksgl=0.0;
  4133 + if(spy.equals("zrw")){
  4134 + yygl=culateMileageService.culateSjgl_spy(newList_);
  4135 + ljgl=culateMileageService.culateLjgl_spy(newList_);
  4136 + zksgl=culateMileageService.culateSjfyylc_spy(newList_);
  4137 + }else{
  4138 + yygl=culateMileageService.culateSjgl(newList_);
  4139 + ljgl=culateMileageService.culateLjgl(newList_);
  4140 + double ksgl=culateMileageService.culateKsgl(newList_);
  4141 + double jcgl=culateMileageService.culateJccgl(newList_);
  4142 + zksgl=Arith.add(ksgl, jcgl);
  4143 + }
  4144 + double zyygl=Arith.add(yygl, ljgl);
  4145 + sin.setJhlc(String.valueOf(Arith.add(zyygl,zksgl)));
  4146 + sin.setEmptMileage(String.valueOf(zksgl));
  4147 + sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc)));
  4148 + if(newList.size()>0)
  4149 + sin.setXlmc(newList.get(0).getXlName());
  4150 + else
  4151 + sin.setXlmc(BasicData.lineCodeAllNameMap.get(line));
  4152 + sin.setClzbh(clzbh);
  4153 + sin.setJsy("");
  4154 + sin.setjName("");
  4155 + sin.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm));
  4156 + sin.setHyl("");
  4157 + sin.setJzl("");
  4158 + sin.setUnyyyl("");
  4159 + list_.add(sin);
  4160 + }
  4161 + }
  4162 +
  4163 +
  4164 +
  4165 + if (type.equals("export")) {
  4166 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  4167 + ReportUtils ee = new ReportUtils();
  4168 +
  4169 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  4170 + int i = 1;
  4171 + for (Singledata l : list_) {
  4172 + Map<String, Object> m = new HashMap<String, Object>();
  4173 + m.put("i", i);
  4174 + m.put("rQ", l.getrQ());
  4175 + m.put("gS", l.getgS());
  4176 + m.put("xL", l.getXlmc());
  4177 + m.put("clzbh", l.getClzbh());
  4178 + m.put("jsy", l.getJsy());
  4179 + m.put("jName", l.getjName());
  4180 + m.put("sgh", l.getSgh());
  4181 + m.put("sName", l.getsName());
  4182 + m.put("jhlc", l.getJhlc());
  4183 + m.put("emptMileage", l.getEmptMileage());
  4184 + m.put("hyl", l.getHyl());
  4185 + m.put("jzl", l.getJzl());
  4186 + m.put("unyyyl", l.getUnyyyl());
  4187 + m.put("jhjl", l.getJhjl());
  4188 + resList.add(m);
  4189 +
  4190 + i++;
  4191 + }
  4192 +
  4193 + listI.add(resList.iterator());
  4194 + try {
  4195 + String exportDate="";
  4196 + if(startDate.equals(endDate)){
  4197 + exportDate =sdfSimple.format(sdfMonth.parse(startDate)) ;
  4198 + }else{
  4199 + exportDate =sdfSimple.format(sdfMonth.parse(startDate))+"-"+sdfSimple.format(sdfMonth.parse(endDate)) ;
  4200 + }
  4201 + String lineName = "";
  4202 + if(map.containsKey("lineName"))
  4203 + lineName = map.get("lineName").toString();
  4204 +
  4205 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  4206 + ee.excelReplace(listI, new Object[] { map }, path + "mould/singledata.xls",
  4207 + path + "export/" +exportDate
  4208 + + "-" + lineName + "-路单统计.xls");
  4209 + } catch (ParseException e) {
  4210 + e.printStackTrace();
  4211 + }
  4212 + }
  4213 + return list_;
  4214 + }
  4215 +
  4216 + @Override
  4217 + public List<Map<String, Object>> singleEnergy(Map<String, Object> map) {
  4218 + // TODO Auto-generated method stub
  4219 + Map<String, Map<String,Object>> mm=new HashMap<String, Map<String,Object>>();
  4220 +
  4221 + String gsdm="";
  4222 + if(map.get("gs")!=null){
  4223 + gsdm=map.get("gs").toString();
  4224 + }
  4225 + String fgsdm="";
  4226 + if(map.get("fgs")!=null){
  4227 + fgsdm=map.get("fgs").toString();
  4228 + }
  4229 + String energy="";
  4230 + if(map.get("energy")!=null){
  4231 + energy=map.get("energy").toString();
  4232 + }
  4233 + String xlbm="";
  4234 + if(map.get("line")!=null){
  4235 + xlbm=map.get("line").toString().trim();
  4236 + }
  4237 + String date = map.get("date").toString();
  4238 +
  4239 + List<ScheduleRealInfo> listReal=new ArrayList<ScheduleRealInfo>();
  4240 + if(xlbm.equals("")){
  4241 + listReal=scheduleRealInfoRepository.scheduleByDateAndLineByGs_(gsdm, fgsdm,date);
  4242 + }else{
  4243 + listReal=scheduleRealInfoRepository.scheduleByDateAndLineQp(xlbm, date);
  4244 + }
  4245 +
  4246 + List<String> objList = new ArrayList<String>();
  4247 + objList.add(date);
  4248 + String sql="select r.j_gh, r.xl_bm,r.cl_zbh,r.lp_name "
  4249 + + " from bsth_c_s_sp_info_real r where "
  4250 + + " r.schedule_date_str = ?";
  4251 + if(xlbm.length() != 0){
  4252 + sql += " and r.xl_bm = ?";
  4253 + objList.add(xlbm);
  4254 + }
  4255 + if(gsdm.length() != 0){
  4256 + sql += " and r.gs_bm = ?";
  4257 + objList.add(gsdm);
  4258 + }
  4259 + if(fgsdm.length() != 0){
  4260 + sql += " and r.fgs_bm = ?";
  4261 + objList.add(fgsdm);
  4262 + }
  4263 + sql += " group by r.j_gh,r.xl_bm,r.cl_zbh,r.lp_name order by r.xl_bm,r.cl_zbh,r.lp_name";
  4264 +
  4265 +
  4266 + List<Map<String, Object>> list = jdbcTemplate.query(sql, objList.toArray(), new RowMapper<Map<String,Object>>() {
  4267 + @Override
  4268 + public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
  4269 + Map<String, Object> m=new HashMap<String, Object>();
  4270 + m.put("jGh", arg0.getString("j_gh"));
  4271 + m.put("xlBm", arg0.getString("xl_bm"));
  4272 + m.put("clZbh", arg0.getString("cl_zbh"));
  4273 + m.put("lpName", arg0.getString("lp_name"));
  4274 + return m;
  4275 + }
  4276 + });
  4277 +
  4278 + for (int i = 0; i < list.size(); i++) {
  4279 + Map<String, Object> m=list.get(i);
  4280 + String jGh=m.get("jGh").toString();
  4281 + String xlBm=m.get("xlBm").toString();
  4282 + String clZbh=m.get("clZbh").toString();
  4283 + String lpName=m.get("lpName").toString();
  4284 + List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
  4285 + List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
  4286 + String sGh="";
  4287 + String sName="";
  4288 + String jName="";
  4289 + String xlName="";
  4290 + for (int j = 0; j < listReal.size(); j++) {
  4291 + ScheduleRealInfo s=listReal.get(j);
  4292 + if(s.getjGh().equals(jGh)
  4293 + && s.getClZbh().equals(clZbh)
  4294 + &&s.getXlBm().equals(xlBm)
  4295 + &&s.getLpName().equals(lpName)){
  4296 + newList.add(s);
  4297 + if(jName.equals("")){
  4298 + jName=s.getjName();
  4299 + xlName=s.getXlName();
  4300 + }
  4301 + if(sGh.equals("")){
  4302 + if(!StringUtils.isEmpty(s.getsGh())){
  4303 + sGh=s.getsGh();
  4304 + sName=s.getsName();
  4305 + }
  4306 + }
  4307 + Set<ChildTaskPlan> cts = s.getcTasks();
  4308 + if(cts != null && cts.size() > 0){
  4309 + newList_.add(s);
  4310 + }else{
  4311 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
  4312 + newList_.add(s);
  4313 + }
  4314 + }
  4315 + }
  4316 + }
  4317 + double yygl=culateMileageService.culateSjgl(newList_);
  4318 + double ljgl=culateMileageService.culateLjgl(newList_);
  4319 + double ksgl=culateMileageService.culateKsgl(newList_);
  4320 + double jcgl=culateMileageService.culateJccgl(newList_);
  4321 + double zyygl=Arith.add(yygl, ljgl);
  4322 + double zksgl=Arith.add(ksgl, jcgl);
  4323 + double zlc=Arith.add(zyygl, zksgl);
  4324 + Map<String, Object> m_=new HashMap<String, Object>();
  4325 + m_.put("zlc", zlc);
  4326 + m_.put("zksgl", zksgl);
  4327 + m_.put("sGh", sGh);
  4328 + m_.put("sName", sName);
  4329 + m_.put("jGh", jGh);
  4330 + m_.put("jName", jName);
  4331 + m_.put("xlName", xlName);
  4332 + mm.put(xlBm+jGh+clZbh+lpName, m_);
  4333 + }
  4334 + List<Map<String, Object>> listAll=new ArrayList<Map<String,Object>>();
  4335 + if(energy.equals("1")){
  4336 + List<String> objList1 = new ArrayList<String>();
  4337 + objList1.add(date);
  4338 + //油统计
  4339 + String ylbSql="select ssgsdm,fgsdm,xlbm,nbbm,jsy,ifnull(lp,'') as lp,czlc,"
  4340 + + " czyl,jzl,jzlc,jzyl,yh,sh,shyy,rylx,ns,zlc,linename,jname "
  4341 + + " from bsth_c_ylb where rq = ?";
  4342 +
  4343 + if(xlbm.length() != 0){
  4344 + ylbSql += " and xlbm = ?";
  4345 + objList1.add(xlbm);
  4346 + }
  4347 + if(gsdm.length() != 0){
  4348 + ylbSql += " and ssgsdm = ?";
  4349 + objList1.add(gsdm);
  4350 + }
  4351 + if(fgsdm.length() != 0){
  4352 + ylbSql += " and fgsdm = ?";
  4353 + objList1.add(fgsdm);
  4354 + }
  4355 + ylbSql += " order by xlbm,nbbm,jcsx";
  4356 + listAll = jdbcTemplate.query(ylbSql, objList1.toArray(), new RowMapper<Map<String,Object>>() {
  4357 + @Override
  4358 + public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
  4359 + Map<String, Object> m=new HashMap<String, Object>();
  4360 + m.put("ssgsdm", arg0.getString("ssgsdm"));
  4361 + m.put("fgsdm", arg0.getString("fgsdm"));
  4362 + m.put("xlbm", arg0.getString("xlbm"));
  4363 + m.put("nbbm", arg0.getString("nbbm"));
  4364 + m.put("jsy", arg0.getString("jsy"));
  4365 + m.put("lp", arg0.getString("lp"));
  4366 + m.put("czlc", arg0.getDouble("czlc"));
  4367 + m.put("czyl", arg0.getDouble("czyl"));
  4368 + m.put("jzl", arg0.getDouble("jzl"));
  4369 + m.put("jzlc", arg0.getDouble("jzlc"));
  4370 + m.put("jzyl", arg0.getDouble("jzyl"));
  4371 + m.put("yh", arg0.getDouble("yh"));
  4372 + m.put("sh", arg0.getDouble("sh"));
  4373 + m.put("shyy", arg0.getString("shyy"));
  4374 + m.put("rylx", arg0.getString("rylx"));
  4375 + m.put("ns", arg0.getDouble("ns"));
  4376 + m.put("zlc", arg0.getDouble("zlc"));
  4377 + m.put("linename", arg0.getString("linename"));
  4378 + m.put("jname", arg0.getString("jname"));
  4379 + if(arg0.getDouble("zlc")==0){
  4380 + m.put("bglyh", "0.000");
  4381 + }else{
  4382 + DecimalFormat df = new DecimalFormat("0.000");
  4383 + m.put("bglyh", df.format(arg0.getDouble("yh")/arg0.getDouble("zlc")*100));
  4384 + }
  4385 + m.put("gsName", BasicData.businessCodeNameMap.get(arg0.getString("ssgsdm")));
  4386 + m.put("fgsName", BasicData.businessFgsCodeNameMap.get(arg0.getString("fgsdm")+"_"+arg0.getString("ssgsdm")));
  4387 + return m;
  4388 + }
  4389 + });
  4390 +
  4391 + }else{
  4392 + List<String> objList2 = new ArrayList<String>();
  4393 + objList2.add(date);
  4394 + //电统计
  4395 + String dlbSql="select ssgsdm,fgsdm,xlbm,nbbm,jsy,ifnull(lp,'') as lp,czlc,"
  4396 + + " czcd,cdl,jzlc,jzcd,hd,sh,shyy,ns,zlc,linename,jname "
  4397 + + " from bsth_c_dlb where rq = ?";
  4398 + if(xlbm.length() != 0){
  4399 + dlbSql += " and xlbm = ?";
  4400 + objList2.add(xlbm);
  4401 + }
  4402 + if(gsdm.length() != 0){
  4403 + dlbSql += " and ssgsdm = ?";
  4404 + objList2.add(gsdm);
  4405 + }
  4406 + if(fgsdm.length() != 0){
  4407 + dlbSql += " and fgsdm = ?";
  4408 + objList2.add(fgsdm);
  4409 + }
  4410 + dlbSql += " order by xlbm,nbbm,jcsx";
  4411 + listAll = jdbcTemplate.query(dlbSql, objList2.toArray(), new RowMapper<Map<String,Object>>() {
  4412 + @Override
  4413 + public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
  4414 + Map<String, Object> m=new HashMap<String, Object>();
  4415 + m.put("ssgsdm", arg0.getString("ssgsdm"));
  4416 + m.put("fgsdm", arg0.getString("fgsdm"));
  4417 + m.put("xlbm", arg0.getString("xlbm"));
  4418 + m.put("nbbm", arg0.getString("nbbm"));
  4419 + m.put("jsy", arg0.getString("jsy"));
  4420 + m.put("lp", arg0.getString("lp"));
  4421 + m.put("czlc", arg0.getDouble("czlc"));
  4422 + m.put("czcd", arg0.getDouble("czcd"));
  4423 + m.put("cdl", arg0.getDouble("cdl"));
  4424 + m.put("jzlc", arg0.getDouble("jzlc"));
  4425 + m.put("jzcd", arg0.getDouble("jzcd"));
  4426 + m.put("hd", arg0.getDouble("hd"));
  4427 + m.put("sh", arg0.getDouble("sh"));
  4428 + m.put("shyy", arg0.getString("shyy"));
  4429 + m.put("linename", arg0.getString("linename"));
  4430 + m.put("jname", arg0.getString("jname"));
  4431 + m.put("zlc", arg0.getDouble("zlc"));
  4432 + //电量统计中添加默认中 燃油类型,尿素,保证导出模板相同
  4433 + m.put("rylx", "");
  4434 + m.put("ns", "0");
  4435 + if(arg0.getDouble("zlc")==0){
  4436 + m.put("bglyh", "0.000");
  4437 + }else{
  4438 + DecimalFormat df = new DecimalFormat("0.000");
  4439 + m.put("bglyh", df.format(arg0.getDouble("hd")/arg0.getDouble("zlc")*100));
  4440 + }
  4441 + m.put("gsName", BasicData.businessCodeNameMap.get(arg0.getString("ssgsdm")));
  4442 + m.put("fgsName", BasicData.businessFgsCodeNameMap.get(arg0.getString("fgsdm")+"_"+arg0.getString("ssgsdm")));
  4443 + return m;
  4444 + }
  4445 + });
  4446 + }
  4447 +
  4448 + Map<String, Object> dMap=new HashMap<>();
  4449 + dMap.put("dGroup_eq", "oilType");
  4450 + Iterator<Dictionary> it= dictionaryService.list(dMap).iterator();
  4451 + while (it.hasNext()) {
  4452 + Dictionary d=it.next();
  4453 + dMap.put(d.getdCode(), d.getdName());
  4454 + }
  4455 + for (int i = 0; i < listAll.size(); i++) {
  4456 + Map<String, Object> m=listAll.get(i);
  4457 + String jGh=m.get("jsy").toString();
  4458 + String xlBm=m.get("xlbm").toString();
  4459 + String clZbh=m.get("nbbm").toString();
  4460 + String lpName=m.get("lp")==null?"":m.get("lp").toString();
  4461 + String shyy=m.get("shyy")==null?"":m.get("shyy").toString();
  4462 + String rylx=m.get("rylx")==null?"":m.get("rylx").toString();
  4463 + if(dMap.get(rylx)==null){
  4464 + rylx="";
  4465 + }else{
  4466 + rylx=dMap.get(rylx).toString();
  4467 + }
  4468 + m.put("rylx", rylx);
  4469 + m.put("shyy", getShyy(shyy));
  4470 + m.put("date", date);
  4471 +
  4472 + if(mm.get(xlBm+jGh+clZbh+lpName)!=null){
  4473 + Map<String, Object> m_=mm.get(xlBm+jGh+clZbh+lpName);
  4474 + m.put("zlcAll", m_.get("zlc")==null?"":m_.get("zlc").toString());
  4475 + m.put("zksgl", m_.get("zksgl")==null?"":m_.get("zksgl").toString());
  4476 + m.put("sGh", m_.get("sGh")==null?"":m_.get("sGh").toString());
  4477 + m.put("sName", m_.get("sName")==null?"":m_.get("sName").toString());
  4478 + m.put("jname", m_.get("jName")==null?"":m_.get("jName").toString());
  4479 + m.put("linename", m_.get("xlName")==null?"":m_.get("xlName").toString());
  4480 + }else{
  4481 + m.put("zlcAll", "");
  4482 + m.put("zksgl", "");
  4483 + m.put("sGh", "");
  4484 + m.put("sName", "");
  4485 + //油量表中历史数据和手动添加数据没有储存线路名字与驾驶员名字,是null的字段则根据编号查找
  4486 + if(m.get("linename")==null){
  4487 + m.put("linename", BasicData.lineCode2NameMap.get(xlBm));
  4488 + }
  4489 + if(m.get("jname")==null){
  4490 + m.put("jname", BasicData.allPerson.get(m.get("ssgsdm")+"-"+jGh));
  4491 + }
  4492 + }
  4493 + }
  4494 +
  4495 + if(map.get("type").toString().equals("export")){
  4496 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  4497 + Map<String, Object> m = new HashMap<String, Object>();
  4498 + m.put("date", date);
  4499 + ReportUtils ee = new ReportUtils();
  4500 + try {
  4501 + listI.add(listAll.iterator());
  4502 + if(energy.equals("1")){
  4503 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  4504 + ee.excelReplace(listI, new Object[]{m}, path + "mould/energy_ylb.xls",
  4505 + path + "export/"+date+"路单油量统计表.xls");
  4506 + }else{
  4507 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  4508 + ee.excelReplace(listI, new Object[]{m}, path + "mould/energy_dlb.xls",
  4509 + path + "export/"+date+"路单电量统计表.xls");
  4510 + }
  4511 +
  4512 + } catch (Exception e) {
  4513 + // TODO: handle exception
  4514 + e.printStackTrace();
  4515 + }
  4516 + }
  4517 + return listAll;
  4518 + }
  4519 +
  4520 + public Map<String,Object> calcDetailMonthlyE(Map<String, Object> map){
  4521 +
  4522 + Map<String, Object> resultMap = new HashMap<String, Object>();
  4523 + if (executing) {
  4524 + resultMap.put("status", ResponseCode.ERROR);
  4525 + resultMap.put("msg", "此计算正在处理,请不要重复请求");
  4526 +
  4527 + return resultMap;
  4528 + }
  4529 + executing = true;
  4530 +// List<List<String>> list = calcWaybillService.calcDetailMonthly(map);
  4531 + List<List<String>> list = calcWaybillService.calcDetailMonthlyNew(map);
  4532 +
  4533 + try {
  4534 + String name = map.get("name").toString();
  4535 + String type = map.get("statisticalObj").toString();
  4536 + if(list.size()>0){
  4537 + ReportUtils ee = new ReportUtils();
  4538 + ee.createFlie(list,name,type);
  4539 + }
  4540 +
  4541 + resultMap.put("status", ResponseCode.SUCCESS);
  4542 + } catch (Exception e) {
  4543 + resultMap.put("status", ResponseCode.ERROR);
  4544 + logger.error("save erro.", e);
  4545 + } finally {
  4546 + executing = false;
  4547 + }
  4548 + return resultMap;
  4549 + }
  4550 +
  4551 + private String getShyy(String node){
  4552 + String shyy ="无";
  4553 + if(!node.equals("")){
  4554 + if(node.equals("1")){shyy="票务用油";}
  4555 + else if(node.equals("2")){shyy="保养用油";}
  4556 + else if(node.equals("3")){shyy="报废车用油";}
  4557 + else if(node.equals("4")){shyy="其它用油";}
  4558 + else if(node.equals("5")){shyy="人保部";}
  4559 + else if(node.equals("6")){shyy="车队";}
  4560 + else if(node.equals("7")){shyy="车间(高保)";}
  4561 + else if(node.equals("8")){shyy="车间(小修)";}
  4562 + else{shyy ="无";}
  4563 + }
  4564 + return shyy;
  4565 + }
  4566 +
  4567 +}
  4568 +
  4569 +class ComparableAcuals implements Comparator<ScheduleRealInfo>{
  4570 +
  4571 + @Override
  4572 + public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
  4573 + // TODO Auto-generated method stub
  4574 + return o1.getFcsjActualTime().compareTo(o2.getFcsjActualTime());
  4575 + }
  4576 +
4562 4577 }
4563 4578 \ No newline at end of file
... ...