123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- package com.bizmatics.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.bizmatics.common.core.exception.BusinessException;
- import com.bizmatics.common.core.util.BeanMapperUtils;
- import com.bizmatics.common.mvc.base.AbstractCrudService;
- import com.bizmatics.model.*;
- import com.bizmatics.model.system.SysUser;
- import com.bizmatics.persistence.mapper.AlarmPowerMapper;
- import com.bizmatics.persistence.mapper.DeviceMapper;
- import com.bizmatics.persistence.mapper.SiteMapper;
- import com.bizmatics.service.DeviceService;
- import com.bizmatics.service.SiteDynamicPropertiesService;
- import com.bizmatics.service.SiteService;
- import com.bizmatics.service.UserSiteService;
- import com.bizmatics.service.enums.DeviceStatusCode;
- import com.bizmatics.service.util.SecurityUtils;
- import com.bizmatics.service.vo.DeviceCountVO;
- import com.bizmatics.service.vo.SiteVO;
- import com.bizmatics.service.vo.SiteVOT;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author ya
- * @since 2021-07-07
- */
- @Slf4j
- @Service
- public class SiteServiceImpl extends AbstractCrudService<SiteMapper, Site> implements SiteService {
- @Autowired
- private DeviceMapper deviceMapper;
- @Autowired
- private DeviceService deviceService;
- @Autowired
- private AlarmPowerMapper alarmPowerMapper;
- @Autowired
- private UserSiteService userSiteService;
- @Autowired
- private SiteDynamicPropertiesService siteDynamicPropertiesService;
- @Override
- public DeviceCountVO selectCount() {
- Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
- 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()));
- deviceCountVO.setCount(userSiteService.count(userId));
- return deviceCountVO;
- }
- @Override
- public List<Site> list(String name) {
- Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
- return baseMapper.list(userId, name);
- }
- @Override
- public List<Map<String, Object>> siteList(String name) {
- return null;
- }
- @Override
- public List<SiteVO> siteAndStatusList(String name) {
- List<SiteVO> list = new ArrayList<>();
- Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
- List<Site> sites = baseMapper.list(userId, name);
- List<Device> deviceList = deviceMapper.list(userId, null, null, null, null, null);
- List<AlarmPower> alarmPowers = alarmPowerMapper.list(userId, null, null, null, null, null, 1);
- sites.forEach(site -> list.add(enhanceSite(deviceList, site, alarmPowers)));
- 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 -> {
- LambdaQueryWrapper<Device> deviceLambdaQueryWrapper = Wrappers.lambdaQuery();
- deviceLambdaQueryWrapper.eq(Device::getSiteId, site.getId());
- List<Device> list = deviceService.list(deviceLambdaQueryWrapper);
- Integer count = alarmPowerMapper.selectCount(null, site.getId(), null, null, null, null, 1);
- SiteVO siteVO = enhanceSite(list, site, null);
- siteVO.setAlarmPowerCount(count);
- return siteVO;
- })
- .orElseThrow(() -> new BusinessException("站点信息不存在"));
- }
- public SiteVO enhanceSite(List<Device> list, Site site, List<AlarmPower> alarmPowers) {
- SiteVO siteVo = BeanMapperUtils.map(site, SiteVO.class);
- siteVo.setDeviceCount(list.size());
- long deviceCount = list.stream()
- .filter(device -> device.getSiteId().equals(site.getId()))
- .filter(device -> DeviceStatusCode.DEVICE.getValue().equals(device.getDeviceStatus()))
- .count();
- long faultCount = list.stream()
- .filter(device -> device.getSiteId().equals(site.getId()))
- .filter(device -> DeviceStatusCode.FAULT.getValue().equals(device.getDeviceStatus()))
- .count();
- long offCount = list.stream()
- .filter(device -> device.getSiteId().equals(site.getId()))
- .filter(device -> DeviceStatusCode.OFFLINE.getValue().equals(device.getDeviceStatus()))
- .count();
- if (CollectionUtils.isNotEmpty(alarmPowers)) {
- siteVo.setAlarmPowerCount((int) alarmPowers.stream().filter(alarmPower -> alarmPower.getSiteId().equals(site.getId())).count());
- } else {
- siteVo.setAlarmPowerCount(0);
- }
- if (deviceCount > 0) {
- siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe());
- } else if (offCount > 0) {
- siteVo.setStatus(DeviceStatusCode.OFFLINE.getDescribe());
- } else if (faultCount > 0) {
- siteVo.setStatus(DeviceStatusCode.FAULT.getDescribe());
- } else {
- siteVo.setStatus(DeviceStatusCode.NORMAL.getDescribe());
- }
- List<String> deviceTypes = list.stream()
- .filter(device -> device.getSiteId().equals(site.getId()))
- .map(Device::getDeviceType).collect(Collectors.toList());
- siteVo.setDeviceType(deviceTypes);
- return siteVo;
- }
- @Override
- public void siteAdd(SiteVOT siteVOT) {
- SysUser user = SecurityUtils.getLoginUser().getUser();
- Site site1 = siteVOT.getSite();
- site1.setCreateTime(new Date());
- site1.setCreator(user.getUserName());
- site1.setCompanyCode(11111);
- site1.setEnable(1);
- this.save(site1);
- int ID = site1.getId();
- SiteDynamicProperties siteDynamicProperties = siteVOT.getSiteDynamicProperties();
- siteDynamicProperties.setSiteId(ID);
- siteDynamicProperties.setCreator(user.getUserName());
- siteDynamicProperties.setCreateTime(LocalDateTime.now());
- siteDynamicPropertiesService.siteDynamicPropertiesAdd(siteDynamicProperties);
- userSiteService.UserSiteAdd(ID);
- }
- @Override
- public List<TemplateData> getSite(String id) {
- List<TemplateData> TemplateDataList = null;
- TemplateDataList = baseMapper.templateQuery(Integer.parseInt(id));
- // TemplateData TemplateDataListOne = (TemplateData) TemplateDataList.get(0);
- return TemplateDataList;
- }
- @Override
- public void siteUpdate(SiteVOT siteVOT) {
- this.updateById(siteVOT.getSite());
- siteDynamicPropertiesService.updateById(siteVOT.getSiteDynamicProperties());
- }
- @Override
- public void sitedel(String id) {
- List<Site> SiteList = null;
- SiteList = baseMapper.list1(Integer.parseInt(id));
- Site SiteList1 = (Site) SiteList.get(0);
- SiteList1.setId(Integer.parseInt(id));
- SiteList1.setEnable(0);
- this.updateById(SiteList1);
- }
- @Override
- public List<Map<String, Object>> sitelist(String name) {
- SysUser user = SecurityUtils.getLoginUser().getUser();
- Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue();
- List<Map<String, Object>> list = new ArrayList<>();
- List<SiteList> site_list = null;
- List<GroupingList> grouping_list = null;
- List<SiteList> site_grouping_list = null;
- grouping_list = baseMapper.GroupingList(name,user.getUserName());
- site_list = baseMapper.Sitelist(userId, name);
- site_grouping_list = baseMapper.SiteGroupinglist(userId, name);
- List<Map<String, Object>> list1 = new ArrayList<>();
- if (grouping_list.size() > 0) {
- for (int i = 0; i < grouping_list.size(); i++) {
- GroupingList grouping_list_one = (GroupingList) grouping_list.get(i);
- Map<String, Object> map1 = new HashMap<>();
- List<Map<String, Object>> list2 = new ArrayList<>();
- map1.put("id", grouping_list_one.getId());
- map1.put("grouping_id", grouping_list_one.getId());
- map1.put("grouping_name", grouping_list_one.getGroupingName());
- if (site_list.size() > 0) {
- for (int j = 0; j < site_list.size(); j++) {
- SiteList site_list_one = (SiteList) site_list.get(j);
- Map<String, Object> map2 = new HashMap<>();
- if (grouping_list_one.getId().equals(site_list_one.getGroupingId())) {
- map2.put("site_id", site_list_one.getId());
- map2.put("site_name", site_list_one.getSiteName());
- // map2.put("grouping_id",site_list_one.getGroupingId());
- list2.add(map2);
- }
- }
- map1.put("site_list", list2);
- }else {
- map1.put("site_list", list2);
- }
- list1.add(map1);
- }
- }
- if (site_grouping_list.size() > 0) {
- List<Map<String, Object>> list3 = new ArrayList<>();
- for (int i = 0; i < site_grouping_list.size(); i++) {
- SiteList site_grouping_list_one = (SiteList) site_grouping_list.get(i);
- Map<String, Object> map3 = new HashMap<>();
- map3.put("id", site_grouping_list_one.getId());
- map3.put("grouping_id", 0);
- map3.put("grouping_name", site_grouping_list_one.getSiteName());
- map3.put("site_list", list3);
- list1.add(map3);
- }
- }
- return list1;
- }
- }
|