Commit a96d30ea402664607e91bf7c91f4c8ead2898a2f
1 parent
77c4099a
feat: 新增车队状态
Showing
3 changed files
with
68 additions
and
15 deletions
Bsth-admin/src/main/java/com/ruoyi/pojo/vo/bigViewVo/FleetInfoVo.java
| ... | ... | @@ -19,7 +19,8 @@ public class FleetInfoVo { |
| 19 | 19 | private String title; |
| 20 | 20 | @ApiModelProperty("车队信息") |
| 21 | 21 | private List<FleetInfo> fleetInfos; |
| 22 | - | |
| 22 | + @ApiModelProperty("车队状态") | |
| 23 | + private List<FleetState> fleetStates; | |
| 23 | 24 | @Data |
| 24 | 25 | public static class FleetInfo{ |
| 25 | 26 | private String lineName; | ... | ... |
Bsth-admin/src/main/java/com/ruoyi/pojo/vo/bigViewVo/FleetState.java
0 → 100644
Bsth-admin/src/main/java/com/ruoyi/service/impl/BigViewServiceImpl.java
| ... | ... | @@ -8,10 +8,7 @@ import com.ruoyi.driver.mapper.DriverMapper; |
| 8 | 8 | import com.ruoyi.driver.mapper.DriverSchedulingMapper; |
| 9 | 9 | import com.ruoyi.in.service.ISignInService; |
| 10 | 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 | 12 | import com.ruoyi.service.BigViewService; |
| 16 | 13 | import com.ruoyi.service.ThreadJobService; |
| 17 | 14 | import org.slf4j.Logger; |
| ... | ... | @@ -72,12 +69,48 @@ public class BigViewServiceImpl implements BigViewService { |
| 72 | 69 | // 进一步处理人员信息 |
| 73 | 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 | 73 | specialTreatment(fleetInfoVos); |
| 77 | 74 | } |
| 75 | + // 处理车队线路状态 | |
| 76 | + handleFleetStates(fleetInfoVos); | |
| 78 | 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 | 114 | private void specialTreatment(List<FleetInfoVo> fleetInfoVos) { |
| 82 | 115 | List<FleetInfoVo.FleetInfo> jinbo = new ArrayList<>(); |
| 83 | 116 | // 把进博会线路单独拎出来 进博短驳 |
| ... | ... | @@ -85,6 +118,13 @@ public class BigViewServiceImpl implements BigViewService { |
| 85 | 118 | fleetInfoVo.setFleetInfos( |
| 86 | 119 | fleetInfoVo.getFleetInfos().stream().filter(item -> { |
| 87 | 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 | 128 | jinbo.add(item); |
| 89 | 129 | return false; |
| 90 | 130 | } |
| ... | ... | @@ -93,29 +133,29 @@ public class BigViewServiceImpl implements BigViewService { |
| 93 | 133 | ); |
| 94 | 134 | } |
| 95 | 135 | // 究极特殊情况遇到了调度接口存在的人员 但是 人事接口不存在的人员 会导致fleetName 为空 |
| 96 | - // 在青浦的车队就是一个特殊的部门只是以车队开头命名 如果存在。。 | |
| 136 | + // 在青浦的车队就是一个特殊的部门只是以车队开头命名 如果不存在。。说明调度出现了问题直接删除不存在的车队信息 该方法可以删除deleteErrorData | |
| 97 | 137 | deleteErrorData(fleetInfoVos); |
| 98 | - alertJinboList(jinbo,fleetInfoVos); | |
| 138 | + alertJinboList(jinbo, fleetInfoVos); | |
| 99 | 139 | } |
| 100 | 140 | |
| 101 | 141 | private void alertJinboList(List<FleetInfoVo.FleetInfo> jinbo, List<FleetInfoVo> fleetInfoVos) { |
| 102 | - if (CollectionUtil.isEmpty(fleetInfoVos)){ | |
| 142 | + if (CollectionUtil.isEmpty(fleetInfoVos)) { | |
| 103 | 143 | return; |
| 104 | 144 | } |
| 105 | 145 | FleetInfoVo fleetInfoVo = new FleetInfoVo(); |
| 106 | 146 | fleetInfoVo.setTitle("进博会"); |
| 107 | 147 | fleetInfoVo.setFleetInfos(jinbo); |
| 108 | - fleetInfoVos.add(0,fleetInfoVo); | |
| 148 | + fleetInfoVos.add(0, fleetInfoVo); | |
| 109 | 149 | } |
| 110 | 150 | |
| 111 | 151 | private void deleteErrorData(List<FleetInfoVo> fleetInfoVos) { |
| 112 | 152 | Integer t = null; |
| 113 | 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 | 155 | t = i; |
| 116 | 156 | } |
| 117 | 157 | } |
| 118 | - if (t!=null){ | |
| 158 | + if (t != null) { | |
| 119 | 159 | fleetInfoVos.remove(t.intValue()); |
| 120 | 160 | } |
| 121 | 161 | } |
| ... | ... | @@ -167,10 +207,10 @@ public class BigViewServiceImpl implements BigViewService { |
| 167 | 207 | vo.getFleetInfos().sort(new Comparator<FleetInfoVo.FleetInfo>() { |
| 168 | 208 | @Override |
| 169 | 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 | 211 | return -1; |
| 172 | 212 | } |
| 173 | - if (o1.getLineInfos().size() < o2.getLineInfos().size()){ | |
| 213 | + if (o1.getLineInfos().size() < o2.getLineInfos().size()) { | |
| 174 | 214 | return 1; |
| 175 | 215 | } |
| 176 | 216 | return 0; |
| ... | ... | @@ -296,7 +336,6 @@ public class BigViewServiceImpl implements BigViewService { |
| 296 | 336 | * @param driverScheduling |
| 297 | 337 | */ |
| 298 | 338 | private void handleMoreStatus(Map<String, LineInfo> matchMap, DriverScheduling scheduling, String nbbm, LineInfo.PersonInfoVo personInfoVo, DriverScheduling driverScheduling) { |
| 299 | - // TODO 判断多异常 | |
| 300 | 339 | long time = System.currentTimeMillis(); |
| 301 | 340 | if (DRIVER_STRING.equals(scheduling.getPosts())) { |
| 302 | 341 | LineInfo.PersonInfoVo driverInfoVo = matchMap.get(nbbm).getDriverInfoVo(); | ... | ... |