Newer
Older
newfiber-termite / newfiber-termites / newfiber-termites-dataup / src / main / java / com / newfiber / termite / service / impl / DeviceInfoServiceImpl.java
@xiongkai xiongkai 5 days ago 6 KB 集成mq
package com.newfiber.termite.service.impl;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.newfiber.common.core.exception.ServiceException;
import com.newfiber.common.core.web.domain.BaseEntity;
import com.newfiber.common.core.web.service.BaseServiceImpl;
import com.newfiber.termite.domain.DeviceInfo;
import com.newfiber.termite.domain.dto.TermiteDataUpRequest;
import com.newfiber.termite.domain.request.deviceInfo.DeviceInfoBatchSaveRequest;
import com.newfiber.termite.domain.request.deviceInfo.DeviceInfoImportRequest;
import com.newfiber.termite.domain.request.deviceInfo.DeviceInfoQueryRequest;
import com.newfiber.termite.domain.request.deviceInfo.DeviceInfoSaveRequest;
import com.newfiber.termite.domain.request.deviceInfo.DeviceInfoStateSyncRequest;
import com.newfiber.termite.domain.request.deviceInfo.DeviceInfoUpdateRequest;
import com.newfiber.termite.enums.EDeviceSyncState;
import com.newfiber.termite.mapper.DeviceInfoMapper;
import com.newfiber.termite.service.IDeviceInfoService;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 设备信息Service业务层处理
 * 
 * @author X.K
 * @date 2024-05-27
 */
@Service
public class DeviceInfoServiceImpl extends BaseServiceImpl<DeviceInfoMapper, DeviceInfo> implements IDeviceInfoService {

    @Resource
    private DeviceInfoMapper deviceInfoMapper;

    @Override
    public long insert(DeviceInfoSaveRequest request) {
        DeviceInfo deviceInfo = new DeviceInfo();
        BeanUtils.copyProperties(request, deviceInfo);
        save(deviceInfo);
        return Optional.of(deviceInfo).map(BaseEntity::getId).orElse(0L);
    }

    @Override
    public boolean insert(DeviceInfoBatchSaveRequest request) {
        if(CollectionUtils.isNotEmpty(request.getDeviceInfoImportRequestList())){
            return true;
        }
        List<DeviceInfo> deviceInfoList = new ArrayList<>();
        for(DeviceInfoImportRequest infoImportRequest : request.getDeviceInfoImportRequestList()){
            DeviceInfo deviceInfo = new DeviceInfo();
            BeanUtils.copyProperties(infoImportRequest, deviceInfo);
            deviceInfo.setProjectCode(request.getProjectCode());
            deviceInfo.setCategory("project");
            deviceInfoList.add(deviceInfo);
        }
        return saveBatch(deviceInfoList);
    }

    @Override
    public boolean update(DeviceInfoUpdateRequest request) {
        DeviceInfo deviceInfo = new DeviceInfo();
        BeanUtils.copyProperties(request, deviceInfo);
        return updateById(deviceInfo);
    }

    @Override
    public boolean update(TermiteDataUpRequest termiteDateUpRequest) {
        UpdateWrapper<DeviceInfo> updateWrapper = new UpdateWrapper<DeviceInfo>().
                set(StringUtils.isNotBlank(termiteDateUpRequest.getSoftware()), "software", termiteDateUpRequest.getSoftware()).
                set(StringUtils.isNotBlank(termiteDateUpRequest.getHardware()), "hardware", termiteDateUpRequest.getHardware()).
                set(StringUtils.isNotBlank(termiteDateUpRequest.getVoltage()), "voltage", termiteDateUpRequest.getVoltage()).
                set(StringUtils.isNotBlank(termiteDateUpRequest.getTemperature()), "temperature", termiteDateUpRequest.getTemperature()).
                set(StringUtils.isNotBlank(termiteDateUpRequest.getRssi()), "rssi", termiteDateUpRequest.getRssi()).
                set(StringUtils.isNotBlank(termiteDateUpRequest.getAP()), "ap", termiteDateUpRequest.getAP()).
                set(StringUtils.isNotBlank(termiteDateUpRequest.getCamera()), "camera", termiteDateUpRequest.getCamera()).
                set(null != termiteDateUpRequest.getLastPicTime(), "last_pic_time", termiteDateUpRequest.getLastPicTime()).
                set("sync_state", EDeviceSyncState.success.getCode()).
                eq("sn", termiteDateUpRequest.getSn());
        update(updateWrapper);
        return true;
    }

    @Override
    public boolean update(DeviceInfoStateSyncRequest deviceInfoStateSyncRequest) {
        TermiteDataUpRequest termiteDataUpRequest = new TermiteDataUpRequest();
        BeanUtils.copyProperties(deviceInfoStateSyncRequest, termiteDataUpRequest);
        termiteDataUpRequest.setAP(deviceInfoStateSyncRequest.getAp());
        return update(termiteDataUpRequest);
    }

    @Override
    public boolean update(String sn, EDeviceSyncState deviceSyncState) {
        UpdateWrapper<DeviceInfo> updateWrapper = new UpdateWrapper<DeviceInfo>().
                set("sync_state", deviceSyncState.getCode()).
                eq("sn", sn);
        update(updateWrapper);
        return true;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean delete(String ids) {
	    return deleteLogic(ids);
    }

    @Override
    public DeviceInfo selectDetail(Long id) {
        DeviceInfo deviceInfo = deviceInfoMapper.selectOneById(id);
        if(null == deviceInfo){
	        throw new ServiceException(String.format("%s ID=%s 的记录不存在", this.getClass().getSimpleName(), id));
        }
        return deviceInfo;
    }

    @Override
    public DeviceInfo selectDetail(String sn) {
        DeviceInfoQueryRequest request = new DeviceInfoQueryRequest();
        request.setSn(sn);
        List<DeviceInfo> deviceInfoList = selectList(request);
        if(CollectionUtils.isNotEmpty(deviceInfoList)){
            return deviceInfoList.get(0);
        }
        return null;
    }

    @Override
    public List<DeviceInfo> selectPage(DeviceInfoQueryRequest request) {
        return deviceInfoMapper.selectByCondition(request);
    }

    @Override
    public List<DeviceInfo> selectList(DeviceInfoQueryRequest request) {
        return deviceInfoMapper.selectByCondition(request);
    }

    @Override
    public List<DeviceInfo> selectList(String projectCode) {
        DeviceInfoQueryRequest request = new DeviceInfoQueryRequest();
        request.setProjectCode(projectCode);
        return deviceInfoMapper.selectByCondition(request);
    }

}