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 lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDate; 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 = 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 list(String name) { Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue(); return baseMapper.list(userId, name); } @Override public List> siteList(String name) { return null; } @Override public List siteAndStatusList(String name) { List list = new ArrayList<>(); Integer userId = SecurityUtils.getLoginUser().getUser().getUserId().intValue(); List sites = baseMapper.list(userId, 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; } @Override 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){ SysUser user = SecurityUtils.getLoginUser().getUser(); 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(user.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(user.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); } } @Override public List getSite(String id){ List TemplateDataList = null; TemplateDataList = baseMapper.templateQuery(Integer.parseInt(id)); // TemplateData TemplateDataListOne = (TemplateData) TemplateDataList.get(0); return TemplateDataList; } @Override public void siteUpdate(String id,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){ // Site site=new Site(); List SiteList = null; SiteList = baseMapper.list1(Integer.parseInt(id)); Site SiteList1 = (Site) SiteList.get(0); SiteList1.setId(Integer.parseInt(id)); if (!site_name.equals("")&&!site_name.equals("null")){ SiteList1.setSiteName(site_name); } if (!site_address.equals("")&&!site_address.equals("null")){ SiteList1.setSiteAddress(site_address); } if (!user_name.equals("")&&!user_name.equals("null")){ SiteList1.setUserName(user_name); } if (!phone.equals("")&&!phone.equals("null")){ SiteList1.setPhone(phone); } if (!station_area_id.equals("")&&!station_area_id.equals("0")&&!station_area_id.equals("null")){ SiteList1.setStationAreaId(Integer.parseInt(station_area_id)); } if (!route_id.equals("")&&!route_id.equals("0")&&!route_id.equals("null")){ SiteList1.setRouteId(Integer.parseInt(route_id)); } if (!installed_capacity.equals("")&&!installed_capacity.equals("null")){ SiteList1.setInstalledCapacity(installed_capacity); } if (!rheological_change.equals("")&&!rheological_change.equals("null")){ SiteList1.setRheologicalChange(rheological_change); } if (!longitude.equals("")&&!longitude.equals("null")){ SiteList1.setLongitude(longitude); } if (!latitude.equals("")&&!latitude.equals("null")){ SiteList1.setLatitude(latitude); } if (!region.equals("")&&!region.equals("0")&&!region.equals("null")){ SiteList1.setRegion(Integer.parseInt(region)); } // if (!grouping_id.equals("")&&!grouping_id.equals("0")){ // site.setGroupingId(Integer.parseInt(grouping_id)); // } List SiteDynamicPropertiesList = null; SiteDynamicPropertiesList = baseMapper.SiteDynamicPropertieslist(Integer.parseInt(id)); SiteDynamicProperties SiteDynamicPropertiesList1 = (SiteDynamicProperties) SiteDynamicPropertiesList.get(0); if (!fault_status.equals("")&&!fault_status.equals("null")){ SiteDynamicPropertiesList1.setFaultStatus(fault_status); } if (!real_time_load.equals("")&&!real_time_load.equals("null")){ SiteDynamicPropertiesList1.setRealTimeLoad(real_time_load); } if (!total_electricity.equals("")&&!total_electricity.equals("null")){ SiteDynamicPropertiesList1.setTotalElectricity(total_electricity); } if (!power_factor.equals("")&&!power_factor.equals("null")){ SiteDynamicPropertiesList1.setPowerFactor(power_factor); } if (!site_type.equals("")&&!site_type.equals("0")&&!site_type.equals("null")){ SiteDynamicPropertiesList1.setSiteType(Integer.parseInt(site_type)); } if (!user_company.equals("")&&!user_company.equals("null")){ SiteDynamicPropertiesList1.setUserCompany(user_company); } if (!operation_time.equals("")&&!operation_time.equals("null")){ SiteDynamicPropertiesList1.setOperationTime(LocalDate.parse(operation_time)); } if (!service_deadline.equals("")&&!service_deadline.equals("null")){ SiteDynamicPropertiesList1.setServiceDeadline(LocalDate.parse(service_deadline)); } if (!power_supply_type.equals("")&&!power_supply_type.equals("0")&&!power_supply_type.equals("null")){ SiteDynamicPropertiesList1.setPowerSupplyType(Integer.parseInt(power_supply_type)); } if (!voltage_level.equals("")&&!voltage_level.equals("null")){ SiteDynamicPropertiesList1.setVoltageLevel(voltage_level); } if (!Demolition_standard_coal.equals("")&&!Demolition_standard_coal.equals("0")&&!Demolition_standard_coal.equals("null")){ SiteDynamicPropertiesList1.setDemolitionStandardCoal(Integer.parseInt(Demolition_standard_coal)); } if (!Demolition_standard_coal1.equals("")&&!Demolition_standard_coal1.equals("null")){ SiteDynamicPropertiesList1.setDemolitionStandardCoal1(Demolition_standard_coal1); } if (!sitePictureOne.equals("")&&!sitePictureOne.equals("null")){ SiteDynamicPropertiesList1.setSitePictureOne(sitePictureOne); } if (!sitePictureTwo.equals("")&&!sitePictureTwo.equals("null")){ SiteDynamicPropertiesList1.setSitePictureTwo(sitePictureTwo); } if (!sitePictureThree.equals("")&&!sitePictureThree.equals("null")){ SiteDynamicPropertiesList1.setSitePictureThree(sitePictureThree); } this.updateById(SiteList1); siteDynamicPropertiesService.SiteDynamicPropertiesUpdate(SiteDynamicPropertiesList1); } @Override public void sitedel(String id){ List 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); } }