From ca72da809fdf68f2d6833ed77ad92c9aadc0663d Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Tue, 22 May 2018 09:30:20 +0800 Subject: [PATCH] 地图 增加 监控点入口 --- src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 210 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 172 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java index f99bbcb..a3c9565 100644 --- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java @@ -10,12 +10,14 @@ 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.mapper.MonitorPointMapper; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; @@ -30,7 +32,22 @@ @Service public class DeviceServiceImpl implements DeviceService { - + Logger log = Logger.getLogger(DeviceServiceImpl.class); + //-----------------------redis key������-������--------------------------------- + private static String AlARM = "alarm";//������������������key������ + private static String ADJUST="adjust";//���������������key������ + private static String DEVICE = "device";//������������������key������ + private static String STATE = "state";//������������������key������ + private static String DATA = "data";//������������������key������ + //-----------------------redis key������-������--------------------------------- + private String keysConnect(String... keys) { + StringBuilder key = new StringBuilder(keys[0]); + for(int i=1;i<keys.length;i++) { + key.append("_"); + key.append(keys[i]); + } + return key.toString().toLowerCase(); + } @Resource private DeviceMapper deviceMapper; @Resource @@ -87,6 +104,8 @@ device.setId(queryDevice.getId()); deviceMapper.updateByPrimaryKeySelective(device); } + //������redis������������ + refreshDeviceInRedis(device.getMac()); } @Override @@ -94,25 +113,75 @@ ValidateUtil.notNull(uid, "param.is.null"); Device device = new Device(); device.setOperateUserId(uid); - PageHelper.startPage(pageIndex, pageSize); + PageHelper.startPage(pageIndex, pageSize,false); List<Device> devices = deviceMapper.select(device); return devices; } + /** + * + * @param mac + * @param fromCache + * @return ������������������ + */ + @Override + public Device getDeviceByMac (String mac ,boolean fromCache){ + if(fromCache){ + Device device = getDeviceFromRedis(mac); + if(device==null) { + device = deviceMapper.selectWithOrgIdsByMac(mac); + if(device!=null){ + setDeviceToRedis(mac,device); + } + } + return device; + }else { + return deviceMapper.selectWithOrgIdsByMac(mac); + } + + } + + /** + * ��������������������� + * @param mac + * @return + */ @Override public Device getDeviceByMac(String mac) { - ValidateUtil.notEmpty(mac, "param.is.null"); - Device device = new Device(); - device.setMac(mac); - device = deviceMapper.selectOne(device); - return device; + + return getDeviceByMac(mac,true); + } + /* + * ���������������������redis������key + */ + 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); + } + private Device getDeviceFromRedis(String mac) { + String key = getDeviceKey(mac); + return redisUtils.get(key,Device.class); } /** * * @param map * map��� ������ ������id���4������������ - * @return + * @return ������������������������ */ @Override public List<Device> query(Map<String, Object> map) { @@ -127,14 +196,32 @@ * @param deviceName * @param pageSize * @param pageNo - * @return + * @return ��������������������� */ @Override public PageResult query(Integer orgId, String deviceName, Integer pageSize, Integer pageNo) { if(!ObjectUtils.isEmpty(pageSize)&&!ObjectUtils.isEmpty(pageNo)){ PageHelper.startPage(pageNo,pageSize); } - List<Device> list = deviceMapper.selectByOrgIdAndDevName(orgId,deviceName); + String state = null; + switch (deviceName){ + case "������": + state = "0"; + deviceName = null;break; + case "������": + state = "1"; + deviceName = null;break; + case "������": + state = "2"; + deviceName = null;break; + case "������": + state = "3"; + deviceName = null;break; + case "������": + state = "4"; + deviceName = null;break; + } + List<Device> list = deviceMapper.selectByOrgIdAndDevName(orgId,state,deviceName); //���redis������������ loadDeviceState(list); if(list instanceof Page){ @@ -149,7 +236,7 @@ * @param mpId * @param pageSize * @param pageNo - * @return + * @return ��������������������� */ @Override public PageResult query(Integer orgId, Integer mpId, Integer pageSize, Integer pageNo) { @@ -204,30 +291,40 @@ } return device; } - /* - ������ redis ��������������� + + /** + * ������������������������������ + * ������ redis ��������������� + * @param mac */ - private void refreshDeviceInRedis(Device device){ - if(!StringUtils.isBlank(device.getMac())){ - 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());// ������������ - if(device.getMonitorPointId()!=null){ - List<Integer> orgIds = monitorPointMapper.selectOrganizationIds(device.getMonitorPointId()); - simpleDevice.setOrganizationIds(orgIds); - } - String key = "device_"+device.getMac(); - redisUtils.set(key,simpleDevice); - } + 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); + }else + { + log.warn("param mac is null in method [refreshDeviceInRedis]"); + } } @Override - public PageBean queryByPageBean(PageBean pageBean) { + public int countByExample(PageBean pageBean){ Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); + addDeletesToExample(example); + return deviceMapper.selectCountByExample(example); + } + + /** + * ������������������������ + * @param example + */ + private void addDeletesToExample(Example example){ List<Example.Criteria> criteriaList = example.getOredCriteria(); if(criteriaList!=null&&criteriaList.size()>0){ for(Example.Criteria cri : criteriaList){ @@ -236,6 +333,11 @@ }else { example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE); } + } + @Override + public PageBean queryByPageBean(PageBean pageBean) { + Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); + addDeletesToExample(example); if(pageBean.getPageSize()>0){ PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize()); } @@ -248,15 +350,28 @@ Device device = new Device(); device.setIsDelete(Constants.IS_DELETE_TRUE); if(ids!=null&&ids.length>0){ + Example example = new Example(ENTITY_CLASS); + example.or().andIn("id", Arrays.asList(ids)); if(ids.length==1){ device.setId(ids[0]); deviceMapper.updateByPrimaryKeySelective(device); }else{ - Example example = new Example(ENTITY_CLASS); - example.or().andIn("id", Arrays.asList(ids)); deviceMapper.updateByExampleSelective(device,example); } - + List<Device> deviceList = deviceMapper.selectByExample(example); + List<String> adjustAndDeviceKeys = deviceList.stream().collect( + ArrayList<String>::new, + (list,dev) -> { + if(!StringUtils.isBlank(dev.getMac())){ + list.add("device_"+dev.getMac()); + list.add("adjust_"+dev.getMac()); + } + }, + (oList,nList)-> { + oList.addAll(nList); + } + ); + redisUtils.remove(adjustAndDeviceKeys.toArray(new String [adjustAndDeviceKeys.size()])); } } @@ -264,7 +379,7 @@ public void addOrModify(Device device){ try{ //mac ��������� - if(StringUtils.isBlank(device.getMac())){ + if(!StringUtils.isBlank(device.getMac())){ device.setMac(device.getMac().toLowerCase()); } if(device.getId()==null){ @@ -273,15 +388,22 @@ deviceMapper.insertSelective(device); }else{ deviceMapper.updateByPrimaryKeySelective(device); - //������redis��������������� - refreshDeviceInRedis(device); } + //������redis��������������� + refreshDeviceInRedis(device.getMac()); } catch (Exception ex){ throw ex; } } - + @Override + public List<Map> countByTimes(Date start,Date end,String format){ + if(start==null||end==null||StringUtils.isBlank(format)){ + log.error("some params is null"); + throw new BusinessException("some params is null"); + } + return deviceMapper.countByTimes(start, end, format); + } @Override public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) { Device device = new Device(); @@ -322,4 +444,16 @@ }).collect(Collectors.toList()); return list; } + + @Override + public Device queryById(Integer id) { + return deviceMapper.selectByPrimaryKey(id); + } + + @Override + public List<Device> getDevicesByProfessionId(Map<String, Object> parameters) { + + return deviceMapper.getDevicesByProfession(parameters); + } + } -- Gitblit v1.8.0