Commit b39a2ab851da4adbf26553789037a76d9e884417

Authored by 廖磊
1 parent b8921ced

新增大间隔统计报表,及相关统计日报,调度日报大间隔部分修改

src/main/java/com/bsth/controller/calc/CalcIntervalController.java 0 → 100644
  1 +package com.bsth.controller.calc;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.RequestMapping;
  8 +import org.springframework.web.bind.annotation.RequestParam;
  9 +import org.springframework.web.bind.annotation.RestController;
  10 +
  11 +import com.bsth.controller.BaseController;
  12 +import com.bsth.entity.calc.CalcInterval;
  13 +import com.bsth.service.calc.CalcIntervalService;
  14 +
  15 +@RestController
  16 +@RequestMapping("calcInterval")
  17 +public class CalcIntervalController extends BaseController<CalcInterval,Integer>{
  18 + @Autowired
  19 + CalcIntervalService calcIntervalService;
  20 + @RequestMapping(value="/countList")
  21 + public List<Map<String,Object>> countList(@RequestParam Map<String, Object> map){
  22 + List<Map<String, Object>> list=calcIntervalService.countList(map);
  23 + return list;
  24 + }
  25 +
  26 + @RequestMapping(value="/listInterval")
  27 + public List<CalcInterval> listInterval(@RequestParam Map<String, Object> map){
  28 + List<CalcInterval> list=calcIntervalService.listInterval(map);
  29 + return list;
  30 + }
  31 +
  32 + @RequestMapping(value="/interval")
  33 + public List<Map<String,Object>> interval(@RequestParam Map<String, Object> map){
  34 + List<Map<String,Object>> list=calcIntervalService.interval(map);
  35 + return list;
  36 + }
  37 +
  38 +
  39 +}
... ...
src/main/java/com/bsth/entity/calc/CalcInterval.java
... ... @@ -6,6 +6,9 @@ import javax.persistence.Entity;
6 6 import javax.persistence.GeneratedValue;
7 7 import javax.persistence.Id;
8 8 import javax.persistence.Table;
  9 +import javax.persistence.Transient;
  10 +
  11 +import com.bsth.data.BasicData;
9 12  
10 13 /**
11 14 * @author bsth-a
... ... @@ -17,7 +20,7 @@ public class CalcInterval {
17 20 /* 主键*/
18 21 @Id
19 22 @GeneratedValue
20   - private Integer id;
  23 + private Long id;
