package com.bizmatics.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.bizmatics.common.core.bean.CommonPage;
import com.bizmatics.common.mvc.base.AbstractCrudService;
import com.bizmatics.model.Device;
import com.bizmatics.model.DeviceAttribute;
import com.bizmatics.model.PlatformArea;
import com.bizmatics.model.Site;
import com.bizmatics.model.vo.DeviceVo;
import com.bizmatics.model.vo.PlatformAreaVo;
import com.bizmatics.model.vo.ProcessingTimeVo;
import com.bizmatics.model.vo.SiteDeviceList;
import com.bizmatics.persistence.mapper.PlatformAreaMapper;
import com.bizmatics.service.PlatformAreaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author ya
* @since 2021-09-29
*/
@Service
public class PlatformAreaServiceImpl extends AbstractCrudService implements PlatformAreaService {
@Autowired
private SiteServiceImpl siteService;
@Autowired
private DeviceServiceImpl deviceService;
@Autowired
private DeviceStatusServiceImpl deviceStatusService;
@Autowired
private DeviceAttributeServiceImpl deviceAttributeService;
@Override
public void platformAreaAdd(PlatformArea platformArea){
platformArea.setEnable(1);
this.save(platformArea);
}
@Override
public void platformAreaUpdate(PlatformArea platformArea){
this.updateById(platformArea);
}
@Override
public List platformAreaList(Integer id){
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(PlatformArea::getEnable, 1).eq(PlatformArea::getId, id);
List platformAreaList = this.list(queryWrapper);
LambdaQueryWrapper siteQueryWrapper = Wrappers.lambdaQuery();
siteQueryWrapper.eq(Site::getStationAreaId,platformAreaList.get(0).getId()).eq(Site::getEnable, 1);
List siteList = siteService.list(siteQueryWrapper);
int siteCount = siteList.size();
List siteListOne = new ArrayList<>();
List deviceList = new ArrayList<>();
if (siteList.size()>0){
for (int i = 0; i < siteList.size(); i++) {
siteListOne.add(siteList.get(i).getId());
}
LambdaQueryWrapper deviceQueryWrapper = Wrappers.lambdaQuery();
deviceQueryWrapper.in(Device::getSiteId,siteListOne).eq(Device::getEnable, 1);
deviceList = deviceService.list(deviceQueryWrapper);
}
Integer deviceCount = deviceList.size();
PlatformAreaVo platformAreaVo = new PlatformAreaVo();
platformAreaVo.setPlatformAreaName(platformAreaList.get(0).getPlatformAreaName());
platformAreaVo.setPlatformAreaAddress(platformAreaList.get(0).getPlatformAreaAddress());
platformAreaVo.setPlatformAreaCode(platformAreaList.get(0).getPlatformAreaCode());
platformAreaVo.setSiteCount(siteCount);
platformAreaVo.setDeviceCount(deviceCount);
platformAreaVo.setSite(siteList);
platformAreaVo.setId(platformAreaList.get(0).getId());
platformAreaVo.setEnable(platformAreaList.get(0).getEnable());
List platformAreaVoList = new ArrayList<>();
platformAreaVoList.add(platformAreaVo);
return platformAreaVoList;
}
@Override
public CommonPage platformAreaListOne(String platformAreaName,Integer current,Integer size){
List platformAreaVoSiteOne = baseMapper.siteCount(platformAreaName,null,0);
int startCurrent = (current - 1) * size;
List platformAreaVoSite = baseMapper.siteCount(platformAreaName,startCurrent,size);
List platformAreaVoDevice =baseMapper.deviceCount(platformAreaName);
List platformAreaList = new ArrayList<>();
for (int i = 0; i < platformAreaVoSite.size(); i++) {
PlatformAreaVo platformArea = new PlatformAreaVo();
platformArea.setPlatformAreaName(platformAreaVoSite.get(i).getPlatformAreaName());
platformArea.setPlatformAreaAddress(platformAreaVoSite.get(i).getPlatformAreaAddress());
platformArea.setPlatformAreaCode(platformAreaVoSite.get(i).getPlatformAreaCode());
platformArea.setId(platformAreaVoSite.get(i).getId());
platformArea.setEnable(platformAreaVoSite.get(i).getEnable());
platformArea.setSiteCount(platformAreaVoSite.get(i).getSiteCount());
if (platformAreaVoDevice.size()>0){
Integer deviceCount = 0;
for (int j = 0; j < platformAreaVoDevice.size(); j++) {
if (platformAreaVoSite.get(i).getId()==platformAreaVoDevice.get(j).getId()){
deviceCount = deviceCount + platformAreaVoDevice.get(j).getDeviceCount();
}
}
platformArea.setDeviceCount(deviceCount);
}else {
platformArea.setDeviceCount(0);
}
platformAreaList.add(platformArea);
}
return new CommonPage<>(platformAreaList, platformAreaVoSiteOne.size(), size, current);
}
@Override
public void platformAreaDel(int id){
PlatformArea platformArea = new PlatformArea();
platformArea.setId(id);
platformArea.setEnable(0);
this.updateById(platformArea);
}
@Override
public List siteDeviceList(int stationAreaId){
List siteDeviceList = baseMapper.deviceList(stationAreaId);
return siteDeviceList;
}
@Override
public void siteDeviceUpdate (DeviceVo deviceVo){
deviceService.updateById(deviceVo.getDevice());
deviceAttributeService.updateById(deviceVo.getDeviceAttribute());
}
@Override
public void siteDeviceDel(int deviceId,int deviceAttributeId){
Device device = new Device();
DeviceAttribute deviceAttribute = new DeviceAttribute();
device.setId(deviceId);
device.setEnable(0);
deviceAttribute.setId(deviceAttributeId);
deviceAttribute.setStatus(0);
deviceService.updateById(device);
deviceAttributeService.updateById(deviceAttribute);
}
}