From 96fd1f01ca2dad4f34065f9e40d4307768f985ff Mon Sep 17 00:00:00 2001 From: chen <2710907404@qq.com> Date: Tue, 15 Jul 2025 11:01:54 +0800 Subject: [PATCH] =?UTF-8?q?20250715=20=E6=9B=B4=E6=96=B0=201.=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E5=8F=AF=E4=BB=A5=E4=BF=AE=E6=94=B9=E5=AB=8C?= =?UTF-8?q?=E7=96=91=E4=BA=BA=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EntrustAlterApplyServiceImpl.java | 98 ++++++++++++++----- 1 file changed, 76 insertions(+), 22 deletions(-) diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java index 605a7c7..4222933 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustAlterApplyServiceImpl.java @@ -21,14 +21,12 @@ import digital.laboratory.platform.entrustment.dto.MaterialDTO; import digital.laboratory.platform.entrustment.entity.CaseEvent; import digital.laboratory.platform.entrustment.entity.EntrustAlterApply; import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial; +import digital.laboratory.platform.entrustment.entity.Suspect; import digital.laboratory.platform.entrustment.enums.AnalysisOptionEnums; import digital.laboratory.platform.entrustment.enums.EntrustAlterApplyStatus; import digital.laboratory.platform.entrustment.mapper.EntrustAlterApplyMapper; import digital.laboratory.platform.entrustment.query.EntrustAlterApplyQuery; -import digital.laboratory.platform.entrustment.service.CaseEventService; -import digital.laboratory.platform.entrustment.service.EntrustAlterApplyService; -import digital.laboratory.platform.entrustment.service.EntrustmentIdentificationMaterialService; -import digital.laboratory.platform.entrustment.service.EntrustmentService; +import digital.laboratory.platform.entrustment.service.*; import digital.laboratory.platform.entrustment.vo.EntrustAlterApplyVO; import digital.laboratory.platform.entrustment.vo.EntrustmentVO; import digital.laboratory.platform.sys.entity.DrugLite; @@ -41,9 +39,7 @@ import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -65,6 +61,9 @@ public class EntrustAlterApplyServiceImpl extends ServiceImpl该委托案件的案件简要由 [").append(oldCaseInfo.getCaseBrief()).append("] 更改为 [").append(dto.getCaseBrief()).append("] 。"); } if (!oldCaseInfo.getCaseName().equals(dto.getCaseName())) { - opDate = initUpdateRecordInfo(opDate, updateRecordBuilder); + opDate = initUpdateRecordInfo(opDate, updateRecordBuilder, 1); updateRecordBuilder.append("
该委托案件的案件名称由 [").append(oldCaseInfo.getCaseName()).append("] 更改为 [").append(dto.getCaseName()).append("] 。"); } if (dto.getHappenTime() != null && !oldCaseInfo.getHappenTime().equals(dto.getHappenTime().toLocalDate())) { - opDate = initUpdateRecordInfo(opDate, updateRecordBuilder); + opDate = initUpdateRecordInfo(opDate, updateRecordBuilder, 1); updateRecordBuilder.append("
该委托案件的案发时间由 [").append(oldCaseInfo.getHappenTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))).append("] 更改为 [").append(dto.getHappenTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))).append("] 。"); } if (dto.getEntrustmentTime() != null && entrustVO.getEntrustmentTime().equals(dto.getEntrustmentTime())) { - opDate = initUpdateRecordInfo(opDate, updateRecordBuilder); + opDate = initUpdateRecordInfo(opDate, updateRecordBuilder, 1); updateRecordBuilder.append("
该委托案件的委托时间由 [").append(entrustVO.getEntrustmentTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).append("] 更改为 [").append(dto.getEntrustmentTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).append("] 。"); } @@ -249,13 +248,17 @@ public class EntrustAlterApplyServiceImpl extends ServiceImpl该委托案件的委托类型由 [").append(entrustVO.getEntrustmentType() == 0 ? "常规毒品" : "生物样本").append("] 更改为 [").append(dto.getEntrustmentType() == 0 ? "常规毒品" : "生物样本").append("] 。"); } - // 更新嫌疑人信息 if (CollUtil.isNotEmpty(dto.getSuspectList())) { - + processUpdateSuspectInfo(dto.getSuspectList(), entrustVO.getSuspects(), updateRecordBuilder, opDate); + suspectService.addSuspectList(dto.getSuspectList(), entrustVO.getId()); + // 删除旧的嫌疑人信息 + if (CollUtil.isNotEmpty(entrustVO.getSuspects())) { + suspectService.removeBatchByIds(entrustVO.getSuspects().stream().map(Suspect::getId).collect(Collectors.toList())); + } } // 2.修改检材 信息 // 这里之所以要取未更新前的信息是为了留痕 @@ -285,18 +288,74 @@ public class EntrustAlterApplyServiceImpl extends ServiceImpl newSuspectList, List oldSuspectList, StringBuilder updateRecordBuilder, LocalDateTime opDate) { + // 转map,便于后续操作 + Map oldSuspectMap = oldSuspectList.stream().collect(Collectors.toMap(Suspect::getId, Function.identity())); + for (Suspect suspect : newSuspectList) { + if (StrUtil.isBlank(suspect.getId()) || !oldSuspectMap.containsKey(suspect.getId())) { + // 新增嫌疑人 + opDate = initUpdateRecordInfo(opDate, updateRecordBuilder, 2); + updateRecordBuilder.append("
新增嫌疑人:姓名[").append(suspect.getName()) + .append("],身份证号[").append(suspect.getIdNumber()) + .append("],联系电话[").append(suspect.getPhoneNumber()).append("]"); + } else { + // 更新嫌疑人信息 + Suspect oldSuspect = oldSuspectMap.get(suspect.getId()); + boolean changeName = !Objects.equals(oldSuspect.getName(), suspect.getName()); + boolean changeIdNumber = !Objects.equals(oldSuspect.getIdNumber(), suspect.getIdNumber()); + boolean changePhone = !Objects.equals(oldSuspect.getPhoneNumber(), suspect.getPhoneNumber()); + if (changeName || changeIdNumber || changePhone) { + opDate = initUpdateRecordInfo(opDate, updateRecordBuilder, 2); + updateRecordBuilder.append("
原嫌疑人信息:姓名[").append(oldSuspect.getName()) + .append("],身份证号[").append(oldSuspect.getIdNumber()) + .append("],联系电话[").append(oldSuspect.getPhoneNumber()).append("]") + .append(" 更改为:姓名[") + .append(suspect.getName()).append("],身份证号[") + .append(suspect.getIdNumber()) + .append("],联系电话[") + .append(suspect.getPhoneNumber()).append("]"); + } + } + } + // 删除不存在的嫌疑人 + Set existIdList = newSuspectList.stream().map(Suspect::getId).collect(Collectors.toSet()); + for (Suspect suspect : oldSuspectList) { + if (!existIdList.contains(suspect.getId())) { + opDate = initUpdateRecordInfo(opDate, updateRecordBuilder, 2); + updateRecordBuilder.append("
删除嫌疑人:姓名[").append(suspect.getName()) + .append("],身份证号[").append(suspect.getIdNumber()) + .append("],联系电话[").append(suspect.getPhoneNumber()).append("]"); + } + } + } + /** * 初始化更新记录信息的方法 * 此方法主要用于当操作日期为空时,初始化操作日期为当前时间,并更新记录信息 * * @param opDate 操作日期,可能为null * @param updateRecordBuilder 更新记录的字符串构建器,用于累积更新记录信息 + * @param initType 初始化类型,用于标识当前更新的是案件信息还是嫌疑人信息还是检材信息,此处传入1表示案件信息,2表示嫌疑人信息,3表示检材信息 * @return 返回初始化或更新后的操作日期 */ - private LocalDateTime initUpdateRecordInfo(LocalDateTime opDate, StringBuilder updateRecordBuilder) { + private LocalDateTime initUpdateRecordInfo(LocalDateTime opDate, StringBuilder updateRecordBuilder, Integer initType) { if (opDate == null) { opDate = LocalDateTime.now(); - updateRecordBuilder.append(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).append("
案件更新记录:"); + updateRecordBuilder.append(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + if (initType == 1) { + updateRecordBuilder.append("
案件信息的更新记录:"); + } else if (initType == 2) { + updateRecordBuilder.append("
嫌疑人信息的更新记录:"); + } else if (initType == 3) { + updateRecordBuilder.append("
检材信息的更新记录:"); + } } return opDate; } @@ -350,12 +409,7 @@ public class EntrustAlterApplyServiceImpl extends ServiceImpl检材信息的更新记录:"); + initUpdateRecordInfo(opDate, updateRecordBuilder, 3); } updateRecordBuilder .append("
")