Commit 2365caa3dcf2085325146f2d5c9bd5ce41a4cc49

Authored by 潘钊
1 parent df6bf5a4

update

src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
... ... @@ -74,8 +74,8 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
74 74 @RequestMapping(value = "/destroy", method = RequestMethod.POST)
75 75 public Map<String, Object> destroy(@RequestParam String idsStr
76 76 /*, @RequestParam(defaultValue = "-1") int spaceAdjust*/,
77   - @RequestParam String remarks/*, @RequestParam String reason, @RequestParam(defaultValue = "0") int spaceNum*/) {
78   - return scheduleRealInfoService.destroy(idsStr/*, spaceAdjust*/, remarks/*, reason, spaceNum*/);
  77 + @RequestParam String remarks, @RequestParam String adjustExps/*, @RequestParam(defaultValue = "0") int spaceNum*/) {
  78 + return scheduleRealInfoService.destroy(idsStr/*, spaceAdjust*/, remarks, adjustExps/*, spaceNum*/);
79 79 }
80 80  
81 81 /**
... ...
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
... ... @@ -128,6 +128,8 @@ public class ScheduleRealInfo {
128 128  
129 129 /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
130 130 private int status;
  131 +
  132 + private String adjustExps;
131 133  
132 134 /** 是否是临加班次 */
133 135 private boolean sflj;
... ... @@ -817,4 +819,12 @@ public class ScheduleRealInfo {
817 819 public void setLate(boolean late) {
818 820 this.late = late;
819 821 }
  822 +
  823 + public String getAdjustExps() {
  824 + return adjustExps;
  825 + }
  826 +
  827 + public void setAdjustExps(String adjustExps) {
  828 + this.adjustExps = adjustExps;
  829 + }
820 830 }
... ...
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
... ... @@ -17,7 +17,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
17 17  
18 18 Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj/*,String nbbm,String jsy,String spy*/);
19 19  
20   - Map<String, Object> destroy(String idsStr/*, int spaceAdjust*/, String remarks/*, String reason, int spaceNum*/);
  20 + Map<String, Object> destroy(String idsStr/*, int spaceAdjust*/, String remarks, String reason/*, int spaceNum*/);
