Commit a96d30ea402664607e91bf7c91f4c8ead2898a2f

Authored by guzijian
1 parent 77c4099a

feat: 新增车队状态

Bsth-admin/src/main/java/com/ruoyi/pojo/vo/bigViewVo/FleetInfoVo.java
@@ -19,7 +19,8 @@ public class FleetInfoVo { @@ -19,7 +19,8 @@ public class FleetInfoVo {
19 private String title; 19 private String title;
20 @ApiModelProperty("车队信息") 20 @ApiModelProperty("车队信息")
21 private List<FleetInfo> fleetInfos; 21 private List<FleetInfo> fleetInfos;
22 - 22 + @ApiModelProperty("车队状态")
  23 + private List<FleetState> fleetStates;
23 @Data 24 @Data
24 public static class FleetInfo{ 25 public static class FleetInfo{
25 private String lineName; 26 private String lineName;
Bsth-admin/src/main/java/com/ruoyi/pojo/vo/bigViewVo/FleetState.java 0 → 100644
  1 +package com.ruoyi.pojo.vo.bigViewVo;
  2 +
  3 +import lombok.Data;
  4 +
  5 +/**
  6 + *
  7 + * @author 20412
  8 + */
  9 +@Data
  10 +public class FleetState {
  11 + private String lineName;
  12 + private Integer state;
  13 +}
Bsth-admin/src/main/java/com/ruoyi/service/impl/BigViewServiceImpl.java
@@ -8,10 +8,7 @@ import com.ruoyi.driver.mapper.DriverMapper; @@ -8,10 +8,7 @@ import com.ruoyi.driver.mapper.DriverMapper;
8 import com.ruoyi.driver.mapper.DriverSchedulingMapper; 8 import com.ruoyi.driver.mapper.DriverSchedulingMapper;
9 import com.ruoyi.in.service.ISignInService; 9 import com.ruoyi.in.service.ISignInService;
10 import com.ruoyi.pojo.response.SignInResponseVo; 10 import com.ruoyi.pojo.response.SignInResponseVo;
11 -import com.ruoyi.pojo.vo.bigViewVo.FleetInfoVo;  
12 -import com.ruoyi.pojo.vo.bigViewVo.LineInfo;  
13 -import com.ruoyi.pojo.vo.bigViewVo.SignInfoVo;  
14 -import com.ruoyi.pojo.vo.bigViewVo.SignNumberVo; 11 +import com.ruoyi.pojo.vo.bigViewVo.*;
15 import com.ruoyi.service.BigViewService; 12 import com.ruoyi.service.BigViewService;
16 import com.ruoyi.service.ThreadJobService; 13 import com.ruoyi.service.ThreadJobService;
17 import org.slf4j.Logger; 14 import org.slf4j.Logger;
@@ -72,12 +69,48 @@ public class BigViewServiceImpl implements BigViewService { @@ -72,12 +69,48 @@ public class BigViewServiceImpl implements BigViewService {
72 // 进一步处理人员信息 69 // 进一步处理人员信息
73 List<FleetInfoVo> fleetInfoVos = handleFleetWithLinePersonInfo(matchMap, mapVo); 70 List<FleetInfoVo> fleetInfoVos = handleFleetWithLinePersonInfo(matchMap, mapVo);
74 // 特殊处理 处理进博会线路信息 71 // 特殊处理 处理进博会线路信息
75 - if (LocalDate.now().toString().compareTo("2023-11-12") < 0){ 72 + if (LocalDate.now().toString().compareTo("2023-11-12") < 0) {
76 specialTreatment(fleetInfoVos); 73 specialTreatment(fleetInfoVos);
77 } 74 }
  75 + // 处理车队线路状态
  76 + handleFleetStates(fleetInfoVos);
78 return fleetInfoVos; 77 return fleetInfoVos;
79 } 78 }
80 79
  80 + private void handleFleetStates(List<FleetInfoVo> fleetInfoVos) {
  81 + // 车队 -》 线路 -》 车辆自编号 -》 人员状态 层级遍历
  82 + for (FleetInfoVo fleetInfoVo : fleetInfoVos) {
  83 + List<FleetState> fleetStates = new ArrayList<>(fleetInfoVo.getFleetInfos().size());
  84 + for (FleetInfoVo.FleetInfo fleetInfo : fleetInfoVo.getFleetInfos()) {
  85 + int state = 0;
  86 + for (LineInfo lineInfo : fleetInfo.getLineInfos()) {
  87 + LineInfo.PersonInfoVo driverInfoVo = lineInfo.getDriverInfoVo();
  88 + LineInfo.PersonInfoVo saleInfoVo = lineInfo.getSaleInfoVo();
  89 + Integer driverStatus = handleStateByPerson(driverInfoVo);
  90 + Integer saleStatus = handleStateByPerson(saleInfoVo);
  91 + int maxState = Math.max(driverStatus, saleStatus);
  92 + state = Math.max(maxState, state);
  93 + }
  94 + FleetState fleetState = new FleetState();
  95 + fleetState.setState(state);
  96 + fleetState.setLineName(fleetInfo.getLineName());
  97 + fleetStates.add(fleetState);
  98 + }
  99 + fleetInfoVo.setFleetStates(fleetStates);
  100 + }
  101 + // 排序
  102 + for (FleetInfoVo fleetInfoVo : fleetInfoVos) {
  103 + fleetInfoVo.getFleetStates().sort(Comparator.comparing(FleetState::getState));
  104 + }
  105 + }
  106 +
  107 + private Integer handleStateByPerson(LineInfo.PersonInfoVo personInfoVo) {
  108 + if (Objects.isNull(personInfoVo)) {
  109 + return 0;
  110 + }
  111 + return personInfoVo.getSignStatus();
  112 + }
  113 +
81 private void specialTreatment(List<FleetInfoVo> fleetInfoVos) { 114 private void specialTreatment(List<FleetInfoVo> fleetInfoVos) {
82 List<FleetInfoVo.FleetInfo> jinbo = new ArrayList<>(); 115 List<FleetInfoVo.FleetInfo> jinbo = new ArrayList<>();
83 // 把进博会线路单独拎出来 进博短驳 116 // 把进博会线路单独拎出来 进博短驳
@@ -85,6 +118,13 @@ public class BigViewServiceImpl implements BigViewService { @@ -85,6 +118,13 @@ public class BigViewServiceImpl implements BigViewService {
85 fleetInfoVo.setFleetInfos( 118 fleetInfoVo.setFleetInfos(
86 fleetInfoVo.getFleetInfos().stream().filter(item -> { 119 fleetInfoVo.getFleetInfos().stream().filter(item -> {
87 if (item.getLineName().startsWith("进博短驳")) { 120 if (item.getLineName().startsWith("进博短驳")) {
  121 + // 这个循环是因为不同车队的人在拼接到进博会时出现相同线路两条记录问题
  122 + for (FleetInfoVo.FleetInfo fleetInfo : jinbo) {
  123 + if (fleetInfo.getLineName().equals(item.getLineName())){
  124 + fleetInfo.getLineInfos().addAll(item.getLineInfos());
  125 + return false;
  126 + }
  127 + }
88 jinbo.add(item); 128 jinbo.add(item);
89 return false; 129 return false;
90 } 130 }
@@ -93,29 +133,29 @@ public class BigViewServiceImpl implements BigViewService { @@ -93,29 +133,29 @@ public class BigViewServiceImpl implements BigViewService {
93 ); 133 );
94 } 134 }
95 // 究极特殊情况遇到了调度接口存在的人员 但是 人事接口不存在的人员 会导致fleetName 为空 135 // 究极特殊情况遇到了调度接口存在的人员 但是 人事接口不存在的人员 会导致fleetName 为空
96 - // 在青浦的车队就是一个特殊的部门只是以车队开头命名 如果存在。。 136 + // 在青浦的车队就是一个特殊的部门只是以车队开头命名 如果不存在。。说明调度出现了问题直接删除不存在的车队信息 该方法可以删除deleteErrorData
97 deleteErrorData(fleetInfoVos); 137 deleteErrorData(fleetInfoVos);
98 - alertJinboList(jinbo,fleetInfoVos); 138 + alertJinboList(jinbo, fleetInfoVos);
99 } 139 }
100 140
101 private void alertJinboList(List<FleetInfoVo.FleetInfo> jinbo, List<FleetInfoVo> fleetInfoVos) { 141 private void alertJinboList(List<FleetInfoVo.FleetInfo> jinbo, List<FleetInfoVo> fleetInfoVos) {
102 - if (CollectionUtil.isEmpty(fleetInfoVos)){ 142 + if (CollectionUtil.isEmpty(fleetInfoVos)) {
103 return; 143 return;
104 } 144 }
105 FleetInfoVo fleetInfoVo = new FleetInfoVo(); 145 FleetInfoVo fleetInfoVo = new FleetInfoVo();
106 fleetInfoVo.setTitle("进博会"); 146 fleetInfoVo.setTitle("进博会");
107 fleetInfoVo.setFleetInfos(jinbo); 147 fleetInfoVo.setFleetInfos(jinbo);
108 - fleetInfoVos.add(0,fleetInfoVo); 148 + fleetInfoVos.add(0, fleetInfoVo);
109 } 149 }
110 150
111 private void deleteErrorData(List<FleetInfoVo> fleetInfoVos) { 151 private void deleteErrorData(List<FleetInfoVo> fleetInfoVos) {
112 Integer t = null; 152 Integer t = null;
113 for (int i = 0; i < fleetInfoVos.size(); i++) { 153 for (int i = 0; i < fleetInfoVos.size(); i++) {
114 - if (Objects.isNull(fleetInfoVos.get(i).getTitle())){ 154 + if (Objects.isNull(fleetInfoVos.get(i).getTitle())) {
115 t = i; 155 t = i;
116 } 156 }
117 } 157 }
118 - if (t!=null){ 158 + if (t != null) {
119 fleetInfoVos.remove(t.intValue()); 159 fleetInfoVos.remove(t.intValue());
120 } 160 }
121 } 161 }
@@ -167,10 +207,10 @@ public class BigViewServiceImpl implements BigViewService { @@ -167,10 +207,10 @@ public class BigViewServiceImpl implements BigViewService {
167 vo.getFleetInfos().sort(new Comparator<FleetInfoVo.FleetInfo>() { 207 vo.getFleetInfos().sort(new Comparator<FleetInfoVo.FleetInfo>() {
168 @Override 208 @Override
169 public int compare(FleetInfoVo.FleetInfo o1, FleetInfoVo.FleetInfo o2) { 209 public int compare(FleetInfoVo.FleetInfo o1, FleetInfoVo.FleetInfo o2) {
170 - if (o1.getLineInfos().size() > o2.getLineInfos().size()){ 210 + if (o1.getLineInfos().size() > o2.getLineInfos().size()) {
171 return -1; 211 return -1;
172 } 212 }
173 - if (o1.getLineInfos().size() < o2.getLineInfos().size()){ 213 + if (o1.getLineInfos().size() < o2.getLineInfos().size()) {
174 return 1; 214 return 1;
175 } 215 }
176 return 0; 216 return 0;
@@ -296,7 +336,6 @@ public class BigViewServiceImpl implements BigViewService { @@ -296,7 +336,6 @@ public class BigViewServiceImpl implements BigViewService {
296 * @param driverScheduling 336 * @param driverScheduling
297 */ 337 */
298 private void handleMoreStatus(Map<String, LineInfo> matchMap, DriverScheduling scheduling, String nbbm, LineInfo.PersonInfoVo personInfoVo, DriverScheduling driverScheduling) { 338 private void handleMoreStatus(Map<String, LineInfo> matchMap, DriverScheduling scheduling, String nbbm, LineInfo.PersonInfoVo personInfoVo, DriverScheduling driverScheduling) {
299 - // TODO 判断多异常  
300 long time = System.currentTimeMillis(); 339 long time = System.currentTimeMillis();
301 if (DRIVER_STRING.equals(scheduling.getPosts())) { 340 if (DRIVER_STRING.equals(scheduling.getPosts())) {
302 LineInfo.PersonInfoVo driverInfoVo = matchMap.get(nbbm).getDriverInfoVo(); 341 LineInfo.PersonInfoVo driverInfoVo = matchMap.get(nbbm).getDriverInfoVo();