Commit c0c8ca98d9ea07e55ed4f0bf133936134898a164

Authored by 娄高锋
1 parent 48bbb52b

线路首末班准点率汇总与时间区间

src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
@@ -1180,8 +1180,11 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1180,8 +1180,11 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1180 1180
1181 @Override 1181 @Override
1182 public List<Map<String, Object>> firstAndLastBus(Map<String, Object> map) { 1182 public List<Map<String, Object>> firstAndLastBus(Map<String, Object> map) {
  1183 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1184 + NumberFormat nf = NumberFormat.getNumberInstance();
  1185 + nf.setMinimumFractionDigits(2);
  1186 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
1183 List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); 1187 List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
1184 - Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>();  
1185 1188
1186 String company = map.get("company").toString(); 1189 String company = map.get("company").toString();
1187 String subCompany = map.get("subCompany").toString(); 1190 String subCompany = map.get("subCompany").toString();
@@ -1190,151 +1193,173 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1190,151 +1193,173 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1190 String type = map.get("type").toString(); 1193 String type = map.get("type").toString();
1191 1194
1192 if(date.length() == 0) 1195 if(date.length() == 0)
1193 - date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); 1196 + date = sdf.format(new Date());
1194 1197
1195 - List<ScheduleRealInfo> list = this.getSchedule(company, subCompany, line, date); 1198 + try {
  1199 + String sql = "select a.schedule_date_Str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
  1200 + + " b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
  1201 + + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') = '"+date+"'"
  1202 + + " and fcsj_actual is not null and fcsj_actual != '' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
  1203 + if(line.length() != 0)
  1204 + sql += " and xl_bm = '"+line+"'";
  1205 + if(company.length() != 0)
  1206 + sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'";
  1207 +
  1208 + list = jdbcTemplate.query(sql,
  1209 + new RowMapper<ScheduleRealInfo>(){
  1210 + @Override
  1211 + public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
  1212 + ScheduleRealInfo schedule = new ScheduleRealInfo();
  1213 + schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  1214 + schedule.setRealExecDate(rs.getString("real_exec_date"));
  1215 + schedule.setXlName(rs.getString("xl_name"));
  1216 + schedule.setFcsj(rs.getString("fcsj"));
  1217 + schedule.setFcsjActual(rs.getString("fcsj_actual"));
  1218 + schedule.setZdsj(rs.getString("zdsj"));
  1219 + schedule.setZdsjActual(rs.getString("zdsj_actual"));
  1220 + schedule.setQdzName(rs.getString("qdz_name"));
  1221 + schedule.setZdzName(rs.getString("zdz_name"));
  1222 + schedule.setXlDir(rs.getString("xl_dir"));
  1223 + schedule.setStatus(rs.getInt("status"));
  1224 + schedule.setGsName(rs.getString("gs_name"));
  1225 + schedule.setFgsName(rs.getString("fgs_name"));
  1226 +
  1227 + int startOpt = 0;
  1228 + if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){
  1229 + String[] split = rs.getString("start_opt").split(":");
  1230 + startOpt = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);
  1231 + }
  1232 +
  1233 + if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
  1234 + schedule.setFcsjActual(null);
  1235 + }
  1236 + if(schedule.getZdsjActual() != null && schedule.getZdsjActual().trim().length() == 0){
  1237 + schedule.setZdsjActual(null);
  1238 + }
  1239 + if(schedule.getFcsj() != null){
  1240 + String[] split = schedule.getFcsj().split(":");
  1241 + int fcsj = Integer.valueOf(split[0]) * 60 + Integer.valueOf(split[1]);
  1242 + if(fcsj < startOpt)
  1243 + fcsj += 1440;
  1244 + schedule.setFcsjT((long)fcsj);
  1245 + }
  1246 + if(schedule.getFcsjActual() != null){
  1247 + String[] split = schedule.getFcsjActual().split(":");
  1248 + int fcsjA = Integer.valueOf(split[0]) * 60 + Integer.valueOf(split[1]);
  1249 + if(fcsjA < startOpt || !schedule.getRealExecDate().equals(schedule.getScheduleDateStr()))
  1250 + fcsjA += 1440;
  1251 + schedule.setFcsjActualTime((long)fcsjA);
  1252 + }
  1253 +
  1254 + return schedule;
  1255 + }
  1256 + });
  1257 +
  1258 + } catch (Exception e) {
  1259 + // TODO: handle exception
  1260 + e.printStackTrace();
  1261 + }
