From e97c393e23f4c015a44b5fef5fd26ae288bc6c0f Mon Sep 17 00:00:00 2001 From: lizijie <lzjiiie@163.com> Date: Wed, 10 Jul 2019 11:31:35 +0800 Subject: [PATCH] 天气预报 --- src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 262 +++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 209 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java index 33ff1b4..c273e14 100644 --- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java @@ -1,19 +1,25 @@ package com.moral.service.impl; -import java.util.*; -import java.util.stream.Collectors; - -import javax.annotation.Resource; - 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.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; @@ -21,14 +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.mapper.DeviceMapper; -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 { @@ -55,8 +64,16 @@ @Resource private AccountService accountService; private Class ENTITY_CLASS = Device.class; + @Resource + OrganizationMapper orgMapper; + @Resource + DeviceVersionMapper deviceVersionMapper; @Resource RedisUtils redisUtils; + @Resource + OrganizationMapper organizationMapper; + @Resource + DictionaryDataMapper dictionaryDataMapper; @Override public Map<String, Object> getDeviceStatesByAccount(Map<String, Object> parameters) { ValidateUtil.notNull(parameters.get("accountId"), "param.is.null"); @@ -130,9 +147,6 @@ Device device = getDeviceFromRedis(mac); if(device==null) { device = deviceMapper.selectWithOrgIdsByMac(mac); - if(device!=null){ - setDeviceToRedis(mac,device); - } } return device; }else { @@ -157,21 +171,22 @@ private String getDeviceKey(String mac) { return keysConnect(DEVICE,mac); } - /* - * ������������������redis��������� ������ - */ - private void setDeviceToRedis(String mac,Device device){ - String key = getDeviceKey(mac); - Device simpleDevice = new Device(); - simpleDevice.setId(device.getId());// id - simpleDevice.setName(device.getName());// name - simpleDevice.setAddress(device.getAddress());// address - simpleDevice.setDeviceVersionId(device.getDeviceVersionId());// version - simpleDevice.setMac(device.getMac()); // mac - simpleDevice.setMonitorPointId(device.getMonitorPointId());// ���������id - simpleDevice.setOrganizationIds(device.getOrganizationIds());// ������������ - redisUtils.set(key,simpleDevice); - } +// /* +// * ������������������redis��������� ������ +// */ +// private void setDeviceToRedis(String mac,Device device){ +// String key = getDeviceKey(mac); +// Device simpleDevice = new Device(); +// simpleDevice.setId(device.getId());// id +// simpleDevice.setName(device.getName());// name +// simpleDevice.setAddress(device.getAddress());// address +// simpleDevice.setDeviceVersionId(device.getDeviceVersionId());// version +// simpleDevice.setMac(device.getMac()); // mac +// simpleDevice.setMonitorPointId(device.getMonitorPointId());// ���������id +// simpleDevice.setOrganizationIds(device.getOrganizationIds());// ������������ +// simpleDevice.setDeviceVersion(device.getDeviceVersion()); +// redisUtils.set(key,simpleDevice); +// } private Device getDeviceFromRedis(String mac) { String key = getDeviceKey(mac); return redisUtils.get(key,Device.class); @@ -179,17 +194,23 @@ /** * - * @param map + * @param params * map��� ������ ������id���4������������ * @return ������������������������ */ @Override - public List<Device> query(Map<String, Object> map) { - List <Device> list = deviceMapper.selectByMap(map); - loadDeviceState(list); - return list; + public List<Device> query(Map<String, Object> params) { + Object orgIdObj = params.get("orgId"); + List<Device> deviceList = null; + if(orgIdObj != null) { + Integer orgId = Integer.parseInt(orgIdObj.toString()); + List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId); + params.put("orgIds", orgIds); + deviceList = deviceMapper.selectByMap(params); + loadDeviceState(deviceList); + } + return deviceList; } - /** * ������������id��������������� ������������������ * @param orgId @@ -200,6 +221,7 @@ */ @Override public PageResult query(Integer orgId, String deviceName, Integer pageSize, Integer pageNo) { + List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId); if(!ObjectUtils.isEmpty(pageSize)&&!ObjectUtils.isEmpty(pageNo)){ PageHelper.startPage(pageNo,pageSize); } @@ -221,7 +243,7 @@ state = "4"; deviceName = null;break; } - List<Device> list = deviceMapper.selectByOrgIdAndDevName(orgId,state,deviceName); + List<Device> list = deviceMapper.selectByOrgIdAndDevName(orgId,orgIds,state,deviceName); //���redis������������ loadDeviceState(list); if(list instanceof Page){ @@ -240,10 +262,11 @@ */ @Override public PageResult query(Integer orgId, Integer mpId, Integer pageSize, Integer pageNo) { + List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId); if(!ObjectUtils.isEmpty(pageSize)&&!ObjectUtils.isEmpty(pageNo)){ PageHelper.startPage(pageNo,pageSize); } - List<Device> list = deviceMapper.selectByOrgIdAndMpId(orgId,mpId); + List<Device> list = deviceMapper.selectByOrgIdAndMpId(orgId,orgIds,mpId); //���redis������������ loadDeviceState(list); if(list instanceof Page){ @@ -294,20 +317,13 @@ /** * ������������������������������ - * ������ redis ��������������� + * ������ redis ���������������,���������������������������������������������task������ * @param mac */ private void refreshDeviceInRedis(String mac){ if(!StringUtils.isBlank(mac)){ - Device devQuery = new Device(); - devQuery.setMac(mac); - Device device = deviceMapper.selectOne(devQuery); - if(device.getMonitorPointId()!=null){ - List<Integer> orgIds = monitorPointMapper.selectOrganizationIds(device.getMonitorPointId()); - device.setOrganizationIds(orgIds); - } - String key = "device_"+mac; - redisUtils.set(key,device); + String key = getDeviceKey(mac); + redisUtils.remove(key); }else { log.warn("param mac is null in method [refreshDeviceInRedis]"); @@ -335,14 +351,14 @@ } } @Override - public PageBean queryByPageBean(PageBean pageBean) { + public PageBean queryByPageBean(PageBean pageBean) { Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); - addDeletesToExample(example); +// addDeletesToExample(example); if(pageBean.getPageSize()>0){ PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize()); } - List<Device> organizationList = deviceMapper.selectWithRelationData(example); - return new PageBean(organizationList); + List<Device> deviceList = deviceMapper.selectWithRelationData(example); + return new PageBean(deviceList); } @Override @@ -413,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; } /** @@ -465,4 +487,138 @@ return deviceMapper.getDevicesByProfession(parameters); } + @Override + public List<Device> getDevicesByOrganizationId(Map<String, Object> parameters) { + ValidateUtil.notNull(parameters.get("organizationId"), "param.is.null"); + return deviceMapper.getDevicesByOrganizationId(parameters); + } + @Override + public Map<String,Long> queryDeviceStateSummary(@NotNull Integer orgId){ + Map<String,Object> params = new HashMap<>(); + if(!dictionaryDataMapper.isSupperOrgId(orgId)){ + List<Integer> orgIds = organizationMapper.selectLowerOrgIds(orgId); + params.put("orgIds",orgIds); + } + List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(params); + Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L; + for (Map<String, Object> map : list) { + Long count = (Long) map.get("count"); + all += count; + switch (Integer.valueOf((String) map.get("state"))) { + case 0: + normal = count; + break; + case 4: + stop = count; + break; + default: + abnormal += count; + } + } + Map<String,Long> result = new HashMap<>(); + result.put("all", all); + result.put("normal", normal); + result.put("abnormal", abnormal); + 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; + } } -- Gitblit v1.8.0