ZhuDongming
2019-08-08 2d4d397ce9ea8e53d4a63b6463c02a7586fb27ea
src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -1,21 +1,25 @@
package com.moral.service.impl;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import com.alibaba.fastjson.TypeReference;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.moral.common.bean.Constants;
import com.moral.common.bean.PageBean;
import com.moral.common.bean.PageResult;
import com.moral.common.exception.BusinessException;
import com.moral.common.util.ExampleUtil;
import com.moral.common.util.RedisUtils;
import com.moral.entity.DeviceVersion;
import com.moral.mapper.*;
import com.moral.common.util.ValidateUtil;
import com.moral.entity.Device;
import com.moral.entity.DeviceProperty;
import com.moral.mapper.DeviceMapper;
import com.moral.mapper.DevicePropertyMapper;
import com.moral.mapper.DeviceVersionMapper;
import com.moral.mapper.DictionaryDataMapper;
import com.moral.mapper.MonitorPointMapper;
import com.moral.mapper.OrganizationMapper;
import com.moral.service.AccountService;
import com.moral.service.DeviceService;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
@@ -23,13 +27,17 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import com.github.pagehelper.PageHelper;
import com.moral.common.util.ValidateUtil;
import com.moral.entity.Device;
import com.moral.service.AccountService;
import com.moral.service.DeviceService;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class DeviceServiceImpl implements DeviceService {
@@ -314,8 +322,7 @@
    */
   private void refreshDeviceInRedis(String mac){
        if(!StringUtils.isBlank(mac)){
            Device device = deviceMapper.selectWithOrgIdsByMac(mac);
            String key = getDeviceKey(device.getMac());
            String key = getDeviceKey(mac);
            redisUtils.remove(key);
         }else
       {
@@ -422,12 +429,18 @@
      }
      return  deviceMapper.countByTimes(start, end, format);
   }
   @Override
   public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) {
      Device device = new Device();
      device.setMonitorPointId(monitorPointId);
      device.setIsDelete(Constants.IS_DELETE_FALSE);
      return deviceMapper.select(device);
      List<Device> devices = deviceMapper.select(device);
      for (Device device2 : devices) {
         DeviceProperty deviceProperty = devicePropertyMapper.selectByPrimaryKey(device2.getId());
         device2.setDeviceProperty(deviceProperty);
      }
      return devices;
   }
   /**
@@ -509,4 +522,103 @@
      result.put("stop", stop);
      return result;
   }
   @Resource
   private DevicePropertyMapper devicePropertyMapper;
   @Override
   @Transactional
   public void saveOrUpdate(Device device, DeviceProperty deviceProperty) {
      device.setMac(device.getMac().toLowerCase());
      if (ObjectUtils.isEmpty(device.getId())) {
         device.setState(Constants.DEVICE_STATE_OFFLINE);
         device.setIsDelete(Constants.IS_DELETE_FALSE);
         deviceMapper.insertSelective(device);
         deviceProperty.setId(device.getId());
      } else {
         deviceMapper.updateByPrimaryKeySelective(device);
         devicePropertyMapper.deleteByPrimaryKey(deviceProperty);
      }
      devicePropertyMapper.insertSelective(deviceProperty);
      refreshDeviceInRedis(device.getMac());
   }
   @Override
   public PageBean getDeviceList(PageBean pageBean) {
      Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
      if(pageBean.getPageSize()>0){
         PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
      }
      List<Device> deviceList = deviceMapper.getDeviceList(example);
      return new PageBean(deviceList);
   }
   @Override
   public void offLinToMaintenance(Map<String, Object> parameters) {
      ValidateUtil.notNull(parameters.get("id"), "param.is.null");
      ValidateUtil.notNull(parameters.get("old_state"), "param.is.null");
      ValidateUtil.notNull(parameters.get("new_state"), "param.is.null");
      int count = 0;
      if (Constants.DEVICE_STATE_OFFLINE.equals(parameters.get("old_state")) && Constants.DEVICE_STATE_MAINTENANCE.equals(parameters.get("new_state"))) {
         Device device = new Device();
         Example example = new Example(ENTITY_CLASS);
         example.and().andEqualTo("id", new Integer(parameters.get("id").toString())).andEqualTo("state", Constants.DEVICE_STATE_OFFLINE);
         device.setState(Constants.DEVICE_STATE_MAINTENANCE);
         count = deviceMapper.updateByExampleSelective(device, example);
      }
      if (count == 0) {
         throw new BusinessException("参数不合法!");
      }
   }
   @Override
   public void saveOrUpdate4Mobile(Device device, DeviceProperty deviceProperty) {
      device.setMac(device.getMac().toLowerCase());
      Device selectDevice = new Device();
      selectDevice.setMac(device.getMac());
      selectDevice = deviceMapper.selectOne(selectDevice);
      if (ObjectUtils.isEmpty(selectDevice)) {
         device.setState(Constants.DEVICE_STATE_OFFLINE);
         device.setIsDelete(Constants.IS_DELETE_FALSE);
         deviceMapper.insertSelective(device);
         deviceProperty.setId(device.getId());
         devicePropertyMapper.insertSelective(deviceProperty);
      } else {
         device.setId(selectDevice.getId());
         deviceMapper.updateByPrimaryKeySelective(device);
         deviceProperty.setId(selectDevice.getId());
         devicePropertyMapper.selectByPrimaryKey(selectDevice.getId());
         if (ObjectUtils.isEmpty(devicePropertyMapper.selectByPrimaryKey(deviceProperty.getId()))) {
            devicePropertyMapper.insertSelective(deviceProperty);
         } else {
            devicePropertyMapper.updateByPrimaryKeySelective(deviceProperty);
         }
      }
      refreshDeviceInRedis(device.getMac());
   }
   @Override
   public String getLimitDataByDevice(Map<String, Object> parameters) {
      // TODO Auto-generated method stub
      return deviceMapper.getLimitDataByDevice(parameters);
   }
   //按经度升序排序,通过mac地址找到相邻经度的第二个点位置
   @Override
   public Device getDeviceByLongitudeAsc(String mac) {
      Example example = new Example(Device.class);
      example.setOrderByClause("longitude ASC");
      List<Device> deviceList=deviceMapper.selectByExample(example);
      for(int i=0;i<deviceList.size();i++){
         if(mac.equals(deviceList.get(i).getMac())){
            Device deviceSecond=deviceList.get(i+1);
            return deviceSecond;
         }
      }
      return null;
   }
}