package com.ruoyi.system.service.impl;
|
|
import com.ruoyi.common.basic.PageInfo;
|
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.system.domain.SysVisitArea;
|
import com.ruoyi.system.domain.SysVisitorMachine;
|
import com.ruoyi.system.dto.SysVisitorMachineAddRequest;
|
import com.ruoyi.system.dto.SysVisitorMachineDeleteRequest;
|
import com.ruoyi.system.dto.SysVisitorMachineDetailRequest;
|
import com.ruoyi.system.dto.SysVisitorMachineEditRequest;
|
import com.ruoyi.system.dto.SysVisitorMachineLogoutRequest;
|
import com.ruoyi.system.dto.SysVisitorMachinePageRequest;
|
import com.ruoyi.system.dto.SysVisitorMachineStatusRequest;
|
import com.ruoyi.system.mapper.SysVisitAreaMapper;
|
import com.ruoyi.system.mapper.SysVisitorMachineMapper;
|
import com.ruoyi.system.service.ISysVisitorMachineService;
|
import com.ruoyi.system.vo.SysVisitorMachineVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.List;
|
|
/**
|
* 访客机服务实现
|
*
|
* @author ruoyi
|
*/
|
@Service
|
public class SysVisitorMachineServiceImpl implements ISysVisitorMachineService
|
{
|
private static final String ONLINE_STATUS_UNACTIVATED = "UNACTIVATED";
|
|
@Autowired
|
private SysVisitorMachineMapper visitorMachineMapper;
|
|
@Autowired
|
private SysVisitAreaMapper visitAreaMapper;
|
|
@Override
|
public PageInfo<SysVisitorMachineVO> pageList(SysVisitorMachinePageRequest request)
|
{
|
SysVisitorMachinePageRequest query = request == null ? new SysVisitorMachinePageRequest() : request;
|
query.setDeviceName(StringUtils.trim(query.getDeviceName()));
|
query.setDeviceId(StringUtils.trim(query.getDeviceId()));
|
query.setOnlineStatus(StringUtils.trim(query.getOnlineStatus()));
|
PageInfo<SysVisitorMachineVO> pageInfo = new PageInfo<SysVisitorMachineVO>(query.getPageNum(), query.getPageSize());
|
List<SysVisitorMachineVO> list = visitorMachineMapper.pageList(query, pageInfo);
|
pageInfo.setRecords(list);
|
return pageInfo;
|
}
|
|
@Override
|
public SysVisitorMachineVO detail(SysVisitorMachineDetailRequest request)
|
{
|
Long machineId = getRequiredMachineId(request == null ? null : request.getMachineId());
|
SysVisitorMachineVO detail = visitorMachineMapper.selectVoById(machineId);
|
if (detail == null)
|
{
|
throw new ServiceException("访客机不存在");
|
}
|
return detail;
|
}
|
|
@Override
|
public int add(SysVisitorMachineAddRequest request, String username)
|
{
|
if (request == null)
|
{
|
throw new ServiceException("访客机内容不能为空");
|
}
|
SysVisitorMachine machine = buildMachine(request.getAreaId(), request.getDeviceName(), request.getBrand(),
|
request.getDeviceId(), request.getRemark(), request.getEnabled(), null);
|
machine.setOnlineStatus(ONLINE_STATUS_UNACTIVATED);
|
machine.setCreateBy(username);
|
return visitorMachineMapper.insertMachine(machine);
|
}
|
|
@Override
|
public int edit(SysVisitorMachineEditRequest request, String username)
|
{
|
if (request == null)
|
{
|
throw new ServiceException("访客机内容不能为空");
|
}
|
Long machineId = getRequiredMachineId(request.getMachineId());
|
if (visitorMachineMapper.selectById(machineId) == null)
|
{
|
throw new ServiceException("访客机不存在");
|
}
|
SysVisitorMachine machine = buildMachine(request.getAreaId(), request.getDeviceName(), request.getBrand(),
|
request.getDeviceId(), request.getRemark(), request.getEnabled(), machineId);
|
machine.setMachineId(machineId);
|
machine.setUpdateBy(username);
|
return visitorMachineMapper.updateMachine(machine);
|
}
|
|
@Override
|
public int changeStatus(SysVisitorMachineStatusRequest request, String username)
|
{
|
List<Long> machineIds = getRequiredMachineIds(request == null ? null : request.getMachineIds());
|
if (request.getEnabled() == null)
|
{
|
throw new ServiceException("启用状态不能为空");
|
}
|
return visitorMachineMapper.updateEnabled(machineIds, request.getEnabled(), username);
|
}
|
|
@Override
|
public int logout(SysVisitorMachineLogoutRequest request, String username)
|
{
|
List<Long> machineIds = getRequiredMachineIds(request == null ? null : request.getMachineIds());
|
return visitorMachineMapper.updateOnlineStatus(machineIds, ONLINE_STATUS_UNACTIVATED, username);
|
}
|
|
@Override
|
public int delete(SysVisitorMachineDeleteRequest request, String username)
|
{
|
List<Long> machineIds = getRequiredMachineIds(request == null ? null : request.getMachineIds());
|
return visitorMachineMapper.deleteByIds(machineIds, username);
|
}
|
|
private SysVisitorMachine buildMachine(Long areaId, String deviceName, String brand, String deviceId, String remark,
|
Boolean enabled, Long excludeMachineId)
|
{
|
Long requiredAreaId = getRequiredAreaId(areaId);
|
SysVisitArea area = visitAreaMapper.selectById(requiredAreaId);
|
if (area == null)
|
{
|
throw new ServiceException("所属区域不存在");
|
}
|
String requiredDeviceName = getRequiredText(deviceName, "设备名称不能为空");
|
String requiredBrand = getRequiredText(brand, "品牌不能为空");
|
String requiredDeviceId = getRequiredText(deviceId, "设备ID不能为空");
|
if (visitorMachineMapper.checkDeviceIdUnique(requiredDeviceId, excludeMachineId) != null)
|
{
|
throw new ServiceException("设备ID已存在");
|
}
|
|
SysVisitorMachine machine = new SysVisitorMachine();
|
machine.setAreaId(requiredAreaId);
|
machine.setDeviceName(requiredDeviceName);
|
machine.setBrand(requiredBrand);
|
machine.setDeviceId(requiredDeviceId);
|
machine.setRemark(StringUtils.trim(remark));
|
machine.setEnabled(enabled == null ? Boolean.TRUE : enabled);
|
return machine;
|
}
|
|
private Long getRequiredAreaId(Long areaId)
|
{
|
if (areaId == null || areaId <= 0)
|
{
|
throw new ServiceException("所属区域不能为空");
|
}
|
return areaId;
|
}
|
|
private Long getRequiredMachineId(Long machineId)
|
{
|
if (machineId == null || machineId <= 0)
|
{
|
throw new ServiceException("访客机主键不能为空");
|
}
|
return machineId;
|
}
|
|
private List<Long> getRequiredMachineIds(List<Long> machineIds)
|
{
|
if (CollectionUtils.isEmpty(machineIds))
|
{
|
throw new ServiceException("访客机主键集合不能为空");
|
}
|
for (Long machineId : machineIds)
|
{
|
getRequiredMachineId(machineId);
|
}
|
return machineIds;
|
}
|
|
private String getRequiredText(String value, String message)
|
{
|
String result = StringUtils.trim(value);
|
if (StringUtils.isEmpty(result))
|
{
|
throw new ServiceException(message);
|
}
|
return result;
|
}
|
}
|