Commit 18a930fdb2beba0027b3492eb8c2b88087b5df94

Authored by youxiw2000
1 parent 238e076d

获取最大IDBUG

Too many changes to show.

To preserve performance only 12 of 15 files are displayed.

src/main/java/com/bsth/controller/CarParkController.java
1 -package com.bsth.controller;  
2 -  
3 -import java.util.HashMap;  
4 -import java.util.List;  
5 -import java.util.Map;  
6 -  
7 -import com.bsth.entity.CarPark;  
8 -import com.bsth.service.CarParkService;  
9 -import com.bsth.util.GetUIDAndCode;  
10 -  
11 -import org.springframework.beans.factory.annotation.Autowired;  
12 -import org.springframework.web.bind.annotation.*;  
13 -  
14 -  
15 -@RestController  
16 -@RequestMapping("carpark")  
17 -public class CarParkController extends BaseController<CarPark, Integer> {  
18 - @Autowired  
19 - CarParkService service;  
20 -  
21 - /**  
22 - * @Description :TODO(查询停车场编码)  
23 - *  
24 - * @return int <carParkCode 停车场编码>  
25 - */  
26 - @RequestMapping(value="getCarParkCode" , method = RequestMethod.GET)  
27 - public Map<String, Object> getStationCode() {  
28 - Map<String, Object> resultMap = new HashMap<String, Object>();  
29 - resultMap.put("carParkCode", "FFFFFF" + GetUIDAndCode.getCarParkId());  
30 - return resultMap;  
31 - }  
32 - /**  
33 - * 新增停车场信息  
34 - *  
35 - *  
36 - * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;  
37 - *  
38 - * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;  
39 - *  
40 - * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;  
41 - *  
42 - * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>  
43 - *  
44 - * @return map <SUCCESS:成功;ERROR:失败>  
45 - *  
46 - */  
47 - @RequestMapping(value="carParkSave" , method = RequestMethod.POST)  
48 - public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) {  
49 - map.put("createBy", "");  
50 - map.put("updateBy", "");  
51 - return service.carParkSave(map);  
52 - }  
53 - @RequestMapping(value = "findCarParkInfoFormId",method = RequestMethod.GET)  
54 - public List<Map<String, Object>> findCarParkInfoFormId(@RequestParam Map<String, Object> map) {  
55 - return service.findCarParkInfoFormId(map);  
56 - }  
57 - /**  
58 - * 修改停车场信息  
59 - *  
60 - *  
61 - * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;  
62 - *  
63 - * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;  
64 - *  
65 - * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;  
66 - *  
67 - * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>  
68 - *  
69 - * @return map <SUCCESS:成功;ERROR:失败>  
70 - *  
71 - */  
72 - @RequestMapping(value="carParkUpdate" , method = RequestMethod.POST)  
73 - public Map<String, Object> carParkUpdate(@RequestParam Map<String, Object> map) {  
74 - map.put("updateBy", "");  
75 - return service.carParkUpdate(map);  
76 - }  
77 -  
78 - @RequestMapping(value="isHaveParkCode",method=RequestMethod.GET)  
79 - public boolean isHaveParkCode(@RequestParam Map<String,Object> map) {  
80 - return service.selectTccInfoByCode(map);  
81 - }  
82 -} 1 +package com.bsth.controller;
  2 +
  3 +import java.util.HashMap;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import com.bsth.entity.CarPark;
  8 +import com.bsth.service.CarParkService;
  9 +import com.bsth.util.GetUIDAndCode;
  10 +
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.web.bind.annotation.*;
  13 +
  14 +
  15 +@RestController
  16 +@RequestMapping("carpark")
  17 +public class CarParkController extends BaseController<CarPark, Integer> {
  18 + @Autowired
  19 + CarParkService service;
  20 +
  21 + /**
  22 + * @Description :TODO(查询停车场编码)
  23 + *
  24 + * @return int <carParkCode 停车场编码>
  25 + */
  26 + @RequestMapping(value="getCarParkCode" , method = RequestMethod.GET)
  27 + public Map<String, Object> getStationCode() {
  28 + Map<String, Object> resultMap = new HashMap<String, Object>();
  29 + resultMap.put("carParkCode", "FFFFFF" + service.carParkMaxId() + 1);
  30 + return resultMap;
  31 + }
  32 + /**
  33 + * 新增停车场信息
  34 + *
  35 + *
  36 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  37 + *
  38 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  39 + *
  40 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  41 + *
  42 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  43 + *
  44 + * @return map <SUCCESS:成功;ERROR:失败>
  45 + *
  46 + */
  47 + @RequestMapping(value="carParkSave" , method = RequestMethod.POST)
  48 + public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) {
  49 + map.put("createBy", "");
  50 + map.put("updateBy", "");
  51 + return service.carParkSave(map);
  52 + }
  53 + @RequestMapping(value = "findCarParkInfoFormId",method = RequestMethod.GET)
  54 + public List<Map<String, Object>> findCarParkInfoFormId(@RequestParam Map<String, Object> map) {
  55 + return service.findCarParkInfoFormId(map);
  56 + }
  57 + /**
  58 + * 修改停车场信息
  59 + *
  60 + *
  61 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  62 + *
  63 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  64 + *
  65 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  66 + *
  67 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  68 + *
  69 + * @return map <SUCCESS:成功;ERROR:失败>
  70 + *
  71 + */
  72 + @RequestMapping(value="carParkUpdate" , method = RequestMethod.POST)
  73 + public Map<String, Object> carParkUpdate(@RequestParam Map<String, Object> map) {
  74 + map.put("updateBy", "");
  75 + return service.carParkUpdate(map);
  76 + }
  77 +
  78 + @RequestMapping(value="isHaveParkCode",method=RequestMethod.GET)
  79 + public boolean isHaveParkCode(@RequestParam Map<String,Object> map) {
  80 + return service.selectTccInfoByCode(map);
  81 + }
  82 +}
src/main/java/com/bsth/controller/LineController.java
1 -package com.bsth.controller;  
2 -  
3 -import com.bsth.common.ResponseCode;  
4 -import com.bsth.entity.Line;  
5 -import com.bsth.entity.LineVersions;  
6 -import com.bsth.service.LineService;  
7 -import com.bsth.service.LineVersionsService;  
8 -import com.bsth.util.GetUIDAndCode;  
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.text.ParseException;  
16 -import java.text.SimpleDateFormat;  
17 -import java.util.Date;  
18 -import java.util.HashMap;  
19 -import java.util.Map;  
20 -  
21 -/**  
22 - *  
23 - * @ClassName: LineController(线路控制器)  
24 - *  
25 - * @Extends : BaseController  
26 - *  
27 - * @Description: TODO(线路控制层)  
28 - *  
29 - * @Author bsth@lq  
30 - *  
31 - * @Date 2016年4月28日 上午9:21:17  
32 - *  
33 - * @Version 公交调度系统BS版 0.1  
34 - *  
35 - */  
36 -@RestController  
37 -@RequestMapping("line")  
38 -public class LineController extends BaseController<Line, Integer> {  
39 -  
40 - @Autowired  
41 - private LineService service;  
42 -  
43 - @Autowired  
44 - private LineVersionsService lineVersionsService;  
45 -  
46 - /**  
47 - * 获取线路编码与ID  
48 - *  
49 - * @return int <lineCode:线路编码>  
50 - */  
51 - @RequestMapping(value = "getLineCode", method = RequestMethod.GET)  
52 - public long getLineCode() {  
53 - return GetUIDAndCode.getLineId();  
54 - }  
55 -  
56 - /**  
57 - * 验证线路编码是否存在  
58 - *  
59 - * @return Map < {valid: true }:是否通过验证>  
60 - */  
61 - @RequestMapping(value = "lineCodeVerification", method = RequestMethod.GET)  
62 - public String lineCodeVerification(@RequestParam(defaultValue = "lineCode") String lineCode) {  
63 - return service.lineCodeVerification(lineCode);  
64 - }  
65 -  
66 - /**  
67 - *  
68 - * 保存  
69 - *  
70 - */  
71 - @RequestMapping(method = RequestMethod.POST)  
72 - public Map<String, Object> save(Line t){  
73 - Map<String, Object> map = new HashMap<>();  
74 - if(t.getId()==null) {  
75 -  
76 - t.setId(Integer.valueOf(t.getLineCode()));  
77 -  
78 - }  
79 - if( (t.getId().toString().length()) > 6 || service.lineCodeVerification(t.getLineCode()).equals("false") ) {  
80 -  
81 - map.put("status", ResponseCode.ERROR);  
82 - return map;  
83 - }  
84 - if(t.getDestroy() == 0){  
85 - t.setInUse(1);  
86 - } else  
87 - t.setInUse(0);  
88 - // 添加线路版本  
89 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
90 - try {  
91 - Date endDate = simpleDateFormat.parse("2088-08-08 00:00:00");  
92 - LineVersions lineVersions = new LineVersions();  
93 - lineVersions.setName("原始版本");  
94 - lineVersions.setLine(t);  
95 - lineVersions.setLineCode(t.getLineCode());  
96 - lineVersions.setStartDate(new java.sql.Date(new Date().getTime()));  
97 - lineVersions.setEndDate(new java.sql.Date(endDate.getTime()));// 2088-8-8 00:00:00  
98 - lineVersions.setVersions(1);  
99 - lineVersions.setStatus(1);  
100 - // 先添加线路再添加版本  
101 - service.save(t);  
102 - return lineVersionsService.save(lineVersions);  
103 - } catch (ParseException e) {  
104 - // TODO Auto-generated catch block  
105 - e.printStackTrace();  
106 - map.put("status", ResponseCode.ERROR);  
107 - return map;  
108 - }  
109 - }  
110 -  
111 - /**  
112 - * 更改  
113 - */  
114 - @RequestMapping(value="/update", method = RequestMethod.POST)  
115 - public Map<String, Object> update(Line l){  
116 - Map<String, Object> map = new HashMap<>();  
117 - if((l.getId().toString().length()) > 6 || service.lineCodeVerification(l.getLineCode()).equals("true") ) {  
118 -  
119 - map.put("status", ResponseCode.ERROR);  
120 - return map;  
121 - }  
122 - return service.update(l);  
123 - }  
124 -  
125 - @RequestMapping(value ="/findById" , method = RequestMethod.GET)  
126 - Line findByID(@RequestParam(defaultValue = "id") Integer id){  
127 - return service.findById(id);  
128 - }  
129 -  
130 - /**  
131 - * 删除线路  
132 - * @param id  
133 - * @return  
134 - */  
135 - @RequestMapping(value ="/remove" , method = RequestMethod.POST)  
136 - public Map<String, Object> remove(Integer id){  
137 - return service.remove(id);  
138 - }  
139 -  
140 - /**  
141 - * 查询外部行业编码是否有更新  
142 - * @param id  
143 - * @return  
144 - */  
145 - @RequestMapping(value ="/getLineMatchStationIsUpdate" , method = RequestMethod.GET)  
146 - public Map<String, Object> getLineMatchStationIsUpdate(@RequestParam(defaultValue = "id") Integer id){  
147 - return service.getLineMatchStationIsUpdate(id);  
148 - }  
149 -} 1 +package com.bsth.controller;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.entity.Line;
  5 +import com.bsth.entity.LineVersions;
  6 +import com.bsth.service.LineService;
  7 +import com.bsth.service.LineVersionsService;
  8 +import com.bsth.util.GetUIDAndCode;
  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.text.ParseException;
  16 +import java.text.SimpleDateFormat;
  17 +import java.util.Date;
  18 +import java.util.HashMap;
  19 +import java.util.Map;
  20 +
  21 +/**
  22 + *
  23 + * @ClassName: LineController(线路控制器)
  24 + *
  25 + * @Extends : BaseController
  26 + *
  27 + * @Description: TODO(线路控制层)
  28 + *
  29 + * @Author bsth@lq
  30 + *
  31 + * @Date 2016年4月28日 上午9:21:17
  32 + *
  33 + * @Version 公交调度系统BS版 0.1
  34 + *
  35 + */
  36 +@RestController
  37 +@RequestMapping("line")
  38 +public class LineController extends BaseController<Line, Integer> {
  39 +
  40 + @Autowired
  41 + private LineService service;
  42 +
  43 + @Autowired
  44 + private LineVersionsService lineVersionsService;
  45 +
  46 + /**
  47 + * 获取线路编码与ID
  48 + *
  49 + * @return int <lineCode:线路编码>
  50 + */
  51 + @RequestMapping(value = "getLineCode", method = RequestMethod.GET)
  52 + public long getLineCode() {
  53 + return service.selectMaxIdToLineCode() + 1;
  54 + }
  55 +
  56 + /**
  57 + * 验证线路编码是否存在
  58 + *
  59 + * @return Map < {valid: true }:是否通过验证>
  60 + */
  61 + @RequestMapping(value = "lineCodeVerification", method = RequestMethod.GET)
  62 + public String lineCodeVerification(@RequestParam(defaultValue = "lineCode") String lineCode) {
  63 + return service.lineCodeVerification(lineCode);
  64 + }
  65 +
  66 + /**
  67 + *
  68 + * 保存
  69 + *
  70 + */
  71 + @RequestMapping(method = RequestMethod.POST)
  72 + public Map<String, Object> save(Line t){
  73 + Map<String, Object> map = new HashMap<>();
  74 + if(t.getId()==null) {
  75 +
  76 + t.setId(Integer.valueOf(t.getLineCode()));
  77 +
  78 + }
  79 + if( (t.getId().toString().length()) > 6 || service.lineCodeVerification(t.getLineCode()).equals("false") ) {
  80 +
  81 + map.put("status", ResponseCode.ERROR);
  82 + return map;
  83 + }
  84 + if(t.getDestroy() == 0){
  85 + t.setInUse(1);
  86 + } else
  87 + t.setInUse(0);
  88 + // 添加线路版本
  89 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  90 + try {
  91 + Date endDate = simpleDateFormat.parse("2088-08-08 00:00:00");
  92 + LineVersions lineVersions = new LineVersions();
  93 + lineVersions.setName("原始版本");
  94 + lineVersions.setLine(t);
  95 + lineVersions.setLineCode(t.getLineCode());
  96 + lineVersions.setStartDate(new java.sql.Date(new Date().getTime()));
  97 + lineVersions.setEndDate(new java.sql.Date(endDate.getTime()));// 2088-8-8 00:00:00
  98 + lineVersions.setVersions(1);
  99 + lineVersions.setStatus(1);
  100 + // 先添加线路再添加版本
  101 + service.save(t);
  102 + return lineVersionsService.save(lineVersions);
  103 + } catch (ParseException e) {
  104 + // TODO Auto-generated catch block
  105 + e.printStackTrace();
  106 + map.put("status", ResponseCode.ERROR);
  107 + return map;
  108 + }
  109 + }
  110 +
  111 + /**
  112 + * 更改
  113 + */
  114 + @RequestMapping(value="/update", method = RequestMethod.POST)
  115 + public Map<String, Object> update(Line l){
  116 + Map<String, Object> map = new HashMap<>();
  117 + if((l.getId().toString().length()) > 6 || service.lineCodeVerification(l.getLineCode()).equals("true") ) {
  118 +
  119 + map.put("status", ResponseCode.ERROR);
  120 + return map;
  121 + }
  122 + return service.update(l);
  123 + }
  124 +
  125 + @RequestMapping(value ="/findById" , method = RequestMethod.GET)
  126 + Line findByID(@RequestParam(defaultValue = "id") Integer id){
  127 + return service.findById(id);
  128 + }
  129 +
  130 + /**
  131 + * 删除线路
  132 + * @param id
  133 + * @return
  134 + */
  135 + @RequestMapping(value ="/remove" , method = RequestMethod.POST)
  136 + public Map<String, Object> remove(Integer id){
  137 + return service.remove(id);
  138 + }
  139 +
  140 + /**
  141 + * 查询外部行业编码是否有更新
  142 + * @param id
  143 + * @return
  144 + */
  145 + @RequestMapping(value ="/getLineMatchStationIsUpdate" , method = RequestMethod.GET)
  146 + public Map<String, Object> getLineMatchStationIsUpdate(@RequestParam(defaultValue = "id") Integer id){
  147 + return service.getLineMatchStationIsUpdate(id);
  148 + }
  149 +}
src/main/java/com/bsth/controller/SectionController.java
1 -package com.bsth.controller;  
2 -  
3 -import java.util.Map;  
4 -  
5 -import org.springframework.beans.factory.annotation.Autowired;  
6 -import org.springframework.web.bind.annotation.RequestMapping;  
7 -import org.springframework.web.bind.annotation.RequestMethod;  
8 -import org.springframework.web.bind.annotation.RequestParam;  
9 -import org.springframework.web.bind.annotation.RestController;  
10 -  
11 -import com.bsth.entity.Section;  
12 -import com.bsth.service.SectionService;  
13 -import com.bsth.util.GetUIDAndCode;  
14 -  
15 -/**  
16 - *  
17 - * @ClassName: SectionController(路段控制器)  
18 - *  
19 - * @Extends : BaseController  
20 - *  
21 - * @Description: TODO(路段控制层)  
22 - *  
23 - * @Author bsth@lq  
24 - *  
25 - * @Date 2016年05月03日 上午9:21:17  
26 - *  
27 - * @Version 公交调度系统BS版 0.1  
28 - *  
29 - */  
30 -  
31 -@RestController  
32 -@RequestMapping("section")  
33 -public class SectionController extends BaseController<Section, Integer> {  
34 -  
35 - @Autowired  
36 - SectionService service;  
37 -  
38 - /**  
39 - * 新增路段信息  
40 - *  
41 - * @param map:<bsectionVector:折线百度坐标集合;dbType:圆坐标类型;descriptions:描述与说明;destroy:是否撤销;directions:方向;lineId:线路ID  
42 - *  
43 - * lineCode :线路编码;roadCoding:道路编码;sectionCode:路段编码;sectionDistance:路段长度;sectionName:路段名称;sectionTime:路段时长;  
44 - *  
45 - * sectionrouteCode:路段序号;speedLimit:路段限速>  
46 - *  
47 - * @return map<SUCCESS:成功;ERROR:异常>  
48 - */  
49 - @RequestMapping(value="sectionSave" , method = RequestMethod.POST)  
50 - public Map<String, Object> sectionSave(@RequestParam Map<String, Object> map) {  
51 - map.put("createBy", "");  
52 - map.put("updateBy", "");  
53 - return service.sectionSave(map);  
54 - }  
55 -  
56 - /**  
57 - * @Description :TODO(编辑线路走向)  
58 - *  
59 - * @param map <sectionId:路段ID; sectionJSON:路段信息>  
60 - *  
61 - * @return Map<String, Object> <SUCCESS ; ERROR>  
62 - */  
63 - @RequestMapping(value="sectionCut" , method = RequestMethod.POST)  
64 - public Map<String, Object> sectionCut(@RequestParam Map<String, Object> map) {  
65 -  
66 - map.put("updateBy", "");  
67 -  
68 - map.put("createBy", "");  
69 -  
70 - map.put("createDate", "");  
71 -  
72 - return service.sectionCut(map);  
73 -  
74 - }  
75 -  
76 - /**  
77 - * @Description :TODO(编辑线路走向保存到线路历史表)  
78 - *  
79 - * @param map <sectionId:路段ID; sectionJSON:路段信息>  
80 - *  
81 - * @return Map<String, Object> <SUCCESS ; ERROR>  
82 - */  
83 - @RequestMapping(value="sectionCutSaveLineLS" , method = RequestMethod.POST)  
84 - public Map<String, Object> sectionCutSaveLineLS(@RequestParam Map<String, Object> map) {  
85 -  
86 - map.put("updateBy", "");  
87 -  
88 - map.put("createBy", "");  
89 -  
90 - return service.sectionCutSaveLineLS(map);  
91 -  
92 - }  
93 -  
94 - /**  
95 - * @Description :TODO(编辑线路走向)  
96 - *  
97 - * @param map <sectionId:路段ID; sectionJSON:路段信息>  
98 - *  
99 - * @return Map<String, Object> <SUCCESS ; ERROR>  
100 - */  
101 - @RequestMapping(value="sectionUpdate" , method = RequestMethod.POST)  
102 - public Map<String, Object> sectionUpdate(@RequestParam Map<String, Object> map) {  
103 -  
104 - map.put("updateBy", "");  
105 -  
106 - map.put("createBy", "");  
107 -  
108 - map.put("createDate", "");  
109 -  
110 - return service.sectionUpdate(map);  
111 -  
112 - }  
113 -  
114 - /**  
115 - * @Description :TODO(编辑缓存线路走向)  
116 - */  
117 - @RequestMapping(value="sectionCacheUpdate" , method = RequestMethod.POST)  
118 - public Map<String, Object> sectionCacheUpdate(@RequestParam Map<String, Object> map) {  
119 -  
120 - map.put("updateBy", "");  
121 -  
122 - map.put("createBy", "");  
123 -  
124 - map.put("createDate", "");  
125 -  
126 - return service.sectionCacheUpdate(map);  
127 -  
128 - }  
129 -  
130 - /**  
131 - * @Description :TODO(查询路段编码)  
132 - *  
133 - * @return int <sectionCode路段编码>  
134 - */  
135 - @RequestMapping(value="getSectionCode" , method = RequestMethod.GET)  
136 - public long getSectionCode() {  
137 - return GetUIDAndCode.getSectionId();  
138 - }  
139 -  
140 - /**  
141 - * @Description :TODO(把路段截取位双路名路段)  
142 - *  
143 - * @return int <sectionCode路段编码>  
144 - */  
145 - @RequestMapping(value="doubleName" , method = RequestMethod.POST)  
146 - public Map<String, Object> doubleName(@RequestParam Map<String, Object> map) {  
147 - return service.doubleName(map);  
148 - }  
149 -  
150 -} 1 +package com.bsth.controller;
  2 +
  3 +import java.util.Map;
  4 +
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.web.bind.annotation.RequestMapping;
  7 +import org.springframework.web.bind.annotation.RequestMethod;
  8 +import org.springframework.web.bind.annotation.RequestParam;
  9 +import org.springframework.web.bind.annotation.RestController;
  10 +
  11 +import com.bsth.entity.Section;
  12 +import com.bsth.repository.SectionRepository;
  13 +import com.bsth.service.SectionService;
  14 +import com.bsth.util.GetUIDAndCode;
  15 +
  16 +/**
  17 + *
  18 + * @ClassName: SectionController(路段控制器)
  19 + *
  20 + * @Extends : BaseController
  21 + *
  22 + * @Description: TODO(路段控制层)
  23 + *
  24 + * @Author bsth@lq
  25 + *
  26 + * @Date 2016年05月03日 上午9:21:17
  27 + *
  28 + * @Version 公交调度系统BS版 0.1
  29 + *
  30 + */
  31 +
  32 +@RestController
  33 +@RequestMapping("section")
  34 +public class SectionController extends BaseController<Section, Integer> {
  35 +
  36 + @Autowired
  37 + SectionService service;
  38 +
  39 + @Autowired
  40 + SectionRepository sectionRepository;
  41 +
  42 + /**
  43 + * 新增路段信息
  44 + *
  45 + * @param map:<bsectionVector:折线百度坐标集合;dbType:圆坐标类型;descriptions:描述与说明;destroy:是否撤销;directions:方向;lineId:线路ID
  46 + *
  47 + * lineCode :线路编码;roadCoding:道路编码;sectionCode:路段编码;sectionDistance:路段长度;sectionName:路段名称;sectionTime:路段时长;
  48 + *
  49 + * sectionrouteCode:路段序号;speedLimit:路段限速>
  50 + *
  51 + * @return map<SUCCESS:成功;ERROR:异常>
  52 + */
  53 + @RequestMapping(value="sectionSave" , method = RequestMethod.POST)
  54 + public Map<String, Object> sectionSave(@RequestParam Map<String, Object> map) {
  55 + map.put("createBy", "");
  56 + map.put("updateBy", "");
  57 + return service.sectionSave(map);
  58 + }
  59 +
  60 + /**
  61 + * @Description :TODO(编辑线路走向)
  62 + *
  63 + * @param map <sectionId:路段ID; sectionJSON:路段信息>
  64 + *
  65 + * @return Map<String, Object> <SUCCESS ; ERROR>
  66 + */
  67 + @RequestMapping(value="sectionCut" , method = RequestMethod.POST)
  68 + public Map<String, Object> sectionCut(@RequestParam Map<String, Object> map) {
  69 +
  70 + map.put("updateBy", "");
  71 +
  72 + map.put("createBy", "");
  73 +
  74 + map.put("createDate", "");
  75 +
  76 + return service.sectionCut(map);
  77 +
  78 + }
  79 +
  80 + /**
  81 + * @Description :TODO(编辑线路走向保存到线路历史表)
  82 + *
  83 + * @param map <sectionId:路段ID; sectionJSON:路段信息>
  84 + *
  85 + * @return Map<String, Object> <SUCCESS ; ERROR>
  86 + */
  87 + @RequestMapping(value="sectionCutSaveLineLS" , method = RequestMethod.POST)
  88 + public Map<String, Object> sectionCutSaveLineLS(@RequestParam Map<String, Object> map) {
  89 +
  90 + map.put("updateBy", "");
  91 +
  92 + map.put("createBy", "");
  93 +
  94 + return service.sectionCutSaveLineLS(map);
  95 +
  96 + }
  97 +
  98 + /**
  99 + * @Description :TODO(编辑线路走向)
  100 + *
  101 + * @param map <sectionId:路段ID; sectionJSON:路段信息>
  102 + *
  103 + * @return Map<String, Object> <SUCCESS ; ERROR>
  104 + */
  105 + @RequestMapping(value="sectionUpdate" , method = RequestMethod.POST)
  106 + public Map<String, Object> sectionUpdate(@RequestParam Map<String, Object> map) {
  107 +
  108 + map.put("updateBy", "");
  109 +
  110 + map.put("createBy", "");
  111 +
  112 + map.put("createDate", "");
  113 +
  114 + return service.sectionUpdate(map);
  115 +
  116 + }
  117 +
  118 + /**
  119 + * @Description :TODO(编辑缓存线路走向)
  120 + */
  121 + @RequestMapping(value="sectionCacheUpdate" , method = RequestMethod.POST)
  122 + public Map<String, Object> sectionCacheUpdate(@RequestParam Map<String, Object> map) {
  123 +
  124 + map.put("updateBy", "");
  125 +
  126 + map.put("createBy", "");
  127 +
  128 + map.put("createDate", "");
  129 +
  130 + return service.sectionCacheUpdate(map);
  131 +
  132 + }
  133 +
  134 + /**
  135 + * @Description :TODO(查询路段编码)
  136 + *
  137 + * @return int <sectionCode路段编码>
  138 + */
  139 + @RequestMapping(value="getSectionCode" , method = RequestMethod.GET)
  140 + public long getSectionCode() {
  141 + return sectionRepository.sectionMaxId() + 1;
  142 + }
  143 +
  144 + /**
  145 + * @Description :TODO(把路段截取位双路名路段)
  146 + *
  147 + * @return int <sectionCode路段编码>
  148 + */
  149 + @RequestMapping(value="doubleName" , method = RequestMethod.POST)
  150 + public Map<String, Object> doubleName(@RequestParam Map<String, Object> map) {
  151 + return service.doubleName(map);
  152 + }
  153 +
  154 +}
