Commit d5503be92ba7a8c2737b674502d0626d2071fc50
1 parent
22f66c51
线路首末班查询
Showing
1 changed file
with
413 additions
and
1 deletions
src/main/java/com/bsth/service/schedule/PeopleCarPlanServiceImpl.java
| @@ -5,6 +5,7 @@ import java.net.URLEncoder; | @@ -5,6 +5,7 @@ import java.net.URLEncoder; | ||
| 5 | import java.sql.ResultSet; | 5 | import java.sql.ResultSet; |
| 6 | import java.sql.SQLException; | 6 | import java.sql.SQLException; |
| 7 | import java.text.DecimalFormat; | 7 | import java.text.DecimalFormat; |
| 8 | +import java.text.NumberFormat; | ||
| 8 | import java.text.ParseException; | 9 | import java.text.ParseException; |
| 9 | import java.text.SimpleDateFormat; | 10 | import java.text.SimpleDateFormat; |
| 10 | import java.util.ArrayList; | 11 | import java.util.ArrayList; |
| @@ -17,7 +18,6 @@ import java.util.List; | @@ -17,7 +18,6 @@ import java.util.List; | ||
| 17 | import java.util.Map; | 18 | import java.util.Map; |
| 18 | import java.util.Set; | 19 | import java.util.Set; |
| 19 | 20 | ||
| 20 | -import org.drools.compiler.lang.DRL5Expressions.type_return; | ||
| 21 | import org.springframework.beans.factory.annotation.Autowired; | 21 | import org.springframework.beans.factory.annotation.Autowired; |
| 22 | import org.springframework.jdbc.core.JdbcTemplate; | 22 | import org.springframework.jdbc.core.JdbcTemplate; |
| 23 | import org.springframework.jdbc.core.RowMapper; | 23 | import org.springframework.jdbc.core.RowMapper; |
| @@ -759,6 +759,262 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { | @@ -759,6 +759,262 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { | ||
| 759 | 759 | ||
| 760 | return modelMap; | 760 | return modelMap; |
| 761 | } | 761 | } |
| 762 | + | ||
| 763 | + @Override | ||
| 764 | + public Map<String, Object> scheduleAnaly_sum(Map<String, Object> map) { | ||
| 765 | + DecimalFormat df = new DecimalFormat("00"); | ||
| 766 | + NumberFormat nf = NumberFormat.getNumberInstance(); | ||
| 767 | + nf.setMaximumFractionDigits(2); | ||
| 768 | +// List<TTInfoDetail> ttList = new ArrayList<TTInfoDetail>(); | ||
| 769 | + List<Long> ttList = new ArrayList<Long>(); | ||
| 770 | + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); | ||
| 771 | + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | ||
| 772 | + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>(); | ||
| 773 | + Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>(); | ||
| 774 | + Map<String, Object> modelMap = new HashMap<String, Object>(); | ||
| 775 | + | ||
| 776 | + String company = ""; | ||
| 777 | + if(map.get("company")!=null) | ||
| 778 | + company=map.get("company").toString(); | ||
| 779 | + String subCompany = ""; | ||
| 780 | + if(map.get("subCompany")!=null) | ||
| 781 | + subCompany=map.get("subCompany").toString(); | ||
| 782 | + String page = map.get("page").toString(); | ||
| 783 | + String line = map.get("line").toString(); | ||
| 784 | + String startDate = map.get("startDate").toString(); | ||
| 785 | + String endDate = map.get("endDate").toString(); | ||
| 786 | + String nbbm = map.get("nbbm").toString(); | ||
| 787 | + String type = map.get("type").toString(); | ||
| 788 | + | ||
| 789 | + if(startDate.length() == 0){ | ||
| 790 | + startDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); | ||
| 791 | + } | ||
| 792 | + if(endDate.length() == 0){ | ||
| 793 | + endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); | ||
| 794 | + } | ||
| 795 | + try { | ||
| 796 | + | ||
| 797 | + String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"; | ||
| 798 | + if(line.length() != 0){ | ||
| 799 | + sql += " and xl_bm = '"+line+"'"; | ||
| 800 | + } | ||
| 801 | + if(nbbm.length() != 0){ | ||
| 802 | + sql += " and cl_zbh like '%"+nbbm+"%'"; | ||
| 803 | + } | ||
| 804 | +// if(company.length() != 0){ | ||
| 805 | + sql += " and gs_bm like '%"+company+"%' and fgs_bm like '%"+subCompany+"%'"; | ||
| 806 | +// } | ||
| 807 | + sql += " and bc_type != 'in' and bc_type != 'out'"; | ||
| 808 | + | ||
| 809 | + list = jdbcTemplate.query(sql, | ||
| 810 | + new RowMapper<ScheduleRealInfo>(){ | ||
| 811 | + @Override | ||
| 812 | + public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 813 | + ScheduleRealInfo schedule = new ScheduleRealInfo(); | ||
| 814 | + schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); | ||
| 815 | + schedule.setRealExecDate(rs.getString("real_exec_date")); | ||
| 816 | + schedule.setXlName(rs.getString("xl_name")); | ||
| 817 | + schedule.setBcType(rs.getString("bc_type")); | ||
| 818 | + schedule.setGsName(rs.getString("gs_name")); | ||
| 819 | + schedule.setFgsName(rs.getString("fgs_name")); | ||
| 820 | + schedule.setXlDir(rs.getString("xl_dir")); | ||
| 821 | + schedule.setBcs(rs.getInt("bcs")); | ||
| 822 | + schedule.setFcno(rs.getInt("fcno")); | ||
| 823 | + schedule.setFcsj(rs.getString("fcsj")); | ||
| 824 | + schedule.setFcsjActual(rs.getString("fcsj_actual")); | ||
| 825 | + schedule.setZdsj(rs.getString("zdsj")); | ||
| 826 | + schedule.setZdsjActual(rs.getString("zdsj_actual")); | ||
| 827 | + schedule.setBcsj(rs.getInt("bcsj")); | ||
| 828 | + schedule.setQdzName(rs.getString("qdz_name")); | ||
| 829 | + schedule.setSpId(rs.getLong("sp_id")); | ||
| 830 | + | ||
| 831 | + if(schedule.getFcsj() != null && schedule.getZdsj() != null){ | ||
| 832 | + String[] split1 = schedule.getFcsj().split(":"); | ||
| 833 | + String[] split2 = schedule.getZdsj().split(":"); | ||
| 834 | + int fcsj = Integer.valueOf(split1[0]) * 60 + Integer.valueOf(split1[1]); | ||
| 835 | + int zdsj = Integer.valueOf(split2[0]) * 60 + Integer.valueOf(split2[1]); | ||
| 836 | + if(zdsj < fcsj){ | ||
| 837 | + zdsj += 1440; | ||
| 838 | + schedule.setZdsj((zdsj/60>9?zdsj/60:"0"+zdsj/60) + ":" + (zdsj%60>9?zdsj%60:"0"+zdsj%60)); | ||
| 839 | + } | ||
| 840 | + schedule.setFcsjT((long)fcsj); | ||
| 841 | + schedule.setZdsjT((long)zdsj); | ||
| 842 | + } | ||
| 843 | + if(schedule.getFcsjActual() != null && schedule.getZdsjActual() != null){ | ||
| 844 | + String[] split3 = schedule.getFcsjActual().split(":"); | ||
| 845 | + String[] split4 = schedule.getZdsjActual().split(":"); | ||
| 846 | + int fcsjA = Integer.valueOf(split3[0]) * 60 + Integer.valueOf(split3[1]); | ||
| 847 | + int zdsjA = Integer.valueOf(split4[0]) * 60 + Integer.valueOf(split4[1]); | ||
| 848 | + if(fcsjA > zdsjA){ | ||
| 849 | + zdsjA += 1440; | ||
| 850 | + schedule.setZdsjActual((zdsjA/60>9?zdsjA/60:"0"+zdsjA/60) + ":" + (zdsjA%60>9?zdsjA%60:"0"+zdsjA%60)); | ||
| 851 | + } | ||
| 852 | + schedule.setFcsjActualTime((long)fcsjA); | ||
| 853 | + schedule.setZdsjActualTime((long)zdsjA); | ||
| 854 | + } | ||
| 855 | + | ||
| 856 | + return schedule; | ||
| 857 | + } | ||
| 858 | + }); | ||
| 859 | + | ||
| 860 | + } catch (Exception e) { | ||
| 861 | + // TODO Auto-generated catch block | ||
| 862 | + e.printStackTrace(); | ||
| 863 | + } | ||
| 864 | + | ||
| 865 | + { | ||
| 866 | + Map<String, Object> m0 = new HashMap<String, Object>(); | ||
| 867 | + m0.put("time", "首~6:30"); | ||
| 868 | + m0.put("upbc", "0");m0.put("dnbc", "0"); | ||
| 869 | + m0.put("upys", "--");m0.put("dnys", "--"); | ||
| 870 | + m0.put("pjys", "--"); | ||
| 871 | + tempList.add(m0); | ||
| 872 | + Map<String, Object> m1 = new HashMap<String, Object>(); | ||
| 873 | + m1.put("time", "6:31~8:30"); | ||
| 874 | + m1.put("upbc", "0");m1.put("dnbc", "0"); | ||
| 875 | + m1.put("upys", "--");m1.put("dnys", "--"); | ||
| 876 | + m1.put("pjys", "--"); | ||
| 877 | + tempList.add(m1); | ||
| 878 | + Map<String, Object> m2 = new HashMap<String, Object>(); | ||
| 879 | + m2.put("time", "8:31~11:00"); | ||
| 880 | + m2.put("upbc", "0");m2.put("dnbc", "0"); | ||
| 881 | + m2.put("upys", "--");m2.put("dnys", "--"); | ||
| 882 | + m2.put("pjys", "--"); | ||
| 883 | + tempList.add(m2); | ||
| 884 | + Map<String, Object> m3 = new HashMap<String, Object>(); | ||
| 885 | + m3.put("time", "11:01~13:30"); | ||
| 886 | + m3.put("upbc", "0");m3.put("dnbc", "0"); | ||
| 887 | + m3.put("upys", "--");m3.put("dnys", "--"); | ||
| 888 | + m3.put("pjys", "--"); | ||
| 889 | + tempList.add(m3); | ||
| 890 | + Map<String, Object> m4 = new HashMap<String, Object>(); | ||
| 891 | + m4.put("time", "13:31~16:00"); | ||
| 892 | + m4.put("upbc", "0");m4.put("dnbc", "0"); | ||
| 893 | + m4.put("upys", "--");m4.put("dnys", "--"); | ||
| 894 | + m4.put("pjys", "--"); | ||
| 895 | + tempList.add(m4); | ||
| 896 | + Map<String, Object> m5 = new HashMap<String, Object>(); | ||
| 897 | + m5.put("time", "16:01~18:00"); | ||
| 898 | + m5.put("upbc", "0");m5.put("dnbc", "0"); | ||
| 899 | + m5.put("upys", "--");m5.put("dnys", "--"); | ||
| 900 | + m5.put("pjys", "--"); | ||
| 901 | + tempList.add(m5); | ||
| 902 | + Map<String, Object> m6 = new HashMap<String, Object>(); | ||
| 903 | + m6.put("time", "18:01~20:30"); | ||
| 904 | + m6.put("upbc", "0");m6.put("dnbc", "0"); | ||
| 905 | + m6.put("upys", "--");m6.put("dnys", "--"); | ||
| 906 | + m6.put("pjys", "--"); | ||
| 907 | + tempList.add(m6); | ||
| 908 | + Map<String, Object> m7 = new HashMap<String, Object>(); | ||
| 909 | + m7.put("time", "20:31~末"); | ||
| 910 | + m7.put("upbc", "0");m7.put("dnbc", "0"); | ||
| 911 | + m7.put("upys", "--");m7.put("dnys", "--"); | ||
| 912 | + m7.put("pjys", "--"); | ||
| 913 | + tempList.add(m7); | ||
| 914 | + } | ||
| 915 | + | ||
| 916 | + //按时间段分组 | ||
| 917 | + for(ScheduleRealInfo schedule : list){ | ||
| 918 | + if(schedule.getFcsjActualTime()!=null && schedule.getZdsjActualTime()!=null){ | ||
| 919 | + Long fcsjA = schedule.getFcsjActualTime(); | ||
| 920 | + if(fcsjA <= 6*60+30){ | ||
| 921 | + if(!keyMap.containsKey("首~6:30")) | ||
| 922 | + keyMap.put("首~6:30", new ArrayList<ScheduleRealInfo>()); | ||
| 923 | + keyMap.get("首~6:30").add(schedule); | ||
| 924 | + } | ||
| 925 | + if(fcsjA > 6*60+30 && fcsjA <= 8*60+30){ | ||
| 926 | + if(!keyMap.containsKey("6:31~8:30")) | ||
| 927 | + keyMap.put("6:31~8:30", new ArrayList<ScheduleRealInfo>()); | ||
| 928 | + keyMap.get("6:31~8:30").add(schedule); | ||
| 929 | + } | ||
| 930 | + if(fcsjA > 8*60+30 && fcsjA <= 11*60){ | ||
| 931 | + if(!keyMap.containsKey("8:31~11:00")) | ||
| 932 | + keyMap.put("8:31~11:00", new ArrayList<ScheduleRealInfo>()); | ||
| 933 | + keyMap.get("8:31~11:00").add(schedule); | ||
| 934 | + } | ||
| 935 | + if(fcsjA > 11*60 && fcsjA <= 13*60+30){ | ||
| 936 | + if(!keyMap.containsKey("11:01~13:30")) | ||
| 937 | + keyMap.put("11:01~13:30", new ArrayList<ScheduleRealInfo>()); | ||
| 938 | + keyMap.get("11:01~13:30").add(schedule); | ||
| 939 | + } | ||
| 940 | + if(fcsjA > 13*60+30 && fcsjA <= 16*60){ | ||
| 941 | + if(!keyMap.containsKey("13:31~16:00")) | ||
| 942 | + keyMap.put("13:31~16:00", new ArrayList<ScheduleRealInfo>()); | ||
| 943 | + keyMap.get("13:31~16:00").add(schedule); | ||
| 944 | + } | ||
| 945 | + if(fcsjA > 16*60 && fcsjA <= 18*60){ | ||
| 946 | + if(!keyMap.containsKey("16:01~18:00")) | ||
| 947 | + keyMap.put("16:01~18:00", new ArrayList<ScheduleRealInfo>()); | ||
| 948 | + keyMap.get("16:01~18:00").add(schedule); | ||
| 949 | + } | ||
| 950 | + if(fcsjA > 18*60 && fcsjA <= 20*60+30){ | ||
| 951 | + if(!keyMap.containsKey("18:01~20:30")) | ||
| 952 | + keyMap.put("18:01~20:30", new ArrayList<ScheduleRealInfo>()); | ||
| 953 | + keyMap.get("18:01~20:30").add(schedule); | ||
| 954 | + } | ||
| 955 | + if(fcsjA > 20*60+30){ | ||
| 956 | + if(!keyMap.containsKey("20:31~末")) | ||
| 957 | + keyMap.put("20:31~末", new ArrayList<ScheduleRealInfo>()); | ||
| 958 | + keyMap.get("20:31~末").add(schedule); | ||
| 959 | + } | ||
| 960 | + } | ||
| 961 | + } | ||
| 962 | + | ||
| 963 | + for(String key : keyMap.keySet()){ | ||
| 964 | + Map<String, Object> m = null; | ||
| 965 | + for(Map<String, Object> map2 : tempList){ | ||
| 966 | + if(map2.get("time").toString().equals(key)){ | ||
| 967 | + m = map2; | ||
| 968 | + } | ||
| 969 | + } | ||
| 970 | + int upbc = 0, dnbc = 0; | ||
| 971 | + long upys = 0, dnys = 0; | ||
| 972 | + for(ScheduleRealInfo schedule : keyMap.get(key)){ | ||
| 973 | + if(schedule.getXlDir().equals("0")){ | ||
| 974 | + upbc++; | ||
| 975 | + upys += schedule.getZdsjActualTime() - schedule.getFcsjActualTime(); | ||
| 976 | + if(schedule.getFcsjActualTime() > schedule.getZdsjActualTime() || schedule.getZdsjActualTime() - schedule.getFcsjActualTime() > 24*60){ | ||
| 977 | + System.out.println("错误的时间:"+schedule.getFcsjActualTime() | ||
| 978 | + +"--up--"+schedule.getZdsjActualTime()); | ||
| 979 | + } | ||
| 980 | + }else if(schedule.getXlDir().equals("1")){ | ||
| 981 | + dnbc++; | ||
| 982 | + dnys += schedule.getZdsjActualTime() - schedule.getFcsjActualTime(); | ||
| 983 | + if(schedule.getFcsjActualTime() > schedule.getZdsjActualTime() || schedule.getZdsjActualTime() - schedule.getFcsjActualTime() > 24*60){ | ||
| 984 | + System.out.println("错误的时间:"+schedule.getFcsjActualTime() | ||
| 985 | + +"--dn--"+schedule.getZdsjActualTime()); | ||
| 986 | + } | ||
| 987 | + } | ||
| 988 | + } | ||
| 989 | + m.put("upbc", upbc); | ||
| 990 | + m.put("dnbc", dnbc); | ||
| 991 | + m.put("upys", nf.format((float)upys / upbc)); | ||
| 992 | + m.put("dnys", nf.format((float)dnys / dnbc)); | ||
| 993 | + m.put("pjys", nf.format((float) (upys + dnys) / (upbc + dnbc))); | ||
| 994 | + } | ||
| 995 | + | ||
| 996 | + modelMap.put("dataList", tempList); | ||
| 997 | + | ||
| 998 | + //导出 | ||
| 999 | + if(type.equals("export")){ | ||
| 1000 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | ||
| 1001 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | ||
| 1002 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | ||
| 1003 | + Map<String,Object> m = new HashMap<String, Object>(); | ||
| 1004 | + ReportUtils ee = new ReportUtils(); | ||
| 1005 | + try { | ||
| 1006 | + listI.add(tempList.iterator()); | ||
| 1007 | + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/"; | ||
| 1008 | + ee.excelReplace(listI, new Object[] { m }, path+"mould/scheduleAnaly_sum.xls", | ||
| 1009 | + path+"export/时刻表分析(汇总)" + sdfSimple.format(sdfMonth.parse(startDate)) + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls"); | ||
| 1010 | + } catch (Exception e) { | ||
| 1011 | + // TODO: handle exception | ||
| 1012 | + e.printStackTrace(); | ||
| 1013 | + } | ||
| 1014 | + } | ||
| 1015 | + | ||
| 1016 | + return modelMap; | ||
| 1017 | + } | ||
| 762 | 1018 | ||
| 763 | @Override | 1019 | @Override |
| 764 | public List<Map<String, Object>> getModel(Map<String, Object> map) { | 1020 | public List<Map<String, Object>> getModel(Map<String, Object> map) { |
| @@ -908,6 +1164,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { | @@ -908,6 +1164,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { | ||
| 908 | List<Long> longList1 = new ArrayList<Long>(); | 1164 | List<Long> longList1 = new ArrayList<Long>(); |
| 909 | String companyName = "", subCompanyName = ""; | 1165 | String companyName = "", subCompanyName = ""; |
| 910 | for(ScheduleRealInfo schedule : keyMap.get(key)){ | 1166 | for(ScheduleRealInfo schedule : keyMap.get(key)){ |
| 1167 | + if(schedule.getFcsjActual() == null || schedule.getFcsjActual().trim().length() == 0){ | ||
| 1168 | + continue; | ||
| 1169 | + } | ||
| 911 | if(schedule.getGsName() != null && companyName.length() == 0) | 1170 | if(schedule.getGsName() != null && companyName.length() == 0) |
| 912 | companyName = schedule.getGsName(); | 1171 | companyName = schedule.getGsName(); |
| 913 | if(schedule.getFgsName() != null && subCompanyName.length() == 0) | 1172 | if(schedule.getFgsName() != null && subCompanyName.length() == 0) |
| @@ -923,8 +1182,12 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { | @@ -923,8 +1182,12 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { | ||
| 923 | longList1.add(min); | 1182 | longList1.add(min); |
| 924 | } | 1183 | } |
| 925 | } | 1184 | } |
| 1185 | + if(longList0.size() == 0 || longList1.size() == 0){ | ||
| 1186 | + continue; | ||
| 1187 | + } | ||
| 926 | Collections.sort(longList0); | 1188 | Collections.sort(longList0); |
| 927 | Collections.sort(longList1); | 1189 | Collections.sort(longList1); |
| 1190 | + System.out.println(longList0.size() + "---" + longList1.size()); | ||
| 928 | ScheduleRealInfo shouban0 = temp0.get(longList0.get(0)); | 1191 | ScheduleRealInfo shouban0 = temp0.get(longList0.get(0)); |
| 929 | ScheduleRealInfo moban0 = temp0.get(longList0.get(longList0.size() - 1)); | 1192 | ScheduleRealInfo moban0 = temp0.get(longList0.get(longList0.size() - 1)); |
| 930 | ScheduleRealInfo shouban1 = temp1.get(longList1.get(0)); | 1193 | ScheduleRealInfo shouban1 = temp1.get(longList1.get(0)); |
| @@ -1017,6 +1280,155 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { | @@ -1017,6 +1280,155 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { | ||
| 1017 | } | 1280 | } |
| 1018 | 1281 | ||
| 1019 | @Override | 1282 | @Override |
| 1283 | + public List<Map<String, Object>> firstAndLastBus_sum(Map<String, Object> map) { | ||
| 1284 | + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | ||
| 1285 | + Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>(); | ||
| 1286 | + | ||
| 1287 | + String company = map.get("company").toString(); | ||
| 1288 | + String subCompany = map.get("subCompany").toString(); | ||
| 1289 | + String line = map.get("line").toString(); | ||
| 1290 | + String date = map.get("date").toString(); | ||
| 1291 | + String type = map.get("type").toString(); | ||
| 1292 | + | ||
| 1293 | + if(date.length() == 0) | ||
| 1294 | + date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); | ||
| 1295 | + | ||
| 1296 | + List<ScheduleRealInfo> list = this.getSchedule(company, subCompany, line, date); | ||
| 1297 | + | ||
| 1298 | + for(ScheduleRealInfo schedule : list){ | ||
| 1299 | + if(schedule.getBcType().equals("in") || schedule.getBcType().equals("out")) | ||
| 1300 | + continue; | ||
| 1301 | + String key = schedule.getXlName(); | ||
| 1302 | + if(key == null || key.trim().length() == 0) | ||
| 1303 | + continue; | ||
| 1304 | + if(!keyMap.containsKey(key)) | ||
| 1305 | + keyMap.put(key, new ArrayList<ScheduleRealInfo>()); | ||
| 1306 | + keyMap.get(key).add(schedule); | ||
| 1307 | + } | ||
| 1308 | + for(String key : keyMap.keySet()){ | ||
| 1309 | + Map<String, Object> tempMap = new HashMap<String, Object>(); | ||
| 1310 | + Map<Long, ScheduleRealInfo> temp0 = new HashMap<Long, ScheduleRealInfo>(); | ||
| 1311 | + List<Long> longList0 = new ArrayList<Long>(); | ||
| 1312 | + Map<Long, ScheduleRealInfo> temp1 = new HashMap<Long, ScheduleRealInfo>(); | ||
| 1313 | + List<Long> longList1 = new ArrayList<Long>(); | ||
| 1314 | + String companyName = "", subCompanyName = ""; | ||
| 1315 | + for(ScheduleRealInfo schedule : keyMap.get(key)){ | ||
| 1316 | + if(schedule.getFcsjActual() == null || schedule.getFcsjActual().trim().length() == 0){ | ||
| 1317 | + continue; | ||
| 1318 | + } | ||
| 1319 | + if(schedule.getGsName() != null && companyName.length() == 0) | ||
| 1320 | + companyName = schedule.getGsName(); | ||
| 1321 | + if(schedule.getFgsName() != null && subCompanyName.length() == 0) | ||
| 1322 | + subCompanyName = schedule.getFgsName(); | ||
| 1323 | + String[] split = schedule.getFcsj().split(":"); | ||
| 1324 | + long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]); | ||
| 1325 | + schedule.setFcsjT(min); | ||
| 1326 | + if(schedule.getXlDir().equals("0")){ | ||
| 1327 | + temp0.put(min, schedule); | ||
| 1328 | + longList0.add(min); | ||
| 1329 | + } else { | ||
| 1330 | + temp1.put(min, schedule); | ||
| 1331 | + longList1.add(min); | ||
| 1332 | + } | ||
| 1333 | + } | ||
| 1334 | + if(longList0.size() == 0 || longList1.size() == 0){ | ||
| 1335 | + continue; | ||
| 1336 | + } | ||
| 1337 | + Collections.sort(longList0); | ||
| 1338 | + Collections.sort(longList1); | ||
| 1339 | + System.out.println(longList0.size() + "---" + longList1.size()); | ||
| 1340 | + ScheduleRealInfo shouban0 = temp0.get(longList0.get(0)); | ||
| 1341 | + ScheduleRealInfo moban0 = temp0.get(longList0.get(longList0.size() - 1)); | ||
| 1342 | + ScheduleRealInfo shouban1 = temp1.get(longList1.get(0)); | ||
| 1343 | + ScheduleRealInfo moban1 = temp1.get(longList1.get(longList1.size() - 1)); | ||
| 1344 | + tempMap.put("date", date); | ||
| 1345 | + tempMap.put("company", companyName); | ||
| 1346 | + tempMap.put("subCompany", subCompanyName); | ||
| 1347 | + tempMap.put("line", key); | ||
| 1348 | + tempMap.put("qdzFirst0", shouban0.getQdzName()); | ||
| 1349 | + tempMap.put("jhfcFirst0", shouban0.getFcsj()); | ||
| 1350 | + tempMap.put("qdzLast0", moban0.getQdzName()); | ||
| 1351 | + tempMap.put("jhfcLast0", moban0.getFcsj()); | ||
| 1352 | + tempMap.put("qdzFirst1", shouban1.getQdzName()); | ||
| 1353 | + tempMap.put("jhfcFirst1", shouban1.getFcsj()); | ||
| 1354 | + tempMap.put("qdzLast1", moban1.getQdzName()); | ||
| 1355 | + tempMap.put("jhfcLast1", moban1.getFcsj()); | ||
| 1356 | + if(shouban0.getFcsjActual() != null){ | ||
| 1357 | + String[] split = shouban0.getFcsjActual().split(":"); | ||
| 1358 | + long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]); | ||
| 1359 | + long delay = shouban0.getFcsjT() - min; | ||
| 1360 | + tempMap.put("sjfcFirst0", shouban0.getFcsjActual()); | ||
| 1361 | + if(delay > 0) | ||
| 1362 | + tempMap.put("delayFirst0", "+" + delay); | ||
| 1363 | + else | ||
| 1364 | + tempMap.put("delayFirst0", delay); | ||
| 1365 | + } else { | ||
| 1366 | + tempMap.put("sjfcFirst0", "/"); | ||
| 1367 | + tempMap.put("delayFirst0", "/"); | ||
| 1368 | + } | ||
| 1369 | + if(moban0.getFcsjActual() != null){ | ||
| 1370 | + String[] split = moban0.getFcsjActual().split(":"); | ||
| 1371 | + long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]); | ||
| 1372 | + long delay = moban0.getFcsjT() - min; | ||
| 1373 | + tempMap.put("sjfcLast0", moban0.getFcsjActual()); | ||
| 1374 | + if(delay > 0) | ||
| 1375 | + tempMap.put("delayLast0", "+" + delay); | ||
| 1376 | + else | ||
| 1377 | + tempMap.put("delayLast0", delay); | ||
| 1378 | + } else { | ||
| 1379 | + tempMap.put("sjfcLast0", "/"); | ||
| 1380 | + tempMap.put("delayLast0", "/"); | ||
| 1381 | + } | ||
| 1382 | + if(shouban1.getFcsjActual() != null){ | ||
| 1383 | + String[] split = shouban1.getFcsjActual().split(":"); | ||
| 1384 | + long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]); | ||
| 1385 | + long delay = shouban1.getFcsjT() - min; | ||
| 1386 | + tempMap.put("sjfcFirst1", shouban1.getFcsjActual()); | ||
| 1387 | + if(delay > 0) | ||
| 1388 | + tempMap.put("delayFirst1", "+" + delay); | ||
| 1389 | + else | ||
| 1390 | + tempMap.put("delayFirst1", delay); | ||
| 1391 | + } else { | ||
| 1392 | + tempMap.put("sjfcFirst1", "/"); | ||
| 1393 | + tempMap.put("delayFirst1", "/"); | ||
| 1394 | + } | ||
| 1395 | + if(moban1.getFcsjActual() != null){ | ||
| 1396 | + String[] split = moban1.getFcsjActual().split(":"); | ||
| 1397 | + long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]); | ||
| 1398 | + long delay = moban1.getFcsjT() - min; | ||
| 1399 | + tempMap.put("sjfcLast1", moban1.getFcsjActual()); | ||
| 1400 | + if(delay > 0) | ||
| 1401 | + tempMap.put("delayLast1", "+" + delay); | ||
| 1402 | + else | ||
| 1403 | + tempMap.put("delayLast1", delay); | ||
| 1404 | + } else { | ||
| 1405 | + tempMap.put("sjfcLast1", "/"); | ||
| 1406 | + tempMap.put("delayLast1", "/"); | ||
| 1407 | + } | ||
| 1408 | + resList.add(tempMap); | ||
| 1409 | + } | ||
| 1410 | + | ||
| 1411 | + if(type.equals("export")){ | ||
| 1412 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | ||
| 1413 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | ||
| 1414 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | ||
| 1415 | + Map<String,Object> m = new HashMap<String, Object>(); | ||
| 1416 | + ReportUtils ee = new ReportUtils(); | ||
| 1417 | + try { | ||
| 1418 | + listI.add(resList.iterator()); | ||
| 1419 | + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/"; | ||
| 1420 | + ee.excelReplace(listI, new Object[] { m }, path+"mould/firstAndLastBus.xls", | ||
| 1421 | + path+"export/线路首末班" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); | ||
| 1422 | + } catch (Exception e) { | ||
| 1423 | + // TODO: handle exception | ||
| 1424 | + e.printStackTrace(); | ||
| 1425 | + } | ||
| 1426 | + } | ||
| 1427 | + | ||
| 1428 | + return resList; | ||
| 1429 | + } | ||
| 1430 | + | ||
| 1431 | + @Override | ||
| 1020 | public List<Map<String, Object>> commandState(Map<String, Object> map) { | 1432 | public List<Map<String, Object>> commandState(Map<String, Object> map) { |
| 1021 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | 1433 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 1022 | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); | 1434 | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); |