Commit bfd30e10f40c9ae86a686ba91a74f0cd7eb50dda

Authored by 潘钊
2 parents 1508d0de 43664fe8

Merge branch 'minhang' into pudong

src/main/java/com/bsth/controller/schedule/core/SchedulePlanController.java
@@ -5,7 +5,9 @@ import com.bsth.common.ResponseCode; @@ -5,7 +5,9 @@ import com.bsth.common.ResponseCode;
5 import com.bsth.controller.schedule.BController; 5 import com.bsth.controller.schedule.BController;
6 import com.bsth.entity.schedule.SchedulePlan; 6 import com.bsth.entity.schedule.SchedulePlan;
7 import com.bsth.entity.sys.CompanyAuthority; 7 import com.bsth.entity.sys.CompanyAuthority;
  8 +import com.bsth.entity.sys.SysUser;
8 import com.bsth.service.schedule.SchedulePlanService; 9 import com.bsth.service.schedule.SchedulePlanService;
  10 +import com.bsth.service.sys.SysUserService;
9 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.web.bind.annotation.*; 12 import org.springframework.web.bind.annotation.*;
11 13
@@ -23,11 +25,23 @@ import java.util.Map; @@ -23,11 +25,23 @@ import java.util.Map;
23 public class SchedulePlanController extends BController<SchedulePlan, Long> { 25 public class SchedulePlanController extends BController<SchedulePlan, Long> {
24 @Autowired 26 @Autowired
25 private SchedulePlanService schedulePlanService; 27 private SchedulePlanService schedulePlanService;
  28 + @Autowired
  29 + private SysUserService sysUserService;
26 30
27 @Override 31 @Override
28 public Map<String, Object> save(@RequestBody SchedulePlan schedulePlan, HttpSession httpSession) { 32 public Map<String, Object> save(@RequestBody SchedulePlan schedulePlan, HttpSession httpSession) {
  33 + // 用户信息
  34 + String userName = String.valueOf(httpSession.getAttribute(Constants.SESSION_USERNAME));
  35 + SysUser sysUser = sysUserService.findByUserName(userName);
  36 +
  37 + Date cdate = new Date();
  38 + schedulePlan.setCreateBy(sysUser);
  39 + schedulePlan.setCreateDate(cdate);
  40 + schedulePlan.setUpdateBy(sysUser);
  41 + schedulePlan.setUpdateDate(cdate);
  42 +
  43 + // 如果多个公司,选第一个,以后改成页面控制
29 List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) httpSession.getAttribute(Constants.COMPANY_AUTHORITYS); 44 List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) httpSession.getAttribute(Constants.COMPANY_AUTHORITYS);
30 - // TODO:如果多个公司,选第一个,以后改成页面控制  
31 if (cmyAuths == null || cmyAuths.size() == 0) 45 if (cmyAuths == null || cmyAuths.size() == 0)
32 schedulePlanService.save(schedulePlan, new CompanyAuthority()); 46 schedulePlanService.save(schedulePlan, new CompanyAuthority());
33 else 47 else
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
@@ -56,9 +56,9 @@ public class GpsRealData implements CommandLineRunner { @@ -56,9 +56,9 @@ public class GpsRealData implements CommandLineRunner {
56 public void run(String... arg0) throws Exception { 56 public void run(String... arg0) throws Exception {
57 logger.info("gpsDataLoader,20,5"); 57 logger.info("gpsDataLoader,20,5");
58 //定时从网关获取GPS数据 58 //定时从网关获取GPS数据
59 - //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 15, TimeUnit.SECONDS); 59 + //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 5, TimeUnit.SECONDS);
60 //定时扫描掉离线 60 //定时扫描掉离线
61 - //Application.mainServices.scheduleWithFixedDelay(offlineMonitorThread, 60, 20, TimeUnit.SECONDS); 61 + //Application.mainServices.scheduleWithFixedDelay(offlineMonitorThread, 120, 60, TimeUnit.SECONDS);
62 } 62 }
63 63
64 64
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
@@ -157,6 +157,7 @@ public class SchedulePlanInfo { @@ -157,6 +157,7 @@ public class SchedulePlanInfo {
157 Line xl, 157 Line xl,
158 ScheduleResult_output scheduleResult_output, 158 ScheduleResult_output scheduleResult_output,
159 TTInfoDetail ttInfoDetail, 159 TTInfoDetail ttInfoDetail,
  160 + Boolean isFb,
160 CarConfigInfo carConfigInfo, 161 CarConfigInfo carConfigInfo,
161 List<EmployeeConfigInfo> employeeConfigInfoList, 162 List<EmployeeConfigInfo> employeeConfigInfoList,
162 SchedulePlan schedulePlan) { 163 SchedulePlan schedulePlan) {
@@ -191,7 +192,7 @@ public class SchedulePlanInfo { @@ -191,7 +192,7 @@ public class SchedulePlanInfo {
191 // TODO:报道时间,出场时间没有 192 // TODO:报道时间,出场时间没有
192 // 关联的驾驶员 193 // 关联的驾驶员
193 EmployeeConfigInfo employeeConfigInfo = null; 194 EmployeeConfigInfo employeeConfigInfo = null;
194 - if (ttInfoDetail.getIsFB()) { 195 + if (isFb) {
195 if (employeeConfigInfoList.size() > 1) { 196 if (employeeConfigInfoList.size() > 1) {
196 employeeConfigInfo = employeeConfigInfoList.get(1); 197 employeeConfigInfo = employeeConfigInfoList.get(1);
197 } else { 198 } else {
src/main/java/com/bsth/repository/schedule/SchedulePlanInfoRepository.java
@@ -33,17 +33,18 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI @@ -33,17 +33,18 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI
33 "lp_name as lpName, " + 33 "lp_name as lpName, " +
34 "cl as clId, " + 34 "cl as clId, " +
35 "cl_zbh as clZbh, " + 35 "cl_zbh as clZbh, " +
36 - "group_concat(distinct fcsj) ccsj, " + 36 + "group_concat(fcsj) ccsj, " +
  37 + "group_concat(bc_type) bctype, " +
37 "group_concat(distinct j) jsyId, " + 38 "group_concat(distinct j) jsyId, " +
38 "group_concat(distinct j_gh) jsyGh, " + 39 "group_concat(distinct j_gh) jsyGh, " +
39 "group_concat(distinct j_name) jsyName, " + 40 "group_concat(distinct j_name) jsyName, " +
40 "group_concat(distinct s) spyId, " + 41 "group_concat(distinct s) spyId, " +
41 "group_concat(distinct s_gh) spyGh, " + 42 "group_concat(distinct s_gh) spyGh, " +
42 "group_concat(distinct s_name) spyName, " + 43 "group_concat(distinct s_name) spyName, " +
43 - "max(create_date) as createDate " + 44 + "max(create_date) as createDate, " +
  45 + "group_concat(fcno) fcno " +
44 "from bsth_c_s_sp_info " + 46 "from bsth_c_s_sp_info " +
45 - "where bc_type = 'out' and " +  
46 - "xl = ?1 and " + 47 + "where xl = ?1 and " +
47 "schedule_date = ?2 " + 48 "schedule_date = ?2 " +
48 "group by xl_name, schedule_date, lp, lp_name, cl, cl_zbh " + 49 "group by xl_name, schedule_date, lp, lp_name, cl, cl_zbh " +
49 "order by xl_name, schedule_date, lp ", nativeQuery = true) 50 "order by xl_name, schedule_date, lp ", nativeQuery = true)
@@ -71,14 +72,16 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI @@ -71,14 +72,16 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI
71 "scpinfo.scheduleDate = :p3 and " + 72 "scpinfo.scheduleDate = :p3 and " +
72 "scpinfo.lpName = :p4 and " + 73 "scpinfo.lpName = :p4 and " +
73 "scpinfo.fcsj = :p5 and " + 74 "scpinfo.fcsj = :p5 and " +
74 - "scpinfo.bcType = :p6 ") 75 + "scpinfo.bcType = :p6 and " +
  76 + "scpinfo.fcno = :p7 " )
75 int updateGroupInfo_type_2_4( 77 int updateGroupInfo_type_2_4(
76 @Param("p1") String fcsj, 78 @Param("p1") String fcsj,
77 @Param("p2") Integer xlid, 79 @Param("p2") Integer xlid,
78 @Param("p3") Date scheduleDate, 80 @Param("p3") Date scheduleDate,
79 @Param("p4") String lpName, 81 @Param("p4") String lpName,
80 @Param("p5") String fcsj_src, 82 @Param("p5") String fcsj_src,
81 - @Param("p6") String bcType); 83 + @Param("p6") String bcType,
  84 + @Param("p7") Integer fcno);
82 85
83 @Modifying 86 @Modifying
84 @Query(value = "update " + 87 @Query(value = "update " +
src/main/java/com/bsth/service/schedule/SchedulePlanInfoService.java
@@ -4,6 +4,7 @@ import com.bsth.entity.schedule.SchedulePlanInfo; @@ -4,6 +4,7 @@ import com.bsth.entity.schedule.SchedulePlanInfo;
4 import com.bsth.service.BaseService; 4 import com.bsth.service.BaseService;
5 import org.joda.time.DateTime; 5 import org.joda.time.DateTime;
6 6
  7 +import java.util.ArrayList;
7 import java.util.Date; 8 import java.util.Date;
8 import java.util.List; 9 import java.util.List;
9 10
@@ -117,6 +118,11 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -117,6 +118,11 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
117 /** 创建时间 */ 118 /** 创建时间 */
118 private Date createDate; 119 private Date createDate;
119 120
  121 + /** 出场班次1发车的顺序号 */
  122 + private Integer fcno1;
  123 + /** 出场班次2发车的顺序号 */
  124 + private Integer fcno2;
  125 +
120 public GroupInfo() {} 126 public GroupInfo() {}
121 127
122 public GroupInfo(Object[] datas) { 128 public GroupInfo(Object[] datas) {
@@ -132,19 +138,40 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -132,19 +138,40 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
132 this.clId = Integer.valueOf(String.valueOf(datas[4])); 138 this.clId = Integer.valueOf(String.valueOf(datas[4]));
133 // 车辆自编号 139 // 车辆自编号
134 this.clZbh = String.valueOf(datas[5]); 140 this.clZbh = String.valueOf(datas[5]);
135 - // 出场时间,如果有多个,需要分开 141 + // 出场时间,出场班次,如果有多个,需要分开
136 Object ccsj = datas[6]; 142 Object ccsj = datas[6];
  143 + Object bctype = datas[7];
  144 + Object fcno = datas[15];
  145 +
137 if (ccsj != null) { 146 if (ccsj != null) {
138 String[] ccsj_array = ((String) ccsj).split(","); 147 String[] ccsj_array = ((String) ccsj).split(",");
139 - if (ccsj_array.length > 1) {  
140 - this.ccsj1 = String.valueOf(ccsj_array[0]);  
141 - this.ccsj2 = String.valueOf(ccsj_array[1]);  
142 - } else {  
143 - this.ccsj1 = String.valueOf(ccsj_array[0]); 148 + String[] bctype_array = ((String) bctype).split(",");
  149 + String[] fcno_array = ((String) fcno).split(",");
  150 + List<Integer> bctype_index = new ArrayList<>();
  151 +
  152 + for (int i = 0; i < bctype_array.length; i++) {
  153 + if (bctype_index.size() == 2) { // 只记录2个出场
  154 + break;
  155 + }
  156 + if (bctype_array[i].equals("out")) {
  157 + bctype_index.add(i);
  158 + }
  159 + }
  160 +
  161 + if (bctype_index.size() == 1) {
  162 + this.ccsj1 = String.valueOf(ccsj_array[bctype_index.get(0)]);
  163 + this.fcno1 = Integer.valueOf(fcno_array[bctype_index.get(0)]);
  164 + } else if (bctype_index.size() == 2) {
  165 + this.ccsj1 = String.valueOf(ccsj_array[bctype_index.get(0)]);
  166 + this.ccsj2 = String.valueOf(ccsj_array[bctype_index.get(1)]);
  167 +
  168 + this.fcno1 = Integer.valueOf(fcno_array[bctype_index.get(0)]);
  169 + this.fcno2 = Integer.valueOf(fcno_array[bctype_index.get(1)]);
144 } 170 }
  171 +
145 } 172 }
146 // 驾驶员id,如果有多个,需要分开 173 // 驾驶员id,如果有多个,需要分开
147 - Object jsyId = datas[7]; 174 + Object jsyId = datas[8];
148 if (jsyId != null) { 175 if (jsyId != null) {
149 String[] jsyId_array = ((String) jsyId).split(","); 176 String[] jsyId_array = ((String) jsyId).split(",");
150 if (jsyId_array.length > 1) { 177 if (jsyId_array.length > 1) {
@@ -155,7 +182,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -155,7 +182,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
155 } 182 }
156 } 183 }
157 // 驾驶员工号,如果有多个,需要分开 184 // 驾驶员工号,如果有多个,需要分开
158 - Object jsyGh = datas[8]; 185 + Object jsyGh = datas[9];
159 if (jsyGh != null) { 186 if (jsyGh != null) {
160 String[] jsyGh_array = ((String) jsyGh).split(","); 187 String[] jsyGh_array = ((String) jsyGh).split(",");
161 if (jsyGh_array.length > 1) { 188 if (jsyGh_array.length > 1) {
@@ -166,7 +193,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -166,7 +193,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
166 } 193 }
167 } 194 }
168 // 驾驶员名字,如果有多个,需要分开 195 // 驾驶员名字,如果有多个,需要分开
169 - Object jsyName = datas[9]; 196 + Object jsyName = datas[10];
170 if (jsyName != null) { 197 if (jsyName != null) {
171 String[] jsyName_array = ((String) jsyName).split(","); 198 String[] jsyName_array = ((String) jsyName).split(",");
172 if (jsyName_array.length > 1) { 199 if (jsyName_array.length > 1) {
@@ -178,7 +205,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -178,7 +205,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
178 } 205 }
179 206
180 // 售票员id,如果有多个,需要分开 207 // 售票员id,如果有多个,需要分开
181 - Object spyId = datas[10]; 208 + Object spyId = datas[11];
182 if (spyId != null) { 209 if (spyId != null) {
183 String[] spyId_array = ((String) spyId).split(","); 210 String[] spyId_array = ((String) spyId).split(",");
184 if (spyId_array.length > 1) { 211 if (spyId_array.length > 1) {
@@ -190,7 +217,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -190,7 +217,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
190 } 217 }
191 218
192 // 售票员工号,如果有多个,需要分开 219 // 售票员工号,如果有多个,需要分开
193 - Object spyGh = datas[11]; 220 + Object spyGh = datas[12];
194 if (spyGh != null) { 221 if (spyGh != null) {
195 String[] spyGh_array = ((String) spyGh).split(","); 222 String[] spyGh_array = ((String) spyGh).split(",");
196 if (spyGh_array.length > 1) { 223 if (spyGh_array.length > 1) {
@@ -201,7 +228,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -201,7 +228,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
201 } 228 }
202 } 229 }
203 // 售票员名字,如果有多个,需要分开 230 // 售票员名字,如果有多个,需要分开
204 - Object spyName = datas[12]; 231 + Object spyName = datas[13];
205 if (spyName != null) { 232 if (spyName != null) {
206 String[] spyName_array = ((String) spyName).split(","); 233 String[] spyName_array = ((String) spyName).split(",");
207 if (spyName_array.length > 1) { 234 if (spyName_array.length > 1) {
@@ -212,7 +239,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -212,7 +239,7 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
212 } 239 }
213 } 240 }
214 // 创建时间 241 // 创建时间
215 - this.createDate = new DateTime(datas[13]).toDate(); 242 + this.createDate = new DateTime(datas[14]).toDate();
216 243
217 // TODO:可能还有其他字段 244 // TODO:可能还有其他字段
218 } 245 }
@@ -384,5 +411,21 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L @@ -384,5 +411,21 @@ public interface SchedulePlanInfoService extends BaseService&lt;SchedulePlanInfo, L
384 public void setXlId(Integer xlId) { 411 public void setXlId(Integer xlId) {
385 this.xlId = xlId; 412 this.xlId = xlId;
386 } 413 }
  414 +
  415 + public Integer getFcno1() {
  416 + return fcno1;
  417 + }
  418 +
  419 + public void setFcno1(Integer fcno1) {
  420 + this.fcno1 = fcno1;
  421 + }
  422 +
  423 + public Integer getFcno2() {
  424 + return fcno2;
  425 + }
  426 +
  427 + public void setFcno2(Integer fcno2) {
  428 + this.fcno2 = fcno2;
  429 + }
387 } 430 }
388 } 431 }
src/main/java/com/bsth/service/schedule/SchedulePlanInfoServiceImpl.java
@@ -55,7 +55,8 @@ public class SchedulePlanInfoServiceImpl extends BaseServiceImpl&lt;SchedulePlanInf @@ -55,7 +55,8 @@ public class SchedulePlanInfoServiceImpl extends BaseServiceImpl&lt;SchedulePlanInf
55 groupInfoUpdate.getUpdate().getScheduleDate(), 55 groupInfoUpdate.getUpdate().getScheduleDate(),
56 groupInfoUpdate.getSrc().getLpName(), 56 groupInfoUpdate.getSrc().getLpName(),
57 groupInfoUpdate.getSrc().getCcsj1(), 57 groupInfoUpdate.getSrc().getCcsj1(),
58 - "out" 58 + "out",
  59 + groupInfoUpdate.getSrc().getFcno1()
59 ); 60 );
60 } 61 }
61 62
@@ -94,7 +95,8 @@ public class SchedulePlanInfoServiceImpl extends BaseServiceImpl&lt;SchedulePlanInf @@ -94,7 +95,8 @@ public class SchedulePlanInfoServiceImpl extends BaseServiceImpl&lt;SchedulePlanInf
94 groupInfoUpdate.getUpdate().getScheduleDate(), 95 groupInfoUpdate.getUpdate().getScheduleDate(),
95 groupInfoUpdate.getSrc().getLpName(), 96 groupInfoUpdate.getSrc().getLpName(),
96 groupInfoUpdate.getSrc().getCcsj2(), 97 groupInfoUpdate.getSrc().getCcsj2(),
97 - "out" 98 + "out",
  99 + groupInfoUpdate.getSrc().getFcno2()
98 ); 100 );
99 } 101 }
100 102
src/main/java/com/bsth/service/schedule/impl/SchedulePlanServiceImpl.java
@@ -119,13 +119,28 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -119,13 +119,28 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
119 employeeConfigInfoList.add(employeeConfigMaps.get(Long.valueOf(eid))); 119 employeeConfigInfoList.add(employeeConfigMaps.get(Long.valueOf(eid)));
120 } 120 }
121 // 排班明细(这个要迭代的) 121 // 排班明细(这个要迭代的)
122 - Collection<TTInfoDetail> ttInfoDetails = gbdTTinfoMaps.get(scheduleResult_output.getSd().toDate()).get( 122 + Collection<TTInfoDetail> ttInfoDetails_ = gbdTTinfoMaps.get(scheduleResult_output.getSd().toDate()).get(
123 Long.parseLong(scheduleResult_output.getGuideboardId())); 123 Long.parseLong(scheduleResult_output.getGuideboardId()));
  124 + List<TTInfoDetail> ttInfoDetails = new ArrayList<>(ttInfoDetails_);
  125 +
  126 + // 排序ttInfoDetails
  127 + Collections.sort(ttInfoDetails, new Comparator<TTInfoDetail>() {
  128 + @Override
  129 + public int compare(TTInfoDetail o1, TTInfoDetail o2) {
  130 + return o1.getFcno().compareTo(o2.getFcno());
  131 + }
  132 + });
  133 +
  134 + Boolean isFb = false; // 是否分班
