Commit f2cbc8e78f72f1ee67ca04ce3bbaf6bcc115cefd

Authored by 娄高锋
1 parent b0ba5592

线路时刻分析

src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
@@ -141,7 +141,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -141,7 +141,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
141 long dfsj = Long.valueOf(split0[0]) * 60 + Long.valueOf(split0[1]); 141 long dfsj = Long.valueOf(split0[0]) * 60 + Long.valueOf(split0[1]);
142 if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&dfsj<23*60) 142 if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&dfsj<23*60)
143 dfsj += 1440l; 143 dfsj += 1440l;
144 - schedule.setDfsj(dfsj/60 + ":" + dfsj%60); 144 + schedule.setDfsj((dfsj/60>9?"":"0")+dfsj/60+ ":" +(dfsj%60>9?"":"0")+dfsj%60);
145 schedule.setDfsjT(dfsj); 145 schedule.setDfsjT(dfsj);
146 } 146 }
147 if(schedule.getFcsjActual() != null){ 147 if(schedule.getFcsjActual() != null){
@@ -149,7 +149,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -149,7 +149,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
149 long fcsjA = Long.valueOf(split2[0]) * 60 + Long.valueOf(split2[1]); 149 long fcsjA = Long.valueOf(split2[0]) * 60 + Long.valueOf(split2[1]);
150 if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&fcsjA<23*60) 150 if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&fcsjA<23*60)
151 fcsjA += 1440l; 151 fcsjA += 1440l;
152 - schedule.setFcsjActual(fcsjA/60 + ":" + fcsjA%60); 152 + schedule.setFcsjActual((fcsjA/60>9?"":"0")+fcsjA/60+ ":" +(fcsjA%60>9?"":"0")+fcsjA%60);
153 schedule.setFcsjActualTime(fcsjA); 153 schedule.setFcsjActualTime(fcsjA);
154 } 154 }
155 if(schedule.getZdsjActual() != null){ 155 if(schedule.getZdsjActual() != null){
@@ -159,11 +159,11 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -159,11 +159,11 @@ public class BusIntervalServiceImpl implements BusIntervalService {
159 zdsjA += 1440l; 159 zdsjA += 1440l;
160 if(schedule.getFcsjActualTime() != null && zdsjA < schedule.getFcsjActualTime()) 160 if(schedule.getFcsjActualTime() != null && zdsjA < schedule.getFcsjActualTime())
161 zdsjA += 1440l; 161 zdsjA += 1440l;
162 - schedule.setZdsjActual(zdsjA/60 + ":" + zdsjA%60); 162 + schedule.setZdsjActual((zdsjA/60>9?"":"0")+zdsjA/60+ ":" +(zdsjA%60>9?"":"0")+zdsjA%60);
163 schedule.setZdsjActualTime(zdsjA); 163 schedule.setZdsjActualTime(zdsjA);
164 } 164 }
165 - schedule.setFcsj((fcsj/60<10?"0"+fcsj/60:fcsj/60) + ":" + (fcsj%60<10?"0"+fcsj%60:fcsj%60));  
166 - schedule.setZdsj((zdsj/60<10?"0"+zdsj/60:zdsj/60) + ":" + (zdsj%60<10?"0"+zdsj%60:zdsj%60)); 165 + schedule.setFcsj((fcsj/60<10?"0"+fcsj/60:fcsj/60)+ ":" +(fcsj%60<10?"0"+fcsj%60:fcsj%60));
  166 + schedule.setZdsj((zdsj/60<10?"0"+zdsj/60:zdsj/60)+ ":" +(zdsj%60<10?"0"+zdsj%60:zdsj%60));
167 schedule.setFcsjT(fcsj); 167 schedule.setFcsjT(fcsj);
168 schedule.setZdsjT(zdsj); 168 schedule.setZdsjT(zdsj);
169 return schedule; 169 return schedule;
@@ -1379,249 +1379,214 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1379,249 +1379,214 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1379 times = "05:00-23:00"; 1379 times = "05:00-23:00";
1380 } 1380 }
1381 1381
1382 - list = getSchedule(company, subCompany, line, startDate, endDate, model, times, true); 1382 + list = getSchedule(company, subCompany, line, startDate, endDate, model, times, false);
1383 1383
1384 String[] date1 = startDate.split("-"); 1384 String[] date1 = startDate.split("-");
1385 String[] date2 = endDate.split("-"); 1385 String[] date2 = endDate.split("-");
1386 startDate = date1[0] + "年" + date1[1] + "月" + date1[2] + "日"; 1386 startDate = date1[0] + "年" + date1[1] + "月" + date1[2] + "日";
1387 endDate = date2[0] + "年" + date2[1] + "月" + date2[2] + "日"; 1387 endDate = date2[0] + "年" + date2[1] + "月" + date2[2] + "日";
  1388 + String date = startDate + "-" + endDate;
  1389 + if(startDate.equals(endDate)){
  1390 + date = startDate;
  1391 + }