src/main/java/com/bsth/controller/StationController.java
1 -package com.bsth.controller;  
2 -  
3 -import com.bsth.entity.Station;  
4 -import com.bsth.service.StationService;  
5 -import com.bsth.util.GetUIDAndCode;  
6 -import org.slf4j.Logger;  
7 -import org.slf4j.LoggerFactory;  
8 -import org.springframework.beans.factory.annotation.Autowired;  
9 -import org.springframework.web.bind.annotation.RequestMapping;  
10 -import org.springframework.web.bind.annotation.RequestMethod;  
11 -import org.springframework.web.bind.annotation.RequestParam;  
12 -import org.springframework.web.bind.annotation.RestController;  
13 -  
14 -import java.util.Map;  
15 -  
16 -/**  
17 - *  
18 - * @ClassName: StationController(站点控制器)  
19 - *  
20 - * @Extends : BaseController  
21 - *  
22 - * @Description: TODO(站点控制层)  
23 - *  
24 - * @Author bsth@lq  
25 - *  
26 - * @Date 2016年05月03日 上午9:21:17  
27 - *  
28 - * @Version 公交调度系统BS版 0.1  
29 - *  
30 - */  
31 -  
32 -@RestController  
33 -@RequestMapping("station")  
34 -public class StationController extends BaseController<Station, Integer> {  
35 -  
36 - @Autowired  
37 - private StationService service;  
38 -  
39 - /** 日志记录器 */  
40 - private static final Logger LOGGER = LoggerFactory.getLogger(StationController.class);  
41 -  
42 - /**  
43 - * @Description :TODO(根据坐标点匹配数据库中的站点)  
44 - *  
45 - * @param map: <point:坐标点; name:站点名>  
46 - *  
47 - */  
48 - @RequestMapping(value="matchStation" , method = RequestMethod.GET)  
49 - public Map<String, Object> matchStation(@RequestParam Map<String, Object> map) {  
50 - return service.matchStation(map);  
51 - }  
52 -  
53 - /**  
54 - * @Description :TODO(系统规划保存数据)  
55 - *  
56 - * @param map <stationJSON:站点信息;  
57 - *  
58 - * - - - - - - sectionJSON:路段信息;  
59 - *  
60 - * - - - - - - dbType:坐标类型;  
61 - *  
62 - * - - - - - - destroy:是否撤销;  
63 - *  
64 - * - - - - - - directions:方向;  
65 - *  
66 - * - - - - - - lineId:线路ID;  
67 - *  
68 - * - - - - - - radius:圆半径  
69 - *  
70 - * - - - - - - shapesType:图形类型  
71 - *  
72 - * - - - - - - speedLimit:限速>  
73 - *  
74 - * @return Map<String, Object> <SUCCESS ; ERROR>  
75 - */  
76 - @RequestMapping(value="collectionSave" , method = RequestMethod.POST)  
77 - public Map<String, Object> collectionSave(@RequestParam Map<String, Object> map) {  
78 - return service.systemSaveStations(map);  
79 - }  
80 -  
81 - @RequestMapping(value="manualSave" , method = RequestMethod.POST)  
82 - public Map<String, Object> manualSave(@RequestParam Map<String, Object> map) {  
83 - return service.manualSave(map);  
84 - }  
85 -  
86 - @RequestMapping(value="cacheSave" , method = RequestMethod.POST)  
87 - public Map<String, Object> cacheSave(@RequestParam Map<String, Object> map) {  
88 - return service.cacheSave(map);  
89 - }  
90 -  
91 - /**  
92 - * @Description :TODO(新增站点保存)  
93 - *  
94 - * @param map <bJwpoints:中心点百度坐标;bPolygonGrid:多边形图形百度坐标;dbType:原坐标类型;  
95 - *  
96 - * descriptions:说明;destroy:是否撤销;directions:方向;distances:到站距离;gJwpoints:中心点WGS坐标;  
97 - *  
98 - * gPolygonGrid:多边形图形WGS坐标;lineId:线路ID;radius:圆半径;roadCoding:道路编码;shapesType:图形类型;  
99 - *  
100 - * stationCod:站点编码;stationMark:站点类型;stationName:站点名称;stationRouteCode:站点序号;toTime:到站时间  
101 - *  
102 - * versions:版本号;x:城建坐标x;y:城建坐标y>  
103 - *  
104 - * @return Map<String, Object> <SUCCESS ; ERROR>  
105 - */  
106 - @RequestMapping(value="stationSave" , method = RequestMethod.POST)  
107 - public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) {  
108 - map.put("createBy", "");  
109 - map.put("updateBy", "");  
110 - return service.stationSaveMap(map);  
111 - }  
112 -  
113 - /**  
114 - * @Description :TODO(更新站点保存)  
115 - *  
116 - * @param map <bJwpoints:中心点百度坐标;bPolygonGrid:多边形图形百度坐标;dbType:原坐标类型;  
117 - *  
118 - * descriptions:说明;destroy:是否撤销;directions:方向;distances:到站距离;gJwpoints:中心点WGS坐标;  
119 - *  
120 - * gPolygonGrid:多边形图形WGS坐标;lineId:线路ID;radius:圆半径;roadCoding:道路编码;shapesType:图形类型;  
121 - *  
122 - * stationCod:站点编码;stationMark:站点类型;stationName:站点名称;stationRouteCode:站点序号;toTime:到站时间  
123 - *  
124 - * versions:版本号;x:城建坐标x;y:城建坐标y>  
125 - *  
126 - * @return Map<String, Object> <SUCCESS ; ERROR>  
127 - */  
128 - @RequestMapping(value="stationUpdate" , method = RequestMethod.POST)  
129 - public Map<String, Object> stationUpdate(@RequestParam Map<String, Object> map) {  
130 - map.put("updateBy", ""); //??  
131 - return service.stationUpdate(map);  
132 - }  
133 -  
134 - /**  
135 - * @Description :TODO(更新缓存站点保存)  
136 - *  
137 - * @param map <bJwpoints:中心点百度坐标;bPolygonGrid:多边形图形百度坐标;dbType:原坐标类型;  
138 - *  
139 - * descriptions:说明;destroy:是否撤销;directions:方向;distances:到站距离;gJwpoints:中心点WGS坐标;  
140 - *  
141 - * gPolygonGrid:多边形图形WGS坐标;lineId:线路ID;radius:圆半径;roadCoding:道路编码;shapesType:图形类型;  
142 - *  
143 - * stationCod:站点编码;stationMark:站点类型;stationName:站点名称;stationRouteCode:站点序号;toTime:到站时间  
144 - *  
145 - * versions:版本号;x:城建坐标x;y:城建坐标y>  
146 - *  
147 - * @return Map<String, Object> <SUCCESS ; ERROR>  
148 - */  
149 - @RequestMapping(value="stationCacheUpdate" , method = RequestMethod.POST)  
150 - public Map<String, Object> stationCacheUpdate(@RequestParam Map<String, Object> map) {  
151 - map.put("updateBy", "");  
152 - return service.stationCacheUpdate(map);  
153 - }  
154 - /**  
155 - * @Description :TODO(更新内部编码)  
156 - * @param stationCount,sectionCount 更新数  
157 - */  
158 - @RequestMapping(value="updateStationAndSectionCode" , method = RequestMethod.GET)  
159 - public int updateStationAndSectionCode(@RequestParam Integer stationCount, Integer sectionCount) {  
160 - System.out.println(stationCount+" _ "+ sectionCount );  
161 - for(int i = 0; i < stationCount; i++) {  
162 -// System.out.println(i);  
163 - GetUIDAndCode.getStationId();  
164 - }  
165 - for(int j = 0; j < sectionCount; j++) {  
166 -// System.out.println(j);  
167 - GetUIDAndCode.getSectionId();  
168 - }  
169 - return 1;  
170 - }  
171 - /**  
172 - * @Description :TODO(查询站点编码)  
173 - *  
174 - * @return int <stationCode站点编码>  
175 - */  
176 - @RequestMapping(value="getStationCode" , method = RequestMethod.GET)  
177 - public long getStationCode() {  
178 - return GetUIDAndCode.getStationId();  
179 -  
180 - }  
181 - /**  
182 - * @Description :TODO(查询站点编码)  
183 - *  
184 - * @return int <stationCode站点编码>  
185 - */  
186 - @RequestMapping(value="stationCacheSave" , method = RequestMethod.POST)  
187 - public Map<String, Object> stationCacheSave(@RequestParam Map<String, Object> map) {  
188 - map.put("createBy", "");  
189 - map.put("updateBy", "");  
190 - return service.stationCacheSave(map);  
191 - }  
192 -} 1 +package com.bsth.controller;
  2 +
  3 +import com.bsth.entity.Station;
  4 +import com.bsth.repository.StationRepository;
  5 +import com.bsth.service.StationService;
  6 +import com.bsth.util.GetUIDAndCode;
  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.Map;
  16 +
  17 +/**
  18 + *
  19 + * @ClassName: StationController(站点控制器)
  20 + *
  21 + * @Extends : BaseController
  22 + *
  23 + * @Description: TODO(站点控制层)
  24 + *
  25 + * @Author bsth@lq
  26 + *
  27 + * @Date 2016年05月03日 上午9:21:17
  28 + *
  29 + * @Version 公交调度系统BS版 0.1
  30 + *
  31 + */
  32 +
  33 +@RestController
  34 +@RequestMapping("station")
  35 +public class StationController extends BaseController<Station, Integer> {
  36 +
  37 + @Autowired
  38 + private StationService service;
  39 +
  40 + @Autowired
  41 + StationRepository stationRepository;
  42 +
  43 + /** 日志记录器 */
  44 + private static final Logger LOGGER = LoggerFactory.getLogger(StationController.class);
  45 +
  46 + /**
  47 + * @Description :TODO(根据坐标点匹配数据库中的站点)
  48 + *
  49 + * @param map: <point:坐标点; name:站点名>
  50 + *
  51 + */
  52 + @RequestMapping(value="matchStation" , method = RequestMethod.GET)
  53 + public Map<String, Object> matchStation(@RequestParam Map<String, Object> map) {
  54 + return service.matchStation(map);
  55 + }
  56 +
  57 + /**
  58 + * @Description :TODO(系统规划保存数据)
  59 + *
  60 + * @param map <stationJSON:站点信息;
  61 + *
  62 + * - - - - - - sectionJSON:路段信息;
  63 + *
  64 + * - - - - - - dbType:坐标类型;
  65 + *
  66 + * - - - - - - destroy:是否撤销;
  67 + *
  68 + * - - - - - - directions:方向;
  69 + *
  70 + * - - - - - - lineId:线路ID;
  71 + *
  72 + * - - - - - - radius:圆半径
  73 + *
  74 + * - - - - - - shapesType:图形类型
  75 + *
  76 + * - - - - - - speedLimit:限速>
  77 + *
  78 + * @return Map<String, Object> <SUCCESS ; ERROR>
  79 + */
  80 + @RequestMapping(value="collectionSave" , method = RequestMethod.POST)
  81 + public Map<String, Object> collectionSave(@RequestParam Map<String, Object> map) {
  82 + return service.systemSaveStations(map);
  83 + }
  84 +
  85 + @RequestMapping(value="manualSave" , method = RequestMethod.POST)
  86 + public Map<String, Object> manualSave(@RequestParam Map<String, Object> map) {
  87 + return service.manualSave(map);
  88 + }
  89 +
  90 + @RequestMapping(value="cacheSave" , method = RequestMethod.POST)
  91 + public Map<String, Object> cacheSave(@RequestParam Map<String, Object> map) {
  92 + return service.cacheSave(map);
  93 + }
  94 +
  95 + /**
  96 + * @Description :TODO(新增站点保存)
  97 + *
  98 + * @param map <bJwpoints:中心点百度坐标;bPolygonGrid:多边形图形百度坐标;dbType:原坐标类型;
  99 + *
  100 + * descriptions:说明;destroy:是否撤销;directions:方向;distances:到站距离;gJwpoints:中心点WGS坐标;
  101 + *
  102 + * gPolygonGrid:多边形图形WGS坐标;lineId:线路ID;radius:圆半径;roadCoding:道路编码;shapesType:图形类型;
  103 + *
  104 + * stationCod:站点编码;stationMark:站点类型;stationName:站点名称;stationRouteCode:站点序号;toTime:到站时间
  105 + *
  106 + * versions:版本号;x:城建坐标x;y:城建坐标y>
  107 + *
  108 + * @return Map<String, Object> <SUCCESS ; ERROR>
  109 + */
  110 + @RequestMapping(value="stationSave" , method = RequestMethod.POST)
  111 + public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) {
  112 + map.put("createBy", "");
  113 + map.put("updateBy", "");
  114 + return service.stationSaveMap(map);
  115 + }
  116 +
  117 + /**
  118 + * @Description :TODO(更新站点保存)
  119 + *
  120 + * @param map <bJwpoints:中心点百度坐标;bPolygonGrid:多边形图形百度坐标;dbType:原坐标类型;
  121 + *
  122 + * descriptions:说明;destroy:是否撤销;directions:方向;distances:到站距离;gJwpoints:中心点WGS坐标;
  123 + *
  124 + * gPolygonGrid:多边形图形WGS坐标;lineId:线路ID;radius:圆半径;roadCoding:道路编码;shapesType:图形类型;
  125 + *
  126 + * stationCod:站点编码;stationMark:站点类型;stationName:站点名称;stationRouteCode:站点序号;toTime:到站时间
  127 + *
  128 + * versions:版本号;x:城建坐标x;y:城建坐标y>
  129 + *
  130 + * @return Map<String, Object> <SUCCESS ; ERROR>
  131 + */
  132 + @RequestMapping(value="stationUpdate" , method = RequestMethod.POST)
  133 + public Map<String, Object> stationUpdate(@RequestParam Map<String, Object> map) {
  134 + map.put("updateBy", ""); //??
  135 + return service.stationUpdate(map);
  136 + }
  137 +
  138 + /**
  139 + * @Description :TODO(更新缓存站点保存)
  140 + *
  141 + * @param map <bJwpoints:中心点百度坐标;bPolygonGrid:多边形图形百度坐标;dbType:原坐标类型;
  142 + *
  143 + * descriptions:说明;destroy:是否撤销;directions:方向;distances:到站距离;gJwpoints:中心点WGS坐标;
  144 + *
  145 + * gPolygonGrid:多边形图形WGS坐标;lineId:线路ID;radius:圆半径;roadCoding:道路编码;shapesType:图形类型;
  146 + *
  147 + * stationCod:站点编码;stationMark:站点类型;stationName:站点名称;stationRouteCode:站点序号;toTime:到站时间
  148 + *
  149 + * versions:版本号;x:城建坐标x;y:城建坐标y>
  150 + *
  151 + * @return Map<String, Object> <SUCCESS ; ERROR>
  152 + */
  153 + @RequestMapping(value="stationCacheUpdate" , method = RequestMethod.POST)
  154 + public Map<String, Object> stationCacheUpdate(@RequestParam Map<String, Object> map) {
  155 + map.put("updateBy", "");
  156 + return service.stationCacheUpdate(map);
  157 + }
  158 + /**
  159 + * @Description :TODO(更新内部编码)
  160 + * @param stationCount,sectionCount 更新数
  161 + */
  162 + @RequestMapping(value="updateStationAndSectionCode" , method = RequestMethod.GET)
  163 + public int updateStationAndSectionCode(@RequestParam Integer stationCount, Integer sectionCount) {
  164 +// System.out.println(stationCount+" _ "+ sectionCount );
  165 +// for(int i = 0; i < stationCount; i++) {
  166 +//// System.out.println(i);
  167 +// stationRepository.stationMaxId() + 1;
  168 +// }
  169 +// for(int j = 0; j < sectionCount; j++) {
  170 +//// System.out.println(j);
  171 +// sectionRepository.sectionMaxId() + 1;
  172 +// }
  173 + return 1;
  174 + }
  175 + /**
  176 + * @Description :TODO(查询站点编码)
  177 + *
  178 + * @return int <stationCode站点编码>
  179 + */
  180 + @RequestMapping(value="getStationCode" , method = RequestMethod.GET)
  181 + public long getStationCode() {
  182 + return stationRepository.stationMaxId() + 1;
  183 +
  184 + }
  185 + /**
  186 + * @Description :TODO(查询站点编码)
  187 + *
  188 + * @return int <stationCode站点编码>
  189 + */
  190 + @RequestMapping(value="stationCacheSave" , method = RequestMethod.POST)
  191 + public Map<String, Object> stationCacheSave(@RequestParam Map<String, Object> map) {
  192 + map.put("createBy", "");
  193 + map.put("updateBy", "");
  194 + return service.stationCacheSave(map);
  195 + }
  196 +}
