Commit df137b3f authored by hanbing's avatar hanbing

[add] 快速特勤,添加分组/修改分组

parent 05cef3a1
...@@ -137,6 +137,26 @@ public class SpecialServiceController { ...@@ -137,6 +137,26 @@ public class SpecialServiceController {
return JsonViewObject.newInstance().success(outDirList); return JsonViewObject.newInstance().success(outDirList);
} }
@AspectLog(description = "分组列表", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "分组列表", notes = "分组列表", response = GroupListVO.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/groupList",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject groupList(@RequestBody SpecialServiceIdBO specialServiceIdBO) {
GroupListVO groupListVO = specialServiceService.groupList(specialServiceIdBO);
return JsonViewObject.newInstance().success(groupListVO);
}
@AspectLog(description = "修改分组", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "修改分组", notes = "修改分组", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/updateGroup",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public JsonViewObject updateGroup(@RequestBody GroupListVO groupListVO) {
specialServiceService.updateGroup(groupListVO);
return JsonViewObject.newInstance().success();
}
@AspectLog(description = "更新路口", operationType = BaseEnum.OperationTypeEnum.UPDATE) @AspectLog(description = "更新路口", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "更新路口", notes = "更新路口", response = JsonViewObject.class, @ApiOperation(value = "更新路口", notes = "更新路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
......
...@@ -46,4 +46,6 @@ public interface SpecialServiceCrossMapper { ...@@ -46,4 +46,6 @@ public interface SpecialServiceCrossMapper {
void deleteCrossBySpecialServiceId(@Param("id") Integer id); void deleteCrossBySpecialServiceId(@Param("id") Integer id);
Integer selectSpecialServiceIdByCrossId(String crossId); Integer selectSpecialServiceIdByCrossId(String crossId);
void updateGroupName(String crossId, String groupName);
} }
...@@ -40,4 +40,8 @@ public interface SpecialServiceService { ...@@ -40,4 +40,8 @@ public interface SpecialServiceService {
List<String> getOutDirList(CrossIdVO crossIdVO); List<String> getOutDirList(CrossIdVO crossIdVO);
void batchLock(List<LockControlVO> lockControlVOList); void batchLock(List<LockControlVO> lockControlVOList);
GroupListVO groupList(SpecialServiceIdBO specialServiceIdBO);
void updateGroup(GroupListVO groupListVO);
} }
...@@ -33,6 +33,7 @@ import org.springframework.stereotype.Service; ...@@ -33,6 +33,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @author Kent HAN * @author Kent HAN
...@@ -663,6 +664,99 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -663,6 +664,99 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
specialServiceMapper.updateStatusDisable(specialServiceId); specialServiceMapper.updateStatusDisable(specialServiceId);
} }
@Override
public GroupListVO groupList(SpecialServiceIdBO specialServiceIdBO) {
GroupListVO groupListVO = new GroupListVO();
Integer specialServiceId = specialServiceIdBO.getId();
SpecialServicePO specialServicePO = specialServiceMapper.selectById(specialServiceId);
String specialServiceName = specialServicePO.getName();
groupListVO.setSpecialServiceName(specialServiceName);
List<GroupListVO.GroupListElement> groupList = buildGroupList(specialServicePO);
groupListVO.setGroupList(groupList);
return groupListVO;
}
@Override
@Transactional
public void updateGroup(GroupListVO groupListVO) {
List<GroupListVO.GroupListElement> groupList = groupListVO.getGroupList();
for (GroupListVO.GroupListElement groupListElement : groupList) {
String groupName = groupListElement.getGroupName();
if (!"未分组路口".equals(groupName)){
List<CrossListElement> crossList = groupListElement.getCrossList();
for (CrossListElement crossListElement : crossList) {
String crossId = crossListElement.getCrossId();
specialServiceCrossMapper.updateGroupName(crossId, groupName);
}
}
}
}
private List<GroupListVO.GroupListElement> buildGroupList(SpecialServicePO specialServicePO) {
List<GroupListVO.GroupListElement> groupList = new ArrayList<>();
Integer specialServiceId = specialServicePO.getId();
List<SpecialServiceCrossPO> specialServiceCrossList =
specialServiceCrossMapper.selectBySpecialServiceId(specialServiceId);
Map<String, List<SpecialServiceCrossPO>> map = specialServiceCrossList.stream()
.collect(Collectors.groupingBy(SpecialServiceCrossPO::getGroupName));
for (String groupName : map.keySet()) {
GroupListVO.GroupListElement groupListElement = new GroupListVO.GroupListElement();
groupListElement.setGroupName(groupName);
List<SpecialServiceCrossPO> groupCrossList = map.get(groupName);
Collections.sort(groupCrossList, Comparator.comparing(SpecialServiceCrossPO::getSort));
StringBuilder wktBuilder = new StringBuilder();
List<SpecialServiceDetailVO.CrossListElement> crossList = new ArrayList<>();
buildWktAndCrosslist(wktBuilder, crossList, groupCrossList, groupName);
groupListElement.setWkt(wktBuilder.toString());
groupListElement.setCrossList(crossList);
groupList.add(groupListElement);
}
return groupList;
}
private void buildWktAndCrosslist(StringBuilder wktBuilder, List<CrossListElement> crossList,
List<SpecialServiceCrossPO> groupCrossList, String groupName) {
for (int i = 0; i < groupCrossList.size(); i++) {
SpecialServiceCrossPO currentCrossElement = groupCrossList.get(i);
// 构造wkt
if (!"未分组路口".equals(groupName) && i != groupCrossList.size() - 1) { // 有分组且不是组内最后一个路口
SpecialServiceCrossPO nextCrossElement = groupCrossList.get(i + 1);
String nextCrossId = nextCrossElement.getCrossId();
String currentCrossId = currentCrossElement.getCrossId();
RidInfoEntity ridInfoEntity = ridInfoMapper.selectByStartEnd(currentCrossId, nextCrossId);
String wktElement = ridInfoEntity.getWkt();
wktBuilder.append(wktElement).append(";");
}
// 构造crossList
String currentCrossId = currentCrossElement.getCrossId();
BaseCrossInfoPO currentCross = baseCrossInfoMapper.selectById(currentCrossId);
CrossListElement crossListElement = new CrossListElement();
crossListElement.setCrossName(currentCross.getName());
crossListElement.setCrossId(currentCrossId);
setElementStartEnd(groupCrossList, i, currentCrossId, crossListElement);
crossListElement.setStatus(currentCrossElement.getStatus());
crossListElement.setSort(currentCrossElement.getSort());
crossList.add(crossListElement);
}
// 去wkt掉最后一个分号
if (wktBuilder.length() > 0) {
wktBuilder.setLength(wktBuilder.length() - 1);
}
}
private List<SpecialServiceDetailVO.CrossListElement> buildCrossList(Integer specialServiceId) { private List<SpecialServiceDetailVO.CrossListElement> buildCrossList(Integer specialServiceId) {
List<SpecialServiceDetailVO.CrossListElement> crossList = new ArrayList<>(); List<SpecialServiceDetailVO.CrossListElement> crossList = new ArrayList<>();
List<SpecialServiceCrossPO> specialServiceCrossList = List<SpecialServiceCrossPO> specialServiceCrossList =
...@@ -678,6 +772,18 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -678,6 +772,18 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
crossListElement.setCrossName(baseCrossInfoPO.getName()); crossListElement.setCrossName(baseCrossInfoPO.getName());
crossListElement.setCrossId(crossId); crossListElement.setCrossId(crossId);
setElementStartEnd(specialServiceCrossList, i, currentCrossId, crossListElement);
crossListElement.setStatus(currentCross.getStatus());
crossListElement.setSort(currentCross.getSort());
crossList.add(crossListElement);
}
return crossList;
}
private void setElementStartEnd(List<SpecialServiceCrossPO> specialServiceCrossList, int i, String currentCrossId, CrossListElement crossListElement) {
if (i == 0) { // 开始路口 if (i == 0) { // 开始路口
crossListElement.setRouteStart(""); crossListElement.setRouteStart("");
SpecialServiceCrossPO nextCross = specialServiceCrossList.get(i + 1); SpecialServiceCrossPO nextCross = specialServiceCrossList.get(i + 1);
...@@ -724,14 +830,6 @@ public class SpecialServiceServiceImpl implements SpecialServiceService { ...@@ -724,14 +830,6 @@ public class SpecialServiceServiceImpl implements SpecialServiceService {
String ourDirMsg = CrossDirEnum.getMsgByCode(outDir); String ourDirMsg = CrossDirEnum.getMsgByCode(outDir);
crossListElement.setRouteEnd(streetName2 + ourDirMsg); crossListElement.setRouteEnd(streetName2 + ourDirMsg);
} }
crossListElement.setStatus(currentCross.getStatus());
crossListElement.setSort(currentCross.getSort());
crossList.add(crossListElement);
}
return crossList;
} }
@NotNull @NotNull
......
package net.wanji.web.vo.specialService;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author Kent HAN
* @date 2022/11/9 17:21
*/
@NoArgsConstructor
@Data
@ApiModel(value = "GroupListVO")
public class GroupListVO {
@ApiModelProperty(value = "特勤名称",notes = "")
private String specialServiceName;
private List<GroupListElement> groupList;
@NoArgsConstructor
@Data
public static class GroupListElement {
@ApiModelProperty(value = "分组名称",notes = "")
private String groupName;
@ApiModelProperty(value = "wkt",notes = "")
private String wkt;
private List<SpecialServiceDetailVO.CrossListElement> crossList;
}
}
...@@ -56,6 +56,12 @@ ...@@ -56,6 +56,12 @@
where special_service_id = #{specialServiceId} and cross_id = #{endCrossid} where special_service_id = #{specialServiceId} and cross_id = #{endCrossid}
</update> </update>
<update id="updateGroupName">
update t_special_service_cross
set group_name = #{groupName}
where cross_id = #{crossId}
</update>
<delete id="deleteCross"> <delete id="deleteCross">
delete from t_special_service_cross delete from t_special_service_cross
where special_service_id = #{specialServiceId} and cross_id = #{crossId} where special_service_id = #{specialServiceId} and cross_id = #{crossId}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment