| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | xpElectronicFence.setCityCode(dto.getCityCode()); |
| | | |
| | | this.updateById(xpElectronicFence); |
| | | |
| | | // 禁行区(areaType=2)差异删除:对比原有禁行区与本次编辑入参禁行区(按id) |
| | | List<XpElectronicFenceArea> existingProhibitedAreas = xpElectronicFenceAreaService.lambdaQuery() |
| | | .eq(XpElectronicFenceArea::getElectronicId, dto.getId()) |
| | | .eq(XpElectronicFenceArea::getAreaType, 2) |
| | | .list(); |
| | | Set<Long> incomingProhibitedIds = updatedElectronicFenceAreas.stream() |
| | | .filter(a -> a != null && a.getAreaType() != null && a.getAreaType() == 2 && a.getId() != null) |
| | | .map(XpElectronicFenceArea::getId) |
| | | .collect(Collectors.toSet()); |
| | | List<Long> toDeleteProhibitedIds = existingProhibitedAreas.stream() |
| | | .map(XpElectronicFenceArea::getId) |
| | | .filter(id -> id != null && !incomingProhibitedIds.contains(id)) |
| | | .collect(Collectors.toList()); |
| | | if (!toDeleteProhibitedIds.isEmpty()) { |
| | | // 逻辑删除MySQL禁行区 |
| | | xpElectronicFenceAreaService.removeByIds(toDeleteProhibitedIds); |
| | | // 同步删除Mongo禁行区多边形 |
| | | List<String> toDeleteAreaIdStrings = toDeleteProhibitedIds.stream().map(String::valueOf).collect(Collectors.toList()); |
| | | Query delMongoQuery = new Query(); |
| | | delMongoQuery.addCriteria(Criteria.where("fenceId").is(String.valueOf(dto.getId()))); |
| | | delMongoQuery.addCriteria(Criteria.where("areaId").in(toDeleteAreaIdStrings)); |
| | | mongoTemplate.remove(delMongoQuery, XpGeoFencingProhibitedPolygon.class); |
| | | } |
| | | // 删除旧的区域数据,然后保存新的区域数据 |
| | | mongoTemplate.remove(new Query(Criteria.where("fenceId").is(String.valueOf(dto.getId()))), XpGeoFencingPolygon.class); |
| | | if (xpElectronicFence.getStatus() == 2) { |