导出数据设备

This commit is contained in:
2025-07-10 14:57:59 +08:00
parent d75658e81e
commit 7e688e16b3
12 changed files with 84 additions and 47 deletions

View File

@ -4,6 +4,7 @@ import com.fuyuanshen.customer.mapper.CustomerMapper;
import com.fuyuanshen.equipment.mapper.DeviceMapper;
import com.fuyuanshen.equipment.mapper.DeviceTypeMapper;
import com.fuyuanshen.equipment.service.DeviceService;
import com.fuyuanshen.equipment.service.DeviceTypeService;
import com.fuyuanshen.system.service.ISysOssService;
import lombok.*;
import org.springframework.web.multipart.MultipartFile;
@ -23,6 +24,7 @@ public class DeviceImportParams {
private DeviceMapper deviceMapper;
private CustomerMapper customerMapper;
private DeviceTypeMapper deviceTypeMapper;
private DeviceTypeService deviceTypeService;
private ISysOssService ossService;
private MultipartFile file;
private String filePath;

View File

@ -1,12 +1,10 @@
package com.fuyuanshen.equipment.excel;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fuyuanshen.common.core.domain.model.LoginUser;
import com.fuyuanshen.common.satoken.utils.LoginHelper;
import com.fuyuanshen.equipment.constants.DeviceConstants;
@ -14,7 +12,7 @@ import com.fuyuanshen.equipment.domain.Device;
import com.fuyuanshen.equipment.domain.DeviceType;
import com.fuyuanshen.equipment.domain.dto.DeviceExcelImportDTO;
import com.fuyuanshen.equipment.domain.dto.ImportResult;
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
import com.fuyuanshen.equipment.domain.form.DeviceForm;
import com.fuyuanshen.equipment.handler.ImageWriteHandler;
import com.fuyuanshen.system.domain.vo.SysOssVo;
import lombok.extern.slf4j.Slf4j;
@ -30,13 +28,13 @@ import java.util.*;
public class UploadDeviceDataListener implements ReadListener<DeviceExcelImportDTO> {
// 存储图片数据的映射
private final Map<Integer, byte[]> rowImageMap = new HashMap<>();
private Map<Integer, byte[]> rowImageMap = new HashMap<>();
private final DeviceImportParams params;
private DeviceImportParams params;
private final Map<Integer, Device> rowDeviceMap = new HashMap<>();
private final Map<Integer, DeviceExcelImportDTO> rowDtoMap = new HashMap<>();
private final List<Integer> rowIndexList = new ArrayList<>();
private Map<Integer, Device> rowDeviceMap = new HashMap<>();
private Map<Integer, DeviceExcelImportDTO> rowDtoMap = new HashMap<>();
private List<Integer> rowIndexList = new ArrayList<>();
private int successCount = 0;
private int failureCount = 0;
@ -105,7 +103,6 @@ public class UploadDeviceDataListener implements ReadListener<DeviceExcelImportD
.sheet("失败数据").doWrite(failedRecordsWithImages);
// 生成访问URL
// String errorExcelUrl = params.getIp() + DeviceConstants.FILE_ACCESS_PREFIX + "/" + DeviceConstants.ERROR_REPORT_DIR + "/" + fileName;
SysOssVo upload = params.getOssService().upload(errorFile);
result.setErrorExcelUrl(upload.getUrl());
log.info("错误报告已保存: {}", errorFile.getAbsolutePath());
@ -151,27 +148,18 @@ public class UploadDeviceDataListener implements ReadListener<DeviceExcelImportD
Device device = rowDeviceMap.get(rowIndex);
DeviceExcelImportDTO originalDto = rowDtoMap.get(rowIndex);
try {
// DeviceQueryCriteria criteria = new DeviceQueryCriteria();
// criteria.setDeviceMac(device.getDeviceMac());
// criteria.setTenantId(params.getTenantId());
// List<Device> deviceList = params.getDeviceMapper().findAll(criteria);
// if (!deviceList.isEmpty()) {
// throw new RuntimeException("设备MAC重复");
// }
// device.setTenantId(params.getTenantId());
// 设备类型
QueryWrapper<DeviceType> wrapper = new QueryWrapper<>();
wrapper.eq("type_name", device.getTypeName());
// wrapper.eq("customer_id", params.getUserId());
List<DeviceType> deviceTypes = params.getDeviceTypeMapper().selectList(wrapper);
if (CollectionUtil.isNotEmpty(deviceTypes)) {
device.setDeviceType(deviceTypes.get(0).getId());
}
device.setCurrentOwnerId(loginUser.getUserId());
device.setOriginalOwnerId(loginUser.getUserId());
device.setCreateByName(loginUser.getNickname());
params.getDeviceService().save(device);
DeviceType deviceType = params.getDeviceTypeService().queryByName(device.getTypeName());
// params.getDeviceService().save(device);
DeviceForm deviceForm = new DeviceForm();
deviceForm.setDeviceName(device.getDeviceName());
deviceForm.setDeviceType(deviceType.getId());
deviceForm.setRemark(device.getRemark());
deviceForm.setDeviceMac(device.getDeviceMac());
deviceForm.setDeviceImei(device.getDeviceImei());
deviceForm.setBluetoothName(device.getBluetoothName());
deviceForm.setDevicePic(device.getDevicePic());
params.getDeviceService().addDevice(deviceForm);
successCount++;
log.info("行 {} 数据插入成功", rowIndex);
} catch (Exception e) {
@ -225,10 +213,8 @@ public class UploadDeviceDataListener implements ReadListener<DeviceExcelImportD
private String getCellValue(XSSFSheet sheet, int rowIndex, int colIndex) {
XSSFRow row = sheet.getRow(rowIndex);
if (row == null) return null;
XSSFCell cell = row.getCell(colIndex);
if (cell == null) return null;
return cell.toString();
}
@ -240,18 +226,6 @@ public class UploadDeviceDataListener implements ReadListener<DeviceExcelImportD
try {
String fileExtension = "jpg";
String newFileName = "PS_" + new Random(8) + "." + fileExtension;
// String targetDirPath = params.getFilePath() + DeviceConstants.FILE_ACCESS_ISOLATION;
// File targetDir = new File(targetDirPath);
//
// if (!targetDir.exists() && !targetDir.mkdirs()) {
// log.error("无法创建目录: {}", targetDirPath);
// return null;
// }
//
// File newFile = new File(targetDir, newFileName);
// Files.write(newFile.toPath(), imageData);
//
// return params.getIp() + DeviceConstants.FILE_ACCESS_PREFIX + "/" + DeviceConstants.FILE_ACCESS_ISOLATION + "/" + newFileName;
SysOssVo upload = params.getOssService().upload(imageData, newFileName);
return upload.getUrl();
} catch (Exception e) {