Commit 6a3374886921f66774dadca8cc6521e0009f140e

Authored by 王通
1 parent b509e67c

1.维修上报调整N

src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
... ... @@ -134,9 +134,8 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
134 134 * @throws
135 135 */
136 136 @RequestMapping(value = "/realOutAdjust", method = RequestMethod.POST)
137   - public Map<String, Object> realOutAdjust(@RequestParam Long id, @RequestParam String fcsjActual,
138   - @RequestParam String remarks) {
139   - return scheduleRealInfoService.realOutAdjust(id, fcsjActual, remarks);
  137 + public Map<String, Object> realOutAdjust(Map<String, String> map) {
  138 + return scheduleRealInfoService.realOutAdjust(map);
140 139 }
141 140  
142 141 /**
... ...
src/main/java/com/bsth/controller/sys/UserController.java
... ... @@ -118,6 +118,7 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
118 118  
119 119 captchaMap.remove(userName);
120 120 rs.put("status", ResponseCode.SUCCESS);
  121 + logger.error("用户:" + user.getUserName() + "登录");
121 122 } catch (Exception e) {
122 123 logger.error("", e);
123 124 rs.put("msg", "服务器出现异常,请联系管理员");
... ...
src/main/java/com/bsth/entity/report/RepairReport.java
... ... @@ -36,6 +36,8 @@ public class RepairReport {
36 36 private String departureTime;
37 37 // 报修类型
38 38 private String repairType;
  39 + // 业务类型
  40 + private String reportType;
39 41 // 报修时间
40 42 private Date reportDate;
41 43 // 格式化的时间字符串
... ... @@ -121,6 +123,14 @@ public class RepairReport {
121 123 this.repairType = repairType;
122 124 }
123 125  
  126 + public String getReportType() {
  127 + return reportType;
  128 + }
  129 +
  130 + public void setReportType(String reportType) {
  131 + this.reportType = reportType;
  132 + }
  133 +
124 134 public Date getReportDate() {
125 135 return reportDate;
126 136 }
... ...
src/main/java/com/bsth/listener/SessionListener.java 0 → 100644
  1 +package com.bsth.listener;
  2 +
  3 +import javax.servlet.http.HttpSessionEvent;
  4 +import javax.servlet.http.HttpSessionListener;
  5 +
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.stereotype.Component;
  9 +
  10 +import com.bsth.common.Constants;
  11 +
  12 +@Component
  13 +public class SessionListener implements HttpSessionListener {
  14 +
  15 + private final static Logger log = LoggerFactory.getLogger(SessionListener.class);
  16 +
  17 + @Override
  18 + public void sessionCreated(HttpSessionEvent se) {
  19 + // TODO Auto-generated method stub
  20 +
  21 + }
  22 +
  23 + @Override
  24 + public void sessionDestroyed(HttpSessionEvent se) {
  25 + // TODO Auto-generated method stub
  26 + log.error("用户:" + se.getSession().getAttribute(Constants.SESSION_USERNAME) + "登出");
  27 + }
  28 +}
  29 +
... ...
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
... ... @@ -78,7 +78,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
78 78  
79 79 Map<Integer, Integer> trustStatus(String lineCodes);
80 80  
81   - Map<String, Object> realOutAdjust(Long id, String fcsjActual, String remarks);
  81 + Map<String, Object> realOutAdjust(Map<String, String> map);
82 82  
83 83 Map<String, Object> revokeDestroy(Long id);
84 84  
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
1 1 package com.bsth.service.realcontrol.impl;
2 2  
  3 +import java.io.ByteArrayOutputStream;
  4 +import java.io.File;
  5 +import java.io.IOException;
  6 +import java.io.InputStream;
  7 +import java.net.HttpURLConnection;
  8 +import java.net.URL;
  9 +import java.sql.ResultSet;
  10 +import java.sql.SQLException;
  11 +import java.text.DecimalFormat;
  12 +import java.text.ParseException;
  13 +import java.text.SimpleDateFormat;
  14 +import java.util.ArrayList;
  15 +import java.util.Calendar;
  16 +import java.util.Collection;
  17 +import java.util.Collections;
  18 +import java.util.Comparator;
  19 +import java.util.Date;
  20 +import java.util.GregorianCalendar;
  21 +import java.util.HashMap;
  22 +import java.util.HashSet;
  23 +import java.util.Iterator;
  24 +import java.util.List;
  25 +import java.util.Map;
  26 +import java.util.Queue;
  27 +import java.util.Set;
  28 +import java.util.concurrent.ConcurrentLinkedQueue;
  29 +import java.util.concurrent.Executors;
  30 +import java.util.concurrent.ScheduledExecutorService;
  31 +import java.util.concurrent.ThreadFactory;
  32 +import java.util.concurrent.TimeUnit;
  33 +import java.util.regex.Pattern;
  34 +
  35 +import org.apache.commons.io.IOUtils;
  36 +import org.apache.commons.lang3.StringEscapeUtils;
  37 +import org.apache.commons.lang3.StringUtils;
  38 +import org.joda.time.format.DateTimeFormat;
  39 +import org.joda.time.format.DateTimeFormatter;
  40 +import org.slf4j.Logger;
  41 +import org.slf4j.LoggerFactory;
  42 +import org.springframework.beans.factory.DisposableBean;
  43 +import org.springframework.beans.factory.InitializingBean;
  44 +import org.springframework.beans.factory.annotation.Autowired;
  45 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  46 +import org.springframework.jdbc.core.JdbcTemplate;
  47 +import org.springframework.jdbc.core.RowMapper;
  48 +import org.springframework.stereotype.Service;
  49 +import org.springframework.transaction.annotation.Transactional;
  50 +
3 51 import com.alibaba.fastjson.JSON;
4 52 import com.alibaba.fastjson.JSONArray;
5 53 import com.alibaba.fastjson.JSONObject;
... ... @@ -66,7 +114,16 @@ import com.bsth.service.report.ReportService;
66 114 import com.bsth.service.schedule.SchedulePlanInfoService;
67 115 import com.bsth.service.sys.DictionaryService;
68 116 import com.bsth.service.sys.DutyEmployeeService;
69   -import com.bsth.util.*;
  117 +import com.bsth.util.Arith;
  118 +import com.bsth.util.ComparableChild;
  119 +import com.bsth.util.ComparableLp;
  120 +import com.bsth.util.ComparableReal;
  121 +import com.bsth.util.ConfigUtil;
  122 +import com.bsth.util.DateUtils;
  123 +import com.bsth.util.ReportRelatedUtils;
  124 +import com.bsth.util.ReportUtils;
  125 +import com.bsth.util.TimeUtils;
  126 +import com.bsth.util.TransGPS;
70 127 import com.bsth.websocket.handler.SendUtils;
71 128 import com.fasterxml.jackson.databind.ObjectMapper;
72 129 import com.github.stuxuhai.jpinyin.PinyinException;
... ... @@ -75,37 +132,9 @@ import com.github.stuxuhai.jpinyin.PinyinHelper;
75 132 import com.google.common.base.Splitter;
76 133 import com.google.common.collect.Lists;
77 134  
78   -import org.apache.commons.io.IOUtils;
79   -import org.apache.commons.lang3.StringEscapeUtils;
80   -import org.apache.commons.lang3.StringUtils;
81   -import org.joda.time.format.DateTimeFormat;
82   -import org.joda.time.format.DateTimeFormatter;
83   -import org.slf4j.Logger;
84   -import org.slf4j.LoggerFactory;
85   -import org.springframework.beans.factory.annotation.Autowired;
86   -import org.springframework.jdbc.core.BeanPropertyRowMapper;
87   -import org.springframework.jdbc.core.JdbcTemplate;
88   -import org.springframework.jdbc.core.RowMapper;
89   -import org.springframework.stereotype.Service;
90   -import org.springframework.transaction.annotation.Transactional;
91   -
92   -import java.io.ByteArrayOutputStream;
93   -import java.io.File;
94   -import java.io.IOException;
95   -import java.io.InputStream;
96   -import java.net.HttpURLConnection;
97   -import java.net.URL;
98   -import java.sql.ResultSet;
99   -import java.sql.SQLException;
100   -import java.text.DecimalFormat;
101   -import java.text.ParseException;
102   -import java.text.SimpleDateFormat;
103   -import java.util.*;
104   -import java.util.regex.Pattern;
105   -
106 135 @Service
107 136 public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long>
108   - implements ScheduleRealInfoService {
  137 + implements ScheduleRealInfoService, InitializingBean, DisposableBean {
109 138 @Autowired
110 139 JdbcTemplate jdbcTemplate;
111 140 @Autowired
... ... @@ -186,6 +215,30 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
186 215  
187 216 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
188 217 sdfSimple = new SimpleDateFormat("yyyyMMdd");
  218 +
  219 + private Queue<RepairReport> queue = new ConcurrentLinkedQueue<>();
  220 +
  221 + private ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
  222 +
  223 + @Override
  224 + public Thread newThread(Runnable r) {
  225 + // TODO Auto-generated method stub
  226 + Thread t = new Thread(r);
  227 + t.setName("RepairReportReissuer");
  228 +
  229 + return t;
  230 + }
  231 + });
  232 +
  233 + private static Map<String, String> report2repair = new HashMap<String, String>();
  234 +
  235 + static {
  236 + report2repair.put("9101", "9109");
  237 + report2repair.put("9102", "9102");
  238 + report2repair.put("9103", "9103");
  239 + report2repair.put("9104", "9104");
  240 + report2repair.put("9109", "9109");
  241 + }
189 242  
190 243  
191 244 /**
... ... @@ -1379,10 +1432,20 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1379 1432 }
1380 1433  
1381 1434 @Override
1382   - public Map<String, Object> realOutAdjust(Long id, String fcsjActual, String remarks) {
  1435 + public Map<String, Object> realOutAdjust(Map<String, String> map) {
1383 1436 Map<String, Object> rs = new HashMap<>();
1384 1437 List<ScheduleRealInfo> ts = new ArrayList<>();
1385 1438 try {
  1439 + // 维修上报
  1440 + if (StringUtils.isNotBlank(map.get("reportTypes"))) {
  1441 + Map<String, Object> param = new HashMap<String, Object>();
  1442 + param.putAll(map);
  1443 + rs = repairReport(param, false);
  1444 + }
  1445 +
  1446 + Long id = Long.parseLong(map.get("id"));
  1447 + String remarks = map.get("remarks"), fcsjActual = map.get("fcsjActual");
  1448 +
1386 1449 ScheduleRealInfo sch = dayOfSchedule.get(id);
1387 1450  
1388 1451 LineConfig config = lineConfigData.get(sch.getXlBm());
... ... @@ -1541,7 +1604,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1541 1604 List<ScheduleRealInfo> ts = new ArrayList<>();
1542 1605 try {
1543 1606 // 维修上报
1544   - if (StringUtils.isNotBlank(map.get("repairTypes"))) {
  1607 + if (StringUtils.isNotBlank(map.get("reportTypes"))) {
1545 1608 Map<String, Object> param = new HashMap<String, Object>();
1546 1609 param.putAll(map);
1547 1610 rs = repairReport(param, false);
... ... @@ -6113,14 +6176,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6113 6176  
6114 6177 int reportState = -1;
6115 6178 SysUser user = SecurityUtils.getCurrentUser();
6116   - String reportUser = user.getUserName(), reportName = user.getName(), incode = (String)param.get("clZbh"), repairTypes = (String)param.get("repairTypes");
  6179 + String reportUser = user.getUserName(), reportName = user.getName(), incode = (String)param.get("clZbh"), reportTypes = (String)param.get("reportTypes"), repairTypes = reportType2RepairType(reportTypes);
6117 6180 // 分公司保存格式 分公司编码_公司编码
6118 6181 String val = BasicData.nbbm2FgsCompanyCodeMap.get(incode);
6119 6182 String[] arr = val.split("_");
6120 6183 StringBuilder url = new StringBuilder(ConfigUtil.get("http.report.url." + arr[1]));
6121 6184 url.append("?nbbm=").append(incode).append("&bxy=").append(reportUser).append("&bxbm=").append(repairTypes).append("&fgs=").append(arr[0]);
6122 6185  
6123   - int count = repairReportRepository.repairReportBySch(id, 0);
  6186 + int count = repairReportRepository.repairReportBySch(id, isActive ? 1 : 0);
6124 6187 if (count > 0) return res;
6125 6188 RepairReport lrr = dayOfSchedule.getLastestRepairReport(incode);
6126 6189 // 非主动上报并且无上报记录或上次已上报 则不用上报
... ... @@ -6140,15 +6203,47 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6140 6203 rr.setIncode(incode);
6141 6204 rr.setDepartureTime(sch.getFcsj());
6142 6205 rr.setRepairType(repairTypes);
  6206 + rr.setReportType(reportTypes);
6143 6207 rr.setReportDate(new Date());
6144 6208 rr.setReportState(reportState);
6145 6209 rr.setReportMode(isActive ? 1 : 0);
6146   - repairReportRepository.save(rr);
  6210 + rr = repairReportRepository.save(rr);
6147 6211 dayOfSchedule.setLastestRepairReport(rr);
  6212 + // 如果上报失败,放到重传队列
  6213 + if (rr.getReportState() == -1) queue.add(rr);
6148 6214  
6149 6215 return res;
6150 6216 }
6151 6217  
  6218 + private void repairReport(RepairReport rr) {
  6219 + int reportState = -1;
  6220 + // 分公司保存格式 分公司编码_公司编码
  6221 + String val = BasicData.nbbm2FgsCompanyCodeMap.get(rr.getIncode());
  6222 + String[] arr = val.split("_");
  6223 + StringBuilder url = new StringBuilder(ConfigUtil.get("http.report.url." + arr[1]));
  6224 + url.append("?nbbm=").append(rr.getIncode()).append("&bxy=").append(rr.getReportUser()).append("&bxbm=").append(rr.getRepairType()).append("&fgs=").append(arr[0]);
  6225 +
  6226 + Map<String, Object> res = request(url.toString());
  6227 + if (ResponseCode.SUCCESS.equals(res.get("status"))) reportState = 1;
  6228 + if (reportState == 1) {
  6229 + rr.setReportState(1);
  6230 + repairReportRepository.save(rr);
  6231 + }
  6232 + }
  6233 +
  6234 + /**
  6235 + ** 业务类型转报修类型
  6236 + */
  6237 + private String reportType2RepairType(String reportType) {
  6238 + String[] reportTypes = reportType.split(";");
  6239 + List<String> repairTypes = new ArrayList<>();
  6240 + for (String rt : reportTypes) {
  6241 + repairTypes.add(report2repair.get(rt));
  6242 + }
  6243 +
  6244 + return StringUtils.join(repairTypes, ";");
  6245 + }
  6246 +
6152 6247 @Override
6153 6248 public List<RepairReport> repairReportList(String lineId, String date, String incode, String type) {
6154 6249 List<RepairReport> result = new ArrayList<RepairReport>();
... ... @@ -6168,14 +6263,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6168 6263  
6169 6264 result = repairReportRepository.repairReportList(lineId, start, end, incode);
6170 6265 Map<String, Object> dMap=new HashMap<>();
6171   - dMap.put("dGroup", "repairtype");
  6266 + dMap.put("dGroup_eq", "repairtype");
6172 6267 Map<String, String> code2name = new HashMap<String, String>();
6173 6268 for (Dictionary dic : dictionaryService.list(dMap)) {
6174 6269 code2name.put(dic.getdCode(), dic.getdName());
6175 6270 }
6176 6271 for (RepairReport rr : result) {
6177   - String repairType = rr.getRepairType();
6178   - String[] types = repairType.split(";");
  6272 + String reportType = rr.getReportType();
  6273 + String[] types = reportType.split(";");
6179 6274 StringBuilder sb = new StringBuilder();
6180 6275  
6181 6276 for (String t : types) {
... ... @@ -6234,6 +6329,37 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6234 6329  
6235 6330 return result;
6236 6331 }
  6332 +
  6333 +
  6334 + @Override
  6335 + public void destroy() throws Exception {
  6336 + // TODO Auto-generated method stub
  6337 + exec.shutdown();
  6338 + }
  6339 +
  6340 +
  6341 + @Override
  6342 + public void afterPropertiesSet() throws Exception {
  6343 + // TODO Auto-generated method stub
  6344 + // 维修上报重发调度
  6345 + exec.scheduleAtFixedRate(new Runnable() {
  6346 +
  6347 + @Override
  6348 + public void run() {
  6349 + // TODO Auto-generated method stub
  6350 + try {
  6351 + Iterator<RepairReport> it = queue.iterator();
  6352 + while (it.hasNext()) {
  6353 + RepairReport rr = it.next();
  6354 + repairReport(rr);
  6355 + if (rr.getReportState() == 1) queue.remove(rr);
  6356 + }
  6357 + } catch (Exception e) {
  6358 + logger.error("维修上报重发错误", e);
  6359 + }
  6360 + }
  6361 + }, 30, 30, TimeUnit.MINUTES);
  6362 + }
6237 6363 }
6238 6364  
6239 6365 class AccountMap implements Comparator<Map<String, Object>> {
... ...
src/main/resources/static/pages/forms/mould/repairReport.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/repairReport.html
... ... @@ -56,7 +56,7 @@
56 56 <th>计划发车时间</th>
57 57 <th>上报人</th>
58 58 <th>上报时间</th>
59   - <th>故障类型</th>
  59 + <th>上报类型</th>
60 60 <th>上报状态</th>
61 61 </tr>
62 62 </thead>
... ... @@ -86,7 +86,6 @@
86 86 $.get('/report/lineList',function(xlList){
87 87 var data = [];
88 88 $.get('/user/companyData', function(result){
89   - debugger;
90 89 for(var i = 0; i < result.length; i++){
91 90 var companyCode = result[i].companyCode;
92 91 var children = result[i].children;
... ...
src/main/resources/static/real_control_v2/css/line_schedule.css
... ... @@ -370,15 +370,15 @@ span.fcsj-diff {
370 370 padding-left: 12px;
371 371 }
372 372  
373   -.repair-type-checkbox-list {
374   - height: 130px;
  373 +.report-type-checkbox-list {
  374 + height: 150px;
375 375 overflow: auto;
376 376 border: 1px solid #c4c4c4;
377 377 border-radius: 4px;
378 378 padding: 9px 0;
379 379 }
380 380  
381   -.repair-type-checkbox-list label {
  381 +.report-type-checkbox-list label {
382 382 display: block;
383 383 font-size: 14px;
384 384 border-bottom: 1px dashed #e6e3e3;
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/fcxxwt.html
... ... @@ -128,12 +128,12 @@
128 128 <div class="uk-grid">
129 129 <div class="uk-width-1-1">
130 130 <div class="uk-form-row">
131   - <label class="uk-form-label" >故障类型</label>
132   - <div class="uk-form-controls repair-type-checkbox-list">
133   - {{each repairTypes as repair i}}
  131 + <label class="uk-form-label" >上报类型</label>
  132 + <div class="uk-form-controls report-type-checkbox-list">
  133 + {{each reportTypes as report i}}
134 134 <label>
135   - <input class="i-cbox" name="repairTypes[]" value="{{repair.code}}" type="checkbox" title="{{repair.name}}">
136   - {{repair.name}}
  135 + <input class="i-cbox" name="reportTypes[]" value="{{report.code}}" type="checkbox" title="{{report.name}}">
  136 + {{report.name}}
137 137 </label>
138 138 {{/each}}
139 139 </div>
... ... @@ -181,13 +181,13 @@
181 181 <script>
182 182 (function() {
183 183 var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];
184   - var repairTypes = [{name:"掉线", code:"9102"}, {name:"指令故障", code:"9103"}, {name:"车辆漂移", code:"9104"}, {name:"无到无出", code:"9109"}];
  184 + var reportTypes = [{name:"无到", code:"9101"}, {name:"无出", code:"9109"}, {name:"掉线", code:"9102"}, {name:"指令故障", code:"9103"}, {name:"车辆漂移", code:"9104"}];
185 185 var modal = '#schedule-fcxxwt-modal'
186 186 ,sch;
187 187 $(modal).on('init', function(e, data) {
188 188 e.stopPropagation();
189 189 sch=data.sch;
190   - var formHtml = template('schedule-fcxxwt-form-temp', {sch: sch, adjustExps:adjustExps, repairTypes:repairTypes});
  190 + var formHtml = template('schedule-fcxxwt-form-temp', {sch: sch, adjustExps:adjustExps, reportTypes:reportTypes});
191 191 $('form', modal).html(formHtml);
192 192 $('input:checkbox').click(function(){
193 193 var remark = $('[name=remarks]').val(), title = $(this).prop("title");
... ... @@ -210,19 +210,17 @@
210 210 //售票员
211 211 gb_common.personAutocomplete($('.spy-autocom', modal));
212 212 // 维修类型选中
213   - var initRepair = function() {
  213 + var initReport = function() {
214 214 var remark = $('[name=remarks]').val(), items = remark.split(';');
215 215 for (var i = 0;i < items.length;i++) {
216   - if (items[i].length > 2) {
217   - for (var j = 0;j < repairTypes.length;j++) {
218   - if (items[i] == repairTypes[j].name) {
219   - $('input:checkbox[value=' + repairTypes[j].code + ']').prop('checked', true);
220   - }
221   - }
222   - }
  216 + for (var j = 0;j < reportTypes.length;j++) {
  217 + if (items[i] == reportTypes[j].name) {
  218 + $('input:checkbox[value=' + reportTypes[j].code + ']').prop('checked', true);
  219 + }
  220 + }
223 221 }
224 222 }
225   - initRepair();
  223 + initReport();
226 224  
227 225 //submit
228 226 var f = $('form', modal).formValidation(gb_form_validation_opts);
... ... @@ -241,7 +239,7 @@
241 239 //修改里程
242 240 var editJhlc = data.jhlc != sch.jhlc && data.jhlc != 0;
243 241 // 修改报修类型为字符串
244   - if (data.repairTypes) data.repairTypes = data.repairTypes.join(";");
  242 + if (data.reportTypes) data.reportTypes = data.reportTypes.join(";");
245 243 if(!data.adjustExps && (data.status==-1 || normalDestory || editJhlc)){
246 244 notify_err("当前操作需要选择调整原因!");
247 245 return;
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sftz.html
... ... @@ -8,13 +8,13 @@
8 8 </div>
9 9  
10 10 <script id="schedule-sftz-form-temp" type="text/html">
11   - <input type="hidden" name="id" value="{{id}}" />
  11 + <input type="hidden" name="id" value="{{sch.id}}" />
12 12 <div class="uk-grid">
13 13 <div class="uk-width-1-1">
14 14 <div class="uk-form-row">
15 15 <label class="uk-form-label" >车辆</label>
16 16 <div class="uk-form-controls">
17   - <input type="text" value="{{clZbh}}" disabled>
  17 + <input type="text" value="{{sch.clZbh}}" disabled>
18 18 </div>
19 19 </div>
20 20 </div>
... ... @@ -24,7 +24,7 @@
24 24 <div class="uk-form-row">
25 25 <label class="uk-form-label" >路牌</label>
26 26 <div class="uk-form-controls">
27   - <input type="text" value="{{lpName}}" disabled>
  27 + <input type="text" value="{{sch.lpName}}" disabled>
28 28 </div>
29 29 </div>
30 30 </div>
... ... @@ -34,7 +34,7 @@
34 34 <div class="uk-form-row">
35 35 <label class="uk-form-label" >计发时刻</label>
36 36 <div class="uk-form-controls">
37   - <input type="text" value="{{fcsj}}" disabled>
  37 + <input type="text" value="{{sch.fcsj}}" disabled>
38 38 </div>
39 39 </div>
40 40 </div>
... ... @@ -44,7 +44,22 @@
44 44 <div class="uk-form-row">
45 45 <label class="uk-form-label" >实发时刻</label>
46 46 <div class="uk-form-controls">
47   - <input type="time" name="fcsjActual" value="{{fcsjActual}}" required autofocus>
  47 + <input type="time" name="fcsjActual" value="{{sch.fcsjActual}}" required autofocus>
  48 + </div>
  49 + </div>
  50 + </div>
  51 + </div>
  52 + <div class="uk-grid">
  53 + <div class="uk-width-1-1">
  54 + <div class="uk-form-row">
  55 + <label class="uk-form-label" >上报类型</label>
  56 + <div class="uk-form-controls report-type-checkbox-list">
  57 + {{each reportTypes as report i}}
  58 + <label>
  59 + <input class="i-cbox" name="reportTypes[]" value="{{report.code}}" type="checkbox" title="{{report.name}}">
  60 + {{report.name}}
  61 + </label>
  62 + {{/each}}
48 63 </div>
49 64 </div>
50 65 </div>
... ... @@ -54,7 +69,7 @@
54 69 <div class="uk-form-row ct-stacked">
55 70 <label class="uk-form-label" for="form-s-t">调整说明<small class="font-danger">(不超过20个字符)</small></label>
56 71 <div class="uk-form-controls">
57   - <textarea id="form-s-t" cols="30" rows="5" name="remarks" required data-fv-stringlength="true" data-fv-stringlength-max="20" placeholder="不超过20个字符。必填">{{remarks}}</textarea>
  72 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" required data-fv-stringlength="true" data-fv-stringlength-max="20" placeholder="不超过20个字符。必填">{{sch.remarks}}</textarea>
58 73 </div>
59 74 </div>
60 75 </div>
... ... @@ -70,10 +85,11 @@
70 85 (function() {
71 86 var modal = '#schedule-sftz-modal',
72 87 sch;
  88 + var reportTypes = [{name:"无到", code:"9101"}, {name:"无出", code:"9109"}, {name:"掉线", code:"9102"}, {name:"指令故障", code:"9103"}, {name:"车辆漂移", code:"9104"}];
73 89 $(modal).on('init', function(e, data) {
74 90 e.stopPropagation();
75 91 sch = data.sch;
76   - var formHtml = template('schedule-sftz-form-temp', sch);
  92 + var formHtml = template('schedule-sftz-form-temp', {sch: sch, reportTypes:reportTypes});
77 93 $('form', modal).html(formHtml);
78 94  
79 95 //submit
... ... @@ -82,6 +98,8 @@
82 98 e.preventDefault();
83 99 var data = $(this).serializeJSON();
84 100  
  101 + // 修改报修类型为字符串
  102 + if (data.reportTypes) data.reportTypes = data.reportTypes.join(";");
85 103 gb_common.$post('/realSchedule/realOutAdjust', data, function(rs) {
86 104 if (rs.ts) {
87 105 //更新前端数据
... ... @@ -94,6 +112,19 @@
94 112 }
95 113 });
96 114 });
  115 +
  116 + // 维修类型选中
  117 + var initReport = function() {
  118 + var remark = $('[name=remarks]').val(), items = remark.split(';');
  119 + for (var i = 0;i < items.length;i++) {
  120 + for (var j = 0;j < reportTypes.length;j++) {
  121 + if (items[i] == reportTypes[j].name) {
  122 + $('input:checkbox[value=' + reportTypes[j].code + ']').prop('checked', true);
  123 + }
  124 + }
  125 + }
  126 + }
  127 + initReport();
97 128 });
98 129 })();
99 130 </script>
... ...
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
... ... @@ -91,7 +91,7 @@ var gb_schedule_context_menu = (function () {
91 91 }, '确认撤销');
92 92 },
93 93 sftz: function (sch) {
94   - open_modal(folder + '/sftz.html', {
  94 + open_modal(folder + '/sftz.html?r=' + Math.random(), {
95 95 sch: sch
96 96 }, modal_opts);
97 97 },
... ... @@ -114,7 +114,7 @@ var gb_schedule_context_menu = (function () {
114 114 }, '确认撤销实发');
115 115 },
116 116 fcxxwt: function (sch) {
117   - open_modal(folder + '/fcxxwt.html', {
  117 + open_modal(folder + '/fcxxwt.html?r=' + Math.random(), {
118 118 sch: sch
119 119 }, modal_opts);
120 120 },
... ...
src/main/resources/static/real_control_v2/js/north/toolbar.js
... ... @@ -11,7 +11,6 @@ var gb_northToolbar = (function () {
11 11 });
12 12  
13 13 $.get('/real_control_v2/js/data/json/north_toolbar.json', function (data) {
14   - debugger;
15 14 ep.emit("data", data);
16 15 });
17 16  
... ...
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v3/right.html
... ... @@ -304,7 +304,6 @@
304 304 circleLine = circleLine && circlePrevStop != circleFirstStop ? true : false;
305 305 circlePrevStop = gps.stopNo;
306 306 if (autoChange && (gps.lineId != xlPolyline.lineId || gps.upDown != xlPolyline.upDown || circleLine) || xlPolyline.lineVersion != lineVersion) {
307   - debugger;
308 307 drawXlPolyline(gps.lineId, gps.upDown, lineVersion);
309 308 }
310 309 }
... ... @@ -344,7 +343,6 @@
344 343  
345 344 function drawRoadPolyline(lineCode, upDown, lineVersion) {
346 345 //从localStorage获取路段
347   - //debugger;
348 346 if (lineVersion==0)
349 347 routes = JSON.parse(storage.getItem(lineCode + '_route'));
350 348 else
... ...