123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- 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.persistence.mapper.AlarmPowerMapper;
- 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.service.UserSiteService;
- 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 lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- 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;
- @Override
- public DeviceCountVO selectCount() {
- // Integer userId = UserUtil.getUserId();
- 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()));
- deviceCountVO.setCount(userSiteService.count(userId));
- return deviceCountVO;
- }
- @Override
- public List<Site> list(String name) {
- return baseMapper.list(SessionLocal.getUserId(), name);
- }
- @Override
- public List<Map<String, Object>> Sitelist(String name) {
- 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,SessionLocal.getUser().getUserName());
- site_list = baseMapper.Sitelist(SessionLocal.getUserId(), name);
- site_grouping_list = baseMapper.SiteGroupinglist(SessionLocal.getUserId(), 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;
- }
- @Override
- public List<SiteVO> siteAndStatusList(String name) {
- List<SiteVO> list = new ArrayList<>();
- // Integer userId = UserUtil.getUserId();
- Integer userId = SessionLocal.getUserId();
- List<Site> sites = baseMapper.list(SessionLocal.getUserId(), 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;
- }
- public void SiteAdd(String site_name,String site_address,String company_code,String user_name,String phone,
- String station_area_id,String route_id,String installed_capacity,String rheological_change,String longitude,
- String latitude,String region,String grouping_id){
- Site site=new Site();
- site.setSiteName(site_name);
- site.setSiteAddress(site_address);
- site.setCompanyCode(Integer.parseInt(company_code));
- site.setUserName(user_name);
- site.setPhone(phone);
- site.setStationAreaId(Integer.parseInt(station_area_id));
- site.setRouteId(Integer.parseInt(route_id));
- site.setInstalledCapacity(installed_capacity);
- site.setRheologicalChange(rheological_change);
- site.setLongitude(longitude);
- site.setLatitude(latitude);
- site.setRegion(Integer.parseInt(region));
- site.setCreateTime(new Date());
- site.setCreator(SessionLocal.getUser().getUserName());
- site.setEnable(1);
- site.setGroupingId(Integer.parseInt(grouping_id));
- this.save(site);
- int ID = site.getId();
- this.save(site);
- userSiteService.UserSiteAdd(ID);
- }
- public void SiteUpdate(String groupingName){
- }
- }
|