| | |
| | | @Transactional |
| | | @ShardingSphereTransactionType(TransactionType.BASE) |
| | | public R addElectronic(ElectronicFenceAddDto dto) { |
| | | validateElectronicNameUnique(dto.getElectronicName(), null); |
| | | // 获取现有的运营区域(areaType=1) |
| | | LambdaQueryWrapper<XpElectronicFenceArea> xpElectronicFenceAreaLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | xpElectronicFenceAreaLambdaQueryWrapper.eq(XpElectronicFenceArea::getAreaType, 1); |
| | |
| | | @Transactional |
| | | @ShardingSphereTransactionType(TransactionType.BASE) |
| | | public R editElectronic(ElectronicFenceUpdateDto dto) { |
| | | validateElectronicNameUnique(dto.getElectronicName(), dto.getId()); |
| | | // 获取现有的运营区域(areaType=1),排除当前正在编辑的电子围栏 |
| | | LambdaQueryWrapper<XpElectronicFenceArea> xpElectronicFenceAreaLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | xpElectronicFenceAreaLambdaQueryWrapper.eq(XpElectronicFenceArea::getAreaType, 1); |
| | |
| | | // 设置电子围栏ID并保存区域数据 |
| | | for (XpElectronicFenceArea area : updatedElectronicFenceAreas) { |
| | | area.setElectronicId(xpElectronicFence.getId()); |
| | | area.setAreaStatus(1); |
| | | if (area.getAreaType() == null || area.getAreaType() == 1) { |
| | | area.setAreaStatus(1); |
| | | } |
| | | area.setArea(area.getArea()); |
| | | area.setCityCode(dto.getCityCode()); |
| | | if (null != area.getId()) { |
| | |
| | | // 设置电子围栏ID并保存区域数据 |
| | | for (XpElectronicFenceArea area : updatedElectronicFenceAreas) { |
| | | area.setElectronicId(xpElectronicFence.getId()); |
| | | area.setAreaStatus(2); |
| | | if (area.getAreaType() == null || area.getAreaType() == 1) { |
| | | area.setAreaStatus(2); |
| | | } |
| | | area.setArea(area.getArea()); |
| | | area.setCityCode(dto.getCityCode()); |
| | | if (null != area.getId()) { |
| | |
| | | old.setPoints(geoJsonPolygon); |
| | | mongoTemplate.save(old); |
| | | } |
| | | } else if (newElectronicFenceArea.getAreaType() == 2 |
| | | && newElectronicFenceArea.getId() != null) { |
| | | Query query = new Query(); |
| | | query.addCriteria(Criteria.where("fenceId").is(String.valueOf(xpElectronicFence.getId()))); |
| | | query.addCriteria(Criteria.where("areaId").is(String.valueOf(newElectronicFenceArea.getId()))); |
| | | mongoTemplate.remove(query, XpGeoFencingProhibitedPolygon.class); |
| | | } |
| | | } |
| | | } |
| | |
| | | return R.ok(); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void validateElectronicNameUnique(String electronicName, Long excludeId) { |
| | | if (!StringUtils.hasText(electronicName)) { |
| | | return; |
| | | } |
| | | long count = this.lambdaQuery() |
| | | .eq(XpElectronicFence::getElectronicName, electronicName) |
| | | .ne(excludeId != null, XpElectronicFence::getId, excludeId) |
| | | .count(); |
| | | if (count > 0) { |
| | | throw new ServiceException("围栏名称已存在", I18nKeyConstant.FENCE_NAME_EXISTS); |
| | | } |
| | | } |
| | | |
| | | private static List<Long> normalizePointIds(List<Long> ids) { |
| | | if (CollUtil.isEmpty(ids)) { |
| | | return Collections.emptyList(); |