|
|
|
@ -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<EntrustAlterApplyM |
|
|
|
|
@Resource |
|
|
|
|
private EntrustmentService entrustmentService; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private SuspectService suspectService; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private EntrustmentIdentificationMaterialService entrustmentIdentificationMaterialService; |
|
|
|
|
|
|
|
|
@ -228,19 +227,19 @@ public class EntrustAlterApplyServiceImpl extends ServiceImpl<EntrustAlterApplyM |
|
|
|
|
|
|
|
|
|
boolean isTypeName = false; |
|
|
|
|
if (!oldCaseInfo.getCaseBrief().equals(dto.getCaseBrief())) { |
|
|
|
|
opDate = initUpdateRecordInfo(opDate, updateRecordBuilder); |
|
|
|
|
opDate = initUpdateRecordInfo(opDate, updateRecordBuilder, 1); |
|
|
|
|
updateRecordBuilder.append("<br>该委托案件的案件简要由 [").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("<br>该委托案件的案件名称由 [").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("<br>该委托案件的案发时间由 [").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("<br>该委托案件的委托时间由 [").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<EntrustAlterApplyM |
|
|
|
|
if (dto.getEntrustmentType() != null && dto.getEntrustmentType() != entrustVO.getEntrustmentType()) { |
|
|
|
|
isTypeName = true; |
|
|
|
|
entrustVO.setEntrustmentType(dto.getEntrustmentType()); |
|
|
|
|
opDate = initUpdateRecordInfo(opDate, updateRecordBuilder); |
|
|
|
|
opDate = initUpdateRecordInfo(opDate, updateRecordBuilder, 1); |
|
|
|
|
updateRecordBuilder.append("<br>该委托案件的委托类型由 [").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<EntrustAlterApplyM |
|
|
|
|
.set(dto.getFinished(), EntrustAlterApply::getStatus, EntrustAlterApplyStatus.FINISHED.getStatus())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 处理更新嫌疑人信息的方法 |
|
|
|
|
* @param newSuspectList 新嫌疑人列表 |
|
|
|
|
* @param oldSuspectList 旧嫌疑人列表 |
|
|
|
|
* @param updateRecordBuilder 更新记录构建器,用于累积更新记录信息 |
|
|
|
|
* @param opDate 操作日期,用于标识是否有更新发生 |
|
|
|
|
*/ |
|
|
|
|
private void processUpdateSuspectInfo(List<Suspect> newSuspectList, List<Suspect> oldSuspectList, StringBuilder updateRecordBuilder, LocalDateTime opDate) { |
|
|
|
|
// 转map,便于后续操作
|
|
|
|
|
Map<String, Suspect> 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("<br>新增嫌疑人:姓名[").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("<br>原嫌疑人信息:姓名[").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<String> 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("<br>删除嫌疑人:姓名[").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("<br>案件更新记录:"); |
|
|
|
|
updateRecordBuilder.append(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
|
|
|
|
if (initType == 1) { |
|
|
|
|
updateRecordBuilder.append("<br>案件信息的更新记录:"); |
|
|
|
|
} else if (initType == 2) { |
|
|
|
|
updateRecordBuilder.append("<br>嫌疑人信息的更新记录:"); |
|
|
|
|
} else if (initType == 3) { |
|
|
|
|
updateRecordBuilder.append("<br>检材信息的更新记录:"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return opDate; |
|
|
|
|
} |
|
|
|
@ -350,12 +409,7 @@ public class EntrustAlterApplyServiceImpl extends ServiceImpl<EntrustAlterApplyM |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (index == 1) { |
|
|
|
|
if (opDate == null) { |
|
|
|
|
// 等于null 证明案件简要并没有修改
|
|
|
|
|
opDate = LocalDateTime.now(); |
|
|
|
|
updateRecordBuilder.append(opDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
|
|
|
|
} |
|
|
|
|
updateRecordBuilder.append("<br>检材信息的更新记录:"); |
|
|
|
|
initUpdateRecordInfo(opDate, updateRecordBuilder, 3); |
|
|
|
|
} |
|
|
|
|
updateRecordBuilder |
|
|
|
|
.append("<br>") |
|
|
|
|