Commit c5441fcaaba2983b5e8ffa5737ceb5774e4d21b7

Authored by yiming
1 parent ffe9152e

大客流预警,临加班次,优先选择最近完成班次的车辆

src/main/java/com/bsth/service/zndd/impl/LoggerZnddServiceImpl.java
@@ -169,43 +169,78 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl<LoggerZndd, Integer> @@ -169,43 +169,78 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl<LoggerZndd, Integer>
169 lines.add(map.get("xlbm").toString()); 169 lines.add(map.get("xlbm").toString());
170 } 170 }
171 } 171 }
172 - List<String> nbbms=new ArrayList<>();  
173 - List<String> jghs=new ArrayList<>();  
174 - List<String> jNames=new ArrayList<>(); 172 + List<Map<String,String>> schs=new ArrayList<>();
  173 + LocalTime localTime=LocalTime.now().plusHours(1);
  174 + LocalTime now=LocalTime.now();
  175 + DateTimeFormatter dtf=DateTimeFormatter.ofPattern("HH:mm");
175 for (String lineCode : lines) { 176 for (String lineCode : lines) {
176 Set<String> set = dayOfSchedule.findCarByLineCode(lineCode); 177 Set<String> set = dayOfSchedule.findCarByLineCode(lineCode);
177 - LocalTime localTime=LocalTime.now().plusHours(1);  
178 - DateTimeFormatter dtf=DateTimeFormatter.ofPattern("HH:mm");  
179 for (String nbbm : set) { 178 for (String nbbm : set) {
180 ScheduleRealInfo s=dayOfSchedule.executeCurr(nbbm);//当前执行班次 179 ScheduleRealInfo s=dayOfSchedule.executeCurr(nbbm);//当前执行班次
181 if(s==null){//当日班次执行完毕 180 if(s==null){//当日班次执行完毕
182 List<ScheduleRealInfo> list=dayOfSchedule.findByNbbm(nbbm); 181 List<ScheduleRealInfo> list=dayOfSchedule.findByNbbm(nbbm);
183 if(list.size()>0){ 182 if(list.size()>0){
184 - ScheduleRealInfo s2=list.get(list.size()-1);//最后一个班次  
185 - nbbms.add(s2.getClZbh());  
186 - jghs.add(s2.getjGh());  
187 - jNames.add(s2.getjName()); 183 + ScheduleRealInfo s2=list.get(list.size()-1);//最后一个班次\
  184 + if(s2.getZdsjActual()!=null && LocalTime.parse(s2.getZdsjActual(),dtf).isBefore(now)){
  185 + Map<String,String> schMap = new HashMap<>();
  186 + schMap.put("nbbm",s2.getClZbh());
  187 + schMap.put("jgh",s2.getjGh());
  188 + schMap.put("jName",s2.getjName());
  189 + schMap.put("zdsjActual",s2.getZdsjActual());
  190 + System.out.println(s2.getClZbh()+s2.getZdsjActual()+lineCode);
  191 + schs.add(schMap);
  192 + }
188 } 193 }
189 }else {//1小时内是否有待执行班次 194 }else {//1小时内是否有待执行班次
190 LocalTime fcsj=LocalTime.parse(s.getFcsj(),dtf); 195 LocalTime fcsj=LocalTime.parse(s.getFcsj(),dtf);
191 if(fcsj.isAfter(localTime)){ 196 if(fcsj.isAfter(localTime)){
192 - nbbms.add(s.getClZbh());  
193 - jghs.add(s.getjGh());  
194 - jNames.add(s.getjName()); 197 + //查询上一个班次
  198 + ScheduleRealInfo s2=dayOfSchedule.prev(s);
  199 + if(s.getZdsjActual()!=null && LocalTime.parse(s2.getZdsjActual(),dtf).isBefore(now)){
  200 + Map<String,String> schMap = new HashMap<>();
  201 + schMap.put("nbbm",s2.getClZbh());
  202 + schMap.put("jgh",s2.getjGh());
  203 + schMap.put("jName",s2.getjName());
  204 + schMap.put("zdsjActual",s2.getZdsjActual());
  205 + System.out.println(s2.getClZbh()+s2.getZdsjActual()+lineCode);
  206 + schs.add(schMap);
  207 + }
195 } 208 }
196 } 209 }
197 } 210 }
198 } 211 }
  212 + Collections.sort(schs, new Comparator<Map<String, String>>(){
  213 + public int compare(Map<String, String> o1, Map<String, String> o2) {
  214 + String zdsjActual1 = o1.get("zdsjActual");
  215 + String zdsjActual2 = o2.get("zdsjActual");
  216 + return zdsjActual2.compareTo(zdsjActual1);
  217 + }
  218 +
  219 + });
