Commit b39a2ab851da4adbf26553789037a76d9e884417
1 parent
b8921ced
新增大间隔统计报表,及相关统计日报,调度日报大间隔部分修改
Showing
10 changed files
with
1420 additions
and
60 deletions
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<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<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<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<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<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<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<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<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<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<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<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<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<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<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
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 | ... | ... |