src/main/java/com/bsth/repository/StationRouteRepository.java
1 -package com.bsth.repository;  
2 -  
3 -import java.util.List;  
4 -import java.util.Map;  
5 -  
6 -import org.springframework.data.domain.Page;  
7 -import org.springframework.data.domain.Pageable;  
8 -import org.springframework.data.domain.Sort;  
9 -import org.springframework.data.jpa.domain.Specification;  
10 -import org.springframework.data.jpa.repository.EntityGraph;  
11 -import org.springframework.data.jpa.repository.Modifying;  
12 -import org.springframework.data.jpa.repository.Query;  
13 -import org.springframework.stereotype.Repository;  
14 -import org.springframework.transaction.annotation.Transactional;  
15 -  
16 -import com.bsth.entity.Line;  
17 -import com.bsth.entity.StationRoute;  
18 -  
19 -/**  
20 - *  
21 - * @Interface: StationRouteRepository(站点路由Repository数据持久层接口)  
22 - *  
23 - * @Extends : BaseRepository  
24 - *  
25 - * @Description: TODO(站点路由Repository数据持久层接口)  
26 - *  
27 - * @Author bsth@lq  
28 - *  
29 - * @Date 2016年5月03日 上午9:21:17  
30 - *  
31 - * @Version 公交调度系统BS版 0.1  
32 - *  
33 - */  
34 -  
35 -@Repository  
36 -public interface StationRouteRepository extends BaseRepository<StationRoute, Integer> {  
37 -  
38 - @Query(value = "SELECT a.`stationRoute.id`," +  
39 - "a.`stationRoute.line`," +  
40 - "a.`stationRoute.station`," +  
41 - "a.`stationRoute.stationName`," +  
42 - "a.`stationRoute.stationRouteCode`," +  
43 - "a.`stationRoute.lineCode`," +  
44 - "a.`stationRoute.stationMark`," +  
45 - "a.`stationRoute.outStationNmber`," +  
46 - "a.`stationRoute.directions`," +  
47 - "a.`stationRoute.distances`," +  
48 - "a.`stationRoute.toTime`," +  
49 - "a.`stationRoute.firstTime`," +  
50 - "a.`stationRoute.endTime`," +  
51 - "a.`stationRoute.descriptions`," +  
52 - "a.`stationRoute.versions`," +  
53 - "b.id AS 'station.id'," +  
54 - "b.station_cod AS 'station.stationCod'," +  
55 - "b.station_name AS 'station.stationName'," +  
56 - "b.road_coding AS 'station.roadCoding'," +  
57 - "b.db_type AS 'station.dbType'," +  
58 - "b.b_jwpoints AS 'station.bJwpoints'," +  
59 - "b.g_lonx AS 'station.gLonx'," +  
60 - "b.g_lonx AS 'station.gLaty'," +  
61 - "b.x AS 'station.x'," +  
62 - "b.y AS 'station.y'," +  
63 - "b.shapes_type AS 'station.shapesType'," +  
64 - "b.radius AS 'station.radius'," +  
65 - "ST_AsText(b.g_polygon_grid) AS 'station.gPolygonGrid'," +  
66 - "ST_AsText(b.b_polygon_grid) AS 'station.bPolygonGrid'," +  
67 - "b.destroy AS 'station.destroy'," +  
68 - "b.versions AS 'station.versions'," +  
69 - "b.descriptions AS 'station.descriptions', " +  
70 - "a.`stationRoute.industryCode` " +  
71 - " FROM (" +  
72 - "SELECT r.id AS 'stationRoute.id'," +  
73 - " r.line AS 'stationRoute.line'," +  
74 - "r.station AS 'stationRoute.station'," +  
75 - "r.station_name AS 'stationRoute.stationName'," +  
76 - "r.station_route_code as 'stationRoute.stationRouteCode'," +  
77 - "r.line_code AS 'stationRoute.lineCode'," +  
78 - "r.station_mark AS 'stationRoute.stationMark'," +  
79 - "r.out_station_nmber AS 'stationRoute.outStationNmber'," +  
80 - "r.directions AS 'stationRoute.directions'," +  
81 - "r.distances AS 'stationRoute.distances'," +  
82 - "r.to_time AS 'stationRoute.toTime'," +  
83 - "r.first_time AS 'stationRoute.firstTime'," +  
84 - "r.end_time AS 'stationRoute.endTime'," +  
85 - "r.descriptions AS 'stationRoute.descriptions'," +  
86 - "r.versions AS 'stationRoute.versions', " +  
87 - "r.industry_code AS 'stationRoute.industryCode' " +  
88 - " FROM bsth_c_stationroute r WHERE r.line = ?1 and r.directions = ?2 and r.destroy=0) a " +  
89 - "LEFT JOIN bsth_c_station b " +  
90 - "ON a.`stationRoute.station` = b.id ORDER BY a.`stationRoute.stationRouteCode` ASC", nativeQuery=true)  
91 - List<Object[]> findPoints(int line,int directions);  
92 -  
93 - @Query("select r from StationRoute r where r.line.id=?1 and r.destroy=0 order by r.directions ASC ,r.stationRouteCode ASC")  
94 - // @Query(value = "SELECT * from bsth_c_stationroute line = ?1 and destroy=0 bsth_c_station ORDER BY directions ASC, stationRouteCode ASC", nativeQuery=true)  
95 - List<StationRoute> findStationExport(int line);  
96 -  
97 - /**  
98 - * @Description :TODO(查询线路某方向下的站点序号与类型)  
99 - *  
100 - * @param map <lineId:线路ID; direction:方向;stationRouteCode:站点编码>  
101 - *  
102 - * @return List<Map<String, Object>>  
103 - */  
104 - @Query(value = "select t.station_route_code,t.station_mark from bsth_c_stationroute t where " +  
105 - " t.station_route_code =(" +  
106 - "select MAX(station_route_code) as stationRouteCode from bsth_c_stationroute r WHERE " +  
107 - "r.line=?1 and r.directions =?2 and station_route_code< ?3 and r.destroy = 0 ) and t.line=?1 and t.directions = ?2 AND t.destroy = 0", nativeQuery=true)  
108 - List<Object[]> findUpStationRouteCode(Integer lineId,Integer direction,Integer stationRouteCode);  
109 -  
110 - /**  
111 - * @Description :TODO(查询下个站点)  
112 - *  
113 - * @param map <lineId:线路ID; direction:方向;stationRouteCode:站点编码>  
114 - *  
115 - * @return List<Map<String, Object>>  
116 - */  
117 - @Query(value = "SELECT a.stationRouteLine," +  
118 - " a.stationRouteStation," +  
119 - " a.stationRouteCode," +  
120 - " a.stationRouteLIneCode," +  
121 - " a.stationRouteStationMark," +  
122 - " a.stationOutStationNmber," +  
123 - " a.stationRoutedirections," +  
124 - " a.stationRouteDistances," +  
125 - " a.stationRouteToTime," +  
126 - " a.staitonRouteFirstTime," +  
127 - " a.stationRouteEndTime," +  
128 - " a.stationRouteDescriptions," +  
129 - " a.stationRouteDestroy," +  
130 - " a.stationRouteVersions," +  
131 - " a.stationRouteCreateBy," +  
132 - " a.stationRouteCreateDate," +  
133 - " a.stationRouteUpdateBy," +  
134 - " a.stationRouteUpdateDate," +  
135 - " b.id AS stationId," +  
136 - " b.station_cod AS stationCode," +  
137 - " a.stationRouteName," +  
138 - " b.road_coding AS stationRoadCoding," +  
139 - " b.db_type AS stationDbType," +  
140 - " b.b_jwpoints AS stationJwpoints," +  
141 - " b.g_lonx AS stationGlonx," +  
142 - " b.g_laty AS stationGlaty," +  
143 - " b.x AS stationX," +  
144 - " b.y AS stationY," +  
145 - " ST_AsText(b.b_polygon_grid) as stationBPolyonGrid," +  
146 - " ST_AsText(b.g_polygon_grid) AS stationGPloyonGrid, " +  
147 - " b.destroy AS stationDestroy," +  
148 - " b.radius AS stationRadius," +  
149 - " b.shapes_type AS stationShapesType," +  
150 - " b.versions AS stationVersions," +  
151 - " b.descriptions AS sttationDescriptions," +  
152 - " b.create_by AS stationCreateBy," +  
153 - " b.create_date AS stationCreateDate," +  
154 - " b.update_by AS stationUpdateBy," +  
155 - " b.update_date AS stationUpdateDate," +  
156 - " a.stationRouteId, " +  
157 - " b.station_name as zdmc, " +  
158 - " a.industryCode"+  
159 - " FROM " +  
160 - "( SELECT s.id AS stationRouteId," +  
161 - " s.line AS stationRouteLine," +  
162 - " s.station as stationRouteStation," +  
163 - " s.station_name AS stationRouteName," +  
164 - " s.station_route_code as stationRouteCode," +  
165 - " s.industry_code as industryCode," +  
166 - " s.line_code AS stationRouteLIneCode," +  
167 - " s.station_mark AS stationRouteStationMark," +  
168 - " s.out_station_nmber AS stationOutStationNmber," +  
169 - " s.directions AS stationRoutedirections," +  
170 - " s.distances AS stationRouteDistances," +  
171 - " s.to_time AS stationRouteToTime," +  
172 - " s.first_time AS staitonRouteFirstTime," +  
173 - " s.end_time AS stationRouteEndTime," +  
174 - " s.descriptions AS stationRouteDescriptions," +  
175 - " s.destroy AS stationRouteDestroy," +  
176 - " s.versions AS stationRouteVersions," +  
177 - " s.create_by AS stationRouteCreateBy," +  
178 - " s.create_date AS stationRouteCreateDate," +  
179 - " s.update_by AS stationRouteUpdateBy," +  
180 - " s.update_date AS stationRouteUpdateDate FROM bsth_c_stationroute s WHERE s.station_route_code =(" +  
181 - "select MIN(station_route_code) as stationRouteCode from bsth_c_stationroute r WHERE " +  
182 - "r.line=?1 and r.directions =?2 and station_route_code > ?3 and r.destroy = 0 ) and s.line=?1 and s.directions = ?2 AND s.destroy = 0) a " +  
183 - " LEFT JOIN bsth_c_station b ON a.stationRouteStation = b.id", nativeQuery=true)  
184 - List<Object[]> findDownStationRoute(Integer id,Integer direction,Integer stationRouteCode);  
185 -  
186 - /**  
187 - * @Description :TODO(站点中心点坐标查询)  
188 - *  
189 - * @param map <lineId:线路ID; direction:方向>  
190 - *  
191 - * @return List<Object[]>  
192 - */  
193 - /*@Query(value = "SELECT s.b_jwpoints,s.station_name FROM (" +  
194 - "SELECT b.station FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " +  
195 - "LEFT JOIN bsth_c_station s on r.station = s.id", nativeQuery=true)*/  
196 - @Query(value = "SELECT s.b_jwpoints,r.station_name,r.station_route_code FROM (" +  
197 - "SELECT b.station,b.station_route_code,b.station_name FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " +  
198 - "LEFT JOIN bsth_c_station s on r.station = s.id order by r.station_route_code asc", nativeQuery=true)  
199 - List<Object[]> getSelectStationRouteCenterPoints(Integer lineId,Integer direction);  
200 -  
201 - /**  
202 - * @Description :TODO(撤销站点)  
203 - *  
204 - * @param map <lineId:线路ID; destroy:是否撤销(0:否;1:是)>  
205 - *  
206 - */  
207 - @Transactional  
208 - @Modifying  
209 - @Query(value="UPDATE bsth_c_stationroute SET " +  
210 - "destroy = ?2 WHERE id = ?1", nativeQuery=true)  
211 - void stationRouteIsDestroyUpd(Integer stationRouteId, Integer destroy);  
212 -  
213 -  
214 - /**  
215 - * @Description : TODO(根据线路ID生成行单)  
216 - *  
217 - * @param lineId:线路ID  
218 - *  
219 - * @return List<Object[]>:{[0]:g_lonx(GPS经度);[1]:g_laty(GPS纬度);[2]:b_jwpoints(百度经纬度坐标)  
220 - *  
221 - * [3]:station_mark(站点类型);[4]:station_route_code(站点序号);[5]:station_cod(站点编码);  
222 - *  
223 - * [6]:distances(站点距离);[7]:station_name(站点名称);[8]:directions(方向)}  
224 - */  
225 - @Query(value = "SELECT * FROM ("+  
226 - "SELECT b.g_lonx," +  
227 - "b.g_laty,b.b_jwpoints," +  
228 - "a.station_mark," +  
229 - "a.station_route_code," +  
230 - "b.station_cod," +  
231 - "a.distances,"+  
232 - "a.station_name," +  
233 - "a.directions FROM (SELECT " +  
234 - "s.station_mark," +  
235 - "s.station_route_code," +  
236 - "s.directions," +  
237 - "s.distances,"+  
238 - "s.station_name,"+  
239 - "s.station FROM bsth_c_stationroute s where s.line = ?1 and s.destroy=0) a " +  
240 - "LEFT JOIN bsth_c_station b " +  
241 - " on a.station = b.id ORDER BY a.directions ASC ) k ORDER BY k.directions,k.station_route_code ASC", nativeQuery=true)  
242 - List<Object[]> usingSingle(Integer lineId);  
243 -  
244 - /**  
245 - * @Description : TODO(根据站点路由Id查询详情)  
246 - *  
247 - * @param id:站点路由ID  
248 - *  
249 - * @return List<Object[]>  
250 - */  
251 - @Query(value = "SELECT a.stationRouteLine," +  
252 - " a.stationRouteStation," +  
253 - " a.stationRouteCode," +  
254 - " a.stationRouteLIneCode," +  
255 - " a.stationRouteStationMark," +  
256 - " a.stationOutStationNmber," +  
257 - " a.stationRoutedirections," +  
258 - " a.stationRouteDistances," +  
259 - " a.stationRouteToTime," +  
260 - " a.staitonRouteFirstTime," +  
261 - " a.stationRouteEndTime," +  
262 - " a.stationRouteDescriptions," +  
263 - " a.stationRouteDestroy," +  
264 - " a.stationRouteVersions," +  
265 - " a.stationRouteCreateBy," +  
266 - " a.stationRouteCreateDate," +  
267 - " a.stationRouteUpdateBy," +  
268 - " a.stationRouteUpdateDate," +  
269 - " b.id AS stationId," +  
270 - " b.station_cod AS stationCode," +  
271 - " a.stationRouteName," +  
272 - " b.road_coding AS stationRoadCoding," +  
273 - " b.db_type AS stationDbType," +  
274 - " b.b_jwpoints AS stationJwpoints," +  
275 - " b.g_lonx AS stationGlonx," +  
276 - " b.g_laty AS stationGlaty," +  
277 - " b.x AS stationX," +  
278 - " b.y AS stationY," +  
279 - " ST_AsText(b.b_polygon_grid) as stationBPolyonGrid," +  
280 - " ST_AsText(b.g_polygon_grid) AS stationGPloyonGrid, " +  
281 - " b.destroy AS stationDestroy," +  
282 - " b.radius AS stationRadius," +  
283 - " b.shapes_type AS stationShapesType," +  
284 - " b.versions AS stationVersions," +  
285 - " b.descriptions AS sttationDescriptions," +  
286 - " b.create_by AS stationCreateBy," +  
287 - " b.create_date AS stationCreateDate," +  
288 - " b.update_by AS stationUpdateBy," +  
289 - " b.update_date AS stationUpdateDate," +  
290 - " a.stationRouteId,b.station_name as zdmc, " +  
291 - " a.industryCode "+  
292 - " FROM " +  
293 - "( SELECT s.id AS stationRouteId," +  
294 - " s.line AS stationRouteLine," +  
295 - " s.station as stationRouteStation," +  
296 - " s.station_name AS stationRouteName," +  
297 - " s.station_route_code as stationRouteCode," +  
298 - " s.industry_code as industryCode," +  
299 - " s.line_code AS stationRouteLIneCode," +  
300 - " s.station_mark AS stationRouteStationMark," +  
301 - " s.out_station_nmber AS stationOutStationNmber," +  
302 - " s.directions AS stationRoutedirections," +  
303 - " s.distances AS stationRouteDistances," +  
304 - " s.to_time AS stationRouteToTime," +  
305 - " s.first_time AS staitonRouteFirstTime," +  
306 - " s.end_time AS stationRouteEndTime," +  
307 - " s.descriptions AS stationRouteDescriptions," +  
308 - " s.destroy AS stationRouteDestroy," +  
309 - " s.versions AS stationRouteVersions," +  
310 - " s.create_by AS stationRouteCreateBy," +  
311 - " s.create_date AS stationRouteCreateDate," +  
312 - " s.update_by AS stationRouteUpdateBy," +  
313 - " s.update_date AS stationRouteUpdateDate FROM bsth_c_stationroute s WHERE s.id = ?1 ) a " +  
314 - " LEFT JOIN bsth_c_station b ON a.stationRouteStation = b.id", nativeQuery=true)  
315 - List<Object[]> findStationRouteInfo(Integer id);  
316 -  
317 - /**  
318 - * @Description : TODO(根据站点路由Id查询详情)  
319 - *  
320 - * @param id:站点路由ID  
321 - *  
322 - * @return List<Object[]>  
323 - */  
324 - @Query(value = "SELECT a.stationRouteLine," +  
325 - " a.stationRouteStation," +  
326 - " a.stationRouteCode," +  
327 - " a.stationRouteLIneCode," +  
328 - " a.stationRouteStationMark," +  
329 - " a.stationOutStationNmber," +  
330 - " a.stationRoutedirections," +  
331 - " a.stationRouteDistances," +  
332 - " a.stationRouteToTime," +  
333 - " a.staitonRouteFirstTime," +  
334 - " a.stationRouteEndTime," +  
335 - " a.stationRouteDescriptions," +  
336 - " a.stationRouteDestroy," +  
337 - " a.stationRouteVersions," +  
338 - " a.stationRouteCreateBy," +  
339 - " a.stationRouteCreateDate," +  
340 - " a.stationRouteUpdateBy," +  
341 - " a.stationRouteUpdateDate," +  
342 - " b.id AS stationId," +  
343 - " b.station_cod AS stationCode," +  
344 - " a.stationRouteName," +  
345 - " b.road_coding AS stationRoadCoding," +  
346 - " b.db_type AS stationDbType," +  
347 - " b.b_jwpoints AS stationJwpoints," +  
348 - " b.g_lonx AS stationGlonx," +  
349 - " b.g_laty AS stationGlaty," +  
350 - " b.x AS stationX," +  
351 - " b.y AS stationY," +  
352 - " ST_AsText(b.b_polygon_grid) as stationBPolyonGrid," +  
353 - " ST_AsText(b.g_polygon_grid) AS stationGPloyonGrid, " +  
354 - " b.destroy AS stationDestroy," +  
355 - " b.radius AS stationRadius," +  
356 - " b.shapes_type AS stationShapesType," +  
357 - " b.versions AS stationVersions," +  
358 - " b.descriptions AS sttationDescriptions," +  
359 - " b.create_by AS stationCreateBy," +  
360 - " b.create_date AS stationCreateDate," +  
361 - " b.update_by AS stationUpdateBy," +  
362 - " b.update_date AS stationUpdateDate," +  
363 - " a.stationRouteId," +  
364 - "b.station_name as zdmc, "+  
365 - "a.industryCode "+  
366 - " FROM ( SELECT s.id AS stationRouteId," +  
367 - " s.line AS stationRouteLine," +  
368 - " s.station as stationRouteStation," +  
369 - " s.station_name AS stationRouteName," +  
370 - " s.station_route_code as stationRouteCode," +  
371 - " s.industry_code as industryCode," +  
372 - " s.line_code AS stationRouteLIneCode," +  
373 - " s.station_mark AS stationRouteStationMark," +  
374 - " s.out_station_nmber AS stationOutStationNmber," +  
375 - " s.directions AS stationRoutedirections," +  
376 - " s.distances AS stationRouteDistances," +  
377 - " s.to_time AS stationRouteToTime," +  
378 - " s.first_time AS staitonRouteFirstTime," +  
379 - " s.end_time AS stationRouteEndTime," +  
380 - " s.descriptions AS stationRouteDescriptions," +  
381 - " s.destroy AS stationRouteDestroy," +  
382 - " s.versions AS stationRouteVersions," +  
383 - " s.create_by AS stationRouteCreateBy," +  
384 - " s.create_date AS stationRouteCreateDate," +  
385 - " s.update_by AS stationRouteUpdateBy," +  
386 - " s.update_date AS stationRouteUpdateDate FROM bsth_c_stationroute s WHERE s.line = ?1 and s.directions = ?2 and s.destroy = 0) a " +  
387 - " LEFT JOIN bsth_c_station b ON a.stationRouteStation = b.id order by a.stationRouteCode", nativeQuery=true)  
388 - List<Object[]> getStationRouteList(Integer lineId, Integer dir);  
389 -  
390 - List<StationRoute> findByLine(Line line);  
391 -  
392 - @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)  
393 - @Query("select s from StationRoute s where s.destroy=0")  
394 - List<StationRoute> findAllEffective();  
395 -  
396 - @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)  
397 - @Override  
398 - Page<StationRoute> findAll(Specification<StationRoute> spec, Pageable pageable);  
399 -  
400 - @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)  
401 - @Override  
402 - List<StationRoute> findAll(Specification<StationRoute> spec);  
403 -  
404 - @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)  
405 - @Override  
406 - List<StationRoute> findAll(Specification<StationRoute> spec, Sort sort);  
407 -  
408 - @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)  
409 - @Override  
410 - @Query(value = "select r from StationRoute r where r.destroy=0")  
411 - List<StationRoute> findAll();  
412 -  
413 - @Query("select new map(sr.station.id as stationid, sr.stationName as stationname) from StationRoute sr where sr.line.id=?1 and sr.directions=?2")  
414 - List<Map<String, Object>> findStations(Integer xlid, Integer xldir);  
415 -  
416 - @Query("select r from StationRoute r where r.lineCode=?1 and r.directions=?2 and r.destroy=0 order by r.stationRouteCode")  
417 - List<StationRoute> findByLine(String lineCode, int updown);  
418 -  
419 - @Query("select r from StationRoute r where r.line.id=?1 and r.directions=?2 and r.destroy=0 order by r.stationRouteCode")  
420 - List<StationRoute> findByLine(Integer lineId, Integer dir);  
421 -  
422 - @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)  
423 - @Query("select s from StationRoute s where s.destroy=0 and s.lineCode=?1")  
424 - List<StationRoute> findByLineCode(String lineCode);  
425 -  
426 - @Query("SELECT new map(" +  
427 - "lineCode as lineCode,directions as directions,stationName as stationName,stationCode as stationCode," +  
428 - "line.linePlayType as linePlayType,s.stationMark as stationMark) " +  
429 - "FROM " +  
430 - "StationRoute s " +  
431 - "WHERE " +  
432 - "s.destroy = 0 " +  
433 - "and s.lineCode in(select lineCode from Line where inUse = 1) " +  
434 - "ORDER BY " +  
435 - "lineCode,directions,stationRouteCode")  
436 - List<Map<String, String>> findLineWithYgcAndInuse();  
437 -  
438 - @Query("SELECT new map(" +  
439 - "lineCode as lineCode,directions as directions,stationName as stationName,stationCode as stationCode," +  
440 - "line.linePlayType as linePlayType,s.stationMark as stationMark) " +  
441 - "FROM " +  
442 - "StationRoute s " +  
443 - "WHERE " +  
444 - "s.destroy = 0 " +  
445 - "ORDER BY " +  
446 - "lineCode,directions,stationRouteCode")  
447 - List<Map<String, String>> findAllLineWithYgc();  
448 -  
449 - @Query("SELECT new map(" +  
450 - "lineCode as lineCode,directions as directions,stationName as stationName,stationCode as stationCode," +  
451 - "line.linePlayType as linePlayType,s.stationMark as stationMark) " +  
452 - "FROM " +  
453 - "StationRoute s " +  
454 - "WHERE " +  
455 - "s.destroy = 0 and s.lineCode = ?1 " +  
456 - "ORDER BY " +  
457 - "lineCode,directions,stationRouteCode")  
458 - List<Map<String, String>> findLineWithYgcByLine(String lineCode);  
459 -  
460 - @Modifying  
461 - @Query(value="update bsth_c_stationroute set directions = case directions when 1 then 0 when 0 then 1 end where line = ?1 ", nativeQuery=true)  
462 - void stationRouteDir(Integer line);  
463 -  
464 - @Modifying  
465 - @Query(value="update bsth_c_stationroute set distances =?2 where id = ?1 ", nativeQuery=true)  
466 - void upddis(Integer id,Double dis);  
467 -  
468 - @Modifying  
469 - @Query(value="UPDATE bsth_c_stationroute set station_route_code = (station_route_code+10) where line = ?1 and directions = ?2 and station_route_code >=?3 and destroy = 0", nativeQuery=true)  
470 - void stationUpdStationRouteCode(Integer line,Integer dir,Integer routeCod);  
471 -  
472 - /**  
473 - * 更新路线前撤销线路原有站点  
474 - *  
475 - * @param line  
476 - * @param dir  
477 - */  
478 - @Modifying  
479 - @Query(value="UPDATE bsth_c_stationroute set destroy = 1 where line = ?1 and directions = ?2", nativeQuery=true)  
480 - void stationRouteUpdDestroy(Integer line,Integer dir);  
481 -  
482 - @Modifying  
483 - @Query(value="UPDATE bsth_c_stationroute set destroy = 1 where id = ?1", nativeQuery=true)  
484 - void stationRouteIsDestroyUpdBatch(Integer ids);  
485 -  
486 - /**  
487 - *  
488 - *  
489 - * @param line  
490 - * @param dir  
491 - */  
492 - @Modifying  
493 - @Query(value="insert into (select * from bsth_c_stationroute_cache where line = ?1 and directions = ?2) bsth_c_stationroute", nativeQuery=true)  
494 - void stationRouteUpdate(Integer line,Integer dir);  
495 -  
496 - // 更具线路批量撤销  
497 - @Modifying  
498 - @Query(value="UPDATE StationRoute sr set sr.destroy = 1 where sr.line.id = ?1 and sr.lineCode = ?2")  
499 - void batchUpdate(Integer lineId, String lineCode);  
500 -  
501 - // 批量删除  
502 - @Modifying  
503 - @Query(value="delete from StationRoute sr where sr.line.id = ?1 and sr.lineCode = ?2")  
504 - void batchDelete(Integer lineId, String lineCode);  
505 -  
506 -  
507 - // 批量修改站点行业编码  
508 - @Modifying  
509 - @Query(value="update bsth_c_stationroute set industry_code =?2 where id = ?1 ", nativeQuery=true)  
510 - void updIndustryCode(Integer id,String IndustryCode);  
511 -} 1 +package com.bsth.repository;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import org.springframework.data.domain.Page;
  7 +import org.springframework.data.domain.Pageable;
  8 +import org.springframework.data.domain.Sort;
  9 +import org.springframework.data.jpa.domain.Specification;
  10 +import org.springframework.data.jpa.repository.EntityGraph;
  11 +import org.springframework.data.jpa.repository.Modifying;
  12 +import org.springframework.data.jpa.repository.Query;
  13 +import org.springframework.stereotype.Repository;
  14 +import org.springframework.transaction.annotation.Transactional;
  15 +
  16 +import com.bsth.entity.Line;
  17 +import com.bsth.entity.StationRoute;
  18 +
  19 +/**
  20 + *
  21 + * @Interface: StationRouteRepository(站点路由Repository数据持久层接口)
  22 + *
  23 + * @Extends : BaseRepository
  24 + *
  25 + * @Description: TODO(站点路由Repository数据持久层接口)
  26 + *
  27 + * @Author bsth@lq
  28 + *
  29 + * @Date 2016年5月03日 上午9:21:17
  30 + *
  31 + * @Version 公交调度系统BS版 0.1
  32 + *
  33 + */
  34 +
  35 +@Repository
  36 +public interface StationRouteRepository extends BaseRepository<StationRoute, Integer> {
  37 +
  38 + @Query(value = "SELECT a.`stationRoute.id`," +
  39 + "a.`stationRoute.line`," +
  40 + "a.`stationRoute.station`," +
  41 + "a.`stationRoute.stationName`," +
  42 + "a.`stationRoute.stationRouteCode`," +
  43 + "a.`stationRoute.lineCode`," +
  44 + "a.`stationRoute.stationMark`," +
  45 + "a.`stationRoute.outStationNmber`," +
  46 + "a.`stationRoute.directions`," +
  47 + "a.`stationRoute.distances`," +
  48 + "a.`stationRoute.toTime`," +
  49 + "a.`stationRoute.firstTime`," +
  50 + "a.`stationRoute.endTime`," +
  51 + "a.`stationRoute.descriptions`," +
  52 + "a.`stationRoute.versions`," +
  53 + "b.id AS 'station.id'," +
  54 + "b.station_cod AS 'station.stationCod'," +
  55 + "b.station_name AS 'station.stationName'," +
  56 + "b.road_coding AS 'station.roadCoding'," +
  57 + "b.db_type AS 'station.dbType'," +
  58 + "b.b_jwpoints AS 'station.bJwpoints'," +
  59 + "b.g_lonx AS 'station.gLonx'," +
  60 + "b.g_lonx AS 'station.gLaty'," +
  61 + "b.x AS 'station.x'," +
  62 + "b.y AS 'station.y'," +
  63 + "b.shapes_type AS 'station.shapesType'," +
  64 + "b.radius AS 'station.radius'," +
  65 + "ST_AsText(b.g_polygon_grid) AS 'station.gPolygonGrid'," +
  66 + "ST_AsText(b.b_polygon_grid) AS 'station.bPolygonGrid'," +
  67 + "b.destroy AS 'station.destroy'," +
  68 + "b.versions AS 'station.versions'," +
  69 + "b.descriptions AS 'station.descriptions', " +
  70 + "a.`stationRoute.industryCode` " +
  71 + " FROM (" +
  72 + "SELECT r.id AS 'stationRoute.id'," +
  73 + " r.line AS 'stationRoute.line'," +
  74 + "r.station AS 'stationRoute.station'," +
  75 + "r.station_name AS 'stationRoute.stationName'," +
  76 + "r.station_route_code as 'stationRoute.stationRouteCode'," +
  77 + "r.line_code AS 'stationRoute.lineCode'," +
  78 + "r.station_mark AS 'stationRoute.stationMark'," +
  79 + "r.out_station_nmber AS 'stationRoute.outStationNmber'," +
  80 + "r.directions AS 'stationRoute.directions'," +
  81 + "r.distances AS 'stationRoute.distances'," +
  82 + "r.to_time AS 'stationRoute.toTime'," +
  83 + "r.first_time AS 'stationRoute.firstTime'," +
  84 + "r.end_time AS 'stationRoute.endTime'," +
  85 + "r.descriptions AS 'stationRoute.descriptions'," +
  86 + "r.versions AS 'stationRoute.versions', " +
  87 + "r.industry_code AS 'stationRoute.industryCode' " +
  88 + " FROM bsth_c_stationroute r WHERE r.line = ?1 and r.directions = ?2 and r.destroy=0) a " +
  89 + "LEFT JOIN bsth_c_station b " +
  90 + "ON a.`stationRoute.station` = b.id ORDER BY a.`stationRoute.stationRouteCode` ASC", nativeQuery=true)
  91 + List<Object[]> findPoints(int line,int directions);
  92 +
  93 + @Query("select r from StationRoute r where r.line.id=?1 and r.destroy=0 order by r.directions ASC ,r.stationRouteCode ASC")
  94 + // @Query(value = "SELECT * from bsth_c_stationroute line = ?1 and destroy=0 bsth_c_station ORDER BY directions ASC, stationRouteCode ASC", nativeQuery=true)
  95 + List<StationRoute> findStationExport(int line);
  96 +
  97 + /**
  98 + * @Description :TODO(查询线路某方向下的站点序号与类型)
  99 + *
  100 + * @param map <lineId:线路ID; direction:方向;stationRouteCode:站点编码>
  101 + *
  102 + * @return List<Map<String, Object>>
  103 + */
  104 + @Query(value = "select t.station_route_code,t.station_mark from bsth_c_stationroute t where " +
  105 + " t.station_route_code =(" +
  106 + "select MAX(station_route_code) as stationRouteCode from bsth_c_stationroute r WHERE " +
  107 + "r.line=?1 and r.directions =?2 and station_route_code< ?3 and r.destroy = 0 ) and t.line=?1 and t.directions = ?2 AND t.destroy = 0", nativeQuery=true)
  108 + List<Object[]> findUpStationRouteCode(Integer lineId,Integer direction,Integer stationRouteCode);
  109 +
  110 + /**
  111 + * @param version
  112 + * @Description :TODO(查询下个站点)
  113 + *
  114 + * @param map <lineId:线路ID; direction:方向;stationRouteCode:站点编码>
  115 + *
  116 + * @return List<Map<String, Object>>
  117 + */
  118 + @Query(value = "SELECT a.stationRouteLine," +
  119 + " a.stationRouteStation," +
  120 + " a.stationRouteCode," +
  121 + " a.stationRouteLIneCode," +
  122 + " a.stationRouteStationMark," +
  123 + " a.stationOutStationNmber," +
  124 + " a.stationRoutedirections," +
  125 + " a.stationRouteDistances," +
  126 + " a.stationRouteToTime," +
  127 + " a.staitonRouteFirstTime," +
  128 + " a.stationRouteEndTime," +
  129 + " a.stationRouteDescriptions," +
  130 + " a.stationRouteDestroy," +
  131 + " a.stationRouteVersions," +
  132 + " a.stationRouteCreateBy," +
  133 + " a.stationRouteCreateDate," +
  134 + " a.stationRouteUpdateBy," +
  135 + " a.stationRouteUpdateDate," +
  136 + " b.id AS stationId," +
  137 + " b.station_cod AS stationCode," +
  138 + " a.stationRouteName," +
  139 + " b.road_coding AS stationRoadCoding," +
  140 + " b.db_type AS stationDbType," +
  141 + " b.b_jwpoints AS stationJwpoints," +
  142 + " b.g_lonx AS stationGlonx," +
  143 + " b.g_laty AS stationGlaty," +
  144 + " b.x AS stationX," +
  145 + " b.y AS stationY," +
  146 + " ST_AsText(b.b_polygon_grid) as stationBPolyonGrid," +
  147 + " ST_AsText(b.g_polygon_grid) AS stationGPloyonGrid, " +
  148 + " b.destroy AS stationDestroy," +
  149 + " b.radius AS stationRadius," +
  150 + " b.shapes_type AS stationShapesType," +
  151 + " b.versions AS stationVersions," +
  152 + " b.descriptions AS sttationDescriptions," +
  153 + " b.create_by AS stationCreateBy," +
  154 + " b.create_date AS stationCreateDate," +
  155 + " b.update_by AS stationUpdateBy," +
  156 + " b.update_date AS stationUpdateDate," +
  157 + " a.stationRouteId, " +
  158 + " b.station_name as zdmc, " +
  159 + " a.industryCode"+
  160 + " FROM " +
  161 + "( SELECT s.id AS stationRouteId," +
  162 + " s.line AS stationRouteLine," +
  163 + " s.station as stationRouteStation," +
  164 + " s.station_name AS stationRouteName," +
  165 + " s.station_route_code as stationRouteCode," +
  166 + " s.industry_code as industryCode," +
  167 + " s.line_code AS stationRouteLIneCode," +
  168 + " s.station_mark AS stationRouteStationMark," +
  169 + " s.out_station_nmber AS stationOutStationNmber," +
  170 + " s.directions AS stationRoutedirections," +
  171 + " s.distances AS stationRouteDistances," +
  172 + " s.to_time AS stationRouteToTime," +
  173 + " s.first_time AS staitonRouteFirstTime," +
  174 + " s.end_time AS stationRouteEndTime," +
  175 + " s.descriptions AS stationRouteDescriptions," +
  176 + " s.destroy AS stationRouteDestroy," +
  177 + " s.versions AS stationRouteVersions," +
  178 + " s.create_by AS stationRouteCreateBy," +
  179 + " s.create_date AS stationRouteCreateDate," +
  180 + " s.update_by AS stationRouteUpdateBy," +
  181 + " s.update_date AS stationRouteUpdateDate FROM bsth_c_ls_stationroute s WHERE s.versions = ?4 and s.station_route_code =(" +
  182 + "select MIN(station_route_code) as stationRouteCode from bsth_c_ls_stationroute r WHERE " +
  183 + "r.line=?1 and r.directions =?2 and station_route_code > ?3 and r.destroy = 0 and versions = ?4 ) and s.line=?1 and s.directions = ?2 AND s.destroy = 0) a " +
  184 + " LEFT JOIN bsth_c_station b ON a.stationRouteStation = b.id", nativeQuery=true)
  185 + List<Object[]> findDownStationRoute(Integer id,Integer direction,Integer stationRouteCode, Integer version);
  186 +
  187 + /**
  188 + * @Description :TODO(站点中心点坐标查询)
  189 + *
  190 + * @param map <lineId:线路ID; direction:方向>
  191 + *
  192 + * @return List<Object[]>
  193 + */
  194 + /*@Query(value = "SELECT s.b_jwpoints,s.station_name FROM (" +
  195 + "SELECT b.station FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " +
  196 + "LEFT JOIN bsth_c_station s on r.station = s.id", nativeQuery=true)*/
  197 + @Query(value = "SELECT s.b_jwpoints,r.station_name,r.station_route_code FROM (" +
  198 + "SELECT b.station,b.station_route_code,b.station_name FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " +
  199 + "LEFT JOIN bsth_c_station s on r.station = s.id order by r.station_route_code asc", nativeQuery=true)
  200 + List<Object[]> getSelectStationRouteCenterPoints(Integer lineId,Integer direction);
  201 +
  202 + /**
  203 + * @Description :TODO(撤销站点)
  204 + *
  205 + * @param map <lineId:线路ID; destroy:是否撤销(0:否;1:是)>
  206 + *
  207 + */
  208 + @Transactional
  209 + @Modifying
  210 + @Query(value="UPDATE bsth_c_stationroute SET " +
  211 + "destroy = ?2 WHERE id = ?1", nativeQuery=true)
  212 + void stationRouteIsDestroyUpd(Integer stationRouteId, Integer destroy);
  213 +
  214 +
  215 + /**
  216 + * @Description : TODO(根据线路ID生成行单)
  217 + *
  218 + * @param lineId:线路ID
  219 + *
  220 + * @return List<Object[]>:{[0]:g_lonx(GPS经度);[1]:g_laty(GPS纬度);[2]:b_jwpoints(百度经纬度坐标)
  221 + *
  222 + * [3]:station_mark(站点类型);[4]:station_route_code(站点序号);[5]:station_cod(站点编码);
  223 + *
  224 + * [6]:distances(站点距离);[7]:station_name(站点名称);[8]:directions(方向)}
  225 + */
  226 + @Query(value = "SELECT * FROM ("+
  227 + "SELECT b.g_lonx," +
  228 + "b.g_laty,b.b_jwpoints," +
  229 + "a.station_mark," +
  230 + "a.station_route_code," +
  231 + "b.station_cod," +
  232 + "a.distances,"+
  233 + "a.station_name," +
  234 + "a.directions FROM (SELECT " +
  235 + "s.station_mark," +
  236 + "s.station_route_code," +
  237 + "s.directions," +
  238 + "s.distances,"+
  239 + "s.station_name,"+
  240 + "s.station FROM bsth_c_stationroute s where s.line = ?1 and s.destroy=0) a " +
  241 + "LEFT JOIN bsth_c_station b " +
  242 + " on a.station = b.id ORDER BY a.directions ASC ) k ORDER BY k.directions,k.station_route_code ASC", nativeQuery=true)
  243 + List<Object[]> usingSingle(Integer lineId);
  244 +
  245 + /**
  246 + * @Description : TODO(根据站点路由Id查询详情)
  247 + *
  248 + * @param id:站点路由ID
  249 + *
  250 + * @return List<Object[]>
  251 + */
  252 + @Query(value = "SELECT a.stationRouteLine," +
  253 + " a.stationRouteStation," +
  254 + " a.stationRouteCode," +
  255 + " a.stationRouteLIneCode," +
  256 + " a.stationRouteStationMark," +
  257 + " a.stationOutStationNmber," +
  258 + " a.stationRoutedirections," +
  259 + " a.stationRouteDistances," +
  260 + " a.stationRouteToTime," +
  261 + " a.staitonRouteFirstTime," +
  262 + " a.stationRouteEndTime," +
  263 + " a.stationRouteDescriptions," +
  264 + " a.stationRouteDestroy," +
  265 + " a.stationRouteVersions," +
  266 + " a.stationRouteCreateBy," +
  267 + " a.stationRouteCreateDate," +
  268 + " a.stationRouteUpdateBy," +
  269 + " a.stationRouteUpdateDate," +
  270 + " b.id AS stationId," +
  271 + " b.station_cod AS stationCode," +
  272 + " a.stationRouteName," +
  273 + " b.road_coding AS stationRoadCoding," +
  274 + " b.db_type AS stationDbType," +
  275 + " b.b_jwpoints AS stationJwpoints," +
  276 + " b.g_lonx AS stationGlonx," +
  277 + " b.g_laty AS stationGlaty," +
  278 + " b.x AS stationX," +
  279 + " b.y AS stationY," +
  280 + " ST_AsText(b.b_polygon_grid) as stationBPolyonGrid," +
  281 + " ST_AsText(b.g_polygon_grid) AS stationGPloyonGrid, " +
  282 + " b.destroy AS stationDestroy," +
  283 + " b.radius AS stationRadius," +
  284 + " b.shapes_type AS stationShapesType," +
  285 + " b.versions AS stationVersions," +
  286 + " b.descriptions AS sttationDescriptions," +
  287 + " b.create_by AS stationCreateBy," +
  288 + " b.create_date AS stationCreateDate," +
  289 + " b.update_by AS stationUpdateBy," +
  290 + " b.update_date AS stationUpdateDate," +
  291 + " a.stationRouteId,b.station_name as zdmc, " +
  292 + " a.industryCode "+
  293 + " FROM " +
  294 + "( SELECT s.id AS stationRouteId," +
  295 + " s.line AS stationRouteLine," +
  296 + " s.station as stationRouteStation," +
  297 + " s.station_name AS stationRouteName," +
  298 + " s.station_route_code as stationRouteCode," +
  299 + " s.industry_code as industryCode," +
  300 + " s.line_code AS stationRouteLIneCode," +
  301 + " s.station_mark AS stationRouteStationMark," +
  302 + " s.out_station_nmber AS stationOutStationNmber," +
  303 + " s.directions AS stationRoutedirections," +
  304 + " s.distances AS stationRouteDistances," +
  305 + " s.to_time AS stationRouteToTime," +
  306 + " s.first_time AS staitonRouteFirstTime," +
  307 + " s.end_time AS stationRouteEndTime," +
  308 + " s.descriptions AS stationRouteDescriptions," +
  309 + " s.destroy AS stationRouteDestroy," +
  310 + " s.versions AS stationRouteVersions," +
  311 + " s.create_by AS stationRouteCreateBy," +
  312 + " s.create_date AS stationRouteCreateDate," +
  313 + " s.update_by AS stationRouteUpdateBy," +
  314 + " s.update_date AS stationRouteUpdateDate FROM bsth_c_stationroute s WHERE s.id = ?1 ) a " +
  315 + " LEFT JOIN bsth_c_station b ON a.stationRouteStation = b.id", nativeQuery=true)
  316 + List<Object[]> findStationRouteInfo(Integer id);
  317 +
  318 + /**
  319 + * @Description : TODO(根据站点路由Id查询详情)
  320 + *
  321 + * @param id:站点路由ID
  322 + *
  323 + * @return List<Object[]>
  324 + */
  325 + @Query(value = "SELECT a.stationRouteLine," +
  326 + " a.stationRouteStation," +
  327 + " a.stationRouteCode," +
  328 + " a.stationRouteLIneCode," +
  329 + " a.stationRouteStationMark," +
  330 + " a.stationOutStationNmber," +
  331 + " a.stationRoutedirections," +
  332 + " a.stationRouteDistances," +
  333 + " a.stationRouteToTime," +
  334 + " a.staitonRouteFirstTime," +
  335 + " a.stationRouteEndTime," +
  336 + " a.stationRouteDescriptions," +
  337 + " a.stationRouteDestroy," +
  338 + " a.stationRouteVersions," +
  339 + " a.stationRouteCreateBy," +
  340 + " a.stationRouteCreateDate," +
  341 + " a.stationRouteUpdateBy," +
  342 + " a.stationRouteUpdateDate," +
  343 + " b.id AS stationId," +
  344 + " b.station_cod AS stationCode," +
  345 + " a.stationRouteName," +
  346 + " b.road_coding AS stationRoadCoding," +
  347 + " b.db_type AS stationDbType," +
  348 + " b.b_jwpoints AS stationJwpoints," +
  349 + " b.g_lonx AS stationGlonx," +
  350 + " b.g_laty AS stationGlaty," +
  351 + " b.x AS stationX," +
  352 + " b.y AS stationY," +
  353 + " ST_AsText(b.b_polygon_grid) as stationBPolyonGrid," +
  354 + " ST_AsText(b.g_polygon_grid) AS stationGPloyonGrid, " +
  355 + " b.destroy AS stationDestroy," +
  356 + " b.radius AS stationRadius," +
  357 + " b.shapes_type AS stationShapesType," +
  358 + " b.versions AS stationVersions," +
  359 + " b.descriptions AS sttationDescriptions," +
  360 + " b.create_by AS stationCreateBy," +
  361 + " b.create_date AS stationCreateDate," +
  362 + " b.update_by AS stationUpdateBy," +
  363 + " b.update_date AS stationUpdateDate," +
  364 + " a.stationRouteId," +
  365 + "b.station_name as zdmc, "+
  366 + "a.industryCode "+
  367 + " FROM ( SELECT s.id AS stationRouteId," +
  368 + " s.line AS stationRouteLine," +
  369 + " s.station as stationRouteStation," +
  370 + " s.station_name AS stationRouteName," +
  371 + " s.station_route_code as stationRouteCode," +
  372 + " s.industry_code as industryCode," +
  373 + " s.line_code AS stationRouteLIneCode," +
  374 + " s.station_mark AS stationRouteStationMark," +
  375 + " s.out_station_nmber AS stationOutStationNmber," +
  376 + " s.directions AS stationRoutedirections," +
  377 + " s.distances AS stationRouteDistances," +
  378 + " s.to_time AS stationRouteToTime," +
  379 + " s.first_time AS staitonRouteFirstTime," +
  380 + " s.end_time AS stationRouteEndTime," +
  381 + " s.descriptions AS stationRouteDescriptions," +
  382 + " s.destroy AS stationRouteDestroy," +
  383 + " s.versions AS stationRouteVersions," +
  384 + " s.create_by AS stationRouteCreateBy," +
  385 + " s.create_date AS stationRouteCreateDate," +
  386 + " s.update_by AS stationRouteUpdateBy," +
  387 + " s.update_date AS stationRouteUpdateDate FROM bsth_c_stationroute s WHERE s.line = ?1 and s.directions = ?2 and s.destroy = 0) a " +
  388 + " LEFT JOIN bsth_c_station b ON a.stationRouteStation = b.id order by a.stationRouteCode", nativeQuery=true)
  389 + List<Object[]> getStationRouteList(Integer lineId, Integer dir);
  390 +
  391 + List<StationRoute> findByLine(Line line);
  392 +
  393 + @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)
  394 + @Query("select s from StationRoute s where s.destroy=0")
  395 + List<StationRoute> findAllEffective();
  396 +
  397 + @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)
  398 + @Override
  399 + Page<StationRoute> findAll(Specification<StationRoute> spec, Pageable pageable);
  400 +
  401 + @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)
  402 + @Override
  403 + List<StationRoute> findAll(Specification<StationRoute> spec);
  404 +
  405 + @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)
  406 + @Override
  407 + List<StationRoute> findAll(Specification<StationRoute> spec, Sort sort);
  408 +
  409 + @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)
  410 + @Override
  411 + @Query(value = "select r from StationRoute r where r.destroy=0")
  412 + List<StationRoute> findAll();
  413 +
  414 + @Query("select new map(sr.station.id as stationid, sr.stationName as stationname) from StationRoute sr where sr.line.id=?1 and sr.directions=?2")
  415 + List<Map<String, Object>> findStations(Integer xlid, Integer xldir);
  416 +
  417 + @Query("select r from StationRoute r where r.lineCode=?1 and r.directions=?2 and r.destroy=0 order by r.stationRouteCode")
  418 + List<StationRoute> findByLine(String lineCode, int updown);
  419 +
  420 + @Query("select r from StationRoute r where r.line.id=?1 and r.directions=?2 and r.destroy=0 order by r.stationRouteCode")
  421 + List<StationRoute> findByLine(Integer lineId, Integer dir);
  422 +
  423 + @EntityGraph(value = "stationRoute_station", type = EntityGraph.EntityGraphType.FETCH)
  424 + @Query("select s from StationRoute s where s.destroy=0 and s.lineCode=?1")
  425 + List<StationRoute> findByLineCode(String lineCode);
  426 +
  427 + @Query("SELECT new map(" +
  428 + "lineCode as lineCode,directions as directions,stationName as stationName,stationCode as stationCode," +
  429 + "line.linePlayType as linePlayType,s.stationMark as stationMark) " +
  430 + "FROM " +
  431 + "StationRoute s " +
  432 + "WHERE " +
  433 + "s.destroy = 0 " +
  434 + "and s.lineCode in(select lineCode from Line where inUse = 1) " +
  435 + "ORDER BY " +
  436 + "lineCode,directions,stationRouteCode")
  437 + List<Map<String, String>> findLineWithYgcAndInuse();
  438 +
  439 + @Query("SELECT new map(" +
  440 + "lineCode as lineCode,directions as directions,stationName as stationName,stationCode as stationCode," +
  441 + "line.linePlayType as linePlayType,s.stationMark as stationMark) " +
  442 + "FROM " +
  443 + "StationRoute s " +
  444 + "WHERE " +
  445 + "s.destroy = 0 " +
  446 + "ORDER BY " +
  447 + "lineCode,directions,stationRouteCode")
  448 + List<Map<String, String>> findAllLineWithYgc();
  449 +
  450 + @Query("SELECT new map(" +
  451 + "lineCode as lineCode,directions as directions,stationName as stationName,stationCode as stationCode," +
  452 + "line.linePlayType as linePlayType,s.stationMark as stationMark) " +
  453 + "FROM " +
  454 + "StationRoute s " +
  455 + "WHERE " +
  456 + "s.destroy = 0 and s.lineCode = ?1 " +
  457 + "ORDER BY " +
  458 + "lineCode,directions,stationRouteCode")
  459 + List<Map<String, String>> findLineWithYgcByLine(String lineCode);
  460 +
  461 + @Modifying
  462 + @Query(value="update bsth_c_stationroute set directions = case directions when 1 then 0 when 0 then 1 end where line = ?1 ", nativeQuery=true)
  463 + void stationRouteDir(Integer line);
  464 +
  465 + @Modifying
  466 + @Query(value="update bsth_c_stationroute set distances =?2 where id = ?1 ", nativeQuery=true)
  467 + void upddis(Integer id,Double dis);
  468 +
  469 + @Modifying
  470 + @Query(value="UPDATE bsth_c_stationroute set station_route_code = (station_route_code+10) where line = ?1 and directions = ?2 and station_route_code >=?3 and destroy = 0", nativeQuery=true)
  471 + void stationUpdStationRouteCode(Integer line,Integer dir,Integer routeCod);
  472 +
  473 + /**
  474 + * 更新路线前撤销线路原有站点
  475 + *
  476 + * @param line
  477 + * @param dir
  478 + */
  479 + @Modifying
  480 + @Query(value="UPDATE bsth_c_stationroute set destroy = 1 where line = ?1 and directions = ?2", nativeQuery=true)
  481 + void stationRouteUpdDestroy(Integer line,Integer dir);
  482 +
  483 + @Modifying
  484 + @Query(value="UPDATE bsth_c_stationroute set destroy = 1 where id = ?1", nativeQuery=true)
  485 + void stationRouteIsDestroyUpdBatch(Integer ids);
  486 +
  487 + /**
  488 + *
  489 + *
  490 + * @param line
  491 + * @param dir
  492 + */
  493 + @Modifying
  494 + @Query(value="insert into (select * from bsth_c_stationroute_cache where line = ?1 and directions = ?2) bsth_c_stationroute", nativeQuery=true)
  495 + void stationRouteUpdate(Integer line,Integer dir);
  496 +
  497 + // 更具线路批量撤销
  498 + @Modifying
  499 + @Query(value="UPDATE StationRoute sr set sr.destroy = 1 where sr.line.id = ?1 and sr.lineCode = ?2")
  500 + void batchUpdate(Integer lineId, String lineCode);
  501 +
  502 + // 批量删除
  503 + @Modifying
  504 + @Query(value="delete from StationRoute sr where sr.line.id = ?1 and sr.lineCode = ?2")
  505 + void batchDelete(Integer lineId, String lineCode);
  506 +
  507 +
  508 + // 批量修改站点行业编码
  509 + @Modifying
  510 + @Query(value="update bsth_c_stationroute set industry_code =?2 where id = ?1 ", nativeQuery=true)
  511 + void updIndustryCode(Integer id,String IndustryCode);
  512 +}
