Commit 19c3f06b0b9555feba546faee93dceb77c12d57b
1 parent
14ff74a2
发车到站准点率
Showing
6 changed files
with
786 additions
and
16 deletions
src/main/java/com/bsth/controller/BusIntervalController.java
| @@ -58,4 +58,9 @@ public class BusIntervalController { | @@ -58,4 +58,9 @@ public class BusIntervalController { | ||
| 58 | return busIntervalService.exportWaybillMore(map); | 58 | return busIntervalService.exportWaybillMore(map); |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | + @RequestMapping(value = "/onTime", method = RequestMethod.GET) | ||
| 62 | + public List<Map<String,Object>> onTime(@RequestParam Map<String, Object> map){ | ||
| 63 | + return busIntervalService.onTime(map); | ||
| 64 | + } | ||
| 65 | + | ||
| 61 | } | 66 | } |
src/main/java/com/bsth/service/BusIntervalService.java
| @@ -21,4 +21,6 @@ public interface BusIntervalService { | @@ -21,4 +21,6 @@ public interface BusIntervalService { | ||
| 21 | List<Map<String, Object>> correctStatis(Map<String, Object> map); | 21 | List<Map<String, Object>> correctStatis(Map<String, Object> map); |
| 22 | 22 | ||
| 23 | Map<String, Object> exportWaybillMore(Map<String, Object> map); | 23 | Map<String, Object> exportWaybillMore(Map<String, Object> map); |
| 24 | + | ||
| 25 | + List<Map<String, Object>> onTime(Map<String, Object> map); | ||
| 24 | } | 26 | } |
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
| @@ -2815,4 +2815,224 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -2815,4 +2815,224 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 2815 | return map; | 2815 | return map; |
| 2816 | } | 2816 | } |
| 2817 | 2817 | ||
| 2818 | + @Override | ||
| 2819 | + public List<Map<String, Object>> onTime(Map<String, Object> map) { | ||
| 2820 | + // TODO Auto-generated method stub | ||
| 2821 | + String startDate = map.get("startDate").toString().trim(); | ||
| 2822 | + String endDate = map.get("endDate").toString().trim(); | ||
| 2823 | + String line = map.get("line").toString().trim(); | ||
| 2824 | + String company = map.get("gs").toString().trim(); | ||
| 2825 | + String subCompany = map.get("fgs").toString().trim(); | ||
| 2826 | + | ||
| 2827 | + String sql = "select id, cl_zbh, fcsj, fcsj_actual, j_gh, j_name, lp_name, qdz_name, " + | ||
| 2828 | + "schedule_date_str, xl_name, zdsj, zdsj_actual, fgs_name, gs_name, xl_dir, xl_bm " + | ||
| 2829 | + "from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'"; | ||
| 2830 | + | ||
| 2831 | + if(line.length() != 0) | ||
| 2832 | + sql += " and xl_bm = '"+line+"'"; | ||
| 2833 | + if(company.length() != 0) | ||
| 2834 | + sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'"; | ||
| 2835 | + | ||
| 2836 | + sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and cc_service = 0"; | ||
| 2837 | + | ||
| 2838 | + System.out.println(sql); | ||
| 2839 | + List<ScheduleRealInfo> list = jdbcTemplate.query(sql, | ||
| 2840 | + new RowMapper<ScheduleRealInfo>(){ | ||
| 2841 | + @Override | ||
| 2842 | + public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 2843 | + ScheduleRealInfo schedule = new ScheduleRealInfo(); | ||
| 2844 | + schedule.setId(rs.getLong("id")); | ||
| 2845 | + schedule.setScheduleDateStr(rs.getString("schedule_date_str")); | ||
| 2846 | + schedule.setXlDir(rs.getString("xl_dir")); | ||
| 2847 | + schedule.setXlBm(rs.getString("xl_bm")); | ||
| 2848 | + schedule.setXlName(rs.getString("xl_name")); | ||
| 2849 | + schedule.setLpName(rs.getString("lp_name")); | ||
| 2850 | + schedule.setFcsj(rs.getString("fcsj")); | ||
| 2851 | + schedule.setFcsjActual(rs.getString("fcsj_actual")); | ||
| 2852 | + schedule.setZdsj(rs.getString("zdsj")); | ||
| 2853 | + schedule.setZdsjActual(rs.getString("zdsj_actual")); | ||
| 2854 | + schedule.setQdzName(rs.getString("qdz_name")); | ||
| 2855 | + schedule.setGsName(rs.getString("gs_name")); | ||
| 2856 | + schedule.setFgsName(rs.getString("fgs_name")); | ||
| 2857 | + schedule.setClZbh(rs.getString("cl_zbh")); | ||
| 2858 | + schedule.setjGh(rs.getString("j_gh")); | ||
| 2859 | + schedule.setjName(rs.getString("j_name")); | ||
| 2860 | + return schedule; | ||
| 2861 | + }}); | ||
| 2862 | + | ||
| 2863 | + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | ||
| 2864 | + Map<String, Map<String, List<ScheduleRealInfo>>> sches = new HashMap<String, Map<String, List<ScheduleRealInfo>>>(); | ||
| 2865 | + Map<String, List<List<Map<String, Object>>>> keyMap = new HashMap<String, List<List<Map<String, Object>>>>(); | ||
| 2866 | + | ||
| 2867 | + for(ScheduleRealInfo s : list){ | ||
| 2868 | + String xl = s.getXlName(); | ||
| 2869 | + String dateStr = s.getScheduleDateStr(); | ||
| 2870 | + if(!sches.containsKey(xl)){ | ||
| 2871 | + sches.put(xl, new HashMap<String, List<ScheduleRealInfo>>()); | ||
| 2872 | + keyMap.put(xl, new ArrayList<List<Map<String, Object>>>()); | ||
| 2873 | + } | ||
| 2874 | + if(!sches.get(xl).containsKey(dateStr)){ | ||
| 2875 | + sches.get(xl).put(dateStr, new ArrayList<ScheduleRealInfo>()); | ||
| 2876 | + } | ||
| 2877 | + sches.get(xl).get(dateStr).add(s); | ||
| 2878 | + } | ||
| 2879 | + for(String xl : sches.keySet()){ | ||
| 2880 | + Map<String, List<ScheduleRealInfo>> sche1 = sches.get(xl); | ||
| 2881 | + Set<String> dateSet = sche1.keySet(); | ||
| 2882 | + Map<Long, String> timeTemp = new HashMap<Long, String>(); | ||
| 2883 | + for(String date : dateSet){ | ||
| 2884 | + try { | ||
| 2885 | + Date parse = sdf.parse(date); | ||
| 2886 | + timeTemp.put(parse.getTime(), date); | ||
| 2887 | + } catch (ParseException e) { | ||
| 2888 | + // TODO Auto-generated catch block | ||
| 2889 | + e.printStackTrace(); | ||
| 2890 | + } | ||
| 2891 | + } | ||
| 2892 | + List<Long> timeList = new ArrayList<Long>(timeTemp.keySet()); | ||
| 2893 | + Collections.sort(timeList); | ||
| 2894 | + | ||
| 2895 | + List<List<Map<String, Object>>> lists = new ArrayList<List<Map<String, Object>>>(); | ||
| 2896 | + Map<Long, ScheduleRealInfo> keyTemp = new HashMap<Long, ScheduleRealInfo>(); | ||
| 2897 | + for(Long time : timeList){ | ||
| 2898 | + List<Long> keyList = new ArrayList<Long>(); | ||
| 2899 | + String date = timeTemp.get(time); | ||
| 2900 | + List<ScheduleRealInfo> sche2 = sche1.get(date); | ||
| 2901 | + for(ScheduleRealInfo s : sche2){ | ||
| 2902 | + if(s.getFcsj()!=null && s.getFcsj().trim().length() > 0 | ||
| 2903 | + && s.getFcsj().contains(":")){ | ||
| 2904 | + String[] split = s.getFcsj().split(":"); | ||
| 2905 | + Long key = Long.valueOf(s.getXlDir())*1500 + Long.valueOf(split[0])*60 + Long.valueOf(split[1]); | ||
| 2906 | + while(keyTemp.containsKey(key)){ | ||
| 2907 | + ++key; | ||
| 2908 | + } | ||
| 2909 | + keyList.add(key); | ||
| 2910 | + keyTemp.put(key, s); | ||
| 2911 | + } | ||
| 2912 | + } | ||
| 2913 | + Collections.sort(keyList); | ||
| 2914 | + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | ||
| 2915 | + for(Long l : keyList){ | ||
| 2916 | + ScheduleRealInfo s = keyTemp.get(l); | ||
| 2917 | + Map<String, Object> temp = new HashMap<String, Object>(); | ||
| 2918 | + temp.put("gs", s.getGsName()); | ||
| 2919 | + temp.put("fgs", s.getFgsName()); | ||
| 2920 | + temp.put("date", date); | ||
| 2921 | + temp.put("xlbm", s.getXlBm()); | ||
| 2922 | + temp.put("line", s.getXlName()); | ||
| 2923 | + temp.put("clzbh", s.getClZbh()); | ||
| 2924 | + temp.put("jsy", s.getjGh() + "/" + s.getjName()); | ||
| 2925 | + temp.put("lp", s.getLpName()); | ||
| 2926 | + temp.put("zd", s.getQdzName()); | ||
| 2927 | + temp.put("fcsj", s.getFcsj()!=null?s.getFcsj():""); | ||
| 2928 | + temp.put("fcsjA", s.getFcsjActual()!=null?s.getFcsjActual():"烂班"); | ||
| 2929 | + temp.put("zdsj", s.getZdsj()!=null?s.getZdsj():""); | ||
| 2930 | + temp.put("zdsjA", s.getZdsjActual()!=null?s.getZdsjActual():"烂班"); | ||
| 2931 | + if(s.getFcsj() != null && s.getFcsjActual()!=null){ | ||
| 2932 | + String[] split1 = s.getFcsj().split(":"); | ||
| 2933 | + String[] split2 = s.getFcsjActual().split(":"); | ||
| 2934 | + long fcsj = Long.valueOf(split1[0])*60 + Long.valueOf(split1[1]); | ||
| 2935 | + long fcsjA = Long.valueOf(split2[0])*60 + Long.valueOf(split2[1]); | ||
| 2936 | + if(fcsj > 23*60 && fcsjA < 60) | ||
| 2937 | + fcsjA += 1440; | ||
| 2938 | + if(fcsjA - fcsj >= 3 || fcsjA - fcsj <= 1){ | ||
| 2939 | + temp.put("fcsjzd", "准点"); | ||
| 2940 | + } else { | ||
| 2941 | + temp.put("fcsjzd", "不准点"); | ||
| 2942 | + temp.put("fcsjflag", 1); | ||
| 2943 | + } | ||
| 2944 | + } | ||
| 2945 | + if(s.getZdsj() != null && s.getZdsjActual()!=null){ | ||
| 2946 | + String[] split1 = s.getZdsj().split(":"); | ||
| 2947 | + String[] split2 = s.getZdsjActual().split(":"); | ||
| 2948 | + long zdsj = Long.valueOf(split1[0])*60 + Long.valueOf(split1[1]); | ||
| 2949 | + long zdsjA = Long.valueOf(split2[0])*60 + Long.valueOf(split2[1]); | ||
| 2950 | + if(zdsj > 23*60 && zdsjA < 60) | ||
| 2951 | + zdsjA += 1440; | ||
| 2952 | + if(zdsjA - zdsj >= 3 || zdsjA - zdsj <= 1){ | ||
| 2953 | + temp.put("zdsjzd", "准点"); | ||
| 2954 | + } else { | ||
| 2955 | + temp.put("zdsjzd", "不准点"); | ||
| 2956 | + temp.put("zdsjflag", 1); | ||
| 2957 | + } | ||
| 2958 | + } | ||
| 2959 | + tempList.add(temp); | ||
| 2960 | + } | ||
| 2961 | + lists.add(tempList); | ||
| 2962 | + } | ||
| 2963 | + keyMap.put(xl, lists); | ||
| 2964 | + } | ||
| 2965 | + | ||
| 2966 | + if(!map.containsKey("flag")){ | ||
| 2967 | + for(String xl : keyMap.keySet()){ | ||
| 2968 | + List<List<Map<String, Object>>> list1 = keyMap.get(xl); | ||
| 2969 | + if(list1.size() == 0 || list1.get(0).size() == 0) | ||
| 2970 | + continue; | ||
| 2971 | + Map<String, Object> tempMap = new HashMap<String, Object>(); | ||
| 2972 | + int bcs = 0, fczd = 0, zdzd = 0; | ||
| 2973 | + for(List<Map<String, Object>> list2 : list1){ | ||
| 2974 | + for(Map<String, Object> m : list2){ | ||
| 2975 | + bcs++; | ||
| 2976 | + if(!m.containsKey("fcsjflag")) | ||
| 2977 | + fczd++; | ||
| 2978 | + if(!m.containsKey("zdsjflag")) | ||
| 2979 | + zdzd++; | ||
| 2980 | + } | ||
| 2981 | + } | ||
| 2982 | + tempMap.put("gs", list1.get(0).get(0).get("gs")); | ||
| 2983 | + tempMap.put("fgs", list1.get(0).get(0).get("fgs")); | ||
| 2984 | + tempMap.put("line", list1.get(0).get(0).get("line")); | ||
| 2985 | + tempMap.put("date", list1.get(0).get(0).get("date")); | ||
| 2986 | + tempMap.put("xlbm", list1.get(0).get(0).get("xlbm")); | ||
| 2987 | + tempMap.put("bcs", bcs); | ||
| 2988 | + tempMap.put("fczd", fczd); | ||
| 2989 | + tempMap.put("zdzd", zdzd); | ||
| 2990 | + tempMap.put("fczdl", (bcs>0?df.format((double)fczd/bcs*100):0)+"%"); | ||
| 2991 | + tempMap.put("zdzdl", (bcs>0?df.format((double)zdzd/bcs*100):0)+"%"); | ||
| 2992 | + resList.add(tempMap); | ||
| 2993 | + } | ||
| 2994 | + } else if(map.get("flag").toString().trim().equals("1")) { | ||
| 2995 | + for(String xl : keyMap.keySet()){ | ||
| 2996 | + List<List<Map<String, Object>>> list1 = keyMap.get(xl); | ||
| 2997 | + if(list1.size() == 0 || list1.get(0).size() == 0) | ||
| 2998 | + continue; | ||
| 2999 | + for(List<Map<String, Object>> list2 : list1){ | ||
| 3000 | + Map<String, Object> tempMap = new HashMap<String, Object>(); | ||
| 3001 | + int bcs = 0, fczd = 0, zdzd = 0; | ||
| 3002 | + for(Map<String, Object> m : list2){ | ||
| 3003 | + bcs++; | ||
| 3004 | + if(!m.containsKey("fcsjflag")) | ||
| 3005 | + fczd++; | ||
| 3006 | + if(!m.containsKey("zdsjflag")) | ||
| 3007 | + zdzd++; | ||
| 3008 | + } | ||
| 3009 | + tempMap.put("gs", list2.get(0).get("gs")); | ||
| 3010 | + tempMap.put("fgs", list2.get(0).get("fgs")); | ||
| 3011 | + tempMap.put("line", list2.get(0).get("line")); | ||
| 3012 | + tempMap.put("date", list2.get(0).get("date")); | ||
| 3013 | + tempMap.put("xl_date", list2.get(0).get("date") + "_" + list2.get(0).get("xlbm") + "_" + list2.get(0).get("line")); | ||
| 3014 | + tempMap.put("bcs", bcs); | ||
| 3015 | + tempMap.put("fczd", fczd); | ||
| 3016 | + tempMap.put("zdzd", zdzd); | ||
| 3017 | + tempMap.put("fczdl", (bcs>0?df.format((double)fczd/bcs*100):0)+"%"); | ||
| 3018 | + tempMap.put("zdzdl", (bcs>0?df.format((double)zdzd/bcs*100):0)+"%"); | ||
| 3019 | + resList.add(tempMap); | ||
| 3020 | + } | ||
| 3021 | + } | ||
| 3022 | + } else if(map.get("flag").toString().trim().equals("2")) { | ||
| 3023 | + for(String xl : keyMap.keySet()){ | ||
| 3024 | + List<List<Map<String, Object>>> list1 = keyMap.get(xl); | ||
| 3025 | + if(list1.size() == 0 || list1.get(0).size() == 0) | ||
| 3026 | + continue; | ||
| 3027 | + for(List<Map<String, Object>> list2 : list1){ | ||
| 3028 | + for(Map<String, Object> m : list2){ | ||
| 3029 | + resList.add(m); | ||
| 3030 | + } | ||
| 3031 | + } | ||
| 3032 | + } | ||
| 3033 | + } | ||
| 3034 | + | ||
| 3035 | + return resList; | ||
| 3036 | + } | ||
| 3037 | + | ||
| 2818 | } | 3038 | } |
src/main/resources/static/pages/punctual/list.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="sheetList"> | ||
| 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 | + <td>实际到站</td> | ||
| 44 | + <td>是否准点</td> | ||
| 45 | + </tr> | ||
| 46 | + </thead> | ||
| 47 | + | ||
| 48 | + <tbody> | ||
| 49 | + | ||
| 50 | + </tbody> | ||
| 51 | + </table> | ||
| 52 | + </div> | ||
| 53 | + </div> | ||
| 54 | + </div> | ||
| 55 | + </div> | ||
| 56 | +</div> | ||
| 57 | +<script src="/pages/mforms/singledatas/jquery.table2excel.min.js"></script> | ||
| 58 | +<script> | ||
| 59 | + $(function(){ | ||
| 60 | + // 关闭左侧栏 | ||
| 61 | + if (!$('body').hasClass('page-sidebar-closed')) | ||
| 62 | + $('.menu-toggler.sidebar-toggler').click(); | ||
| 63 | + var no=""; | ||
| 64 | + $("#sheetList").on('init', function (e, id) { | ||
| 65 | + no=id; | ||
| 66 | + var date = id.split("_")[0]; | ||
| 67 | + var endDate = date; | ||
| 68 | + var line = id.split("_")[1]; | ||
| 69 | + var fgs=$('#fgsdm').val(); | ||
| 70 | + var gs=$('#gsdm').val(); | ||
| 71 | + $get('/busInterval/onTime',{line:line,startDate:date,endDate:endDate,gs:gs,fgs:fgs,flag:2},function(result){ | ||
| 72 | + var sheetList_2 = template('sheetList_2',{list:result}); | ||
| 73 | + $('#forms_2 tbody').html(sheetList_2); | ||
| 74 | + }); | ||
| 75 | + }); | ||
| 76 | + $("#exportList").on('click',function(){ | ||
| 77 | + $("#forms_2").table2excel({ | ||
| 78 | + // 不被导出的表格行的CSS class类 | ||
| 79 | + exclude: ".noExl", | ||
| 80 | + // 导出的Excel文档的名称,(没看到作用) | ||
| 81 | + name: "Excel Document Name.xlsx", | ||
| 82 | + // Excel文件的名称 | ||
| 83 | + filename: "发车到站准点率" | ||
| 84 | + }); | ||
| 85 | + }); | ||
| 86 | + | ||
| 87 | + }); | ||
| 88 | +</script> | ||
| 89 | +<script type="text/html" id="sheetList_2"> | ||
| 90 | + {{each list as obj i}} | ||
| 91 | + <tr {{if obj.fcsjflag=="1"}}style="color: red" {{/if}}> | ||
| 92 | + <td>{{i+1}}</td> | ||
| 93 | + <td>{{obj.zd}}</td> | ||
| 94 | + <td>{{obj.clzbh}}</td> | ||
| 95 | + <td>{{obj.jsy}}</td> | ||
| 96 | + <td>{{obj.lp}}</td> | ||
| 97 | + <td>{{obj.fcsj}}</td> | ||
| 98 | + <td>{{obj.fcsjA}}</td> | ||
| 99 | + <td>{{obj.zdsj}}</td> | ||
| 100 | + <td>{{obj.zdsjA}}</td> | ||
| 101 | + <td> | ||
| 102 | + {{if obj.fcsjflag!="1"}}准点{{else}}不准点{{/if}} | ||
| 103 | + </td> | ||
| 104 | + </tr> | ||
| 105 | + {{/each}} | ||
| 106 | + {{if list.length == 0}} | ||
| 107 | + <tr> | ||
| 108 | + <td colspan="10"><h6 class="muted">没有找到相关数据</h6></td> | ||
| 109 | + </tr> | ||
| 110 | + {{/if}} | ||
| 111 | +</script> | ||
| 0 | \ No newline at end of file | 112 | \ No newline at end of file |
src/main/resources/static/pages/punctual/onTime.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="margin-top: 10px"> | ||
| 39 | + </div> | ||
| 40 | + <div style="display: inline-block;margin-left: 33px;"> | ||
| 41 | + <span class="item-label" style="width: 80px;">线路: </span> | ||
| 42 | + <select class="form-control" name="line" id="line" style="width: 180px;"></select> | ||
| 43 | + </div> | ||
| 44 | + <div style="display: inline-block;"> | ||
| 45 | + <span class="item-label" style="width: 80px;margin-left: 24px;">开始时间: </span> | ||
| 46 | + <input class="form-control" type="text" id="date" style="width: 180px;"/> | ||
| 47 | + </div> | ||
| 48 | + <div style="display: inline-block;"> | ||
| 49 | + <span class="item-label" style="width: 80px;margin-left: 24px;">结束时间: </span> | ||
| 50 | + <input class="form-control" type="text" id="endDate" style="width: 180px;"/> | ||
| 51 | + </div> | ||
| 52 | + | ||
| 53 | + <div class="form-group"> | ||
| 54 | + <input class="btn btn-default" type="button" id="query" value="查询"/> | ||
| 55 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | ||
| 56 | + </div> | ||
| 57 | + </form> | ||
| 58 | + </div> | ||
| 59 | + <div class="portlet-body"> | ||
| 60 | + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> | ||
| 61 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | ||
| 62 | + <thead> | ||
| 63 | + <tr> | ||
| 64 | + <td>公司</td> | ||
| 65 | + <td>分公司</td> | ||
| 66 | + <td>线路</td> | ||
| 67 | + <td>班次数</td> | ||
| 68 | + <td>发车准点班次</td> | ||
| 69 | + <td>到站准点班次</td> | ||
| 70 | + <td>发车准点率</td> | ||
| 71 | + <td>到站准点率</td> | ||
| 72 | + <td>查看</td> | ||
| 73 | + </tr> | ||
| 74 | + </thead> | ||
| 75 | + | ||
| 76 | + <tbody> | ||
| 77 | + | ||
| 78 | + </tbody> | ||
| 79 | + </table> | ||
| 80 | + | ||
| 81 | + <table class="hidden" id="forms_h"> | ||
| 82 | + <thead> | ||
| 83 | + <tr> | ||
| 84 | + <td>公司</td> | ||
| 85 | + <td>分公司</td> | ||
| 86 | + <td>线路</td> | ||
| 87 | + <td>班次数</td> | ||
| 88 | + <td>发车准点班次</td> | ||
| 89 | + <td>到站准点班次</td> | ||
| 90 | + <td>发车准点率</td> | ||
| 91 | + <td>到站准点率</td> | ||
| 92 | + </tr> | ||
| 93 | + </thead> | ||
| 94 | + | ||
| 95 | + <tbody> | ||
| 96 | + | ||
| 97 | + </tbody> | ||
| 98 | + </table> | ||
| 99 | + </div> | ||
| 100 | + | ||
| 101 | + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> | ||
| 102 | + <input class="btn btn-default hidden" type="button" id="export_1" value="导出"/> | ||
| 103 | + <table class="table table-bordered table-hover table-checkable" id="forms_1"> | ||
| 104 | + <thead> | ||
| 105 | + <tr class="hidden"> | ||
| 106 | + <td>公司</td> | ||
| 107 | + <td>分公司</td> | ||
| 108 | + <td>日期</td> | ||
| 109 | + <td>线路</td> | ||
| 110 | + <td>班次数</td> | ||
| 111 | + <td>发车准点班次</td> | ||
| 112 | + <td>到站准点班次</td> | ||
| 113 | + <td>发车准点率</td> | ||
| 114 | + <td>到站准点率</td> | ||
| 115 | + <td>查看</td> | ||
| 116 | + </tr> | ||
| 117 | + </thead> | ||
| 118 | + | ||
| 119 | + <tbody> | ||
| 120 | + | ||
| 121 | + </tbody> | ||
| 122 | + </table> | ||
| 123 | + <table class="hidden" id="forms_1_h"> | ||
| 124 | + <thead> | ||
| 125 | + <tr > | ||
| 126 | + <td>公司</td> | ||
| 127 | + <td>分公司</td> | ||
| 128 | + <td>日期</td> | ||
| 129 | + <td>线路</td> | ||
| 130 | + <td>班次数</td> | ||
| 131 | + <td>发车准点班次</td> | ||
| 132 | + <td>到站准点班次</td> | ||
| 133 | + <td>发车准点率</td> | ||
| 134 | + <td>到站准点率</td> | ||
| 135 | + </tr> | ||
| 136 | + </thead> | ||
| 137 | + | ||
| 138 | + <tbody> | ||
| 139 | + | ||
| 140 | + </tbody> | ||
| 141 | + </table> | ||
| 142 | + </div> | ||
| 143 | + </div> | ||
| 144 | + </div> | ||
| 145 | + </div> | ||
| 146 | +</div> | ||
| 147 | +<script src="/pages/mforms/singledatas/jquery.table2excel.min.js"></script> | ||
| 148 | +<script> | ||
| 149 | + $(function(){ | ||
| 150 | + // 关闭左侧栏 | ||
| 151 | + if (!$('body').hasClass('page-sidebar-closed')) | ||
| 152 | + $('.menu-toggler.sidebar-toggler').click(); | ||
| 153 | + | ||
| 154 | + var d = new Date(); | ||
| 155 | + d.setTime(d.getTime() - 1*1000*60*60*24); | ||
| 156 | + var year = d.getFullYear(); | ||
| 157 | + var month = d.getMonth() + 1; | ||
| 158 | + var day = d.getDate(); | ||
| 159 | + if(month < 10) | ||
| 160 | + month = "0"+month; | ||
| 161 | + if(day < 10) | ||
| 162 | + day = "0"+day; | ||
| 163 | + var dateTime = year + "-" + month + "-" + day; | ||
| 164 | + $("#date").datetimepicker({ | ||
| 165 | + format : 'YYYY-MM-DD', | ||
| 166 | + locale : 'zh-cn', | ||
| 167 | + maxDate : dateTime | ||
| 168 | + }); | ||
| 169 | + $("#endDate").datetimepicker({ | ||
| 170 | + format : 'YYYY-MM-DD', | ||
| 171 | + locale : 'zh-cn', | ||
| 172 | + maxDate : dateTime | ||
| 173 | + }); | ||
| 174 | + $("#date").val(dateTime); | ||
| 175 | + $("#endDate").val(dateTime); | ||
| 176 | + | ||
| 177 | + var fage=false; | ||
| 178 | + var obj = []; | ||
| 179 | + var xlList; | ||
| 180 | + $.get('/report/lineList',function(result){ | ||
| 181 | + xlList=result; | ||
| 182 | + | ||
| 183 | + $.get('/user/companyData', function(result){ | ||
| 184 | + obj = result; | ||
| 185 | + console.log(obj); | ||
| 186 | + var options = ''; | ||
| 187 | + for(var i = 0; i < obj.length; i++){ | ||
| 188 | + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | ||
| 189 | + } | ||
| 190 | + | ||
| 191 | + if(obj.length ==0){ | ||
| 192 | + $("#gsdmDiv").css('display','none'); | ||
| 193 | + }else if(obj.length ==1){ | ||
| 194 | + $("#gsdmDiv").css('display','none'); | ||
| 195 | + if(obj[0].children.length == 1 || obj[0].children.length ==0) | ||
| 196 | + $('#fgsdmDiv').css('display','none'); | ||
| 197 | + } | ||
| 198 | + $('#gsdm').html(options); | ||
| 199 | + | ||
| 200 | + updateCompany(); | ||
| 201 | + }); | ||
| 202 | + }); | ||
| 203 | + | ||
| 204 | + $("#gsdm").on("change",updateCompany); | ||
| 205 | + function updateCompany(){ | ||
| 206 | + var company = $('#gsdm').val(); | ||
| 207 | + var options = ''; | ||
| 208 | + for(var i = 0; i < obj.length; i++){ | ||
| 209 | + if(obj[i].companyCode == company){ | ||
| 210 | + var children = obj[i].children; | ||
| 211 | + for(var j = 0; j < children.length; j++){ | ||
| 212 | + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | ||
| 213 | + } | ||
| 214 | + } | ||
| 215 | + } | ||
| 216 | + $('#fgsdm').html(options); | ||
| 217 | + } | ||
| 218 | + | ||
| 219 | + var tempData = {}; | ||
| 220 | + $.get('/report/lineList',function(xlList){ | ||
| 221 | + var data = []; | ||
| 222 | + data.push({id: " ", text: "全部线路"}); | ||
| 223 | + $.get('/user/companyData', function(result){ | ||
| 224 | + for(var i = 0; i < result.length; i++){ | ||
| 225 | + var companyCode = result[i].companyCode; | ||
| 226 | + var children = result[i].children; | ||
| 227 | + for(var j = 0; j < children.length; j++){ | ||
| 228 | + var code = children[j].code; | ||
| 229 | + for(var k=0;k < xlList.length;k++ ){ | ||
| 230 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | ||
| 231 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | ||
| 232 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | ||
| 233 | + } | ||
| 234 | + } | ||
| 235 | + } | ||
| 236 | + } | ||
| 237 | + initPinYinSelect2('#line',data,''); | ||
| 238 | + | ||
| 239 | + }); | ||
| 240 | + }); | ||
| 241 | + | ||
| 242 | + | ||
| 243 | + $("#line").on("change", function(){ | ||
| 244 | + if($("#line").val() == " "){ | ||
| 245 | + $("#gsdm").attr("disabled", false); | ||
| 246 | + $("#fgsdm").attr("disabled", false); | ||
| 247 | + } else { | ||
| 248 | + var temp = tempData[$("#line").val()].split(":"); | ||
| 249 | + $("#gsdm").val(temp[0]); | ||
| 250 | + updateCompany(); | ||
| 251 | + $("#fgsdm").val(temp[1]); | ||
| 252 | + $("#gsdm").attr("disabled", true); | ||
| 253 | + $("#fgsdm").attr("disabled", true); | ||
| 254 | + } | ||
| 255 | + }); | ||
| 256 | + | ||
| 257 | + | ||
| 258 | + //查询 | ||
| 259 | + $("#query").on('click',function(){ | ||
| 260 | + var line = $("#line").val(); | ||
| 261 | + var date = $("#date").val(); | ||
| 262 | + var endDate = $("#endDate").val(); | ||
| 263 | + var fgs=$('#fgsdm').val(); | ||
| 264 | + var gs=$('#gsdm').val(); | ||
| 265 | + var i = layer.load(2); | ||
| 266 | + $get('/busInterval/onTime',{line:line,startDate:date,endDate:endDate,gs:gs,fgs:fgs},function(result){ | ||
| 267 | + var sheetList = template('sheetList',{list:result}); | ||
| 268 | + $('#forms tbody').html(sheetList); | ||
| 269 | + $('#forms_h tbody').html(template('sheetList_h',{list:result})); | ||
| 270 | + $('.btn-sheetList').on('click', showSheetList); | ||
| 271 | + layer.close(i); | ||
| 272 | + }); | ||
| 273 | + }); | ||
| 274 | + function showSheetList(){ | ||
| 275 | + var line = $(this).data('id'); | ||
| 276 | + var date = $("#date").val(); | ||
| 277 | + var endDate = $("#endDate").val(); | ||
| 278 | + var fgs=$('#fgsdm').val(); | ||
| 279 | + var gs=$('#gsdm').val(); | ||
| 280 | + var i = layer.load(2); | ||
| 281 | + $get('/busInterval/onTime',{line:line,startDate:date,endDate:endDate,gs:gs,fgs:fgs,flag:1},function(result){ | ||
| 282 | + var sheetList = template('sheetList_1',{list:result}); | ||
| 283 | + $('#forms_1 tbody').html(sheetList); | ||
| 284 | + $('#forms_1_h tbody').html(template('sheetList_1_h',{list:result})); | ||
| 285 | + $("#forms_1 .hidden").removeClass("hidden"); | ||
| 286 | + $('.btn-sheetList_1').on('click', openSheetList); | ||
| 287 | + $("#export_1").removeClass("hidden"); | ||
| 288 | + $("html,body").animate({scrollTop:$("#forms_1").offset().top},1000); | ||
| 289 | + layer.close(i); | ||
| 290 | + }); | ||
| 291 | + } | ||
| 292 | + function openSheetList(){ | ||
| 293 | + var id = $(this).data('id'); | ||
| 294 | + var date = id.split("_")[0]; | ||
| 295 | + var endDate = date; | ||
| 296 | + var line = id.split("_")[1]; | ||
| 297 | + var fgs=$('#fgsdm').val(); | ||
| 298 | + var gs=$('#gsdm').val(); | ||
| 299 | + $.get('/pages/punctual/list.html', function (content) { | ||
| 300 | + layer.open({ | ||
| 301 | + type: 1, | ||
| 302 | + area: ['800px', '600px'], | ||
| 303 | + content: content, | ||
| 304 | + title: '线路准点率详细 - ' + id.split("_")[2] + ' - ' + date, | ||
| 305 | + shift: 5, | ||
| 306 | + scrollbar: false, | ||
| 307 | + success: function () { | ||
| 308 | + $('#sheetList').trigger('init', id); | ||
| 309 | + $('#sheetList').unbind(); | ||
| 310 | + } | ||
| 311 | + }); | ||
| 312 | + }); | ||
| 313 | + } | ||
| 314 | + $("#export").on("click",function(){ | ||
| 315 | + var date = $("#date").val(); | ||
| 316 | + var endDate = $("#endDate").val(); | ||
| 317 | + $("#forms_h").table2excel({ | ||
| 318 | + // 不被导出的表格行的CSS class类 | ||
| 319 | + exclude: ".noExl", | ||
| 320 | + // 导出的Excel文档的名称,(没看到作用) | ||
| 321 | + name: "Excel Document Name.xlsx", | ||
| 322 | + // Excel文件的名称 | ||
| 323 | + filename: date+"-"+endDate+"发车到站准点率" | ||
| 324 | + }); | ||
| 325 | + }) | ||
| 326 | + | ||
| 327 | + $("#export_1").on("click",function(){ | ||
| 328 | + var date = $("#date").val(); | ||
| 329 | + var endDate = $("#endDate").val(); | ||
| 330 | + $("#forms_1_h").table2excel({ | ||
| 331 | + // 不被导出的表格行的CSS class类 | ||
| 332 | + exclude: ".noExl", | ||
| 333 | + // 导出的Excel文档的名称,(没看到作用) | ||
| 334 | + name: "Excel Document Name.xlsx", | ||
| 335 | + // Excel文件的名称 | ||
| 336 | + filename: date+"-"+endDate+"发车到站准点率" | ||
| 337 | + }); | ||
| 338 | + }) | ||
| 339 | + | ||
| 340 | + }); | ||
| 341 | +</script> | ||
| 342 | +<script type="text/html" id="sheetList"> | ||
| 343 | + {{each list as obj i}} | ||
| 344 | + <tr> | ||
| 345 | + <td>{{obj.gs}}</td> | ||
| 346 | + <td>{{obj.fgs}}</td> | ||
| 347 | + <td>{{obj.line}}</td> | ||
| 348 | + <td>{{obj.bcs}}</td> | ||
| 349 | + <td>{{obj.fczd}}</td> | ||
| 350 | + <td>{{obj.zdzd}}</td> | ||
| 351 | + <td>{{obj.fczdl}}</td> | ||
| 352 | + <td>{{obj.zdzdl}}</td> | ||
| 353 | + <td> | ||
| 354 | + <button type="button" class="btn btn-sm blue btn-sheetList" | ||
| 355 | + data-id="{{obj.xlbm}}">查看</button> | ||
| 356 | + </td> | ||
| 357 | + </tr> | ||
| 358 | + {{/each}} | ||
| 359 | + {{if list.length == 0}} | ||
| 360 | + <tr> | ||
| 361 | + <td colspan="9"><h6 class="muted">没有找到相关数据</h6></td> | ||
| 362 | + </tr> | ||
| 363 | + {{/if}} | ||
| 364 | +</script> | ||
| 365 | + | ||
| 366 | +<script type="text/html" id="sheetList_h"> | ||
| 367 | + {{each list as obj i}} | ||
| 368 | + <tr> | ||
| 369 | + <td>{{obj.gs}}</td> | ||
| 370 | + <td>{{obj.fgs}}</td> | ||
| 371 | + <td>{{obj.line}}</td> | ||
| 372 | + <td>{{obj.bcs}}</td> | ||
| 373 | + <td>{{obj.fczd}}</td> | ||
| 374 | + <td>{{obj.zdzd}}</td> | ||
| 375 | + <td>{{obj.fczdl}}</td> | ||
| 376 | + <td>{{obj.zdzdl}}</td> | ||
| 377 | + </tr> | ||
| 378 | + {{/each}} | ||
| 379 | + {{if list.length == 0}} | ||
| 380 | + <tr> | ||
| 381 | + <td colspan="9"><h6 class="muted">没有找到相关数据</h6></td> | ||
| 382 | + </tr> | ||
| 383 | + {{/if}} | ||
| 384 | +</script> | ||
| 385 | + | ||
| 386 | +<script type="text/html" id="sheetList_1"> | ||
| 387 | + {{each list as obj i}} | ||
| 388 | + <tr> | ||
| 389 | + <td>{{obj.gs}}</td> | ||
| 390 | + <td>{{obj.fgs}}</td> | ||
| 391 | + <td>{{obj.date}}</td> | ||
| 392 | + <td>{{obj.line}}</td> | ||
| 393 | + <td>{{obj.bcs}}</td> | ||
| 394 | + <td>{{obj.fczd}}</td> | ||
| 395 | + <td>{{obj.zdzd}}</td> | ||
| 396 | + <td>{{obj.fczdl}}</td> | ||
| 397 | + <td>{{obj.zdzdl}}</td> | ||
| 398 | + <td> | ||
| 399 | + <button type="button" class="btn btn-sm blue btn-sheetList_1" | ||
| 400 | + data-id="{{obj.xl_date}}">详细</button> | ||
| 401 | + </td> | ||
| 402 | + </tr> | ||
| 403 | + {{/each}} | ||
| 404 | + {{if list.length == 0}} | ||
| 405 | + <tr> | ||
| 406 | + <td colspan="10"><h6 class="muted">没有找到相关数据</h6></td> | ||
| 407 | + </tr> | ||
| 408 | + {{/if}} | ||
| 409 | +</script> | ||
| 410 | + | ||
| 411 | + | ||
| 412 | +<script type="text/html" id="sheetList_1_h"> | ||
| 413 | + {{each list as obj i}} | ||
| 414 | + <tr> | ||
| 415 | + <td>{{obj.gs}}</td> | ||
| 416 | + <td>{{obj.fgs}}</td> | ||
| 417 | + <td>{{obj.date}}</td> | ||
| 418 | + <td>{{obj.line}}</td> | ||
| 419 | + <td>{{obj.bcs}}</td> | ||
| 420 | + <td>{{obj.fczd}}</td> | ||
| 421 | + <td>{{obj.zdzd}}</td> | ||
| 422 | + <td>{{obj.fczdl}}</td> | ||
| 423 | + <td>{{obj.zdzdl}}</td> | ||
| 424 | + </tr> | ||
| 425 | + {{/each}} | ||
| 426 | + {{if list.length == 0}} | ||
| 427 | + <tr> | ||
| 428 | + <td colspan="10"><h6 class="muted">没有找到相关数据</h6></td> | ||
| 429 | + </tr> | ||
| 430 | + {{/if}} | ||
| 431 | +</script> | ||
| 0 | \ No newline at end of file | 432 | \ No newline at end of file |
src/main/resources/static/pages/report/sheet/sheetList.html
| @@ -143,27 +143,28 @@ | @@ -143,27 +143,28 @@ | ||
| 143 | if (!$('body').hasClass('page-sidebar-closed')) | 143 | if (!$('body').hasClass('page-sidebar-closed')) |
| 144 | $('.menu-toggler.sidebar-toggler').click(); | 144 | $('.menu-toggler.sidebar-toggler').click(); |
| 145 | 145 | ||
| 146 | - $("#date").datetimepicker({ | ||
| 147 | - format : 'YYYY-MM-DD', | ||
| 148 | - locale : 'zh-cn' | ||
| 149 | - }); | ||
| 150 | - $("#endDate").datetimepicker({ | ||
| 151 | - format : 'YYYY-MM-DD', | ||
| 152 | - locale : 'zh-cn' | ||
| 153 | - }); | ||
| 154 | var d = new Date(); | 146 | var d = new Date(); |
| 147 | + d.setTime(d.getTime() - 1*1000*60*60*24); | ||
| 155 | var year = d.getFullYear(); | 148 | var year = d.getFullYear(); |
| 156 | var month = d.getMonth() + 1; | 149 | var month = d.getMonth() + 1; |
| 157 | var day = d.getDate(); | 150 | var day = d.getDate(); |
| 151 | + if(month < 10) | ||
| 152 | + month = "0"+month; | ||
| 158 | if(day < 10) | 153 | if(day < 10) |
| 159 | day = "0"+day; | 154 | day = "0"+day; |
| 160 | - if(month > 9){ | ||
| 161 | - $("#date").val(year + "-" + month + "-" + day); | ||
| 162 | - $("#endDate").val(year + "-" + month + "-" + day); | ||
| 163 | - } else { | ||
| 164 | - $("#date").val(year + "-0" + month + "-" + day); | ||
| 165 | - $("#endDate").val(year + "-" + month + "-" + day); | ||
| 166 | - } | 155 | + var dateTime = year + "-" + month + "-" + day; |
| 156 | + $("#date").datetimepicker({ | ||
| 157 | + format : 'YYYY-MM-DD', | ||
| 158 | + locale : 'zh-cn', | ||
| 159 | + maxDate : dateTime | ||
| 160 | + }); | ||
| 161 | + $("#endDate").datetimepicker({ | ||
| 162 | + format : 'YYYY-MM-DD', | ||
| 163 | + locale : 'zh-cn', | ||
| 164 | + maxDate : dateTime | ||
| 165 | + }); | ||
| 166 | + $("#date").val(dateTime); | ||
| 167 | + $("#endDate").val(dateTime); | ||
| 167 | 168 | ||
| 168 | var fage=false; | 169 | var fage=false; |
| 169 | var obj = []; | 170 | var obj = []; |
| @@ -205,6 +206,7 @@ | @@ -205,6 +206,7 @@ | ||
| 205 | } | 206 | } |
| 206 | } | 207 | } |
| 207 | $('#fgsdm').html(options); | 208 | $('#fgsdm').html(options); |
| 209 | + } | ||
| 208 | 210 | ||
| 209 | var tempData = {}; | 211 | var tempData = {}; |
| 210 | $.get('/report/lineList',function(xlList){ | 212 | $.get('/report/lineList',function(xlList){ |
| @@ -242,7 +244,6 @@ | @@ -242,7 +244,6 @@ | ||
| 242 | $("#fgsdm").attr("disabled", true); | 244 | $("#fgsdm").attr("disabled", true); |
| 243 | } | 245 | } |
| 244 | }); | 246 | }); |
| 245 | - } | ||
| 246 | 247 | ||
| 247 | 248 | ||
| 248 | 249 |