Commit 31c45a806ee5b7b08216cde2c2645de40d701a92

Authored by 王通
1 parent fe5a4f47

1.安全加固

Showing 37 changed files with 2259 additions and 622 deletions
src/main/java/com/bsth/controller/LineRegionController.java 0 → 100644
  1 +package com.bsth.controller;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.entity.LineRegion;
  5 +import com.bsth.entity.LsStationRoute;
  6 +import com.bsth.service.LineRegionService;
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RequestMethod;
  12 +import org.springframework.web.bind.annotation.RequestParam;
  13 +import org.springframework.web.bind.annotation.RestController;
  14 +
  15 +import java.util.HashMap;
  16 +import java.util.List;
  17 +import java.util.Map;
  18 +
  19 +/**
  20 + * @Author Hill
  21 + */
  22 +@RestController
  23 +@RequestMapping("/api/lineregion")
  24 +public class LineRegionController extends BaseController<LineRegion, Integer> {
  25 +
  26 + private Logger log = LoggerFactory.getLogger(LineRegionController.class);
  27 +
  28 + @Autowired
  29 + private LineRegionService lineRegionService;
  30 +
  31 + @RequestMapping(path = "findStationRoutes")
  32 + public List<LsStationRoute> findStationRoutes(@RequestParam(defaultValue = "id") Integer regionId) {
  33 + return lineRegionService.findStationRoutes(regionId);
  34 + }
  35 +
  36 + @RequestMapping(path = "add", method = RequestMethod.POST)
  37 + public Map<String, Object> add(LineRegion lineRegion) {
  38 + Map<String, Object> result = new HashMap<>();
  39 + try {
  40 + lineRegionService.add(lineRegion);
  41 + result.put("status", ResponseCode.SUCCESS);
  42 + } catch (Exception e) {
  43 + log.error("添加线路区间异常", e);
  44 + result.put("status", ResponseCode.ERROR);
  45 + }
  46 +
  47 + return result;
  48 + }
  49 +
  50 + @RequestMapping(path = "modify", method = RequestMethod.POST)
  51 + public Map<String, Object> modify(LineRegion lineRegion) {
  52 + Map<String, Object> result = new HashMap<>();
  53 + try {
  54 + lineRegionService.save(lineRegion);
  55 + result.put("status", ResponseCode.SUCCESS);
  56 + } catch (Exception e) {
  57 + log.error("变更线路区间异常", e);
  58 + result.put("status", ResponseCode.ERROR);
  59 + }
  60 +
  61 + return result;
  62 + }
  63 +}
src/main/java/com/bsth/controller/LsSectionRouteController.java
@@ -44,6 +44,16 @@ public class LsSectionRouteController extends BaseController&lt;LsSectionRoute, Int @@ -44,6 +44,16 @@ public class LsSectionRouteController extends BaseController&lt;LsSectionRoute, Int
44 @Autowired 44 @Autowired
45 private LsSectionRouteService lsSectionRouteService; 45 private LsSectionRouteService lsSectionRouteService;
46 46
  47 + @RequestMapping(value = "/findSectionRoutes" , method = RequestMethod.GET)
  48 + public List<LsSectionRoute> findSectionRoutes(@RequestParam Map<String, Object> map) {
  49 + map.put("destroy_eq", 0);
  50 + if (map.get("line.id_eq") == null || map.get("versions_eq") == null) {
  51 + throw new IllegalArgumentException("需正确传入线路、版本参数");
  52 + }
  53 +
  54 + return lsSectionRouteService.findSectionRoutes(map);
  55 + }
  56 +
47 @RequestMapping(value = "/findPageByParams", method = RequestMethod.GET) 57 @RequestMapping(value = "/findPageByParams", method = RequestMethod.GET)
48 public Page<LsSectionRoute> findPageByParams(@RequestParam Map<String, Object> params) { 58 public Page<LsSectionRoute> findPageByParams(@RequestParam Map<String, Object> params) {
49 int page = params.get("page") == null ? 0 : Integer.parseInt(params.get("page").toString()); 59 int page = params.get("page") == null ? 0 : Integer.parseInt(params.get("page").toString());
@@ -92,6 +102,26 @@ public class LsSectionRouteController extends BaseController&lt;LsSectionRoute, Int @@ -92,6 +102,26 @@ public class LsSectionRouteController extends BaseController&lt;LsSectionRoute, Int
92 } 102 }
93 103
94 /** 104 /**
  105 + * @param ids
  106 + * @throws
  107 + * @Description: TODO(批量恢复撤销站点)
  108 + */
  109 + @RequestMapping(value = "/batchRecover", method = RequestMethod.POST)
  110 + public Map<String, Object> batchRecover(@RequestParam(value = "ids[]") List<Integer> ids) {
  111 + Map<String, Object> result = new HashMap<>();
  112 + try {
  113 + lsSectionRouteService.batchRecover(ids);
  114 + result.put("status", ResponseCode.SUCCESS);
  115 + } catch (Exception e) {
  116 + result.put("status", ResponseCode.ERROR);
  117 + result.put("msg", e.getMessage());
  118 + log.error("", e);
  119 + }
  120 +
  121 + return result;
  122 + }
  123 +
  124 + /**
95 * @param lineId 125 * @param lineId
96 * @param version 126 * @param version
97 * @param direction 127 * @param direction
src/main/java/com/bsth/controller/LsStationRouteController.java
@@ -42,6 +42,26 @@ public class LsStationRouteController extends BaseController&lt;LsStationRoute, Int @@ -42,6 +42,26 @@ public class LsStationRouteController extends BaseController&lt;LsStationRoute, Int
42 return super.list(params, page, size, order, direction); 42 return super.list(params, page, size, order, direction);
43 } 43 }
44 44
  45 + @RequestMapping(value = "/findRoutes" , method = RequestMethod.GET)
  46 + public Map<String, Object> findRoutes(@RequestParam Map<String, Object> map) {
  47 + map.put("destroy_eq", 0);
  48 + if (map.get("line.id_eq") == null || map.get("versions_eq") == null) {
  49 + throw new IllegalArgumentException("需正确传入线路、版本参数");
  50 + }
  51 +
  52 + return lsStationRouteService.findRoutes(map);
  53 + }
  54 +
  55 + @RequestMapping(value = "/findStationRoutes" , method = RequestMethod.GET)
  56 + public List<LsStationRoute> findStationRoutes(@RequestParam Map<String, Object> map) {
  57 + map.put("destroy_eq", 0);
  58 + if (map.get("line.id_eq") == null || map.get("versions_eq") == null) {
  59 + throw new IllegalArgumentException("需正确传入线路、版本参数");
  60 + }
  61 +
  62 + return lsStationRouteService.findStationRoutes(map);
  63 + }
  64 +
45 /** 65 /**
46 * @Description :TODO(查询站点的下一个缓存站点) 66 * @Description :TODO(查询站点的下一个缓存站点)
47 */ 67 */
@@ -91,6 +111,26 @@ public class LsStationRouteController extends BaseController&lt;LsStationRoute, Int @@ -91,6 +111,26 @@ public class LsStationRouteController extends BaseController&lt;LsStationRoute, Int
91 } 111 }
92 112
93 /** 113 /**
  114 + * @param ids
  115 + * @throws
  116 + * @Description: TODO(批量恢复撤销站点)
  117 + */
  118 + @RequestMapping(value = "/batchRecover", method = RequestMethod.POST)
  119 + public Map<String, Object> batchRecover(@RequestParam(value = "ids[]") List<Integer> ids) {
  120 + Map<String, Object> result = new HashMap<>();
  121 + try {
  122 + lsStationRouteService.batchRecover(ids);
  123 + result.put("status", ResponseCode.SUCCESS);
  124 + } catch (Exception e) {
  125 + result.put("status", ResponseCode.ERROR);
  126 + result.put("msg", e.getMessage());
  127 + log.error("", e);
  128 + }
  129 +
  130 + return result;
  131 + }
  132 +
  133 + /**
94 * 保存线路某个版本下单行的站点和路段路由 134 * 保存线路某个版本下单行的站点和路段路由
95 * 常规使用在根据百度地图生成数据或者模板导入的批量保存 135 * 常规使用在根据百度地图生成数据或者模板导入的批量保存
96 * @param map 136 * @param map
src/main/java/com/bsth/controller/StationRouteController.java
@@ -55,23 +55,6 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer @@ -55,23 +55,6 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer
55 public Map<String, Object> export(@RequestParam Integer id, HttpServletResponse resp) { 55 public Map<String, Object> export(@RequestParam Integer id, HttpServletResponse resp) {
56 return stationRouteService.getSectionRouteExport(id, resp); 56 return stationRouteService.getSectionRouteExport(id, resp);
57 } 57 }
58 -  
59 - /**  
60 - * @Description :TODO(查询树站点与路段数据)  
61 - *  
62 - * @param map <line.id_eq:线路ID; directions_eq:方向>  
63 - *  
64 - * @return List<Map<String, Object>>  
65 - */  
66 - @RequestMapping(value = "/findStations" , method = RequestMethod.GET)  
67 - public Map<String, Object> findStations(@RequestParam Map<String, Object> map) {  
68 - map.put("destroy_eq", 0);  
69 - if (map.get("line.id_eq") == null || map.get("directions_eq") == null || map.get("versions_eq") == null) {  
70 - throw new IllegalArgumentException("需正确传入线路、方向、版本参数");  
71 - }  
72 -  
73 - return stationRouteService.findPoints(map);  
74 - }  
75 58
76 @RequestMapping(value = "/systemQuote" , method = RequestMethod.POST) 59 @RequestMapping(value = "/systemQuote" , method = RequestMethod.POST)
77 public Map<String, Object> systemQuote(@RequestParam Map<String, Object> map) { 60 public Map<String, Object> systemQuote(@RequestParam Map<String, Object> map) {
src/main/java/com/bsth/controller/test/GpsTestController.java
@@ -24,6 +24,6 @@ public class GpsTestController { @@ -24,6 +24,6 @@ public class GpsTestController {
24 map.put("line.id_eq", xl); 24 map.put("line.id_eq", xl);
25 map.put("directions_eq", directions); 25 map.put("directions_eq", directions);
26 26
27 - return stationRouteService.findPoints(map); 27 + return stationRouteService.findRoutes(map);
28 } 28 }
29 } 29 }
src/main/java/com/bsth/entity/LineRegion.java 0 → 100644
  1 +package com.bsth.entity;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  4 +
  5 +import javax.persistence.*;
  6 +import java.util.List;
  7 +import java.util.Set;
  8 +
  9 +@Entity
  10 +@Table(name = "bsth_c_line_region")
  11 +@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})
  12 +public class LineRegion {
  13 +
  14 + @Id
  15 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  16 + private Integer id;
  17 +
  18 + private Integer line;
  19 +
  20 + private Integer version;
  21 +
  22 + private Integer direction;
  23 +
  24 + private String regionAlias;
  25 +
  26 + private Integer seq;
  27 +
  28 + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
  29 + @JoinTable(name = "bsth_c_line_region_stationroute",
  30 + joinColumns = @JoinColumn(name = "region_id"),
  31 + inverseJoinColumns = @JoinColumn(name = "station_route_id"))
  32 + private List<LsStationRoute> stationRoutes;
  33 +
  34 + public Integer getId() {
  35 + return id;
  36 + }
  37 +
  38 + public void setId(Integer id) {
  39 + this.id = id;
  40 + }
  41 +
  42 + public Integer getLine() {
  43 + return line;
  44 + }
  45 +
  46 + public void setLine(Integer line) {
  47 + this.line = line;
  48 + }
  49 +
  50 + public Integer getVersion() {
  51 + return version;
  52 + }
  53 +
  54 + public void setVersion(Integer version) {
  55 + this.version = version;
  56 + }
  57 +
  58 + public Integer getDirection() {
  59 + return direction;
  60 + }
  61 +
  62 + public void setDirection(Integer direction) {
  63 + this.direction = direction;
  64 + }
  65 +
  66 + public String getRegionAlias() {
  67 + return regionAlias;
  68 + }
  69 +
  70 + public void setRegionAlias(String regionAlias) {
  71 + this.regionAlias = regionAlias;
  72 + }
  73 +
  74 + public Integer getSeq() {
  75 + return seq;
  76 + }
  77 +
  78 + public void setSeq(Integer seq) {
  79 + this.seq = seq;
  80 + }
  81 +
  82 + public List<LsStationRoute> getStationRoutes() {
  83 + return stationRoutes;
  84 + }
  85 +
  86 + public void setStationRoutes(List<LsStationRoute> stationRoutes) {
  87 + this.stationRoutes = stationRoutes;
  88 + }
  89 +}
src/main/java/com/bsth/repository/LineRegionRepository.java 0 → 100644
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.LineRegion;
  4 +import com.bsth.entity.LsStationRoute;
  5 +import org.springframework.data.jpa.repository.Query;
  6 +import org.springframework.stereotype.Repository;
  7 +
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * @Author Hill
  12 + */
  13 +@Repository
  14 +public interface LineRegionRepository extends BaseRepository<LineRegion, Integer> {
  15 +
  16 + /**
  17 + * 获取线路区间的站点路由
  18 + * @param regionId
  19 + * @return
  20 + */
  21 + @Query(value = "SELECT b.* FROM bsth_c_line_region_stationroute a LEFT JOIN bsth_c_ls_stationroute b ON a.station_route_id = b.id WHERE a.region_id = ?1", nativeQuery = true)
  22 + List<LsStationRoute> findStationRoutes(Integer regionId);
  23 +
  24 + /**
  25 + * 获取线路版本最大线路区间序号
  26 + * @param lineId
  27 + * @param version
  28 + * @return
  29 + */
  30 + @Query(value = "SELECT IFNULL(MAX(seq), 0) FROM bsth_c_line_region lr where lr.line = ?1 and lr.version = ?2", nativeQuery = true)
  31 + Integer getLatestSeq(Integer lineId, Integer version);
  32 +}
src/main/java/com/bsth/repository/LsSectionRouteRepository.java
@@ -35,6 +35,14 @@ public interface LsSectionRouteRepository extends BaseRepository&lt;LsSectionRoute, @@ -35,6 +35,14 @@ public interface LsSectionRouteRepository extends BaseRepository&lt;LsSectionRoute,
35 @Modifying 35 @Modifying
36 @Query(value = "UPDATE LsSectionRoute lsr set lsr.destroy = 1 where lsr.id in (?1)") 36 @Query(value = "UPDATE LsSectionRoute lsr set lsr.destroy = 1 where lsr.id in (?1)")
37 void batchDestroy(List<Integer> ids); 37 void batchDestroy(List<Integer> ids);
  38 +
  39 + /**
  40 + * 批量恢复撤销站点路由
  41 + * @param ids
  42 + */
  43 + @Modifying
  44 + @Query(value = "UPDATE LsSectionRoute lsr set lsr.destroy = 0 where lsr.id in (?1)")
  45 + void batchRecover(List<Integer> ids);