1196 1262
1197 - for(ScheduleRealInfo schedule : list){  
1198 - if(schedule.getBcType().equals("in") || schedule.getBcType().equals("out") || schedule.getBcType().equals("ldks"))  
1199 - continue;  
1200 - if(schedule.getStatus() == -1){  
1201 - continue;  
1202 - }  
1203 - String key = schedule.getXlName();  
1204 - if(key == null || key.trim().length() == 0)  
1205 - continue;  
1206 - if(!keyMap.containsKey(key))  
1207 - keyMap.put(key, new ArrayList<ScheduleRealInfo>());  
1208 - keyMap.get(key).add(schedule); 1263 + Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>();
  1264 + String companyName = "", subCompanyName = "";
  1265 +
  1266 + for(ScheduleRealInfo s : list){
  1267 + String xlName = s.getXlName();
  1268 + if(!keyMap.containsKey(xlName))
  1269 + keyMap.put(xlName, new ArrayList<ScheduleRealInfo>());
  1270 + keyMap.get(xlName).add(s);
  1271 + if(companyName.length()==0&&s.getGsName()!=null&&s.getGsName().trim().length()!=0)
  1272 + companyName = s.getGsName();
  1273 + if(subCompanyName.length()==0&&s.getFgsName()!=null&&s.getFgsName().trim().length()!=0)
  1274 + subCompanyName = s.getFgsName();
1209 } 1275 }
1210 - for(String key : keyMap.keySet()){ 1276 +
  1277 + for(String xlName : keyMap.keySet()){
1211 Map<String, Object> tempMap = new HashMap<String, Object>(); 1278 Map<String, Object> tempMap = new HashMap<String, Object>();
1212 - Map<Long, ScheduleRealInfo> temp0 = new HashMap<Long, ScheduleRealInfo>();  
1213 - List<Long> longList0 = new ArrayList<Long>();  
1214 - Map<Long, ScheduleRealInfo> temp1 = new HashMap<Long, ScheduleRealInfo>();  
1215 - List<Long> longList1 = new ArrayList<Long>();  
1216 - String companyName = "", subCompanyName = "";  
1217 - for(ScheduleRealInfo schedule : keyMap.get(key)){  
1218 - if(schedule.getFcsjActual() == null || schedule.getFcsjActual().trim().length() == 0){  
1219 - continue;  
1220 - }  
1221 - if(schedule.getGsName() != null && companyName.length() == 0)  
1222 - companyName = schedule.getGsName();  
1223 - if(schedule.getFgsName() != null && subCompanyName.length() == 0)  
1224 - subCompanyName = schedule.getFgsName();  
1225 - String[] split = schedule.getFcsj().split(":");  
1226 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1227 - schedule.setFcsjT(min);  
1228 - if(schedule.getXlDir().equals("0")){  
1229 - temp0.put(min, schedule);  
1230 - longList0.add(min);  
1231 - } else {  
1232 - temp1.put(min, schedule);  
1233 - longList1.add(min); 1279 + tempMap.put("date", date.substring(5));
  1280 + tempMap.put("line", xlName);
  1281 + List<Long> up1 = new ArrayList<Long>();
  1282 + List<Long> up2 = new ArrayList<Long>();;
  1283 + List<Long> dn1 = new ArrayList<Long>();
  1284 + List<Long> dn2 = new ArrayList<Long>();
  1285 + Map<Long, ScheduleRealInfo> up1Map = new HashMap<Long, ScheduleRealInfo>();
  1286 + Map<Long, ScheduleRealInfo> up2Map = new HashMap<Long, ScheduleRealInfo>();
  1287 + Map<Long, ScheduleRealInfo> dn1Map = new HashMap<Long, ScheduleRealInfo>();
  1288 + Map<Long, ScheduleRealInfo> dn2Map = new HashMap<Long, ScheduleRealInfo>();
  1289 + for(ScheduleRealInfo s : keyMap.get(xlName)){
  1290 + if(s.getXlDir().equals("0")){
  1291 + up1.add(s.getFcsjT());
  1292 + up2.add(s.getFcsjActualTime());
  1293 + up1Map.put(s.getFcsjT(), s);
  1294 + up2Map.put(s.getFcsjActualTime(), s);
  1295 + } else if(s.getXlDir().equals("1")){
  1296 + dn1.add(s.getFcsjT());
  1297 + dn2.add(s.getFcsjActualTime());
  1298 + dn1Map.put(s.getFcsjT(), s);
  1299 + dn2Map.put(s.getFcsjActualTime(), s);
1234 } 1300 }
1235 } 1301 }
1236 -  
1237 - if(longList0.size() == 0 && longList1.size() == 0){  
1238 - continue;  
1239 - }  
1240 -  
1241 - if(longList0.size() != 0){  
1242 - Collections.sort(longList0);  
1243 - ScheduleRealInfo shouban0 = temp0.get(longList0.get(0));  
1244 - ScheduleRealInfo moban0 = temp0.get(longList0.get(longList0.size() - 1));  
1245 - tempMap.put("qdzFirst0", shouban0.getQdzName());  
1246 - tempMap.put("jhfcFirst0", shouban0.getFcsj());  
1247 - tempMap.put("qdzLast0", moban0.getQdzName());  
1248 - tempMap.put("jhfcLast0", moban0.getFcsj());  
1249 - if(shouban0.getFcsjActual() != null){  
1250 - String[] split = shouban0.getFcsjActual().split(":");  
1251 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1252 - long delay = shouban0.getFcsjT() - min;  
1253 - tempMap.put("sjfcFirst0", shouban0.getFcsjActual());  
1254 - if(delay > 0)  
1255 - tempMap.put("delayFirst0", "+" + delay);  
1256 - else  
1257 - tempMap.put("delayFirst0", delay);  
1258 - } else {  
1259 - tempMap.put("sjfcFirst0", "/");  
1260 - tempMap.put("delayFirst0", "/");  
1261 - }  
1262 - if(moban0.getFcsjActual() != null){  
1263 - String[] split = moban0.getFcsjActual().split(":");  
1264 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1265 - long delay = moban0.getFcsjT() - min;  
1266 - tempMap.put("sjfcLast0", moban0.getFcsjActual());  
1267 - if(delay > 0)  
1268 - tempMap.put("delayLast0", "+" + delay);  
1269 - else  
1270 - tempMap.put("delayLast0", delay);  
1271 - } else {  
1272 - tempMap.put("sjfcLast0", "/");  
1273 - tempMap.put("delayLast0", "/");  
1274 - }  
1275 - }else{ 1302 + if(up1.size() > 0 && up2.size() > 0){
  1303 + Collections.sort(up1);
  1304 + Collections.sort(up2);
  1305 + ScheduleRealInfo s1 = up1Map.get(up1.get(0));
  1306 + ScheduleRealInfo s2 = up2Map.get(up2.get(0));
  1307 + ScheduleRealInfo s3 = up1Map.get(up1.get(up1.size()-1));
  1308 + ScheduleRealInfo s4 = up2Map.get(up2.get(up2.size()-1));
  1309 + long delayFirst0 = up1.get(0) - up2.get(0);
  1310 + long delayLast0 = up1.get(up1.size()-1) - up2.get(up2.size()-1);
  1311 + tempMap.put("qdzFirst0", s1.getQdzName());
  1312 + tempMap.put("jhfcFirst0", s1.getFcsj());
  1313 + tempMap.put("sjfcFirst0", s2.getFcsjActual());
  1314 + tempMap.put("delayFirst0", delayFirst0>0?"+"+delayFirst0:delayFirst0);
  1315 + tempMap.put("qdzLast0", s3.getQdzName());
  1316 + tempMap.put("jhfcLast0", s3.getFcsj());
  1317 + tempMap.put("sjfcLast0", s4.getFcsjActual());
  1318 + tempMap.put("delayLast0", delayLast0>0?"+"+delayLast0:delayLast0);
  1319 + } else {
1276 tempMap.put("qdzFirst0", "--"); 1320 tempMap.put("qdzFirst0", "--");
1277 tempMap.put("jhfcFirst0", "/"); 1321 tempMap.put("jhfcFirst0", "/");
1278 - tempMap.put("qdzLast0", "--");  
1279 - tempMap.put("jhfcLast0", "/");  
1280 tempMap.put("sjfcFirst0", "/"); 1322 tempMap.put("sjfcFirst0", "/");
1281 tempMap.put("delayFirst0", "/"); 1323 tempMap.put("delayFirst0", "/");
  1324 + tempMap.put("qdzLast0", "--");
  1325 + tempMap.put("jhfcLast0", "/");
1282 tempMap.put("sjfcLast0", "/"); 1326 tempMap.put("sjfcLast0", "/");
1283 tempMap.put("delayLast0", "/"); 1327 tempMap.put("delayLast0", "/");
1284 } 1328 }
1285 -  
1286 - if(longList1.size() != 0){  
1287 - Collections.sort(longList1);  
1288 - ScheduleRealInfo shouban1 = temp1.get(longList1.get(0));  
1289 - ScheduleRealInfo moban1 = temp1.get(longList1.get(longList1.size() - 1));  
1290 - tempMap.put("qdzFirst1", shouban1.getQdzName());  
1291 - tempMap.put("jhfcFirst1", shouban1.getFcsj());  
1292 - tempMap.put("qdzLast1", moban1.getQdzName());  
1293 - tempMap.put("jhfcLast1", moban1.getFcsj());  
1294 - if(shouban1.getFcsjActual() != null){  
1295 - String[] split = shouban1.getFcsjActual().split(":");  
1296 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1297 - long delay = shouban1.getFcsjT() - min;  
1298 - tempMap.put("sjfcFirst1", shouban1.getFcsjActual());  
1299 - if(delay > 0)  
1300 - tempMap.put("delayFirst1", "+" + delay);  
1301 - else  
1302 - tempMap.put("delayFirst1", delay);  
1303 - } else {  
1304 - tempMap.put("sjfcFirst1", "/");  
1305 - tempMap.put("delayFirst1", "/");  
1306 - }  
1307 - if(moban1.getFcsjActual() != null){  
1308 - String[] split = moban1.getFcsjActual().split(":");  
1309 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1310 - long delay = moban1.getFcsjT() - min;  
1311 - tempMap.put("sjfcLast1", moban1.getFcsjActual());  
1312 - if(delay > 0)  
1313 - tempMap.put("delayLast1", "+" + delay);  
1314 - else  
1315 - tempMap.put("delayLast1", delay);  
1316 - } else {  
1317 - tempMap.put("sjfcLast1", "/");  
1318 - tempMap.put("delayLast1", "/");  
1319 - }  
1320 - }else{ 1329 + if(dn1.size() > 0 && dn2.size() > 0){
  1330 + Collections.sort(dn1);
  1331 + Collections.sort(dn2);
  1332 + ScheduleRealInfo s1 = dn1Map.get(dn1.get(0));
  1333 + ScheduleRealInfo s2 = dn2Map.get(dn2.get(0));
  1334 + ScheduleRealInfo s3 = dn1Map.get(dn1.get(dn1.size()-1));
  1335 + ScheduleRealInfo s4 = dn2Map.get(dn2.get(dn2.size()-1));
  1336 + long delayFirst1 = dn1.get(0) - dn2.get(0);
  1337 + long delayLast1 = dn1.get(dn1.size()-1) - dn2.get(dn2.size()-1);
  1338 + tempMap.put("qdzFirst1", s1.getQdzName());
  1339 + tempMap.put("jhfcFirst1", s1.getFcsj());
  1340 + tempMap.put("sjfcFirst1", s2.getFcsjActual());
  1341 + tempMap.put("delayFirst1", delayFirst1>0?"+"+delayFirst1:delayFirst1);
  1342 + tempMap.put("qdzLast1", s3.getQdzName());
  1343 + tempMap.put("jhfcLast1", s3.getFcsj());
  1344 + tempMap.put("sjfcLast1", s4.getFcsjActual());
  1345 + tempMap.put("delayLast1", delayLast1>0?"+"+delayLast1:delayLast1);
  1346 + } else {
1321 tempMap.put("qdzFirst1", "--"); 1347 tempMap.put("qdzFirst1", "--");
1322 tempMap.put("jhfcFirst1", "/"); 1348 tempMap.put("jhfcFirst1", "/");
1323 - tempMap.put("qdzLast1", "--");  
1324 - tempMap.put("jhfcLast1", "/");  
1325 tempMap.put("sjfcFirst1", "/"); 1349 tempMap.put("sjfcFirst1", "/");
1326 tempMap.put("delayFirst1", "/"); 1350 tempMap.put("delayFirst1", "/");
  1351 + tempMap.put("qdzLast1", "--");
  1352 + tempMap.put("jhfcLast1", "/");
1327 tempMap.put("sjfcLast1", "/"); 1353 tempMap.put("sjfcLast1", "/");
1328 tempMap.put("delayLast1", "/"); 1354 tempMap.put("delayLast1", "/");
1329 } 1355 }
1330 -  
1331 - tempMap.put("date", date);  
1332 tempMap.put("company", companyName); 1356 tempMap.put("company", companyName);
1333 tempMap.put("subCompany", subCompanyName); 1357 tempMap.put("subCompany", subCompanyName);
1334 - tempMap.put("line", key); 1358 + tempMap.put("date", date);
  1359 + tempMap.put("line", xlName);
1335 resList.add(tempMap); 1360 resList.add(tempMap);
1336 } 1361 }
1337 - 1362 +
1338 if(type.equals("export")){ 1363 if(type.equals("export")){
1339 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), 1364 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
1340 sdfSimple = new SimpleDateFormat("yyyyMMdd"); 1365 sdfSimple = new SimpleDateFormat("yyyyMMdd");
@@ -1357,164 +1382,248 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1357,164 +1382,248 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1357 1382
1358 @Override 1383 @Override
1359 public List<Map<String, Object>> firstAndLastBus_sum(Map<String, Object> map) { 1384 public List<Map<String, Object>> firstAndLastBus_sum(Map<String, Object> map) {
  1385 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
1360 NumberFormat nf = NumberFormat.getNumberInstance(); 1386 NumberFormat nf = NumberFormat.getNumberInstance();
1361 nf.setMinimumFractionDigits(2); 1387 nf.setMinimumFractionDigits(2);
  1388 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
1362 List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); 1389 List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
1363 - Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>();  
1364 1390
1365 String company = map.get("company").toString(); 1391 String company = map.get("company").toString();
1366 String subCompany = map.get("subCompany").toString(); 1392 String subCompany = map.get("subCompany").toString();
1367 String line = map.get("line").toString(); 1393 String line = map.get("line").toString();
1368 - String date = map.get("date").toString(); 1394 +// String date = map.get("date").toString();
  1395 + String startDate = map.get("startDate").toString();
  1396 + String endDate = map.get("endDate").toString();
1369 String type = map.get("type").toString(); 1397 String type = map.get("type").toString();
1370 1398
1371 - if(date.length() == 0)  
1372 - date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());  
1373 -  
1374 - List<ScheduleRealInfo> list = this.getSchedule(company, subCompany, line, date); 1399 + if(startDate.length() == 0)
  1400 + startDate = sdf.format(new Date());
  1401 + if(endDate.length() == 0)
  1402 + endDate = sdf.format(new Date());
1375 1403
1376 - for(ScheduleRealInfo schedule : list){  
1377 - if(schedule.getBcType().equals("in") || schedule.getBcType().equals("out") || schedule.getBcType().equals("ldks"))  
1378 - continue;  
1379 - if(schedule.getStatus() == -1){  
1380 - continue;  
1381 - }  
1382 - String key = schedule.getXlName();  
1383 - if(key == null || key.trim().length() == 0)  
1384 - continue;  
1385 - if(!keyMap.containsKey(key))  
1386 - keyMap.put(key, new ArrayList<ScheduleRealInfo>());  
1387 - keyMap.get(key).add(schedule); 1404 + String dates = "";
  1405 + if(startDate.equals(endDate)){
  1406 + String[] split = startDate.split("-");
  1407 + dates = split[0]+"年"+split[1]+"月"+split[2]+"日";
  1408 + } else {
  1409 + String[] split1 = startDate.split("-");
  1410 + String[] split2 = endDate.split("-");
  1411 + dates = split1[0]+"年"+split1[1]+"月"+split1[2]+"日--"
  1412 + +split2[0]+"年"+split2[1]+"月"+split2[2]+"日";
1388 } 1413 }
1389 - for(String key : keyMap.keySet()){  
1390 - Map<String, Object> tempMap = new HashMap<String, Object>();  
1391 - Map<String, Object> m = new HashMap<String, Object>();  
1392 - Map<Long, ScheduleRealInfo> temp0 = new HashMap<Long, ScheduleRealInfo>();  
1393 - List<Long> longList0 = new ArrayList<Long>();  
1394 - Map<Long, ScheduleRealInfo> temp1 = new HashMap<Long, ScheduleRealInfo>();  
1395 - List<Long> longList1 = new ArrayList<Long>();  
1396 - String companyName = "", subCompanyName = "";  
1397 - for(ScheduleRealInfo schedule : keyMap.get(key)){  
1398 - if(schedule.getFcsjActual() == null || schedule.getFcsjActual().trim().length() == 0){  
1399 - continue;  
1400 - }  
1401 - if(schedule.getGsName() != null && companyName.length() == 0)  
1402 - companyName = schedule.getGsName();  
1403 - if(schedule.getFgsName() != null && subCompanyName.length() == 0)  
1404 - subCompanyName = schedule.getFgsName();  
1405 - String[] split = schedule.getFcsj().split(":");  
1406 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1407 - schedule.setFcsjT(min);  
1408 - if(schedule.getXlDir().equals("0")){  
1409 - temp0.put(min, schedule);  
1410 - longList0.add(min);  
1411 - } else {  
1412 - temp1.put(min, schedule);  
1413 - longList1.add(min); 1414 +
  1415 + try {
  1416 + String sql = "select a.schedule_date_Str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
  1417 + + " b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
  1418 + + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"
  1419 + + " and fcsj_actual is not null and fcsj_actual != '' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
  1420 + if(line.length() != 0)
  1421 + sql += " and xl_bm = '"+line+"'";
  1422 + if(company.length() != 0)
  1423 + sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'";
  1424 +
  1425 + list = jdbcTemplate.query(sql,
  1426 + new RowMapper<ScheduleRealInfo>(){
  1427 + @Override
  1428 + public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
  1429 + ScheduleRealInfo schedule = new ScheduleRealInfo();
  1430 + schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  1431 + schedule.setRealExecDate(rs.getString("real_exec_date"));
  1432 + schedule.setXlName(rs.getString("xl_name"));
  1433 + schedule.setFcsj(rs.getString("fcsj"));
  1434 + schedule.setFcsjActual(rs.getString("fcsj_actual"));
  1435 + schedule.setZdsj(rs.getString("zdsj"));
  1436 + schedule.setZdsjActual(rs.getString("zdsj_actual"));
  1437 + schedule.setQdzName(rs.getString("qdz_name"));
  1438 + schedule.setZdzName(rs.getString("zdz_name"));
  1439 + schedule.setXlDir(rs.getString("xl_dir"));
  1440 + schedule.setStatus(rs.getInt("status"));
  1441 + schedule.setGsName(rs.getString("gs_name"));
  1442 + schedule.setFgsName(rs.getString("fgs_name"));
  1443 +
  1444 + int startOpt = 0;
  1445 + if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){
  1446 + String[] split = rs.getString("start_opt").split(":");
  1447 + startOpt = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);
  1448 + }
  1449 +
  1450 + if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
  1451 + schedule.setFcsjActual(null);
  1452 + }
  1453 + if(schedule.getZdsjActual() != null && schedule.getZdsjActual().trim().length() == 0){
  1454 + schedule.setZdsjActual(null);
  1455 + }
  1456 + if(schedule.getFcsj() != null){
  1457 + String[] split = schedule.getFcsj().split(":");
  1458 + int fcsj = Integer.valueOf(split[0]) * 60 + Integer.valueOf(split[1]);
  1459 + if(fcsj < startOpt)
  1460 + fcsj += 1440;
  1461 + schedule.setFcsjT((long)fcsj);
  1462 + }
  1463 + if(schedule.getFcsjActual() != null){
  1464 + String[] split = schedule.getFcsjActual().split(":");
  1465 + int fcsjA = Integer.valueOf(split[0]) * 60 + Integer.valueOf(split[1]);
  1466 + if(fcsjA < startOpt || !schedule.getRealExecDate().equals(schedule.getScheduleDateStr()))
  1467 + fcsjA += 1440;
  1468 + schedule.setFcsjActualTime((long)fcsjA);
  1469 + }
  1470 +
  1471 + return schedule;
1414 } 1472 }
1415 - } 1473 + });
1416 1474
1417 - if(longList0.size() == 0 && longList1.size() == 0){  
1418 - continue; 1475 + } catch (Exception e) {
  1476 + // TODO: handle exception
  1477 + e.printStackTrace();
  1478 + }
  1479 +
  1480 + Map<String, Map<String, List<ScheduleRealInfo>>> keyMap = new HashMap<String, Map<String,List<ScheduleRealInfo>>>();
  1481 + String companyName = "", subCompanyName = "";
  1482 +
  1483 + for(ScheduleRealInfo s : list){
  1484 + String xlName = s.getXlName();
  1485 + String date = s.getScheduleDateStr();
  1486 + if(!keyMap.containsKey(xlName))
  1487 + keyMap.put(xlName, new HashMap<String, List<ScheduleRealInfo>>());
  1488 + if(!keyMap.get(xlName).containsKey(date))
  1489 + keyMap.get(xlName).put(date, new ArrayList<ScheduleRealInfo>());
  1490 + keyMap.get(xlName).get(date).add(s);
  1491 + if(companyName.length()==0&&s.getGsName()!=null&&s.getGsName().trim().length()!=0)
  1492 + companyName = s.getGsName();
  1493 + if(subCompanyName.length()==0&&s.getFgsName()!=null&&s.getFgsName().trim().length()!=0)
  1494 + subCompanyName = s.getFgsName();
  1495 + }
  1496 +
  1497 + for(String xlName : keyMap.keySet()){
  1498 + List<Map<String, Object>> tempList = new ArrayList<Map<String,Object>>();
  1499 + Map<String, Object> tempMap = new HashMap<String, Object>();
  1500 + Map<Long, String> dateMap = new HashMap<Long, String>();
  1501 + List<Long> Longs = new ArrayList<Long>();
  1502 + int jhbc = 0, sjbc = 0;
  1503 + for(String date : keyMap.get(xlName).keySet()){
  1504 + String[] split = date.split("-");
  1505 + long l = Long.valueOf(split[0])*10000 + Long.valueOf(split[1])*100 + Long.valueOf(split[2]);
  1506 + dateMap.put(l, date);
  1507 + Longs.add(l);
1419 } 1508 }
1420 - int jhbc = 0;  
1421 - int sjbc = 0;  
1422 -  
1423 - if(longList0.size() != 0){  
1424 - Collections.sort(longList0);  
1425 - ScheduleRealInfo shouban0 = temp0.get(longList0.get(0));  
1426 - ScheduleRealInfo moban0 = temp0.get(longList0.get(longList0.size() - 1));  
1427 - if(shouban0.getFcsjActual() != null){  
1428 - jhbc++;  
1429 - String[] split = shouban0.getFcsjActual().split(":");  
1430 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1431 - long delay = shouban0.getFcsjT() - min;  
1432 - if(delay >= -3 && delay <= 1){  
1433 - sjbc++; 1509 + Collections.sort(Longs);
  1510 + for(long l : Longs){
  1511 + String date = dateMap.get(l);
  1512 + Map<String, Object> temp = new HashMap<String, Object>();
  1513 + temp.put("date", date.substring(5));
  1514 + temp.put("line", xlName);
  1515 + List<Long> up1 = new ArrayList<Long>();
  1516 + List<Long> up2 = new ArrayList<Long>();;
  1517 + List<Long> dn1 = new ArrayList<Long>();
  1518 + List<Long> dn2 = new ArrayList<Long>();
  1519 + Map<Long, ScheduleRealInfo> up1Map = new HashMap<Long, ScheduleRealInfo>();
  1520 + Map<Long, ScheduleRealInfo> up2Map = new HashMap<Long, ScheduleRealInfo>();
  1521 + Map<Long, ScheduleRealInfo> dn1Map = new HashMap<Long, ScheduleRealInfo>();
  1522 + Map<Long, ScheduleRealInfo> dn2Map = new HashMap<Long, ScheduleRealInfo>();
  1523 + for(ScheduleRealInfo s : keyMap.get(xlName).get(date)){
  1524 + if(s.getXlDir().equals("0")){
  1525 + up1.add(s.getFcsjT());
  1526 + up2.add(s.getFcsjActualTime());
  1527 + up1Map.put(s.getFcsjT(), s);
  1528 + up2Map.put(s.getFcsjActualTime(), s);
  1529 + } else if(s.getXlDir().equals("1")){
  1530 + dn1.add(s.getFcsjT());
  1531 + dn2.add(s.getFcsjActualTime());
  1532 + dn1Map.put(s.getFcsjT(), s);
  1533 + dn2Map.put(s.getFcsjActualTime(), s);
1434 } 1534 }
1435 - m.put("qdzFirst0", shouban0.getQdzName());  
1436 - m.put("jhfcFirst0", shouban0.getFcsj());  
1437 - m.put("sjfcFirst0", shouban0.getFcsjActual());  
1438 - m.put("delayFirst0", delay>0?"+"+delay:delay);  
1439 } 1535 }
1440 -  
1441 - if(moban0.getFcsjActual() != null){  
1442 - jhbc++;  
1443 - String[] split = moban0.getFcsjActual().split(":");  
1444 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1445 - long delay = moban0.getFcsjT() - min;  
1446 - if(delay >= -3 && delay <= 1){ 1536 + if(up1.size() > 0 && up2.size() > 0){
  1537 + Collections.sort(up1);
  1538 + Collections.sort(up2);
  1539 + ScheduleRealInfo s1 = up1Map.get(up1.get(0));
  1540 + ScheduleRealInfo s2 = up2Map.get(up2.get(0));
  1541 + ScheduleRealInfo s3 = up1Map.get(up1.get(up1.size()-1));
  1542 + ScheduleRealInfo s4 = up2Map.get(up2.get(up2.size()-1));
  1543 + long delayFirst0 = up1.get(0) - up2.get(0);
  1544 + long delayLast0 = up1.get(up1.size()-1) - up2.get(up2.size()-1);
  1545 + temp.put("qdzFirst0", s1.getQdzName());
  1546 + temp.put("jhfcFirst0", s1.getFcsj());
  1547 + temp.put("sjfcFirst0", s2.getFcsjActual());
  1548 + temp.put("delayFirst0", delayFirst0>0?"+"+delayFirst0:delayFirst0);
  1549 + temp.put("qdzLast0", s3.getQdzName());
  1550 + temp.put("jhfcLast0", s3.getFcsj());
  1551 + temp.put("sjfcLast0", s4.getFcsjActual());
  1552 + temp.put("delayLast0", delayLast0>0?"+"+delayLast0:delayLast0);
  1553 + jhbc += 2;
  1554 + if(delayFirst0 <= 1l && delayFirst0 >= -3l)
1447 sjbc++; 1555 sjbc++;
1448 - }  
1449 - m.put("qdzLast0", moban0.getQdzName());  
1450 - m.put("jhfcLast0", moban0.getFcsj());  
1451 - m.put("sjfcLast0", moban0.getFcsjActual());  
1452 - m.put("delayLast0", delay>0?"+"+delay:delay);  
1453 - }  
1454 - } else {  
1455 - m.put("qdzFirst0", "--");  
1456 - m.put("jhfcFirst0", "/");  
1457 - m.put("sjfcFirst0", "/");  
1458 - m.put("delayFirst0", "/");  
1459 - m.put("qdzLast0", "--");  
1460 - m.put("jhfcLast0", "/");  
1461 - m.put("sjfcLast0", "/");  
1462 - m.put("delayLast0", "/");  
1463 - }  
1464 -  
1465 - if(longList1.size() != 0){  
1466 - Collections.sort(longList1);  
1467 - ScheduleRealInfo shouban1 = temp1.get(longList1.get(0));  
1468 - ScheduleRealInfo moban1 = temp1.get(longList1.get(longList1.size() - 1));  
1469 - if(shouban1.getFcsjActual() != null){  
1470 - jhbc++;  
1471 - String[] split = shouban1.getFcsjActual().split(":");  
1472 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1473 - long delay = shouban1.getFcsjT() - min;  
1474 - if(delay >= -3 && delay <= 1){ 1556 + if(delayLast0 <= 1l && delayLast0 >= -3l)
1475 sjbc++; 1557 sjbc++;
1476 - }  
1477 - m.put("qdzFirst1", shouban1.getQdzName());  
1478 - m.put("jhfcFirst1", shouban1.getFcsj());  
1479 - m.put("sjfcFirst1", shouban1.getFcsjActual());  
1480 - m.put("delayFirst1", delay>0?"+"+delay:delay); 1558 + } else {
  1559 + temp.put("qdzFirst0", "--");
  1560 + temp.put("jhfcFirst0", "/");
  1561 + temp.put("sjfcFirst0", "/");
  1562 + temp.put("delayFirst0", "/");
  1563 + temp.put("qdzLast0", "--");
  1564 + temp.put("jhfcLast0", "/");
  1565 + temp.put("sjfcLast0", "/");
  1566 + temp.put("delayLast0", "/");
1481 } 1567 }
1482 -  
1483 - if(moban1.getFcsjActual() != null){  
1484 - jhbc++;  
1485 - String[] split = moban1.getFcsjActual().split(":");  
1486 - long min = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);  
1487 - long delay = moban1.getFcsjT() - min;  
1488 - if(delay >= -3 && delay <= 1){ 1568 + if(dn1.size() > 0 && dn2.size() > 0){
  1569 + Collections.sort(dn1);
  1570 + Collections.sort(dn2);
  1571 + ScheduleRealInfo s1 = dn1Map.get(dn1.get(0));
  1572 + ScheduleRealInfo s2 = dn2Map.get(dn2.get(0));
  1573 + ScheduleRealInfo s3 = dn1Map.get(dn1.get(dn1.size()-1));
  1574 + ScheduleRealInfo s4 = dn2Map.get(dn2.get(dn2.size()-1));
  1575 + long delayFirst1 = dn1.get(0) - dn2.get(0);
  1576 + long delayLast1 = dn1.get(dn1.size()-1) - dn2.get(dn2.size()-1);
  1577 + temp.put("qdzFirst1", s1.getQdzName());
  1578 + temp.put("jhfcFirst1", s1.getFcsj());
  1579 + temp.put("sjfcFirst1", s2.getFcsjActual());
  1580 + temp.put("delayFirst1", delayFirst1>0?"+"+delayFirst1:delayFirst1);
  1581 + temp.put("qdzLast1", s3.getQdzName());
  1582 + temp.put("jhfcLast1", s3.getFcsj());
  1583 + temp.put("sjfcLast1", s4.getFcsjActual());
  1584 + temp.put("delayLast1", delayLast1>0?"+"+delayLast1:delayLast1);
  1585 + jhbc += 2;
  1586 + if(delayFirst1 <= 1l && delayFirst1 >= -3l)
1489 sjbc++; 1587 sjbc++;
1490 - }  
1491 - m.put("qdzLast1", moban1.getQdzName());  
1492 - m.put("jhfcLast1", moban1.getFcsj());  
1493 - m.put("sjfcLast1", moban1.getFcsjActual());  
1494 - m.put("delayLast1", delay>0?"+"+delay:delay); 1588 + if(delayLast1 <= 1l && delayLast1 >= -3l)
  1589 + sjbc++;
  1590 + } else {
  1591 + temp.put("qdzFirst1", "--");
  1592 + temp.put("jhfcFirst1", "/");
  1593 + temp.put("sjfcFirst1", "/");
  1594 + temp.put("delayFirst1", "/");
  1595 + temp.put("qdzLast1", "--");
  1596 + temp.put("jhfcLast1", "/");
  1597 + temp.put("sjfcLast1", "/");
  1598 + temp.put("delayLast1", "/");
1495 } 1599 }
1496 - } else {  
1497 - m.put("qdzFirst1", "--");  
1498 - m.put("jhfcFirst1", "/");  
1499 - m.put("sjfcFirst1", "/");  
1500 - m.put("delayFirst1", "/");  
1501 - m.put("qdzLast1", "--");  
1502 - m.put("jhfcLast1", "/");  
1503 - m.put("sjfcLast1", "/");  
1504 - m.put("delayLast1", "/"); 1600 + tempList.add(temp);
1505 } 1601 }
1506 -  
1507 - m.put("line", key);  
1508 - tempMap.put("map", m); 1602 + tempMap.put("map", tempList);
  1603 + tempMap.put("company", companyName);
  1604 + tempMap.put("subCompany", subCompanyName);
  1605 + tempMap.put("date", dates);
  1606 + tempMap.put("line", xlName);
