package com.gkhy.assess.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.assess.common.enums.DeleteFlagEnum;
import com.gkhy.assess.common.exception.ApiException;
import com.gkhy.assess.system.domain.AssDevice;
import com.gkhy.assess.system.mapper.AssDeviceMapper;
import com.gkhy.assess.system.service.AssDeviceService;
import com.gkhy.assess.system.service.AssProjectService;
import com.gkhy.assess.system.utils.ShiroUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* 设备表 服务实现类
*
*
* @author kzy
* @since 2023-12-12 10:46:54
*/
@Service
public class AssDeviceServiceImpl extends ServiceImpl implements AssDeviceService {
@Autowired
private AssProjectService projectService;
@Override
public int addDevice(AssDevice device) {
projectService.checkUserAllowed(device.getProjectId());
if(!checkNameUnique(device)){
throw new ApiException("项目下已存在相同设备");
}
device.setCreateBy(ShiroUtils.getSysUser().getUsername());
int row=baseMapper.insert(device);
return row;
}
@Override
public int editDevice(AssDevice device) {
projectService.checkUserAllowed(device.getProjectId());
if(!checkNameUnique(device)){
throw new ApiException("项目下已存在相同设备");
}
device.setUpdateBy(ShiroUtils.getSysUser().getUsername());
int row =baseMapper.updateById(device);
return row;
}
@Override
public int deleteById(Long deviceId) {
AssDevice device=getById(deviceId);
if(device==null){
throw new ApiException("设备不存在");
}
projectService.checkUserAllowed(device.getProjectId());
device=new AssDevice().setId(deviceId)
.setDelFlag(DeleteFlagEnum.DELETED.getCode());
device.setUpdateBy(ShiroUtils.getSysUser().getUsername());
return baseMapper.updateById(device);
}
@Override
public AssDevice getDeviceById(Long deviceId) {
AssDevice device= getById(deviceId);
projectService.checkUserAllowed(device.getProjectId());
return device;
}
@Override
public boolean checkNameUnique(AssDevice device) {
LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery()
.eq(AssDevice::getDeviceName, device.getDeviceName())
.eq(AssDevice::getDelFlag, DeleteFlagEnum.UN_DELETE)
.eq(AssDevice::getProjectId, device.getProjectId());
if(device.getId()!=null){
lambdaQueryWrapper.ne(AssDevice::getId,device.getId());
}
long contractCount= count(lambdaQueryWrapper);
if(contractCount>0){
return false;
}
return true;
}
@Override
public List getByProjectId(Long projectId) {
projectService.checkUserAllowed(projectId);
return baseMapper.getDevicesByProjectId(projectId);
}
@Override
public int deleteByIds(List ids,Long projectId) {
projectService.checkUserAllowed(projectId);
return baseMapper.update(null,Wrappers.lambdaUpdate()
.in(AssDevice::getId,ids)
.set(AssDevice::getDelFlag,DeleteFlagEnum.DELETED.getCode())
.set(AssDevice::getUpdateBy,ShiroUtils.getSysUser().getUsername()));
}
}