124 for (TTInfoDetail ttInfoDetail : ttInfoDetails) { 135 for (TTInfoDetail ttInfoDetail : ttInfoDetails) {
  136 + if (ttInfoDetail.getIsFB())
  137 + isFb = ttInfoDetail.getIsFB();
  138 +
125 SchedulePlanInfo schedulePlanInfo = new SchedulePlanInfo( 139 SchedulePlanInfo schedulePlanInfo = new SchedulePlanInfo(
126 xl, 140 xl,
127 scheduleResult_output, 141 scheduleResult_output,
128 ttInfoDetail, 142 ttInfoDetail,
  143 + isFb,
129 configInfo, 144 configInfo,
130 employeeConfigInfoList, 145 employeeConfigInfoList,
131 schedulePlan); 146 schedulePlan);
@@ -138,6 +153,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -138,6 +153,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
138 153
139 schedulePlanInfos.add(schedulePlanInfo); 154 schedulePlanInfos.add(schedulePlanInfo);
140 ttInfoMap.put(ttInfoDetail.getTtinfo().getId(), ttInfoDetail.getTtinfo().getName()); 155 ttInfoMap.put(ttInfoDetail.getTtinfo().getId(), ttInfoDetail.getTtinfo().getName());
  156 +
141 } 157 }
142 } 158 }
143 159
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/list_info.html
@@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
12 <th style="width: 150px;">驾驶员(工号)</th> 12 <th style="width: 150px;">驾驶员(工号)</th>
13 <th style="width: 150px;">售票员(工号)</th> 13 <th style="width: 150px;">售票员(工号)</th>
14 <th style="width: 80px;">班次类型</th> 14 <th style="width: 80px;">班次类型</th>
  15 + <th style="width: 80px;">上下行</th>