1509 tempMap.put("jhbc", jhbc); 1607 tempMap.put("jhbc", jhbc);
1510 tempMap.put("sjbc", sjbc); 1608 tempMap.put("sjbc", sjbc);
1511 tempMap.put("zdl", nf.format((float) sjbc / jhbc *100) + "%"); 1609 tempMap.put("zdl", nf.format((float) sjbc / jhbc *100) + "%");
1512 - tempMap.put("date", date);  
1513 - tempMap.put("company", companyName);  
1514 - tempMap.put("subCompany", subCompanyName);  
1515 - tempMap.put("line", key);  
1516 resList.add(tempMap); 1610 resList.add(tempMap);
1517 } 1611 }
  1612 +
  1613 + Map<String, Object> tempMap = new HashMap<String, Object>();
  1614 + if(resList.size() > 0){
  1615 + tempMap.put("date", "合计汇总");
  1616 + int jhbc = 0, sjbc = 0;
  1617 + for(Map<String, Object> m : resList){
  1618 + jhbc += Integer.valueOf(m.get("jhbc").toString());
  1619 + sjbc += Integer.valueOf(m.get("sjbc").toString());
  1620 + }
  1621 + tempMap.put("jhbc", jhbc);
  1622 + tempMap.put("sjbc", sjbc);
  1623 + tempMap.put("zdl", nf.format((float) sjbc / jhbc *100) + "%");
  1624 + if(!type.equals("export"))
  1625 + resList.add(tempMap);
  1626 + }
