package com.moral.service.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import com.alibaba.fastjson.JSONObject; import com.moral.common.bean.PageBean; import com.moral.common.util.MyBatisBaseMapUtil; import com.moral.entity.Device; import com.moral.entity.MonitorPoint; import com.moral.entity.Sensor; import com.moral.mapper.SensorMapper; import com.moral.service.MonitorPointService; import com.moral.service.SensorService; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; import tk.mybatis.mapper.entity.Example; @Service public class SensorServiceImpl implements SensorService { @Resource SensorMapper sensorMapper; @Resource MonitorPointService monitorPointService; private static Class ENTITY_CLASS = Sensor.class; /** * 查询所有的传感器类型 * * @return */ @Override public List queryAll() { return sensorMapper.selectByExample(null); } public PageBean queryByPageBean(PageBean pageBean) { return MyBatisBaseMapUtil.queryPage(sensorMapper, pageBean, ENTITY_CLASS); } @Override public PageBean queryByVersionId(Integer deviceVersionId) { List sensorList = sensorMapper.selectByVersionId(deviceVersionId); return new PageBean(sensorList); } @Override public List queryListByVersionId(Integer deviceVersionId) { return sensorMapper.selectByVersionId(deviceVersionId); } @Override public List queryListByVersionNo(Integer versionNo) { return sensorMapper.selectByVersionNo(versionNo); } public void addOrModify(Sensor sensor) { try { if (sensor.getId() == null) { sensorMapper.insertSelective(sensor); } else { sensorMapper.updateByPrimaryKeySelective(sensor); } } catch (Exception ex) { throw ex; } } @Override public void deleteByIds(Integer... ids) { if (ids != null && ids.length > 0) { if (ids.length == 1) { sensorMapper.deleteByPrimaryKey(ids[0]); } else { Example example = new Example(ENTITY_CLASS); example.or().andIn("id", Arrays.asList(ids)); sensorMapper.deleteByExample(example); } } } /** * 获取当前组织下所有传感器并集 * * @param organizationId * @return */ @Override public List queryByOrgId(Integer organizationId) { return sensorMapper.selectByOrgId(organizationId); } @Override public List getAllSensors() { return sensorMapper.selectAll(); } @Override public Map getSensorBySensorKey(String sensorKey) { Map map = sensorMapper.getSensorBySensorKey(sensorKey); return map; } @Override public List> getSensorByDeviceId(String id) { List> list = sensorMapper.getSensorByDeviceId(id); return list; } @Override public List> getSensorByMonitorPointId(String monitor_point_id) { List> list = sensorMapper.getSensorByMonitorPointId(monitor_point_id); return list; } @Override public Map getSensorsMap(Map parameters) { List sensors = sensorMapper.getSensorsByMac(parameters); Map sensorMap = new HashMap<>(); for (Sensor sensor : sensors) { sensorMap.put(sensor.getSensorKey(), sensor.getDescription()); } return sensorMap; } @Override public List> getSensorsMaps(String mac) { List sensors = sensorMapper.getSensorsInfoByMac(mac); Map sensorsDescriptionMap = new HashMap<>(); for (Sensor sensor : sensors) { sensorsDescriptionMap.put(sensor.getSensorKey(), sensor.getDescription()); } Map sensorsUnitMap = new HashMap<>(); for (Sensor sensor : sensors) { sensorsUnitMap.put(sensor.getSensorKey(), sensor.getUnit()); } List> sensorsMapList = new ArrayList<>(); sensorsMapList.add(sensorsDescriptionMap); sensorsMapList.add(sensorsUnitMap); return sensorsMapList; } @Override public List> getSensorsAllMap() { List sensors = sensorMapper.selectAll(); Map sensorsDescriptionMap = new HashMap<>(); for (Sensor sensor : sensors) { sensorsDescriptionMap.put(sensor.getSensorKey(), sensor.getDescription()); } Map sensorsUnitMap = new HashMap<>(); for (Sensor sensor : sensors) { sensorsUnitMap.put(sensor.getSensorKey(), sensor.getUnit()); } List> sensorsMapList = new ArrayList<>(); sensorsMapList.add(sensorsDescriptionMap); sensorsMapList.add(sensorsUnitMap); return sensorsMapList; } @Override public List selectSenosrsByOrgId(Map parameters) { List macList = new ArrayList<>(); List monitorPoints = monitorPointService.getMonitorPointsAndDevicesByRegion(parameters); for (MonitorPoint m : monitorPoints) { for (Device d : m.getDevices()) { macList.add(d.getMac()); } } parameters.put("macs", macList); List sensors = new ArrayList<>(); if (!CollectionUtils.isEmpty(macList)) { sensors = sensorMapper.selectSenosrsByOrgId(parameters); } else { sensors = sensorMapper.selectAll(); } return sensors; } @Override public List> listSensorInfos(String[] sensorsResult) { List sensorKeys = new ArrayList<>(); List sensorKeysNames = new ArrayList<>(); List sensorKeysUnits = new ArrayList<>(); List> sensorInfos = new ArrayList<>(); for (int index = 0; index < sensorsResult.length; index++) { String[] split = sensorsResult[index].split("-"); String key = split[0].replace("\"", ""); String name = split[1].replace("\"", ""); String Unit = split[2].replace("\"", ""); sensorKeys.add(key); sensorKeysNames.add(name); sensorKeysUnits.add(Unit); } sensorInfos.add(sensorKeys); sensorInfos.add(sensorKeysNames); sensorInfos.add(sensorKeysUnits); return sensorInfos; } @Override public List>> listExcelDatas(List> sensorInfos, List> list) { List>> sheets = new ArrayList<>(); for (int i = 0; i < sensorInfos.get(0).size(); i++) { List> sheet = new ArrayList<>(); for (int j = 0; j < list.size(); j++) { Map data = new LinkedHashMap<>(); for (Map.Entry kv : list.get(j).entrySet()) { if ("monitorPointName".equals(kv.getKey())) { if ("null".equals(sensorInfos.get(2).get(i))) { data.put("站点名称(单位:)", kv.getValue()); } else { data.put("站点名称(单位:" + sensorInfos.get(2).get(i) + ")", kv.getValue()); } } else if ("name".equals(kv.getKey())) { data.put("设备名称", kv.getValue()); } else { String sensorsValue = kv.getValue().toString(); JSONObject jsonObject = JSONObject.parseObject(sensorsValue); if (jsonObject != null) { List sensorsValueList = (List) jsonObject.get(sensorInfos.get(0).get(i)); if (sensorsValueList != null) { data.put(kv.getKey(), sensorsValueList.get(0)); } else { data.put(kv.getKey(), ""); } } else { data.put(kv.getKey(), ""); } } } sheet.add(data); } sheets.add(sheet); } return sheets; } }