src/main/java/com/bsth/service/CarParkService.java
1 -package com.bsth.service;  
2 -  
3 -import java.util.List;  
4 -import java.util.Map;  
5 -  
6 -import com.bsth.entity.CarPark;  
7 -  
8 -public interface CarParkService extends BaseService<CarPark, Integer> {  
9 -  
10 - Map<String, Object> carParkSave(Map<String, Object> map);  
11 -  
12 - List<Map<String, Object>> findCarParkInfoFormId(Map<String, Object> map);  
13 -  
14 -  
15 - /**  
16 - * 修改停车场信息  
17 - *  
18 - *  
19 - * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;  
20 - *  
21 - * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;  
22 - *  
23 - * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;  
24 - *  
25 - * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>  
26 - *  
27 - * @return map <SUCCESS:成功;ERROR:失败>  
28 - *  
29 - */  
30 - Map<String, Object> carParkUpdate(Map<String, Object> map);  
31 -  
32 - boolean selectTccInfoByCode(Map<String, Object> map);  
33 -} 1 +package com.bsth.service;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import com.bsth.entity.CarPark;
  7 +
  8 +public interface CarParkService extends BaseService<CarPark, Integer> {
  9 +
  10 + Map<String, Object> carParkSave(Map<String, Object> map);
  11 +
  12 + List<Map<String, Object>> findCarParkInfoFormId(Map<String, Object> map);
  13 +
  14 +
  15 + /**
  16 + * 修改停车场信息
  17 + *
  18 + *
  19 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  20 + *
  21 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  22 + *
  23 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  24 + *
  25 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  26 + *
  27 + * @return map <SUCCESS:成功;ERROR:失败>
  28 + *
  29 + */
  30 + Map<String, Object> carParkUpdate(Map<String, Object> map);
  31 +
  32 + boolean selectTccInfoByCode(Map<String, Object> map);
  33 +
  34 + long carParkMaxId();
  35 +}
