Commit 251bbdf8a20573c1afb7007fd2796ae6acec6252

Authored by 廖磊
1 parent b39a2ab8

大间隔报表导出功能

src/main/java/com/bsth/controller/calc/CalcIntervalController.java
... ... @@ -24,8 +24,8 @@ public class CalcIntervalController extends BaseController<CalcInterval,Integer
24 24 }
25 25  
26 26 @RequestMapping(value="/listInterval")
27   - public List<CalcInterval> listInterval(@RequestParam Map<String, Object> map){
28   - List<CalcInterval> list=calcIntervalService.listInterval(map);
  27 + public List<Map<String, Object>> listInterval(@RequestParam Map<String, Object> map){
  28 + List<Map<String, Object>>list=calcIntervalService.listInterval(map);
29 29 return list;
30 30 }
31 31  
... ...
src/main/java/com/bsth/controller/report/CalcSheetController.java
... ... @@ -29,6 +29,14 @@ public class CalcSheetController extends BaseController&lt;CalcSheet, Integer&gt;{
29 29 List<CalcSheet> list=calcSheetService.calcListSheet(map);
30 30 return list;
31 31 }
  32 +
  33 + //D级别线路发车到站准点率列表
  34 + @RequestMapping(value = "/calcListSheet_d",method = RequestMethod.GET)
  35 + public List<CalcSheet> calcListSheet_d(@RequestParam Map<String, Object> map){
  36 + List<CalcSheet> list=calcSheetService.calcListSheet_d(map);
  37 + return list;
  38 + }
  39 +
32 40 //发车站点准点率详细
33 41 @RequestMapping(value = "/calcSheet",method = RequestMethod.GET)
34 42 public List<Sheet> calcSheet(@RequestParam Map<String, Object> map){
... ...
src/main/java/com/bsth/service/calc/CalcIntervalService.java
... ... @@ -12,6 +12,6 @@ import com.bsth.service.BaseService;
12 12 public interface CalcIntervalService extends BaseService<CalcInterval,Integer> {
13 13  
14 14 List<Map<String,Object>> countList(Map<String, Object> map);
15   - List<CalcInterval> listInterval(Map<String, Object> map);
  15 + List<Map<String,Object>> listInterval(Map<String, Object> map);
16 16 List<Map<String,Object>> interval(Map<String, Object> map);
17 17 }
... ...
src/main/java/com/bsth/service/calc/impl/CalcIntervalServiceImpl.java
... ... @@ -12,6 +12,7 @@ import java.util.Comparator;
12 12 import java.util.Date;
13 13 import java.util.GregorianCalendar;
14 14 import java.util.HashMap;
  15 +import java.util.Iterator;
15 16 import java.util.List;
16 17 import java.util.Map;
17 18  
... ... @@ -25,6 +26,7 @@ import com.bsth.data.BasicData;
25 26 import com.bsth.entity.Line;
26 27 import com.bsth.entity.calc.CalcInterval;
27 28 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  29 +import com.bsth.entity.sheet.CalcSheet;
28 30 import com.bsth.entity.sheet.Sheet;
29 31 import com.bsth.repository.LineRepository;
30 32 import com.bsth.repository.calc.CalcIntervalRepository;
... ... @@ -32,6 +34,7 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
32 34 import com.bsth.service.calc.CalcIntervalService;
33 35 import com.bsth.service.impl.BaseServiceImpl;
34 36 import com.bsth.util.ComparableReal;
  37 +import com.bsth.util.ReportUtils;
35 38  
36 39 @Service
37 40 public class CalcIntervalServiceImpl extends BaseServiceImpl<CalcInterval,Integer> implements CalcIntervalService {
... ... @@ -142,16 +145,95 @@ public class CalcIntervalServiceImpl extends BaseServiceImpl&lt;CalcInterval,Intege
142 145 }
143 146 });
144 147 }
  148 +
  149 + if(map.get("type").equals("export")){
  150 + String lineName="";
  151 + if(!line.equals("")){
  152 + lineName=list.get(0).get("xlName").toString();
  153 + }else if(!fgs.equals("")){
  154 + lineName=list.get(0).get("fgs").toString();
  155 + }else{
  156 + lineName=list.get(0).get("gs").toString();
  157 + }
  158 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  159 + Map<String, Object> m = new HashMap<String, Object>();
  160 + m.put("sdate", sDate);
  161 + m.put("eDate", eDate);
  162 + ReportUtils ee = new ReportUtils();
  163 + try {
  164 + String dateTime = "";
  165 + if(sDate.equals(eDate)){
  166 + dateTime = sDate.replaceAll("-", "");
  167 + } else {
  168 + dateTime = sDate.replaceAll("-", "")+"-"+
  169 + eDate.replaceAll("-", "");
  170 + }
  171 + listI.add(list.iterator());
  172 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  173 + String xls="";
  174 + String xlsName="";
  175 + if(level.equals("D")){
  176 + xls="calcSheetList.xls";
  177 + xlsName="发车到站准点率.xls";
  178 + }else{
  179 + xls="calcIntervalCount.xls";
  180 + xlsName="大间隔汇总表.xls";
  181 + }
  182 +
  183 + ee.excelReplace(listI, new Object[]{m}, path + "mould/" + ""+xls,
  184 + path + "export/"+dateTime+"-"+lineName+"-"+xlsName);
  185 + } catch (Exception e) {
  186 + // TODO: handle exception
  187 + e.printStackTrace();
  188 + }
  189 + }