21 24 /* 公司代码*/
22 25 private String gsbm;
23 26 /* 分公司代码*/
... ... @@ -36,6 +39,10 @@ public class CalcInterval {
36 39 private Integer djgAll;
37 40 /*高峰大间隔次数*/
38 41 private Integer djgGf;
  42 + /*早高峰大间隔次数*/
  43 + private Integer djgZgf;
  44 + /*晚高峰大间隔次数*/
  45 + private Integer djgWgf;
39 46 /*低谷大间隔次数*/
40 47 private Integer djgDg;
41 48 /*最大间隔时间*/
... ... @@ -44,10 +51,17 @@ public class CalcInterval {
44 51 private Date createtime;
45 52 /*数据修改时间*/
46 53 private Date updatetime;
47   - public Integer getId() {
  54 +
  55 + /*公司名字*/
  56 + @Transient
  57 + private String gsname;
  58 + /*分公司名字*/
  59 + @Transient
  60 + private String fgsname;
  61 + public Long getId() {
48 62 return id;
49 63 }
50   - public void setId(Integer id) {
  64 + public void setId(Long id) {
51 65 this.id = id;
52 66 }
53 67 public String getGsbm() {
... ... @@ -104,6 +118,19 @@ public class CalcInterval {
104 118 public void setDjgGf(Integer djgGf) {
105 119 this.djgGf = djgGf;
106 120 }
  121 +
  122 + public Integer getDjgZgf() {
  123 + return djgZgf;
  124 + }
  125 + public void setDjgZgf(Integer djgZgf) {
  126 + this.djgZgf = djgZgf;
  127 + }
  128 + public Integer getDjgWgf() {
  129 + return djgWgf;
  130 + }
  131 + public void setDjgWgf(Integer djgWgf) {
  132 + this.djgWgf = djgWgf;
  133 + }
107 134 public Integer getDjgDg() {
108 135 return djgDg;
109 136 }
... ... @@ -128,5 +155,18 @@ public class CalcInterval {
128 155 public void setUpdatetime(Date updatetime) {
129 156 this.updatetime = updatetime;
130 157 }
  158 + public String getGsname() {
  159 + return BasicData.businessCodeNameMap.get(this.gsbm);
  160 + }
  161 + public void setGsname(String gsname) {
  162 + this.gsname = gsname;
  163 + }
  164 + public String getFgsname() {
  165 + return BasicData.businessFgsCodeNameMap.get(this.fgsbm+"_"+this.gsbm);
  166 + }
  167 + public void setFgsname(String fgsname) {
  168 + this.fgsname = fgsname;
  169 + }
  170 +
131 171  
132 172 }
... ...
src/main/java/com/bsth/repository/calc/CalcIntervalRepository.java
1 1 package com.bsth.repository.calc;
2 2  
3 3 import java.util.List;
  4 +import java.util.Map;
4 5  
5 6 import javax.transaction.Transactional;
6 7  
... ... @@ -18,23 +19,34 @@ import org.springframework.stereotype.Repository;
18 19 public interface CalcIntervalRepository extends BaseRepository<CalcInterval, Integer>{
19 20  
20 21 //按照时间段统计,公司下线路
21   - @Query(value="select DISTINCT c from CalcInterval c where c.xl like %?1% and c.rqStr between ?2 and ?3 and c.gsdm like %?4% and c.fgsdm like %?5% order by c.xl")
22   - List<CalcInterval> selectByDateAndLine(String line,String date,String date2,String gsdm,String fgsdm);
  22 + @Query(value="select DISTINCT c from CalcInterval c where c.date >= ?1 and c.date<= ?2 and c.gsbm like %?3% and c.fgsbm like %?4% and c.level like %?5% order by c.xlBm")
  23 + List<CalcInterval> selectByDateAndCompany(String date,String date2,String gsdm,String fgsdm,String level);
23 24  
  25 + //按照时间,公司下线路
  26 + @Query(value="select DISTINCT c from CalcInterval c where c.date = ?1 and c.gsbm like %?2% and c.fgsbm like %?3% and c.level like %?4% order by c.xlBm")
  27 + List<CalcInterval> selectByDateAndCompany(String date,String gsdm,String fgsdm,String level);
  28 +
  29 +
24 30 //按照时间段统计,单条线路
25   - @Query(value="select DISTINCT c from CalcInterval c where c.xl = ?1 and c.rqStr between ?2 and ?3 order by c.xl")
26   - List<CalcInterval> selectByDateAndLine(String line,String date,String date2);
  31 + @Query(value="select DISTINCT c from CalcInterval c where c.xlBm = ?1 and c.date >= ?2 and c.date <=?3 and c.level like %?4% order by c.xlBm")
  32 + List<CalcInterval> selectByDateAndLine(String line,String date,String date2,String level);
27 33  
28   - //按照日期和线路删除数据
29   - @Modifying
30   - @Transactional
31   - @Query(value = "delete CalcInterval c where c.rqStr=?1 and c.xl=?2")
32   - void deleteByDateAndLine(String date, String line);
33   -
34   - //按照日期删除数据
35   - @Modifying
36   - @Transactional
37   - @Query(value = "delete CalcInterval c where c.rqStr=?1")
38   - void deleteByDate(String date);
39 34  
  35 + //按照时间,单条线路
  36 + @Query(value="select DISTINCT c from CalcInterval c where c.xlBm = ?1 and c.date = ?2 and c.level like %?3% order by c.xlBm")
  37 + List<CalcInterval> selectByDateAndLine(String line,String date,String level);
  38 +
  39 + //按照时间段,公司统计
  40 + @Query(value="select gsbm,fgsbm,xl_bm,SUM(djg_all) as djgAll,SUM(djg_gf) as djgGf,SUM(djg_dg) as djgDg,SUM(djg_zgf) as djgZgf,SUM(djg_wgf) as djgWgf,MAX(djg_time) as djgTime "
  41 + + " from bsth_c_calc_interval where gsbm like %?1% and fgsbm like %?2% and date >=?3 and date <=?4 "
  42 + + " group by xl_bm,gsbm,fgsbm",nativeQuery=true)
  43 + List<Object[]> countByDateAndLine(String gsbm,String fgsbm,String date,String date2);
  44 +
  45 + //按照时间段,线路统计
  46 + @Query(value="select gsbm,fgsbm,xl_bm,SUM(djg_all) as djgAll,SUM(djg_gf) as djgGf,SUM(djg_dg) as djgDg,SUM(djg_zgf) as djgZgf,SUM(djg_wgf) as djgWgf,MAX(djg_time) as djgTime "
  47 + + " from bsth_c_calc_interval where xl_bm =?1 and date >=?2 and date <=?3 "
  48 + + " group by xl_bm,gsbm,fgsbm",nativeQuery=true)
  49 + List<Object[]> countByDateAndLine(String xlbm,String date,String date2);
  50 +
  51 +
40 52 }
... ...
src/main/java/com/bsth/service/calc/CalcIntervalService.java 0 → 100644
  1 +package com.bsth.service.calc;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import com.bsth.entity.calc.CalcInterval;
  7 +import com.bsth.service.BaseService;
  8 +
  9 +/**
  10 + * Created by 17/11/16.
  11 + */
  12 +public interface CalcIntervalService extends BaseService<CalcInterval,Integer> {
  13 +
  14 + List<Map<String,Object>> countList(Map<String, Object> map);
  15 + List<CalcInterval> listInterval(Map<String, Object> map);
  16 + List<Map<String,Object>> interval(Map<String, Object> map);
  17 +}
... ...
src/main/java/com/bsth/service/calc/impl/CalcIntervalServiceImpl.java 0 → 100644
  1 +package com.bsth.service.calc.impl;
  2 +
  3 +import java.sql.ResultSet;
  4 +import java.sql.SQLException;
  5 +import java.text.DecimalFormat;
  6 +import java.text.ParseException;
  7 +import java.text.SimpleDateFormat;
  8 +import java.util.ArrayList;
  9 +import java.util.Calendar;
  10 +import java.util.Collections;
  11 +import java.util.Comparator;
  12 +import java.util.Date;
  13 +import java.util.GregorianCalendar;
  14 +import java.util.HashMap;
  15 +import java.util.List;
  16 +import java.util.Map;
  17 +
  18 +import org.apache.commons.lang3.StringUtils;
  19 +import org.springframework.beans.factory.annotation.Autowired;
  20 +import org.springframework.jdbc.core.JdbcTemplate;
  21 +import org.springframework.jdbc.core.RowMapper;
  22 +import org.springframework.stereotype.Service;
  23 +
  24 +import com.bsth.data.BasicData;
  25 +import com.bsth.entity.Line;
  26 +import com.bsth.entity.calc.CalcInterval;
  27 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  28 +import com.bsth.entity.sheet.Sheet;
  29 +import com.bsth.repository.LineRepository;
  30 +import com.bsth.repository.calc.CalcIntervalRepository;
  31 +import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
  32 +import com.bsth.service.calc.CalcIntervalService;
  33 +import com.bsth.service.impl.BaseServiceImpl;
  34 +import com.bsth.util.ComparableReal;
  35 +
  36 +@Service
  37 +public class CalcIntervalServiceImpl extends BaseServiceImpl<CalcInterval,Integer> implements CalcIntervalService {
  38 + private static long zgf1 = 6 * 60 + 31,
  39 + zgf2 = 8 * 60 + 30,
  40 + wgf1 = 16 * 60 + 1,
  41 + wgf2 = 18 * 60;
  42 +
  43 + @Autowired
  44 + CalcIntervalRepository calcIntervalRepository;
  45 + @Autowired
  46 + ScheduleRealInfoRepository scheduleRealInfoRepository;
  47 + @Autowired
  48 + LineRepository lineRepository;
  49 + @Autowired
  50 + JdbcTemplate jdbcTemplate;
  51 + @Override
  52 + public List<Map<String, Object>> countList(Map<String, Object> map) {
  53 + // TODO Auto-generated method stub
  54 + final DecimalFormat df = new DecimalFormat("0.00");
  55 + List<Map<String, Object>> list=new ArrayList<>();
  56 + String level=map.get("levelType").toString();
  57 + String line=map.get("line").toString().trim();
  58 + String gs=map.get("gs").toString().trim();
  59 + String fgs=map.get("fgs").toString().trim();
  60 + String sDate=map.get("date").toString();
  61 + String eDate=map.get("endDate").toString();
  62 +
  63 + //D级线路显示发车准点率
  64 + if(level.equals("D")){
  65 + String sql1=" select xl_bm,gsbm,fgsbm,xl_name from bsth_c_calc_interval where date >='"+sDate+"' and date <= '"+eDate+"' and `level`='D'";
  66 + if(line.equals("")){
  67 + sql1 +=" and gsbm like '%"+gs+"%' and fgsbm like '%"+fgs+"%'";
  68 + }else{
  69 + sql1 +=" and xl_bm ='"+line+"'";
  70 + }
  71 + sql1+=" group by xl_bm,gsbm,fgsbm,xl_name";
  72 +
  73 + String sql2="select gsdm,fgsdm,xl,xl_name,max(id) as id,sum(jhszfcs) as jhszfcs,"
  74 + + " sum(sjszfczds) as sjszfczds,sum(sjszddzds) as sjszddzds from bsth_c_calc_sheet where date >= '"+sDate+"' and date <= '"+eDate+"'";
  75 + if(line.trim().equals("")){
  76 + sql2 +=" and gsdm = '"+gs+"' and fgsdm like '%"+fgs+"%'";
  77 + }else{
  78 + sql2 +=" and xl ='"+line+"'";
  79 + }
  80 + sql2 +=" group by gsdm,fgsdm,xl,xl_name";
  81 +
  82 + String sql="select b.* from ("+sql1+") a left join ("+sql2+") b"
  83 + + " on a.xl_bm=b.xl and a.gsbm=b.gsdm and a.fgsbm=b.fgsdm and a.xl_name=b.xl_name";
  84 +
  85 + list=jdbcTemplate.query(sql,
  86 + new RowMapper<Map<String,Object>>(){
  87 + @Override
  88 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  89 + Map<String, Object> m=new HashMap<String,Object>();
  90 + m.put("gs", BasicData.businessCodeNameMap.get(rs.getString("gsdm")));
  91 + m.put("fgs", BasicData.businessFgsCodeNameMap.get(rs.getString("fgsdm")+"_"+rs.getString("gsdm")));
  92 + m.put("xlBm", rs.getString("xl"));
  93 + m.put("xlName", rs.getString("xl_name"));
  94 + m.put("id", rs.getInt("id"));
  95 + m.put("jhszfcs", rs.getString("jhszfcs"));
  96 + m.put("sjszfczds", rs.getString("sjszfczds"));
  97 + m.put("sjszddzds", rs.getString("sjszddzds"));
  98 + int jhfc=rs.getInt("jhszfcs");
  99 + int zdfc=rs.getInt("sjszfczds");
  100 + int zddd=rs.getInt("sjszddzds");
  101 + if(jhfc>0){
  102 + double zdl=(zdfc*1.0)/(jhfc*1.0)*100;
  103 + m.put("szfczdl", df.format(zdl)+"%");
  104 + zdl=(zddd*1.0)/(jhfc*1.0)*100;
  105 + m.put("szddzdl", df.format(zdl)+"%");
  106 + }else{
  107 + m.put("szfczdl", "0.0%");
  108 + m.put("szddzdl", "0.0%");
  109 +
  110 + }
  111 + return m;
  112 + }
  113 + });
  114 + }else{
  115 + String sql="select gsbm,fgsbm,xl_bm,xl_name,MAX(id) as id,SUM(djg_all) as djgAll,SUM(djg_gf) as djgGf,"
  116 + + "SUM(djg_dg) as djgDg,SUM(djg_zgf) as djgZgf,SUM(djg_wgf) as djgWgf,MAX(djg_time) as djgTime "
  117 + + "from bsth_c_calc_interval where date>= '"+sDate+"' and date<='"+eDate+"' and level <> 'D' ";
  118 + if(line.equals("")){
  119 + sql +=" and gsbm like '%"+gs+"%' and fgsbm like '%"+fgs+"%'";
  120 + }else{
  121 + sql +=" and xl_bm ='"+line+"'";
  122 + }
  123 + sql += " group by xl_bm,gsbm,fgsbm,xl_name";
  124 +
  125 + list=jdbcTemplate.query(sql,
  126 + new RowMapper<Map<String,Object>>(){
  127 + @Override
  128 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  129 + Map<String, Object> m=new HashMap<String,Object>();
  130 + m.put("gs", BasicData.businessCodeNameMap.get(rs.getString("gsbm")));
  131 + m.put("fgs", BasicData.businessFgsCodeNameMap.get(rs.getString("fgsbm")+"_"+rs.getString("gsbm")));
  132 + m.put("xlBm", rs.getString("xl_bm"));
  133 + m.put("xlName", rs.getString("xl_name"));
  134 + m.put("id", rs.getInt("id"));
  135 + m.put("djgAll", rs.getString("djgAll"));
  136 + m.put("djgGf", rs.getString("djgGf"));
  137 + m.put("djgZgf", rs.getString("djgZgf"));
  138 + m.put("djgWgf", rs.getString("djgWgf"));
  139 + m.put("djgDg", rs.getString("djgDg"));
  140 + m.put("djgTime", rs.getString("djgTime"));
  141 + return m;
  142 + }
  143 + });
  144 + }
  145 + return list;
  146 + }
  147 + @Override
  148 + public List<CalcInterval> listInterval(Map<String, Object> map) {
  149 + // TODO Auto-generated method stub
  150 + String line=map.get("line").toString();
  151 + String date=map.get("date").toString();
  152 + String endDate=map.get("endDate").toString();
  153 + List<CalcInterval> listAll=calcIntervalRepository.selectByDateAndLine(line, date, endDate, "");
  154 + return listAll;
  155 + }
  156 +
  157 + @Override
  158 + public List<Map<String, Object>> interval(Map<String, Object> map) {
  159 + // TODO Auto-generated method stub
  160 + List<Map<String, Object>> list=new ArrayList<>();
  161 + String line=map.get("line").toString();
  162 + String date=map.get("date").toString();
  163 + List<ScheduleRealInfo> listReal=scheduleRealInfoRepository.scheduleDaily(line, date);
  164 + List<CalcInterval> listInterval=calcIntervalRepository.selectByDateAndLine(line, date, "");
  165 + String level=listInterval.get(0).getLevel();
  166 + if(listReal.size()>0){
  167 + Line t=lineRepository.findByLineCode(line);
  168 + long minFcsj = minFcsjs(t.getId());
  169 + list=calcIntervalList(listReal, minFcsj,level);
  170 + }
  171 + return list;
  172 + }
  173 +
  174 + private List<Map<String, Object>> calcIntervalList(List<ScheduleRealInfo> lists,long minFcsj,String level) {
  175 + List<ScheduleRealInfo> listjh0 = new ArrayList<ScheduleRealInfo>();
  176 + List<ScheduleRealInfo> listjh1 = new ArrayList<ScheduleRealInfo>();
  177 + List<ScheduleRealInfo> listsj0 = new ArrayList<ScheduleRealInfo>();
  178 + List<ScheduleRealInfo> listsj1 = new ArrayList<ScheduleRealInfo>();
  179 + List<Map<String, Object>> list=new ArrayList<>();
  180 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  181 + SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy-MM-dd");
  182 + String xlName=lists.get(0).getXlName();
  183 + String scheduleDate=lists.get(0).getScheduleDateStr();
  184 + for (int j = 0; j < lists.size(); j++) {
  185 + ScheduleRealInfo s = lists.get(j);
  186 + if (s.getBcType().equals("normal")) {
  187 + String[] fcsj = s.getFcsj().split(":");
  188 + Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
  189 + Long fcsjT = 0L;
  190 + if (fcsjL < minFcsj) {
  191 + Calendar calendar = new GregorianCalendar();
  192 + calendar.setTime(s.getScheduleDate());
  193 + calendar.add(calendar.DATE, 1);
  194 + Date date = calendar.getTime();
  195 + try {
  196 + fcsjT = sdf.parse(sdf_.format(date) + " " + s.getFcsj()).getTime();
  197 + } catch (ParseException e) {
  198 + // TODO Auto-generated catch block
  199 + e.printStackTrace();
  200 + }
  201 + } else {
  202 + try {
  203 + fcsjT = sdf.parse(s.getScheduleDateStr() + " " + s.getFcsj()).getTime();
  204 + } catch (ParseException e) {
  205 + // TODO Auto-generated catch block
  206 + e.printStackTrace();
  207 + }
  208 + }
  209 + Long fcsjAcual = 0L;
  210 + if (StringUtils.isEmpty(s.getFcsjActual())) {
  211 + s.setFcsjActualTime(0L);
  212 + s.setFcsjT(fcsjT);
  213 + } else {
  214 + try {
  215 + fcsjAcual = sdf.parse(s.getRealExecDate() + " " + s.getFcsjActual()).getTime();
  216 + s.setFcsjActualTime(fcsjAcual);
  217 + s.setFcsjT(fcsjT);
  218 + } catch (ParseException e) {
  219 + // TODO Auto-generated catch block
  220 + e.printStackTrace();
  221 + }
  222 + }
  223 +
  224 + if (s.isSflj()) {
  225 + if(StringUtils.isNotEmpty(s.getFcsjActual())){
  226 + if (s.getXlDir().equals("0")) {
  227 + listsj0.add(s);
  228 + } else {
  229 + listsj1.add(s);
  230 + }
  231 + }
  232 + } else {
  233 + if (s.getXlDir().equals("0")) {
  234 + if(StringUtils.isNotEmpty(s.getFcsjActual())){
  235 + listsj0.add(s);
  236 + }
  237 + listjh0.add(s);
  238 + } else {
  239 + if(StringUtils.isNotEmpty(s.getFcsjActual())){
  240 + listsj1.add(s);
  241 + }
  242 + listjh1.add(s);
  243 + }
  244 + }
  245 + }
  246 + }
  247 + /*
  248 + * 所有班次信息按上下行计划实际班次分组和根据计划实际发车时间排序
  249 + */
  250 + Collections.sort(listjh0, new ComparableJhfc());
  251 + Collections.sort(listjh1, new ComparableJhfc());
  252 + Collections.sort(listsj0, new ComparableAcual());
  253 + Collections.sort(listsj1, new ComparableAcual());
  254 +
  255 + long max_time=0;
  256 +
  257 + String jhfc="";
  258 + String sjfc="";
  259 + if(listsj0.size()>2){
  260 + //首班与首二班,末班与末二班中间的间隔不参与到统计
  261 + int p_time=0;
  262 + boolean p_fage=false; //判断两个班次是否为高峰班次,只有前后两个班次都是高峰班次,班次大间隔标准才用高峰标准
  263 + long p_actual_time=0;
  264 + String p_type="";
  265 + for (int j = 1; j < listsj0.size()-1; j++) {
  266 + boolean isAdd=false; //判断是否需要往map里面添加值
  267 + ScheduleRealInfo s =listsj0.get(j);
  268 + Map<String, Object> mm=new HashMap<>();
  269 + String[] fcsj = s.getFcsjActual().split(":");
  270 + int time = Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1]);
  271 + boolean fage=false;
  272 + String type="";
  273 + if (time >= zgf1 && time <= zgf2) {
  274 + fage=true;
  275 + type="zgf";
  276 + } else if (time >= wgf1 && time <= wgf2) {
  277 + fage=true;
  278 + type="wgf";
  279 + } else {
  280 + fage=false;
  281 + }
  282 + long sub_time=(s.getFcsjActualTime()-p_actual_time)/1000/60;
  283 + if(p_time>0){
  284 + if(sub_time>max_time){
  285 + max_time=sub_time;
  286 + }
  287 + if(fage&&p_fage){
  288 + //高峰间隔统计
  289 + if("zgf".equals(type) && type.equals(p_type)){
  290 + if(level.equals("A")){
  291 + if(sub_time >15)
  292 + isAdd=true;
  293 +
  294 + }else if(level.equals("B")){
  295 + if(sub_time >20)
  296 + isAdd=true;
  297 + }else if(level.equals("C")){
  298 + if(sub_time >25)
  299 + isAdd=true;
  300 + }else {
  301 + //D类不计算大间隔时间,通过发车准点率
  302 + }
  303 + }else if("wgf".equals(type) && type.equals(p_type)){
  304 + if(level.equals("A")){
  305 + if(sub_time >15)
  306 + isAdd=true;
  307 + }else if(level.equals("B")){
  308 + if(sub_time >20)
  309 + isAdd=true;
  310 + }else if(level.equals("C")){
  311 + if(sub_time >25)
  312 + isAdd=true;
  313 + }else {
  314 + //D类不计算大间隔时间,通过发车准点率
  315 + }
  316 + }
  317 + }else{
  318 + //平谷间隔统计
  319 + if(level.equals("A")){
  320 + if(sub_time >29)
  321 + isAdd=true;
  322 + }else if(level.equals("B")){
  323 + if(sub_time >29)
  324 + isAdd=true;
  325 + }else if(level.equals("C")){
  326 + if(sub_time >40)
  327 + isAdd=true;
  328 + }else {
  329 + //D类不计算大间隔时间,通过发车准点率
  330 + max_time=0;
  331 + }
  332 + }
  333 + }
  334 + if(isAdd){
  335 + mm.put("xlName", xlName);
  336 + mm.put("level", level);
  337 + mm.put("jhfc1", jhfc);
  338 + mm.put("sjfc1", sjfc);
  339 + mm.put("jhfc2", s.getFcsj());
  340 + mm.put("sjfc2", s.getFcsjActual());
  341 + mm.put("subTime", sub_time);
  342 + mm.put("date", scheduleDate);
  343 + mm.put("station", s.getQdzName());
  344 + list.add(mm);
  345 + }
  346 + p_fage=fage;
  347 + p_type=type;
  348 + p_time =time;
  349 + p_actual_time=s.getFcsjActualTime();
  350 + jhfc=s.getFcsj();
  351 + sjfc=s.getFcsjActual();
  352 + }
  353 + }
  354 +
  355 +
  356 + jhfc="";
  357 + sjfc="";
  358 + if(listsj1.size()>2){
  359 + //首班与首二班,末班与末二班中间的间隔不参与到统计
  360 + int p_time=0;
  361 + boolean p_fage=false; //判断两个班次是否为高峰班次,只有前后两个班次都是高峰班次,班次大间隔标准才用高峰标准
  362 + long p_actual_time=0;
  363 + String p_type="";
  364 + for (int j = 1; j < listsj1.size()-1; j++) {
  365 + boolean isAdd=false; //判断是否需要往map里面添加值
  366 + ScheduleRealInfo s =listsj1.get(j);
  367 + Map<String, Object> mm=new HashMap<>();
  368 + String[] fcsj = s.getFcsjActual().split(":");
  369 + int time = Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1]);
  370 + boolean fage=false;
  371 + String type="";
  372 + if (time >= zgf1 && time <= zgf2) {
  373 + fage=true;
  374 + type="zgf";
  375 + } else if (time >= wgf1 && time <= wgf2) {
  376 + fage=true;
  377 + type="wgf";
  378 + } else {
  379 + fage=false;
  380 + }
  381 + long sub_time=(s.getFcsjActualTime()-p_actual_time)/1000/60;
  382 + if(p_time>0){
  383 + if(sub_time>max_time){
  384 + max_time=sub_time;
  385 + }
  386 + if(fage&&p_fage){
  387 + //高峰间隔统计
  388 + if("zgf".equals(type) && type.equals(p_type)){
  389 + if(level.equals("A")){
  390 + if(sub_time >15)
  391 + isAdd=true;
  392 +
  393 + }else if(level.equals("B")){
  394 + if(sub_time >20)
  395 + isAdd=true;
  396 + }else if(level.equals("C")){
  397 + if(sub_time >25)
  398 + isAdd=true;
  399 + }else {
  400 + //D类不计算大间隔时间,通过发车准点率
  401 + }
  402 + }else if("wgf".equals(type) && type.equals(p_type)){
  403 + if(level.equals("A")){
  404 + if(sub_time >15)
  405 + isAdd=true;
  406 + }else if(level.equals("B")){
  407 + if(sub_time >20)
  408 + isAdd=true;
  409 + }else if(level.equals("C")){
  410 + if(sub_time >25)
  411 + isAdd=true;
  412 + }else {
  413 + //D类不计算大间隔时间,通过发车准点率
  414 + }
  415 + }
  416 + }else{
  417 + //平谷间隔统计
  418 + if(level.equals("A")){
  419 + if(sub_time >29)
  420 + isAdd=true;
  421 + }else if(level.equals("B")){
  422 + if(sub_time >29)
  423 + isAdd=true;
  424 + }else if(level.equals("C")){
  425 + if(sub_time >40)
  426 + isAdd=true;
  427 + }else {
  428 + //D类不计算大间隔时间,通过发车准点率
  429 + max_time=0;
  430 + }
  431 + }
  432 + }
  433 + if(isAdd){
  434 + mm.put("xlName", xlName);
  435 + mm.put("level", level);
  436 + mm.put("jhfc1", jhfc);
  437 + mm.put("sjfc1", sjfc);
  438 + mm.put("jhfc2", s.getFcsj());
  439 + mm.put("sjfc2", s.getFcsjActual());
  440 + mm.put("subTime", sub_time);
  441 + mm.put("date", scheduleDate);
  442 + mm.put("station", s.getQdzName());
  443 +
  444 + list.add(mm);
  445 + }
  446 + p_fage=fage;
  447 + p_type=type;
  448 + p_time =time;
  449 + p_actual_time=s.getFcsjActualTime();
  450 + jhfc=s.getFcsj();
  451 + sjfc=s.getFcsjActual();
  452 + }
  453 + }
  454 + return list;
  455 + }
  456 +
  457 +
  458 + private Long minFcsjs(int id){
  459 + String minfcsj="02:00";
  460 + String sqlMinYysj="select ifnull(max(start_opt),'02:00') as start_opt from bsth_c_line_config where "
  461 + + " id = ("
  462 + + "select max(id) from bsth_c_line_config where line ='"+id +"'"
  463 + + ")";
  464 + minfcsj= jdbcTemplate.queryForObject(sqlMinYysj, String.class);
  465 + String[] minSjs = minfcsj.split(":");
  466 + //车辆最早发车时间 用了过滤超第二天0点的数据
  467 + Long minSj=Long.parseLong(minSjs[0])*60+Long.parseLong(minSjs[1]);
  468 + return minSj;
  469 + }
  470 +}
  471 +
  472 +class ComparableJhfc implements Comparator<ScheduleRealInfo>{
  473 + @Override
  474 + public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
  475 + // TODO Auto-generated method stub
  476 + return o1.getFcsjT().compareTo(o2.getFcsjT());
  477 + }
  478 +}
  479 +
  480 +class ComparableAcual implements Comparator<ScheduleRealInfo>{
  481 + @Override
  482 + public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) {
  483 + // TODO Auto-generated method stub
  484 + return o1.getFcsjActualTime().compareTo(o2.getFcsjActualTime());
  485 + }
  486 +}
