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,9 +134,8 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
134 * @throws 134 * @throws
135 */ 135 */
136 @RequestMapping(value = "/realOutAdjust", method = RequestMethod.POST) 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,6 +118,7 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
118 118
119 captchaMap.remove(userName); 119 captchaMap.remove(userName);
120 rs.put("status", ResponseCode.SUCCESS); 120 rs.put("status", ResponseCode.SUCCESS);
  121 + logger.error("用户:" + user.getUserName() + "登录");
121 } catch (Exception e) { 122 } catch (Exception e) {
122 logger.error("", e); 123 logger.error("", e);
123 rs.put("msg", "服务器出现异常,请联系管理员"); 124 rs.put("msg", "服务器出现异常,请联系管理员");
src/main/java/com/bsth/entity/report/RepairReport.java
@@ -36,6 +36,8 @@ public class RepairReport { @@ -36,6 +36,8 @@ public class RepairReport {
36 private String departureTime; 36 private String departureTime;
37 // 报修类型 37 // 报修类型
38 private String repairType; 38 private String repairType;
  39 + // 业务类型
  40 + private String reportType;
39 // 报修时间 41 // 报修时间
40 private Date reportDate; 42 private Date reportDate;
41 // 格式化的时间字符串 43 // 格式化的时间字符串
@@ -121,6 +123,14 @@ public class RepairReport { @@ -121,6 +123,14 @@ public class RepairReport {
121 this.repairType = repairType; 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 public Date getReportDate() { 134 public Date getReportDate() {
125 return reportDate; 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,7 +78,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
78 78
79 Map<Integer, Integer> trustStatus(String lineCodes); 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 Map<String, Object> revokeDestroy(Long id); 83 Map<String, Object> revokeDestroy(Long id);
84 84
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
1 package com.bsth.service.realcontrol.impl; 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 import com.alibaba.fastjson.JSON; 51 import com.alibaba.fastjson.JSON;
4 import com.alibaba.fastjson.JSONArray; 52 import com.alibaba.fastjson.JSONArray;
5 import com.alibaba.fastjson.JSONObject; 53 import com.alibaba.fastjson.JSONObject;
@@ -66,7 +114,16 @@ import com.bsth.service.report.ReportService; @@ -66,7 +114,16 @@ import com.bsth.service.report.ReportService;
66 import com.bsth.service.schedule.SchedulePlanInfoService; 114 import com.bsth.service.schedule.SchedulePlanInfoService;
67 import com.bsth.service.sys.DictionaryService; 115 import com.bsth.service.sys.DictionaryService;
68 import com.bsth.service.sys.DutyEmployeeService; 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 import com.bsth.websocket.handler.SendUtils; 127 import com.bsth.websocket.handler.SendUtils;
71 import com.fasterxml.jackson.databind.ObjectMapper; 128 import com.fasterxml.jackson.databind.ObjectMapper;
72 import com.github.stuxuhai.jpinyin.PinyinException; 129 import com.github.stuxuhai.jpinyin.PinyinException;
@@ -75,37 +132,9 @@ import com.github.stuxuhai.jpinyin.PinyinHelper; @@ -75,37 +132,9 @@ import com.github.stuxuhai.jpinyin.PinyinHelper;
75 import com.google.common.base.Splitter; 132 import com.google.common.base.Splitter;
76 import com.google.common.collect.Lists; 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 @Service 135 @Service
107 public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long> 136 public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long>
108 - implements ScheduleRealInfoService { 137 + implements ScheduleRealInfoService, InitializingBean, DisposableBean {
109 @Autowired 138 @Autowired
110 JdbcTemplate jdbcTemplate; 139 JdbcTemplate jdbcTemplate;
111 @Autowired 140 @Autowired
@@ -186,6 +215,30 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -186,6 +215,30 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
186 215
187 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), 216 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
188 sdfSimple = new SimpleDateFormat("yyyyMMdd"); 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,10 +1432,20 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1379 } 1432 }
1380 1433
1381 @Override 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 Map<String, Object> rs = new HashMap<>(); 1436 Map<String, Object> rs = new HashMap<>();
1384 List<ScheduleRealInfo> ts = new ArrayList<>(); 1437 List<ScheduleRealInfo> ts = new ArrayList<>();
1385 try { 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 ScheduleRealInfo sch = dayOfSchedule.get(id); 1449 ScheduleRealInfo sch = dayOfSchedule.get(id);
1387 1450
1388 LineConfig config = lineConfigData.get(sch.getXlBm()); 1451 LineConfig config = lineConfigData.get(sch.getXlBm());
@@ -1541,7 +1604,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1541,7 +1604,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1541 List<ScheduleRealInfo> ts = new ArrayList<>(); 1604 List<ScheduleRealInfo> ts = new ArrayList<>();
1542 try { 1605 try {
1543 // 维修上报 1606 // 维修上报
1544 - if (StringUtils.isNotBlank(map.get("repairTypes"))) { 1607 + if (StringUtils.isNotBlank(map.get("reportTypes"))) {
1545 Map<String, Object> param = new HashMap<String, Object>(); 1608 Map<String, Object> param = new HashMap<String, Object>();
1546 param.putAll(map); 1609 param.putAll(map);
1547 rs = repairReport(param, false); 1610 rs = repairReport(param, false);
@@ -6113,14 +6176,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -6113,14 +6176,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6113 6176
6114 int reportState = -1; 6177 int reportState = -1;
6115 SysUser user = SecurityUtils.getCurrentUser(); 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 String val = BasicData.nbbm2FgsCompanyCodeMap.get(incode); 6181 String val = BasicData.nbbm2FgsCompanyCodeMap.get(incode);
6119 String[] arr = val.split("_"); 6182 String[] arr = val.split("_");
6120 StringBuilder url = new StringBuilder(ConfigUtil.get("http.report.url." + arr[1])); 6183 StringBuilder url = new StringBuilder(ConfigUtil.get("http.report.url." + arr[1]));
6121 url.append("?nbbm=").append(incode).append("&bxy=").append(reportUser).append("&bxbm=").append(repairTypes).append("&fgs=").append(arr[0]); 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 if (count > 0) return res; 6187 if (count > 0) return res;
6125 RepairReport lrr = dayOfSchedule.getLastestRepairReport(incode); 6188 RepairReport lrr = dayOfSchedule.getLastestRepairReport(incode);
6126 // 非主动上报并且无上报记录或上次已上报 则不用上报 6189 // 非主动上报并且无上报记录或上次已上报 则不用上报
@@ -6140,15 +6203,47 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -6140,15 +6203,47 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6140 rr.setIncode(incode); 6203 rr.setIncode(incode);
6141 rr.setDepartureTime(sch.getFcsj()); 6204 rr.setDepartureTime(sch.getFcsj());
6142 rr.setRepairType(repairTypes); 6205 rr.setRepairType(repairTypes);
  6206 + rr.setReportType(reportTypes);
6143 rr.setReportDate(new Date()); 6207 rr.setReportDate(new Date());
6144 rr.setReportState(reportState); 6208 rr.setReportState(reportState);
6145 rr.setReportMode(isActive ? 1 : 0); 6209 rr.setReportMode(isActive ? 1 : 0);
6146 - repairReportRepository.save(rr); 6210 + rr = repairReportRepository.save(rr);
6147 dayOfSchedule.setLastestRepairReport(rr); 6211 dayOfSchedule.setLastestRepairReport(rr);
  6212 + // 如果上报失败,放到重传队列
  6213 + if (rr.getReportState() == -1) queue.add(rr);
6148 6214
6149 return res; 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 @Override 6247 @Override
6153 public List<RepairReport> repairReportList(String lineId, String date, String incode, String type) { 6248 public List<RepairReport> repairReportList(String lineId, String date, String incode, String type) {
6154 List<RepairReport> result = new ArrayList<RepairReport>(); 6249 List<RepairReport> result = new ArrayList<RepairReport>();
@@ -6168,14 +6263,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -6168,14 +6263,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6168 6263
6169 result = repairReportRepository.repairReportList(lineId, start, end, incode); 6264 result = repairReportRepository.repairReportList(lineId, start, end, incode);
6170 Map<String, Object> dMap=new HashMap<>(); 6265 Map<String, Object> dMap=new HashMap<>();
6171 - dMap.put("dGroup", "repairtype"); 6266 + dMap.put("dGroup_eq", "repairtype");
6172 Map<String, String> code2name = new HashMap<String, String>(); 6267 Map<String, String> code2name = new HashMap<String, String>();
6173 for (Dictionary dic : dictionaryService.list(dMap)) { 6268 for (Dictionary dic : dictionaryService.list(dMap)) {
6174 code2name.put(dic.getdCode(), dic.getdName()); 6269 code2name.put(dic.getdCode(), dic.getdName());
6175 } 6270 }
6176 for (RepairReport rr : result) { 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 StringBuilder sb = new StringBuilder(); 6274 StringBuilder sb = new StringBuilder();
6180 6275
6181 for (String t : types) { 6276 for (String t : types) {
@@ -6234,6 +6329,37 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -6234,6 +6329,37 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6234 6329
6235 return result; 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 class AccountMap implements Comparator<Map<String, Object>> { 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,7 +56,7 @@
56 <th>计划发车时间</th> 56 <th>计划发车时间</th>
57 <th>上报人</th> 57 <th>上报人</th>
58 <th>上报时间</th> 58 <th>上报时间</th>
59 - <th>故障类型</th> 59 + <th>上报类型</th>
60 <th>上报状态</th> 60 <th>上报状态</th>
61 </tr> 61 </tr>
62 </thead> 62 </thead>
@@ -86,7 +86,6 @@ @@ -86,7 +86,6 @@
86 $.get('/report/lineList',function(xlList){ 86 $.get('/report/lineList',function(xlList){
87 var data = []; 87 var data = [];
88 $.get('/user/companyData', function(result){ 88 $.get('/user/companyData', function(result){
89 - debugger;  
90 for(var i = 0; i < result.length; i++){ 89 for(var i = 0; i < result.length; i++){
91 var companyCode = result[i].companyCode; 90 var companyCode = result[i].companyCode;
92 var children = result[i].children; 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,15 +370,15 @@ span.fcsj-diff {
370 padding-left: 12px; 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 overflow: auto; 375 overflow: auto;
376 border: 1px solid #c4c4c4; 376 border: 1px solid #c4c4c4;
377 border-radius: 4px; 377 border-radius: 4px;
378 padding: 9px 0; 378 padding: 9px 0;
379 } 379 }
380 380
381 -.repair-type-checkbox-list label { 381 +.report-type-checkbox-list label {
382 display: block; 382 display: block;
383 font-size: 14px; 383 font-size: 14px;
384 border-bottom: 1px dashed #e6e3e3; 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,12 +128,12 @@
128 <div class="uk-grid"> 128 <div class="uk-grid">
129 <div class="uk-width-1-1"> 129 <div class="uk-width-1-1">
130 <div class="uk-form-row"> 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 <label> 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 </label> 137 </label>
138 {{/each}} 138 {{/each}}
139 </div> 139 </div>
@@ -181,13 +181,13 @@ @@ -181,13 +181,13 @@
181 <script> 181 <script>
182 (function() { 182 (function() {
183 var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他']; 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 var modal = '#schedule-fcxxwt-modal' 185 var modal = '#schedule-fcxxwt-modal'
186 ,sch; 186 ,sch;
187 $(modal).on('init', function(e, data) { 187 $(modal).on('init', function(e, data) {
188 e.stopPropagation(); 188 e.stopPropagation();
189 sch=data.sch; 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 $('form', modal).html(formHtml); 191 $('form', modal).html(formHtml);
192 $('input:checkbox').click(function(){ 192 $('input:checkbox').click(function(){
193 var remark = $('[name=remarks]').val(), title = $(this).prop("title"); 193 var remark = $('[name=remarks]').val(), title = $(this).prop("title");
@@ -210,19 +210,17 @@ @@ -210,19 +210,17 @@
210 //售票员 210 //售票员
211 gb_common.personAutocomplete($('.spy-autocom', modal)); 211 gb_common.personAutocomplete($('.spy-autocom', modal));
212 // 维修类型选中 212 // 维修类型选中
213 - var initRepair = function() { 213 + var initReport = function() {
214 var remark = $('[name=remarks]').val(), items = remark.split(';'); 214 var remark = $('[name=remarks]').val(), items = remark.split(';');
215 for (var i = 0;i < items.length;i++) { 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 //submit 225 //submit
228 var f = $('form', modal).formValidation(gb_form_validation_opts); 226 var f = $('form', modal).formValidation(gb_form_validation_opts);
@@ -241,7 +239,7 @@ @@ -241,7 +239,7 @@
241 //修改里程 239 //修改里程
242 var editJhlc = data.jhlc != sch.jhlc && data.jhlc != 0; 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 if(!data.adjustExps && (data.status==-1 || normalDestory || editJhlc)){ 243 if(!data.adjustExps && (data.status==-1 || normalDestory || editJhlc)){
246 notify_err("当前操作需要选择调整原因!"); 244 notify_err("当前操作需要选择调整原因!");
247 return; 245 return;
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sftz.html
@@ -8,13 +8,13 @@ @@ -8,13 +8,13 @@
8 </div> 8 </div>
9 9
10 <script id="schedule-sftz-form-temp" type="text/html"> 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 <div class="uk-grid"> 12 <div class="uk-grid">
13 <div class="uk-width-1-1"> 13 <div class="uk-width-1-1">
14 <div class="uk-form-row"> 14 <div class="uk-form-row">
15 <label class="uk-form-label" >车辆</label> 15 <label class="uk-form-label" >车辆</label>
16 <div class="uk-form-controls"> 16 <div class="uk-form-controls">
17 - <input type="text" value="{{clZbh}}" disabled> 17 + <input type="text" value="{{sch.clZbh}}" disabled>
18 </div> 18 </div>
19 </div> 19 </div>
20 </div> 20 </div>
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 <div class="uk-form-row"> 24 <div class="uk-form-row">
25 <label class="uk-form-label" >路牌</label> 25 <label class="uk-form-label" >路牌</label>
26 <div class="uk-form-controls"> 26 <div class="uk-form-controls">
27 - <input type="text" value="{{lpName}}" disabled> 27 + <input type="text" value="{{sch.lpName}}" disabled>
28 </div> 28 </div>
29 </div> 29 </div>
30 </div> 30 </div>
@@ -34,7 +34,7 @@ @@ -34,7 +34,7 @@
34 <div class="uk-form-row"> 34 <div class="uk-form-row">
35 <label class="uk-form-label" >计发时刻</label> 35 <label class="uk-form-label" >计发时刻</label>
36 <div class="uk-form-controls"> 36 <div class="uk-form-controls">
37 - <input type="text" value="{{fcsj}}" disabled> 37 + <input type="text" value="{{sch.fcsj}}" disabled>
38 </div> 38 </div>
39 </div> 39 </div>
40 </div> 40 </div>
@@ -44,7 +44,22 @@ @@ -44,7 +44,22 @@
44 <div class="uk-form-row"> 44 <div class="uk-form-row">
45 <label class="uk-form-label" >实发时刻</label> 45 <label class="uk-form-label" >实发时刻</label>
46 <div class="uk-form-controls"> 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 </div> 63 </div>
49 </div> 64 </div>
50 </div> 65 </div>
@@ -54,7 +69,7 @@ @@ -54,7 +69,7 @@
54 <div class="uk-form-row ct-stacked"> 69 <div class="uk-form-row ct-stacked">
55 <label class="uk-form-label" for="form-s-t">调整说明<small class="font-danger">(不超过20个字符)</small></label> 70 <label class="uk-form-label" for="form-s-t">调整说明<small class="font-danger">(不超过20个字符)</small></label>
56 <div class="uk-form-controls"> 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 </div> 73 </div>
59 </div> 74 </div>
60 </div> 75 </div>
@@ -70,10 +85,11 @@ @@ -70,10 +85,11 @@
70 (function() { 85 (function() {
71 var modal = '#schedule-sftz-modal', 86 var modal = '#schedule-sftz-modal',
72 sch; 87 sch;
  88 + var reportTypes = [{name:"无到", code:"9101"}, {name:"无出", code:"9109"}, {name:"掉线", code:"9102"}, {name:"指令故障", code:"9103"}, {name:"车辆漂移", code:"9104"}];
73 $(modal).on('init', function(e, data) { 89 $(modal).on('init', function(e, data) {
74 e.stopPropagation(); 90 e.stopPropagation();
75 sch = data.sch; 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 $('form', modal).html(formHtml); 93 $('form', modal).html(formHtml);
78 94
79 //submit 95 //submit
@@ -82,6 +98,8 @@ @@ -82,6 +98,8 @@
82 e.preventDefault(); 98 e.preventDefault();
83 var data = $(this).serializeJSON(); 99 var data = $(this).serializeJSON();
84 100
  101 + // 修改报修类型为字符串
  102 + if (data.reportTypes) data.reportTypes = data.reportTypes.join(";");
85 gb_common.$post('/realSchedule/realOutAdjust', data, function(rs) { 103 gb_common.$post('/realSchedule/realOutAdjust', data, function(rs) {
86 if (rs.ts) { 104 if (rs.ts) {
87 //更新前端数据 105 //更新前端数据
@@ -94,6 +112,19 @@ @@ -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 </script> 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,7 +91,7 @@ var gb_schedule_context_menu = (function () {
91 }, '确认撤销'); 91 }, '确认撤销');
92 }, 92 },
93 sftz: function (sch) { 93 sftz: function (sch) {
94 - open_modal(folder + '/sftz.html', { 94 + open_modal(folder + '/sftz.html?r=' + Math.random(), {
95 sch: sch 95 sch: sch
96 }, modal_opts); 96 }, modal_opts);
97 }, 97 },
@@ -114,7 +114,7 @@ var gb_schedule_context_menu = (function () { @@ -114,7 +114,7 @@ var gb_schedule_context_menu = (function () {
114 }, '确认撤销实发'); 114 }, '确认撤销实发');
115 }, 115 },
116 fcxxwt: function (sch) { 116 fcxxwt: function (sch) {
117 - open_modal(folder + '/fcxxwt.html', { 117 + open_modal(folder + '/fcxxwt.html?r=' + Math.random(), {
118 sch: sch 118 sch: sch
119 }, modal_opts); 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,7 +11,6 @@ var gb_northToolbar = (function () {
11 }); 11 });
12 12
13 $.get('/real_control_v2/js/data/json/north_toolbar.json', function (data) { 13 $.get('/real_control_v2/js/data/json/north_toolbar.json', function (data) {
14 - debugger;  
15 ep.emit("data", data); 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,7 +304,6 @@
304 circleLine = circleLine && circlePrevStop != circleFirstStop ? true : false; 304 circleLine = circleLine && circlePrevStop != circleFirstStop ? true : false;
305 circlePrevStop = gps.stopNo; 305 circlePrevStop = gps.stopNo;
306 if (autoChange && (gps.lineId != xlPolyline.lineId || gps.upDown != xlPolyline.upDown || circleLine) || xlPolyline.lineVersion != lineVersion) { 306 if (autoChange && (gps.lineId != xlPolyline.lineId || gps.upDown != xlPolyline.upDown || circleLine) || xlPolyline.lineVersion != lineVersion) {
307 - debugger;  
308 drawXlPolyline(gps.lineId, gps.upDown, lineVersion); 307 drawXlPolyline(gps.lineId, gps.upDown, lineVersion);
309 } 308 }
310 } 309 }
@@ -344,7 +343,6 @@ @@ -344,7 +343,6 @@
344 343
345 function drawRoadPolyline(lineCode, upDown, lineVersion) { 344 function drawRoadPolyline(lineCode, upDown, lineVersion) {
346 //从localStorage获取路段 345 //从localStorage获取路段
347 - //debugger;  
348 if (lineVersion==0) 346 if (lineVersion==0)
349 routes = JSON.parse(storage.getItem(lineCode + '_route')); 347 routes = JSON.parse(storage.getItem(lineCode + '_route'));
350 else 348 else