199 StringBuffer sb=new StringBuffer(); 220 StringBuffer sb=new StringBuffer();
200 String kscl=""; 221 String kscl="";
201 - if(nbbms.size()>0){  
202 - sch.setClZbh(nbbms.get(0));  
203 - sch.setjGh(jghs.get(0));  
204 - sch.setjName(jNames.get(0));  
205 - int size =nbbms.size()>10?9:nbbms.size(); 222 + List<Map<String, String>> schs2 = new ArrayList<>();
  223 +
  224 + // 创建用于去重的 Set<Map>
  225 + Set<Map<String, String>> set = new HashSet<>();
  226 + // 遍历原始的 List<Map>
  227 + for (Map<String, String> map : schs) {
  228 + // 创建一个新的 Map 用于存储合并去重后的结果
  229 + Map<String, String> newMap = new HashMap<>(map);
  230 + // 如果新的 Map 成功添加到 Set 中,说明是一个新的 Map,将其添加到结果 List<Map> 中
  231 + if (set.add(newMap)) {
  232 + schs2.add(newMap);
  233 + }
  234 + }
  235 + if(schs2.size()>0){
  236 + sch.setClZbh(schs2.get(0).get("nbbm"));
  237 + sch.setjGh(schs2.get(0).get("jgh"));
  238 + sch.setjName(schs2.get(0).get("jName"));
  239 + int size =schs2.size()>8?8:schs2.size();
206 for (int i = 0; i < size; i++) { 240 for (int i = 0; i < size; i++) {
207 - sb.append(nbbms.get(i)+"/");  
208 - sb.append(jNames.get(i)+","); 241 + sb.append(schs2.get(i).get("nbbm")+"/");
  242 + sb.append(schs2.get(i).get("jName")+"/");
  243 + sb.append(schs2.get(i).get("zdsjActual")+",");
209 } 244 }
210 kscl=sb.toString().substring(0,sb.length()-1); 245 kscl=sb.toString().substring(0,sb.length()-1);
211 } 246 }
src/main/resources/static/real_control_v2/zndd/type/dkl.html
@@ -166,7 +166,7 @@ @@ -166,7 +166,7 @@
166 } 166 }
167 s+=arr[i]+","; 167 s+=arr[i]+",";
168 j++; 168 j++;
169 - if(j==4||i==arr.length-1){ 169 + if(j==3||i==arr.length-1){
170 s=s.substring(0,s.length-1); 170 s=s.substring(0,s.length-1);
171 s+='</h3></label>'; 171 s+='</h3></label>';
172 j=1; 172 j=1;
@@ -592,7 +592,7 @@ @@ -592,7 +592,7 @@
592 <div class="uk-grid"> 592 <div class="uk-grid">
593 <div class="uk-width-4-2"> 593 <div class="uk-width-4-2">
594 <div class="uk-form-row"> 594 <div class="uk-form-row">
595 - <label class="uk-form-labels" ><h3>空闲车辆/人员</h3></label> 595 + <label class="uk-form-labels" ><h3>空闲车辆/人员/班次结束时间</h3></label>
596 <div id="nbbms"> 596 <div id="nbbms">
597 </div> 597 </div>
598 </div> 598 </div>