... ...
src/main/java/com/bsth/service/calc/impl/CalcWaybillServiceImpl.java
... ... @@ -23,6 +23,7 @@ import com.bsth.common.ResponseCode;
23 23 import com.bsth.data.BasicData;
24 24 import com.bsth.entity.Line;
25 25 import com.bsth.entity.calc.CalcBusMileage;
  26 +import com.bsth.entity.calc.CalcInterval;
26 27 import com.bsth.entity.calc.CalcLineMileage;
27 28 import com.bsth.entity.calc.CalcStatistics;
28 29 import com.bsth.entity.calc.CalcWaybill;
... ... @@ -31,6 +32,7 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo;
31 32 import com.bsth.entity.sys.Interval;
32 33 import com.bsth.repository.LineRepository;
33 34 import com.bsth.repository.calc.CalcBusMileageRepository;
  35 +import com.bsth.repository.calc.CalcIntervalRepository;
34 36 import com.bsth.repository.calc.CalcLineMileageRepository;
35 37 import com.bsth.repository.calc.CalcStatisticsRepository;
36 38 import com.bsth.repository.calc.CalcWaybillRepository;
... ... @@ -87,6 +89,9 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
87 89 private ScheduleRealInfoRepository scheduleRealInfoRepository;
88 90  
89 91 @Autowired
  92 + private CalcIntervalRepository calcIntervalRepository;
  93 +
  94 + @Autowired