38 46
39 @Query(value ="SELECT a.sectionrouteId," + 47 @Query(value ="SELECT a.sectionrouteId," +
40 "a.sectionrouteLine," + 48 "a.sectionrouteLine," +
src/main/java/com/bsth/repository/LsStationRouteRepository.java
@@ -37,6 +37,14 @@ public interface LsStationRouteRepository extends BaseRepository&lt;LsStationRoute, @@ -37,6 +37,14 @@ public interface LsStationRouteRepository extends BaseRepository&lt;LsStationRoute,
37 void batchDestroy(List<Integer> ids); 37 void batchDestroy(List<Integer> ids);
38 38
39 /** 39 /**
  40 + * 批量恢复撤销站点路由
  41 + * @param ids
  42 + */
  43 + @Modifying
  44 + @Query(value = "UPDATE LsStationRoute lsr set lsr.destroy = 0 where lsr.id in (?1)")
  45 + void batchRecover(List<Integer> ids);
  46 +
  47 + /**
40 * 查询待更新线路的站点路由 48 * 查询待更新线路的站点路由
41 */ 49 */
42 @EntityGraph(value = "ls_stationRoute_station", type = EntityGraph.EntityGraphType.FETCH) 50 @EntityGraph(value = "ls_stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)
src/main/java/com/bsth/repository/SectionRouteRepository.java
@@ -112,7 +112,7 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int @@ -112,7 +112,7 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
112 */ 112 */
113 @Modifying 113 @Modifying
114 @Query(value="delete from SectionRoute sr where sr.line.id = ?1") 114 @Query(value="delete from SectionRoute sr where sr.line.id = ?1")
115 - void deleteByLineAndVersion(Integer lineId); 115 + void deleteByLine(Integer lineId);
116 116
117 /** 117 /**
118 * 历史路由表变更之后从历史表批量更新当前版本至当前表 118 * 历史路由表变更之后从历史表批量更新当前版本至当前表
src/main/java/com/bsth/repository/StationRouteRepository.java
@@ -214,7 +214,7 @@ public interface StationRouteRepository extends BaseRepository&lt;StationRoute, Int @@ -214,7 +214,7 @@ public interface StationRouteRepository extends BaseRepository&lt;StationRoute, Int
214 */ 214 */
215 @Modifying 215 @Modifying
216 @Query(value="delete from StationRoute sr where sr.line.id = ?1") 216 @Query(value="delete from StationRoute sr where sr.line.id = ?1")
217 - void deleteByLineAndVersion(Integer lineId); 217 + void deleteByLine(Integer lineId);
218 218
219 /** 219 /**
220 * 历史路由表变更之后从历史表批量更新当前版本至当前表 220 * 历史路由表变更之后从历史表批量更新当前版本至当前表
src/main/java/com/bsth/service/LineRegionService.java 0 → 100644
  1 +package com.bsth.service;
  2 +
  3 +import com.bsth.entity.LineRegion;
  4 +import com.bsth.entity.LsStationRoute;
  5 +
  6 +import java.util.List;
  7 +import java.util.Map;
  8 +
  9 +/**
  10 + * @Author Hill
  11 + */
  12 +public interface LineRegionService extends BaseService<LineRegion, Integer> {
  13 +
  14 + /**
  15 + * 获取线路区间的站点路由
  16 + * @param regionId
  17 + * @return
  18 + */
  19 + List<LsStationRoute> findStationRoutes(Integer regionId);
  20 +
  21 + /**
  22 + * 添加线路区间
  23 + * @param lineRegion
  24 + * @return
  25 + */
  26 + Map<String, Object> add(LineRegion lineRegion);
  27 +}
src/main/java/com/bsth/service/LsSectionRouteService.java
@@ -11,12 +11,25 @@ import java.util.Map; @@ -11,12 +11,25 @@ import java.util.Map;
11 public interface LsSectionRouteService extends BaseService<LsSectionRoute, Integer> { 11 public interface LsSectionRouteService extends BaseService<LsSectionRoute, Integer> {
12 12
13 /** 13 /**
  14 + * 获取历史路段路由
  15 + * @param map
  16 + * @return
  17 + */
  18 + List<LsSectionRoute> findSectionRoutes(Map<String, Object> map);
  19 +
  20 + /**
14 * 批量撤销路段路由 21 * 批量撤销路段路由
15 * @param ids 22 * @param ids
16 */ 23 */
17 void batchDestroy(List<Integer> ids); 24 void batchDestroy(List<Integer> ids);
18 25
19 /** 26 /**
  27 + * 批量恢复撤销的站点路由
  28 + * @param ids
  29 + */
  30 + void batchRecover(List<Integer> ids);
  31 +
  32 + /**
20 * 引用另一上下行路段 33 * 引用另一上下行路段
21 * @param lineId 34 * @param lineId
22 * @param version 35 * @param version
src/main/java/com/bsth/service/LsStationRouteService.java
@@ -19,6 +19,20 @@ public interface LsStationRouteService extends BaseService&lt;LsStationRoute, Integ @@ -19,6 +19,20 @@ public interface LsStationRouteService extends BaseService&lt;LsStationRoute, Integ
19 Iterable<LsStationRoute> findAllByParams(Map<String, Object> map); 19 Iterable<LsStationRoute> findAllByParams(Map<String, Object> map);
20 20
21 /** 21 /**
  22 + * 获取历史站点和路段路由
  23 + * @param map
  24 + * @return
  25 + */
  26 + Map<String, Object> findRoutes(Map<String, Object> map);
  27 +
  28 + /**
  29 + * 获取历史站点路由
  30 + * @param map
  31 + * @return
  32 + */
  33 + List<LsStationRoute> findStationRoutes(Map<String, Object> map);
  34 +
  35 + /**
22 * 获取当前站点以及下一站点路由 36 * 获取当前站点以及下一站点路由
23 * @param id 37 * @param id
24 * @return 38 * @return
@@ -32,6 +46,12 @@ public interface LsStationRouteService extends BaseService&lt;LsStationRoute, Integ @@ -32,6 +46,12 @@ public interface LsStationRouteService extends BaseService&lt;LsStationRoute, Integ
32 void batchDestroy(List<Integer> ids); 46 void batchDestroy(List<Integer> ids);
33 47
34 /** 48 /**
  49 + * 批量恢复撤销的站点路由
  50 + * @param ids
  51 + */
  52 + void batchRecover(List<Integer> ids);
  53 +
  54 + /**
35 * 保存线路某个版本下单行的站点和路段路由 55 * 保存线路某个版本下单行的站点和路段路由
36 * 常规使用在根据百度地图生成数据或者模板导入的批量保存 56 * 常规使用在根据百度地图生成数据或者模板导入的批量保存
37 * @param lineId 57 * @param lineId
src/main/java/com/bsth/service/StationRouteService.java
@@ -40,7 +40,7 @@ public interface StationRouteService extends BaseService&lt;StationRoute, Integer&gt; @@ -40,7 +40,7 @@ public interface StationRouteService extends BaseService&lt;StationRoute, Integer&gt;
40 * 40 *
41 * @return List<Map<String, Object>> 41 * @return List<Map<String, Object>>
42 */ 42 */
43 - Map<String, Object> findPoints(Map<String, Object> map); 43 + Map<String, Object> findRoutes(Map<String, Object> map);
44 44
45 Map<String, Object> systemQuote(Map<String, Object> map); 45 Map<String, Object> systemQuote(Map<String, Object> map);
46 46
src/main/java/com/bsth/service/impl/LineRegionServiceImpl.java 0 → 100644
  1 +package com.bsth.service.impl;
  2 +
  3 +import com.bsth.entity.LineRegion;
  4 +import com.bsth.entity.LsStationRoute;
  5 +import com.bsth.repository.LineRegionRepository;
  6 +import com.bsth.service.LineRegionService;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.stereotype.Service;
  9 +import org.springframework.transaction.annotation.Transactional;
  10 +
  11 +import java.util.Collections;
  12 +import java.util.List;
  13 +import java.util.Map;
  14 +
  15 +/**
  16 + * @Author Hill
  17 + */
  18 +@Service
  19 +public class LineRegionServiceImpl extends BaseServiceImpl<LineRegion, Integer> implements LineRegionService {
  20 +
  21 + @Autowired
  22 + private LineRegionRepository lineRegionRepository;
  23 +
  24 + @Override
  25 + public List<LsStationRoute> findStationRoutes(Integer regionId) {
  26 + return lineRegionRepository.findStationRoutes(regionId);
  27 + }
  28 +
  29 + @Transactional
  30 + @Override
  31 + public Map<String, Object> add(LineRegion lineRegion) {
  32 + Integer seq = lineRegionRepository.getLatestSeq(lineRegion.getLine(), lineRegion.getVersion()) + 1;
  33 + lineRegion.setSeq(seq);
  34 + lineRegionRepository.save(lineRegion);
  35 +
  36 + return Collections.emptyMap();
  37 + }
  38 +}
src/main/java/com/bsth/service/impl/LineVersionsServiceImpl.java
@@ -52,8 +52,7 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ @@ -52,8 +52,7 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ
52 52
53 @Autowired 53 @Autowired
54 SectionRepository sectionRepository; 54 SectionRepository sectionRepository;
55 -  
56 - 55 +
57 @Autowired 56 @Autowired
58 com.bsth.repository.SectionRouteRepository sectionRouteRepository ; 57 com.bsth.repository.SectionRouteRepository sectionRouteRepository ;
59 58
@@ -123,9 +122,9 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ @@ -123,9 +122,9 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ
123 String lineCode = lineVersions.getLineCode(); 122 String lineCode = lineVersions.getLineCode();
124 Integer versions = lineVersions.getVersions(); 123 Integer versions = lineVersions.getVersions();
125 124
126 - stationRouteRepository.deleteByLineAndVersion(lineId); 125 + stationRouteRepository.deleteByLine(lineId);
127 stationRouteRepository.updateFromHistory(lineId, versions); 126 stationRouteRepository.updateFromHistory(lineId, versions);
128 - sectionRouteRepository.deleteByLineAndVersion(lineId); 127 + sectionRouteRepository.deleteByLine(lineId);
129 sectionRouteRepository.updateFromHistory(lineId, versions); 128 sectionRouteRepository.updateFromHistory(lineId, versions);
130 // 更新线路版本 129 // 更新线路版本
131 repository.updateOdlVersions(lineId, lineCode); 130 repository.updateOdlVersions(lineId, lineCode);
src/main/java/com/bsth/service/impl/LsSectionRouteServiceImpl.java
1 package com.bsth.service.impl; 1 package com.bsth.service.impl;
2 2
3 import com.bsth.entity.*; 3 import com.bsth.entity.*;
  4 +import com.bsth.entity.search.CustomerSpecs;
4 import com.bsth.repository.*; 5 import com.bsth.repository.*;
5 import com.bsth.service.LsSectionRouteService; 6 import com.bsth.service.LsSectionRouteService;
6 import com.bsth.util.CoordinateConverter; 7 import com.bsth.util.CoordinateConverter;
@@ -10,6 +11,7 @@ import org.geolatte.geom.Point; @@ -10,6 +11,7 @@ import org.geolatte.geom.Point;
10 import org.geolatte.geom.Polygon; 11 import org.geolatte.geom.Polygon;
11 import org.geolatte.geom.codec.Wkt; 12 import org.geolatte.geom.codec.Wkt;
12 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.data.domain.Sort;
13 import org.springframework.stereotype.Service; 15 import org.springframework.stereotype.Service;
14 import org.springframework.transaction.annotation.Transactional; 16 import org.springframework.transaction.annotation.Transactional;
15 17
@@ -39,6 +41,15 @@ public class LsSectionRouteServiceImpl extends BaseServiceImpl&lt;LsSectionRoute, I @@ -39,6 +41,15 @@ public class LsSectionRouteServiceImpl extends BaseServiceImpl&lt;LsSectionRoute, I
39 private SectionRepository sectionRepository; 41 private SectionRepository sectionRepository;
40 42
41 /** 43 /**
  44 + * 获取历史路段路由
  45 + * @param map
  46 + * @return
  47 + */
  48 + public List<LsSectionRoute> findSectionRoutes(Map<String, Object> map) {
  49 + return lsSectionRouteRepository.findAll(new CustomerSpecs<>(map), Sort.by(Sort.Direction.ASC, "directions", "sectionrouteCode"));
  50 + }
  51 +
  52 + /**
42 * 批量撤销路段路由 53 * 批量撤销路段路由
43 * @param ids 54 * @param ids
44 */ 55 */
@@ -56,6 +67,24 @@ public class LsSectionRouteServiceImpl extends BaseServiceImpl&lt;LsSectionRoute, I @@ -56,6 +67,24 @@ public class LsSectionRouteServiceImpl extends BaseServiceImpl&lt;LsSectionRoute, I
56 } 67 }
57 } 68 }
58 69
  70 + /**
  71 + * 批量恢复撤销路段路由
  72 + * @param ids
  73 + */
  74 + @Override
  75 + @Transactional(rollbackFor = RuntimeException.class)
  76 + public void batchRecover(List<Integer> ids) {
  77 + LsSectionRoute lsSectionRoute = lsSectionRouteRepository.findById(ids.get(0)).get();
  78 + Integer currentVersion = lineVersionsRepository.findCurrentVersion(lsSectionRoute.getLine().getId());
  79 + if (lsSectionRoute.getVersions() < currentVersion) {
  80 + throw new IllegalArgumentException("历史版本不可变更");
  81 + }
  82 + lsSectionRouteRepository.batchRecover(ids);
  83 + if (lsSectionRoute.getVersions().equals(currentVersion)) {
  84 + refreshCurrent(lsSectionRoute.getLine().getId(), currentVersion);
  85 + }
  86 + }
  87 +
59 @Override 88 @Override
60 @Transactional(rollbackFor = RuntimeException.class) 89 @Transactional(rollbackFor = RuntimeException.class)
61 public Map<String, Object> quoteOtherSide(int lineId, int version, int direction, int otherDirection) { 90 public Map<String, Object> quoteOtherSide(int lineId, int version, int direction, int otherDirection) {
@@ -116,7 +145,7 @@ public class LsSectionRouteServiceImpl extends BaseServiceImpl&lt;LsSectionRoute, I @@ -116,7 +145,7 @@ public class LsSectionRouteServiceImpl extends BaseServiceImpl&lt;LsSectionRoute, I
116 } 145 }
117 146
118 protected void refreshCurrent(int lineId, int version) { 147 protected void refreshCurrent(int lineId, int version) {
119 - sectionRouteRepository.deleteByLineAndVersion(lineId); 148 + sectionRouteRepository.deleteByLine(lineId);
120 sectionRouteRepository.updateFromHistory(lineId, version); 149 sectionRouteRepository.updateFromHistory(lineId, version);
121 } 150 }
122 } 151 }
123 \ No newline at end of file 152 \ No newline at end of file
src/main/java/com/bsth/service/impl/LsStationRouteServiceImpl.java
@@ -72,6 +72,32 @@ public class LsStationRouteServiceImpl extends BaseServiceImpl&lt;LsStationRoute, I @@ -72,6 +72,32 @@ public class LsStationRouteServiceImpl extends BaseServiceImpl&lt;LsStationRoute, I
72 } 72 }
73 73
74 /** 74 /**
  75 + * 获取历史站点和路段路由
  76 + * @param map
  77 + * @return
  78 + */
  79 + @Override
  80 + public Map<String, Object> findRoutes(Map<String, Object> map) {
  81 + Map<String, Object> result = new HashMap<>();
  82 + List<LsStationRoute> stationList = lsStationRouteRepository.findAll(new CustomerSpecs<>(map), Sort.by(Sort.Direction.ASC, "directions", "stationRouteCode"));
  83 + List<LsSectionRoute> sectionList = lsSectionRouteRepository.findAll(new CustomerSpecs<>(map), Sort.by(Sort.Direction.ASC, "directions", "sectionrouteCode"));
  84 +
  85 + result.put("stationRoutes", stationList);
  86 + result.put("sectionRoutes", sectionList);
  87 +
  88 + return result;
  89 + }
  90 +
  91 + /**
  92 + * 获取历史站点路由
  93 + * @param map
  94 + * @return
  95 + */
  96 + public List<LsStationRoute> findStationRoutes(Map<String, Object> map) {
  97 + return lsStationRouteRepository.findAll(new CustomerSpecs<>(map), Sort.by(Sort.Direction.ASC, "directions", "stationRouteCode"));
  98 + }
  99 +
  100 + /**
75 * 获取当前站点以及下一站点路由 101 * 获取当前站点以及下一站点路由
76 * @param id 102 * @param id
77 * @return 103 * @return
@@ -123,6 +149,31 @@ public class LsStationRouteServiceImpl extends BaseServiceImpl&lt;LsStationRoute, I @@ -123,6 +149,31 @@ public class LsStationRouteServiceImpl extends BaseServiceImpl&lt;LsStationRoute, I
123 } 149 }
124 } 150 }
125 151
  152 + /**
  153 + * 批量恢复撤销站点路由
  154 + * @param ids
  155 + */
  156 + @BusinessDescription(value = "批量恢复撤销站点路由")
  157 + @Transactional(rollbackFor = RuntimeException.class)
  158 + @Override
  159 + public void batchRecover(List<Integer> ids) {
  160 + if (ids.size() > 0) {
  161 + Integer id = ids.get(0);
  162 + LsStationRoute stationRoute = lsStationRouteRepository.findById(id).get();
  163 + Integer lineId = stationRoute.getLine().getId();
  164 + Integer currentVersion = lineVersionsRepository.findCurrentVersion(lineId);
  165 + if (stationRoute.getVersions() < currentVersion) {
  166 + throw new IllegalArgumentException("历史版本不可变更");
  167 + }
  168 +
  169 + lsStationRouteRepository.batchRecover(ids);
  170 + remark(stationRoute);
  171 + if (stationRoute.getVersions().equals(currentVersion)) {
  172 + refreshCurrent(lineId, currentVersion);
  173 + }
  174 + }
  175 + }
  176 +
