| | |
| | | import com.xiaopeng.api.model.map.XpGeoFencingProhibitedPolygon; |
| | | import com.xiaopeng.api.model.operation.*; |
| | | import com.xiaopeng.api.query.operation.ElectronicPageListQuery; |
| | | import com.xiaopeng.api.query.operation.PointListQuery; |
| | | import com.xiaopeng.api.query.operation.PointPageListListQuery; |
| | | import com.xiaopeng.common.core.domain.R; |
| | | import com.xiaopeng.common.core.exception.ServiceException; |
| | | import com.xiaopeng.common.core.utils.DateUtils; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | private XpElectronicFenceAreaMapper xpElectronicFenceAreaMapper; |
| | | @Autowired |
| | | private MongoTemplate mongoTemplate; |
| | | @Lazy |
| | | @Resource |
| | | private BootCommonService bootCommonService; |
| | | @Autowired |
| | | private XpPointMapper xpPointMapper; |
| | | |
| | |
| | | @Lazy |
| | | protected XpStationService xpStationService; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public PageInfo<XpElectronicFence> pageList(ElectronicPageListQuery query) { |
| | | if (query == null) { |
| | |
| | | if (total == 0L) { |
| | | return new PageInfo<>(); |
| | | } |
| | | LocalTime localTime = LocalTime.now(); |
| | | List<XpElectronicFence> list = this.baseMapper.pageList(pageInfo, query); |
| | | List<Long> electronicIds = list.stream().map(XpElectronicFence::getId).collect(Collectors.toList()); |
| | | Map<Long, List<XpElectronicFenceArea>> electronicFenceAreaMap = xpElectronicFenceAreaMapper.selectList(new LambdaQueryWrapper<XpElectronicFenceArea>() |
| | |
| | | .collect(Collectors.groupingBy(XpElectronicFenceArea::getElectronicId)); |
| | | for (XpElectronicFence xpElectronicFence : list) { |
| | | List<XpElectronicFenceArea> xpElectronicFenceAreas = electronicFenceAreaMap.get(xpElectronicFence.getId()); |
| | | xpElectronicFence.setOperatingAreaCount(0L); |
| | | xpElectronicFence.setProhibitedAreaCount(0L); |
| | | xpElectronicFence.setFenceAreaPointCount(0l); |
| | | if (xpElectronicFenceAreas != null) { |
| | | xpElectronicFence.setOperatingAreaCount(xpElectronicFenceAreas.stream().filter(xpElectronicFenceArea -> xpElectronicFenceArea.getAreaType() == 1).count()); |
| | | xpElectronicFence.setProhibitedAreaCount(xpElectronicFenceAreas.stream().filter(xpElectronicFenceArea -> xpElectronicFenceArea.getAreaType() == 2).count()); |
| | | } else { |
| | | xpElectronicFence.setOperatingAreaCount(0L); |
| | | xpElectronicFence.setProhibitedAreaCount(0L); |
| | | } |
| | | |
| | | try { |
| | | PointPageListListQuery queryPoint = new PointPageListListQuery(); |
| | | queryPoint.setElectronicId(xpElectronicFence.getId()); |
| | | List<XpPoint> xpPoints = xpPointMapper.pageList( queryPoint); |
| | | |
| | | if(CollUtil.isNotEmpty(xpPoints)){ |
| | | Long fenceAreaPointCount = 0L; |
| | | for (XpPoint xpPoint : xpPoints) { |
| | | boolean intime = bootCommonService.getPointOperation(localTime, xpPoint); |
| | | if(intime){ |
| | | fenceAreaPointCount++; |
| | | } |
| | | } |
| | | xpElectronicFence.setFenceAreaPointCount(fenceAreaPointCount); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new ServiceException("查询错误"); |
| | | } |
| | | |
| | | } |
| | | pageInfo.setRecords(list); |
| | | return pageInfo; |
| | |
| | | List<XpElectronicFenceArea> electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery() |
| | | .eq(XpElectronicFenceArea::getElectronicId, electronicId) |
| | | .list(); |
| | | List<Long> electronicAreaIds = new ArrayList<>(); |
| | | if (!CollUtil.isEmpty(electronicFenceAreaList)) { |
| | | for (XpElectronicFenceArea electronicFenceArea : electronicFenceAreaList) { |
| | | electronicFenceArea.setAreaStatus(2); |
| | | toDeleteAreaIdStrings.add(String.valueOf(electronicFenceArea.getId())); |
| | | electronicAreaIds.add(electronicFenceArea.getId()); |
| | | } |
| | | |
| | | xpElectronicFenceAreaService.updateBatchById(electronicFenceAreaList); |
| | | } |
| | | |
| | | //点位失效 |
| | | xpPointService.setStatusFailure(electronicAreaIds); |
| | | //场站失效 |
| | | xpStationService.setStatusFailure(electronicId);//场站失效 |
| | | |
| | | // 删除旧的区域数据,然后保存新的区域数据 |