1388 1392
1389 String[] split = times.split("-"); 1393 String[] split = times.split("-");
1390 int startTime = Integer.valueOf(split[0].split(":")[0])*60 + Integer.valueOf(split[0].split(":")[1]); 1394 int startTime = Integer.valueOf(split[0].split(":")[0])*60 + Integer.valueOf(split[0].split(":")[1]);
1391 int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]); 1395 int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]);
1392 1396
1393 - for(ScheduleRealInfo schedule : list){  
1394 - if(qdzName.length() != 0 && !qdzName.equals(schedule.getQdzName())){  
1395 - continue;  
1396 - }  
1397 - Long fcsj = schedule.getFcsjT();  
1398 - if(!(endTime!=0?fcsj>=startTime&&fcsj<endTime:fcsj>=startTime)){  
1399 - continue;  
1400 - }  
1401 - String key = schedule.getScheduleDateStr() + "/" + schedule.getXlName() + "/" + schedule.getLpName() + "/" + schedule.getFcsj() + "/" + schedule.getQdzName(); 1397 + for(ScheduleRealInfo s : list){
  1398 + String key = s.getScheduleDateStr() + "/" + s.getLpName();
1402 if(!keyMap.containsKey(key)) 1399 if(!keyMap.containsKey(key))
1403 keyMap.put(key, new ArrayList<ScheduleRealInfo>()); 1400 keyMap.put(key, new ArrayList<ScheduleRealInfo>());
1404 - keyMap.get(key).add(schedule); 1401 + keyMap.get(key).add(s);
1405 } 1402 }
  1403 +
