Commit 73a5679376ee80b6ff0042e68997e90cf89affd1

Authored by 廖磊
2 parents b48a57fd 703cb809

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing 56 changed files with 2489 additions and 884 deletions

Too many changes to show.

To preserve performance only 56 of 203 files are displayed.

src/main/java/com/bsth/controller/BusinessController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
  3 +import org.springframework.beans.factory.annotation.Autowired;
3 import org.springframework.web.bind.annotation.RequestMapping; 4 import org.springframework.web.bind.annotation.RequestMapping;
  5 +import org.springframework.web.bind.annotation.RequestMethod;
4 import org.springframework.web.bind.annotation.RestController; 6 import org.springframework.web.bind.annotation.RestController;
5 7
6 import com.bsth.entity.Business; 8 import com.bsth.entity.Business;
  9 +import com.bsth.service.BusinessService;
  10 +import com.bsth.util.GetUIDAndCode;
7 11
8 /** 12 /**
9 * 13 *
@@ -23,5 +27,11 @@ import com.bsth.entity.Business; @@ -23,5 +27,11 @@ import com.bsth.entity.Business;
23 @RestController 27 @RestController
24 @RequestMapping("business") 28 @RequestMapping("business")
25 public class BusinessController extends BaseController<Business, Integer> { 29 public class BusinessController extends BaseController<Business, Integer> {
26 - 30 + @Autowired
  31 + private BusinessService businessService;
  32 +
  33 + @RequestMapping(value = "getCompCode", method = RequestMethod.GET)
  34 + public long getLineCode() {
  35 + return businessService.getCompCode();
  36 + }
27 } 37 }
src/main/java/com/bsth/controller/SectionController.java
@@ -48,13 +48,9 @@ public class SectionController extends BaseController&lt;Section, Integer&gt; { @@ -48,13 +48,9 @@ public class SectionController extends BaseController&lt;Section, Integer&gt; {
48 */ 48 */
49 @RequestMapping(value="sectionSave" , method = RequestMethod.POST) 49 @RequestMapping(value="sectionSave" , method = RequestMethod.POST)
50 public Map<String, Object> sectionSave(@RequestParam Map<String, Object> map) { 50 public Map<String, Object> sectionSave(@RequestParam Map<String, Object> map) {
51 -  
52 map.put("createBy", ""); 51 map.put("createBy", "");
53 -  
54 map.put("updateBy", ""); 52 map.put("updateBy", "");
55 -  
56 return service.sectionSave(map); 53 return service.sectionSave(map);
57 -  
58 } 54 }
59 55
60 /** 56 /**
src/main/java/com/bsth/controller/SectionRouteController.java
@@ -35,6 +35,17 @@ public class SectionRouteController extends BaseController&lt;SectionRoute, Integer @@ -35,6 +35,17 @@ public class SectionRouteController extends BaseController&lt;SectionRoute, Integer
35 @Autowired 35 @Autowired
36 SectionRouteService routeService; 36 SectionRouteService routeService;
37 37
  38 + /**
  39 + * @param @param map
  40 + * @throws
  41 + * @Title: list
  42 + * @Description: TODO(多条件查询)
  43 + */
  44 + @RequestMapping(value = "/all", method = RequestMethod.GET)
  45 + public Iterable<SectionRoute> list(@RequestParam Map<String, Object> map) {
  46 + return routeService.list(map);
  47 + }
  48 +
38 /** 49 /**
39 * @Description :TODO(查询路段信息) 50 * @Description :TODO(查询路段信息)
40 * 51 *
@@ -57,7 +68,6 @@ public class SectionRouteController extends BaseController&lt;SectionRoute, Integer @@ -57,7 +68,6 @@ public class SectionRouteController extends BaseController&lt;SectionRoute, Integer
57 */ 68 */
58 @RequestMapping(value = "/findSectionRouteInfoFormId",method = RequestMethod.GET) 69 @RequestMapping(value = "/findSectionRouteInfoFormId",method = RequestMethod.GET)
59 public List<Map<String, Object>> findSectionRouteInfoFormId(@RequestParam Map<String, Object> map) { 70 public List<Map<String, Object>> findSectionRouteInfoFormId(@RequestParam Map<String, Object> map) {
60 -  
61 return routeService.findSectionRouteInfoFormId(map); 71 return routeService.findSectionRouteInfoFormId(map);
62 } 72 }
63 73
src/main/java/com/bsth/controller/StationController.java
@@ -60,16 +60,12 @@ public class StationController extends BaseController&lt;Station, Integer&gt; { @@ -60,16 +60,12 @@ public class StationController extends BaseController&lt;Station, Integer&gt; {
60 */ 60 */
61 @RequestMapping(value="collectionSave" , method = RequestMethod.POST) 61 @RequestMapping(value="collectionSave" , method = RequestMethod.POST)
62 public Map<String, Object> collectionSave(@RequestParam Map<String, Object> map) { 62 public Map<String, Object> collectionSave(@RequestParam Map<String, Object> map) {
63 -  
64 return service.systemSaveStations(map); 63 return service.systemSaveStations(map);
65 -  
66 } 64 }
67 65
68 @RequestMapping(value="manualSave" , method = RequestMethod.POST) 66 @RequestMapping(value="manualSave" , method = RequestMethod.POST)
69 public Map<String, Object> manualSave(@RequestParam Map<String, Object> map) { 67 public Map<String, Object> manualSave(@RequestParam Map<String, Object> map) {
70 -  
71 return service.manualSave(map); 68 return service.manualSave(map);
72 -  
73 } 69 }
74 70
75 /** 71 /**
@@ -89,13 +85,9 @@ public class StationController extends BaseController&lt;Station, Integer&gt; { @@ -89,13 +85,9 @@ public class StationController extends BaseController&lt;Station, Integer&gt; {
89 */ 85 */
90 @RequestMapping(value="stationSave" , method = RequestMethod.POST) 86 @RequestMapping(value="stationSave" , method = RequestMethod.POST)
91 public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) { 87 public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) {
92 -  
93 map.put("createBy", ""); 88 map.put("createBy", "");
94 -  
95 map.put("updateBy", ""); 89 map.put("updateBy", "");
96 -  
97 return service.stationSaveMap(map); 90 return service.stationSaveMap(map);
98 -  
99 } 91 }
100 92
101 /** 93 /**
src/main/java/com/bsth/controller/StationRouteController.java
@@ -36,6 +36,17 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer @@ -36,6 +36,17 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer
36 @Autowired 36 @Autowired
37 StationRouteRepository stationRouteRepository; 37 StationRouteRepository stationRouteRepository;
38 38
  39 + /**
  40 + * @param @param map
  41 + * @throws
  42 + * @Title: list
  43 + * @Description: TODO(多条件查询)
  44 + */
  45 + @RequestMapping(value = "/all", method = RequestMethod.GET)
  46 + public Iterable<StationRoute> list(@RequestParam Map<String, Object> map) {
  47 + return service.list(map);
  48 + }
  49 +
39 /** 50 /**
40 * @Description :TODO(查询树站点与路段数据) 51 * @Description :TODO(查询树站点与路段数据)
41 * 52 *
src/main/java/com/bsth/entity/Business.java
1 package com.bsth.entity; 1 package com.bsth.entity;
2 2
  3 +import java.util.Date;
  4 +
  5 +import javax.persistence.Column;
3 import javax.persistence.Entity; 6 import javax.persistence.Entity;
4 import javax.persistence.GeneratedValue; 7 import javax.persistence.GeneratedValue;
5 import javax.persistence.GenerationType; 8 import javax.persistence.GenerationType;
@@ -40,6 +43,29 @@ public class Business { @@ -40,6 +43,29 @@ public class Business {
40 43
41 // 描述 44 // 描述
42 private String descriptions; 45 private String descriptions;
  46 +
  47 + // 创建日期
  48 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  49 + private Date createDate;
  50 +
  51 + // 修改日期
  52 + @Column(name = "update_date", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  53 + private Date updateDate;
  54 + public Date getCreateDate() {
  55 + return createDate;
  56 + }
  57 +
  58 + public void setCreateDate(Date createDate) {
  59 + this.createDate = createDate;
  60 + }
  61 +
  62 + public Date getUpdateDate() {
  63 + return updateDate;
  64 + }
  65 +
  66 + public void setUpdateDate(Date updateDate) {
  67 + this.updateDate = updateDate;
  68 + }
43 69
44 public Integer getId() { 70 public Integer getId() {
45 return id; 71 return id;
src/main/java/com/bsth/entity/LineInformation.java
@@ -64,6 +64,12 @@ public class LineInformation { @@ -64,6 +64,12 @@ public class LineInformation {
64 // 晚高峰结束时间 00:00 64 // 晚高峰结束时间 00:00
65 private String lateEndTime; 65 private String lateEndTime;
66 66
  67 + // 小夜高峰开始时间 00:00
  68 + private String xygfkssj;
  69 +
  70 + // 小夜高峰结束时间 00:00
  71 + private String xygfjssj;
  72 +
67 // 早高峰上行行驶时间 73 // 早高峰上行行驶时间
68 private Double earlyUpTime; 74 private Double earlyUpTime;
69 75
@@ -91,15 +97,6 @@ public class LineInformation { @@ -91,15 +97,6 @@ public class LineInformation {
91 // 停车场 97 // 停车场
92 private String carPark; 98 private String carPark;
93 99
94 - // 进场时间  
95 - private Double paradeTime;  
96 -  
97 - // 出场时间  
98 - private Double outTime;  
99 -  
100 - // 进场里程  
101 - private Double paradeMileage;  
102 -  
103 // 上行进场时间 100 // 上行进场时间
104 private Double upInTimer; 101 private Double upInTimer;
105 102
@@ -123,7 +120,82 @@ public class LineInformation { @@ -123,7 +120,82 @@ public class LineInformation {
123 120
124 // 下行出场里程 121 // 下行出场里程
125 private Double downOutMileage; 122 private Double downOutMileage;
  123 +
  124 + // 早高峰大间隔(分钟)老调度系统字段,暂时保留
  125 + private Double earlyIntervalLg;
  126 +
  127 + // 晚高峰大间隔(分钟)老调度系统字段,暂时保留
  128 + private Double lateIntervalLg;
  129 +
  130 + // 平时大间隔(分钟)老调度系统字段,暂时保留
  131 + private Double intervalLg;
  132 +
  133 + // 限速(平时)老调度系统字段,暂时保留
  134 + private Double speedLimit;
  135 +
  136 + // 限速(雨天)老调度系统字段,暂时保留
  137 + private Double rainLimit;
  138 +
  139 + // 限速(大雾)老调度系统字段,暂时保留
  140 + private Double fogLimit;
126 141
  142 + // 限速(冰雪)老调度系统字段,暂时保留
  143 + private Double snowLimit;
  144 +
  145 + // 限速(节庆)老调度系统字段,暂时保留
  146 + private Double festivalSpeedLimit;
  147 +
  148 + // 滞站
  149 + private Integer lagStation;
  150 +
  151 + // 越站
  152 + private Integer skip;
  153 +
  154 + // 超速
  155 + private Integer speeding;
  156 +
  157 + // 串线
  158 + private Integer crossedLine;
  159 +
  160 + // 越界
  161 + private Integer overflights;
  162 +
  163 + // 描述
  164 + private String descriptions;
  165 +
  166 + // 创建人
  167 + private Integer createBy;
  168 +
  169 + // 修改人
  170 + private Integer updateBy;
  171 +
  172 + // 创建日期
  173 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  174 + private Date createDate;
  175 +
  176 + // 修改日期
  177 + @Column(name = "update_date", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  178 + private Date updateDate;
  179 +
  180 + @ManyToOne
  181 + private Line line;
  182 +
  183 + public String getXygfkssj() {
  184 + return xygfkssj;
  185 + }
  186 +
  187 + public void setXygfkssj(String xygfkssj) {
  188 + this.xygfkssj = xygfkssj;
  189 + }
  190 +
  191 + public String getXygfjssj() {
  192 + return xygfjssj;
  193 + }
  194 +
  195 + public void setXygfjssj(String xygfjssj) {
  196 + this.xygfjssj = xygfjssj;
  197 + }
  198 +
127 public Double getUpInTimer() { 199 public Double getUpInTimer() {
128 return upInTimer; 200 return upInTimer;
129 } 201 }
@@ -188,68 +260,6 @@ public class LineInformation { @@ -188,68 +260,6 @@ public class LineInformation {
188 this.downOutMileage = downOutMileage; 260 this.downOutMileage = downOutMileage;
189 } 261 }
190 262
191 - // 出场里程  
192 - private Double outMileage;  
193 -  
194 - // 早高峰大间隔(分钟)  
195 - private Double earlyIntervalLg;  
196 -  
197 - // 晚高峰大间隔(分钟)  
198 - private Double lateIntervalLg;  
199 -  
200 - // 平时大间隔(分钟)  
201 - private Double intervalLg;  
202 -  
203 - // 限速(平时)  
204 - private Double speedLimit;  
205 -  
206 - // 限速(雨天)  
207 - private Double rainLimit;  
208 -  
209 - // 限速(大雾)  
210 - private Double fogLimit;  
211 -  
212 - // 限速(冰雪)  
213 - private Double snowLimit;  
214 -  
215 - // 限速(节庆)  
216 - private Double festivalSpeedLimit;  
217 -  
218 - // 滞站  
219 - private Integer lagStation;  
220 -  
221 - // 越站  
222 - private Integer skip;  
223 -  
224 - // 超速  
225 - private Integer speeding;  
226 -  
227 - // 串线  
228 - private Integer crossedLine;  
229 -  
230 - // 越界  
231 - private Integer overflights;  
232 -  
233 - // 描述  
234 - private String descriptions;  
235 -  
236 - // 创建人  
237 - private Integer createBy;  
238 -  
239 - // 修改人  
240 - private Integer updateBy;  
241 -  
242 - // 创建日期  
243 - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")  
244 - private Date createDate;  
245 -  
246 - // 修改日期  
247 - @Column(name = "update_date", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")  
248 - private Date updateDate;  
249 -  
250 - @ManyToOne  
251 - private Line line;  
252 -  
253 public Integer getId() { 263 public Integer getId() {
254 return id; 264 return id;
255 } 265 }
@@ -416,39 +426,6 @@ public class LineInformation { @@ -416,39 +426,6 @@ public class LineInformation {
416 public void setCarPark(String carPark) { 426 public void setCarPark(String carPark) {
417 this.carPark = carPark; 427 this.carPark = carPark;
418 } 428 }
419 -  
420 - public Double getParadeTime() {  
421 - return paradeTime;  
422 - }  
423 -  
424 - public void setParadeTime(Double paradeTime) {  
425 - this.paradeTime = paradeTime;  
426 - }  
427 -  
428 - public Double getOutTime() {  
429 - return outTime;  
430 - }  
431 -  
432 - public void setOutTime(Double outTime) {  
433 - this.outTime = outTime;  
434 - }  
435 -  
436 - public Double getParadeMileage() {  
437 - return paradeMileage;  
438 - }  
439 -  
440 - public void setParadeMileage(Double paradeMileage) {  
441 - this.paradeMileage = paradeMileage;  
442 - }  
443 -  
444 - public Double getOutMileage() {  
445 - return outMileage;  
446 - }  
447 -  
448 - public void setOutMileage(Double outMileage) {  
449 - this.outMileage = outMileage;  
450 - }  
451 -  
452 public Double getEarlyIntervalLg() { 429 public Double getEarlyIntervalLg() {
453 return earlyIntervalLg; 430 return earlyIntervalLg;
454 } 431 }
src/main/java/com/bsth/entity/SectionRoute.java
@@ -52,7 +52,7 @@ public class SectionRoute { @@ -52,7 +52,7 @@ public class SectionRoute {
52 // 是否撤销 52 // 是否撤销
53 private Integer destroy; 53 private Integer destroy;
54 54
55 - /** 是否有路段限速数据 <0:未分段;1:分段>*/ 55 + /** 是否有路段限速数据 <0:分段;1:未分段>*/
56 private Integer isRoadeSpeed; 56 private Integer isRoadeSpeed;
57 57
58 // 描述 58 // 描述
src/main/java/com/bsth/entity/excep/Offline.java
@@ -72,6 +72,40 @@ public class Offline { @@ -72,6 +72,40 @@ public class Offline {
72 private String jsy; 72 private String jsy;
73 @Transient 73 @Transient
74 private String lpname; 74 private String lpname;
  75 + @Transient
  76 + private Long ts;
  77 +
  78 + @Transient
  79 + private String tsdate;
  80 + @Transient
  81 + private String deviceid;
  82 +
  83 + public String getDeviceid() {
  84 + return deviceid;
  85 + }
  86 +
  87 + public void setDeviceid(String deviceid) {
  88 + this.deviceid = deviceid;
  89 + }
  90 +
  91 +
  92 +
  93 + public String getTsdate() {
  94 + return tsdate;
  95 + }
  96 +
  97 + public void setTsdate(String tsdate) {
  98 + this.tsdate = tsdate;
  99 + }
  100 +
  101 + public Long getTs() {
  102 + return ts;
  103 + }
  104 +
  105 + public void setTs(Long ts) {
  106 + this.ts = ts;
  107 + }
  108 +
75 public Integer getId() { 109 public Integer getId() {
76 return id; 110 return id;
77 } 111 }
src/main/java/com/bsth/entity/schedule/rule/RerunRule.java
@@ -53,6 +53,8 @@ public class RerunRule extends BEntity { @@ -53,6 +53,8 @@ public class RerunRule extends BEntity {
53 private GuideboardInfo rerunLp; 53 private GuideboardInfo rerunLp;
54 /** 套跑班次(时刻表明细ids,使用逗号连接) */ 54 /** 套跑班次(时刻表明细ids,使用逗号连接) */
55 private String rerunTtinfodetailIds; 55 private String rerunTtinfodetailIds;
  56 + /** 套跑班次(对应具体班次的发车时间,使用逗号连接) */
  57 + private String rerunTtinfodetailFcsjs;
56 58
57 59
58 /** 套跑类型(dylp;对应路牌,dybc:对应班车) */ 60 /** 套跑类型(dylp;对应路牌,dybc:对应班车) */
@@ -167,4 +169,11 @@ public class RerunRule extends BEntity { @@ -167,4 +169,11 @@ public class RerunRule extends BEntity {
167 this.isCancel = isCancel; 169 this.isCancel = isCancel;
168 } 170 }
169 171
  172 + public String getRerunTtinfodetailFcsjs() {
  173 + return rerunTtinfodetailFcsjs;
  174 + }
  175 +
  176 + public void setRerunTtinfodetailFcsjs(String rerunTtinfodetailFcsjs) {
  177 + this.rerunTtinfodetailFcsjs = rerunTtinfodetailFcsjs;
  178 + }
170 } 179 }
src/main/java/com/bsth/repository/BusinessRepository.java
1 package com.bsth.repository; 1 package com.bsth.repository;
2 2
  3 +import org.springframework.data.jpa.repository.Query;
3 import org.springframework.stereotype.Repository; 4 import org.springframework.stereotype.Repository;
4 5
5 import com.bsth.entity.Business; 6 import com.bsth.entity.Business;
@@ -28,5 +29,7 @@ public interface BusinessRepository extends BaseRepository&lt;Business, Integer&gt; { @@ -28,5 +29,7 @@ public interface BusinessRepository extends BaseRepository&lt;Business, Integer&gt; {
28 List<Business> findByBusinessCode(String code); 29 List<Business> findByBusinessCode(String code);
29 30
30 List<Business> findByUpCodeAndBusinessCode(String c1, String c2); 31 List<Business> findByUpCodeAndBusinessCode(String c1, String c2);
31 - 32 +
  33 + @Query(value = "SELECT IFNULL(num,0) as maxId from (SELECT MAX(id) as num FROM bsth_c_business) k" , nativeQuery=true)
  34 + long getMaxId();
32 } 35 }
src/main/java/com/bsth/repository/SectionRepository.java
@@ -72,7 +72,6 @@ public interface SectionRepository extends BaseRepository&lt;Section, Integer&gt; { @@ -72,7 +72,6 @@ public interface SectionRepository extends BaseRepository&lt;Section, Integer&gt; {
72 72
73 String descriptions, int versions,int id); 73 String descriptions, int versions,int id);
74 74
75 -  
76 /** 75 /**
77 * @Description :TODO(编辑线路走向) 76 * @Description :TODO(编辑线路走向)
78 * 77 *
src/main/java/com/bsth/repository/SectionRouteRepository.java
@@ -121,7 +121,7 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int @@ -121,7 +121,7 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
121 "b.create_date AS sectionCreateDate," + 121 "b.create_date AS sectionCreateDate," +
122 "b.update_by AS sectionUpdateBy," + 122 "b.update_by AS sectionUpdateBy," +
123 "b.update_date AS sectionUpdateDate," + 123 "b.update_date AS sectionUpdateDate," +
124 - "b.versions AS sectionVersion FROM (" + 124 + "b.versions AS sectionVersion , a.isRoadeSpeed FROM (" +
125 " SELECT s.id AS sectionRouteId," + 125 " SELECT s.id AS sectionRouteId," +
126 "s.line_code AS sectionRouteLineCode," + 126 "s.line_code AS sectionRouteLineCode," +
127 "s.sectionroute_code AS sectionRouteCode," + 127 "s.sectionroute_code AS sectionRouteCode," +
@@ -134,7 +134,7 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int @@ -134,7 +134,7 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
134 "s.update_by AS sectionRouteUpdateBy," + 134 "s.update_by AS sectionRouteUpdateBy," +
135 "s.update_date AS sectionRouteUpdateDate," + 135 "s.update_date AS sectionRouteUpdateDate," +
136 "s.versions AS sectionRouteVersions," + 136 "s.versions AS sectionRouteVersions," +
137 - "s.destroy AS sectionRouteDestroy" + 137 + "s.destroy AS sectionRouteDestroy, s.is_roade_speed AS isRoadeSpeed " +
138 " FROM bsth_c_sectionroute s where s.id =?1) a " + 138 " FROM bsth_c_sectionroute s where s.id =?1) a " +
139 " LEFT JOIN bsth_c_section b on a.sectionRouteSection = b.id", nativeQuery=true) 139 " LEFT JOIN bsth_c_section b on a.sectionRouteSection = b.id", nativeQuery=true)
140 List<Object[]> findSectionRouteInfoFormId(int id); 140 List<Object[]> findSectionRouteInfoFormId(int id);
@@ -171,6 +171,10 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int @@ -171,6 +171,10 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
171 @Query(value="UPDATE bsth_c_sectionroute set is_roade_speed = ?1 where line= ?2 and directions=?3 ",nativeQuery = true) 171 @Query(value="UPDATE bsth_c_sectionroute set is_roade_speed = ?1 where line= ?2 and directions=?3 ",nativeQuery = true)
172 void isRoadSpeedUpd(Integer isR,Integer line,Integer directions); 172 void isRoadSpeedUpd(Integer isR,Integer line,Integer directions);
173 173
  174 + @Modifying
  175 + @Query(value="UPDATE bsth_c_sectionroute set sectionroute_code = (sectionroute_code+10) where line = ?1 and directions = ?2 and sectionroute_code >=?3 and destroy = 0", nativeQuery=true)
  176 + public void sectionUpdSectionRouteCode(Integer line,Integer dir,Integer routeCod);
  177 +
174 @Modifying 178 @Modifying
175 @Query(value="update bsth_c_sectionroute set directions = case directions when 1 then 0 when 0 then 1 end where line_code = ?1 ", nativeQuery=true) 179 @Query(value="update bsth_c_sectionroute set directions = case directions when 1 then 0 when 0 then 1 end where line_code = ?1 ", nativeQuery=true)
176 public void sectionRouteDir(Integer line); 180 public void sectionRouteDir(Integer line);
src/main/java/com/bsth/repository/StationRepository.java
@@ -37,7 +37,7 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; { @@ -37,7 +37,7 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; {
37 , nativeQuery=true) 37 , nativeQuery=true)
38 long stationMaxId(); 38 long stationMaxId();
39 39
40 - @Query(value = "SELECT * FROM bsth_c_station s where s.station_name = ?1" 40 + @Query(value = "SELECT s.b_jwpoints,s.id FROM bsth_c_station s where s.station_name like ?1"
41 , nativeQuery=true) 41 , nativeQuery=true)
42 List<Object[]> findStationName(String stationName); 42 List<Object[]> findStationName(String stationName);
43 43
src/main/java/com/bsth/service/BusinessService.java
@@ -18,5 +18,5 @@ import com.bsth.entity.Business; @@ -18,5 +18,5 @@ import com.bsth.entity.Business;
18 * 18 *
19 */ 19 */
20 public interface BusinessService extends BaseService<Business, Integer> { 20 public interface BusinessService extends BaseService<Business, Integer> {
21 - 21 + long getCompCode();
22 } 22 }
src/main/java/com/bsth/service/SectionRouteService.java
@@ -22,6 +22,14 @@ import com.bsth.entity.SectionRoute; @@ -22,6 +22,14 @@ import com.bsth.entity.SectionRoute;
22 */ 22 */
23 public interface SectionRouteService extends BaseService<SectionRoute, Integer> { 23 public interface SectionRouteService extends BaseService<SectionRoute, Integer> {
24 24
  25 + /**
  26 + *
  27 + * @Title: list
  28 + * @Description: TODO(多条件查询)
  29 + * @throws
  30 + */
  31 + Iterable<SectionRoute> list(Map<String, Object> map);
  32 +
25 List<Map<String, Object>> getSectionRoute(Map<String, Object> map); 33 List<Map<String, Object>> getSectionRoute(Map<String, Object> map);
26 34
27 /** 35 /**
src/main/java/com/bsth/service/StationRouteService.java
@@ -23,6 +23,14 @@ import com.bsth.entity.StationRoute; @@ -23,6 +23,14 @@ import com.bsth.entity.StationRoute;
23 public interface StationRouteService extends BaseService<StationRoute, Integer> { 23 public interface StationRouteService extends BaseService<StationRoute, Integer> {
24 24
25 /** 25 /**
  26 + *
  27 + * @Title: list
  28 + * @Description: TODO(多条件查询)
  29 + * @throws
  30 + */
  31 + Iterable<StationRoute> list(Map<String, Object> map);
  32 +
  33 + /**
26 * @Description :TODO(查询树站点与路段数据) 34 * @Description :TODO(查询树站点与路段数据)
27 * 35 *
28 * @param map <line.id_eq:线路ID; directions_eq:方向> 36 * @param map <line.id_eq:线路ID; directions_eq:方向>
src/main/java/com/bsth/service/excep/impl/OfflineServiceImpl.java
@@ -4,6 +4,7 @@ import java.sql.Connection; @@ -4,6 +4,7 @@ import java.sql.Connection;
4 import java.sql.PreparedStatement; 4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet; 5 import java.sql.ResultSet;
6 import java.sql.SQLException; 6 import java.sql.SQLException;
  7 +import java.text.DateFormat;
7 import java.text.ParseException; 8 import java.text.ParseException;
8 import java.text.SimpleDateFormat; 9 import java.text.SimpleDateFormat;
9 import java.util.ArrayList; 10 import java.util.ArrayList;
@@ -34,6 +35,35 @@ public class OfflineServiceImpl implements OfflineService { @@ -34,6 +35,35 @@ public class OfflineServiceImpl implements OfflineService {
34 35
35 @Autowired 36 @Autowired
36 JdbcTemplate jdbcTemplate; 37 JdbcTemplate jdbcTemplate;
  38 + public List<Offline> findGPS(Map<String, Object> map) {
  39 + Connection conn = null;
  40 + PreparedStatement ps = null;
  41 + ResultSet rs = null;
  42 + List<Offline> list=new ArrayList<Offline>();
  43 + String days_year=map.get("days_year").toString();
  44 + String line_id=map.get("line_id").toString();
  45 + String device_id=map.get("device_id").toString();
  46 + String sql="SELECT t.line_id,t.device_id,MIN(ts) as ts,days_year FROM bsth_c_gps_info t "
  47 + + " WHERE t.line_id='"+line_id+"' and t.device_id='"+device_id+"' and t.days_year='"+days_year+"' "
  48 + + " GROUP BY t.device_id,t.line_id ";
  49 + sql +=" order by ts limit ?,?";
  50 + try {
  51 + conn = DBUtils_MS.getConnection();
  52 + ps = conn.prepareStatement(sql);
  53 + ps.setInt(1,0*10); // O-最大条数 -- M-起始条数
  54 + ps.setInt(2, 100000000); // O-最小条数 -- M-显示条数
  55 + rs = ps.executeQuery();
  56 + list = resultSet(rs);
  57 + } catch (SQLException e) {
  58 + // TODO Auto-generated catch block
  59 + e.printStackTrace();
  60 + }finally {
  61 + DBUtils_MS.close(rs, ps, conn);
  62 + }
  63 +
  64 + return list;
  65 + }
  66 +
37 // @Override 67 // @Override
38 static List<Offline> findAll(Map<String, Object> map) { 68 static List<Offline> findAll(Map<String, Object> map) {
39 // TODO Auto-generated method stub 69 // TODO Auto-generated method stub
@@ -100,7 +130,18 @@ public class OfflineServiceImpl implements OfflineService { @@ -100,7 +130,18 @@ public class OfflineServiceImpl implements OfflineService {
100 130
101 return list; 131 return list;
102 } 132 }
103 - 133 + public List<Offline> resultSet(ResultSet rs) throws SQLException{
  134 + // TODO Auto-generated method stub
  135 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  136 + List<Offline> list=new ArrayList<Offline>();
  137 + Offline offline;
  138 + while(rs.next()){
  139 + offline=new Offline();
  140 + offline.setTs(Long.parseLong(rs.getObject("ts").toString()));
  141 + list.add(offline);
  142 + }
  143 + return list;
  144 + }
104 /** 145 /**
105 * 数据转换 146 * 数据转换
106 */ 147 */
@@ -122,6 +163,7 @@ public class OfflineServiceImpl implements OfflineService { @@ -122,6 +163,7 @@ public class OfflineServiceImpl implements OfflineService {
122 offline.setTimestampDate(sdf.format(new Date(offline.getTimestamp()))); 163 offline.setTimestampDate(sdf.format(new Date(offline.getTimestamp())));
123 offline.setUpDown(Integer.valueOf(rs.getObject("up_down").toString())); 164 offline.setUpDown(Integer.valueOf(rs.getObject("up_down").toString()));
124 offline.setVehicle(BasicData.deviceId2NbbmMap.get(rs.getObject("vehicle").toString())); 165 offline.setVehicle(BasicData.deviceId2NbbmMap.get(rs.getObject("vehicle").toString()));
  166 + offline.setDeviceid(rs.getObject("vehicle").toString());
125 list.add(offline); 167 list.add(offline);
126 } 168 }
127 return list; 169 return list;
@@ -190,7 +232,9 @@ public class OfflineServiceImpl implements OfflineService { @@ -190,7 +232,9 @@ public class OfflineServiceImpl implements OfflineService {
190 // List<T> list = this.baseDao.queryByObject(pageHelper.getMap()); 232 // List<T> list = this.baseDao.queryByObject(pageHelper.getMap());
191 List<Offline> list=findAll(pageHelper.getMap()); 233 List<Offline> list=findAll(pageHelper.getMap());
192 for (int i = 0; i < list.size(); i++) { 234 for (int i = 0; i < list.size(); i++) {
193 - String nbbm2=list.get(i).getVehicle() ; 235 + int lineid= list.get(i).getLine();
  236 + String nbbm2=list.get(i).getVehicle();
  237 + String deviceid=list.get(i).getDeviceid();
194 Long d1=list.get(i).getTimestamp(); 238 Long d1=list.get(i).getTimestamp();
195 Date datess = new Date(d1); 239 Date datess = new Date(d1);
196 String dates=new SimpleDateFormat("yyyy-MM-dd").format(datess); 240 String dates=new SimpleDateFormat("yyyy-MM-dd").format(datess);
@@ -209,10 +253,22 @@ public class OfflineServiceImpl implements OfflineService { @@ -209,10 +253,22 @@ public class OfflineServiceImpl implements OfflineService {
209 return s; 253 return s;
210 } 254 }
211 }); 255 });
  256 + Map<String, Object> gpsmap=new HashMap<>();
  257 + String str = String.format("%tj",datess);
  258 + gpsmap.put("device_id",deviceid );
  259 + gpsmap.put("line_id", lineid);
  260 + gpsmap.put("days_year", str);
  261 + List<Offline> gps=findGPS(gpsmap);
  262 + if(gps.size()>0){
  263 + Long ts= gps.get(0).getTs();
  264 + String ts1 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(ts));
  265 + list.get(0).setTsdate(ts1);
  266 + }
212 if(pbb.size()>0){ 267 if(pbb.size()>0){
213 list.get(i).setJsy(pbb.get(0).getjGh()+"/"+pbb.get(0).getjName()); 268 list.get(i).setJsy(pbb.get(0).getjGh()+"/"+pbb.get(0).getjName());
214 list.get(i).setLpname(pbb.get(0).getLpName()); 269 list.get(i).setLpname(pbb.get(0).getLpName());
215 } 270 }
  271 +
216 } 272 }
217 273
218 PageObject<Offline> pageObject = pageHelper.getPageObject(); 274 PageObject<Offline> pageObject = pageHelper.getPageObject();
src/main/java/com/bsth/service/impl/BusinessServiceImpl.java
1 package com.bsth.service.impl; 1 package com.bsth.service.impl;
2 2
  3 +import org.springframework.beans.factory.annotation.Autowired;
3 import org.springframework.stereotype.Service; 4 import org.springframework.stereotype.Service;
4 5
5 import com.bsth.entity.Business; 6 import com.bsth.entity.Business;
  7 +import com.bsth.repository.BusinessRepository;
6 import com.bsth.service.BusinessService; 8 import com.bsth.service.BusinessService;
7 9
8 /** 10 /**
@@ -23,5 +25,12 @@ import com.bsth.service.BusinessService; @@ -23,5 +25,12 @@ import com.bsth.service.BusinessService;
23 25
24 @Service 26 @Service
25 public class BusinessServiceImpl extends BaseServiceImpl<Business, Integer> implements BusinessService{ 27 public class BusinessServiceImpl extends BaseServiceImpl<Business, Integer> implements BusinessService{
  28 + @Autowired
  29 + private BusinessRepository businessRepository;
  30 + @Override
  31 + public long getCompCode() {
  32 + // TODO Auto-generated method stub
  33 + return businessRepository.getMaxId();
  34 + }
26 35
27 } 36 }
src/main/java/com/bsth/service/impl/SectionRouteServiceImpl.java
@@ -6,16 +6,20 @@ import java.util.List; @@ -6,16 +6,20 @@ import java.util.List;
6 import java.util.Map; 6 import java.util.Map;
7 7
8 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.data.domain.Sort;
  10 +import org.springframework.data.domain.Sort.Direction;
9 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
10 12
11 import com.bsth.common.ResponseCode; 13 import com.bsth.common.ResponseCode;
12 import com.bsth.entity.Line; 14 import com.bsth.entity.Line;
13 import com.bsth.entity.Section; 15 import com.bsth.entity.Section;
14 import com.bsth.entity.SectionRoute; 16 import com.bsth.entity.SectionRoute;
  17 +import com.bsth.entity.search.CustomerSpecs;
15 import com.bsth.repository.LineRepository; 18 import com.bsth.repository.LineRepository;
16 import com.bsth.repository.SectionRepository; 19 import com.bsth.repository.SectionRepository;
17 import com.bsth.repository.SectionRouteRepository; 20 import com.bsth.repository.SectionRouteRepository;
18 import com.bsth.service.SectionRouteService; 21 import com.bsth.service.SectionRouteService;
  22 +import com.bsth.util.GetUIDAndCode;
19 23
20 /** 24 /**
21 * 25 *
@@ -45,6 +49,14 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -45,6 +49,14 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
45 @Autowired 49 @Autowired
46 LineRepository lineRepository; 50 LineRepository lineRepository;
47 51
  52 + @Override
  53 + public Iterable<SectionRoute> list(Map<String, Object> map) {
  54 + List<Sort.Order> orderList = new ArrayList<>();
  55 + orderList.add(new Sort.Order(Direction.ASC, "directions"));
  56 + orderList.add(new Sort.Order(Direction.ASC, "sectionrouteCode"));
  57 + return repository.findAll(new CustomerSpecs<SectionRoute>(map), new Sort(orderList));
  58 + }
  59 +
48 /** 60 /**
49 * @Description :TODO(查询路段信息) 61 * @Description :TODO(查询路段信息)
50 * 62 *
@@ -185,6 +197,7 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -185,6 +197,7 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
185 197
186 tempM.put("sectionVersion", objects.get(i)[33]); 198 tempM.put("sectionVersion", objects.get(i)[33]);
187 199
  200 + tempM.put("isRoadeSpeed", objects.get(i)[34]);
188 resultList.add(tempM); 201 resultList.add(tempM);
189 } 202 }
190 203
@@ -203,32 +216,19 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -203,32 +216,19 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
203 */ 216 */
204 @Override 217 @Override
205 public List<Map<String, Object>> findUpSectionRouteCode(Map<String, Object> map) { 218 public List<Map<String, Object>> findUpSectionRouteCode(Map<String, Object> map) {
206 -  
207 Integer lineId = map.get("lineId").equals("") ? null : Integer.parseInt(map.get("lineId").toString()); 219 Integer lineId = map.get("lineId").equals("") ? null : Integer.parseInt(map.get("lineId").toString());
208 -  
209 Integer direction = map.get("direction").equals("") ? null : Integer.parseInt(map.get("direction").toString()); 220 Integer direction = map.get("direction").equals("") ? null : Integer.parseInt(map.get("direction").toString());
210 -  
211 Integer stationRouteCode = map.get("sectionRouteCode").equals("") ? null : Integer.parseInt(map.get("sectionRouteCode").toString()); 221 Integer stationRouteCode = map.get("sectionRouteCode").equals("") ? null : Integer.parseInt(map.get("sectionRouteCode").toString());
212 -  
213 List<Object[]> reslutList = repository.findUpSectionRouteCode(lineId, direction, stationRouteCode); 222 List<Object[]> reslutList = repository.findUpSectionRouteCode(lineId, direction, stationRouteCode);
214 -  
215 List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); 223 List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
216 -  
217 if(reslutList.get(0)!=null) { 224 if(reslutList.get(0)!=null) {
218 -  
219 for(int i = 0 ; i <reslutList.size() ;i++){ 225 for(int i = 0 ; i <reslutList.size() ;i++){
220 -  
221 Map<String, Object> tempM = new HashMap<String, Object>(); 226 Map<String, Object> tempM = new HashMap<String, Object>();
222 -  
223 System.out.println(reslutList.get(i)); 227 System.out.println(reslutList.get(i));
224 -  
225 tempM.put("sectionrouteCode", reslutList.get(i)); 228 tempM.put("sectionrouteCode", reslutList.get(i));
226 -  
227 list.add(tempM); 229 list.add(tempM);
228 -  
229 } 230 }
230 } 231 }
231 -  
232 return list; 232 return list;
233 } 233 }
234 234
@@ -243,8 +243,10 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -243,8 +243,10 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
243 List<Object[]> list = repository.getSectionRoute(line, dir); 243 List<Object[]> list = repository.getSectionRoute(line, dir);
244 int src = repository.sectionRouteCodeMaxId(); 244 int src = repository.sectionRouteCodeMaxId();
245 for(int i = 0 ; i<list.size() ; i++) { 245 for(int i = 0 ; i<list.size() ; i++) {
246 - int sectionId = Integer.parseInt(String.valueOf(repository2.sectionMaxId())) + 1 ;  
247 - String sectionCode = String.valueOf(sectionId); 246 + /*int sectionId = Integer.parseInt(String.valueOf(repository2.sectionMaxId())) + 1 ;*/
  247 + long sectionMaxId = GetUIDAndCode.getSectionId();
  248 + String sectionCode = String.valueOf(sectionMaxId);
  249 + int sectionId = (int)sectionMaxId;
248 String sectionName = list.get(i)[9] == null ? null : list.get(i)[9].toString(); 250 String sectionName = list.get(i)[9] == null ? null : list.get(i)[9].toString();
249 String crosesRoad = list.get(i)[10] == null ? null : list.get(i)[10].toString(); 251 String crosesRoad = list.get(i)[10] == null ? null : list.get(i)[10].toString();
250 String endNode = list.get(i)[11] == null ? null : list.get(i)[11].toString(); 252 String endNode = list.get(i)[11] == null ? null : list.get(i)[11].toString();
@@ -267,12 +269,12 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -267,12 +269,12 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
267 gsectionVector, bsectionVector, 269 gsectionVector, bsectionVector,
268 sectionType, csectionVector, roadCoding, 270 sectionType, csectionVector, roadCoding,
269 sectionDistance, sectionTime, dbType, speedLimit, descriptions, versions, sectionId); 271 sectionDistance, sectionTime, dbType, speedLimit, descriptions, versions, sectionId);
270 - int sectionRouteId = Integer.parseInt(String.valueOf(repository.sectionRouteMaxId())) + 1 ; 272 + // int sectionRouteId = Integer.parseInt(String.valueOf(repository.sectionRouteMaxId())) + 1 ;
271 SectionRoute sr = new SectionRoute(); 273 SectionRoute sr = new SectionRoute();
272 Line lineObject = lineRepository.findOne(line); 274 Line lineObject = lineRepository.findOne(line);
273 Section section = repository2.findOne(sectionId); 275 Section section = repository2.findOne(sectionId);
274 Integer xh = (src == 0 ? (toDir ==1? (list.size()-i)*10 : (list.size()+i)*10) : toDir==1? (src + (list.size()-i)*10) : (src + (list.size()+i)*10)) ; 276 Integer xh = (src == 0 ? (toDir ==1? (list.size()-i)*10 : (list.size()+i)*10) : toDir==1? (src + (list.size()-i)*10) : (src + (list.size()+i)*10)) ;
275 - sr.setId(sectionRouteId); 277 + // sr.setId(sectionRouteId);
276 sr.setSectionrouteCode(xh); 278 sr.setSectionrouteCode(xh);
277 sr.setLineCode(lineObject.getLineCode()); 279 sr.setLineCode(lineObject.getLineCode());
278 sr.setSectionCode(sectionCode); 280 sr.setSectionCode(sectionCode);
@@ -294,5 +296,4 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -294,5 +296,4 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
294 } 296 }
295 return resultMap; 297 return resultMap;
296 } 298 }
297 -  
298 -} 299 +}
299 \ No newline at end of file 300 \ No newline at end of file
src/main/java/com/bsth/service/impl/SectionServiceImpl.java
@@ -7,6 +7,7 @@ import java.util.Map; @@ -7,6 +7,7 @@ import java.util.Map;
7 7
8 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
  10 +import org.springframework.transaction.annotation.Transactional;
