Commit f880d13e authored by jichao's avatar jichao

设备报表--导出数据bug

parent 30d2059f
......@@ -106,5 +106,13 @@ public interface BusDeviceRepository extends Mapper<BusDevice> {
@Update("<script>update bus_device set ERROR_NUM = ${errorNum} where DEV_NUM = #{devNum}</script>")
@ResultType(java.lang.Integer.class)
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> {
*/
@Select("<script>select * from bus_device_meter where met_num = #{metNum}</script>")
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;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.beust.jcommander.internal.Lists;
import com.beust.jcommander.internal.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.entity.BusParamRefer;
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.BusSaving;
import org.rcisoft.business.manage.service.BusProjectAreaService;
......@@ -71,6 +76,10 @@ public class BusProjectServiceImpl implements BusProjectService {
private TotalOriginalRepository totalOriginalRepository;
@Autowired
private TotalSensorRepository totalSensorRepository;
@Autowired
private BusDeviceMeterRepository busDeviceMeterRepository;
@Autowired
private BusDeviceRepository busDeviceRepository;
private Integer saveRefer(String proId) {
Integer result = 0;
......@@ -309,19 +318,31 @@ public class BusProjectServiceImpl implements BusProjectService {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<Map<String, String>> excelList = new ArrayList<>();
// 1. 根据type判断,1:查询表具,2:查询传感器
if (excelParams.getType() == 1) {
Integer type = excelParams.getType();
// 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.Criteria criteria = example.createCriteria();
criteria.andEqualTo("proId", proId);
criteria.andBetween("tm", start, end);
criteria.andIsNotNull("waterV");
criteria.andIsNotNull("elecV");
criteria.andIsNotNull("gasV");
if (excelParams.getType() == 1) {
criteria.andIsNotNull("waterV");
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");
List<TotalOriginal> originalList = totalOriginalRepository.selectByExample(example);
//解析到 excelList 中
originalList.forEach(totalOriginal -> {
String devNum = totalOriginal.getDevNum();
// 根据devNum获得devNm
String devNm = nameMap.get(devNum);
String originalStr = totalOriginal.getOriginalStr();
JSONObject jsonObject = JSON.parseObject(originalStr);
String value = jsonObject.get(code) == null ? "" : jsonObject.get(code).toString();
......@@ -329,11 +350,11 @@ public class BusProjectServiceImpl implements BusProjectService {
Map<String, String> map = new HashMap<>();
map.put("time", time);
map.put("value", value);
map.put("num", totalOriginal.getDevNum());
set.add(totalOriginal.getDevNum());
map.put("nm", devNm);
set.add(devNm);
excelList.add(map);
});
} else {
} else if (type == 2) {
Example example = new Example(TotalSensor.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("proId", proId);
......@@ -352,38 +373,44 @@ public class BusProjectServiceImpl implements BusProjectService {
}
// 2. 生成excel
HSSFWorkbook workbook = new HSSFWorkbook();
if (excelParams.getType() == 1) {//表具
set.forEach(s -> {
HSSFSheet sheet = workbook.createSheet(s);
if (excelList.size() == 0) {
HSSFSheet sheet = workbook.createSheet("sheet1");
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);
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++) {
for (int i = 0; i < excelList.size(); i++) {
Map<String, String> param = excelList.get(i);
//dev_num 不一样,继续下一条循环
if (!StringUtils.equals(s, param.get("num"))) {
k++;
continue;
}
HSSFRow row = sheet.createRow(i - k + 1);
HSSFRow row = sheet.createRow(i + 1);
row.createCell(0, CellType.STRING).setCellValue(param.get("time"));//时间
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. 下载
......@@ -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