package com.bizmatics.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.bizmatics.common.core.exception.BusinessException; import com.bizmatics.common.core.util.BeanMapperUtils; import com.bizmatics.model.Site; import com.bizmatics.persistence.mapper.DeviceMapper; import com.bizmatics.persistence.mapper.SiteMapper; import com.bizmatics.service.DeviceService; import com.bizmatics.service.SiteService; import com.bizmatics.common.mvc.base.AbstractCrudService; import com.bizmatics.service.enums.DeviceStatusCode; import com.bizmatics.service.util.SessionLocal; import com.bizmatics.service.vo.DeviceCountVO; import com.bizmatics.service.vo.SiteVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** *

* 服务实现类 *

* * @author ya * @since 2021-07-07 */ @Service public class SiteServiceImpl extends AbstractCrudService implements SiteService { @Autowired private DeviceMapper deviceMapper; @Override public DeviceCountVO selectCount() { Integer userId = SessionLocal.getUserId(); DeviceCountVO deviceCountVO = new DeviceCountVO(); deviceCountVO.setNormalCount(baseMapper.selectCount(userId,null,DeviceStatusCode.NORMAL.getValue())); deviceCountVO.setOffLineCount(baseMapper.selectCount(userId,null,DeviceStatusCode.OFFLINE.getValue())); deviceCountVO.setDeviceCount(baseMapper.selectCount(userId,null,DeviceStatusCode.DEVICE.getValue())); deviceCountVO.setFaultCount(baseMapper.selectCount(userId,null,DeviceStatusCode.FAULT.getValue())); return deviceCountVO; } @Override public List list(String name) { List list = new ArrayList<>(); List sites = baseMapper.list(SessionLocal.getUserId()); Integer userId = SessionLocal.getUserId(); for (Site site:sites) { SiteVO siteVo = BeanMapperUtils.map(site, SiteVO.class); siteVo.setDeviceCount(deviceMapper.selectCount(userId,siteVo.getId(),null,null,null,null)); int deviceCount = baseMapper.selectCount(userId,siteVo.getId(),DeviceStatusCode.DEVICE.getValue()); int offLineCount = baseMapper.selectCount(userId,siteVo.getId(),DeviceStatusCode.OFFLINE.getValue()); int faultCount = baseMapper.selectCount(userId,siteVo.getId(),DeviceStatusCode.FAULT.getValue()); siteVo.setAlarmPowerCount(deviceCount); if (deviceCount > 0){ siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe()); }else if (offLineCount > 0){ siteVo.setStatus(DeviceStatusCode.OFFLINE.getDescribe()); }else if (faultCount > 0){ siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe()); }else { siteVo.setStatus(DeviceStatusCode.NORMAL.getDescribe()); } list.add(siteVo); } return list; } @Override public SiteVO getOne(Long siteId) { Site site = baseMapper.selectOne(Wrappers.lambdaQuery(Site.class).eq(Site::getId, siteId)); return Optional.ofNullable(site).map(st -> BeanMapperUtils.map(site,SiteVO.class)).orElseThrow(() -> new BusinessException("站点信息不存在")); } @Override public List getSiteList(Integer userId) { return baseMapper.list(SessionLocal.getUserId()); } }