Commit 96b63a8ec9516a1337bd8c515ac29732a85266e3
1 parent
82b25198
智能调度执行记录
Showing
13 changed files
with
544 additions
and
135 deletions
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
| ... | ... | @@ -884,4 +884,14 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, |
| 884 | 884 | |
| 885 | 885 | return res; |
| 886 | 886 | } |
| 887 | + | |
| 888 | + /** | |
| 889 | + * 智能调度大间隔临加班次 | |
| 890 | + * @param ids | |
| 891 | + * @return | |
| 892 | + */ | |
| 893 | + @RequestMapping(value = "thissch/{ids}", method = RequestMethod.POST) | |
| 894 | + public ScheduleRealInfo thissch(@RequestParam Integer ids){ | |
| 895 | + return scheduleRealInfoService.thissch(ids); | |
| 896 | + } | |
| 887 | 897 | } | ... | ... |
src/main/java/com/bsth/controller/zndd/LoggerZnddController.java
0 → 100644
| 1 | +package com.bsth.controller.zndd; | |
| 2 | + | |
| 3 | +import com.bsth.controller.BaseController; | |
| 4 | +import com.bsth.entity.zndd.LoggerZndd; | |
| 5 | +import com.bsth.entity.zndd.ZnddYuAn; | |
| 6 | +import org.springframework.web.bind.annotation.RequestMapping; | |
| 7 | +import org.springframework.web.bind.annotation.RestController; | |
| 8 | + | |
| 9 | +@RestController | |
| 10 | +@RequestMapping("logZndd") | |
| 11 | +public class LoggerZnddController extends BaseController<LoggerZndd, Integer> { | |
| 12 | +} | ... | ... |
src/main/java/com/bsth/data/zndd/AutomaticSch.java
| ... | ... | @@ -10,7 +10,6 @@ import com.bsth.data.gpsdata_v2.entity.GpsEntity; |
| 10 | 10 | import com.bsth.data.schedule.DayOfSchedule; |
| 11 | 11 | import com.bsth.data.schedule.ScheduleComparator; |
| 12 | 12 | import com.bsth.data.schedule.late_adjust.LateAdjustHandle; |
| 13 | -import com.bsth.entity.StationRoute; | |
| 14 | 13 | import com.bsth.entity.directive.D60; |
| 15 | 14 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 16 | 15 | import com.bsth.repository.StationRouteRepository; |
| ... | ... | @@ -54,7 +53,9 @@ public class AutomaticSch { |
| 54 | 53 | carMonitor carMonitor; |
| 55 | 54 | @Autowired |
| 56 | 55 | BasicData basicData; |
| 57 | - | |
| 56 | + | |
| 57 | + Queue<Map> queue = new LinkedList<>(); | |
| 58 | + | |
| 58 | 59 | private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm"); |
| 59 | 60 | SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| 60 | 61 | |
| ... | ... | @@ -62,24 +63,24 @@ public class AutomaticSch { |
| 62 | 63 | private Map<String,Long> drivreMap =new HashMap<>(); //自动重发map |
| 63 | 64 | // 当日60指令缓存 |
| 64 | 65 | private ConcurrentMap<Integer, D60> d60Map = new ConcurrentHashMap<>();//d60map |
| 65 | - | |
| 66 | + | |
| 66 | 67 | String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr=2024-07-23"; //大间隔接口 |
| 67 | 68 | |
| 68 | 69 | //http://10.10.200.201:8083/wxk-prod-api/service-api/lggj/schedule/drByInfo 维修接口 |
| 69 | 70 | |
| 70 | 71 | private Map<String,Long> SFMAP = new HashMap<>(); |
| 71 | - | |
| 72 | + | |
| 72 | 73 | //满载 |
| 73 | 74 | public void mz(){ |
| 74 | 75 | try { |
| 75 | 76 | ScheduleRealInfo sr = dayOfSchedule.executeCurr("S0R-054"); |
| 76 | - ts(addStationPeople(sr, "MZ", 0L));//第二种 设备未离线 出站时间内未出站 | |
| 77 | + ts(addStationPeople(sr, "MZ", 0L));//第二种 设备未离线 出站时间内未出站 | |
| 77 | 78 | } |
| 78 | 79 | catch (Exception e){ |
| 79 | 80 | logger.error("满载------------------",e); |
| 80 | 81 | } |
| 81 | 82 | } |
| 82 | - | |
| 83 | + | |
| 83 | 84 | //大间隔的情况 |
| 84 | 85 | public void dfTz(){ |
| 85 | 86 | try{ |
| ... | ... | @@ -88,33 +89,60 @@ public class AutomaticSch { |
| 88 | 89 | return; |
| 89 | 90 | JSONObject obj = JSON.parseObject(sb.toString()); |
| 90 | 91 | List<LargeGap> lgs = JSON.parseArray(obj.getString("largeGap"), LargeGap.class); |
| 91 | - Long its = 0l; | |
| 92 | + ScheduleRealInfo sch; | |
| 92 | 93 | //数据转换 并推送 |
| 93 | 94 | for (LargeGap lg : lgs){ |
| 94 | 95 | if(dayOfSchedule.executeCurr(lg.getNbbm()) != null){ |
| 95 | - its= dayOfSchedule.executeCurr(lg.getNbbm()).getId(); | |
| 96 | + sch= dayOfSchedule.executeCurr(lg.getNbbm()); | |
| 96 | 97 | }else { |
| 97 | 98 | continue; |
| 98 | 99 | } |
| 99 | - ts(ConvertDJK(lg,its.toString())); | |
| 100 | + | |
| 101 | + ts(ConvertDJK(lg,sch)); | |
| 100 | 102 | } |
| 101 | - | |
| 103 | + | |
| 102 | 104 | }catch (Exception e){ |
| 103 | 105 | logger.error("大间隔推送失败------------------",e); |
| 104 | 106 | } |
| 105 | 107 | } |
| 106 | - | |
| 108 | + //发现大客流 -> 大客流情况 ->处置大客流 | |
| 109 | + public void Dkl(){ | |
| 110 | + //推送 | |
| 111 | + | |
| 112 | + try{ | |
| 113 | + Map m = queue.poll(); | |
| 114 | + if (m != null) { | |
| 115 | + if (Integer.valueOf(m.get("num").toString()) > 15) { | |
| 116 | + //超过10的时候 判断为大客流 | |
| 117 | + | |
| 118 | + ts(ConvertDKL(m)); | |
| 119 | + | |
| 120 | + } | |
| 121 | + } | |
| 122 | + | |
| 123 | + ScheduleRealInfo sr = dayOfSchedule.findByNbbm("W8A-009").get(0); | |
| 124 | + ts(addStationPeople(sr, "DKL", 0L));//大客流 | |
| 125 | + | |
| 126 | + | |
| 127 | + }catch (Exception e){ | |
| 128 | + logger.error("大客流推送失败------------------",e); | |
| 129 | + } | |
| 130 | + | |
| 131 | + } | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 107 | 135 | //撤销班次 检测人员或者车辆故障 --//换人换车或烂班 //路牌对调 |
| 108 | 136 | public void cxJC(){ |
| 109 | 137 | |
| 110 | 138 | |
| 111 | 139 | } |
| 112 | - | |
| 140 | + | |
| 113 | 141 | //撤销撤销班次 检测人员或者车辆故障 --//换人换车或烂班 //路牌对调 |
| 114 | 142 | public void cxJCX(){ |
| 115 | 143 | |
| 116 | 144 | } |
| 117 | - | |
| 145 | + | |
| 118 | 146 | //实发未发检测 -- 车辆GPS掉线的情况下,车辆该出站了 |
| 119 | 147 | /** |
| 120 | 148 | * 1。已过待发时间还没发车的 |
| ... | ... | @@ -132,80 +160,62 @@ public class AutomaticSch { |
| 132 | 160 | //1.离线 2.实发时间为空 3.已过待发时间还没发车的 |
| 133 | 161 | long time = System.currentTimeMillis();//实际时间+2分钟 |
| 134 | 162 | //超过待发时间 实发时间还是null的 |
| 135 | - if (sr.getFcsjT()+ (1000 * 60 * 3) < time && sr.getFcsjT()+ (1000 * 60 * 7) > time) { | |
| 163 | + if (sr.getFcsjT() + (1000 * 60 * 3) < time && sr.getFcsjT() + (1000 * 60 * 7) > time) { | |
| 136 | 164 | |
| 137 | - //起点站实际到达时间为null的情况下 | |
| 138 | - /* if (StringUtils.isEmpty(sr.getQdzArrDatesj())) { | |
| 139 | - ScheduleRealInfo prev = dayOfSchedule.prev(sr); | |
| 140 | - //上一个班次没有实际终点到达时间 | |
| 141 | - if (prev != null && StringUtils.isEmpty(prev.getZdsjActual())) { | |
| 142 | - continue; | |
| 143 | - } | |
| 144 | - }*/ | |
| 145 | 165 | //第一种 设备离线的情况下改出站 |
| 146 | 166 | Integer staus = 0; //状态 |
| 147 | - if (StringUtils.isEmpty(sr.getFcsjActual()) | |
| 148 | - && (sr.getBcType().equals("normal") || sr.getBcType().equals("region")) | |
| 167 | + if (StringUtils.isEmpty(sr.getFcsjActual()) | |
| 168 | + && (sr.getBcType().equals("normal") || sr.getBcType().equals("region")) | |
| 149 | 169 | && (StringUtils.isEmpty(sr.getRemarks()) || sr.getRemarks().equals("_智能调度-异常实发"))) { |
| 150 | 170 | |
| 151 | - GpsEntity gps = gpsRealData.getByNbbm(sr.getClZbh()); | |
| 152 | - //当前设备离线的情况 | |
| 171 | + GpsEntity gps = gpsRealData.getByNbbm(sr.getClZbh()); | |
| 172 | + //当前设备离线的情况 | |
| 153 | 173 | //1。一直没收到gps |
| 154 | 174 | //2.gps长时间离线的情况下 |
| 155 | 175 | //3.人为调整过的都跳过 |
| 156 | - if (gps == null || gps.getTimestamp() + (1000 * 60 * 3) < time || (gps.getAbnormalStatus() != null && gps.getAbnormalStatus().equals("offline"))){ | |
| 176 | + if (gps == null || gps.getTimestamp() + (1000 * 60 * 3) < time || (gps.getAbnormalStatus() != null && gps.getAbnormalStatus().equals("offline"))) { | |
| 157 | 177 | ts(addStationPeople(sr, "SFTZ_1", 0L)); |
| 158 | 178 | Gson gson = new Gson(); |
| 159 | 179 | String chartStr = gson.toJsonTree(sr).toString(); |
| 160 | - logger.info("实发调整--"+chartStr); | |
| 180 | + logger.info("实发调整--" + chartStr); | |
| 161 | 181 | } |
| 162 | 182 | } |
| 163 | 183 | } |
| 164 | 184 | } |
| 165 | - | |
| 185 | + | |
| 166 | 186 | } |
| 167 | 187 | }catch (Exception e){ |
| 168 | 188 | logger.error("自动调度,实发未发推送失败---",e); |
| 169 | 189 | } |
| 170 | 190 | logger.warn("实发未发扫描结束"); |
| 171 | 191 | } |
| 172 | - | |
| 192 | + | |
| 173 | 193 | //实发撤销检测 -- 出现快一慢三的情况 && 指令重发 |
| 174 | 194 | public void sfCX(){ |
| 175 | 195 | //查询所有班次 |
| 176 | 196 | //remark 人工干预过的的不检测 |
| 177 | 197 | try { |
| 178 | 198 | |
| 179 | - stationRouteRepository.findAll(); | |
| 180 | - | |
| 181 | - Iterator<StationRoute> iterator = stationRouteRepository.findAll().iterator(); | |
| 182 | -// Map<String, String> stationCode2Name = new HashMap<>(); | |
| 183 | -// StationRoute sroute; | |
| 184 | -// while (iterator.hasNext()) { | |
| 185 | -// sroute = iterator.next(); | |
| 186 | -// stationCode2Name.put(sroute.getLineCode() + "_" + sroute.getDirections() + "_" + sroute.getStationCode(), sroute.getStationMark()); | |
| 187 | -// } | |
| 188 | -// | |
| 189 | 199 | Map<String, String> lineMap = BasicData.lineCode2NameMap; |
| 190 | 200 | List<ScheduleRealInfo> oldSchDateList; |
| 191 | 201 | String lineCode; |
| 192 | 202 | for (Map.Entry<String, String> ts : lineMap.entrySet()){ |
| 193 | 203 | lineCode =ts.getKey(); |
| 194 | 204 | oldSchDateList = dayOfSchedule.findByLineCode(lineCode); |
| 195 | - | |
| 205 | + | |
| 196 | 206 | Map m = new HashMap(); |
| 197 | 207 | //排序 |
| 198 | 208 | Collections.sort(oldSchDateList, new ScheduleComparator.FCSJ()); |
| 199 | 209 | for (ScheduleRealInfo t : oldSchDateList){ |
| 200 | - // 发车误点 | |
| 201 | - if (t.getDfsj() != null && t.getFcsjActual() != null | |
| 210 | + // 发车误点 | |
| 211 | + if (t.getDfsj() != null && t.getFcsjActual() != null | |
| 202 | 212 | && (t.getBcType().equals("normal") || t.getBcType().equals("region")) |
| 203 | 213 | && (StringUtils.isEmpty(t.getRemarks()) || t.getRemarks().equals("_智能调度-异常实发"))) { |
| 204 | 214 | |
| 205 | 215 | long sjc = t.getFcsjActualTime() - t.getDfsjT(); |
| 206 | 216 | long time = System.currentTimeMillis();//当前时间 |
| 207 | - | |
| 208 | - if (t.getDfsjT() > time) { | |
| 217 | + | |
| 218 | + if (t.getDfsjT() > time) { | |
| 209 | 219 | //快1慢3 |
| 210 | 220 | if (sjc >= -1 * 60 * 1000 && sjc <= 3 * 60 * 1000) { |
| 211 | 221 | continue; |
| ... | ... | @@ -217,36 +227,31 @@ public class AutomaticSch { |
| 217 | 227 | logger.info("实发撤销--" + chartStr); |
| 218 | 228 | } |
| 219 | 229 | } |
| 220 | - | |
| 221 | - /* //待发时间要大于当前时间 | |
| 222 | - //车辆还在站内 | |
| 223 | - String mark = null; | |
| 224 | - if (gps != null){ | |
| 225 | - mark = stationCode2Name.get(gps.getLineId()+"_"+gps.getUpDown()+"_"+gps.getStopNo()); | |
| 226 | - } | |
| 227 | - if (t.getFcsjT() > time && ((gps!= null && gps.getInstation() == 2) | |
| 228 | - || gps == null || | |
| 229 | - (gps!= null && mark!=null && mark.equals("B") && gps.getInstation() == 1) || | |
| 230 | - (gps!= null && mark!=null && mark.equals("E") && gps.getInstation() == 1))) { | |
| 231 | - | |
| 232 | - }*/ | |
| 233 | 230 | } |
| 231 | + | |
| 234 | 232 | } |
| 235 | 233 | } |
| 236 | 234 | }catch (Exception e){ |
| 237 | 235 | logger.error("实发撤销推送接口出错-----------",e); |
| 238 | 236 | } |
| 239 | 237 | } |
| 240 | - | |
| 238 | + | |
| 239 | + public Boolean isLines(String line) { | |
| 240 | + //新临专线,新芦专线,临港5路,浦东7路,浦东91路 | |
| 241 | + if (line.equals("10636") || line.equals("200828") || line.equals("211208") || line.equals("230226") || line.equals("201012")) | |
| 242 | + return Boolean.valueOf(true); | |
| 243 | + return Boolean.valueOf(false); | |
| 244 | + } | |
| 245 | + | |
| 241 | 246 | //发车信息微调检测 -- 车辆掉线后实发检测,重新计算时间发车时间 |
| 242 | 247 | public void updatesf(){ |
| 243 | - | |
| 248 | + | |
| 244 | 249 | } |
| 245 | - | |
| 250 | + | |
| 246 | 251 | //临加班次 -- 检测到大客流 //走落地屏客流接口 |
| 247 | 252 | public void ljbc(){ |
| 248 | - | |
| 249 | - | |
| 253 | + | |
| 254 | + | |
| 250 | 255 | } |
| 251 | 256 | |
| 252 | 257 | /** |
| ... | ... | @@ -265,30 +270,29 @@ public class AutomaticSch { |
| 265 | 270 | String lineCode; |
| 266 | 271 | for (Map.Entry<String, String> ts : lineMap.entrySet()) { |
| 267 | 272 | lineCode = ts.getKey(); |
| 268 | - /* if (!lineCode.equals("12101")) | |
| 269 | - return;*/ | |
| 270 | - | |
| 271 | - oldSchDateList = dayOfSchedule.findByLineCode(lineCode); | |
| 272 | - for (ScheduleRealInfo t : oldSchDateList){ | |
| 273 | - //指令重发 | |
| 274 | - //1.班次已经执行过的 | |
| 275 | - //2.驾驶员未确认的 | |
| 276 | - //3. | |
| 277 | - Long t1 = 1000L * 60 * 5; | |
| 278 | - Long sj = new Date().getTime(); | |
| 279 | - if(t.getStatus() == 2 && t.getDirectiveState() != 200 && t.getBcType().equals("normal")){ | |
| 280 | - //还未下发的 | |
| 281 | - if (drivreMap.get(t.getClZbh()) == null){ | |
| 282 | - //下发或者处置 | |
| 283 | - drivreMap.put(t.getClZbh(),new Date().getTime()); | |
| 284 | - directiveService.send60DispatchZndd(t.getId(), "智能调度"); | |
| 285 | - | |
| 286 | - //下发实际超过5分钟的 | |
| 287 | - } else if (drivreMap.get(t.getClZbh()) + t1 <= sj){ | |
| 288 | - directiveService.send60DispatchZndd(t.getId(), "智能调度"); | |
| 289 | - //更新下发时间 | |
| 290 | - drivreMap.put(t.getClZbh(),new Date().getTime()); | |
| 291 | - //下发时间未超过5分钟返回 | |
| 273 | + if(isLines(lineCode)) { | |
| 274 | + | |
| 275 | + oldSchDateList = dayOfSchedule.findByLineCode(lineCode); | |
| 276 | + for (ScheduleRealInfo t : oldSchDateList) { | |
| 277 | + //指令重发 | |
| 278 | + //1.班次已经执行过的 | |
| 279 | + //2.驾驶员未确认的 | |
| 280 | + Long t1 = 1000L * 60 * 5; | |
| 281 | + Long sj = new Date().getTime(); | |
| 282 | + if (t.getStatus() == 2 && t.getDirectiveState() != 200 && t.getBcType().equals("normal")) { | |
| 283 | + //还未下发的 | |
| 284 | + if (drivreMap.get(t.getClZbh()) == null) { | |
| 285 | + //下发或者处置 | |
| 286 | + drivreMap.put(t.getClZbh(), new Date().getTime()); | |
| 287 | + directiveService.send60DispatchZndd(t.getId(), "智能调度"); | |
| 288 | + | |
| 289 | + //下发实际超过5分钟的 | |
| 290 | + } else if (drivreMap.get(t.getClZbh()) + t1 <= sj) { | |
| 291 | + directiveService.send60DispatchZndd(t.getId(), "智能调度"); | |
| 292 | + //更新下发时间 | |
| 293 | + drivreMap.put(t.getClZbh(), new Date().getTime()); | |
| 294 | + //下发时间未超过5分钟返回 | |
| 295 | + } | |
| 292 | 296 | } |
| 293 | 297 | } |
| 294 | 298 | } |
| ... | ... | @@ -312,7 +316,7 @@ public class AutomaticSch { |
| 312 | 316 | if(sch.getDfsjT() > t) |
| 313 | 317 | break; |
| 314 | 318 | |
| 315 | - /*if(sch.isLate()) | |
| 319 | + /*if(sch.isLate()) //演示使用 不跳过 | |
| 316 | 320 | continue;*/ |
| 317 | 321 | |
| 318 | 322 | if(sch.getStatus() == 0 |
| ... | ... | @@ -344,9 +348,9 @@ public class AutomaticSch { |
| 344 | 348 | } |
| 345 | 349 | return null; |
| 346 | 350 | } |
| 347 | - | |
| 348 | - | |
| 349 | - | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 350 | 354 | public void ts(Map m) throws ParseException { |
| 351 | 355 | //记录存一下 --超过当前时间的是否推送? |
| 352 | 356 | String st = m.get("lineCode")+"_"+m.get("type")+"_"+m.get("rqStr"); |
| ... | ... | @@ -357,7 +361,7 @@ public class AutomaticSch { |
| 357 | 361 | if (ZnddThread.ZNDDTYPEMAP.get(st) != null ) { |
| 358 | 362 | list = ZnddThread.ZNDDTYPEMAP.get(st); |
| 359 | 363 | int i = 0; |
| 360 | - | |
| 364 | + | |
| 361 | 365 | for (Long s : list){ //推送过的同样情况1小时内 &&//超过当前时间的不推送&& sj < dsj |
| 362 | 366 | if (Math.abs(s - sj) > (60 * 60 * 1000)){ |
| 363 | 367 | i ++ ; |
| ... | ... | @@ -370,13 +374,14 @@ public class AutomaticSch { |
| 370 | 374 | outEntrance.Znddjk(m);//推送 |
| 371 | 375 | } |
| 372 | 376 | |
| 377 | + | |
| 373 | 378 | } |
| 374 | 379 | |
| 375 | 380 | |
| 376 | 381 | |
| 377 | 382 | |
| 378 | 383 | //大间隔数据转换 |
| 379 | - public Map ConvertDJK(LargeGap lg,String ids){ | |
| 384 | + public Map ConvertDJK(LargeGap lg,ScheduleRealInfo sch){ | |
| 380 | 385 | Map sp = new HashMap(); |
| 381 | 386 | sp.put("uuid",UUID()); |
| 382 | 387 | sp.put("lineCode",lg.getLineCode()); |
| ... | ... | @@ -390,12 +395,24 @@ public class AutomaticSch { |
| 390 | 395 | sp.put("stationName",lg.getStationName()); |
| 391 | 396 | sp.put("clzbh",lg.getNbbm()); |
| 392 | 397 | sp.put("fcsj",lg.getBcfcsj()); |
| 393 | - sp.put("ids",ids); | |
| 398 | + sp.put("ids",sch.getId()); | |
| 394 | 399 | sp.put("lg",lg); |
| 400 | + sp.put("sch",sch); | |
| 395 | 401 | return sp; |
| 402 | + } | |
| 396 | 403 | |
| 404 | + //大间隔数据转换 | |
| 405 | + public Map ConvertDKL(Map m){ | |
| 406 | + Map sp = new HashMap(); | |
| 407 | + sp.put("uuid",UUID()); | |
| 408 | + sp.put("lineCode",m.get("lineCode")); | |
| 409 | + sp.put("lineName",m.get("lineName")); | |
| 410 | + sp.put("rqStr",sdf.format(new Date())); | |
| 411 | + sp.put("rq",sdfHHmm.format(new Date())); //检测到时间 | |
| 412 | + return sp; | |
| 397 | 413 | } |
| 398 | 414 | |
| 415 | + | |
| 399 | 416 | //转换 |
| 400 | 417 | public Map addStationPeople(ScheduleRealInfo info,String type,Long sst) throws ParseException{ |
| 401 | 418 | Map sp = new HashMap(); | ... | ... |
src/main/java/com/bsth/data/zndd/OutEntrance.java
| 1 | 1 | package com.bsth.data.zndd; |
| 2 | 2 | import com.bsth.common.ResponseCode; |
| 3 | 3 | import com.bsth.data.schedule.DayOfSchedule; |
| 4 | +import com.bsth.data.schedule.ScheduleComparator; | |
| 5 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 6 | +import com.bsth.entity.zndd.StationPeopleLogger; | |
| 7 | +import com.bsth.entity.zndd.StationSignsLogger; | |
| 4 | 8 | import com.bsth.websocket.handler.SendUtils; |
| 5 | 9 | import com.fasterxml.jackson.databind.ObjectMapper; |
| 6 | 10 | import org.slf4j.Logger; |
| 7 | 11 | import org.slf4j.LoggerFactory; |
| 8 | 12 | import org.springframework.beans.factory.annotation.Autowired; |
| 13 | +import org.springframework.beans.factory.annotation.Value; | |
| 9 | 14 | import org.springframework.web.bind.annotation.*; |
| 10 | 15 | import java.io.*; |
| 11 | 16 | import java.text.SimpleDateFormat; |
| 17 | +import java.time.LocalTime; | |
| 18 | +import java.time.format.DateTimeFormatter; | |
| 12 | 19 | import java.util.*; |
| 13 | 20 | |
| 14 | 21 | /** |
| ... | ... | @@ -26,7 +33,7 @@ public class OutEntrance { |
| 26 | 33 | DayOfSchedule dayOfSchedule; |
| 27 | 34 | |
| 28 | 35 | |
| 29 | - /* @Value("${dc.imgurl}") | |
| 36 | + @Value("${dc.imgurl}") | |
| 30 | 37 | private String imgurl; //存储图片地址 |
| 31 | 38 | |
| 32 | 39 | @Value("${dc.profile}") |
| ... | ... | @@ -34,12 +41,12 @@ public class OutEntrance { |
| 34 | 41 | |
| 35 | 42 | static String url= "http://58.34.52.130:9777/xxfb/carMonitor?"; //信息发布地址 |
| 36 | 43 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 44 | + @Autowired | |
| 45 | + carMonitor carMonitor; | |
| 37 | 46 | |
| 38 | 47 | |
| 39 | 48 | |
| 40 | - /**** | |
| 41 | - 调度屏小程序接口。 | |
| 42 | - | |
| 49 | + //调度屏小程序接口。 | |
| 43 | 50 | @RequestMapping(value = "/OutCar", method = RequestMethod.POST) |
| 44 | 51 | public Map OutCarOutCar(@RequestParam Map m,@RequestBody Map<String, String> map) { |
| 45 | 52 | |
| ... | ... | @@ -59,41 +66,39 @@ public class OutEntrance { |
| 59 | 66 | //查询班次情况自动回复 |
| 60 | 67 | //当前日期 |
| 61 | 68 | //String rq = DateUtils.dqDate(); |
| 62 | - List<Map> dzList = carMonitorThread.carMonitor(ssLogger.getLineCode(), ssLogger.getDir(), ssLogger.getStation()); //信息发布接口 | |
| 69 | + List<Map> dzList = carMonitor.carMonitor(ssLogger.getLineCode(), ssLogger.getDir(), ssLogger.getStation()); //信息发布接口 | |
| 63 | 70 | if (dzList.size() > 0){ |
| 64 | - rtn.put("message","车辆还有"+dzList.get(0).get("sj")+"抵达,请耐心等待"); | |
| 71 | + rtn.put("message","车辆还有"+dzList.get(0).get("sj")+"抵达,请耐心等待"); | |
| 65 | 72 | }else { |
| 66 | - //筛选方向 | |
| 67 | - List<ScheduleRealInfo> rs = dayOfSchedule.findByLineCode(ssLogger.getLineCode()); | |
| 68 | - //排序 | |
| 69 | - Collections.sort(rs,new ScheduleComparator.FCSJ()); | |
| 70 | - SimpleDateFormat sdf= new SimpleDateFormat("HH:ss"); | |
| 71 | - String sjtext = ""; | |
| 72 | - LocalTime t1 = LocalTime.parse(sdf.format(new Date()), DateTimeFormatter.ofPattern("HH:mm")); | |
| 73 | - for (ScheduleRealInfo sr:rs) { | |
| 74 | - LocalTime t2 = LocalTime.parse(sr.getFcsj(), DateTimeFormatter.ofPattern("HH:mm")); | |
| 75 | - //判断上下行 | |
| 76 | - if(t1.isAfter(t2)){ | |
| 77 | - sjtext = sr.getFcsj(); | |
| 78 | - } | |
| 79 | - } | |
| 80 | - | |
| 81 | - rtn.put("message","航津路与杨高北路交叉口拥堵,请耐心等待"); | |
| 82 | - rtn.put("message_els","The intersection of Hangjin Road and Yanggao North Road is congested, please be patient and wait"); | |
| 73 | + //筛选方向 | |
| 74 | + List<ScheduleRealInfo> rs = dayOfSchedule.findByLineCode(ssLogger.getLineCode()); | |
| 75 | + //排序 | |
| 76 | + Collections.sort(rs,new ScheduleComparator.FCSJ()); | |
| 77 | + SimpleDateFormat sdf= new SimpleDateFormat("HH:ss"); | |
| 78 | + String sjtext = ""; | |
| 79 | + LocalTime t1 = LocalTime.parse(sdf.format(new Date()), DateTimeFormatter.ofPattern("HH:mm")); | |
| 80 | + for (ScheduleRealInfo sr:rs) { | |
| 81 | + LocalTime t2 = LocalTime.parse(sr.getFcsj(), DateTimeFormatter.ofPattern("HH:mm")); | |
| 82 | + //判断上下行 | |
| 83 | + if(t1.isAfter(t2)){ | |
| 84 | + sjtext = sr.getFcsj(); | |
| 85 | + } | |
| 86 | + } | |
| 87 | + | |
| 88 | + rtn.put("message","航津路与杨高北路交叉口拥堵,请耐心等待"); | |
| 89 | + rtn.put("message_els","The intersection of Hangjin Road and Yanggao North Road is congested, please be patient and wait"); | |
| 83 | 90 | } |
| 84 | 91 | |
| 85 | - | |
| 86 | - | |
| 87 | - rtn.put("status",ResponseCode.SUCCESS); | |
| 92 | + rtn.put("status",ResponseCode.SUCCESS); | |
| 88 | 93 | } catch (Exception e) { |
| 89 | - rtn.put("status", ResponseCode.ERROR); | |
| 90 | - logger.info(e.getMessage()); | |
| 94 | + rtn.put("status", ResponseCode.ERROR); | |
| 95 | + logger.info(e.getMessage()); | |
| 91 | 96 | } |
| 92 | 97 | |
| 93 | - return rtn; | |
| 98 | + return rtn; | |
| 94 | 99 | } |
| 95 | 100 | |
| 96 | - */ | |
| 101 | + | |
| 97 | 102 | /* |
| 98 | 103 | 智能调度接口--通用测试接口 |
| 99 | 104 | */ |
| ... | ... | @@ -115,9 +120,8 @@ public class OutEntrance { |
| 115 | 120 | return rtn; |
| 116 | 121 | } |
| 117 | 122 | |
| 118 | - /* | |
| 119 | - 智能调度接口-大客流 | |
| 120 | - | |
| 123 | + | |
| 124 | + //智能调度接口-大客流 | |
| 121 | 125 | @RequestMapping(value="/dkl",method = RequestMethod.POST) |
| 122 | 126 | public Map ddkl(@RequestParam Map m) { |
| 123 | 127 | Map rtn = new HashMap<>(); |
| ... | ... | @@ -130,7 +134,7 @@ public class OutEntrance { |
| 130 | 134 | ssLogger.setType("大客流"); |
| 131 | 135 | |
| 132 | 136 | //保存记录 |
| 133 | - znddLoggerService.save(ssLogger); | |
| 137 | + //znddLoggerService.save(ssLogger); | |
| 134 | 138 | //线调页面推送 |
| 135 | 139 | //sendUtils.sendzndd(ssLogger); |
| 136 | 140 | |
| ... | ... | @@ -141,7 +145,7 @@ public class OutEntrance { |
| 141 | 145 | } |
| 142 | 146 | return rtn; |
| 143 | 147 | } |
| 144 | - */ | |
| 148 | + | |
| 145 | 149 | |
| 146 | 150 | |
| 147 | 151 | |
| ... | ... | @@ -151,7 +155,7 @@ public class OutEntrance { |
| 151 | 155 | * @param 上传地址(示例:D:\\1.png) |
| 152 | 156 | * @return |
| 153 | 157 | */ |
| 154 | - /*public String uploadBase64Img(String base) { | |
| 158 | + public String uploadBase64Img(String base) { | |
| 155 | 159 | |
| 156 | 160 | //获取年月日 |
| 157 | 161 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| ... | ... | @@ -207,7 +211,7 @@ public class OutEntrance { |
| 207 | 211 | } |
| 208 | 212 | } |
| 209 | 213 | return null; |
| 210 | - }*/ | |
| 214 | + } | |
| 211 | 215 | |
| 212 | 216 | |
| 213 | 217 | ... | ... |
src/main/java/com/bsth/data/zndd/ZnddThread.java
| ... | ... | @@ -84,6 +84,16 @@ public class ZnddThread extends Thread{ |
| 84 | 84 | automaticSch.wd(); |
| 85 | 85 | logger.info("误点执行完毕"); |
| 86 | 86 | } |
| 87 | + if (zs.getType().equals("djg")){ | |
| 88 | + automaticSch.dfTz(); | |
| 89 | + logger.info("大间隔执行完毕"); | |
| 90 | + } | |
| 91 | + | |
| 92 | + if (zs.getType().equals("dkl")){ | |
| 93 | + automaticSch.Dkl(); | |
| 94 | + logger.info("大客流执行完毕"); | |
| 95 | + } | |
| 96 | + | |
| 87 | 97 | } |
| 88 | 98 | } |
| 89 | 99 | }catch (Exception e){ | ... | ... |
src/main/java/com/bsth/entity/zndd/LoggerZndd.java
| ... | ... | @@ -22,6 +22,15 @@ public class LoggerZndd implements Serializable { |
| 22 | 22 | // 创建人 |
| 23 | 23 | private Integer createBy; |
| 24 | 24 | |
| 25 | + private String lineCode; | |
| 26 | + | |
| 27 | + private String LineName; | |
| 28 | + | |
| 29 | + private String rq; | |
| 30 | + | |
| 31 | + private String timeStr; | |
| 32 | + | |
| 33 | + private String dir; | |
| 25 | 34 | |
| 26 | 35 | // 创建日期 |
| 27 | 36 | @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") |
| ... | ... | @@ -58,4 +67,44 @@ public class LoggerZndd implements Serializable { |
| 58 | 67 | public void setCreateDate(Date createDate) { |
| 59 | 68 | this.createDate = createDate; |
| 60 | 69 | } |
| 70 | + | |
| 71 | + public String getLineCode() { | |
| 72 | + return lineCode; | |
| 73 | + } | |
| 74 | + | |
| 75 | + public void setLineCode(String lineCode) { | |
| 76 | + this.lineCode = lineCode; | |
| 77 | + } | |
| 78 | + | |
| 79 | + public String getLineName() { | |
| 80 | + return LineName; | |
| 81 | + } | |
| 82 | + | |
| 83 | + public void setLineName(String lineName) { | |
| 84 | + LineName = lineName; | |
| 85 | + } | |
| 86 | + | |
| 87 | + public String getRq() { | |
| 88 | + return rq; | |
| 89 | + } | |
| 90 | + | |
| 91 | + public void setRq(String rq) { | |
| 92 | + this.rq = rq; | |
| 93 | + } | |
| 94 | + | |
| 95 | + public String getTimeStr() { | |
| 96 | + return timeStr; | |
| 97 | + } | |
| 98 | + | |
| 99 | + public void setTimeStr(String timeStr) { | |
| 100 | + this.timeStr = timeStr; | |
| 101 | + } | |
| 102 | + | |
| 103 | + public String getDir() { | |
| 104 | + return dir; | |
| 105 | + } | |
| 106 | + | |
| 107 | + public void setDir(String dir) { | |
| 108 | + this.dir = dir; | |
| 109 | + } | |
| 61 | 110 | } | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -1635,7 +1635,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1635 | 1635 | rs.put("status", ResponseCode.SUCCESS); |
| 1636 | 1636 | rs.put("ts", ts); |
| 1637 | 1637 | |
| 1638 | - LoggerZndd lz = new LoggerZndd(); | |
| 1638 | + LoggerZndd lz = addZndd(sch); | |
| 1639 | 1639 | String text = sch.getXlName()+"_"+sch.getFcsj()+"的班次进行了实发调整"; |
| 1640 | 1640 | lz.setText(text); |
| 1641 | 1641 | lz.setCreateBy(SecurityUtils.getCurrentUser().getId()); |
| ... | ... | @@ -1652,6 +1652,17 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1652 | 1652 | return rs; |
| 1653 | 1653 | } |
| 1654 | 1654 | |
| 1655 | + | |
| 1656 | + public LoggerZndd addZndd(ScheduleRealInfo sch){ | |
| 1657 | + LoggerZndd lz = new LoggerZndd(); | |
| 1658 | + lz.setLineCode(sch.getXlBm()); | |
| 1659 | + lz.setLineName(sch.getXlName()); | |
| 1660 | + lz.setRq(sch.getScheduleDateStr()); | |
| 1661 | + lz.setTimeStr(sch.getFcsj()); | |
| 1662 | + lz.setDir(sch.getXlDir()); | |
| 1663 | + return lz; | |
| 1664 | + } | |
| 1665 | + | |
| 1655 | 1666 | @Override |
| 1656 | 1667 | public Map<String, Object> revokeDestroy(Long id) { |
| 1657 | 1668 | Map<String, Object> rs = new HashMap<>(); |
| ... | ... | @@ -1736,7 +1747,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 1736 | 1747 | |
| 1737 | 1748 | dayOfSchedule.save(sch); |
| 1738 | 1749 | |
| 1739 | - LoggerZndd lz = new LoggerZndd(); | |
| 1750 | + LoggerZndd lz = addZndd(sch); | |
| 1740 | 1751 | String text = sch.getXlName()+"_"+sch.getFcsj()+"的班次进行了实发撤销调整"; |
| 1741 | 1752 | lz.setText(text); |
| 1742 | 1753 | lz.setCreateBy(SecurityUtils.getCurrentUser().getId()); | ... | ... |
src/main/java/com/bsth/service/zndd/LoggerZnddService.java
0 → 100644
src/main/java/com/bsth/service/zndd/impl/LoggerZnddServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.zndd.impl; | |
| 2 | + | |
| 3 | +import com.bsth.entity.zndd.LoggerZndd; | |
| 4 | +import com.bsth.service.impl.BaseServiceImpl; | |
| 5 | +import com.bsth.service.zndd.LoggerZnddService; | |
| 6 | +import org.springframework.stereotype.Service; | |
| 7 | + | |
| 8 | +@Service | |
| 9 | +public class LoggerZnddServiceImpl extends BaseServiceImpl<LoggerZndd, Integer> implements LoggerZnddService { | |
| 10 | +} | ... | ... |
src/main/resources/static/pages/forms/zndd/logger_zndd.html
0 → 100644
| 1 | +<style type="text/css"> | |
| 2 | + .table-bordered { | |
| 3 | + border: 1px solid; } | |
| 4 | + .table-bordered > thead > tr > th, | |
| 5 | + .table-bordered > thead > tr > td, | |
| 6 | + .table-bordered > tbody > tr > th, | |
| 7 | + .table-bordered > tbody > tr > td, | |
| 8 | + .table-bordered > tfoot > tr > th, | |
| 9 | + .table-bordered > tfoot > tr > td { | |
| 10 | + border: 1px solid; } | |
| 11 | + .table-bordered > thead > tr > th, | |
| 12 | + .table-bordered > thead > tr > td { | |
| 13 | + border-bottom-width: 2px; } | |
| 14 | + | |
| 15 | + .table > tbody + tbody { | |
| 16 | + border-top: 1px solid; } | |
| 17 | +</style> | |
| 18 | + | |
| 19 | +<div class="page-head"> | |
| 20 | + <div class="page-title"> | |
| 21 | + <h1>智能调度执行记录</h1> | |
| 22 | + </div> | |
| 23 | +</div> | |
| 24 | + | |
| 25 | +<div class="row"> | |
| 26 | + <div class="col-md-12"> | |
| 27 | + <div class="portlet light porttlet-fit bordered"> | |
| 28 | + <div class="portlet-title"> | |
| 29 | + <form class="form-inline" action=""> | |
| 30 | + <div style="display: inline-block; margin-left: 33px;" id="gsdmDiv_daily"> | |
| 31 | + <span class="item-label" style="width: 80px;">公司: </span> | |
| 32 | + <select class="form-control" name="company" id="gsdmDaily" style="width: 180px;"></select> | |
| 33 | + </div> | |
| 34 | + <div style="display: inline-block; margin-left: 24px;" id="fgsdmDiv_daily"> | |
| 35 | + <span class="item-label" style="width: 80px;">分公司: </span> | |
| 36 | + <select class="form-control" name="subCompany" id="fgsdmDaily" style="width: 180px;"></select> | |
| 37 | + </div> | |
| 38 | + <div style="margin-top: 2px"></div> | |
| 39 | + <div style="display: inline-block;margin-left: 33px;"> | |
| 40 | + <span class="item-label" style="width: 80px;">线路: </span> | |
| 41 | + <select class="form-control" name="line" id="line" style="width: 180px;"> | |
| 42 | + <option value="">请选择线路...</option> | |
| 43 | + </select> | |
| 44 | + </div> | |
| 45 | + <div style="display: inline-block;margin-left: 24px;"> | |
| 46 | + <span class="item-label" style="width: 80px;"> 时间: </span> | |
| 47 | + <input class="form-control" type="text" id="date" style="width: 180px;"/> | |
| 48 | + </div> | |
| 49 | + <div class="form-group"> | |
| 50 | + <input class="btn btn-default" type="button" id="query" value="筛选"/> | |
| 51 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 52 | + </div> | |
| 53 | + <img src="/profile/avatar/2024/04/07/blob_20240407160316A002.png"> | |
| 54 | + </form> | |
| 55 | + </div> | |
| 56 | + <div class="portlet-body"> | |
| 57 | + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 58 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | |
| 59 | + <thead> | |
| 60 | + <tr> | |
| 61 | + <th colspan="7">智能调度执行记录</th> | |
| 62 | + </tr> | |
| 63 | + | |
| 64 | + <tr> | |
| 65 | + <td>线路名称</td> | |
| 66 | + <td>时间</td> | |
| 67 | + <td>方向</td> | |
| 68 | + <td>发车时间</td> | |
| 69 | + <td>内容</td> | |
| 70 | + <td>处理时间</td> | |
| 71 | + </tr> | |
| 72 | + </thead> | |
| 73 | + <tbody id="tbody"> | |
| 74 | + | |
| 75 | + </tbody> | |
| 76 | + </table> | |
| 77 | + </div> | |
| 78 | + </div> | |
| 79 | + </div> | |
| 80 | + </div> | |
| 81 | +</div> | |
| 82 | + | |
| 83 | +<script> | |
| 84 | + $(function(){ | |
| 85 | + | |
| 86 | + // 关闭左侧栏 | |
| 87 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 88 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 89 | + | |
| 90 | + $("#date").datetimepicker({ | |
| 91 | + format : 'YYYY-MM-DD', | |
| 92 | + locale : 'zh-cn' | |
| 93 | + }); | |
| 94 | + var fage=false; | |
| 95 | + var xlList; | |
| 96 | + var obj = []; | |
| 97 | + | |
| 98 | + | |
| 99 | + $.get('/report/lineList',function(result){ | |
| 100 | + xlList=result; | |
| 101 | + $.get('/user/companyData', function(result){ | |
| 102 | + obj = result; | |
| 103 | + var options = ''; | |
| 104 | + for(var i = 0; i < obj.length; i++){ | |
| 105 | + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 106 | + } | |
| 107 | + | |
| 108 | + if(obj.length ==0){ | |
| 109 | + $("#gsdmDiv_daily").css('display','none'); | |
| 110 | + }else if(obj.length ==1){ | |
| 111 | + $("#gsdmDiv_daily").css('display','none'); | |
| 112 | + if(obj[0].children.length == 1 || obj[0].children.length ==0) | |
| 113 | + $('#fgsdmDiv_daily').css('display','none'); | |
| 114 | + } | |
| 115 | + $('#gsdmDaily').html(options); | |
| 116 | + updateCompany(); | |
| 117 | + }); | |
| 118 | + }) | |
| 119 | + $("#gsdmDaily").on("change",updateCompany); | |
| 120 | + function updateCompany(){ | |
| 121 | + var company = $('#gsdmDaily').val(); | |
| 122 | + var options = ''; | |
| 123 | + for(var i = 0; i < obj.length; i++){ | |
| 124 | + if(obj[i].companyCode == company){ | |
| 125 | + var children = obj[i].children; | |
| 126 | + for(var j = 0; j < children.length; j++){ | |
| 127 | + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | |
| 128 | + } | |
| 129 | + } | |
| 130 | + } | |
| 131 | + $('#fgsdmDaily').html(options); | |
| 132 | + } | |
| 133 | + | |
| 134 | + var tempData = {}; | |
| 135 | + $.get('/report/lineList',function(xlList){ | |
| 136 | + var data = []; | |
| 137 | +// data.push({id: " ", text: "全部线路"}); | |
| 138 | + $.get('/user/companyData', function(result){ | |
| 139 | + for(var i = 0; i < result.length; i++){ | |
| 140 | + var companyCode = result[i].companyCode; | |
| 141 | + var children = result[i].children; | |
| 142 | + for(var j = 0; j < children.length; j++){ | |
| 143 | + var code = children[j].code; | |
| 144 | + for(var k=0;k < xlList.length;k++ ){ | |
| 145 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 146 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 147 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 148 | + } | |
| 149 | + } | |
| 150 | + } | |
| 151 | + } | |
| 152 | + initPinYinSelect2('#line',data,''); | |
| 153 | + | |
| 154 | + }); | |
| 155 | + }); | |
| 156 | + | |
| 157 | + $("#line").on("change", function(){ | |
| 158 | + if($("#line").val() == " "){ | |
| 159 | + $("#gsdmDaily").attr("disabled", false); | |
| 160 | + $("#fgsdmDaily").attr("disabled", false); | |
| 161 | + } else { | |
| 162 | + var temp = (tempData[$("#line").val()] ? tempData[$("#line").val()] : " : ").split(":"); | |
| 163 | + $("#gsdmDaily").val(temp[0]); | |
| 164 | + updateCompany(); | |
| 165 | + $("#fgsdmDaily").val(temp[1]); | |
| 166 | + $("#gsdmDaily").attr("disabled", true); | |
| 167 | + $("#fgsdmDaily").attr("disabled", true); | |
| 168 | + } | |
| 169 | + }); | |
| 170 | + | |
| 171 | + | |
| 172 | + var line; | |
| 173 | + var date; | |
| 174 | + var gsdmDaily; | |
| 175 | + var fgsdmDaily; | |
| 176 | + var lineName=$("#select2-line-container").html(); | |
| 177 | + $("#query").on("click",function(){ | |
| 178 | + if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 179 | + layer.msg("请选择时间"); | |
| 180 | + return; | |
| 181 | + } | |
| 182 | + line = $("#line").val(); | |
| 183 | + date = $("#date").val(); | |
| 184 | + gsdmDaily=$("#gsdmDaily").val(); | |
| 185 | + fgsdmDaily = $("#fgsdmDaily").val(); | |
| 186 | + lineName=$("#select2-line-container").html(); | |
| 187 | + var i = layer.load(2); | |
| 188 | + $get('/logZndd/all',{rq_eq:date,lineCode_eq:line,type:'query'},function(result){ | |
| 189 | + $("#form_line").text(lineName); | |
| 190 | + $("#form_date").text(date); | |
| 191 | + // 把数据填充到模版中 | |
| 192 | + var tbodyHtml = template('dailyInfo',{list:result}); | |
| 193 | + // 把渲染好的模版html文本追加到表格中 | |
| 194 | + $('#tbody').html(tbodyHtml); | |
| 195 | + layer.close(i); | |
| 196 | + | |
| 197 | + line = $("#line").val(); | |
| 198 | + startDate = $("#startDate").val(); | |
| 199 | + endDate = $("#endDate").val(); | |
| 200 | + $("#sDate").text(startDate); | |
| 201 | + $("#eDate").text(endDate); | |
| 202 | + | |
| 203 | + var total_zgl = 0,total_ks = 0; | |
| 204 | + var total_yh = 0,total_bc = 0; | |
| 205 | + | |
| 206 | + $.each(result, function(i, obj) { | |
| 207 | + total_zgl +=Number(obj.zlc*10000); | |
| 208 | + total_ks +=Number(obj.jzl1*10000); | |
| 209 | + total_yh += Number(obj.yh*10000); | |
| 210 | + total_bc += Number(obj.bc); | |
| 211 | + | |
| 212 | + }); | |
| 213 | + $("#total_zgl").text((total_zgl/10000).toFixed(3)); | |
| 214 | + $("#total_ks").text((total_ks/10000).toFixed(3)); | |
| 215 | + $("#total_yh").text((total_yh/10000).toFixed(2)); | |
| 216 | + $("#total_bc").text(total_bc.toFixed(0)); | |
| 217 | + | |
| 218 | + var temp = {}; | |
| 219 | + var today_account = 0; | |
| 220 | + | |
| 221 | + temp["line"] = $("#line").text(); | |
| 222 | + $.each(result, function(i, obj) { | |
| 223 | + if(moment(obj.schedule_date_str).format("YYYY-MM-DD") == moment(obj.startDate).format("YYYY-MM-DD")){ | |
| 224 | + today_account++; | |
| 225 | + } | |
| 226 | + obj.updateDate = moment(obj.startDate).format("YYYY-MM-DD HH:mm:ss"); | |
| 227 | + }); | |
| 228 | + }) | |
| 229 | + }); | |
| 230 | + | |
| 231 | + $("#export").on("click",function(){ | |
| 232 | + if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 233 | + layer.msg("请选择时间"); | |
| 234 | + return; | |
| 235 | + } | |
| 236 | + line = $("#line").val(); | |
| 237 | + date = $("#date").val(); | |
| 238 | + gsdmDaily=$("#gsdmDaily").val(); | |
| 239 | + fgsdmDaily = $("#fgsdmDaily").val(); | |
| 240 | + lineName=$("#select2-line-container").html(); | |
| 241 | + var i = layer.load(2); | |
| 242 | + $post('/znddLogger/list',{gsdmDaily:gsdmDaily,fgsdmDaily:fgsdmDaily,line:line,date:date,type:'export',lineName:lineName},function(result){ | |
| 243 | + window.open("/downloadFile/download?fileName=" | |
| 244 | + +moment(date).format("YYYYMMDD")+"-"+lineName+"-班次日报表"); | |
| 245 | + layer.close(i); | |
| 246 | + }); | |
| 247 | + }); | |
| 248 | + }); | |
| 249 | +</script> | |
| 250 | +<script type="text/html" id="dailyInfo"> | |
| 251 | + {{each list as obj i}} | |
| 252 | + <tr> | |
| 253 | + <td>{{obj.lineName}}</td> | |
| 254 | + <td>{{obj.rq}}</td> | |
| 255 | + <td> | |
| 256 | + {{if obj.dir == '0'}} | |
| 257 | + 上行 | |
| 258 | + {{else if obj.dir == '1'}} | |
| 259 | + 下行 | |
| 260 | + {{/if}} | |
| 261 | + </td> | |
| 262 | + | |
| 263 | + <td>{{obj.timeStr}}</td> | |
| 264 | + <td>{{obj.text}}</td> | |
| 265 | + <td>{{obj.createDate}}</td> | |
| 266 | + </tr> | |
| 267 | + {{/each}} | |
| 268 | + {{if list.length == 0}} | |
| 269 | + <tr> | |
| 270 | + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td> | |
| 271 | + </tr> | |
| 272 | + {{/if}} | |
| 273 | +</script> | |
| 0 | 274 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/permission/authorize_all/user_auth.html
| ... | ... | @@ -56,6 +56,8 @@ |
| 56 | 56 | <li><label><input class="uk-checkbox" type="checkbox" data-event="form_message"> 调度消息分析</label></li> |
| 57 | 57 | <li><label><input class="uk-checkbox" type="checkbox" data-event="form_changetochange"> 换人换车情况统计表</label></li> |
| 58 | 58 | <li><label><input class="uk-checkbox" type="checkbox" data-event="form_repairReport"> 维修上报记录</label></li> |
| 59 | + <li><label><input class="uk-checkbox" type="checkbox" data-event="form_loggerr_zndd"> 智能调度日志</label></li> | |
| 60 | + | |
| 59 | 61 | </ul> |
| 60 | 62 | </div> |
| 61 | 63 | ... | ... |
src/main/resources/static/real_control_v2/js/north/toolbar.js
| ... | ... | @@ -248,7 +248,11 @@ var gb_northToolbar = (function () { |
| 248 | 248 | }, |
| 249 | 249 | report_register: function () { |
| 250 | 250 | open_modal('/real_control_v2/fragments/north/nav/report_register/manage.html', {}, modal_opts); |
| 251 | - } | |
| 251 | + }, | |
| 252 | + | |
| 253 | + form_loggerr_zndd: function () { | |
| 254 | + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/zndd/logger_zndd.html', '智能调度执行记录'); | |
| 255 | + }, | |
| 252 | 256 | }; |
| 253 | 257 | |
| 254 | 258 | return { | ... | ... |
src/main/resources/static/real_control_v2/mapmonitor/fragments/map_infowindow.html
| ... | ... | @@ -39,7 +39,7 @@ |
| 39 | 39 | <a href="javascript:;" style="color: #07D;margin-right: 7px;">预计 {{expectStopTime}} 分钟到达终点</a> |
| 40 | 40 | {{/if}} |
| 41 | 41 | <a href="javascript:;" style="float: left;" onclick="javascript:window.open('http://58.34.52.130:4490/transport_server/dvr_monitor2.html?userid=4&zbh={{nbbm}}');">DVR</a> |
| 42 | - <a href="W9:1@139.196.29.203@?method=call&1111:{{dvrcode}}" style="margin-left: 50px;" >拨打电话</a> | |
| 42 | + <a href="W9:{{dvrcode}}@139.196.29.203?method=call" style="margin-left: 50px;" >拨打电话</a> | |
| 43 | 43 | <a href="javascript:;" style="float: right;" onclick="javascript:gb_map_play_back.initParams({deviceId: '{{deviceId}}', nbbm: '{{nbbm}}'});">轨迹回放</a> |
| 44 | 44 | </div> |
| 45 | 45 | </script> | ... | ... |