21 21  
22 22 List<Map<String, String>> findDriverByLine(String lineCode);
23 23  
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -154,7 +154,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
154 154 }
155 155  
156 156 @Override
157   - public Map<String, Object> destroy(String idsStr, /*int spaceAdjust, */String remarks/*, String reason, int spaceNum*/) {
  157 + public Map<String, Object> destroy(String idsStr, /*int spaceAdjust, */String remarks, String reason/*, int spaceNum*/) {
158 158  
159 159 Map<String, Object> map = new HashMap<>();
160 160 List<ScheduleRealInfo> rsList = new ArrayList<>();
... ... @@ -170,7 +170,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
170 170 map.put("msg", "不必要的重复烂班!");
171 171 return map;
172 172 }
173   -
  173 +
  174 + schedule.setAdjustExps(reason);
174 175 schedule.destroy();
175 176 schedule.addRemarks(remarks);
176 177  
... ...
src/main/resources/static/pages/control/lineallot/allot.html
... ... @@ -405,7 +405,7 @@ $(function(){
405 405 ,item = lsData[i];
406 406  
407 407 //$.get('/realMap/findRouteByLine', {lineCode: item.lineCode}, function(rs){
408   - $.get('/realSchedule/findRouteByLine', {lineCode: item.lineCode}, function(rs){
  408 + $.get('/realSchedule/findRouteByLine', {lineCode: item.lineCode}, function(rs){
409 409 if(rs && rs.lineId){
410 410 cacheData[item.lineCode] = rs;
411 411 i ++;
... ...
src/main/resources/static/real_control_v2/fragments/geo/calc_station_space.html
... ... @@ -4,7 +4,7 @@
4 4 <div style="text-align: center;padding-top: 30px;" class="calcBeforePanel">
5 5 <p style="margin: 9px 0 9px 0;">当前站点间里程数据取自 <a target="_blank" id="stationRouteLink">基础信息->线路信息->站点详细</a>
6 6 你可以手动编辑。</p>
7   - <p style="margin: 9px 0 9px 0;">此外,我们提供另一种选择,根据路段和站点空间坐标计算站间距。计算后的数据将另存一份副本,不影响原数据
  7 + <p style="margin: 9px 0 9px 0;">此外,我们提供另一种选择,根据路段和站点空间坐标计算站间距。计算后的数据将存储在本地
8 8 </p>
9 9 <p style="margin: 0px 0 9px 0;">
10 10 <span style="color: grey;font-size: 12px;">该操作会借用本地计算能力进行,如果你同意,请点击下方按钮!</span>
... ... @@ -64,25 +64,23 @@
64 64 stations[1].sort(stationArrSort);
65 65  
66 66 setCalcText('拼接路段,计算重叠区域');
67   - console.log('路段', sections);
68   - console.log('站点', stations);
69   -
70   - //完整的线路路段(去掉重叠区域)
71 67 var fullSections = [
72 68 connectSections(sections[0]),
73 69 connectSections(sections[1])
74 70 ];
75 71  
76   - console.log('fullSections', fullSections);
77   - setCalcText('计算上行站距');
78   - calcStationSpace(stations[0], fullSections[0]);
79   - /*$.each(stations[0], function (i) {
80   - if(i==0)
81   - return true;
  72 + setCalcText('计算上行数据');
  73 + var upCalcRs = calcStationSpace(stations[0], fullSections[0]);
  74 +
  75 + setCalcText('计算下行数据');
  76 + var downCalcRs = calcStationSpace(stations[1], fullSections[1]);
  77 +
  78 + var locData={
  79 + stations: {up: upCalcRs,down: downCalcRs},
  80 + sections: {up: fullSections[0], down: fullSections[1]}
  81 + };
82 82  
83   - calcStationSpace(fullSections[0], this);
84   - });*/
85   - //fullSections[0]
  83 + window.localStorage.setItem('control_route_distance_'+sch.xlBm, JSON.stringify(locData));
86 84 }
87 85  
88 86 function sectionArrSort(s1, s2) {
... ... @@ -110,20 +108,20 @@
110 108 }
111 109 return coords;
112 110 }
113   -
  111 +
114 112 function connectCoords(all, subArr) {
115 113  
116   - var point,ts,len=all.length, inLine, sIndex=0;
117   - if(len > 0){
  114 + var point, ts, len = all.length, inLine, sIndex = 0;
  115 + if (len > 0) {
118 116 $.each(subArr, function (i, p) {
119 117 ts = p.split(' ');
120   - point={latitude: parseFloat(ts[1]), longitude: parseFloat(ts[0])};
  118 + point = {latitude: parseFloat(ts[1]), longitude: parseFloat(ts[0])};
121 119 //找到起始点
122   - sIndex=0;
123   - for(var j = 1; j < len; j++){
124   - inLine=geolib.isPointInLine(point, all[j - 1], all[j]);
  120 + sIndex = 0;
  121 + for (var j = 1; j < len; j++) {
  122 + inLine = geolib.isPointInLine(point, all[j - 1], all[j]);
125 123  
126   - if(inLine)
  124 + if (inLine)
127 125 break;
128 126 else
129 127 sIndex = i;
... ... @@ -132,7 +130,7 @@
132 130 }
133 131  
134 132 //拼接
135   - for(var i=sIndex; i<subArr.length; i++){
  133 + for (var i = sIndex; i < subArr.length; i++) {
136 134 ts = subArr[i].split(' ');
137 135 all.push({
138 136 latitude: parseFloat(ts[1]), longitude: parseFloat(ts[0])
... ... @@ -143,55 +141,82 @@
143 141 //计算站点间距
144 142 function calcStationSpace(stations, coords) {
145 143  
  144 + var nearArray = [];
  145 + for (var i = 1; i < stations.length; i++) {
  146 +
  147 + //点到线的最短距离 并计算交点坐标
  148 + var rs = calcPointToLineNearPoint({
  149 + latitude: stations[i].G_LATY,
  150 + longitude: stations[i].G_LONX
  151 + }, coords);
  152 + rs.station = stations[i];
146 153  
147   - var point,pSection;
148   - for(var i=1; i<stations.length; i++){
  154 + //将交点插入线路中
  155 + coords.splice(rs.index, 0, rs.intersection);
149 156  
150   - point = {latitude: stations[i].G_LATY, longitude: stations[i].G_LONX};
151   - //最近的路段点
152   - //near=calcPointToArrayNear(point, coords);
153   - //计算前后点位,得到站点在路段中的位置
154   - //console.log('站点' + i + '最近索引', near, stations[i]);
155   - //pSection = calcPointInSection(point, coords);
156   - //console.log('站点' + i + '包含在路段'+pSection, stations[i]);
  157 + nearArray.push(rs);
  158 + //console.log('站点' + i + '计算结果', rs.intersection, rs);
157 159 }
158   - }
159 160  
160   -/* //点在路段上, 返回路段
161   - function calcPointInSection(point, array) {
162   - /!*$.each(array, function (i) {
163   -
164   - });*!/
165   - var index=-1;
166   - for(var i=1; i<array.length; i++){
167   - console.log(point, array[i - 1], array[i], geolib.getDistanceSimple(point, array[i - 1]));
168   - if(geolib.isPointInLine(point, array[i-1], array[i])){
169   - index=i;
170   - break;
  161 + //根据交点截断line,并计算距离
  162 + var s = 0, e, distance;
  163 + $.each(nearArray, function (i) {
  164 + e = this.index;
  165 + distance = 0;
  166 + for (; s < e; s++) {
  167 + distance += geolib.getDistance(coords[s], coords[s + 1]);
171 168 }
172   - }
173   - return index;
174   - }*/
175   -
176   - //计算点 与 点数组中最近的索引
177   - /*function calcPointToArrayNear(point, array) {
178   - //var rs, distance, temp;
179   - var distances=[];
180   - $.each(array, function (i) {
181   - distances.push({
182   - index: i,
183   - d: geolib.getDistanceSimple(this, point)
184   - });
  169 +
  170 + this.toDistance = distance;
  171 + s = e;
185 172 });
  173 + return nearArray;
  174 + }
  175 +
  176 + function calcPointToLineNearPoint(point, coords) {
  177 + var minRs, rs;
  178 + for (var i = 1; i < coords.length; i++) {
186 179  
187   - var rs=distances[0];
188   - for(var i=1;i<distances.length;i++){
189   - if(rs.d > distances[i].d)
190   - rs=distances[i];
  180 + var start = coords[i - 1], end = coords[i];
  181 + var d1 = geolib.getDistance(start, point, 1, 3);
  182 + var d2 = geolib.getDistance(point, end, 1, 3);
  183 + var d3 = geolib.getDistance(start, end, 1, 3);
  184 +
  185 + var alpha = Math.acos((d1 * d1 + d3 * d3 - d2 * d2) / (2 * d1 * d3));
  186 + var beta = Math.acos((d2 * d2 + d3 * d3 - d1 * d1) / (2 * d2 * d3));
  187 +
  188 + if (d3 < 0.5 || isNaN(alpha) || isNaN(beta))
  189 + continue;
  190 +
  191 + rs = {index: i};
  192 + if (alpha > Math.PI / 2) {
  193 + rs.distance = d1;
  194 + rs.intersection = start;
  195 + }
  196 + else if (beta > Math.PI / 2) {
  197 + rs.distance = d2;
  198 + rs.intersection = end;
  199 + }
  200 + else {
  201 + rs.distance = Math.sin(alpha) * d1;
  202 + rs.intersection = perpendularPoint(start, end, point);
  203 + }
  204 +
  205 + if (!minRs || minRs.distance > rs.distance)
  206 + minRs = rs
191 207 }
192 208  
193   - return rs;
194   - }*/
  209 + return minRs;
  210 + }
  211 +
  212 + //获取点 到 线的垂直交点
  213 + function perpendularPoint(lp1, lp2, p) {
  214 + var a = lp1.latitude - lp2.latitude, b = lp2.longitude - lp1.longitude, c = lp1.longitude * lp2.latitude - lp2.longitude * lp1.latitude;
  215 + var lon = (Math.pow(b, 2) * p.longitude - a * b * p.latitude - a * c) / (Math.pow(a, 2) + Math.pow(b, 2));
  216 + var lat = (Math.pow(a, 2) * p.latitude - a * b * p.longitude - b * c) / (Math.pow(a, 2) + Math.pow(b, 2));
  217 + return {longitude: lon, latitude: lat};
  218 + }
  219 +
195 220 })();
196 221 </script>
197 222 </div>
198 223 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/sch_table.html
... ... @@ -121,7 +121,7 @@
121 121 tl-zzzx
122 122 {{else if status == 0 && late}}
123 123 tl-wd
124   - {{/if}}">
  124 + {{/if}} fcsjActualCell">
125 125 {{fcsjActual}}<span class="fcsj-diff">{{fcsj_diff}}</span>
126 126 </dd>
127 127 </script>
... ... @@ -141,8 +141,8 @@
141 141 <li><span>实发:</span>{{fcsjActual}}</li>
142 142 <li><span>计达:</span>{{zdsj}}</li>
143 143 <li><span>实达:</span>{{zdsjActual}}</li>
144   - <li><span>驾驶员:</span>{{jName}}</li>
145   - <li><span>售票员:</span>{{sName}}</li>
  144 + <li><span>驾驶员:</span>{{jGh}}/{{jName}}</li>
  145 + <li><span>售票员:</span>{{sGh}}/{{sName}}</li>
146 146 <li><span>终点站:</span>{{zdzName}}</li>
147 147 </ul>
148 148 </script>
... ...
src/main/resources/static/real_control_v2/js/data/data_gps.js
... ... @@ -15,11 +15,23 @@ var gb_data_gps = (function() {
15 15 };
16 16  
17 17 var refresh = function(cb) {
18   - $.get('/gps/real/line', {
  18 + /*$.get('/gps/real/line', {
19 19 lineCodes: gb_data_basic.line_idx
20 20 }, function(rs) {
21 21 refreshData(rs);
22 22 cb();
  23 + });*/
  24 + $.ajax({
  25 + url: '/gps/real/line',
  26 + data:{lineCodes: gb_data_basic.line_idx},
  27 + success: function (rs) {
  28 + refreshData(rs);
  29 + cb();
  30 + },
  31 + error: function (xr, t) {
  32 + notify_err('刷新GPS失败,稍后重试' + t);
  33 + cb();
  34 + }
23 35 });
24 36 };
25 37  
... ...
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
... ... @@ -68,11 +68,42 @@ var gb_schedule_table = (function() {
68 68 fcsjActualCellQtip();
69 69 cb && cb();
70 70 });
71   - }
  71 + };
72 72  
73 73 function fcsjActualCellQtip(){
74 74 //单击实发单元格显示详细信息
75   - $('dd.fcsjActualCell').qtip({
  75 + $(document).on('click', 'dd.fcsjActualCell', function () {
  76 + var that=this;
  77 + $(that).qtip({
  78 + show: true,
  79 + content: {
  80 + text: function(e) {
  81 + var lineCode=$(that).parents('li.line_schedule').data('id')
  82 + ,id=$(that).parents('dl').data('id')
  83 + ,sch=line2Schedule[lineCode][id];
  84 + return temps['sfsj_sch-detail-temp'](sch);
  85 + }
  86 + }
  87 + ,style: {
  88 + classes: 'qtip-dark qtip-rounded qtip-shadow'
  89 + },
  90 + hide: {
  91 + fixed: true,
  92 + delay: 300
  93 + },
  94 + position: {
  95 + target: that,
  96 + my: 'center left',
  97 + at: 'center right'
  98 + },
  99 + events: {
  100 + hidden: function (event, api) {
  101 + $(this).qtip('destroy', true);
  102 + }
  103 + }
  104 + });
  105 + });
  106 +/* $('dd.fcsjActualCell').qtip({
76 107 show: 'click',
77 108 content: {
78 109 text: function(e) {
... ... @@ -92,8 +123,13 @@ var gb_schedule_table = (function() {
92 123 position: {
93 124 my: 'center left',
94 125 at: 'center right'
  126 + },
  127 + events: {
  128 + hidden: function (event, api) {
  129 + $(this).qtip('destroy', true);
  130 + }
95 131 }
96   - });
  132 + });*/
97 133 }
98 134  
99 135 //重置序号
... ...
src/main/resources/static/real_control_v2/js/main.js
... ... @@ -59,6 +59,8 @@ var gb_main_ep = new EventProxy(),
59 59  
60 60 //嵌入地图页面
61 61 $('li.map-panel','#main-tab-content').load('/real_control_v2/mapmonitor/real.html');
  62 +
  63 + showUpdateDescription();
62 64 });
63 65  
64 66 function g_emit(id) {
... ... @@ -189,3 +191,27 @@ var open_modal = function(pageUrl, data, opt) {
189 191 $(id).trigger('init', data);
190 192 });
191 193 };
  194 +
  195 +
  196 +function showUpdateDescription() {
  197 + //更新说明
  198 + var updateDescription={
  199 + date: '2016-12-11',
  200 + text: '<h5>1、电子路单单击“实发”时,tootip内的人员显示工号。</h5><h5>2、修复某些情况下,班次被操作后 点击“实发” 无法显示tootip的情况。</h5><h5>3、获取GPS数据失败时,页面会弹出提示,并等待7秒后尝试再次获取。</h5>'
  201 + };
  202 +
  203 + var storage = window.localStorage
  204 + ,key = 'update_' + updateDescription.date;
  205 + var text = storage.getItem(key);
  206 + if(!text){
  207 + var modal = '<div class="uk-modal" id="update-description-modal">'+
  208 + ' <div class="uk-modal-dialog">'+
  209 + ' <a class="uk-modal-close uk-close"></a>'+
  210 + ' <div class="uk-modal-header">'+
  211 + ' <h2>'+updateDescription.date+' 更新说明</h2></div>'+updateDescription.text+
  212 + ' </div>';
  213 +
  214 + show_modal('#update-description-modal', modal);
  215 + storage.setItem(key, updateDescription.text);
  216 + }
  217 +}
192 218 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/js/utils/svg_chart_tooltip.js
... ... @@ -52,15 +52,17 @@ var gb_svg_tooltip = (function () {
52 52 //multiple gps tooltip
53 53 $(document).on('mouseenter', 'svg .merge-item rect', function () {
54 54 var rect = $(this);
55   - if (rect.attr('aria-describedby'))
56   - return;
  55 + //console.log('111', rect,rect.attr('aria-describedby'));
  56 + /*if (rect.attr('aria-describedby'))
  57 + return;*/
57 58 // var gps = gb_data_gps.findOne($(this).attr('_id').split('_')[1]);
  59 +
  60 + $('.qtip-multi-gps').qtip('destroy', true);
58 61 //获取聚合的gps
59 62 var lineCode = $(this).parents('svg').data('code')
60 63 , stop = $(this).parent().attr('_id').substr(7)//merger_
61 64 , gpsArray = searchByStop(gb_data_gps.gpsByLineCode(lineCode), stop);
62 65  
63   - // console.log('stop...',stop);
64 66 $(this).qtip({
65 67 show: {
66 68 ready: true,
... ...
src/main/resources/static/real_control_v2/main.html
... ... @@ -9,7 +9,7 @@
9 9 <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.gradient.min.css" />
10 10 <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css" />
11 11 <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css" />
12   - <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/slider.gradient.min.css" />
  12 + <!--<link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/slider.gradient.min.css" />-->
13 13  
14 14 <!-- main style -->
15 15 <link rel="stylesheet" href="/real_control_v2/css/main.css" />
... ... @@ -87,7 +87,7 @@
87 87 <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js"></script>
88 88 <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js"></script>
89 89 <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js"></script>
90   - <script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/slider.min.js"></script>
  90 + <!--<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/slider.min.js"></script>-->
91 91 <!-- jquery contextMenu -->
92 92 <script src="/real_control_v2/assets/js/jquery.contextMenu.min.js"></script>
93 93 <script src="/real_control_v2/assets/js/jquery.ui.position.min.js"></script>
... ...
src/main/resources/static/real_control_v2/mapmonitor/js/real.js
... ... @@ -10,7 +10,7 @@ var mapmonitor_load_ep = EventProxy.create(&#39;load_iMap&#39;, &#39;load_baidu&#39;, &#39;load_gaod
10 10 .changeMap(gb_map_config.getConfig().map_type);
11 11  
12 12 //init tree
13   - /*gb_map_gps_tree.init(function () {
  13 + /* gb_map_gps_tree.init(function () {
14 14 gb_map_overlay_mge.init();
15 15 gb_map_spatial_data.init();
16 16 });*/
... ...