1518 1627
1519 if(type.equals("export")){ 1628 if(type.equals("export")){
1520 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), 1629 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
@@ -1525,8 +1634,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1525,8 +1634,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1525 try { 1634 try {
1526 listI.add(resList.iterator()); 1635 listI.add(resList.iterator());
1527 String path = this.getClass().getResource("/").getPath()+"static/pages/forms/"; 1636 String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
1528 - ee.excelReplace(listI, new Object[] { m }, path+"mould/firstAndLastBus_sum.xls",  
1529 - path+"export/线路首末班准点率" + sdfSimple.format(sdfMonth.parse(date)) + ".xls"); 1637 + ee.excelReplace(listI, new Object[] { tempMap }, path+"mould/firstAndLastBus_sum.xls",
  1638 + path+"export/线路首末班准点率" + sdfSimple.format(sdfMonth.parse(startDate)) +
  1639 + (startDate.equals(endDate)?"":"-"+sdfSimple.format(sdfMonth.parse(endDate))) + ".xls");
1530 } catch (Exception e) { 1640 } catch (Exception e) {
1531 // TODO: handle exception 1641 // TODO: handle exception
1532 e.printStackTrace(); 1642 e.printStackTrace();
src/main/resources/static/pages/forms/mould/firstAndLastBus_sum.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/firstAndLastBus.html
@@ -7,7 +7,8 @@ @@ -7,7 +7,8 @@
7 .table-bordered > tbody > tr > td, 7 .table-bordered > tbody > tr > td,
8 .table-bordered > tfoot > tr > th, 8 .table-bordered > tfoot > tr > th,
9 .table-bordered > tfoot > tr > td { 9 .table-bordered > tfoot > tr > td {
10 - border: 1px solid; } 10 + border: 1px solid;
  11 + text-align: center; }
11 .table-bordered > thead > tr > th, 12 .table-bordered > thead > tr > th,
12 .table-bordered > thead > tr > td { 13 .table-bordered > thead > tr > td {
13 border-bottom-width: 2px; } 14 border-bottom-width: 2px; }
@@ -250,7 +251,7 @@ @@ -250,7 +251,7 @@
250 <td>{{obj.company}}</td> 251 <td>{{obj.company}}</td>
251 <td>{{obj.subCompany}}</td> 252 <td>{{obj.subCompany}}</td>
252 <td>{{obj.line}}</td> 253 <td>{{obj.line}}</td>
253 - {{if obj.delayFirst0 != '/' && obj.delayFirst0 != '0'}} 254 + {{if obj.delayFirst0 != '/' && (obj.delayFirst0 > 1 || obj.delayFirst0 < -2)}}
254 <td style="background-color: #FF9999">{{obj.qdzFirst0}}</td> 255 <td style="background-color: #FF9999">{{obj.qdzFirst0}}</td>
255 <td style="background-color: #FF9999">{{obj.jhfcFirst0}}</td> 256 <td style="background-color: #FF9999">{{obj.jhfcFirst0}}</td>
256 <td style="background-color: #FF9999">{{obj.sjfcFirst0}}</td> 257 <td style="background-color: #FF9999">{{obj.sjfcFirst0}}</td>
@@ -261,7 +262,7 @@ @@ -261,7 +262,7 @@
261 <td>{{obj.sjfcFirst0}}</td> 262 <td>{{obj.sjfcFirst0}}</td>
262 <td>{{obj.delayFirst0}}</td> 263 <td>{{obj.delayFirst0}}</td>
263 {{/if}} 264 {{/if}}
264 - {{if obj.delayLast0 != '/' && obj.delayLast0 != '0'}} 265 + {{if obj.delayLast0 != '/' && (obj.delayLast0 > 1 || obj.delayLast0 < -2)}}
265 <td style="background-color: #FF9999">{{obj.qdzLast0}}</td> 266 <td style="background-color: #FF9999">{{obj.qdzLast0}}</td>
266 <td style="background-color: #FF9999">{{obj.jhfcLast0}}</td> 267 <td style="background-color: #FF9999">{{obj.jhfcLast0}}</td>
267 <td style="background-color: #FF9999">{{obj.sjfcLast0}}</td> 268 <td style="background-color: #FF9999">{{obj.sjfcLast0}}</td>
@@ -272,7 +273,7 @@ @@ -272,7 +273,7 @@
272 <td>{{obj.sjfcLast0}}</td> 273 <td>{{obj.sjfcLast0}}</td>
273 <td>{{obj.delayLast0}}</td> 274 <td>{{obj.delayLast0}}</td>
274 {{/if}} 275 {{/if}}
275 - {{if obj.delayFirst1 != '/' && obj.delayFirst1 != '0'}} 276 + {{if obj.delayFirst1 != '/' && (obj.delayFirst1 > 1 || obj.delayFirst1 < -2)}}
276 <td style="background-color: #FF9999">{{obj.qdzFirst1}}</td> 277 <td style="background-color: #FF9999">{{obj.qdzFirst1}}</td>
277 <td style="background-color: #FF9999">{{obj.jhfcFirst1}}</td> 278 <td style="background-color: #FF9999">{{obj.jhfcFirst1}}</td>
278 <td style="background-color: #FF9999">{{obj.sjfcFirst1}}</td> 279 <td style="background-color: #FF9999">{{obj.sjfcFirst1}}</td>
@@ -283,7 +284,7 @@ @@ -283,7 +284,7 @@
283 <td>{{obj.sjfcFirst1}}</td> 284 <td>{{obj.sjfcFirst1}}</td>
284 <td>{{obj.delayFirst1}}</td> 285 <td>{{obj.delayFirst1}}</td>
285 {{/if}} 286 {{/if}}
286 - {{if obj.delayLast1 != '/' && obj.delayLast1 != '0'}} 287 + {{if obj.delayLast1 != '/' && (obj.delayLast1 > 1 || obj.delayLast1 < -2)}}
287 <td style="background-color: #FF9999">{{obj.qdzLast1}}</td> 288 <td style="background-color: #FF9999">{{obj.qdzLast1}}</td>
288 <td style="background-color: #FF9999">{{obj.jhfcLast1}}</td> 289 <td style="background-color: #FF9999">{{obj.jhfcLast1}}</td>
289 <td style="background-color: #FF9999">{{obj.sjfcLast1}}</td> 290 <td style="background-color: #FF9999">{{obj.sjfcLast1}}</td>
src/main/resources/static/pages/forms/statement/firstAndLastBus_sum.html
@@ -7,7 +7,8 @@ @@ -7,7 +7,8 @@
7 .table-bordered > tbody > tr > td, 7 .table-bordered > tbody > tr > td,
8 .table-bordered > tfoot > tr > th, 8 .table-bordered > tfoot > tr > th,
9 .table-bordered > tfoot > tr > td { 9 .table-bordered > tfoot > tr > td {
10 - border: 1px solid; } 10 + border: 1px solid;
  11 + text-align: center; }
11 .table-bordered > thead > tr > th, 12 .table-bordered > thead > tr > th,
12 .table-bordered > thead > tr > td { 13 .table-bordered > thead > tr > td {
13 border-bottom-width: 2px; } 14 border-bottom-width: 2px; }
@@ -27,11 +28,11 @@ @@ -27,11 +28,11 @@
27 <div class="portlet light porttlet-fit bordered"> 28 <div class="portlet light porttlet-fit bordered">
28 <div class="portlet-title"> 29 <div class="portlet-title">
29 <form id="history" class="form-inline" action=""> 30 <form id="history" class="form-inline" action="">
30 - <div style="display: inline-block;margin-left: 10px;" id="company1"> 31 + <div style="display: inline-block;margin-left: 28px;" id="company1">
31 <span class="item-label" style="width: 80px;">公司: </span> 32 <span class="item-label" style="width: 80px;">公司: </span>
32 <select class="form-control" name="company" id="company" style="width: 160px;"></select> 33 <select class="form-control" name="company" id="company" style="width: 160px;"></select>
33 </div> 34 </div>
34 - <div style="display: inline-block;margin-left: 10px;" id="subCompany1"> 35 + <div style="display: inline-block;margin-left: 24px;" id="subCompany1">
35 <span class="item-label" style="width: 80px;">分公司: </span> 36 <span class="item-label" style="width: 80px;">分公司: </span>
36 <select class="form-control" name="subCompany" id="subCompany" style="width: 160px;"></select> 37 <select class="form-control" name="subCompany" id="subCompany" style="width: 160px;"></select>
37 </div> 38 </div>
@@ -39,11 +40,16 @@ @@ -39,11 +40,16 @@
39 <span class="item-label" style="width: 80px;">线路: </span> 40 <span class="item-label" style="width: 80px;">线路: </span>
40 <select class="form-control" name="line" id="line" style="width: 160px;"></select> 41 <select class="form-control" name="line" id="line" style="width: 160px;"></select>
41 </div> 42 </div>
  43 + <div style="margin-top: 10px"></div>
  44 + <div style="display: inline-block;margin-left: 0px;">
  45 + <span class="item-label" style="width: 80px;">开始时间: </span>
  46 + <input class="form-control" type="text" id="startDate" style="width: 160px;"/>
  47 + </div>
42 <div style="display: inline-block;margin-left: 10px;"> 48 <div style="display: inline-block;margin-left: 10px;">
43 - <span class="item-label" style="width: 80px;">时间: </span>  
44 - <input class="form-control" type="text" id="date" style="width: 160px;"/> 49 + <span class="item-label" style="width: 80px;">结束时间: </span>
  50 + <input class="form-control" type="text" id="endDate" style="width: 160px;"/>
45 </div> 51 </div>
46 - <div class="form-group"> 52 + <div class="form-group" style="margin-left: 10px;">
47 <input class="btn btn-default" type="button" id="query" value="筛选"/> 53 <input class="btn btn-default" type="button" id="query" value="筛选"/>
48 <input class="btn btn-default" type="button" id="export" value="导出"/> 54 <input class="btn btn-default" type="button" id="export" value="导出"/>
49 </div> 55 </div>
@@ -54,7 +60,7 @@ @@ -54,7 +60,7 @@
54 <table class="table table-bordered table-hover table-checkable" id="forms"> 60 <table class="table table-bordered table-hover table-checkable" id="forms">
55 <thead> 61 <thead>
56 <tr class="hidden"> 62 <tr class="hidden">
57 - <th>日期</th> 63 + <th width="240px">日期</th>
58 <th>公司</th> 64 <th>公司</th>
59 <th>分公司</th> 65 <th>分公司</th>
60 <th>线路</th> 66 <th>线路</th>
@@ -73,6 +79,7 @@ @@ -73,6 +79,7 @@
73 <thead> 79 <thead>
74 <tr class="hidden"> 80 <tr class="hidden">
75 <th style="display: none;"></th> 81 <th style="display: none;"></th>
  82 + <th rowspan="2">日期</th>
76 <th rowspan="2">线路</th> 83 <th rowspan="2">线路</th>
77 <th colspan="4">上行首发</th> 84 <th colspan="4">上行首发</th>
78 <th colspan="4">上行末发</th> 85 <th colspan="4">上行末发</th>
@@ -116,12 +123,12 @@ @@ -116,12 +123,12 @@
116 // 关闭左侧栏 123 // 关闭左侧栏
117 if (!$('body').hasClass('page-sidebar-closed')) 124 if (!$('body').hasClass('page-sidebar-closed'))
118 $('.menu-toggler.sidebar-toggler').click(); 125 $('.menu-toggler.sidebar-toggler').click();
119 -  
120 - $("#date").datetimepicker({ 126 +
  127 + $("#startDate,#endDate").datetimepicker({
121 format : 'YYYY-MM-DD', 128 format : 'YYYY-MM-DD',
122 locale : 'zh-cn' 129 locale : 'zh-cn'
123 }); 130 });
124 - 131 +
125 var d = new Date(); 132 var d = new Date();
126 var year = d.getFullYear(); 133 var year = d.getFullYear();
127 var month = d.getMonth() + 1; 134 var month = d.getMonth() + 1;
@@ -130,7 +137,7 @@ @@ -130,7 +137,7 @@
130 month = "0" + month; 137 month = "0" + month;
131 if(day < 10) 138 if(day < 10)
132 day = "0" + day; 139 day = "0" + day;
133 - $("#date").val(year + "-" + month + "-" + day); 140 + $("#startDate,#endDate").val(year + "-" + month + "-" + day);
134 141
135 var fage=false; 142 var fage=false;
136 var xlList; 143 var xlList;
@@ -216,9 +223,14 @@ @@ -216,9 +223,14 @@
216 var company = $("#company").val(); 223 var company = $("#company").val();
217 var subCompany = $("#subCompany").val(); 224 var subCompany = $("#subCompany").val();
218 var line = $("#line").val(); 225 var line = $("#line").val();
219 - var date = $("#date").val(); 226 + var startDate = $("#startDate").val();
  227 + var endDate = $("#endDate").val();
220 function jsDoQuery(pagination){ 228 function jsDoQuery(pagination){
221 - if($("#date").val() == null || $("#date").val().trim().length == 0){ 229 + if($("#startDate").val() == null || $("#startDate").val().trim().length == 0){
  230 + layer.msg("请选择时间!");
  231 + return;
  232 + }
  233 + if($("#endDate").val() == null || $("#endDate").val().trim().length == 0){
222 layer.msg("请选择时间!"); 234 layer.msg("请选择时间!");
223 return; 235 return;
224 } 236 }
@@ -226,14 +238,15 @@ @@ -226,14 +238,15 @@
226 company = $("#company").val(); 238 company = $("#company").val();
227 subCompany = $("#subCompany").val(); 239 subCompany = $("#subCompany").val();
228 line = $("#line").val(); 240 line = $("#line").val();
229 - date = $("#date").val(); 241 + startDate = $("#startDate").val();
  242 + endDate = $("#endDate").val();
230 if(line == " ") 243 if(line == " ")
231 line = ""; 244 line = "";
232 params['company'] = company; 245 params['company'] = company;
233 params['subCompany'] = subCompany; 246 params['subCompany'] = subCompany;
234 params['line'] = line; 247 params['line'] = line;
235 - params['line'] = line;  
236 - params['date'] = date; 248 + params['startDate'] = startDate;
  249 + params['endDate'] = endDate;
237 params['type'] = "query"; 250 params['type'] = "query";
238 $("#forms .hidden").removeClass("hidden"); 251 $("#forms .hidden").removeClass("hidden");
239 $("#map tr").addClass("hidden"); 252 $("#map tr").addClass("hidden");
@@ -253,19 +266,15 @@ @@ -253,19 +266,15 @@
253 } 266 }
254 267
255 $("#export").on("click",function(){ 268 $("#export").on("click",function(){
256 - if($("#date").val() == null || $("#date").val().trim().length == 0){  
257 - layer.msg("请选择时间!");  
258 - return;  
259 - }  
260 var params = {}; 269 var params = {};
261 params['company'] = company; 270 params['company'] = company;
262 params['subCompany'] = subCompany; 271 params['subCompany'] = subCompany;
263 params['line'] = line; 272 params['line'] = line;
264 - params['line'] = line;  
265 - params['date'] = date; 273 + params['startDate'] = startDate;
  274 + params['endDate'] = endDate;
266 params['type'] = "export"; 275 params['type'] = "export";
267 $get('/pcpc/firstAndLastBus_sum', params, function(result){ 276 $get('/pcpc/firstAndLastBus_sum', params, function(result){
268 - window.open("/downloadFile/download?fileName=线路首末班准点率"+moment(date).format("YYYYMMDD")); 277 + window.open("/downloadFile/download?fileName=线路首末班准点率"+moment(startDate).format("YYYYMMDD")+(startDate==endDate?"":("-"+moment(endDate).format("YYYYMMDD"))));
269 }); 278 });
270 }); 279 });
271 280
@@ -276,13 +285,20 @@ @@ -276,13 +285,20 @@
276 <script type="text/html" id="list_firstAndLastBus"> 285 <script type="text/html" id="list_firstAndLastBus">
277 {{each list as obj i}} 286 {{each list as obj i}}
278 <tr> 287 <tr>
279 - <td>{{obj.date}}</td>  
280 - <td>{{obj.company}}</td>  
281 - <td>{{obj.subCompany}}</td>  
282 - <td>{{obj.line}}</td>  
283 - <td>{{obj.jhbc}}</td>  
284 - <td>{{obj.sjbc}}</td>  
285 - <td><a id='delay'>{{obj.zdl}}</a></td> 288 + {{if obj.date != '合计汇总'}}
  289 + <td>{{obj.date}}</td>
  290 + <td>{{obj.company}}</td>
  291 + <td>{{obj.subCompany}}</td>
  292 + <td>{{obj.line}}</td>
  293 + <td>{{obj.jhbc}}</td>
  294 + <td>{{obj.sjbc}}</td>
  295 + <td><a id='delay'>{{obj.zdl}}</a></td>
  296 + {{else}}
  297 + <td colspan='4'>{{obj.date}}</td>
  298 + <td>{{obj.jhbc}}</td>
  299 + <td>{{obj.sjbc}}</td>
  300 + <td>{{obj.zdl}}</td>
  301 + {{/if}}
286 </tr> 302 </tr>
287 {{/each}} 303 {{/each}}
288 {{if list.length == 0}} 304 {{if list.length == 0}}
@@ -292,23 +308,26 @@ @@ -292,23 +308,26 @@
292 {{/if}} 308 {{/if}}
293 </script> 309 </script>
294 <script type="text/html" id="list_maps"> 310 <script type="text/html" id="list_maps">
  311 + {{each list as obj i}}
295 <tr> 312 <tr>
296 - <td>{{list.line}}</td>  
297 - <td>{{list.qdzFirst0}}</td>  
298 - <td>{{list.jhfcFirst0}}</td>  
299 - <td>{{list.sjfcFirst0}}</td>  
300 - <td>{{list.delayFirst0}}</td>  
301 - <td>{{list.qdzLast0}}</td>  
302 - <td>{{list.jhfcLast0}}</td>  
303 - <td>{{list.sjfcLast0}}</td>  
304 - <td>{{list.delayLast0}}</td>  
305 - <td>{{list.qdzFirst1}}</td>  
306 - <td>{{list.jhfcFirst1}}</td>  
307 - <td>{{list.sjfcFirst1}}</td>  
308 - <td>{{list.delayFirst1}}</td>  
309 - <td>{{list.qdzLast1}}</td>  
310 - <td>{{list.jhfcLast1}}</td>  
311 - <td>{{list.sjfcLast1}}</td>  
312 - <td>{{list.delayLast1}}</td> 313 + <td>{{obj.date}}</td>
  314 + <td>{{obj.line}}</td>
  315 + <td>{{obj.qdzFirst0}}</td>
  316 + <td>{{obj.jhfcFirst0}}</td>
  317 + <td>{{obj.sjfcFirst0}}</td>
  318 + <td>{{obj.delayFirst0}}</td>
  319 + <td>{{obj.qdzLast0}}</td>
  320 + <td>{{obj.jhfcLast0}}</td>
  321 + <td>{{obj.sjfcLast0}}</td>
  322 + <td>{{obj.delayLast0}}</td>
  323 + <td>{{obj.qdzFirst1}}</td>
  324 + <td>{{obj.jhfcFirst1}}</td>
  325 + <td>{{obj.sjfcFirst1}}</td>
  326 + <td>{{obj.delayFirst1}}</td>
  327 + <td>{{obj.qdzLast1}}</td>
  328 + <td>{{obj.jhfcLast1}}</td>
  329 + <td>{{obj.sjfcLast1}}</td>
  330 + <td>{{obj.delayLast1}}</td>
313 </tr> 331 </tr>
  332 + {{/each}}
314 </script> 333 </script>
315 \ No newline at end of file 334 \ No newline at end of file