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); } }