90 95 private LineRepository lineRepository;
91 96 @Autowired
92 97 private LineService lineService;
... ... @@ -480,7 +485,6 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
480 485 } else {
481 486 line = line.trim();
482 487 }
483   -
484 488 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
485 489 List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
486 490 List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
... ... @@ -502,6 +506,14 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
502 506 for(Map<String, String> m : gsList){
503 507 list.addAll(calcStatisticsRepository.scheduleByDateAndLine(line, rq, rq, m.get("gsdm"), m.get("fgsdm")));
504 508 }
  509 +
  510 + List<CalcInterval> listInterval=calcIntervalRepository.selectByDateAndCompany(rq, "", "","");
  511 + Map<String,CalcInterval> mapInterval=new HashMap<String,CalcInterval>();
  512 + for (int i = 0; i < listInterval.size(); i++) {
  513 + CalcInterval c=listInterval.get(i);
  514 + mapInterval.put(c.getXlBm(), c);
  515 + }
  516 +
505 517  
506 518 for (int i = 0; i < list.size(); i++) {
507 519 ScheduleRealInfo s=list.get(i);
... ... @@ -521,19 +533,32 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
521 533 lists.add(list.get(i));
522 534 }else{
523 535 lists.add(list.get(i));
524   - CalcStatistics s=staticTj(lists);
  536 + CalcInterval t=null;
  537 + if(mapInterval.get(lists.get(0).getXlBm())!=null){
  538 + t=mapInterval.get(lists.get(0).getXlBm());
  539 + }
  540 +
  541 + CalcStatistics s=staticTj(lists,t);
525 542 lMap.add(s);
526 543 lists=new ArrayList<ScheduleRealInfo>();
527 544 }
528 545 }else{
529 546 if(list.get(i).getXlBm().equals(list.get(i-1).getXlBm())){
530 547 lists.add(list.get(i));
531   - CalcStatistics s=staticTj(lists);
  548 + CalcInterval t=null;
  549 + if(mapInterval.get(lists.get(0).getXlBm())!=null){
  550 + t=mapInterval.get(lists.get(0).getXlBm());
  551 + }
  552 + CalcStatistics s=staticTj(lists,t);
532 553 lMap.add(s);
533 554 }else{
534 555 lists=new ArrayList<ScheduleRealInfo>();
535 556 lists.add(list.get(i));
536   - CalcStatistics s=staticTj(lists);
  557 + CalcInterval t=null;
  558 + if(mapInterval.get(lists.get(0).getXlBm())!=null){
  559 + t=mapInterval.get(lists.get(0).getXlBm());
  560 + }
  561 + CalcStatistics s=staticTj(lists,t);
537 562 lMap.add(s);
538 563 }
539 564 }
... ... @@ -556,7 +581,7 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
556 581 return result;
557 582 }
558 583  
559   - public final CalcStatistics staticTj(List<ScheduleRealInfo> list){
  584 + public final CalcStatistics staticTj(List<ScheduleRealInfo> list,CalcInterval t){
560 585  
561 586 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
562 587 for(int i=0;i<list.size();i++){
... ... @@ -644,23 +669,30 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
644 669 s.setDtbcq(0);
645 670 s.setDtbcz(0);
646 671 s.setDtbcw(0);
647   - Map<String, Object> m_=culateService.culateDjg(lists, list.get(0).getXlBm());
648   - if(m_.containsKey("djgcsq") && m_.get("djgcsq")!=null)
649   - s.setDjgq(Integer.valueOf(m_.get("djgcsq").toString()));
650   - else
651   - s.setDjgq(0);
652   - if(m_.containsKey("djgcsz") && m_.get("djgcsz")!=null)
653   - s.setDjgz(Integer.valueOf(m_.get("djgcsz").toString()));
654   - else
655   - s.setDjgz(0);
656   - if(m_.containsKey("djgcsw") && m_.get("djgcsw")!=null)
657   - s.setDjgw(Integer.valueOf(m_.get("djgcsw").toString()));
658   - else
659   - s.setDjgw(0);
660   - if(m_.containsKey("djgsj") && m_.get("djgsj")!=null)
661   - s.setDjgsj(Integer.valueOf(m_.get("djgsj").toString()));
662   - else
663   - s.setDjgsj(0);
  672 + if(t==null){
  673 + Map<String, Object> m_=culateService.culateDjg(lists, list.get(0).getXlBm());
  674 + if(m_.containsKey("djgcsq") && m_.get("djgcsq")!=null)
  675 + s.setDjgq(Integer.valueOf(m_.get("djgcsq").toString()));
  676 + else
  677 + s.setDjgq(0);
  678 + if(m_.containsKey("djgcsz") && m_.get("djgcsz")!=null)
  679 + s.setDjgz(Integer.valueOf(m_.get("djgcsz").toString()));
  680 + else
  681 + s.setDjgz(0);
  682 + if(m_.containsKey("djgcsw") && m_.get("djgcsw")!=null)
  683 + s.setDjgw(Integer.valueOf(m_.get("djgcsw").toString()));
  684 + else
  685 + s.setDjgw(0);
  686 + if(m_.containsKey("djgsj") && m_.get("djgsj")!=null)
  687 + s.setDjgsj(Integer.valueOf(m_.get("djgsj").toString()));
  688 + else
  689 + s.setDjgsj(0);
  690 + }else{
  691 + s.setDjgq(t.getDjgAll());
  692 + s.setDjgz(t.getDjgZgf());
  693 + s.setDjgw(t.getDjgWgf());
  694 + s.setDjgsj(t.getDjgTime());
  695 + }
664 696 }
665 697 return s;
666 698 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -73,6 +73,7 @@ import com.bsth.entity.CarDevice;
73 73 import com.bsth.entity.Cars;
74 74 import com.bsth.entity.Line;
75 75 import com.bsth.entity.Personnel;
  76 +import com.bsth.entity.calc.CalcInterval;
76 77 import com.bsth.entity.oil.Dlb;
77 78 import com.bsth.entity.oil.Ylb;
78 79 import com.bsth.entity.oil.Ylxxb;
... ... @@ -94,6 +95,7 @@ import com.bsth.repository.CarDeviceRepository;
94 95 import com.bsth.repository.CarsRepository;
95 96 import com.bsth.repository.LineRepository;
96 97 import com.bsth.repository.RepairReportRepository;
  98 +import com.bsth.repository.calc.CalcIntervalRepository;
97 99 import com.bsth.repository.oil.DlbRepository;
98 100 import com.bsth.repository.oil.YlbRepository;
99 101 import com.bsth.repository.oil.YlxxbRepository;
... ... @@ -154,6 +156,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
154 156  
155 157 @Autowired
156 158 DictionaryService dictionaryService;
  159 +
  160 + @Autowired
  161 + CalcIntervalRepository calcIntervalRepository;
157 162 /*@Autowired
158 163 BorrowCenter borrowCenter;*/
159 164  
... ... @@ -2702,11 +2707,21 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2702 2707 map.put("dtbc", 0);
2703 2708 map.put("dtbc_m", 0);
2704 2709 map.put("dtbc_a", 0);
2705   - Map<String, Object> m = culateService.culateDjg(list_s, line);
2706   - map.put("djg", m.get("djgcsq"));
2707   - map.put("djg_m", m.get("djgcsz"));
2708   - map.put("djg_a", m.get("djgcsw"));
2709   - map.put("djg_time", m.get("djgsj"));
  2710 + List<CalcInterval> intervalList=calcIntervalRepository.selectByDateAndLine(line, date,"");
  2711 + if(intervalList.size()>0){
  2712 + CalcInterval c=intervalList.get(0);
  2713 + map.put("djg",c.getDjgAll());
  2714 + map.put("djg_m", c.getDjgZgf());
  2715 + map.put("djg_a", c.getDjgWgf());
  2716 + map.put("djg_time", c.getDjgTime());
  2717 + }else{
  2718 + Map<String, Object> m = culateService.culateDjg(list_s, line);
  2719 + map.put("djg", m.get("djgcsq"));
  2720 + map.put("djg_m", m.get("djgcsz"));
  2721 + map.put("djg_a", m.get("djgcsw"));
  2722 + map.put("djg_time", m.get("djgsj"));
  2723 + }
  2724 +
2710 2725 map.put("jls", Arith.sub(Arith.add(jhlc, ljgl), lbgl));
2711 2726 lMap.add(map);
2712 2727  
... ... @@ -2808,7 +2823,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2808 2823 return lMap;
2809 2824 }
2810 2825  
2811   - public final Map<String, Object> staticTj(List<ScheduleRealInfo> list) {
  2826 + public final Map<String, Object> staticTj(List<ScheduleRealInfo> list,Map<String, Object> m) {
2812 2827  
2813 2828 List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
2814 2829 for (int i = 0; i < list.size(); i++) {
... ... @@ -2894,11 +2909,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2894 2909 map.put("dtbc", 0);
2895 2910 map.put("dtbc_m", 0);
2896 2911 map.put("dtbc_a", 0);
2897   - Map<String, Object> m_ = culateService.culateDjg(lists, list.get(0).getXlBm());
2898   - map.put("djg", m_.get("djgcsq"));
2899   - map.put("djg_m", m_.get("djgcsz"));
2900   - map.put("djg_a", m_.get("djgcsw"));
2901   - map.put("djg_time", m_.get("djgsj"));
  2912 + if(m.get("xl")==null){
  2913 + Map<String, Object> m_ = culateService.culateDjg(lists, list.get(0).getXlBm());
  2914 + map.put("djg", m_.get("djgcsq"));
  2915 + map.put("djg_m", m_.get("djgcsz"));
  2916 + map.put("djg_a", m_.get("djgcsw"));
  2917 + map.put("djg_time", m_.get("djgsj"));
  2918 + }else{
  2919 + map.put("djg", m.get("djgAll")==null?"0":m.get("djgAll"));
  2920 + map.put("djg_m", m.get("djgZgf")==null?"0":m.get("djgZgf"));
  2921 + map.put("djg_a", m.get("djgWgf")==null?"0":m.get("djgWgf"));
  2922 + map.put("djg_time", m.get("djgTime")==null?"0":m.get("djgTime"));
  2923 + }
2902 2924 }
2903 2925 return map;
2904 2926 }
... ... @@ -2909,14 +2931,33 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2909 2931 List<ScheduleRealInfo> listAll = new ArrayList<ScheduleRealInfo>();
2910 2932 List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
2911 2933 List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
  2934 + List<Object[]> listInterval=new ArrayList<Object[]>();
2912 2935 line = line.trim();
2913 2936 if (line.equals("")) {
2914 2937 //查询所有线路
2915 2938 listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date, date2, gsdm, fgsdm);
  2939 + listInterval = calcIntervalRepository.countByDateAndLine(gsdm, fgsdm, date, date2);
2916 2940 } else {
2917 2941 //查询单条线路
2918 2942 listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date, date2);
2919   - }
  2943 + listInterval = calcIntervalRepository.countByDateAndLine(line, date, date2);
  2944 + }
  2945 + Map<String, Map<String,Object>> mapInterval=new HashMap<String, Map<String,Object>>();
  2946 + for (int i = 0; i < listInterval.size(); i++) {
  2947 + Object[] interval=listInterval.get(i);
  2948 + String gs=interval[0].toString();
  2949 + String fgs=interval[1].toString();
  2950 + String xl=interval[2].toString();
  2951 + Map<String, Object> m=new HashMap<String,Object>();
  2952 + m.put("gs", gs);
  2953 + m.put("fgs", fgs);
  2954 + m.put("xl", xl);
  2955 + m.put("djgAll", interval[3]);
  2956 + m.put("djgZgf", interval[6]);
  2957 + m.put("djgWgf", interval[7]);
  2958 + m.put("djgTime", interval[8]);
  2959 + mapInterval.put(gs+"-"+fgs+"-"+xl, m);
  2960 + }
