做个记录
/**
* 导出excel
* @author wangchen
* @Date 2020-9-8
*/
@RequestMapping("/nvr/exportExcel")
public void exportExcel(String nvrIdsStr,ModelMap modelMap, HttpServletRequest request, HttpServletResponse response){
//导出nvr信息
List<Map> totalMaps = deviceNvrService.getNvrExcel(nvrIdsStr);
//初始化表头
List<ExcelExportEntity> entity = new ArrayList<>();
entity.add(new ExcelExportEntityCustom("工程编号", "projectId", 10));
entity.add(new ExcelExportEntityCustom("工程名称", "projectName2", 22));
entity.add(new ExcelExportEntityCustom("NVR名称", "nvrName", 10));
entity.add(new ExcelExportEntityCustom("SIP认证ID", "nvrSipAccount", 22));
entity.add(new ExcelExportEntityCustom("密码", "sipPassword", 10));
entity.add(new ExcelExportEntity("通道", "nvrChannelNum", 10));
entity.add(new ExcelExportEntity("SIP通道ID", "deviceSipAccount", 22));
entity.add(new ExcelExportEntity("设备ID", "deviceCameraId", 22));
entity.add(new ExcelExportEntity("设备名称", "cameraName", 22));
entity.add(new ExcelExportEntity("IP地址", "nvrNetIp", 22));
entity.add(new ExcelExportEntity("子网掩码", "nvrMask", 22));
entity.add(new ExcelExportEntity("网关", "nvrGateway", 22));
entity.add(new ExcelExportEntity("远程端口", "httpPort", 10));
entity.add(new ExcelExportEntity("配置时间", "bindStateTime", 15));
entity.add(new ExcelExportEntity("4G卡号", "simCardNum", 10));
entity.add(new ExcelExportEntity("信号源", "netTypeName", 10));
entity.add(new ExcelExportEntity("合同号", "contractId", 10));
entity.add(new ExcelExportEntity("SIP服务器信息", "sipServer", 90));
ExportParams params = new ExportParams("NVR通道信息表(导出数据)", "NVR表", ExcelType.XSSF);
short titleHeight = 15;
params.setTitleHeight(titleHeight);
modelMap.put(MapExcelConstants.MAP_LIST, totalMaps);
modelMap.put(MapExcelConstants.ENTITY_LIST, entity);
modelMap.put(MapExcelConstants.PARAMS, params);
modelMap.put(MapExcelConstants.FILE_NAME, "NVR通道信息表");
PoiBaseView.render(modelMap, request, response, MapExcelConstants.EASYPOI_MAP_EXCEL_VIEW);
}
public class ExcelExportEntityCustom extends ExcelExportEntity {
public ExcelExportEntityCustom(String name, Object key, int width) {
super.name = name;
super.setWidth((double) width);
super.setKey(key);
super.setNeedMerge(true);
super.setMergeVertical(true);
}
}
/**
* nvr导出信息
* @author wangchen
* @param nvrIdsStr
* @Date 2020-9-8 9:42
*/
public List<Map> getNvrExcel(String nvrIdsStr){
List<Map> totalMaps = new ArrayList<>();
String[] nvrStrs = nvrIdsStr.split(",");
List<String> nvrIds = Arrays.asList(nvrStrs);
for (String nvrId : nvrIds) {
//获取nvr导出数据
DeviceNvrResult result = new DeviceNvrResult();
//获取nvr,过滤作废
LambdaQueryWrapper<DeviceNvr> queryWrapperNvr = new LambdaQueryWrapper<>();
queryWrapperNvr.eq(DeviceNvr::getDeviceNvrId, Integer.parseInt(nvrId));
queryWrapperNvr.eq(DeviceNvr::getIsEnable,YesOrNotEnum.Y.getCode());
DeviceNvr nvr = deviceNvrService.getOne(queryWrapperNvr);
BeanUtil.copyProperties(nvr,result);
//获取设备list
LambdaQueryWrapper<DeviceCamera> queryWrapperDevice = new LambdaQueryWrapper<>();
queryWrapperDevice.eq(DeviceCamera::getNvrId, Integer.parseInt(nvrId));
List<DeviceCamera> deviceCameras = deviceCameraService.list(queryWrapperDevice);
//获取设备返回集map
List<Map> deviceMaps = deviceCameras.stream().map(v->{
//获取工程信息
Project project = projectService.getById(v.getProjectId());
//获取设备类型信息
DeviceTypeResult deviceTypeResult = deviceTypeService.getDeviceTypeByCode(v.getDeviceTypeCode());
//获取合同设备信息
LambdaQueryWrapper<OrderContractCamera> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OrderContractCamera::getIsDel, YesOrNotEnum.N.getCode());
queryWrapper.eq(OrderContractCamera::getDeviceCameraId, v.getDeviceCameraId());
List<OrderContractCamera> orderContractCameras = orderContractCameraService.list(queryWrapper);
String orderContractIdStr = "";
if (orderContractCameras != null) {
List<Integer> orderContractIds = orderContractCameras.stream()
.filter(temp -> !YesOrNotEnum.Y.getCode().equals(temp.getIsContractShare()))
.map(OrderContractCamera::getOrderContractId).collect(Collectors.toList());
if (orderContractIds != null) {
orderContractIdStr = Joiner.on(",").join(orderContractIds);
}
}
// OrderContractCamera orderContractCamera = orderContractCameraService.getOne(queryWrapper);
//获取sip服务器信息
SipServer sipServer = sipServerService.getById(result.getSipServerId());
Map map = new HashMap();
if(ToolUtil.isNotEmpty(project)){
map.put("projectId",project.getProjectId());
map.put("projectName2", project.getProjectName2());
}
map.put("nvrName", result.getNvrName());
map.put("nvrSipAccount", result.getSipAccount());
map.put("sipPassword", result.getSipPassword());
map.put("nvrChannelNum", v.getNvrChannelNum());
map.put("deviceSipAccount", v.getSipAccount());
map.put("deviceCameraId", v.getDeviceCameraId());
map.put("cameraName", v.getCameraName());
map.put("nvrNetIp", result.getNvrNetIp());
map.put("nvrMask", result.getNvrMask());
map.put("nvrGateway", result.getNvrGateway());
map.put("httpPort", result.getHttpPort());
if(ToolUtil.isNotEmpty(result.getBindStateTime())){
String bindStateTime = DateUtil.DateToStr(result.getBindStateTime(),"yyyy-MM-dd");
map.put("bindStateTime", bindStateTime);
}
map.put("simCardNum", result.getSimCardNum());
if(ToolUtil.isNotEmpty(deviceTypeResult.getNetType())){
String netTypeName = ConstantFactory.me().getDictName(DictEnum.NET_TYPE.getCode(),String.valueOf(deviceTypeResult.getNetType()));
map.put("netTypeName", netTypeName + "信号");
}
// map.put("contractId", orderContractCamera.getOrderContractId());
map.put("contractId", orderContractIdStr);
if(ToolUtil.isNotEmpty(sipServer)){
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("SIP服务器【ID:");
stringBuffer.append(sipServer.getSipServerNum());
stringBuffer.append("; ");
stringBuffer.append("域:");
stringBuffer.append(sipServer.getSipServerDomain());
stringBuffer.append("; ");
stringBuffer.append("地址:");
stringBuffer.append(sipServer.getSipServerIp());
stringBuffer.append("; ");
stringBuffer.append("端口:");
stringBuffer.append(sipServer.getSipServerPort());
stringBuffer.append("】");
map.put("sipServer", stringBuffer.toString());
}
return map;
}).collect(Collectors.toList());
totalMaps.addAll(deviceMaps);
}
//对项目id进行排序
totalMaps = totalMaps.stream()
.sorted((map1, map2) -> (Integer)map1.get("projectId") - (Integer)map2.get("projectId"))
.collect(Collectors.toList());
return totalMaps;
}