10 11
11 import com.alibaba.fastjson.JSONArray; 12 import com.alibaba.fastjson.JSONArray;
12 import com.bsth.common.ResponseCode; 13 import com.bsth.common.ResponseCode;
@@ -57,210 +58,122 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem @@ -57,210 +58,122 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem
57 */ 58 */
58 @Override 59 @Override
59 public Map<String, Object> sectionUpdate(Map<String, Object> map) { 60 public Map<String, Object> sectionUpdate(Map<String, Object> map) {
60 -  
61 Map<String, Object> resultMap = new HashMap<String, Object>(); 61 Map<String, Object> resultMap = new HashMap<String, Object>();
62 -  
63 try { 62 try {
64 -  
65 String bsectionVector = map.get("bsectionVector").equals("") ? "" :map.get("bsectionVector").toString(); 63 String bsectionVector = map.get("bsectionVector").equals("") ? "" :map.get("bsectionVector").toString();
66 -  
67 // 原始线状图形坐标集合 64 // 原始线状图形坐标集合
68 String sectionsBpoints = ""; 65 String sectionsBpoints = "";
69 -  
70 // WGS线状图形坐标集合 66 // WGS线状图形坐标集合
71 String sectionsWJPpoints = ""; 67 String sectionsWJPpoints = "";
72 -  
73 if(!bsectionVector.equals("")) { 68 if(!bsectionVector.equals("")) {
74 -  
75 // 转换成JSON数组 69 // 转换成JSON数组
76 JSONArray sectionsArray = JSONArray.parseArray(bsectionVector); 70 JSONArray sectionsArray = JSONArray.parseArray(bsectionVector);
77 -  
78 // 遍历 71 // 遍历
79 for(int s = 0 ;s<sectionsArray.size();s++) { 72 for(int s = 0 ;s<sectionsArray.size();s++) {
80 -  
81 String pointsLngStr = sectionsArray.getJSONObject(s).get("lng").toString(); 73 String pointsLngStr = sectionsArray.getJSONObject(s).get("lng").toString();
82 -  
83 String pointsLatStr = sectionsArray.getJSONObject(s).get("lat").toString(); 74 String pointsLatStr = sectionsArray.getJSONObject(s).get("lat").toString();
84 -  
85 /** to WGS坐标 */ 75 /** to WGS坐标 */
86 Location resultPoint = FromBDPointToWGSPoint(pointsLngStr,pointsLatStr); 76 Location resultPoint = FromBDPointToWGSPoint(pointsLngStr,pointsLatStr);
87 -  
88 String WGSLngStr = String.valueOf(resultPoint.getLng()); 77 String WGSLngStr = String.valueOf(resultPoint.getLng());
89 -  
90 String WGSLatStr = String.valueOf(resultPoint.getLat()); 78 String WGSLatStr = String.valueOf(resultPoint.getLat());
91 -  
92 if(s==0) { 79 if(s==0) {
93 -  
94 sectionsBpoints = pointsLngStr + " " + pointsLatStr; 80 sectionsBpoints = pointsLngStr + " " + pointsLatStr;
95 -  
96 sectionsWJPpoints = WGSLngStr + " " + WGSLatStr; 81 sectionsWJPpoints = WGSLngStr + " " + WGSLatStr;
97 -  
98 }else { 82 }else {
99 -  
100 sectionsBpoints = sectionsBpoints + "," + pointsLngStr + " " + pointsLatStr; 83 sectionsBpoints = sectionsBpoints + "," + pointsLngStr + " " + pointsLatStr;
101 -  
102 sectionsWJPpoints = sectionsWJPpoints + "," + WGSLngStr + " " + WGSLatStr; 84 sectionsWJPpoints = sectionsWJPpoints + "," + WGSLngStr + " " + WGSLatStr;
103 -  
104 } 85 }
105 -  
106 -  
107 } 86 }
108 -  
109 } 87 }
110 -  
111 // 原坐标类型 88 // 原坐标类型
112 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString(); 89 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
113 -  
114 // 说明 90 // 说明
115 String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString(); 91 String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();
116 -  
117 // 是否撤销 92 // 是否撤销
118 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString()); 93 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
119 -  
120 // 方向 94 // 方向
121 Integer directions = map.get("directions").equals("") ? null : Integer.parseInt(map.get("directions").toString()); 95 Integer directions = map.get("directions").equals("") ? null : Integer.parseInt(map.get("directions").toString());
122 -  
123 // 线路ID 96 // 线路ID
124 Integer sectionRouteLine = map.get("sectionRouteLine").equals("") ? null : Integer.parseInt(map.get("sectionRouteLine").toString()); 97 Integer sectionRouteLine = map.get("sectionRouteLine").equals("") ? null : Integer.parseInt(map.get("sectionRouteLine").toString());
125 -  
126 // 道路编码 98 // 道路编码
127 String roadCoding = map.get("roadCoding").equals("") ? "" : map.get("roadCoding").toString(); 99 String roadCoding = map.get("roadCoding").equals("") ? "" : map.get("roadCoding").toString();
128 -  
129 // 路段编码 100 // 路段编码
130 String sectionCode = map.get("sectionCode").equals("") ? "" : map.get("sectionCode").toString(); 101 String sectionCode = map.get("sectionCode").equals("") ? "" : map.get("sectionCode").toString();
131 -  
132 // 路段长度 102 // 路段长度
133 Double sectionDistance = map.get("sectionDistance").equals("") ? null : Double.valueOf(map.get("sectionDistance").toString()); 103 Double sectionDistance = map.get("sectionDistance").equals("") ? null : Double.valueOf(map.get("sectionDistance").toString());
134 -  
135 // 路段ID 104 // 路段ID
136 Integer sectionId = map.get("sectionId").equals("") ? 0 : Integer.parseInt(map.get("sectionId").toString()); 105 Integer sectionId = map.get("sectionId").equals("") ? 0 : Integer.parseInt(map.get("sectionId").toString());
137 -  
138 // 路段名称 106 // 路段名称
139 String sectionName = map.get("sectionName").equals("") ? "" : map.get("sectionName").toString(); 107 String sectionName = map.get("sectionName").equals("") ? "" : map.get("sectionName").toString();
140 -  
141 // 路段路由Id 108 // 路段路由Id
142 Integer sectionRouteId = map.get("sectionRouteId").equals("") ? null : Integer.valueOf(map.get("sectionRouteId").toString()); 109 Integer sectionRouteId = map.get("sectionRouteId").equals("") ? null : Integer.valueOf(map.get("sectionRouteId").toString());
143 -  
144 // 线路编码 110 // 线路编码
145 String lineCode =map.get("lineCode").equals("") ? "" : map.get("lineCode").toString(); 111 String lineCode =map.get("lineCode").equals("") ? "" : map.get("lineCode").toString();
146 -  
147 // 路段时长 112 // 路段时长
148 Double sectionTime = map.get("sectionTime").equals("") ? null : Double.valueOf(map.get("sectionTime").toString()); 113 Double sectionTime = map.get("sectionTime").equals("") ? null : Double.valueOf(map.get("sectionTime").toString());
149 -  
150 // 路段路由 114 // 路段路由
151 Integer sectionrouteCode = map.get("sectionrouteCode").equals("") ? null : Integer.valueOf(map.get("sectionrouteCode").toString()); 115 Integer sectionrouteCode = map.get("sectionrouteCode").equals("") ? null : Integer.valueOf(map.get("sectionrouteCode").toString());
152 -  
153 SectionRoute resultS = routeRepository.findOne(sectionRouteId); 116 SectionRoute resultS = routeRepository.findOne(sectionRouteId);
154 -  
155 int old_code = resultS.getSectionrouteCode(); 117 int old_code = resultS.getSectionrouteCode();
156 -  
157 if(sectionrouteCode!=null) { 118 if(sectionrouteCode!=null) {
158 -  
159 int new_code = sectionrouteCode+100; 119 int new_code = sectionrouteCode+100;
160 -  
161 if(new_code==old_code){ 120 if(new_code==old_code){
162 -  
163 sectionrouteCode = new_code; 121 sectionrouteCode = new_code;
164 -  
165 }else { 122 }else {
166 -  
167 sectionrouteCode = new_code-100+1; 123 sectionrouteCode = new_code-100+1;
168 -  
169 } 124 }
170 -  
171 }else { 125 }else {
172 -  
173 sectionrouteCode = old_code; 126 sectionrouteCode = old_code;
174 -  
175 } 127 }
176 -  
177 // 限速 128 // 限速
178 Double speedLimit = map.get("speedLimit").equals("") ? null : Double.valueOf(map.get("speedLimit").toString()); 129 Double speedLimit = map.get("speedLimit").equals("") ? null : Double.valueOf(map.get("speedLimit").toString());
179 -  
180 // 版本 130 // 版本
181 Integer version = map.get("versions").equals("") ? null : Integer.valueOf(map.get("versions").toString()); 131 Integer version = map.get("versions").equals("") ? null : Integer.valueOf(map.get("versions").toString());
182 -  
183 // WGS坐标点集合 132 // WGS坐标点集合
184 String gsectionVector = null; 133 String gsectionVector = null;
185 if(!sectionsWJPpoints.equals("")) 134 if(!sectionsWJPpoints.equals(""))
186 gsectionVector = "LINESTRING(" + sectionsWJPpoints +")"; 135 gsectionVector = "LINESTRING(" + sectionsWJPpoints +")";
187 -  
188 // 原坐标点集合 136 // 原坐标点集合
189 String bsectionVectorS = null; 137 String bsectionVectorS = null;
190 if(!sectionsBpoints.equals("")) 138 if(!sectionsBpoints.equals(""))
191 bsectionVectorS = "LINESTRING(" + sectionsBpoints + ")"; 139 bsectionVectorS = "LINESTRING(" + sectionsBpoints + ")";
192 -  
193 Integer createBy = map.get("createBy").equals("") ? null : Integer.valueOf(map.get("createBy").toString()); 140 Integer createBy = map.get("createBy").equals("") ? null : Integer.valueOf(map.get("createBy").toString());
194 -  
195 String createDate = map.get("createDate").equals("") ? null : map.get("createDate").toString(); 141 String createDate = map.get("createDate").equals("") ? null : map.get("createDate").toString();
196 -  
197 Integer updateBy = map.get("updateBy").equals("") ?null : Integer.valueOf(map.get("updateBy").toString()); 142 Integer updateBy = map.get("updateBy").equals("") ?null : Integer.valueOf(map.get("updateBy").toString());
198 - 143 + Integer isRoadeSpeed = map.get("isRoadeSpeed").equals("") ? null : Integer.valueOf(map.get("isRoadeSpeed").toString());
199 SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); 144 SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
200 -  
201 Date date = new Date(); 145 Date date = new Date();
202 -  
203 // 修改日期 146 // 修改日期
204 String updateDate = formatter.format(date); 147 String updateDate = formatter.format(date);
205 -  
206 String crosesRoad=""; 148 String crosesRoad="";
207 -  
208 String endNode=""; 149 String endNode="";
209 -  
210 String startNode=""; 150 String startNode="";
211 -  
212 String middleNode=""; 151 String middleNode="";
213 -  
214 String sectionType=""; 152 String sectionType="";
215 -  
216 - // String csectionVector="";  
217 -  
218 // 更新 153 // 更新
219 - /*repository.sectionUpdate(sectionId, gsectionVector, bsectionVectorS, sectionCode, sectionName, crosesRoad, endNode, startNode, middleNode, sectionType, csectionVector, roadCoding, sectionDistance, sectionTime, dbType, speedLimit, descriptions, version, createBy, createDate, updateBy, updateDate);*/  
220 repository.sectionUpdate(sectionId, gsectionVector, bsectionVectorS, sectionCode, sectionName, crosesRoad, endNode, startNode, middleNode, sectionType, roadCoding, sectionDistance, sectionTime, dbType, speedLimit, descriptions, version, createBy, createDate, updateBy, updateDate); 154 repository.sectionUpdate(sectionId, gsectionVector, bsectionVectorS, sectionCode, sectionName, crosesRoad, endNode, startNode, middleNode, sectionType, roadCoding, sectionDistance, sectionTime, dbType, speedLimit, descriptions, version, createBy, createDate, updateBy, updateDate);
221 -  
222 SectionRoute route = new SectionRoute(); 155 SectionRoute route = new SectionRoute();
223 -  
224 Line line = lineRepository.findOne(sectionRouteLine); 156 Line line = lineRepository.findOne(sectionRouteLine);
225 -  
226 Section section = repository.findOne(sectionId); 157 Section section = repository.findOne(sectionId);
227 -  
228 route.setId(sectionRouteId); 158 route.setId(sectionRouteId);
229 -  
230 route.setSectionrouteCode(sectionrouteCode); 159 route.setSectionrouteCode(sectionrouteCode);
231 -  
232 route.setLineCode(lineCode); 160 route.setLineCode(lineCode);
233 -  
234 route.setSectionCode(sectionCode); 161 route.setSectionCode(sectionCode);
235 -  
236 route.setDirections(directions); 162 route.setDirections(directions);
237 -  
238 route.setVersions(version); 163 route.setVersions(version);
239 -  
240 route.setDestroy(destroy); 164 route.setDestroy(destroy);
241 -  
242 route.setDescriptions(descriptions); 165 route.setDescriptions(descriptions);
243 -  
244 route.setCreateBy(createBy); 166 route.setCreateBy(createBy);
245 -  
246 route.setUpdateBy(updateBy); 167 route.setUpdateBy(updateBy);
247 -  
248 route.setLine(line); 168 route.setLine(line);
249 -  
250 route.setSection(section); 169 route.setSection(section);
251 - 170 + route.setIsRoadeSpeed(isRoadeSpeed);
252 routeRepository.save(route); 171 routeRepository.save(route);
253 -  
254 resultMap.put("status", ResponseCode.SUCCESS); 172 resultMap.put("status", ResponseCode.SUCCESS);
255 -  
256 } catch (Exception e) { 173 } catch (Exception e) {
257 -  
258 resultMap.put("status", ResponseCode.ERROR); 174 resultMap.put("status", ResponseCode.ERROR);
259 -  
260 logger.error("save erro.", e); 175 logger.error("save erro.", e);
261 -  
262 } 176 }
263 -  
264 return resultMap; 177 return resultMap;
265 } 178 }
266 179
@@ -294,164 +207,105 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem @@ -294,164 +207,105 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem
294 * @return map<SUCCESS:成功;ERROR:异常> 207 * @return map<SUCCESS:成功;ERROR:异常>
295 */ 208 */
296 @Override 209 @Override
  210 + @Transactional