2920 2961 Map<String, Boolean> lineMap=lineService.lineNature();
2921 2962 List<ScheduleRealInfo> list=new ArrayList<ScheduleRealInfo>();
2922 2963 for (int i = 0; i < listAll.size(); i++) {
... ... @@ -2951,19 +2992,31 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2951 2992 lists.add(list.get(i));
2952 2993 } else {
2953 2994 lists.add(list.get(i));
2954   - Map<String, Object> map = staticTj(lists);
  2995 + Map<String, Object> mm=new HashMap<String,Object>();
  2996 + if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
  2997 + mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
  2998 + }
  2999 + Map<String, Object> map = staticTj(lists,mm);
2955 3000 lMap.add(map);
2956 3001 lists = new ArrayList<ScheduleRealInfo>();
2957 3002 }
2958 3003 } else {
2959 3004 if ((list.get(i).getFgsBm()+list.get(i).getXlBm()).equals(list.get(i - 1).getFgsBm()+list.get(i - 1).getXlBm())) {
2960 3005 lists.add(list.get(i));
2961   - Map<String, Object> map = staticTj(lists);
  3006 + Map<String, Object> mm=new HashMap<String,Object>();
  3007 + if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
  3008 + mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
  3009 + }
  3010 + Map<String, Object> map = staticTj(lists,mm);
2962 3011 lMap.add(map);
2963 3012 } else {
2964 3013 lists = new ArrayList<ScheduleRealInfo>();
2965 3014 lists.add(list.get(i));
2966   - Map<String, Object> map = staticTj(lists);
  3015 + Map<String, Object> mm=new HashMap<String,Object>();
  3016 + if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
  3017 + mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
  3018 + }
  3019 + Map<String, Object> map = staticTj(lists,mm);