145 190 return list;
146 191 }
147 192 @Override
148   - public List<CalcInterval> listInterval(Map<String, Object> map) {
  193 + public List<Map<String, Object>> listInterval(Map<String, Object> map) {
149 194 // TODO Auto-generated method stub
150 195 String line=map.get("line").toString();
151 196 String date=map.get("date").toString();
152 197 String endDate=map.get("endDate").toString();
153 198 List<CalcInterval> listAll=calcIntervalRepository.selectByDateAndLine(line, date, endDate, "");
154   - return listAll;
  199 + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();
  200 + for (int i = 0; i < listAll.size(); i++) {
  201 + CalcInterval t=listAll.get(i);
  202 + if(!t.getLevel().equals("D") && t.getDjgAll()>0){
  203 + Map<String, Object> m=new HashMap<>();
  204 + m.put("gs", t.getGsname());
  205 + m.put("fgs", t.getFgsname());
  206 + m.put("date", t.getDate());
  207 + m.put("xl", t.getXlName());
  208 + m.put("xlBm", t.getXlBm());
  209 + m.put("level", t.getLevel());
  210 + m.put("djgAll", t.getDjgAll());
  211 + m.put("djgGf", t.getDjgGf());
  212 + m.put("djgZgf", t.getDjgZgf());
  213 + m.put("djgWgf", t.getDjgWgf());
  214 + m.put("djgDg", t.getDjgDg());
  215 + m.put("djgTime", t.getDjgTime());
  216 + tempList.add(m);
  217 + }
  218 + }
  219 + if(map.get("type").equals("export")){
  220 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  221 + Map<String, Object> m = new HashMap<String, Object>();
  222 + m.put("date", date);
  223 + m.put("endDate", endDate);
  224 + ReportUtils ee = new ReportUtils();
  225 + try {
  226 + listI.add(tempList.iterator());
  227 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  228 + ee.excelReplace(listI, new Object[]{m}, path + "mould/" + "calcIntervalList1.xls",
  229 + path + "export/大间距汇总表"+date.replaceAll("-", "")+"-"+endDate.replaceAll("-", "")+".xls");
  230 + } catch (Exception e) {
  231 + // TODO: handle exception
  232 + e.printStackTrace();
  233 + }
  234 +
  235 + }
  236 + return tempList;
155 237 }
156 238  
157 239 @Override
... ... @@ -166,12 +248,27 @@ public class CalcIntervalServiceImpl extends BaseServiceImpl&lt;CalcInterval,Intege
166 248 if(listReal.size()>0){
167 249 Line t=lineRepository.findByLineCode(line);
168 250 long minFcsj = minFcsjs(t.getId());
169   - list=calcIntervalList(listReal, minFcsj,level);
  251 + list=calcIntervalList(listReal, minFcsj,level,t);
  252 + }
  253 + if(map.get("type").toString().equals("export")){
  254 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  255 + Map<String, Object> m = new HashMap<String, Object>();
  256 + m.put("date", date);
  257 + ReportUtils ee = new ReportUtils();
  258 + try {
  259 + listI.add(list.iterator());
  260 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  261 + ee.excelReplace(listI, new Object[]{m}, path + "mould/" + "interval.xls",
  262 + path + "export/"+date+"大间隔详细.xls");
  263 + } catch (Exception e) {
  264 + // TODO: handle exception
  265 + e.printStackTrace();
  266 + }
170 267 }
171 268 return list;
172 269 }
173 270  
174   - private List<Map<String, Object>> calcIntervalList(List<ScheduleRealInfo> lists,long minFcsj,String level) {
  271 + private List<Map<String, Object>> calcIntervalList(List<ScheduleRealInfo> lists,long minFcsj,String level,Line line) {
175 272 List<ScheduleRealInfo> listjh0 = new ArrayList<ScheduleRealInfo>();
176 273 List<ScheduleRealInfo> listjh1 = new ArrayList<ScheduleRealInfo>();
177 274 List<ScheduleRealInfo> listsj0 = new ArrayList<ScheduleRealInfo>();
... ... @@ -183,7 +280,20 @@ public class CalcIntervalServiceImpl extends BaseServiceImpl&lt;CalcInterval,Intege
183 280 String scheduleDate=lists.get(0).getScheduleDateStr();
184 281 for (int j = 0; j < lists.size(); j++) {
185 282 ScheduleRealInfo s = lists.get(j);
186   - if (s.getBcType().equals("normal")) {
  283 + boolean fage=false;
  284 + if(s.getBcType().equals("normal")){
  285 + fage=true;
  286 + }
  287 + if(s.getBcType().equals("region")){
  288 + if(s.getXlDir().equals("0")){
  289 + if(s.getQdzName().equals(line.getStartStationName()));
  290 + fage=true;
  291 + }else{
  292 + if(s.getQdzName().equals(line.getEndStationName()));
  293 + fage=true;
  294 + }
  295 + }
  296 + if (fage) {
187 297 String[] fcsj = s.getFcsj().split(":");
188 298 Long fcsjL = Long.parseLong(fcsj[0]) * 60 + Long.parseLong(fcsj[1]);
189 299 Long fcsjT = 0L;
... ...
src/main/java/com/bsth/service/report/CalcSheetService.java
... ... @@ -10,6 +10,7 @@ import com.bsth.service.BaseService;
10 10 public interface CalcSheetService extends BaseService<CalcSheet, Integer>{
11 11 public List<CalcSheet> countListCalcSheet(Map<String, Object> map);
12 12 public List<CalcSheet> calcListSheet(Map<String, Object> map);
  13 + public List<CalcSheet> calcListSheet_d(Map<String, Object> map);
13 14 public List<Sheet> calcSheet(Map<String, Object> map);
14 15 public List<Map<String, Object>> calcTurnoutrate(Map<String, Object> map);
15 16 public List<Map<String, Object>> calcTurnoutrateZgf(Map<String, Object> map);
... ...
src/main/java/com/bsth/service/report/impl/CalcSheetServiceImpl.java
... ... @@ -179,6 +179,70 @@ public class CalcSheetServiceImpl extends BaseServiceImpl&lt;CalcSheet, Integer&gt; im
179 179 String endDate=map.get("endDate").toString();
180 180 String sql="select * from bsth_c_calc_sheet where date >= '"+date+"' and "
181 181 + " date <= '"+endDate+"' and xl = '"+line+"' order by date";
  182 +
  183 + List<CalcSheet> list=jdbcTemplate.query(sql,
  184 + new RowMapper<CalcSheet>(){
  185 + @Override
  186 + public CalcSheet mapRow(ResultSet rs, int rowNum) throws SQLException {
  187 + CalcSheet s=new CalcSheet();
  188 + s.setGsdm(rs.getString("gsdm"));
  189 + s.setFgsdm(rs.getString("fgsdm"));
  190 + s.setXl(rs.getString("xl"));
  191 + s.setXlName(rs.getString("xl_name"));
  192 + s.setId(rs.getInt("id"));
  193 + s.setDate(rs.getString("date"));
  194 + s.setJhszfcs(rs.getString("jhszfcs"));
  195 + s.setSjszfczds(rs.getString("sjszfczds"));
  196 + s.setSzfczdl(rs.getString("szfczdl"));
  197 + s.setSjszddzds(rs.getString("sjszddzds"));
  198 + s.setSzddzdl(rs.getString("szddzdl"));
  199 + return s;
  200 + }
  201 + });
  202 + if(map.get("type").equals("export")){
  203 + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();
  204 + for (int i = 0; i < list.size(); i++) {
  205 + Map<String, Object> m = new HashMap<String, Object>();
  206 + CalcSheet c = list.get(i);
  207 + m.put("gs", c.getGsname());
  208 + m.put("fgs", c.getFgsname());
  209 + m.put("date", c.getDate());
  210 + m.put("line", c.getXlName());
  211 + m.put("bcs", c.getJhszfcs());
  212 + m.put("zdbcs", c.getSjszfczds());
  213 + m.put("zdlv", c.getSzfczdl()+"%");
  214 + m.put("ddzdbcs", c.getSjszddzds());
  215 + m.put("ddzdlv", c.getSzddzdl()+"%");
  216 + tempList.add(m);
  217 + }
  218 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  219 + Map<String, Object> m = new HashMap<String, Object>();
  220 + m.put("date", date);
  221 + m.put("endDate", endDate);
  222 + ReportUtils ee = new ReportUtils();
  223 + try {
  224 + listI.add(tempList.iterator());
  225 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  226 + ee.excelReplace(listI, new Object[]{m}, path + "mould/" + "calcSheetList1.xls",
  227 + path + "export/发车到站准点率"+date.replaceAll("-", "")+"-"+endDate.replaceAll("-", "")+".xls");
  228 + } catch (Exception e) {
  229 + // TODO: handle exception
  230 + e.printStackTrace();
  231 + }
  232 + }
  233 + return list;
  234 + }
  235 +
  236 + @Override
  237 + public List<CalcSheet> calcListSheet_d(Map<String, Object> map) {
  238 + // TODO Auto-generated method stub
  239 + String line=map.get("line").toString();
  240 + String date=map.get("date").toString();
  241 + String endDate=map.get("endDate").toString();
  242 + String sql=" select b.* from (select date from bsth_c_calc_interval where date>='"+date+"' and date <='"+endDate+"'"
  243 + + " and xl_bm='"+line+"' and `level`='D' group by date ) a left join ( "
  244 + + "select * from bsth_c_calc_sheet where date >= '"+date+"' and "
  245 + + " date <= '"+endDate+"' and xl = '"+line+"' order by date ) b on a.date =b.date";
182 246 List<CalcSheet> list=jdbcTemplate.query(sql,
183 247 new RowMapper<CalcSheet>(){
184 248 @Override
... ...
src/main/resources/static/pages/report/sheet/intervalCount.html
... ... @@ -122,7 +122,7 @@
122 122 <td>早高峰次数</td>
123 123 <td>晚高峰次数</td>
124 124 <td>低谷次数</td>
125   - <td>当日等级</td>
  125 + <td>最大间隔</td>
126 126 <td>查看</td>
127 127 </tr>
128 128 </thead>
... ... @@ -273,7 +273,7 @@
273 273 var gs=$('#gsdm').val();
274 274 var levelType=$('#levelType').val();
275 275 var i = layer.load(2);
276   - $get('/calcInterval/countList',{line:line,date:date,endDate:endDate,gs:gs,fgs:fgs,levelType:levelType},function(result){
  276 + $get('/calcInterval/countList',{line:line,date:date,endDate:endDate,gs:gs,fgs:fgs,levelType:levelType,type:'query'},function(result){
277 277 if(levelType=="D"){
278 278 var intervalList_d = template('intervalList_d',{list:result});
279 279 $('#forms_d tbody').html(intervalList_d);
... ... @@ -286,7 +286,6 @@
286 286 $('.btn-intervalList').on('click', showIntervalList);
287 287 $("#forms_d").hide();
288 288 $("#forms").show();
289   -
290 289 }
291 290 $("#forms_d_1").hide();
292 291 $("#forms_1").hide();
... ... @@ -306,7 +305,7 @@
306 305 var date = $("#date").val();
307 306 var endDate = $("#endDate").val();
308 307 $("#id").val(id);
309   - $get('/calcInterval/listInterval',{line:id,date:date,endDate:endDate},function(result){
  308 + $get('/calcInterval/listInterval',{line:id,date:date,endDate:endDate,type:'query'},function(result){
310 309 var intervalList = template('intervalList_1',{list:result});
311 310 $('#forms_1 tbody').html(intervalList);
312 311 $('.btn-intervalList_1').on('click', openIntervalList);
... ... @@ -341,7 +340,7 @@
341 340 var date = $("#date").val();
342 341 var endDate = $("#endDate").val();
343 342 $("#id").val(id);
344   - $get('/calcSheet/calcListSheet',{line:id,date:date,endDate:endDate,type:'query'},function(result){
  343 + $get('/calcSheet/calcListSheet_d',{line:id,date:date,endDate:endDate,type:'query'},function(result){
345 344 var sheetList = template('sheetList_1',{list:result});
346 345 $('#forms_d_1 tbody').html(sheetList);
347 346 $('.btn-calcSheetList_1').on('click', opencalcSheetList);
... ... @@ -393,11 +392,12 @@
393 392 var endDate = $("#endDate").val();
394 393 var fgs=$('#fgsdm').val();
395 394 var gs=$('#gsdm').val();
  395 + var levelType=$('#levelType').val();
396 396 var lineName = $('#line option:selected').text();
397 397 if(lineName == "全部线路")
398 398 lineName = $('#fgsdm option:selected').text();
399 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){
  400 + $get('/calcInterval/countList',{line:line,date:date,endDate:endDate,gs:gs,fgs:fgs,levelType:levelType,type:"export",lineName:lineName},function(result){
401 401 var dateTime = "";
402 402 if(date == endDate){
403 403 dateTime = moment(date).format("YYYYMMDD");
... ... @@ -405,8 +405,14 @@
405 405 dateTime = moment(date).format("YYYYMMDD")+"-"+
406 406 moment(endDate).format("YYYYMMDD");
407 407 }
408   - window.open("/downloadFile/download?fileName="
409   - +dateTime+"-"+lineName+"-发车准点率");
  408 + if(levelType=="D"){
  409 + window.open("/downloadFile/download?fileName="
  410 + +dateTime+"-"+lineName+"-发车到站准点率");
  411 + }else{
  412 + window.open("/downloadFile/download?fileName="
  413 + +dateTime+"-"+lineName+"-大间隔汇总表");
  414 + }
  415 +
410 416 layer.close(i);
411 417 });
412 418 });
... ... @@ -415,11 +421,20 @@
415 421 var id = $("#id").val();
416 422 var date = $("#date").val();
417 423 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   - });
  424 + var levelType=$("#levelType").val();
  425 + if(levelType=='D'){
  426 + var i = layer.load(2);
  427 + $get('/calcSheet/calcListSheet',{line:id,date:date,endDate:endDate,type:'export'},function(result){
  428 + window.open("/downloadFile/download?fileName=发车到站准点率"+moment(date).format("YYYYMMDD")+"-"+moment(endDate).format("YYYYMMDD"));
  429 + layer.close(i);
  430 + });
  431 + }else{
  432 + $get('/calcInterval/listInterval',{line:id,date:date,endDate:endDate,type:'export'},function(result){
  433 + window.open("/downloadFile/download?fileName=大间距汇总表"+moment(date).format("YYYYMMDD")+"-"+moment(endDate).format("YYYYMMDD"));
  434 + layer.close(i);
  435 + });
  436 + }
  437 +
423 438 })
424 439  
425 440 });
... ... @@ -477,10 +492,10 @@
477 492 <script type="text/html" id="intervalList_1">
478 493 {{each list as obj i}}
479 494 <tr>
480   - <td>{{obj.gsname}}</td>
481   - <td>{{obj.fgsname}}</td>
  495 + <td>{{obj.gs}}</td>
  496 + <td>{{obj.fgs}}</td>
482 497 <td>{{obj.date}}</td>
483   - <td>{{obj.xlName}}</td>
  498 + <td>{{obj.xl}}</td>
484 499 <td>{{obj.level}}</td>
485 500 <td>{{obj.djgAll}}</td>
486 501 <td>{{obj.djgGf}}</td>
... ...
src/main/resources/static/pages/report/sheet/intervalList.html
... ... @@ -59,29 +59,20 @@
59 59 $('.menu-toggler.sidebar-toggler').click();
60 60 var no="";
61 61 var dates="";
62   - var dir="";
63   - console.log(11111111111);
64 62 $("#calcIntervalList").on('init', function (e, id) {
65 63 no=id.split(",")[0];
66 64 dates = id.split(",")[1];
67   - console.log(no+dates);
68 65 var i = layer.load(2);
69 66 $get('/calcInterval/interval',{line:no,date:dates,type:'query'},function(result){
70 67 layer.close(i);
71   - var calcIntervalList_2 = template('calcIntervalList_2',{list:result});
72   - $('#forms_2 tbody').html(calcIntervalList_2);
  68 + var calcIntervalList_2 = template('calcIntervalList_2',{list:result});
  69 + $('#forms_2 tbody').html(calcIntervalList_2);
73 70 });
74 71 })
75 72 $("#exportList").on('click',function(){
76 73 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);
  74 + $get('/calcInterval/interval',{line:no,date:dates,type:'export'},function(result){
  75 + window.open("/downloadFile/download?fileName="+dates+"大间隔详细");
85 76 layer.close(i);
86 77 });
87 78 });
... ... @@ -106,7 +97,7 @@
106 97 {{/each}}
107 98 {{if list.length == 0}}
108 99 <tr>
109   - <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  100 + <td colspan="10"><h6 class="muted">没有找到相关数据</h6></td>
110 101 </tr>
111 102 {{/if}}
112 103 </script>
113 104 \ No newline at end of file
... ...