297 public Map<String, Object> sectionSave(Map<String, Object> map) { 211 public Map<String, Object> sectionSave(Map<String, Object> map) {
298 -  
299 Map<String, Object> resultMap = new HashMap<String, Object>(); 212 Map<String, Object> resultMap = new HashMap<String, Object>();
300 -  
301 try { 213 try {
302 -  
303 - /** 线路ID */ 214 + // 线路ID.
304 Integer lineId = map.get("lineId").equals("") ? null : Integer.valueOf(map.get("lineId").toString()); 215 Integer lineId = map.get("lineId").equals("") ? null : Integer.valueOf(map.get("lineId").toString());
305 -  
306 - /** 线路编码 */ 216 + // 线路编码.
307 String lineCode = map.get("lineCode").equals("") ? "" : map.get("lineCode").toString(); 217 String lineCode = map.get("lineCode").equals("") ? "" : map.get("lineCode").toString();
308 - 218 + // 路段名称.
309 String sectionName = map.get("sectionName").equals("") ? "" : map.get("sectionName").toString(); 219 String sectionName = map.get("sectionName").equals("") ? "" : map.get("sectionName").toString();
310 - 220 + // 路段编码.
311 String sectionCode = map.get("sectionCode").equals("") ? "" : map.get("sectionCode").toString(); 221 String sectionCode = map.get("sectionCode").equals("") ? "" : map.get("sectionCode").toString();
312 - 222 + // 道路编码.
313 String roadCoding = map.get("roadCoding").equals("") ? "" : map.get("roadCoding").toString(); 223 String roadCoding = map.get("roadCoding").equals("") ? "" : map.get("roadCoding").toString();
314 - 224 + // 原始坐标类型.
315 String dbType = map.get("dbType").equals("") ? "" :map.get("dbType").toString(); 225 String dbType = map.get("dbType").equals("") ? "" :map.get("dbType").toString();
316 - 226 + // 路段几何图形坐标.
317 String sectionJSON = map.get("bsectionVector").equals("") ? "" : map.get("bsectionVector").toString(); 227 String sectionJSON = map.get("bsectionVector").equals("") ? "" : map.get("bsectionVector").toString();
318 - 228 + // 路段序号
319 String sectionrouteCode = map.get("sectionrouteCode").equals("") ? "" : map.get("sectionrouteCode").toString(); 229 String sectionrouteCode = map.get("sectionrouteCode").equals("") ? "" : map.get("sectionrouteCode").toString();
320 -  
321 - Double sectionTime = map.get("sectionTime").equals("") ? null : Double.valueOf(map.get("sectionTime").toString());  
322 -  
323 - Double sectionDistance = map.get("sectionDistance").equals("") ? null : Double.valueOf(map.get("sectionDistance").toString());  
324 -  
325 - Double speedLimit = map.get("speedLimit").equals("") ? null : Double.valueOf(map.get("speedLimit").toString());  
326 -  
327 - Integer versions = map.get("versions").equals("") ? null : Integer.valueOf(map.get("versions").toString());  
328 -  
329 - Integer destroy = map.get("destroy").equals("") ? null : Integer.valueOf(map.get("destroy").toString());  
330 -  
331 - Integer directions = map.get("directions").equals("") ? null : Integer.valueOf(map.get("directions").toString());  
332 - 230 + // 路段时长.
  231 + Double sectionTime = map.get("sectionTime").equals("") ? 0.0d : Double.valueOf(map.get("sectionTime").toString());
  232 + // 路段距离.
  233 + Double sectionDistance = map.get("sectionDistance").equals("") ? 0.0d : Double.valueOf(map.get("sectionDistance").toString());
  234 + // 路段限速.
  235 + Double speedLimit = map.get("speedLimit").equals("") ? 0.0d : Double.valueOf(map.get("speedLimit").toString());
  236 + // 版本.
  237 + Integer versions = map.get("versions").equals("") ? 1 : Integer.valueOf(map.get("versions").toString());
  238 + // 是否撤销.
  239 + Integer destroy = map.get("destroy").equals("") ? 0 : Integer.valueOf(map.get("destroy").toString());
  240 + // 路段方向.
  241 + Integer directions = map.get("directions").equals("") ? 0 : Integer.valueOf(map.get("directions").toString());
  242 + // 描述与说明.
333 String descriptions = map.get("descriptions").equals("")? "" : map.get("descriptions").toString(); 243 String descriptions = map.get("descriptions").equals("")? "" : map.get("descriptions").toString();
334 -  
335 // 原始线状图形坐标集合 244 // 原始线状图形坐标集合
336 String sectionsBpoints = ""; 245 String sectionsBpoints = "";
337 -  
338 // WGS线状图形坐标集合 246 // WGS线状图形坐标集合
339 String sectionsWJPpoints = ""; 247 String sectionsWJPpoints = "";
340 -  
341 if(!sectionJSON.equals("")) { 248 if(!sectionJSON.equals("")) {
342 -  
343 // 转换成JSON数组 249 // 转换成JSON数组
344 JSONArray sectionsArray = JSONArray.parseArray(sectionJSON); 250 JSONArray sectionsArray = JSONArray.parseArray(sectionJSON);
345 -  
346 // 遍历 251 // 遍历
347 for(int s = 0 ;s<sectionsArray.size();s++) { 252 for(int s = 0 ;s<sectionsArray.size();s++) {
348 -  
349 String pointsLngStr = sectionsArray.getJSONObject(s).get("lng").toString(); 253 String pointsLngStr = sectionsArray.getJSONObject(s).get("lng").toString();
350 -  
351 String pointsLatStr = sectionsArray.getJSONObject(s).get("lat").toString(); 254 String pointsLatStr = sectionsArray.getJSONObject(s).get("lat").toString();
352 -  
353 String WGSLngStr = ""; 255 String WGSLngStr = "";
354 -  
355 String WGSLatStr = ""; 256 String WGSLatStr = "";
356 -  
357 Location resultPoint = FromBDPointToWGSPoint(pointsLngStr,pointsLatStr); 257 Location resultPoint = FromBDPointToWGSPoint(pointsLngStr,pointsLatStr);
358 -  
359 WGSLngStr = String.valueOf(resultPoint.getLng()); 258 WGSLngStr = String.valueOf(resultPoint.getLng());
360 -  
361 WGSLatStr = String.valueOf(resultPoint.getLat()); 259 WGSLatStr = String.valueOf(resultPoint.getLat());
362 -  
363 if(s==0) { 260 if(s==0) {
364 -  
365 sectionsBpoints = pointsLngStr + " " + pointsLatStr; 261 sectionsBpoints = pointsLngStr + " " + pointsLatStr;
366 -  
367 sectionsWJPpoints = WGSLngStr + " " + WGSLatStr; 262 sectionsWJPpoints = WGSLngStr + " " + WGSLatStr;
368 -  
369 }else { 263 }else {
370 -  
371 sectionsBpoints = sectionsBpoints + "," + pointsLngStr + " " + pointsLatStr; 264 sectionsBpoints = sectionsBpoints + "," + pointsLngStr + " " + pointsLatStr;
372 -  
373 sectionsWJPpoints = sectionsWJPpoints + "," + WGSLngStr + " " + WGSLatStr; 265 sectionsWJPpoints = sectionsWJPpoints + "," + WGSLngStr + " " + WGSLatStr;
374 -  
375 } 266 }
376 -  
377 } 267 }
378 -  
379 } 268 }
380 -  
381 // WGS坐标点集合 269 // WGS坐标点集合
382 String gsectionVector = "LINESTRING(" + sectionsWJPpoints +")"; 270 String gsectionVector = "LINESTRING(" + sectionsWJPpoints +")";
383 -  
384 // 原坐标点集合 271 // 原坐标点集合
385 String bsectionVector = "LINESTRING(" + sectionsBpoints + ")"; 272 String bsectionVector = "LINESTRING(" + sectionsBpoints + ")";
386 -  
387 String crosesRoad=""; 273 String crosesRoad="";
388 -  
389 String endNode =""; 274 String endNode ="";
390 -  
391 String startNode=""; 275 String startNode="";
392 -  
393 String middleNode=""; 276 String middleNode="";
394 -  
395 String sectionType=""; 277 String sectionType="";
396 -  
397 String csectionVector=null; 278 String csectionVector=null;
398 -  
399 Integer id = Integer.valueOf(sectionCode); 279 Integer id = Integer.valueOf(sectionCode);
400 -  
401 repository.systemSave(sectionCode, sectionName, crosesRoad, endNode, startNode, middleNode, gsectionVector, bsectionVector, sectionType, csectionVector, roadCoding, sectionDistance, sectionTime, dbType, speedLimit, descriptions, versions, id); 280 repository.systemSave(sectionCode, sectionName, crosesRoad, endNode, startNode, middleNode, gsectionVector, bsectionVector, sectionType, csectionVector, roadCoding, sectionDistance, sectionTime, dbType, speedLimit, descriptions, versions, id);
402 -  
403 Section section = repository.findOne(id); 281 Section section = repository.findOne(id);
404 -  
405 Line line = lineRepository.findOne(lineId); 282 Line line = lineRepository.findOne(lineId);
406 -  
407 // 路段路由 283 // 路段路由
408 SectionRoute sectionRoute = new SectionRoute(); 284 SectionRoute sectionRoute = new SectionRoute();
409 -  
410 Integer routeCode = null; 285 Integer routeCode = null;
411 -  
412 if(!sectionrouteCode.equals("")){ 286 if(!sectionrouteCode.equals("")){
413 -  
414 String sectionrouteCodeArray[] = sectionrouteCode.split("_"); 287 String sectionrouteCodeArray[] = sectionrouteCode.split("_");
415 -  
416 routeCode = Integer.valueOf(sectionrouteCodeArray[0])+1; 288 routeCode = Integer.valueOf(sectionrouteCodeArray[0])+1;
417 -  
418 }else { 289 }else {
419 -  
420 routeCode = 100; 290 routeCode = 100;
421 -  
422 } 291 }
423 - 292 + routeRepository.sectionUpdSectionRouteCode(lineId, directions,routeCode);
424 sectionRoute.setSectionrouteCode(routeCode); 293 sectionRoute.setSectionrouteCode(routeCode);
425 -  
426 sectionRoute.setLineCode(lineCode); 294 sectionRoute.setLineCode(lineCode);
427 -  
428 sectionRoute.setSection(section); 295 sectionRoute.setSection(section);
429 -  
430 sectionRoute.setSectionCode(sectionCode); 296 sectionRoute.setSectionCode(sectionCode);
431 -  
432 sectionRoute.setDirections(directions); 297 sectionRoute.setDirections(directions);
433 -  
434 sectionRoute.setDescriptions(descriptions); 298 sectionRoute.setDescriptions(descriptions);
435 -  
436 sectionRoute.setDestroy(destroy); 299 sectionRoute.setDestroy(destroy);
437 -  
438 sectionRoute.setVersions(versions); 300 sectionRoute.setVersions(versions);
439 -  
440 sectionRoute.setLine(line); 301 sectionRoute.setLine(line);
441 - 302 + sectionRoute.setIsRoadeSpeed(0);
442 routeRepository.save(sectionRoute); 303 routeRepository.save(sectionRoute);
443 -  
444 resultMap.put("status", ResponseCode.SUCCESS); 304 resultMap.put("status", ResponseCode.SUCCESS);
445 -  
446 } catch (Exception e) { 305 } catch (Exception e) {
447 -  
448 resultMap.put("status", ResponseCode.ERROR); 306 resultMap.put("status", ResponseCode.ERROR);
449 -  
450 logger.error("save erro.", e); 307 logger.error("save erro.", e);
451 -  
452 } 308 }
453 -  
454 return resultMap; 309 return resultMap;
455 } 310 }
456 -  
457 -} 311 +}
458 \ No newline at end of file 312 \ No newline at end of file
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
@@ -4,6 +4,7 @@ import com.bsth.common.ResponseCode; @@ -4,6 +4,7 @@ import com.bsth.common.ResponseCode;
4 import com.bsth.entity.Line; 4 import com.bsth.entity.Line;
5 import com.bsth.entity.Station; 5 import com.bsth.entity.Station;
6 import com.bsth.entity.StationRoute; 6 import com.bsth.entity.StationRoute;
  7 +import com.bsth.entity.search.CustomerSpecs;
7 import com.bsth.repository.LineRepository; 8 import com.bsth.repository.LineRepository;
8 import com.bsth.repository.SectionRouteRepository; 9 import com.bsth.repository.SectionRouteRepository;
9 import com.bsth.repository.StationRepository; 10 import com.bsth.repository.StationRepository;
@@ -16,6 +17,8 @@ import com.bsth.util.Geo.Point; @@ -16,6 +17,8 @@ import com.bsth.util.Geo.Point;
16 import com.bsth.util.db.DBUtils_MS; 17 import com.bsth.util.db.DBUtils_MS;
17 import com.google.common.base.Splitter; 18 import com.google.common.base.Splitter;
18 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
  20 +import org.springframework.data.domain.Sort;
  21 +import org.springframework.data.domain.Sort.Direction;
19 import org.springframework.stereotype.Service; 22 import org.springframework.stereotype.Service;
20 import org.springframework.transaction.annotation.Transactional; 23 import org.springframework.transaction.annotation.Transactional;
21 24
@@ -56,6 +59,14 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ @@ -56,6 +59,14 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
56 @Autowired 59 @Autowired
57 private StationRepository stationRepository; 60 private StationRepository stationRepository;
58 61
  62 + @Override
  63 + public Iterable<StationRoute> list(Map<String, Object> map) {
  64 + List<Sort.Order> orderList = new ArrayList<>();
  65 + orderList.add(new Sort.Order(Direction.ASC, "directions"));
  66 + orderList.add(new Sort.Order(Direction.ASC, "stationRouteCode"));
  67 + return repository.findAll(new CustomerSpecs<StationRoute>(map), new Sort(orderList));
  68 + }
  69 +