15 <th style="width: 80px;">发车时间</th> 16 <th style="width: 80px;">发车时间</th>
16 <th style="width: 100%">时刻表</th> 17 <th style="width: 100%">时刻表</th>
17 18
@@ -42,6 +43,7 @@ @@ -42,6 +43,7 @@
42 <td></td> 43 <td></td>
43 <td></td> 44 <td></td>
44 <td></td> 45 <td></td>
  46 + <td></td>
45 47
46 </tr> 48 </tr>
47 </thead> 49 </thead>
@@ -74,6 +76,9 @@ @@ -74,6 +76,9 @@
74 <span ng-bind="info.bcType | dict:'ScheduleType':'未知' "></span> 76 <span ng-bind="info.bcType | dict:'ScheduleType':'未知' "></span>
75 </td> 77 </td>
76 <td> 78 <td>
  79 + <span ng-bind="info.xlDir | dict:'LineTrend2':'未知' "></span>
  80 + </td>
  81 + <td>
77 <span ng-bind="info.fcsj"></span> 82 <span ng-bind="info.fcsj"></span>
78 </td> 83 </td>
79 <td> 84 <td>
src/main/resources/static/real_control_v2/css/home.css
@@ -61,7 +61,7 @@ @@ -61,7 +61,7 @@
61 } 61 }
62 62
63 .home-gps-table { 63 .home-gps-table {
64 - width: 620px; 64 + width: 640px;
65 } 65 }
66 66
67 .home-gps-table small { 67 .home-gps-table small {
@@ -74,31 +74,35 @@ @@ -74,31 +74,35 @@
74 } 74 }
75 75
76 .home-gps-table dl dt:nth-of-type(2), .home-gps-table dl dd:nth-of-type(2) { 76 .home-gps-table dl dt:nth-of-type(2), .home-gps-table dl dd:nth-of-type(2) {
77 - width: 8% 77 + width: 7%
78 } 78 }
79 79
80 .home-gps-table dl dt:nth-of-type(3), .home-gps-table dl dd:nth-of-type(3) { 80 .home-gps-table dl dt:nth-of-type(3), .home-gps-table dl dd:nth-of-type(3) {
81 - width: 8% 81 + width: 7%
82 } 82 }
83 83
84 .home-gps-table dl dt:nth-of-type(4), .home-gps-table dl dd:nth-of-type(4) { 84 .home-gps-table dl dt:nth-of-type(4), .home-gps-table dl dd:nth-of-type(4) {
85 - width: 8%; 85 + width: 7%
86 } 86 }
87 87
88 .home-gps-table dl dt:nth-of-type(5), .home-gps-table dl dd:nth-of-type(5) { 88 .home-gps-table dl dt:nth-of-type(5), .home-gps-table dl dd:nth-of-type(5) {
89 - width: 17% 89 + width: 7%;
90 } 90 }
91 91
92 .home-gps-table dl dt:nth-of-type(6), .home-gps-table dl dd:nth-of-type(6) { 92 .home-gps-table dl dt:nth-of-type(6), .home-gps-table dl dd:nth-of-type(6) {
93 - width: 17% 93 + width: 16%
94 } 94 }
95 95
96 .home-gps-table dl dt:nth-of-type(7), .home-gps-table dl dd:nth-of-type(7) { 96 .home-gps-table dl dt:nth-of-type(7), .home-gps-table dl dd:nth-of-type(7) {
97 - width: 10% 97 + width: 16%
98 } 98 }
99 99
100 .home-gps-table dl dt:nth-of-type(8), .home-gps-table dl dd:nth-of-type(8) { 100 .home-gps-table dl dt:nth-of-type(8), .home-gps-table dl dd:nth-of-type(8) {
101 - width: 16%; 101 + width: 9%
  102 +}
  103 +
  104 +.home-gps-table dl dt:nth-of-type(9), .home-gps-table dl dd:nth-of-type(9) {
  105 + width: 15%;
102 border-right: 0; 106 border-right: 0;
103 } 107 }
104 108
src/main/resources/static/real_control_v2/css/main.css
@@ -798,12 +798,12 @@ li.map-panel { @@ -798,12 +798,12 @@ li.map-panel {
798 798
799 799
800 svg text.offline{ 800 svg text.offline{
801 - fill: #534e4e !important; 801 + fill: #6f6a6a !important;
802 } 802 }
803 803
804 svg rect.offline{ 804 svg rect.offline{
805 - stroke: #abaaaa !important;  
806 - fill: #b8b8b8 !important; 805 + stroke: #dbdada !important;
  806 + fill: #dbdada !important;
807 } 807 }
808 808
809 .tooltip .tooltip-container .title a>.abnormal-text{ 809 .tooltip .tooltip-container .title a>.abnormal-text{
src/main/resources/static/real_control_v2/fragments/home/line_panel.html
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 <div class="ct_table_head"> 9 <div class="ct_table_head">
10 <dl> 10 <dl>
11 <dt>车辆编码</dt> 11 <dt>车辆编码</dt>
  12 + <dt>路牌</dt>
12 <dt>速度</dt> 13 <dt>速度</dt>
13 <dt>终点</dt> 14 <dt>终点</dt>
14 <dt>状态</dt> 15 <dt>状态</dt>
@@ -27,6 +28,7 @@ @@ -27,6 +28,7 @@
27 <script id="home-gps-tbody-temp" type="text/html"> 28 <script id="home-gps-tbody-temp" type="text/html">
28 <dl id="home_gps_{{deviceId}}" data-device-id="{{deviceId}}" {{if abnormalStatus=='offline'}}class="offline"{{/if}}> 29 <dl id="home_gps_{{deviceId}}" data-device-id="{{deviceId}}" {{if abnormalStatus=='offline'}}class="offline"{{/if}}>
29 <dd title="{{nbbm}}"><a>{{nbbm}}</a></dd> 30 <dd title="{{nbbm}}"><a>{{nbbm}}</a></dd>
  31 + <dd></dd>
30 <dd>{{speed}}</dd> 32 <dd>{{speed}}</dd>
31 <dd>{{expectStopTime}}</dd> 33 <dd>{{expectStopTime}}</dd>
32 <dd> 34 <dd>
src/main/resources/static/real_control_v2/fragments/home/tooltip.html
1 <div> 1 <div>
2 <script id="tooltip_gps_temp" type="text/html"> 2 <script id="tooltip_gps_temp" type="text/html">
3 - <div class="tooltip" > 3 + <div class="tooltip" data-id="{{deviceId}}">
4 <div class="tooltip-container"> 4 <div class="tooltip-container">
5 - <div class="title">  
6 - <a href="javascript:;" data-for="station" class="tip_modal">  
7 - {{nbbm}}  
8 - {{if abnormalStatus == 'outBounds'}} 5 +
  6 + <div class="cont-text-panel">
  7 + <div class="title">
  8 + <a href="javascript:;" data-for="station" class="tip_modal">
  9 + {{nbbm}}
  10 + {{if abnormalStatus == 'outBounds'}}
9 <span class="abnormal-text">越界</span> 11 <span class="abnormal-text">越界</span>
10 - {{else if abnormalStatus == 'overspeed'}} 12 + {{else if abnormalStatus == 'overspeed'}}
11 <span class="abnormal-text">超速</span> 13 <span class="abnormal-text">超速</span>
12 - {{else if abnormalStatus == 'gps-offline'}} 14 + {{else if abnormalStatus == 'gps-offline'}}
13 <span class="abnormal-text">GPS掉线</span> 15 <span class="abnormal-text">GPS掉线</span>
14 - {{else if abnormalStatus == 'offline'}} 16 + {{else if abnormalStatus == 'offline'}}
15 <span class="abnormal-text">已离线</span> 17 <span class="abnormal-text">已离线</span>
16 - {{/if}}  
17 - </a>  
18 - </div>  
19 - <div>  
20 - <span class="field">站点:</span>{{stationName}}  
21 - </div>  
22 - <!-- <div>  
23 - {{lineName}} -{{if upDown==0}}上行{{else}}下行{{/if}}  
24 - </div> -->  
25 - <div>  
26 - <span class="field">设备:</span>{{deviceId}} 18 + {{/if}}
  19 + </a>
  20 + </div>
  21 + <div>
  22 + <span class="field">站点:</span>{{stationName}}
  23 + </div>
  24 + <!-- <div>
  25 + {{lineName}} -{{if upDown==0}}上行{{else}}下行{{/if}}
  26 + </div> -->
  27 + <div>
  28 + <span class="field">设备:</span>{{deviceId}}
  29 + </div>
  30 + <div>
  31 + <span class="field">坐标:</span>{{lon}} {{lat}}
  32 + </div>
  33 + <div>
  34 + <span class="field">速度:</span>{{speed}}</div>
  35 + <div>
  36 + <span class="field">时间:</span>{{dateStr}}</div>
  37 + {{if expectStopTime!=null}}
  38 + <div>
  39 + 预计 {{expectStopTime}} 分钟到达终点</div>
  40 + {{/if}}
27 </div> 41 </div>
28 - <div>  
29 - <span class="field">坐标:</span>{{lon}} {{lat}}  
30 - </div>  
31 - <div>  
32 - <span class="field">速度:</span>{{speed}}</div>  
33 - <div>  
34 - <span class="field">时间:</span>{{dateStr}}</div>  
35 - {{if expectStopTime!=null}}  
36 - <div>  
37 - 预计 {{expectStopTime}} 分钟到达终点</div>  
38 - {{/if}} 42 +
39 <div class="tip_map_wrap"></div> 43 <div class="tip_map_wrap"></div>
40 </div> 44 </div>
41 </div> 45 </div>
@@ -60,17 +64,30 @@ @@ -60,17 +64,30 @@
60 <div style="color: #747272;"> 64 <div style="color: #747272;">
61 {{gps.dateStr}} 65 {{gps.dateStr}}
62 </div> 66 </div>
63 - <!--<div>  
64 - <span class="field">进站时间:</span>?  
65 - </div>  
66 - <div>  
67 - <span class="field">计划发出:</span>?  
68 - </div>-->  
69 -  
70 </div> 67 </div>
71 </div> 68 </div>
72 {{/each}} 69 {{/each}}
73 </div> 70 </div>
74 <div class="tip_map_wrap multi"></div> 71 <div class="tip_map_wrap multi"></div>
75 </script> 72 </script>
  73 +
  74 +
  75 + <script id="tooltip_multi_gps_cont_temp" type="text/html">
  76 + <div class="tooltip-container">
  77 + <div class="title">
  78 + <a href="javascript:;" data-for="station" class="tip_modal">
  79 + {{nbbm}}
  80 + </a>
  81 + </div>
  82 + <div>
  83 + <span class="field">站点:</span>{{stationName}}
  84 + </div>
  85 + <div>
  86 + <span class="field">设备:</span>{{deviceId}}
  87 + </div>
  88 + <div style="color: #747272;">
  89 + {{gps.dateStr}}
  90 + </div>
  91 + </div>
  92 + </script>
76 </div> 93 </div>
src/main/resources/static/real_control_v2/js/home/line_panel.js
@@ -83,21 +83,23 @@ var gb_home_line_panel = (function() { @@ -83,21 +83,23 @@ var gb_home_line_panel = (function() {
83 e.removeClass('offline'); 83 e.removeClass('offline');
84 84
85 var cells = e.find('dd'); 85 var cells = e.find('dd');
86 - $(cells[1]).text(t.speed);  
87 - $(cells[2]).html(t.expectStopTime == null ? '' : t.expectStopTime); 86 + $(cells[2]).text(t.speed);
  87 + $(cells[3]).html(t.expectStopTime == null ? '' : t.expectStopTime);
88 88
89 //状态 89 //状态
90 - $(cells[3]).html(temps['home-gps-abnormal-temp'](t)); 90 + $(cells[4]).html(temps['home-gps-abnormal-temp'](t));
91 91
92 if(!t.stationName) 92 if(!t.stationName)
93 t.stationName=''; 93 t.stationName='';
94 - $(cells[4]).text(t.stationName).attr('title', t.stationName); 94 + $(cells[5]).text(t.stationName).attr('title', t.stationName);
95 95
96 //班次信息 96 //班次信息
97 if(t.sch){ 97 if(t.sch){
98 - $(cells[5]).text(t.sch.zdzName);  
99 - $(cells[6]).text(t.sch.zdsj);  
100 - $(cells[7]).text(t.sch.jGh + '/' + t.sch.jName); 98 + //console.log('t.sch', t.sch);
  99 + $(cells[1]).text(t.sch.lpName);
  100 + $(cells[6]).text(t.sch.zdzName);
  101 + $(cells[7]).text(t.sch.zdsj);
  102 + $(cells[8]).text(t.sch.jGh + '/' + t.sch.jName);
101 } 103 }
102 }; 104 };
103 105
src/main/resources/static/real_control_v2/js/utils/svg_chart.js
@@ -268,8 +268,8 @@ var gb_svg_chart = (function () { @@ -268,8 +268,8 @@ var gb_svg_chart = (function () {
268 return true; 268 return true;
269 269
270 abmStatus = this['abnormalStatus']; 270 abmStatus = this['abnormalStatus'];
  271 + suffix = '';
271 if(abmStatus != 'offline'){ 272 if(abmStatus != 'offline'){
272 - suffix = '';  
273 this['abnormalClaszz'] = true; 273 this['abnormalClaszz'] = true;
274 if(abmStatus=='outBounds') 274 if(abmStatus=='outBounds')
275 suffix = '界'; 275 suffix = '界';
@@ -294,6 +294,9 @@ var gb_svg_chart = (function () { @@ -294,6 +294,9 @@ var gb_svg_chart = (function () {
294 //聚合gps 294 //聚合gps
295 marker_clusterer(this, lineCode); 295 marker_clusterer(this, lineCode);
296 }); 296 });
  297 +
  298 + //刷新tooltip
  299 + gb_svg_tooltip.refresh();
297 }; 300 };
298 301
299 var draw_gps = function (svg, data) { 302 var draw_gps = function (svg, data) {
src/main/resources/static/real_control_v2/js/utils/svg_chart_tooltip.js
@@ -28,7 +28,7 @@ var gb_svg_tooltip = (function () { @@ -28,7 +28,7 @@ var gb_svg_tooltip = (function () {
28 target: rect 28 target: rect
29 }, 29 },
30 style: { 30 style: {
31 - classes: 'qtip-bootstrap' 31 + classes: 'qtip-bootstrap qtip-gps-tooltip'
32 }, 32 },
33 hide: { 33 hide: {
34 fixed: true, 34 fixed: true,
@@ -54,7 +54,7 @@ var gb_svg_tooltip = (function () { @@ -54,7 +54,7 @@ var gb_svg_tooltip = (function () {
54 var rect = $(this); 54 var rect = $(this);
55 //console.log('111', rect,rect.attr('aria-describedby')); 55 //console.log('111', rect,rect.attr('aria-describedby'));
56 /*if (rect.attr('aria-describedby')) 56 /*if (rect.attr('aria-describedby'))
57 - return;*/ 57 + return;*/
58 // var gps = gb_data_gps.findOne($(this).attr('_id').split('_')[1]); 58 // var gps = gb_data_gps.findOne($(this).attr('_id').split('_')[1]);
59 59
60 $('.qtip-multi-gps').qtip('destroy', true); 60 $('.qtip-multi-gps').qtip('destroy', true);
@@ -146,7 +146,7 @@ var gb_svg_tooltip = (function () { @@ -146,7 +146,7 @@ var gb_svg_tooltip = (function () {
146 }); 146 });
147 //draw line routes 147 //draw line routes
148 gb_svg_map_util.drawLine(map, list[0]); 148 gb_svg_map_util.drawLine(map, list[0]);
149 - } 149 + };
150 150
151 function searchByStop(list, stop) { 151 function searchByStop(list, stop) {
152 var rs = []; 152 var rs = [];
@@ -168,7 +168,42 @@ var gb_svg_tooltip = (function () { @@ -168,7 +168,42 @@ var gb_svg_tooltip = (function () {
168 }); 168 });
169 } 169 }
170 170
  171 + var refresh = function () {
  172 + //刷新展开的单个tooltip
  173 + $('.qtip-gps-tooltip .tooltip').each(function () {
  174 + var deviceId = $(this).data('id')
  175 + ,wrap = $(this).find('.cont-text-panel');
  176 + if(deviceId)
  177 + gb_svg_tooltip.refreshTooltip(deviceId, wrap);
  178 + });
  179 +
  180 + //刷新展开的聚合tooltip
  181 + $('.qtip-multi-gps .multi-tooltip').each(function () {
  182 +
  183 + });
  184 + };
  185 +
  186 +
  187 + /**
  188 + * 刷新单个tooltip
  189 + * @param deviceId
  190 + */
  191 + var refreshTooltip = function (deviceId, wrap) {
  192 + var gps = gb_data_gps.findOne(deviceId);
  193 +
  194 + var cont = temps['tooltip_gps_temp'](gps);
  195 + var htmlStr = $(cont).find('.cont-text-panel').html();
  196 +
  197 + $(wrap).html(htmlStr);
  198 +
  199 + //更新地图点位
  200 +
  201 + //console.log('refreshTooltip htmlStr', htmlStr, wrap);
  202 + };
  203 +
171 return { 204 return {
172 - update: updateFixedTip 205 + update: updateFixedTip,
  206 + refresh: refresh,
  207 + refreshTooltip: refreshTooltip
173 }; 208 };
174 })(); 209 })();