2967 3020 lMap.add(map);
2968 3021 }
2969 3022 }
... ... @@ -3103,14 +3156,34 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3103 3156 List<ScheduleRealInfo> listAll = new ArrayList<ScheduleRealInfo>();
3104 3157 List<ScheduleRealInfo> list_s = new ArrayList<ScheduleRealInfo>();
3105 3158 List<ScheduleRealInfo> lists = new ArrayList<ScheduleRealInfo>();
  3159 + List<Object[]> listInterval=new ArrayList<Object[]>();
  3160 +
3106 3161 line = line.trim();
3107 3162 if (line.equals("")) {
3108 3163 //查询所有线路
3109 3164 listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, date, date2, gsdm, fgsdm);
  3165 + listInterval = calcIntervalRepository.countByDateAndLine(gsdm, fgsdm, date, date2);
3110 3166 } else {
3111 3167 //查询单条线路
3112 3168 listAll = scheduleRealInfoRepository.scheduleByDateAndLineTj2(line, date, date2);
3113   - }
  3169 + listInterval = calcIntervalRepository.countByDateAndLine(line, date, date2);
  3170 + }
  3171 + Map<String, Map<String,Object>> mapInterval=new HashMap<>();
  3172 + for (int i = 0; i < listInterval.size(); i++) {
  3173 + Object[] interval=listInterval.get(i);
  3174 + String gs=interval[0].toString();
  3175 + String fgs=interval[1].toString();
  3176 + String xl=interval[2].toString();
  3177 + Map<String, Object> m=new HashMap<String,Object>();
  3178 + m.put("gs", gs);
  3179 + m.put("fgs", fgs);
  3180 + m.put("xl", xl);
  3181 + m.put("djgAll", interval[3]);
  3182 + m.put("djgZgf", interval[6]);
  3183 + m.put("djgWgf", interval[7]);
  3184 + m.put("djgTime", interval[8]);
  3185 + mapInterval.put(gs+"-"+fgs+"-"+xl, m);
  3186 + }
3114 3187  
3115 3188 Map<String, Boolean> lineMap=lineService.lineNature();
3116 3189 List<ScheduleRealInfo> list=new ArrayList<ScheduleRealInfo>();
... ... @@ -3146,19 +3219,31 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3146 3219 lists.add(list.get(i));
3147 3220 } else {
3148 3221 lists.add(list.get(i));
3149   - Map<String, Object> map = staticTj(lists);
  3222 + Map<String, Object> mm=new HashMap<String,Object>();
  3223 + if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
  3224 + mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
  3225 + }
  3226 + Map<String, Object> map = staticTj(lists,mm);
3150 3227 lMap.add(map);
3151 3228 lists = new ArrayList<ScheduleRealInfo>();
3152 3229 }
3153 3230 } else {
3154 3231 if ((list.get(i).getFgsBm()+list.get(i).getXlBm()).equals(list.get(i - 1).getFgsBm()+list.get(i - 1).getXlBm())) {
3155 3232 lists.add(list.get(i));
3156   - Map<String, Object> map = staticTj(lists);
  3233 + Map<String, Object> mm=new HashMap<String,Object>();
  3234 + if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
  3235 + mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
  3236 + }
  3237 + Map<String, Object> map = staticTj(lists,mm);
3157 3238 lMap.add(map);
3158 3239 } else {
3159 3240 lists = new ArrayList<ScheduleRealInfo>();
3160 3241 lists.add(list.get(i));
3161   - Map<String, Object> map = staticTj(lists);
  3242 + Map<String, Object> mm=new HashMap<String,Object>();
  3243 + if(mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm())!=null){
  3244 + mm=mapInterval.get(lists.get(0).getGsBm()+"-"+lists.get(0).getFgsBm()+"-"+lists.get(0).getXlBm());
  3245 + }
  3246 + Map<String, Object> map = staticTj(lists,mm);
3162 3247 lMap.add(map);
3163 3248 }
3164 3249 }
... ...
src/main/resources/static/pages/forms/statement/scheduleDaily.html
... ... @@ -87,7 +87,7 @@
87 87 <td colspan="3">放站班次</td>
88 88 <td colspan="3">调头班次</td>
89 89 <td colspan="3">发生次数</td>
90   - <td rowspan="2">最大间隔时间()</td>
  90 + <td rowspan="2">最大间隔时间()</td>
