From bf2026a38d4d36371060673d4651b6e05ca90632 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 01 九月 2026 17:07:30 +0800
Subject: [PATCH] feat(device): 1.更新设备导入验证逻辑和检验任务功能 2.报告编制
---
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java | 50 ++++++++++++++++++++++++++++----------------------
1 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
index 570a0f8..a58e4be 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -547,17 +547,18 @@
throw new RuntimeException("瀵煎叆鏂囦欢娌℃湁璁惧鏁版嵁");
}
- Set<String> managementNumbers = new HashSet<>();
+ Set<String> fileKeys = new HashSet<>();
for (int i = 0; i < rows.size(); i++) {
String managementNumber = required(rows.get(i).getManagementNumber(), i + 2, "绠$悊缂栧彿");
- if (!managementNumbers.add(managementNumber)) {
- throw new RuntimeException("绗�" + (i + 2) + "琛岋細绠$悊缂栧彿" + managementNumber + "鍦ㄦ枃浠朵腑閲嶅");
+ String deviceName = required(rows.get(i).getDeviceName(), i + 2, "浠櫒鍚嶇О");
+ String specificationModel = required(rows.get(i).getSpecificationModel(), i + 2, "瑙勬牸鍨嬪彿");
+ if (!fileKeys.add(deviceKey(deviceName, specificationModel, managementNumber))) {
+ throw new RuntimeException("绗�" + (i + 2) + "琛岋細浠櫒鍚嶇О+瑙勬牸鍨嬪彿+绠$悊缂栧彿鍦ㄦ枃浠朵腑閲嶅");
}
}
- Set<String> existingNumbers = baseMapper.selectList(Wrappers.<Device>lambdaQuery()
- .in(Device::getManagementNumber, managementNumbers)
- .select(Device::getManagementNumber))
- .stream().map(Device::getManagementNumber).collect(Collectors.toSet());
+ Set<String> existingKeys = baseMapper.selectList(Wrappers.<Device>lambdaQuery()
+ .select(Device::getDeviceName, Device::getSpecificationModel, Device::getManagementNumber))
+ .stream().map(d -> deviceKey(d.getDeviceName(), d.getSpecificationModel(), d.getManagementNumber())).collect(Collectors.toSet());
Map<String, List<SysDept>> departmentMap = sysDeptMapper.selectDeptList(new SysDept()).stream()
.filter(item -> StringUtils.isNotBlank(item.getDeptName()))
@@ -573,8 +574,10 @@
int rowNumber = i + 2;
DeviceImport row = rows.get(i);
String managementNumber = required(row.getManagementNumber(), rowNumber, "绠$悊缂栧彿");
- if (existingNumbers.contains(managementNumber)) {
- throw new RuntimeException("绗�" + rowNumber + "琛岋細绠$悊缂栧彿" + managementNumber + "宸插瓨鍦�");
+ String deviceName = required(row.getDeviceName(), rowNumber, "浠櫒鍚嶇О");
+ String specificationModel = required(row.getSpecificationModel(), rowNumber, "瑙勬牸鍨嬪彿");
+ if (existingKeys.contains(deviceKey(deviceName, specificationModel, managementNumber))) {
+ throw new RuntimeException("绗�" + rowNumber + "琛岋細浠櫒鍚嶇О鈥�" + deviceName + "鈥�+瑙勬牸鍨嬪彿鈥�" + specificationModel + "鈥�+绠$悊缂栧彿鈥�" + managementNumber + "鈥濆凡瀛樺湪");
}
String laboratoryName = required(row.getLaboratoryName(), rowNumber, "鎵�灞為儴闂�");
@@ -584,10 +587,10 @@
}
Device device = new Device();
- device.setDeviceName(required(row.getDeviceName(), rowNumber, "浠櫒鍚嶇О"));
- device.setSpecificationModel(required(row.getSpecificationModel(), rowNumber, "瑙勬牸鍨嬪彿"));
+ device.setDeviceName(deviceName);
+ device.setSpecificationModel(specificationModel);
device.setManagementNumber(managementNumber);
- device.setActivationDate(parseDate(row.getActivationDate(), rowNumber, "鏍″噯鏈夋晥鏈�", true));
+ device.setActivationDate(parseDate(row.getActivationDate()));
device.setSubordinateDepartmentsId(departments.get(0).getDeptId().intValue());
device.setDeviceStatus(Integer.valueOf(dictValue(statusMap, row.getDeviceStatus(), rowNumber, "褰撳墠鐘舵��", true)));
device.setCalibrationDate(required(row.getCalibrationDate(), rowNumber, "鏍″噯鍛ㄦ湡(鏈�)"));
@@ -596,12 +599,12 @@
device.setFactoryNo(trim(row.getFactoryNo()));
device.setAssetCode(trim(row.getAssetCode()));
device.setOrigin(trim(row.getOrigin()));
- device.setAcquisitionDate(parseDate(row.getAcquisitionDate(), rowNumber, "璐疆鏃ユ湡", false));
+ device.setAcquisitionDate(parseDate(row.getAcquisitionDate()));
device.setStoragePoint(trim(row.getStoragePoint()));
device.setTechnicalIndicators(trim(row.getTechnicalIndicators()));
device.setCalibrationServices(trim(row.getCalibrationServices()));
- device.setLastCalibrationDate(parseDate(row.getLastCalibrationDate(), rowNumber, "鏈�杩戞牎鍑嗘棩鏈�", false));
- device.setNextCalibrationDate(parseDate(row.getNextCalibrationDate(), rowNumber, "涓嬫鏍″噯鏃ユ湡", false));
+ device.setLastCalibrationDate(parseDate(row.getLastCalibrationDate()));
+ device.setNextCalibrationDate(parseDate(row.getNextCalibrationDate()));
device.setLargeCategory(dictValue(typeMap, row.getLargeCategory(), rowNumber, "璁惧绫诲瀷", false));
device.setUnitPrice(parseDecimal(row.getUnitPrice(), rowNumber, "鍗曚环(涓囧厓)"));
@@ -642,19 +645,16 @@
return value;
}
- private LocalDateTime parseDate(String input, int rowNumber, String column, boolean required) {
+ private LocalDateTime parseDate(String input) {
String text = trim(input);
if (StringUtils.isBlank(text)) {
- if (required) {
- throw new RuntimeException("绗�" + rowNumber + "琛岋細" + column + "涓嶈兘涓虹┖");
- }
return null;
}
+ String datePart = text.replace('/', '-').split("\\s+")[0];
try {
- return LocalDate.parse(text.substring(0, Math.min(text.length(), 10)).replace('/', '-'), DateTimeFormatter.ofPattern("yyyy-M-d"))
- .atStartOfDay();
+ return LocalDate.parse(datePart, DateTimeFormatter.ofPattern("yyyy-M-d")).atStartOfDay();
} catch (Exception e) {
- throw new RuntimeException("绗�" + rowNumber + "琛岋細" + column + "鏍煎紡搴斾负yyyy-MM-dd", e);
+ return null;
}
}
@@ -678,6 +678,12 @@
return value;
}
+ private String deviceKey(String deviceName, String specificationModel, String managementNumber) {
+ return (deviceName == null ? "" : deviceName.trim()) + "|"
+ + (specificationModel == null ? "" : specificationModel.trim()) + "|"
+ + (managementNumber == null ? "" : managementNumber.trim());
+ }
+
private String trim(String value) {
return value == null ? null : value.trim();
}
--
Gitblit v1.9.3