Commit f880d13e authored by jichao's avatar jichao

设备报表--导出数据bug

parent 30d2059f
...@@ -106,5 +106,13 @@ public interface BusDeviceRepository extends Mapper<BusDevice> { ...@@ -106,5 +106,13 @@ public interface BusDeviceRepository extends Mapper<BusDevice> {
@Update("<script>update bus_device set ERROR_NUM = ${errorNum} where DEV_NUM = #{devNum}</script>") @Update("<script>update bus_device set ERROR_NUM = ${errorNum} where DEV_NUM = #{devNum}</script>")
@ResultType(java.lang.Integer.class) @ResultType(java.lang.Integer.class)
Integer updateErrorNum(String devNum, Integer errorNum); Integer updateErrorNum(String devNum, Integer errorNum);
/**
* 根据proid查询
* @param proId
* @return
*/
@Select("<script>select DEV_NUM as devNum, DEV_NM as devNm from bus_device where PRO_ID=#{proId}</script>")
List<Map<String, Object>> queryNm(@Param("proId") String proId);
} }
...@@ -42,5 +42,13 @@ public interface BusDeviceMeterRepository extends BaseMapper<BusDeviceMeter> { ...@@ -42,5 +42,13 @@ public interface BusDeviceMeterRepository extends BaseMapper<BusDeviceMeter> {
*/ */
@Select("<script>select * from bus_device_meter where met_num = #{metNum}</script>") @Select("<script>select * from bus_device_meter where met_num = #{metNum}</script>")
List<Map<String,Object>> queryBusMetByMetNum(@Param("metNum") String metNum); List<Map<String,Object>> queryBusMetByMetNum(@Param("metNum") String metNum);
/**
* 根据proid查询
* @param proId
* @return
*/
@Select("<script>select MET_NUM as devNum, MET_NM as devNm from bus_device_meter where PRO_ID=#{proId}</script>")
List<Map<String, Object>> queryNm(@Param("proId") String proId);
} }
...@@ -2,15 +2,20 @@ package org.rcisoft.business.manage.service.impl; ...@@ -2,15 +2,20 @@ package org.rcisoft.business.manage.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.beust.jcommander.internal.Lists;
import com.beust.jcommander.internal.Maps;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.CellType;
import org.rcisoft.business.device.assets.dao.BusDeviceRepository;
import org.rcisoft.business.mainte.adaptive.dao.BusParamReferRepository; import org.rcisoft.business.mainte.adaptive.dao.BusParamReferRepository;
import org.rcisoft.business.mainte.adaptive.entity.BusParamRefer; import org.rcisoft.business.mainte.adaptive.entity.BusParamRefer;
import org.rcisoft.business.mainte.adaptive.proenum.ProEnum; import org.rcisoft.business.mainte.adaptive.proenum.ProEnum;
import org.rcisoft.business.manage.dao.BusDeviceMeterRepository;
import org.rcisoft.business.manage.entity.BusDeviceMeter;
import org.rcisoft.business.manage.entity.BusProject; import org.rcisoft.business.manage.entity.BusProject;
import org.rcisoft.business.manage.entity.BusSaving; import org.rcisoft.business.manage.entity.BusSaving;
import org.rcisoft.business.manage.service.BusProjectAreaService; import org.rcisoft.business.manage.service.BusProjectAreaService;
...@@ -71,6 +76,10 @@ public class BusProjectServiceImpl implements BusProjectService { ...@@ -71,6 +76,10 @@ public class BusProjectServiceImpl implements BusProjectService {
private TotalOriginalRepository totalOriginalRepository; private TotalOriginalRepository totalOriginalRepository;
@Autowired @Autowired
private TotalSensorRepository totalSensorRepository; private TotalSensorRepository totalSensorRepository;
@Autowired
private BusDeviceMeterRepository busDeviceMeterRepository;
@Autowired
private BusDeviceRepository busDeviceRepository;
private Integer saveRefer(String proId) { private Integer saveRefer(String proId) {
Integer result = 0; Integer result = 0;
...@@ -309,19 +318,31 @@ public class BusProjectServiceImpl implements BusProjectService { ...@@ -309,19 +318,31 @@ public class BusProjectServiceImpl implements BusProjectService {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<Map<String, String>> excelList = new ArrayList<>(); List<Map<String, String>> excelList = new ArrayList<>();
// 1. 根据type判断,1:查询表具,2:查询传感器 Integer type = excelParams.getType();
if (excelParams.getType() == 1) { // 1. 根据type判断,1:查询表具,2:查询传感器,3:设备
if (type == 1 || type == 3) {
// 表具或设备名称集合
Map<String, String> nameMap = this.getNm(type, proId);
Example example = new Example(TotalOriginal.class); Example example = new Example(TotalOriginal.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("proId", proId); criteria.andEqualTo("proId", proId);
criteria.andBetween("tm", start, end); criteria.andBetween("tm", start, end);
criteria.andIsNotNull("waterV"); if (excelParams.getType() == 1) {
criteria.andIsNotNull("elecV"); criteria.andIsNotNull("waterV");
criteria.andIsNotNull("gasV"); criteria.andIsNotNull("elecV");
criteria.andIsNotNull("gasV");
} else if (excelParams.getType() == 3) {
criteria.andIsNull("waterV");
criteria.andIsNull("elecV");
criteria.andIsNull("gasV");
}
example.setOrderByClause("DEV_NUM asc, TM asc"); example.setOrderByClause("DEV_NUM asc, TM asc");
List<TotalOriginal> originalList = totalOriginalRepository.selectByExample(example); List<TotalOriginal> originalList = totalOriginalRepository.selectByExample(example);
//解析到 excelList 中 //解析到 excelList 中
originalList.forEach(totalOriginal -> { originalList.forEach(totalOriginal -> {
String devNum = totalOriginal.getDevNum();
// 根据devNum获得devNm
String devNm = nameMap.get(devNum);
String originalStr = totalOriginal.getOriginalStr(); String originalStr = totalOriginal.getOriginalStr();
JSONObject jsonObject = JSON.parseObject(originalStr); JSONObject jsonObject = JSON.parseObject(originalStr);
String value = jsonObject.get(code) == null ? "" : jsonObject.get(code).toString(); String value = jsonObject.get(code) == null ? "" : jsonObject.get(code).toString();
...@@ -329,11 +350,11 @@ public class BusProjectServiceImpl implements BusProjectService { ...@@ -329,11 +350,11 @@ public class BusProjectServiceImpl implements BusProjectService {
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
map.put("time", time); map.put("time", time);
map.put("value", value); map.put("value", value);
map.put("num", totalOriginal.getDevNum()); map.put("nm", devNm);
set.add(totalOriginal.getDevNum()); set.add(devNm);
excelList.add(map); excelList.add(map);
}); });
} else { } else if (type == 2) {
Example example = new Example(TotalSensor.class); Example example = new Example(TotalSensor.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("proId", proId); criteria.andEqualTo("proId", proId);
...@@ -352,38 +373,44 @@ public class BusProjectServiceImpl implements BusProjectService { ...@@ -352,38 +373,44 @@ public class BusProjectServiceImpl implements BusProjectService {
} }
// 2. 生成excel // 2. 生成excel
HSSFWorkbook workbook = new HSSFWorkbook(); HSSFWorkbook workbook = new HSSFWorkbook();
if (excelParams.getType() == 1) {//表具 if (excelList.size() == 0) {
set.forEach(s -> { HSSFSheet sheet = workbook.createSheet("sheet1");
HSSFSheet sheet = workbook.createSheet(s); HSSFRow row = sheet.createRow(0);
row.createCell(0, CellType.STRING).setCellValue("没有数据");
} else {
if (type == 1 || type == 3) {//表具
set.forEach(s -> {
HSSFSheet sheet = workbook.createSheet(s);
// 第一行:时间,参数
HSSFRow row_1 = sheet.createRow(0);
row_1.createCell(0, CellType.STRING).setCellValue("时间");
row_1.createCell(1, CellType.STRING).setCellValue("参数:" + code);
// 循环list放入数据
for (int i = 0, k = 0; i < excelList.size(); i++) {
Map<String, String> param = excelList.get(i);
//dev_num 不一样,继续下一条循环
if (!StringUtils.equals(s, param.get("nm"))) {
k++;
continue;
}
HSSFRow row = sheet.createRow(i - k + 1);
row.createCell(0, CellType.STRING).setCellValue(param.get("time"));//时间
row.createCell(1, CellType.STRING).setCellValue(param.get("value"));//参数
}
});
} else {//传感器
HSSFSheet sheet = workbook.createSheet("传感器");
// 第一行:时间,参数 // 第一行:时间,参数
HSSFRow row_1 = sheet.createRow(0); HSSFRow row_1 = sheet.createRow(0);
row_1.createCell(0, CellType.STRING).setCellValue("时间"); row_1.createCell(0, CellType.STRING).setCellValue("时间");
row_1.createCell(1, CellType.STRING).setCellValue("参数:" + code); row_1.createCell(1, CellType.STRING).setCellValue("参数:" + code);
// 循环list放入数据 // 循环list放入数据
for (int i = 0, k = 0; i < excelList.size(); i++) { for (int i = 0; i < excelList.size(); i++) {
Map<String, String> param = excelList.get(i); Map<String, String> param = excelList.get(i);
//dev_num 不一样,继续下一条循环 HSSFRow row = sheet.createRow(i + 1);
if (!StringUtils.equals(s, param.get("num"))) {
k++;
continue;
}
HSSFRow row = sheet.createRow(i - k + 1);
row.createCell(0, CellType.STRING).setCellValue(param.get("time"));//时间 row.createCell(0, CellType.STRING).setCellValue(param.get("time"));//时间
row.createCell(1, CellType.STRING).setCellValue(param.get("value"));//参数 row.createCell(1, CellType.STRING).setCellValue(param.get("value"));//参数
} }
});
} else {//传感器
HSSFSheet sheet = workbook.createSheet("sensor");
// 第一行:时间,参数
HSSFRow row_1 = sheet.createRow(0);
row_1.createCell(0, CellType.STRING).setCellValue("时间");
row_1.createCell(1, CellType.STRING).setCellValue("参数:" + code);
// 循环list放入数据
for (int i = 0; i < excelList.size(); i++) {
Map<String, String> param = excelList.get(i);
HSSFRow row = sheet.createRow(i + 1);
row.createCell(0, CellType.STRING).setCellValue(param.get("time"));//时间
row.createCell(1, CellType.STRING).setCellValue(param.get("value"));//参数
} }
} }
// 3. 下载 // 3. 下载
...@@ -398,5 +425,25 @@ public class BusProjectServiceImpl implements BusProjectService { ...@@ -398,5 +425,25 @@ public class BusProjectServiceImpl implements BusProjectService {
} }
/**
* 根据id,type获取表具或设备的名称
* @param type 1:表具,2:设备
* @param proId
* @return
*/
private Map<String, String> getNm(Integer type, String proId) {
Map<String, String> resultMap = Maps.newHashMap();
List<Map<String, Object>> list = null;
if (type == 1) {
list = busDeviceMeterRepository.queryNm(proId);
} else if (type == 3) {
list = busDeviceRepository.queryNm(proId);
}
list.forEach(map -> {
resultMap.put(map.get("devNum").toString(), map.get("devNm").toString());
});
return resultMap;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment