Commit 512c3cb7554575463580e72b6b2f0aa7985bc3a4
Merge branch 'minhang' of
http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing
15 changed files
with
581 additions
and
384 deletions
src/main/java/com/bsth/entity/Line.java
| ... | ... | @@ -104,6 +104,9 @@ public class Line implements Serializable { |
| 104 | 104 | /** 开辟日期 date*/ |
| 105 | 105 | @DateTimeFormat(pattern ="yyyy-MM-dd") |
| 106 | 106 | private Date openDate; |
| 107 | + | |
| 108 | + /** 大间隔等级 */ | |
| 109 | + private Integer spacGrade; | |
| 107 | 110 | |
| 108 | 111 | /** 线路沿革 varchar length(50) */ |
| 109 | 112 | private String history; |
| ... | ... | @@ -155,6 +158,14 @@ public class Line implements Serializable { |
| 155 | 158 | /** 是否在使用 <1:是;0:否> bit length(50) */ |
| 156 | 159 | private Integer inUse; |
| 157 | 160 | |
| 161 | + public Integer getSpacGrade() { | |
| 162 | + return spacGrade; | |
| 163 | + } | |
| 164 | + | |
| 165 | + public void setSpacGrade(Integer spacGrade) { | |
| 166 | + this.spacGrade = spacGrade; | |
| 167 | + } | |
| 168 | + | |
| 158 | 169 | public Integer getWarrantCar() { |
| 159 | 170 | return warrantCar; |
| 160 | 171 | } | ... | ... |
src/main/java/com/bsth/repository/SectionRouteRepository.java
| ... | ... | @@ -159,11 +159,11 @@ public interface SectionRouteRepository extends BaseRepository<SectionRoute, Int |
| 159 | 159 | */ |
| 160 | 160 | @Query(value = "SELECT " + |
| 161 | 161 | "c.directions," + |
| 162 | - "ST_AsText(s.bsection_vector) as bsection_vector," + | |
| 162 | + "ST_AsText(s.gsection_vector) as gsection_vector," + | |
| 163 | 163 | "s.speed_limit," + |
| 164 | 164 | "s.section_name " + |
| 165 | 165 | " FROM bsth_c_sectionroute c " + |
| 166 | - " LEFT JOIN bsth_c_section s on c.section = s.id where c.line = ?1 and c.directions = ?2", nativeQuery=true) | |
| 166 | + " LEFT JOIN bsth_c_section s on c.section = s.id where c.line = ?1 and c.directions = ?2 and c.destroy = 0", nativeQuery=true) | |
| 167 | 167 | List<Object[]> sectionRouteVector(Integer lineId,Integer directions); |
| 168 | 168 | |
| 169 | 169 | @Transactional | ... | ... |
src/main/java/com/bsth/repository/StationRouteRepository.java
| ... | ... | @@ -153,7 +153,7 @@ public interface StationRouteRepository extends BaseRepository<StationRoute, Int |
| 153 | 153 | "s.station_route_code," + |
| 154 | 154 | "s.directions," + |
| 155 | 155 | "s.distances,"+ |
| 156 | - "s.station FROM bsth_c_stationroute s where s.line = ?1) a " + | |
| 156 | + "s.station FROM bsth_c_stationroute s where s.line = ?1 and s.destroy=0) a " + | |
| 157 | 157 | "LEFT JOIN bsth_c_station b " + |
| 158 | 158 | " on a.station = b.id ORDER BY a.directions ASC ) k ORDER BY k.directions,k.station_route_code ASC", nativeQuery=true) |
| 159 | 159 | List<Object[]> usingSingle(Integer lineId); | ... | ... |
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
| ... | ... | @@ -24,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; |
| 24 | 24 | |
| 25 | 25 | import java.io.ByteArrayInputStream; |
| 26 | 26 | import java.io.File; |
| 27 | +import java.io.FileOutputStream; | |
| 27 | 28 | import java.io.InputStream; |
| 28 | 29 | import java.text.DecimalFormat; |
| 29 | 30 | import java.util.*; |
| ... | ... | @@ -511,57 +512,38 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 511 | 512 | */ |
| 512 | 513 | @Override |
| 513 | 514 | public Map<String, Object> usingSingle(Map<String, Object> map) { |
| 514 | - | |
| 515 | 515 | // 返回值map |
| 516 | 516 | Map<String, Object> resultMap = new HashMap<String,Object>(); |
| 517 | - | |
| 518 | 517 | try { |
| 519 | - | |
| 520 | 518 | // 获取线路ID |
| 521 | 519 | Integer lineId = map.get("lineId").equals("") ? 0 : Integer.parseInt(map.get("lineId").toString()); |
| 522 | - | |
| 523 | 520 | /** 查询线路信息 @param:<lineId:线路ID> */ |
| 524 | 521 | Line line = lineRepository.findOne(lineId); |
| 525 | - | |
| 526 | 522 | /** 查询线路信息下的站点路由信息 @param:<lineId:线路ID> */ |
| 527 | 523 | List<Object[]> objects = repository.usingSingle(lineId); |
| 528 | - | |
| 529 | 524 | if (objects.size()>0) { |
| 530 | - | |
| 531 | 525 | /** 获取配置文件里的ftp登录参数 */ |
| 532 | 526 | Map<String, Object> FTPParamMap = readPropertiesGetFTPParam(); |
| 533 | - | |
| 534 | 527 | // 压缩文件名 |
| 535 | 528 | String odlGzFileName = line.getLineCode() + ".txt.gz"; |
| 536 | - | |
| 537 | 529 | // txt文件名 |
| 538 | 530 | String textFileName = line.getLineCode() + ".txt"; |
| 539 | - | |
| 540 | 531 | // 创建一个ftp上传实例 |
| 541 | 532 | FTPClientUtils clientUtils = new FTPClientUtils(); |
| 542 | - | |
| 543 | 533 | // IP |
| 544 | 534 | String url = FTPParamMap.get("url").toString(); |
| 545 | - | |
| 546 | 535 | // 端口 |
| 547 | 536 | int port = Integer.valueOf(FTPParamMap.get("port").toString()); |
| 548 | - | |
| 549 | 537 | // 用户名 |
| 550 | 538 | String username = FTPParamMap.get("username").toString(); |
| 551 | - | |
| 552 | 539 | // 密码 |
| 553 | 540 | String password = FTPParamMap.get("password").toString(); |
| 554 | - | |
| 555 | 541 | // 相对路径 |
| 556 | 542 | String remotePath = FTPParamMap.get("remotePath").toString(); |
| 557 | - | |
| 558 | 543 | /** 如果已存在相同行单文件名则先删除 */ |
| 559 | 544 | clientUtils.deleteFtpFile(url, port, username, password, remotePath, odlGzFileName); |
| 560 | - | |
| 561 | 545 | clientUtils.deleteFtpFile(url, port, username, password, remotePath, textFileName); |
| 562 | - | |
| 563 | 546 | String textStr = ""; |
| 564 | - | |
| 565 | 547 | boolean tempTag = ishxType(objects); |
| 566 | 548 | |
| 567 | 549 | if(tempTag) |
| ... | ... | @@ -575,6 +557,12 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 575 | 557 | |
| 576 | 558 | InputStream input = new ByteArrayInputStream(textStr.getBytes("gbk")); |
| 577 | 559 | |
| 560 | + // FileOutputStream fos = new FileOutputStream("test.txt"); | |
| 561 | + /*int len = 0 ; | |
| 562 | + byte[] cbuf = new byte[1024]; | |
| 563 | + while((len = input.read(cbuf)) != -1) { | |
| 564 | + fos.write(cbuf, 0, len); | |
| 565 | + }*/ | |
| 578 | 566 | /** 生成txt文件,上传ftp */ |
| 579 | 567 | clientUtils.uploadFile(url, port, username, password, remotePath, textFileName, input); |
| 580 | 568 | |
| ... | ... | @@ -645,25 +633,23 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 645 | 633 | * @return String |
| 646 | 634 | */ |
| 647 | 635 | public String newTextFileToFTP(List<Object[]> objects,Integer lineId) { |
| 648 | - | |
| 649 | 636 | // 返回值String |
| 650 | 637 | String stationRStr = ""; |
| 651 | - | |
| 652 | 638 | // windows下的文本文件换行符 |
| 653 | 639 | //String enterStr = "\r\n"; |
| 654 | - | |
| 655 | 640 | // linux/unix下的文本文件换行符 |
| 656 | 641 | String enterStr = "\r"; |
| 657 | - | |
| 642 | + int defaultZdxh = 0; | |
| 658 | 643 | if(objects.size()>0) { |
| 659 | - | |
| 660 | 644 | for(int i = 0; i<objects.size();i++) { |
| 661 | - | |
| 645 | + defaultZdxh ++ ; | |
| 662 | 646 | // 经度 |
| 663 | - String lng = objects.get(i)[0].equals("") ? "" : objects.get(i)[0].toString(); | |
| 647 | + String lng = objects.get(i)[0].equals("") ? "0" : objects.get(i)[0].toString(); | |
| 664 | 648 | |
| 665 | 649 | // 纬度 |
| 666 | - String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); | |
| 650 | + String lat = objects.get(i)[1].equals("") ? "0" : objects.get(i)[1].toString(); | |
| 651 | + | |
| 652 | + Point point = new Point(Double.valueOf(lng), Double.valueOf(lat)); | |
| 667 | 653 | |
| 668 | 654 | lat = "\t" + lat; |
| 669 | 655 | |
| ... | ... | @@ -673,23 +659,32 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 673 | 659 | String stationMake = ""; |
| 674 | 660 | |
| 675 | 661 | if(stationMakeStr.equals("E")) { |
| 676 | - | |
| 677 | 662 | stationMake = "\t2"; |
| 678 | - | |
| 679 | 663 | }else { |
| 680 | - | |
| 681 | 664 | stationMake ="\t1"; |
| 682 | - | |
| 683 | 665 | } |
| 684 | 666 | |
| 685 | 667 | // 站点序号 |
| 686 | - String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); | |
| 668 | + // String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); | |
| 669 | + String stationNo = String.valueOf(defaultZdxh); | |
| 687 | 670 | |
| 688 | 671 | stationNo = "\t" + stationNo; |
| 689 | 672 | |
| 690 | 673 | // 站点编码 |
| 691 | 674 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 692 | 675 | |
| 676 | + int len = stationCode.length(); | |
| 677 | + if(len<8) { | |
| 678 | + int dx = 8 - len; | |
| 679 | + String addStr = ""; | |
| 680 | + for(int p =0;p<dx;p++) { | |
| 681 | + addStr = addStr + "0"; | |
| 682 | + } | |
| 683 | + stationCode = addStr + stationCode; | |
| 684 | + }else if(len>8){ | |
| 685 | + stationCode = stationCode.substring(8); | |
| 686 | + } | |
| 687 | + | |
| 693 | 688 | stationCode = "\t" +stationCode; |
| 694 | 689 | |
| 695 | 690 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString())*1000; |
| ... | ... | @@ -709,41 +704,33 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 709 | 704 | |
| 710 | 705 | // 限速 |
| 711 | 706 | String sleepStr = ""; |
| 712 | - | |
| 713 | 707 | // 方向 |
| 714 | 708 | int directions = objects.get(i)[8]==null ? null : Integer.valueOf(objects.get(i)[8].toString()); |
| 715 | - | |
| 716 | 709 | /** 获取路段路由信息 @pararm:<lineId:线路ID;directions:方向> */ |
| 717 | 710 | List<Object[]> sobje = routeRepository.sectionRouteVector(lineId,directions); |
| 718 | - | |
| 719 | 711 | if(sobje.size()==1) { |
| 720 | - | |
| 721 | - double dsleepStr = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(0)[2].toString()); | |
| 722 | - | |
| 723 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStr); | |
| 724 | - | |
| 712 | + int dsleepStr = sobje.get(0)[2] == null || sobje.get(0)[2].equals("") ? 60 : Integer.valueOf(sobje.get(0)[2].toString()); | |
| 713 | + sleepStr = "\t" + String.valueOf(dsleepStr); | |
| 725 | 714 | }else if(sobje.size()>1){ |
| 726 | - | |
| 727 | - /** 这里暂时只根据站点名称去匹配所在路段的限速值 ,如果路段名称"至"之前的地名与站点名称等同,就认为站点在路段上。 */ | |
| 728 | 715 | for(int j =0;j<sobje.size();j++) { |
| 729 | - | |
| 730 | - String sectionName = sobje.get(j)[3].toString(); | |
| 731 | - | |
| 732 | - String sectionNameA[] = sectionName.split("至"); | |
| 733 | - | |
| 734 | - if(stationName.equals(sectionNameA[0])){ | |
| 735 | - | |
| 736 | - /*sleepStr = sobje.get(j)[2].toString();*/ | |
| 737 | - | |
| 738 | - double dsleepStrt = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 739 | - | |
| 740 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStrt); | |
| 741 | - | |
| 716 | + double dsleepStrt = sobje.get(j)[2] == null || sobje.get(j)[2].equals("") ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 717 | + String pointsStr = sobje.get(j)[1]==null || sobje.get(j)[1].equals("") ? null : sobje.get(j)[1].toString(); | |
| 718 | + pointsStr = pointsStr.substring(11, pointsStr.length()-1); | |
| 719 | + List<Point> ps = new ArrayList<>(); | |
| 720 | + String[] pArray = pointsStr.split(","); | |
| 721 | + for(int a = 0; a <pArray.length; a++) { | |
| 722 | + String[] tmepA = pArray[a].split(" "); | |
| 723 | + Point temp = new Point(Double.valueOf(tmepA[0]), Double.valueOf(tmepA[1])); | |
| 724 | + ps.add(temp); | |
| 725 | + } | |
| 726 | + if(GeoUtils.isInSection(ps, point)) { | |
| 727 | + sleepStr = "\t" + String.valueOf((int)dsleepStrt); | |
| 728 | + break; | |
| 742 | 729 | } |
| 743 | - | |
| 744 | 730 | } |
| 745 | 731 | } |
| 746 | - | |
| 732 | + if(sleepStr.equals("")) | |
| 733 | + sleepStr = "\t" + "60"; | |
| 747 | 734 | stationRStr = stationRStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 748 | 735 | } |
| 749 | 736 | |
| ... | ... | @@ -762,9 +749,12 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 762 | 749 | for(int i = 0; i<objects.size();i++) { |
| 763 | 750 | if(Integer.valueOf(objects.get(i)[8].toString())==0) { |
| 764 | 751 | // 经度 |
| 765 | - String lng = objects.get(i)[0].equals("") ? "" : objects.get(i)[0].toString(); | |
| 752 | + String lng = objects.get(i)[0].equals("") ? "0" : objects.get(i)[0].toString(); | |
| 753 | + | |
| 766 | 754 | // 纬度 |
| 767 | - String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); | |
| 755 | + String lat = objects.get(i)[1].equals("") ? "0" : objects.get(i)[1].toString(); | |
| 756 | + | |
| 757 | + Point point = new Point(Double.valueOf(lng), Double.valueOf(lat)); | |
| 768 | 758 | lat = "\t" + lat; |
| 769 | 759 | // 站点类型 |
| 770 | 760 | String stationMakeStr = objects.get(i)[3].equals("") ? "" : objects.get(i)[3].toString(); |
| ... | ... | @@ -779,6 +769,17 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 779 | 769 | String stationNo = "\t" + xh; |
| 780 | 770 | // 站点编码 |
| 781 | 771 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 772 | + int len = stationCode.length(); | |
| 773 | + if(len<8) { | |
| 774 | + int dx = 8 - len; | |
| 775 | + String addStr = ""; | |
| 776 | + for(int p =0;p<dx;p++) { | |
| 777 | + addStr = addStr + "0"; | |
| 778 | + } | |
| 779 | + stationCode = addStr + stationCode; | |
| 780 | + }else if(len>8){ | |
| 781 | + stationCode = stationCode.substring(8); | |
| 782 | + } | |
| 782 | 783 | stationCode = "\t" +stationCode; |
| 783 | 784 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString())*1000; |
| 784 | 785 | String tempDistc = String.valueOf((int) dis); |
| ... | ... | @@ -794,20 +795,28 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 794 | 795 | /** 获取路段路由信息 @pararm:<lineId:线路ID;directions:方向> */ |
| 795 | 796 | List<Object[]> sobje = routeRepository.sectionRouteVector(lineId,directions); |
| 796 | 797 | if(sobje.size()==1) { |
| 797 | - double dsleepStr = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(0)[2].toString()); | |
| 798 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStr); | |
| 798 | + int dsleepStr = sobje.get(0)[2] == null || sobje.get(0)[2].equals("") ? 60 : Integer.valueOf(sobje.get(0)[2].toString()); | |
| 799 | + sleepStr = "\t" + String.valueOf(dsleepStr); | |
| 799 | 800 | }else if(sobje.size()>1){ |
| 800 | - /** 这里暂时只根据站点名称去匹配所在路段的限速值 ,如果路段名称"至"之前的地名与站点名称等同,就认为站点在路段上。 */ | |
| 801 | 801 | for(int j =0;j<sobje.size();j++) { |
| 802 | - String sectionName = sobje.get(j)[3].toString(); | |
| 803 | - String sectionNameA[] = sectionName.split("至"); | |
| 804 | - if(stationName.equals(sectionNameA[0])){ | |
| 805 | - /*sleepStr = sobje.get(j)[2].toString();*/ | |
| 806 | - double dsleepStrt = sobje.get(0)[2] == null ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 807 | - sleepStr = "\t" + new DecimalFormat("0").format(dsleepStrt); | |
| 802 | + double dsleepStrt = sobje.get(j)[2] == null || sobje.get(j)[2].equals("") ? 60d : Double.valueOf(sobje.get(j)[2].toString()); | |
| 803 | + String pointsStr = sobje.get(j)[1]==null || sobje.get(j)[1].equals("") ? null : sobje.get(j)[1].toString(); | |
| 804 | + pointsStr = pointsStr.substring(11, pointsStr.length()-1); | |
| 805 | + List<Point> ps = new ArrayList<>(); | |
| 806 | + String[] pArray = pointsStr.split(","); | |
| 807 | + for(int a = 0; a <pArray.length; a++) { | |
| 808 | + String[] tmepA = pArray[a].split(" "); | |
| 809 | + Point temp = new Point(Double.valueOf(tmepA[0]), Double.valueOf(tmepA[1])); | |
| 810 | + ps.add(temp); | |
| 811 | + } | |
| 812 | + if(GeoUtils.isInSection(ps, point)) { | |
| 813 | + sleepStr = "\t" + String.valueOf((int)dsleepStrt); | |
| 814 | + break; | |
| 808 | 815 | } |
| 809 | 816 | } |
| 810 | 817 | } |
| 818 | + if(sleepStr.equals("")) | |
| 819 | + sleepStr = "\t" + "60"; | |
| 811 | 820 | xh++; |
| 812 | 821 | restStr = restStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 813 | 822 | } | ... | ... |
src/main/resources/static/pages/base/line/add.html
| ... | ... | @@ -289,14 +289,20 @@ |
| 289 | 289 | </div> |
| 290 | 290 | <!-- 线路规划类型 (* 必填项) END --> |
| 291 | 291 | |
| 292 | - <!-- 开辟日期 START --> | |
| 292 | + <!--大间隔等级 START --> | |
| 293 | 293 | <div class="col-md-6"> |
| 294 | - <label class="control-label col-md-5"> 开辟日期 : </label> | |
| 294 | + <label class="control-label col-md-5"> 大间隔等级 : </label> | |
| 295 | 295 | <div class="col-md-4"> |
| 296 | - <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期"> | |
| 296 | + <select name="spacGrade" class="form-control" id="spacGradeSelect"> | |
| 297 | + <option value="">-- 请选择大间隔等级 --</option> | |
| 298 | + <option value="1">一级</option> | |
| 299 | + <option value="2">二级</option> | |
| 300 | + <option value="3">三级</option> | |
| 301 | + <option value="4">四级</option> | |
| 302 | + </select> | |
| 297 | 303 | </div> |
| 298 | 304 | </div> |
| 299 | - <!-- 开辟日期 END --> | |
| 305 | + <!-- 大间隔等级END --> | |
| 300 | 306 | </div> |
| 301 | 307 | <!-- 表单分组组件 form-group START --> |
| 302 | 308 | |
| ... | ... | @@ -398,6 +404,15 @@ |
| 398 | 404 | </div> |
| 399 | 405 | </div> |
| 400 | 406 | <!-- 空调车辆数 END --> |
| 407 | + | |
| 408 | + <!-- 开辟日期 START --> | |
| 409 | + <div class="col-md-6"> | |
| 410 | + <label class="control-label col-md-5"> 开辟日期 : </label> | |
| 411 | + <div class="col-md-4"> | |
| 412 | + <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期"> | |
| 413 | + </div> | |
| 414 | + </div> | |
| 415 | + <!-- 开辟日期 END --> | |
| 401 | 416 | </div> |
| 402 | 417 | <!-- 表单分组组件 form-group END --> |
| 403 | 418 | ... | ... |
src/main/resources/static/pages/base/line/details.html
| ... | ... | @@ -282,14 +282,20 @@ |
| 282 | 282 | </div> |
| 283 | 283 | <!-- 线路规划类型 (* 必填项) END --> |
| 284 | 284 | |
| 285 | - <!-- 开辟日期 START --> | |
| 285 | + <!--大间隔等级 START --> | |
| 286 | 286 | <div class="col-md-6"> |
| 287 | - <label class="control-label col-md-5"> 开辟日期 : </label> | |
| 287 | + <label class="control-label col-md-5"> 大间隔等级 : </label> | |
| 288 | 288 | <div class="col-md-4"> |
| 289 | - <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期"> | |
| 289 | + <select name="spacGrade" class="form-control" id="spacGradeSelect"> | |
| 290 | + <option value="">-- 请选择大间隔等级 --</option> | |
| 291 | + <option value="1">一级</option> | |
| 292 | + <option value="2">二级</option> | |
| 293 | + <option value="3">三级</option> | |
| 294 | + <option value="4">四级</option> | |
| 295 | + </select> | |
| 290 | 296 | </div> |
| 291 | 297 | </div> |
| 292 | - <!-- 开辟日期 END --> | |
| 298 | + <!-- 大间隔等级END --> | |
| 293 | 299 | </div> |
| 294 | 300 | <!-- 表单分组组件 form-group START --> |
| 295 | 301 | |
| ... | ... | @@ -391,6 +397,15 @@ |
| 391 | 397 | </div> |
| 392 | 398 | </div> |
| 393 | 399 | <!-- 空调车辆数 END --> |
| 400 | + | |
| 401 | + <!-- 开辟日期 START --> | |
| 402 | + <div class="col-md-6"> | |
| 403 | + <label class="control-label col-md-5"> 开辟日期 : </label> | |
| 404 | + <div class="col-md-4"> | |
| 405 | + <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期"> | |
| 406 | + </div> | |
| 407 | + </div> | |
| 408 | + <!-- 开辟日期 END --> | |
| 394 | 409 | </div> |
| 395 | 410 | <!-- 表单分组组件 form-group END --> |
| 396 | 411 | ... | ... |
src/main/resources/static/pages/base/line/edit.html
| ... | ... | @@ -290,14 +290,20 @@ |
| 290 | 290 | </div> |
| 291 | 291 | <!-- 线路规划类型 (* 必填项) END --> |
| 292 | 292 | |
| 293 | - <!-- 开辟日期 START --> | |
| 293 | + <!--大间隔等级 START --> | |
| 294 | 294 | <div class="col-md-6"> |
| 295 | - <label class="control-label col-md-5"> 开辟日期 : </label> | |
| 295 | + <label class="control-label col-md-5"> 大间隔等级 : </label> | |
| 296 | 296 | <div class="col-md-4"> |
| 297 | - <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期"> | |
| 297 | + <select name="spacGrade" class="form-control" id="spacGradeSelect"> | |
| 298 | + <option value="">-- 请选择大间隔等级 --</option> | |
| 299 | + <option value="1">一级</option> | |
| 300 | + <option value="2">二级</option> | |
| 301 | + <option value="3">三级</option> | |
| 302 | + <option value="4">四级</option> | |
| 303 | + </select> | |
| 298 | 304 | </div> |
| 299 | 305 | </div> |
| 300 | - <!-- 开辟日期 END --> | |
| 306 | + <!-- 大间隔等级END --> | |
| 301 | 307 | </div> |
| 302 | 308 | <!-- 表单分组组件 form-group START --> |
| 303 | 309 | |
| ... | ... | @@ -399,6 +405,15 @@ |
| 399 | 405 | </div> |
| 400 | 406 | </div> |
| 401 | 407 | <!-- 空调车辆数 END --> |
| 408 | + | |
| 409 | + <!-- 开辟日期 START --> | |
| 410 | + <div class="col-md-6"> | |
| 411 | + <label class="control-label col-md-5"> 开辟日期 : </label> | |
| 412 | + <div class="col-md-4"> | |
| 413 | + <input type="text" class="form-control" name="openDate" id="openDateInput" placeholder="开辟日期"> | |
| 414 | + </div> | |
| 415 | + </div> | |
| 416 | + <!-- 开辟日期 END --> | |
| 402 | 417 | </div> |
| 403 | 418 | <!-- 表单分组组件 form-group END --> |
| 404 | 419 | ... | ... |
src/main/resources/static/pages/base/timesmodel/bctz.html
| ... | ... | @@ -18,9 +18,10 @@ |
| 18 | 18 | <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_bctz"> |
| 19 | 19 | <thead> |
| 20 | 20 | <tr role="row" class="heading"> |
| 21 | - <th width="33%">路牌</th> | |
| 22 | - <th width="33%">当前班次数</th> | |
| 23 | - <th width="33%">调整班次数</th> | |
| 21 | + <th width="25%">路牌编码</th> | |
| 22 | + <th width="25%">路牌名称</th> | |
| 23 | + <th width="25%">当前班次数</th> | |
| 24 | + <th width="25%">调整班次数</th> | |
| 24 | 25 | </tr> |
| 25 | 26 | </thead> |
| 26 | 27 | <tbody></tbody> |
| ... | ... | @@ -40,13 +41,16 @@ |
| 40 | 41 | {{each list as obj i }} |
| 41 | 42 | <tr role="row" class="filter"> |
| 42 | 43 | <td> |
| 43 | - <input type="text" readonly class="form-control form-filter input-sm" name="lpname_{{i+1}}" value="{{obj.lpNo}}"> | |
| 44 | + <input type="text" readonly class="form-control form-filter input-sm" name="lpno_{{i+1}}" value="{{obj.lpNo}}"> | |
| 45 | + </td> | |
| 46 | + <td> | |
| 47 | + <input type="text" readonly class="form-control form-filter input-sm" name="lpname_{{i+1}}" value="{{obj.lpName}}"> | |
| 44 | 48 | </td> |
| 45 | 49 | <td> |
| 46 | 50 | <input type="text" readonly class="form-control form-filter input-sm" name="dqbc_{{i+1}}" value="{{obj.bcs}}"> |
| 47 | 51 | </td> |
| 48 | 52 | <td> |
| 49 | - <input type="number" class="form-control form-filter input-sm" name="{{i+1}}" value="{{obj.bcs}}"> | |
| 53 | + <input type="number" class="form-control form-filter input-sm" name="{{i+1}}" value="{{obj.bcs}}" min="0"> | |
| 50 | 54 | </td> |
| 51 | 55 | </tr> |
| 52 | 56 | {{/each}} |
| ... | ... | @@ -57,230 +61,239 @@ |
| 57 | 61 | {{/if}} |
| 58 | 62 | </script> |
| 59 | 63 | <script type="text/javascript"> |
| 60 | -$('#tzbc_mobal').on('tzbcMobal.show', function(e,obj,cardata,bf){ | |
| 61 | - setTimeout(function(){ | |
| 62 | - // 加载延迟200毫秒显示mobal | |
| 63 | - $('#tzbc_mobal').modal({show : true,backdrop: 'static', keyboard: false}); | |
| 64 | - },200); | |
| 65 | - // 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。 | |
| 66 | - $('#tzbc_mobal').on('show.bs.modal', function () { | |
| 67 | - // 把数据填充到模版中 | |
| 68 | - var tbodyHtml = template('bctz_temp',{list:cardata}); | |
| 69 | - // 把渲染好的模版html文本追加到表格中 | |
| 70 | - $('#datatable_bctz tbody').html(tbodyHtml); | |
| 71 | - }); | |
| 72 | - // 获取表单元素 | |
| 73 | - var form = $('#tzbcForm'); | |
| 74 | - // 错误提示元素 | |
| 75 | - var tzbcAlert = $('#tzbcAlert', form); | |
| 76 | - // 下一步点击事件 | |
| 77 | - $('#tzbcnext').on('click', function() { | |
| 78 | - form.submit();// 表单提交 | |
| 79 | - }); | |
| 80 | - // 表单验证 | |
| 81 | - form.validate({ | |
| 82 | - errorElement : 'span', | |
| 83 | - errorClass : 'help-block help-block-error', | |
| 84 | - focusInvalid : false, | |
| 85 | - rules : { | |
| 86 | - }, | |
| 87 | - invalidHandler : function(event, validator) { | |
| 88 | - tzbcAlert.show(); | |
| 89 | - App.scrollTo(reladplusname, -200); | |
| 90 | - }, | |
| 91 | - highlight : function(element) { | |
| 92 | - $(element).closest('.form-group').addClass('has-error'); | |
| 93 | - }, | |
| 94 | - unhighlight : function(element) { | |
| 95 | - $(element).closest('.form-group').removeClass('has-error'); | |
| 96 | - }, | |
| 97 | - success : function(label) { | |
| 98 | - label.closest('.form-group').removeClass('has-error'); | |
| 99 | - }, | |
| 100 | - submitHandler : function(f) { | |
| 101 | - // 1、 获取表单内容,并序列化 | |
| 102 | - var params = form.serializeJSON(); | |
| 103 | - // 2、 调整路牌对应的班次总数 | |
| 104 | - updFormParams(params); | |
| 105 | - // 3、调整班次.并重新给定班次序号和发车序号.再确定首末班车时间.最后渲染数据 | |
| 106 | - obj.data(bf.tzsmbcsj(bf.setbcsAndfcno(tzbcDate()), | |
| 107 | - obj.configuration.dataMap.smbcsjArr, | |
| 108 | - obj.configuration.dataMap.ccsjArr, | |
| 109 | - obj.configuration.dataMap.cclcArr, | |
| 110 | - obj.configuration.dataMap.qdzArr, | |
| 111 | - obj.configuration.dataMap.lbsj)); | |
| 112 | - // 3、记录早操.并保存历史班次数据 | |
| 113 | - obj.addHistory(); | |
| 114 | - // 5、隐藏错误提示 | |
| 115 | - tzbcAlert.hide(); | |
| 116 | - // 6、隐藏 reladplus_mobal 弹出层 | |
| 117 | - $('#tzbc_mobal').modal('hide'); | |
| 118 | - } | |
| 119 | - }); | |
| 120 | - | |
| 121 | - /** | |
| 122 | - * @description : (TODO) 调整路牌对应的班次总数. | |
| 123 | - * | |
| 124 | - * ❀ 根据路牌对应班次的数值,把路牌对应的当前班次总数修改成调整后的班次总数,并转为数值类型以及把空值转为0. | |
| 125 | - * | |
| 126 | - * @params : [p--表单序列化对象]. | |
| 127 | - */ | |
| 128 | - function updFormParams(p) { | |
| 129 | - for(var i= 0;i<cardata.length;i++) { | |
| 130 | - if(p[i+1] != undefined) { | |
| 131 | - if(p[i+1]=='') | |
| 132 | - cardata[i].tzbc = 0; | |
| 133 | - else | |
| 134 | - cardata[i].tzbc = parseInt(p[i+1]); | |
| 64 | +$('#tzbc_mobal').on('tzbcMobal.show', function(e,obj,cardata,bf,error){ | |
| 65 | + if(obj != null && obj !='' && bf != null && bf!='' && cardata.length>0){ | |
| 66 | + // 延迟200毫秒显示mobal | |
| 67 | + setTimeout(function(){$('#tzbc_mobal').modal({show : true,backdrop: 'static', keyboard: false});},200); | |
| 68 | + // 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。 | |
| 69 | + $('#tzbc_mobal').on('show.bs.modal', function () { | |
| 70 | + // 把数据填充到模版中 | |
| 71 | + var tbodyHtml = template('bctz_temp',{list:cardata}); | |
| 72 | + // 把渲染好的模版html文本追加到表格中 | |
| 73 | + $('#datatable_bctz tbody').html(tbodyHtml); | |
| 74 | + }); | |
| 75 | + // 获取表单元素 | |
| 76 | + var form = $('#tzbcForm'); | |
| 77 | + // 错误提示元素 | |
| 78 | + var tzbcAlert = $('#tzbcAlert', form); | |
| 79 | + // 下一步点击事件 | |
| 80 | + $('#tzbcnext').on('click', function() { | |
| 81 | + form.submit();// 表单提交 | |
| 82 | + }); | |
| 83 | + // 表单验证 | |
| 84 | + form.validate({ | |
| 85 | + errorElement : 'span', | |
| 86 | + errorClass : 'help-block help-block-error', | |
| 87 | + focusInvalid : false, | |
| 88 | + rules : { | |
| 89 | + }, | |
| 90 | + invalidHandler : function(event, validator) { | |
| 91 | + tzbcAlert.show(); | |
| 92 | + App.scrollTo(reladplusname, -200); | |
| 93 | + }, | |
| 94 | + highlight : function(element) { | |
| 95 | + $(element).closest('.form-group').addClass('has-error'); | |
| 96 | + }, | |
| 97 | + unhighlight : function(element) { | |
| 98 | + $(element).closest('.form-group').removeClass('has-error'); | |
| 99 | + }, | |
| 100 | + success : function(label) { | |
| 101 | + label.closest('.form-group').removeClass('has-error'); | |
| 102 | + }, | |
| 103 | + submitHandler : function(f) { | |
| 104 | + // 1、 获取表单内容,并序列化 | |
| 105 | + var params = form.serializeJSON(); | |
| 106 | + var dataMap = obj.configuration.dataMap; | |
| 107 | + // 2、 调整路牌对应的班次总数 | |
| 108 | + updFormParams(params); | |
| 109 | + // 3、调整班次.并重新给定班次序号和发车序号.再确定首末班车时间.最后渲染数据. | |
| 110 | + var jar = bf.tzsmbcsj01(bf.setbcsAndfcno(tzbcDate()), | |
| 111 | + obj.configuration.dataMap.smbcsjArr, | |
| 112 | + obj.configuration.dataMap.ccsjArr, | |
| 113 | + obj.configuration.dataMap.cclcArr, | |
| 114 | + obj.configuration.dataMap.qdzArr, | |
| 115 | + obj.configuration.dataMap.lbsj,dataMap); | |
| 116 | + obj.data(bf.addjcclcbc01(obj.configuration.taskTypes,jar,dataMap, | |
| 117 | + obj.configuration.stopAraay,obj.configuration.dataMap.map)); | |
| 118 | + // 3、记录早操.并保存历史班次数据 | |
| 119 | + obj.addHistory(); | |
| 120 | + // 5、隐藏错误提示 | |
| 121 | + tzbcAlert.hide(); | |
| 122 | + // 6、隐藏 reladplus_mobal 弹出层 | |
| 123 | + $('#tzbc_mobal').modal('hide'); | |
| 124 | + } | |
| 125 | + }); | |
| 126 | + | |
| 127 | + /** | |
| 128 | + * @description : (TODO) 调整路牌对应的班次总数. | |
| 129 | + * | |
| 130 | + * ❀ 根据路牌对应班次的数值,把路牌对应的当前班次总数修改成调整后的班次总数,并转为数值类型以及把空值转为0. | |
| 131 | + * | |
| 132 | + * @params : [p--表单序列化对象]. | |
| 133 | + */ | |
| 134 | + function updFormParams(p) { | |
| 135 | + for(var i= 0;i<cardata.length;i++) { | |
| 136 | + if(p[i+1] != undefined) { | |
| 137 | + if(p[i+1]=='') | |
| 138 | + cardata[i].tzbc = 0; | |
| 139 | + else | |
| 140 | + cardata[i].tzbc = parseInt(p[i+1]); | |
| 141 | + } | |
| 135 | 142 | } |
| 136 | 143 | } |
| 137 | - } | |
| 138 | - | |
| 139 | - /** | |
| 140 | - * @description : (TODO)调整班次. | |
| 141 | - * | |
| 142 | - * @return : 返回一个数组.这里返回的是一个调整完班次数后的数组. | |
| 143 | - */ | |
| 144 | - function tzbcDate() { | |
| 145 | - // 1、获取当前所有的班次数. | |
| 146 | - var dr = obj.getDataArray(), | |
| 147 | - result = new Array();// 定义返回数组对象. | |
| 148 | - // 2、遍历路牌对应的班次总数. | |
| 149 | - for(var i = 0 ; i<cardata.length;i++) { | |
| 150 | - var zcbcsz = new Array(),// 定义当前路牌下的正常班次数组. | |
| 151 | - zwlbbcsz = new Array(),// 定义当前路牌下的早晚例保、吃饭班次数组. | |
| 152 | - jccbcs = 0,// 进出场班次数.这个值是为了计算总班次数时除去时间为空的班次 | |
| 153 | - jccbcsz = new Array();// 定义当前路牌下的进出场班次数组. | |
| 154 | - // 3、遍历当前所有的班次数. | |
| 155 | - for(var j = 0 ;j<dr.length;j++) { | |
| 156 | - // 4、判断当前遍历的班次是否属于当前路牌对应的班次数组对象. | |
| 157 | - if(cardata[i].lpNo == dr[j].parent && dr[j].bcsj>0 ){ | |
| 158 | - // 5、把当前班次添加到上序定义的不同班次数组中. | |
| 159 | - if(dr[j].bcType =='bd' || dr[j].bcType=='lc' || dr[j].bcType =='cf') | |
| 160 | - zwlbbcsz.push(dr[j]);// 添加到早晚例保、吃饭班次数组中. | |
| 161 | - else if(dr[j].bcType=='in' || dr[j].bcType =='out') | |
| 162 | - jccbcs++; | |
| 163 | - else | |
| 164 | - zcbcsz.push(dr[j]);// 添加到正常班次数组. | |
| 165 | - } | |
| 166 | - if(cardata[i].lpNo == dr[j].parent && (dr[j].bcType=='in' || dr[j].bcType =='out')) { | |
| 167 | - jccbcsz.push(dr[j]);// 添加到进出场班次数组中. | |
| 144 | + | |
| 145 | + /** | |
| 146 | + * @description : (TODO)调整班次. | |
| 147 | + * | |
| 148 | + * @return : 返回一个数组.这里返回的是一个调整完班次数后的数组. | |
| 149 | + */ | |
| 150 | + function tzbcDate() { | |
| 151 | + // 1、获取当前所有的班次数. | |
| 152 | + var dr = obj.getDataArray(), | |
| 153 | + result = new Array();// 定义返回数组对象. | |
| 154 | + // 2、遍历路牌对应的班次总数. | |
| 155 | + for(var i = 0 ; i<cardata.length;i++) { | |
| 156 | + var zcbcsz = new Array(),// 定义当前路牌下的正常班次数组. | |
| 157 | + zwlbbcsz = new Array(),// 定义当前路牌下的早晚例保、吃饭班次数组. | |
| 158 | + jccbcs = 0,// 进出场班次数.这个值是为了计算总班次数时除去时间为空的班次 | |
| 159 | + jccbcsz = new Array();// 定义当前路牌下的进出场班次数组. | |
| 160 | + // 3、遍历当前所有的班次数. | |
| 161 | + for(var j = 0 ;j<dr.length;j++) { | |
| 162 | + // 4、判断当前遍历的班次是否属于当前路牌对应的班次数组对象. | |
| 163 | + if(cardata[i].lpNo == dr[j].parent && dr[j].bcsj>0 ){ | |
| 164 | + // 5、把当前班次添加到上序定义的不同班次数组中. | |
| 165 | + if(dr[j].bcType =='bd' || dr[j].bcType=='lc' || dr[j].bcType =='cf') | |
| 166 | + zwlbbcsz.push(dr[j]);// 添加到早晚例保、吃饭班次数组中. | |
| 167 | + else if(dr[j].bcType=='in' || dr[j].bcType =='out') | |
| 168 | + jccbcs++; | |
| 169 | + else | |
| 170 | + zcbcsz.push(dr[j]);// 添加到正常班次数组. | |
| 171 | + } | |
| 172 | + if(cardata[i].lpNo == dr[j].parent && (dr[j].bcType=='in' || dr[j].bcType =='out')) { | |
| 173 | + jccbcsz.push(dr[j]);// 添加到进出场班次数组中. | |
| 174 | + } | |
| 168 | 175 | } |
| 169 | - } | |
| 170 | - // 6、调整班次 | |
| 171 | - result = result.concat(tcbcgz(bf.pxarr(zcbcsz),cardata[i].tzbc,zwlbbcsz,bf.pxarr(jccbcsz),jccbcs,cardata[i])); | |
| 176 | + // 6、调整班次 | |
| 177 | + result = result.concat(tcbcgz(bf.pxarr(zcbcsz),cardata[i].tzbc,zwlbbcsz,bf.pxarr(jccbcsz),jccbcs,cardata[i])); | |
| 178 | + } | |
| 179 | + return result; | |
| 172 | 180 | } |
| 173 | - return result; | |
| 174 | - } | |
| 175 | - | |
| 176 | - /** | |
| 177 | - * @description : (TODO) | |
| 178 | - * | |
| 179 | - * @params : [ar-- 当前路牌下的正常班次数组;num--当前路牌对应的班次总数;qa--当前路牌下的早晚例保、吃饭班次数组,ja--当前路牌下的进出场班次数组] | |
| 180 | - * | |
| 181 | - * @return : 返回一个数组.这里返回一个根据班次总数调整过车班次数组 | |
| 182 | - */ | |
| 183 | - function tcbcgz(ar,num,qa,ja,jccbcs,cara) { | |
| 184 | - var rsbcA = new Array(); | |
| 185 | - if(ar.length>0) { | |
| 186 | - var ra_ = new Array(); | |
| 187 | - var _dx = num-jccbcs;// 班次总数值 - 进出时间大于零的班次 = 正常班次数 | |
| 188 | - var lastbcsjStr = ar[ar.length-1].ARRIVALTIME;// 标记调整班次之前最后一个班次的达到时间 | |
| 189 | - var fcno_ = Math.abs(ar.length+jccbcs-num),// 调整班次差 | |
| 190 | - tempS = '';// 标记调整班次是添加还是剔除[jq--剔除;add--添加] | |
| 191 | - var fxdm = bf.dirDmToIndex(ar[ar.length-1].xlDir);// 标记调整班次之前最后一个班次的方向 | |
| 192 | - // 如果调整班次差是成对的,那么方向一致.否则改变方向 | |
| 193 | - if(fcno_%2!=0) | |
| 194 | - fxdm = bf.getfx(1,fxdm);// 改变方向 | |
| 195 | - // 如果当前路牌的班次总数大于等于调整后的班次总数则截取班次,反之添加班次 | |
| 196 | - if(ar.length>=_dx) { | |
| 197 | - ra_ = ar.splice(0,_dx);// 截取班次数(这里从下标0开始截取到 对应的班次总数值) | |
| 198 | - tempS = 'jq'; | |
| 199 | - }else if(ar.length<_dx) { | |
| 200 | - var tzsj_ = obj.configuration.dataMap.ztjxA[fxdm],sh = ar[ar.length-1]; | |
| 201 | - var startTime = new Date(); | |
| 202 | - var strArray = sh.ARRIVALTIME.split(':'); | |
| 203 | - startTime.setHours(parseInt(strArray[0])); | |
| 204 | - startTime.setMinutes(parseInt(strArray[1]) + tzsj_); | |
| 205 | - bf.addbc(obj,sh,startTime,tzsj_,sh.fcno + 1,ar,_dx - ar.length); | |
| 206 | - ra_ = ar; | |
| 207 | - tempS = 'add'; | |
| 208 | - } | |
| 209 | - rsbcA = tzsj(ra_,qa,ja,lastbcsjStr,fcno_,tempS,fxdm); | |
| 210 | - }else if(ar.length==0) { | |
| 211 | - rsbcA = bf.addlpbc(obj,bf,cara.lpNo,num); | |
| 181 | + | |
| 182 | + /** | |
| 183 | + * @description : (TODO) | |
| 184 | + * | |
| 185 | + * @params : [ar-- 当前路牌下的正常班次数组;num--当前路牌对应的班次总数;qa--当前路牌下的早晚例保、吃饭班次数组,ja--当前路牌下的进出场班次数组] | |
| 186 | + * | |
| 187 | + * @return : 返回一个数组.这里返回一个根据班次总数调整过车班次数组 | |
| 188 | + */ | |
| 189 | + function tcbcgz(ar,num,qa,ja,jccbcs,cara) { | |
| 190 | + var rsbcA = new Array(); | |
| 191 | + if(ar.length>0) { | |
| 192 | + var ra_ = new Array(); | |
| 193 | + var _dx = num-jccbcs;// 班次总数值 - 进出时间大于零的班次 = 正常班次数 | |
| 194 | + var lastbcsjStr = ar[ar.length-1].ARRIVALTIME;// 标记调整班次之前最后一个班次的达到时间 | |
| 195 | + var fcno_ = Math.abs(ar.length+jccbcs-num),// 调整班次差 | |
| 196 | + tempS = '';// 标记调整班次是添加还是剔除[jq--剔除;add--添加] | |
| 197 | + var fxdm = bf.dirDmToIndex(ar[ar.length-1].xlDir);// 标记调整班次之前最后一个班次的方向 | |
| 198 | + // 如果调整班次差是成对的,那么方向一致.否则改变方向 | |
| 199 | + if(fcno_%2!=0) | |
| 200 | + fxdm = bf.getfx(1,fxdm);// 改变方向 | |
| 201 | + // 如果当前路牌的班次总数大于等 于调整后的班次总数则截取班次,反之添加班次 | |
| 202 | + if(ar.length>=_dx) { | |
| 203 | + ra_ = ar.splice(0,_dx);// 截取班次数(这里从下标0开始截取到 对应的班次总数值) | |
| 204 | + tempS = 'jq'; | |
| 205 | + }else if(ar.length<_dx) { | |
| 206 | + var sh = ar[ar.length-1]; | |
| 207 | + var cctag = bf.dirDmToIndex(ar[ar.length-1].xlDir);// 标记调整班次之前最后一个班次的方向 | |
| 208 | + cctag = bf.getfx(1,cctag);// 改变方向 | |
| 209 | + var startTime = new Date(); | |
| 210 | + var strArray = sh.ARRIVALTIME.split(':'); | |
| 211 | + startTime.setHours(parseInt(strArray[0])); | |
| 212 | + startTime.setMinutes(parseInt(strArray[1])); | |
| 213 | + var tzjx = bf.isgfsjd01(startTime,obj.configuration.dataMap) ? obj.configuration.dataMap.gftzsj[cctag] : obj.configuration.dataMap.dgtzsj[cctag]; | |
| 214 | + startTime.setMinutes(parseInt(strArray[1]) + tzjx); | |
| 215 | + bf.addbc(obj , sh , startTime , tzjx, (sh.fcno + 1),ar, (_dx - ar.length)); | |
| 216 | + ra_ = ar; | |
| 217 | + tempS = 'add'; | |
| 218 | + } | |
| 219 | + // rsbcA = tzsj(ra_,qa,ja,lastbcsjStr,fcno_,tempS,fxdm); | |
| 220 | + rsbcA = ra_; | |
| 221 | + }else if(ar.length==0) { | |
| 222 | + rsbcA = bf.addlpbc(obj,bf,cara.lpNo,num); | |
| 223 | + } | |
| 224 | + return rsbcA; | |
| 212 | 225 | } |
| 213 | - return rsbcA; | |
| 214 | - } | |
| 215 | - | |
| 216 | - /** | |
| 217 | - * @description : (TODO) 调整时间 | |
| 218 | - * | |
| 219 | - * @params : [a1-- 当前路牌下的正常班次数组;a2--当前路牌下的早晚例保、吃饭班次数组;a3--当前路牌下的进出场班次数组] | |
| 220 | - * | |
| 221 | - * @return : 返回一个数组.这里返回的是一个调整时间后的班次数组 | |
| 222 | - */ | |
| 223 | - function tzsj(a1,a2,a3,sjstr,fcno_,tempS,fxdm) { | |
| 224 | - return a1.concat(jsjclc(a1[a1.length-1].ARRIVALTIME,a2,a3,sjstr,fcno_,tempS,fxdm)); | |
| 225 | - } | |
| 226 | - | |
| 227 | - /** | |
| 228 | - * @description : (TODO)调整进出场、离场班次 | |
| 229 | - * | |
| 230 | - * @params : [st--当前路牌最后一个班次的到达时间;ar--当前路牌下的早晚例保、吃饭班次数组,pa--当前路牌下的进出场班次数组] | |
| 231 | - * | |
| 232 | - * @return | |
| 233 | - */ | |
| 234 | - function jsjclc(st,ar,pa,sjstr,fcno_,tempS,fxdm) { | |
| 235 | - console.log('{' + tempS + '......}') | |
| 236 | - // 1、修改进出场班次. | |
| 237 | - for(var p = 0;p<pa.length;p++) { | |
| 238 | - // A)、如果当前班次的发车时间等于 在没有调整班次总数之前的最后一个班次的到达时间,则这个班次是在没有调整班次之前的那个进场班次 | |
| 239 | - if(pa[p].fcsj == sjstr && pa[p].bcType =='in') { | |
| 240 | - pa[p].fcsj = st; | |
| 241 | - pa[p].bcsj = obj.configuration.dataMap.ccsjArr[fxdm]; | |
| 242 | - pa[p].xlDir = obj.configuration.dataMap.dira[fxdm]; | |
| 243 | - var _s = bf.getDateTime(st); | |
| 244 | - var _tt = new Date(_s); | |
| 245 | - _tt.setMinutes(_tt.getMinutes()+pa[p].bcsj); | |
| 246 | - var ddsjStr = bf.getTimeStr(_tt); | |
| 247 | - pa[p].ARRIVALTIME = ddsjStr; | |
| 248 | - if(tempS =='add') | |
| 249 | - pa[p].fcno = pa[p].fcno+fcno_; | |
| 250 | - else if(tempS =='jq') | |
| 251 | - pa[p].fcno = pa[p].fcno-fcno_; | |
| 252 | - } | |
| 253 | - // B)、剔除掉 当前班次的到达时间大于调整班次过后最后一个班次到达时间的班次 | |
| 254 | - if((bf.getDateTime(pa[p].ARRIVALTIME)-bf.getDateTime(st))/60000 > pa[p].bcsj) { | |
| 255 | - console.log('{' + pa[p].lpNo + '----' + pa[p].ARRIVALTIME + '----' + st + '}'); | |
| 256 | - console.log('修改进出场班次时...该班次的到达时间大于了最后一个班次的到达时间,应该剔除掉!'); | |
| 257 | - pa.splice(p,1); | |
| 258 | - } | |
| 226 | + | |
| 227 | + /** | |
| 228 | + * @description : (TODO) 调整时间 | |
| 229 | + * | |
| 230 | + * @params : [a1-- 当前路牌下的正常班次数组;a2--当前路牌下的早晚例保、吃饭班次数组;a3--当前路牌下的进出场班次数组] | |
| 231 | + * | |
| 232 | + * @return : 返回一个数组.这里返回的是一个调整时间后的班次数组 | |
| 233 | + */ | |
| 234 | + function tzsj(a1,a2,a3,sjstr,fcno_,tempS,fxdm) { | |
| 235 | + return a1.concat(jsjclc(a1[a1.length-1].ARRIVALTIME,a2,a3,sjstr,fcno_,tempS,fxdm)); | |
| 259 | 236 | } |
| 260 | - // 2、修改晚例保班次. | |
| 261 | - for(var i = 0 ; i<ar.length;i++) { | |
| 262 | - // A)、修改离场班次属性值 | |
| 263 | - if(ar[i].bcType=='lc') { | |
| 264 | - ar[i].fcsj = ddsjStr; | |
| 265 | - ar[i].xlDir = obj.configuration.dataMap.dira[fxdm]; | |
| 266 | - var _lcs = bf.getDateTime(ddsjStr); | |
| 267 | - var _lctt = new Date(_lcs); | |
| 268 | - _lctt.setMinutes(_lctt.getMinutes()+ar[i].bcsj); | |
| 269 | - ar[i].ARRIVALTIME = bf.getTimeStr(_lctt); | |
| 270 | - if(tempS =='add') | |
| 271 | - ar[i].fcno = ar[i].fcno+fcno_; | |
| 272 | - else if(tempS =='jq') | |
| 273 | - ar[i].fcno = ar[i].fcno-fcno_; | |
| 237 | + | |
| 238 | + /** | |
| 239 | + * @description : (TODO)调整进出场、离场班次 | |
| 240 | + * | |
| 241 | + * @params : [st--当前路牌最后一个班次的到达时间;ar--当前路牌下的早晚例保、吃饭班次数组,pa--当前路牌下的进出场班次数组] | |
| 242 | + * | |
| 243 | + * @return | |
| 244 | + */ | |
| 245 | + function jsjclc(st,ar,pa,sjstr,fcno_,tempS,fxdm) { | |
| 246 | + // 1、修改进出场班次. | |
| 247 | + for(var p = 0;p<pa.length;p++) { | |
| 248 | + // A)、如果当前班次的发车时间等于 在没有调整班次总数之前的最后一个班次的到达时间,则这个班次是在没有调整班次之前的那个进场班次 | |
| 249 | + if(pa[p].fcsj == sjstr && pa[p].bcType =='in') { | |
| 250 | + pa[p].fcsj = st; | |
| 251 | + pa[p].bcsj = obj.configuration.dataMap.ccsjArr[fxdm]; | |
| 252 | + pa[p].xlDir = obj.configuration.dataMap.dira[fxdm]; | |
| 253 | + var _s = bf.getDateTime(st); | |
| 254 | + var _tt = new Date(_s); | |
| 255 | + _tt.setMinutes(_tt.getMinutes()+pa[p].bcsj); | |
| 256 | + var ddsjStr = bf.getTimeStr(_tt); | |
| 257 | + pa[p].ARRIVALTIME = ddsjStr; | |
| 258 | + if(tempS =='add') | |
| 259 | + pa[p].fcno = pa[p].fcno+fcno_; | |
| 260 | + else if(tempS =='jq') | |
| 261 | + pa[p].fcno = pa[p].fcno-fcno_; | |
| 262 | + } | |
| 263 | + // B)、剔除掉 当前班次的到达时间大于调整班次过后最后一个班次到达时间的班次 | |
| 264 | + if((bf.getDateTime(pa[p].ARRIVALTIME)-bf.getDateTime(st))/60000 > pa[p].bcsj) { | |
| 265 | + console.log('{' + pa[p].lpNo + '----' + pa[p].ARRIVALTIME + '----' + st + '}'); | |
| 266 | + console.log('修改进出场班次时...该班次的到达时间大于了最后一个班次的到达时间,应该剔除掉!'); | |
| 267 | + pa.splice(p,1); | |
| 268 | + } | |
| 274 | 269 | } |
| 275 | - // B)、剔除掉 当前班次的到达时间大于调整班次过后最后一个班次到达时间的班次 | |
| 276 | - if(bf.getDateTime(ar[i].ARRIVALTIME)>bf.getDateTime(st) && ar[i].bcType!='lc') { | |
| 277 | - console.log('{' + ar[i].lpNo + '----' + ar[i].ARRIVALTIME + '----' + st + '}') | |
| 278 | - console.log('修改晚例保班次时...该班次的到达时间大于了最后一个班次的到达时间,应该剔除掉!'); | |
| 279 | - ar.splice(i,1); | |
| 270 | + // 2、修改晚例保班次. | |
| 271 | + for(var i = 0 ; i<ar.length;i++) { | |
| 272 | + // A)、修改离场班次属性值 | |
| 273 | + if(ar[i].bcType=='lc') { | |
| 274 | + ar[i].fcsj = ddsjStr; | |
| 275 | + ar[i].xlDir = obj.configuration.dataMap.dira[fxdm]; | |
| 276 | + var _lcs = bf.getDateTime(ddsjStr); | |
| 277 | + var _lctt = new Date(_lcs); | |
| 278 | + _lctt.setMinutes(_lctt.getMinutes()+ar[i].bcsj); | |
| 279 | + ar[i].ARRIVALTIME = bf.getTimeStr(_lctt); | |
| 280 | + if(tempS =='add') | |
| 281 | + ar[i].fcno = ar[i].fcno+fcno_; | |
| 282 | + else if(tempS =='jq') | |
| 283 | + ar[i].fcno = ar[i].fcno-fcno_; | |
| 284 | + } | |
| 285 | + // B)、剔除掉 当前班次的到达时间大于调整班次过后最后一个班次到达时间的班次 | |
| 286 | + if(bf.getDateTime(ar[i].ARRIVALTIME)>bf.getDateTime(st) && ar[i].bcType!='lc') { | |
| 287 | + console.log('{' + ar[i].lpNo + '----' + ar[i].ARRIVALTIME + '----' + st + '}') | |
| 288 | + console.log('修改晚例保班次时...该班次的到达时间大于了最后一个班次的到达时间,应该剔除掉!'); | |
| 289 | + ar.splice(i,1); | |
| 290 | + } | |
| 280 | 291 | } |
| 281 | - } | |
| 282 | - // 3、合并进出场、例保班次,并返回. | |
| 283 | - return pa.concat(ar); | |
| 284 | - } | |
| 292 | + // 3、合并进出场、例保班次,并返回. | |
| 293 | + return pa.concat(ar); | |
| 294 | + } | |
| 295 | + } else{ | |
| 296 | + error.show('参数异常!','【 obj:' + obj + ' , cardata:' + cardata + ' , bf:' + bf + '】'); | |
| 297 | + } | |
| 285 | 298 | }); |
| 286 | 299 | </script> |
| 287 | 300 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/timesmodel/gantt.html
| ... | ... | @@ -87,7 +87,7 @@ |
| 87 | 87 | </li> |
| 88 | 88 | <li> |
| 89 | 89 | <a href="javascript:" class="tool-action aboutread"> |
| 90 | - <i class="fa fa-arrows-v"></i> 调整班次 | |
| 90 | + <i class="fa fa-arrows-v"></i> 班次调整 | |
| 91 | 91 | </a> |
| 92 | 92 | </li> |
| 93 | 93 | </ul> |
| ... | ... | @@ -116,4 +116,5 @@ |
| 116 | 116 | <script src="/pages/base/timesmodel/js/ContextJS/js/context.js"></script> |
| 117 | 117 | <script src="/pages/base/timesmodel/js/base-fun.js"></script> |
| 118 | 118 | <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script> |
| 119 | +<script src="/pages/base/timesmodel/js/errorinfo.js"></script> | |
| 119 | 120 | <script src="/pages/base/timesmodel/js/gantt.js"></script> |
| 120 | 121 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/add-form-reload.js
| ... | ... | @@ -46,7 +46,8 @@ |
| 46 | 46 | obj.jhlc = d[i].jhlc;// 计划里程 |
| 47 | 47 | obj.lp = d[i].lp==null ? null : d[i].lp.id;// 路牌id |
| 48 | 48 | obj.lpType = d[i].lp==null ? null : d[i].lp.lpType;// 路牌类型 |
| 49 | - obj.parent = d[i].lp.lpName;// 路牌名称 | |
| 49 | + obj.parent = d[i].lp.lpNo;// 路牌名称 | |
| 50 | + obj.lpName = d[i].lp.lpName; | |
| 50 | 51 | obj.lpNo = d[i].lp.lpNo;// 路牌编码 |
| 51 | 52 | obj.tcc = d[i].tcc==null ? null : d[i].tcc.id;// 停车场id |
| 52 | 53 | obj.ttinfo = d[i].ttinfo==null ? null : d[i].ttinfo.id;// 时刻表id |
| ... | ... | @@ -60,7 +61,7 @@ |
| 60 | 61 | resultD.push(obj); |
| 61 | 62 | if(lpA.indexOf(obj.lpNo)<0) { |
| 62 | 63 | lpA.push(obj.lpNo); |
| 63 | - rsLpA.push({'lp':obj.lp,'lpNo':obj.lpNo,'lpName':obj.parent,'lpType':obj.lpType}); | |
| 64 | + rsLpA.push({'lp':obj.lp,'lpNo':obj.lpNo,'lpName':obj.lpName,'lpType':obj.lpType}); | |
| 64 | 65 | } |
| 65 | 66 | } |
| 66 | 67 | // 返回渲染图形的数据格式. | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
| ... | ... | @@ -407,7 +407,9 @@ var SKBFormWizard = function() { |
| 407 | 407 | obj.jhlc = d[i].jhlc;// 计划里程 |
| 408 | 408 | obj.lp = d[i].lp==null ? null : d[i].lp.id;// 路牌id |
| 409 | 409 | obj.lpType = d[i].lp==null ? null : d[i].lp.lpType;// 路牌类型 |
| 410 | - obj.parent = d[i].lp.lpName;// 路牌名称 | |
| 410 | + // obj.parent = d[i].lp.lpName;// 路牌名称 | |
| 411 | + // obj.parent = parseInt(d[i].lp.lpNo);// 路牌名称 | |
| 412 | + obj.lpName = d[i].lp.lpName; | |
| 411 | 413 | obj.lpNo = d[i].lp.lpNo;// 路牌编码 |
| 412 | 414 | obj.tcc = d[i].tcc==null ? null : d[i].tcc.id;// 停车场id |
| 413 | 415 | obj.ttinfo = d[i].ttinfo==null ? null : d[i].ttinfo.id;// 时刻表id |
| ... | ... | @@ -421,7 +423,7 @@ var SKBFormWizard = function() { |
| 421 | 423 | resultD.push(obj); |
| 422 | 424 | if(lpA.indexOf(obj.lpNo)<0) { |
| 423 | 425 | lpA.push(obj.lpNo); |
| 424 | - rsLpA.push({'lp':obj.lp,'lpNo':obj.lpNo,'lpName':obj.parent,'lpType':obj.lpType}); | |
| 426 | + rsLpA.push({'lp':obj.lp,'lpNo':obj.lpNo,'lpName':obj.lpName,'lpType':obj.lpType}); | |
| 425 | 427 | } |
| 426 | 428 | } |
| 427 | 429 | // 返回渲染图形的数据格式. | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/base-fun.js
| ... | ... | @@ -388,7 +388,7 @@ var BaseFun = function() { |
| 388 | 388 | var jar = baseF.tzsmbcsj01( |
| 389 | 389 | baseF.setbcsAndfcno(baseF.tzsmbcsj01(baseF.setbcsAndfcno(baseF.tzsztest(cara,jar01,dataMap)),dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap)), |
| 390 | 390 | dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap); |
| 391 | - // return {'json':jar,'bxrcgs':bxrcgs}; | |
| 391 | + // return {'json':jar,'bxrcgs':bxrcgs}; | |
| 392 | 392 | for(var r = 0 ; r < bxrcgs.length; r++) { |
| 393 | 393 | var lpNo = bxrcgs[r].lpNo; |
| 394 | 394 | var gsv = 0 , bczs = 0; |
| ... | ... | @@ -401,14 +401,18 @@ var BaseFun = function() { |
| 401 | 401 | bxrcgs[r].sjgsV = gsv; |
| 402 | 402 | bxrcgs[r].bczs = bczs; |
| 403 | 403 | } |
| 404 | + //debugger; | |
| 404 | 405 | var jar3 = baseF.dqbcsAndgs(bxrcgs,jar,dataMap,cara.length); |
| 405 | - // return {'json':jar3,'bxrcgs':bxrcgs}; | |
| 406 | + //return {'json':jar3,'bxrcgs':bxrcgs}; | |
| 406 | 407 | /*var jar4 = baseF.tzsmbcsj01( |
| 407 | 408 | baseF.setbcsAndfcno(baseF.tzsmbcsj01(baseF.setbcsAndfcno(baseF.tzsztest(cara,jar3,dataMap)),dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap)), |
| 408 | 409 | dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap);*/ |
| 409 | 410 | var rsjar = baseF.tzsztest(cara,jar3,dataMap); |
| 410 | - // return {'json':rsjar,'bxrcgs':bxrcgs}; | |
| 411 | - var resultJA = new Array(); | |
| 411 | + return {'json':baseF.addjcclcbc01(cara,rsjar,dataMap,saa,map),'bxrcgs':bxrcgs}; | |
| 412 | + }, | |
| 413 | + | |
| 414 | + addjcclcbc01 : function(cara,rsjar,dataMap,saa,map) { | |
| 415 | + var resultJA = new Array(),bcs = 0; | |
| 412 | 416 | for(var m = 0 ; m < cara.length; m++) { |
| 413 | 417 | // 获取路牌编号. |
| 414 | 418 | var lpNo_ = cara[m].lpNo; |
| ... | ... | @@ -424,9 +428,68 @@ var BaseFun = function() { |
| 424 | 428 | } |
| 425 | 429 | // 按照发车序号顺序排序. |
| 426 | 430 | lpbc_.sort(function(a,b){return a.fcno-b.fcno}); |
| 427 | - resultJA = resultJA.concat(baseF.addjclbbc01(lpbc_,dataMap,saa[0].lbsj,map)); | |
| 431 | + baseF.addcfbc01(lpbc_,dataMap,map); | |
| 432 | + // 按照发车序号顺序排序. | |
| 433 | + // lpbc_.sort(function(a,b){return a.fcno-b.fcno}); | |
| 434 | + var tt = baseF.addjclbbc01(lpbc_,dataMap,saa[0].lbsj,map); | |
| 435 | + bcs = baseF.updfcno01(tt,bcs); | |
| 436 | + // debugger; | |
| 437 | + resultJA = resultJA.concat(tt); | |
| 438 | + } | |
| 439 | + return resultJA; | |
| 440 | + }, | |
| 441 | + | |
| 442 | + updfcno01 : function(bcArr,bcs) { | |
| 443 | + for(var i =0; i < bcArr.length;i++) { | |
| 444 | + bcArr[i].fcint = baseF.getDateTime(bcArr[i].fcsj).getTime(); | |
| 428 | 445 | } |
| 429 | - return {'json':resultJA,'bxrcgs':bxrcgs}; | |
| 446 | + bcArr.sort(function(a,b){return a.fcint-b.fcint}); | |
| 447 | + for(var t = 0 ; t <bcArr.length;t++) { | |
| 448 | + bcs++; | |
| 449 | + bcArr[t].bcs = bcs; | |
| 450 | + bcArr[t].fcno = t+1; | |
| 451 | + delete bcArr[t].fcint; | |
| 452 | + } | |
| 453 | + return bcs; | |
| 454 | + }, | |
| 455 | + | |
| 456 | + addcfbc01 : function(lpbcar,dataMap,map) { | |
| 457 | + var gs = 0 ,sicftag = true; | |
| 458 | + for(var g = 0 ; g <lpbcar.length-1;g++ ) { | |
| 459 | + if( parseInt((baseF.getDateTime(lpbcar[g+1].fcsj) - baseF.getDateTime(lpbcar[g].ARRIVALTIME))/60000) > 80 | |
| 460 | + && lpbcar[g].STOPTIME==0 ) { | |
| 461 | + lpbcar[g].isfb = 1; | |
| 462 | + } | |
| 463 | + /*gs = gs + lpbcar[g].bcsj + lpbcar[g].STOPTIME; | |
| 464 | + if(lpbcar[g].STOPTIME==0 && g>0 && g<(lpbcar.length-1)) { | |
| 465 | + debugger; | |
| 466 | + lpbcar[g].isfb = 1; | |
| 467 | + sicftag = false; | |
| 468 | + }*/ | |
| 469 | + } | |
| 470 | + /*if(sicftag) { | |
| 471 | + for(var j = 0 ; j <lpbcar.length;j ++ ) { | |
| 472 | + var kssj = baseF.getDateTime(lpbcar[j].fcsj); | |
| 473 | + var tzsj = lpbcar[j].STOPTIME; | |
| 474 | + var cctag = baseF.dirDmToIndex(lpbcar[j].xlDir); | |
| 475 | + var cfdd = baseF.getcfdd(map.cfdd,cctag); | |
| 476 | + if(kssj> new Date (baseF.getCFDate(10,30)) && | |
| 477 | + kssj<new Date (baseF.getCFDate(11,30)) && cfdd == cctag) { | |
| 478 | + console.log(tzsj,lpbcar[j].fcsj); | |
| 479 | + rs.push(baseF.getbcObj( | |
| 480 | + kssj,dataMap.zwcArr[0],cara[c],dataMap.bcTypeArr.cf, | |
| 481 | + dataMap.dira[cctag],xhNo++,0,map,0,null,null,null,0,0)); | |
| 482 | + | |
| 483 | + }else if(kssj > new Date (baseF.getCFDate(18,30)) && | |
| 484 | + kssj < new Date (baseF.getCFDate(19,30)) && cfdd == cctag ) { | |
| 485 | + console.log(tzsj,lpbcar[j].fcsj); | |
| 486 | + rs.push(baseF.getbcObj( | |
| 487 | + kssj,dataMap.zwcArr[1],cara[c],dataMap.bcTypeArr.cf, | |
| 488 | + dataMap.dira[cctag],xhNo++,0,map,0,null,null,null,0,0)); | |
| 489 | + | |
| 490 | + } | |
| 491 | + } | |
| 492 | + }*/ | |
| 430 | 493 | }, |
| 431 | 494 | |
| 432 | 495 | dqbcsAndgs : function(bxrcgs,jar,dataMap,cla) { |
| ... | ... | @@ -538,9 +601,11 @@ var BaseFun = function() { |
| 538 | 601 | for(var q = 0 ; q < qbbfbc.length; q++) { |
| 539 | 602 | if(q<(qbbfbc.length-1)) |
| 540 | 603 | qbbfbc[q].STOPTIME = qbbfbc[q].STOPTIME + vag; |
| 541 | - if(q==0) | |
| 542 | - continue; | |
| 543 | - else { | |
| 604 | + if(q==0) { | |
| 605 | + var fcsj_ = baseF.getDateTime(qbbfbc[q].fcsj); | |
| 606 | + fcsj_.setMinutes(fcsj_.getMinutes() + qbbfbc[q].bcsj); | |
| 607 | + qbbfbc[q].ARRIVALTIME = baseF.getTimeStr(fcsj_); | |
| 608 | + }else { | |
| 544 | 609 | var ddsj_ = baseF.getDateTime(qbbfbc[q-1].ARRIVALTIME); |
| 545 | 610 | ddsj_.setMinutes(ddsj_.getMinutes() + qbbfbc[q-1].STOPTIME); |
| 546 | 611 | qbbfbc[q].fcsj = baseF.getTimeStr(ddsj_); |
| ... | ... | @@ -616,6 +681,9 @@ var BaseFun = function() { |
| 616 | 681 | var dygbcfcsj = baseF.getDateTime(obj.fcsj); |
| 617 | 682 | dygbcfcsj.setMinutes(dygbcfcsj.getMinutes() - dx); |
| 618 | 683 | obj.fcsj = baseF.getTimeStr(dygbcfcsj); |
| 684 | + | |
| 685 | + dygbcfcsj.setMinutes(dygbcfcsj.getMinutes() + obj.bcsj); | |
| 686 | + obj.ARRIVALTIME = baseF.getTimeStr(dygbcfcsj); | |
| 619 | 687 | }, |
| 620 | 688 | |
| 621 | 689 | zhygbcUpd: function(obj,xgOjb,dx) { |
| ... | ... | @@ -800,7 +868,25 @@ var BaseFun = function() { |
| 800 | 868 | dqbcfcsj,dataMap.ccsjArr[fxdm],car,dataMap.bcTypeArr.out, |
| 801 | 869 | dataMap.dira[fxdm],2,dataMap.cclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 出场班次 |
| 802 | 870 | fcno ++; |
| 803 | - }else if(b==bc.length-1){ | |
| 871 | + }/*else if(b > 0 && b < bc.length-1){ | |
| 872 | + var jcbckssj = baseF.getDateTime(bc[b].ARRIVALTIME) | |
| 873 | + var ccbckssj = baseF.getDateTime(bc[b+1].fcsj) | |
| 874 | + var dx = parseInt((ccbckssj - jcbckssj)/60000); | |
| 875 | + if(bc[b].STOPTIME==0) { | |
| 876 | + // bc[b].STOPTIME = 0; | |
| 877 | + //console.log(bc[b].fcno); | |
| 878 | + var fcno_ = bc[b].fcno + 2; | |
| 879 | + stas = true; | |
| 880 | + // console.log(bc[b],bc[b+1],b); | |
| 881 | + result.push(baseF.getbcObj( | |
| 882 | + jcbckssj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_, | |
| 883 | + dataMap.dira[fxdm],fcno_++,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次 | |
| 884 | + var ccfx = baseF.dirDmToIndex(bc[b+1].xlDir); | |
| 885 | + result.push(baseF.getbcObj( | |
| 886 | + ccbckssj,dataMap.ccsjArr[ccfx],car,dataMap.bcTypeArr.out, | |
| 887 | + dataMap.dira[ccfx],fcno_++,dataMap.cclcArr[ccfx],gatps,0,dataMap.qdzArr[ccfx],null,null,0,0));// 出场班次 | |
| 888 | + } | |
| 889 | + }*/else if(b==bc.length-1){ | |
| 804 | 890 | var fcno_ = dxfno + 2; |
| 805 | 891 | var qdbcddsj = baseF.getDateTime(bc[b].ARRIVALTIME); |
| 806 | 892 | result.push(baseF.getbcObj( |
| ... | ... | @@ -1590,32 +1676,7 @@ var BaseFun = function() { |
| 1590 | 1676 | {'type':'无工休', 'hoursV':5.43, 'minueV':'5:43'}]; |
| 1591 | 1677 | }, |
| 1592 | 1678 | setbcsAndfcno : function(listA) { |
| 1593 | - /*var array = new Array(); | |
| 1594 | - var len = listA.length; | |
| 1595 | - for(var i =0;i<len;i++) { | |
| 1596 | - if(array.indexOf(listA[i].lpNo)<0) | |
| 1597 | - array.push(listA[i].lpNo); | |
| 1598 | - } | |
| 1599 | - array.sort(baseF.compare); | |
| 1600 | - console.log(array); | |
| 1601 | - var sortGattArray = new Array(); | |
| 1602 | - for(var k =0;k<array.length;k++) { | |
| 1603 | - var index = array[k]; | |
| 1604 | - var temp = new Array(); | |
| 1605 | - for(var x=0;x<listA.length;x++) { | |
| 1606 | - if(index==listA[x].lpNo) | |
| 1607 | - temp.push(listA[x]); | |
| 1608 | - } | |
| 1609 | - var lpbc = baseF.sortDirArray(temp); | |
| 1610 | - for(var p = 0 ;p<lpbc.length;p++) { | |
| 1611 | - lpbc[p].fcno = (p+1); | |
| 1612 | - } | |
| 1613 | - sortGattArray = sortGattArray.concat(lpbc); | |
| 1614 | - } | |
| 1615 | - for(var b = 0 ; b <sortGattArray.length;b++) { | |
| 1616 | - sortGattArray[b].bcs = (b+1); | |
| 1617 | - } | |
| 1618 | - return sortGattArray;*/ | |
| 1679 | + | |
| 1619 | 1680 | var array = new Array(); |
| 1620 | 1681 | var len = listA.length; |
| 1621 | 1682 | for(var i =0;i<len;i++) { |
| ... | ... | @@ -1886,8 +1947,10 @@ var BaseFun = function() { |
| 1886 | 1947 | kssj, |
| 1887 | 1948 | obj.configuration.dataMap.pcxssjArr, |
| 1888 | 1949 | obj.configuration.dataMap.gfxxsjArr,cctag);// 获取行驶时间 |
| 1889 | - tzsj = obj.configuration.dataMap.ztjxA[cctag]; | |
| 1890 | - var temptzsj = t == num-1 ? 0 : tzsj; | |
| 1950 | + // tzsj = obj.configuration.dataMap.ztjxA[cctag]; | |
| 1951 | + var tzjx = baseF.isgfsjd01(kssj,obj.configuration.dataMap) ? obj.configuration.dataMap.gftzsj[cctag] : obj.configuration.dataMap.dgtzsj[cctag]; | |
| 1952 | + var temptzsj = ((t == num-1) ? 0 : tzsj); | |
| 1953 | + /*var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj;*/ | |
| 1891 | 1954 | jsonArray.push(baseF.getbcObj( kssj, |
| 1892 | 1955 | _xxsj, |
| 1893 | 1956 | carArray, |
| ... | ... | @@ -1900,7 +1963,7 @@ var BaseFun = function() { |
| 1900 | 1963 | obj.configuration.dataMap.zdzArr[cctag], |
| 1901 | 1964 | null,temptzsj,0)); |
| 1902 | 1965 | // kssj = new Date(kssj.setMinutes(kssj.getMinutes() + temptzsj)); |
| 1903 | - kssj.setMinutes(kssj.getMinutes() + temptzsj) | |
| 1966 | + kssj.setMinutes(kssj.getMinutes() + tzjx) | |
| 1904 | 1967 | } |
| 1905 | 1968 | lastObj.STOPTIME = 10; |
| 1906 | 1969 | }, | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/d3.relationshipgraph.js
| ... | ... | @@ -229,7 +229,7 @@ $('.updownread').on('click',function() { |
| 229 | 229 | /************************************************************************************************************************************************/ |
| 230 | 230 | |
| 231 | 231 | /** |
| 232 | - * @description : (TODO) 调整班次点击事件 | |
| 232 | + * @description : (TODO) 班次调整点击事件 | |
| 233 | 233 | * |
| 234 | 234 | * @status OK. |
| 235 | 235 | ************************************************************************************************************************************************/ |
| ... | ... | @@ -417,31 +417,6 @@ $('.editlp').on('click',function() { |
| 417 | 417 | }); |
| 418 | 418 | /************************************************************************************************************************************************/ |
| 419 | 419 | |
| 420 | -/** | |
| 421 | - * @description : (TODO)获取路牌对应的班次数(这里的班次不包括早晚例保班次、吃饭时间) | |
| 422 | - * | |
| 423 | - * @params : [a1--班次数组;a2--路牌数组] | |
| 424 | - * | |
| 425 | - * @return : 返回一个数组.这里返回的是一个封装的每个路牌对应的班次数(这里的班次不包括早晚例保班次、吃饭时间、班次时间为0的班次) | |
| 426 | - ************************************************************************************************************************************************/ | |
| 427 | -var getbczs = function (a1,a2) { | |
| 428 | - var array = new Array(); | |
| 429 | - // 1、遍历路牌数组 | |
| 430 | - for(var i = 0;i<a2.length;i++) { | |
| 431 | - var bcs = 0; | |
| 432 | - // 2、遍历班次数组 | |
| 433 | - for(var j =0;j<a1.length;j++) { | |
| 434 | - // 3、判断当前班次j是否属于当前路牌i下,除去早晚例保班次、吃饭时间、班次时间为0的班次 | |
| 435 | - if(a1[j].parent == a2[i].lpA.lpNo && a1[j].bcType!='bd' && a1[j].bcType!='lc' && a1[j].bcType!='cf' && a1[j].bcsj>0) | |
| 436 | - bcs++; | |
| 437 | - } | |
| 438 | - // 4、把每个路牌下的对应班次数一一封装在一起,并添加到返回数组里边 | |
| 439 | - array.push({lpNo:a2[i].lpA.lpNo,bcs:bcs}); | |
| 440 | - } | |
| 441 | - return array; | |
| 442 | -} | |
| 443 | -/************************************************************************************************************************************************/ | |
| 444 | - | |
| 445 | 420 | |
| 446 | 421 | /** |
| 447 | 422 | * d3动画过度 |
| ... | ... | @@ -647,7 +622,6 @@ var RelationshipGraph = function () { |
| 647 | 622 | .ordinal() |
| 648 | 623 | .domain(this.configuration.lpNameA) |
| 649 | 624 | .rangeRoundBands([ 0, this.configuration.height], .1); |
| 650 | - | |
| 651 | 625 | this.configuration.y = y; |
| 652 | 626 | // 创建X轴 |
| 653 | 627 | var xAxis = d3.svg |
| ... | ... | @@ -733,7 +707,7 @@ var RelationshipGraph = function () { |
| 733 | 707 | yAxisYArray.splice(0,yAxisYArray.length); |
| 734 | 708 | for(var t = 0;t<this.configuration.taskTypes.length;t++) { |
| 735 | 709 | yAxisYArray.push({ |
| 736 | - y:y(this.configuration.taskTypes[t].lpNo)+this.configuration.offsetY, | |
| 710 | + y:y(this.configuration.taskTypes[t].lpName)+this.configuration.offsetY, | |
| 737 | 711 | carname:this.configuration.taskTypes[t].lpName, |
| 738 | 712 | lpA : this.configuration.taskTypes[t]}); |
| 739 | 713 | } |
| ... | ... | @@ -938,6 +912,44 @@ var RelationshipGraph = function () { |
| 938 | 912 | return dataArray; |
| 939 | 913 | } |
| 940 | 914 | }, { |
| 915 | + /** | |
| 916 | + * @description : (TODO) 获取路牌对应的班次数(这里的班次不包括早晚例保班次、吃饭时间) | |
| 917 | + * | |
| 918 | + * @params : [a1--班次数组;a2--路牌数组] | |
| 919 | + * | |
| 920 | + * @return : 返回一个数组.这里返回的是一个封装的每个路牌对应的班次数(这里的班次不包括早晚例保班次、吃饭时间、班次时间为0的班次) | |
| 921 | + **/ | |
| 922 | + key : 'getbczs', | |
| 923 | + value : function getbczs(a1,a2,dataMap) { | |
| 924 | + // 定义返回数组. | |
| 925 | + var array = new Array(); | |
| 926 | + // 判断参数数组长度大于〇,dataMap不能为空. | |
| 927 | + if(a1.length>0 && a2.length>0 && dataMap!=null && dataMap!='') { | |
| 928 | + // 遍历路牌数组 | |
| 929 | + for(var i = 0 ;i < a2.length ; i++) { | |
| 930 | + // 定义当前路牌下班次数,初始化为0. | |
| 931 | + var bcs = 0; | |
| 932 | + // 遍历班次数组 | |
| 933 | + for(var j = 0 ; j < a1.length ; j++) { | |
| 934 | + // 判断当前班次j是否属于当前路牌i下,除去早晚例保班次、吃饭时间、班次时间为0的班次 | |
| 935 | + if(a1[j].parent == a2[i].lpA.lpNo && | |
| 936 | + a1[j].bcType != dataMap.bcTypeArr.bd && | |
| 937 | + a1[j].bcType != dataMap.bcTypeArr.lc && | |
| 938 | + a1[j].bcType != dataMap.bcTypeArr.cf && | |
| 939 | + a1[j].bcsj > 0) { | |
| 940 | + bcs++; | |
| 941 | + } | |
| 942 | + } | |
| 943 | + // 把每个路牌下的对应班次数一一封装在一起,并添加到返回数组里边 | |
| 944 | + array.push({lpNo : a2[i].lpA.lpNo , lpName:a2[i].lpA.lpName , bcs:bcs}); | |
| 945 | + } | |
| 946 | + }else { | |
| 947 | + error.show('参数异常!','【 a1:' + a1 + ' , a2:' + a2 + ' , dataMap:' + dataMap + '】'); | |
| 948 | + // console.log("您传入的参数异常!【 a1:" + a1 + ", a2:" + a2 + ", dataMap:" + dataMap); | |
| 949 | + } | |
| 950 | + return array; | |
| 951 | + } | |
| 952 | + }, { | |
| 941 | 953 | key : 'addHistory' , |
| 942 | 954 | value : function addHistory() { |
| 943 | 955 | historyArray.push({'data':JSON.stringify(this.getDataArray()),'granph':JSON.stringify(this.configuration)}); |
| ... | ... | @@ -1410,7 +1422,7 @@ var RelationshipGraph = function () { |
| 1410 | 1422 | } |
| 1411 | 1423 | }, { |
| 1412 | 1424 | /** |
| 1413 | - * @description : (TODO) 调整班次函数. | |
| 1425 | + * @description : (TODO) 班次调整函数. | |
| 1414 | 1426 | * |
| 1415 | 1427 | * @status OK. |
| 1416 | 1428 | * */ |
| ... | ... | @@ -1419,7 +1431,9 @@ var RelationshipGraph = function () { |
| 1419 | 1431 | // 弹出层mobal页面 |
| 1420 | 1432 | $.get('/pages/base/timesmodel/bctz.html', function(m){ |
| 1421 | 1433 | $(pjaxContainer).append(m); |
| 1422 | - $('#tzbc_mobal').trigger('tzbcMobal.show',[$_GlobalGraph,getbczs($_GlobalGraph.getDataArray(),yAxisYArray),BaseFun]); | |
| 1434 | + // 获取各路牌下的班次数 | |
| 1435 | + var lpbcs = $_GlobalGraph.getbczs($_GlobalGraph.getDataArray() , yAxisYArray , $_GlobalGraph.configuration.dataMap); | |
| 1436 | + $('#tzbc_mobal').trigger('tzbcMobal.show',[$_GlobalGraph , lpbcs , BaseFun , ErrorInfo]); | |
| 1423 | 1437 | }); |
| 1424 | 1438 | } |
| 1425 | 1439 | |
| ... | ... | @@ -2476,9 +2490,11 @@ var RelationshipGraph = function () { |
| 2476 | 2490 | for(var s = 0 ; s < len ; s++) { |
| 2477 | 2491 | var rectNodesAttr = RelationshipGraph.getContextNodeAndData(d3.select(shiftRectA[s]).attr('id')); |
| 2478 | 2492 | if(rectNodesAttr.dqbcData.STOPTIME<0) { |
| 2479 | - var nextTzsjDx = $_GlobalGraph.configuration.dataMap.minztjx - rectNodesAttr.dqbcData.STOPTIME; | |
| 2493 | + // var nextTzsjDx = $_GlobalGraph.configuration.dataMap.minztjx - rectNodesAttr.dqbcData.STOPTIME; | |
| 2494 | + var nextTzsjDx = 0 - rectNodesAttr.dqbcData.STOPTIME; | |
| 2480 | 2495 | // 修改遍历的当前元素数据的停站时间为最小停站时间. |
| 2481 | - rectNodesAttr.dqbcData.STOPTIME = $_GlobalGraph.configuration.dataMap.minztjx; | |
| 2496 | + // rectNodesAttr.dqbcData.STOPTIME = $_GlobalGraph.configuration.dataMap.minztjx; | |
| 2497 | + rectNodesAttr.dqbcData.STOPTIME = 0; | |
| 2482 | 2498 | // 修改遍历的当前元素数据的文本展示停站时间 |
| 2483 | 2499 | for(var t = 0 ; t < rectNodesAttr.dqbctextNodes.length ; t++) { |
| 2484 | 2500 | if(d3.select(rectNodesAttr.dqbctextNodes[t]).attr('text-type')=='gap') |
| ... | ... | @@ -2501,6 +2517,7 @@ var RelationshipGraph = function () { |
| 2501 | 2517 | * 修改下个班次的元素坐标属性值 |
| 2502 | 2518 | * |
| 2503 | 2519 | * */ |
| 2520 | + | |
| 2504 | 2521 | rectNodesAttr.nextbcNode.attr('x',$_x); |
| 2505 | 2522 | var rectCover = d3.select(d3.selectAll('rect[parent-node='+ rectNodesAttr.nextbcNodeId + '-cover' +']')[0][0]); |
| 2506 | 2523 | rectCover.attr('x',$_x); |
| ... | ... | @@ -2996,7 +3013,7 @@ var RelationshipGraph = function () { |
| 2996 | 3013 | nowDate.setMinutes(parseInt(tm.min)+d.bcsj);// 10.3.1、设置分钟. |
| 2997 | 3014 | // 9.1.4、修改当前班次的到达时间. |
| 2998 | 3015 | d.ARRIVALTIME = BaseFun.getTimeStr(nowDate); |
| 2999 | - d.STOPTIME = parseInt((BaseFun.getDateTime(nodeContext.nextData.fcsj) - BaseFun.getDateTime(d.ARRIVALTIME))/ 60000); | |
| 3016 | + d.STOPTIME = d.isfb ==1 ? 0 : parseInt((BaseFun.getDateTime(nodeContext.nextData.fcsj) - BaseFun.getDateTime(d.ARRIVALTIME))/ 60000); | |
| 3000 | 3017 | /** |
| 3001 | 3018 | * 9.2、修改元素沿X轴方向的X坐标属性值. |
| 3002 | 3019 | * |
| ... | ... | @@ -3017,6 +3034,8 @@ var RelationshipGraph = function () { |
| 3017 | 3034 | } |
| 3018 | 3035 | /****************************************** update 当前的班次数据以及相关元素对象属性值. END ************************************/ |
| 3019 | 3036 | |
| 3037 | + //console.log(nodeContext); | |
| 3038 | + //debugger; | |
| 3020 | 3039 | // 10、计算与上个班次的停站时间. |
| 3021 | 3040 | var dxMinues = parseInt((BaseFun.getDateTime(d.fcsj) - BaseFun.getDateTime(nodeContext.lastData.ARRIVALTIME)) / 60000); |
| 3022 | 3041 | |
| ... | ... | @@ -3163,7 +3182,8 @@ var RelationshipGraph = function () { |
| 3163 | 3182 | **/ |
| 3164 | 3183 | var _obj = RelationshipGraph.getContextNodeAndData(d3.select(this).attr('parent-node').replace('-cover','')); |
| 3165 | 3184 | // 1.3、定义最小停站间隙. |
| 3166 | - var minSoptTime = $_GlobalGraph.configuration.dataMap.minztjx; | |
| 3185 | + // var minSoptTime = $_GlobalGraph.configuration.dataMap.minztjx; | |
| 3186 | + var minSoptTime = 0; | |
| 3167 | 3187 | // 1.4、创建当前时间对象. |
| 3168 | 3188 | var $_date = new Date(); |
| 3169 | 3189 | // 1.5、判断 如果当前班次的停站时间小于零,则修改成最小停站时间. | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/errorinfo.js
0 → 100644
src/main/resources/static/pages/base/timesmodel/js/gantt.js
| ... | ... | @@ -70,8 +70,28 @@ |
| 70 | 70 | }else { |
| 71 | 71 | var jsonA = JSON.parse(objD); |
| 72 | 72 | // 使用已有的时刻表明细数据渲染视图. |
| 73 | - data = {'json':jsonA.rsD,'bxrcgs':null}; | |
| 73 | + // data = {'json':jsonA.rsD,'bxrcgs':null}; | |
| 74 | 74 | CSMap = {'gattA':null,'stopSpace': Math.round(map.zzsj/map.clzs),'maxCar':jsonA.rsLP}; |
| 75 | + var cara = jsonA.rsLP; | |
| 76 | + var rsjar = jsonA.rsD; | |
| 77 | + var resultJA = new Array(); | |
| 78 | + for(var m = 0 ; m < cara.length; m++) { | |
| 79 | + // 获取路牌编号. | |
| 80 | + var lpNo_ = cara[m].lpNo; | |
| 81 | + // 定义路牌下的所有班次. | |
| 82 | + var lpbc_ = new Array(); | |
| 83 | + // 遍历班次数. | |
| 84 | + for(var x =0 ; x <rsjar.length; x++) { | |
| 85 | + // 判断当期遍历的班次是否属于当前的路牌. | |
| 86 | + if(rsjar[x].lpNo == lpNo_) { | |
| 87 | + lpbc_.push(rsjar[x]); | |
| 88 | + } | |
| 89 | + } | |
| 90 | + // 按照发车序号顺序排序. | |
| 91 | + lpbc_.sort(function(a,b){return a.fcno-b.fcno}); | |
| 92 | + resultJA = resultJA.concat(BaseFun.addjclbbc01(lpbc_,dataMap,stopAraay[0].lbsj,map)); | |
| 93 | + } | |
| 94 | + data = {'json':rsjar,'bxrcgs':null}; | |
| 75 | 95 | } |
| 76 | 96 | // 创建甘特图对象. |
| 77 | 97 | var graph = d3.select('#ganttSvg').relationshipGraph( |
| ... | ... | @@ -401,6 +421,7 @@ |
| 401 | 421 | var hours=Math.floor(leave1/(3600*1000)); |
| 402 | 422 | DXHOURS = days*24+hours; |
| 403 | 423 | WIDTH = DXHOURS*MINUTE*MULTIPLE; |
| 424 | + // debugger; | |
| 404 | 425 | var lpsplitA = getylp(p.yAxisCarArray); |
| 405 | 426 | var args = { |
| 406 | 427 | 'valueKeyName': VALUEKEYNAME, | ... | ... |