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 { //水质参数获取网址,例如:"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 listWaterQualityEquipment() { return waterQualityEquipmentMapper.listWaterQualityEquipment(); } /** * 模糊查询 */ public List listWaterQualityEquipmentByKeyword(BaseConditionVO baseConditionVO, String keyword) { Long userId = SecurityUtils.getUserId(); if (baseConditionVO != null) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); } List 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(s); 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; } }