src/main/java/com/bsth/service/geo_data/impl/GeoDataServiceImpl.java
1 -package com.bsth.service.geo_data.impl;  
2 -  
3 -import com.bsth.common.ResponseCode;  
4 -import com.bsth.entity.LineVersions;  
5 -import com.bsth.entity.geo_data.GeoLineVersionInfo;  
6 -import com.bsth.entity.geo_data.GeoRoad;  
7 -import com.bsth.entity.geo_data.GeoStation;  
8 -import com.bsth.service.geo_data.GeoDataService;  
9 -import com.bsth.service.geo_data.impl.dto.CascadeSaveRoad;  
10 -import com.bsth.service.geo_data.impl.dto.CascadeSaveStation;  
11 -import com.bsth.service.geo_data.impl.dto.SaveRoadRouteDTO;  
12 -import com.bsth.service.geo_data.impl.dto.SaveStationRouteDTO;  
13 -import com.bsth.util.GetUIDAndCode;  
14 -import com.bsth.util.TransGPS;  
15 -import com.google.common.base.Splitter;  
16 -import org.slf4j.Logger;  
17 -import org.slf4j.LoggerFactory;  
18 -import org.springframework.beans.factory.annotation.Autowired;  
19 -import org.springframework.jdbc.core.BatchPreparedStatementSetter;  
20 -import org.springframework.jdbc.core.BeanPropertyRowMapper;  
21 -import org.springframework.jdbc.core.JdbcTemplate;  
22 -import org.springframework.jdbc.datasource.DataSourceTransactionManager;  
23 -import org.springframework.stereotype.Service;  
24 -import org.springframework.transaction.TransactionDefinition;  
25 -import org.springframework.transaction.TransactionStatus;  
26 -import org.springframework.transaction.support.DefaultTransactionDefinition;  
27 -  
28 -import java.sql.PreparedStatement;  
29 -import java.sql.SQLException;  
30 -import java.text.SimpleDateFormat;  
31 -import java.util.*;  
32 -  
33 -/**  
34 - * Created by panzhao on 2017/12/8.  
35 - */  
36 -@Service  
37 -public class GeoDataServiceImpl implements GeoDataService {  
38 -  
39 - @Autowired  
40 - JdbcTemplate jdbcTemplate;  
41 -  
42 - Logger logger = LoggerFactory.getLogger(this.getClass());  
43 -  
44 - @Override  
45 - public Map<String, Object> findGeoStations(String lineCode, Integer version) {  
46 -  
47 - Map<String, Object> map = new HashMap();  
48 - try {  
49 -  
50 - String sql = "select versions from bsth_c_line_versions where line='"+lineCode+"' and status=1";  
51 - //当前使用的线路版本  
52 - Integer currentVersion = jdbcTemplate.queryForObject(sql, Integer.class);  
53 -  
54 -  
55 - if(null == version)  
56 - version = currentVersion;  
57 -  
58 - sql = "select t1.*,t2.g_lonx,g_laty,ST_AsText(g_polygon_grid) as g_polygon_grid,radius,shapes_type from (select id,station_name,station_route_code,line_code,station_code,station_mark,versions,directions from bsth_c_ls_stationroute where line=" + lineCode + " and destroy=0 and versions="+version+") t1 LEFT JOIN bsth_c_station t2 on t1.station_code=t2.station_cod";  
59 -  
60 -  
61 - List<GeoStation> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoStation.class));  
62 -  
63 - for (GeoStation station : list) {  
64 - if (station.getShapesType().equals("d"))  
65 - station.setBdCoords(multiWgsToBd(station.getgPolygonGrid(), 9, 3));  
66 - }  
67 - map.put("status", ResponseCode.SUCCESS);  
68 - map.put("list", list);  
69 - map.put("currentVersion", currentVersion);  
70 - map.put("editVersion", version);  
71 - } catch (Exception e) {  
72 - logger.error("", e);  
73 - map.put("status", ResponseCode.ERROR);  
74 - map.put("msg", "服务器出现异常");  
75 - }  
76 - return map;  
77 - }  
78 -  
79 - @Override  
80 - public Map<String, Object> findGeoRoad(String lineCode,Integer version) {  
81 - Map<String, Object> map = new HashMap();  
82 - try {  
83 -  
84 - String sql = "select versions from bsth_c_line_versions where line='"+lineCode+"' and status=1";  
85 - //当前使用的线路版本  
86 - Integer currentVersion = jdbcTemplate.queryForObject(sql, Integer.class);  
87 -  
88 -  
89 - if(null == version)  
90 - version = currentVersion;  
91 -  
92 -  
93 - sql = "select t1.*,t2.section_name,t2.croses_road,ST_AsText(t2.gsection_vector) as gsection_vector from (select id,sectionroute_code,directions,line_code,section_code,versions from bsth_c_ls_sectionroute where line=" + lineCode + " and destroy=0 and versions="+version+") t1 LEFT JOIN bsth_c_section t2 on t1.section_code=t2.section_code";  
94 -  
95 -  
96 - List<GeoRoad> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoRoad.class));  
97 -  
98 - for (GeoRoad road : list) {  
99 - road.setBdCoords(multiWgsToBd(road.getGsectionVector(), 11, 2));  
100 - }  
101 - map.put("status", ResponseCode.SUCCESS);  
102 - map.put("list", list);  
103 - } catch (Exception e) {  
104 - logger.error("", e);  
105 - map.put("status", ResponseCode.ERROR);  
106 - map.put("msg", "服务器出现异常");  
107 - }  
108 - return map;  
109 - }  
110 -  
111 - /**  
112 - * 编辑缓冲区信息  
113 - *  
114 - * @param station  
115 - * @return  
116 - */  
117 - @Override  
118 - public Map<String, Object> updateBufferInfo(GeoStation station) {  
119 - Map<String, Object> rs = new HashMap<>();  
120 - try {  
121 - //坐标转换  
122 - TransGPS.Location loc = TransGPS.LocationMake(station.getgLonx(), station.getgLaty());  
123 - loc = TransGPS.bd_decrypt(loc);  
124 - loc = TransGPS.transformFromGCJToWGS(loc);  
125 - station.setgLaty(Float.parseFloat(String.valueOf(loc.getLat())));  
126 - station.setgLonx(Float.parseFloat(String.valueOf(loc.getLng())));  
127 -  
128 - String sql;  
129 - String shapesType = station.getShapesType();  
130 - int rsCount = -1;  
131 - if (shapesType.equals("r")) {  
132 - sql = "update bsth_c_station set g_lonx=?, g_laty=?, radius=?,shapes_type='r' where station_cod=?";  
133 - rsCount = jdbcTemplate.update(sql, station.getgLonx(), station.getgLaty(), station.getRadius(), station.getStationCode());  
134 - } else if (shapesType.equals("d")) {  
135 - //多边形坐标转换  
136 - String bdPolygon = "POLYGON((" + station.getgPolygonGrid() + "))";  
137 - String wgsPolygon = "POLYGON((" + bdPolygon2Wgs(station.getgPolygonGrid()) + "))";  
138 - sql = "update bsth_c_station set g_lonx=?, g_laty=?,shapes_type='d', radius=null,b_polygon_grid=ST_GeomFromText('" + bdPolygon + "'),g_polygon_grid=ST_GeomFromText('" + wgsPolygon + "') where station_cod=?";  
139 -  
140 - rsCount = jdbcTemplate.update(sql, station.getgLonx(), station.getgLaty(), station.getStationCode());  
141 - }  
142 -  
143 - //从数据库里重新查询对象  
144 - if (rsCount > 0) {  
145 - rs.put("station", findOne(station.getId()));  
146 - rs.put("status", ResponseCode.SUCCESS);  
147 - }  
148 -  
149 - } catch (Exception e) {  
150 - logger.error("", e);  
151 - rs.put("status", ResponseCode.ERROR);  
152 - rs.put("msg", "服务器出现异常");  
153 - }  
154 - return rs;  
155 - }  
156 -  
157 - /**  
158 - * 修改站点路由和站点名称  
159 - *  
160 - * @param map  
161 - * @return  
162 - */  
163 - @Override  
164 - public Map<String, Object> updateStationName(Map<String, Object> map) {  
165 - Map<String, Object> rs = new HashMap<>();  
166 -  
167 - //编程式事务  
168 - DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());  
169 - DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
170 - def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);  
171 - TransactionStatus status = tran.getTransaction(def);  
172 - try {  
173 -  
174 - int id = Integer.parseInt(map.get("id").toString());  
175 - String name = map.get("stationName").toString();  
176 - String code = map.get("stationCode").toString();  
177 - String lineCode = map.get("lineCode").toString();  
178 - String versions = map.get("versions").toString();  
179 -  
180 - //更新历史站点路由  
181 - jdbcTemplate.update("update bsth_c_ls_stationroute set station_name=? where id=?", name, id);  
182 - //更新站点  
183 - jdbcTemplate.update("update bsth_c_station set station_name=? where station_cod=?", name, code);  
184 -  
185 - //写一条走向变更记录  
186 - jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions);  
187 -  
188 - tran.commit(status);  
189 -  
190 - rs.put("station", findOne(id));  
191 - rs.put("status", ResponseCode.SUCCESS);  
192 - } catch (Exception e) {  
193 - tran.rollback(status);  
194 - logger.error("", e);  
195 - rs.put("status", ResponseCode.ERROR);  
196 - rs.put("msg", "服务器出现异常");  
197 - }  
198 - return rs;  
199 - }  
200 -  
201 - @Override  
202 - public Map<String, Object> addNewRoadRoute(String lineCode, int upDown, int versions, String sectionName, String crosesRoad, String coords, int prevRouteId) {  
203 - Map<String, Object> rs = new HashMap<>();  
204 -  
205 - //编程式事务  
206 - DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());  
207 - DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
208 - def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);  
209 - TransactionStatus status = tran.getTransaction(def);  
210 - try {  
211 - //根据线路编码,查询线路ID  
212 - int lineId = jdbcTemplate.queryForObject("select id from bsth_c_line where line_code=" + lineCode, Integer.class);  
213 -  
214 - String sql = "select * from bsth_c_ls_sectionroute where line_code='" + lineCode + "' and line=" + lineId + " and directions=" + upDown + " and destroy=0 and versions=" + versions;  
215 - List<SaveRoadRouteDTO> routes = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SaveRoadRouteDTO.class));  
216 -  
217 - Collections.sort(routes, new RoadRouteComp());  
218 -  
219 - long sCode = GetUIDAndCode.getSectionId();  
220 - //转wgs  
221 - String wgsCoord = "LINESTRING(" + bdPolygon2Wgs(coords) + ")";  
222 - String bdCooed = "LINESTRING(" + coords + ")";  
223 - //insert 路段  
224 - sql = "insert into bsth_c_section(id, section_code, section_name, croses_road, bsection_vector, gsection_vector, create_date, update_date, versions) " +  
225 - " values(?,?,?,?,ST_GeomFromText('" + bdCooed + "'),ST_GeomFromText('" + wgsCoord + "'),sysdate(),sysdate(),?)";  
226 -  
227 - jdbcTemplate.update(sql, sCode, sCode, sectionName, crosesRoad, 1);  
228 -  
229 -  
230 - SaveRoadRouteDTO srr;  
231 - int currentNo = -1,  
232 - no = 100, step = 100;  
233 -  
234 - if (prevRouteId == -1) {  
235 - //起点站  
236 - currentNo = no;  
237 - no += step;  
238 - }  
239 - //重新排序路由  
240 - for (int i = 0, size = routes.size(); i < size; i++) {  
241 - srr = routes.get(i);  
242 - srr.setSectionrouteCode(no += step);  
243 - if (srr.getId().intValue() == prevRouteId) {  
244 - no += step;  
245 - currentNo = no;  
246 - }  
247 - }  
248 -  
249 - srr = new SaveRoadRouteDTO();  
250 - srr.setLine(lineId);  
251 - srr.setLineCode(lineCode);  
252 - srr.setDirections(upDown);  
253 - srr.setVersions(versions);  
254 -  
255 - srr.setSectionrouteCode(currentNo);  
256 - srr.setSection(sCode);  
257 - srr.setSectionCode(sCode + "");  
258 - srr.setIsRoadeSpeed(0);  
259 - srr.setDestroy(0);  
260 - Date d = new Date();  
261 - srr.setCreateDate(d);  
262 - srr.setUpdateDate(d);  
263 -  
264 - final List<SaveRoadRouteDTO> saveList = routes;  
265 - //insert 新路由 (ID自增)  
266 - jdbcTemplate.update("insert into bsth_c_ls_sectionroute(line_code, section_code, sectionroute_code, directions, line, section, create_date,update_date,versions,destroy,is_roade_speed)" +  
267 - " values(?,?,?,?,?,?,?,?,?,?,?)", srr.getLineCode(), srr.getSectionCode(), srr.getSectionrouteCode(), srr.getDirections(), srr.getLine(), srr.getSection(), srr.getCreateDate(), srr.getUpdateDate(), versions, srr.getDestroy(), srr.getIsRoadeSpeed());  
268 -  
269 - // update 原路由  
270 - jdbcTemplate.batchUpdate("update bsth_c_ls_sectionroute set sectionroute_code=? where id=?"  
271 - , new BatchPreparedStatementSetter() {  
272 - @Override  
273 - public void setValues(PreparedStatement ps, int i) throws SQLException {  
274 - SaveRoadRouteDTO srr = saveList.get(i);  
275 - ps.setInt(1, srr.getSectionrouteCode());  
276 - ps.setInt(2, srr.getId());  
277 - }  
278 -  
279 - @Override  
280 - public int getBatchSize() {  
281 - return saveList.size();  
282 - }  
283 - });  
284 -  
285 -  
286 - //写一条走向变更记录  
287 - jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions);  
288 -  
289 - tran.commit(status);  
290 -  
291 - //返回更新之后的数据  
292 - List<GeoRoad> list = findRoadByUpdown(lineCode, upDown, versions);  
293 - rs.put("list", list);  
294 - rs.put("status", ResponseCode.SUCCESS);  
295 - } catch (Exception e) {  
296 - tran.rollback(status);  
297 - logger.error("", e);  
298 - rs.put("status", ResponseCode.ERROR);  
299 - rs.put("msg", "服务器出现异常");  
300 - }  
301 - return rs;  
302 - }  
303 -  
304 - /**  
305 - * 获取线路版本信息  
306 - *  
307 - * @param lineCode  
308 - * @return  
309 - */  
310 - @Override  
311 - public Map<String, Object> findVersionInfo(String lineCode) {  
312 - Map<String, Object> rs = new HashMap<>();  
313 -  
314 - try {  
315 - String sql = "select t1.*,t2.name as line_name from bsth_c_line_versions t1 LEFT JOIN bsth_c_line t2 on t1.line_code=t2.line_code where t1.line_code='" + lineCode + "'";  
316 -  
317 - List<GeoLineVersionInfo> list =  
318 - jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoLineVersionInfo.class));  
319 -  
320 - rs.put("list", list);  
321 - rs.put("status", ResponseCode.SUCCESS);  
322 - } catch (Exception e) {  
323 - logger.error("", e);  
324 - rs.put("status", ResponseCode.ERROR);  
325 - rs.put("msg", "服务器出现异常");  
326 - }  
327 - return rs;  
328 - }  
329 -  
330 - @Override  
331 - public Map<String, Object> addNewLineVersion(Map<String, Object> map) {  
332 - Map<String, Object> rs = new HashMap<>();  
333 -  
334 - //编程式事务  
335 - DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());  
336 - DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
337 - def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);  
338 - TransactionStatus status = tran.getTransaction(def);  
339 - try {  
340 -  
341 - String lineCode = map.get("lineCode").toString();  
342 - String remark = map.get("remark").toString();  
343 - String name = map.get("name").toString();  
344 - Date startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(map.get("startDate").toString());  
345 - int extendsVersion = Integer.parseInt(map.get("extendsVersion").toString());  
346 -  
347 - if(startDate.getTime() - System.currentTimeMillis() < 1000 * 60 * 3){  
348 - rs.put("status", ResponseCode.ERROR);  
349 - rs.put("msg", "启用时间最少需要晚于当前服务器时间3分钟!");  
350 - return rs;  
351 - }  
352 -  
353 - int nameCount = jdbcTemplate.queryForObject("select count(*) from bsth_c_line_versions where line_code=" + lineCode + " and name='"+name+"'", Integer.class);  
354 - if(nameCount > 0){  
355 - rs.put("status", ResponseCode.ERROR);  
356 - rs.put("msg", "你不能使用一个已经存在的版本名称!!");  
357 - return rs;  
358 - }  
359 -  
360 - //当前最大的版本号  
361 - int maxVersion = jdbcTemplate.queryForObject("select max(versions) as versions from bsth_c_line_versions where line_code=" + lineCode, Integer.class);  
362 - Date d = new Date();  
363 -  
364 - //根据线路编码,查询线路ID  
365 - int lineId = jdbcTemplate.queryForObject("select id from bsth_c_line where line_code=" + lineCode, Integer.class);  
366 -  
367 - maxVersion += 1;  
368 - LineVersions lVersion = new LineVersions();  
369 - lVersion.setName(name);  
370 - lVersion.setVersions(maxVersion);  
371 - lVersion.setRemark(remark);  
372 - lVersion.setStartDate(startDate);  
373 - lVersion.setStatus(2);  
374 - lVersion.setCreateDate(d);  
375 - lVersion.setUpdateDate(d);  
376 - lVersion.setLineCode(lineCode);  
377 -  
378 - //如果有待启用的版本,设置为历史版本  
379 - jdbcTemplate.update("update bsth_c_line_versions set `status`=2, start_date=null,end_date=null where line_code='"+lineCode+"' and `status`=0");  
380 -  
381 - //入库线路版本  
382 - jdbcTemplate.update("insert into bsth_c_line_versions(name, line, line_code, versions, start_date, create_date, update_date, remark,status, isupdate) " +  
383 - " values(?,?,?,?,?,?,?,?,?,?)", lVersion.getName(), lineId, lVersion.getLineCode()  
384 - , lVersion.getVersions(), lVersion.getStartDate(), lVersion.getCreateDate(), lVersion.getUpdateDate(), lVersion.getRemark(), lVersion.getStatus(), lVersion.getIsupdate());  
385 -  
386 - if (extendsVersion != -1) {  
387 - //复制站点信息  
388 - String sql = "SELECT t1.id AS route_id,t1.line,t1.directions,t1.station,t1.station_name,t1.station_route_code,t1.line_code,t1.station_code,t1.station_mark,t1.distances,t1.to_time,t2.id AS station_id,t2.db_type,t2.b_jwpoints,t2.g_lonx,t2.g_laty,t2.radius,ST_AsText(t2.g_polygon_grid) as g_polygon_grid,t2.shapes_type FROM bsth_c_ls_stationroute t1 LEFT JOIN bsth_c_station t2 ON t1.station_code = t2.station_cod where t1.destroy=0 and t1.line_code='" + lineCode + "' and t1.versions="+extendsVersion+" order by t1.directions, t1.station_route_code";  
389 - List<CascadeSaveStation> cssList = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(CascadeSaveStation.class));  
390 -  
391 - //新的站点编码  
392 - long sCode;  
393 - for (CascadeSaveStation ss : cssList) {  
394 - sCode = GetUIDAndCode.getStationId();  
395 - ss.setRouteId(null);  
396 - ss.setStationCode(sCode + "");  
397 - ss.setStation((int) sCode);  
398 - }  
399 - //入库新版本的站点 和 路由  
400 - batchInsertStation(cssList, maxVersion);  
401 -  
402 - //复制路段信息  
403 - sql = "SELECT t1.id AS route_id,t1.line,t1.line_code,t1.directions,t1.section,t1.section_code,t1.sectionroute_code,t1.versions,t2.section_name,t2.croses_road,ST_AsText(t2.gsection_vector) as gsection_vector,t2.db_type,t2.speed_limit FROM bsth_c_ls_sectionroute t1 LEFT JOIN bsth_c_section t2 ON t1.section_code = t2.section_code WHERE t1.destroy = 0 AND t1.line_code = '"+lineCode+"' and t1.versions="+ extendsVersion +" ORDER BY t1.directions,t1.sectionroute_code";  
404 - List<CascadeSaveRoad> csrList = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(CascadeSaveRoad.class));  
405 - //新的路段编码  
406 - long cCode;  
407 - for(CascadeSaveRoad csr : csrList){  
408 - cCode = GetUIDAndCode.getSectionId();  
409 - csr.setRouteId(null);  
410 - csr.setSection((int) cCode);  
411 - csr.setSectionCode(cCode + "");  
412 - }  
413 - //入库新版本的路段 和 路段路由  
414 - batchInsertRoad(csrList, maxVersion);  
415 - }  
416 -  
417 - tran.commit(status);  
418 - rs.put("newVersion", maxVersion);  
419 - rs.put("status", ResponseCode.SUCCESS);  
420 - } catch (Exception e) {  
421 - tran.rollback(status);  
422 - logger.error("", e);  
423 - rs.put("status", ResponseCode.ERROR);  
424 - rs.put("msg", "服务器出现异常");  
425 - }  
426 - return rs;  
427 - }  
428 -  
429 - /**  
430 - * 删除一个线路走向版本  
431 - * @param lineCode  
432 - * @param version  
433 - * @return  
434 - */  
435 - @Override  
436 - public Map<String, Object> deleteLineVersion(String lineCode, int version) {  
437 - Map<String, Object> rs = new HashMap<>();  
438 -  
439 - //编程式事务  
440 - DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());  
441 - DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
442 - def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);  
443 - TransactionStatus status = tran.getTransaction(def);  
444 - try{  
445 - int enableVersion = jdbcTemplate.queryForObject("select versions from bsth_c_line_versions where line_code='"+lineCode+"' and `status`=1", Integer.class);  
446 -  
447 - if(enableVersion==version){  
448 - rs.put("status", ResponseCode.ERROR);  
449 - rs.put("msg", "你不能删除当前正在启用的走向版本!");  
450 - return rs;  
451 - }  
452 - /*int versionCount = jdbcTemplate.queryForObject("select count(*) from bsth_c_line_versions where line_code='"+lineCode+"'", Integer.class);  
453 - if(versionCount == 1){  
454 - rs.put("status", ResponseCode.ERROR);  
455 - rs.put("msg", "线路至少要保留一个走向版本!");  
456 - return rs;  
457 - }*/  
458 -  
459 - /* //要删除的站点ID(未被其他线路、版本引用的)  
460 - String sql = "select DISTINCT station from bsth_c_ls_stationroute where line_code='"+lineCode+"' and versions="+version+" and station not in(" +  
461 - "select station from bsth_c_ls_stationroute where (line!='"+lineCode+"' or versions!="+version+") and station in (" +  
462 - "select station from bsth_c_ls_stationroute where line_code='"+lineCode+"' and versions="+version +  
463 - "))";  
464 -  
465 - List<Integer> stationRemoves = jdbcTemplate.queryForList(sql, Integer.class);*/  
466 -  
467 - //删除站点路由  
468 - String sql = "delete from bsth_c_ls_stationroute where line_code='"+lineCode+"' and versions=" + version;  
469 - jdbcTemplate.update(sql);  
470 -  
471 - //删除路段路由  
472 - sql = "delete from bsth_c_ls_sectionroute where line_code='"+lineCode+"' and versions=" + version;  
473 - jdbcTemplate.update(sql);  
474 -  
475 - //删除版本信息  
476 - sql = "delete from bsth_c_line_versions where line_code='"+lineCode+"' and versions=" + version;  
477 - jdbcTemplate.update(sql);  
478 -  
479 - tran.commit(status);  
480 - rs.put("status", ResponseCode.SUCCESS);  
481 - }catch (Exception e){  
482 - tran.rollback(status);  
483 - logger.error("", e);  
484 - rs.put("status", ResponseCode.ERROR);  
485 - rs.put("msg", "服务器出现异常");  
486 - }  
487 - return rs;  
488 - }  
489 -  
490 - /**  
491 - * 获取线路的待更新版本信息  
492 - * @param lineCode  
493 - * @return  
494 - */  
495 - @Override  
496 - public Map<String, Object> findFutureVersion(String lineCode) {  
497 - Map<String, Object> rs = new HashMap();  
498 - try{  
499 - List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from bsth_c_line_versions where line_code='"+lineCode+"' and `status`=2 order by start_date");  
500 -  
501 - rs.put("data", list);  
502 - rs.put("status", ResponseCode.SUCCESS);  
503 - }catch (Exception e){  
504 - logger.error("", e);  
505 - rs.put("status", ResponseCode.ERROR);  
506 - rs.put("msg", "服务器出现异常");  
507 - }  
508 - return rs;  
509 - }  
510 -  
511 - @Override  
512 - public Map<String, Object> addEnableInfo(String lineCode, int version, String enableTime) {  
513 - Map<String, Object> rs = new HashMap();  
514 - try{  
515 - Date startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(enableTime);  
516 - if(startDate.getTime() - System.currentTimeMillis() < 1000 * 60 * 3){  
517 - rs.put("status", ResponseCode.ERROR);  
518 - rs.put("msg", "启用时间最少需要晚于当前服务器时间3分钟!");  
519 - return rs;  
520 - }  
521 -  
522 - jdbcTemplate.update("update bsth_c_line_versions set `status`=0 where line_code="+lineCode+" and versions=" + version);  
523 - jdbcTemplate.update("update bsth_c_line_versions set `status`=2 ,start_date=? where line_code=? and versions=?", startDate, lineCode, version);  
524 -  
525 - rs.put("status", ResponseCode.SUCCESS);  
526 - }catch (Exception e){  
527 - logger.error("", e);  
528 - rs.put("status", ResponseCode.ERROR);  
529 - rs.put("msg", "服务器出现异常");  
530 - }  
531 - return rs;  
532 - }  
533 -  
534 - /**  
535 - * 批量入库路段  
536 - * @param cssList  
537 - * @param version  
538 - */  
539 - private void batchInsertRoad(final List<CascadeSaveRoad> csrList, final int version){  
540 - final Date d = new Date();  
541 - jdbcTemplate.batchUpdate("insert into bsth_c_section(id, section_code, section_name, croses_road, gsection_vector, create_date, update_date, versions) " +  
542 - " values(?,?,?,?,ST_GeomFromText(?),?,?,?)", new BatchPreparedStatementSetter() {  
543 - @Override  
544 - public void setValues(PreparedStatement ps, int i) throws SQLException {  
545 - CascadeSaveRoad csr = csrList.get(i);  
546 - ps.setInt(1, csr.getSection());  
547 - ps.setString(2, csr.getSectionCode());  
548 - ps.setString(3, csr.getSectionName());  
549 - ps.setString(4, csr.getCrosesRoad());  
550 - ps.setString(5, csr.getGsectionVector());  
551 - ps.setTimestamp(6, new java.sql.Timestamp(d.getTime()));  
552 - ps.setTimestamp(7, new java.sql.Timestamp(d.getTime()));  
553 - ps.setInt(8, version);  
554 - }  
555 -  
556 - @Override  
557 - public int getBatchSize() {  
558 - return csrList.size();  
559 - }  
560 - });  
561 -  
562 - //路由  
563 - jdbcTemplate.batchUpdate("insert into bsth_c_ls_sectionroute(line_code, section_code, sectionroute_code, directions, line, section, create_date,update_date,versions,destroy,is_roade_speed) " +  
564 - " values(?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() {  
565 - @Override  
566 - public void setValues(PreparedStatement ps, int i) throws SQLException {  
567 - CascadeSaveRoad csr = csrList.get(i);  
568 - ps.setString(1, csr.getLineCode());  
569 - ps.setString(2, csr.getSectionCode());  
570 - ps.setInt(3, csr.getSectionrouteCode());  
571 - ps.setInt(4, csr.getDirections());  
572 - ps.setInt(5, csr.getLine());  
573 - ps.setInt(6, csr.getSection());  
574 - ps.setTimestamp(7, new java.sql.Timestamp(d.getTime()));  
575 - ps.setTimestamp(8, new java.sql.Timestamp(d.getTime()));  
576 - ps.setInt(9, version);  
577 - ps.setInt(10, 0);  
578 - ps.setInt(11, 0);  
579 - }  
580 -  
581 - @Override  
582 - public int getBatchSize() {  
583 - return csrList.size();  
584 - }  
585 - });  
586 - }  
587 -  
588 - /**  
589 - * 批量插入站点  
590 - *  
591 - * @param cssList  
592 - */  
593 - private void batchInsertStation(final List<CascadeSaveStation> cssList, final int version) {  
594 - //站点  
595 - jdbcTemplate.batchUpdate("insert into bsth_c_station(id, station_cod, station_name, db_type, b_jwpoints, g_lonx, g_laty, destroy, radius, shapes_type, versions, g_polygon_grid) " +  
596 - " values(?,?,?,?,?,?,?,?,?,?,?,ST_GeomFromText(?))", new BatchPreparedStatementSetter() {  
597 - @Override  
598 - public void setValues(PreparedStatement ps, int i) throws SQLException {  
599 - CascadeSaveStation ss = cssList.get(i);  
600 - ps.setInt(1, ss.getStation());  
601 - ps.setString(2, ss.getStationCode());  
602 - ps.setString(3, ss.getStationName());  
603 - ps.setString(4, "b");  
604 - ps.setString(5, ss.getbJwpoints());  
605 - ps.setDouble(6, ss.getgLonx());  
606 - ps.setDouble(7, ss.getgLaty());  
607 - ps.setInt(8, 0);  
608 - ps.setInt(9, ss.getRadius()==null?0:ss.getRadius());  
609 - ps.setString(10, ss.getShapesType());  
610 - ps.setInt(11, version);  
611 - ps.setString(12, ss.getgPolygonGrid());  
612 - }  
613 -  
614 - @Override  
615 - public int getBatchSize() {  
616 - return cssList.size();  
617 - }  
618 - });  
619 -  
620 - final Date d = new Date();  
621 - //站点路由  
622 - jdbcTemplate.batchUpdate("insert into bsth_c_ls_stationroute(line, station, station_name, station_route_code, line_code, station_code, station_mark, distances, to_time, destroy, versions, create_date, update_date,directions) " +  
623 - " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() {  
624 - @Override  
625 - public void setValues(PreparedStatement ps, int i) throws SQLException {  
626 - CascadeSaveStation ss = cssList.get(i);  
627 - ps.setInt(1, ss.getLine());  
628 - ps.setInt(2, ss.getStation());  
629 - ps.setString(3, ss.getStationName());  
630 - ps.setInt(4, ss.getStationRouteCode());  
631 - ps.setString(5, ss.getLineCode());  
632 - ps.setString(6, ss.getStationCode());  
633 - ps.setString(7, ss.getStationMark());  
634 - ps.setDouble(8, ss.getDistances());  
635 - ps.setDouble(9, ss.getToTime());  
636 - ps.setInt(10, 0);  
637 - ps.setInt(11, version);  
638 - ps.setTimestamp(12, new java.sql.Timestamp(d.getTime()));  
639 - ps.setTimestamp(13, new java.sql.Timestamp(d.getTime()));  
640 - ps.setInt(14, ss.getDirections());  
641 - }  
642 -  
643 - @Override  
644 - public int getBatchSize() {  
645 - return cssList.size();  
646 - }  
647 - });  
648 - }  
649 -  
650 - @Override  
651 - public Map<String, Object> addNewStationRoute(String lineCode, int upDown, int versions, String stationName, Float lat, Float lng, int prevRouteId) {  
652 - Map<String, Object> rs = new HashMap<>();  
653 -  
654 - //编程式事务  
655 - DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());  
656 - DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
657 - def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);  
658 - TransactionStatus status = tran.getTransaction(def);  
659 - try {  
660 - //根据线路编码,查询线路ID  
661 - int lineId = jdbcTemplate.queryForObject("select id from bsth_c_line where line_code=" + lineCode, Integer.class);  
662 -  
663 - String sql = "select * from bsth_c_ls_stationroute where line_code='" + lineCode + "' and line=" + lineId + " and directions=" + upDown + " and destroy=0 and versions=" + versions;  
664 - List<SaveStationRouteDTO> routes = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SaveStationRouteDTO.class));  
665 -  
666 - for (SaveStationRouteDTO s : routes) {  
667 - if (s.getStationName().equals(stationName)) {  
668 -  
669 - rs.put("status", ResponseCode.ERROR);  
670 - rs.put("msg", "重复的站点路由名称!");  
671 - return rs;  
672 - }  
673 - }  
674 - //按路由顺序排列  
675 - Collections.sort(routes, new StationRouteComp());  
676 -  
677 - //转WGS  
678 - TransGPS.Location wgsLoc = TransGPS.transformFromGCJToWGS(TransGPS.bd_decrypt(TransGPS.LocationMake(Double.parseDouble(String.valueOf(lng)), Double.parseDouble(String.valueOf(lat)))));  
679 -  
680 - //insert 站点  
681 - long sCode = GetUIDAndCode.getStationId();  
682 - jdbcTemplate.update("insert into bsth_c_station(id, station_cod, station_name, db_type, b_jwpoints, g_lonx, g_laty, destroy, radius, shapes_type, versions) " +  
683 - " values(?,?,?,?,?,?,?,?,?,?,?)", sCode, sCode, stationName, "b", lng + " " + lat, wgsLoc.getLng(), wgsLoc.getLat(), 0, 88, "r", 1);  
684 -  
685 -  
686 - SaveStationRouteDTO sr;  
687 - int currentNo = -1,  
688 - no = 100, step = 100;  
689 -  
690 - if (prevRouteId == -1) {  
691 - //起点站  
692 - currentNo = no;  
693 - no += step;  
694 - }  
695 - //重新排序路由  
696 - for (int i = 0, size = routes.size(); i < size; i++) {  
697 - sr = routes.get(i);  
698 - sr.setStationRouteCode(no);  
699 - no += step;  
700 - if (sr.getId().intValue() == prevRouteId) {  
701 - currentNo = no;  
702 - no += step;  
703 - }  
704 - }  
705 -  
706 - SaveStationRouteDTO nsr = new SaveStationRouteDTO();  
707 - nsr.setLine(lineId);  
708 - nsr.setLineCode(lineCode);  
709 - nsr.setDirections(upDown);  
710 - nsr.setVersions(versions);  
711 - nsr.setStationRouteCode(currentNo);  
712 - nsr.setStation(sCode);  
713 - nsr.setStationCode(sCode + "");  
714 - nsr.setStationName(stationName);  
715 - nsr.setDistances(0d);  
716 - nsr.setToTime(0d);  
717 - Date d = new Date();  
718 - nsr.setCreateDate(d);  
719 - nsr.setUpdateDate(d);  
720 - nsr.setDestroy(0);  
721 - if (prevRouteId == -1)  
722 - nsr.setStationMark("B");  
723 - else if(routes.size()==1)  
724 - nsr.setStationMark("E");  
725 -  
726 - //routes.add(sr);  
727 -  
728 - //重新标记mark  
729 - Collections.sort(routes, new StationRouteComp());  
730 - for (int i = 0, size = routes.size(); i < size; i++) {  
731 - routes.get(i).setStationMark("Z");  
732 - }  
733 - if(routes.size() > 0 && prevRouteId!=-1)  
734 - routes.get(0).setStationMark("B");  
735 - if(routes.size() > 1)  
736 - routes.get(routes.size() - 1).setStationMark("E");  
737 -  
738 - final List<SaveStationRouteDTO> saveList = routes;  
739 - //insert 新路由 (ID自增)  
740 - jdbcTemplate.update("insert into bsth_c_ls_stationroute(line, station, station_name, station_route_code, line_code, station_code, station_mark, distances, to_time, destroy, versions, create_date, update_date,directions) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"  
741 - , nsr.getLine(), nsr.getStation(), nsr.getStationName(), nsr.getStationRouteCode(), nsr.getLineCode(), nsr.getStationCode(), nsr.getStationMark()  
742 - , nsr.getDistances(), nsr.getToTime(), nsr.getDestroy(), nsr.getVersions(), nsr.getCreateDate(), nsr.getUpdateDate(), nsr.getDirections());  
743 -  
744 - // update 原路由  
745 - jdbcTemplate.batchUpdate("update bsth_c_ls_stationroute set line=?,station=?,station_name=?,station_route_code=?," +  
746 - "line_code=?,station_code=?,station_mark=?,distances=?,to_time=?,destroy=?,versions=?,create_date=?,update_date=?,directions=?" +  
747 - " where id=?"  
748 - , new BatchPreparedStatementSetter() {  
749 - @Override  
750 - public void setValues(PreparedStatement ps, int i) throws SQLException {  
751 - SaveStationRouteDTO sr = saveList.get(i);  
752 - ps.setInt(1, sr.getLine());  
753 - ps.setLong(2, sr.getStation());  
754 - ps.setString(3, sr.getStationName());  
755 - ps.setInt(4, sr.getStationRouteCode());  
756 - ps.setString(5, sr.getLineCode());  
757 - ps.setString(6, sr.getStationCode());  
758 - ps.setString(7, sr.getStationMark());  
759 - ps.setDouble(8, sr.getDistances());  
760 - ps.setDouble(9, sr.getToTime());  
761 - ps.setInt(10, sr.getDestroy());  
762 - ps.setInt(11, sr.getVersions());  
763 - ps.setTimestamp(12, new java.sql.Timestamp(sr.getCreateDate().getTime()));  
764 - ps.setTimestamp(13, new java.sql.Timestamp(sr.getUpdateDate().getTime()));  
765 - ps.setInt(14, sr.getDirections());  
766 - ps.setInt(15, sr.getId());  
767 - }  
768 -  
769 - @Override  
770 - public int getBatchSize() {  
771 - return saveList.size();  
772 - }  
773 - });  
774 -  
775 - //写一条走向变更记录  
776 - jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions);  
777 -  
778 - tran.commit(status);  
779 -  
780 - //返回更新之后的数据  
781 - List<GeoStation> list = findByUpdown(lineCode, upDown, versions);  
782 -  
783 - rs.put("list", list);  
784 - rs.put("newStationRouteCode", currentNo);  
785 - rs.put("status", ResponseCode.SUCCESS);  
786 - } catch (Exception e) {  
787 - tran.rollback(status);  
788 - logger.error("", e);  
789 - rs.put("status", ResponseCode.ERROR);  
790 - rs.put("msg", "服务器出现异常");  
791 - }  
792 - return rs;  
793 - }  
794 -  
795 - private List<GeoStation> findByUpdown(String lineCode, int upDown, int versions) {  
796 - //返回更新之后的数据  
797 - String sql = "select t1.*,t2.g_lonx,g_laty,ST_AsText(g_polygon_grid) as g_polygon_grid,radius,shapes_type from (select id,station_name,station_route_code,line_code,station_code,station_mark,versions,directions from bsth_c_ls_stationroute where line=" + lineCode + " and directions=" + upDown + " and destroy=0 and versions=" + versions + ") t1 LEFT JOIN bsth_c_station t2 on t1.station_code=t2.station_cod";  
798 - List<GeoStation> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoStation.class));  
799 -  
800 - for (GeoStation station : list) {  
801 - if (station.getShapesType().equals("d"))  
802 - station.setBdCoords(multiWgsToBd(station.getgPolygonGrid(), 9, 3));  
803 - }  
804 - return list;  
805 - }  
806 -  
807 - private List<GeoRoad> findRoadByUpdown(String lineCode, int upDown, int versions) {  
808 - //返回更新之后的数据  
809 - String sql = "select t1.*,t2.section_name,t2.croses_road,ST_AsText(t2.gsection_vector) as gsection_vector from (select id,sectionroute_code,directions,line_code,section_code,versions from bsth_c_ls_sectionroute where line='" + lineCode + "' and directions=" + upDown + " and destroy=0 and versions=" + versions + ") t1 LEFT JOIN bsth_c_section t2 on t1.section_code=t2.section_code";  
810 - List<GeoRoad> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoRoad.class));  
811 -  
812 - for (GeoRoad road : list) {  
813 - road.setBdCoords(multiWgsToBd(road.getGsectionVector(), 11, 2));  
814 - }  
815 - return list;  
816 - }  
817 -  
818 - @Override  
819 - public Map<String, Object> destroyStation(GeoStation station) {  
820 - Map<String, Object> rs = new HashMap<>();  
821 -  
822 - //编程式事务  
823 - DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());  
824 - DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
825 - def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);  
826 - TransactionStatus status = tran.getTransaction(def);  
827 - try {  
828 - String sql = "update bsth_c_ls_stationroute set destroy=1 where id=?";  
829 - jdbcTemplate.update(sql, station.getId());  
830 -  
831 - /**  
832 - * ########## 重新排序路由,标记mark #########  
833 - */  
834 - sql = "select * from bsth_c_ls_stationroute where line_code='" + station.getLineCode() + "' and directions=" + station.getDirections() + " and destroy=0 and versions=" + station.getVersions();  
835 - List<SaveStationRouteDTO> routes = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SaveStationRouteDTO.class));  
836 - Collections.sort(routes, new StationRouteComp());  
837 -  
838 - int no = 0,  
839 - step = 100;  
840 - SaveStationRouteDTO sr;  
841 - //重新排序路由  
842 - for (int i = 0, size = routes.size(); i < size; i++) {  
843 - sr = routes.get(i);  
844 - sr.setStationRouteCode(no += step);  
845 - }  
846 -  
847 - for (int i = 0, size = routes.size(); i < size; i++) {  
848 - routes.get(i).setStationMark("Z");  
849 - }  
850 - if(routes.size() > 0)  
851 - routes.get(0).setStationMark("B");  
852 - if(routes.size() > 1)  
853 - routes.get(routes.size() - 1).setStationMark("E");  
854 -  
855 - final List<SaveStationRouteDTO> saveList = routes;  
856 - // update 原路由  
857 - jdbcTemplate.batchUpdate("update bsth_c_ls_stationroute set line=?,station=?,station_name=?,station_route_code=?," +  
858 - "line_code=?,station_code=?,station_mark=?,distances=?,to_time=?,destroy=?,versions=?,create_date=?,update_date=?,directions=?" +  
859 - " where id=?"  
860 - , new BatchPreparedStatementSetter() {  
861 - @Override  
862 - public void setValues(PreparedStatement ps, int i) throws SQLException {  
863 - SaveStationRouteDTO sr = saveList.get(i);  
864 - ps.setInt(1, sr.getLine());  
865 - ps.setLong(2, sr.getStation());  
866 - ps.setString(3, sr.getStationName());  
867 - ps.setInt(4, sr.getStationRouteCode());  
868 - ps.setString(5, sr.getLineCode());  
869 - ps.setString(6, sr.getStationCode());  
870 - ps.setString(7, sr.getStationMark());  
871 - ps.setDouble(8, sr.getDistances());  
872 - ps.setDouble(9, sr.getToTime());  
873 - ps.setInt(10, sr.getDestroy());  
874 - ps.setInt(11, sr.getVersions());  
875 - ps.setTimestamp(12, new java.sql.Timestamp(sr.getCreateDate().getTime()));  
876 - ps.setTimestamp(13, new java.sql.Timestamp(sr.getUpdateDate().getTime()));  
877 - ps.setInt(14, sr.getDirections());  
878 - ps.setInt(15, sr.getId());  
879 - }  
880 -  
881 - @Override  
882 - public int getBatchSize() {  
883 - return saveList.size();  
884 - }  
885 - });  
886 -  
887 - //写一条走向变更记录  
888 - jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), station.getLineCode(), station.getVersions());  
889 -  
890 - tran.commit(status);  
891 -  
892 - //返回更新之后的数据  
893 - List<GeoStation> list = findByUpdown(station.getLineCode(), station.getDirections(), station.getVersions());  
894 - rs.put("list", list);  
895 - rs.put("status", ResponseCode.SUCCESS);  
896 - } catch (Exception e) {  
897 - tran.rollback(status);  
898 - logger.error("", e);  
899 - rs.put("status", ResponseCode.ERROR);  
900 - rs.put("msg", "服务器出现异常");  
901 - }  
902 - return rs;  
903 - }  
904 -  
905 - @Override  
906 - public Map<String, Object> destroyRoad(GeoRoad road) {  
907 - Map<String, Object> rs = new HashMap<>();  
908 -  
909 - try {  
910 - String sql = "update bsth_c_ls_sectionroute set destroy=1 where id=?";  
911 - jdbcTemplate.update(sql, road.getId());  
912 -  
913 - //写一条走向变更记录  
914 - jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), road.getLineCode(), road.getVersions());  
915 -  
916 - //返回更新之后的数据  
917 - List<GeoRoad> list = findRoadByUpdown(road.getLineCode(), road.getDirections(), road.getVersions());  
918 - rs.put("list", list);  
919 - rs.put("status", ResponseCode.SUCCESS);  
920 - } catch (Exception e) {  
921 - logger.error("", e);  
922 - rs.put("status", ResponseCode.ERROR);  
923 - rs.put("msg", "服务器出现异常");  
924 - }  
925 - return rs;  
926 - }  
927 -  
928 - @Override  
929 - public Map<String, Object> updateRoadInfo(GeoRoad road) {  
930 - Map<String, Object> rs = new HashMap<>();  
931 -  
932 - try {  
933 - //坐标转换  
934 - String bdPolyline = "LINESTRING(" + road.getGsectionVector() + ")";  
935 - String wgsPolyline = "LINESTRING(" + bdPolygon2Wgs(road.getGsectionVector()) + ")";  
936 -  
937 - String sql = "update bsth_c_section set section_name=?, croses_road=?, bsection_vector=ST_GeomFromText('" + bdPolyline + "'),gsection_vector=ST_GeomFromText('" + wgsPolyline + "'),update_date=sysdate() where section_code=?";  
938 -  
939 - int rsCount = jdbcTemplate.update(sql, road.getSectionName(), road.getCrosesRoad(), road.getSectionCode());  
940 -  
941 - //从数据库里重新查询对象  
942 - if (rsCount > 0) {  
943 - rs.put("road", findOneRoad(road.getId()));  
944 - rs.put("status", ResponseCode.SUCCESS);  
945 - }  
946 - } catch (Exception e) {  
947 - logger.error("", e);  
948 - rs.put("status", ResponseCode.ERROR);  
949 - rs.put("msg", "服务器出现异常");  
950 - }  
951 - return rs;  
952 - }  
953 -  
954 -  
955 - /**  
956 - * 根据路由ID 获取站点  
957 - *  
958 - * @param id  
959 - * @return  
960 - */  
961 - private GeoStation findOne(int id) {  
962 - String sql = "SELECT t1.*, t2.g_lonx,g_laty,ST_AsText (g_polygon_grid) AS g_polygon_grid,radius,shapes_type FROM (SELECT id,station_name,station_route_code,line_code,station_code,station_mark,versions,directions FROM bsth_c_ls_stationroute WHERE id=" + id + " AND destroy = 0) t1 LEFT JOIN bsth_c_station t2 ON t1.station_code = t2.station_cod";  
963 - List<GeoStation> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoStation.class));  
964 -  
965 - GeoStation s = list.get(0);  
966 - if (s.getShapesType().equals("d"))  
967 - s.setBdCoords(multiWgsToBd(s.getgPolygonGrid(), 9, 3));  
968 -  
969 - return s;  
970 - }  
971 -  
972 - private GeoRoad findOneRoad(int id) {  
973 - String sql = "SELECT t1.*, t2.section_name,t2.croses_road,ST_AsText (t2.gsection_vector) AS gsection_vector FROM (SELECT id,sectionroute_code,directions,line_code,section_code,versions FROM bsth_c_ls_sectionroute WHERE id=" + id + ") t1 LEFT JOIN bsth_c_section t2 ON t1.section_code = t2.section_code";  
974 - List<GeoRoad> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoRoad.class));  
975 -  
976 - for (GeoRoad road : list) {  
977 - road.setBdCoords(multiWgsToBd(road.getGsectionVector(), 11, 2));  
978 - }  
979 - return list.size() > 0 ? list.get(0) : null;  
980 - }  
981 -  
982 - private String bdPolygon2Wgs(String bdPolygon) {  
983 - StringBuilder wgsPolygon = new StringBuilder();  
984 - List<String> list = Splitter.on(",").splitToList(bdPolygon);  
985 - String[] array;  
986 -  
987 - TransGPS.Location location;  
988 - for (String p : list) {  
989 - array = p.split(" ");  
990 - location = TransGPS.transformFromGCJToWGS(TransGPS.bd_decrypt(TransGPS.LocationMake(Double.parseDouble(array[0]), Double.parseDouble(array[1]))));  
991 -  
992 - wgsPolygon.append(location.getLng() + " " + location.getLat() + ",");  
993 - }  
994 -  
995 - if (wgsPolygon.length() > 0) {  
996 - wgsPolygon.deleteCharAt(wgsPolygon.length() - 1);  
997 - }  
998 - return wgsPolygon.toString();  
999 - }  
1000 -  
1001 - /**  
1002 - * wgs 坐标数组转 百度  
1003 - *  
1004 - * @return  
1005 - */  
1006 - private List<String> multiWgsToBd(String crdStr, int si, int ei) {  
1007 - List<String> bdList = new ArrayList<>();  
1008 -  
1009 - List<String> gList = Splitter.on(",").splitToList(crdStr.substring(si, crdStr.length() - ei));  
1010 - TransGPS.Location location;  
1011 - String[] cds;  
1012 - for (String gs : gList) {  
1013 - cds = gs.split(" ");  
1014 - location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(TransGPS.LocationMake(Double.parseDouble(cds[0]), Double.parseDouble(cds[1]))));  
1015 -  
1016 - bdList.add(location.getLng() + " " + location.getLat());  
1017 - }  
1018 - return bdList;  
1019 - }  
1020 -  
1021 - private static class StationRouteComp implements Comparator<SaveStationRouteDTO> {  
1022 -  
1023 - @Override  
1024 - public int compare(SaveStationRouteDTO s1, SaveStationRouteDTO s2) {  
1025 - return s1.getStationRouteCode() - s2.getStationRouteCode();  
1026 - }  
1027 - }  
1028 -  
1029 - private static class RoadRouteComp implements Comparator<SaveRoadRouteDTO> {  
1030 -  
1031 - @Override  
1032 - public int compare(SaveRoadRouteDTO s1, SaveRoadRouteDTO s2) {  
1033 - return s1.getSectionrouteCode() - s2.getSectionrouteCode();  
1034 - }  
1035 - } 1 +package com.bsth.service.geo_data.impl;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.entity.LineVersions;
  5 +import com.bsth.entity.geo_data.GeoLineVersionInfo;
  6 +import com.bsth.entity.geo_data.GeoRoad;
  7 +import com.bsth.entity.geo_data.GeoStation;
  8 +import com.bsth.repository.SectionRepository;
  9 +import com.bsth.repository.StationRepository;
  10 +import com.bsth.service.geo_data.GeoDataService;
  11 +import com.bsth.service.geo_data.impl.dto.CascadeSaveRoad;
  12 +import com.bsth.service.geo_data.impl.dto.CascadeSaveStation;
  13 +import com.bsth.service.geo_data.impl.dto.SaveRoadRouteDTO;
  14 +import com.bsth.service.geo_data.impl.dto.SaveStationRouteDTO;
  15 +import com.bsth.util.GetUIDAndCode;
  16 +import com.bsth.util.TransGPS;
  17 +import com.google.common.base.Splitter;
  18 +import org.slf4j.Logger;
  19 +import org.slf4j.LoggerFactory;
  20 +import org.springframework.beans.factory.annotation.Autowired;
  21 +import org.springframework.jdbc.core.BatchPreparedStatementSetter;
  22 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  23 +import org.springframework.jdbc.core.JdbcTemplate;
  24 +import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  25 +import org.springframework.stereotype.Service;
  26 +import org.springframework.transaction.TransactionDefinition;
  27 +import org.springframework.transaction.TransactionStatus;
  28 +import org.springframework.transaction.support.DefaultTransactionDefinition;
  29 +
  30 +import java.sql.PreparedStatement;
  31 +import java.sql.SQLException;
  32 +import java.text.SimpleDateFormat;
  33 +import java.util.*;
  34 +
  35 +/**
  36 + * Created by panzhao on 2017/12/8.
  37 + */
  38 +@Service
  39 +public class GeoDataServiceImpl implements GeoDataService {
  40 +
  41 + @Autowired
  42 + JdbcTemplate jdbcTemplate;
  43 +
  44 + @Autowired
  45 + SectionRepository sectionRepository;
  46 +
  47 + @Autowired
  48 + StationRepository stationRepository;
  49 +
  50 + Logger logger = LoggerFactory.getLogger(this.getClass());
  51 +
  52 + @Override
  53 + public Map<String, Object> findGeoStations(String lineCode, Integer version) {
  54 +
  55 + Map<String, Object> map = new HashMap();
  56 + try {
  57 +
  58 + String sql = "select versions from bsth_c_line_versions where line='"+lineCode+"' and status=1";
  59 + //当前使用的线路版本
  60 + Integer currentVersion = jdbcTemplate.queryForObject(sql, Integer.class);
  61 +
  62 +
  63 + if(null == version)
  64 + version = currentVersion;
  65 +
  66 + sql = "select t1.*,t2.g_lonx,g_laty,ST_AsText(g_polygon_grid) as g_polygon_grid,radius,shapes_type from (select id,station_name,station_route_code,line_code,station_code,station_mark,versions,directions from bsth_c_ls_stationroute where line=" + lineCode + " and destroy=0 and versions="+version+") t1 LEFT JOIN bsth_c_station t2 on t1.station_code=t2.station_cod";
  67 +
  68 +
  69 + List<GeoStation> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoStation.class));
  70 +
  71 + for (GeoStation station : list) {
  72 + if (station.getShapesType().equals("d"))
  73 + station.setBdCoords(multiWgsToBd(station.getgPolygonGrid(), 9, 3));
  74 + }
  75 + map.put("status", ResponseCode.SUCCESS);
  76 + map.put("list", list);
  77 + map.put("currentVersion", currentVersion);
  78 + map.put("editVersion", version);
  79 + } catch (Exception e) {
  80 + logger.error("", e);
  81 + map.put("status", ResponseCode.ERROR);
  82 + map.put("msg", "服务器出现异常");
  83 + }
  84 + return map;
  85 + }
  86 +
  87 + @Override
  88 + public Map<String, Object> findGeoRoad(String lineCode,Integer version) {
  89 + Map<String, Object> map = new HashMap();
  90 + try {
  91 +
  92 + String sql = "select versions from bsth_c_line_versions where line='"+lineCode+"' and status=1";
  93 + //当前使用的线路版本
  94 + Integer currentVersion = jdbcTemplate.queryForObject(sql, Integer.class);
  95 +
  96 +
  97 + if(null == version)
  98 + version = currentVersion;
  99 +
  100 +
  101 + sql = "select t1.*,t2.section_name,t2.croses_road,ST_AsText(t2.gsection_vector) as gsection_vector from (select id,sectionroute_code,directions,line_code,section_code,versions from bsth_c_ls_sectionroute where line=" + lineCode + " and destroy=0 and versions="+version+") t1 LEFT JOIN bsth_c_section t2 on t1.section_code=t2.section_code";
  102 +
  103 +
  104 + List<GeoRoad> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoRoad.class));
  105 +
  106 + for (GeoRoad road : list) {
  107 + road.setBdCoords(multiWgsToBd(road.getGsectionVector(), 11, 2));
  108 + }
  109 + map.put("status", ResponseCode.SUCCESS);
  110 + map.put("list", list);
  111 + } catch (Exception e) {
  112 + logger.error("", e);
  113 + map.put("status", ResponseCode.ERROR);
  114 + map.put("msg", "服务器出现异常");
  115 + }
  116 + return map;
  117 + }
  118 +
  119 + /**
  120 + * 编辑缓冲区信息
  121 + *
  122 + * @param station
  123 + * @return
  124 + */
  125 + @Override
  126 + public Map<String, Object> updateBufferInfo(GeoStation station) {
  127 + Map<String, Object> rs = new HashMap<>();
  128 + try {
  129 + //坐标转换
  130 + TransGPS.Location loc = TransGPS.LocationMake(station.getgLonx(), station.getgLaty());
  131 + loc = TransGPS.bd_decrypt(loc);
  132 + loc = TransGPS.transformFromGCJToWGS(loc);
  133 + station.setgLaty(Float.parseFloat(String.valueOf(loc.getLat())));
  134 + station.setgLonx(Float.parseFloat(String.valueOf(loc.getLng())));
  135 +
  136 + String sql;
  137 + String shapesType = station.getShapesType();
  138 + int rsCount = -1;
  139 + if (shapesType.equals("r")) {
  140 + sql = "update bsth_c_station set g_lonx=?, g_laty=?, radius=?,shapes_type='r' where station_cod=?";
  141 + rsCount = jdbcTemplate.update(sql, station.getgLonx(), station.getgLaty(), station.getRadius(), station.getStationCode());
  142 + } else if (shapesType.equals("d")) {
  143 + //多边形坐标转换
  144 + String bdPolygon = "POLYGON((" + station.getgPolygonGrid() + "))";
  145 + String wgsPolygon = "POLYGON((" + bdPolygon2Wgs(station.getgPolygonGrid()) + "))";
  146 + sql = "update bsth_c_station set g_lonx=?, g_laty=?,shapes_type='d', radius=null,b_polygon_grid=ST_GeomFromText('" + bdPolygon + "'),g_polygon_grid=ST_GeomFromText('" + wgsPolygon + "') where station_cod=?";
  147 +
  148 + rsCount = jdbcTemplate.update(sql, station.getgLonx(), station.getgLaty(), station.getStationCode());
  149 + }
  150 +
  151 + //从数据库里重新查询对象
  152 + if (rsCount > 0) {
  153 + rs.put("station", findOne(station.getId()));
  154 + rs.put("status", ResponseCode.SUCCESS);
  155 + }
  156 +
  157 + } catch (Exception e) {
  158 + logger.error("", e);
  159 + rs.put("status", ResponseCode.ERROR);
  160 + rs.put("msg", "服务器出现异常");
  161 + }
  162 + return rs;
  163 + }
  164 +
  165 + /**
  166 + * 修改站点路由和站点名称
  167 + *
  168 + * @param map
  169 + * @return
  170 + */
  171 + @Override
  172 + public Map<String, Object> updateStationName(Map<String, Object> map) {
  173 + Map<String, Object> rs = new HashMap<>();
  174 +
  175 + //编程式事务
  176 + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
  177 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  178 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  179 + TransactionStatus status = tran.getTransaction(def);
  180 + try {
  181 +
  182 + int id = Integer.parseInt(map.get("id").toString());
  183 + String name = map.get("stationName").toString();
  184 + String code = map.get("stationCode").toString();
  185 + String lineCode = map.get("lineCode").toString();
  186 + String versions = map.get("versions").toString();
  187 +
  188 + //更新历史站点路由
  189 + jdbcTemplate.update("update bsth_c_ls_stationroute set station_name=? where id=?", name, id);
  190 + //更新站点
  191 + jdbcTemplate.update("update bsth_c_station set station_name=? where station_cod=?", name, code);
  192 +
  193 + //写一条走向变更记录
  194 + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions);
  195 +
  196 + tran.commit(status);
  197 +
  198 + rs.put("station", findOne(id));
  199 + rs.put("status", ResponseCode.SUCCESS);
  200 + } catch (Exception e) {
  201 + tran.rollback(status);
  202 + logger.error("", e);
  203 + rs.put("status", ResponseCode.ERROR);
  204 + rs.put("msg", "服务器出现异常");
  205 + }
  206 + return rs;
  207 + }
  208 +
  209 + @Override
  210 + public Map<String, Object> addNewRoadRoute(String lineCode, int upDown, int versions, String sectionName, String crosesRoad, String coords, int prevRouteId) {
  211 + Map<String, Object> rs = new HashMap<>();
  212 +
  213 + //编程式事务
  214 + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
  215 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  216 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  217 + TransactionStatus status = tran.getTransaction(def);
  218 + try {
  219 + //根据线路编码,查询线路ID
  220 + int lineId = jdbcTemplate.queryForObject("select id from bsth_c_line where line_code=" + lineCode, Integer.class);
  221 +
  222 + String sql = "select * from bsth_c_ls_sectionroute where line_code='" + lineCode + "' and line=" + lineId + " and directions=" + upDown + " and destroy=0 and versions=" + versions;
  223 + List<SaveRoadRouteDTO> routes = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SaveRoadRouteDTO.class));
  224 +
  225 + Collections.sort(routes, new RoadRouteComp());
  226 +
  227 + long sCode = sectionRepository.sectionMaxId() + 1;
  228 + //转wgs
  229 + String wgsCoord = "LINESTRING(" + bdPolygon2Wgs(coords) + ")";
  230 + String bdCooed = "LINESTRING(" + coords + ")";
  231 + //insert 路段
  232 + sql = "insert into bsth_c_section(id, section_code, section_name, croses_road, bsection_vector, gsection_vector, create_date, update_date, versions) " +
  233 + " values(?,?,?,?,ST_GeomFromText('" + bdCooed + "'),ST_GeomFromText('" + wgsCoord + "'),sysdate(),sysdate(),?)";
  234 +
  235 + jdbcTemplate.update(sql, sCode, sCode, sectionName, crosesRoad, 1);
  236 +
  237 +
  238 + SaveRoadRouteDTO srr;
  239 + int currentNo = -1,
  240 + no = 100, step = 100;
  241 +
  242 + if (prevRouteId == -1) {
  243 + //起点站
  244 + currentNo = no;
  245 + no += step;
  246 + }
  247 + //重新排序路由
  248 + for (int i = 0, size = routes.size(); i < size; i++) {
  249 + srr = routes.get(i);
  250 + srr.setSectionrouteCode(no += step);
  251 + if (srr.getId().intValue() == prevRouteId) {
  252 + no += step;
  253 + currentNo = no;
  254 + }
  255 + }
  256 +
  257 + srr = new SaveRoadRouteDTO();
  258 + srr.setLine(lineId);
  259 + srr.setLineCode(lineCode);
  260 + srr.setDirections(upDown);
  261 + srr.setVersions(versions);
  262 +
  263 + srr.setSectionrouteCode(currentNo);
  264 + srr.setSection(sCode);
  265 + srr.setSectionCode(sCode + "");
  266 + srr.setIsRoadeSpeed(0);
  267 + srr.setDestroy(0);
  268 + Date d = new Date();
  269 + srr.setCreateDate(d);
  270 + srr.setUpdateDate(d);
  271 +
  272 + final List<SaveRoadRouteDTO> saveList = routes;
  273 + //insert 新路由 (ID自增)
  274 + jdbcTemplate.update("insert into bsth_c_ls_sectionroute(line_code, section_code, sectionroute_code, directions, line, section, create_date,update_date,versions,destroy,is_roade_speed)" +
  275 + " values(?,?,?,?,?,?,?,?,?,?,?)", srr.getLineCode(), srr.getSectionCode(), srr.getSectionrouteCode(), srr.getDirections(), srr.getLine(), srr.getSection(), srr.getCreateDate(), srr.getUpdateDate(), versions, srr.getDestroy(), srr.getIsRoadeSpeed());
  276 +
  277 + // update 原路由
  278 + jdbcTemplate.batchUpdate("update bsth_c_ls_sectionroute set sectionroute_code=? where id=?"
  279 + , new BatchPreparedStatementSetter() {
  280 + @Override
  281 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  282 + SaveRoadRouteDTO srr = saveList.get(i);
  283 + ps.setInt(1, srr.getSectionrouteCode());
  284 + ps.setInt(2, srr.getId());
  285 + }
  286 +
  287 + @Override
  288 + public int getBatchSize() {
  289 + return saveList.size();
  290 + }
  291 + });
  292 +
  293 +
  294 + //写一条走向变更记录
  295 + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions);
  296 +
  297 + tran.commit(status);
  298 +
  299 + //返回更新之后的数据
  300 + List<GeoRoad> list = findRoadByUpdown(lineCode, upDown, versions);
  301 + rs.put("list", list);
  302 + rs.put("status", ResponseCode.SUCCESS);
  303 + } catch (Exception e) {
  304 + tran.rollback(status);
  305 + logger.error("", e);
  306 + rs.put("status", ResponseCode.ERROR);
  307 + rs.put("msg", "服务器出现异常");
  308 + }
  309 + return rs;
  310 + }
  311 +
  312 + /**
  313 + * 获取线路版本信息
  314 + *
  315 + * @param lineCode
  316 + * @return
  317 + */
  318 + @Override
  319 + public Map<String, Object> findVersionInfo(String lineCode) {
  320 + Map<String, Object> rs = new HashMap<>();
  321 +
  322 + try {
  323 + String sql = "select t1.*,t2.name as line_name from bsth_c_line_versions t1 LEFT JOIN bsth_c_line t2 on t1.line_code=t2.line_code where t1.line_code='" + lineCode + "'";
  324 +
  325 + List<GeoLineVersionInfo> list =
  326 + jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoLineVersionInfo.class));
  327 +
  328 + rs.put("list", list);
  329 + rs.put("status", ResponseCode.SUCCESS);
  330 + } catch (Exception e) {
  331 + logger.error("", e);
  332 + rs.put("status", ResponseCode.ERROR);
  333 + rs.put("msg", "服务器出现异常");
  334 + }
  335 + return rs;
  336 + }
  337 +
  338 + @Override
  339 + public Map<String, Object> addNewLineVersion(Map<String, Object> map) {
  340 + Map<String, Object> rs = new HashMap<>();
  341 +
  342 + //编程式事务
  343 + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
  344 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  345 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  346 + TransactionStatus status = tran.getTransaction(def);
  347 + try {
  348 +
  349 + String lineCode = map.get("lineCode").toString();
  350 + String remark = map.get("remark").toString();
  351 + String name = map.get("name").toString();
  352 + Date startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(map.get("startDate").toString());
  353 + int extendsVersion = Integer.parseInt(map.get("extendsVersion").toString());
  354 +
  355 + if(startDate.getTime() - System.currentTimeMillis() < 1000 * 60 * 3){
  356 + rs.put("status", ResponseCode.ERROR);
  357 + rs.put("msg", "启用时间最少需要晚于当前服务器时间3分钟!");
  358 + return rs;
  359 + }
  360 +
  361 + int nameCount = jdbcTemplate.queryForObject("select count(*) from bsth_c_line_versions where line_code=" + lineCode + " and name='"+name+"'", Integer.class);
  362 + if(nameCount > 0){
  363 + rs.put("status", ResponseCode.ERROR);
  364 + rs.put("msg", "你不能使用一个已经存在的版本名称!!");
  365 + return rs;
  366 + }
  367 +
  368 + //当前最大的版本号
  369 + int maxVersion = jdbcTemplate.queryForObject("select max(versions) as versions from bsth_c_line_versions where line_code=" + lineCode, Integer.class);
  370 + Date d = new Date();
  371 +
  372 + //根据线路编码,查询线路ID
  373 + int lineId = jdbcTemplate.queryForObject("select id from bsth_c_line where line_code=" + lineCode, Integer.class);
  374 +
  375 + maxVersion += 1;
  376 + LineVersions lVersion = new LineVersions();
  377 + lVersion.setName(name);
  378 + lVersion.setVersions(maxVersion);
  379 + lVersion.setRemark(remark);
  380 + lVersion.setStartDate(startDate);
  381 + lVersion.setStatus(2);
  382 + lVersion.setCreateDate(d);
  383 + lVersion.setUpdateDate(d);
  384 + lVersion.setLineCode(lineCode);
  385 +
  386 + //如果有待启用的版本,设置为历史版本
  387 + jdbcTemplate.update("update bsth_c_line_versions set `status`=2, start_date=null,end_date=null where line_code='"+lineCode+"' and `status`=0");
  388 +
  389 + //入库线路版本
  390 + jdbcTemplate.update("insert into bsth_c_line_versions(name, line, line_code, versions, start_date, create_date, update_date, remark,status, isupdate) " +
  391 + " values(?,?,?,?,?,?,?,?,?,?)", lVersion.getName(), lineId, lVersion.getLineCode()
  392 + , lVersion.getVersions(), lVersion.getStartDate(), lVersion.getCreateDate(), lVersion.getUpdateDate(), lVersion.getRemark(), lVersion.getStatus(), lVersion.getIsupdate());
  393 +
  394 + if (extendsVersion != -1) {
  395 + //复制站点信息
  396 + String sql = "SELECT t1.id AS route_id,t1.line,t1.directions,t1.station,t1.station_name,t1.station_route_code,t1.line_code,t1.station_code,t1.station_mark,t1.distances,t1.to_time,t2.id AS station_id,t2.db_type,t2.b_jwpoints,t2.g_lonx,t2.g_laty,t2.radius,ST_AsText(t2.g_polygon_grid) as g_polygon_grid,t2.shapes_type FROM bsth_c_ls_stationroute t1 LEFT JOIN bsth_c_station t2 ON t1.station_code = t2.station_cod where t1.destroy=0 and t1.line_code='" + lineCode + "' and t1.versions="+extendsVersion+" order by t1.directions, t1.station_route_code";
  397 + List<CascadeSaveStation> cssList = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(CascadeSaveStation.class));
  398 +
  399 + //新的站点编码
  400 + long sCode;
  401 + for (CascadeSaveStation ss : cssList) {
  402 + sCode = stationRepository.stationMaxId() + 1;
  403 + ss.setRouteId(null);
  404 + ss.setStationCode(sCode + "");
  405 + ss.setStation((int) sCode);
  406 + }
  407 + //入库新版本的站点 和 路由
  408 + batchInsertStation(cssList, maxVersion);
  409 +
  410 + //复制路段信息
  411 + sql = "SELECT t1.id AS route_id,t1.line,t1.line_code,t1.directions,t1.section,t1.section_code,t1.sectionroute_code,t1.versions,t2.section_name,t2.croses_road,ST_AsText(t2.gsection_vector) as gsection_vector,t2.db_type,t2.speed_limit FROM bsth_c_ls_sectionroute t1 LEFT JOIN bsth_c_section t2 ON t1.section_code = t2.section_code WHERE t1.destroy = 0 AND t1.line_code = '"+lineCode+"' and t1.versions="+ extendsVersion +" ORDER BY t1.directions,t1.sectionroute_code";
  412 + List<CascadeSaveRoad> csrList = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(CascadeSaveRoad.class));
  413 + //新的路段编码
  414 + long cCode;
  415 + for(CascadeSaveRoad csr : csrList){
  416 + cCode = sectionRepository.sectionMaxId() + 1;
  417 + csr.setRouteId(null);
  418 + csr.setSection((int) cCode);
  419 + csr.setSectionCode(cCode + "");
  420 + }
  421 + //入库新版本的路段 和 路段路由
  422 + batchInsertRoad(csrList, maxVersion);
  423 + }
  424 +
  425 + tran.commit(status);
  426 + rs.put("newVersion", maxVersion);
  427 + rs.put("status", ResponseCode.SUCCESS);
  428 + } catch (Exception e) {
  429 + tran.rollback(status);
  430 + logger.error("", e);
  431 + rs.put("status", ResponseCode.ERROR);
  432 + rs.put("msg", "服务器出现异常");
  433 + }
  434 + return rs;
  435 + }
  436 +
  437 + /**
  438 + * 删除一个线路走向版本
  439 + * @param lineCode
  440 + * @param version
  441 + * @return
  442 + */
  443 + @Override
  444 + public Map<String, Object> deleteLineVersion(String lineCode, int version) {
  445 + Map<String, Object> rs = new HashMap<>();
  446 +
  447 + //编程式事务
  448 + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
  449 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  450 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  451 + TransactionStatus status = tran.getTransaction(def);
  452 + try{
  453 + int enableVersion = jdbcTemplate.queryForObject("select versions from bsth_c_line_versions where line_code='"+lineCode+"' and `status`=1", Integer.class);
  454 +
  455 + if(enableVersion==version){
  456 + rs.put("status", ResponseCode.ERROR);
  457 + rs.put("msg", "你不能删除当前正在启用的走向版本!");
  458 + return rs;
  459 + }
  460 + /*int versionCount = jdbcTemplate.queryForObject("select count(*) from bsth_c_line_versions where line_code='"+lineCode+"'", Integer.class);
  461 + if(versionCount == 1){
  462 + rs.put("status", ResponseCode.ERROR);
  463 + rs.put("msg", "线路至少要保留一个走向版本!");
  464 + return rs;
  465 + }*/
  466 +
  467 + /* //要删除的站点ID(未被其他线路、版本引用的)
  468 + String sql = "select DISTINCT station from bsth_c_ls_stationroute where line_code='"+lineCode+"' and versions="+version+" and station not in(" +
  469 + "select station from bsth_c_ls_stationroute where (line!='"+lineCode+"' or versions!="+version+") and station in (" +
  470 + "select station from bsth_c_ls_stationroute where line_code='"+lineCode+"' and versions="+version +
  471 + "))";
  472 +
  473 + List<Integer> stationRemoves = jdbcTemplate.queryForList(sql, Integer.class);*/
  474 +
  475 + //删除站点路由
  476 + String sql = "delete from bsth_c_ls_stationroute where line_code='"+lineCode+"' and versions=" + version;
  477 + jdbcTemplate.update(sql);
  478 +
  479 + //删除路段路由
  480 + sql = "delete from bsth_c_ls_sectionroute where line_code='"+lineCode+"' and versions=" + version;
  481 + jdbcTemplate.update(sql);
  482 +
  483 + //删除版本信息
  484 + sql = "delete from bsth_c_line_versions where line_code='"+lineCode+"' and versions=" + version;
  485 + jdbcTemplate.update(sql);
  486 +
  487 + tran.commit(status);
  488 + rs.put("status", ResponseCode.SUCCESS);
  489 + }catch (Exception e){
  490 + tran.rollback(status);
  491 + logger.error("", e);
  492 + rs.put("status", ResponseCode.ERROR);
  493 + rs.put("msg", "服务器出现异常");
  494 + }
  495 + return rs;
  496 + }
  497 +
  498 + /**
  499 + * 获取线路的待更新版本信息
  500 + * @param lineCode
  501 + * @return
  502 + */
  503 + @Override
  504 + public Map<String, Object> findFutureVersion(String lineCode) {
  505 + Map<String, Object> rs = new HashMap();
  506 + try{
  507 + List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from bsth_c_line_versions where line_code='"+lineCode+"' and `status`=2 order by start_date");
  508 +
  509 + rs.put("data", list);
  510 + rs.put("status", ResponseCode.SUCCESS);
  511 + }catch (Exception e){
  512 + logger.error("", e);
  513 + rs.put("status", ResponseCode.ERROR);
  514 + rs.put("msg", "服务器出现异常");
  515 + }
  516 + return rs;
  517 + }
  518 +
  519 + @Override
  520 + public Map<String, Object> addEnableInfo(String lineCode, int version, String enableTime) {
  521 + Map<String, Object> rs = new HashMap();
  522 + try{
  523 + Date startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(enableTime);
  524 + if(startDate.getTime() - System.currentTimeMillis() < 1000 * 60 * 3){
  525 + rs.put("status", ResponseCode.ERROR);
  526 + rs.put("msg", "启用时间最少需要晚于当前服务器时间3分钟!");
  527 + return rs;
  528 + }
  529 +
  530 + jdbcTemplate.update("update bsth_c_line_versions set `status`=0 where line_code="+lineCode+" and versions=" + version);
  531 + jdbcTemplate.update("update bsth_c_line_versions set `status`=2 ,start_date=? where line_code=? and versions=?", startDate, lineCode, version);
  532 +
  533 + rs.put("status", ResponseCode.SUCCESS);
  534 + }catch (Exception e){
  535 + logger.error("", e);
  536 + rs.put("status", ResponseCode.ERROR);
  537 + rs.put("msg", "服务器出现异常");
  538 + }
  539 + return rs;
  540 + }
  541 +
  542 + /**
  543 + * 批量入库路段
  544 + * @param cssList
  545 + * @param version
  546 + */
  547 + private void batchInsertRoad(final List<CascadeSaveRoad> csrList, final int version){
  548 + final Date d = new Date();
  549 + jdbcTemplate.batchUpdate("insert into bsth_c_section(id, section_code, section_name, croses_road, gsection_vector, create_date, update_date, versions) " +
  550 + " values(?,?,?,?,ST_GeomFromText(?),?,?,?)", new BatchPreparedStatementSetter() {
  551 + @Override
  552 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  553 + CascadeSaveRoad csr = csrList.get(i);
  554 + ps.setInt(1, csr.getSection());
  555 + ps.setString(2, csr.getSectionCode());
  556 + ps.setString(3, csr.getSectionName());
  557 + ps.setString(4, csr.getCrosesRoad());
  558 + ps.setString(5, csr.getGsectionVector());
  559 + ps.setTimestamp(6, new java.sql.Timestamp(d.getTime()));
  560 + ps.setTimestamp(7, new java.sql.Timestamp(d.getTime()));
  561 + ps.setInt(8, version);
  562 + }
  563 +
  564 + @Override
  565 + public int getBatchSize() {
  566 + return csrList.size();
  567 + }
  568 + });
  569 +
  570 + //路由
  571 + jdbcTemplate.batchUpdate("insert into bsth_c_ls_sectionroute(line_code, section_code, sectionroute_code, directions, line, section, create_date,update_date,versions,destroy,is_roade_speed) " +
  572 + " values(?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() {
  573 + @Override
  574 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  575 + CascadeSaveRoad csr = csrList.get(i);
  576 + ps.setString(1, csr.getLineCode());
  577 + ps.setString(2, csr.getSectionCode());
  578 + ps.setInt(3, csr.getSectionrouteCode());
  579 + ps.setInt(4, csr.getDirections());
  580 + ps.setInt(5, csr.getLine());
  581 + ps.setInt(6, csr.getSection());
  582 + ps.setTimestamp(7, new java.sql.Timestamp(d.getTime()));
  583 + ps.setTimestamp(8, new java.sql.Timestamp(d.getTime()));
  584 + ps.setInt(9, version);
  585 + ps.setInt(10, 0);
  586 + ps.setInt(11, 0);
  587 + }
  588 +
  589 + @Override
  590 + public int getBatchSize() {
  591 + return csrList.size();
  592 + }
  593 + });
  594 + }
  595 +
  596 + /**
  597 + * 批量插入站点
  598 + *
  599 + * @param cssList
  600 + */
  601 + private void batchInsertStation(final List<CascadeSaveStation> cssList, final int version) {
  602 + //站点
  603 + jdbcTemplate.batchUpdate("insert into bsth_c_station(id, station_cod, station_name, db_type, b_jwpoints, g_lonx, g_laty, destroy, radius, shapes_type, versions, g_polygon_grid) " +
  604 + " values(?,?,?,?,?,?,?,?,?,?,?,ST_GeomFromText(?))", new BatchPreparedStatementSetter() {
  605 + @Override
  606 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  607 + CascadeSaveStation ss = cssList.get(i);
  608 + ps.setInt(1, ss.getStation());
  609 + ps.setString(2, ss.getStationCode());
  610 + ps.setString(3, ss.getStationName());
  611 + ps.setString(4, "b");
  612 + ps.setString(5, ss.getbJwpoints());
  613 + ps.setDouble(6, ss.getgLonx());
  614 + ps.setDouble(7, ss.getgLaty());
  615 + ps.setInt(8, 0);
  616 + ps.setInt(9, ss.getRadius()==null?0:ss.getRadius());
  617 + ps.setString(10, ss.getShapesType());
  618 + ps.setInt(11, version);
  619 + ps.setString(12, ss.getgPolygonGrid());
  620 + }
  621 +
  622 + @Override
  623 + public int getBatchSize() {
  624 + return cssList.size();
  625 + }
  626 + });
  627 +
  628 + final Date d = new Date();
  629 + //站点路由
  630 + jdbcTemplate.batchUpdate("insert into bsth_c_ls_stationroute(line, station, station_name, station_route_code, line_code, station_code, station_mark, distances, to_time, destroy, versions, create_date, update_date,directions) " +
  631 + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)", new BatchPreparedStatementSetter() {
  632 + @Override
  633 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  634 + CascadeSaveStation ss = cssList.get(i);
  635 + ps.setInt(1, ss.getLine());
  636 + ps.setInt(2, ss.getStation());
  637 + ps.setString(3, ss.getStationName());
  638 + ps.setInt(4, ss.getStationRouteCode());
  639 + ps.setString(5, ss.getLineCode());
  640 + ps.setString(6, ss.getStationCode());
  641 + ps.setString(7, ss.getStationMark());
  642 + ps.setDouble(8, ss.getDistances());
  643 + ps.setDouble(9, ss.getToTime());
  644 + ps.setInt(10, 0);
  645 + ps.setInt(11, version);
  646 + ps.setTimestamp(12, new java.sql.Timestamp(d.getTime()));
  647 + ps.setTimestamp(13, new java.sql.Timestamp(d.getTime()));
  648 + ps.setInt(14, ss.getDirections());
  649 + }
  650 +
  651 + @Override
  652 + public int getBatchSize() {
  653 + return cssList.size();
  654 + }
  655 + });
  656 + }
  657 +
  658 + @Override
  659 + public Map<String, Object> addNewStationRoute(String lineCode, int upDown, int versions, String stationName, Float lat, Float lng, int prevRouteId) {
  660 + Map<String, Object> rs = new HashMap<>();
  661 +
  662 + //编程式事务
  663 + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
  664 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  665 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  666 + TransactionStatus status = tran.getTransaction(def);
  667 + try {
  668 + //根据线路编码,查询线路ID
  669 + int lineId = jdbcTemplate.queryForObject("select id from bsth_c_line where line_code=" + lineCode, Integer.class);
  670 +
  671 + String sql = "select * from bsth_c_ls_stationroute where line_code='" + lineCode + "' and line=" + lineId + " and directions=" + upDown + " and destroy=0 and versions=" + versions;
  672 + List<SaveStationRouteDTO> routes = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SaveStationRouteDTO.class));
  673 +
  674 + for (SaveStationRouteDTO s : routes) {
  675 + if (s.getStationName().equals(stationName)) {
  676 +
  677 + rs.put("status", ResponseCode.ERROR);
  678 + rs.put("msg", "重复的站点路由名称!");
  679 + return rs;
  680 + }
  681 + }
  682 + //按路由顺序排列
  683 + Collections.sort(routes, new StationRouteComp());
  684 +
  685 + //转WGS
  686 + TransGPS.Location wgsLoc = TransGPS.transformFromGCJToWGS(TransGPS.bd_decrypt(TransGPS.LocationMake(Double.parseDouble(String.valueOf(lng)), Double.parseDouble(String.valueOf(lat)))));
  687 +
  688 + //insert 站点
  689 + long sCode = stationRepository.stationMaxId() + 1;
  690 + jdbcTemplate.update("insert into bsth_c_station(id, station_cod, station_name, db_type, b_jwpoints, g_lonx, g_laty, destroy, radius, shapes_type, versions) " +
  691 + " values(?,?,?,?,?,?,?,?,?,?,?)", sCode, sCode, stationName, "b", lng + " " + lat, wgsLoc.getLng(), wgsLoc.getLat(), 0, 88, "r", 1);
  692 +
  693 +
  694 + SaveStationRouteDTO sr;
  695 + int currentNo = -1,
  696 + no = 100, step = 100;
  697 +
  698 + if (prevRouteId == -1) {
  699 + //起点站
  700 + currentNo = no;
  701 + no += step;
  702 + }
  703 + //重新排序路由
  704 + for (int i = 0, size = routes.size(); i < size; i++) {
  705 + sr = routes.get(i);
  706 + sr.setStationRouteCode(no);
  707 + no += step;
  708 + if (sr.getId().intValue() == prevRouteId) {
  709 + currentNo = no;
  710 + no += step;
  711 + }
  712 + }
  713 +
  714 + SaveStationRouteDTO nsr = new SaveStationRouteDTO();
  715 + nsr.setLine(lineId);
  716 + nsr.setLineCode(lineCode);
  717 + nsr.setDirections(upDown);
  718 + nsr.setVersions(versions);
  719 + nsr.setStationRouteCode(currentNo);
  720 + nsr.setStation(sCode);
  721 + nsr.setStationCode(sCode + "");
  722 + nsr.setStationName(stationName);
  723 + nsr.setDistances(0d);
  724 + nsr.setToTime(0d);
  725 + Date d = new Date();
  726 + nsr.setCreateDate(d);
  727 + nsr.setUpdateDate(d);
  728 + nsr.setDestroy(0);
  729 + if (prevRouteId == -1)
  730 + nsr.setStationMark("B");
  731 + else if(routes.size()==1)
  732 + nsr.setStationMark("E");
  733 +
  734 + //routes.add(sr);
  735 +
  736 + //重新标记mark
  737 + Collections.sort(routes, new StationRouteComp());
  738 + for (int i = 0, size = routes.size(); i < size; i++) {
  739 + routes.get(i).setStationMark("Z");
  740 + }
  741 + if(routes.size() > 0 && prevRouteId!=-1)
  742 + routes.get(0).setStationMark("B");
  743 + if(routes.size() > 1)
  744 + routes.get(routes.size() - 1).setStationMark("E");
  745 +
  746 + final List<SaveStationRouteDTO> saveList = routes;
  747 + //insert 新路由 (ID自增)
  748 + jdbcTemplate.update("insert into bsth_c_ls_stationroute(line, station, station_name, station_route_code, line_code, station_code, station_mark, distances, to_time, destroy, versions, create_date, update_date,directions) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
  749 + , nsr.getLine(), nsr.getStation(), nsr.getStationName(), nsr.getStationRouteCode(), nsr.getLineCode(), nsr.getStationCode(), nsr.getStationMark()
  750 + , nsr.getDistances(), nsr.getToTime(), nsr.getDestroy(), nsr.getVersions(), nsr.getCreateDate(), nsr.getUpdateDate(), nsr.getDirections());
  751 +
  752 + // update 原路由
  753 + jdbcTemplate.batchUpdate("update bsth_c_ls_stationroute set line=?,station=?,station_name=?,station_route_code=?," +
  754 + "line_code=?,station_code=?,station_mark=?,distances=?,to_time=?,destroy=?,versions=?,create_date=?,update_date=?,directions=?" +
  755 + " where id=?"
  756 + , new BatchPreparedStatementSetter() {
  757 + @Override
  758 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  759 + SaveStationRouteDTO sr = saveList.get(i);
  760 + ps.setInt(1, sr.getLine());
  761 + ps.setLong(2, sr.getStation());
  762 + ps.setString(3, sr.getStationName());
  763 + ps.setInt(4, sr.getStationRouteCode());
  764 + ps.setString(5, sr.getLineCode());
  765 + ps.setString(6, sr.getStationCode());
  766 + ps.setString(7, sr.getStationMark());
  767 + ps.setDouble(8, sr.getDistances());
  768 + ps.setDouble(9, sr.getToTime());
  769 + ps.setInt(10, sr.getDestroy());
  770 + ps.setInt(11, sr.getVersions());
  771 + ps.setTimestamp(12, new java.sql.Timestamp(sr.getCreateDate().getTime()));
  772 + ps.setTimestamp(13, new java.sql.Timestamp(sr.getUpdateDate().getTime()));
  773 + ps.setInt(14, sr.getDirections());
  774 + ps.setInt(15, sr.getId());
  775 + }
  776 +
  777 + @Override
  778 + public int getBatchSize() {
  779 + return saveList.size();
  780 + }
  781 + });
  782 +
  783 + //写一条走向变更记录
  784 + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), lineCode, versions);
  785 +
  786 + tran.commit(status);
  787 +
  788 + //返回更新之后的数据
  789 + List<GeoStation> list = findByUpdown(lineCode, upDown, versions);
  790 +
  791 + rs.put("list", list);
  792 + rs.put("newStationRouteCode", currentNo);
  793 + rs.put("status", ResponseCode.SUCCESS);
  794 + } catch (Exception e) {
  795 + tran.rollback(status);
  796 + logger.error("", e);
  797 + rs.put("status", ResponseCode.ERROR);
  798 + rs.put("msg", "服务器出现异常");
  799 + }
  800 + return rs;
  801 + }
  802 +
  803 + private List<GeoStation> findByUpdown(String lineCode, int upDown, int versions) {
  804 + //返回更新之后的数据
  805 + String sql = "select t1.*,t2.g_lonx,g_laty,ST_AsText(g_polygon_grid) as g_polygon_grid,radius,shapes_type from (select id,station_name,station_route_code,line_code,station_code,station_mark,versions,directions from bsth_c_ls_stationroute where line=" + lineCode + " and directions=" + upDown + " and destroy=0 and versions=" + versions + ") t1 LEFT JOIN bsth_c_station t2 on t1.station_code=t2.station_cod";
  806 + List<GeoStation> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoStation.class));
  807 +
  808 + for (GeoStation station : list) {
  809 + if (station.getShapesType().equals("d"))
  810 + station.setBdCoords(multiWgsToBd(station.getgPolygonGrid(), 9, 3));
  811 + }
  812 + return list;
  813 + }
  814 +
  815 + private List<GeoRoad> findRoadByUpdown(String lineCode, int upDown, int versions) {
  816 + //返回更新之后的数据
  817 + String sql = "select t1.*,t2.section_name,t2.croses_road,ST_AsText(t2.gsection_vector) as gsection_vector from (select id,sectionroute_code,directions,line_code,section_code,versions from bsth_c_ls_sectionroute where line='" + lineCode + "' and directions=" + upDown + " and destroy=0 and versions=" + versions + ") t1 LEFT JOIN bsth_c_section t2 on t1.section_code=t2.section_code";
  818 + List<GeoRoad> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoRoad.class));
  819 +
  820 + for (GeoRoad road : list) {
  821 + road.setBdCoords(multiWgsToBd(road.getGsectionVector(), 11, 2));
  822 + }
  823 + return list;
  824 + }
  825 +
  826 + @Override
  827 + public Map<String, Object> destroyStation(GeoStation station) {
  828 + Map<String, Object> rs = new HashMap<>();
  829 +
  830 + //编程式事务
  831 + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
  832 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  833 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  834 + TransactionStatus status = tran.getTransaction(def);
  835 + try {
  836 + String sql = "update bsth_c_ls_stationroute set destroy=1 where id=?";
  837 + jdbcTemplate.update(sql, station.getId());
  838 +
  839 + /**
  840 + * ########## 重新排序路由,标记mark #########
  841 + */
  842 + sql = "select * from bsth_c_ls_stationroute where line_code='" + station.getLineCode() + "' and directions=" + station.getDirections() + " and destroy=0 and versions=" + station.getVersions();
  843 + List<SaveStationRouteDTO> routes = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SaveStationRouteDTO.class));
  844 + Collections.sort(routes, new StationRouteComp());
  845 +
  846 + int no = 0,
  847 + step = 100;
  848 + SaveStationRouteDTO sr;
  849 + //重新排序路由
  850 + for (int i = 0, size = routes.size(); i < size; i++) {
  851 + sr = routes.get(i);
  852 + sr.setStationRouteCode(no += step);
  853 + }
  854 +
  855 + for (int i = 0, size = routes.size(); i < size; i++) {
  856 + routes.get(i).setStationMark("Z");
  857 + }
  858 + if(routes.size() > 0)
  859 + routes.get(0).setStationMark("B");
  860 + if(routes.size() > 1)
  861 + routes.get(routes.size() - 1).setStationMark("E");
  862 +
  863 + final List<SaveStationRouteDTO> saveList = routes;
  864 + // update 原路由
  865 + jdbcTemplate.batchUpdate("update bsth_c_ls_stationroute set line=?,station=?,station_name=?,station_route_code=?," +
  866 + "line_code=?,station_code=?,station_mark=?,distances=?,to_time=?,destroy=?,versions=?,create_date=?,update_date=?,directions=?" +
  867 + " where id=?"
  868 + , new BatchPreparedStatementSetter() {
  869 + @Override
  870 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  871 + SaveStationRouteDTO sr = saveList.get(i);
  872 + ps.setInt(1, sr.getLine());
  873 + ps.setLong(2, sr.getStation());
  874 + ps.setString(3, sr.getStationName());
  875 + ps.setInt(4, sr.getStationRouteCode());
  876 + ps.setString(5, sr.getLineCode());
  877 + ps.setString(6, sr.getStationCode());
  878 + ps.setString(7, sr.getStationMark());
  879 + ps.setDouble(8, sr.getDistances());
  880 + ps.setDouble(9, sr.getToTime());
  881 + ps.setInt(10, sr.getDestroy());
  882 + ps.setInt(11, sr.getVersions());
  883 + ps.setTimestamp(12, new java.sql.Timestamp(sr.getCreateDate().getTime()));
  884 + ps.setTimestamp(13, new java.sql.Timestamp(sr.getUpdateDate().getTime()));
  885 + ps.setInt(14, sr.getDirections());
  886 + ps.setInt(15, sr.getId());
  887 + }
  888 +
  889 + @Override
  890 + public int getBatchSize() {
  891 + return saveList.size();
  892 + }
  893 + });
  894 +
  895 + //写一条走向变更记录
  896 + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), station.getLineCode(), station.getVersions());
  897 +
  898 + tran.commit(status);
  899 +
  900 + //返回更新之后的数据
  901 + List<GeoStation> list = findByUpdown(station.getLineCode(), station.getDirections(), station.getVersions());
  902 + rs.put("list", list);
  903 + rs.put("status", ResponseCode.SUCCESS);
  904 + } catch (Exception e) {
  905 + tran.rollback(status);
  906 + logger.error("", e);
  907 + rs.put("status", ResponseCode.ERROR);
  908 + rs.put("msg", "服务器出现异常");
  909 + }
  910 + return rs;
  911 + }
  912 +
  913 + @Override
  914 + public Map<String, Object> destroyRoad(GeoRoad road) {
  915 + Map<String, Object> rs = new HashMap<>();
  916 +
  917 + try {
  918 + String sql = "update bsth_c_ls_sectionroute set destroy=1 where id=?";
  919 + jdbcTemplate.update(sql, road.getId());
  920 +
  921 + //写一条走向变更记录
  922 + jdbcTemplate.update("insert into logger_route_synchro(t, line_code, version) values(?, ?, ?)", System.currentTimeMillis(), road.getLineCode(), road.getVersions());
  923 +
  924 + //返回更新之后的数据
  925 + List<GeoRoad> list = findRoadByUpdown(road.getLineCode(), road.getDirections(), road.getVersions());
  926 + rs.put("list", list);
  927 + rs.put("status", ResponseCode.SUCCESS);
  928 + } catch (Exception e) {
  929 + logger.error("", e);
  930 + rs.put("status", ResponseCode.ERROR);
  931 + rs.put("msg", "服务器出现异常");
  932 + }
  933 + return rs;
  934 + }
  935 +
  936 + @Override
  937 + public Map<String, Object> updateRoadInfo(GeoRoad road) {
  938 + Map<String, Object> rs = new HashMap<>();
  939 +
  940 + try {
  941 + //坐标转换
  942 + String bdPolyline = "LINESTRING(" + road.getGsectionVector() + ")";
  943 + String wgsPolyline = "LINESTRING(" + bdPolygon2Wgs(road.getGsectionVector()) + ")";
  944 +
  945 + String sql = "update bsth_c_section set section_name=?, croses_road=?, bsection_vector=ST_GeomFromText('" + bdPolyline + "'),gsection_vector=ST_GeomFromText('" + wgsPolyline + "'),update_date=sysdate() where section_code=?";
  946 +
  947 + int rsCount = jdbcTemplate.update(sql, road.getSectionName(), road.getCrosesRoad(), road.getSectionCode());
  948 +
  949 + //从数据库里重新查询对象
  950 + if (rsCount > 0) {
  951 + rs.put("road", findOneRoad(road.getId()));
  952 + rs.put("status", ResponseCode.SUCCESS);
  953 + }
  954 + } catch (Exception e) {
  955 + logger.error("", e);
  956 + rs.put("status", ResponseCode.ERROR);
  957 + rs.put("msg", "服务器出现异常");
  958 + }
  959 + return rs;
  960 + }
  961 +
  962 +
  963 + /**
  964 + * 根据路由ID 获取站点
  965 + *
  966 + * @param id
  967 + * @return
  968 + */
  969 + private GeoStation findOne(int id) {
  970 + String sql = "SELECT t1.*, t2.g_lonx,g_laty,ST_AsText (g_polygon_grid) AS g_polygon_grid,radius,shapes_type FROM (SELECT id,station_name,station_route_code,line_code,station_code,station_mark,versions,directions FROM bsth_c_ls_stationroute WHERE id=" + id + " AND destroy = 0) t1 LEFT JOIN bsth_c_station t2 ON t1.station_code = t2.station_cod";
  971 + List<GeoStation> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoStation.class));
  972 +
  973 + GeoStation s = list.get(0);
  974 + if (s.getShapesType().equals("d"))
  975 + s.setBdCoords(multiWgsToBd(s.getgPolygonGrid(), 9, 3));
  976 +
  977 + return s;
  978 + }
  979 +
  980 + private GeoRoad findOneRoad(int id) {
  981 + String sql = "SELECT t1.*, t2.section_name,t2.croses_road,ST_AsText (t2.gsection_vector) AS gsection_vector FROM (SELECT id,sectionroute_code,directions,line_code,section_code,versions FROM bsth_c_ls_sectionroute WHERE id=" + id + ") t1 LEFT JOIN bsth_c_section t2 ON t1.section_code = t2.section_code";
  982 + List<GeoRoad> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(GeoRoad.class));
  983 +
  984 + for (GeoRoad road : list) {
  985 + road.setBdCoords(multiWgsToBd(road.getGsectionVector(), 11, 2));
  986 + }
  987 + return list.size() > 0 ? list.get(0) : null;
  988 + }
  989 +
  990 + private String bdPolygon2Wgs(String bdPolygon) {
  991 + StringBuilder wgsPolygon = new StringBuilder();
  992 + List<String> list = Splitter.on(",").splitToList(bdPolygon);
  993 + String[] array;
  994 +
  995 + TransGPS.Location location;
  996 + for (String p : list) {
  997 + array = p.split(" ");
  998 + location = TransGPS.transformFromGCJToWGS(TransGPS.bd_decrypt(TransGPS.LocationMake(Double.parseDouble(array[0]), Double.parseDouble(array[1]))));
  999 +
  1000 + wgsPolygon.append(location.getLng() + " " + location.getLat() + ",");
  1001 + }
  1002 +
  1003 + if (wgsPolygon.length() > 0) {
  1004 + wgsPolygon.deleteCharAt(wgsPolygon.length() - 1);
  1005 + }
  1006 + return wgsPolygon.toString();
  1007 + }
  1008 +
  1009 + /**
  1010 + * wgs 坐标数组转 百度
  1011 + *
  1012 + * @return
  1013 + */
  1014 + private List<String> multiWgsToBd(String crdStr, int si, int ei) {
  1015 + List<String> bdList = new ArrayList<>();
  1016 +
  1017 + List<String> gList = Splitter.on(",").splitToList(crdStr.substring(si, crdStr.length() - ei));
  1018 + TransGPS.Location location;
  1019 + String[] cds;
  1020 + for (String gs : gList) {
  1021 + cds = gs.split(" ");
  1022 + location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(TransGPS.LocationMake(Double.parseDouble(cds[0]), Double.parseDouble(cds[1]))));
  1023 +
  1024 + bdList.add(location.getLng() + " " + location.getLat());
  1025 + }
  1026 + return bdList;
  1027 + }
  1028 +
  1029 + private static class StationRouteComp implements Comparator<SaveStationRouteDTO> {
  1030 +
  1031 + @Override
  1032 + public int compare(SaveStationRouteDTO s1, SaveStationRouteDTO s2) {
  1033 + return s1.getStationRouteCode() - s2.getStationRouteCode();
  1034 + }
  1035 + }
  1036 +
  1037 + private static class RoadRouteComp implements Comparator<SaveRoadRouteDTO> {
  1038 +
  1039 + @Override
  1040 + public int compare(SaveRoadRouteDTO s1, SaveRoadRouteDTO s2) {
  1041 + return s1.getSectionrouteCode() - s2.getSectionrouteCode();
  1042 + }
  1043 + }
