Commit 2f9dd0cce853e92bc6fb59edfc5bb20d8f99a2a5
1 parent
24cac276
update...
Showing
17 changed files
with
448 additions
and
151 deletions
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
| ... | ... | @@ -48,7 +48,7 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, |
| 48 | 48 | public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks, |
| 49 | 49 | @RequestParam String dfsj,String bcType, |
| 50 | 50 | @RequestParam(defaultValue = "") String opType) { |
| 51 | - return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, bcType, opType); | |
| 51 | + return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, bcType, opType, null); | |
| 52 | 52 | } |
| 53 | 53 | |
| 54 | 54 | /** |
| ... | ... | @@ -59,7 +59,7 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, |
| 59 | 59 | public Map<String, Object> destroy(@RequestParam String idsStr |
| 60 | 60 | /*, @RequestParam(defaultValue = "-1") int spaceAdjust*/, |
| 61 | 61 | @RequestParam String remarks, @RequestParam String adjustExps/*, @RequestParam(defaultValue = "0") int spaceNum*/) { |
| 62 | - return scheduleRealInfoService.destroy(idsStr/*, spaceAdjust*/, remarks, adjustExps/*, spaceNum*/); | |
| 62 | + return scheduleRealInfoService.destroy(idsStr, remarks, adjustExps, null); | |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | 65 | /** |
| ... | ... | @@ -520,7 +520,7 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, |
| 520 | 520 | public Map<String, Object> multi_tzrc(@RequestParam String cpcsJson){ |
| 521 | 521 | cpcsJson = StringEscapeUtils.unescapeHtml4(cpcsJson); |
| 522 | 522 | List<ChangePersonCar> cpcs = JSONArray.parseArray(cpcsJson, ChangePersonCar.class); |
| 523 | - return scheduleRealInfoService.multi_tzrc(cpcs); | |
| 523 | + return scheduleRealInfoService.multi_tzrc(cpcs, null); | |
| 524 | 524 | } |
| 525 | 525 | |
| 526 | 526 | @RequestMapping(value="/multi_dftz", method=RequestMethod.POST) | ... | ... |
src/main/java/com/bsth/controller/realcontrol/ServiceDataInterface.java
| 1 | 1 | package com.bsth.controller.realcontrol; |
| 2 | 2 | |
| 3 | 3 | import com.alibaba.fastjson.JSON; |
| 4 | +import com.alibaba.fastjson.JSONArray; | |
| 5 | +import com.alibaba.fastjson.JSONObject; | |
| 6 | +import com.bsth.controller.realcontrol.dto.ChangePersonCar; | |
| 7 | +import com.bsth.controller.realcontrol.dto.DftzAndDestroy; | |
| 4 | 8 | import com.bsth.data.BasicData; |
| 5 | 9 | import com.bsth.data.directive.DayOfDirectives; |
| 6 | 10 | import com.bsth.data.directive.DirectiveCreator; |
| ... | ... | @@ -8,10 +12,12 @@ import com.bsth.data.directive.GatewayHttpUtils; |
| 8 | 12 | import com.bsth.data.gpsdata_v2.GpsRealData; |
| 9 | 13 | import com.bsth.data.gpsdata_v2.entity.GpsEntity; |
| 10 | 14 | import com.bsth.data.schedule.DayOfSchedule; |
| 15 | +import com.bsth.data.schedule.external.TccExternalService; | |
| 11 | 16 | import com.bsth.entity.directive.D60; |
| 12 | 17 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 13 | 18 | import com.bsth.repository.directive.D60Repository; |
| 14 | 19 | import com.google.common.base.Splitter; |
| 20 | +import org.apache.commons.lang3.StringEscapeUtils; | |
| 15 | 21 | import org.apache.commons.lang3.StringUtils; |
| 16 | 22 | import org.slf4j.Logger; |
| 17 | 23 | import org.slf4j.LoggerFactory; |
| ... | ... | @@ -44,12 +50,16 @@ public class ServiceDataInterface { |
| 44 | 50 | @Autowired |
| 45 | 51 | GpsRealData gpsRealData; |
| 46 | 52 | |
| 53 | + @Autowired | |
| 54 | + TccExternalService tccExternalService; | |
| 55 | + | |
| 47 | 56 | /** |
| 48 | 57 | * 获取车辆 和 当前执行班次对照信息 |
| 58 | + * | |
| 49 | 59 | * @return |
| 50 | 60 | */ |
| 51 | 61 | @RequestMapping("/execSchList") |
| 52 | - public List<Map<String, Object>> execSchList(@RequestParam String secretKey){ | |
| 62 | + public List<Map<String, Object>> execSchList(@RequestParam String secretKey) { | |
| 53 | 63 | if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) |
| 54 | 64 | return null; |
| 55 | 65 | |
| ... | ... | @@ -57,8 +67,8 @@ public class ServiceDataInterface { |
| 57 | 67 | Collection<ScheduleRealInfo> list = dayOfSchedule.execPlanMap().values(); |
| 58 | 68 | |
| 59 | 69 | Map<String, Object> map; |
| 60 | - for(ScheduleRealInfo sch : list){ | |
| 61 | - if(null == sch) | |
| 70 | + for (ScheduleRealInfo sch : list) { | |
| 71 | + if (null == sch) | |
| 62 | 72 | continue; |
| 63 | 73 | map = new HashMap<>(); |
| 64 | 74 | map.put("clZbh", sch.getClZbh()); |
| ... | ... | @@ -105,7 +115,7 @@ public class ServiceDataInterface { |
| 105 | 115 | } |
| 106 | 116 | |
| 107 | 117 | @RequestMapping("/returnCCInfo") |
| 108 | - public List<ScheduleRealInfo> returnCCInfo(@RequestParam String companyId, @RequestParam String secretKey){ | |
| 118 | + public List<ScheduleRealInfo> returnCCInfo(@RequestParam String companyId, @RequestParam String secretKey) { | |
| 109 | 119 | if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) |
| 110 | 120 | return null; |
| 111 | 121 | |
| ... | ... | @@ -123,7 +133,7 @@ public class ServiceDataInterface { |
| 123 | 133 | } |
| 124 | 134 | |
| 125 | 135 | @RequestMapping("/returnJCInfo") |
| 126 | - public List<ScheduleRealInfo> returnJCInfo(@RequestParam String companyId, @RequestParam String secretKey){ | |
| 136 | + public List<ScheduleRealInfo> returnJCInfo(@RequestParam String companyId, @RequestParam String secretKey) { | |
| 127 | 137 | if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) |
| 128 | 138 | return null; |
| 129 | 139 | |
| ... | ... | @@ -141,10 +151,11 @@ public class ServiceDataInterface { |
| 141 | 151 | |
| 142 | 152 | /** |
| 143 | 153 | * 获取全量的进出场数据, 仅供接口项目调用。 由接口项目负责对外所有场站输出 |
| 154 | + * | |
| 144 | 155 | * @return |
| 145 | 156 | */ |
| 146 | 157 | @RequestMapping("/findCurrInAndOut") |
| 147 | - public List<ScheduleRealInfo> findCurrInAndOut(@RequestParam String secretKey){ | |
| 158 | + public List<ScheduleRealInfo> findCurrInAndOut(@RequestParam String secretKey) { | |
| 148 | 159 | if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) |
| 149 | 160 | return null; |
| 150 | 161 | |
| ... | ... | @@ -161,30 +172,29 @@ public class ServiceDataInterface { |
| 161 | 172 | |
| 162 | 173 | /** |
| 163 | 174 | * 向指定的车辆下发消息短语 |
| 164 | - * @param nbbm | |
| 165 | - * @param txt | |
| 175 | + * | |
| 166 | 176 | * @return |
| 167 | 177 | */ |
| 168 | 178 | @RequestMapping(value = "/send60Phrase", method = RequestMethod.POST) |
| 169 | - public int send60Phrase(@RequestBody Map<String, String> map,@RequestParam String secretKey){ | |
| 170 | - try{ | |
| 179 | + public int send60Phrase(@RequestBody Map<String, String> map, @RequestParam String secretKey) { | |
| 180 | + try { | |
| 171 | 181 | String nbbm = map.get("nbbm"); |
| 172 | 182 | String txt = map.get("txt"); |
| 173 | 183 | String sender = map.get("sender"); |
| 174 | - if(txt.length() > 50) | |
| 184 | + if (txt.length() > 50) | |
| 175 | 185 | txt = txt.substring(0, 50); |
| 176 | 186 | if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) |
| 177 | 187 | return -500; |
| 178 | 188 | |
| 179 | 189 | //车辆和设备号对照 |
| 180 | 190 | String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm); |
| 181 | - if(StringUtils.isEmpty(deviceId)) | |
| 191 | + if (StringUtils.isEmpty(deviceId)) | |
| 182 | 192 | return -404; |
| 183 | 193 | |
| 184 | 194 | //检查设备是否在线 |
| 185 | 195 | long t = System.currentTimeMillis(); |
| 186 | 196 | GpsEntity gps = gpsRealData.get(deviceId); |
| 187 | - if(null == gps || (t - gps.getServerTimestamp()) > 1000 * 60 * 5) | |
| 197 | + if (null == gps || (t - gps.getServerTimestamp()) > 1000 * 60 * 5) | |
| 188 | 198 | return -405; |
| 189 | 199 | |
| 190 | 200 | Short dispatchInstruct = 0;//消息短语 |
| ... | ... | @@ -199,7 +209,7 @@ public class ServiceDataInterface { |
| 199 | 209 | |
| 200 | 210 | dayOfDirectives.put60(d60); |
| 201 | 211 | return d60.getMsgId(); |
| 202 | - }catch (Exception e){ | |
| 212 | + } catch (Exception e) { | |
| 203 | 213 | logger.error("", e); |
| 204 | 214 | return -500; |
| 205 | 215 | } |
| ... | ... | @@ -207,23 +217,24 @@ public class ServiceDataInterface { |
| 207 | 217 | |
| 208 | 218 | /** |
| 209 | 219 | * 根据msg id 查询指令响应情况 |
| 210 | - * @param msgIDs | |
| 220 | + * | |
| 221 | + * @param msgIds | |
| 211 | 222 | * @return |
| 212 | 223 | */ |
| 213 | 224 | @RequestMapping("/findD60Reply") |
| 214 | - public List<Map<String, Object>> findD60Reply(@RequestParam String msgIds){ | |
| 225 | + public List<Map<String, Object>> findD60Reply(@RequestParam String msgIds) { | |
| 215 | 226 | List<Map<String, Object>> rs = new ArrayList<>(); |
| 216 | - try{ | |
| 227 | + try { | |
| 217 | 228 | Map<String, Object> map = new HashMap(); |
| 218 | 229 | |
| 219 | 230 | List<String> ids = Splitter.on(",").splitToList(msgIds); |
| 220 | 231 | D60 d60; |
| 221 | - for(String id : ids){ | |
| 222 | - if(StringUtils.isEmpty(id)) | |
| 232 | + for (String id : ids) { | |
| 233 | + if (StringUtils.isEmpty(id)) | |
| 223 | 234 | continue; |
| 224 | 235 | |
| 225 | 236 | d60 = dayOfDirectives.get(Integer.parseInt(id)); |
| 226 | - if(null == d60) | |
| 237 | + if (null == d60) | |
| 227 | 238 | continue; |
| 228 | 239 | |
| 229 | 240 | map.put("msgId", d60.getMsgId()); |
| ... | ... | @@ -231,7 +242,7 @@ public class ServiceDataInterface { |
| 231 | 242 | map.put("jsyReplyTime", d60.getReply47Time()); |
| 232 | 243 | rs.add(map); |
| 233 | 244 | } |
| 234 | - }catch (Exception e){ | |
| 245 | + } catch (Exception e) { | |
| 235 | 246 | logger.error("", e); |
| 236 | 247 | } |
| 237 | 248 | return rs; |
| ... | ... | @@ -239,18 +250,52 @@ public class ServiceDataInterface { |
| 239 | 250 | |
| 240 | 251 | /** |
| 241 | 252 | * 获取路牌下所有班次 |
| 253 | + * | |
| 242 | 254 | * @param lineCode |
| 243 | 255 | * @param lpName |
| 244 | 256 | * @return |
| 245 | 257 | */ |
| 246 | 258 | @RequestMapping("/findByLpName") |
| 247 | - public List<ScheduleRealInfo> findByLpName(@RequestParam String lineCode,@RequestParam String lpName){ | |
| 248 | - try{ | |
| 259 | + public List<ScheduleRealInfo> findByLpName(@RequestParam String lineCode, @RequestParam String lpName, @RequestParam String secretKey) { | |
| 260 | + try { | |
| 261 | + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) | |
| 262 | + return null; | |
| 263 | + | |
| 249 | 264 | List<ScheduleRealInfo> list = dayOfSchedule.getLpScheduleMap().get(lineCode + "_" + lpName); |
| 250 | 265 | return list; |
| 251 | - }catch (Exception e){ | |
| 266 | + } catch (Exception e) { | |
| 252 | 267 | logger.error("", e); |
| 253 | 268 | } |
| 254 | 269 | return null; |
| 255 | 270 | } |
| 271 | + | |
| 272 | + /** | |
| 273 | + * 调整出场班次待发,并烂掉后续班次(调派用) | |
| 274 | + * | |
| 275 | + * @param dad | |
| 276 | + * @return | |
| 277 | + */ | |
| 278 | + @RequestMapping(value = "/dftzAndDestroy", method = RequestMethod.POST) | |
| 279 | + public Map<String, Object> dftzAndDestroy(@RequestBody DftzAndDestroy dad, @RequestParam String secretKey) { | |
| 280 | + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) | |
| 281 | + return null; | |
| 282 | + return tccExternalService.dftz(dad); | |
| 283 | + } | |
| 284 | + | |
| 285 | + /** | |
| 286 | + * 换人换车,(调派用) | |
| 287 | + * @return | |
| 288 | + */ | |
| 289 | + @RequestMapping(value = "/tccHrhc", method = RequestMethod.POST) | |
| 290 | + public Map<String, Object> hrhc(@RequestBody String jsonStr, @RequestParam String secretKey){ | |
| 291 | + | |
| 292 | + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) | |
| 293 | + return null; | |
| 294 | + | |
| 295 | + jsonStr = StringEscapeUtils.unescapeHtml4(jsonStr); | |
| 296 | + JSONObject rootObj = JSON.parseObject(jsonStr); | |
| 297 | + | |
| 298 | + List<ChangePersonCar> cpcs = JSONArray.parseArray(rootObj.getString("cpcs"), ChangePersonCar.class); | |
| 299 | + return tccExternalService.hrhc(cpcs, rootObj.getString("tccCode"), rootObj.getString("userId")); | |
| 300 | + } | |
| 256 | 301 | } | ... | ... |
src/main/java/com/bsth/controller/realcontrol/dto/DftzAndDestroy.java
0 → 100644
| 1 | +package com.bsth.controller.realcontrol.dto; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Created by panzhao on 2018/3/22. | |
| 5 | + */ | |
| 6 | +public class DftzAndDestroy { | |
| 7 | + | |
| 8 | + /** | |
| 9 | + * 要调整待发的出场班次ID | |
| 10 | + */ | |
| 11 | + private Long dftzId; | |
| 12 | + | |
| 13 | + /** | |
| 14 | + * 要设置的待发时间 | |
| 15 | + */ | |
| 16 | + private String newTimeStr; | |
| 17 | + | |
| 18 | + /** | |
| 19 | + * 要烂掉的班次的 班次id ,号分割多个 | |
| 20 | + */ | |
| 21 | + private String destroyIdx; | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * 备注 | |
| 25 | + */ | |
| 26 | + private String remarks; | |
| 27 | + | |
| 28 | + private String reason; | |
| 29 | + | |
| 30 | + /** | |
| 31 | + * 调派工号 | |
| 32 | + */ | |
| 33 | + private String userId; | |
| 34 | + | |
| 35 | + public String getNewTimeStr() { | |
| 36 | + return newTimeStr; | |
| 37 | + } | |
| 38 | + | |
| 39 | + public void setNewTimeStr(String newTimeStr) { | |
| 40 | + this.newTimeStr = newTimeStr; | |
| 41 | + } | |
| 42 | + | |
| 43 | + public String getDestroyIdx() { | |
| 44 | + return destroyIdx; | |
| 45 | + } | |
| 46 | + | |
| 47 | + public void setDestroyIdx(String destroyIdx) { | |
| 48 | + this.destroyIdx = destroyIdx; | |
| 49 | + } | |
| 50 | + | |
| 51 | + public String getRemarks() { | |
| 52 | + return remarks; | |
| 53 | + } | |
| 54 | + | |
| 55 | + public void setRemarks(String remarks) { | |
| 56 | + this.remarks = remarks; | |
| 57 | + } | |
| 58 | + | |
| 59 | + public Long getDftzId() { | |
| 60 | + return dftzId; | |
| 61 | + } | |
| 62 | + | |
| 63 | + public void setDftzId(Long dftzId) { | |
| 64 | + this.dftzId = dftzId; | |
| 65 | + } | |
| 66 | + | |
| 67 | + public String getReason() { | |
| 68 | + return reason; | |
| 69 | + } | |
| 70 | + | |
| 71 | + public void setReason(String reason) { | |
| 72 | + this.reason = reason; | |
| 73 | + } | |
| 74 | + | |
| 75 | + public String getUserId() { | |
| 76 | + return userId; | |
| 77 | + } | |
| 78 | + | |
| 79 | + public void setUserId(String userId) { | |
| 80 | + this.userId = userId; | |
| 81 | + } | |
| 82 | +} | ... | ... |
src/main/java/com/bsth/data/gpsdata_v2/GpsRealData.java
| ... | ... | @@ -129,8 +129,11 @@ public class GpsRealData { |
| 129 | 129 | Set<String> nbbmSet = dayOfSchedule.findCarByLineCode(lineCode);//计划用车 |
| 130 | 130 | |
| 131 | 131 | Map<String, String> nbbm2deviceMap = BasicData.deviceId2NbbmMap.inverse(); |
| 132 | + String deviceId; | |
| 132 | 133 | for(String nbbm : nbbmSet){ |
| 133 | - set.add(nbbm2deviceMap.get(nbbm)); | |
| 134 | + deviceId = nbbm2deviceMap.get(nbbm); | |
| 135 | + if(StringUtils.isNotEmpty(deviceId)) | |
| 136 | + set.add(deviceId); | |
| 134 | 137 | } |
| 135 | 138 | |
| 136 | 139 | List<GpsEntity> rs = new ArrayList<>(); | ... | ... |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| ... | ... | @@ -979,18 +979,21 @@ public class DayOfSchedule { |
| 979 | 979 | String rq = currSchDateMap.get(lineCode); |
| 980 | 980 | if (StringUtils.isNotEmpty(rq)) { |
| 981 | 981 | List<ScheduleRealInfo> all = findByLineCode(lineCode); |
| 982 | - //解除gps 和班次之间的关联 | |
| 983 | - List<ScheduleRealInfo> unions = calcUnion(all, carExecutePlanMap.values()); | |
| 984 | - for (ScheduleRealInfo sch : unions) { | |
| 985 | - removeExecPlan(sch.getClZbh()); | |
| 986 | - } | |
| 987 | - //解除调度指令和班次的外键约束 | |
| 988 | - StringBuilder inStr = new StringBuilder("("); | |
| 989 | - for (ScheduleRealInfo sch : all) { | |
| 990 | - inStr.append(sch.getId() + ","); | |
| 982 | + | |
| 983 | + if(null != all && all.size() > 0){ | |
| 984 | + //解除gps 和班次之间的关联 | |
| 985 | + List<ScheduleRealInfo> unions = calcUnion(all, carExecutePlanMap.values()); | |
| 986 | + for (ScheduleRealInfo sch : unions) { | |
| 987 | + removeExecPlan(sch.getClZbh()); | |
| 988 | + } | |
| 989 | + //解除调度指令和班次的外键约束 | |
| 990 | + StringBuilder inStr = new StringBuilder("("); | |
| 991 | + for (ScheduleRealInfo sch : all) { | |
| 992 | + inStr.append(sch.getId() + ","); | |
| 993 | + } | |
| 994 | + inStr.deleteCharAt(inStr.length() - 1).append(")"); | |
| 995 | + jdbcTemplate.update(Constants.MULTI_REMOVE_DIRECTIVE_SCH_FK + " " + inStr.toString()); | |
| 991 | 996 | } |
| 992 | - inStr.deleteCharAt(inStr.length() - 1).append(")"); | |
| 993 | - jdbcTemplate.update(Constants.MULTI_REMOVE_DIRECTIVE_SCH_FK + " " + inStr.toString()); | |
| 994 | 997 | |
| 995 | 998 | //删除班次数据 |
| 996 | 999 | removeRealSch(lineCode, rq); | ... | ... |
src/main/java/com/bsth/data/schedule/edit_logs/FormLogger.java
| ... | ... | @@ -37,7 +37,7 @@ public class FormLogger { |
| 37 | 37 | /** |
| 38 | 38 | * 换人换车情况表 |
| 39 | 39 | */ |
| 40 | - public void saveChangetochange(ScheduleRealInfo sch, ChangePersonCar cpc){ | |
| 40 | + public void saveChangetochange(ScheduleRealInfo sch, ChangePersonCar cpc, String userId){ | |
| 41 | 41 | try { |
| 42 | 42 | String newNbbm = cpc.getClZbh(); |
| 43 | 43 | String newJsy = cpc.getJsy(); |
| ... | ... | @@ -51,7 +51,6 @@ public class FormLogger { |
| 51 | 51 | return; |
| 52 | 52 | |
| 53 | 53 | Date d = new Date(); |
| 54 | - SysUser user = SecurityUtils.getCurrentUser(); | |
| 55 | 54 | Changetochange cc = new Changetochange(); |
| 56 | 55 | cc.setRq(sch.getScheduleDateStr()); |
| 57 | 56 | cc.setGs(sch.getGsBm()); |
| ... | ... | @@ -61,8 +60,13 @@ public class FormLogger { |
| 61 | 60 | cc.setFssj(sch.getFcsj()); |
| 62 | 61 | cc.setXgsj(fmtHHmm.print(d.getTime())); |
| 63 | 62 | cc.setsId(sch.getId()); |
| 64 | - if(user != null) | |
| 63 | + | |
| 64 | + if(StringUtils.isEmpty(userId)){ | |
| 65 | + SysUser user = SecurityUtils.getCurrentUser(); | |
| 65 | 66 | cc.setXgr(user.getUserName()); |
| 67 | + } | |
| 68 | + else | |
| 69 | + cc.setXgr(userId); | |
| 66 | 70 | |
| 67 | 71 | cc.setPcch(sch.getClZbh()); |
| 68 | 72 | cc.setPcry(oldJsy); |
| ... | ... | @@ -86,7 +90,7 @@ public class FormLogger { |
| 86 | 90 | ChangePersonCar cpc = new ChangePersonCar(); |
| 87 | 91 | cpc.setClZbh(nbbm); |
| 88 | 92 | cpc.setJsy(jsy); |
| 89 | - saveChangetochange(sch, cpc); | |
| 93 | + saveChangetochange(sch, cpc, null); | |
| 90 | 94 | } |
| 91 | 95 | |
| 92 | 96 | public void saveDb(){ | ... | ... |
src/main/java/com/bsth/data/schedule/edit_logs/ScheduleModifyLogger.java
| ... | ... | @@ -28,14 +28,14 @@ public class ScheduleModifyLogger { |
| 28 | 28 | |
| 29 | 29 | /** |
| 30 | 30 | * 待发调整 |
| 31 | - * opType 0: 双击调整、 1:待发调整、2:批量待发调整、3:间隔调整 | |
| 31 | + * opType 0: 双击调整、 1:待发调整、2:批量待发调整、3:间隔调整、4:调派系统调整 | |
| 32 | 32 | */ |
| 33 | - public static void dftz(ScheduleRealInfo sch, String opType, String oldDfsj, String nowDfsj, String remarks) { | |
| 33 | + public static void dftz(ScheduleRealInfo sch, String opType, String oldDfsj, String nowDfsj, String remarks, String userId) { | |
| 34 | 34 | try { |
| 35 | 35 | if (oldDfsj.equals(nowDfsj)) |
| 36 | 36 | return; |
| 37 | 37 | |
| 38 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | |
| 38 | + SchEditInfo sei = SchEditInfo.getInstance(sch, userId); | |
| 39 | 39 | sei.setType(EditType.DFTZ); |
| 40 | 40 | sei.setType2(opType); |
| 41 | 41 | sei.setRemarks(remarks == null ? "" : remarks); |
| ... | ... | @@ -78,9 +78,9 @@ public class ScheduleModifyLogger { |
| 78 | 78 | * |
| 79 | 79 | * @param remarks |
| 80 | 80 | */ |
| 81 | - public static void jhlb(ScheduleRealInfo sch, String remarks) { | |
| 81 | + public static void jhlb(ScheduleRealInfo sch, String remarks, String userId) { | |
| 82 | 82 | try { |
| 83 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | |
| 83 | + SchEditInfo sei = SchEditInfo.getInstance(sch, userId); | |
| 84 | 84 | sei.setRemarks(remarks); |
| 85 | 85 | sei.setType(EditType.JHLB); |
| 86 | 86 | |
| ... | ... | @@ -182,7 +182,7 @@ public class ScheduleModifyLogger { |
| 182 | 182 | * @param sch |
| 183 | 183 | * @param cpc |
| 184 | 184 | */ |
| 185 | - public static void tzrc(ScheduleRealInfo sch, ChangePersonCar cpc) { | |
| 185 | + public static void tzrc(ScheduleRealInfo sch, ChangePersonCar cpc, String userId) { | |
| 186 | 186 | try { |
| 187 | 187 | String newNbbm = cpc.getClZbh(); |
| 188 | 188 | String newJsy = cpc.getJsy(); |
| ... | ... | @@ -218,7 +218,7 @@ public class ScheduleModifyLogger { |
| 218 | 218 | if(jobj.size() == 0) |
| 219 | 219 | return; |
| 220 | 220 | |
| 221 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | |
| 221 | + SchEditInfo sei = SchEditInfo.getInstance(sch, userId); | |
| 222 | 222 | sei.setType(EditType.TZRC); |
| 223 | 223 | |
| 224 | 224 | sei.setJsonArray(jobj.toJSONString()); | ... | ... |
src/main/java/com/bsth/data/schedule/edit_logs/entity/SchEditInfo.java
| ... | ... | @@ -160,6 +160,20 @@ public class SchEditInfo { |
| 160 | 160 | return sei; |
| 161 | 161 | } |
| 162 | 162 | |
| 163 | + public static SchEditInfo getInstance(ScheduleRealInfo sch, String userId){ | |
| 164 | + SchEditInfo sei = new SchEditInfo(); | |
| 165 | + long t = System.currentTimeMillis(); | |
| 166 | + sei.setTs(t); | |
| 167 | + sei.setTimeStr(fmtHHmm.print(t)); | |
| 168 | + sei.setUser(userId); | |
| 169 | + sei.setRq(sch.getScheduleDateStr()); | |
| 170 | + sei.setSchId(sch.getId()); | |
| 171 | + sei.setLineCode(sch.getXlBm()); | |
| 172 | + sei.setGsbm(sch.getGsBm()); | |
| 173 | + sei.setFgsbm(sch.getFgsBm()); | |
| 174 | + return sei; | |
| 175 | + } | |
| 176 | + | |
| 163 | 177 | public String getLineCode() { |
| 164 | 178 | return lineCode; |
| 165 | 179 | } | ... | ... |
src/main/java/com/bsth/data/schedule/external/TccExternalService.java
0 → 100644
| 1 | +package com.bsth.data.schedule.external; | |
| 2 | + | |
| 3 | +import com.bsth.common.ResponseCode; | |
| 4 | +import com.bsth.controller.realcontrol.dto.ChangePersonCar; | |
| 5 | +import com.bsth.controller.realcontrol.dto.DftzAndDestroy; | |
| 6 | +import com.bsth.data.schedule.DayOfSchedule; | |
| 7 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 8 | +import com.bsth.service.realcontrol.ScheduleRealInfoService; | |
| 9 | +import com.bsth.websocket.handler.SendUtils; | |
| 10 | +import org.apache.commons.lang3.StringUtils; | |
| 11 | +import org.slf4j.Logger; | |
| 12 | +import org.slf4j.LoggerFactory; | |
| 13 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 14 | +import org.springframework.stereotype.Component; | |
| 15 | + | |
| 16 | +import java.util.*; | |
| 17 | + | |
| 18 | +/** | |
| 19 | + * 对停车场开放的班次调度服务 | |
| 20 | + * Created by panzhao on 2018/3/22. | |
| 21 | + */ | |
| 22 | +@Component | |
| 23 | +public class TccExternalService { | |
| 24 | + | |
| 25 | + Logger logger = LoggerFactory.getLogger(TccExternalService.class); | |
| 26 | + | |
| 27 | + @Autowired | |
| 28 | + DayOfSchedule dayOfSchedule; | |
| 29 | + | |
| 30 | + @Autowired | |
| 31 | + ScheduleRealInfoService scheduleRealInfoService; | |
| 32 | + | |
| 33 | + @Autowired | |
| 34 | + SendUtils sendUtils; | |
| 35 | + | |
| 36 | + /** | |
| 37 | + * 待发调整 | |
| 38 | + * | |
| 39 | + * @param dad | |
| 40 | + * @return | |
| 41 | + */ | |
| 42 | + public Map<String, Object> dftz(DftzAndDestroy dad) { | |
| 43 | + Map<String, Object> rs = new HashMap(); | |
| 44 | + rs.put("status", ResponseCode.ERROR); | |
| 45 | + try { | |
| 46 | + List<ScheduleRealInfo> updateList = new ArrayList<>();//要刷新的班次 | |
| 47 | + ScheduleRealInfo sch = dayOfSchedule.get(dad.getDftzId()); | |
| 48 | + if (null == sch) { | |
| 49 | + rs.put("msg", "班次已经不存在了!"); | |
| 50 | + return rs; | |
| 51 | + } | |
| 52 | + | |
| 53 | + if (!sch.getBcType().equals("out")) { | |
| 54 | + rs.put("msg", "只能操作出场班次!"); | |
| 55 | + return rs; | |
| 56 | + } | |
| 57 | + | |
| 58 | + //调整待发时间 | |
| 59 | + scheduleRealInfoService.outgoAdjust(sch.getId(), dad.getRemarks(), dad.getNewTimeStr(), sch.getBcType(), "4", dad.getUserId()); | |
| 60 | + updateList.add(sch); | |
| 61 | + | |
| 62 | + //需要烂班的班次 | |
| 63 | + if (StringUtils.isNotEmpty(dad.getDestroyIdx())) { | |
| 64 | + Map<String, Object> dMap = | |
| 65 | + scheduleRealInfoService.destroy(dad.getDestroyIdx(), dad.getRemarks(), dad.getReason(), dad.getUserId()); | |
| 66 | + | |
| 67 | + | |
| 68 | + updateList.addAll((Collection<? extends ScheduleRealInfo>) dMap.get("ts")); | |
| 69 | + } | |
| 70 | + | |
| 71 | + //通知调度客户端更新班次信息 | |
| 72 | + sendUpdate2Page(updateList); | |
| 73 | + | |
| 74 | + rs.put("status", ResponseCode.SUCCESS); | |
| 75 | + rs.put("t", sch); | |
| 76 | + } catch (Exception e) { | |
| 77 | + rs.put("msg", "内部调度服务接口出现异常!"); | |
| 78 | + logger.error("", e); | |
| 79 | + } | |
| 80 | + return rs; | |
| 81 | + } | |
| 82 | + | |
| 83 | + /** | |
| 84 | + * 换人换车 | |
| 85 | + * | |
| 86 | + * @param cpcs | |
| 87 | + * @return | |
| 88 | + */ | |
| 89 | + public Map<String, Object> hrhc(List<ChangePersonCar> cpcs,String tccCode, String userId) { | |
| 90 | + Map<String, Object> rs = new HashMap(); | |
| 91 | + rs.put("status", ResponseCode.ERROR); | |
| 92 | + try { | |
| 93 | + rs = scheduleRealInfoService.multi_tzrc(cpcs, userId); | |
| 94 | + | |
| 95 | + //通知调度客户端更新班次信息 | |
| 96 | + sendUpdate2Page(new ArrayList<ScheduleRealInfo>((Set)rs.get("ts"))); | |
| 97 | + | |
| 98 | + //返回更新结果集中指定停车场的进出场班次 | |
| 99 | + Set<ScheduleRealInfo> ts = (Set<ScheduleRealInfo>) rs.get("ts"); | |
| 100 | + List<ScheduleRealInfo> list = new ArrayList<>(); | |
| 101 | + for(ScheduleRealInfo sch : ts){ | |
| 102 | + if((sch.getBcType().equals("out") && sch.getQdzCode().equals(tccCode)) | |
| 103 | + || (sch.getBcType().equals("in") && sch.getZdzCode().equals(tccCode))) | |
| 104 | + list.add(sch); | |
| 105 | + } | |
| 106 | + rs.put("list", list); | |
| 107 | + rs.remove("ts"); | |
| 108 | + } catch (Exception e) { | |
| 109 | + rs.put("msg", "服务器出现异常!"); | |
| 110 | + logger.error("", e); | |
| 111 | + } | |
| 112 | + return rs; | |
| 113 | + } | |
| 114 | + | |
| 115 | + | |
| 116 | + public void sendUpdate2Page(List<ScheduleRealInfo> list) { | |
| 117 | + sendUtils.refreshSch(list); | |
| 118 | + } | |
| 119 | +} | ... | ... |
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
| ... | ... | @@ -8,6 +8,7 @@ import com.bsth.entity.realcontrol.LineConfig; |
| 8 | 8 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 9 | 9 | import com.bsth.util.Arith; |
| 10 | 10 | import com.bsth.websocket.handler.SendUtils; |
| 11 | +import com.google.common.collect.ArrayListMultimap; | |
| 11 | 12 | import org.slf4j.Logger; |
| 12 | 13 | import org.slf4j.LoggerFactory; |
| 13 | 14 | import org.springframework.beans.BeansException; |
| ... | ... | @@ -16,8 +17,7 @@ import org.springframework.context.ApplicationContextAware; |
| 16 | 17 | import org.springframework.stereotype.Component; |
| 17 | 18 | |
| 18 | 19 | import java.util.Collection; |
| 19 | -import java.util.HashMap; | |
| 20 | -import java.util.Map; | |
| 20 | +import java.util.List; | |
| 21 | 21 | |
| 22 | 22 | /** |
| 23 | 23 | * 误点自动调整待发 处理程序 |
| ... | ... | @@ -35,12 +35,14 @@ public class LateAdjustHandle implements ApplicationContextAware{ |
| 35 | 35 | |
| 36 | 36 | /** |
| 37 | 37 | * 应发未到车辆 和 班次 |
| 38 | + * | |
| 39 | + * 起点相同的,保留最后一个班次 | |
| 38 | 40 | */ |
| 39 | - private static Map<String, ScheduleRealInfo> lateSchMap; | |
| 41 | + private static ArrayListMultimap lateSchMaps; | |
| 40 | 42 | |
| 41 | 43 | |
| 42 | 44 | static { |
| 43 | - lateSchMap = new HashMap<>(); | |
| 45 | + lateSchMaps = ArrayListMultimap.create(); | |
| 44 | 46 | } |
| 45 | 47 | |
| 46 | 48 | /** |
| ... | ... | @@ -48,125 +50,140 @@ public class LateAdjustHandle implements ApplicationContextAware{ |
| 48 | 50 | * @param sch |
| 49 | 51 | */ |
| 50 | 52 | public static void putLate(ScheduleRealInfo sch){ |
| 51 | - try { | |
| 52 | - //出场班次不需要 | |
| 53 | - if(sch.getBcType().equals("out")) | |
| 54 | - return; | |
| 53 | + try{ | |
| 55 | 54 | //线路配置 |
| 56 | 55 | LineConfig config = lineConfigData.get(sch.getXlBm()); |
| 57 | 56 | if(sch.getLateMinute() == 0){ |
| 58 | - if(config.isEnableYjtk()){ | |
| 59 | - sch.setLateMinute(sch.getXlDir().equals("0")?config.getUpStopMinute():config.getDownStopMinute()); | |
| 60 | - } | |
| 61 | - else | |
| 57 | + if(!config.isEnableYjtk()) | |
| 62 | 58 | return; |
| 59 | + | |
| 60 | + sch.setLateMinute(sch.getXlDir().equals("0")?config.getUpStopMinute():config.getDownStopMinute()); | |
| 63 | 61 | } |
| 64 | 62 | |
| 65 | 63 | if(sch.getDfsj().compareTo(config.getYjtkStart()) > 0 |
| 66 | 64 | && sch.getDfsj().compareTo(config.getYjtkEnd()) <= 0){ |
| 67 | 65 | |
| 68 | - ScheduleRealInfo cancel = null; | |
| 69 | - //之前存在误点班次没有发出 | |
| 70 | - ScheduleRealInfo old = lateSchMap.get(sch.getClZbh()); | |
| 66 | + ScheduleRealInfo old = popLateSch(sch); | |
| 67 | + if(null != old){ | |
| 68 | + //通知客户端 | |
| 69 | + sch.setLate2(true); | |
| 70 | + sendUtils.sendAutoWdtz(sch, old); | |
| 71 | 71 | |
| 72 | - if(old != null && old.getDfsjT() < sch.getDfsjT()){ | |
| 73 | - //如果之前班次的 待发应到时间已经过了 3 分钟 | |
| 74 | - long t = System.currentTimeMillis(); | |
| 75 | - long dfEndTime = old.getDfsjT() + (old.getBcsj() * 60 * 1000); | |
| 76 | - if((t - dfEndTime) > 1000 * 60 * 3){ | |
| 77 | - | |
| 78 | - remove(old); | |
| 79 | - cancel = old; | |
| 80 | - logger.info("【应发未到】old 班次 " + old.getId() + " -被覆盖!"); | |
| 81 | - } | |
| 72 | + logger.info("【应发未到】班次 " + sch.getClZbh() + " -" + sch.getDfsj() + " -id: " + sch.getId() + " -加入误点调整!"); | |
| 82 | 73 | } |
| 83 | - | |
| 84 | - lateSchMap.put(sch.getClZbh(), sch); | |
| 85 | - //通知客户端 | |
| 86 | - sch.setLate2(true); | |
| 87 | - sendUtils.sendAutoWdtz(sch, cancel); | |
| 88 | - | |
| 89 | - logger.info("【应发未到】班次 " + sch.getClZbh() + " -" + sch.getDfsj() + " -id: " + sch.getId() + " -加入误点调整!"); | |
| 90 | 74 | } |
| 75 | + | |
| 91 | 76 | }catch (Exception e){ |
| 92 | 77 | logger.error("", e); |
| 93 | 78 | } |
| 94 | 79 | } |
| 95 | 80 | |
| 81 | + /** | |
| 82 | + * 压入新的误点班次 | |
| 83 | + * @param sch | |
| 84 | + * @return 返回被移除的误点班次 | |
| 85 | + */ | |
| 86 | + private static ScheduleRealInfo popLateSch(ScheduleRealInfo sch) { | |
| 87 | + List<ScheduleRealInfo> list = lateSchMaps.get(sch.getXlBm()); | |
| 88 | + | |
| 89 | + if(null == list || list.size() == 0) | |
| 90 | + lateSchMaps.put(sch.getClZbh(), sch); | |
| 91 | + else { | |
| 92 | + ScheduleRealInfo old = findExistQdz(list, sch.getQdzCode(), sch.getQdzName()); | |
| 93 | + | |
| 94 | + //同一个起点,保留时间最大的班次 | |
| 95 | + if(null == old || old.getDfsjT() < sch.getDfsjT()){ | |
| 96 | + lateSchMaps.remove(old.getClZbh(), old); | |
| 97 | + lateSchMaps.put(sch.getClZbh(), sch); | |
| 98 | + | |
| 99 | + logger.info(sch.getClZbh() + "【应发未到】old 班次 " + old.getId() + " -被覆盖!"); | |
| 100 | + return old; | |
| 101 | + } | |
| 102 | + } | |
| 103 | + | |
| 104 | + return null; | |
| 105 | + } | |
| 106 | + | |
| 107 | + /** | |
| 108 | + * 搜索同样起点的班次 | |
| 109 | + * @param list | |
| 110 | + * @return | |
| 111 | + */ | |
| 112 | + private static ScheduleRealInfo findExistQdz(List<ScheduleRealInfo> list, String qdzCode, String qdzName) { | |
| 113 | + for(ScheduleRealInfo item : list){ | |
| 114 | + if(item.getQdzCode().equals(qdzCode) | |
| 115 | + || item.getQdzName().equals(qdzName)) | |
| 116 | + return item; | |
| 117 | + } | |
| 118 | + return null; | |
| 119 | + } | |
| 120 | + | |
| 96 | 121 | |
| 97 | 122 | /** |
| 98 | 123 | * 获取所有应发未到的班次 |
| 99 | 124 | * @return |
| 100 | 125 | */ |
| 101 | 126 | public static Collection<ScheduleRealInfo> allLateSch(){ |
| 102 | - return lateSchMap.values(); | |
| 127 | + return lateSchMaps.values(); | |
| 103 | 128 | } |
| 104 | 129 | |
| 105 | 130 | public static void remove(ScheduleRealInfo sch){ |
| 106 | 131 | try { |
| 107 | - if(lateSchMap.get(sch.getClZbh()) == sch){ | |
| 108 | - lateSchMap.remove(sch.getClZbh()); | |
| 132 | + if(lateSchMaps.containsEntry(sch.getClZbh(), sch)){ | |
| 133 | + lateSchMaps.remove(sch.getClZbh(), sch); | |
| 134 | + | |
| 109 | 135 | sch.setLate2(false); |
| 110 | 136 | sch.setLateMinute(0); |
| 111 | 137 | sch.setDfAuto(false); |
| 112 | 138 | |
| 113 | - logger.info("移除误点调整 -" + sch.getClZbh()); | |
| 139 | + logger.info("移除误点调整 -" + sch.getClZbh() + " -time: " + sch.getDfsj() + " -id: " + sch.getId()); | |
| 114 | 140 | } |
| 115 | 141 | }catch (Exception e){ |
| 116 | 142 | logger.error("", e); |
| 117 | 143 | } |
| 118 | 144 | } |
| 119 | 145 | |
| 120 | -/* public static void remove(String nbbm){ | |
| 121 | - if(lateSchMap.containsKey(nbbm)){ | |
| 122 | - ScheduleRealInfo sch = lateSchMap.get(nbbm); | |
| 123 | - sch.setLate2(false); | |
| 124 | - sch.setLateMinute(0); | |
| 125 | - sch.setDfAuto(false); | |
| 126 | - | |
| 127 | - lateSchMap.remove(nbbm); | |
| 128 | - logger.info("移除误点调整 nbbm -" + nbbm); | |
| 129 | - } | |
| 130 | - }*/ | |
| 131 | - | |
| 132 | 146 | /** |
| 133 | 147 | * 车辆到站 |
| 134 | 148 | * @param gps |
| 135 | 149 | */ |
| 136 | 150 | public static void carArrive(GpsEntity gps){ |
| 137 | 151 | try{ |
| 138 | - if(gps.getInstation() != 1) | |
| 152 | + List<ScheduleRealInfo> list = lateSchMaps.get(gps.getNbbm()); | |
| 153 | + | |
| 154 | + if(null == list || list.size() == 0) | |
| 139 | 155 | return; |
| 140 | 156 | |
| 141 | - ScheduleRealInfo sch = lateSchMap.get(gps.getNbbm()); | |
| 142 | - if(sch == null) | |
| 157 | + String key = gps.getStopNo(); | |
| 158 | + if(gps.getInstation()==1)//站点名称 | |
| 159 | + key = gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo(); | |
| 160 | + | |
| 161 | + gps.setStationName(BasicData.stationCode2NameMap.get(key)); | |
| 162 | + //根据起点站获取误点班次 | |
| 163 | + ScheduleRealInfo sch = findExistQdz(list, gps.getStopNo(), gps.getStationName()); | |
| 164 | + | |
| 165 | + if(null == sch) | |
| 143 | 166 | return; |
| 144 | 167 | |
| 145 | 168 | //可能是延迟信号,gps时间没有误点 |
| 146 | 169 | if(gps.getTimestamp() <= sch.getDfsjT()){ |
| 147 | 170 | sch.setLate2(false); |
| 148 | - lateSchMap.remove(sch.getClZbh()); | |
| 171 | + lateSchMaps.remove(sch.getClZbh(), sch); | |
| 149 | 172 | return; |
| 150 | 173 | } |
| 151 | - //进的是班次起点(名称一样即可) | |
| 152 | - gps.setStationName(BasicData.stationCode2NameMap.get(gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo())); | |
| 174 | + | |
| 153 | 175 | if(gps.getStationName().equals(sch.getQdzName()) |
| 154 | - /*&& sch.getLateMinute() > 0*/){ | |
| 176 | + || gps.getStopNo().equals(sch.getQdzCode())){ | |
| 177 | + | |
| 155 | 178 | //自动调整待发 到达时间 + 停靠时间 |
| 156 | 179 | long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000)); |
| 157 | 180 | |
| 158 | - //超过2小时最大阈值,放弃 -临时代码,待删除 | |
| 159 | - if(Math.abs(dt - sch.getDfsjT()) > 1000 * 60 * 60 * 2){ | |
| 160 | - logger.info(sch.getClZbh() + " 超过误点调整阈值,放弃"); | |
| 161 | - } | |
| 162 | - else{ | |
| 163 | - sch.setDfsjAll(dt); | |
| 164 | - sch.setDfAuto(true); | |
| 165 | - //取消应发未到标记 | |
| 166 | - sch.setLate2(false); | |
| 167 | - } | |
| 181 | + sch.setDfsjAll(dt); | |
| 182 | + sch.setDfAuto(true); | |
| 183 | + //取消应发未到标记 | |
| 184 | + sch.setLate2(false); | |
| 168 | 185 | |
| 169 | - lateSchMap.remove(sch.getClZbh()); | |
| 186 | + lateSchMaps.remove(sch.getClZbh(), sch); | |
| 170 | 187 | logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt); |
| 171 | 188 | } |
| 172 | 189 | }catch (Exception e){ | ... | ... |
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
| ... | ... | @@ -17,9 +17,9 @@ public interface ScheduleRealInfoService extends BaseService<ScheduleRealInfo, L |
| 17 | 17 | |
| 18 | 18 | Map<String, Collection<ScheduleRealInfo>> findByLines(String lines); |
| 19 | 19 | |
| 20 | - Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType, String opType); | |
| 20 | + Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType, String opType,String userId); | |
| 21 | 21 | |
| 22 | - Map<String, Object> destroy(String idsStr/*, int spaceAdjust*/, String remarks, String reason/*, int spaceNum*/); | |
| 22 | + Map<String, Object> destroy(String idsStr/*, int spaceAdjust*/, String remarks, String reason/*, int spaceNum*/, String userId); | |
| 23 | 23 | |
| 24 | 24 | List<Map<String, String>> findDriverByLine(String lineCode); |
| 25 | 25 | |
| ... | ... | @@ -135,7 +135,7 @@ public interface ScheduleRealInfoService extends BaseService<ScheduleRealInfo, L |
| 135 | 135 | |
| 136 | 136 | List<Map<String,Object>> yesterdayDataList(String line); |
| 137 | 137 | |
| 138 | - Map<String, Object> multi_tzrc(List<ChangePersonCar> cpcs); | |
| 138 | + Map<String, Object> multi_tzrc(List<ChangePersonCar> cpcs, String userId); | |
| 139 | 139 | |
| 140 | 140 | Map<String, Object> multi_dftz(List<DfsjChange> dfsjcs); |
| 141 | 141 | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -229,7 +229,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 229 | 229 | private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); |
| 230 | 230 | |
| 231 | 231 | @Override |
| 232 | - public Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType, String opType) { | |
| 232 | + public Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType, String opType, String userId) { | |
| 233 | 233 | Map<String, Object> map = new HashMap<>(); |
| 234 | 234 | try { |
| 235 | 235 | |
| ... | ... | @@ -251,7 +251,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 251 | 251 | } |
| 252 | 252 | |
| 253 | 253 | //记录日志 |
| 254 | - ScheduleModifyLogger.dftz(schedule,opType, schedule.getDfsj(),dfsj,remarks); | |
| 254 | + ScheduleModifyLogger.dftz(schedule,opType, schedule.getDfsj(),dfsj,remarks, userId); | |
| 255 | 255 | |
| 256 | 256 | schedule.setDfsjAll(dfsj); |
| 257 | 257 | schedule.setDfAuto(false); |
| ... | ... | @@ -316,7 +316,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 316 | 316 | } |
| 317 | 317 | |
| 318 | 318 | @Override |
| 319 | - public Map<String, Object> destroy(String idsStr, /*int spaceAdjust, */String remarks, String reason/*, int spaceNum*/) { | |
| 319 | + public Map<String, Object> destroy(String idsStr, String remarks, String reason, String userId) { | |
| 320 | 320 | |
| 321 | 321 | Map<String, Object> map = new HashMap<>(); |
| 322 | 322 | List<ScheduleRealInfo> rsList = new ArrayList<>(); |
| ... | ... | @@ -333,7 +333,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 333 | 333 | return map; |
| 334 | 334 | } |
| 335 | 335 | //记录日志 |
| 336 | - ScheduleModifyLogger.jhlb(schedule, remarks); | |
| 336 | + ScheduleModifyLogger.jhlb(schedule, remarks, userId); | |
| 337 | 337 | |
| 338 | 338 | schedule.setAdjustExps(reason); |
| 339 | 339 | schedule.destroy(); |
| ... | ... | @@ -1354,7 +1354,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1354 | 1354 | sch = list.get(i); |
| 1355 | 1355 | |
| 1356 | 1356 | //调整待发 |
| 1357 | - tempRs = outgoAdjust(sch.getId(), null, fmtHHmm.print(st), null, "3"); | |
| 1357 | + tempRs = outgoAdjust(sch.getId(), null, fmtHHmm.print(st), null, "3", null); | |
| 1358 | 1358 | |
| 1359 | 1359 | if(null != tempRs && tempRs.get("ts") != null) |
| 1360 | 1360 | tempTs = (List<ScheduleRealInfo>) tempRs.get("ts"); |
| ... | ... | @@ -1532,7 +1532,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1532 | 1532 | */ |
| 1533 | 1533 | if (map.get("status") != null |
| 1534 | 1534 | && Integer.parseInt(map.get("status").toString()) == -1) { |
| 1535 | - destroy(sch.getId() + "", "", map.get("adjustExps").toString()); | |
| 1535 | + destroy(sch.getId() + "", "", map.get("adjustExps").toString(), null); | |
| 1536 | 1536 | fLog.log("烂班"); |
| 1537 | 1537 | } |
| 1538 | 1538 | |
| ... | ... | @@ -1544,7 +1544,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1544 | 1544 | double jhlcNum = Double.parseDouble(jhlc); |
| 1545 | 1545 | //烂班 |
| 1546 | 1546 | if(jhlcNum == 0 && sch.getJhlcOrig() != 0 && !sch._isInout() && !sch.isDestroy()){ |
| 1547 | - destroy(sch.getId() + "", "", map.get("adjustExps").toString()); | |
| 1547 | + destroy(sch.getId() + "", "", map.get("adjustExps").toString(), null); | |
| 1548 | 1548 | fLog.log("里程设置为0,自动烂班"); |
| 1549 | 1549 | } |
| 1550 | 1550 | else if(jhlcNum != sch.getJhlc()){ |
| ... | ... | @@ -1600,7 +1600,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1600 | 1600 | schedule = dayOfSchedule.get(id); |
| 1601 | 1601 | |
| 1602 | 1602 | if(schedule != null) |
| 1603 | - outgoAdjust(id, null, dfsj, null, "2"); | |
| 1603 | + outgoAdjust(id, null, dfsj, null, "2", null); | |
| 1604 | 1604 | } |
| 1605 | 1605 | |
| 1606 | 1606 | rs.put("status", ResponseCode.SUCCESS); |
| ... | ... | @@ -3179,7 +3179,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3179 | 3179 | * 批量调整人车 |
| 3180 | 3180 | */ |
| 3181 | 3181 | @Override |
| 3182 | - public Map<String, Object> multi_tzrc(List<ChangePersonCar> cpcs) { | |
| 3182 | + public Map<String, Object> multi_tzrc(List<ChangePersonCar> cpcs, String userId) { | |
| 3183 | 3183 | Map<String, Object> rs = new HashMap<>(); |
| 3184 | 3184 | Set<ScheduleRealInfo> set = new HashSet<>(); |
| 3185 | 3185 | |
| ... | ... | @@ -3218,9 +3218,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3218 | 3218 | } |
| 3219 | 3219 | |
| 3220 | 3220 | //为换人换车情况表写入数据 |
| 3221 | - schModifyLog.saveChangetochange(sch, cpc); | |
| 3221 | + schModifyLog.saveChangetochange(sch, cpc, userId); | |
| 3222 | 3222 | //日志记录 |
| 3223 | - ScheduleModifyLogger.tzrc(sch, cpc); | |
| 3223 | + ScheduleModifyLogger.tzrc(sch, cpc, userId); | |
| 3224 | 3224 | |
| 3225 | 3225 | //换驾驶员 |
| 3226 | 3226 | if (StringUtils.isNotEmpty(cpc.getJsy())) { |
| ... | ... | @@ -3232,7 +3232,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3232 | 3232 | } |
| 3233 | 3233 | |
| 3234 | 3234 | //换售票员 |
| 3235 | - if (StringUtils.isNotEmpty(cpc.getSpy())) { | |
| 3235 | + if (StringUtils.isNotEmpty(cpc.getSpy()) | |
| 3236 | + && cpc.getSpy().indexOf("/")!=-1 | |
| 3237 | + && cpc.getSpy().length() > 1) { | |
| 3236 | 3238 | sGh = cpc.getSpy().split("/")[0]; |
| 3237 | 3239 | sName = getPersonName(sch.getGsBm(), sGh); |
| 3238 | 3240 | if(StringUtils.isEmpty(sName)){ |
| ... | ... | @@ -3322,7 +3324,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3322 | 3324 | if (StringUtils.isEmpty(dc.getOld_dfsj()) || StringUtils.isEmpty(dc.getNew_dfsj())) |
| 3323 | 3325 | continue; |
| 3324 | 3326 | |
| 3325 | - tempMap = outgoAdjust(dc.getSchId(), "", dc.getNew_dfsj(), null, "2"); | |
| 3327 | + tempMap = outgoAdjust(dc.getSchId(), "", dc.getNew_dfsj(), null, "2", null); | |
| 3326 | 3328 | |
| 3327 | 3329 | if (tempMap.get("status").equals(ResponseCode.SUCCESS)) { |
| 3328 | 3330 | list.addAll((Collection<? extends ScheduleRealInfo>) tempMap.get("ts")); | ... | ... |
src/main/java/com/bsth/websocket/dto/WsScheduleRealInfo.java
| ... | ... | @@ -6,10 +6,7 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 6 | 6 | import javax.persistence.FetchType; |
| 7 | 7 | import javax.persistence.OneToMany; |
| 8 | 8 | import javax.persistence.Transient; |
| 9 | -import java.util.ArrayList; | |
| 10 | -import java.util.HashSet; | |
| 11 | -import java.util.List; | |
| 12 | -import java.util.Set; | |
| 9 | +import java.util.*; | |
| 13 | 10 | |
| 14 | 11 | /** |
| 15 | 12 | * 精简字段的实际排班 entity |
| ... | ... | @@ -73,7 +70,7 @@ public class WsScheduleRealInfo { |
| 73 | 70 | } |
| 74 | 71 | |
| 75 | 72 | |
| 76 | - public static List<WsScheduleRealInfo> getMultiInstance(List<ScheduleRealInfo> list){ | |
| 73 | + public static List<WsScheduleRealInfo> getMultiInstance(Collection<ScheduleRealInfo> list){ | |
| 77 | 74 | List<WsScheduleRealInfo> rs = new ArrayList<>(); |
| 78 | 75 | for(ScheduleRealInfo sch : list){ |
| 79 | 76 | rs.add(getInstance(sch)); | ... | ... |
src/main/resources/static/real_control_v2/css/main.css
| ... | ... | @@ -936,17 +936,25 @@ option.oil_station_opt { |
| 936 | 936 | } |
| 937 | 937 | |
| 938 | 938 | .park-and-station-wrap { |
| 939 | - margin-top: 9px; | |
| 940 | - border: 1px solid #3dce69; | |
| 939 | + margin-top: 25px; | |
| 940 | + border: 1px solid #b9b9b9; | |
| 941 | 941 | width: 580px; |
| 942 | 942 | padding: 12px; |
| 943 | 943 | border-radius: 5px; |
| 944 | + box-shadow: 0 2px 5px rgba(0,0,0,.1); | |
| 945 | + margin-bottom: 15px; | |
| 944 | 946 | } |
| 945 | 947 | |
| 946 | 948 | .park-and-station-wrap select { |
| 947 | 949 | width: auto !important; |
| 948 | 950 | } |
| 949 | 951 | |
| 952 | +.park-and-station-wrap>span{ | |
| 953 | + vertical-align: middle; | |
| 954 | + margin-top: 9px; | |
| 955 | + display: inline-block; | |
| 956 | +} | |
| 957 | + | |
| 950 | 958 | /** 安全驾驶相关css */ |
| 951 | 959 | .safe_driv_pop_wrap { |
| 952 | 960 | position: absolute; | ... | ... |
src/main/resources/static/real_control_v2/css/north.css
| ... | ... | @@ -330,6 +330,8 @@ |
| 330 | 330 | padding-top: 20px; |
| 331 | 331 | overflow: auto; |
| 332 | 332 | padding-bottom: 20px; |
| 333 | + position: relative; | |
| 334 | + padding-left: 45px; | |
| 333 | 335 | } |
| 334 | 336 | |
| 335 | 337 | #nav-line_config-modal select, |
| ... | ... | @@ -534,4 +536,9 @@ span.sm-grey{ |
| 534 | 536 | .voip_call_info_panel ._title{ |
| 535 | 537 | padding: 15px; |
| 536 | 538 | background: #e6e6e6; |
| 539 | +} | |
| 540 | + | |
| 541 | +#line_config_entity_wrap .uk-list{ | |
| 542 | + display: block; | |
| 543 | + margin-top: 25px; | |
| 537 | 544 | } |
| 538 | 545 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/north/nav/line_config/line_config_entity.html
| ... | ... | @@ -108,13 +108,13 @@ |
| 108 | 108 | </script> |
| 109 | 109 | |
| 110 | 110 | <script id="park-and-station-temp" type="text/html"> |
| 111 | - 停车场 | |
| 111 | + <span>停车场</span> | |
| 112 | 112 | <select class="z-depth-input" name="twinsPark"> |
| 113 | 113 | {{each parks as p i}} |
| 114 | 114 | <option value="{{p.code}}" {{if p.code==conf.twinsPark}}selected{{/if}}>{{p.name}}</option> |
| 115 | 115 | {{/each}} |
| 116 | 116 | </select> |
| 117 | - 既是站点 | |
| 117 | + <span> 既是站点</span> | |
| 118 | 118 | <select class="z-depth-input" name="twinsStation"> |
| 119 | 119 | {{each routes as r i}} |
| 120 | 120 | <option value="{{r.stationCode}}" {{if r.stationCode==conf.twinsStation}}selected{{/if}}>{{r.stationName}} | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
| ... | ... | @@ -163,14 +163,12 @@ var gb_schedule_table = (function () { |
| 163 | 163 | //计算实发时间差值 |
| 164 | 164 | var calc_sch_real_shift = function (sch) { |
| 165 | 165 | if (sch['fcsjActualTime']){ |
| 166 | - var diff = sch['fcsjActualTime'] - sch['dfsjT'], fcsj_diff; | |
| 167 | - fcsj_diff = parseInt(diff / 60000, 10); | |
| 168 | - if(diff % 60000 != 0){ | |
| 169 | - /*if(fcsj_diff > 0) | |
| 170 | - fcsj_diff ++; | |
| 171 | - else */if(fcsj_diff < 0) | |
| 172 | - fcsj_diff --; | |
| 173 | - } | |
| 166 | + var fs = 'YYYY-MM-DD HH:mm' | |
| 167 | + ,m1 = moment(sch['fcsjActualTime']).format(fs) | |
| 168 | + ,m2 = moment(sch['dfsjT']).format(fs);//去掉秒 | |
| 169 | + | |
| 170 | + var diff = moment(m1, fs).format('X') - moment(m2, fs).format('X') | |
| 171 | + ,fcsj_diff = parseInt(diff / 60, 10);; | |
| 174 | 172 | |
| 175 | 173 | if(fcsj_diff > 0) |
| 176 | 174 | sch.fcsj_diff = '( +' + fcsj_diff + ' )'; |
| ... | ... | @@ -181,8 +179,6 @@ var gb_schedule_table = (function () { |
| 181 | 179 | } |
| 182 | 180 | }; |
| 183 | 181 | |
| 184 | - | |
| 185 | - | |
| 186 | 182 | function arrayIsNull(array) { |
| 187 | 183 | return !array || array.length == 0; |
| 188 | 184 | } | ... | ... |