| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.object.BaseConditionVO; |
| | | import com.sandu.common.redis.RedisService; |
| | | import com.sandu.common.service.impl.BaseServiceImpl; |
| | | import com.sandu.ximon.admin.dto.DeviceStatus; |
| | |
| | | private final RedisService redisService; |
| | | private final PoleBindingService poleBindingService; |
| | | private final PoleGroupRelationService groupRelationService; |
| | | private final ClientService clientService; |
| | | |
| | | public boolean addPole(PoleParam param) { |
| | | Pole pole = new Pole(); |
| | |
| | | list = pole; |
| | | } |
| | | |
| | | list.forEach(bindwarpper -> { |
| | | // Long clientId = bindwarpper.getClientId(); |
| | | if (bindwarpper.getClientId() == null) {//判断是否绑定 |
| | | unbindList.add(bindwarpper); |
| | | if (bindwarpper.getDeviceCode() == null) {//判断灯杆类型 |
| | | isFalse.add(bindwarpper); |
| | | } else { |
| | | isTrue.add(bindwarpper); |
| | | // List<Pole> bind = isBind(list, param); |
| | | // List<Pole> aTrue = isTrue(list, param); |
| | | // List<Pole> onLine = isOnLine(list, param); |
| | | |
| | | if (param.getBingStates() != 2) {//是否绑定 |
| | | list = isBind(list, param);// 绑定/未绑定 |
| | | if (param.getIsTrue() != 2) {//已绑定的是否是真实灯杆 |
| | | list = isTrue(list, param); |
| | | if (param.getOnLineStates() != 2) {//绑定的真实灯杆是否在线 |
| | | list = isOnLine(list, param); |
| | | } |
| | | } else { |
| | | bindList.add(bindwarpper); |
| | | if (bindwarpper.getDeviceCode() == null) { |
| | | isFalse.add(bindwarpper); |
| | | } else { |
| | | isTrue.add(bindwarpper); |
| | | }else {//全部灯杆 实体/虚拟 |
| | | if (param.getOnLineStates() != 2) { //查询全部灯杆是否在线 |
| | | list = isOnLine(list, param); |
| | | } |
| | | } |
| | | }); |
| | | if (param.getBingStates() == 1) { //未绑定 |
| | | list = unbindList; |
| | | } else if (param.getBingStates() == 0) {//已绑定 |
| | | list = bindList; |
| | | }// else {//全部 |
| | | // list = list(wrapper); |
| | | // } |
| | | |
| | | setOnline(list); |
| | | if (param.getIsTrue() == 1) { //虚拟灯杆 |
| | | list = isFalse; |
| | | } else if (param.getIsTrue() == 0) {//实体灯杆 |
| | | list = isTrue; |
| | | list.forEach(onLinePole -> { |
| | | // System.out.println("online-----------------------"+onLinePole.getOnLineState()); |
| | | if (("ONLINAE").equals(onLinePole.getOnLineState())) { |
| | | online.add(onLinePole); |
| | | } else if (("OFFLINE").equals(onLinePole.getOnLineState())) { |
| | | offline.add(onLinePole); |
| | | }else {//全部 绑定/未绑定 |
| | | if (param.getIsTrue() != 2) {// 判断灯杆类型 |
| | | list = isTrue(list, param);// 实体/虚拟 |
| | | if (param.getOnLineStates() != 2) {// 灯杆的在线判断 |
| | | list = isOnLine(list, param);//在线/离线 |
| | | } |
| | | }); |
| | | } else {//全部 |
| | | // setOnline(list); |
| | | list.forEach(onLinePole -> { |
| | | // System.out.println("online-----------------------"+onLinePole.getOnLineState()); |
| | | if (("ONLINE").equals(onLinePole.getOnLineState())) { |
| | | online.add(onLinePole); |
| | | } else if (("OFFLINE").equals(onLinePole.getOnLineState())) { |
| | | offline.add(onLinePole); |
| | | }else {//全类型灯杆 |
| | | if (param.getOnLineStates() != 2) {//判断在线状态 |
| | | list = isOnLine(list, param);//在线/离线 |
| | | } |
| | | }); |
| | | } |
| | | |
| | | if (param.getOnLineStates() == 1) { //离线 |
| | | list = offline; |
| | | } else if (param.getOnLineStates() == 0) {//在线 |
| | | list = online; |
| | | } |
| | | } |
| | | |
| | | |
| | | // list.forEach(bindwarpper -> { |
| | | //// Long clientId = bindwarpper.getClientId(); |
| | | // if (bindwarpper.getClientId() == null) {//判断是否绑定 |
| | | // unbindList.add(bindwarpper); |
| | | // if (bindwarpper.getDeviceCode() == null) {//判断灯杆类型 |
| | | // isFalse.add(bindwarpper); |
| | | // } else { |
| | | // isTrue.add(bindwarpper); |
| | | // } |
| | | // } else { |
| | | // bindList.add(bindwarpper); |
| | | // if (bindwarpper.getDeviceCode() == null) { |
| | | // isFalse.add(bindwarpper); |
| | | // } else { |
| | | // isTrue.add(bindwarpper); |
| | | // } |
| | | // } |
| | | // }); |
| | | // if (param.getBingStates() == 1) { //未绑定 |
| | | // list = unbindList; |
| | | // } else if (param.getBingStates() == 0) {//已绑定 |
| | | // list = bindList; |
| | | // }// else {//全部 |
| | | //// list = list(wrapper); |
| | | //// } |
| | | // |
| | | // if (param.getIsTrue() == 1) { //虚拟灯杆 |
| | | // list = isFalse; |
| | | // } else if (param.getIsTrue() == 0) {//实体灯杆 |
| | | // setOnline(list); |
| | | // list = isTrue; |
| | | // list.forEach(onLinePole -> { |
| | | // System.out.println("online---------------------------------------------------"+("ONLINE").equals(onLinePole.getOnLineState())); |
| | | // System.out.println("online---------------------------------------------------"+(onLinePole.getOnLineState())); |
| | | // if (("ONLINE").equals(onLinePole.getOnLineState())) { |
| | | // online.add(onLinePole); |
| | | // } else if (("OFFLINE").equals(onLinePole.getOnLineState())) { |
| | | // offline.add(onLinePole); |
| | | // } |
| | | // }); |
| | | // } else {//全部 |
| | | // setOnline(list); |
| | | // list.forEach(onLinePole -> { |
| | | // // System.out.println("online-----------------------"+onLinePole.getOnLineState()); |
| | | // if (("ONLINE").equals(onLinePole.getOnLineState())) { |
| | | // online.add(onLinePole); |
| | | // } else if (("OFFLINE").equals(onLinePole.getOnLineState())) { |
| | | // offline.add(onLinePole); |
| | | // } |
| | | // }); |
| | | // } |
| | | // |
| | | // if (param.getOnLineStates() == 1) { //离线 |
| | | // list = offline; |
| | | // } else if (param.getOnLineStates() == 0) {//在线 |
| | | // list = online; |
| | | // } |
| | | setCount(list); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 设置绑定设备数量 |
| | | * |
| | | * @param list |
| | | * @return |
| | | */ |
| | |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 在线状态处理 |
| | | * |
| | | * @param list |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public List<Pole> isOnLine(List<Pole> list, PoleStatesParam param) { |
| | | setOnline(list); |
| | | List<Pole> online = new ArrayList<>();//在线 |
| | | List<Pole> offline = new ArrayList<>();//离线 |
| | | list.forEach(onLinePole -> { |
| | | System.out.println("online---------------------------------------------------" + ("ONLINE").equals(onLinePole.getOnLineState())); |
| | | System.out.println("online---------------------------------------------------" + (onLinePole.getOnLineState())); |
| | | if (("ONLINE").equals(onLinePole.getOnLineState())) { |
| | | online.add(onLinePole); |
| | | } else if (("OFFLINE").equals(onLinePole.getOnLineState())) { |
| | | offline.add(onLinePole); |
| | | } |
| | | }); |
| | | |
| | | if (param.getOnLineStates() == 0) { |
| | | return online; |
| | | } else if (param.getOnLineStates() == 1) { |
| | | return offline; |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 查询绑定状态 |
| | | * |
| | | * @param list |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public List<Pole> isBind(List<Pole> list, PoleStatesParam param) { |
| | | List<Pole> bindList = new ArrayList<>();//已绑定客户 |
| | | List<Pole> unbindList = new ArrayList<>();//未绑定客户 |
| | | list.forEach(bindwarpper -> { |
| | | // Long clientId = bindwarpper.getClientId(); |
| | | if (bindwarpper.getClientId() == null) {//判断是否绑定 |
| | | unbindList.add(bindwarpper); |
| | | } else { |
| | | bindList.add(bindwarpper); |
| | | } |
| | | }); |
| | | if (param.getBingStates() == 0) { |
| | | return bindList; |
| | | } else if (param.getBingStates() == 1) { |
| | | return unbindList; |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | public List<Pole> isTrue(List<Pole> list, PoleStatesParam param) { |
| | | List<Pole> isTrue = new ArrayList<>();//实体灯杆 |
| | | List<Pole> isFalse = new ArrayList<>();//虚拟灯杆 |
| | | list.forEach(bindwarpper -> { |
| | | // Long clientId = bindwarpper.getClientId(); |
| | | if (bindwarpper.getDeviceCode() == null) { |
| | | isFalse.add(bindwarpper); |
| | | } else { |
| | | isTrue.add(bindwarpper); |
| | | } |
| | | }); |
| | | if (param.getIsTrue() == 0) { |
| | | return isTrue; |
| | | } else if (param.getIsTrue() == 1) { |
| | | return isFalse; |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 设置在线状态 |
| | | * |
| | | * @param list |
| | | * @return |
| | | */ |
| | |
| | | * |
| | | * @return 是否成功 |
| | | */ |
| | | public boolean unBindPole(String deviceCode) { |
| | | return poleBindingService.unBindPole(deviceCode); |
| | | public boolean unBindPole(Long poleId, String deviceCode) { |
| | | return poleBindingService.unBindPole(poleId, deviceCode); |
| | | } |
| | | |
| | | |
| | |
| | | .build(); |
| | | CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(deviceName, build); |
| | | |
| | | System.out.println(commonFrame.toString()); |
| | | |
| | | CommonFrame rebootFrame = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(deviceName, |
| | | FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()) |
| | | .orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | if ("00".equals(rebootFrame.getPayload())) { |
| | | System.out.println("重启成功"); |
| | | } |
| | | |
| | | CommonFrame result = MainBoardInvokeSyncService.getInstance() |
| | | .sendRRPC(deviceName, |
| | | FrameBuilder.builderA2().innerFrame(new EmptyRequestInnerFrame()) |
| | | .orderType(A2OrderEnum.REQUEST_MAIN_BOARD_RESET.getCode()).build()); |
| | | |
| | | boolean b = false; |
| | | if ("00".equals(result.getPayload())) { |
| | | if ("00".equals(rebootFrame.getPayload())) { |
| | | byId.setDeviceCode(null); |
| | | b = updateById(byId); |
| | | System.out.println("重启成功"); |
| | |
| | | } |
| | | |
| | | Pole pole = new Pole(); |
| | | String strh = uniqueMac.substring(uniqueMac.length() - 2, uniqueMac.length()); |
| | | pole.setDeviceCode(strh); |
| | | pole.setPoleName(strh); |
| | | String strm = uniqueMac.substring(0, uniqueMac.length() - 2); |
| | | int i = Integer.parseInt(strm); |
| | | pole.setPoleCode(generatePoleCode()); |
| | | pole.setDeviceType(i); |
| | | setMac = save(pole); |
| | | /* String type = uniqueMac.substring(uniqueMac.length() - 2, uniqueMac.length()); |
| | | String Code = uniqueMac.substring(0, uniqueMac.length() - 2);*/ |
| | | pole.setDeviceCode(uniqueMac); |
| | | pole.setPoleName(uniqueMac); |
| | | /* int i = Integer.parseInt(strm);*/ |
| | | if("00".equals(a1DeviceMacRespInnerFrame.getType())){ |
| | | pole.setDeviceType(0); |
| | | }else if("01".equals(a1DeviceMacRespInnerFrame.getType())){ |
| | | pole.setDeviceType(1); |
| | | } |
| | | |
| | | return setMac; |
| | | pole.setPoleCode(generatePoleCode()); |
| | | Pole one = getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getDeviceCode, uniqueMac)); |
| | | // setMac = save(pole); |
| | | if(one==null){ |
| | | return save(pole); |
| | | }else { |
| | | pole.setId(one.getId()); |
| | | return updateById(pole); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | public List<String> listDeviceCodeByIds(List<Long> poleIdList) { |
| | |
| | | if (pole == null) { |
| | | throw new BusinessException("灯杆不存在"); |
| | | } |
| | | pole.setClientId(clientId); |
| | | pole.setUserId(clientId); |
| | | if(!clientService.findClientId(clientId)){ |
| | | pole.setClientId(clientService.getClientId(clientId)); |
| | | } |
| | | r = updateById(pole); |
| | | |
| | | if (!r) { |
| | |
| | | } |
| | | return r; |
| | | } |
| | | |
| | | |
| | | 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()); |
| | | 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); |
| | | } |
| | | ).or( |
| | | deviceCode->{ |
| | | deviceCode.like(Pole::getDeviceCode,keyword); |
| | | } |
| | | ); |
| | | } |
| | | List<Pole> list ; |
| | | list =list(eq); |
| | | setCount(list); |
| | | setOnline(list); |
| | | return list; |
| | | } |
| | | } |