2021与蓝度共同重构项目,服务端
liuhaonan
2022-07-05 eee4c5490f9c34f5d80b32fc2215783a77499d25
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
@@ -2,21 +2,31 @@
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.sandu.common.domain.CommonPage;
import com.sandu.common.domain.ResponseVO;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.dto.DeviceStatus;
import com.sandu.ximon.admin.param.PoleBindParam;
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.security.PermissionConfig;
import com.sandu.ximon.admin.service.AirEquipmentService;
import com.sandu.ximon.admin.service.IpVolumeService;
import com.sandu.ximon.admin.service.MonitorService;
import com.sandu.ximon.admin.service.PoleService;
import com.sandu.ximon.admin.vo.PoleBindVO;
import com.sandu.ximon.dao.domain.Pole;
import com.sandu.ximon.dao.enums.MenuEnum;
import com.sandu.ximon.dao.enums.PoleBindingEnums;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
/**
@@ -30,55 +40,109 @@
public class PoleController {
    private final PoleService poleService;
    private MonitorService monitorService;
    private IpVolumeService broadcastTerminalV2Service;
    private AirEquipmentService airEquipmentService;
    private final PermissionConfig permissionConfig;
    @PostMapping("/add")
    public ResponseVO<Object> addPole(@RequestBody @Validated PoleParam param) {
        if (!permissionConfig.check(MenuEnum.POLE_VIRTUAL_ADD.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.addPole(param));
    }
    @PostMapping("/update/{poleId}")
    public ResponseVO<Object> updatePole(@PathVariable Long poleId, @RequestBody @Validated PoleParam param) {
        if (!permissionConfig.check(MenuEnum.POLE_UPDATE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.updatePole(poleId, param));
    }
    @PostMapping("/delete/{poleId}")
    public ResponseVO<Object> deletePole(@PathVariable Long poleId) {
        if (!permissionConfig.check(MenuEnum.POLE_DELETE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.deletePole(poleId));
    }
    @GetMapping("/list")
    public ResponseVO<Object> listPole(@RequestParam String keyword) {
        LambdaQueryWrapper<Pole> wrapper = Wrappers.lambdaQuery(Pole.class);
        if (StrUtil.isNotBlank(keyword)) {
            wrapper.like(Pole::getPoleCode, keyword)
                    .or(lampPostLambdaQueryWrapper -> {
                        lampPostLambdaQueryWrapper.like(Pole::getPoleName, keyword);
                    });
    @PostMapping("/listDetail")
    public ResponseVO<Object> listPoleDetail(BaseConditionVO baseConditionVO,
                                             @RequestBody PoleStatesParam param,
                                             @RequestParam(value = "order", required = false) Integer order,
                                             @RequestParam(value = "seq", required = false) Integer seq) {
        if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        List<Pole> list = poleService.list(wrapper);
        return ResponseUtil.success(list);
        CommonPage commonPage = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param, order, seq);
        List<Pole> listCommonPage = (List<Pole>) commonPage.getList();
        List<PoleBindVO> listResult = new ArrayList<>();
        for (Pole pole : listCommonPage) {
            PoleBindVO bindByPoleId = poleService.getBindByPoleId(pole.getId());
            bindByPoleId.setPole(pole);
            listResult.add(bindByPoleId);
        }
        commonPage.setList(listResult);
        return ResponseUtil.success(commonPage);
    }
    @GetMapping("listPoleAndState")
    public ResponseVO<Object> listPoleAndState() {
    @PostMapping("/list")
    public ResponseVO<Object> listPole(BaseConditionVO baseConditionVO,
                                       @RequestBody PoleStatesParam param,
                                       @RequestParam(value = "order", required = false) Integer order,
                                       @RequestParam(value = "seq", required = false) Integer seq) {
        if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        CommonPage commonPage = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), param, order, seq);
        return ResponseUtil.success(poleService.queryStatesAndList());
        return ResponseUtil.success(commonPage);
    }
    //已启用
    @GetMapping("/listPoleAndState")
    public ResponseVO<Object> listPoleAndState(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword,
                                               @RequestParam(value = "groupid", required = false) Long groupid) {
        if (!permissionConfig.check(MenuEnum.POLE_LIST.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
        List<Pole> poles = poleService.queryStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), keyword, groupid);
        return ResponseUtil.successPage(poles);
    }
    /**
     * 在线数量
     */
    @GetMapping("/online")
    public ResponseVO<Object> online() {
        return ResponseUtil.success(poleService.poleCount());
    }
    /**
     * 设置三元码
     */
    @PostMapping("/setMac")
    public ResponseVO<Object> setMac(@PathVariable Long poleId) {
        return ResponseUtil.success(poleService.setMac(poleId));
    @PostMapping("/setMac/{baseMac}")
    public ResponseVO<Object> setMac(@PathVariable String baseMac) {
        if (!permissionConfig.check(MenuEnum.POLE_REAL_ADD.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.setMac(baseMac));
    }
    /**
     * 恢复灯杆出厂设置
     */
    @PostMapping("/poleReset")
    @PostMapping("/poleReset/{poleId}")
    public ResponseVO<Object> poleReset(@PathVariable Long poleId) {
        if (!permissionConfig.check(MenuEnum.POLE_REAL_RESET.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.poleReset(poleId));
    }
@@ -88,22 +152,180 @@
     */
    @PostMapping("/bind/{poleId}")
    public ResponseVO<Object> bindPole(@PathVariable Long poleId, @RequestBody @Validated PoleBindingParam param) {
        if (!permissionConfig.check(MenuEnum.BINDING.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        boolean result = poleService.bindPole(poleId, param);
        if (result) {
            //设备类型,0路灯,1nove,2充电桩,3大气监测,4水质监测,5ip音柱,6lcd广告机,7摄像头,8杆体倾测,9一键救助, 10熙讯, 11农耕
            switch (param.getDeviceType().toString()) {
                case PoleBindingEnums.LIGHT:
                    Pole pole = poleService.getById(poleId);
                    if (pole != null) {
                        pole.setPoleName(param.getDeviceName());
                        pole.setDeviceCode(param.getDeviceCode());
                        poleService.updateById(pole);
                    }
                    break;
                case PoleBindingEnums.VONNOX:
                    break;
                case PoleBindingEnums.CHARGING_PILE:
                    break;
                case PoleBindingEnums.ATMOSPHERIC:
                    break;
                case PoleBindingEnums.WATER:
                    break;
                case PoleBindingEnums.IPVOLUME:
                    broadcastTerminalV2Service.updateBingdingState(true, Integer.valueOf(param.getDeviceCode()).intValue());
                    break;
                case PoleBindingEnums.LCD_ADVERTISING:
                    break;
                case PoleBindingEnums.MONITOR:
                    monitorService.updateBingdingState(true, param.getDeviceCode());
                    break;
                case PoleBindingEnums.LIGHTPOLEHEELING:
                    break;
                case PoleBindingEnums.FOR_HELP:
                    break;
                case PoleBindingEnums.XIXUN:
                    break;
                case PoleBindingEnums.ATMOSPHERIC_NONG_GENG:
                    break;
                default:
                    break;
            }
            return ResponseUtil.success("绑定成功");
        } else {
            return ResponseUtil.fail("绑定失败");
        }
    }
    /**
     * 灯杆解绑设备
     */
    @PostMapping("/unBind/{poleId}")
    public ResponseVO<Object> unBindPole(@PathVariable Long poleId, @RequestBody @Validated PoleBindingParam param) {
        if (!permissionConfig.check(MenuEnum.UNBIND.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        boolean result = poleService.unBindPole(poleId, param.getDeviceCode());
        if (result) {
            //设备类型,0路灯,1led屏幕,2充电桩,3大气监测,4水质监测,5ip音柱,6lcd广告机,7摄像头,8杆体倾测,9一键救助, 10熙讯, 11农耕
            switch (param.getDeviceType().toString()) {
                case PoleBindingEnums.LIGHT:
                    //删除灯杆的devicescode
                    Pole pole = poleService.getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getId, poleId));
                    if (pole != null) {
                        poleService.updateDeviceCode(pole.getId());
                    }
                    break;
                case PoleBindingEnums.VONNOX:
                    break;
                case PoleBindingEnums.CHARGING_PILE:
                    break;
                case PoleBindingEnums.ATMOSPHERIC:
                    break;
                case PoleBindingEnums.WATER:
                    break;
                case PoleBindingEnums.IPVOLUME:
                    broadcastTerminalV2Service.updateBingdingState(false, Integer.valueOf(param.getDeviceCode()).intValue());
                    break;
                case PoleBindingEnums.LCD_ADVERTISING:
                    break;
                case PoleBindingEnums.MONITOR:
                    monitorService.updateBingdingState(false, param.getDeviceCode());
                    break;
                case PoleBindingEnums.LIGHTPOLEHEELING:
                    break;
                case PoleBindingEnums.FOR_HELP:
                    break;
                case PoleBindingEnums.XIXUN:
                    break;
                case PoleBindingEnums.ATMOSPHERIC_NONG_GENG:
                    break;
                default:
                    break;
            }
            return ResponseUtil.success("解绑成功");
        } else {
            return ResponseUtil.fail("解绑失败");
        }
    }
    @PostMapping("/listStatusByDeviceCode")
    public ResponseVO<Object> getStatusById(@RequestBody String[] deviceCodeList){
        if(ArrayUtil.isEmpty(deviceCodeList)) {
    public ResponseVO<Object> getStatusById(@RequestBody String[] deviceCodeList) {
        if (!permissionConfig.check(MenuEnum.GET_STATE_BY_DEVICECODE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        for (String s : deviceCodeList) {
            if (s == null) {
                return ResponseUtil.fail("参数不能为空");
            }
        }
        if (ArrayUtil.isEmpty(deviceCodeList)) {
            return ResponseUtil.fail("参数不能为空");
        }
        List<DeviceStatus> statusList = poleService.listStatusByDeviceCode(CollectionUtil.toList(deviceCodeList));
        return ResponseUtil.success(statusList);
    }
    @PostMapping("/ClientBindingPole")
    public ResponseVO<Object> ClientBindingPole(@RequestBody PoleBindParam param) {
        if (!permissionConfig.check(MenuEnum.CLIENT_BINDING_POLE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.ClientBindingPole(param.getClientId(), param.getPoleIds()));
    }
    /**
     * 查找自己拥有的灯杆
     */
    @PostMapping("/getOwnerPole/{cilentId}")
    public ResponseVO<Object> getOwnerPole(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword
            , @PathVariable Long cilentId) {
        if (!permissionConfig.check(MenuEnum.GET_CLIENT_POLE.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        List<Pole> results = poleService.getOwnerPole(baseConditionVO, keyword, cilentId);
        return ResponseUtil.success(results);
    }
    /**
     * 查看灯杆绑定的设备   //已合并到列表功能 此接口已废弃
     */
    @PostMapping("/getPoleBindDevice/{poleId}")
    public ResponseVO<Object> getPoleBindDevice(@PathVariable Long poleId) {
        if (!permissionConfig.check(MenuEnum.GET_POLE_BINDING.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.getBindByPoleId(poleId));
    }
    /**
     * 推送大气设备到诺瓦
     */
    @GetMapping("/pushAidDataToNova/{poleId}")
    public ResponseVO<Object> pushAirDataToNova(@PathVariable Long poleId) {
        if (!permissionConfig.check(MenuEnum.PUSH_AIR_DATA_TO_NOVA.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.pushAirDataToNova(poleId));
    }
    /**
     * 推送大气设备到熙讯
     */
    @GetMapping("/pushAirDataToXiXun/{poleId}")
    public ResponseVO<Object> pushAirDataToXiXun(@PathVariable Long poleId) {
        if (!permissionConfig.check(MenuEnum.PUSH_AIR_DATA_TO_XIXUN.getCode())) {
            return ResponseUtil.fail("缺少对应用户权限");
        }
        return ResponseUtil.success(poleService.pushAirDataToXiXun(poleId));
    }
}