You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fu-hsi-service/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java

103 lines
4.2 KiB
Java

package com.supervision.police.service.impl;
import cn.hutool.core.lang.Assert;
import com.supervision.police.daoService.CaseEvidenceDaoService;
import com.supervision.police.daoService.EvidenceFileDaoService;
import com.supervision.police.domain.CaseEvidence;
import com.supervision.police.domain.EvidenceFile;
import com.supervision.police.dto.CaseEvidenceDetailDTO;
import com.supervision.police.service.CaseEvidenceService;
import com.supervision.police.dto.CaseEvidenceDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class CaseEvidenceServiceImpl implements CaseEvidenceService {
private final CaseEvidenceDaoService caseEvidenceDaoService;
private final EvidenceFileDaoService evidenceFileDaoService;
@Override
@Transactional(transactionManager = "dataSourceTransactionManager",rollbackFor = Exception.class)
public String saveEvidence(CaseEvidenceDTO caseEvidenceDTO) {
// 必填校验
caseEvidencePersistenceAssert(caseEvidenceDTO);
// 保存证据信息
CaseEvidence caseEvidence = caseEvidenceDTO.toCaseEvidence();
caseEvidenceDaoService.save(caseEvidence);
//保存文件关联信息
caseEvidenceDTO.getFileIdList().forEach(fileId -> {
EvidenceFile evidenceFile = new EvidenceFile();
evidenceFile.setFileId(fileId);
evidenceFile.setEvidenceId(caseEvidence.getId());
evidenceFileDaoService.save(evidenceFile);
});
return caseEvidence.getId();
}
private void caseEvidencePersistenceAssert(CaseEvidenceDTO caseEvidenceDTO) {
Assert.notEmpty(caseEvidenceDTO.getCaseId(),"案件id不能为空");
Assert.notEmpty(caseEvidenceDTO.getEvidenceName(),"证据名称不能为空");
Assert.notEmpty(caseEvidenceDTO.getEvidenceType(),"证据类型不能为空");
Assert.notEmpty(caseEvidenceDTO.getProvider(),"证据提供人不能为空");
Assert.notEmpty(caseEvidenceDTO.getFileIdList(),"文件id不能为空");
}
@Override
@Transactional(transactionManager = "dataSourceTransactionManager",rollbackFor = Exception.class)
public String updateEvidence(CaseEvidenceDTO caseEvidenceDTO) {
Assert.notEmpty(caseEvidenceDTO.getId(),"证据id不能为空");
caseEvidencePersistenceAssert(caseEvidenceDTO);
caseEvidenceDaoService.getOptById(caseEvidenceDTO.getId()).orElseThrow(() -> new IllegalArgumentException("证据信息不存在"));
// 更新证据信息
CaseEvidence caseEvidence = caseEvidenceDTO.toCaseEvidence();
caseEvidenceDaoService.updateById(caseEvidence);
// 更新文件关联信息
evidenceFileDaoService.lambdaUpdate().eq(EvidenceFile::getEvidenceId,caseEvidence.getId()).remove();
caseEvidenceDTO.getFileIdList().forEach(fileId -> {
EvidenceFile evidenceFile = new EvidenceFile();
evidenceFile.setFileId(fileId);
evidenceFile.setEvidenceId(caseEvidence.getId());
evidenceFileDaoService.save(evidenceFile);
});
return caseEvidenceDTO.getId();
}
@Override
@Transactional(transactionManager = "dataSourceTransactionManager",rollbackFor = Exception.class)
public boolean deleteEvidence(String evidenceId) {
boolean remove = caseEvidenceDaoService.lambdaUpdate().eq(CaseEvidence::getId, evidenceId).remove();
if (remove){
evidenceFileDaoService.lambdaUpdate().eq(EvidenceFile::getEvidenceId,evidenceId).remove();
}
return remove;
}
@Override
@Transactional(transactionManager = "dataSourceTransactionManager",rollbackFor = Exception.class)
public List<CaseEvidenceDetailDTO> queryEvidenceList(String caseId) {
return caseEvidenceDaoService.queryEvidenceList(caseId);
}
@Override
@Transactional(transactionManager = "dataSourceTransactionManager",rollbackFor = Exception.class)
public CaseEvidenceDetailDTO queryEvidenceDetail(String evidenceId) {
return caseEvidenceDaoService.queryEvidenceDetail(evidenceId);
}
}