Commit 8006f71971c1090c619ab34ca0427e665ca56b21

Authored by 潘钊
1 parent af3890cb

update

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&lt;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&lt;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&lt;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
... ... @@ -18,6 +18,7 @@
18 18 background: #f5f5f5;
19 19 width: 100%;
20 20 line-height: 30px;
  21 + z-index: 3;
21 22 }
22 23  
23 24 .ct_table>.ct_table_head dl {
... ...
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
... ... @@ -322,7 +322,8 @@
322 322 name: "添加子任务",
323 323 items: {
324 324 'add_sub_task_in': {
325   - name: '回场'
  325 + name: '回场',
  326 + disabled: true
326 327 },
327 328 'add_sub_task_out': {
328 329 name: '出场',
... ...
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
... ...