126 @Transactional 177 @Transactional
127 @Override 178 @Override
128 public Map<String, Object> addRoutes(Integer lineId, Integer versions, Integer directions, List<LsStationRoute> stationRoutes, List<LsSectionRoute> sectionRoutes) { 179 public Map<String, Object> addRoutes(Integer lineId, Integer versions, Integer directions, List<LsStationRoute> stationRoutes, List<LsSectionRoute> sectionRoutes) {
@@ -372,7 +423,7 @@ public class LsStationRouteServiceImpl extends BaseServiceImpl&lt;LsStationRoute, I @@ -372,7 +423,7 @@ public class LsStationRouteServiceImpl extends BaseServiceImpl&lt;LsStationRoute, I
372 } 423 }
373 424
374 protected void refreshCurrent(int lineId, int version) { 425 protected void refreshCurrent(int lineId, int version) {
375 - stationRouteRepository.deleteByLineAndVersion(lineId); 426 + stationRouteRepository.deleteByLine(lineId);
376 stationRouteRepository.updateFromHistory(lineId, version); 427 stationRouteRepository.updateFromHistory(lineId, version);
377 } 428 }
378 } 429 }
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
@@ -136,10 +136,10 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ @@ -136,10 +136,10 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
136 * @return List<Map<String, Object>> 136 * @return List<Map<String, Object>>
137 */ 137 */
138 @Override 138 @Override
139 - public Map<String, Object> findPoints(Map<String, Object> map) { 139 + public Map<String, Object> findRoutes(Map<String, Object> map) {
140 Map<String, Object> result = new HashMap<>(); 140 Map<String, Object> result = new HashMap<>();
141 - List<LsStationRoute> stationList = lsStationRouteRepository.findAll(new CustomerSpecs<>(map), Sort.by(Direction.ASC, "stationRouteCode"));  
142 - List<LsSectionRoute> sectionList = lsSectionRouteRepository.findAll(new CustomerSpecs<>(map), Sort.by(Direction.ASC, "sectionrouteCode")); 141 + List<StationRoute> stationList = stationRouteRepository.findAll(new CustomerSpecs<>(map), Sort.by(Direction.ASC, "directions", "stationRouteCode"));
  142 + List<SectionRoute> sectionList = sectionRouteRepository.findAll(new CustomerSpecs<>(map), Sort.by(Direction.ASC, "directions", "sectionrouteCode"));
143 143
144 result.put("stationRoutes", stationList); 144 result.put("stationRoutes", stationList);
145 result.put("sectionRoutes", sectionList); 145 result.put("sectionRoutes", sectionList);
@@ -147,230 +147,6 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ @@ -147,230 +147,6 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
147 return result; 147 return result;
148 } 148 }
149 149
150 - public List<Map<String, Object>> treeListMap(List<LsStationRoute> stationList,List<LsSectionRoute> sectionList) {  
151 -  
152 - List<Map<String, Object>> resultList= new ArrayList<Map<String, Object>>();  
153 -  
154 - // 站点孩子节点  
155 - List<Map<String, Object>> staitonChildren= new ArrayList<Map<String, Object>>();  
156 -  
157 - if(stationList.size()>0) {  
158 - for(int i = 0 ; i < stationList.size(); i++) {  
159 - LsStationRoute stationRoute = stationList.get(i);  
160 - Map<String, Object> tempM = new HashMap<String, Object>();  
161 - // 站点路由ID  
162 - tempM.put("stationRouteId", stationRoute.getId());  
163 - // 站点路由线路ID  
164 - tempM.put("stationRouteLine", stationRoute.getLine().getId());  
165 - // 站点路由站点ID  
166 - tempM.put("stationRouteStation", stationRoute.getStation().getId());  
167 - // 站点路由名称  
168 - tempM.put("stationRouteName", stationRoute.getStationName());  
169 - // 站点路由站点序号  
170 - tempM.put("stationRouteCode", stationRoute.getStationRouteCode());  
171 - // 站点路由线路编码  
172 - tempM.put("stationRouteLineCode", stationRoute.getLineCode());  
173 - // 站点路由站点类型  
174 - tempM.put("stationRouteStationMark", stationRoute.getStationMark());  
175 - // 站点路由出站的序号  
176 - tempM.put("stationRouteOutStationNmber", stationRoute.getOutStationNmber());  
177 - // 站点路由站点方向  
178 - tempM.put("stationRoutedirections", stationRoute.getDirections());  
179 - // 站点路由站点到站距离  
180 - tempM.put("stationRouteDistances", stationRoute.getDistances());  
181 - // 站点路由到站时间  
182 - tempM.put("stationRouteToTime", stationRoute.getToTime());  
183 - // 站点路由站点首班时间  
184 - tempM.put("stationRouteFirstTime", stationRoute.getFirstTime());  
185 - // 站点路由站点末班时间  
186 - tempM.put("stationRouteEndTime", stationRoute.getEndTime());  
187 - // 站点路由站点说明  
188 - tempM.put("stationRouteDescriptions", stationRoute.getDescriptions());  
189 - // 站点路由版本  
190 - tempM.put("stationRouteVersions", stationRoute.getVersions());  
191 - // 站点ID  
192 - tempM.put("stationId", stationRoute.getStation().getId());  
193 - // 站点编码  
194 - tempM.put("stationCode", stationRoute.getStation().getStationCode());  
195 - // 站点名称  
196 - tempM.put("stationStationName", stationRoute.getStation().getStationName());  
197 - // 路段编码  
198 - tempM.put("stationRoadCoding", stationRoute.getStation().getRoadCoding());  
199 - // 中心点(百度坐标)  
200 - tempM.put("stationJwpoints", stationRoute.getStation().getCenterPoint().toString());  
201 - CoordinateConverter.Location location = CoordinateConverter.LocationMake(stationRoute.getStation().getCenterPointWgs().toString());  
202 - // 中心点(WGS经度)  
203 - tempM.put("stationGLonx", location.getLng());  
204 - // 中心点(WGS纬度)  
205 - tempM.put("stationGLaty", location.getLat());  
206 - // 站点图形类型  
207 - tempM.put("stationShapesType", stationRoute.getShapedType());  
208 - // 站点圆半径  
209 - tempM.put("stationRadius", stationRoute.getRadius());  
210 - // 站点图形WGS坐标  
211 - Polygon polygon = stationRoute.getBufferPolygon(), polygonWgs = stationRoute.getBufferPolygonWgs();  
212 - tempM.put("stationGPolygonGrid", polygonWgs == null ? "" : polygonWgs.toString());  
213 - // 站点图形百度坐标  
214 - tempM.put("stationBPolygonGrid", polygon == null ? "" : polygon.toString());  
215 - // 是否撤销  
216 - tempM.put("stationDestroy", stationRoute.getStation().getDestroy());  
217 - // 站点版本  
218 - tempM.put("stationVersions", stationRoute.getStation().getVersions());  
219 - // 站点说明  
220 - tempM.put("stationDescriptions", stationRoute.getStation().getDescriptions());  
221 - // 行业标准  
222 - tempM.put("industryCode", stationRoute.getIndustryCode());  
223 - tempM.put("stationNameEn", stationRoute.getStationNameEn());  
224 - tempM.put("zdmc", stationRoute.getStationName());  
225 - tempM.put("text", stationRoute.getStationName());  
226 - tempM.put("icon", "fa fa-bus");  
227 - tempM.put("pId", 200);  
228 - tempM.put("id", i+1);  
229 - tempM.put("groupType", "3");  
230 - tempM.put("chaildredType", "station");  
231 - tempM.put("enable", true);  
232 - staitonChildren.add(tempM);  
233 - }  
234 - }  
235 -  
236 - // 路段孩子节点  
237 - List<Map<String, Object>> sectionChildren = new ArrayList<Map<String, Object>>();  
238 -  
239 - if(sectionList.size()>0) {  
240 - for(int i = 0 ; i<sectionList.size() ; i++){  
241 - LsSectionRoute sectionRoute = sectionList.get(i);  
242 - Map<String, Object> tempM = new HashMap<String, Object>();  
243 - // 路段路由ID  
244 - tempM.put("sectionrouteId",sectionRoute.getId());  
245 - // 路段路由线路ID  
246 - tempM.put("sectionrouteLine",sectionRoute.getLine().getId());  
247 - // 路段路由线路编码  
248 - tempM.put("sectionrouteLineCode",sectionRoute.getLineCode());  
249 - // 路段路由路段ID  
250 - tempM.put("sectionrouteSection",sectionRoute.getSection().getId());  
251 - // 路段路由路段编码  
252 - tempM.put("sectionrouteSectionCode",sectionRoute.getSectionCode());  
253 - tempM.put("sectionrouteCode",sectionRoute.getSectionrouteCode());  
254 - tempM.put("sectionrouteDirections",sectionRoute.getDirections());  
255 - // 路段ID  
256 - tempM.put("sectionId",sectionRoute.getSection().getId());  
257 - // 路段编码  
258 - tempM.put("sectionCode",sectionRoute.getSection().getSectionCode());  
259 - // 路段名称  
260 - tempM.put("sectionName",sectionRoute.getSection().getSectionName());  
261 - // 道路编码  
262 - tempM.put("sectionCrosesRoad",sectionRoute.getSection().getCrosesRoad());  
263 - // 终点站  
264 - tempM.put("sectionEndNode",sectionRoute.getSection().getEndNode());  
265 - // 起始节点  
266 - tempM.put("sectionStartNode",sectionRoute.getSection().getStartNode());  
267 - // 中间节点  
268 - tempM.put("sectionMiddleNode",sectionRoute.getSection().getMiddleNode());  
269 - // 路段类型  
270 - tempM.put("sectionType",sectionRoute.getSection().getSectionType());  
271 - // 路段折线图形城建坐标  
272 - tempM.put("sectionCsectionVector",sectionRoute.getSection().getCsectionVectorWkt());  
273 - // 路段折线图形百度坐标  
274 - tempM.put("sectionBsectionVector",sectionRoute.getSection().getBsectionVectorWkt());  
275 - // 路段折线图形WGS坐标  
276 - tempM.put("sectionGsectionVector",sectionRoute.getSection().getGsectionVectorWkt());  
277 - // 道路编码  
278 - tempM.put("sectionRoadCoding",sectionRoute.getSection().getRoadCoding());  
279 - // 路段距离  
280 - tempM.put("sectionDistance",sectionRoute.getSection().getSectionDistance());  
281 - // 路段时间  
282 - tempM.put("sectionTime",sectionRoute.getSection().getSectionTime());  
283 - // 路段原坐标类型  
284 - tempM.put("sectiondbType",sectionRoute.getSection().getDbType());  
285 - // 限速  
286 - tempM.put("sectionSpeedLimit",sectionRoute.getSection().getSpeedLimit());  
287 - // 是否撤销  
288 - tempM.put("destroy",sectionRoute.getDestroy());  
289 - // 版本号  
290 - tempM.put("versions",sectionRoute.getVersions());  
291 - // 说明  
292 - tempM.put("descriptions",sectionRoute.getDescriptions());  
293 - // 说明  
294 - tempM.put("isRoadeSpeed",sectionRoute.getIsRoadeSpeed());  
295 - tempM.put("name", sectionRoute.getSection().getSectionName());  
296 - tempM.put("text", sectionRoute.getSection().getSectionName());  
297 - tempM.put("icon", null);  
298 - tempM.put("pId", 300);  
299 - tempM.put("id", (i+1)*1000);  
300 - tempM.put("groupType", "3");  
301 - tempM.put("chaildredType", "section");  
302 - tempM.put("enable", true);  
303 - sectionChildren.add(tempM);  
304 - }  
305 - } else {  
306 - if(stationList.size()>0) {  
307 - Map<String, Object> tempM = new HashMap<String, Object>();  
308 - tempM.put("name", "添加路段");  
309 - tempM.put("text", "添加路段");  
310 - tempM.put("lineId", stationList.get(0).getLine().getId());  
311 - tempM.put("lineCode", stationList.get(0).getLine().getLineCode());  
312 - tempM.put("dir", stationList.get(0).getDirections());  
313 - tempM.put("versions", stationList.get(0).getVersions());  
314 - tempM.put("icon", null);  
315 - tempM.put("pId", 300);  
316 - tempM.put("id", 1000);  
317 - tempM.put("groupType", "3");  
318 - tempM.put("chaildredType", "addSection");  
319 - tempM.put("sectionBsectionVector", sectionList.size() > 0 ? sectionList.get(0).getSection().getBsectionVector() : "");  
320 - tempM.put("enable", true);  
321 - sectionChildren.add(tempM);  
322 - }  
323 - }  
324 -  
325 - // 站点与路段孩子节点  
326 - List<Map<String, Object>> childrenTwo = new ArrayList<Map<String, Object>>();  
327 -  
328 - // 站点节点  
329 - Map<String, Object> childrenStationMap = new HashMap<String, Object>();  
330 - childrenStationMap.put("children", staitonChildren);  
331 - childrenStationMap.put("container", "pjax-container");  
332 - childrenStationMap.put("enable", true);  
333 - childrenStationMap.put("groupType", "2");  
334 - childrenStationMap.put("chaildredType", null);  
335 -  
336 - childrenStationMap.put("icon", null);  
337 - childrenStationMap.put("id", 200);  
338 - childrenStationMap.put("name", "站点");  
339 - childrenStationMap.put("pId", 100);  
340 - childrenStationMap.put("text", "站点");  
341 - childrenTwo.add(childrenStationMap);  
342 -  
343 - // 路段节点  
344 - Map<String, Object> childrenSectionMap = new HashMap<String, Object>();  
345 - childrenSectionMap.put("children", sectionChildren);  
346 - childrenSectionMap.put("container", "pjax-container");  
347 - childrenSectionMap.put("enable", true);  
348 - childrenSectionMap.put("groupType", "2");  
349 - childrenSectionMap.put("chaildredType", null);  
350 - childrenSectionMap.put("icon", null);  
351 - childrenSectionMap.put("id", 300);  
352 - childrenSectionMap.put("name", "路段");  
353 - childrenSectionMap.put("pId", 100);  
354 - childrenSectionMap.put("text", "路段");  
355 - childrenTwo.add(childrenSectionMap);  
356 -  
357 - // 站点与路段  
358 - Map<String, Object> resultMap = new HashMap<String, Object>();  
359 - resultMap.put("children", childrenTwo);  
360 - resultMap.put("container", "pjax-container");  
361 - resultMap.put("enable", true);  
362 - resultMap.put("groupType", "1");  
363 - resultMap.put("chaildredType", null);  
364 - resultMap.put("icon", null);  
365 - resultMap.put("id", 100);  
366 - resultMap.put("name", "站点与路段");  
367 - resultMap.put("pId", null);  
368 - resultMap.put("text", "站点与路段");  
369 - resultList.add(resultMap);  
370 -  
371 - return resultList;  
372 - }  
373 -  
374 @Override 150 @Override
375 public Map<String, Object> systemQuote(Map<String, Object> map) { 151 public Map<String, Object> systemQuote(Map<String, Object> map) {
376 Map<String, Object> resultmap = new HashMap<>(); 152 Map<String, Object> resultmap = new HashMap<>();
src/main/resources/datatools/config-test.properties
@@ -11,7 +11,7 @@ datatools.kvars_dbuname=root @@ -11,7 +11,7 @@ datatools.kvars_dbuname=root
11 #数据库密码 11 #数据库密码
12 datatools.kvars_dbpwd=Aa123456 12 datatools.kvars_dbpwd=Aa123456
13 #数据库库名 13 #数据库库名
14 -datatools.kvars_dbdname=control 14 +datatools.kvars_dbdname=lg_control
15 15
16 # 3、上传数据配置信息 16 # 3、上传数据配置信息
17 # 上传文件目录配置(根据不同的环境需要修正) 17 # 上传文件目录配置(根据不同的环境需要修正)
src/main/resources/static/pages/base/lineversions/list.html
1 -<!-- 片段标题 START -->  
2 -<div class="page-head">  
3 - <div class="page-title">  
4 - <h1>线路版本信息</h1>  
5 - </div>  
6 -</div>  
7 -<!-- 片段标题 END -->  
8 -  
9 -<!-- 线路信息导航栏组件 START -->  
10 -<ul class="page-breadcrumb breadcrumb">  
11 - <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>  
12 - <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>  
13 - <li><span class="active">线路版本信息</span></li>  
14 -</ul>  
15 -<!-- 线路信息导航栏组件 END -->  
16 -  
17 -<div class="row">  
18 - <div class="col-md-12">  
19 - <div class="portlet light porttlet-fit bordered">  
20 - <div class="portlet-title">  
21 - <div class="tipso-animation">  
22 - </div>  
23 - <div class="caption">  
24 - <i class="fa fa-info-circle font-dark"></i>  
25 - <span class="caption-subject font-dark sbold uppercase">线路版本信息</span>  
26 - </div>  
27 - <div class="actions">  
28 - <div class="btn-group btn-group-devided" data-toggle="buttons">  
29 - <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加待更新版本</a>  
30 - </div>  
31 - </div>  
32 - </div>  
33 - <div class="portlet-body">  
34 - <div class="table-container" style="margin-top: 10px">  
35 - <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_lineversions">  
36 - <thead>  
37 - <tr role="row" class="heading">  
38 - <th width="4%">序号</th>  
39 - <th width="5%">线路编码</th>  
40 - <th width="6%">线路名称</th>  
41 - <th width="6%">所属公司</th>  
42 - <th width="6%">所属分公司</th>  
43 - <th width="8%">启用时间</th>  
44 - <th width="8%">终止时间</th>  
45 - <th width="6%">版本号</th>  
46 - <th width="6%">版本状态</th>  
47 - <th width="6%">描述</th>  
48 - <th width="12%">操作</th>  
49 - </tr>  
50 - <tr role="row" class="filter">  
51 - <td>#</td>  
52 - <td>  
53 - <input type="text" class="form-control form-filter input-sm" name="lineCode_eq" id="lineCodeInput">  
54 - </td>  
55 - <td>  
56 - <select name="line.name_like" class="form-control" style="width:100%" id="lineSelect"></select>  
57 - <!-- <input type="text" class="form-control form-filter input-sm" name="name_like"> -->  
58 - </td>  
59 - <td>  
60 - <!-- 公司这里没使用字典表,暂时查的公司表 -->  
61 - <select name="line.company_eq" class="form-control" id="companySelect"></select>  
62 - </td>  
63 - <!-- 闵行没有下属公司,这里暂时注释掉 -->  
64 - <td>  
65 - <select name="line.brancheCompany_eq" class="form-control" id="brancheCompanySelect"></select>  
66 - </td>  
67 - <td>  
68 -<!-- <input type="text" class="form-control form-filter input-sm" name="shanghaiLinecode_eq"> -->  
69 - </td>  
70 - <td>  
71 -<!-- <input type="text" class="form-control form-filter input-sm" name="shanghaiLinecode_eq"> -->  
72 - </td>  
73 - <td>  
74 - <input type="text" class="form-control form-filter input-sm" name="versions_eq">  
75 -  
76 - </td>  
77 - <td>  
78 - <select name="status_eq" class="form-control" id="statusSelect">  
79 - <option value="">请选择...</option>  
80 - <option value="1">当前版本</option>  
81 - <option value="2">待更新版本</option>  
82 - <option value="0">历史版本</option>  
83 - </select>  
84 - </td>  
85 - <td></td>  
86 - <td>  
87 - <button class="btn btn-sm green btn-outline filter-submit margin-bottom" >  
88 - <i class="fa fa-search"></i> 搜索  
89 - </button>  
90 -  
91 - <button class="btn btn-sm red btn-outline filter-cancel" id="notification-trigger">  
92 - <i class="fa fa-times"></i> 重置  
93 - </button>  
94 - </td>  
95 - </tr>  
96 - </thead>  
97 - <tbody></tbody>  
98 - </table>  
99 - <div style="text-align: right;">  
100 - <ul id="pagination" class="pagination"></ul>  
101 - </div>  
102 - </div>  
103 - </div>  
104 - </div>  
105 - </div>  
106 -</div>  
107 -  
108 -<script type="text/html" id="lineversions_list_temp">  
109 - {{each list as obj i }}  
110 - <tr>  
111 - <td style="vertical-align: middle;">  
112 - {{(list.page*10)+(i+1)}}  
113 - </td>  
114 - <td>  
115 - {{obj.lineCode}}  
116 - </td>  
117 - <td>  
118 - {{obj.line.name}}  
119 - </td>  
120 - <td>  
121 - {{obj.gsmc}}  
122 - </td>  
123 - <td>  
124 - {{obj.fgsmc}}  
125 - </td>  
126 - <td>  
127 - {{obj.startDateStr}}  
128 - </td>  
129 - <td>  
130 - {{obj.endDateStr}}  
131 - </td>  
132 - <td>  
133 - {{obj.versions}}  
134 - </td>  
135 - <td>  
136 - {{if obj.status == '0'}}  
137 - 历史版本  
138 - {{else if obj.status == '1'}}  
139 - 当前版本  
140 - {{else if obj.status == '2'}}  
141 - 待更新版本  
142 - {{/if}}  
143 - </td>  
144 - <td>  
145 - {{obj.remark}}  
146 - </td>  
147 - <td>  
148 - {{if obj.status != '0'}}  
149 - <a href="edit.html?no={{obj.id}}" class="btn btn-info btn-sm" data-pjax> 修改 </a>  
150 - {{/if}}  
151 - {{if obj.status == '2'}}  
152 - <a class="update_delete_btn btn btn-danger btn-sm" data-id="{{obj.id}}" data-pjax> 删除 </a>  
153 - <a class="update_versions_route_btn btn btn-info btn-sm" data-lineid="{{obj.line.id}}" data-pjax> 编辑版本路线 </a>  
154 - {{/if}}  
155 - {{if obj.status == '2' && obj.isupdate!=1}}  
156 - <a class="issue_btn btn btn-danger btn-sm" data-id="{{obj.id}}" data-pjax>发布</a>  
157 - {{else if obj.status == '2' && obj.isupdate==1}}  
158 - <a class="btn btn-danger btn-sm disabled">数据同步中</a>  
159 - {{/if}}  
160 - </td>  
161 - </tr>  
162 - {{/each}}  
163 - {{if list.length == 0}}  
164 - <tr>  
165 - <td colspan=13><h6 class="muted">没有找到相关数据</h6></td>  
166 - </tr>  
167 - {{/if}}  
168 -</script>  
169 -<!-- 线路信息片段JS模块 --> 1 +<!-- 片段标题 START -->
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>线路版本信息</h1>
  5 + </div>
  6 +</div>
  7 +<!-- 片段标题 END -->
  8 +
  9 +<!-- 线路信息导航栏组件 START -->
  10 +<ul class="page-breadcrumb breadcrumb">
  11 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  12 + <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>
  13 + <li><span class="active">线路版本信息</span></li>
  14 +</ul>
  15 +<!-- 线路信息导航栏组件 END -->
  16 +
  17 +<div class="row">
  18 + <div class="col-md-12">
  19 + <div class="portlet light porttlet-fit bordered">
  20 + <div class="portlet-title">
  21 + <div class="tipso-animation">
  22 + </div>
  23 + <div class="caption">
  24 + <i class="fa fa-info-circle font-dark"></i>
  25 + <span class="caption-subject font-dark sbold uppercase">线路版本信息</span>
  26 + </div>
  27 + <div class="actions">
  28 + <div class="btn-group btn-group-devided" data-toggle="buttons">
  29 + <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加待更新版本</a>
  30 + </div>
  31 + </div>
  32 + </div>
  33 + <div class="portlet-body">
  34 + <div class="table-container" style="margin-top: 10px">
  35 + <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_lineversions">
  36 + <thead>
  37 + <tr role="row" class="heading">
  38 + <th width="4%">序号</th>
  39 + <th width="5%">线路编码</th>
  40 + <th width="6%">线路名称</th>
  41 + <th width="6%">所属公司</th>
  42 + <th width="6%">所属分公司</th>
  43 + <th width="8%">启用时间</th>
  44 + <th width="8%">终止时间</th>
  45 + <th width="6%">版本号</th>
  46 + <th width="6%">版本状态</th>
  47 + <th width="6%">描述</th>
  48 + <th width="12%">操作</th>
  49 + </tr>
  50 + <tr role="row" class="filter">
  51 + <td>#</td>
  52 + <td>
  53 + <input type="text" class="form-control form-filter input-sm" name="lineCode_eq" id="lineCodeInput">
  54 + </td>
  55 + <td>
  56 + <select name="line.name_like" class="form-control" style="width:100%" id="lineSelect"></select>
  57 + <!-- <input type="text" class="form-control form-filter input-sm" name="name_like"> -->
  58 + </td>
  59 + <td>
  60 + <!-- 公司这里没使用字典表,暂时查的公司表 -->
  61 + <select name="line.company_eq" class="form-control" id="companySelect"></select>
  62 + </td>
  63 + <!-- 闵行没有下属公司,这里暂时注释掉 -->
  64 + <td>
  65 + <select name="line.brancheCompany_eq" class="form-control" id="brancheCompanySelect"></select>
  66 + </td>
  67 + <td>
  68 +<!-- <input type="text" class="form-control form-filter input-sm" name="shanghaiLinecode_eq"> -->
  69 + </td>
  70 + <td>
  71 +<!-- <input type="text" class="form-control form-filter input-sm" name="shanghaiLinecode_eq"> -->
  72 + </td>
  73 + <td>
  74 + <input type="text" class="form-control form-filter input-sm" name="versions_eq">
  75 +
  76 + </td>
  77 + <td>
  78 + <select name="status_eq" class="form-control" id="statusSelect">
  79 + <option value="">请选择...</option>
  80 + <option value="1">当前版本</option>
  81 + <option value="2">待更新版本</option>
  82 + <option value="0">历史版本</option>
  83 + </select>
  84 + </td>
  85 + <td></td>
  86 + <td>
  87 + <button class="btn btn-sm green btn-outline filter-submit margin-bottom" >
  88 + <i class="fa fa-search"></i> 搜索
  89 + </button>
  90 +
  91 + <button class="btn btn-sm red btn-outline filter-cancel" id="notification-trigger">
  92 + <i class="fa fa-times"></i> 重置
  93 + </button>
  94 + </td>
  95 + </tr>
  96 + </thead>
  97 + <tbody></tbody>
  98 + </table>
  99 + <div style="text-align: right;">
  100 + <ul id="pagination" class="pagination"></ul>
  101 + </div>
  102 + </div>
  103 + </div>
  104 + </div>
  105 + </div>
  106 +</div>
  107 +
  108 +<script type="text/html" id="lineversions_list_temp">
  109 + {{each list as obj i }}
  110 + <tr>
  111 + <td style="vertical-align: middle;">
  112 + {{(list.page*10)+(i+1)}}
  113 + </td>
  114 + <td>
  115 + {{obj.lineCode}}
  116 + </td>
  117 + <td>
  118 + {{obj.line.name}}
  119 + </td>
  120 + <td>
  121 + {{obj.gsmc}}
  122 + </td>
  123 + <td>
  124 + {{obj.fgsmc}}
  125 + </td>
  126 + <td>
  127 + {{obj.startDateStr}}
  128 + </td>
  129 + <td>
  130 + {{obj.endDateStr}}
  131 + </td>
  132 + <td>
  133 + {{obj.versions}}
  134 + </td>
  135 + <td>
  136 + {{if obj.status == '0'}}
  137 + 历史版本
  138 + {{else if obj.status == '1'}}
  139 + 当前版本
  140 + {{else if obj.status == '2'}}
  141 + 待更新版本
  142 + {{/if}}
  143 + </td>
  144 + <td>
  145 + {{obj.remark}}
  146 + </td>
  147 + <td>
  148 + {{if obj.status != '0'}}
  149 + <a href="edit.html?no={{obj.id}}" class="btn btn-info btn-sm" data-pjax> 修改 </a>
  150 + {{/if}}
  151 + {{if obj.status == '2'}}
  152 + <a class="update_delete_btn btn btn-danger btn-sm" data-id="{{obj.id}}" data-pjax> 删除 </a>
  153 + <!--<a class="update_versions_route_btn btn btn-info btn-sm" data-lineid="{{obj.line.id}}" data-pjax> 编辑版本路线 </a>-->
  154 + {{/if}}
  155 + <!--{{if obj.status == '2' && obj.isupdate!=1}}
  156 + <a class="issue_btn btn btn-danger btn-sm" data-id="{{obj.id}}" data-pjax>发布</a>
  157 + {{else if obj.status == '2' && obj.isupdate==1}}
  158 + <a class="btn btn-danger btn-sm disabled">数据同步中</a>
  159 + {{/if}}-->
  160 + </td>
  161 + </tr>
  162 + {{/each}}
  163 + {{if list.length == 0}}
  164 + <tr>
  165 + <td colspan=13><h6 class="muted">没有找到相关数据</h6></td>
  166 + </tr>
  167 + {{/if}}
  168 +</script>
  169 +<!-- 线路信息片段JS模块 -->
170 <script src="/pages/base/lineversions/js/lineversions-list-table.js"></script> 170 <script src="/pages/base/lineversions/js/lineversions-list-table.js"></script>
171 \ No newline at end of file 171 \ No newline at end of file
src/main/resources/static/pages/base/stationroute/add_line_region.html 0 → 100644
  1 +<style>
  2 + .tab_station {
  3 + background-color: #ffffff;
  4 + height: 300px;
  5 + padding-left: 3px;
  6 + padding-right: 3px;
  7 + }
  8 +
  9 + .tab_station .center {
  10 + color: #3f444a;
  11 + padding-top: 10px;
  12 + }
  13 +
  14 + .tab_station .panel-wrap {
  15 + height: 100%;
  16 + padding-left: 3px;
  17 + padding-right: 3px;
  18 + }
  19 +
  20 + .tab_station .panel-wrap ._panel {
  21 + border: 1px solid #ddd;
  22 + box-shadow: 0 2px 5px 0 rgba(221, 221, 221, 0.32), 0 2px 10px 0
  23 + rgba(221, 221, 221, 0.32);
  24 + width: 100%;
  25 + height: 100%;
  26 + position: relative;
  27 + }
  28 +
  29 + .tab_station .panel-wrap ._panel ._head {
  30 + height: 42px;
  31 + line-height: 42px;
  32 + padding-left: 15px;
  33 + font-size: 16px;
  34 + font-family: 微软雅黑;
  35 + color: #2765A7;
  36 + border-bottom: 1px solid #dddddd;
  37 + }
  38 +
  39 + .table-body {
  40 + height: 228px;
  41 + overflow-y: auto;
  42 + position: relative;
  43 + }
  44 +
  45 + .center {
  46 + line-height: 3;
  47 + position: absolute;
  48 + padding-left: initial;
  49 + top: 50%;
  50 + left: 50%;
  51 + width: 50%;
  52 + -webkit-transform: translateX(-50%) translateY(-50%);
  53 + text-align: center;
  54 + }
  55 + .center li {
  56 + list-style-type: none;
  57 + }
  58 + dl {
  59 + display: block;
  60 + margin: 0px;
  61 + height: 30px;
  62 + border-bottom: 1px solid #dddddd;
  63 + }
  64 + dl dt {
  65 + display: inline-block;
  66 + font-size: 14px;
  67 + white-space: nowrap;
  68 + overflow: hidden;
  69 + text-overflow: ellipsis;
  70 + border-left: 1px solid #dddddd;
  71 + text-indent: 5px;
  72 + text-align: center;
  73 + height: 30px;
  74 + }
  75 + dl dd {
  76 + display: inline-block;
  77 + font-size: 14px;
  78 + white-space: nowrap;
  79 + overflow: hidden;
  80 + text-overflow: ellipsis;
  81 + border-left: 1px solid #dddddd;
  82 + text-indent: 5px;
  83 + text-align: center;
  84 + height: 30px;
  85 + line-height: 30px;
  86 + }
  87 + dt:nth-of-type(1), dd:nth-of-type(1){
  88 + width: 10%;
  89 + }
  90 + dt:nth-of-type(2), dd:nth-of-type(2){
  91 + width: 60%;
  92 + }
  93 + dt:nth-of-type(3), dd:nth-of-type(3){
  94 + width: 25%;
  95 + }
  96 +</style>
  97 +<div class="modal fade" id="add_line_region_modal" tabindex="-1" role="basic" aria-hidden="true" style="min-width: 800px;">
  98 + <div class="modal-dialog">
  99 + <div class="modal-content" >
  100 +
  101 + <div class="modal-header">
  102 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  103 + <h4 class="modal-title">选择站点</h4>
  104 + </div>
  105 +
  106 + <div class="modal-body">
  107 + <form class="form-horizontal" role="form" id="add_line_region_form" action="" method="">
  108 + <div class="alert alert-danger display-hide">
  109 + <button class="close" data-close="alert"></button>
  110 + 您的输入有误,请检查下面的输入项
  111 + </div>
  112 + <!-- 站点名称 -->
  113 + <div class="form-body">
  114 + <div class="form-group">
  115 + <label class="control-label col-md-2">
  116 + <span class="required"> * </span> 区间别名
  117 + </label>
  118 + <div class="col-md-4">
  119 + <input class="form-control" name="regionAlias" placeholder="输入区间别名"/>
  120 + </div>
  121 + <label class="control-label col-md-2">
  122 + 上下行
  123 + </label>
  124 + <div class="col-md-4">
  125 + <select class="form-control" name="direction" id="directionSelect">
  126 + <option value="0">上行</option>
  127 + <option value="1">下行</option>
  128 + <!--<option value="">上行+下行</option>-->
  129 + </select>
  130 + </div>
  131 + </div>
  132 + <div class="form-group tab_station">
  133 + <div class="col-md-5 panel-wrap" style="height: 100%;">
  134 + <div class="_panel">
  135 + <div class="_head">待选站点列表</div>
  136 + <div class="table-container" id="left">
  137 + <dl>
  138 + <dt>#</dt>
  139 + <dt>站点</dt>
  140 + <dt title="上下行">上下行</dt>
  141 + </dl>
  142 + <div class="table-body"></div>
  143 + </div>
  144 + </div>
  145 + </div>
  146 + <div class="col-md-2" style="height: 100%;">
  147 + <ul class="center">
  148 + <li><a class="btn btn-circle blue btn-outline" id="toRight">>></a></li>
  149 + <li><a class="btn btn-circle blue btn-outline" id="toLeft"><<</a></li>
  150 + </ul>
  151 + </div>
  152 + <div class="col-md-5 panel-wrap" style="height: 100%;">
  153 + <div class="_panel">
  154 + <div class="_head" style="color: #2765A7;">已选站点列表</div>
  155 + <div class="table-container" id="right">
  156 + <dl>
  157 + <dt>#</dt>
  158 + <dt>站点</dt>
  159 + <dt title="上下行">上下行</dt>
  160 + </dl>
  161 + <div class="table-body"></div>
  162 + </div>
  163 + </div>
  164 + </div>
  165 + </div>
  166 + </div>
  167 + </form>
  168 + </div>
  169 + <div class="modal-footer">
  170 + <button type="button" class="btn btn-primary" id="regionSaveBtn">提交</button>
  171 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  172 + </div>
  173 + </div>
  174 + </div>
  175 +</div>
  176 +<script id="add_line_region_station_table_template" type="text/html">
  177 + {{each list as obj i}}
  178 + <dl data-idx="{{i}}">
  179 + <dd class="seq">
  180 + {{i+1}}
  181 + </dd>
  182 + <dd>
  183 + {{obj.stationName}}
  184 + </dd>
  185 + <dd>
  186 + {{if obj.directions == 0}}
  187 + 上行
  188 + {{else}}
  189 + 下行
  190 + {{/if}}
  191 + </dd>
  192 + </dl>
  193 + {{/each}}
  194 +</script>
  195 +<script type="text/javascript">
  196 + var stationRoutes = [], properties = RoutesOperation.getProperties();
  197 +
  198 + function render() {
  199 + var html = template('add_line_region_station_table_template', {list : stationRoutes});
  200 + $('#left .table-body').html(html);
  201 + $('#right .table-body').html('');
  202 + $('#left .table-body dl').on('click', left2right);
  203 + $('#left .table-body').perfectScrollbar({suppressScrollX: true})
  204 + $('#right .table-body').perfectScrollbar({suppressScrollX: true})
  205 + }
  206 +
  207 + function left2right() {
  208 + $(this).remove();
  209 + var idx = $(this).data('idx');
  210 + $('#right .table-body').append($(this).prop('outerHTML'));
  211 + $('#right .table-body dl[data-idx=' + idx + ']').on('click', right2left);
  212 + $('#left .table-body').perfectScrollbar("update");
  213 + $('#right .table-body').perfectScrollbar("update")
  214 + }
  215 +
  216 + function right2left() {
  217 + $(this).remove();
  218 + var idx = $(this).data('idx'), first = $('#left .table-body dl').first();
  219 + if (!first[0] || first.data('idx') > idx) {
  220 + $('#left .table-body').prepend($(this).prop('outerHTML'));
  221 + } else {
  222 + while (first.data('idx') < idx) {
  223 + var next = first.next();
  224 + if (!next[0] || next.prop('tagName') != 'DL' || next.data('idx') > idx) {
  225 + first.after($(this).prop('outerHTML'));
  226 + break;
  227 + } else {
  228 + first = next;
  229 + }
  230 + }
  231 + }
  232 + $('#left .table-body dl[data-idx=' + idx + ']').on('click', left2right);
  233 + $('#left .table-body').perfectScrollbar("update");
  234 + $('#right .table-body').perfectScrollbar("update")
  235 + }
  236 +
  237 + function all2right() {
  238 + $('#left .table-body dl').each(function() {
  239 + $(this).click();
  240 + })
  241 + }
  242 +
  243 + function all2left() {
  244 + $('#right .table-body dl').each(function() {
  245 + $(this).click();
  246 + })
  247 + }
  248 +
  249 + $('#add_line_region_modal').on('modal.show', function(event) {
  250 + $('#add_line_region_modal').modal({show: true, backdrop: 'static', keyboard: false});
  251 + })
  252 +
  253 + $('#add_line_region_modal').on('show.bs.modal', function () {
  254 + RoutesService.findStationRoutes(properties.lineId, $('#directionSelect').val(), properties.versions, function (data) {
  255 + stationRoutes = data;
  256 + render();
  257 + })
  258 + })
  259 +
  260 + $('#directionSelect').on('change', function () {
  261 + RoutesService.findStationRoutes(properties.lineId, $(this).val(), properties.versions, function (data) {
  262 + stationRoutes = data;
  263 + render();
  264 + })
  265 + })
  266 +
  267 + $('#toRight').on('click', all2right);
  268 +
  269 + $('#toLeft').on('click', all2left);
  270 +
  271 + var form = $('#add_line_region_form');
  272 + var error = $('.alert-danger', form);
  273 + $('#regionSaveBtn').on('click', function() {
  274 + form.submit();
  275 + });
  276 + form.validate({
  277 + errorElement : 'span',
  278 + errorClass : 'help-block help-block-error',
  279 + focusInvalid : false,
  280 + rules : {
  281 + 'regionAlias': {required: true, maxlength: 50}
  282 + },
  283 + invalidHandler : function(event, validator) {
  284 + error.show();
  285 + App.scrollTo(error, -200);
  286 + },
  287 + highlight : function(element) {
  288 + $(element).closest('.form-group').addClass('has-error');
  289 + },
  290 + unhighlight : function(element) {
  291 + $(element).closest('.form-group').removeClass('has-error');
  292 + },
  293 + success : function(label) {
  294 + label.closest('.form-group').removeClass('has-error');
  295 + },
  296 + submitHandler : function(f) {
  297 + error.hide();
  298 + var params = form.serializeJSON(), stationRouteIds = [];
  299 + $('#right .table-body dl').each(function() {
  300 + stationRouteIds.push(stationRoutes[$(this).data('idx')].id);
  301 + })
  302 + params.stationRoutes = stationRouteIds.join(',');
  303 + params.line = properties.lineId;
  304 + params.version = properties.versions;
  305 + RoutesService.addLineRegion(params, function(res) {
  306 + if(res.status == 'SUCCESS') {
  307 + layer.msg('操作成功...');
  308 + $('#regionDesign').click();
  309 + }else {
  310 + layer.msg('操作失败...');
  311 + }
  312 + $('#add_line_region_modal').modal('hide');
  313 + });
  314 + }
  315 + });
  316 +</script>
0 \ No newline at end of file 317 \ No newline at end of file
src/main/resources/static/pages/base/stationroute/add_routes_template.html
@@ -236,7 +236,10 @@ $(&#39;#add_routes_template_modal&#39;).on(&#39;modal.show&#39;, function(event){ @@ -236,7 +236,10 @@ $(&#39;#add_routes_template_modal&#39;).on(&#39;modal.show&#39;, function(event){
236 RoutesOperation.stationsPointsToLibraryPoint(stationList,function(resultJson) { 236 RoutesOperation.stationsPointsToLibraryPoint(stationList,function(resultJson) {
237 // 根据坐标点获取两点之间的时间与距离 237 // 根据坐标点获取两点之间的时间与距离
238 RoutesOperation.getDistanceAndDuration(resultJson,function(stationDataList) { 238 RoutesOperation.getDistanceAndDuration(resultJson,function(stationDataList) {
239 - // 参数集合 239 + stationDataList.forEach(function(item) {
  240 + item.shapedType = 'r';
  241 + item.radius = 80;
  242 + })
240 let params = {lineId: properties.lineId, directions: properties.directions, versions: properties.versions, stationRoutes: stationDataList, sectionRoutes: sectionListFinal}; 243 let params = {lineId: properties.lineId, directions: properties.directions, versions: properties.versions, stationRoutes: stationDataList, sectionRoutes: sectionListFinal};
241 if (!params.versions) { 244 if (!params.versions) {
242 params.versions = '1'; 245 params.versions = '1';
src/main/resources/static/pages/base/stationroute/addstationstemplate.html
1 <!-- 手动添加站点 --> 1 <!-- 手动添加站点 -->
2 -<div class="modal fade" id="add_station_template_mobal" tabindex="-1" role="basic" aria-hidden="true"> 2 +<div class="modal fade" id="add_station_template_modal" tabindex="-1" role="basic" aria-hidden="true">
3 3
4 <div class="modal-dialog"> 4 <div class="modal-dialog">
5 5
@@ -23,10 +23,10 @@ @@ -23,10 +23,10 @@
23 23
24 <div class="form-group"> 24 <div class="form-group">
25 <label class="control-label col-md-3"> 25 <label class="control-label col-md-3">
26 - <span class="required"> * </span> 站点名称 26 + <span class="required"> * </span> 站点信息
27 </label> 27 </label>
28 <div class="col-md-9"> 28 <div class="col-md-9">
29 - <textarea class="form-control" rows="12" name="stations" id="stationsInput" placeholder="站点名称"></textarea> 29 + <textarea class="form-control" rows="12" name="stations" id="stationsInput" placeholder="站点信息"></textarea>
30 </div> 30 </div>
31 </div> 31 </div>
32 32
@@ -36,16 +36,16 @@ @@ -36,16 +36,16 @@
36 <label class="col-md-3 control-label">坐标系类型:</label> 36 <label class="col-md-3 control-label">坐标系类型:</label>
37 <div class="col-md-9"> 37 <div class="col-md-9">
38 <div class="icheck-list"> 38 <div class="icheck-list">
39 - <label>  
40 - <input type="radio" class="icheck" name="baseRes" value='No'> 暂无坐标系 39 + <!--<label>
  40 + <input type="radio" class="icheck" name="baseRes" value='No'> 暂无坐标系
41 </label> 41 </label>
42 <label> 42 <label>
43 <input type="radio" class="icheck" name="baseRes" value='GCJ02' > 火星坐标系 43 <input type="radio" class="icheck" name="baseRes" value='GCJ02' > 火星坐标系
44 </label> 44 </label>
45 - <label > 45 + <label>
46 <input type="radio" class="icheck" name="baseRes" value='BD09'> 百度坐标系 46 <input type="radio" class="icheck" name="baseRes" value='BD09'> 百度坐标系
47 - </label>  
48 - <label > 47 + </label>-->
  48 + <label>
49 <input type="radio" class="icheck" name="baseRes" value='WGS84' checked> WGS84坐标系 49 <input type="radio" class="icheck" name="baseRes" value='WGS84' checked> WGS84坐标系
50 </label> 50 </label>
51 </div> 51 </div>
@@ -85,229 +85,136 @@ @@ -85,229 +85,136 @@
85 </div> 85 </div>
86 <script type="text/javascript"> 86 <script type="text/javascript">
87 87
88 -$('#add_station_template_mobal').on('AddStationTempMobal.show', function(e,map,ajaxd,dir,line,fun){  
89 -  
90 -  
91 -  
92 - // 延迟加载显示mobal  
93 - setTimeout(function(){$('#add_station_template_mobal').modal({show : true,backdrop: 'static', keyboard: false});},200);  
94 -  
95 - // 获取表单元素 88 +$('#add_station_template_modal').on('modal.show', function(event) {
  89 + var properties = RoutesOperation.getProperties();
  90 + setTimeout(function(){$('#add_station_template_modal').modal({show : true,backdrop: 'static', keyboard: false});},200);
  91 +
96 var form = $('#save_station_template_form'); 92 var form = $('#save_station_template_form');
97 -  
98 - $('#versionsInput').val($("#versions").val());  
99 -  
100 - // 获取错误提示信息元素  
101 var error = $('.alert-danger', form); 93 var error = $('.alert-danger', form);
102 -  
103 - // 提交数据点击事件 94 + $('#versionsInput').val(properties.versions);
  95 +
104 $('.modal-footer #templateSaveData').on('click',function() { 96 $('.modal-footer #templateSaveData').on('click',function() {
105 -  
106 - // 表单提交  
107 form.submit(); 97 form.submit();
108 -  
109 }); 98 });
110 -  
111 - // 表单验证 99 +
112 form.validate({ 100 form.validate({
113 -  
114 - errorElement : 'span',  
115 -  
116 - errorClass : 'help-block help-block-error',  
117 -  
118 - focusInvalid : false,  
119 -  
120 - rules : {  
121 -  
122 - 'stations' : {  
123 -  
124 - required : true,  
125 -  
126 - }  
127 - 101 + errorElement: 'span',
  102 + errorClass: 'help-block help-block-error',
  103 + focusInvalid: false,
  104 + rules: {
  105 + 'stations': {required: true}
128 }, 106 },
129 -  
130 - invalidHandler : function(event, validator) {  
131 - 107 + invalidHandler: function(event, validator) {
132 error.show(); 108 error.show();
133 -  
134 App.scrollTo(error, -200); 109 App.scrollTo(error, -200);
135 -  
136 }, 110 },
137 -  
138 - highlight : function(element) {  
139 -  
140 - $(element).closest('.form-group').addClass('has-error');  
141 - 111 + highlight: function(element) {
  112 + $(element).closest('.form-group').addClass('has-error');
142 }, 113 },
143 -  
144 - unhighlight : function(element) {  
145 -  
146 - $(element).closest('.form-group').removeClass('has-error');  
147 - 114 + unhighlight: function(element) {
  115 + $(element).closest('.form-group').removeClass('has-error');
148 }, 116 },
149 -  
150 - success : function(label) {  
151 -  
152 - label.closest('.form-group').removeClass('has-error');  
153 - 117 + success: function(label) {
  118 + label.closest('.form-group').removeClass('has-error');
154 }, 119 },
155 -  
156 - submitHandler : function(f) {  
157 - // 隐藏手动规划弹出层  
158 - $('#add_station_template_mobal').modal('hide');  
159 - var directionData = dir;  
160 - // 定义线路名称 120 + submitHandler: function(f) {
  121 + $('#add_station_template_modal').modal('hide');
  122 + var directionData = properties.directions;
161 var lineNameV = $('.portlet-title .caption').text(); 123 var lineNameV = $('.portlet-title .caption').text();
162 var dirStr = ''; 124 var dirStr = '';
163 - // 上行  
164 - if(directionData==0){ 125 + if (directionData == 0) {
165 dirStr = '上行路段'; 126 dirStr = '上行路段';
166 - // 隐藏上行规划  
167 $('#upToolsMobal').hide(); 127 $('#upToolsMobal').hide();
168 - // 下行  
169 - }else if(directionData==1){ 128 + } else if (directionData == 1) {
170 dirStr = '下行路段'; 129 dirStr = '下行路段';
171 - // 隐藏上行规划  
172 $('#downToolsMobal').hide(); 130 $('#downToolsMobal').hide();
173 } 131 }
174 - // 弹出正在加载层  
175 var i = layer.load(0,{offset:['200px', '280px']}); 132 var i = layer.load(0,{offset:['200px', '280px']});
176 - // 表单序列化  
177 var paramsForm = form.serializeJSON(); 133 var paramsForm = form.serializeJSON();
178 var baseResValue = paramsForm.baseRes; 134 var baseResValue = paramsForm.baseRes;
179 - // 站点名称字符串切割  
180 var array = paramsForm.stations.split('\r\n'); 135 var array = paramsForm.stations.split('\r\n');
181 var arrayFormat = inputStationValueFormat(array); 136 var arrayFormat = inputStationValueFormat(array);
182 // 根据站点名称获取百度坐标 137 // 根据站点名称获取百度坐标
183 - map.stationsNameToPoints(arrayFormat,function(resultJson) { 138 + RoutesOperation.stationsNameToPoints(arrayFormat, function(resultJson) {
184 // 根据坐标点获取两点之间的时间与距离 139 // 根据坐标点获取两点之间的时间与距离
185 - map.getDistanceAndDuration(resultJson,function(stationdataList) {  
186 - // 设置第一个站的距离  
187 - stationdataList[0].distance = '';  
188 - // 设置第一个站的时间  
189 - stationdataList[0].duration = '';  
190 - // 定义站点信息JSON字符串  
191 - var stationJSON = JSON.stringify(stationdataList);  
192 - var addLine = line.getLineObj();  
193 - // 参数集合 140 + RoutesOperation.getDistanceAndTotime(resultJson, function(stationdataList) {
194 var params = {}; 141 var params = {};
195 - params.baseRes = baseResValue;  
196 - // 站点信息JSON字符串  
197 - params.stationJSON = stationJSON;  
198 - // 线路ID  
199 - params.lineId = addLine.id;  
200 - // 方向  
201 - params.directions = directionData;  
202 - // 原始坐标类型  
203 - params.dbType = 'b';  
204 - // 圆形半径  
205 - params.radius = '100';  
206 - // 限速  
207 - params.speedLimit = '60';  
208 - // 图形类型(r:圆形;p:多边形)  
209 - params.shapesType = 'r';  
210 - // destroy:是否撤销  
211 - params.destroy = '0';  
212 - // versions:版本号  
213 - params.versions = '1';  
214 - map.lineInfoPanl(lineNameV,directionData,function(BusLine){  
215 - // 如果线路信息不为空  
216 - if(BusLine && Polygon){  
217 - // 获取公交线几何对象, 仅当结果自动添加到地图上时有效 142 + params.lineId = properties.lineId;
  143 + params.versions = properties.versions;
  144 + params.directions = properties.directions;
  145 + params.stationJSON = resultJson;
  146 + RoutesOperation.lineInfoPanl(lineNameV, directionData, function(BusLine) {
  147 + if (BusLine && Polygon){
218 var Polygon = BusLine.getPolyline(); 148 var Polygon = BusLine.getPolyline();
219 - // 返回多边型的点数组(自1.2新增)  
220 var polyGonArray = Polygon.getPath(); 149 var polyGonArray = Polygon.getPath();
221 - var jsonArray = [{sectionName:lineNameV+dirStr,points:polyGonArray}];  
222 - // 定义路段信息字符串  
223 - var sectionJSON = JSON.stringify(jsonArray);  
224 - // 路段信息JSON字符串  
225 - // if(sectionJSON != null && sectionJSON != "") {  
226 - params.sectionJSON = sectionJSON;  
227 - addSave(params,addLine.id,directionData);  
228 - /* } else {  
229 - layer.msg('百度地图上没有此线路的相应路段,请更换方式规划!!!');  
230 - } */  
231 - }else {  
232 - // 根据坐标点获取两点之间的折线路段  
233 - map.getSectionListPlonly(stationdataList,function(sectiondata) {  
234 - // 定义路段信息字符串  
235 - var sectionJSON = JSON.stringify(sectiondata);  
236 - // 路段信息JSON字符串  
237 - //if(sectionJSON != null && sectionJSON != "") {  
238 - params.sectionJSON = sectionJSON;  
239 - addSave(params,addLine.id,directionData);  
240 - /* } else {  
241 - layer.msg('无法生成路段,请重试!');  
242 - return;  
243 - } */ 150 + var jsonArray = [{sectionName: lineNameV+dirStr, points: polyGonArray}];
  151 + params.sectionJSON = jsonArray;
  152 + addSave(params, properties.lineId, directionData);
  153 + } else {
  154 + RoutesOperation.getSectionListPlonly(stationdataList,function(sectiondata) {
  155 + params.sectionJSON = sectiondata;
  156 + addSave(params, properties.lineId, directionData);
244 }); 157 });
245 } 158 }
246 }); 159 });
247 -  
248 }); 160 });
249 -  
250 }); 161 });
251 -  
252 } 162 }
253 -  
254 }); 163 });
255 164
256 function inputStationValueFormat(paramsStationsArray) { 165 function inputStationValueFormat(paramsStationsArray) {
257 var stationList = []; 166 var stationList = [];
258 var len = paramsStationsArray.length; 167 var len = paramsStationsArray.length;
259 - for(var k =0;k<len;k++) {  
260 - if(paramsStationsArray[k]=="") 168 + for (var k = 0;k < len;k++) {
  169 + if (paramsStationsArray[k] == "") {
261 continue; 170 continue;
  171 + }
262 var tempStr = paramsStationsArray[k].split('\t'); 172 var tempStr = paramsStationsArray[k].split('\t');
263 - if(tempStr.length<2){  
264 - stationList.push({name:paramsStationsArray[k]+"公交车站",wgs:{x:'',y:''}});  
265 - }else {  
266 - stationList.push({name:tempStr[0]+"公交车站",wgs:{x:tempStr[1], y:tempStr[2]}}); 173 + if (tempStr.length < 2) {
  174 + stationList.push({name: paramsStationsArray[k]+"公交车站", wgs: {x: '',y: ''}});
  175 + } else {
  176 + stationList.push({name: tempStr[0]+"公交车站", wgs: {x: tempStr[1], y: tempStr[2]}});
267 } 177 }
268 } 178 }
  179 +
269 return stationList; 180 return stationList;
270 } 181 }
271 182
272 - function addSave(params,lineid,directionData) {  
273 -  
274 -  
275 - var version = $("#versions").val();  
276 - params.versions = version;  
277 - // 保存  
278 - ajaxd.manualSave(params,function(rd) {  
279 - // 关闭弹出层 183 + function addSave(params, lineId, directionData) {
  184 + debugger;
  185 + // 参数集合
  186 + if (!params.versions) {
  187 + params.versions = '1';
  188 + }
  189 + formatRoutes(params);
  190 + //return;
  191 + RoutesService.manualSave(params, function(res) {
280 layer.closeAll(); 192 layer.closeAll();
281 - if(rd.status='SUCCESS') { 193 + if (res.status == 'SUCCESS') {
282 layer.msg('保存成功!'); 194 layer.msg('保存成功!');
283 - var stationD = rd.stationData,isNullStr = '';  
284 - for(var t = 0 ;t<stationD.length;t++) {  
285 - if(stationD[t].potion.lat =='' || stationD[t].potion.lat ==null ||  
286 - stationD[t].potion.lng =='' || stationD[t].potion.lng ==null)  
287 - isNullStr = isNullStr + stationD[t].name + ' , ';  
288 - }  
289 - if(isNullStr!='') {  
290 - layer.open({  
291 - title: '提示',  
292 - content:'【' + isNullStr + '】' + '地址系统无法解析!,请手动调整位置!'  
293 - });  
294 - }  
295 - }else { 195 + } else {
296 layer.msg('保存失败!'); 196 layer.msg('保存失败!');
297 } 197 }
298 - // 清除地图覆盖物  
299 - map.clearMarkAndOverlays();  
300 - // 刷新树  
301 - fun.resjtreeDate(lineid,directionData,version);  
302 -  
303 -  
304 - //PublicFunctions.resjtreeDate(lineid,directionData,version);  
305 - // 查询上行路段信息  
306 - //ajaxd.getSectionRouteInfo(lineid,directionData,version,function(data) {  
307 - // // 在地图上画出线路走向  
308 - // fun.linePanlThree(lineid,data,directionData,version);  
309 - //}); 198 + RoutesOperation.clearMarkAndOverlays();
  199 + RoutesOperation.resjtreeDate(lineId, directionData, params.versions);
310 }); 200 });
311 } 201 }
  202 +
  203 + function formatRoutes(params) {
  204 + var stationRoutes = [], sectionRoutes = [], sectionRouteCode = 100;
  205 + params.stationJSON.forEach(function(item) {
  206 + stationRoutes.push({stationName: item.name, shapedType: 'r', radius: 80, destroy: 0, distances: 0, toTime: 0, station: {stationName: item.name, centerPointWkt: 'POINT(' + item.potion.lng + ' ' + item.potion.lat + ')'}});
  207 + })
  208 + params.sectionJSON.forEach(function(item) {
  209 + var centerPointWkt = [];
  210 + item.points.forEach(function(item1) {
  211 + centerPointWkt.push(item1.lng + ' ' + item1.lat);
  212 + })
  213 + sectionRoutes.push({sectionrouteCode: sectionRouteCode, destroy: 0, section: {sectionName: item.sectionName, bsectionVectorWkt: 'LINESTRING(' + centerPointWkt.join(',') + ')'}});
  214 + sectionRouteCode++;
  215 + })
  216 + params.stationRoutes = stationRoutes;
  217 + params.sectionRoutes = sectionRoutes;
  218 + }
312 }); 219 });
313 </script> 220 </script>
314 \ No newline at end of file 221 \ No newline at end of file
src/main/resources/static/pages/base/stationroute/destroy_sectionroute.html
@@ -174,6 +174,7 @@ $(&#39;#delete_section_modal&#39;).on(&#39;modal.show&#39;,function(event) { @@ -174,6 +174,7 @@ $(&#39;#delete_section_modal&#39;).on(&#39;modal.show&#39;,function(event) {
174 var params = {}; 174 var params = {};
175 params['line.id_eq'] = properties.lineId; 175 params['line.id_eq'] = properties.lineId;
176 params.directions_eq = properties.directions; 176 params.directions_eq = properties.directions;
  177 + params.versions_eq = properties.versions;
177 params.destroy_eq = 0; 178 params.destroy_eq = 0;
178 179
179 return params; 180 return params;
@@ -200,8 +201,6 @@ $(&#39;#delete_section_modal&#39;).on(&#39;modal.show&#39;,function(event) { @@ -200,8 +201,6 @@ $(&#39;#delete_section_modal&#39;).on(&#39;modal.show&#39;,function(event) {
200 // 记录当前页数 201 // 记录当前页数
201 params['page'] = page; 202 params['page'] = page;
202 203
203 - params.versions_eq = properties.versions;  
204 -  
205 // 弹出正在加载层 204 // 弹出正在加载层
206 var i = layer.load(2); 205 var i = layer.load(2);
207 // 异步请求获取表格数据 206 // 异步请求获取表格数据
src/main/resources/static/pages/base/stationroute/destroy_stationroute.html
@@ -175,6 +175,7 @@ $(&#39;#delete_station_modal&#39;).on(&#39;modal.show&#39;,function(event) { @@ -175,6 +175,7 @@ $(&#39;#delete_station_modal&#39;).on(&#39;modal.show&#39;,function(event) {
175 var params = {}; 175 var params = {};
176 params['line.id_eq'] = properties.lineId; 176 params['line.id_eq'] = properties.lineId;
177 params.directions_eq = properties.directions; 177 params.directions_eq = properties.directions;
  178 + params.versions_eq = properties.versions;
178 params.destroy_eq = 0; 179 params.destroy_eq = 0;
179 180
180 return params; 181 return params;
@@ -200,8 +201,7 @@ $(&#39;#delete_station_modal&#39;).on(&#39;modal.show&#39;,function(event) { @@ -200,8 +201,7 @@ $(&#39;#delete_station_modal&#39;).on(&#39;modal.show&#39;,function(event) {
200 params['direction'] = 'ASC,ASC'; 201 params['direction'] = 'ASC,ASC';
201 // 记录当前页数 202 // 记录当前页数
202 params['page'] = page; 203 params['page'] = page;
203 -  
204 - params.versions_eq = properties.versions; 204 +
205 // 弹出正在加载层 205 // 弹出正在加载层
206 var i = layer.load(2); 206 var i = layer.load(2);
207 // 异步请求获取表格数据 207 // 异步请求获取表格数据
src/main/resources/static/pages/base/stationroute/doublename_road.html
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 <script type="text/javascript"> 41 <script type="text/javascript">
42 $('#doublename_road_modal').on('modal.show', function(event, params){ 42 $('#doublename_road_modal').on('modal.show', function(event, params){
43 var properties = RoutesOperation.getProperties(); 43 var properties = RoutesOperation.getProperties();
44 - RoutesService.getStation(properties.lineId, properties.directions, properties.versions, function(routes) { 44 + RoutesService.findRoutes(properties.lineId, properties.directions, properties.versions, function(routes) {
45 var array = routes.sectionRoutes, paramsD = new Array(); 45 var array = routes.sectionRoutes, paramsD = new Array();
46 paramsD.push({'id':'启始路段(默认在所有路段的前面)','text':'启始路段(默认在所有路段的前面)'}); 46 paramsD.push({'id':'启始路段(默认在所有路段的前面)','text':'启始路段(默认在所有路段的前面)'});
47 var endRoad = 0; 47 var endRoad = 0;
src/main/resources/static/pages/base/stationroute/edit_line_region.html 0 → 100644
  1 +<style>
  2 + .tab_station {
  3 + background-color: #ffffff;
  4 + height: 300px;
  5 + padding-left: 3px;
  6 + padding-right: 3px;
  7 + }
  8 +
  9 + .tab_station .center {
  10 + color: #3f444a;
  11 + padding-top: 10px;
  12 + }
  13 +
  14 + .tab_station .panel-wrap {
  15 + height: 100%;
  16 + padding-left: 3px;
  17 + padding-right: 3px;
  18 + }
  19 +
  20 + .tab_station .panel-wrap ._panel {
  21 + border: 1px solid #ddd;
  22 + box-shadow: 0 2px 5px 0 rgba(221, 221, 221, 0.32), 0 2px 10px 0
  23 + rgba(221, 221, 221, 0.32);
  24 + width: 100%;
  25 + height: 100%;
  26 + position: relative;
  27 + }
  28 +
  29 + .tab_station .panel-wrap ._panel ._head {
  30 + height: 42px;
  31 + line-height: 42px;
  32 + padding-left: 15px;
  33 + font-size: 16px;
  34 + font-family: 微软雅黑;
  35 + color: #2765A7;
  36 + border-bottom: 1px solid #dddddd;
  37 + }
  38 +
  39 + .table-body {
  40 + height: 228px;
  41 + overflow-y: auto;
  42 + position: relative;
  43 + }
  44 +
  45 + .center {
  46 + line-height: 3;
  47 + position: absolute;
  48 + padding-left: initial;
  49 + top: 50%;
  50 + left: 50%;
  51 + width: 50%;
  52 + -webkit-transform: translateX(-50%) translateY(-50%);
  53 + text-align: center;
  54 + }
  55 + .center li {
  56 + list-style-type: none;
  57 + }
  58 + dl {
  59 + display: block;
  60 + margin: 0px;
  61 + height: 30px;
  62 + border-bottom: 1px solid #dddddd;
  63 + }
  64 + dl dt {
  65 + display: inline-block;
  66 + font-size: 14px;
  67 + white-space: nowrap;
  68 + overflow: hidden;
  69 + text-overflow: ellipsis;
  70 + border-left: 1px solid #dddddd;
  71 + text-indent: 5px;
  72 + text-align: center;
  73 + height: 30px;
  74 + }
  75 + dl dd {
  76 + display: inline-block;
  77 + font-size: 14px;
  78 + white-space: nowrap;
  79 + overflow: hidden;
  80 + text-overflow: ellipsis;
  81 + border-left: 1px solid #dddddd;
  82 + text-indent: 5px;
  83 + text-align: center;
  84 + height: 30px;
  85 + line-height: 30px;
  86 + }
  87 + dt:nth-of-type(1), dd:nth-of-type(1){
  88 + width: 10%;
  89 + }
  90 + dt:nth-of-type(2), dd:nth-of-type(2){
  91 + width: 60%;
  92 + }
  93 + dt:nth-of-type(3), dd:nth-of-type(3){
  94 + width: 25%;
  95 + }
  96 +
  97 +
  98 +</style>
  99 +<div class="modal fade" id="edit_line_region_modal" tabindex="-1" role="basic" aria-hidden="true" style="min-width: 800px;">
  100 + <div class="modal-dialog">
  101 + <div class="modal-content" >
  102 +
  103 + <div class="modal-header">
  104 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  105 + <h4 class="modal-title">选择站点</h4>
  106 + </div>
  107 +
  108 + <div class="modal-body">
  109 + <form class="form-horizontal" role="form" id="edit_line_region_form" action="" method="">
  110 + <input type="hidden" name="id"/>
  111 + <input type="hidden" name="seq"/>
  112 + <div class="alert alert-danger display-hide">
  113 + <button class="close" data-close="alert"></button>
  114 + 您的输入有误,请检查下面的输入项
  115 + </div>
  116 + <!-- 站点名称 -->
  117 + <div class="form-body">
  118 + <div class="form-group">
  119 + <label class="control-label col-md-2">
  120 + <span class="required"> * </span> 区间别名
  121 + </label>
  122 + <div class="col-md-4">
  123 + <input class="form-control" name="regionAlias" id="regionAliasInput" placeholder="输入区间别名"/>
  124 + </div>
  125 + <label class="control-label col-md-2">
  126 + 上下行
  127 + </label>
  128 + <div class="col-md-4">
  129 + <select class="form-control" name="direction" id="directionSelect">
  130 + <option value="0">上行</option>
  131 + <option value="1">下行</option>
  132 + <!--<option value="">上行+下行</option>-->
  133 + </select>
  134 + </div>
  135 + </div>
  136 + <div class="form-group tab_station">
  137 + <div class="col-md-5 panel-wrap" style="height: 100%;">
  138 + <div class="_panel">
  139 + <div class="_head">待选站点列表</div>
  140 + <div class="table-container" id="left">
  141 + <dl>
  142 + <dt>#</dt>
  143 + <dt>站点</dt>
  144 + <dt title="上下行">上下行</dt>
  145 + </dl>
  146 + <div class="table-body"></div>
  147 + </div>
  148 + </div>
  149 + </div>
  150 + <div class="col-md-2" style="height: 100%;">
  151 + <ul class="center">
  152 + <li><a class="btn btn-circle blue btn-outline" id="toRight">>></a></li>
  153 + <li><a class="btn btn-circle blue btn-outline" id="toLeft"><<</a></li>
  154 + </ul>
  155 + </div>
  156 + <div class="col-md-5 panel-wrap" style="height: 100%;">
  157 + <div class="_panel">
  158 + <div class="_head" style="color: #2765A7;">已选站点列表</div>
  159 + <div class="table-container" id="right">
  160 + <dl>
  161 + <dt>#</dt>
  162 + <dt>站点</dt>
  163 + <dt title="上下行">上下行</dt>
  164 + </dl>
  165 + <div class="table-body"></div>
  166 + </div>
  167 + </div>
  168 + </div>
  169 + </div>
  170 + </div>
  171 + </form>
  172 + </div>
  173 + <div class="modal-footer">
  174 + <button type="button" class="btn btn-primary" id="regionSaveBtn">提交</button>
  175 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  176 + </div>
  177 + </div>
  178 + </div>
  179 +</div>
  180 +<script id="edit_line_region_station_table_template" type="text/html">
  181 + {{each list as obj i}}
  182 + <dl data-idx="{{i}}" data-id="{{obj.id}}">
  183 + <dd class="seq">
  184 + {{i+1}}
  185 + </dd>
  186 + <dd>
  187 + {{obj.stationName}}
  188 + </dd>
  189 + <dd>
  190 + {{if obj.directions == 0}}
  191 + 上行
  192 + {{else}}
  193 + 下行
  194 + {{/if}}
  195 + </dd>
  196 + </dl>
  197 + {{/each}}
  198 +</script>
  199 +<script type="text/javascript">
  200 + var stationRoutes = [], lineRegion = {}, properties = RoutesOperation.getProperties();
  201 +
  202 + function setForm() {
  203 + $('input[name=id]').val(lineRegion.id);
  204 + $('input[name=seq]').val(lineRegion.seq);
  205 + $('#regionAliasInput').val(lineRegion.regionAlias);
  206 + $('#left .table-body dl').each(function() {
  207 + var dl = $(this), id = dl.data('id');
  208 + lineRegion.stationRoutes.forEach(function (item) {
  209 + if (id == item.id) {
  210 + dl.click();
  211 + }
  212 + })
  213 + })
  214 + }
  215 +
  216 + function render() {
  217 + var html = template('edit_line_region_station_table_template', {list : stationRoutes});
  218 + $('#left .table-body').html(html);
  219 + $('#right .table-body').html('');
  220 + $('#left .table-body dl').on('click', left2right);
  221 + $('#left .table-body').perfectScrollbar({suppressScrollX: true})
  222 + $('#right .table-body').perfectScrollbar({suppressScrollX: true})
  223 + }
  224 +
  225 + function left2right() {
  226 + $(this).remove();
  227 + var idx = $(this).data('idx');
  228 + $('#right .table-body').append($(this).prop('outerHTML'));
  229 + $('#right .table-body dl[data-idx=' + idx + ']').on('click', right2left);
  230 + $('#left .table-body').perfectScrollbar("update");
  231 + $('#right .table-body').perfectScrollbar("update")
  232 + }
  233 +
  234 + function right2left() {
  235 + $(this).remove();
  236 + var idx = $(this).data('idx'), first = $('#left .table-body dl').first();
  237 + if (!first[0] || first.data('idx') > idx) {
  238 + $('#left .table-body').prepend($(this).prop('outerHTML'));
  239 + } else {
  240 + while (first.data('idx') < idx) {
  241 + var next = first.next();
  242 + if (!next[0] || next.prop('tagName') != 'DL' || next.data('idx') > idx) {
  243 + first.after($(this).prop('outerHTML'));
  244 + break;
  245 + } else {
  246 + first = next;
  247 + }
  248 + }
  249 + }
  250 + $('#left .table-body dl[data-idx=' + idx + ']').on('click', left2right);
  251 + $('#left .table-body').perfectScrollbar("update");
  252 + $('#right .table-body').perfectScrollbar("update")
  253 + }
  254 +
  255 + function all2right() {
  256 + $('#left .table-body dl').each(function() {
  257 + $(this).click();
  258 + })
  259 + }
  260 +
  261 + function all2left() {
  262 + $('#right .table-body dl').each(function() {
  263 + $(this).click();
  264 + })
  265 + }
  266 +
  267 + $('#edit_line_region_modal').on('modal.show', function(event, lr) {
  268 + lineRegion = lr;
  269 + $('#edit_line_region_modal').modal({show: true, backdrop: 'static', keyboard: false});
  270 + })
  271 +
  272 + $('#edit_line_region_modal').on('show.bs.modal', function () {
  273 + $('#directionSelect').val(lineRegion.direction);
  274 + RoutesService.findStationRoutes(RoutesOperation.getProperties().lineId, $('#directionSelect').val(), RoutesOperation.getProperties().versions, function (data) {
  275 + stationRoutes = data;
  276 + render();
  277 + setForm();
  278 + })
  279 + })
  280 +
  281 + $('#directionSelect').on('change', function () {
  282 + RoutesService.findStationRoutes(RoutesOperation.getProperties().lineId, $(this).val(), RoutesOperation.getProperties().versions, function (data) {
  283 + stationRoutes = data;
  284 + render();
  285 + })
  286 + })
  287 +
  288 + $('#toRight').on('click', all2right);
  289 +
  290 + $('#toLeft').on('click', all2left);
  291 +
  292 + var form = $('#edit_line_region_form');
  293 + var error = $('.alert-danger', form);
  294 + $('#regionSaveBtn').on('click', function() {
  295 + form.submit();
  296 + });
  297 + form.validate({
  298 + errorElement : 'span',
  299 + errorClass : 'help-block help-block-error',
  300 + focusInvalid : false,
  301 + rules : {
  302 + 'regionAlias': {required: true, maxlength: 50}
  303 + },
  304 + invalidHandler : function(event, validator) {
  305 + error.show();
  306 + App.scrollTo(error, -200);
  307 + },
  308 + highlight : function(element) {
  309 + $(element).closest('.form-group').addClass('has-error');
  310 + },
  311 + unhighlight : function(element) {
  312 + $(element).closest('.form-group').removeClass('has-error');
  313 + },
  314 + success : function(label) {
  315 + label.closest('.form-group').removeClass('has-error');
  316 + },
  317 + submitHandler : function(f) {
  318 + error.hide();
  319 + var params = form.serializeJSON(), stationRouteIds = [];
  320 + $('#right .table-body dl').each(function() {
  321 + stationRouteIds.push(stationRoutes[$(this).data('idx')].id);
  322 + })
  323 + params.stationRoutes = stationRouteIds.join(',');
  324 + params.line = properties.lineId;
  325 + params.version = properties.versions;
  326 + RoutesService.modifyLineRegion(params, function(res) {
  327 + if(res.status == 'SUCCESS') {
  328 + layer.msg('修改成功...');
  329 + $('#regionDesign').click();
  330 + }else {
  331 + layer.msg('修改失败...');
  332 + }
  333 + $('#edit_line_region_modal').modal('hide');
  334 + });
  335 + }
  336 + });
  337 +</script>
0 \ No newline at end of file 338 \ No newline at end of file
src/main/resources/static/pages/base/stationroute/edit_sectionroute.html
@@ -59,7 +59,7 @@ $(&#39;#edit_sectionroute_modal&#39;).on(&#39;modal.show&#39;, function(e, polyline){ @@ -59,7 +59,7 @@ $(&#39;#edit_sectionroute_modal&#39;).on(&#39;modal.show&#39;, function(e, polyline){
59 var properties = RoutesOperation.getProperties(); 59 var properties = RoutesOperation.getProperties();
60 var sectionRoute = polyline.data; 60 var sectionRoute = polyline.data;
61 RoutesOperation.setSectionFormValue(sectionRoute); 61 RoutesOperation.setSectionFormValue(sectionRoute);
62 - RoutesService.getStation(properties.lineId, properties.directions, properties.versions, function(routes) { 62 + RoutesService.findRoutes(properties.lineId, properties.directions, properties.versions, function(routes) {
63 var array = routes.sectionRoutes, paramsD =new Array(); 63 var array = routes.sectionRoutes, paramsD =new Array();
64 var eq_scetionRouteCode = sectionRoute.sectionrouteCode; 64 var eq_scetionRouteCode = sectionRoute.sectionrouteCode;
65 var previous = '请选择...', last; 65 var previous = '请选择...', last;
src/main/resources/static/pages/base/stationroute/js/routes-operation.js
1 var RoutesOperation = (function () { 1 var RoutesOperation = (function () {
2 var lineId, versions, directions = 0, status; 2 var lineId, versions, directions = 0, status;
  3 + var lineRegions = [];
3 // 百度地图对象 4 // 百度地图对象
4 var baiduMap; 5 var baiduMap;
5 // 进出场路段编辑时当前选中的路段 6 // 进出场路段编辑时当前选中的路段
@@ -93,6 +94,8 @@ var RoutesOperation = (function () { @@ -93,6 +94,8 @@ var RoutesOperation = (function () {
93 if (selected === 1) { 94 if (selected === 1) {
94 operation.TreeUpOrDown(lineId, '0', lineVersion.versions); 95 operation.TreeUpOrDown(lineId, '0', lineVersion.versions);
95 operation.TreeUpOrDown(lineId, '1', lineVersion.versions); 96 operation.TreeUpOrDown(lineId, '1', lineVersion.versions);
  97 + versions = lineVersion.versions;
  98 + status = lineVersion.status;
96 } 99 }
97 } 100 }
98 operation.setTiteText(lineId); 101 operation.setTiteText(lineId);
@@ -128,7 +131,8 @@ var RoutesOperation = (function () { @@ -128,7 +131,8 @@ var RoutesOperation = (function () {
128 }); 131 });
129 }) 132 })
130 133
131 - $("#versions").on('change', function() { 134 + $('#versions').on('change', function() {
  135 + debugger
132 versions = $(this).val(); 136 versions = $(this).val();
133 status = $('option:selected', $(this)).attr('status'); 137 status = $('option:selected', $(this)).attr('status');
134 $('#upLine').click(); 138 $('#upLine').click();
@@ -145,6 +149,14 @@ var RoutesOperation = (function () { @@ -145,6 +149,14 @@ var RoutesOperation = (function () {
145 }); 149 });
146 150
147 // 系统规划上行站点点击事件 151 // 系统规划上行站点点击事件
  152 + $('.upManual').on('click',function() {
  153 + $.get('addstationstemplate.html', function(m){
  154 + $(pjaxContainer).append(m);
  155 + $('#add_station_template_modal').trigger('modal.show');
  156 + });
  157 + });
  158 +
  159 + // 系统规划上行站点点击事件
148 $('.upSystem').on('click',function() { 160 $('.upSystem').on('click',function() {
149 $('#upToolsMobal').hide(); 161 $('#upToolsMobal').hide();
150 layer.load(0,{offset:['200px', '280px']}); 162 layer.load(0,{offset:['200px', '280px']});
@@ -195,6 +207,14 @@ var RoutesOperation = (function () { @@ -195,6 +207,14 @@ var RoutesOperation = (function () {
195 }); 207 });
196 }); 208 });
197 209
  210 + // 上行批量恢复事件
  211 + $('.module_tools #upBatchRecover').on('click', function() {
  212 + $.get('recover_routes.html', function(m){
  213 + $(pjaxContainer).append(m);
  214 + $('#recover_select_modal').trigger('modal.show');
  215 + });
  216 + });
  217 +
198 // 交换上下行站点和路段路由 218 // 交换上下行站点和路段路由
199 $('.retweet').on('click', function() { 219 $('.retweet').on('click', function() {
200 layer.confirm('您是否确定将【上、下】行站点和路段进行对换!', { 220 layer.confirm('您是否确定将【上、下】行站点和路段进行对换!', {
@@ -218,7 +238,7 @@ var RoutesOperation = (function () { @@ -218,7 +238,7 @@ var RoutesOperation = (function () {
218 }); 238 });
219 239
220 $('#wrenchUpDis').on('click',function() { 240 $('#wrenchUpDis').on('click',function() {
221 - RoutesService.getStation(lineId, directions, versions, function(routes) { 241 + RoutesService.findRoutes(lineId, directions, versions, function(routes) {
222 $.get('tzzj.html', function(m){ 242 $.get('tzzj.html', function(m){
223 $(pjaxContainer).append(m); 243 $(pjaxContainer).append(m);
224 $('#tzzj_mobal').trigger('modal.show', [routes.stationRoutes]); 244 $('#tzzj_mobal').trigger('modal.show', [routes.stationRoutes]);
@@ -227,7 +247,7 @@ var RoutesOperation = (function () { @@ -227,7 +247,7 @@ var RoutesOperation = (function () {
227 }) 247 })
228 248
229 $('#wrenchDownDis').on('click',function() { 249 $('#wrenchDownDis').on('click',function() {
230 - RoutesService.getStation(lineId, directions, versions, function(routes) { 250 + RoutesService.findRoutes(lineId, directions, versions, function(routes) {
231 $.get('tzzj.html', function(m){ 251 $.get('tzzj.html', function(m){
232 $(pjaxContainer).append(m); 252 $(pjaxContainer).append(m);
233 $('#tzzj_mobal').trigger('modal.show', [routes.stationRoutes]); 253 $('#tzzj_mobal').trigger('modal.show', [routes.stationRoutes]);
@@ -275,6 +295,14 @@ var RoutesOperation = (function () { @@ -275,6 +295,14 @@ var RoutesOperation = (function () {
275 operation.resjtreeDate(lineId, directions, versions); 295 operation.resjtreeDate(lineId, directions, versions);
276 }); 296 });
277 297
  298 + // 系统规划上行站点点击事件
  299 + $('.downManual').on('click',function() {
  300 + $.get('addstationstemplate.html', function(m){
  301 + $(pjaxContainer).append(m);
  302 + $('#add_station_template_modal').trigger('modal.show');
  303 + });
  304 + });
  305 +
278 // 系统规划下行站点 306 // 系统规划下行站点
279 $('.downSystem').on('click',function() { 307 $('.downSystem').on('click',function() {
280 $('#downToolsMobal').hide(); 308 $('#downToolsMobal').hide();
@@ -318,6 +346,14 @@ var RoutesOperation = (function () { @@ -318,6 +346,14 @@ var RoutesOperation = (function () {
318 }); 346 });
319 }); 347 });
320 348
  349 + // 下行批量恢复事件
  350 + $('.module_tools #downBatchRecover').on('click', function() {
  351 + $.get('recover_routes.html', function(m){
  352 + $(pjaxContainer).append(m);
  353 + $('#recover_select_modal').trigger('modal.show');
  354 + });
  355 + });
  356 +
321 // 编辑线路下行走向 @弃用 357 // 编辑线路下行走向 @弃用
322 /*$('.module_tools #editDownlineTrend').on('click', function() { 358 /*$('.module_tools #editDownlineTrend').on('click', function() {
323 PublicFunctions.editLinePlan(directionDownValue); 359 PublicFunctions.editLinePlan(directionDownValue);
@@ -363,6 +399,46 @@ var RoutesOperation = (function () { @@ -363,6 +399,46 @@ var RoutesOperation = (function () {
363 operation.resjtreeDate(lineId, directions, versions); 399 operation.resjtreeDate(lineId, directions, versions);
364 }) 400 })
365 }) 401 })
  402 +
  403 + $('#regionDesign').on('click', function() {
  404 + operation.loadLineRegion();
  405 + })
  406 +
  407 + $('#regionSelect').on('change', function() {
  408 + var stationRoutes = lineRegions[$(this).val()].stationRoutes;
  409 + $('#region-station-body-table').html(template('line-region-station-template', {list: stationRoutes}));
  410 + RoutesService.findSectionRoutes(lineId, directions, versions, function(sectionRoutes) {
  411 + operation.clearMarkAndOverlays();
  412 + if (stationRoutes.length > 0) {
  413 + var centerPointWkt = stationRoutes[0].station.centerPointWkt;
  414 + centerPointWkt = centerPointWkt.substring(6, centerPointWkt.length - 1);
  415 + var coordinates = centerPointWkt.split(' ');
  416 + //center = new BMap.Point(coordinates[0], coordinates[1]);
  417 + for (var i = 0;i < stationRoutes.length;i++) {
  418 + operation.drawingUpStationPoint(stationRoutes[i], i + 1);
  419 + }
  420 + }
  421 + if (sectionRoutes.length > 0) {
  422 + operation.drawingUpline01(sectionRoutes);
  423 + }
  424 + })
  425 + })
  426 +
  427 + // 区间添加
  428 + $('#regionAddBtn').on('click', function () {
  429 + $.get('add_line_region.html', function (m) {
  430 + $(pjaxContainer).append(m);
  431 + $('#add_line_region_modal').trigger('modal.show');
  432 + });
  433 + })
  434 +
  435 + // 区间编辑
  436 + $('#regionEditBtn').on('click', function () {
  437 + $.get('edit_line_region.html', function (m) {
  438 + $(pjaxContainer).append(m);
  439 + $('#edit_line_region_modal').trigger('modal.show', lineRegions[$('#regionSelect').val()]);
  440 + });
  441 + })
366 }, 442 },
367 443
368 /***************************************************map*******************************************************/ 444 /***************************************************map*******************************************************/
@@ -710,11 +786,11 @@ var RoutesOperation = (function () { @@ -710,11 +786,11 @@ var RoutesOperation = (function () {
710 function searchComplete(results) { 786 function searchComplete(results) {
711 var plan = results.getPlan(0); 787 var plan = results.getPlan(0);
712 if (transit.getStatus() != BMAP_STATUS_SUCCESS) { 788 if (transit.getStatus() != BMAP_STATUS_SUCCESS) {
713 - stationList[index + 1].distance = '';  
714 - stationList[index + 1].duration = ''; 789 + stationList[index + 1].distance = 0;
  790 + stationList[index + 1].duration = 0;
715 } else { 791 } else {
716 - stationList[index + 1].distance = plan.getDistance(true);  
717 - stationList[index + 1].duration = plan.getDuration(true); 792 + stationList[index + 1].distance = 0;//plan.getDistance(true);
  793 + stationList[index + 1].duration = 0;//plan.getDuration(true);
718 } 794 }
719 f(); 795 f();
720 } 796 }
@@ -1591,6 +1667,16 @@ var RoutesOperation = (function () { @@ -1591,6 +1667,16 @@ var RoutesOperation = (function () {
1591 } 1667 }
1592 }); 1668 });
1593 }, 1669 },
  1670 + /**
  1671 + * 从百度地图抓去站点与路段数据
  1672 + */
  1673 + lineInfoPanl : function(lineNameValue,i,cb) {
  1674 + /** 根据线路名称与方向从百度地图获取站点与路段 @param lineNameValue:线路名称;i:方向<0:上行;1:下行> */
  1675 + operation.getBmapStationNames(lineNameValue,i,function(BusLine){
  1676 + return cb && cb(BusLine);
  1677 + });
  1678 +
  1679 + },
1594 /** 获取距离与时间 @param <points:坐标点集合> */ 1680 /** 获取距离与时间 @param <points:坐标点集合> */
1595 getDistanceAndDuration : function(stations,callback){ 1681 getDistanceAndDuration : function(stations,callback){
1596 var stationRoutes = new Array(); 1682 var stationRoutes = new Array();
@@ -2124,7 +2210,7 @@ var RoutesOperation = (function () { @@ -2124,7 +2210,7 @@ var RoutesOperation = (function () {
2124 } 2210 }
2125 2211
2126 // 获取树数据 2212 // 获取树数据
2127 - RoutesService.getStation(id, direction, version, function(routes) { 2213 + RoutesService.findRoutes(id, direction, version, function(routes) {
2128 // 获取数据长度 2214 // 获取数据长度
2129 var len = routes.stationRoutes.length; 2215 var len = routes.stationRoutes.length;
2130 // 上行 2216 // 上行
@@ -2372,7 +2458,7 @@ var RoutesOperation = (function () { @@ -2372,7 +2458,7 @@ var RoutesOperation = (function () {
2372 /** 加载树 @param:<lineId:线路ID;direction:方向(0:上行;1:下行)> */ 2458 /** 加载树 @param:<lineId:线路ID;direction:方向(0:上行;1:下行)> */
2373 TreeUpOrDown : function(lineId,direction,version) { 2459 TreeUpOrDown : function(lineId,direction,version) {
2374 /** 获取树结果数据 @param:<lineId:线路ID;direction:方向;callback:回调函数> */ 2460 /** 获取树结果数据 @param:<lineId:线路ID;direction:方向;callback:回调函数> */
2375 - RoutesService.getStation(lineId,direction,version,function(result) { 2461 + RoutesService.findRoutes(lineId,direction,version,function(result) {
2376 var len = result.stationRoutes.length; 2462 var len = result.stationRoutes.length;
2377 if(direction == 0) { 2463 if(direction == 0) {
2378 operation.upInit(result); 2464 operation.upInit(result);
@@ -2447,6 +2533,23 @@ var RoutesOperation = (function () { @@ -2447,6 +2533,23 @@ var RoutesOperation = (function () {
2447 return srStr; 2533 return srStr;
2448 }, 2534 },
2449 2535
  2536 + /**
  2537 + * 加载线路区间
  2538 + */
  2539 + loadLineRegion: function() {
  2540 + RoutesService.findLineRegion(lineId, versions, function(res) {
  2541 + lineRegions = res;
  2542 + var html = [];
  2543 + if (lineRegions.length > 0) {
  2544 + lineRegions.forEach(function (item, idx) {
  2545 + html.push('<option value="', idx, '">', item.regionAlias, '(', item.seq, ')</option>');
  2546 + })
  2547 + $('#regionSelect').html(html.join(''));
  2548 + $('#regionSelect').trigger('change');
  2549 + }
  2550 + })
  2551 + },
  2552 +
2450 /***************************************************drawingmanager*******************************************************/ 2553 /***************************************************drawingmanager*******************************************************/
2451 initStationDrawingManager: function() { 2554 initStationDrawingManager: function() {
2452 stationDrawingManager = new BMapLib.DrawingManager(baiduMap, polygonDmOptions); 2555 stationDrawingManager = new BMapLib.DrawingManager(baiduMap, polygonDmOptions);
src/main/resources/static/pages/base/stationroute/js/routes-service.js
@@ -24,14 +24,40 @@ var RoutesService = (function(){ @@ -24,14 +24,40 @@ var RoutesService = (function(){
24 * @param version 24 * @param version
25 * @param callback 25 * @param callback
26 */ 26 */
27 - getStation: function(id_,dir_,version,callback) {  
28 - $get('/stationroute/findStations', {'line.id_eq': id_ , 'directions_eq': dir_, 'versions_eq': version}, function(result) { 27 + findRoutes: function(id_,dir_,version,callback) {
  28 + $get('/api/lsstationroute/findRoutes', {'line.id_eq': id_ , 'directions_eq': dir_, 'versions_eq': version}, function(result) {
29 callback && callback(result); 29 callback && callback(result);
30 }); 30 });
31 }, 31 },
32 32
33 /** 33 /**
34 * 获取站点路由信息 34 * 获取站点路由信息
  35 + * @param id_
  36 + * @param dir_
  37 + * @param version
  38 + * @param callback
  39 + */
  40 + findStationRoutes: function(id_,dir_,version,callback) {
  41 + $get('/api/lsstationroute/findStationRoutes', {'line.id_eq': id_ , 'directions_eq': dir_, 'versions_eq': version}, function(result) {
  42 + callback && callback(result);
  43 + });
  44 + },
  45 +
  46 + /**
  47 + * 获取路段路由信息
  48 + * @param id_
  49 + * @param dir_
  50 + * @param version
  51 + * @param callback
  52 + */
  53 + findSectionRoutes: function(id_,dir_,version,callback) {
  54 + $get('/api/lssectionroute/findSectionRoutes', {'line.id_eq': id_ , 'directions_eq': dir_, 'versions_eq': version}, function(result) {
  55 + callback && callback(result);
  56 + });
  57 + },
  58 +
  59 + /**
  60 + * 获取站点路由信息
35 * @param params 61 * @param params
36 * @param callback 62 * @param callback
37 */ 63 */
@@ -354,7 +380,34 @@ var RoutesService = (function(){ @@ -354,7 +380,34 @@ var RoutesService = (function(){
354 * @param callback 380 * @param callback
355 */ 381 */
356 saveGeoPremise: function (params, callback) { 382 saveGeoPremise: function (params, callback) {
357 - $post('/api/geopremise/', params, function(res) { 383 + $post('/api/geopremise/', params, function (res) {
  384 + })
  385 + },
  386 +
  387 + findLineRegion: function(lineId, version, callback) {
  388 + $get('/api/lineregion/all', {line_eq: lineId, version_eq: version}, function(res) {
  389 + callback && callback(res);
  390 + })
  391 + },
  392 +
  393 + /**
  394 + * 添加线路区间
  395 + * @param params
  396 + * @param callback
  397 + */
  398 + addLineRegion: function(params, callback) {
  399 + $post('/api/lineregion/add', params, function(res) {
  400 + callback && callback(res);
  401 + })
  402 + },
  403 +
  404 + /**
  405 + * 变更线路区间
  406 + * @param params
  407 + * @param callback
  408 + */
  409 + modifyLineRegion: function(params, callback) {
  410 + $post('/api/lineregion/modify', params, function(res) {
358 callback && callback(res); 411 callback && callback(res);
359 }) 412 })
360 } 413 }
src/main/resources/static/pages/base/stationroute/list.html
1 <link href="/pages/base/stationroute/css/bmap_base.css" rel="stylesheet" type="text/css" /> 1 <link href="/pages/base/stationroute/css/bmap_base.css" rel="stylesheet" type="text/css" />
2 <link rel="stylesheet" href="/assets/plugins/layer-v2.4/layer/skin/layer.css"> 2 <link rel="stylesheet" href="/assets/plugins/layer-v2.4/layer/skin/layer.css">
  3 +<style>
  4 + .region-station-head td {
  5 + height: 42px;
  6 + line-height: 42px;
  7 + font-size: 16px;
  8 + white-space: nowrap;
  9 + overflow: hidden;
  10 + text-overflow: ellipsis;
  11 + font-family: 微软雅黑;
  12 + color: #2765A7;
  13 + text-align: center;
  14 + }
  15 +
  16 + .region-station-body td {
  17 + display: inline-block;
  18 + font-size: 14px;
  19 + white-space: nowrap;
  20 + overflow: hidden;
  21 + text-overflow: ellipsis;
  22 + border-bottom: 1px solid #dddddd;
  23 + text-indent: 5px;
  24 + text-align: center;
  25 + height: 30px;
  26 + line-height: 30px;
  27 + }
  28 +
  29 + .region-station-body::-webkit-scrollbar { /*滚动条整体样式*/
  30 + width: 1px;
  31 + }
  32 + .region-station-body::-webkit-scrollbar-button{
  33 + display: none;
  34 + }
  35 + .region-station-body::-webkit-scrollbar-thumb{
  36 + border-radius: 20px;
  37 + background: rgba(0,0,0,0.3);
  38 + }
  39 + .region-station-body::-webkit-scrollbar-track{
  40 + background: #edca95;
  41 + }
  42 +</style>
3 43
4 <div class="mian-portlet-body"> 44 <div class="mian-portlet-body">
5 <!-- 地图 --> 45 <!-- 地图 -->
@@ -54,6 +94,9 @@ @@ -54,6 +94,9 @@
54 <!--<li class=""> 94 <!--<li class="">
55 <a href="#inoutCarpark" data-toggle="tab" id="inoutLine" aria-expanded="false"> 进出场路径 </a> 95 <a href="#inoutCarpark" data-toggle="tab" id="inoutLine" aria-expanded="false"> 进出场路径 </a>
56 </li>--> 96 </li>-->
  97 + <!--<li class="">
  98 + <a href="#regionDesignTab" data-toggle="tab" id="regionDesign" aria-expanded="false"> 线路区间规划 </a>
  99 + </li>-->
57 </ul> 100 </ul>
58 </div> 101 </div>
59 <div class="col-md-9 col-sm-9 col-xs-9"> 102 <div class="col-md-9 col-sm-9 col-xs-9">
@@ -98,6 +141,10 @@ @@ -98,6 +141,10 @@
98 </li> 141 </li>
99 <li class="divider"> </li> 142 <li class="divider"> </li>
100 <li> 143 <li>
  144 + <a href="javascript:;" id="upBatchRecover"><i class="fa fa-recycle"></i> 批量恢复</a>
  145 + </li>
  146 + <li class="divider"> </li>
  147 + <li>
101 <a href="javascript:;" class="retweet"><i class="fa fa-retweet"></i> 切换上下行</a> 148 <a href="javascript:;" class="retweet"><i class="fa fa-retweet"></i> 切换上下行</a>
102 </li> 149 </li>
103 <li class="divider"> </li> 150 <li class="divider"> </li>
@@ -144,6 +191,10 @@ @@ -144,6 +191,10 @@
144 </a> 191 </a>
145 <ul class="dropdown-menu pull-right" style="min-width:100px"> 192 <ul class="dropdown-menu pull-right" style="min-width:100px">
146 <li> 193 <li>
  194 + <a class="upManual" href="javascript:;" data-direction="0" data-pjax><i class="fa fa-pencil"></i> 手动添加站点</a>
  195 + </li>
  196 + <li class="divider"> </li>
  197 + <li>
147 <a class="upSystem" href="javascript:;" data-direction="0" data-pjax><i class="fa fa-wrench"></i> 系统规划</a> 198 <a class="upSystem" href="javascript:;" data-direction="0" data-pjax><i class="fa fa-wrench"></i> 系统规划</a>
148 </li> 199 </li>
149 <li class="divider"> </li> 200 <li class="divider"> </li>
@@ -206,6 +257,10 @@ @@ -206,6 +257,10 @@
206 </li> 257 </li>
207 <li class="divider"> </li> 258 <li class="divider"> </li>
208 <li> 259 <li>
  260 + <a href="javascript:;" id="downBatchRecover"><i class="fa fa-recycle"></i> 批量恢复</a>
  261 + </li>
  262 + <li class="divider"> </li>
  263 + <li>
209 <a href="javascript:;" class="retweet"><i class="fa fa-retweet"></i> 切换上下行</a> 264 <a href="javascript:;" class="retweet"><i class="fa fa-retweet"></i> 切换上下行</a>
210 </li> 265 </li>
211 <li class="divider"> </li> 266 <li class="divider"> </li>
@@ -243,6 +298,9 @@ @@ -243,6 +298,9 @@
243 <i class="fa fa-angle-down"></i> 298 <i class="fa fa-angle-down"></i>
244 </a> 299 </a>
245 <ul class="dropdown-menu pull-right" style="min-width:100px"> 300 <ul class="dropdown-menu pull-right" style="min-width:100px">
  301 + <li>
  302 + <a class="downManual" href="javascript:;" data-direction="1" data-pjax><i class="fa fa-pencil"></i> 手动添加站点</a>
  303 + </li>
246 <li class="divider"> </li> 304 <li class="divider"> </li>
247 <li> 305 <li>
248 <a class="downSystem" href="javascript:;" data-direction="1" data-pjax><i class="fa fa-wrench"></i> 系统规划</a> 306 <a class="downSystem" href="javascript:;" data-direction="1" data-pjax><i class="fa fa-wrench"></i> 系统规划</a>
@@ -302,6 +360,48 @@ @@ -302,6 +360,48 @@
302 </div> 360 </div>
303 </div> 361 </div>
304 </div> 362 </div>
  363 + <div class="tab-pane fade" id="regionDesignTab" data-direction="4">
  364 + <div class="portlet-body" id="regionDesignTool">
  365 + <!-- 树 -->
  366 + <div class="portlet-body">
  367 + <div class="form-horizontal">
  368 + <div class="form-group">
  369 + <div class="col-md-7 col-sm-6 col-xs-7">
  370 + <select id="regionSelect" style="height:30px;width:150px;">
  371 + <option>无线路区间</option>
  372 + </select>
  373 + </div>
  374 + <div class="col-md-2 col-sm-2 col-xs-2">
  375 + <input type="button" value="编辑" id="regionEditBtn"/>
  376 + </div>
  377 + <div class="col-md-2 col-sm-2 col-xs-2">
  378 + <input type="button" value="新增" id="regionAddBtn"/>
  379 + </div>
  380 + </div>
  381 + </div>
  382 + </div>
  383 + <div class="portlet-body">
  384 + <div id="regionDesignContent" style="height: auto;max-height: 500px;">
  385 + <div>
  386 + <table style="width: 100%;">
  387 + <thead>
  388 + <tr class="region-station-head">
  389 + <td style="width: 10%;">#</td>
  390 + <td style="width: 60%;">站点</td>
  391 + <td style="width: 30%;white-space: nowrap">上下行</td>
  392 + </tr>
  393 + </thead>
  394 + </table>
  395 + </div>
  396 +
  397 + <div class="region-station-body" style="overflow-y: auto; height: 450px;">
  398 + <table id="region-station-body-table" style="width: 100%; border: 1px solid #dddddd;">
  399 + </table>
  400 + </div>
  401 + </div>
  402 + </div>
  403 + </div>
  404 + </div>
305 </div> 405 </div>
306 </div> 406 </div>
307 </div> 407 </div>
@@ -366,6 +466,30 @@ @@ -366,6 +466,30 @@
366 </div> 466 </div>
367 </div> 467 </div>
368 </script> 468 </script>
  469 +<script id="line-region-station-template" type="text/html">
  470 + {{each list as obj i}}
  471 + <tr data-idx="{{i}}">
  472 + <td style="width: 10%;">
  473 + {{i+1}}
  474 + </td>
  475 + <td style="width: 60%;" title="{{obj.stationName}}">
  476 + {{obj.stationName}}
  477 + </td>
  478 + <td style="width: 30%;">
  479 + {{if obj.directions == 0}}
  480 + 上行
  481 + {{else}}
  482 + 下行
  483 + {{/if}}
  484 + </td>
  485 + </tr>
  486 + {{/each}}
  487 + {{if list.length == 0}}
  488 + <tr>
  489 + <td style="width: 100%;" colspan="3">无站点信息</td>
  490 + </tr>
  491 + {{/if}}
  492 +</script>
369 <script type="text/javascript"> 493 <script type="text/javascript">
370 var proxy = EventProxy.create('routes-operation-loaded', 'routes-service-loaded', function() { 494 var proxy = EventProxy.create('routes-operation-loaded', 'routes-service-loaded', function() {
371 RoutesOperation.initPage(); 495 RoutesOperation.initPage();
src/main/resources/static/pages/base/stationroute/recover_routes.html 0 → 100644
  1 +<!-- 批量恢复选项 -->
  2 +<div class="modal fade" id="recover_select_modal" tabindex="-1"
  3 + role="basic" aria-hidden="true">
  4 + <div class="modal-dialog">
  5 + <div class="modal-content">
  6 + <div class="modal-header">
  7 + <button type="button" class="close" data-dismiss="modal"
  8 + aria-hidden="true"></button>
  9 + <h4 class="modal-title">
  10 + 批量恢复选项
  11 + </h4>
  12 + </div>
  13 + <div class="modal-body">
  14 + <form class="form-horizontal" action="/" method="post"
  15 + id="formBootbox" role="form">
  16 + <div class="form-group">
  17 + <label class="col-md-3 control-label">恢复选项:</label>
  18 + <div class="col-md-9">
  19 + <div class="icheck-list">
  20 + <label>
  21 + <input type="radio" name="deleteOptions" value="0" checked> 批量恢复站点
  22 + </label>
  23 + <label >
  24 + <input type="radio" name="deleteOptions" value="1" > 批量恢复路段
  25 + </label>
  26 + </div>
  27 + </div>
  28 + </div>
  29 + </form>
  30 + </div>
  31 + <div class="modal-footer">
  32 + <button type="button" class="btn btn-primary"
  33 + id="deleteSelectnextButton">下一步</button>
  34 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  35 + </div>
  36 + </div>
  37 + </div>
  38 +</div>
  39 +<script type="text/javascript">
  40 + $('#recover_select_modal').on('modal.show',function(event) {
  41 + $('#recover_select_modal').modal({
  42 + show : true,
  43 + backdrop : 'static',
  44 + keyboard : false
  45 + });
  46 + var form = $('#formBootbox');
  47 + $('#deleteSelectnextButton').on('click', function() {
  48 + deleteOptions = $("input[name='deleteOptions']:checked").val();
  49 + form.submit();
  50 + });
  51 + form.validate({
  52 + submitHandler : function(f) {
  53 + if(deleteOptions == 0) {
  54 + // 恢复站点路由
  55 + $('#recover_select_modal').modal('hide');
  56 + $.get('recover_stationroute.html', function(m){
  57 + $(pjaxContainer).append(m);
  58 + $('#recover_station_modal').trigger('modal.show');
  59 + });
  60 + } else if(deleteOptions == 1) {
  61 + // 恢复路段路由
  62 + $('#recover_select_modal').modal('hide');
  63 + $.get('recover_sectionroute.html', function(m){
  64 + $(pjaxContainer).append(m);
  65 + $('#recover_section_modal').trigger('modal.show');
  66 + });
  67 + }
  68 +
  69 + }
  70 + });
  71 + });
  72 +</script>
0 \ No newline at end of file 73 \ No newline at end of file
src/main/resources/static/pages/base/stationroute/recover_sectionroute.html 0 → 100644
  1 +<!-- 编辑路段 -->
  2 +<div class="modal fade" id="recover_section_modal" role="basic"
  3 + aria-hidden="true">
  4 + <div style="margin:5% auto">
  5 + <div class="modal-content">
  6 + <div class="col-md-12">
  7 + <div class="portlet light porttlet-fit bordered">
  8 + <div class="portlet-title">
  9 + <div class="tipso-animation">
  10 + </div>
  11 + <div class="caption">
  12 + <i class="fa fa-info-circle font-dark"></i> <span
  13 + class="caption-subject font-dark sbold uppercase">路段信息</span>
  14 + </div>
  15 + <div class="actions">
  16 + <div class="modal-footer-left">
  17 + <button type="button" class="btn btn-primary" id="batchDeleteSectionButton">批量恢复路段</button>
  18 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  19 + </div>
  20 + </div>
  21 + </div>
  22 + <div class="portlet-body">
  23 + <div class="table-container" style="margin-top: 10px">
  24 + <from class="form-horizontal" role="form"
  25 + id="batch_delete_section_form">
  26 + <table
  27 + class="table table-striped table-bordered table-hover table-checkable"
  28 + id="sectionroute_datatable">
  29 + <thead>
  30 + <tr role="row" class="heading">
  31 + <th width="2%"><input type="checkbox" name="sectionCheckItems"
  32 + id="sectionCheckItems"></input></th>
  33 + <th width="2%">序号</th>
  34 + <th width="5%">路段路由编号</th>
  35 + <th width="5%">线路编号</th>
  36 + <th width="11%">线路名称</th>
  37 + <th width="7%">线路方向</th>
  38 + <th width="11%">路段名称</th>
  39 + <th width="5%">路段编码</th>
  40 + <th width="5%">路段序号</th>
  41 + <th width="5%">路段限速</th>
  42 + <th width="5%">路段长度</th>
  43 + <th width="5%">路段历时</th>
  44 + <th width="5%">版本号</th>
  45 + <!-- <th width="6%">是否撤销</th>
  46 + <th width="9%">操作</th> -->
  47 + </tr>
  48 + </thead>
  49 + <tbody></tbody>
  50 + </table>
  51 + </from>
  52 + <div class="actions">
  53 + <div style="text-align: right">
  54 + <ul id="pagination" class="pagination"></ul>
  55 + </div>
  56 + </div>
  57 + </div>
  58 + </div>
  59 + </div>
  60 + </div>
  61 + </div>
  62 + </div>
  63 +</div>
  64 +
  65 +<script type="text/html" id="sectionroute_datatable_template">
  66 + {{each list as obj i }}
  67 + <tr>
  68 + <td style="vertical-align: middle;">
  69 + <input type="checkbox" class="group-checkable icheck" name="items" value="{{obj.id}}" id="{{obj.id}}" >
  70 + </td>
  71 + <td style="vertical-align: middle;">
  72 + {{(list.page*10)+(i+1)}}
  73 + </td>
  74 + <td style="vertical-align: middle;">
  75 + {{obj.id}}
  76 + </td>
  77 + <td style="vertical-align: middle;">
  78 + {{obj.lineCode}}
  79 + </td>
  80 + <td style="vertical-align: middle;">
  81 + {{obj.line.name}}
  82 + </td>
  83 + <td style="vertical-align: middle;">
  84 + {{if obj.directions == '0'}}
  85 + 上行
  86 + {{else if obj.directions == '1'}}
  87 + 下行
  88 + {{/if}}
  89 + </td>
  90 + <td style="vertical-align: middle;">
  91 + {{obj.section.sectionName}}
  92 + </td>
  93 + <td style="vertical-align: middle;">
  94 + {{obj.sectionCode}}
  95 + </td>
  96 + <td style="vertical-align: middle;">
  97 + {{obj.sectionrouteCode}}
  98 + </td>
  99 + <td style="vertical-align: middle;">
  100 + {{obj.speedLimit}}
  101 + </td>
  102 + <td style="vertical-align: middle;">
  103 + {{obj.sectionDistance}}
  104 + </td>
  105 + <td style="vertical-align: middle;">
  106 + {{obj.sectionTime}}
  107 + </td>
  108 + <td style="vertical-align: middle;">
  109 + {{obj.versions}}
  110 + </td>
  111 + </tr>
  112 + {{/each}}
  113 + {{if list.length == 0}}
  114 + <tr>
  115 + <td colspan=13><h6 class="muted">没有找到相关数据</h6></td>
  116 + </tr>
  117 + {{/if}}
  118 +</script>
  119 +<script type="text/javascript">
  120 +$('#recover_section_modal').on('modal.show',function(event) {
  121 + var properties = RoutesOperation.getProperties();
  122 + layer.closeAll();
  123 + // 显示mobal
  124 + $('#recover_section_modal').modal({
  125 + show : true,
  126 + backdrop : 'static',
  127 + keyboard : false
  128 + });
  129 + // 提交数据按钮事件
  130 + $('#batchDeleteSectionButton').on('click', function() {
  131 + let checked = $("[name=items]:checked");
  132 + let ids = new Array();
  133 + checked.each(function() {
  134 + ids.push($(this).val());
  135 + });
  136 + if (ids.length > 0) {
  137 + var params = {};
  138 + params.ids = ids;
  139 + params.status = properties.status;
  140 + $.post('/api/lssectionroute/batchRecover', params, function(res) {
  141 + if (res.status == 'SUCCESS') {
  142 + layer.msg('恢复成功...');
  143 + } else {
  144 + layer.msg('恢复失败...');
  145 + }
  146 + initSearch();
  147 + RoutesOperation.resjtreeDate(properties.lineId, properties.directions, properties.versions);
  148 + });
  149 + } else {
  150 + layer.msg('请选择要恢复的路段!!!');
  151 + }
  152 + });
  153 +
  154 + /** 全选框 */
  155 + $('#sectionCheckItems').on('click', function() {
  156 + $('input[name=items]').prop('checked', $(this).prop("checked"));
  157 + });
  158 +
  159 + /** 页面加载完显示数据 */
  160 + window.onload = initSearch();
  161 +
  162 + /**
  163 + * @description : (TODO) 页面加载事件
  164 + *
  165 + */
  166 + var page = 0;
  167 + function initSearch() {
  168 + var params = new getParams();
  169 + page = 0;
  170 + loadTableDate(params, true);
  171 + }
  172 + function getParams() {
  173 + // 搜索参数集合
  174 + var params = {};
  175 + params['line.id_eq'] = properties.lineId;
  176 + params.directions_eq = properties.directions;
  177 + params.versions_eq = properties.versions;
  178 + params.destroy_eq = 1;
  179 +
  180 + return params;
  181 + }
  182 + /**
  183 + * @description : (TODO) 表格数据分页加载事件
  184 + *
  185 + * ------@param : 查询参数
  186 + *
  187 + * ------@isPon : 是否重新分页
  188 + *
  189 + */
  190 + function loadTableDate(param, isPon) {
  191 + // 初始化全选按钮
  192 + $('#sectionCheckItems').prop('checked', false);
  193 + // 搜索参数
  194 + var params = {};
  195 + if (param)
  196 + params = param;
  197 + // 排序(按方向与序号)
  198 + params['order'] = 'directions,sectionrouteCode';
  199 + // 排序方向.
  200 + params['direction'] = 'ASC,ASC';
  201 + // 记录当前页数
  202 + params['page'] = page;
  203 +
  204 + // 弹出正在加载层
  205 + var i = layer.load(2);
  206 + // 异步请求获取表格数据
  207 + $.get('/api/lssectionroute/findPageByParams', params, function(result) {
  208 + // 添加序号
  209 + if (!result.content) {
  210 + result.content = new Array();
  211 + }
  212 + result.content.page = page;
  213 + // 把数据填充到模版中
  214 + var tbodyHtml = template('sectionroute_datatable_template',{list : result.content});
  215 + // 把渲染好的模版html文本追加到表格中
  216 + $('#sectionroute_datatable tbody').html(tbodyHtml);
  217 + // 是重新分页且返回数据长度大于0
  218 + if (isPon && result.content.length > 0) {
  219 + // 重新分页
  220 + initPag = true;
  221 + // 分页栏
  222 + showPagination(result);
  223 + }
  224 + // 关闭弹出加载层
  225 + layer.close(i);
  226 + });
  227 + }
  228 + /**
  229 + * @description : (TODO) 分页栏组件
  230 + *
  231 + */
  232 + function showPagination(data) {
  233 + // 分页组件
  234 + $('#pagination').jqPaginator({
  235 + // 总页数
  236 + totalPages: data.totalPages,
  237 + // 中间显示页数
  238 + visiblePages: 6,
  239 + // 当前页
  240 + currentPage: page + 1,
  241 + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>',
  242 + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>',
  243 + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>',
  244 + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>',
  245 + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',
  246 + onPageChange: function(num, type) {
  247 + if (initPag) {
  248 + initPag = false;
  249 + return;
  250 + }
  251 + var pData = getParams();
  252 + page = num - 1;
  253 + loadTableDate(pData, false);
  254 + }
  255 + });
  256 + }
  257 +});
  258 +</script>
0 \ No newline at end of file 259 \ No newline at end of file
src/main/resources/static/pages/base/stationroute/recover_stationroute.html 0 → 100644
  1 +<!-- 编辑路段 -->
  2 +<div class="modal fade" id="recover_station_modal" role="basic"
  3 + aria-hidden="true">
  4 + <div style="margin:5% auto">
  5 + <div class="modal-content">
  6 + <div class="col-md-12">
  7 + <div class="portlet light porttlet-fit bordered">
  8 + <div class="portlet-title">
  9 + <div class="tipso-animation">
  10 + </div>
  11 + <div class="caption">
  12 + <i class="fa fa-info-circle font-dark"></i>
  13 + <span class="caption-subject font-dark sbold uppercase">站点信息</span>
  14 + </div>
  15 + <div class="actions">
  16 + <div class="btn-group btn-group-devided" data-toggle="buttons">
  17 + <button type="button" class="btn btn-primary" id="batchDeleteStationButton">批量恢复站点</button>
  18 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  19 + </div>
  20 + </div>
  21 + </div>
  22 + <div class="portlet-body">
  23 + <div class="table-container" style="margin-top: 10px">
  24 + <from class="form-horizontal" role="form" id="batch_delete_station_form">
  25 + <table class="table table-striped table-bordered table-hover table-checkable" id="stationroute_datatable">
  26 + <thead>
  27 + <tr role="row" class="heading">
  28 + <th width="2%"><input type="checkbox" name="checkItems"
  29 + id="stationCheckItems"></input></th>
  30 + <th width="2%">序号</th>
  31 + <th width="5%">站点路由编号</th>
  32 + <th width="5%">线路编号</th>
  33 + <th width="8%">线路名称</th>
  34 + <th width="5%">线路方向</th>
  35 + <th width="8%">站点路由名称</th>
  36 + <th width="4%">站点编码</th>
  37 + <th width="4%">站点序号</th>
  38 + <th width="4%">站点类型</th>
  39 + <th width="6%">站点距离(km)</th>
  40 + <th width="6%">站点时长(min)</th>
  41 + <th width="4%">版本号</th>
  42 + </tr>
  43 + </thead>
  44 + <tbody></tbody>
  45 + </table>
  46 + </from>
  47 + <div class="actions">
  48 + <div style="text-align: right">
  49 + <ul id="pagination" class="pagination"></ul>
  50 + </div>
  51 + </div>
  52 + </div>
  53 + </div>
  54 + </div>
  55 + </div>
  56 + </div>
  57 + </div>
  58 +</div>
  59 +
  60 +<script type="text/html" id="stationroute_datatable_template">
  61 + {{each list as obj i }}
  62 + <tr>
  63 + <td style="vertical-align: middle;">
  64 + <input type="checkbox" class="group-checkable icheck" name="items" value="{{obj.id}}" id="{{obj.id}}" >
  65 + </td>
  66 + <td style="vertical-align: middle;">
  67 + {{(list.page*10)+(i+1)}}
  68 + </td>
  69 + <td style="vertical-align: middle;">
  70 + {{obj.id}}
  71 + </td>
  72 + <td>
  73 + {{obj.lineCode}}
  74 + </td>
  75 + <td>
  76 + {{obj.line.name}}
  77 + </td>
  78 + <td>
  79 + {{if obj.directions == '0'}}
  80 + 上行
  81 + {{else if obj.directions == '1'}}
  82 + 下行
  83 + {{/if}}
  84 + </td>
  85 + <td>
  86 + {{obj.stationName}}
  87 + </td>
  88 + <td>
  89 + {{obj.stationCode}}
  90 + </td>
  91 + <td>
  92 + {{obj.stationRouteCode}}
  93 + </td>
  94 + <td>
  95 + {{if obj.stationMark == 'B'}}
  96 + 起始站
  97 + {{else if obj.stationMark == 'Z'}}
  98 + 中途站
  99 + {{else if obj.stationMark== 'E'}}
  100 + 终点站
  101 + {{/if}}
  102 + </td>
  103 + <td>
  104 + {{obj.distances}}
  105 + </td>
  106 + <td>
  107 + {{obj.toTime}}
  108 + </td>
  109 + <td>
  110 + {{obj.versions}}
  111 + </td>
  112 + </tr>
  113 + {{/each}}
  114 + {{if list.length == 0}}
  115 + <tr>
  116 + <td colspan=13><h6 class="muted">没有找到相关数据</h6></td>
  117 + </tr>
  118 + {{/if}}
  119 +</script>
  120 +<script type="text/javascript">
  121 +$('#recover_station_modal').on('modal.show',function(event) {
  122 + var properties = RoutesOperation.getProperties();
  123 + layer.closeAll();
  124 + // 显示mobal
  125 + $('#recover_station_modal').modal({
  126 + show : true,
  127 + backdrop : 'static',
  128 + keyboard : false
  129 + });
  130 + // 提交数据按钮事件
  131 + $('#batchDeleteStationButton').on('click', function() {
  132 + let checked = $("[name=items]:checked");
  133 + let ids = new Array();
  134 + checked.each(function() {
  135 + ids.push($(this).val());
  136 + });
  137 + if (ids.length > 0) {
  138 + let params = {};
  139 + params.ids = ids;
  140 + params.status = properties.status;
  141 + $.post('/api/lsstationroute/batchRecover',params,function(res) {
  142 + if (res.status == 'SUCCESS') {
  143 + layer.msg('恢复成功...');
  144 + } else {
  145 + layer.msg('恢复失败...');
  146 + }
  147 + initSearch();
  148 + // 刷新左边树
  149 + RoutesOperation.resjtreeDate(properties.lineId, properties.directions, properties.versions);
  150 + });
  151 + } else {
  152 + layer.msg('请选择要恢复的站点!!!');
  153 + }
  154 + });
  155 +
  156 + /** 全选框 */
  157 + $('#stationCheckItems').on('click', function() {
  158 + $('input[name=items]').prop('checked', $(this).prop("checked"));
  159 + });
  160 +
  161 + /** 页面加载完显示数据 */
  162 + window.onload = initSearch();
  163 +
  164 + /**
  165 + * @description : (TODO) 页面加载事件
  166 + *
  167 + */
  168 + var page = 0;
  169 + function initSearch() {
  170 + var params = new getParams();
  171 + page = 0;
  172 + loadTableDate(params, true);
  173 + }
  174 + function getParams() {
  175 + var params = {};
  176 + params['line.id_eq'] = properties.lineId;
  177 + params.directions_eq = properties.directions;
  178 + params.versions_eq = properties.versions;
  179 + params.destroy_eq = 1;
  180 +
  181 + return params;
  182 + }
  183 + /**
  184 + * @description : (TODO) 表格数据分页加载事件
  185 + *
  186 + * ------@param : 查询参数
  187 + *
  188 + * ------@isPon : 是否重新分页
  189 + *
  190 + */
  191 + function loadTableDate(param, isPon) {
  192 + // 初始化全选按钮
  193 + $('#stationCheckItems').prop('checked', false);
  194 + // 搜索参数
  195 + var params = {};
  196 + if (param)
  197 + params = param;
  198 + // 排序(按方向与序号)
  199 + params['order'] = 'directions,stationRouteCode';
  200 + // 排序方向.
  201 + params['direction'] = 'ASC,ASC';
  202 + // 记录当前页数
  203 + params['page'] = page;
  204 +
  205 + // 弹出正在加载层
  206 + var i = layer.load(2);
  207 + // 异步请求获取表格数据
  208 + $.get('/api/lsstationroute/findPageByParams', params, function(result) {
  209 + // 添加序号
  210 + if (!result.content) {
  211 + result.content = new Array();
  212 + }
  213 + result.content.page = page;
  214 + // 把数据填充到模版中
  215 + var tbodyHtml = template('stationroute_datatable_template',{list : result.content});
  216 + // 把渲染好的模版html文本追加到表格中
  217 + $('#stationroute_datatable tbody').html(tbodyHtml);
  218 + // 是重新分页且返回数据长度大于0
  219 + if (isPon && result.content.length > 0) {
  220 + // 重新分页
  221 + initPag = true;
  222 + // 分页栏
  223 + showPagination(result);
  224 + }
  225 + // 关闭弹出加载层
  226 + layer.close(i);
  227 + });
  228 + }
  229 + /**
  230 + * @description : (TODO) 分页栏组件
  231 + *
  232 + */
  233 + function showPagination(data) {
  234 + // 分页组件
  235 + $('#pagination').jqPaginator({
  236 + // 总页数
  237 + totalPages: data.totalPages,
  238 + // 中间显示页数
  239 + visiblePages: 6,
  240 + // 当前页
  241 + currentPage: page + 1,
  242 + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>',
  243 + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>',
  244 + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>',
  245 + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>',
  246 + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',
  247 + onPageChange : function(num, type) {
  248 + if (initPag) {
  249 + initPag = false;
  250 + return;
  251 + }
  252 + var pData = getParams();
  253 + page = num - 1;
  254 + loadTableDate(pData, false);
  255 + }
  256 + });
  257 + }
  258 +});
  259 +</script>
0 \ No newline at end of file 260 \ No newline at end of file
src/main/resources/static/real_control_v2/mapmonitor/fragments/map_infowindow.html
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 {{/if}} 40 {{/if}}
41 <a href="javascript:;" style="float: left;" onclick="javascript:window.open('http://58.34.52.130:4490/transport_server/dvr_monitor2.html?userid=4&zbh={{nbbm}}');">DVR</a> 41 <a href="javascript:;" style="float: left;" onclick="javascript:window.open('http://58.34.52.130:4490/transport_server/dvr_monitor2.html?userid=4&zbh={{nbbm}}');">DVR</a>
42 <a href="W9:1@139.196.29.203@?method=call&1111:{{dvrcode}}" style="margin-left: 50px;" >拨打电话</a> 42 <a href="W9:1@139.196.29.203@?method=call&1111:{{dvrcode}}" style="margin-left: 50px;" >拨打电话</a>
43 - <a href="javascript:;" style="float: right;" onclick="javascript:gb_map_play_back.initParams('{{deviceId}}', '{{nbbm}}');">轨迹回放</a> 43 + <a href="javascript:;" style="float: right;" onclick="javascript:gb_map_play_back.initParams({deviceId: '{{deviceId}}', nbbm: '{{nbbm}}'});">轨迹回放</a>
44 </div> 44 </div>
45 </script> 45 </script>
46 46