Newer
Older
newfiber-termite / newfiber-termites / newfiber-termites-dataup / src / main / java / com / newfiber / termite / service / impl / DeviceMonitoringDataServiceImpl.java
package com.newfiber.termite.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.domain.response.WarnMonitoringResponseInfo;
import com.newfiber.termite.enums.EDrugFlag;
import com.newfiber.termite.enums.EExistsAnt;
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.mongodb.core.MongoTemplate;
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 projectCode, EExistsAnt existsAnt) {
        DeviceMonitoringDataQueryRequest deviceMonitoringDataQueryRequest = new DeviceMonitoringDataQueryRequest();
        deviceMonitoringDataQueryRequest.setProjectCode(projectCode);
        deviceMonitoringDataQueryRequest.setYesnoant(existsAnt.getCode());
        return deviceMonitoringDataMapper.selectByCondition(deviceMonitoringDataQueryRequest);
    }

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

    @Override
    public List<WarnMonitoringResponseInfo> listWarinTotalDays(String projectCode) {
        return deviceMonitoringDataMapper.listWarinTotalDays(projectCode);
    }

}