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.SiteDynamicPropertiesService; 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.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author ya * @since 2021-07-07 */ @Slf4j @Service public class SiteServiceImpl extends AbstractCrudService 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 = 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 list(String name) { return baseMapper.list(SessionLocal.getUserId(), name); } @Override public List> Sitelist(String name) { List> list = new ArrayList<>(); List site_list = null; List grouping_list = null; List 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> 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 map1 = new HashMap<>(); List> 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 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> 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 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 siteAndStatusList(String name) { List list = new ArrayList<>(); // Integer userId = UserUtil.getUserId(); Integer userId = SessionLocal.getUserId(); List sites = baseMapper.list(SessionLocal.getUserId(), name); List deviceList = deviceMapper.list(userId, null, null, null, null, null); List 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 deviceLambdaQueryWrapper = Wrappers.lambdaQuery(); deviceLambdaQueryWrapper.eq(Device::getSiteId, site.getId()); List 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 list, Site site, List 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 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 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,String fault_status, String real_time_load, String total_electricity, String power_factor, String site_type, String user_company, String operation_time, String service_deadline, String power_supply_type, String voltage_level, String Demolition_standard_coal, String Demolition_standard_coal1,String sitePictureOne, String sitePictureTwo,String sitePictureThree,String templateId){ if (templateId.equals("")){ Site site=new Site(); site.setSiteName(site_name); site.setSiteAddress(site_address); site.setCompanyCode(11111); 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(); siteDynamicPropertiesService.SiteDynamicPropertiesAdd(fault_status,real_time_load,total_electricity,power_factor, ID,site_type, user_company, operation_time, service_deadline, power_supply_type, voltage_level, Demolition_standard_coal, Demolition_standard_coal1,sitePictureOne,sitePictureTwo,sitePictureThree); userSiteService.UserSiteAdd(ID); }else { List TemplateDataList = null; TemplateDataList = baseMapper.templateQuery(Integer.parseInt(templateId)); TemplateData TemplateDataListOne = (TemplateData) TemplateDataList.get(0); Site site=new Site(); site.setSiteName(site_name); site.setSiteAddress(TemplateDataListOne.getSiteAddress()); site.setCompanyCode(11111); site.setUserName(TemplateDataListOne.getUserName()); site.setPhone(TemplateDataListOne.getPhone()); site.setStationAreaId(TemplateDataListOne.getStationAreaId()); site.setRouteId(TemplateDataListOne.getRouteId()); site.setInstalledCapacity(TemplateDataListOne.getInstalledCapacity()); site.setRheologicalChange(TemplateDataListOne.getRheologicalChange()); site.setLongitude(TemplateDataListOne.getLongitude()); site.setLatitude(TemplateDataListOne.getLatitude()); site.setRegion(TemplateDataListOne.getRegion()); site.setCreateTime(new Date()); site.setCreator(SessionLocal.getUser().getUserName()); site.setEnable(1); // site.setGroupingId(TemplateDataListOne.getGroupingId()); this.save(site); int ID = site.getId(); DateTimeFormatter fmt12 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); siteDynamicPropertiesService.SiteDynamicPropertiesAdd(TemplateDataListOne.getFaultStatus(),TemplateDataListOne.getRealTimeLoad() ,TemplateDataListOne.getTotalElectricity(),TemplateDataListOne.getPowerFactor(), ID,Integer.toString(TemplateDataListOne.getSiteType()), TemplateDataListOne.getUserCompany(), TemplateDataListOne.getOperationTime().format(fmt12), TemplateDataListOne.getServiceDeadline().format(fmt12), Integer.toString(TemplateDataListOne.getPowerSupplyType()),TemplateDataListOne.getVoltageLevel(), Integer.toString(TemplateDataListOne.getDemolitionStandardCoal()),TemplateDataListOne.getDemolitionStandardCoal1() ,TemplateDataListOne.getSitePictureOne(),TemplateDataListOne.getSitePictureTwo(),TemplateDataListOne.getSitePictureThree()); userSiteService.UserSiteAdd(ID); } } public List GetSite(String id){ List TemplateDataList = null; TemplateDataList = baseMapper.templateQuery(Integer.parseInt(id)); // TemplateData TemplateDataListOne = (TemplateData) TemplateDataList.get(0); return TemplateDataList; } }