Newer
Older
newfiber-termite / newfiber-termites / newfiber-termites-dataup / src / main / java / com / newfiber / termite / service / impl / DeviceMonitoringDataServiceImpl.java
@xiongkai xiongkai on 2 Jul 5 KB 集成mq
package com.newfiber.termite.service.impl;

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.DeviceMonitoringData;
import com.newfiber.termite.domain.request.deviceMonitoringData.DeviceMonitoringDataQueryRequest;
import com.newfiber.termite.domain.request.deviceMonitoringData.DeviceMonitoringDataSaveRequest;
import com.newfiber.termite.domain.request.deviceMonitoringData.DeviceMonitoringDataUpdateRequest;
import com.newfiber.termite.enums.EDrugFlag;
import com.newfiber.termite.enums.EHeatingFlag;
import com.newfiber.termite.mapper.DeviceMonitoringDataMapper;
import com.newfiber.termite.service.IDeviceMonitoringDataService;
import java.util.List;
import java.util.Optional;
import javax.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 白蚁防治数据Service业务层处理
 * 
 * @author X.K
 * @date 2024-05-27
 */
@Service
public class DeviceMonitoringDataServiceImpl extends BaseServiceImpl<DeviceMonitoringDataMapper, DeviceMonitoringData> implements IDeviceMonitoringDataService {

    @Resource
    private DeviceMonitoringDataMapper deviceMonitoringDataMapper;

    @Resource
    private MongoTemplate mongoTemplate;

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

    @Override
    public boolean update(DeviceMonitoringDataUpdateRequest request) {
        DeviceMonitoringData deviceMonitoringData = new DeviceMonitoringData();
        BeanUtils.copyProperties(request, deviceMonitoringData);
        return updateById(deviceMonitoringData);
    }

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

    public boolean existCollect(String sn){
        return mongoTemplate.collectionExists(sn);
    }

    public void createCollect(String sn){
        mongoTemplate.createCollection(sn);
    }

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

    @Override
    public DeviceMonitoringData lastDruging(String sn) {
        Query query = new Query().with(Sort.by(Sort.Direction.DESC,"druing_datetime")).
                addCriteria(Criteria.where("druing").ne(EDrugFlag.False.getCode()));
        return mongoTemplate.findOne(query, DeviceMonitoringData.class, sn);
//
//        QueryWrapper<DeviceMonitoringData> queryWrapper = new QueryWrapper<DeviceMonitoringData>().
//                eq("sn", sn).
//                ne("druing", EDrugFlag.False.getCode()).
//                orderByDesc("druing_datetime").last("limit 1");
//        return getOne(queryWrapper);
    }

    @Override
    public DeviceMonitoringData lastHeating(String sn) {
        Query query = new Query().with(Sort.by(Sort.Direction.DESC,"heating_datetime")).
                addCriteria(Criteria.where("heating").is(EHeatingFlag.True.getCode()));
        return mongoTemplate.findOne(query, DeviceMonitoringData.class, sn);

//        QueryWrapper<DeviceMonitoringData> queryWrapper = new QueryWrapper<DeviceMonitoringData>().
//                eq("sn", sn).
//                eq("heating", EHeatingFlag.True.getCode()).
//                orderByDesc("heating_datetime").last("limit 1");
//        return getOne(queryWrapper);
    }

    @Override
    public List<DeviceMonitoringData> selectPage(DeviceMonitoringDataQueryRequest request) {
        return deviceMonitoringDataMapper.selectByCondition(request);
    }

    @Override
    public List<DeviceMonitoringData> selectList(DeviceMonitoringDataQueryRequest request) {
        return deviceMonitoringDataMapper.selectByCondition(request);
    }

    @Override
    public List<DeviceMonitoringData> selectList(String sn, String startDate, String endDate) {
        Query query = new Query().with(Sort.by(Sort.Direction.DESC,"date")).
                addCriteria(Criteria.where("date").gte(startDate)).addCriteria(Criteria.where("date").lte(endDate));
        return mongoTemplate.find(query, DeviceMonitoringData.class, sn);

//        QueryWrapper<DeviceMonitoringData> queryWrapper = new QueryWrapper<DeviceMonitoringData>().
//                eq("sn", sn).
//                ge("date", startDate).le("date", endDate).orderByDesc("date");
//        return list(queryWrapper);
    }

    @Override
    public List<DeviceMonitoringData> selectList(String sn) {
        DeviceMonitoringDataQueryRequest deviceMonitoringDataQueryRequest = new DeviceMonitoringDataQueryRequest();
        deviceMonitoringDataQueryRequest.setSn(sn);
        return deviceMonitoringDataMapper.selectByCondition(deviceMonitoringDataQueryRequest);
    }

}