59 /** 70 /**
60 * @Description :TODO(查询树站点与路段数据) 71 * @Description :TODO(查询树站点与路段数据)
61 * 72 *
@@ -402,34 +413,22 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ @@ -402,34 +413,22 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
402 */ 413 */
403 @Override 414 @Override
404 public List<Map<String, Object>> findUpStationRouteCode(Map<String, Object> map) { 415 public List<Map<String, Object>> findUpStationRouteCode(Map<String, Object> map) {
405 -  
406 Integer lineId = map.get("lineId").equals("") ? null : Integer.parseInt(map.get("lineId").toString()); 416 Integer lineId = map.get("lineId").equals("") ? null : Integer.parseInt(map.get("lineId").toString());
407 -  
408 Integer direction = map.get("direction").equals("") ? null : Integer.parseInt(map.get("direction").toString()); 417 Integer direction = map.get("direction").equals("") ? null : Integer.parseInt(map.get("direction").toString());
409 -  
410 Integer stationRouteCode = map.get("stationRouteCode").equals("") ? null : Integer.parseInt(map.get("stationRouteCode").toString()); 418 Integer stationRouteCode = map.get("stationRouteCode").equals("") ? null : Integer.parseInt(map.get("stationRouteCode").toString());
411 -  
412 List<Object[]> reslutList = repository.findUpStationRouteCode(lineId, direction, stationRouteCode); 419 List<Object[]> reslutList = repository.findUpStationRouteCode(lineId, direction, stationRouteCode);
413 -  
414 List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); 420 List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
415 -  
416 if(reslutList.size()>0) { 421 if(reslutList.size()>0) {
417 -  
418 for(int i = 0 ; i <reslutList.size() ;i++){ 422 for(int i = 0 ; i <reslutList.size() ;i++){
419 Map<String, Object> tempM = new HashMap<String, Object>(); 423 Map<String, Object> tempM = new HashMap<String, Object>();
420 tempM.put("stationRouteCode", reslutList.get(i)[0]); 424 tempM.put("stationRouteCode", reslutList.get(i)[0]);
421 tempM.put("stationRouteMarke", reslutList.get(i)[1]); 425 tempM.put("stationRouteMarke", reslutList.get(i)[1]);
422 -  
423 list.add(tempM); 426 list.add(tempM);
424 -  
425 } 427 }
426 -  
427 } 428 }
428 -  
429 return list; 429 return list;
430 } 430 }
431 431
432 -  
433 /** 432 /**
434 * @Description :TODO(查询线路某方向下所有站点的中心百度坐标) 433 * @Description :TODO(查询线路某方向下所有站点的中心百度坐标)
435 * 434 *
src/main/java/com/bsth/service/impl/StationServiceImpl.java
@@ -31,6 +31,8 @@ import com.bsth.service.StationService; @@ -31,6 +31,8 @@ import com.bsth.service.StationService;
31 import com.bsth.util.GetUIDAndCode; 31 import com.bsth.util.GetUIDAndCode;
32 import com.bsth.util.TransGPS; 32 import com.bsth.util.TransGPS;
33 import com.bsth.util.TransGPS.Location; 33 import com.bsth.util.TransGPS.Location;
  34 +import com.bsth.util.Geo.GeoUtils;
  35 +import com.bsth.util.Geo.Point;
34 36
35 /** 37 /**
36 * 38 *
@@ -82,62 +84,41 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -82,62 +84,41 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
82 */ 84 */
83 @Override 85 @Override
84 public Map<String, Object> systemSaveStations(Map<String, Object> map) { 86 public Map<String, Object> systemSaveStations(Map<String, Object> map) {
85 -  
86 Map<String, Object> resultMap = new HashMap<String,Object>(); 87 Map<String, Object> resultMap = new HashMap<String,Object>();
87 -  
88 try { 88 try {
89 -  
90 // 站点信息字符传 89 // 站点信息字符传
91 String stationJSON = map.get("stationJSON").toString().equals("") ? "" : map.get("stationJSON").toString(); 90 String stationJSON = map.get("stationJSON").toString().equals("") ? "" : map.get("stationJSON").toString();
92 -  
93 // 路段信息字符串 91 // 路段信息字符串
94 String sectionJSON = map.get("sectionJSON").toString().equals("") ? "" : map.get("sectionJSON").toString(); 92 String sectionJSON = map.get("sectionJSON").toString().equals("") ? "" : map.get("sectionJSON").toString();
95 -  
96 // 方向 93 // 方向
97 int directions = Integer.parseInt(map.get("directions").toString()); 94 int directions = Integer.parseInt(map.get("directions").toString());
98 -  
99 // 是否撤销 95 // 是否撤销
100 int destroy = map.get("destroy").equals("") ? 0 : Integer.parseInt(map.get("destroy").toString()); 96 int destroy = map.get("destroy").equals("") ? 0 : Integer.parseInt(map.get("destroy").toString());
101 -  
102 // 版本 97 // 版本
103 int versions = map.get("versions").equals("") ? 0 : Integer.parseInt(map.get("versions").toString()); 98 int versions = map.get("versions").equals("") ? 0 : Integer.parseInt(map.get("versions").toString());
104 -  
105 // 坐标类型 99 // 坐标类型
106 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString(); 100 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
107 -  
108 // 限速 101 // 限速
109 String speedLimitStr = map.get("speedLimit").equals("") ? "" : map.get("speedLimit").toString(); 102 String speedLimitStr = map.get("speedLimit").equals("") ? "" : map.get("speedLimit").toString();
110 -  
111 // 线路ID 103 // 线路ID
112 int lineId = map.get("lineId").toString().equals("") ? 0 : Integer.parseInt(map.get("lineId").toString()); 104 int lineId = map.get("lineId").toString().equals("") ? 0 : Integer.parseInt(map.get("lineId").toString());
113 -  
114 // 半径 105 // 半径
115 int radius = map.get("radius").equals("") ? 0 : Integer.parseInt(map.get("radius").toString()); 106 int radius = map.get("radius").equals("") ? 0 : Integer.parseInt(map.get("radius").toString());
116 -  
117 // 图形类型 107 // 图形类型
118 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString(); 108 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
119 -  
120 // 路段距离 109 // 路段距离
121 Double sectionDistance = 0.0d; 110 Double sectionDistance = 0.0d;
122 -  
123 // 路段时长 111 // 路段时长
124 Double sectionDuration = 0.0d; 112 Double sectionDuration = 0.0d;
125 -  
126 // 里程(上或者下) 113 // 里程(上或者下)
127 double sumUpOrDownMileage = 0.0d; 114 double sumUpOrDownMileage = 0.0d;
128 -  
129 // 线路信息 115 // 线路信息
130 Line resultLine = lineRepository.findOne(lineId); 116 Line resultLine = lineRepository.findOne(lineId);
131 -  
132 Map<String, Object> resultSaveMapm = new HashMap<String,Object>(); 117 Map<String, Object> resultSaveMapm = new HashMap<String,Object>();
133 -  
134 String baseRes = map.get("baseRes").equals("") ? "" : map.get("baseRes").toString(); 118 String baseRes = map.get("baseRes").equals("") ? "" : map.get("baseRes").toString();
135 -  
136 if(!stationJSON.equals("")) { 119 if(!stationJSON.equals("")) {
137 -  
138 // 保存站点与站点路由信息 120 // 保存站点与站点路由信息
139 resultSaveMapm = savaStationAndStationRouteInfo( stationJSON, sectionDistance, sectionDuration, dbType,radius, shapesType, destroy, versions, sumUpOrDownMileage, directions, resultLine,baseRes); 121 resultSaveMapm = savaStationAndStationRouteInfo( stationJSON, sectionDistance, sectionDuration, dbType,radius, shapesType, destroy, versions, sumUpOrDownMileage, directions, resultLine,baseRes);
140 -  
141 } 122 }
142 123
143 // 路段长度 124 // 路段长度
@@ -259,275 +240,148 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -259,275 +240,148 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
259 * @throws Exception 240 * @throws Exception
260 */ 241 */
261 public Map<String, Object> savaStationAndStationRouteInfo(String stationJSON,double sectionDistance,double sectionDuration,String dbType, 242 public Map<String, Object> savaStationAndStationRouteInfo(String stationJSON,double sectionDistance,double sectionDuration,String dbType,
262 -  
263 int radius,String shapesType,int destroy,int versions,double sumUpOrDownMileage,int directions,Line resultLine,String baseRes) throws Exception{ 243 int radius,String shapesType,int destroy,int versions,double sumUpOrDownMileage,int directions,Line resultLine,String baseRes) throws Exception{
264 -  
265 Map<String, Object> paramsMeleageAndDistncDura = new HashMap<String,Object>(); 244 Map<String, Object> paramsMeleageAndDistncDura = new HashMap<String,Object>();
266 -  
267 JSONArray stationsArray = JSONArray.parseArray(stationJSON); 245 JSONArray stationsArray = JSONArray.parseArray(stationJSON);
268 -  
269 if(stationsArray.size()>0) { 246 if(stationsArray.size()>0) {
270 -  
271 for(int i = 0;i <stationsArray.size();i++) { 247 for(int i = 0;i <stationsArray.size();i++) {
272 -  
273 // 站点名称 248 // 站点名称
274 String stationName = stationsArray.getJSONObject(i).equals("") ? "" : stationsArray.getJSONObject(i).get("name").toString(); 249 String stationName = stationsArray.getJSONObject(i).equals("") ? "" : stationsArray.getJSONObject(i).get("name").toString();
275 -  
276 Double distance = stationsArray.getJSONObject(i).get("distance").equals("") ? 0 : Double.parseDouble(stationsArray.getJSONObject(i).get("distance").toString()); 250 Double distance = stationsArray.getJSONObject(i).get("distance").equals("") ? 0 : Double.parseDouble(stationsArray.getJSONObject(i).get("distance").toString());
277 -  
278 // 转成公里 251 // 转成公里
279 distance = distance/1000; 252 distance = distance/1000;
280 -  
281 BigDecimal d = new BigDecimal(distance); 253 BigDecimal d = new BigDecimal(distance);
282 -  
283 distance = d.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 254 distance = d.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
284 -  
285 sectionDistance= distance + sectionDistance; 255 sectionDistance= distance + sectionDistance;
286 -  
287 Double duration = stationsArray.getJSONObject(i).get("duration").equals("") ? 0 : Double.parseDouble(stationsArray.getJSONObject(i).get("duration").toString()); 256 Double duration = stationsArray.getJSONObject(i).get("duration").equals("") ? 0 : Double.parseDouble(stationsArray.getJSONObject(i).get("duration").toString());
288 -  
289 // 转成分钟 257 // 转成分钟
290 duration = duration/60; 258 duration = duration/60;
291 -  
292 BigDecimal t = new BigDecimal(duration); 259 BigDecimal t = new BigDecimal(duration);
293 -  
294 duration = t.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 260 duration = t.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
295 -  
296 sectionDuration = duration + sectionDuration; 261 sectionDuration = duration + sectionDuration;
297 -  
298 // 百度经纬度坐标 262 // 百度经纬度坐标
299 String bJwpoints = ""; 263 String bJwpoints = "";
300 -  
301 // 百度坐标经度 264 // 百度坐标经度
302 String bLonx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("potion").toString()).get("lng").toString(); 265 String bLonx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("potion").toString()).get("lng").toString();
303 - 266 + bLonx = bLonx==null || bLonx.equals("") ? "0" : bLonx;
304 // 百度坐标纬度 267 // 百度坐标纬度
305 String bLatx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("potion").toString()).get("lat").toString(); 268 String bLatx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("potion").toString()).get("lat").toString();
306 - 269 + bLatx = bLatx==null || bLatx.equals("") ? "0" : bLatx;
307 List<Object[]> stationNameList = repository.findStationName(stationName); 270 List<Object[]> stationNameList = repository.findStationName(stationName);
308 -  
309 - boolean isHave = isHaveStationname(bJwpoints,stationNameList);  
310 - 271 + Map<String, Object> isHaveMap = isHaveStationname(bLonx,bLatx,stationNameList);
311 // 初始化站点对象 272 // 初始化站点对象
312 Station arg0 = new Station(); 273 Station arg0 = new Station();
313 -  
314 - // 站点编码  
315 - long stationCode = 0L;  
316 -  
317 - if(isHave) {  
318 -  
319 - Integer stationId = Integer.parseInt(stationNameList.get(0)[1].toString());  
320 - 274 + if(Boolean.parseBoolean(isHaveMap.get("isHave").toString())) {
  275 + /*Integer stationId = Integer.parseInt(stationNameList.get(0)[1].toString());*/
  276 + Integer stationId = Integer.parseInt(isHaveMap.get("id").toString());
321 arg0 = repository.findOne(stationId); 277 arg0 = repository.findOne(stationId);
322 -  
323 }else { 278 }else {
324 -  
325 - stationCode = GetUIDAndCode.getStationId();  
326 - 279 + // 站点编码
  280 + long stationCode = GetUIDAndCode.getStationId();
327 arg0.setStationCod(String.valueOf(stationCode)); 281 arg0.setStationCod(String.valueOf(stationCode));
328 -  
329 arg0.setId((int)stationCode); 282 arg0.setId((int)stationCode);
330 -  
331 arg0.setStationName(stationName); 283 arg0.setStationName(stationName);
332 -  
333 // 原坐标类型 284 // 原坐标类型
334 arg0.setDbType(dbType); 285 arg0.setDbType(dbType);
335 -  
336 -  
337 String gLonxStr = JSONObject.parseObject(stationsArray.getJSONObject(i).get("wgs").toString()).get("x").equals("") ? null : JSONObject.parseObject(stationsArray.getJSONObject(i).get("wgs").toString()).get("x").toString(); 286 String gLonxStr = JSONObject.parseObject(stationsArray.getJSONObject(i).get("wgs").toString()).get("x").equals("") ? null : JSONObject.parseObject(stationsArray.getJSONObject(i).get("wgs").toString()).get("x").toString();
338 -  
339 String gLatyStr = JSONObject.parseObject(stationsArray.getJSONObject(i).get("wgs").toString()).get("y").equals("") ? null : JSONObject.parseObject(stationsArray.getJSONObject(i).get("wgs").toString()).get("y").toString(); 287 String gLatyStr = JSONObject.parseObject(stationsArray.getJSONObject(i).get("wgs").toString()).get("y").equals("") ? null : JSONObject.parseObject(stationsArray.getJSONObject(i).get("wgs").toString()).get("y").toString();
340 -  
341 float gLonx = 0.0f; 288 float gLonx = 0.0f;
342 -  
343 float gLaty = 0.0f; 289 float gLaty = 0.0f;
344 -  
345 Location resultPoint = null; 290 Location resultPoint = null;
346 -  
347 if(baseRes.equals("No")){ 291 if(baseRes.equals("No")){
348 -  
349 /** BD to WGS坐标 */ 292 /** BD to WGS坐标 */
350 resultPoint = FromBDPointToWGSPoint(bLonx,bLatx); 293 resultPoint = FromBDPointToWGSPoint(bLonx,bLatx);
351 -  
352 if(gLonxStr==null) 294 if(gLonxStr==null)
353 gLonx = (float)resultPoint.getLng(); 295 gLonx = (float)resultPoint.getLng();
354 else 296 else
355 gLonx = Float.valueOf(gLonxStr); 297 gLonx = Float.valueOf(gLonxStr);
356 -  
357 if(gLatyStr==null) 298 if(gLatyStr==null)
358 gLaty = (float)resultPoint.getLat(); 299 gLaty = (float)resultPoint.getLat();
359 else 300 else
360 gLaty = Float.valueOf(gLatyStr); 301 gLaty = Float.valueOf(gLatyStr);
361 -  
362 arg0.setgLonx(gLonx); 302 arg0.setgLonx(gLonx);
363 -  
364 arg0.setgLaty(gLaty); 303 arg0.setgLaty(gLaty);
365 -  
366 // 百度经纬度 304 // 百度经纬度
367 bJwpoints = bLonx + " " + bLatx; 305 bJwpoints = bLonx + " " + bLatx;
368 -  
369 arg0.setbJwpoints(bJwpoints); 306 arg0.setbJwpoints(bJwpoints);
370 -  
371 }else if(baseRes.equals("GCJ02")){ 307 }else if(baseRes.equals("GCJ02")){
372 -  
373 Location bdLoc = TransGPS.LocationMake(Double.valueOf(gLonxStr), Double.valueOf(gLatyStr)); 308 Location bdLoc = TransGPS.LocationMake(Double.valueOf(gLonxStr), Double.valueOf(gLatyStr));
374 -  
375 Location location = TransGPS.bd_encrypt(bdLoc); 309 Location location = TransGPS.bd_encrypt(bdLoc);
376 -  
377 String GCJLng = String.valueOf(location.getLng()); 310 String GCJLng = String.valueOf(location.getLng());
378 -  
379 String GCJLat = String.valueOf(location.getLat()); 311 String GCJLat = String.valueOf(location.getLat());
380 -  
381 resultPoint = FromBDPointToWGSPoint(GCJLng,GCJLat); 312 resultPoint = FromBDPointToWGSPoint(GCJLng,GCJLat);
382 -  
383 bJwpoints = GCJLng + " " +GCJLat; 313 bJwpoints = GCJLng + " " +GCJLat;
384 -  
385 arg0.setgLonx((float)location.getLng()); 314 arg0.setgLonx((float)location.getLng());
386 -  
387 arg0.setgLaty((float)location.getLat()); 315 arg0.setgLaty((float)location.getLat());
388 -  
389 arg0.setbJwpoints(bJwpoints); 316 arg0.setbJwpoints(bJwpoints);
390 -  
391 -  
392 }else if(baseRes.equals("BD09")){ 317 }else if(baseRes.equals("BD09")){
393 -  
394 resultPoint = FromBDPointToWGSPoint(gLonxStr, gLatyStr); 318 resultPoint = FromBDPointToWGSPoint(gLonxStr, gLatyStr);
395 -  
396 bJwpoints = gLonxStr+ " " + gLatyStr; 319 bJwpoints = gLonxStr+ " " + gLatyStr;
397 -  
398 arg0.setgLonx((float)resultPoint.getLng()); 320 arg0.setgLonx((float)resultPoint.getLng());
399 -  
400 arg0.setgLaty((float)resultPoint.getLat()); 321 arg0.setgLaty((float)resultPoint.getLat());
401 -  
402 }else if(baseRes.equals("WGS84")){ 322 }else if(baseRes.equals("WGS84")){
403 -  
404 Location bdLoc = TransGPS.LocationMake(Double.valueOf(gLonxStr), Double.valueOf(gLatyStr)); 323 Location bdLoc = TransGPS.LocationMake(Double.valueOf(gLonxStr), Double.valueOf(gLatyStr));
405 -  
406 Location gcjLoc = TransGPS.transformFromWGSToGCJ(bdLoc); 324 Location gcjLoc = TransGPS.transformFromWGSToGCJ(bdLoc);
407 -  
408 Location bdEn = TransGPS.bd_encrypt(gcjLoc); 325 Location bdEn = TransGPS.bd_encrypt(gcjLoc);
409 -  
410 bJwpoints = String.valueOf(bdEn.getLng()) + " " + String.valueOf(bdEn.getLat()); 326 bJwpoints = String.valueOf(bdEn.getLng()) + " " + String.valueOf(bdEn.getLat());
411 -  
412 arg0.setbJwpoints(bJwpoints); 327 arg0.setbJwpoints(bJwpoints);
413 -  
414 arg0.setgLonx(Float.valueOf(gLonxStr)); 328 arg0.setgLonx(Float.valueOf(gLonxStr));
415 -  
416 arg0.setgLaty(Float.valueOf(gLatyStr)); 329 arg0.setgLaty(Float.valueOf(gLatyStr));
417 -  
418 } 330 }
419 -  
420 -  
421 -  
422 - /* if(gLonxStr==null)  
423 - gLonx = (float)resultPoint.getLng();  
424 - else  
425 - gLonx = Float.valueOf(gLonxStr);  
426 -  
427 - if(gLatyStr==null)  
428 - gLaty = (float)resultPoint.getLat();  
429 - else  
430 - gLaty = Float.valueOf(gLatyStr);  
431 -  
432 - arg0.setgLonx(gLonx);  
433 -  
434 - arg0.setgLaty(gLaty);*/  
435 -  
436 - // 站点地理位置WGS坐标经度  
437 - // String gLonx = JSONObject.parseObject(stationsArray.getJSONObject(i).get("WGSpotion").toString()).get("Lng").toString();  
438 - // arg0.setgLonx(Float.parseFloat(gLonx));  
439 -  
440 - // 站点地理位置WGS坐标纬度  
441 - // String gLaty = JSONObject.parseObject(stationsArray.getJSONObject(i).get("WGSpotion").toString()).get("Lat").toString();  
442 - // arg0.setgLaty(Float.parseFloat(gLaty));  
443 -  
444 arg0.setRadius(radius); 331 arg0.setRadius(radius);
445 -  
446 -  
447 arg0.setShapesType(shapesType); 332 arg0.setShapesType(shapesType);
448 -  
449 // 是否想撤销 333 // 是否想撤销
450 arg0.setDestroy(destroy); 334 arg0.setDestroy(destroy);
451 -  
452 // 版本号 335 // 版本号
453 arg0.setVersions(versions); 336 arg0.setVersions(versions);
454 -  
455 /*arg0.setbJwpoints(bJwpoints);*/ 337 /*arg0.setbJwpoints(bJwpoints);*/
456 -  
457 // 插入站点信息 338 // 插入站点信息
458 repository.save(arg0); 339 repository.save(arg0);
459 340
460 } 341 }
461 -  
462 // 站点路由对象 342 // 站点路由对象
463 StationRoute route = new StationRoute(); 343 StationRoute route = new StationRoute();
464 -  
465 // 站点名称 344 // 站点名称
466 route.setStationName(stationName); 345 route.setStationName(stationName);
467 -  
468 route.setDistances(distance); 346 route.setDistances(distance);
469 -  
470 sumUpOrDownMileage = sumUpOrDownMileage + distance; 347 sumUpOrDownMileage = sumUpOrDownMileage + distance;
471 -  
472 route.setToTime(duration); 348 route.setToTime(duration);
473 -  
474 -  
475 // 站点编码 349 // 站点编码
476 route.setStationCode(arg0.getStationCod()); 350 route.setStationCode(arg0.getStationCod());
477 -  
478 // 站点序号 351 // 站点序号
479 route.setStationRouteCode((i+1)*100); 352 route.setStationRouteCode((i+1)*100);
480 -  
481 // 站点类型 353 // 站点类型
482 if(i==0) { 354 if(i==0) {
483 -  
484 // 起始站 355 // 起始站
485 route.setStationMark("B"); 356 route.setStationMark("B");
486 -  
487 }else if(i==stationsArray.size()-1) { 357 }else if(i==stationsArray.size()-1) {
488 -  
489 // 终点站 358 // 终点站
490 route.setStationMark("E"); 359 route.setStationMark("E");
491 -  
492 }else { 360 }else {
493 -  
494 // 中途站 361 // 中途站
495 route.setStationMark("Z"); 362 route.setStationMark("Z");
496 -  
497 } 363 }
498 -  
499 // 版本号 364 // 版本号
500 route.setVersions(versions); 365 route.setVersions(versions);
501 -  
502 // 站点ID 366 // 站点ID
503 route.setStation(arg0); 367 route.setStation(arg0);
504 -  
505 // 方向 368 // 方向
506 route.setDirections(directions); 369 route.setDirections(directions);
507 -  
508 // 线路ID 370 // 线路ID
509 route.setLine(resultLine); 371 route.setLine(resultLine);
510 -  
511 // 线路编码 372 // 线路编码
512 route.setLineCode(resultLine.getLineCode()); 373 route.setLineCode(resultLine.getLineCode());
513 -  
514 route.setDestroy(destroy); 374 route.setDestroy(destroy);
515 -  
516 // 插入站点路由信息 375 // 插入站点路由信息
517 routeRepository.save(route); 376 routeRepository.save(route);
518 377
519 } 378 }
520 -  
521 paramsMeleageAndDistncDura.put("sumUpOrDownMileage", sumUpOrDownMileage); 379 paramsMeleageAndDistncDura.put("sumUpOrDownMileage", sumUpOrDownMileage);
522 -  
523 paramsMeleageAndDistncDura.put("sectionDistance", sectionDistance); 380 paramsMeleageAndDistncDura.put("sectionDistance", sectionDistance);
524 -  
525 paramsMeleageAndDistncDura.put("sectionDuration", sectionDuration); 381 paramsMeleageAndDistncDura.put("sectionDuration", sectionDuration);
526 - 382 + paramsMeleageAndDistncDura.put("stationdata",stationsArray);
527 } 383 }
528 -  
529 return paramsMeleageAndDistncDura; 384 return paramsMeleageAndDistncDura;
530 -  
531 } 385 }
532 386
533 /** 387 /**
@@ -784,68 +638,52 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -784,68 +638,52 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
784 638
785 639
786 Section section = sectionRepository.findOne(sectionid); 640 Section section = sectionRepository.findOne(sectionid);
787 -  
788 // 路段路由 641 // 路段路由
789 SectionRoute sectionRoute = new SectionRoute(); 642 SectionRoute sectionRoute = new SectionRoute();
790 -  
791 // 路段序号 643 // 路段序号
792 sectionRoute.setSectionrouteCode(100); 644 sectionRoute.setSectionrouteCode(100);
793 -  
794 // 线路编码 645 // 线路编码
795 sectionRoute.setLineCode(resultLine.getLineCode()); 646 sectionRoute.setLineCode(resultLine.getLineCode());
796 -  
797 // 路段ID 647 // 路段ID
798 sectionRoute.setSection(section); 648 sectionRoute.setSection(section);
799 -  
800 sectionRoute.setDestroy(destroy); 649 sectionRoute.setDestroy(destroy);
801 -  
802 // 线路ID 650 // 线路ID
803 sectionRoute.setLine(resultLine); 651 sectionRoute.setLine(resultLine);
804 -  
805 // 路段编码 652 // 路段编码
806 sectionRoute.setSectionCode(sectionCode); 653 sectionRoute.setSectionCode(sectionCode);
807 -  
808 // 版本 654 // 版本
809 sectionRoute.setVersions(versions); 655 sectionRoute.setVersions(versions);
810 -  
811 // 方向 656 // 方向
812 sectionRoute.setDirections(directions); 657 sectionRoute.setDirections(directions);
813 -  
814 // 路段路由保存 658 // 路段路由保存
815 sectionRouteRepository.save(sectionRoute); 659 sectionRouteRepository.save(sectionRoute);
816 660
817 } 661 }
818 -  
819 - public boolean isHaveStationname(String bJwpoints,List<Object[]> stationNameList) {  
820 -  
821 - boolean temp = true;  
822 - 662 + public Map<String, Object> isHaveStationname(String jd,String wd,List<Object[]> stationNameList) {
  663 + Map<String, Object> rsM = new HashMap<String ,Object>();
  664 + boolean temp = false;
823 if(stationNameList.size()>0) { 665 if(stationNameList.size()>0) {
824 -  
825 - for(int k = 0 ; k <stationNameList.size();k++) {  
826 -  
827 - if(bJwpoints.equals(stationNameList.get(k)[0])){  
828 -  
829 - return temp;  
830 -  
831 - }else {  
832 -  
833 - temp = false;  
834 - 666 + if(jd.equals("0") || wd.equals("0")) {
  667 + rsM.put("id", stationNameList.get(0)[1]);
  668 + temp = true;
  669 + }else{
  670 + Point p1 = new Point(Double.parseDouble(jd),Double.parseDouble(wd));
  671 + for(int k = 0 ; k <stationNameList.size();k++) {
  672 + String bJwpoints[] = stationNameList.get(k)[0].toString().split(" ");
  673 + Point p2 = new Point(Double.parseDouble(bJwpoints[0]),Double.parseDouble(bJwpoints[1]));
  674 + double jl = GeoUtils.getDistance(p1, p2);
  675 + if(jl<=120d) {
  676 + rsM.put("id", stationNameList.get(k)[1]);
  677 + temp = true;
  678 + break;
  679 + }
835 } 680 }
836 -  
837 } 681 }
838 -  
839 - }else {  
840 -  
841 - temp = false;  
842 - }  
843 -  
844 - return temp; 682 + }
  683 + rsM.put("isHave", temp);
  684 + return rsM;
845 } 685 }
846 686
847 -  
848 -  
849 /** 687 /**
850 * @Description :TODO(新增站点保存) 688 * @Description :TODO(新增站点保存)
851 * 689 *
@@ -863,246 +701,134 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -863,246 +701,134 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
863 */ 701 */
864 @Override 702 @Override
865 public Map<String, Object> stationSaveMap(Map<String, Object> map) { 703 public Map<String, Object> stationSaveMap(Map<String, Object> map) {
866 -  
867 Map<String, Object> resultMap = new HashMap<String, Object>(); 704 Map<String, Object> resultMap = new HashMap<String, Object>();
868 -  
869 try { 705 try {
870 -  
871 // 站点编码 706 // 站点编码
872 String stationCod = map.get("stationCod").equals("") ? "" : map.get("stationCod").toString(); 707 String stationCod = map.get("stationCod").equals("") ? "" : map.get("stationCod").toString();
873 -  
874 // 站点ID 708 // 站点ID
875 int stationId = Integer.valueOf(stationCod); 709 int stationId = Integer.valueOf(stationCod);
876 -  
877 // 站点名称 710 // 站点名称
878 String stationName = map.get("stationName").equals("") ? "" : map.get("stationName").toString(); 711 String stationName = map.get("stationName").equals("") ? "" : map.get("stationName").toString();
879 -  
880 // 道路编码 712 // 道路编码
881 String roadCoding = map.get("roadCoding").equals("") ? "" : map.get("roadCoding").toString(); 713 String roadCoding = map.get("roadCoding").equals("") ? "" : map.get("roadCoding").toString();
882 -  
883 // 原坐标类型 714 // 原坐标类型
884 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString(); 715 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
885 -  
886 // 原坐标点 716 // 原坐标点
887 String bJwpoints = map.get("bJwpoints").equals("") ? "" : map.get("bJwpoints").toString(); 717 String bJwpoints = map.get("bJwpoints").equals("") ? "" : map.get("bJwpoints").toString();
888 -  
889 String bJwpointsArray[] = null; 718 String bJwpointsArray[] = null;
890 -  
891 if(bJwpoints!=null) { 719 if(bJwpoints!=null) {
892 -  
893 bJwpointsArray = bJwpoints.split(" "); 720 bJwpointsArray = bJwpoints.split(" ");
894 -  
895 } 721 }
896 -  
897 // WGS经纬度 722 // WGS经纬度
898 Float gLonx = null; 723 Float gLonx = null;
899 -  
900 // WGS纬度 724 // WGS纬度
901 Float gLaty = null; 725 Float gLaty = null;
902 -  
903 if(bJwpointsArray.length>0) { 726 if(bJwpointsArray.length>0) {
904 -  
905 Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]); 727 Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
906 -  
907 gLonx = (float)resultPoint.getLng(); 728 gLonx = (float)resultPoint.getLng();
908 -  
909 gLaty = (float)resultPoint.getLat(); 729 gLaty = (float)resultPoint.getLat();
910 -  
911 } 730 }
912 -  
913 - /*// WGS经纬度  
914 - String gJwpoints = map.get("gJwpoints").equals("") ? null : map.get("gJwpoints").toString();  
915 -  
916 - String gJwpointsArray []= null;  
917 -  
918 - if(gJwpoints!=null) {  
919 -  
920 - gJwpointsArray = gJwpoints.split(" ");  
921 -  
922 - }*/  
923 -  
924 // 方向 731 // 方向
925 Integer directions = map.get("directions").equals("") ? null : Integer.parseInt(map.get("directions").toString()); 732 Integer directions = map.get("directions").equals("") ? null : Integer.parseInt(map.get("directions").toString());
926 -  
927 // 距离 733 // 距离
928 Double distances = map.get("distances").equals("") ? null : Double.parseDouble(map.get("distances").toString()); 734 Double distances = map.get("distances").equals("") ? null : Double.parseDouble(map.get("distances").toString());
929 -  
930 // 时间 735 // 时间
931 Double toTime = map.get("toTime").equals("") ? null : Double.parseDouble(map.get("toTime").toString()); 736 Double toTime = map.get("toTime").equals("") ? null : Double.parseDouble(map.get("toTime").toString());
932 -  
933 - /*// WGS经纬度  
934 - Float gLonx = Float.parseFloat(gJwpointsArray[0]);  
935 -  
936 - // WGS纬度  
937 - Float gLaty = Float.parseFloat(gJwpointsArray[1]);*/  
938 -  
939 // 城建坐标经度 737 // 城建坐标经度
940 Float x = map.get("x").equals("") ? null : Float.parseFloat(map.get("x").toString()); 738 Float x = map.get("x").equals("") ? null : Float.parseFloat(map.get("x").toString());
941 -  
942 // 城建坐标纬度 739 // 城建坐标纬度
943 Float y = map.get("y").equals("") ? null : Float.parseFloat(map.get("y").toString()); 740 Float y = map.get("y").equals("") ? null : Float.parseFloat(map.get("y").toString());
944 -  
945 - // 多边形WGS坐标点集合  
946 - // String gPloygonGrid = map.get("gPolygonGrid").equals("") ? "" : map.get("gPolygonGrid").toString();  
947 -  
948 // 多边形原坐标点集合 741 // 多边形原坐标点集合
949 String bPloygonGrid = map.get("bPolygonGrid").equals("") ? "" : map.get("bPolygonGrid").toString(); 742 String bPloygonGrid = map.get("bPolygonGrid").equals("") ? "" : map.get("bPolygonGrid").toString();
950 -  
951 // 多边形WGS坐标点集合 743 // 多边形WGS坐标点集合
952 String gPloygonGrid =""; 744 String gPloygonGrid ="";
953 -  
954 if(!bPloygonGrid.equals("")) { 745 if(!bPloygonGrid.equals("")) {
955 -  
956 String bPloygonGridArray[] = bPloygonGrid.split(","); 746 String bPloygonGridArray[] = bPloygonGrid.split(",");
957 -  
958 int bLen_ = bPloygonGridArray.length; 747 int bLen_ = bPloygonGridArray.length;
959 -  
960 for(int b = 0 ;b<bLen_;b++) { 748 for(int b = 0 ;b<bLen_;b++) {
961 -  
962 String tempArray[]= bPloygonGridArray[b].split(" "); 749 String tempArray[]= bPloygonGridArray[b].split(" ");
963 -  
964 Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]); 750 Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
965 -  
966 if(b==0) { 751 if(b==0) {
967 -  
968 gPloygonGrid = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat()); 752 gPloygonGrid = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
969 -  
970 }else { 753 }else {
971 -  
972 gPloygonGrid = gPloygonGrid + ',' + String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat()); 754 gPloygonGrid = gPloygonGrid + ',' + String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
973 -  
974 } 755 }
975 -  
976 } 756 }
977 -  
978 } 757 }
979 -  
980 - /* bPloygonGrid = "POLYGON((" + bPloygonGrid +"))";  
981 -  
982 - gPloygonGrid = "POLYGON((" + gPloygonGrid +"))";*/  
983 -  
984 // 是否撤销 758 // 是否撤销
985 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString()); 759 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
986 -  
987 // 圆半径 760 // 圆半径
988 Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString()); 761 Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
989 -  
990 // 图形类型 762 // 图形类型
991 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString(); 763 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
992 -  
993 // 版本 764 // 版本
994 Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString()); 765 Integer versions = map.get("versions").equals("") ? null : Integer.parseInt(map.get("versions").toString());
995 -  
996 // 说明 766 // 说明
997 String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString(); 767 String descriptions = map.get("descriptions").equals("") ? "" : map.get("descriptions").toString();
998 -  
999 // 创建人 768 // 创建人
1000 Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString()); 769 Integer createBy = map.get("createBy").equals("") ? null : Integer.parseInt(map.get("createBy").toString());
1001 -  
1002 // 修改人 770 // 修改人
1003 Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString()); 771 Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());
1004 -  
1005 // 线路ID 772 // 线路ID
1006 int line = map.get("lineId").equals("") ? 0 : Integer.parseInt(map.get("lineId").toString()); 773 int line = map.get("lineId").equals("") ? 0 : Integer.parseInt(map.get("lineId").toString());
1007 -  
1008 // 线路信息 774 // 线路信息
1009 Line resultLine = lineRepository.findOne(line); 775 Line resultLine = lineRepository.findOne(line);
1010 -  
1011 // 站点路由序号 776 // 站点路由序号
1012 String stationRouteCodeStr = map.get("stationRouteCode").equals("") ? "" : map.get("stationRouteCode").toString(); 777 String stationRouteCodeStr = map.get("stationRouteCode").equals("") ? "" : map.get("stationRouteCode").toString();
1013 -  
1014 // 站点类型 778 // 站点类型
1015 String stationMark = map.get("stationMark").equals("") ? "" : map.get("stationMark").toString(); 779 String stationMark = map.get("stationMark").equals("") ? "" : map.get("stationMark").toString();
1016 -  
1017 Integer stationRouteCode = null; 780 Integer stationRouteCode = null;
1018 -  
1019 if(stationRouteCodeStr!="") { 781 if(stationRouteCodeStr!="") {
1020 -  
1021 String stationRouteCodeArray [] = stationRouteCodeStr.split("_"); 782 String stationRouteCodeArray [] = stationRouteCodeStr.split("_");
1022 -  
1023 stationRouteCode = Integer.parseInt(stationRouteCodeArray[0].toString())+1; 783 stationRouteCode = Integer.parseInt(stationRouteCodeArray[0].toString())+1;
1024 -  
1025 -  
1026 }else { 784 }else {
1027 -  
1028 stationRouteCode = 100; 785 stationRouteCode = 100;
1029 -  
1030 } 786 }
1031 -  
1032 if(bPloygonGrid.equals("")) 787 if(bPloygonGrid.equals(""))
1033 bPloygonGrid = null; 788 bPloygonGrid = null;
1034 else 789 else
1035 bPloygonGrid = "POLYGON((" + bPloygonGrid +"))"; 790 bPloygonGrid = "POLYGON((" + bPloygonGrid +"))";
1036 -  
1037 if(gPloygonGrid.equals("")) 791 if(gPloygonGrid.equals(""))
1038 gPloygonGrid = null; 792 gPloygonGrid = null;
1039 else 793 else
1040 gPloygonGrid = "POLYGON((" + gPloygonGrid +"))"; 794 gPloygonGrid = "POLYGON((" + gPloygonGrid +"))";
1041 -  
1042 // 保存站点 795 // 保存站点
1043 repository.stationSave(stationCod, stationName, roadCoding, dbType, bJwpoints, 796 repository.stationSave(stationCod, stationName, roadCoding, dbType, bJwpoints,
1044 -  
1045 gLonx, gLaty, x, y, gPloygonGrid,bPloygonGrid, destroy, radius, 797 gLonx, gLaty, x, y, gPloygonGrid,bPloygonGrid, destroy, radius,
1046 -  
1047 shapesType, versions, descriptions, createBy, updateBy,stationId); 798 shapesType, versions, descriptions, createBy, updateBy,stationId);
1048 -  
1049 -  
1050 -  
1051 -  
1052 Station station = repository.findOne(stationId); 799 Station station = repository.findOne(stationId);
1053 -  
1054 StationRoute arg0 = new StationRoute(); 800 StationRoute arg0 = new StationRoute();
1055 -  
1056 // 线路 801 // 线路
1057 arg0.setLine(resultLine); 802 arg0.setLine(resultLine);
1058 -  
1059 arg0.setLineCode(resultLine.getLineCode()); 803 arg0.setLineCode(resultLine.getLineCode());
1060 -  
1061 // 站点 804 // 站点
1062 arg0.setStation(station); 805 arg0.setStation(station);
1063 -  
1064 // 站点路由名称 806 // 站点路由名称
1065 arg0.setStationName(stationName); 807 arg0.setStationName(stationName);
1066 -  
1067 // 站点路由编码 808 // 站点路由编码
1068 arg0.setStationCode(stationCod); 809 arg0.setStationCode(stationCod);
1069 -  
1070 // 站点路由序号 810 // 站点路由序号
1071 arg0.setStationRouteCode(stationRouteCode); 811 arg0.setStationRouteCode(stationRouteCode);
1072 -  
1073 // 站点路由类型 812 // 站点路由类型
1074 arg0.setStationMark(stationMark); 813 arg0.setStationMark(stationMark);
1075 -  
1076 // 站点路由站点方向 814 // 站点路由站点方向
1077 arg0.setDirections(directions); 815 arg0.setDirections(directions);
1078 -  
1079 // 站点路由到站距离 816 // 站点路由到站距离
1080 arg0.setDistances(distances); 817 arg0.setDistances(distances);
1081 -  
1082 // 站点路由到站时间 818 // 站点路由到站时间
1083 arg0.setToTime(toTime); 819 arg0.setToTime(toTime);
1084 -  
1085 // 站点版本号 820 // 站点版本号
1086 arg0.setVersions(versions); 821 arg0.setVersions(versions);
1087 -  
1088 // 是否撤销 822 // 是否撤销
1089 arg0.setDestroy(destroy); 823 arg0.setDestroy(destroy);
1090 -  
1091 // 站点路由说明 824 // 站点路由说明
1092 arg0.setDescriptions(descriptions); 825 arg0.setDescriptions(descriptions);
1093 -  
1094 routeRepository.save(arg0); 826 routeRepository.save(arg0);
1095 -  
1096 resultMap.put("status", ResponseCode.SUCCESS); 827 resultMap.put("status", ResponseCode.SUCCESS);
1097 -  
1098 } catch (Exception e) { 828 } catch (Exception e) {
1099 -  
1100 resultMap.put("status", ResponseCode.ERROR); 829 resultMap.put("status", ResponseCode.ERROR);
1101 -  
1102 logger.error("save erro.", e); 830 logger.error("save erro.", e);
1103 -  
1104 } 831 }
1105 -  
1106 return resultMap; 832 return resultMap;
1107 } 833 }
1108 834
@@ -1373,101 +1099,64 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -1373,101 +1099,64 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1373 1099
1374 @Override 1100 @Override
1375 public Map<String, Object> manualSave(Map<String, Object> map) { 1101 public Map<String, Object> manualSave(Map<String, Object> map) {
1376 -  
1377 Map<String, Object> resultMap = new HashMap<String,Object>(); 1102 Map<String, Object> resultMap = new HashMap<String,Object>();
1378 -  
1379 try { 1103 try {
1380 -  
1381 // 站点信息字符传 1104 // 站点信息字符传
1382 String stationJSON = map.get("stationJSON").equals("") ? "" : map.get("stationJSON").toString(); 1105 String stationJSON = map.get("stationJSON").equals("") ? "" : map.get("stationJSON").toString();
1383 -  
1384 // 路段信息字符串 1106 // 路段信息字符串
1385 String sectionJSON = map.get("sectionJSON").equals("") ? "" : map.get("sectionJSON").toString(); 1107 String sectionJSON = map.get("sectionJSON").equals("") ? "" : map.get("sectionJSON").toString();
1386 -  
1387 // 方向 1108 // 方向
1388 int directions = Integer.parseInt(map.get("directions").toString()); 1109 int directions = Integer.parseInt(map.get("directions").toString());
1389 -  
1390 // 是否撤销 1110 // 是否撤销
1391 int destroy = map.get("destroy").equals("") ? 0 : Integer.parseInt(map.get("destroy").toString()); 1111 int destroy = map.get("destroy").equals("") ? 0 : Integer.parseInt(map.get("destroy").toString());
1392 -  
1393 // 版本 1112 // 版本
1394 int versions = map.get("versions").equals("") ? 0 : Integer.parseInt(map.get("versions").toString()); 1113 int versions = map.get("versions").equals("") ? 0 : Integer.parseInt(map.get("versions").toString());
1395 -  
1396 // 坐标类型 1114 // 坐标类型
1397 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString(); 1115 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
1398 -  
1399 // 限速 1116 // 限速
1400 String speedLimitStr = map.get("speedLimit").equals("") ? "" : map.get("speedLimit").toString(); 1117 String speedLimitStr = map.get("speedLimit").equals("") ? "" : map.get("speedLimit").toString();
1401 -  
1402 // 线路ID 1118 // 线路ID
1403 int lineId = map.get("lineId").equals("") ? 0 : Integer.parseInt(map.get("lineId").toString()); 1119 int lineId = map.get("lineId").equals("") ? 0 : Integer.parseInt(map.get("lineId").toString());
1404 -  
1405 // 半径 1120 // 半径
1406 int radius = map.get("radius").equals("") ? 0 : Integer.parseInt(map.get("radius").toString()); 1121 int radius = map.get("radius").equals("") ? 0 : Integer.parseInt(map.get("radius").toString());
1407 -  
1408 // 图形类型 1122 // 图形类型
1409 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString(); 1123 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
1410 -  
1411 // 线路信息 1124 // 线路信息
1412 Line resultLine = lineRepository.findOne(lineId); 1125 Line resultLine = lineRepository.findOne(lineId);
1413 -  
1414 // 路段距离 1126 // 路段距离
1415 Double sectionDistance = 0.0d; 1127 Double sectionDistance = 0.0d;
1416 -  
1417 // 路段时长 1128 // 路段时长
1418 Double sectionDuration = 0.0d; 1129 Double sectionDuration = 0.0d;
1419 -  
1420 // 里程(上或者下) 1130 // 里程(上或者下)
1421 double sumUpOrDownMileage = 0.0d; 1131 double sumUpOrDownMileage = 0.0d;
1422 -  
1423 Map<String, Object> resultSaveMapm = new HashMap<String,Object>(); 1132 Map<String, Object> resultSaveMapm = new HashMap<String,Object>();
1424 -  
1425 String baseRes = map.get("baseRes").equals("") ? "" : map.get("baseRes").toString(); 1133 String baseRes = map.get("baseRes").equals("") ? "" : map.get("baseRes").toString();
1426 -  
1427 if(!stationJSON.equals("")) { 1134 if(!stationJSON.equals("")) {
1428 -  
1429 // 保存站点与站点路由信息 1135 // 保存站点与站点路由信息
1430 resultSaveMapm = savaStationAndStationRouteInfo( stationJSON, sectionDistance, sectionDuration, dbType,radius, shapesType, destroy, versions, sumUpOrDownMileage, directions, resultLine,baseRes); 1136 resultSaveMapm = savaStationAndStationRouteInfo( stationJSON, sectionDistance, sectionDuration, dbType,radius, shapesType, destroy, versions, sumUpOrDownMileage, directions, resultLine,baseRes);
1431 -  
1432 } 1137 }
1433 -  
1434 // 路段长度 1138 // 路段长度
1435 sectionDistance = Double.valueOf(resultSaveMapm.get("sectionDistance").toString()); 1139 sectionDistance = Double.valueOf(resultSaveMapm.get("sectionDistance").toString());
1436 -  
1437 // 路段时长 1140 // 路段时长
1438 sectionDuration = Double.valueOf(resultSaveMapm.get("sectionDuration").toString()); 1141 sectionDuration = Double.valueOf(resultSaveMapm.get("sectionDuration").toString());
1439 -  
1440 // 如果路段信息JSON字符串不为空 1142 // 如果路段信息JSON字符串不为空
1441 if(!sectionJSON.equals("")) { 1143 if(!sectionJSON.equals("")) {
1442 -  
1443 manualSaveSectionAndSectionRoute(sectionJSON, speedLimitStr, sectionDistance, sectionDuration, dbType, versions, resultLine, destroy, directions); 1144 manualSaveSectionAndSectionRoute(sectionJSON, speedLimitStr, sectionDistance, sectionDuration, dbType, versions, resultLine, destroy, directions);
1444 -  
1445 } 1145 }
1446 -  
1447 // 里程 1146 // 里程
1448 sumUpOrDownMileage = Double.valueOf(resultSaveMapm.get("sumUpOrDownMileage").toString()); 1147 sumUpOrDownMileage = Double.valueOf(resultSaveMapm.get("sumUpOrDownMileage").toString());
1449 -  
1450 BigDecimal s = new BigDecimal(sumUpOrDownMileage); 1148 BigDecimal s = new BigDecimal(sumUpOrDownMileage);
1451 -  
1452 sumUpOrDownMileage = s.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 1149 sumUpOrDownMileage = s.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
1453 -  
1454 // 更新里程 1150 // 更新里程
1455 // updateLineInfoUpOrDownMileage( resultLine , directions, sumUpOrDownMileage); 1151 // updateLineInfoUpOrDownMileage( resultLine , directions, sumUpOrDownMileage);
1456 -  
1457 if(directions==0) { 1152 if(directions==0) {
1458 -  
1459 // lineUpdateStationName(resultLine); 1153 // lineUpdateStationName(resultLine);
1460 -  
1461 } 1154 }
1462 -  
1463 resultMap.put("status", ResponseCode.SUCCESS); 1155 resultMap.put("status", ResponseCode.SUCCESS);
1464 - 1156 + resultMap.put("stationData", resultSaveMapm.get("stationdata"));
1465 } catch (Exception e) { 1157 } catch (Exception e) {
1466 -  
1467 resultMap.put("status", ResponseCode.ERROR); 1158 resultMap.put("status", ResponseCode.ERROR);
1468 -  
1469 logger.error("save erro.", e); 1159 logger.error("save erro.", e);
1470 -  
1471 } 1160 }
1472 1161
1473 return resultMap; 1162 return resultMap;
@@ -1478,103 +1167,61 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -1478,103 +1167,61 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1478 double sectionTime,String dbType,Integer versions,Line resultLine, 1167 double sectionTime,String dbType,Integer versions,Line resultLine,
1479 1168
1480 Integer destroy,Integer directions) { 1169 Integer destroy,Integer directions) {
1481 -  
1482 // 转换成JSON数组 1170 // 转换成JSON数组
1483 JSONArray sectionsArray = JSONArray.parseArray(sectionJSON); 1171 JSONArray sectionsArray = JSONArray.parseArray(sectionJSON);
1484 -  
1485 // 遍历 1172 // 遍历
1486 for(int s = 0 ;s<sectionsArray.size();s++) { 1173 for(int s = 0 ;s<sectionsArray.size();s++) {
1487 -  
1488 // 站点名称 1174 // 站点名称
1489 String sectionName = sectionsArray.getJSONObject(s).equals("") ? "" : sectionsArray.getJSONObject(s).get("sectionName").toString(); 1175 String sectionName = sectionsArray.getJSONObject(s).equals("") ? "" : sectionsArray.getJSONObject(s).get("sectionName").toString();
1490 -  
1491 String pointsStr = sectionsArray.getJSONObject(s).equals("") ? "" : sectionsArray.getJSONObject(s).get("points").toString(); 1176 String pointsStr = sectionsArray.getJSONObject(s).equals("") ? "" : sectionsArray.getJSONObject(s).get("points").toString();
1492 -  
1493 // 原始线状图形坐标集合 1177 // 原始线状图形坐标集合
1494 String sectionsBpoints = ""; 1178 String sectionsBpoints = "";
1495 -  
1496 // WGS线状图形坐标集合 1179 // WGS线状图形坐标集合
1497 String sectionsWJPpoints = ""; 1180 String sectionsWJPpoints = "";
1498 -  
1499 if(!pointsStr.equals("")){ 1181 if(!pointsStr.equals("")){
1500 -  
1501 JSONArray pointsArray = JSONArray.parseArray(pointsStr); 1182 JSONArray pointsArray = JSONArray.parseArray(pointsStr);
1502 -  
1503 for(int p =0;p<pointsArray.size();p++){ 1183 for(int p =0;p<pointsArray.size();p++){
1504 -  
1505 String pointsLngStr = pointsArray.getJSONObject(p).get("lng").toString(); 1184 String pointsLngStr = pointsArray.getJSONObject(p).get("lng").toString();
1506 -  
1507 String pointsLatStr = pointsArray.getJSONObject(p).get("lat").toString(); 1185 String pointsLatStr = pointsArray.getJSONObject(p).get("lat").toString();
1508 -  
1509 Location resultPoint = FromBDPointToWGSPoint(pointsLngStr,pointsLatStr); 1186 Location resultPoint = FromBDPointToWGSPoint(pointsLngStr,pointsLatStr);
1510 -  
1511 String WGSLngStr = String.valueOf(resultPoint.getLng()); 1187 String WGSLngStr = String.valueOf(resultPoint.getLng());
1512 -  
1513 String WGSLatStr = String.valueOf(resultPoint.getLat()); 1188 String WGSLatStr = String.valueOf(resultPoint.getLat());
1514 -  
1515 if(p==pointsArray.size()-1){ 1189 if(p==pointsArray.size()-1){
1516 -  
1517 sectionsBpoints = sectionsBpoints + pointsLngStr + " " + pointsLatStr; 1190 sectionsBpoints = sectionsBpoints + pointsLngStr + " " + pointsLatStr;
1518 -  
1519 sectionsWJPpoints = sectionsWJPpoints + WGSLngStr + " " + WGSLatStr; 1191 sectionsWJPpoints = sectionsWJPpoints + WGSLngStr + " " + WGSLatStr;
1520 -  
1521 // sectionsWJPpoints = sectionsWJPpoints + pointsArray.getJSONObject(p).getJSONObject("WGSpotion").get("Lng") + " " +pointsArray.getJSONObject(p).getJSONObject("WGSpotion").get("Lat"); 1192 // sectionsWJPpoints = sectionsWJPpoints + pointsArray.getJSONObject(p).getJSONObject("WGSpotion").get("Lng") + " " +pointsArray.getJSONObject(p).getJSONObject("WGSpotion").get("Lat");
1522 -  
1523 }else { 1193 }else {
1524 -  
1525 sectionsBpoints = sectionsBpoints + pointsArray.getJSONObject(p).get("lng").toString() + " " +pointsArray.getJSONObject(p).get("lat").toString()+","; 1194 sectionsBpoints = sectionsBpoints + pointsArray.getJSONObject(p).get("lng").toString() + " " +pointsArray.getJSONObject(p).get("lat").toString()+",";
1526 -  
1527 sectionsWJPpoints = sectionsWJPpoints + WGSLngStr + " " + WGSLatStr + ","; 1195 sectionsWJPpoints = sectionsWJPpoints + WGSLngStr + " " + WGSLatStr + ",";
1528 -  
1529 // sectionsWJPpoints = sectionsWJPpoints + pointsArray.getJSONObject(p).getJSONObject("WGSpotion").get("Lng") + " " +pointsArray.getJSONObject(p).getJSONObject("WGSpotion").get("Lat") +","; 1196 // sectionsWJPpoints = sectionsWJPpoints + pointsArray.getJSONObject(p).getJSONObject("WGSpotion").get("Lng") + " " +pointsArray.getJSONObject(p).getJSONObject("WGSpotion").get("Lat") +",";
1530 -  
1531 -  
1532 } 1197 }
1533 -  
1534 } 1198 }
1535 -  
1536 } 1199 }
1537 -  
1538 long sectionMaxId = GetUIDAndCode.getSectionId(); 1200 long sectionMaxId = GetUIDAndCode.getSectionId();
1539 -  
1540 String sectionCode = String.valueOf(sectionMaxId); 1201 String sectionCode = String.valueOf(sectionMaxId);
1541 -  
1542 int sectionId = (int) (sectionMaxId); 1202 int sectionId = (int) (sectionMaxId);
1543 -  
1544 // 交出路 1203 // 交出路
1545 String crosesRoad = ""; 1204 String crosesRoad = "";
1546 -  
1547 // 终止节点 1205 // 终止节点
1548 String endNode = ""; 1206 String endNode = "";
1549 -  
1550 // 开始节点 1207 // 开始节点
1551 String startNode = ""; 1208 String startNode = "";
1552 -  
1553 // 中间节点 1209 // 中间节点
1554 String middleNode = ""; 1210 String middleNode = "";
1555 -  
1556 // WGS坐标点集合 1211 // WGS坐标点集合
1557 String gsectionVector = "LINESTRING(" + sectionsWJPpoints +")"; 1212 String gsectionVector = "LINESTRING(" + sectionsWJPpoints +")";
1558 -  
1559 // 原坐标点集合 1213 // 原坐标点集合
1560 String bsectionVector = "LINESTRING(" + sectionsBpoints + ")"; 1214 String bsectionVector = "LINESTRING(" + sectionsBpoints + ")";
1561 -  
1562 // 城建坐标点集合 1215 // 城建坐标点集合
1563 String csectionVector = ""; 1216 String csectionVector = "";
1564 -  
1565 // 路段类型 1217 // 路段类型
1566 String sectionType = ""; 1218 String sectionType = "";
1567 -  
1568 // 道路编码 1219 // 道路编码
1569 String roadCoding = ""; 1220 String roadCoding = "";
1570 -  
1571 // 限速 1221 // 限速
1572 double speedLimit = Double.parseDouble(speedLimitStr); 1222 double speedLimit = Double.parseDouble(speedLimitStr);
1573 -  
1574 // 说明 1223 // 说明
1575 String descriptions = ""; 1224 String descriptions = "";
1576 -  
1577 -  
1578 sectionRepository.systemSave(sectionCode, sectionName, crosesRoad, endNode, startNode, 1225 sectionRepository.systemSave(sectionCode, sectionName, crosesRoad, endNode, startNode,
1579 1226
1580 middleNode, gsectionVector, bsectionVector, sectionType, csectionVector, 1227 middleNode, gsectionVector, bsectionVector, sectionType, csectionVector,
@@ -1582,37 +1229,24 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -1582,37 +1229,24 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1582 roadCoding, sectionDistance, sectionTime, dbType, speedLimit, 1229 roadCoding, sectionDistance, sectionTime, dbType, speedLimit,
1583 1230
1584 descriptions, versions,sectionId); 1231 descriptions, versions,sectionId);
1585 -  
1586 -  
1587 -  
1588 Section section = sectionRepository.findOne(Integer.parseInt(sectionCode)); 1232 Section section = sectionRepository.findOne(Integer.parseInt(sectionCode));
1589 -  
1590 // 路段路由 1233 // 路段路由
1591 SectionRoute sectionRoute = new SectionRoute(); 1234 SectionRoute sectionRoute = new SectionRoute();
1592 -  
1593 // 路段序号 1235 // 路段序号
1594 sectionRoute.setSectionrouteCode((s+1)*100); 1236 sectionRoute.setSectionrouteCode((s+1)*100);
1595 -  
1596 // 线路编码 1237 // 线路编码
1597 sectionRoute.setLineCode(resultLine.getLineCode()); 1238 sectionRoute.setLineCode(resultLine.getLineCode());
1598 -  
1599 // 路段ID 1239 // 路段ID
1600 sectionRoute.setSection(section); 1240 sectionRoute.setSection(section);
1601 -  
1602 // 线路ID 1241 // 线路ID
1603 sectionRoute.setLine(resultLine); 1242 sectionRoute.setLine(resultLine);
1604 -  
1605 // 路段编码 1243 // 路段编码
1606 sectionRoute.setSectionCode(sectionCode); 1244 sectionRoute.setSectionCode(sectionCode);
1607 -  
1608 // 版本 1245 // 版本
1609 sectionRoute.setVersions(versions); 1246 sectionRoute.setVersions(versions);
1610 -  
1611 sectionRoute.setDestroy(destroy); 1247 sectionRoute.setDestroy(destroy);
1612 -  
1613 // 方向 1248 // 方向
1614 sectionRoute.setDirections(directions); 1249 sectionRoute.setDirections(directions);
1615 -  
1616 sectionRouteRepository.save(sectionRoute); 1250 sectionRouteRepository.save(sectionRoute);
1617 } 1251 }
1618 1252
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -1025,7 +1025,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1025,7 +1025,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1025 sch.setLate2(false); 1025 sch.setLate2(false);
1026 LateAdjustHandle.remove(sch); 1026 LateAdjustHandle.remove(sch);
1027 } 1027 }
1028 - } else if (sch.getFcsjActual() != null){ 1028 + } else if (StringUtils.isNotEmpty(sch.getFcsjActual()) && StringUtils.isEmpty(fcsjActual)){
1029 //撤销实发 1029 //撤销实发
1030 revokeRealOutgo(sch.getId()); 1030 revokeRealOutgo(sch.getId());
1031 } 1031 }
@@ -1049,7 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1049,7 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1049 1049
1050 //重新计算车辆执行班次 1050 //重新计算车辆执行班次
1051 dayOfSchedule.reCalcExecPlan(sch.getClZbh()); 1051 dayOfSchedule.reCalcExecPlan(sch.getClZbh());
1052 - } else if(StringUtils.isNotEmpty(sch.getZdsjActual())){ 1052 + } else if(StringUtils.isNotEmpty(sch.getZdsjActual()) && StringUtils.isEmpty(zdsjActual)){
1053 //清除实达时间 1053 //清除实达时间
1054 sch.clearZdsjActual(); 1054 sch.clearZdsjActual();
1055 //清除路牌下一班起点到达时间 1055 //清除路牌下一班起点到达时间
src/main/java/com/bsth/service/schedule/impl/SchedulePlanServiceImpl.java
1 package com.bsth.service.schedule.impl; 1 package com.bsth.service.schedule.impl;
2 2
  3 +import com.bsth.entity.Line;
3 import com.bsth.entity.schedule.SchedulePlan; 4 import com.bsth.entity.schedule.SchedulePlan;
4 import com.bsth.entity.schedule.TTInfo; 5 import com.bsth.entity.schedule.TTInfo;
5 import com.bsth.entity.schedule.rule.ScheduleRule1Flat; 6 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
6 import com.bsth.repository.BusinessRepository; 7 import com.bsth.repository.BusinessRepository;
7 import com.bsth.repository.LineRepository; 8 import com.bsth.repository.LineRepository;
8 import com.bsth.repository.schedule.*; 9 import com.bsth.repository.schedule.*;
9 -import com.bsth.service.schedule.SchedulePlanRuleResultService;  
10 import com.bsth.service.schedule.SchedulePlanService; 10 import com.bsth.service.schedule.SchedulePlanService;
11 import com.bsth.service.schedule.exception.ScheduleException; 11 import com.bsth.service.schedule.exception.ScheduleException;
12 import com.bsth.service.schedule.rules.ScheduleRuleService; 12 import com.bsth.service.schedule.rules.ScheduleRuleService;
@@ -36,8 +36,6 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -36,8 +36,6 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
36 @Autowired 36 @Autowired
37 private KieBase kieBase; 37 private KieBase kieBase;
38 @Autowired 38 @Autowired
39 - private SchedulePlanInfoRepository schedulePlanInfoRepository;  
40 - @Autowired  
41 private ScheduleRule1FlatRepository scheduleRule1FlatRepository; 39 private ScheduleRule1FlatRepository scheduleRule1FlatRepository;
42 @Autowired 40 @Autowired
43 private TTInfoRepository ttInfoRepository; 41 private TTInfoRepository ttInfoRepository;
@@ -52,8 +50,6 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -52,8 +50,6 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
52 @Autowired 50 @Autowired
53 private BusinessRepository businessRepository; 51 private BusinessRepository businessRepository;
54 @Autowired 52 @Autowired
55 - private SchedulePlanRuleResultService schedulePlanRuleResultService;  
56 - @Autowired  
57 private ScheduleRuleService scheduleRuleService; 53 private ScheduleRuleService scheduleRuleService;
58 54
59 /** 日志记录器 */ 55 /** 日志记录器 */
@@ -64,7 +60,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -64,7 +60,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
64 * @param schedulePlan 排班计划对象 60 * @param schedulePlan 排班计划对象
65 * @param lpInfoResults_output 时刻表每日路牌的情况 61 * @param lpInfoResults_output 时刻表每日路牌的情况
66 */ 62 */
67 - public ScheduleResults_output loopRuleOutput( 63 + private ScheduleResults_output loopRuleOutput(
68 SchedulePlan schedulePlan, 64 SchedulePlan schedulePlan,
69 LpInfoResults_output lpInfoResults_output) { 65 LpInfoResults_output lpInfoResults_output) {
70 // 1-1、构造drools规则输入数据,输出数据 66 // 1-1、构造drools规则输入数据,输出数据
@@ -115,7 +111,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -115,7 +111,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
115 * @param schedulePlan 排班计划对象 111 * @param schedulePlan 排班计划对象
116 * @return TTInfoResults_output, LpInfoResults_output 112 * @return TTInfoResults_output, LpInfoResults_output
117 */ 113 */
118 - public Object[] ttInfoOutput(SchedulePlan schedulePlan) { 114 + private Object[] ttInfoOutput(SchedulePlan schedulePlan) {
119 // 获取线路的所有未作废的时刻表 115 // 获取线路的所有未作废的时刻表
120 List<TTInfo> ttInfos = ttInfoRepository.findInCanceledByXl(schedulePlan.getXl()); 116 List<TTInfo> ttInfos = ttInfoRepository.findInCanceledByXl(schedulePlan.getXl());
121 117
@@ -173,7 +169,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -173,7 +169,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
173 * @param ttInfoResults_output ttInfoOutput方法规则输出 169 * @param ttInfoResults_output ttInfoOutput方法规则输出
174 * @return PlanResult 170 * @return PlanResult
175 */ 171 */
176 - public PlanResult planResultOutput( 172 + private PlanResult planResultOutput(
177 SchedulePlan schedulePlan, 173 SchedulePlan schedulePlan,
178 ScheduleResults_output scheduleResults_output, 174 ScheduleResults_output scheduleResults_output,
179 TTInfoResults_output ttInfoResults_output) { 175 TTInfoResults_output ttInfoResults_output) {
@@ -186,6 +182,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -186,6 +182,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
186 ); 182 );
187 // 规则输出数据 183 // 规则输出数据
188 PlanResult planResult = new PlanResult(); 184 PlanResult planResult = new PlanResult();
  185 + planResult.setXlId(schedulePlan.getXl().getId().toString());
189 186
190 // 1-2、构造drools session->载入数据->启动规则->计算->销毁session 187 // 1-2、构造drools session->载入数据->启动规则->计算->销毁session
191 // 创建session,内部配置的是stateful 188 // 创建session,内部配置的是stateful
@@ -214,7 +211,12 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -214,7 +211,12 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
214 211
215 } 212 }
216 213
217 - public SchedulePlan save(SchedulePlan schedulePlan) { 214 + /**
  215 + * 生成线路排班(不含套跑规则)。
  216 + * @param schedulePlan
  217 + * @return
  218 + */
  219 + private PlanResult SchedulePlanWithOutRerun(SchedulePlan schedulePlan) {
218 // pre、如果排班的数据之前已经有了,删除之前的数据 220 // pre、如果排班的数据之前已经有了,删除之前的数据
219 Date startpre = new Date(); 221 Date startpre = new Date();
220 scheduleRuleService.deelteSchedulePlanInfo( 222 scheduleRuleService.deelteSchedulePlanInfo(
@@ -238,21 +240,34 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -238,21 +240,34 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
238 PlanResult planResult = planResultOutput(schedulePlan, scheduleResults_output, ttInfoResults_output); 240 PlanResult planResult = planResultOutput(schedulePlan, scheduleResults_output, ttInfoResults_output);
239 Date end3 = new Date(); 241 Date end3 = new Date();
240 242
  243 + logger.info("删除数据 {} ms,drool时刻表每日路牌计算 {} ms,drool循环规则计算 {} ms,drool计划数据 {} ms",
  244 + endpre.getTime() - startpre.getTime(),
  245 + end1.getTime() - start1.getTime(),
  246 + end2.getTime() - start2.getTime(),
  247 + end3.getTime() - start3.getTime());
  248 +
  249 + return planResult;
  250 + }
  251 +
  252 + public SchedulePlan save(SchedulePlan schedulePlan) {
  253 + // 1、查找线路,这是主线路
  254 + Line xl = lineRepository.findOne(schedulePlan.getXl().getId());
  255 + logger.info("<--- 排班master线路 id={}, name={}, 开始排班", xl.getId(), xl.getName());
  256 +
  257 + // 2、确定主线路排班(无套跑规则)
  258 + PlanResult planResult = SchedulePlanWithOutRerun(schedulePlan);
  259 +
  260 + // TODO 3、确定套跑规则
  261 +
241 // 4、保存数据(jdbcTemplate 批量插入) 262 // 4、保存数据(jdbcTemplate 批量插入)
242 Date start4 = new Date(); 263 Date start4 = new Date();
243 scheduleRuleService.generateSchedulePlan(schedulePlan, planResult.getSchedulePlanInfos()); 264 scheduleRuleService.generateSchedulePlan(schedulePlan, planResult.getSchedulePlanInfos());
244 Date end4 = new Date(); 265 Date end4 = new Date();
245 266
246 -  
247 - logger.info("删除数据 {} ms,drool时刻表每日路牌计算 {} ms,drool循环规则计算 {} ms,drool计划数据 {} ms,插入数据 {} 条 耗时 {} ms",  
248 - endpre.getTime() - startpre.getTime(),  
249 - end1.getTime() - start1.getTime(),  
250 - end2.getTime() - start2.getTime(),  
251 - end3.getTime() - start3.getTime(), 267 + logger.info("保存主线路数据 {} 条 耗时 {} ms --->",
252 planResult.getSchedulePlanInfos().size(), 268 planResult.getSchedulePlanInfos().size(),
253 end4.getTime() - start4.getTime()); 269 end4.getTime() - start4.getTime());
254 270
255 -  
256 return new SchedulePlan(); 271 return new SchedulePlan();
257 } 272 }
258 273
src/main/java/com/bsth/service/schedule/rules/plan/PlanResult.java
@@ -9,6 +9,7 @@ import java.util.List; @@ -9,6 +9,7 @@ import java.util.List;
9 * 计划输出。 9 * 计划输出。
10 */ 10 */
11 public class PlanResult { 11 public class PlanResult {
  12 + private String xlId;
12 private List<SchedulePlanInfo> schedulePlanInfos = new ArrayList<>(); 13 private List<SchedulePlanInfo> schedulePlanInfos = new ArrayList<>();
13 14
14 public PlanResult() { 15 public PlanResult() {
@@ -25,4 +26,12 @@ public class PlanResult { @@ -25,4 +26,12 @@ public class PlanResult {
25 public void setSchedulePlanInfos(List<SchedulePlanInfo> schedulePlanInfos) { 26 public void setSchedulePlanInfos(List<SchedulePlanInfo> schedulePlanInfos) {
26 this.schedulePlanInfos = schedulePlanInfos; 27 this.schedulePlanInfos = schedulePlanInfos;
27 } 28 }
  29 +
  30 + public String getXlId() {
  31 + return xlId;
  32 + }
  33 +
  34 + public void setXlId(String xlId) {
  35 + this.xlId = xlId;
  36 + }
28 } 37 }
src/main/java/com/bsth/util/GetUIDAndCode.java
@@ -26,80 +26,47 @@ import com.bsth.repository.StationRepository; @@ -26,80 +26,47 @@ import com.bsth.repository.StationRepository;
26 */ 26 */
27 @Component 27 @Component
28 public class GetUIDAndCode { 28 public class GetUIDAndCode {
29 -  
30 @Autowired 29 @Autowired
31 private LineRepository lineRepository; 30 private LineRepository lineRepository;
32 -  
33 @Autowired 31 @Autowired
34 private StationRepository stationRepository; 32 private StationRepository stationRepository;
35 -  
36 @Autowired 33 @Autowired
37 private SectionRepository sectionRepository; 34 private SectionRepository sectionRepository;
38 -  
39 @Autowired 35 @Autowired
40 private CarParkRepository carParkRepository; 36 private CarParkRepository carParkRepository;
41 -  
42 /** 线路ID */ 37 /** 线路ID */
43 private static long lineId = 0L; 38 private static long lineId = 0L;
44 -  
45 /** 站点ID */ 39 /** 站点ID */
46 private static long stationId = 0L; 40 private static long stationId = 0L;
47 -  
48 /** 路段ID */ 41 /** 路段ID */
49 private static long sectionId = 0L; 42 private static long sectionId = 0L;
50 -  
51 /** 停车长ID*/ 43 /** 停车长ID*/
52 private static long carParkId = 0L; 44 private static long carParkId = 0L;
53 -  
54 public GetUIDAndCode() { 45 public GetUIDAndCode() {
55 -  
56 new Timer().schedule(new TimerTask() { 46 new Timer().schedule(new TimerTask() {
57 -  
58 @Override 47 @Override
59 public void run() { 48 public void run() {
60 -  
61 lineId = lineRepository.selectMaxIdToLineCode(); 49 lineId = lineRepository.selectMaxIdToLineCode();
62 -  
63 stationId = stationRepository.stationMaxId(); 50 stationId = stationRepository.stationMaxId();
64 -  
65 sectionId = sectionRepository.sectionMaxId(); 51 sectionId = sectionRepository.sectionMaxId();
66 -  
67 carParkId = carParkRepository.carParkMaxId(); 52 carParkId = carParkRepository.carParkMaxId();
68 -  
69 } 53 }
70 }, 1000 * 30); 54 }, 1000 * 30);
71 -  
72 } 55 }
73 -  
74 public static synchronized long getLineId() { 56 public static synchronized long getLineId() {
75 -  
76 ++lineId; 57 ++lineId;
77 -  
78 return lineId; 58 return lineId;
79 -  
80 } 59 }
81 -  
82 public static synchronized long getStationId() { 60 public static synchronized long getStationId() {
83 -  
84 ++stationId; 61 ++stationId;
85 -  
86 return stationId; 62 return stationId;
87 } 63 }
88 -  
89 public static synchronized long getSectionId() { 64 public static synchronized long getSectionId() {
90 -  
91 ++sectionId; 65 ++sectionId;
92 -  
93 return sectionId; 66 return sectionId;
94 -  
95 } 67 }
96 -  
97 public static synchronized long getCarParkId() { 68 public static synchronized long getCarParkId() {
98 -  
99 ++carParkId; 69 ++carParkId;
100 -  
101 return carParkId; 70 return carParkId;
102 -  
103 } 71 }
104 -  
105 -} 72 +}
106 \ No newline at end of file 73 \ No newline at end of file
src/main/resources/datatools/ktrs/employeesDataInput.ktr
@@ -86,6 +86,30 @@ @@ -86,6 +86,30 @@
86 <notepads> 86 <notepads>
87 </notepads> 87 </notepads>
88 <connection> 88 <connection>
  89 + <name>192.168.168.1_jwgl_dw</name>
  90 + <server>192.168.168.1</server>
  91 + <type>ORACLE</type>
  92 + <access>Native</access>
  93 + <database>orcl</database>
  94 + <port>1521</port>
  95 + <username>jwgl_dw</username>
  96 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  97 + <servername/>
  98 + <data_tablespace/>
  99 + <index_tablespace/>
  100 + <attributes>
  101 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  102 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  103 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  104 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  105 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  106 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  107 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  108 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  109 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  110 + </attributes>
  111 + </connection>
  112 + <connection>
89 <name>bus_control_variable</name> 113 <name>bus_control_variable</name>
90 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 114 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
91 <type>MYSQL</type> 115 <type>MYSQL</type>
@@ -268,7 +292,7 @@ @@ -268,7 +292,7 @@
268 <optimizationLevel>9</optimizationLevel> 292 <optimizationLevel>9</optimizationLevel>
269 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 293 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
270 <jsScript_name>Script 1</jsScript_name> 294 <jsScript_name>Script 1</jsScript_name>
271 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var gh_calcu &#x3d; &#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801; &#x2b; &#x22;-&#x22; &#x2b; &#x5de5;&#x53f7;&#x3b;</jsScript_script> 295 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var gh_calcu &#x3d; &#x5de5;&#x53f7;&#x3b;&#xa;&#xa;if &#x28;&#x5de5;&#x53f7;.indexOf&#x28;&#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801; &#x2b; &#x22;-&#x22;&#x29; &#x3c; 0&#x29; &#x7b;&#xa; gh_calcu &#x3d; &#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801; &#x2b; &#x22;-&#x22; &#x2b; &#x5de5;&#x53f7;&#x3b;&#xa;&#x7d; </jsScript_script>
272 </jsScript> </jsScripts> <fields> <field> <name>gh_calcu</name> 296 </jsScript> </jsScripts> <fields> <field> <name>gh_calcu</name>
273 <rename>gh_calcu</rename> 297 <rename>gh_calcu</rename>
274 <type>String</type> 298 <type>String</type>
@@ -712,4 +736,3 @@ @@ -712,4 +736,3 @@
712 <slave_transformation>N</slave_transformation> 736 <slave_transformation>N</slave_transformation>
713 737
714 </transformation> 738 </transformation>
715 -  
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -381,12 +381,12 @@ @@ -381,12 +381,12 @@
381 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop> 381 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
382 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop> 382 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
383 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop> 383 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
384 - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop> 384 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x6240;&#x6709;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
385 <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop> 385 <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
386 <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop> 386 <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
387 <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop> 387 <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
388 <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop> 388 <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
389 - <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop> 389 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x6240;&#x6709;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
390 <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop> 390 <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
391 <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop> 391 <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
392 <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop> 392 <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
@@ -696,7 +696,7 @@ @@ -696,7 +696,7 @@
696 <optimizationLevel>9</optimizationLevel> 696 <optimizationLevel>9</optimizationLevel>
697 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 697 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
698 <jsScript_name>Script 1</jsScript_name> 698 <jsScript_name>Script 1</jsScript_name>
699 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa;&#x7d;</jsScript_script> 699 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;</jsScript_script>
700 </jsScript> </jsScripts> <fields> <field> <name>jhlc</name> 700 </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
701 <rename>jhlc</rename> 701 <rename>jhlc</rename>
702 <type>String</type> 702 <type>String</type>
@@ -1677,7 +1677,7 @@ @@ -1677,7 +1677,7 @@
1677 </step> 1677 </step>
1678 1678
1679 <step> 1679 <step>
1680 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name> 1680 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
1681 <type>DBLookup</type> 1681 <type>DBLookup</type>
1682 <description/> 1682 <description/>
1683 <distribute>Y</distribute> 1683 <distribute>Y</distribute>
@@ -1693,51 +1693,39 @@ @@ -1693,51 +1693,39 @@
1693 <cache_size>0</cache_size> 1693 <cache_size>0</cache_size>
1694 <lookup> 1694 <lookup>
1695 <schema/> 1695 <schema/>
1696 - <table>bsth_c_line_information</table> 1696 + <table>bsth_c_line</table>
1697 <orderby/> 1697 <orderby/>
1698 <fail_on_multiple>N</fail_on_multiple> 1698 <fail_on_multiple>N</fail_on_multiple>
1699 <eat_row_on_failure>N</eat_row_on_failure> 1699 <eat_row_on_failure>N</eat_row_on_failure>
1700 <key> 1700 <key>
1701 - <name>xlid</name>  
1702 - <field>line</field> 1701 + <name>xlname_</name>
  1702 + <field>name</field>
  1703 + <condition>&#x3d;</condition>
  1704 + <name2/>
  1705 + </key>
  1706 + <key>
  1707 + <name>iscanceled</name>
  1708 + <field>destroy</field>
1703 <condition>&#x3d;</condition> 1709 <condition>&#x3d;</condition>
1704 <name2/> 1710 <name2/>
1705 </key> 1711 </key>
1706 <value> 1712 <value>
1707 - <name>up_mileage</name>  
1708 - <rename>up_mileage</rename>  
1709 - <default/>  
1710 - <type>Number</type>  
1711 - </value>  
1712 - <value>  
1713 - <name>down_mileage</name>  
1714 - <rename>down_mileage</rename>  
1715 - <default/>  
1716 - <type>Number</type>  
1717 - </value>  
1718 - <value>  
1719 - <name>up_travel_time</name>  
1720 - <rename>up_travel_time</rename>  
1721 - <default/>  
1722 - <type>Number</type>  
1723 - </value>  
1724 - <value>  
1725 - <name>down_travel_time</name>  
1726 - <rename>down_travel_time</rename> 1713 + <name>id</name>
  1714 + <rename>xlid</rename>
1727 <default/> 1715 <default/>
1728 - <type>Number</type> 1716 + <type>Integer</type>
1729 </value> 1717 </value>
1730 </lookup> 1718 </lookup>
1731 <cluster_schema/> 1719 <cluster_schema/>
1732 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1720 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1733 - <xloc>149</xloc>  
1734 - <yloc>581</yloc> 1721 + <xloc>1007</xloc>
  1722 + <yloc>43</yloc>
1735 <draw>Y</draw> 1723 <draw>Y</draw>
1736 </GUI> 1724 </GUI>
1737 </step> 1725 </step>
1738 1726
1739 <step> 1727 <step>
1740 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name> 1728 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1741 <type>DBLookup</type> 1729 <type>DBLookup</type>
1742 <description/> 1730 <description/>
1743 <distribute>Y</distribute> 1731 <distribute>Y</distribute>
@@ -1753,33 +1741,51 @@ @@ -1753,33 +1741,51 @@
1753 <cache_size>0</cache_size> 1741 <cache_size>0</cache_size>
1754 <lookup> 1742 <lookup>
1755 <schema/> 1743 <schema/>
1756 - <table>bsth_c_line</table> 1744 + <table>bsth_c_line_information</table>
1757 <orderby/> 1745 <orderby/>
1758 <fail_on_multiple>N</fail_on_multiple> 1746 <fail_on_multiple>N</fail_on_multiple>
1759 <eat_row_on_failure>N</eat_row_on_failure> 1747 <eat_row_on_failure>N</eat_row_on_failure>
1760 <key> 1748 <key>
1761 - <name>xlname_</name>  
1762 - <field>name</field> 1749 + <name>xlid</name>
  1750 + <field>line</field>
1763 <condition>&#x3d;</condition> 1751 <condition>&#x3d;</condition>
1764 <name2/> 1752 <name2/>
1765 </key> 1753 </key>
1766 <value> 1754 <value>
1767 - <name>id</name>  
1768 - <rename>xlid</rename> 1755 + <name>up_out_timer</name>
  1756 + <rename>up_out_timer</rename>
1769 <default/> 1757 <default/>
1770 - <type>Integer</type> 1758 + <type>Number</type>
  1759 + </value>
  1760 + <value>
  1761 + <name>up_out_mileage</name>
  1762 + <rename>up_out_mileage</rename>
  1763 + <default/>
  1764 + <type>Number</type>
  1765 + </value>
  1766 + <value>
  1767 + <name>down_out_timer</name>
  1768 + <rename>down_out_timer</rename>
  1769 + <default/>
  1770 + <type>Number</type>
  1771 + </value>
  1772 + <value>
  1773 + <name>down_out_mileage</name>
  1774 + <rename>down_out_mileage</rename>
  1775 + <default/>
  1776 + <type>Number</type>
1771 </value> 1777 </value>
1772 </lookup> 1778 </lookup>
1773 <cluster_schema/> 1779 <cluster_schema/>
1774 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1780 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1775 - <xloc>1007</xloc>  
1776 - <yloc>43</yloc> 1781 + <xloc>335</xloc>
  1782 + <yloc>763</yloc>
1777 <draw>Y</draw> 1783 <draw>Y</draw>
1778 </GUI> 1784 </GUI>
1779 </step> 1785 </step>
1780 1786
1781 <step> 1787 <step>
1782 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name> 1788 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x6240;&#x6709;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1783 <type>DBLookup</type> 1789 <type>DBLookup</type>
1784 <description/> 1790 <description/>
1785 <distribute>Y</distribute> 1791 <distribute>Y</distribute>
@@ -1806,34 +1812,82 @@ @@ -1806,34 +1812,82 @@
1806 <name2/> 1812 <name2/>
1807 </key> 1813 </key>
1808 <value> 1814 <value>
1809 - <name>up_out_timer</name>  
1810 - <rename>up_out_timer</rename> 1815 + <name>up_mileage</name>
  1816 + <rename>up_mileage</rename>
1811 <default/> 1817 <default/>
1812 <type>Number</type> 1818 <type>Number</type>
1813 </value> 1819 </value>
1814 <value> 1820 <value>
1815 - <name>up_out_mileage</name>  
1816 - <rename>up_out_mileage</rename> 1821 + <name>down_mileage</name>
  1822 + <rename>down_mileage</rename>
1817 <default/> 1823 <default/>
1818 <type>Number</type> 1824 <type>Number</type>
1819 </value> 1825 </value>
1820 <value> 1826 <value>
1821 - <name>down_out_timer</name>  
1822 - <rename>down_out_timer</rename> 1827 + <name>up_travel_time</name>
  1828 + <rename>up_travel_time</rename>
1823 <default/> 1829 <default/>
1824 <type>Number</type> 1830 <type>Number</type>
1825 </value> 1831 </value>
1826 <value> 1832 <value>
1827 - <name>down_out_mileage</name>  
1828 - <rename>down_out_mileage</rename> 1833 + <name>down_travel_time</name>
  1834 + <rename>down_travel_time</rename>
  1835 + <default/>
  1836 + <type>Number</type>
  1837 + </value>
  1838 + <value>
  1839 + <name>early_start_time</name>
  1840 + <rename>early_start_time</rename>
  1841 + <default/>
  1842 + <type>String</type>
  1843 + </value>
  1844 + <value>
  1845 + <name>early_end_time</name>
  1846 + <rename>early_end_time</rename>
  1847 + <default/>
  1848 + <type>String</type>
  1849 + </value>
  1850 + <value>
  1851 + <name>early_up_time</name>
  1852 + <rename>early_up_time</rename>
  1853 + <default/>
  1854 + <type>Number</type>
  1855 + </value>
  1856 + <value>
  1857 + <name>early_down_time</name>
  1858 + <rename>early_down_time</rename>
  1859 + <default/>
  1860 + <type>Number</type>
  1861 + </value>
  1862 + <value>
  1863 + <name>late_start_time</name>
  1864 + <rename>late_start_time</rename>
  1865 + <default/>
  1866 + <type>String</type>
  1867 + </value>
  1868 + <value>
  1869 + <name>late_end_time</name>
  1870 + <rename>late_end_time</rename>
  1871 + <default/>
  1872 + <type>String</type>
  1873 + </value>
  1874 + <value>
  1875 + <name>late_up_time</name>
  1876 + <rename>late_up_time</rename>
  1877 + <default/>
  1878 + <type>Number</type>
  1879 + </value>
  1880 + <value>
  1881 + <name>late_down_time</name>
  1882 + <rename>late_down_time</rename>
1829 <default/> 1883 <default/>
1830 <type>Number</type> 1884 <type>Number</type>
1831 </value> 1885 </value>
1832 </lookup> 1886 </lookup>
1833 <cluster_schema/> 1887 <cluster_schema/>
1834 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1888 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1835 - <xloc>335</xloc>  
1836 - <yloc>763</yloc> 1889 + <xloc>149</xloc>
  1890 + <yloc>581</yloc>
1837 <draw>Y</draw> 1891 <draw>Y</draw>
1838 </GUI> 1892 </GUI>
1839 </step> 1893 </step>
src/main/resources/datatools/ktrs/ttinfodetailDataInput2.ktr
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <transformation> 2 <transformation>
3 <info> 3 <info>
4 - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x51fa;2</name> 4 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x5165;2</name>
5 <description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description> 5 <description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6 <extended_description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</extended_description> 6 <extended_description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</extended_description>
7 <trans_version/> 7 <trans_version/>
@@ -381,12 +381,12 @@ @@ -381,12 +381,12 @@
381 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop> 381 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
382 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop> 382 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
383 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop> 383 <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
384 - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop> 384 + <hop> <from>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
385 <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop> 385 <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
386 <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop> 386 <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
387 <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop> 387 <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
388 <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop> 388 <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
389 - <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop> 389 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
390 <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop> 390 <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
391 <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop> 391 <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
392 <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop> 392 <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
@@ -696,7 +696,7 @@ @@ -696,7 +696,7 @@
696 <optimizationLevel>9</optimizationLevel> 696 <optimizationLevel>9</optimizationLevel>
697 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 697 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
698 <jsScript_name>Script 1</jsScript_name> 698 <jsScript_name>Script 1</jsScript_name>
699 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa;&#x7d;</jsScript_script> 699 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;</jsScript_script>
700 </jsScript> </jsScripts> <fields> <field> <name>jhlc</name> 700 </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
701 <rename>jhlc</rename> 701 <rename>jhlc</rename>
702 <type>String</type> 702 <type>String</type>
@@ -1623,7 +1623,7 @@ @@ -1623,7 +1623,7 @@
1623 </step> 1623 </step>
1624 1624
1625 <step> 1625 <step>
1626 - <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name> 1626 + <name>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1627 <type>DBLookup</type> 1627 <type>DBLookup</type>
1628 <description/> 1628 <description/>
1629 <distribute>Y</distribute> 1629 <distribute>Y</distribute>
@@ -1639,45 +1639,99 @@ @@ -1639,45 +1639,99 @@
1639 <cache_size>0</cache_size> 1639 <cache_size>0</cache_size>
1640 <lookup> 1640 <lookup>
1641 <schema/> 1641 <schema/>
1642 - <table>bsth_c_s_ttinfo</table> 1642 + <table>bsth_c_line_information</table>
1643 <orderby/> 1643 <orderby/>
1644 <fail_on_multiple>N</fail_on_multiple> 1644 <fail_on_multiple>N</fail_on_multiple>
1645 <eat_row_on_failure>N</eat_row_on_failure> 1645 <eat_row_on_failure>N</eat_row_on_failure>
1646 <key> 1646 <key>
1647 <name>xlid</name> 1647 <name>xlid</name>
1648 - <field>xl</field>  
1649 - <condition>&#x3d;</condition>  
1650 - <name2/>  
1651 - </key>  
1652 - <key>  
1653 - <name>ttinfoname_</name>  
1654 - <field>name</field>  
1655 - <condition>&#x3d;</condition>  
1656 - <name2/>  
1657 - </key>  
1658 - <key>  
1659 - <name>iscanceled</name>  
1660 - <field>is_cancel</field> 1648 + <field>line</field>
1661 <condition>&#x3d;</condition> 1649 <condition>&#x3d;</condition>
1662 <name2/> 1650 <name2/>
1663 </key> 1651 </key>
1664 <value> 1652 <value>
1665 - <name>id</name>  
1666 - <rename>ttid</rename> 1653 + <name>up_mileage</name>
  1654 + <rename>up_mileage</rename>
1667 <default/> 1655 <default/>
1668 - <type>Integer</type> 1656 + <type>Number</type>
  1657 + </value>
  1658 + <value>
  1659 + <name>down_mileage</name>
  1660 + <rename>down_mileage</rename>
  1661 + <default/>
  1662 + <type>Number</type>
  1663 + </value>
  1664 + <value>
  1665 + <name>up_travel_time</name>
  1666 + <rename>up_travel_time</rename>
  1667 + <default/>
  1668 + <type>Number</type>
  1669 + </value>
  1670 + <value>
  1671 + <name>down_travel_time</name>
  1672 + <rename>down_travel_time</rename>
  1673 + <default/>
  1674 + <type>Number</type>
  1675 + </value>
  1676 + <value>
  1677 + <name>early_start_time</name>
  1678 + <rename>early_start_time</rename>
  1679 + <default/>
  1680 + <type>String</type>
  1681 + </value>
  1682 + <value>
  1683 + <name>early_end_time</name>
  1684 + <rename>early_end_time</rename>
  1685 + <default/>
  1686 + <type>String</type>
  1687 + </value>
  1688 + <value>
  1689 + <name>early_up_time</name>
  1690 + <rename>early_up_time</rename>
  1691 + <default/>
  1692 + <type>Number</type>
  1693 + </value>
  1694 + <value>
  1695 + <name>early_down_time</name>
  1696 + <rename>early_down_time</rename>
  1697 + <default/>
  1698 + <type>Number</type>
  1699 + </value>
  1700 + <value>
  1701 + <name>late_start_time</name>
  1702 + <rename>late_start_time</rename>
  1703 + <default/>
  1704 + <type>String</type>
  1705 + </value>
  1706 + <value>
  1707 + <name>late_end_time</name>
  1708 + <rename>late_end_time</rename>
  1709 + <default/>
  1710 + <type>String</type>
  1711 + </value>
  1712 + <value>
  1713 + <name>late_up_time</name>
  1714 + <rename>late_up_time</rename>
  1715 + <default/>
  1716 + <type>Number</type>
  1717 + </value>
  1718 + <value>
  1719 + <name>late_down_time</name>
  1720 + <rename>late_down_time</rename>
  1721 + <default/>
  1722 + <type>Number</type>
1669 </value> 1723 </value>
1670 </lookup> 1724 </lookup>
1671 <cluster_schema/> 1725 <cluster_schema/>
1672 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1726 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1673 - <xloc>1011</xloc>  
1674 - <yloc>134</yloc> 1727 + <xloc>149</xloc>
  1728 + <yloc>581</yloc>
1675 <draw>Y</draw> 1729 <draw>Y</draw>
1676 </GUI> 1730 </GUI>
1677 </step> 1731 </step>
1678 1732
1679 <step> 1733 <step>
1680 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name> 1734 + <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name>
1681 <type>DBLookup</type> 1735 <type>DBLookup</type>
1682 <description/> 1736 <description/>
1683 <distribute>Y</distribute> 1737 <distribute>Y</distribute>
@@ -1693,45 +1747,39 @@ @@ -1693,45 +1747,39 @@
1693 <cache_size>0</cache_size> 1747 <cache_size>0</cache_size>
1694 <lookup> 1748 <lookup>
1695 <schema/> 1749 <schema/>
1696 - <table>bsth_c_line_information</table> 1750 + <table>bsth_c_s_ttinfo</table>
1697 <orderby/> 1751 <orderby/>
1698 <fail_on_multiple>N</fail_on_multiple> 1752 <fail_on_multiple>N</fail_on_multiple>
1699 <eat_row_on_failure>N</eat_row_on_failure> 1753 <eat_row_on_failure>N</eat_row_on_failure>
1700 <key> 1754 <key>
1701 <name>xlid</name> 1755 <name>xlid</name>
1702 - <field>line</field> 1756 + <field>xl</field>
  1757 + <condition>&#x3d;</condition>
  1758 + <name2/>
  1759 + </key>
  1760 + <key>
  1761 + <name>ttinfoname_</name>
  1762 + <field>name</field>
  1763 + <condition>&#x3d;</condition>
  1764 + <name2/>
  1765 + </key>
  1766 + <key>
  1767 + <name>iscanceled</name>
  1768 + <field>is_cancel</field>
1703 <condition>&#x3d;</condition> 1769 <condition>&#x3d;</condition>
1704 <name2/> 1770 <name2/>
1705 </key> 1771 </key>
1706 <value> 1772 <value>
1707 - <name>up_mileage</name>  
1708 - <rename>up_mileage</rename>  
1709 - <default/>  
1710 - <type>Number</type>  
1711 - </value>  
1712 - <value>  
1713 - <name>down_mileage</name>  
1714 - <rename>down_mileage</rename>  
1715 - <default/>  
1716 - <type>Number</type>  
1717 - </value>  
1718 - <value>  
1719 - <name>up_travel_time</name>  
1720 - <rename>up_travel_time</rename>  
1721 - <default/>  
1722 - <type>Number</type>  
1723 - </value>  
1724 - <value>  
1725 - <name>down_travel_time</name>  
1726 - <rename>down_travel_time</rename> 1773 + <name>id</name>
  1774 + <rename>ttid</rename>
1727 <default/> 1775 <default/>
1728 - <type>Number</type> 1776 + <type>Integer</type>
1729 </value> 1777 </value>
1730 </lookup> 1778 </lookup>
1731 <cluster_schema/> 1779 <cluster_schema/>
1732 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1780 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1733 - <xloc>149</xloc>  
1734 - <yloc>581</yloc> 1781 + <xloc>1011</xloc>
  1782 + <yloc>134</yloc>
1735 <draw>Y</draw> 1783 <draw>Y</draw>
1736 </GUI> 1784 </GUI>
1737 </step> 1785 </step>
@@ -1763,6 +1811,12 @@ @@ -1763,6 +1811,12 @@
1763 <condition>&#x3d;</condition> 1811 <condition>&#x3d;</condition>
1764 <name2/> 1812 <name2/>
1765 </key> 1813 </key>
  1814 + <key>
  1815 + <name>iscanceled</name>
  1816 + <field>destroy</field>
  1817 + <condition>&#x3d;</condition>
  1818 + <name2/>
  1819 + </key>
1766 <value> 1820 <value>
1767 <name>id</name> 1821 <name>id</name>
1768 <rename>xlid</rename> 1822 <rename>xlid</rename>
src/main/resources/static/assets/bower_components/ng-sweet-alert/.bower.json 0 → 100644
  1 +{
  2 + "name": "ng-sweet-alert",
  3 + "description": "Sweet Alert Directive",
  4 + "version": "1.0.11",
  5 + "authors": [
  6 + "Tushar Borole <tushariscoolster@gmail.com>"
  7 + ],
  8 + "repository": {
  9 + "type": "git",
  10 + "url": "https://github.com/tushariscoolster/ng-sweet-alert"
  11 + },
  12 + "homepage": "http://tushariscoolster.github.io/ng-sweet-alert/",
  13 + "license": "LGPL-2.1",
  14 + "main": "ng-sweet-alert.js",
  15 + "keywords": [
  16 + "sweetalert",
  17 + "angular",
  18 + "alert"
  19 + ],
  20 + "ignore": [
  21 + "gh-pages",
  22 + "node_modules",
  23 + "bower_components"
  24 + ],
  25 + "dependencies": {
  26 + "sweetalert": "*"
  27 + },
  28 + "_release": "1.0.11",
  29 + "_resolution": {
  30 + "type": "version",
  31 + "tag": "v1.0.11",
  32 + "commit": "dddf04ee7750f53b2f86945e06326a7a8eddf56d"
  33 + },
  34 + "_source": "https://github.com/tushariscoolster/ng-sweet-alert.git",
  35 + "_target": "1.0.11",
  36 + "_originalSource": "ng-sweet-alert"
  37 +}
0 \ No newline at end of file 38 \ No newline at end of file
src/main/resources/static/assets/bower_components/ng-sweet-alert/.gitignore 0 → 100644
  1 +node_modules/
src/main/resources/static/assets/bower_components/ng-sweet-alert/Gruntfile.js 0 → 100644
  1 +'use strict';
  2 +
  3 +/* jshint camelcase: false */
  4 +
  5 +
  6 +module.exports = function (grunt)
  7 +{
  8 + // Load grunt tasks automatically
  9 + require('load-grunt-tasks')(grunt);
  10 +
  11 + // Time how long tasks take. Can help when optimizing build times
  12 + require('time-grunt')(grunt);
  13 +
  14 + var appConfig = {
  15 + app: 'src',
  16 + example: 'example',
  17 + dist: 'dist',
  18 + tpl: 'src/templates'
  19 + };
  20 + // Define the configuration for all the tasks
  21 + grunt.initConfig({
  22 + // Watches files for changes and runs tasks based on the changed files
  23 + appConfig: appConfig,
  24 + bump: {
  25 + options: {
  26 + files: ['bower.json','package.json'],
  27 + updateConfigs: [],
  28 + commit: true,
  29 + commitMessage: 'Release v%VERSION%',
  30 + commitFiles: [
  31 + 'bower.json',
  32 + 'ng-sweet-alert.js',
  33 + 'package.json'
  34 + ],
  35 + createTag: true,
  36 + tagName: 'v%VERSION%',
  37 + tagMessage: 'Version %VERSION%',
  38 + push: false,
  39 + pushTo: 'git@github.com:tushariscoolster/ng-sweet-alert.git',
  40 + gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
  41 + globalReplace: false
  42 + }
  43 + }
  44 + });
  45 +
  46 +
  47 +
  48 +
  49 +
  50 + grunt.registerTask('release', function (target)
  51 + {
  52 + grunt.task.run([
  53 + 'bump'
  54 + ]);
  55 + });
  56 +
  57 +};
src/main/resources/static/assets/bower_components/ng-sweet-alert/README.md 0 → 100644
  1 +[![Latest Stable Version](https://img.shields.io/npm/v/ng-sweet-alert.svg?style=flat-square)](https://www.npmjs.com/package/ng-sweet-alert)
  2 +[![NPM Downloads](https://img.shields.io/npm/dm/ng-sweet-alert.svg?style=flat-square)](https://www.npmjs.com/package/ng-sweet-alert)
  3 +[![Latest Stable Version](https://img.shields.io/bower/v/ng-sweet-alert.svg?style=flat-square)](http://bower.io/search/?q=ng-sweet-alert)
  4 +[![Build Status](https://img.shields.io/github/forks/tushariscoolster/ng-sweet-alert.svg?style=flat-square)](https://github.com/tushariscoolster/ng-sweet-alert)
  5 +[![Build Status](https://img.shields.io/github/stars/tushariscoolster/ng-sweet-alert.svg?style=flat-square)](https://github.com/tushariscoolster/ng-sweet-alert)
  6 +
  7 +
  8 +# ng-sweet-alert
  9 +
  10 +ng-sweet-alert is an directive for sweet alert [sweetalert]. Integration of sweet alert becomes very easy with angular js. There is no need to write a single line of javascript code. Only few html attribute is enough to use sweetalert.
  11 +
  12 +## Getting Started
  13 +
  14 +Install via bower
  15 +
  16 +```sh
  17 +bower install ng-sweet-alert
  18 +```
  19 +
  20 +Install via npm
  21 +
  22 +```sh
  23 +npm install ng-sweet-alert
  24 +```
  25 +
  26 +Add dependency in your module
  27 +
  28 +```javascript
  29 +angular.module('yourApp',[ 'ng-sweet-alert' ]);
  30 +```
  31 +
  32 +## Demo
  33 +
  34 +Have a look at the [DEMO](http://tushariscoolster.github.io/ng-sweet-alert) or the [plunkr](http://plnkr.co/edit/OBhogm1ZfaGKN466Dijv?p=preview)! Edit and Fork :)
  35 +
  36 +
  37 +## Configure
  38 +
  39 +```html
  40 +<input sweetalert sweet-options="{title: 'Are you sure?',text: 'You will not be able to recover this imaginary file!',type: 'warning',showCancelButton: true,confirmButtonColor: '#DD6B55',confirmButtonText: 'Yes, delete it!',cancelButtonText: 'No, cancel plx!'}" sweet-confirm-option="{title: 'Deleted!',text: 'Your imaginary file has been deleted.',type: 'success'}" sweet-cancel-option="{title: 'Cancelled!',text: 'Your imaginary file is safe',type: 'error'}" type="submit" name="login-submit" sweet-on-cancel="checkCancel()" sweet-on-confirm="checkConfirm()" id="login-submit" tabindex="4" class="form-control btn btn-login" value="Log In">
  41 +```
  42 +
  43 +## Documentation
  44 +
  45 +
  46 +| | Option|
  47 + ----------------- | ---------------------------- | ------------------
  48 +| sweet-options | `'{title: 'Are you sure?',text: 'You will not be able to recover this imaginary file!',type: 'warning',showCancelButton: true,confirmButtonColor: '#DD6B55',confirmButtonText: 'Yes, delete it!',cancelButtonText: 'No, cancel plx!'}'`
  49 +| sweet-confirm-option| `"{title: 'Deleted!',text: 'Your imaginary file has been deleted.',type: 'success'}"`
  50 +| sweet-cancel-option| `{title: 'Cancelled!',text: 'Your imaginary file is safe',type: 'error'}`
  51 +| sweet-on-cancel| `checkCancel()`
  52 +| sweet-on-confirm| `checkConfirm()`
  53 +
  54 +
  55 +----------
  56 +
  57 +## Use SweetAlert as service
  58 +
  59 + swal() gets two arguments;
  60 + first argument is parameters Objects (with default values).
  61 + second argument is Callback function when clicking on "OK"/"Cancel", which is a promise.
  62 + register to the promise (using 'then') and handle the resolve / reject according to your business logic.
  63 +
  64 + Add 'SweetAlert' to your directive / controller / ect)
  65 + Use SweetAlert.confirm(msg, options) / SweetAlert.alert(msg, options) / SweetAlert.info(msg, options) / SweetAlert.success(msg, options)
  66 + pass arguments:
  67 +
  68 + msg; String - The message to be displayed in the alert / confirm box (mandatory).
  69 + options; Object (optinal):
  70 + title: String - the title of the box.
  71 + type: String - "warning" / "info" / "error" / "success" / "" (empty string will not display a graphic icon).
  72 + showCancelButton: Boolean - shows the "cancel" button (true will behave like confirm dialog, false will behave like alert dialog).
  73 +
  74 + Use returned promise;
  75 +
  76 + ```javascript
  77 + SweetAlert.confirm("Are you sure?", {title : "Careful now!"})
  78 + .then(function(p) { do something on success },
  79 + function(p) { do something on fail }
  80 + );
  81 +
  82 + SweetAlert.success("You have successfully completed our poll!", {title: "Good job!"});
  83 +```
  84 +
  85 +
  86 +## Documentation: SweetAlert as a service
  87 +
  88 +
  89 +| | Option|
  90 + ----------------- | ---------------------------- | ------------------
  91 +| msg (mandatory)| `"Are you sure you want to do that.."`
  92 +| options| `"{title: 'Delete this?', type: 'warning' showCancelButton: true}"`
  93 +
  94 +
  95 +----------
  96 +
  97 +## Contributing
  98 +
  99 +Open an issue first to discuss potential changes/additions. If you have questions with the guide, feel free to leave them as issues in the repository. If you find a typo, create a pull request. The idea is to keep the content up to date and use github’s native feature to help tell the story with issues and PR’s, which are all searchable via google. Why? Because odds are if you have a question, someone else does too! You can learn more here at about how to contribute.
  100 +
  101 +*By contributing to this repository you are agreeing to make your content available subject to the license of this repository.*
  102 +
  103 +### Process
  104 + 1. Discuss the changes in a GitHub issue.
  105 + 2. Open a Pull Request, reference the issue, and explain the change and why it adds value.
  106 + 3. The Pull Request will be evaluated and either merged or declined.
  107 +
  108 +## License
  109 +
  110 + Use this guide. Attributions are appreciated._
  111 +
  112 +### Copyright
  113 +
  114 +Copyright (c) 2014-2015 [Tushar Borole](http://www.tusharborole.com)
  115 +
  116 +### (The MIT License)
  117 +Permission is hereby granted, free of charge, to any person obtaining
  118 +a copy of this software and associated documentation files (the
  119 +'Software'), to deal in the Software without restriction, including
  120 +without limitation the rights to use, copy, modify, merge, publish,
  121 +distribute, sublicense, and/or sell copies of the Software, and to
  122 +permit persons to whom the Software is furnished to do so, subject to
  123 +the following conditions:
  124 +
  125 +The above copyright notice and this permission notice shall be
  126 +included in all copies or substantial portions of the Software.
  127 +
  128 +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
  129 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  130 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  131 +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  132 +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  133 +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  134 +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  135 +
  136 +##Last but not least
  137 +This is made in India with love and passion ʕ´•ᴥ•`ʔ
  138 +
  139 +<a href="../../" target="_blank"><img src="http://lonamowers-hrd.appspot.com/images/made_india.jpg" height="200"></a>
src/main/resources/static/assets/bower_components/ng-sweet-alert/bower.json 0 → 100644
  1 +{
  2 + "name": "ng-sweet-alert",
  3 + "description": "Sweet Alert Directive",
  4 + "version": "1.0.11",
  5 + "authors": [
  6 + "Tushar Borole <tushariscoolster@gmail.com>"
  7 + ],
  8 + "repository": {
  9 + "type": "git",
  10 + "url": "https://github.com/tushariscoolster/ng-sweet-alert"
  11 + },
  12 + "homepage": "http://tushariscoolster.github.io/ng-sweet-alert/",
  13 + "license": "LGPL-2.1",
  14 + "main": "ng-sweet-alert.js",
  15 + "keywords": ["sweetalert",
  16 + "angular",
  17 + "alert"
  18 + ],
  19 + "ignore": [
  20 + "gh-pages",
  21 + "node_modules",
  22 + "bower_components"
  23 + ],
  24 + "dependencies": {
  25 + "sweetalert": "*"
  26 + }
  27 +}
src/main/resources/static/assets/bower_components/ng-sweet-alert/ng-sweet-alert.js 0 → 100644
  1 +/**
  2 + * * @description directive for sweet alert
  3 + * @author Tushar Borole
  4 + * @createDate 18/04/2015
  5 + * @version 1.0.3
  6 + * @lastmodifiedDate 06/18/2015
  7 + */
  8 +
  9 +
  10 +
  11 +(function() {
  12 + 'use strict';
  13 +
  14 +
  15 + // Check we have sweet alert js included
  16 + if (angular.isUndefined(window.swal)) {
  17 + throw "Please inlcude sweet alert js and css from http://t4t5.github.io/sweetalert/";
  18 + }
  19 +
  20 + angular
  21 + .module('ng-sweet-alert', [])
  22 + .directive('sweetalert', sweetalert)
  23 + .factory('SweetAlert', sweetalert_service);
  24 +
  25 + sweetalert.$inject = ['$parse'];
  26 +
  27 + /* @ngInject */
  28 + function sweetalert($parse) {
  29 + // Usage:
  30 + //
  31 + // Creates:
  32 + //
  33 + var directive = {
  34 + link: link
  35 + };
  36 + return directive;
  37 +
  38 + function link(scope, element, attrs, controller) {
  39 + var sweetElement = angular.element(element);
  40 + sweetElement.click(function() {
  41 + var sweetOptions = scope.$eval(attrs.sweetOptions);
  42 + var sweetConfirmOption = scope.$eval(attrs.sweetConfirmOption);
  43 + var sweetCancelOption = scope.$eval(attrs.sweetCancelOption);
  44 +
  45 +
  46 + swal(sweetOptions,
  47 + function(isConfirm) {
  48 + if (isConfirm) {
  49 + if (sweetConfirmOption) swal(sweetConfirmOption);
  50 + if (attrs.sweetOnConfirm) scope.$evalAsync(attrs.sweetOnConfirm);
  51 +
  52 + } else {
  53 + if (sweetCancelOption) swal(sweetCancelOption);
  54 + if (attrs.sweetOnCancel) scope.$evalAsync(attrs.sweetOnCancel);
  55 + }
  56 + });
  57 +
  58 + })
  59 +
  60 + }
  61 + }
  62 +
  63 + // Use SweetAlert as service
  64 + //
  65 + // swal() gets two arguments;
  66 + // first argument is parameters Objects (with default values).
  67 + // second argument is Callback function when clicking on "OK"/"Cancel", which is a promise.
  68 + // register to the promise (using 'then') and handle the resolve / reject according to your business logic.
  69 + //
  70 + // Add 'SweetAlert' to your directive / controller / ect)
  71 + // Use SweetAlert.confirm(msg, options) / SweetAlert.alert(msg, options) / SweetAlert.info(msg, options) / SweetAlert.success(msg, options)
  72 + // pass arguments:
  73 + // msg; String - The message to be displayed in the alert / confirm box (mandatory).
  74 + // options; Object (optinal):
  75 + // title: String - the title of the box.
  76 + // type: String - "warning" / "info" / "error" / "success" / "" (empty string will not display a graphic icon).
  77 + // showCancelButton: Boolean - shows the "cancel" button (true will behave like confirm dialog, false will behave like alert dialog).
  78 + // Use returned promise;
  79 + //
  80 + // SweetAlert.confirm("Are you sure?", {title : "Careful now!"})
  81 + // .then(function(p) { do something on success },
  82 + // function(p) { do something on fail }
  83 + // );
  84 + //
  85 + // SweetAlert.success("You have successfully completed our poll!", {title: "Good job!"});
  86 +
  87 + sweetalert_service.$inject = ['$q'];
  88 +
  89 + function sweetalert_service($q) {
  90 + function swal_alert(message, options) {
  91 + return swal_confirm(message, angular.extend({
  92 + title: "Alert",
  93 + text: message,
  94 + type: "warning",
  95 + showCancelButton: false
  96 + }, options));
  97 + }
  98 +
  99 + function swal_info(message, options) {
  100 + return swal_alert(message, angular.extend({
  101 + type: "info"
  102 + }, options));
  103 + }
  104 +
  105 + function swal_success(message, options) {
  106 + return swal_alert(message, angular.extend({
  107 + type: "success"
  108 + }, options));
  109 + }
  110 +
  111 + function swal_error(message, options) {
  112 + return swal_alert(message, angular.extend({
  113 + type: "error"
  114 + }, options));
  115 + }
  116 +
  117 + function swal_confirm(message, options) {
  118 + var defered = $q.defer();
  119 + var options = angular.extend({
  120 + title: "Alert",
  121 + text: message,
  122 + type: "warning",
  123 + showCancelButton: true
  124 + }, options);
  125 + swal(options, function(r) {
  126 + defered.resolve(r);
  127 + }, function(e) {
  128 + defered.reject(e);
  129 + });
  130 + return defered.promise;
  131 + }
  132 + return {
  133 + alert: swal_alert,
  134 + confirm: swal_confirm,
  135 + info: swal_info,
  136 + success: swal_success,
  137 + error: swal_error
  138 + };
  139 + }
  140 +
  141 +})();
  142 +
src/main/resources/static/assets/bower_components/ng-sweet-alert/package.json 0 → 100644
  1 +{
  2 + "name": "ng-sweet-alert",
  3 + "version": "1.0.11",
  4 + "repository": {
  5 + "type": "git",
  6 + "url": "https://github.com/tushariscoolster/ng-sweet-alert"
  7 + },
  8 + "main": "ng-sweet-alert.js",
  9 + "devDependencies": {
  10 + "grunt": "^0.4.1",
  11 + "grunt-bump": "0.0.16",
  12 + "load-grunt-tasks": "^0.4.0",
  13 + "time-grunt": "^0.3.1"
  14 + },
  15 + "engines": {
  16 + "node": ">=0.10.0"
  17 + },
  18 + "dependencies": {}
  19 +}
0 \ No newline at end of file 20 \ No newline at end of file
src/main/resources/static/assets/bower_components/sweetalert/.bower.json 0 → 100644
  1 +{
  2 + "name": "sweetalert",
  3 + "homepage": "http://tristanedwards.me/sweetalert",
  4 + "authors": [
  5 + "Tristan Edwards <tristan.edwards@me.com> (http://tristanedwards.me)"
  6 + ],
  7 + "description": "A beautiful replacement for JavaScript's alert.",
  8 + "main": [
  9 + "dist/sweetalert.min.js",
  10 + "dist/sweetalert.css"
  11 + ],
  12 + "keywords": [
  13 + "alert",
  14 + "modal"
  15 + ],
  16 + "repository": {
  17 + "type": "git",
  18 + "url": "git@github.com:t4t5/sweetalert.git"
  19 + },
  20 + "license": "MIT",
  21 + "devDependencies": {
  22 + "qunit": "~1.18.0",
  23 + "jquery": "~2.1.4"
  24 + },
  25 + "version": "1.1.3",
  26 + "_release": "1.1.3",
  27 + "_resolution": {
  28 + "type": "version",
  29 + "tag": "v1.1.3",
  30 + "commit": "1228f1e0a7ccda1f445224f3945867b4fc1234e5"
  31 + },
  32 + "_source": "https://github.com/t4t5/sweetalert.git",
  33 + "_target": "*",
  34 + "_originalSource": "sweetalert"
  35 +}
0 \ No newline at end of file 36 \ No newline at end of file
src/main/resources/static/assets/bower_components/sweetalert/.editorconfig 0 → 100644
  1 +# editorconfig.org
  2 +
  3 +root = true
  4 +
  5 +[*]
  6 +charset = utf-8
  7 +end_of_line = lf
  8 +indent_size = 2
  9 +indent_style = space
  10 +insert_final_newline = true
  11 +trim_trailing_whitespace = true
src/main/resources/static/assets/bower_components/sweetalert/.gitignore 0 → 100644
  1 +*.codekit
  2 +*.sass-cache
  3 +*.DS_STORE
  4 +node_modules
  5 +bower_components
src/main/resources/static/assets/bower_components/sweetalert/.jshintrc 0 → 100644
  1 +{
  2 + "predef": [
  3 + "document",
  4 + "window",
  5 + "module",
  6 + "define"
  7 + ],
  8 + "browser": true,
  9 + "esnext": true,
  10 + "validthis": true
  11 +}
src/main/resources/static/assets/bower_components/sweetalert/.travis.yml 0 → 100644
  1 +language: node_js
  2 +node_js:
  3 + - "0.12"
  4 +before script:
  5 + - npm install -g gulp
  6 + - npm install -g bower
  7 + - bower install
  8 +script: gulp test
src/main/resources/static/assets/bower_components/sweetalert/LICENSE 0 → 100644
  1 +The MIT License (MIT)
  2 +
  3 +Copyright (c) 2014 Tristan Edwards
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining a copy
  6 +of this software and associated documentation files (the "Software"), to deal
  7 +in the Software without restriction, including without limitation the rights
  8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9 +copies of the Software, and to permit persons to whom the Software is
  10 +furnished to do so, subject to the following conditions:
  11 +
  12 +The above copyright notice and this permission notice shall be included in all
  13 +copies or substantial portions of the Software.
  14 +
  15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  21 +SOFTWARE.
  22 +
src/main/resources/static/assets/bower_components/sweetalert/README.md 0 → 100644
  1 +SweetAlert [![Build Status](https://travis-ci.org/t4t5/sweetalert.svg?branch=master)](https://travis-ci.org/t4t5/sweetalert)
  2 +==========
  3 +
  4 +An awesome replacement for JavaScript's alert.
  5 +
  6 +![A success modal](https://raw.github.com/t4t5/sweetalert/master/sweetalert.gif)
  7 +
  8 +[See it in action!](http://t4t5.github.io/sweetalert)
  9 +
  10 +[Learn how to use it!](https://www.ludu.co/lesson/how-to-use-sweetalert)
  11 +
  12 +
  13 +Usage
  14 +-----
  15 +
  16 +You can install SweetAlert through bower:
  17 +
  18 +```bash
  19 +bower install sweetalert
  20 +```
  21 +
  22 +Or through npm:
  23 +
  24 +```bash
  25 +npm install sweetalert
  26 +```
  27 +
  28 +Alternatively, download the package and reference the JavaScript and CSS files manually:
  29 +
  30 +```html
  31 +<script src="dist/sweetalert.min.js"></script>
  32 +<link rel="stylesheet" type="text/css" href="dist/sweetalert.css">
  33 +```
  34 +**Note:** If you're using an older version than v1.0.0, the files are `lib/sweet-alert.min.js` and `lib/sweet-alert.css`
  35 +
  36 +
  37 +Tutorial
  38 +--------
  39 +
  40 +The easiest way to get started is follow the [SweetAlert tutorial on Ludu](https://www.ludu.co/lesson/how-to-use-sweetalert)!
  41 +
  42 +
  43 +Examples
  44 +--------
  45 +
  46 +The most basic message:
  47 +
  48 +```javascript
  49 +swal("Hello world!");
  50 +```
  51 +
  52 +A message signaling an error:
  53 +
  54 +```javascript
  55 +swal("Oops...", "Something went wrong!", "error");
  56 +```
  57 +
  58 +A warning message, with a function attached to the "Confirm"-button:
  59 +
  60 +```javascript
  61 +swal({
  62 + title: "Are you sure?",
  63 + text: "You will not be able to recover this imaginary file!",
  64 + type: "warning",
  65 + showCancelButton: true,
  66 + confirmButtonColor: "#DD6B55",
  67 + confirmButtonText: "Yes, delete it!",
  68 + closeOnConfirm: false,
  69 + html: false
  70 +}, function(){
  71 + swal("Deleted!",
  72 + "Your imaginary file has been deleted.",
  73 + "success");
  74 +});
  75 +```
  76 +
  77 +A prompt modal where the user's input is logged:
  78 +
  79 +```javascript
  80 +swal({
  81 + title: "An input!",
  82 + text: 'Write something interesting:',
  83 + type: 'input',
  84 + showCancelButton: true,
  85 + closeOnConfirm: false,
  86 + animation: "slide-from-top"
  87 +}, function(inputValue){
  88 + console.log("You wrote", inputValue);
  89 +});
  90 +```
  91 +
  92 +Ajax request example:
  93 +
  94 +```javascript
  95 +swal({
  96 + title: 'Ajax request example',
  97 + text: 'Submit to run ajax request',
  98 + type: 'info',
  99 + showCancelButton: true,
  100 + closeOnConfirm: false,
  101 + disableButtonsOnConfirm: true,
  102 + confirmLoadingButtonColor: '#DD6B55'
  103 +}, function(inputValue){
  104 + setTimeout(function() {
  105 + swal('Ajax request finished!');
  106 + }, 2000);
  107 +});
  108 +```
  109 +
  110 +[View more examples](http://t4t5.github.io/sweetalert)
  111 +
  112 +
  113 +Themes
  114 +------
  115 +
  116 +SweetAlert can easily be themed to fit your site's design. SweetAlert comes with three example themes that you can try out: **facebook**, **twitter** and **google**. They can be referenced right after the intial sweetalert-CSS:
  117 +```html
  118 +<link rel="stylesheet" href="dist/sweetalert.css">
  119 +<link rel="stylesheet" href="themes/twitter/twitter.css">
  120 +```
  121 +
  122 +
  123 +Browser compatibility
  124 +---------------------
  125 +
  126 +SweetAlert works in most major browsers (yes, even IE). Some details:
  127 +
  128 +- **IE8**: (Dropped since v1.0.0-beta)
  129 +- **IE9**: Works, but icons are not animated.
  130 +- **IE10+**: Works!
  131 +- **Safari 4+**: Works!
  132 +- **Firefox 3+**: Works!
  133 +- **Chrome 14+**: Works!
  134 +- **Opera 15+**: Works!
  135 +
  136 +
  137 +Contributing
  138 +------------
  139 +
  140 +If you want to contribute:
  141 +
  142 +- Fork the repo
  143 +
  144 +- Make sure you have [Node](http://nodejs.org/), [NPM](https://www.npmjs.com/) and [Gulp](http://gulpjs.com/) installed. When in the SweetAlert directory, run `npm install` to install the dependencies. Then run `gulp` while working to automatically minify the SCSS and JS-files.
  145 +
  146 +- Keep in mind that SweetAlert uses Browserify in order to compile ES6-files. For easy debugging, make sure you reference the file `dist/sweetalert-dev.js` instead of `sweetalert.js`.
  147 +
  148 +- After you're done, make a pull request and wait for approval! :)
  149 +
  150 +
  151 +Related projects
  152 +----------------
  153 +
  154 +* [SweetAlert for Android](https://github.com/pedant/sweet-alert-dialog)
  155 +* [SweetAlert for Bootstrap](https://github.com/lipis/bootstrap-sweetalert)
  156 +* [SweetAlert for AngularJS](https://github.com/oitozero/ngSweetAlert)
  157 +* [SweetAlert for RubyOnRails](https://github.com/sharshenov/sweetalert-rails)
src/main/resources/static/assets/bower_components/sweetalert/bower.json 0 → 100644
  1 +{
  2 + "name": "sweetalert",
  3 + "homepage": "http://tristanedwards.me/sweetalert",
  4 + "authors": [
  5 + "Tristan Edwards <tristan.edwards@me.com> (http://tristanedwards.me)"
  6 + ],
  7 + "description": "A beautiful replacement for JavaScript's alert.",
  8 + "main": [
  9 + "dist/sweetalert.min.js",
  10 + "dist/sweetalert.css"
  11 + ],
  12 + "keywords": [
  13 + "alert",
  14 + "modal"
  15 + ],
  16 + "repository": {
  17 + "type": "git",
  18 + "url": "git@github.com:t4t5/sweetalert.git"
  19 + },
  20 + "license": "MIT",
  21 + "devDependencies": {
  22 + "qunit": "~1.18.0",
  23 + "jquery": "~2.1.4"
  24 + }
  25 +}
src/main/resources/static/assets/bower_components/sweetalert/dev/gulpfile-wrap-template.js 0 → 100644
  1 +;(function(window, document, undefined) {
  2 + "use strict";
  3 +
  4 + <%= contents %>
  5 +
  6 + /*
  7 + * Use SweetAlert with RequireJS
  8 + */
  9 +
  10 + if (typeof define === 'function' && define.amd) {
  11 + define(function () {
  12 + return sweetAlert;
  13 + });
  14 + } else if (typeof module !== 'undefined' && module.exports) {
  15 + module.exports = sweetAlert;
  16 + }
  17 +
  18 +})(window, document);
0 \ No newline at end of file 19 \ No newline at end of file
src/main/resources/static/assets/bower_components/sweetalert/dev/ie9.css 0 → 100644
  1 +/* Internet Explorer 9 has some special quirks that are fixed here */
  2 +/* The icons are not animated. */
  3 +/* This file is automatically merged into sweet-alert.min.js through Gulp */
  4 +
  5 +/* Error icon */
  6 +.sweet-alert .sa-icon.sa-error .sa-line.sa-left {
  7 + -ms-transform: rotate(45deg)\9;
  8 +}
  9 +.sweet-alert .sa-icon.sa-error .sa-line.sa-right {
  10 + -ms-transform: rotate(-45deg)\9;
  11 +}
  12 +
  13 +
  14 +/* Success icon */
  15 +.sweet-alert .sa-icon.sa-success {
  16 + border-color: transparent\9;
  17 +}
  18 +.sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
  19 + -ms-transform: rotate(45deg)\9;
  20 +}
  21 +.sweet-alert .sa-icon.sa-success .sa-line.sa-long {
  22 + -ms-transform: rotate(-45deg)\9;
  23 +}
0 \ No newline at end of file 24 \ No newline at end of file
src/main/resources/static/assets/bower_components/sweetalert/dev/loader-animation.css 0 → 100644
  1 +/*!
  2 + * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)
  3 + * Copyright 2015 Daniel Cardoso <@DanielCardoso>
  4 + * Licensed under MIT
  5 + */
  6 +.la-ball-fall,
  7 +.la-ball-fall > div {
  8 +position: relative;
  9 +-webkit-box-sizing: border-box;
  10 + -moz-box-sizing: border-box;
  11 + box-sizing: border-box;
  12 +}
  13 +.la-ball-fall {
  14 + display: block;
  15 + font-size: 0;
  16 + color: #fff;
  17 +}
  18 +.la-ball-fall.la-dark {
  19 + color: #333;
  20 +}
  21 +.la-ball-fall > div {
  22 + display: inline-block;
  23 + float: none;
  24 + background-color: currentColor;
  25 + border: 0 solid currentColor;
  26 +}
  27 +.la-ball-fall {
  28 + width: 54px;
  29 + height: 18px;
  30 +}
  31 +.la-ball-fall > div {
  32 + width: 10px;
  33 + height: 10px;
  34 + margin: 4px;
  35 + border-radius: 100%;
  36 + opacity: 0;
  37 + -webkit-animation: ball-fall 1s ease-in-out infinite;
  38 + -moz-animation: ball-fall 1s ease-in-out infinite;
  39 + -o-animation: ball-fall 1s ease-in-out infinite;
  40 + animation: ball-fall 1s ease-in-out infinite;
  41 +}
  42 +.la-ball-fall > div:nth-child(1) {
  43 + -webkit-animation-delay: -200ms;
  44 + -moz-animation-delay: -200ms;
  45 + -o-animation-delay: -200ms;
  46 + animation-delay: -200ms;
  47 +}
  48 +.la-ball-fall > div:nth-child(2) {
  49 + -webkit-animation-delay: -100ms;
  50 + -moz-animation-delay: -100ms;
  51 + -o-animation-delay: -100ms;
  52 + animation-delay: -100ms;
  53 +}
  54 +.la-ball-fall > div:nth-child(3) {
  55 + -webkit-animation-delay: 0ms;
  56 + -moz-animation-delay: 0ms;
  57 + -o-animation-delay: 0ms;
  58 + animation-delay: 0ms;
  59 +}
  60 +.la-ball-fall.la-sm {
  61 + width: 26px;
  62 + height: 8px;
  63 +}
  64 +.la-ball-fall.la-sm > div {
  65 + width: 4px;
  66 + height: 4px;
  67 + margin: 2px;
  68 +}
  69 +.la-ball-fall.la-2x {
  70 + width: 108px;
  71 + height: 36px;
  72 +}
  73 +.la-ball-fall.la-2x > div {
  74 + width: 20px;
  75 + height: 20px;
  76 + margin: 8px;
  77 +}
  78 +.la-ball-fall.la-3x {
  79 + width: 162px;
  80 + height: 54px;
  81 +}
  82 +.la-ball-fall.la-3x > div {
  83 + width: 30px;
  84 + height: 30px;
  85 + margin: 12px;
  86 +}
  87 +/*
  88 + * Animation
  89 + */
  90 +@-webkit-keyframes ball-fall {
  91 + 0% {
  92 + opacity: 0;
  93 + -webkit-transform: translateY(-145%);
  94 + transform: translateY(-145%);
  95 + }
  96 + 10% {
  97 + opacity: .5;
  98 + }
  99 + 20% {
  100 + opacity: 1;
  101 + -webkit-transform: translateY(0);
  102 + transform: translateY(0);
  103 + }
  104 + 80% {
  105 + opacity: 1;
  106 + -webkit-transform: translateY(0);
  107 + transform: translateY(0);
  108 + }
  109 + 90% {
  110 + opacity: .5;
  111 + }
  112 + 100% {
  113 + opacity: 0;
  114 + -webkit-transform: translateY(145%);
  115 + transform: translateY(145%);
  116 + }
  117 +}
  118 +@-moz-keyframes ball-fall {
  119 + 0% {
  120 + opacity: 0;
  121 + -moz-transform: translateY(-145%);
  122 + transform: translateY(-145%);
  123 + }
  124 + 10% {
  125 + opacity: .5;
  126 + }
  127 + 20% {
  128 + opacity: 1;
  129 + -moz-transform: translateY(0);
  130 + transform: translateY(0);
  131 + }
  132 + 80% {
  133 + opacity: 1;
  134 + -moz-transform: translateY(0);
  135 + transform: translateY(0);
  136 + }
  137 + 90% {
  138 + opacity: .5;
  139 + }
  140 + 100% {
  141 + opacity: 0;
  142 + -moz-transform: translateY(145%);
  143 + transform: translateY(145%);
  144 + }
  145 +}
  146 +@-o-keyframes ball-fall {
  147 + 0% {
  148 + opacity: 0;
  149 + -o-transform: translateY(-145%);
  150 + transform: translateY(-145%);
  151 + }
  152 + 10% {
  153 + opacity: .5;
  154 + }
  155 + 20% {
  156 + opacity: 1;
  157 + -o-transform: translateY(0);
  158 + transform: translateY(0);
  159 + }
  160 + 80% {
  161 + opacity: 1;
  162 + -o-transform: translateY(0);
  163 + transform: translateY(0);
  164 + }
  165 + 90% {
  166 + opacity: .5;
  167 + }
  168 + 100% {
  169 + opacity: 0;
  170 + -o-transform: translateY(145%);
  171 + transform: translateY(145%);
  172 + }
  173 +}
  174 +@keyframes ball-fall {
  175 + 0% {
  176 + opacity: 0;
  177 + -webkit-transform: translateY(-145%);
  178 + -moz-transform: translateY(-145%);
  179 + -o-transform: translateY(-145%);
  180 + transform: translateY(-145%);
  181 + }
  182 + 10% {
  183 + opacity: .5;
  184 + }
  185 + 20% {
  186 + opacity: 1;
  187 + -webkit-transform: translateY(0);
  188 + -moz-transform: translateY(0);
  189 + -o-transform: translateY(0);
  190 + transform: translateY(0);
  191 + }
  192 + 80% {
  193 + opacity: 1;
  194 + -webkit-transform: translateY(0);
  195 + -moz-transform: translateY(0);
  196 + -o-transform: translateY(0);
  197 + transform: translateY(0);
  198 + }
  199 + 90% {
  200 + opacity: .5;
  201 + }
  202 + 100% {
  203 + opacity: 0;
  204 + -webkit-transform: translateY(145%);
  205 + -moz-transform: translateY(145%);
  206 + -o-transform: translateY(145%);
  207 + transform: translateY(145%);
  208 + }
  209 +}
src/main/resources/static/assets/bower_components/sweetalert/dev/modules/default-params.js 0 → 100644
  1 +var defaultParams = {
  2 + title: '',
  3 + text: '',
  4 + type: null,
  5 + allowOutsideClick: false,
  6 + showConfirmButton: true,
  7 + showCancelButton: false,
  8 + closeOnConfirm: true,
  9 + closeOnCancel: true,
  10 + confirmButtonText: 'OK',
  11 + confirmButtonColor: '#8CD4F5',
  12 + cancelButtonText: 'Cancel',
  13 + imageUrl: null,
  14 + imageSize: null,
  15 + timer: null,
  16 + customClass: '',
  17 + html: false,
  18 + animation: true,
  19 + allowEscapeKey: true,
  20 + inputType: 'text',
  21 + inputPlaceholder: '',
  22 + inputValue: '',
  23 + showLoaderOnConfirm: false
  24 +};
  25 +
  26 +export default defaultParams;
src/main/resources/static/assets/bower_components/sweetalert/dev/modules/handle-click.js 0 → 100644
  1 +import { colorLuminance } from './utils';
  2 +import { getModal } from './handle-swal-dom';
  3 +import { hasClass, isDescendant } from './handle-dom';
  4 +
  5 +
  6 +/*
  7 + * User clicked on "Confirm"/"OK" or "Cancel"
  8 + */
  9 +var handleButton = function(event, params, modal) {
  10 + var e = event || window.event;
  11 + var target = e.target || e.srcElement;
  12 +
  13 + var targetedConfirm = target.className.indexOf('confirm') !== -1;
  14 + var targetedOverlay = target.className.indexOf('sweet-overlay') !== -1;
  15 + var modalIsVisible = hasClass(modal, 'visible');
  16 + var doneFunctionExists = (params.doneFunction && modal.getAttribute('data-has-done-function') === 'true');
  17 +
  18 + // Since the user can change the background-color of the confirm button programmatically,
  19 + // we must calculate what the color should be on hover/active
  20 + var normalColor, hoverColor, activeColor;
  21 + if (targetedConfirm && params.confirmButtonColor) {
  22 + normalColor = params.confirmButtonColor;
  23 + hoverColor = colorLuminance(normalColor, -0.04);
  24 + activeColor = colorLuminance(normalColor, -0.14);
  25 + }
  26 +
  27 + function shouldSetConfirmButtonColor(color) {
  28 + if (targetedConfirm && params.confirmButtonColor) {
  29 + target.style.backgroundColor = color;
  30 + }
  31 + }
  32 +
  33 + switch (e.type) {
  34 + case 'mouseover':
  35 + shouldSetConfirmButtonColor(hoverColor);
  36 + break;
  37 +
  38 + case 'mouseout':
  39 + shouldSetConfirmButtonColor(normalColor);
  40 + break;
  41 +
  42 + case 'mousedown':
  43 + shouldSetConfirmButtonColor(activeColor);
  44 + break;
  45 +
  46 + case 'mouseup':
  47 + shouldSetConfirmButtonColor(hoverColor);
  48 + break;
  49 +
  50 + case 'focus':
  51 + let $confirmButton = modal.querySelector('button.confirm');
  52 + let $cancelButton = modal.querySelector('button.cancel');
  53 +
  54 + if (targetedConfirm) {
  55 + $cancelButton.style.boxShadow = 'none';
  56 + } else {
  57 + $confirmButton.style.boxShadow = 'none';
  58 + }
  59 + break;
  60 +
  61 + case 'click':
  62 + let clickedOnModal = (modal === target);
  63 + let clickedOnModalChild = isDescendant(modal, target);
  64 +
  65 + // Ignore click outside if allowOutsideClick is false
  66 + if (!clickedOnModal && !clickedOnModalChild && modalIsVisible && !params.allowOutsideClick) {
  67 + break;
  68 + }
  69 +
  70 + if (targetedConfirm && doneFunctionExists && modalIsVisible) {
  71 + handleConfirm(modal, params);
  72 + } else if (doneFunctionExists && modalIsVisible || targetedOverlay) {
  73 + handleCancel(modal, params);
  74 + } else if (isDescendant(modal, target) && target.tagName === 'BUTTON') {
  75 + sweetAlert.close();
  76 + }
  77 + break;
  78 + }
  79 +};
  80 +
  81 +/*
  82 + * User clicked on "Confirm"/"OK"
  83 + */
  84 +var handleConfirm = function(modal, params) {
  85 + var callbackValue = true;
  86 +
  87 + if (hasClass(modal, 'show-input')) {
  88 + callbackValue = modal.querySelector('input').value;
  89 +
  90 + if (!callbackValue) {
  91 + callbackValue = '';
  92 + }
  93 + }
  94 +
  95 + params.doneFunction(callbackValue);
  96 +
  97 + if (params.closeOnConfirm) {
  98 + sweetAlert.close();
  99 + }
  100 + // Disable cancel and confirm button if the parameter is true
  101 + if (params.showLoaderOnConfirm) {
  102 + sweetAlert.disableButtons();
  103 + }
  104 +};
  105 +
  106 +/*
  107 + * User clicked on "Cancel"
  108 + */
  109 +var handleCancel = function(modal, params) {
  110 + // Check if callback function expects a parameter (to track cancel actions)
  111 + var functionAsStr = String(params.doneFunction).replace(/\s/g, '');
  112 + var functionHandlesCancel = functionAsStr.substring(0, 9) === 'function(' && functionAsStr.substring(9, 10) !== ')';
  113 +
  114 + if (functionHandlesCancel) {
  115 + params.doneFunction(false);
  116 + }
  117 +
  118 + if (params.closeOnCancel) {
  119 + sweetAlert.close();
  120 + }
  121 +};
  122 +
  123 +
  124 +export default {
  125 + handleButton,
  126 + handleConfirm,
  127 + handleCancel
  128 +};
src/main/resources/static/assets/bower_components/sweetalert/dev/modules/handle-dom.js 0 → 100644
  1 +var hasClass = function(elem, className) {
  2 + return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' ');
  3 +};
  4 +
  5 +var addClass = function(elem, className) {
  6 + if (!hasClass(elem, className)) {
  7 + elem.className += ' ' + className;
  8 + }
  9 +};
  10 +
  11 +var removeClass = function(elem, className) {
  12 + var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' ';
  13 + if (hasClass(elem, className)) {
  14 + while (newClass.indexOf(' ' + className + ' ') >= 0) {
  15 + newClass = newClass.replace(' ' + className + ' ', ' ');
  16 + }
  17 + elem.className = newClass.replace(/^\s+|\s+$/g, '');
  18 + }
  19 +};
  20 +
  21 +var escapeHtml = function(str) {
  22 + var div = document.createElement('div');
  23 + div.appendChild(document.createTextNode(str));
  24 + return div.innerHTML;
  25 +};
  26 +
  27 +var _show = function(elem) {
  28 + elem.style.opacity = '';
  29 + elem.style.display = 'block';
  30 +};
  31 +
  32 +var show = function(elems) {
  33 + if (elems && !elems.length) {
  34 + return _show(elems);
  35 + }
  36 + for (var i = 0; i < elems.length; ++i) {
  37 + _show(elems[i]);
  38 + }
  39 +};
  40 +
  41 +var _hide = function(elem) {
  42 + elem.style.opacity = '';
  43 + elem.style.display = 'none';
  44 +};
  45 +
  46 +var hide = function(elems) {
  47 + if (elems && !elems.length) {
  48 + return _hide(elems);
  49 + }
  50 + for (var i = 0; i < elems.length; ++i) {
  51 + _hide(elems[i]);
  52 + }
  53 +};
  54 +
  55 +var isDescendant = function(parent, child) {
  56 + var node = child.parentNode;
  57 + while (node !== null) {
  58 + if (node === parent) {
  59 + return true;
  60 + }
  61 + node = node.parentNode;
  62 + }
  63 + return false;
  64 +};
  65 +
  66 +var getTopMargin = function(elem) {
  67 + elem.style.left = '-9999px';
  68 + elem.style.display = 'block';
  69 +
  70 + var height = elem.clientHeight,
  71 + padding;
  72 + if (typeof getComputedStyle !== "undefined") { // IE 8
  73 + padding = parseInt(getComputedStyle(elem).getPropertyValue('padding-top'), 10);
  74 + } else {
  75 + padding = parseInt(elem.currentStyle.padding);
  76 + }
  77 +
  78 + elem.style.left = '';
  79 + elem.style.display = 'none';
  80 + return ('-' + parseInt((height + padding) / 2) + 'px');
  81 +};
  82 +
  83 +var fadeIn = function(elem, interval) {
  84 + if (+elem.style.opacity < 1) {
  85 + interval = interval || 16;
  86 + elem.style.opacity = 0;
  87 + elem.style.display = 'block';
  88 + var last = +new Date();
  89 + var tick = function() {
  90 + elem.style.opacity = +elem.style.opacity + (new Date() - last) / 100;
  91 + last = +new Date();
  92 +
  93 + if (+elem.style.opacity < 1) {
  94 + setTimeout(tick, interval);
  95 + }
  96 + };
  97 + tick();
  98 + }
  99 + elem.style.display = 'block'; //fallback IE8
  100 +};
  101 +
  102 +var fadeOut = function(elem, interval) {
  103 + interval = interval || 16;
  104 + elem.style.opacity = 1;
  105 + var last = +new Date();
  106 + var tick = function() {
  107 + elem.style.opacity = +elem.style.opacity - (new Date() - last) / 100;
  108 + last = +new Date();
  109 +
  110 + if (+elem.style.opacity > 0) {
  111 + setTimeout(tick, interval);
  112 + } else {
  113 + elem.style.display = 'none';
  114 + }
  115 + };
  116 + tick();
  117 +};
  118 +
  119 +var fireClick = function(node) {
  120 + // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/
  121 + // Then fixed for today's Chrome browser.
  122 + if (typeof MouseEvent === 'function') {
  123 + // Up-to-date approach
  124 + var mevt = new MouseEvent('click', {
  125 + view: window,
  126 + bubbles: false,
  127 + cancelable: true
  128 + });
  129 + node.dispatchEvent(mevt);
  130 + } else if ( document.createEvent ) {
  131 + // Fallback
  132 + var evt = document.createEvent('MouseEvents');
  133 + evt.initEvent('click', false, false);
  134 + node.dispatchEvent(evt);
  135 + } else if (document.createEventObject) {
  136 + node.fireEvent('onclick') ;
  137 + } else if (typeof node.onclick === 'function' ) {
  138 + node.onclick();
  139 + }
  140 +};
  141 +
  142 +var stopEventPropagation = function(e) {
  143 + // In particular, make sure the space bar doesn't scroll the main window.
  144 + if (typeof e.stopPropagation === 'function') {
  145 + e.stopPropagation();
  146 + e.preventDefault();
  147 + } else if (window.event && window.event.hasOwnProperty('cancelBubble')) {
  148 + window.event.cancelBubble = true;
  149 + }
  150 +};
  151 +
  152 +export {
  153 + hasClass, addClass, removeClass,
  154 + escapeHtml,
  155 + _show, show, _hide, hide,
  156 + isDescendant,
  157 + getTopMargin,
  158 + fadeIn, fadeOut,
  159 + fireClick,
  160 + stopEventPropagation
  161 +};
src/main/resources/static/assets/bower_components/sweetalert/dev/modules/handle-key.js 0 → 100644
  1 +import { stopEventPropagation, fireClick } from './handle-dom';
  2 +import { setFocusStyle } from './handle-swal-dom';
  3 +
  4 +
  5 +var handleKeyDown = function(event, params, modal) {
  6 + var e = event || window.event;
  7 + var keyCode = e.keyCode || e.which;
  8 +
  9 + var $okButton = modal.querySelector('button.confirm');
  10 + var $cancelButton = modal.querySelector('button.cancel');
  11 + var $modalButtons = modal.querySelectorAll('button[tabindex]');
  12 +
  13 +
  14 + if ([9, 13, 32, 27].indexOf(keyCode) === -1) {
  15 + // Don't do work on keys we don't care about.
  16 + return;
  17 + }
  18 +
  19 + var $targetElement = e.target || e.srcElement;
  20 +
  21 + var btnIndex = -1; // Find the button - note, this is a nodelist, not an array.
  22 + for (var i = 0; i < $modalButtons.length; i++) {
  23 + if ($targetElement === $modalButtons[i]) {
  24 + btnIndex = i;
  25 + break;
  26 + }
  27 + }
  28 +
  29 + if (keyCode === 9) {
  30 + // TAB
  31 + if (btnIndex === -1) {
  32 + // No button focused. Jump to the confirm button.
  33 + $targetElement = $okButton;
  34 + } else {
  35 + // Cycle to the next button
  36 + if (btnIndex === $modalButtons.length - 1) {
  37 + $targetElement = $modalButtons[0];
  38 + } else {
  39 + $targetElement = $modalButtons[btnIndex + 1];
  40 + }
  41 + }
  42 +
  43 + stopEventPropagation(e);
  44 + $targetElement.focus();
  45 +
  46 + if (params.confirmButtonColor) {
  47 + setFocusStyle($targetElement, params.confirmButtonColor);
  48 + }
  49 + } else {
  50 + if (keyCode === 13) {
  51 + if ($targetElement.tagName === 'INPUT') {
  52 + $targetElement = $okButton;
  53 + $okButton.focus();
  54 + }
  55 +
  56 + if (btnIndex === -1) {
  57 + // ENTER/SPACE clicked outside of a button.
  58 + $targetElement = $okButton;
  59 + } else {
  60 + // Do nothing - let the browser handle it.
  61 + $targetElement = undefined;
  62 + }
  63 + } else if (keyCode === 27 && params.allowEscapeKey === true) {
  64 + $targetElement = $cancelButton;
  65 + fireClick($targetElement, e);
  66 + } else {
  67 + // Fallback - let the browser handle it.
  68 + $targetElement = undefined;
  69 + }
  70 + }
  71 +};
  72 +
  73 +export default handleKeyDown;
src/main/resources/static/assets/bower_components/sweetalert/dev/modules/handle-swal-dom.js 0 → 100644
  1 +import { hexToRgb } from './utils';
  2 +import { removeClass, getTopMargin, fadeIn, show, addClass } from './handle-dom';
  3 +import defaultParams from './default-params';
  4 +
  5 +var modalClass = '.sweet-alert';
  6 +var overlayClass = '.sweet-overlay';
  7 +
  8 +/*
  9 + * Add modal + overlay to DOM
  10 + */
  11 +import injectedHTML from './injected-html';
  12 +
  13 +var sweetAlertInitialize = function() {
  14 + var sweetWrap = document.createElement('div');
  15 + sweetWrap.innerHTML = injectedHTML;
  16 +
  17 + // Append elements to body
  18 + while (sweetWrap.firstChild) {
  19 + document.body.appendChild(sweetWrap.firstChild);
  20 + }
  21 +};
  22 +
  23 +/*
  24 + * Get DOM element of modal
  25 + */
  26 +var getModal = function() {
  27 + var $modal = document.querySelector(modalClass);
  28 +
  29 + if (!$modal) {
  30 + sweetAlertInitialize();
  31 + $modal = getModal();
  32 + }
  33 +
  34 + return $modal;
  35 +};
  36 +
  37 +/*
  38 + * Get DOM element of input (in modal)
  39 + */
  40 +var getInput = function() {
  41 + var $modal = getModal();
  42 + if ($modal) {
  43 + return $modal.querySelector('input');
  44 + }
  45 +};
  46 +
  47 +/*
  48 + * Get DOM element of overlay
  49 + */
  50 +var getOverlay = function() {
  51 + return document.querySelector(overlayClass);
  52 +};
  53 +
  54 +/*
  55 + * Add box-shadow style to button (depending on its chosen bg-color)
  56 + */
  57 +var setFocusStyle = function($button, bgColor) {
  58 + var rgbColor = hexToRgb(bgColor);
  59 + $button.style.boxShadow = '0 0 2px rgba(' + rgbColor + ', 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)';
  60 +};
  61 +
  62 +/*
  63 + * Animation when opening modal
  64 + */
  65 +var openModal = function(callback) {
  66 + var $modal = getModal();
  67 + fadeIn(getOverlay(), 10);
  68 + show($modal);
  69 + addClass($modal, 'showSweetAlert');
  70 + removeClass($modal, 'hideSweetAlert');
  71 +
  72 + window.previousActiveElement = document.activeElement;
  73 + var $okButton = $modal.querySelector('button.confirm');
  74 + $okButton.focus();
  75 +
  76 + setTimeout(function () {
  77 + addClass($modal, 'visible');
  78 + }, 500);
  79 +
  80 + var timer = $modal.getAttribute('data-timer');
  81 +
  82 + if (timer !== 'null' && timer !== '') {
  83 + var timerCallback = callback;
  84 + $modal.timeout = setTimeout(function() {
  85 + var doneFunctionExists = ((timerCallback || null) && $modal.getAttribute('data-has-done-function') === 'true');
  86 + if (doneFunctionExists) {
  87 + timerCallback(null);
  88 + }
  89 + else {
  90 + sweetAlert.close();
  91 + }
  92 + }, timer);
  93 + }
  94 +};
  95 +
  96 +/*
  97 + * Reset the styling of the input
  98 + * (for example if errors have been shown)
  99 + */
  100 +var resetInput = function() {
  101 + var $modal = getModal();
  102 + var $input = getInput();
  103 +
  104 + removeClass($modal, 'show-input');
  105 + $input.value = defaultParams.inputValue;
  106 + $input.setAttribute('type', defaultParams.inputType);
  107 + $input.setAttribute('placeholder', defaultParams.inputPlaceholder);
  108 +
  109 + resetInputError();
  110 +};
  111 +
  112 +
  113 +var resetInputError = function(event) {
  114 + // If press enter => ignore
  115 + if (event && event.keyCode === 13) {
  116 + return false;
  117 + }
  118 +
  119 + var $modal = getModal();
  120 +
  121 + var $errorIcon = $modal.querySelector('.sa-input-error');
  122 + removeClass($errorIcon, 'show');
  123 +
  124 + var $errorContainer = $modal.querySelector('.sa-error-container');
  125 + removeClass($errorContainer, 'show');
  126 +};
  127 +
  128 +
  129 +/*
  130 + * Set "margin-top"-property on modal based on its computed height
  131 + */
  132 +var fixVerticalPosition = function() {
  133 + var $modal = getModal();
  134 + $modal.style.marginTop = getTopMargin(getModal());
  135 +};
  136 +
  137 +
  138 +export {
  139 + sweetAlertInitialize,
  140 + getModal,
  141 + getOverlay,
  142 + getInput,
  143 + setFocusStyle,
  144 + openModal,
  145 + resetInput,
  146 + resetInputError,
  147 + fixVerticalPosition
  148 +};
src/main/resources/static/assets/bower_components/sweetalert/dev/modules/injected-html.js 0 → 100644
  1 +var injectedHTML =
  2 +
  3 + // Dark overlay
  4 + `<div class="sweet-overlay" tabIndex="-1"></div>` +
  5 +
  6 + // Modal
  7 + `<div class="sweet-alert">` +
  8 +
  9 + // Error icon
  10 + `<div class="sa-icon sa-error">
  11 + <span class="sa-x-mark">
  12 + <span class="sa-line sa-left"></span>
  13 + <span class="sa-line sa-right"></span>
  14 + </span>
  15 + </div>` +
  16 +
  17 + // Warning icon
  18 + `<div class="sa-icon sa-warning">
  19 + <span class="sa-body"></span>
  20 + <span class="sa-dot"></span>
  21 + </div>` +
  22 +
  23 + // Info icon
  24 + `<div class="sa-icon sa-info"></div>` +
  25 +
  26 + // Success icon
  27 + `<div class="sa-icon sa-success">
  28 + <span class="sa-line sa-tip"></span>
  29 + <span class="sa-line sa-long"></span>
  30 +
  31 + <div class="sa-placeholder"></div>
  32 + <div class="sa-fix"></div>
  33 + </div>` +
  34 +
  35 + `<div class="sa-icon sa-custom"></div>` +
  36 +
  37 + // Title, text and input
  38 + `<h2>Title</h2>
  39 + <p>Text</p>
  40 + <fieldset>
  41 + <input type="text" tabIndex="3" />
  42 + <div class="sa-input-error"></div>
  43 + </fieldset>` +
  44 +
  45 + // Input errors
  46 + `<div class="sa-error-container">
  47 + <div class="icon">!</div>
  48 + <p>Not valid!</p>
  49 + </div>` +
  50 +
  51 + // Cancel and confirm buttons
  52 + `<div class="sa-button-container">
  53 + <button class="cancel" tabIndex="2">Cancel</button>
  54 + <div class="sa-confirm-button-container">
  55 + <button class="confirm" tabIndex="1">OK</button>` +
  56 +
  57 + // Loading animation
  58 + `<div class="la-ball-fall">
  59 + <div></div>
  60 + <div></div>
  61 + <div></div>
  62 + </div>
  63 + </div>
  64 + </div>` +
  65 +
  66 + // End of modal
  67 + `</div>`;
  68 +
  69 +export default injectedHTML;
src/main/resources/static/assets/bower_components/sweetalert/dev/modules/set-params.js 0 → 100644
  1 +var alertTypes = ['error', 'warning', 'info', 'success', 'input', 'prompt'];
  2 +
  3 +import {
  4 + isIE8
  5 +} from './utils';
  6 +
  7 +import {
  8 + getModal,
  9 + getInput,
  10 + setFocusStyle
  11 +} from './handle-swal-dom';
  12 +
  13 +import {
  14 + hasClass, addClass, removeClass,
  15 + escapeHtml,
  16 + _show, show, _hide, hide
  17 +} from './handle-dom';
  18 +
  19 +
  20 +/*
  21 + * Set type, text and actions on modal
  22 + */
  23 +var setParameters = function(params) {
  24 + var modal = getModal();
  25 +
  26 + var $title = modal.querySelector('h2');
  27 + var $text = modal.querySelector('p');
  28 + var $cancelBtn = modal.querySelector('button.cancel');
  29 + var $confirmBtn = modal.querySelector('button.confirm');
  30 +
  31 + /*
  32 + * Title
  33 + */
  34 + $title.innerHTML = params.html ? params.title : escapeHtml(params.title).split('\n').join('<br>');
  35 +
  36 + /*
  37 + * Text
  38 + */
  39 + $text.innerHTML = params.html ? params.text : escapeHtml(params.text || '').split('\n').join('<br>');
  40 + if (params.text) show($text);
  41 +
  42 + /*
  43 + * Custom class
  44 + */
  45 + if (params.customClass) {
  46 + addClass(modal, params.customClass);
  47 + modal.setAttribute('data-custom-class', params.customClass);
  48 + } else {
  49 + // Find previously set classes and remove them
  50 + let customClass = modal.getAttribute('data-custom-class');
  51 + removeClass(modal, customClass);
  52 + modal.setAttribute('data-custom-class', '');
  53 + }
  54 +
  55 + /*
  56 + * Icon
  57 + */
  58 + hide(modal.querySelectorAll('.sa-icon'));
  59 +
  60 + if (params.type && !isIE8()) {
  61 +
  62 + let validType = false;
  63 +
  64 + for (let i = 0; i < alertTypes.length; i++) {
  65 + if (params.type === alertTypes[i]) {
  66 + validType = true;
  67 + break;
  68 + }
  69 + }
  70 +
  71 + if (!validType) {
  72 + logStr('Unknown alert type: ' + params.type);
  73 + return false;
  74 + }
  75 +
  76 + let typesWithIcons = ['success', 'error', 'warning', 'info'];
  77 + let $icon;
  78 +
  79 + if (typesWithIcons.indexOf(params.type) !== -1) {
  80 + $icon = modal.querySelector('.sa-icon.' + 'sa-' + params.type);
  81 + show($icon);
  82 + }
  83 +
  84 + let $input = getInput();
  85 +
  86 + // Animate icon
  87 + switch (params.type) {
  88 +
  89 + case 'success':
  90 + addClass($icon, 'animate');
  91 + addClass($icon.querySelector('.sa-tip'), 'animateSuccessTip');
  92 + addClass($icon.querySelector('.sa-long'), 'animateSuccessLong');
  93 + break;
  94 +
  95 + case 'error':
  96 + addClass($icon, 'animateErrorIcon');
  97 + addClass($icon.querySelector('.sa-x-mark'), 'animateXMark');
  98 + break;
  99 +
  100 + case 'warning':
  101 + addClass($icon, 'pulseWarning');
  102 + addClass($icon.querySelector('.sa-body'), 'pulseWarningIns');
  103 + addClass($icon.querySelector('.sa-dot'), 'pulseWarningIns');
  104 + break;
  105 +
  106 + case 'input':
  107 + case 'prompt':
  108 + $input.setAttribute('type', params.inputType);
  109 + $input.value = params.inputValue;
  110 + $input.setAttribute('placeholder', params.inputPlaceholder);
  111 + addClass(modal, 'show-input');
  112 + setTimeout(function () {
  113 + $input.focus();
  114 + $input.addEventListener('keyup', swal.resetInputError);
  115 + }, 400);
  116 + break;
  117 + }
  118 + }
  119 +
  120 + /*
  121 + * Custom image
  122 + */
  123 + if (params.imageUrl) {
  124 + let $customIcon = modal.querySelector('.sa-icon.sa-custom');
  125 +
  126 + $customIcon.style.backgroundImage = 'url(' + params.imageUrl + ')';
  127 + show($customIcon);
  128 +
  129 + let _imgWidth = 80;
  130 + let _imgHeight = 80;
  131 +
  132 + if (params.imageSize) {
  133 + let dimensions = params.imageSize.toString().split('x');
  134 + let imgWidth = dimensions[0];
  135 + let imgHeight = dimensions[1];
  136 +
  137 + if (!imgWidth || !imgHeight) {
  138 + logStr('Parameter imageSize expects value with format WIDTHxHEIGHT, got ' + params.imageSize);
  139 + } else {
  140 + _imgWidth = imgWidth;
  141 + _imgHeight = imgHeight;
  142 + }
  143 + }
  144 +
  145 + $customIcon.setAttribute('style', $customIcon.getAttribute('style') + 'width:' + _imgWidth + 'px; height:' + _imgHeight + 'px');
  146 + }
  147 +
  148 + /*
  149 + * Show cancel button?
  150 + */
  151 + modal.setAttribute('data-has-cancel-button', params.showCancelButton);
  152 + if (params.showCancelButton) {
  153 + $cancelBtn.style.display = 'inline-block';
  154 + } else {
  155 + hide($cancelBtn);
  156 + }
  157 +
  158 + /*
  159 + * Show confirm button?
  160 + */
  161 + modal.setAttribute('data-has-confirm-button', params.showConfirmButton);
  162 + if (params.showConfirmButton) {
  163 + $confirmBtn.style.display = 'inline-block';
  164 + } else {
  165 + hide($confirmBtn);
  166 + }
  167 +
  168 + /*
  169 + * Custom text on cancel/confirm buttons
  170 + */
  171 + if (params.cancelButtonText) {
  172 + $cancelBtn.innerHTML = escapeHtml(params.cancelButtonText);
  173 + }
  174 + if (params.confirmButtonText) {
  175 + $confirmBtn.innerHTML = escapeHtml(params.confirmButtonText);
  176 + }
  177 +
  178 + /*
  179 + * Custom color on confirm button
  180 + */
  181 + if (params.confirmButtonColor) {
  182 + // Set confirm button to selected background color
  183 + $confirmBtn.style.backgroundColor = params.confirmButtonColor;
  184 +
  185 + // Set the confirm button color to the loading ring
  186 + $confirmBtn.style.borderLeftColor = params.confirmLoadingButtonColor;
  187 + $confirmBtn.style.borderRightColor = params.confirmLoadingButtonColor;
  188 +
  189 + // Set box-shadow to default focused button
  190 + setFocusStyle($confirmBtn, params.confirmButtonColor);
  191 + }
  192 +
  193 + /*
  194 + * Allow outside click
  195 + */
  196 + modal.setAttribute('data-allow-outside-click', params.allowOutsideClick);
  197 +
  198 + /*
  199 + * Callback function
  200 + */
  201 + var hasDoneFunction = params.doneFunction ? true : false;
  202 + modal.setAttribute('data-has-done-function', hasDoneFunction);
  203 +
  204 + /*
  205 + * Animation
  206 + */
  207 + if (!params.animation) {
  208 + modal.setAttribute('data-animation', 'none');
  209 + } else if (typeof params.animation === 'string') {
  210 + modal.setAttribute('data-animation', params.animation); // Custom animation
  211 + } else {
  212 + modal.setAttribute('data-animation', 'pop');
  213 + }
  214 +
  215 + /*
  216 + * Timer
  217 + */
  218 + modal.setAttribute('data-timer', params.timer);
  219 +};
  220 +
  221 +export default setParameters;
src/main/resources/static/assets/bower_components/sweetalert/dev/modules/utils.js 0 → 100644
  1 +/*
  2 + * Allow user to pass their own params
  3 + */
  4 +var extend = function(a, b) {
  5 + for (var key in b) {
  6 + if (b.hasOwnProperty(key)) {
  7 + a[key] = b[key];
  8 + }
  9 + }
  10 + return a;
  11 +};
  12 +
  13 +/*
  14 + * Convert HEX codes to RGB values (#000000 -> rgb(0,0,0))
  15 + */
  16 +var hexToRgb = function(hex) {
  17 + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  18 + return result ? parseInt(result[1], 16) + ', ' + parseInt(result[2], 16) + ', ' + parseInt(result[3], 16) : null;
  19 +};
  20 +
  21 +/*
  22 + * Check if the user is using Internet Explorer 8 (for fallbacks)
  23 + */
  24 +var isIE8 = function() {
  25 + return (window.attachEvent && !window.addEventListener);
  26 +};
  27 +
  28 +/*
  29 + * IE compatible logging for developers
  30 + */
  31 +var logStr = function(string) {
  32 + if (window.console) {
  33 + // IE...
  34 + window.console.log('SweetAlert: ' + string);
  35 + }
  36 +};
  37 +
  38 +/*
  39 + * Set hover, active and focus-states for buttons
  40 + * (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color)
  41 + */
  42 +var colorLuminance = function(hex, lum) {
  43 + // Validate hex string
  44 + hex = String(hex).replace(/[^0-9a-f]/gi, '');
  45 + if (hex.length < 6) {
  46 + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
  47 + }
  48 + lum = lum || 0;
  49 +
  50 + // Convert to decimal and change luminosity
  51 + var rgb = '#';
  52 + var c;
  53 + var i;
  54 +
  55 + for (i = 0; i < 3; i++) {
  56 + c = parseInt(hex.substr(i * 2, 2), 16);
  57 + c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);
  58 + rgb += ('00' + c).substr(c.length);
  59 + }
  60 +
  61 + return rgb;
  62 +};
  63 +
  64 +
  65 +export {
  66 + extend,
  67 + hexToRgb,
  68 + isIE8,
  69 + logStr,
  70 + colorLuminance
  71 +};