2021与蓝度共同重构项目,服务端
liuhaonan
2022-03-04 d72e7d16776d31c2fd29b60929e896bccded3029
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
@@ -1,21 +1,36 @@
package com.sandu.ximon.admin.controller;
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.ResponseVO;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.param.GroupParam;
import com.sandu.ximon.admin.param.LampPostParam;
import com.sandu.ximon.admin.param.ReceiveParam;
import com.sandu.ximon.admin.service.LampPostService;
import com.sandu.ximon.dao.domain.LampPost;
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.service.AirEquipmentService;
import com.sandu.ximon.admin.service.BroadcastTerminalV2Service;
import com.sandu.ximon.admin.service.MonitorService;
import com.sandu.ximon.admin.service.PoleService;
import com.sandu.ximon.dao.domain.Pole;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * 灯杆模块以及设置分组到对应灯杆
 *
 * @author chenjiantian
 */
@RestController
@@ -23,71 +38,163 @@
@RequestMapping("/v1/pole")
public class PoleController {
    private final LampPostService poleService;
    private final PoleService poleService;
    private MonitorService monitorService;
    private BroadcastTerminalV2Service broadcastTerminalV2Service;
    private AirEquipmentService airEquipmentService;
    @GetMapping("/add")
    public ResponseVO<Object> addLampPost(@RequestBody LampPostParam lampPostParam){
        return ResponseUtil.success( poleService.addLamp(lampPostParam));
    @PostMapping("/add")
    public ResponseVO<Object> addPole(@RequestBody @Validated PoleParam param) {
        return ResponseUtil.success(poleService.addPole(param));
    }
    @GetMapping("/update/{id}")
    public ResponseVO<Object> updateLampPost(@PathVariable Long id, @RequestBody LampPostParam lampPostParam){
        return ResponseUtil.success( poleService.updateLamp(id,lampPostParam));
    @PostMapping("/update/{poleId}")
    public ResponseVO<Object> updatePole(@PathVariable Long poleId, @RequestBody @Validated PoleParam param) {
        return ResponseUtil.success(poleService.updatePole(poleId, param));
    }
    @GetMapping("/delete/{id}")
    public ResponseVO<Object> deleteLampPost(@PathVariable Long id){
        return ResponseUtil.success(poleService.deleteLampPost(id));
    @PostMapping("/delete/{poleId}")
    public ResponseVO<Object> deletePole(@PathVariable Long poleId) {
        return ResponseUtil.success(poleService.deletePole(poleId));
    }
    @PostMapping("/setGroup")
    public ResponseVO<Object> setGroup(@RequestBody GroupParam groupParam){
        poleService.setGroup(groupParam.getGroup(), groupParam.getId());
        return ResponseUtil.success("分组设置成功");
    @GetMapping("/listPoleAndState")//可以整合//已整合 弃用
    public ResponseVO<Object> listPole(BaseConditionVO baseConditionVO, @RequestBody PoleStatesParam param) {
        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
        List<Pole> poles = poleService.queryAllStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(),param);
        return ResponseUtil.success(poles);
    }
  //  @AnonymousAccess
    //@PostMapping("/list")
   /* public ResponseVO<Object> listLamp(){
        //List<LampPost> list = lampPostService.list();
        return ResponseUtil.success(lampPostService.list());
        //return ResponseUtil.success(lampPostService.listLamp());
    }*/
    @GetMapping("/list")
    public ResponseVO<Object> listPoleAndState(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword,
                                               @RequestParam(value = "groupid", required = false) Long groupid) {
        PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
        List<Pole> poles = poleService.queryStatesAndList(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(),keyword,groupid);
        return ResponseUtil.successPage(poles);
    }
    /**
     * 查询灯杆列表并携带在线状态
     * @return
     * 设置三元码
     */
    @PostMapping("/list")
    public ResponseVO<Object> listLamp(){
        return ResponseUtil.success(poleService.queryStates());
    @PostMapping("/setMac/{baseMac}")
    public ResponseVO<Object> setMac(@PathVariable String baseMac) {
        //public ResponseVO<Object> setMac() {
        return ResponseUtil.success(poleService.setMac(baseMac));
        // return ResponseUtil.success(poleService.setMac());
    }
    /**
     * 恢复出厂设置
     * @param id
     * @return
     * 恢复灯杆出厂设置
     */
    @GetMapping("/lightReset/{id}")
    public ResponseVO<Object> LightReset(@PathVariable Long id){
        return ResponseUtil.success(poleService.LightReset(id));
    @PostMapping("/poleReset/{poleId}")
    public ResponseVO<Object> poleReset(@PathVariable Long poleId) {
        return ResponseUtil.success(poleService.poleReset(poleId));
    }
//TODO  设备的绑定解绑都要单独重新处理
    /**
     * 灯杆绑定设备
     */
    @PostMapping("/bind/{poleId}")
    public ResponseVO<Object> bindPole(@PathVariable Long poleId, @RequestBody @Validated PoleBindingParam param) {
        boolean result = poleService.bindPole(poleId, param);
        if (result) {
            //设备类型,0路灯,1led屏幕,2充电桩,3大气监测,4水质监测,5ip音柱,6lcd广告机,7摄像头,8杆体倾测,9一键救助
            switch (param.getDeviceType()) {
                case 0:
                    break;
                case 1:
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 5:
                    broadcastTerminalV2Service.updateBingdingState(true, Integer.valueOf(param.getDeviceCode()).intValue());
                    break;
                case 6:
                    break;
                case 7:
                    monitorService.updateBingdingState(true, param.getDeviceCode());
                    break;
                case 8:
                    break;
                case 9:
                    break;
                default:
                    break;
            }
    @GetMapping("/lsitLike")
    public ResponseVO<Object> list( @RequestBody ReceiveParam receiveParam){
        LambdaQueryWrapper<LampPost> wrapper = Wrappers.lambdaQuery(LampPost.class);
        if(receiveParam.getKeyWord()!=null){
            wrapper.like(LampPost::getLampId,receiveParam.getKeyWord())
                    .or(lampPostLambdaQueryWrapper -> {
                        lampPostLambdaQueryWrapper.like(LampPost::getName,receiveParam.getKeyWord());
                    });
            return ResponseUtil.success("绑定成功");
        } else {
            return ResponseUtil.fail("绑定失败");
        }
        List<LampPost> lsit= poleService.list(wrapper);
        return ResponseUtil.success(lsit);
    }
    /**
     * 灯杆绑定设备
     */
    @PostMapping("/unBind/{poleId}")
    public ResponseVO<Object> unBindPole(@PathVariable Long poleId, @RequestBody @Validated PoleBindingParam param) {
        boolean result = poleService.unBindPole(poleId, param.getDeviceCode());
        if (result) {
            //设备类型,0路灯,1led屏幕,2充电桩,3大气监测,4水质监测,5ip音柱,6lcd广告机,7摄像头,8杆体倾测,9一键救助
            switch (param.getDeviceType()) {
                case 0:
                    break;
                case 1:
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 5:
                    broadcastTerminalV2Service.updateBingdingState(false, Integer.valueOf(param.getDeviceCode()).intValue());
                    break;
                case 6:
                    break;
                case 7:
                    monitorService.updateBingdingState(false, param.getDeviceCode());
                    break;
                case 8:
                    break;
                case 9:
                    break;
                default:
                    break;
            }
            return ResponseUtil.success("解绑成功");
        } else {
            return ResponseUtil.fail("解绑失败");
        }
    }
    @PostMapping("/listStatusByDeviceCode")
    public ResponseVO<Object> getStatusById(@RequestBody String[] deviceCodeList) {
        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) {
        return ResponseUtil.success(poleService.ClientBindingPole(param.getClientId(), param.getPoleIds()));//////////////
    }
}