2021与蓝度共同重构项目,服务端
liuhaonan
2022-05-16 3b8877b6d8c13e37f8c7769282a2751b0faeb499
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package com.sandu.ximon.admin.service;
 
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
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.service.impl.BaseServiceImpl;
import com.sandu.ximon.admin.dto.WaterQualityDataDto;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.vo.EquipmentInfomation;
import com.sandu.ximon.dao.bo.WaterQualityEquipmentBo;
import com.sandu.ximon.dao.domain.WaterQualityEquipment;
import com.sandu.ximon.dao.mapper.WaterQualityEquipmentMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
@Service
@AllArgsConstructor
public class WaterQualityEquipmentService extends BaseServiceImpl<WaterQualityEquipmentMapper, WaterQualityEquipment> {
    //水质参数获取网址,例如:"http://iot.ainongye.cn/json/设备编号.json"
    private final String WATER_QUALITY_DATA_URL = "http://iot.ainongye.cn/json/";
    private WaterQualityEquipmentMapper waterQualityEquipmentMapper;
    private final PoleBindingService poleBindingService;
 
    /**
     * 查询全部水质设备
     */
    public List<WaterQualityEquipmentBo> listWaterQualityEquipment() {
        return waterQualityEquipmentMapper.listWaterQualityEquipment();
    }
 
    /**
     * 模糊查询
     */
    public List<WaterQualityEquipmentBo> listWaterQualityEquipmentByKeyword(BaseConditionVO baseConditionVO, String keyword) {
        Long userId = SecurityUtils.getUserId();
        if (baseConditionVO != null) {
            PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
        }
        List<WaterQualityEquipmentBo> waterQualityEquipmentBoList;
        //为空是超管
        if (SecurityUtils.getClientId() == null) {
            waterQualityEquipmentBoList = waterQualityEquipmentMapper.listWaterQualityEquipmentByIds(keyword, null);
        } else {
            waterQualityEquipmentBoList = waterQualityEquipmentMapper.listWaterQualityEquipmentByIds(keyword, userId);
        }
        return waterQualityEquipmentBoList;
    }
 
    /**
     * 删除水质设备
     *
     * @param Id
     * @return
     */
    public boolean deleteWaterQualityEquipment(Long Id) {
        WaterQualityEquipment waterQualityEquipment = getById(Id);
        if (waterQualityEquipment == null) {
            throw new BusinessException("找不到水质设备");
        }
        //删除摄水质设备前需要先解绑
        poleBindingService.unBindPole(null, waterQualityEquipment.getWaterQualityEquipmentCode());
 
        return removeById(Id);
    }
 
    /**
     * 添加水质设备
     *
     * @param waterQualityEquipment
     * @return
     */
 
    public boolean addWaterQualityEquipment(WaterQualityEquipment waterQualityEquipment) {
        if (waterQualityEquipment.getWaterQualityEquipmentCode() == null) {
            throw new BusinessException("缺少水质设备号参数");
        }
        WaterQualityEquipment one = getOne(Wrappers.lambdaQuery(WaterQualityEquipment.class).eq(WaterQualityEquipment::getWaterQualityEquipmentCode,
                waterQualityEquipment.getWaterQualityEquipmentCode()));
        if (one == null) {
            WaterQualityEquipment result = new WaterQualityEquipment();
            result.setWaterQualityEquipmentCode(waterQualityEquipment.getWaterQualityEquipmentCode());
            return save(result);
        } else {
            throw new BusinessException("该水质设备已存在!");
        }
    }
 
    /**
     * 首页灯杆绑定信息
     */
    public EquipmentInfomation getWaterQualityDataInfo(String waterQualityEquipmentCode) {
        EquipmentInfomation equipmentInfo = new EquipmentInfomation();
        equipmentInfo.setEquipmentType("水质设备");
        if (waterQualityEquipmentCode == null || waterQualityEquipmentCode.trim().length() == 0) {
            return equipmentInfo;
        }
 
        WaterQualityEquipment one = getOne(Wrappers.lambdaQuery(WaterQualityEquipment.class).eq(WaterQualityEquipment::getWaterQualityEquipmentCode,
                waterQualityEquipmentCode));
        if (one != null) {
            equipmentInfo.setEquipmentCreateTime(one.getCreateTime());
            equipmentInfo.setEquipmentMac(one.getWaterQualityEquipmentCode());
        }
 
        try {
            String s = HttpUtil.get(WATER_QUALITY_DATA_URL + waterQualityEquipmentCode + ".json");
            System.out.println(waterQualityEquipmentCode+"-------------------------------"+s);
            if(!s.startsWith("{")){
                equipmentInfo.setEquipmentState("未知");
                return equipmentInfo;
            }
            WaterQualityDataDto waterQualityDataDto = JSON.parseObject(s, WaterQualityDataDto.class);
            //设置水质设备状态
            if (waterQualityDataDto != null) {
                equipmentInfo.setEquipmentState("在线");
            } else {
                equipmentInfo.setEquipmentState("离线");
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("水质设备号不正确");
            equipmentInfo.setEquipmentState("未知");
        }
        return equipmentInfo;
    }
}