91 91 <td colspan="5" rowspan="2">原因</td>
92 92 </tr>
93 93 <tr>
... ...
src/main/resources/static/pages/report/sheet/intervalCount.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>大间隔情况表</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block; margin-left: 33px;" id="gsdmDiv">
  31 + <span class="item-label" style="width: 80px;">公司: </span>
  32 + <select class="form-control" name="company" id="gsdm" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block; margin-left: 38px;" id="fgsdmDiv">
  35 + <span class="item-label" style="width: 80px;">分公司: </span>
  36 + <select class="form-control" name="subCompany" id="fgsdm" style="width: 180px;"></select>
  37 + </div>
  38 + <div style="display: inline-block;margin-left: 33px;">
  39 + <span class="item-label" style="width: 80px;">线路: </span>
  40 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  41 + </div>
  42 + <div style="margin-top: 10px">
  43 + </div>
  44 + <div style="display: inline-block;margin-left: 33px;">
  45 + <span class="item-label" style="width: 80px;">等级: </span>
  46 + <select class="form-control" style="width: 180px;" id=levelType>
  47 + <option value="A,B,C">A,B,C级线路</option>
  48 + <option value="D">D级线路</option>
  49 + </select>
  50 + </div>
  51 + <div style="display: inline-block;">
  52 + <span class="item-label" style="width: 80px;margin-left: 24px;">开始时间: </span>
  53 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  54 + </div>
  55 + <div style="display: inline-block;">
  56 + <span class="item-label" style="width: 80px;margin-left: 24px;">结束时间: </span>
  57 + <input class="form-control" type="text" id="endDate" style="width: 180px;"/>
  58 + </div>
  59 +
  60 + <div class="form-group">
  61 + <input type="hidden" id="id"/>
  62 + <input class="btn btn-default" type="button" id="query" value="查询"/>
  63 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  64 + </div>
  65 + </form>
  66 + </div>
  67 +
  68 + <div class="portlet-body">
  69 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  70 + <table class="table table-bordered table-hover table-checkable" id="forms">
  71 + <thead>
  72 + <tr>
  73 + <td>公司</td>
  74 + <td>分公司</td>
  75 + <td>线路</td>
  76 + <td>全日次数</td>
  77 + <td>高峰次数</td>
  78 + <td>早高峰次数</td>
  79 + <td>晚高峰次数</td>
  80 + <td>低谷次数</td>
  81 + <td>最大间隔时间</td>
  82 + <td>查看</td>
  83 + </tr>
  84 + </thead>
  85 + <tbody>
  86 + </tbody>
  87 + </table>
  88 +
  89 + <table class="table table-bordered table-hover table-checkable" style="display: none" id="forms_d">
  90 + <thead>
  91 + <tr>
  92 + <td>公司</td>
  93 + <td>分公司</td>
  94 + <td>线路</td>
  95 + <td>班次数</td>
  96 + <td>发车准点数</td>
  97 + <td>发车准点率</td>
  98 + <td>到站准点数</td>
  99 + <td>到站准点率</td>
  100 + <td>查看</td>
  101 + </tr>
  102 + </thead>
  103 + <tbody>
  104 + </tbody>
  105 + </table>
  106 +
  107 +
  108 + </div>
  109 +
  110 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  111 + <input class="btn btn-default" style="display: none" type="button" id="export_1" value="导出"/>
  112 + <table class="table table-bordered table-hover table-checkable" style="display: none" id="forms_1">
  113 + <thead>
  114 + <tr >
  115 + <td>公司</td>
  116 + <td>分公司</td>
  117 + <td>日期</td>
  118 + <td>线路</td>
  119 + <td>当天等级</td>
  120 + <td>全日次数</td>
  121 + <td>高峰次数</td>
  122 + <td>早高峰次数</td>
  123 + <td>晚高峰次数</td>
  124 + <td>低谷次数</td>
  125 + <td>当日等级</td>
  126 + <td>查看</td>
  127 + </tr>
  128 + </thead>
  129 + <tbody>
  130 + </tbody>
  131 + </table>
  132 +
  133 + <table class="table table-bordered table-hover table-checkable" style="display: none" id="forms_d_1">
  134 + <thead>
  135 + <tr>
  136 + <td>公司</td>
  137 + <td>分公司</td>
  138 + <td>日期</td>
  139 + <td>线路</td>
  140 + <td>班次数</td>
  141 + <td>发车准点次数</td>
  142 + <td>发车准点率</td>
  143 + <td>查看</td>
  144 + <td>到站准点次数</td>
  145 + <td>到站准点率</td>
  146 + <td>查看</td>
  147 + </tr>
  148 + </thead>
  149 + <tbody>
  150 + </tbody>
  151 + </table>
  152 + </div>
  153 + </div>
  154 + </div>
  155 + </div>
  156 +</div>
  157 +<script src="/pages/mforms/singledatas/jquery.table2excel.min.js"></script>
  158 +<script>
  159 + $(function(){
  160 + // 关闭左侧栏
  161 + if (!$('body').hasClass('page-sidebar-closed'))
  162 + $('.menu-toggler.sidebar-toggler').click();
  163 +
  164 + var d = new Date();
  165 + d.setTime(d.getTime() - 1*1000*60*60*24);
  166 + var year = d.getFullYear();
  167 + var month = d.getMonth() + 1;
  168 + var day = d.getDate();
  169 + if(month < 10)
  170 + month = "0"+month;
  171 + if(day < 10)
  172 + day = "0"+day;
  173 + var dateTime = year + "-" + month + "-" + day;
  174 + $("#date").datetimepicker({
  175 + format : 'YYYY-MM-DD',
  176 + locale : 'zh-cn',
  177 + maxDate : dateTime
  178 + });
  179 + $("#endDate").datetimepicker({
  180 + format : 'YYYY-MM-DD',
  181 + locale : 'zh-cn',
  182 + maxDate : dateTime
  183 + });
  184 + $("#date").val(dateTime);
  185 + $("#endDate").val(dateTime);
  186 +
  187 + var fage=false;
  188 + var obj = [];
  189 + var xlList;
  190 + $.get('/report/lineList',function(result){
  191 + xlList=result;
  192 +
  193 + $.get('/user/companyData', function(result){
  194 + obj = result;
  195 + var options = '';
  196 + for(var i = 0; i < obj.length; i++){
  197 + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>';
  198 + }
  199 +
  200 + if(obj.length ==0){
  201 + $("#gsdmDiv").css('display','none');
  202 + }else if(obj.length ==1){
  203 + $("#gsdmDiv").css('display','none');
  204 + if(obj[0].children.length == 1 || obj[0].children.length ==0)
  205 + $('#fgsdmDiv').css('display','none');
  206 + }
  207 + $('#gsdm').html(options);
  208 +
  209 + updateCompany();
  210 + });
  211 + });
  212 +
  213 + $("#gsdm").on("change",updateCompany);
  214 + function updateCompany(){
  215 + var company = $('#gsdm').val();
  216 + var options = '';
  217 + for(var i = 0; i < obj.length; i++){
  218 + if(obj[i].companyCode == company){
  219 + var children = obj[i].children;
  220 + for(var j = 0; j < children.length; j++){
  221 + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>';
  222 + }
  223 + }
  224 + }
  225 + $('#fgsdm').html(options);
  226 + }
  227 +
  228 + var tempData = {};
  229 + $.get('/report/lineList',function(xlList){
  230 + var data = [];
  231 + data.push({id: " ", text: "全部线路"});
  232 + $.get('/user/companyData', function(result){
  233 + for(var i = 0; i < result.length; i++){
  234 + var companyCode = result[i].companyCode;
  235 + var children = result[i].children;
  236 + for(var j = 0; j < children.length; j++){
  237 + var code = children[j].code;
  238 + for(var k=0;k < xlList.length;k++ ){
  239 + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){
  240 + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]});
  241 + tempData[xlList[k]["xlbm"]] = companyCode+":"+code;
  242 + }
  243 + }
  244 + }
  245 + }
  246 + initPinYinSelect2('#line',data,'');
  247 +
  248 + });
  249 + });
  250 +
  251 + $("#line").on("change", function(){
  252 + if($("#line").val() == " "){
  253 + $("#gsdm").attr("disabled", false);
  254 + $("#fgsdm").attr("disabled", false);
  255 + } else {
  256 + var temp = tempData[$("#line").val()].split(":");
  257 + $("#gsdm").val(temp[0]);
  258 + updateCompany();
  259 + $("#fgsdm").val(temp[1]);
  260 + $("#gsdm").attr("disabled", true);
  261 + $("#fgsdm").attr("disabled", true);
  262 + }
  263 + });
  264 +
  265 + $("#export").attr('disabled',"true");
  266 +
  267 + //查询
  268 + $("#query").on('click',function(){
  269 + var line = $("#line").val();
  270 + var date = $("#date").val();
  271 + var endDate = $("#endDate").val();
  272 + var fgs=$('#fgsdm').val();
  273 + var gs=$('#gsdm').val();
  274 + var levelType=$('#levelType').val();
  275 + var i = layer.load(2);
  276 + $get('/calcInterval/countList',{line:line,date:date,endDate:endDate,gs:gs,fgs:fgs,levelType:levelType},function(result){
  277 + if(levelType=="D"){
  278 + var intervalList_d = template('intervalList_d',{list:result});
  279 + $('#forms_d tbody').html(intervalList_d);
  280 + $('.btn-intervalList_d').on('click', showSheetList);
  281 + $("#forms").hide();
  282 + $("#forms_d").show();
  283 + }else{
  284 + var intervalList = template('intervalList',{list:result});
  285 + $('#forms tbody').html(intervalList);
  286 + $('.btn-intervalList').on('click', showIntervalList);
  287 + $("#forms_d").hide();
  288 + $("#forms").show();
  289 +
  290 + }
  291 + $("#forms_d_1").hide();
  292 + $("#forms_1").hide();
  293 + $("#export_1").hide();
  294 +
  295 + layer.close(i);
  296 + if(result.length == 0)
  297 + $("#export").attr('disabled',"true");
  298 + else
  299 + $("#export").removeAttr("disabled");
  300 + });
  301 + });
  302 +
  303 + //查询大间隔
  304 + function showIntervalList(){
  305 + var id = $(this).data('id');
  306 + var date = $("#date").val();
  307 + var endDate = $("#endDate").val();
  308 + $("#id").val(id);
  309 + $get('/calcInterval/listInterval',{line:id,date:date,endDate:endDate},function(result){
  310 + var intervalList = template('intervalList_1',{list:result});
  311 + $('#forms_1 tbody').html(intervalList);
  312 + $('.btn-intervalList_1').on('click', openIntervalList);
  313 + $("#forms_1").show();
  314 + $("#export_1").show();
  315 + $("html,body").animate({scrollTop:$("#forms_1").offset().top},1000);
  316 + });
  317 + }
  318 +
  319 +
  320 + function openIntervalList(){
  321 + var id = $(this).data('id');
  322 +
  323 + id += ","+$(this).data('date')+",1";
  324 + $.get('/pages/report/sheet/intervalList.html', function (content) {
  325 + layer.open({
  326 + type: 1,
  327 + area: ['800px', '600px'],
  328 + content: content,
  329 + title: '线路准点率详细',
  330 + shift: 5,
  331 + scrollbar: false,
  332 + success: function () {
  333 + $('#calcIntervalList').trigger('init', id);
  334 + }
  335 + });
  336 + });
  337 + }
  338 + //查询首站发车
  339 + function showSheetList(){
  340 + var id = $(this).data('id');
  341 + var date = $("#date").val();
  342 + var endDate = $("#endDate").val();
  343 + $("#id").val(id);
  344 + $get('/calcSheet/calcListSheet',{line:id,date:date,endDate:endDate,type:'query'},function(result){
  345 + var sheetList = template('sheetList_1',{list:result});
  346 + $('#forms_d_1 tbody').html(sheetList);
  347 + $('.btn-calcSheetList_1').on('click', opencalcSheetList);
  348 + $('.btn-calcSheetList_2').on('click', opencalcSheetList2);
  349 + $("#forms_d_1").show();
  350 + $("#export_1").show();
  351 + $("html,body").animate({scrollTop:$("#forms_d_1").offset().top},1000);
  352 + });
  353 + }
  354 +
  355 +
  356 + function opencalcSheetList(){
  357 + var id = $(this).data('id');
  358 + id += ","+$(this).data('date')+",1";
  359 + $.get('/pages/report/sheet/calcList.html', function (content) {
  360 + layer.open({
  361 + type: 1,
  362 + area: ['800px', '600px'],
  363 + content: content,
  364 + title: '线路准点率详细',
  365 + shift: 5,
  366 + scrollbar: false,
  367 + success: function () {
  368 + $('#calcSheetList').trigger('init', id);
  369 + }
  370 + });
  371 + });
  372 + }
  373 + function opencalcSheetList2(){
  374 + var id = $(this).data('id');
  375 + id += ","+$(this).data('date')+",2";
  376 + $.get('/pages/report/sheet/calcList.html', function (content) {
  377 + layer.open({
  378 + type: 1,
  379 + area: ['800px', '600px'],
  380 + content: content,
  381 + title: '线路准点率详细',
  382 + shift: 5,
  383 + scrollbar: false,
  384 + success: function () {
  385 + $('#calcSheetList').trigger('init', id);
  386 + }
  387 + });
  388 + });
  389 + }
  390 + $("#export").on("click",function(){
  391 + var line = $("#line").val();
  392 + var date = $("#date").val();
  393 + var endDate = $("#endDate").val();
  394 + var fgs=$('#fgsdm').val();
  395 + var gs=$('#gsdm').val();
  396 + var lineName = $('#line option:selected').text();
  397 + if(lineName == "全部线路")
  398 + lineName = $('#fgsdm option:selected').text();
  399 + var i = layer.load(2);
  400 + $get('/sheet/countList',{line:line,date:date,endDate:endDate,gs:gs,fgs:fgs,type:"export",lineName:lineName},function(result){
  401 + var dateTime = "";
  402 + if(date == endDate){
  403 + dateTime = moment(date).format("YYYYMMDD");
  404 + } else {
  405 + dateTime = moment(date).format("YYYYMMDD")+"-"+
  406 + moment(endDate).format("YYYYMMDD");
  407 + }
  408 + window.open("/downloadFile/download?fileName="
  409 + +dateTime+"-"+lineName+"-发车准点率");
  410 + layer.close(i);
  411 + });
  412 + });
  413 +
  414 + $("#export_1").on("click",function(){
  415 + var id = $("#id").val();
  416 + var date = $("#date").val();
  417 + var endDate = $("#endDate").val();
  418 + var i = layer.load(2);
  419 + $get('/sheet/listSheet',{id:id,date:date,endDate:endDate,type:"export"},function(result){
  420 + window.open("/downloadFile/download?fileName=发车准点率"+moment(date).format("YYYYMMDD")+"-"+moment(endDate).format("YYYYMMDD"));
  421 + layer.close(i);
  422 + });
  423 + })
  424 +
  425 + });
  426 +</script>
  427 +<script type="text/html" id="intervalList">
  428 + {{each list as obj i}}
  429 + <tr>
  430 + <td>{{obj.gs}}</td>
  431 + <td>{{obj.fgs}}</td>
  432 + <td>{{obj.xlName}}</td>
  433 + <td>{{obj.djgAll}}</td>
  434 + <td>{{obj.djgGf}}</td>
  435 + <td>{{obj.djgZgf}}</td>
  436 + <td>{{obj.djgWgf}}</td>
  437 + <td>{{obj.djgDg}}</td>
  438 + <td>{{obj.djgTime}}</td>
  439 + <td>
  440 + <button type="button" class="btn btn-sm blue btn-intervalList"
  441 + data-id="{{obj.xlBm}}">查看</button>
  442 + </td>
  443 + </tr>
  444 + {{/each}}
  445 + {{if list.length == 0}}
  446 + <tr>
  447 + <td colspan="10"><h6 class="muted">没有找到相关数据</h6></td>
  448 + </tr>
  449 + {{/if}}
  450 +</script>
  451 +
  452 +<script type="text/html" id="intervalList_d">
  453 + {{each list as obj i}}
  454 + <tr>
  455 + <td>{{obj.gs}}</td>
  456 + <td>{{obj.fgs}}</td>
  457 + <td>{{obj.xlName}}</td>
  458 + <td>{{obj.jhszfcs}}</td>
  459 + <td>{{obj.sjszfczds}}</td>
  460 + <td>{{obj.szfczdl}}</td>
  461 + <td>{{obj.sjszddzds}}</td>
  462 + <td>{{obj.szddzdl}}</td>
  463 + <td>
  464 + <button type="button" class="btn btn-sm blue btn-intervalList_d"
  465 + data-id="{{obj.xlBm}}">查看</button>
  466 + </td>
  467 + </tr>
  468 + {{/each}}
  469 + {{if list.length == 0}}
  470 + <tr>
  471 + <td colspan="9"><h6 class="muted">没有找到相关数据</h6></td>
  472 + </tr>
  473 + {{/if}}
  474 +</script>
  475 +
  476 +
  477 +<script type="text/html" id="intervalList_1">
  478 + {{each list as obj i}}
  479 + <tr>
  480 + <td>{{obj.gsname}}</td>
  481 + <td>{{obj.fgsname}}</td>
  482 + <td>{{obj.date}}</td>
  483 + <td>{{obj.xlName}}</td>
  484 + <td>{{obj.level}}</td>
  485 + <td>{{obj.djgAll}}</td>
  486 + <td>{{obj.djgGf}}</td>
  487 + <td>{{obj.djgZgf}}</td>
  488 + <td>{{obj.djgWgf}}</td>
  489 + <td>{{obj.djgDg}}</td>
  490 + <td>{{obj.djgTime}}</td>
  491 + <td>
  492 + <button type="button" class="btn btn-sm blue btn-intervalList_1"
  493 + data-id="{{obj.xlBm}}" data-date="{{obj.date}}">详细</button>
  494 + </td>
  495 + </tr>
  496 + {{/each}}
  497 + {{if list.length == 0}}
  498 + <tr>
  499 + <td colspan="11"><h6 class="muted">没有找到相关数据</h6></td>
  500 + </tr>
  501 + {{/if}}
  502 +</script>
  503 +
  504 +<script type="text/html" id="sheetList_1">
  505 + {{each list as obj i}}
  506 + <tr>
  507 + <td>{{obj.gsname}}</td>
  508 + <td>{{obj.fgsname}}</td>
  509 + <td>{{obj.xlName}}</td>
  510 + <td>{{obj.date}}</td>
  511 + <td>{{obj.jhszfcs}}</td>
  512 + <td>{{obj.sjszfczds}}</td>
  513 + <td>{{obj.szfczdl}}</td>
  514 + <td>
  515 + <button type="button" class="btn btn-sm blue btn-calcSheetList_1"
  516 + data-id="{{obj.xl}}" data-date="{{obj.date}}">详细</button>
  517 + </td>
  518 + <td>{{obj.sjszddzds}}</td>
  519 + <td>{{obj.szddzdl}}</td>
  520 + <td>
  521 + <button type="button" class="btn btn-sm blue btn-calcSheetList_2"
  522 + data-id="{{obj.xl}}" data-date="{{obj.date}}" >详细</button>
  523 + </td>
  524 + </tr>
  525 + {{/each}}
  526 + {{if list.length == 0}}
  527 + <tr>
  528 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  529 + </tr>
  530 + {{/if}}
  531 + {{if list.length == 0}}
  532 + <tr>
  533 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  534 + </tr>
  535 + {{/if}}
  536 +</script>
  537 +