1406 for(String key : keyMap.keySet()){ 1404 for(String key : keyMap.keySet()){
1407 - Map<String, Object> tempMap = new HashMap<String, Object>();  
1408 - int jhbc = 0, sjbc = 0, wdfz = 0;  
1409 - long jhdf = 0l, sjdf = 0l, wddf1 = 0l, wddf2 = 0l;  
1410 - long jhfc = 0l, sjfc = 0l, wdfc1 = 0l, wdfc2 = 0l;  
1411 - long jhys = 0l, sjys = 0l, yssjMax = 0l, yssjMin = 0l;  
1412 - long jhtz = 0l, sjtz = 0l, tzsjMax = 0l, tzsjMin = 0l;  
1413 - String companyName = "", subCompanyName = "";  
1414 - for(ScheduleRealInfo schedule : keyMap.get(key)){  
1415 - if(schedule.getGsName() != null && companyName.length() == 0)  
1416 - companyName = schedule.getGsName();  
1417 - if(schedule.getFgsName() != null && subCompanyName.length() == 0)  
1418 - subCompanyName = schedule.getFgsName();  
1419 - long tzsj = 0l;  
1420 - long yssj = 0l;  
1421 - jhbc++;  
1422 - if(schedule.getDfsj() != null){  
1423 - jhtz += schedule.getFcsjT() - schedule.getDfsjT(); 1405 + List<ScheduleRealInfo> list1 = keyMap.get(key);
  1406 + Map<String, List<ScheduleRealInfo>> keyMap_ = new HashMap<String, List<ScheduleRealInfo>>();
  1407 + for(ScheduleRealInfo s : list1){
  1408 + String dateStr = s.getScheduleDateStr();
  1409 + if(!keyMap_.containsKey(dateStr))
  1410 + keyMap_.put(dateStr, new ArrayList<ScheduleRealInfo>());
  1411 + keyMap_.get(dateStr).add(s);
  1412 + }
  1413 +
  1414 + Set<String> keySet1 = keyMap_.keySet();
  1415 + Map<Long, String> Map = new HashMap<Long, String>();
  1416 + for(String key1 : keySet1){
  1417 + Map.put(Long.valueOf(key1.replaceAll("-", "")), key1);
  1418 + }
  1419 + Set<Long> keySet2 = Map.keySet();
  1420 +
  1421 + for(Long l : keySet2){
  1422 + List<ScheduleRealInfo> list2 = keyMap_.get(Map.get(l));
  1423 + List<ScheduleRealInfo> list3 = new ArrayList<ScheduleRealInfo>();
  1424 + List<Long> fcsjs = new ArrayList<Long>();
  1425 + List<Long> zdsjs = new ArrayList<Long>();
  1426 + List<Long> fcsjAs = new ArrayList<Long>();
  1427 + List<Long> zdsjAs = new ArrayList<Long>();
  1428 + Map<Long, ScheduleRealInfo> fcsjMap = new HashMap<Long, ScheduleRealInfo>();
  1429 + Map<Long, ScheduleRealInfo> zdsjMap = new HashMap<Long, ScheduleRealInfo>();
  1430 + Map<Long, ScheduleRealInfo> fcsjAMap = new HashMap<Long, ScheduleRealInfo>();
  1431 + Map<Long, ScheduleRealInfo> zdsjAMap = new HashMap<Long, ScheduleRealInfo>();
  1432 + for(ScheduleRealInfo schedule : list2){
  1433 + if(schedule.getStatus() != -1){
  1434 + if(schedule.getFcsj()!=null&&schedule.getFcsjActual()!=null&&
  1435 + schedule.getZdsj()!=null&&schedule.getZdsjActual()!=null){
  1436 + Long fcsj = schedule.getFcsjT();
  1437 + Long zdsj = schedule.getZdsjT();
  1438 + Long fcsjA = schedule.getFcsjActualTime();
  1439 + Long zdsjA = schedule.getZdsjActualTime();
  1440 + fcsjs.add(fcsj);
  1441 + zdsjs.add(zdsj);
  1442 + fcsjAs.add(fcsjA);
  1443 + zdsjAs.add(zdsjA);
  1444 + fcsjMap.put(fcsj, schedule);
  1445 + zdsjMap.put(zdsj, schedule);
  1446 + fcsjAMap.put(fcsjA, schedule);
  1447 + zdsjAMap.put(zdsjA, schedule);
  1448 + }
  1449 + }
  1450 + }
  1451 + Collections.sort(fcsjs);
  1452 + Collections.sort(zdsjs);
  1453 + Collections.sort(fcsjAs);
  1454 + Collections.sort(zdsjAs);
  1455 + for(int i = 0; i < fcsjs.size(); i++){
  1456 + Long fcsj = fcsjs.get(i);
  1457 + Long zdsj = zdsjs.get(i);
  1458 + Long fcsjA = fcsjAs.get(i);
  1459 + Long zdsjA = zdsjAs.get(i);
  1460 + ScheduleRealInfo s = fcsjMap.get(fcsj);
  1461 + s.setFcsjActual(fcsjAMap.get(fcsjA).getFcsjActual());
  1462 + s.setFcsjActualTime(fcsjAMap.get(fcsjA).getFcsjActualTime());
  1463 + s.setZdsjActual(zdsjAMap.get(zdsjA).getZdsjActual());
  1464 + s.setZdsjActualTime(zdsjAMap.get(zdsjA).getZdsjActualTime());
  1465 + list3.add(s);
1424 } 1466 }
1425 - jhys += schedule.getZdsjT() - schedule.getFcsjT();  
1426 1467
1427 - if(schedule.getFcsjActual() != null && schedule.getZdsjActual() != null){  
1428 - sjbc++;  
1429 - sjfc += schedule.getFcsjActualTime();  
1430 - yssj += schedule.getZdsjActualTime() - schedule.getFcsjActualTime();  
1431 - if(schedule.getFcsjActualTime() - schedule.getFcsjT() < 0){  
1432 - wdfc1 += schedule.getFcsjT() - schedule.getFcsjActualTime();  
1433 -// kbc++;  
1434 - } else if(schedule.getFcsjActualTime() - schedule.getFcsjT() > 0){  
1435 - wdfc2 += schedule.getFcsjActualTime() - schedule.getFcsjT();  
1436 -// mbc++;  
1437 - }  
1438 -  
1439 - if(schedule.getDfsj() != null){  
1440 - sjdf += schedule.getDfsjT();  
1441 - tzsj += schedule.getFcsjActualTime() - schedule.getDfsjT();  
1442 - if(schedule.getDfsjT() - schedule.getFcsjT() < 0)  
1443 - wddf1 += schedule.getFcsjT() - schedule.getDfsjT();  
1444 - else  
1445 - wddf2 += schedule.getDfsjT() - schedule.getFcsjT();  
1446 - } else {  
1447 - sjdf += schedule.getFcsjT();  
1448 - tzsj += schedule.getFcsjActualTime() - schedule.getFcsjT(); 1468 + for(int i = 0; i < list3.size(); i++){
  1469 + ScheduleRealInfo s = list3.get(i);
  1470 + long fcwd = s.getFcsjActualTime() - s.getFcsjT();
  1471 + long jhys = s.getBcsj();
  1472 + long sjys = s.getZdsjActualTime() - s.getFcsjActualTime();
  1473 + if(i > 0){
  1474 + ScheduleRealInfo s1 = list3.get(i - 1);
  1475 + long ddwd = s1.getZdsjActualTime() - s1.getZdsjT();
  1476 + long jhtz = s.getFcsjT() - s1.getZdsjT();
  1477 + long sjtz = s.getFcsjActualTime() - s1.getZdsjActualTime();
  1478 +
  1479 + if(s.getBcType().equals("normal")){
  1480 + Map<String, Object> tempMap = new HashMap<String, Object>();
  1481 + tempMap.put("dates", date);
  1482 + tempMap.put("line", s.getXlName());
  1483 + tempMap.put("lp", s.getLpName());
  1484 + tempMap.put("station", s.getQdzName());
  1485 + tempMap.put("date", s.getScheduleDateStr());
  1486 + tempMap.put("jhdd", s1.getZdsj());
  1487 + tempMap.put("sjdd", s1.getZdsjActual());
  1488 + tempMap.put("ddwd", ddwd);
  1489 + tempMap.put("jhfc", s.getFcsj());
  1490 + tempMap.put("sjfc", s.getFcsjActual());
  1491 + tempMap.put("fcwd", fcwd);
  1492 + tempMap.put("jhys", jhys);
  1493 + tempMap.put("sjys", sjys);
  1494 + tempMap.put("jhtz", jhtz);
  1495 + tempMap.put("sjtz", sjtz);
  1496 +
  1497 + String key0 = s.getLpName() + "/" + s.getQdzName();
  1498 + if(!keyMap0.containsKey(key0))
  1499 + keyMap0.put(key0, new ArrayList<Map<String, Object>>());
  1500 + keyMap0.get(key0).add(tempMap);
  1501 + }
1449 } 1502 }
1450 } 1503 }
1451 -  
1452 - sjys += yssj;  
1453 - if(yssj > yssjMax || yssjMax == 0l)  
1454 - yssjMax = yssj;  
1455 - if(yssj < yssjMin || yssjMin == 0l)  
1456 - yssjMin = yssj;  
1457 -  
1458 - sjtz += tzsj;  
1459 - if(tzsj > tzsjMax || tzsjMax == 0l)  
1460 - tzsjMax = tzsj;  
1461 - if(tzsj < tzsjMin || tzsjMin == 0l)  
1462 - tzsjMin = tzsj;  
1463 } 1504 }
1464 - String[] keys = key.split("/");  
1465 - tempMap.put("date", keys[0]);  
1466 - tempMap.put("line", keys[1]);  
1467 - tempMap.put("lp", keys[2]);  
1468 - tempMap.put("jhdf", keys[3]);  
1469 - tempMap.put("jhfc", keys[3]);  
1470 - tempMap.put("station", keys[4]);  
1471 - tempMap.put("times", times);  
1472 - tempMap.put("company", companyName);  
1473 - tempMap.put("subCompany", subCompanyName);  
1474 - if(startDate.equals(endDate))  
1475 - tempMap.put("dates", startDate);  
1476 - else  
1477 - tempMap.put("dates", startDate + "--" + endDate);  
1478 - tempMap.put("jhbc", jhbc);  
1479 - tempMap.put("sjbc", sjbc);  
1480 - if(sjbc != 0){  
1481 - tempMap.put("sjdf", ((sjdf/sjbc)/60<10?"0"+(sjdf/sjbc)/60:(sjdf/sjbc)/60) + ":" + ((sjdf/sjbc)%60<10?"0"+(sjdf/sjbc)%60:(sjdf/sjbc)%60));  
1482 - tempMap.put("wddf1", wddf1 / sjbc + "分");  
1483 - tempMap.put("wddf2", wddf2 / sjbc + "分");  
1484 - tempMap.put("sjfc", ((sjfc/sjbc)/60<10?"0"+(sjfc/sjbc)/60:(sjfc/sjbc)/60) + ":" + ((sjfc/sjbc)%60<10?"0"+(sjfc/sjbc)%60:(sjfc/sjbc)%60));  
1485 - tempMap.put("wdfc1", wdfc1 / sjbc + "分");  
1486 - tempMap.put("wdfc2", wdfc2 / sjbc + "分");  
1487 -// tempMap.put("kbc", df.format((((double) kbc)/sjbc)*100)+"%");  
1488 -// tempMap.put("mbc", df.format((((double) mbc)/sjbc)*100)+"%");  
1489 - tempMap.put("pjys", sjys / sjbc + "分");  
1490 - tempMap.put("pjtz", sjtz / sjbc + "分");  
1491 - } else {  
1492 - tempMap.put("sjdf", "/");  
1493 - tempMap.put("wddf1", "0分");  
1494 - tempMap.put("wddf2", "0分");  
1495 - tempMap.put("sjfc", "/");  
1496 - tempMap.put("wdfc1", "0分");  
1497 - tempMap.put("wdfc2", "0分");  
1498 -// tempMap.put("kbc", "0%");  
1499 -// tempMap.put("mbc", "0%");  
1500 - tempMap.put("pjys", "0分");  
1501 - tempMap.put("pjtz", "0分");  
1502 - }  
1503 -// tempMap.put("kbc", kbc);  
1504 -// tempMap.put("mbc", mbc);  
1505 - if(!tempMap.get("jhfc").toString().equals("/") && !tempMap.get("sjfc").toString().equals("/")){  
1506 - String[] temp1 = tempMap.get("jhfc").toString().split(":");  
1507 - String[] temp2 = tempMap.get("sjfc").toString().split(":");  
1508 - tempMap.put("wdfz", (Integer.valueOf(temp2[0])*60 + Integer.valueOf(temp2[1]))  
1509 - - (Integer.valueOf(temp1[0])*60 + Integer.valueOf(temp1[1])));  
1510 - }else{  
1511 - tempMap.put("wdfz", "/");  
1512 - }  
1513 - tempMap.put("jhys", jhys);  
1514 - tempMap.put("sjys", sjys);  
1515 - tempMap.put("yssjMin", yssjMin);  
1516 - tempMap.put("yssjMax", yssjMax);  
1517 - tempMap.put("jhtz", jhtz);  
1518 - tempMap.put("sjtz", sjtz);  
1519 - tempMap.put("tzsjMax", tzsjMax);  
1520 - tempMap.put("tzsjMin", tzsjMin);  
1521 - list0.add(tempMap);  
1522 } 1505 }
1523 1506
1524 - Collections.sort(list0, new Comparator<Map<String, Object>>() {  
1525 -  
1526 - public int compare(Map<String, Object> o1, Map<String, Object> o2) {  
1527 -  
1528 - String[] split1 = o1.get("date").toString().split("-");  
1529 - String[] split2 = o2.get("date").toString().split("-");  
1530 - Long a = Long.valueOf(split1[0])*10000 + Long.valueOf(split1[1])*100 + Long.valueOf(split1[2]);  
1531 - Long b = Long.valueOf(split2[0])*10000 + Long.valueOf(split2[1])*100 + Long.valueOf(split2[2]);  
1532 -  
1533 - // 升序  
1534 - return a.compareTo(b);  
1535 - }  
1536 - });  
1537 1507
1538 - for(Map<String, Object> m : list0){  
1539 - String key = m.get("line").toString() + "/" + m.get("lp").toString() + "/" + m.get("station").toString();  
1540 - if(!keyMap0.containsKey(key))  
1541 - keyMap0.put(key, new ArrayList<Map<String, Object>>());  
1542 - keyMap0.get(key).add(m);  
1543 - }  
1544 - for(String key : keyMap0.keySet()){  
1545 - Map<String, Object> tempMap = new HashMap<String, Object>();  
1546 - int jhbc = 0;  
1547 - int sjbc = 0;  
1548 - int wddf1 = 0;  
1549 - int wddf2 = 0;  
1550 - int wdfc1 = 0;  
1551 - int wdfc2 = 0;  
1552 - int ys = 0;  
1553 - int tz = 0;  
1554 - String companyName = "", subCompanyName = "";  
1555 - for(Map<String, Object> m : keyMap0.get(key)){  
1556 - if(m.containsKey("company") && companyName.length() == 0)  
1557 - companyName = m.get("company").toString();  
1558 - if(m.containsKey("subCompany") && subCompanyName.length() == 0)  
1559 - subCompanyName = m.get("subCompany").toString();  
1560 - jhbc += Integer.valueOf(m.get("jhbc").toString());  
1561 - sjbc += Integer.valueOf(m.get("sjbc").toString());  
1562 - wddf1 += Integer.valueOf(m.get("wddf1").toString().substring(0, m.get("wddf1").toString().length() - 1));  
1563 - wddf2 += Integer.valueOf(m.get("wddf2").toString().substring(0, m.get("wddf2").toString().length() - 1));  
1564 - wdfc1 += Integer.valueOf(m.get("wdfc1").toString().substring(0, m.get("wdfc1").toString().length() - 1));  
1565 - wdfc2 += Integer.valueOf(m.get("wdfc2").toString().substring(0, m.get("wdfc2").toString().length() - 1));  
1566 - ys += Integer.valueOf(m.get("pjys").toString().substring(0, m.get("pjys").toString().length() - 1));  
1567 - tz += Integer.valueOf(m.get("pjtz").toString().substring(0, m.get("pjtz").toString().length() - 1));  
1568 - }  
1569 - if(startDate.equals(endDate))  
1570 - tempMap.put("dates", startDate);  
1571 - else  
1572 - tempMap.put("dates", startDate + "--" + endDate);  
1573 - tempMap.put("company", companyName);  
1574 - tempMap.put("subCompany", subCompanyName);  
1575 - String[] keys = key.split("/");  
1576 - tempMap.put("line", keys[0]);  
1577 - tempMap.put("lp", keys[1]);  
1578 - tempMap.put("station", keys[2]);  
1579 - tempMap.put("times", times);  
1580 - tempMap.put("jhbc", jhbc);  
1581 - tempMap.put("sjbc", sjbc);  
1582 - tempMap.put("wddf1", wddf1/keyMap0.get(key).size()+"分");  
1583 - tempMap.put("wddf2", wddf2/keyMap0.get(key).size()+"分");  
1584 - tempMap.put("wdfc1", wdfc1/keyMap0.get(key).size()+"分");  
1585 - tempMap.put("wdfc2", wdfc2/keyMap0.get(key).size()+"分");  
1586 - tempMap.put("pjys", ys/keyMap0.get(key).size()+"分");  
1587 - tempMap.put("pjtz", tz/keyMap0.get(key).size()+"分");  
1588 - tempMap.put("workList", keyMap0.get(key));  
1589 -  
1590 - String key1 = tempMap.get("line").toString();  
1591 - if(!keyMap1.containsKey(key1))  
1592 - keyMap1.put(key1, new ArrayList<Map<String, Object>>());  
1593 - keyMap1.get(key1).add(tempMap);  
1594 - }  
1595 1508
1596 - for(String key : keyMap1.keySet()){  
1597 - Collections.sort(keyMap1.get(key), new Comparator<Map<String, Object>>() { 1509 + if(keyMap0.keySet().size() > 0){
  1510 + Set<String> keySet = keyMap0.keySet();
  1511 + List<String> keyList = new ArrayList<String>();
  1512 + keyList.addAll(keySet);
  1513 + Collections.sort(keyList, new Comparator<String>() {
1598 1514
1599 - public int compare(Map<String, Object> o1, Map<String, Object> o2) { 1515 + public int compare(String o1, String o2) {
1600 Long a; 1516 Long a;
1601 Long b; 1517 Long b;
1602 - String lp1 = o1.get("lp").toString();  
1603 - String lp2 = o2.get("lp").toString(); 1518 + o1 = o1.split("/")[0];
  1519 + o2 = o2.split("/")[0];
1604 String str1 = ""; 1520 String str1 = "";
1605 String str2 = ""; 1521 String str2 = "";
1606 - for(int i = 0; i < lp1.length(); i++){  
1607 - str1 += (int)lp1.charAt(i); 1522 + for(int i = 0; i < o1.length(); i++){
  1523 + str1 += (int)o1.charAt(i);
1608 } 1524 }
1609 - for(int i = 0; i < lp2.length(); i++){  
1610 - str2 += (int)lp2.charAt(i); 1525 + for(int i = 0; i < o2.length(); i++){
  1526 + str2 += (int)o2.charAt(i);
1611 } 1527 }
1612 1528
1613 a = Long.valueOf(str1); 1529 a = Long.valueOf(str1);
1614 b = Long.valueOf(str2); 1530 b = Long.valueOf(str2);
1615 - 1531 +
1616 // 升序 1532 // 升序
1617 return a.compareTo(b); 1533 return a.compareTo(b);
1618 } 1534 }
1619 }); 1535 });
1620 1536
1621 - resList.addAll(keyMap1.get(key)); 1537 + for(String key : keyList){
  1538 + List<Map<String, Object>> mapList = keyMap0.get(key);
  1539 + Map<String, Object> tempMap = new HashMap<String, Object>();
  1540 + int ddtq_ = 0, ddtqs = 0, ddyw_ = 0, ddyws = 0;
  1541 + int fctq_ = 0, fctqs = 0, fcyw_ = 0, fcyws = 0;
  1542 + int yssj_ = 0, yssjs = 0, tzsj_ = 0, tzsjs = 0;
  1543 + for(Map<String, Object> m : mapList){
  1544 + int ddwd = Integer.valueOf(m.get("ddwd").toString());
  1545 + if(ddwd < 0){
  1546 + ddtq_ += 0 - ddwd;
  1547 + ++ddtqs;
  1548 + } else if(ddwd > 0){
  1549 + ddyw_ += ddwd;
  1550 + ++ddyws;
  1551 + }
  1552 + int fcwd = Integer.valueOf(m.get("fcwd").toString());
  1553 + if(fcwd < 0){
  1554 + fctq_ += 0 - fcwd;
  1555 + ++fctqs;
  1556 + } else if(fcwd > 0){
  1557 + fcyw_ += fcwd;
  1558 + ++fcyws;
  1559 + }
  1560 + int sjys = Integer.valueOf(m.get("sjys").toString());
  1561 + yssj_ += sjys;
  1562 + ++yssjs;
  1563 + int sjtz = Integer.valueOf(m.get("sjtz").toString());
  1564 + tzsj_ += sjtz;
  1565 + ++tzsjs;
  1566 + }
  1567 + tempMap.put("ddwd1", (ddtqs!=0?ddtq_/ddtqs:0) + "分");
  1568 + tempMap.put("ddwd2", (ddyws!=0?ddyw_/ddyws:0) + "分");
  1569 + tempMap.put("wdfc1", (fctqs!=0?fctq_/fctqs:0) + "分");
  1570 + tempMap.put("wdfc2", (fcyws!=0?fcyw_/fcyws:0) + "分");
  1571 + tempMap.put("pjys", (yssjs!=0?yssj_/yssjs:0) + "分");
  1572 + tempMap.put("pjtz", (tzsjs!=0?tzsj_/tzsjs:0) + "分");
  1573 +
  1574 + Map<String, Object> m = mapList.get(0);
  1575 + tempMap.put("dates", date);
  1576 + tempMap.put("times", times);
  1577 + tempMap.put("line", m.get("line"));
  1578 + tempMap.put("lp", m.get("lp"));
  1579 + tempMap.put("station", m.get("station"));
  1580 + tempMap.put("bcs", mapList.size());
  1581 + tempMap.put("workList", mapList);
  1582 + if(qdzName != null && qdzName.trim().length() != 0){
  1583 + if(!tempMap.get("station").equals(qdzName)){
  1584 + continue;
  1585 + }
  1586 + }
  1587 + resList.add(tempMap);
  1588 + }
1622 } 1589 }
1623 -  
1624 -  
1625 return resList; 1590 return resList;
1626 } 1591 }
1627 1592