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