| | |
| | | import com.sandu.common.object.BaseConditionVO; |
| | | import com.sandu.common.redis.RedisService; |
| | | import com.sandu.common.service.impl.BaseServiceImpl; |
| | | import com.sandu.common.util.SpringContextHolder; |
| | | import com.sandu.ximon.admin.dto.DeviceStatus; |
| | | import com.sandu.ximon.admin.manager.iot.frame.A1Frame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder; |
| | |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.enums.DeviceStateEnum; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService; |
| | | import com.sandu.ximon.admin.param.PoleBindingParam; |
| | | import com.sandu.ximon.admin.param.PoleParam; |
| | | import com.sandu.ximon.admin.param.PoleStatesParam; |
| | | import com.sandu.ximon.admin.param.*; |
| | | import com.sandu.ximon.admin.redis.LightKey; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.admin.vo.PoleBindVO; |
| | | import com.sandu.ximon.dao.bo.BroadcastTerminalV2EntityBo; |
| | | import com.sandu.ximon.dao.bo.MonitorBo; |
| | | import com.sandu.ximon.dao.domain.LedPlayerEntity; |
| | | import com.sandu.ximon.dao.domain.Pole; |
| | | import com.sandu.ximon.dao.domain.PoleBinding; |
| | | import com.sandu.ximon.dao.domain.PoleGroupRelation; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | if (pole == null) { |
| | | throw new BusinessException("未找到该灯杆"); |
| | | } |
| | | // 删除灯杆绑定关系 |
| | | poleBindingService.remove(Wrappers.<PoleBinding>lambdaQuery().eq(PoleBinding::getPoleId, poleId)); |
| | | return removeById(poleId); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 统计在线灯杆数量 |
| | | * |
| | | * @return |
| | | */ |
| | | public Map<String, Integer> poleCount() { |
| | | Map<String, Integer> result = new HashMap<>(); |
| | | List<Pole> list = new ArrayList<>(); |
| | | LambdaQueryWrapper<Pole> wrapper = new LambdaQueryWrapper<>(); |
| | | if (SecurityUtils.getClientId() == null) { |
| | | wrapper = Wrappers.lambdaQuery(Pole.class); |
| | | } else { |
| | | wrapper = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, SecurityUtils.getUserId()).or( |
| | | w -> { |
| | | w.eq(Pole::getUserId, SecurityUtils.getUserId()); |
| | | }); |
| | | } |
| | | //灯杆 |
| | | list = list(wrapper); |
| | | List<Pole> poles = isOnLine(list); |
| | | result.put("poleOnlineCount", poles.size()); |
| | | result.put("poleTotalCount", list.size()); |
| | | |
| | | //诺瓦 |
| | | List<LedPlayerEntity> ledPlayerEntities = SpringContextHolder.getBean(LedPlayerEntityService.class).ledPlayerEntityList(null, null); |
| | | int number = 0; |
| | | for (LedPlayerEntity bean : ledPlayerEntities) { |
| | | if (bean.getOnlineStatus() == 1) { |
| | | number++; |
| | | } |
| | | } |
| | | result.put("novaOnlineCount", number); |
| | | result.put("novaTotalCount", ledPlayerEntities.size()); |
| | | |
| | | //ip音柱 |
| | | BroadcastTerminalV2Param broadcastTerminalV2Param = new BroadcastTerminalV2Param(); |
| | | broadcastTerminalV2Param.setBindingState(2); |
| | | broadcastTerminalV2Param.setWorkState(-1); |
| | | List<BroadcastTerminalV2EntityBo> broadcastTerminalList = SpringContextHolder.getBean(IpVolumeService.class).getBroadcastTerminalList(null, broadcastTerminalV2Param); |
| | | number = 0; |
| | | for (BroadcastTerminalV2EntityBo bean : broadcastTerminalList) { |
| | | if (bean.getStatus() == 1 || bean.getStatus() == 0) { |
| | | number++; |
| | | } |
| | | } |
| | | result.put("broadcastOnlineCount", number); |
| | | result.put("broadcastTotalCount", broadcastTerminalList.size()); |
| | | number = 0; |
| | | |
| | | //摄像头 |
| | | MonitorParam monitorParam = new MonitorParam(); |
| | | monitorParam.setEquipmentState(2); |
| | | monitorParam.setBindingState(2); |
| | | List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam); |
| | | monitorParam.setEquipmentState(1); |
| | | List<MonitorBo> online = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam); |
| | | result.put("monitorOnlineCount", online.size()); |
| | | result.put("monitorTotalCount", monitorBos.size()); |
| | | |
| | | //单灯 |
| | | |
| | | |
| | | |
| | | return result; |
| | | } |
| | | |
| | | public List<Pole> queryAllStatesAndList(Integer pageNo, Integer pageSize, PoleStatesParam param) { |
| | | List<Pole> list = new ArrayList<>(); |
| | | LambdaQueryWrapper<Pole> wrapper = new LambdaQueryWrapper<>(); |
| | | if (SecurityUtils.getClientId() == null) { |
| | | wrapper = Wrappers.lambdaQuery(Pole.class); |
| | | } else { |
| | | wrapper = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, SecurityUtils.getUserId()); |
| | | wrapper = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, SecurityUtils.getUserId()).or( |
| | | w -> { |
| | | w.eq(Pole::getUserId, SecurityUtils.getUserId()); |
| | | }); |
| | | } |
| | | if (!param.getKeyword().isEmpty()) { |
| | | if (param.getKeyword() != null && !param.getKeyword().isEmpty()) { |
| | | wrapper.like(Pole::getPoleCode, param.getKeyword()).or( |
| | | wrappers -> { |
| | | wrappers.like(Pole::getPoleName, param.getKeyword()); |
| | |
| | | ); |
| | | } |
| | | |
| | | PageHelper.startPage(pageNo, pageSize); |
| | | list = list(wrapper); |
| | | if (param.getGroupid() != null) { |
| | | // List<Long> poleIds = new ArrayList<>(); |
| | |
| | | if (param.getOnLineStates() != 2) {//绑定的真实灯杆是否在线 |
| | | list = isOnLine(list, param); |
| | | } |
| | | }else {//全部灯杆 实体/虚拟 |
| | | } else {//全部灯杆 实体/虚拟 |
| | | if (param.getOnLineStates() != 2) { //查询全部灯杆是否在线 |
| | | list = isOnLine(list, param); |
| | | } |
| | | } |
| | | }else {//全部 绑定/未绑定 |
| | | } else {//全部 绑定/未绑定 |
| | | if (param.getIsTrue() != 2) {// 判断灯杆类型 |
| | | list = isTrue(list, param);// 实体/虚拟 |
| | | if (param.getOnLineStates() != 2) {// 灯杆的在线判断 |
| | | list = isOnLine(list, param);//在线/离线 |
| | | } |
| | | }else {//全类型灯杆 |
| | | } else {//全类型灯杆 |
| | | if (param.getOnLineStates() != 2) {//判断在线状态 |
| | | list = isOnLine(list, param);//在线/离线 |
| | | } |
| | |
| | | return offline; |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 在线灯杆 |
| | | * |
| | | * @param list |
| | | * @param |
| | | * @return |
| | | */ |
| | | public List<Pole> isOnLine(List<Pole> list) { |
| | | setOnline(list); |
| | | List<Pole> online = new ArrayList<>();//在线 |
| | | list.forEach(onLinePole -> { |
| | | if (("ONLINE").equals(onLinePole.getOnLineState())) { |
| | | online.add(onLinePole); |
| | | } |
| | | }); |
| | | |
| | | return online; |
| | | } |
| | | |
| | | /** |
| | |
| | | String Code = uniqueMac.substring(0, uniqueMac.length() - 2);*/ |
| | | pole.setDeviceCode(uniqueMac); |
| | | pole.setPoleName(uniqueMac); |
| | | /* int i = Integer.parseInt(strm);*/ |
| | | if("00".equals(a1DeviceMacRespInnerFrame.getType())){ |
| | | /* int i = Integer.parseInt(strm);*/ |
| | | if ("00".equals(a1DeviceMacRespInnerFrame.getType())) { |
| | | pole.setDeviceType(0); |
| | | }else if("01".equals(a1DeviceMacRespInnerFrame.getType())){ |
| | | } else if ("01".equals(a1DeviceMacRespInnerFrame.getType())) { |
| | | pole.setDeviceType(1); |
| | | } |
| | | |
| | | pole.setPoleCode(generatePoleCode()); |
| | | Pole one = getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getDeviceCode, uniqueMac)); |
| | | // setMac = save(pole); |
| | | if(one==null){ |
| | | if (one == null) { |
| | | return save(pole); |
| | | }else { |
| | | } else { |
| | | pole.setId(one.getId()); |
| | | return updateById(pole); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | throw new BusinessException("灯杆不存在"); |
| | | } |
| | | pole.setUserId(clientId); |
| | | if(!clientService.findClientId(clientId)){ |
| | | if (!clientService.findClientId(clientId)) { |
| | | pole.setClientId(clientService.getClientId(clientId)); |
| | | } |
| | | r = updateById(pole); |
| | |
| | | } |
| | | |
| | | |
| | | public List<Pole> getOwnerPole(BaseConditionVO baseConditionVO, String keyword,Long cilentId) { |
| | | public List<Pole> getOwnerPole(BaseConditionVO baseConditionVO, String keyword, Long cilentId) { |
| | | LambdaQueryWrapper<Pole> eq; |
| | | // if(SecurityUtils.getClientId()!=null){ |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | if (clientService.findClientId(cilentId)) { |
| | | eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getUserId, cilentId); |
| | | } else { |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | if(clientService.findClientId(cilentId)){ |
| | | eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getUserId, cilentId); |
| | | }else{ |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, cilentId) |
| | | .or( |
| | | pole->{ |
| | | pole.eq(Pole::getUserId, cilentId); |
| | | } |
| | | ); |
| | | } |
| | | eq = Wrappers.lambdaQuery(Pole.class).eq(Pole::getClientId, cilentId) |
| | | .or( |
| | | pole -> { |
| | | pole.eq(Pole::getUserId, cilentId); |
| | | } |
| | | ); |
| | | } |
| | | |
| | | // }else { |
| | | // PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | // eq = Wrappers.lambdaQuery(Pole.class); |
| | | // } |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | if (!keyword.isEmpty()){ |
| | | eq.like(Pole::getPoleName,keyword).or( |
| | | code->{ |
| | | code.like(Pole::getPoleCode,keyword); |
| | | if (!keyword.isEmpty()) { |
| | | eq.like(Pole::getPoleName, keyword).or( |
| | | code -> { |
| | | code.like(Pole::getPoleCode, keyword); |
| | | } |
| | | ).or( |
| | | deviceCode->{ |
| | | deviceCode.like(Pole::getDeviceCode,keyword); |
| | | deviceCode -> { |
| | | deviceCode.like(Pole::getDeviceCode, keyword); |
| | | } |
| | | ); |
| | | } |
| | | List<Pole> list ; |
| | | list =list(eq); |
| | | List<Pole> list; |
| | | list = list(eq); |
| | | setCount(list); |
| | | setOnline(list); |
| | | return list; |
| | |
| | | |
| | | /** |
| | | * 根据灯杆id查询灯杆绑定设备 |
| | | * |
| | | * @return |
| | | */ |
| | | public List<Pole> getBindByPoleId(Long poleId){ |
| | | public PoleBindVO getBindByPoleId(Long poleId) { |
| | | List<PoleBinding> bind = poleBindingService.list(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId)); |
| | | |
| | | return list(Wrappers.lambdaQuery(Pole.class).eq(Pole::getId,poleId)); |
| | | PoleBindVO bindVO = new PoleBindVO(); |
| | | bindVO.setPole(getPoleByMac(poleId)); |
| | | bind.forEach(poleBinding -> { |
| | | if (poleBinding.getDeviceType() == 0) {//单灯 |
| | | bindVO.setLight(SpringContextHolder.getBean(LightService.class).getLight(poleBinding.getDeviceCode())); |
| | | } else if (poleBinding.getDeviceType() == 1) {//诺瓦 |
| | | bindVO.setNova(SpringContextHolder.getBean(LedPlayerEntityService.class).getBySnAndPlayerSn(poleBinding.getDeviceCode())); |
| | | } else if (poleBinding.getDeviceType() == 2) {//充电桩 |
| | | bindVO.setC3mCharging(SpringContextHolder.getBean(C3ChargingService.class).getByC3Mac(poleBinding.getDeviceCode())); |
| | | } else if (poleBinding.getDeviceType() == 3) {//大气 |
| | | bindVO.setAirMonitoring(SpringContextHolder.getBean(AirEquipmentService.class).getAirEquipment(poleBinding.getDeviceCode())); |
| | | } else if (poleBinding.getDeviceType() == 4) {//水质 |
| | | bindVO.setWaterMonitoring(SpringContextHolder.getBean(WaterQualityDataService.class).getWaterQualityDataInfo(poleBinding.getDeviceCode())); |
| | | } else if (poleBinding.getDeviceType() == 5) {//音柱 |
| | | bindVO.setIpVolume(SpringContextHolder.getBean(IpVolumeService.class).getIpTerminalDetail(Integer.valueOf(poleBinding.getDeviceCode()))); |
| | | } else if (poleBinding.getDeviceType() == 6) {//LCD |
| | | //lcd暂无 |
| | | } else if (poleBinding.getDeviceType() == 7) {//摄像头 |
| | | bindVO.setMonitor(SpringContextHolder.getBean(MonitorService.class).getMonitorInfo(poleBinding.getDeviceCode())); |
| | | } else if (poleBinding.getDeviceType() == 8) {//杆体倾测 |
| | | bindVO.setLightPoleHeeling(SpringContextHolder.getBean(LightPoleHeelingService.class).getLightPoleHeelingByMac(poleBinding.getDeviceCode())); |
| | | } else if (poleBinding.getDeviceType() == 9) {//一键求助 |
| | | //一键求助暂无 |
| | | } else if (poleBinding.getDeviceType() == 10) {//熙讯 |
| | | bindVO.setXiXun(SpringContextHolder.getBean(PoleLightemitService.class).getLedByLightControlCode(poleBinding.getDeviceCode())); |
| | | } else { |
| | | throw new BusinessException("未知设备类型"); |
| | | } |
| | | }); |
| | | return bindVO; |
| | | } |
| | | |
| | | |
| | | } |
| | | public Pole getPoleByMac(Long poleId) { |
| | | Pole one = getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getId, poleId)); |
| | | ArrayList<String> macs = new ArrayList<>(); |
| | | macs.add(one.getDeviceCode()); |
| | | List<DeviceStatus> deviceStatuses = listStatusByDeviceCode(macs); |
| | | if (deviceStatuses.get(0).getStatus() == 0) { |
| | | one.setOnLineState("离线"); |
| | | } else if (deviceStatuses.get(0).getStatus() == 1) { |
| | | one.setOnLineState("在线"); |
| | | } else if (deviceStatuses.get(0).getStatus() == 2) { |
| | | one.setOnLineState("未激活"); |
| | | } else if (deviceStatuses.get(0).getStatus() == 3) { |
| | | one.setOnLineState("不可用"); |
| | | } else { |
| | | one.setOnLineState("未知"); |
| | | } |
| | | return one; |
| | | } |
| | | |
| | | // /** |
| | | // * 用户总单灯节能率 |
| | | // */ |
| | | // public Double getPoleEnergy() { |
| | | // Double energy = 0.0; |
| | | // |
| | | // |
| | | // return energy; |
| | | // } |
| | | |
| | | } |