... ...
src/main/resources/static/pages/report/sheet/intervalList.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title" style="margin-left: 20px">
  21 + <button id="exportList">数据导出</button>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row" id="calcIntervalList">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-body">
  29 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 600px">
  30 + <table class="table table-bordered table-hover table-checkable" id="forms_2">
  31 + <thead>
  32 + <tr>
  33 + <td></td>
  34 + <td>日期</td>
  35 + <td>线路</td>
  36 + <td>站点</td>
  37 + <td>等级</td>
  38 + <td>计发</td>
  39 + <td>实发</td>
  40 + <td>计发</td>
  41 + <td>实发</td>
  42 + <td>间隔时间</td>
  43 + </tr>
  44 + </thead>
  45 +
  46 + <tbody>
  47 +
  48 + </tbody>
  49 + </table>
  50 + </div>
  51 + </div>
  52 + </div>
  53 + </div>
  54 +</div>
  55 +<script>
  56 + $(function(){
  57 + // 关闭左侧栏
  58 + if (!$('body').hasClass('page-sidebar-closed'))
  59 + $('.menu-toggler.sidebar-toggler').click();
  60 + var no="";
  61 + var dates="";
  62 + var dir="";
  63 + console.log(11111111111);
  64 + $("#calcIntervalList").on('init', function (e, id) {
  65 + no=id.split(",")[0];
  66 + dates = id.split(",")[1];
  67 + console.log(no+dates);
  68 + var i = layer.load(2);
  69 + $get('/calcInterval/interval',{line:no,date:dates,type:'query'},function(result){
  70 + layer.close(i);
  71 + var calcIntervalList_2 = template('calcIntervalList_2',{list:result});
  72 + $('#forms_2 tbody').html(calcIntervalList_2);
  73 + });
  74 + })
  75 + $("#exportList").on('click',function(){
  76 + var i = layer.load(2);
  77 + var name="";
  78 + if(dir=="1"){
  79 + fileName="发车准点率"+dates;
  80 + }else{
  81 + fileName="到站准点率"+dates;
  82 + }
  83 + $get('/calcInterval/calcInterval',{line:no,date:dates,dir:dir,type:'export'},function(result){
  84 + window.open("/downloadFile/download?fileName="+fileName);
  85 + layer.close(i);
  86 + });
  87 + });
  88 +
  89 +
  90 + });
  91 +</script>
  92 +<script type="text/html" id="calcIntervalList_2">
  93 + {{each list as obj i}}
  94 + <tr >
  95 + <td>{{i+1}}</td>
  96 + <td>{{obj.date}}</td>
  97 + <td>{{obj.xlName}}</td>
  98 + <td>{{obj.station}}</td>
  99 + <td>{{obj.level}}</td>
  100 + <td>{{obj.jhfc1}}</td>
  101 + <td>{{obj.sjfc1}}</td>
  102 + <td>{{obj.jhfc2}}</td>
  103 + <td>{{obj.sjfc2}}</td>
  104 + <td>{{obj.subTime}}</td>
  105 + </tr>
  106 + {{/each}}
  107 + {{if list.length == 0}}
  108 + <tr>
  109 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  110 + </tr>
  111 + {{/if}}
  112 +</script>
0 113 \ No newline at end of file
... ...