| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- package com.zswl.dataservice.service.mqtt;
- import com.zswl.dataservice.dao.iot.IotTemplateDao;
- import com.zswl.dataservice.dao.mqtt.DeviceInfoDao;
- import com.zswl.dataservice.dao.mqtt.ProjectInfoDao;
- import com.zswl.dataservice.dataConfig.ResultMessage;
- import com.zswl.dataservice.domain.iot.IotTemplate;
- import com.zswl.dataservice.domain.mqtt.DeviceInfo;
- import com.zswl.dataservice.domain.mqtt.ProjectInfo;
- import com.zswl.dataservice.model.iot.IotMainModel;
- import com.zswl.dataservice.model.mqtt.*;
- import com.zswl.dataservice.service.iot.IotServiceImpl;
- import com.zswl.dataservice.service.sync.DeviceSyncFullCardService;
- import com.zswl.dataservice.type.FunctionType;
- import com.zswl.dataservice.utils.bean.BeanUtils;
- import com.zswl.dataservice.utils.mqtt.type.LogsLevel;
- import com.zswl.dataservice.utils.mqtt.type.OnLineState;
- import com.zswl.dataservice.utils.page.PageEntityUtil;
- import com.zswl.dataservice.utils.result.ResultContent;
- import org.apache.commons.lang3.ObjectUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.Pageable;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @author TRX
- * @date 2024/5/14
- */
- @Service
- public class DeviceInfoService {
- @Autowired
- DeviceInfoDao deviceInfoDao;
- @Autowired
- OperationLogsService operationLogsService;
- @Autowired
- IotTemplateDao iotTemplateDao;
- @Autowired
- IotServiceImpl iotService;
- @Autowired
- ProjectInfoDao projectInfoDao;
- @Autowired
- ProjectInfoService projectInfoService;
- @Autowired
- DeviceSyncFullCardService deviceSyncFullCardService;
- /**
- * 添加-编辑设备 (基础信息)
- *
- * @param param
- * @return
- */
- public ResultContent<DeviceInfo> addDeviceInfo(DeviceInfoAddParam param) {
- DeviceInfo deviceInfo = new DeviceInfo();
- DeviceInfo temp = deviceInfoDao.findTopByDeviceId(param.getDeviceId());
- if (ObjectUtils.isNotEmpty(temp)) {
- deviceInfo = temp;
- param.setId(null);
- } else {
- deviceInfo.setActivityTime(System.currentTimeMillis());
- }
- BeanUtils.copyProperties(param, deviceInfo, "id");
- deviceInfo.setLastOnlineTime(System.currentTimeMillis());
- deviceInfo.setOnLineState(OnLineState.OnLine);
- // 项目
- if (StringUtils.isNotEmpty(param.getProjectInfoCode())) {
- ProjectInfo projectInfo = projectInfoDao.findTopByCode(param.getProjectInfoCode());
- deviceInfo.setProjectInfo(projectInfo);
- deviceInfo.setProjectInfoCode(projectInfo.getCode());
- }
- deviceInfo.setLastOnlineTime(System.currentTimeMillis());
- deviceInfoDao.save(deviceInfo);
- operationLogsService.addLogs(String.format("添加了设备;%s", deviceInfo.getDeviceName()), LogsLevel.Middle, deviceInfo);
- return ResultContent.buildSuccess(deviceInfo);
- }
- /**
- * 设备列表
- *
- * @param pageable
- * @param param
- * @return
- */
- public ResultContent<Page<DeviceInfoModel>> pageDevice(Pageable pageable, DeviceInfoSearchParam param) {
- Page<DeviceInfo> page = deviceInfoDao.page(pageable, param);
- return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toModel));
- }
- /**
- * @return
- */
- public ResultContent updateRemark(DeviceInfoUpdateRemark param) {
- DeviceInfo deviceInfo = deviceInfoDao.findTopById(param.getId());
- if (ObjectUtils.isEmpty(deviceInfo)) {
- return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
- }
- deviceInfo.setRemark(param.getRemark());
- deviceInfoDao.save(deviceInfo);
- return ResultContent.buildSuccess();
- }
- /**
- * 编辑设备关联的模版
- *
- * @param param
- * @return
- */
- public ResultContent updateIopTemplate(DeviceInfoUpdateRemark param) {
- DeviceInfo deviceInfo = deviceInfoDao.findTopById(param.getId());
- if (ObjectUtils.isEmpty(deviceInfo)) {
- return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
- }
- IotTemplate iotTemplate = iotTemplateDao.findTopById(param.getIotTemplateId());
- if (ObjectUtils.isEmpty(iotTemplate)) {
- return ResultContent.buildFail(String.format("模版ID不存在:", param.getId()));
- }
- deviceInfo.setIotTemplate(iotTemplate);
- deviceInfoDao.save(deviceInfo);
- return ResultContent.buildSuccess();
- }
- /**
- * 编辑设备关联的项目信息
- *
- * @param param
- * @return
- */
- public ResultContent updateProject(DeviceInfoUpdateRemark param) {
- DeviceInfo deviceInfo = deviceInfoDao.findTopById(param.getId());
- if (ObjectUtils.isEmpty(deviceInfo)) {
- return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
- }
- ProjectInfo projectInfo = projectInfoDao.findTopByCode(param.getProjectCode());
- if (ObjectUtils.isEmpty(projectInfo)) {
- return ResultContent.buildFail(String.format("项目不存在:", param.getId()));
- }
- deviceInfo.setProjectInfoCode(projectInfo.getCode());
- deviceInfo.setProjectInfo(projectInfo);
- deviceInfoDao.save(deviceInfo);
- return ResultContent.buildSuccess();
- }
- /**
- * 编辑设备关联的模版
- *
- * @param param
- * @return
- */
- public ResultContent updateIsReportLogs(DeviceInfoUpdateRemark param) {
- DeviceInfo deviceInfo = deviceInfoDao.findTopById(param.getId());
- if (ObjectUtils.isEmpty(deviceInfo)) {
- return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
- }
- deviceInfo.setIsReportLogs(param.getIsReportLogs());
- deviceInfoDao.save(deviceInfo);
- return ResultContent.buildSuccess();
- }
- /**
- * 改变设备状态
- *
- * @param param
- * @return
- */
- public ResultContent updateDeviceState(DeviceInfoUpdateRemark param) {
- DeviceInfo deviceInfo = deviceInfoDao.findTopById(param.getId());
- if (ObjectUtils.isEmpty(deviceInfo)) {
- return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
- }
- deviceInfo.setState(param.getState());
- deviceInfoDao.save(deviceInfo);
- deviceSyncFullCardService.noticeSyncDeviceOnlineStateChange(deviceInfo.getDeviceId());
- return ResultContent.buildSuccess();
- }
- /**
- * 测试设备的连接时间
- *
- * @param id
- * @return
- */
- public ResultContent<Long> testDevice(String id) {
- Long time = 0L;
- return ResultContent.buildSuccess(time);
- }
- /**
- * 得到设备关联的物模型定义
- *
- * @param deviceId
- * @return
- */
- public ResultContent<List<IotMainModel>> getDeviceIotMain(String deviceId, FunctionType functionType) {
- DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(deviceId);
- if (ObjectUtils.isEmpty(deviceInfo)) {
- return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, deviceId));
- }
- List<IotMainModel> models = new ArrayList<>();
- if (deviceInfo.getIotTemplate() != null) {
- ResultContent<List<IotMainModel>> resultContent = iotService.getTemplateIotMainList(deviceInfo.getIotTemplate().getId(), functionType);
- models = resultContent.getContent();
- }
- return ResultContent.buildSuccess(models);
- }
- /**
- * 删除设备
- *
- * @param deviceId
- * @return
- */
- public ResultContent deleteDeviceInfo(String deviceId) {
- DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(deviceId);
- if (ObjectUtils.isEmpty(deviceInfo)) {
- return ResultContent.buildFail(String.format("设备ID不存在:%s", deviceId));
- }
- deviceInfoDao.delete(deviceInfo);
- operationLogsService.addLogs(String.format("删除了设备;%s", deviceInfo.getDeviceName()), LogsLevel.High, deviceInfo);
- return ResultContent.buildSuccess();
- }
- public ResultContent<DeviceInfoModel> getDeviceById(String deviceId) {
- DeviceInfoModel model = null;
- DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(deviceId);
- if (ObjectUtils.isNotEmpty(deviceInfo)) {
- model = toModel(deviceInfo);
- }
- return ResultContent.buildSuccess(model);
- }
- public DeviceInfoModel toModel(DeviceInfo deviceInfo) {
- DeviceInfoModel deviceInfoModel = new DeviceInfoModel();
- if (ObjectUtils.isNotEmpty(deviceInfo)) {
- BeanUtils.copyProperties(deviceInfo, deviceInfoModel);
- deviceInfoModel.setIotTemplate(iotService.toModel(deviceInfo.getIotTemplate()));
- deviceInfoModel.setProjectInfo(projectInfoService.toModel(deviceInfo.getProjectInfo()));
- }
- return deviceInfoModel;
- }
- }
|