1036 } 1044 }
1037 \ No newline at end of file 1045 \ No newline at end of file
src/main/java/com/bsth/service/impl/CarParkServiceImpl.java
1 -package com.bsth.service.impl;  
2 -  
3 -import java.text.SimpleDateFormat;  
4 -import java.util.ArrayList;  
5 -import java.util.Date;  
6 -import java.util.HashMap;  
7 -import java.util.List;  
8 -import java.util.Map;  
9 -  
10 -import com.bsth.common.ResponseCode;  
11 -import com.bsth.entity.CarPark;  
12 -import com.bsth.repository.CarParkRepository;  
13 -import com.bsth.service.CarParkService;  
14 -import com.bsth.util.TransGPS;  
15 -import com.bsth.util.TransGPS.Location;  
16 -  
17 -import org.springframework.beans.factory.annotation.Autowired;  
18 -import org.springframework.stereotype.Service;  
19 -  
20 -  
21 -@Service  
22 -public class CarParkServiceImpl extends BaseServiceImpl<CarPark, Integer> implements CarParkService {  
23 -  
24 - @Autowired  
25 - CarParkRepository carParkRepository;  
26 -  
27 - @Override  
28 - public Map<String, Object> carParkSave(Map<String, Object> map) {  
29 - Map<String, Object> resultMap = new HashMap<String, Object>();  
30 - try {  
31 - // 停车场编码  
32 - String parkCode = map.get("parkCode").equals("") ? null : map.get("parkCode").toString();  
33 - if (!selectTccInfoByCode(map)) {  
34 - resultMap.put("status", ResponseCode.ERROR);  
35 - return resultMap;  
36 - }  
37 - // 停车场名称  
38 - String parkName = map.get("parkName").equals("") ? "" : map.get("parkName").toString();  
39 - // 地理位置(百度坐标集合)  
40 - String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();  
41 - // 多边形WGS坐标点集合  
42 - String gParkPoint ="";  
43 - if(!bParkPoint.equals("")) {  
44 - String bPloygonGridArray[] = bParkPoint.split(",");  
45 - int bLen_ = bPloygonGridArray.length;  
46 - for(int b = 0 ;b<bLen_;b++) {  
47 - String tempArray[]= bPloygonGridArray[b].split(" ");  
48 - Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);  
49 - if(b==0) {  
50 - gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();  
51 - }else {  
52 - gParkPoint = gParkPoint + ',' + resultPoint.getLng() + " " + resultPoint.getLat();  
53 - }  
54 - }  
55 -  
56 - }  
57 - if(bParkPoint.equals(""))  
58 - bParkPoint = null;  
59 - else  
60 - bParkPoint = "POLYGON((" + bParkPoint +"))";  
61 -  
62 - if(gParkPoint.equals(""))  
63 - gParkPoint = null;  
64 - else  
65 - gParkPoint = "POLYGON((" + gParkPoint +"))";  
66 - // 地理位置中心点(百度坐标)  
67 - String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();  
68 - String bJwpointsArray[] =null;  
69 - if(bCenterPoint!=null) {  
70 - bJwpointsArray = bCenterPoint.split(" ");  
71 - }  
72 - String gCenterPoint = null;  
73 - if(bJwpointsArray.length>0) {  
74 - Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);  
75 - gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());  
76 - }  
77 - // 坐标类型  
78 - String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();  
79 - // 图形类型  
80 - String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();  
81 - // 半径  
82 - Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());  
83 - // 面积  
84 - Double area = map.get("area").equals("") ? 0.0 : Double.parseDouble(map.get("area").toString());  
85 - // 公司  
86 - String company = map.get("company").equals("") ? "" : map.get("company").toString();  
87 - // 分公司  
88 - String brancheCompany = map.get("brancheCompany").equals("") ? "" : map.get("brancheCompany").toString();  
89 - // 是否撤销  
90 - Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());  
91 - // 版本号  
92 - Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString());  
93 - // 描述与说明  
94 - String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();  
95 - SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");  
96 - Date date = new Date();  
97 - // 创建日期  
98 - String createDate = formatter.format(date);  
99 - // 修改日期  
100 - String updateDate = formatter.format(date);  
101 - // 创建人  
102 - Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString());  
103 - // 修改人  
104 - Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());  
105 - carParkRepository.carParkSave(area, company, parkCode, parkName,  
106 - brancheCompany, createBy, createDate, descriptions, destroy,  
107 - updateBy, updateDate, versions, bCenterPoint, bParkPoint,  
108 - dbType, gCenterPoint, gParkPoint, radius, shapesType);  
109 - resultMap.put("status", ResponseCode.SUCCESS);  
110 - } catch (Exception e) {  
111 - resultMap.put("status", ResponseCode.ERROR);  
112 - logger.error("save erro.", e);  
113 - }  
114 - return resultMap;  
115 - }  
116 -  
117 - @Override  
118 - public List<Map<String, Object>> findCarParkInfoFormId(Map<String, Object> map) {  
119 - // 获取线路ID  
120 - Integer id = map.get("id").equals("") ? 0 : Integer.parseInt(map.get("id").toString());  
121 - List<Object[]> objects = carParkRepository.findCarParkInfoFormId(id);  
122 - List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();  
123 - int len = objects.size();  
124 - if(objects.size()>0) {  
125 - for(int i = 0 ; i < len; i++) {  
126 - Map<String, Object> tempM = new HashMap<String,Object>();  
127 - tempM.put("carParkId", objects.get(i)[0]);  
128 - tempM.put("carParkArea", objects.get(i)[1]);  
129 - tempM.put("carParkCompany", objects.get(i)[2]);  
130 - tempM.put("carParkCode", objects.get(i)[3]);  
131 - tempM.put("carParkName", objects.get(i)[4]);  
132 - tempM.put("carParkBrancheCompany", objects.get(i)[5]);  
133 - tempM.put("carParkCreateBy", objects.get(i)[6]);  
134 - tempM.put("carParkCreateDate", objects.get(i)[7]);  
135 - tempM.put("carParkDescriptions", objects.get(i)[8]);  
136 - tempM.put("carParkDestroy", objects.get(i)[9]);  
137 - tempM.put("carParkUpdate", objects.get(i)[10]);  
138 - tempM.put("carParkUpdateDate", objects.get(i)[11]);  
139 - tempM.put("carParkVersions", objects.get(i)[12]);  
140 - tempM.put("carParkBcenterPoint", objects.get(i)[13]);  
141 - tempM.put("carParkBparkPoint", objects.get(i)[14]);  
142 - tempM.put("carParkGcenterPoint", objects.get(i)[15]);  
143 - tempM.put("carParkGparkPoint", objects.get(i)[16]);  
144 - tempM.put("carParkDBtype", objects.get(i)[17]);  
145 - tempM.put("carParkRadius", objects.get(i)[18]);  
146 - tempM.put("carParkShapesType", objects.get(i)[19]);  
147 - resultList.add(tempM);  
148 - }  
149 - }  
150 - return resultList;  
151 - }  
152 - /**  
153 - * 修改停车场信息  
154 - *  
155 - *  
156 - * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;  
157 - *  
158 - * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;  
159 - *  
160 - * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;  
161 - *  
162 - * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>  
163 - *  
164 - * @return map <SUCCESS:成功;ERROR:失败>  
165 - *  
166 - */  
167 - @Override  
168 - public Map<String, Object> carParkUpdate(Map<String, Object> map) {  
169 - Map<String, Object> resultMap = new HashMap<String, Object>();  
170 - try {  
171 - // id  
172 - Integer id = map.get("id").equals("") ? null : Integer.parseInt(map.get("id").toString());  
173 - if(id!=null) {  
174 - // 面积  
175 - Double area = map.get("area").equals("") ? null : Double.parseDouble(map.get("area").toString());  
176 - // 中心点(百度坐标)  
177 - String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();  
178 - // 图形坐标点集合(百度坐标)  
179 - String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();  
180 - // 分公司  
181 - String brancheCompany = map.get("brancheCompany").equals("")? "" :map.get("brancheCompany").toString();  
182 - //String brancheCompany = "";  
183 - // 公司  
184 - String company = map.get("company").equals("") ? "" : map.get("company").toString();  
185 - // 坐标类型  
186 - String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();  
187 - // 描述与说明  
188 - String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();  
189 - // 是否撤销  
190 - Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());  
191 - // 中心点(WGS坐标)  
192 - // String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();  
193 - String bJwpointsArray[] =null;  
194 - if(bCenterPoint!=null) {  
195 - bJwpointsArray = bCenterPoint.split(" ");  
196 - }  
197 - String gCenterPoint =null;  
198 - if(bJwpointsArray.length>0) {  
199 - Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);  
200 - gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());  
201 - }  
202 - // 图形坐标点集合(WGS坐标)  
203 - // String gParkPoint = map.get("gParkPoint").equals("") ? "" : map.get("gParkPoint").toString();  
204 - // 多边形WGS坐标点集合  
205 - String gParkPoint ="";  
206 - if(!bParkPoint.equals("")) {  
207 - String bPloygonGridArray[] = bParkPoint.split(",");  
208 - int bLen_ = bPloygonGridArray.length;  
209 - for(int b = 0 ;b<bLen_;b++) {  
210 - String tempArray[]= bPloygonGridArray[b].split(" ");  
211 - Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);  
212 - if(b==0) {  
213 - gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();  
214 - }else {  
215 - gParkPoint = gParkPoint + ',' + resultPoint.getLng() + " " + resultPoint.getLat();  
216 - }  
217 - }  
218 - }  
219 - if(bParkPoint.equals(""))  
220 - bParkPoint = null;  
221 - else  
222 - bParkPoint = "POLYGON((" + bParkPoint +"))";  
223 -  
224 - if(gParkPoint.equals(""))  
225 - gParkPoint = null;  
226 - else  
227 - gParkPoint = "POLYGON((" + gParkPoint +"))";  
228 - /*bParkPoint = "POLYGON((" + bParkPoint +"))";  
229 -  
230 - gParkPoint = "POLYGON((" + gParkPoint +"))";*/  
231 - // 编码  
232 - String parkCode = map.get("parkCode").equals("") ? "" : map.get("parkCode").toString();  
233 - // 名称  
234 - String parkName = map.get("parkName").equals("") ? "" : map.get("parkName").toString();  
235 - // 半径  
236 - Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());  
237 - // 图形类型  
238 - String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();  
239 - // 版本  
240 - Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString());  
241 - // 创建人  
242 - Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString());  
243 - // 创建日期  
244 - String createDate = map.get("createDate").equals("") ? "" : map.get("createDate").toString();  
245 - Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());  
246 - SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");  
247 - Date date = new Date();  
248 - // 修改日期  
249 - String updateDate = formatter.format(date);  
250 - carParkRepository.carParkUpdate(area, company, parkCode, parkName, brancheCompany, createBy, createDate, descriptions, destroy, updateBy, updateDate, versions, bCenterPoint, gCenterPoint, bParkPoint, gParkPoint, dbType, radius, shapesType, id);  
251 - }  
252 - resultMap.put("status", ResponseCode.SUCCESS);  
253 - } catch (Exception e) {  
254 - resultMap.put("status", ResponseCode.ERROR);  
255 - logger.error("save erro.", e);  
256 - }  
257 - return resultMap;  
258 - }  
259 - /** 百度坐标转WGS坐标 */  
260 - public Location FromBDPointToWGSPoint(String bLonx,String bLatx) {  
261 - double lng = Double.parseDouble(bLonx);  
262 - double lat = Double.parseDouble(bLatx);  
263 - Location bdLoc = TransGPS.LocationMake(lng, lat);  
264 - Location location = TransGPS.bd_decrypt(bdLoc);  
265 - Location WGSPoint = TransGPS.transformFromGCJToWGS(location);  
266 - return WGSPoint;  
267 - }  
268 -  
269 - @Override  
270 - public boolean selectTccInfoByCode(Map<String, Object> map) {  
271 - List<Object[]> arrayObj = carParkRepository.selectTccInfoByCode(map.get("parkCode").equals("") ? "" : map.get("parkCode").toString());  
272 - boolean tag = true;  
273 - if(arrayObj.size()>0) {  
274 - tag= false;  
275 - }  
276 - return tag;  
277 - }  
278 -} 1 +package com.bsth.service.impl;
  2 +
  3 +import java.text.SimpleDateFormat;
  4 +import java.util.ArrayList;
  5 +import java.util.Date;
  6 +import java.util.HashMap;
  7 +import java.util.List;
  8 +import java.util.Map;
  9 +
  10 +import com.bsth.common.ResponseCode;
  11 +import com.bsth.entity.CarPark;
  12 +import com.bsth.repository.CarParkRepository;
  13 +import com.bsth.service.CarParkService;
  14 +import com.bsth.util.TransGPS;
  15 +import com.bsth.util.TransGPS.Location;
  16 +
  17 +import org.springframework.beans.factory.annotation.Autowired;
  18 +import org.springframework.stereotype.Service;
  19 +
  20 +
  21 +@Service
  22 +public class CarParkServiceImpl extends BaseServiceImpl<CarPark, Integer> implements CarParkService {
  23 +
  24 + @Autowired
  25 + CarParkRepository carParkRepository;
  26 +
  27 + @Override
  28 + public Map<String, Object> carParkSave(Map<String, Object> map) {
  29 + Map<String, Object> resultMap = new HashMap<String, Object>();
  30 + try {
  31 + // 停车场编码
  32 + String parkCode = map.get("parkCode").equals("") ? null : map.get("parkCode").toString();
  33 + if (!selectTccInfoByCode(map)) {
  34 + resultMap.put("status", ResponseCode.ERROR);
  35 + return resultMap;
  36 + }
  37 + // 停车场名称
  38 + String parkName = map.get("parkName").equals("") ? "" : map.get("parkName").toString();
  39 + // 地理位置(百度坐标集合)
  40 + String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();
  41 + // 多边形WGS坐标点集合
  42 + String gParkPoint ="";
  43 + if(!bParkPoint.equals("")) {
  44 + String bPloygonGridArray[] = bParkPoint.split(",");
  45 + int bLen_ = bPloygonGridArray.length;
  46 + for(int b = 0 ;b<bLen_;b++) {
  47 + String tempArray[]= bPloygonGridArray[b].split(" ");
  48 + Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
  49 + if(b==0) {
  50 + gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();
  51 + }else {
  52 + gParkPoint = gParkPoint + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  53 + }
  54 + }
  55 +
  56 + }
  57 + if(bParkPoint.equals(""))
  58 + bParkPoint = null;
  59 + else
  60 + bParkPoint = "POLYGON((" + bParkPoint +"))";
  61 +
  62 + if(gParkPoint.equals(""))
  63 + gParkPoint = null;
  64 + else
  65 + gParkPoint = "POLYGON((" + gParkPoint +"))";
  66 + // 地理位置中心点(百度坐标)
  67 + String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();
  68 + String bJwpointsArray[] =null;
  69 + if(bCenterPoint!=null) {
  70 + bJwpointsArray = bCenterPoint.split(" ");
  71 + }
  72 + String gCenterPoint = null;
  73 + if(bJwpointsArray.length>0) {
  74 + Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
  75 + gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
  76 + }
  77 + // 坐标类型
  78 + String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
  79 + // 图形类型
  80 + String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
  81 + // 半径
  82 + Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
  83 + // 面积
  84 + Double area = map.get("area").equals("") ? 0.0 : Double.parseDouble(map.get("area").toString());
  85 + // 公司
  86 + String company = map.get("company").equals("") ? "" : map.get("company").toString();
  87 + // 分公司
  88 + String brancheCompany = map.get("brancheCompany").equals("") ? "" : map.get("brancheCompany").toString();
  89 + // 是否撤销
  90 + Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
  91 + // 版本号
  92 + Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString());
  93 + // 描述与说明
  94 + String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();
  95 + SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
  96 + Date date = new Date();
  97 + // 创建日期
  98 + String createDate = formatter.format(date);
  99 + // 修改日期
  100 + String updateDate = formatter.format(date);
  101 + // 创建人
  102 + Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString());
  103 + // 修改人
  104 + Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());
  105 + carParkRepository.carParkSave(area, company, parkCode, parkName,
  106 + brancheCompany, createBy, createDate, descriptions, destroy,
  107 + updateBy, updateDate, versions, bCenterPoint, bParkPoint,
  108 + dbType, gCenterPoint, gParkPoint, radius, shapesType);
  109 + resultMap.put("status", ResponseCode.SUCCESS);
  110 + } catch (Exception e) {
  111 + resultMap.put("status", ResponseCode.ERROR);
  112 + logger.error("save erro.", e);
  113 + }
  114 + return resultMap;
  115 + }
  116 +
  117 + @Override
  118 + public List<Map<String, Object>> findCarParkInfoFormId(Map<String, Object> map) {
  119 + // 获取线路ID
  120 + Integer id = map.get("id").equals("") ? 0 : Integer.parseInt(map.get("id").toString());
  121 + List<Object[]> objects = carParkRepository.findCarParkInfoFormId(id);
  122 + List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
  123 + int len = objects.size();
  124 + if(objects.size()>0) {
  125 + for(int i = 0 ; i < len; i++) {
  126 + Map<String, Object> tempM = new HashMap<String,Object>();
  127 + tempM.put("carParkId", objects.get(i)[0]);
  128 + tempM.put("carParkArea", objects.get(i)[1]);
  129 + tempM.put("carParkCompany", objects.get(i)[2]);
  130 + tempM.put("carParkCode", objects.get(i)[3]);
  131 + tempM.put("carParkName", objects.get(i)[4]);
  132 + tempM.put("carParkBrancheCompany", objects.get(i)[5]);
  133 + tempM.put("carParkCreateBy", objects.get(i)[6]);
  134 + tempM.put("carParkCreateDate", objects.get(i)[7]);
  135 + tempM.put("carParkDescriptions", objects.get(i)[8]);
  136 + tempM.put("carParkDestroy", objects.get(i)[9]);
  137 + tempM.put("carParkUpdate", objects.get(i)[10]);
  138 + tempM.put("carParkUpdateDate", objects.get(i)[11]);
  139 + tempM.put("carParkVersions", objects.get(i)[12]);
  140 + tempM.put("carParkBcenterPoint", objects.get(i)[13]);
  141 + tempM.put("carParkBparkPoint", objects.get(i)[14]);
  142 + tempM.put("carParkGcenterPoint", objects.get(i)[15]);
  143 + tempM.put("carParkGparkPoint", objects.get(i)[16]);
  144 + tempM.put("carParkDBtype", objects.get(i)[17]);
  145 + tempM.put("carParkRadius", objects.get(i)[18]);
  146 + tempM.put("carParkShapesType", objects.get(i)[19]);
  147 + resultList.add(tempM);
  148 + }
  149 + }
  150 + return resultList;
  151 + }
  152 + /**
  153 + * 修改停车场信息
  154 + *
  155 + *
  156 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  157 + *
  158 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  159 + *
  160 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  161 + *
  162 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  163 + *
  164 + * @return map <SUCCESS:成功;ERROR:失败>
  165 + *
  166 + */
  167 + @Override
  168 + public Map<String, Object> carParkUpdate(Map<String, Object> map) {
  169 + Map<String, Object> resultMap = new HashMap<String, Object>();
  170 + try {
  171 + // id
  172 + Integer id = map.get("id").equals("") ? null : Integer.parseInt(map.get("id").toString());
  173 + if(id!=null) {
  174 + // 面积
  175 + Double area = map.get("area").equals("") ? null : Double.parseDouble(map.get("area").toString());
  176 + // 中心点(百度坐标)
  177 + String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();
  178 + // 图形坐标点集合(百度坐标)
  179 + String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();
  180 + // 分公司
  181 + String brancheCompany = map.get("brancheCompany").equals("")? "" :map.get("brancheCompany").toString();
  182 + //String brancheCompany = "";
  183 + // 公司
  184 + String company = map.get("company").equals("") ? "" : map.get("company").toString();
  185 + // 坐标类型
  186 + String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
  187 + // 描述与说明
  188 + String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();
  189 + // 是否撤销
  190 + Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
  191 + // 中心点(WGS坐标)
  192 + // String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  193 + String bJwpointsArray[] =null;
  194 + if(bCenterPoint!=null) {
  195 + bJwpointsArray = bCenterPoint.split(" ");
  196 + }
  197 + String gCenterPoint =null;
  198 + if(bJwpointsArray.length>0) {
  199 + Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
  200 + gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
  201 + }
  202 + // 图形坐标点集合(WGS坐标)
  203 + // String gParkPoint = map.get("gParkPoint").equals("") ? "" : map.get("gParkPoint").toString();
  204 + // 多边形WGS坐标点集合
  205 + String gParkPoint ="";
  206 + if(!bParkPoint.equals("")) {
  207 + String bPloygonGridArray[] = bParkPoint.split(",");
  208 + int bLen_ = bPloygonGridArray.length;
  209 + for(int b = 0 ;b<bLen_;b++) {
  210 + String tempArray[]= bPloygonGridArray[b].split(" ");
  211 + Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
  212 + if(b==0) {
  213 + gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();
  214 + }else {
  215 + gParkPoint = gParkPoint + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  216 + }
  217 + }
  218 + }
  219 + if(bParkPoint.equals(""))
  220 + bParkPoint = null;
  221 + else
  222 + bParkPoint = "POLYGON((" + bParkPoint +"))";
  223 +
  224 + if(gParkPoint.equals(""))
  225 + gParkPoint = null;
  226 + else
  227 + gParkPoint = "POLYGON((" + gParkPoint +"))";
  228 + /*bParkPoint = "POLYGON((" + bParkPoint +"))";
  229 +
  230 + gParkPoint = "POLYGON((" + gParkPoint +"))";*/
  231 + // 编码
  232 + String parkCode = map.get("parkCode").equals("") ? "" : map.get("parkCode").toString();
  233 + // 名称
  234 + String parkName = map.get("parkName").equals("") ? "" : map.get("parkName").toString();
  235 + // 半径
  236 + Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
  237 + // 图形类型
  238 + String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
  239 + // 版本
  240 + Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString());
  241 + // 创建人
  242 + Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString());
  243 + // 创建日期
  244 + String createDate = map.get("createDate").equals("") ? "" : map.get("createDate").toString();
  245 + Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());
  246 + SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
  247 + Date date = new Date();
  248 + // 修改日期
  249 + String updateDate = formatter.format(date);
  250 + carParkRepository.carParkUpdate(area, company, parkCode, parkName, brancheCompany, createBy, createDate, descriptions, destroy, updateBy, updateDate, versions, bCenterPoint, gCenterPoint, bParkPoint, gParkPoint, dbType, radius, shapesType, id);
  251 + }
  252 + resultMap.put("status", ResponseCode.SUCCESS);
  253 + } catch (Exception e) {
  254 + resultMap.put("status", ResponseCode.ERROR);
  255 + logger.error("save erro.", e);
  256 + }
  257 + return resultMap;
  258 + }
  259 + /** 百度坐标转WGS坐标 */
  260 + public Location FromBDPointToWGSPoint(String bLonx,String bLatx) {
  261 + double lng = Double.parseDouble(bLonx);
  262 + double lat = Double.parseDouble(bLatx);
  263 + Location bdLoc = TransGPS.LocationMake(lng, lat);
  264 + Location location = TransGPS.bd_decrypt(bdLoc);
  265 + Location WGSPoint = TransGPS.transformFromGCJToWGS(location);
  266 + return WGSPoint;
  267 + }
  268 +
  269 + @Override
  270 + public boolean selectTccInfoByCode(Map<String, Object> map) {
  271 + List<Object[]> arrayObj = carParkRepository.selectTccInfoByCode(map.get("parkCode").equals("") ? "" : map.get("parkCode").toString());
  272 + boolean tag = true;
  273 + if(arrayObj.size()>0) {
  274 + tag= false;
  275 + }
  276 + return tag;
  277 + }
  278 +
  279 + @Override
  280 + public long carParkMaxId() {
  281 + return carParkRepository.carParkMaxId();
  282 + }
  283 +}
