|
@@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.infra.api.file.FileApi;
|
|
|
import cn.iocoder.yudao.module.museums.dal.dataobject.specimenoutbound.SpecimenOutboundDO;
|
|
|
import cn.iocoder.yudao.module.museums.dal.mysql.specimenoutbound.SpecimenOutboundMapper;
|
|
|
import cn.iocoder.yudao.module.museums.enums.social.LogRecordConstants;
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
@@ -21,6 +22,7 @@ import org.springframework.validation.annotation.Validated;
|
|
|
import java.io.*;
|
|
|
import java.nio.file.Files;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
import java.util.zip.ZipEntry;
|
|
|
import java.util.zip.ZipInputStream;
|
|
|
|
|
@@ -143,10 +145,8 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
|
// 标本Excel的批量导入
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
|
|
-// @LogRecord(type = SPECIMEN_IMPORT_TYPE,
|
|
|
-// subType = SPECIMEN_IMPORT_SUB_TYPE,
|
|
|
-// bizNo = "{{#specimenNumbers}}",
|
|
|
-// success = SPECIMEN_IMPORT_SUCCESS)
|
|
|
+ @LogRecord(type = MUSEUMS_SPECIMEN_TYPE, subType = SPECIMEN_IMPORT_SUB_TYPE, bizNo = "1",
|
|
|
+ success = SPECIMEN_IMPORT_SUCCESS, extra = SPECIMEN_IMPORT_SUCCESS_ID)
|
|
|
public SpecimenImportRespVO importSpecimenList(List<SpecimenImportExcelVO> importSpecimens, boolean isUpdateSupport) {
|
|
|
// 1.1 参数校验
|
|
|
if (CollUtil.isEmpty(importSpecimens)) {
|
|
@@ -157,7 +157,11 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
|
SpecimenImportRespVO respVO = SpecimenImportRespVO.builder()
|
|
|
.createSpecimenNumbers(new ArrayList<>())
|
|
|
.updateSpecimenNumbers(new ArrayList<>())
|
|
|
- .failureSpecimenNumbers(new LinkedHashMap<>()).build();
|
|
|
+ .failureSpecimenNumbers(new LinkedHashMap<>())
|
|
|
+ .createdSpecimenIds(new ArrayList<>()).build();
|
|
|
+
|
|
|
+ List<Long> successfulSpecimenIds = new ArrayList<>(); // 用于存储成功导入的标本ID
|
|
|
+ List<Long> updatedSpecimenIds = new ArrayList<>(); // 用于存储成功更新的标本ID
|
|
|
|
|
|
importSpecimens.forEach(importSpecimen -> {
|
|
|
// 校验逻辑可以根据需要添加
|
|
@@ -176,6 +180,8 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
|
SpecimenInfoDO newSpecimen = BeanUtils.toBean(importSpecimen, SpecimenInfoDO.class);
|
|
|
specimenInfoMapper.insert(newSpecimen);
|
|
|
respVO.getCreateSpecimenNumbers().add(importSpecimen.getSpecimenNumber());
|
|
|
+ respVO.getCreatedSpecimenIds().add(newSpecimen.getId()); // 添加新标本 ID
|
|
|
+ successfulSpecimenIds.add(newSpecimen.getId()); // 记录成功导入的ID
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -190,18 +196,23 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
|
updateSpecimen.setId(existSpecimen.getId()); // 设置 ID 进行更新
|
|
|
specimenInfoMapper.updateById(updateSpecimen);
|
|
|
respVO.getUpdateSpecimenNumbers().add(importSpecimen.getSpecimenNumber());
|
|
|
+ updatedSpecimenIds.add(updateSpecimen.getId()); // 记录成功更新的ID
|
|
|
});
|
|
|
|
|
|
-// // 记录成功导入的标本编号到日志上下文
|
|
|
-// LogRecordContext.putVariable("specimenNumbers", String.join(", ", respVO.getCreateSpecimenNumbers()));
|
|
|
-// LogRecordContext.putVariable("updateSpecimenNumbers", String.join(", ", respVO.getUpdateSpecimenNumbers()));
|
|
|
-//
|
|
|
-// // 记录操作日志上下文
|
|
|
-// LogRecordContext.putVariable("totalImported", respVO.getCreateSpecimenNumbers().size() + respVO.getUpdateSpecimenNumbers().size());
|
|
|
+ // 合并成功导入和更新的标本ID
|
|
|
+ successfulSpecimenIds.addAll(updatedSpecimenIds);
|
|
|
+
|
|
|
+ // 记录成功导入和更新的标本ID到日志上下文
|
|
|
+ LogRecordContext.putVariable("extra", successfulSpecimenIds.stream()
|
|
|
+ .map(String::valueOf)
|
|
|
+ .collect(Collectors.joining(", "))); // 转换为逗号分隔的字符串
|
|
|
|
|
|
+ System.out.println(successfulSpecimenIds);
|
|
|
return respVO;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
private boolean isValidImageName(String imageNames) {
|
|
|
if (imageNames == null || imageNames.trim().isEmpty()) {
|
|
|
return true; // 如果图片名称为空或仅含空格,则视为通过校验
|
|
@@ -432,5 +443,4 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
|
public List<SpecimenInfoDO> getSpecimenRecords(Long id) {
|
|
|
return specimenInfoMapper.getSpecimenRecords(id);
|
|
|
}
|
|
|
-
|
|
|
}
|