package com.sandu.ximon.admin.service; 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.manager.iot.rrpc.enums.AtmoFunctionCode; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.RedisUtils; import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; import com.sandu.ximon.admin.vo.EquipmentInfomation; import com.sandu.ximon.dao.bo.AirEquipmentBo; import com.sandu.ximon.dao.domain.AirEquipment; import com.sandu.ximon.dao.mapper.AirEquipmentMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service @AllArgsConstructor public class AirEquipmentService extends BaseServiceImpl { private final AirEquipmentMapper airEquipmentMapper; /** * 大气设备列表模糊查询 */ public List listAirEquipmentByKeyword(BaseConditionVO baseConditionVO, String keyword) { if (baseConditionVO != null) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); } List airEquipmentBos; if (SecurityUtils.getClientId() == null) { airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(keyword, null); } else { airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(keyword, SecurityUtils.getUserId()); } return airEquipmentBos; } /** * 大气设备劣列表(用于首页数据统计) */ public List listAirEquipmentOnHome() { List airEquipmentBos; if (SecurityUtils.getClientId() == null) { airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(null, null); } else { airEquipmentBos = airEquipmentMapper.listAirEquipmentByIds(null, SecurityUtils.getUserId()); } return airEquipmentBos; } /** * 添加大气设备数据 * * @return */ public void addAirEquipment(AirEquipment airEquipment) { AirEquipment one = getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, airEquipment.getMac())); // //存储设备状态到缓存 // RedisUtils.getBean().set(AtmoFunctionCode.AIR_EQUIPMENT_STATE.getCode() + airEquipment.getMac() // , 1, 300L); if (one == null) { save(airEquipment); /** * 添加大气设备 日志记录开始 */ List listCode = new ArrayList<>(1); listCode.add(airEquipment.getMac()); String content = "{ 设备id:" + airEquipment.getId() + "设备code:" + airEquipment.getMac() + "}"; StoreOperationRecordsUtils.storeOperationData(listCode, null, "添加大气设备", content); /** * 添加大气设备 日志记录结束 */ } } /** * 删除大气设备数据 * * @param Id * @return */ public boolean deleteAirEquipment(Long Id) { AirEquipment airEquipment = getById(Id); if (airEquipment == null) { throw new BusinessException("找不到大气设备数据"); } /** * 删除大气设备 日志记录开始 */ List listCode=new ArrayList<>(1); listCode.add(airEquipment.getMac()); String content = "{设备code:" + airEquipment.getMac() + "}"; StoreOperationRecordsUtils.storeOperationData(listCode, null, "删除大气设备", content); /** * 删除大气设备 日志记录结束 */ return removeById(Id); } /** * 根据Mac大气设备数据详情 */ public EquipmentInfomation getAirEquipmentInfo(String mac) { EquipmentInfomation equipmentInfo = new EquipmentInfomation(); equipmentInfo.setEquipmentType("大气设备"); if (mac == null || mac.trim().length() == 0) { return equipmentInfo; } if (RedisUtils.getBean().get(AtmoFunctionCode.AIR_HEARTBEAT_STATE.getCode() + mac) != null) { equipmentInfo.setEquipmentState("在线"); } else { equipmentInfo.setEquipmentState("离线"); } AirEquipment one = getOne(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, mac)); if (one != null) { equipmentInfo.setEquipmentMac(mac); equipmentInfo.setEquipmentCreateTime(one.getCreateTime()); } return equipmentInfo; } }