Commit 8006f71971c1090c619ab34ca0427e665ca56b21
1 parent
af3890cb
update
Showing
10 changed files
with
183 additions
and
29 deletions
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
| ... | ... | @@ -163,7 +163,7 @@ public class ScheduleRealInfo { |
| 163 | 163 | private String qdzArrDatesj; |
| 164 | 164 | |
| 165 | 165 | /** 子任务 */ |
| 166 | - @OneToMany(fetch = FetchType.LAZY/*, cascade = CascadeType.ALL*/) | |
| 166 | + @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) | |
| 167 | 167 | private Set<ChildTaskPlan> cTasks = new HashSet<>(); |
| 168 | 168 | |
| 169 | 169 | /** 关联的公司名称 */ | ... | ... |
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
| ... | ... | @@ -121,4 +121,5 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI |
| 121 | 121 | |
| 122 | 122 | @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm ORDER BY xlBm") |
| 123 | 123 | List<ScheduleRealInfo> setDDRBGroup(String date); |
| 124 | + | |
| 124 | 125 | } | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
| 1 | 1 | package com.bsth.service.realcontrol.impl; |
| 2 | 2 | |
| 3 | -import java.util.Map; | |
| 4 | - | |
| 5 | -import javax.transaction.Transactional; | |
| 6 | - | |
| 7 | -import org.springframework.beans.factory.annotation.Autowired; | |
| 8 | -import org.springframework.stereotype.Service; | |
| 9 | - | |
| 10 | 3 | import com.bsth.data.BasicData; |
| 11 | 4 | import com.bsth.data.match.Arrival2Schedule; |
| 12 | 5 | import com.bsth.data.schedule.DayOfSchedule; |
| 13 | 6 | import com.bsth.entity.realcontrol.ChildTaskPlan; |
| 14 | 7 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 15 | 8 | import com.bsth.repository.realcontrol.ChildTaskPlanRepository; |
| 9 | +import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | |
| 16 | 10 | import com.bsth.service.impl.BaseServiceImpl; |
| 17 | 11 | import com.bsth.service.realcontrol.ChildTaskPlanService; |
| 12 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 13 | +import org.springframework.jdbc.core.JdbcTemplate; | |
| 14 | +import org.springframework.stereotype.Service; | |
| 15 | + | |
| 16 | +import javax.transaction.Transactional; | |
| 17 | +import java.util.Map; | |
| 18 | 18 | |
| 19 | 19 | @Service |
| 20 | 20 | public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Long> implements ChildTaskPlanService{ |
| 21 | 21 | |
| 22 | 22 | /*@Autowired |
| 23 | 23 | ScheduleRealInfoServiceImpl scheduleRealInfoService;*/ |
| 24 | + | |
| 25 | + @Autowired | |
| 26 | + ScheduleRealInfoRepository scheduleRealInfoRepository; | |
| 24 | 27 | |
| 25 | 28 | @Autowired |
| 26 | 29 | ChildTaskPlanRepository childTaskPlanRepository; |
| ... | ... | @@ -30,6 +33,9 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Lon |
| 30 | 33 | |
| 31 | 34 | @Autowired |
| 32 | 35 | Arrival2Schedule arrival2Schedule; |
| 36 | + | |
| 37 | + @Autowired | |
| 38 | + JdbcTemplate jdbcTemplate; | |
| 33 | 39 | |
| 34 | 40 | @Transactional |
| 35 | 41 | @Override |
| ... | ... | @@ -62,10 +68,13 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Lon |
| 62 | 68 | //解除和主任务关联 |
| 63 | 69 | ScheduleRealInfo sch = dayOfSchedule.get(cPlan.getSchedule().getId()); |
| 64 | 70 | sch.getcTasks().remove(cPlan); |
| 71 | + //删除关联表数据 | |
| 72 | + jdbcTemplate.execute("delete from bsth_c_s_sp_info_real_c_tasks where bsth_c_s_sp_info_real="+sch.getId()+" and c_tasks="+cPlan.getId()); | |
| 73 | + | |
| 65 | 74 | //删除子任务 |
| 66 | 75 | rs = super.delete(id); |
| 67 | 76 | dayOfSchedule.save(sch); |
| 68 | - | |
| 77 | + | |
| 69 | 78 | rs.put("t", sch); |
| 70 | 79 | return rs; |
| 71 | 80 | } | ... | ... |
src/main/resources/static/real_control_v2/css/ct_table.css
src/main/resources/static/real_control_v2/css/line_schedule.css
| ... | ... | @@ -943,4 +943,73 @@ input.i-cbox[type=checkbox]{ |
| 943 | 943 | |
| 944 | 944 | .fixed_legend .tl-qrlb::before{ |
| 945 | 945 | font-size: 12px; |
| 946 | +} | |
| 947 | + | |
| 948 | +.schedule-body .ct_table dl.dl-last-sch{ | |
| 949 | + height: 55px; | |
| 950 | +} | |
| 951 | + | |
| 952 | +.schedule-body .ct_table dl.dl-last-sch dd{ | |
| 953 | + line-height: 55px; | |
| 954 | +} | |
| 955 | + | |
| 956 | +.schedule-body .ct_table dl.dl-last-sch dd.fcsjActualCell{ | |
| 957 | + line-height: 28px; | |
| 958 | +} | |
| 959 | + | |
| 960 | +dd.fcsjActualCell div.last-sch-sunken{ | |
| 961 | + height: 25px; | |
| 962 | + line-height: 25px; | |
| 963 | + margin: 0; | |
| 964 | + background: #fff; | |
| 965 | + /*border-top: 1px solid #eeeeee;*/ | |
| 966 | +} | |
| 967 | + | |
| 968 | +dd.fcsjActualCell div.last-sch-sunken span._badge{ | |
| 969 | + font-size: 12px; | |
| 970 | + border-radius: 0 7px 7px 0; | |
| 971 | + padding-left: 0; | |
| 972 | + width: 29px; | |
| 973 | + display: inline-block; | |
| 974 | + height: 18px; | |
| 975 | + line-height: 18px; | |
| 976 | + box-shadow: 2px 0px 2px 0 rgba(0,0,0,0.16), 2px 0px 4px 0 rgba(0,0,0,0.12); | |
| 977 | + vertical-align: top; | |
| 978 | + margin-right: 3px; | |
| 979 | + margin-top: 3px; | |
| 980 | + margin-left: -7px; | |
| 981 | + text-indent: 2px; | |
| 982 | + border-left: 0; | |
| 983 | + transform: scale(.9); | |
| 984 | + color: grey; | |
| 985 | +} | |
| 986 | + | |
| 987 | +.relevance-active dd.fcsjActualCell div.last-sch-sunken{ | |
| 988 | + background: #f1efef; | |
| 989 | +} | |
| 990 | + | |
| 991 | +.intimity.relevance-active dd.fcsjActualCell div.last-sch-sunken{ | |
| 992 | + background: #76a6c7 !important; | |
| 993 | + border-top: 1px solid #f7f8f8 !important; | |
| 994 | + color: #f8f8f8; | |
| 995 | +} | |
| 996 | + | |
| 997 | +.intimity.relevance-active dd.fcsjActualCell div.last-sch-sunken span._badge{ | |
| 998 | + background: #76a6c7 ; | |
| 999 | + color: #ffffff ; | |
| 1000 | +} | |
| 1001 | + | |
| 1002 | +.drag-active dd.fcsjActualCell div.last-sch-sunken{ | |
| 1003 | + background: #cef9e3 !important; | |
| 1004 | + border-top: 1px solid #d9e6e0 !important; | |
| 1005 | +} | |
| 1006 | + | |
| 1007 | +.drag-active dd.fcsjActualCell div.last-sch-sunken span._badge{ | |
| 1008 | + color: #6e6969; | |
| 1009 | + background: #cef9e3; | |
| 1010 | +} | |
| 1011 | + | |
| 1012 | +.ct_table>.ct_table_body dl.dl-last-sch:hover div.last-sch-sunken, | |
| 1013 | +.ct_table>.ct_table_body dl.dl-last-sch.context-menu-active div.last-sch-sunken{ | |
| 1014 | + background: #f5fbff; | |
| 946 | 1015 | } |
| 947 | 1016 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
src/main/resources/static/real_control_v2/fragments/line_schedule/sch_table.html
| ... | ... | @@ -7,10 +7,9 @@ |
| 7 | 7 | {{else}} |
| 8 | 8 | 下行/{{line.endStationName}} |
| 9 | 9 | {{/if}} |
| 10 | - <i class="uk-icon-question-circle" ></i> | |
| 10 | + <i class="uk-icon-question-circle"></i> | |
| 11 | 11 | <div class="fixed_legend"> |
| 12 | 12 | <div> |
| 13 | - <!--<i class="uk-icon-angle-right" ></i>--> | |
| 14 | 13 | <span class="tl-xxfc">消息发出</span> |
| 15 | 14 | <span class="tl-xxsd">消息收到</span> |
| 16 | 15 | <span class="tl-xxrd">消息阅读</span> |
| ... | ... | @@ -54,7 +53,7 @@ |
| 54 | 53 | </div> |
| 55 | 54 | <div class="ct_table_body"> |
| 56 | 55 | {{each list as sch i}} |
| 57 | - <dl data-id="{{sch.id}}" > | |
| 56 | + <dl data-id="{{sch.id}}"> | |
| 58 | 57 | <dd class="seq_no">{{i + 1}}</dd> |
| 59 | 58 | <dd class="lpName"><a>{{sch.lpName}}</a></dd> |
| 60 | 59 | <dd data-nbbm="{{sch.clZbh}}" |
| ... | ... | @@ -81,7 +80,9 @@ |
| 81 | 80 | <span class="uk-badge uk-badge-notification">{{sch.cTasks.length}}</span> |
| 82 | 81 | {{/if}} |
| 83 | 82 | </dd> |
| 84 | - <dd data-sort-val={{sch.dfsjT}} dbclick dbclick-type="dfsj" dbclick-val="{{sch.dfsj}}">{{sch.dfsj}}</dd> | |
| 83 | + <dd data-sort-val={{sch.dfsjT}} dbclick dbclick-type="dfsj" dbclick-val="{{sch.dfsj}}"> | |
| 84 | + {{sch.dfsj}} | |
| 85 | + </dd> | |
| 85 | 86 | <dd class=" |
| 86 | 87 | {{if sch.status==-1}} |
| 87 | 88 | tl-qrlb |
| ... | ... | @@ -91,11 +92,12 @@ |
| 91 | 92 | tl-zzzx |
| 92 | 93 | {{else if sch.status == 0 && sch.late}} |
| 93 | 94 | tl-wd |
| 94 | - {{/if}} fcsjActualCell" > | |
| 95 | + {{/if}} fcsjActualCell"> | |
| 95 | 96 | {{sch.fcsjActual}}<span class="fcsj-diff">{{sch.fcsj_diff}}</span> |
| 96 | 97 | </dd> |
| 97 | 98 | <dd data-uk-observe> |
| 98 | - <span title="{{sch.remarks}}" data-uk-tooltip="{pos:'top-left'}" >{{sch.remarks}}</span> | |
| 99 | + <span title="{{sch.remarks}}" | |
| 100 | + data-uk-tooltip="{pos:'top-left'}">{{sch.remarks}}</span> | |
| 99 | 101 | </dd> |
| 100 | 102 | </dl> |
| 101 | 103 | {{/each}} |
| ... | ... | @@ -128,7 +130,7 @@ |
| 128 | 130 | </script> |
| 129 | 131 | |
| 130 | 132 | <script id="line-schedule-sfsj-temp" type="text/html"> |
| 131 | - <dd class=" | |
| 133 | + <dd class=" | |
| 132 | 134 | {{if status==-1}} |
| 133 | 135 | tl-qrlb |
| 134 | 136 | {{else if status==2}} |
| ... | ... | @@ -138,8 +140,8 @@ |
| 138 | 140 | {{else if status == 0 && late}} |
| 139 | 141 | tl-wd |
| 140 | 142 | {{/if}} fcsjActualCell"> |
| 141 | - {{fcsjActual}}<span class="fcsj-diff">{{fcsj_diff}}</span> | |
| 142 | - </dd> | |
| 143 | + {{fcsjActual}}<span class="fcsj-diff">{{fcsj_diff}}</span> | |
| 144 | + </dd> | |
| 143 | 145 | </script> |
| 144 | 146 | |
| 145 | 147 | <script id="line-schedule-nbbm-temp" type="text/html"> |
| ... | ... | @@ -162,4 +164,10 @@ |
| 162 | 164 | <li><span>终点站:</span>{{zdzName}}</li> |
| 163 | 165 | </ul> |
| 164 | 166 | </script> |
| 167 | + | |
| 168 | + <script id="last-sch-sunken-temp" type="text/html"> | |
| 169 | + <div class="last-sch-sunken"> | |
| 170 | + <span class="_badge">终点</span>{{zdsj}}/{{zdsjActual}} | |
| 171 | + </div> | |
| 172 | + </script> | |
| 165 | 173 | </div> | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/legend.js
| ... | ... | @@ -2,14 +2,16 @@ |
| 2 | 2 | |
| 3 | 3 | var gb_sch_legend = (function () { |
| 4 | 4 | |
| 5 | + var locaKey = 'sch_legend_flag'; | |
| 6 | + var storage = window.localStorage; | |
| 5 | 7 | |
| 6 | 8 | var animationend = 'webkitAnimationEnd animationend'; |
| 7 | - var initLegend = function () { | |
| 9 | + var initLegend = function (cont) { | |
| 8 | 10 | //双击展开 |
| 9 | - $('.schedule-wrap i.uk-icon-question-circle').dblclick(openLegend); | |
| 11 | + $('.schedule-wrap i.uk-icon-question-circle', cont).dblclick(openLegend); | |
| 10 | 12 | |
| 11 | 13 | //关闭事件 |
| 12 | - $('.schedule-wrap .fixed_legend_close').on('click', function () { | |
| 14 | + $('.schedule-wrap .fixed_legend_close', cont).on('click', function () { | |
| 13 | 15 | //隐藏 fixed_legend |
| 14 | 16 | $('.schedule-wrap .fixed_legend').each(function () { |
| 15 | 17 | var anim = 'uk-animation-slide-top uk-animation-reverse'; |
| ... | ... | @@ -26,7 +28,14 @@ var gb_sch_legend = (function () { |
| 26 | 28 | $(this).hide().parents('.header-title').find('.uk-icon-question-circle').show(); |
| 27 | 29 | } |
| 28 | 30 | }); |
| 31 | + | |
| 32 | + //记录状态 | |
| 33 | + storage.setItem(locaKey, 0); | |
| 29 | 34 | }); |
| 35 | + | |
| 36 | + var flag=storage.getItem(locaKey); | |
| 37 | + if(flag && flag==1) | |
| 38 | + openLegend(); | |
| 30 | 39 | }; |
| 31 | 40 | |
| 32 | 41 | |
| ... | ... | @@ -47,6 +56,9 @@ var gb_sch_legend = (function () { |
| 47 | 56 | } |
| 48 | 57 | }); |
| 49 | 58 | $('.schedule-wrap .fixed_legend').css('display', 'inline-block'); |
| 59 | + | |
| 60 | + //记录状态 | |
| 61 | + storage.setItem(locaKey, 1); | |
| 50 | 62 | }; |
| 51 | 63 | |
| 52 | 64 | return { | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
| ... | ... | @@ -56,6 +56,11 @@ var gb_schedule_table = (function () { |
| 56 | 56 | |
| 57 | 57 | $('.schedule-wrap .card-panel:eq(' + upDown + ')', this).html(htmlStr); |
| 58 | 58 | } |
| 59 | + | |
| 60 | + //标记车辆最后一个班次 | |
| 61 | + markerLastByLine(lineCode); | |
| 62 | + //初始化图例相关,dbclick 不能代理事件 | |
| 63 | + gb_sch_legend.init(this); | |
| 59 | 64 | }); |
| 60 | 65 | var content = $('.line_schedule .ct_table_wrap'); |
| 61 | 66 | //fixed table head |
| ... | ... | @@ -67,9 +72,6 @@ var gb_schedule_table = (function () { |
| 67 | 72 | //点击实发,show detail |
| 68 | 73 | fcsjActualCellQtip(); |
| 69 | 74 | cb && cb(); |
| 70 | - | |
| 71 | - //图例相关 | |
| 72 | - gb_sch_legend.init(); | |
| 73 | 75 | }); |
| 74 | 76 | }; |
| 75 | 77 | |
| ... | ... | @@ -159,6 +161,11 @@ var gb_schedule_table = (function () { |
| 159 | 161 | }); |
| 160 | 162 | $('.schedule-wrap .card-panel:eq(' + upDown + ')', tabCont).html(htmlStr); |
| 161 | 163 | } |
| 164 | + //图例相关 | |
| 165 | + gb_sch_legend.init(tabCont); | |
| 166 | + //标记末班 | |
| 167 | + markerLastByLine(sch.xlBm); | |
| 168 | + //计算应发未发 | |
| 162 | 169 | calc_yfwf_num(sch.xlBm); |
| 163 | 170 | //重新固定表头 |
| 164 | 171 | gb_ct_table.fixedHead($('.line_schedule .ct_table_wrap')); |
| ... | ... | @@ -217,6 +224,10 @@ var gb_schedule_table = (function () { |
| 217 | 224 | $(dds[8]).html('<span title="' + sch.remarks + '" data-uk-tooltip="{pos:\'top-left\'}">' + sch.remarks + '</span>'); |
| 218 | 225 | else |
| 219 | 226 | $(dds[8]).html(''); |
| 227 | + | |
| 228 | + //班次是车辆的最后一班 | |
| 229 | + if(dl.hasClass('dl-last-sch')) | |
| 230 | + markerLastSch([sch]); | |
| 220 | 231 | }; |
| 221 | 232 | |
| 222 | 233 | //拖拽选中... |
| ... | ... | @@ -265,12 +276,14 @@ var gb_schedule_table = (function () { |
| 265 | 276 | return item.clZbh == sch.clZbh; |
| 266 | 277 | }).sort(schedule_sort), |
| 267 | 278 | nextSch, tempDL; |
| 279 | + | |
| 280 | + getDl(sch).addClass('intimity'); | |
| 268 | 281 | $.each(schArr, function (i) { |
| 269 | 282 | tempDL = $('dl[data-id=' + this.id + ']', contWrap); |
| 270 | 283 | tempDL.addClass('relevance-active'); |
| 271 | 284 | if (i < schArr.length - 1 && this.id == id) { |
| 272 | 285 | nextSch = schArr[i + 1]; |
| 273 | - tempDL.addClass('intimity'); | |
| 286 | + //tempDL.addClass('intimity'); | |
| 274 | 287 | } |
| 275 | 288 | }); |
| 276 | 289 | |
| ... | ... | @@ -309,7 +322,7 @@ var gb_schedule_table = (function () { |
| 309 | 322 | }); |
| 310 | 323 | |
| 311 | 324 | var scroToDl = function (sch) { |
| 312 | - var dl = $('dl[data-id=' + sch.id + ']', $('.line_schedule[data-id=' + sch.xlBm + ']')), | |
| 325 | + var dl = getDl(sch), | |
| 313 | 326 | cont = dl.parents('.ct_table_wrap'), |
| 314 | 327 | diff = cont.height() / 2; |
| 315 | 328 | cont.animate({ |
| ... | ... | @@ -319,6 +332,10 @@ var gb_schedule_table = (function () { |
| 319 | 332 | return dl; |
| 320 | 333 | }; |
| 321 | 334 | |
| 335 | + var getDl = function (sch) { | |
| 336 | + return $('dl[data-id=' + sch.id + ']', $('.line_schedule[data-id=' + sch.xlBm + ']')); | |
| 337 | + }; | |
| 338 | + | |
| 322 | 339 | var reset_drag_active_all = function (dd) { |
| 323 | 340 | $(dd).parents('.schedule-wrap').find('dl.drag-active').removeClass('drag-active'); |
| 324 | 341 | reset_relevance_active(dd); |
| ... | ... | @@ -355,6 +372,42 @@ var gb_schedule_table = (function () { |
| 355 | 372 | $('#badge_yfwf_num_' + lineCode).text(yfwf_num); |
| 356 | 373 | }; |
| 357 | 374 | |
| 375 | + //标记终点时间 -线路 | |
| 376 | + var markerLastByLine = function (lineCode) { | |
| 377 | + var data = gb_common.groupBy(gb_common.get_vals(line2Schedule[lineCode]).filter(schDestroyFilter), 'clZbh'); | |
| 378 | + | |
| 379 | + var array, lastSch, dl; | |
| 380 | + for (var nbbm in data) { | |
| 381 | + array = data[nbbm].sort(schedule_sort); | |
| 382 | + markerLastSch(array); | |
| 383 | + } | |
| 384 | + }; | |
| 385 | + | |
| 386 | + //标记终点时间 -车辆 | |
| 387 | + var markerLastByNbbm = function (lineCode, nbbm) { | |
| 388 | + var array = gb_common.get_vals(line2Schedule[lineCode]).filter(function (a) { | |
| 389 | + return a.clZbh == nbbm && a.status != -1; | |
| 390 | + }).sort(schedule_sort); | |
| 391 | + | |
| 392 | + markerLastSch(array); | |
| 393 | + }; | |
| 394 | + | |
| 395 | + var markerLastSch = function (array) { | |
| 396 | + var lastSch = array[array.length - 1]; | |
| 397 | + | |
| 398 | + if (!lastSch.jhlc) | |
| 399 | + return; | |
| 400 | + | |
| 401 | + var dl = getDl(lastSch); | |
| 402 | + dl.addClass('dl-last-sch'); | |
| 403 | + | |
| 404 | + $('dd.fcsjActualCell', dl).append(temps['last-sch-sunken-temp'](lastSch)); | |
| 405 | + } | |
| 406 | + | |
| 407 | + var schDestroyFilter = function (a) { | |
| 408 | + return a.status != -1; | |
| 409 | + } | |
| 410 | + | |
| 358 | 411 | return { |
| 359 | 412 | show: show, |
| 360 | 413 | findScheduleByLine: findScheduleByLine, | ... | ... |
src/main/resources/static/real_control_v2/js/main.js
| ... | ... | @@ -196,8 +196,8 @@ var open_modal = function(pageUrl, data, opt) { |
| 196 | 196 | function showUpdateDescription() { |
| 197 | 197 | //更新说明 |
| 198 | 198 | var updateDescription={ |
| 199 | - date: '2016-12-11', | |
| 200 | - text: '<h5>1、电子路单单击“实发”时,tootip内的人员显示工号。</h5><h5>2、修复某些情况下,班次被操作后 点击“实发” 无法显示tootip的情况。</h5><h5>3、获取GPS数据失败时,页面会弹出提示,并等待7秒后尝试再次获取。</h5>' | |
| 199 | + date: '2016-12-15', | |
| 200 | + text: '<h5>1、双击电子路单title右侧 ? 号图标,可将图例固定在上发。</h5><h5>2、每辆车最后一个班次,实发栏会显示计划和实际终点时间。</h5><h5>3、修复了子任务添加1分钟后再删除,弹出完整性约束校验失败 的问题。</h5>' | |
| 201 | 201 | }; |
| 202 | 202 | |
| 203 | 203 | var storage = window.localStorage | ... | ... |