src/main/java/com/bsth/service/impl/LineVersionsServiceImpl.java
@@ -283,7 +283,7 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ @@ -283,7 +283,7 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ
283 283
284 LsSectionRoute oldData = sectionList.get(i); 284 LsSectionRoute oldData = sectionList.get(i);
285 285
286 - long sectionCode = GetUIDAndCode.getSectionId(); 286 + long sectionCode = sectionRepository.sectionMaxId() + 1;
287 287
288 sectionRepository.autoCopy(versions, (int)sectionCode, oldData.getSection().getId()); 288 sectionRepository.autoCopy(versions, (int)sectionCode, oldData.getSection().getId());
289 Section section = sectionRepository.findById((int)sectionCode).get(); 289 Section section = sectionRepository.findById((int)sectionCode).get();
@@ -311,7 +311,7 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ @@ -311,7 +311,7 @@ public class LineVersionsServiceImpl extends BaseServiceImpl&lt;LineVersions, Integ
311 311
312 Station newStation = stationRepository.findById(stationList.get(i).getStation().getId()).get(); 312 Station newStation = stationRepository.findById(stationList.get(i).getStation().getId()).get();
313 Station oldStation = new Station(); 313 Station oldStation = new Station();
314 - long stationCode = GetUIDAndCode.getStationId(); 314 + long stationCode = stationRepository.stationMaxId() + 1;
315 oldStation.setStationCod(String.valueOf(stationCode)); 315 oldStation.setStationCod(String.valueOf(stationCode));
316 oldStation.setId((int)stationCode); 316 oldStation.setId((int)stationCode);
317 oldStation.setAddr(newStation.getAddr()); 317 oldStation.setAddr(newStation.getAddr());
src/main/java/com/bsth/service/impl/SectionRouteServiceImpl.java
@@ -368,7 +368,7 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -368,7 +368,7 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
368 * int sectionId = Integer.parseInt(String.valueOf(repository2.sectionMaxId())) 368 * int sectionId = Integer.parseInt(String.valueOf(repository2.sectionMaxId()))
369 * + 1 ; 369 * + 1 ;
370 */ 370 */
371 - long sectionMaxId = GetUIDAndCode.getSectionId(); 371 + long sectionMaxId = repository2.sectionMaxId() + 1;
372 String sectionCode = String.valueOf(sectionMaxId); 372 String sectionCode = String.valueOf(sectionMaxId);
373 int sectionId = (int) sectionMaxId; 373 int sectionId = (int) sectionMaxId;
374 String sectionName = list.get(i)[9] == null ? null : list.get(i)[9].toString(); 374 String sectionName = list.get(i)[9] == null ? null : list.get(i)[9].toString();
@@ -423,7 +423,7 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -423,7 +423,7 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
423 * int sectionId = Integer.parseInt(String.valueOf(repository2.sectionMaxId())) 423 * int sectionId = Integer.parseInt(String.valueOf(repository2.sectionMaxId()))
424 * + 1 ; 424 * + 1 ;
425 */ 425 */
426 - long sectionMaxId = GetUIDAndCode.getSectionId(); 426 + long sectionMaxId = repository2.sectionMaxId() + 1;
427 String sectionCode = String.valueOf(sectionMaxId); 427 String sectionCode = String.valueOf(sectionMaxId);
428 int sectionId = (int) sectionMaxId; 428 int sectionId = (int) sectionMaxId;
429 String sectionName = list.get(i)[9] == null ? null : list.get(i)[9].toString(); 429 String sectionName = list.get(i)[9] == null ? null : list.get(i)[9].toString();
src/main/java/com/bsth/service/impl/SectionServiceImpl.java
@@ -152,7 +152,7 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem @@ -152,7 +152,7 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem
152 routeRepository.sectionRouteUpdDestroy(sectionRouteLine,directions); 152 routeRepository.sectionRouteUpdDestroy(sectionRouteLine,directions);
153 // 路段保存 153 // 路段保存
154 for (int i = 0; i < sectionArrayList.size(); i++) { 154 for (int i = 0; i < sectionArrayList.size(); i++) {
155 - long sectionMaxId = GetUIDAndCode.getSectionId(); 155 + long sectionMaxId = repository.sectionMaxId() + 1;
156 // 路段编码 156 // 路段编码
157 String sectionCode = String.valueOf(sectionMaxId); 157 String sectionCode = String.valueOf(sectionMaxId);
158 // 路段ID 158 // 路段ID
@@ -286,7 +286,7 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem @@ -286,7 +286,7 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem
286 lsRouteRepository.batchDelete(sectionRouteLine,directions,versions); 286 lsRouteRepository.batchDelete(sectionRouteLine,directions,versions);
287 // 路段保存 287 // 路段保存
288 for (int i = 0; i < sectionArrayList.size(); i++) { 288 for (int i = 0; i < sectionArrayList.size(); i++) {
289 - long sectionMaxId = GetUIDAndCode.getSectionId(); 289 + long sectionMaxId = repository.sectionMaxId() + 1;
290 // 路段编码 290 // 路段编码
291 String sectionCode = String.valueOf(sectionMaxId); 291 String sectionCode = String.valueOf(sectionMaxId);
292 // 路段ID 292 // 路段ID
@@ -437,7 +437,7 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem @@ -437,7 +437,7 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem
437 } 437 }
438 } 438 }
439 // 获取当前最大Id 439 // 获取当前最大Id
440 - long sectionMaxId = GetUIDAndCode.getSectionId(); 440 + long sectionMaxId = repository.sectionMaxId() + 1;
441 // 路段编码 441 // 路段编码
442 String sectionCode = String.valueOf(sectionMaxId); 442 String sectionCode = String.valueOf(sectionMaxId);
443 // 路段ID 443 // 路段ID
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
@@ -578,7 +578,8 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ @@ -578,7 +578,8 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
578 Integer lineId = map.get("lineId").equals("") ? null : Integer.parseInt(map.get("lineId").toString()); 578 Integer lineId = map.get("lineId").equals("") ? null : Integer.parseInt(map.get("lineId").toString());
579 Integer direction = map.get("direction").equals("") ? null : Integer.parseInt(map.get("direction").toString()); 579 Integer direction = map.get("direction").equals("") ? null : Integer.parseInt(map.get("direction").toString());
580 Integer stationRouteCode = map.get("stationRouteCode").equals("") ? null : Integer.parseInt(map.get("stationRouteCode").toString()); 580 Integer stationRouteCode = map.get("stationRouteCode").equals("") ? null : Integer.parseInt(map.get("stationRouteCode").toString());
581 - List<Object[]> objects = repository.findDownStationRoute(lineId, direction, stationRouteCode); 581 + Integer version = map.get("version").equals("") ? null : Integer.parseInt(map.get("version").toString());
  582 + List<Object[]> objects = repository.findDownStationRoute(lineId, direction, stationRouteCode,version);
582 List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>(); 583 List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
583 584
584 int len = objects.size(); 585 int len = objects.size();