Commit bd54c0d1 authored by huyuchen's avatar huyuchen

huych-电子档案批量导入第三次提交

parent 4338a7a0
...@@ -53,6 +53,11 @@ public interface ArchiveConstants { ...@@ -53,6 +53,11 @@ public interface ArchiveConstants {
*/ */
String ATTA_RELATION_TYPE_FEEDBACK = "3"; String ATTA_RELATION_TYPE_FEEDBACK = "3";
/**
* 附件关系类型-人员附件
*/
String ATTA_RELATION_TYPE_PER = "4";
/** /**
* 附件状态-可用 * 附件状态-可用
*/ */
...@@ -83,26 +88,6 @@ public interface ArchiveConstants { ...@@ -83,26 +88,6 @@ public interface ArchiveConstants {
*/ */
String MATERIAL_TYPE_LEAVE = "离职"; String MATERIAL_TYPE_LEAVE = "离职";
/**
* 资料类型编码-存量
*/
String MATERIAL_TYPE_CODE_STOCK = "0";
/**
* 资料类型编码-新签
*/
String MATERIAL_TYPE_CODE_NEW = "1";
/**
* 资料类型编码-续签
*/
String MATERIAL_TYPE_CODE_RENEW = "2";
/**
* 资料类型编码-离职
*/
String MATERIAL_TYPE_CODE_LEAVE = "3";
/** /**
* 处理结果-成功 * 处理结果-成功
*/ */
......
package com.yifu.cloud.plus.v1.batch.controller; package com.yifu.cloud.plus.v1.batch.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yifu.cloud.plus.v1.batch.entity.TAttaInfo;
import com.yifu.cloud.plus.v1.batch.service.FileUploadService; import com.yifu.cloud.plus.v1.batch.service.FileUploadService;
import com.yifu.cloud.plus.v1.batch.service.TAttaInfoService; import com.yifu.cloud.plus.v1.batch.service.TAttaInfoService;
import com.yifu.cloud.plus.v1.batch.entity.TAttaInfo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil; import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
...@@ -18,7 +18,9 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -18,7 +18,9 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author fang * @author fang
...@@ -187,8 +189,9 @@ public class FileUploadController { ...@@ -187,8 +189,9 @@ public class FileUploadController {
} }
// 构建OSS文件路径,如果文件名重复则添加后缀 // 构建OSS文件路径,如果文件名重复则添加后缀
String key = buildUniqueFilePath(filePath, fileName); Map<String, String> keyMap = buildUniqueFilePath(filePath, fileName);
String key = keyMap.get("key");
fileName = keyMap.get("name");
// 校验文件类型 // 校验文件类型
if (!Common.checkFile(key)) { if (!Common.checkFile(key)) {
return R.failed("非法上传类型:" + fileName); return R.failed("非法上传类型:" + fileName);
...@@ -245,11 +248,14 @@ public class FileUploadController { ...@@ -245,11 +248,14 @@ public class FileUploadController {
* @param fileName 文件名 * @param fileName 文件名
* @return 唯一的文件路径 * @return 唯一的文件路径
*/ */
private String buildUniqueFilePath(String filePath, String fileName) { private Map<String, String> buildUniqueFilePath(String filePath, String fileName) {
Map<String, String> fileMap = new HashMap<>();
// 检查文件是否存在 // 检查文件是否存在
if (!fileUploadService.checkFileExists(filePath+ "/" + fileName)) { if (!fileUploadService.checkFileExists(filePath+ "/" + fileName)) {
return filePath+ "/" + fileName; fileMap.put("key",filePath+ "/" + fileName);
fileMap.put("name",fileName);
return fileMap;
} }
// 文件存在,添加后缀 // 文件存在,添加后缀
...@@ -264,6 +270,8 @@ public class FileUploadController { ...@@ -264,6 +270,8 @@ public class FileUploadController {
nameWithoutExt = fileName; nameWithoutExt = fileName;
extension = ""; extension = "";
} }
return filePath + "/" + nameWithoutExt + "_" + System.currentTimeMillis() + extension; fileMap.put("key",filePath + "/" + nameWithoutExt + "_" + System.currentTimeMillis() + extension);
fileMap.put("name",nameWithoutExt + "_" + System.currentTimeMillis() + extension);
return fileMap;
} }
} }
...@@ -8,6 +8,8 @@ import com.yifu.cloud.plus.v1.batch.vo.TElectronicArchiveDetailSearchVo; ...@@ -8,6 +8,8 @@ import com.yifu.cloud.plus.v1.batch.vo.TElectronicArchiveDetailSearchVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 电子档案明细表 * 电子档案明细表
* *
...@@ -22,4 +24,6 @@ public interface TElectronicArchiveDetailMapper extends BaseMapper<TElectronicAr ...@@ -22,4 +24,6 @@ public interface TElectronicArchiveDetailMapper extends BaseMapper<TElectronicAr
* @return * @return
*/ */
IPage<TElectronicArchiveDetail> getTElectronicArchiveDetailPage(Page<TElectronicArchiveDetail> page, @Param("tElectronicArchiveDetail") TElectronicArchiveDetailSearchVo tElectronicArchiveDetail); IPage<TElectronicArchiveDetail> getTElectronicArchiveDetailPage(Page<TElectronicArchiveDetail> page, @Param("tElectronicArchiveDetail") TElectronicArchiveDetailSearchVo tElectronicArchiveDetail);
List<TElectronicArchiveDetail> getTElectronicArchiveDetailList(@Param("tElectronicArchiveDetail") TElectronicArchiveDetailSearchVo tElectronicArchiveDetail);
} }
...@@ -24,6 +24,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.IdNameNoVo; ...@@ -24,6 +24,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.IdNameNoVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainListVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainListVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainSelectVo; import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainSelectVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*; import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser; import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
...@@ -38,7 +39,6 @@ import org.springframework.cache.support.SimpleValueWrapper; ...@@ -38,7 +39,6 @@ import org.springframework.cache.support.SimpleValueWrapper;
import org.springframework.mock.web.MockMultipartFile; import org.springframework.mock.web.MockMultipartFile;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
...@@ -189,14 +189,24 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -189,14 +189,24 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
Map<String,String> map = new HashMap<>(); Map<String,String> map = new HashMap<>();
List<String> deptNoList = new ArrayList<>(); List<String> deptNoList = new ArrayList<>();
if (Common.isNotNull(user) && !CommonConstants.ZERO_STRING.equals(user.getSystemFlag())) {
boolean isCheck = true;
List<Long> roleList = user.getClientRoleMap().get(ClientNameConstants.CLIENT_MVP);
if (CommonConstants.ZERO_STRING.equals(user.getSystemFlag()) ||
(Common.isNotNull(roleList) && roleList.stream().anyMatch(role -> role == 1569585030423158786L))) {
isCheck = false;
}
if (Common.isNotNull(user) && isCheck) {
deptNoList = getDeptNoList(user.getId()); deptNoList = getDeptNoList(user.getId());
} }
for (ArchiveImportVO data : dataList) { for (ArchiveImportVO data : dataList) {
try { try {
//超管和档案管理员无需校验项目权限 //超管和档案管理员无需校验项目权限
if (Common.isNotNull(user) && !CommonConstants.ZERO_STRING.equals(user.getSystemFlag())) { if (Common.isNotNull(user) && isCheck) {
if (Common.isEmpty(deptNoList)) { if (Common.isEmpty(deptNoList) || !deptNoList.contains(data.getDeptNo())) {
ErrorMessage<ArchiveImportVO> errorMessage = new ErrorMessage<>(data.getRowIndex() ErrorMessage<ArchiveImportVO> errorMessage = new ErrorMessage<>(data.getRowIndex()
,InsurancesConstants.DEPT_NO_NOT_IN_USER_DEPT_LIST,data); ,InsurancesConstants.DEPT_NO_NOT_IN_USER_DEPT_LIST,data);
errorMessageList.add(errorMessage); errorMessageList.add(errorMessage);
...@@ -374,7 +384,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -374,7 +384,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
* 第二步:导入ZIP文件 * 第二步:导入ZIP文件
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public R<?> importZipFile(MultipartFile file, String taskId) { public R<?> importZipFile(MultipartFile file, String taskId) {
YifuUser user = SecurityUtils.getUser(); YifuUser user = SecurityUtils.getUser();
if (null == user) { if (null == user) {
...@@ -566,7 +575,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -566,7 +575,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
taskService.updateById(task); taskService.updateById(task);
// 生成反馈表 // 生成反馈表
generateFeedbackExcel(taskId, feedbackList); generateFeedbackExcel(task, feedbackList);
return R.ok("处理完成"); return R.ok("处理完成");
} catch (Exception e) { } catch (Exception e) {
...@@ -761,15 +770,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -761,15 +770,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
private void processFile(File file, TElectronicArchiveDetail detail, String materialType, private void processFile(File file, TElectronicArchiveDetail detail, String materialType,
List<ArchiveFeedbackVO> feedbackList, Set<String> materialTypes) { List<ArchiveFeedbackVO> feedbackList, Set<String> materialTypes) {
String fileName = file.getName(); String fileName = file.getName();
long fileSize = file.length();
// 1. 校验文件大小
// if (fileSize > ArchiveConstants.SINGLE_FILE_MAX_SIZE) {
// ArchiveFeedbackVO feedback = createFeedbackVO(detail, materialType,
// ArchiveConstants.PROCESS_RESULT_FAILED, "单个文件大小超过15M:" + fileName);
// feedbackList.add(feedback);
// return;
// }
// 2. 校验文件格式 // 2. 校验文件格式
if (!checkFileFormat(fileName)) { if (!checkFileFormat(fileName)) {
...@@ -916,7 +916,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -916,7 +916,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
/** /**
* 生成反馈表Excel * 生成反馈表Excel
*/ */
private void generateFeedbackExcel(String taskId, List<ArchiveFeedbackVO> feedbackList) { private void generateFeedbackExcel(TElectronicArchiveTask task, List<ArchiveFeedbackVO> feedbackList) {
if (CollUtil.isEmpty(feedbackList)) { if (CollUtil.isEmpty(feedbackList)) {
return; return;
} }
...@@ -924,7 +924,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -924,7 +924,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
try { try {
// 创建临时文件 // 创建临时文件
String tempFilePath = System.getProperty("java.io.tmpdir") + File.separator + String tempFilePath = System.getProperty("java.io.tmpdir") + File.separator +
"feedback_" + System.currentTimeMillis() + ".xlsx"; task.getTaskCode() + "结果反馈表" + ".xlsx";
File feedbackFile = new File(tempFilePath); File feedbackFile = new File(tempFilePath);
// 使用EasyExcel生成反馈表 // 使用EasyExcel生成反馈表
...@@ -939,13 +939,13 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -939,13 +939,13 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
fileToMultipartFile(feedbackFile), fileToMultipartFile(feedbackFile),
"archive/feedback", "archive/feedback",
ArchiveConstants.ATTA_RELATION_TYPE_FEEDBACK, ArchiveConstants.ATTA_RELATION_TYPE_FEEDBACK,
taskId task.getId()
); );
if (R.isSuccess(uploadResult)) { if (R.isSuccess(uploadResult)) {
log.info("反馈表生成成功,任务ID:{}", taskId); log.info("反馈表生成成功");
} else { } else {
log.error("反馈表上传失败,任务ID:{}", taskId); log.error("反馈表上传失败");
} }
} }
...@@ -953,7 +953,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -953,7 +953,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
FileUtil.del(feedbackFile); FileUtil.del(feedbackFile);
} catch (Exception e) { } catch (Exception e) {
log.error("生成反馈表失败,任务ID:{}", taskId, e); log.error("生成反馈表失败:", e);
} }
} }
...@@ -1021,7 +1021,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -1021,7 +1021,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
* 单个新增人员附件 * 单个新增人员附件
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public R<?> uploadSinglePersonArchive(String empIdcard, String empName, String deptNo, public R<?> uploadSinglePersonArchive(String empIdcard, String empName, String deptNo,
String deptName, String materialType, MultipartFile[] files) { String deptName, String materialType, MultipartFile[] files) {
YifuUser user = SecurityUtils.getUser(); YifuUser user = SecurityUtils.getUser();
...@@ -1173,7 +1172,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -1173,7 +1172,6 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
* 前端先调用文件上传接口获取附件ID列表,再调用此方法更新附件的domainId * 前端先调用文件上传接口获取附件ID列表,再调用此方法更新附件的domainId
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public R<?> uploadSinglePersonArchiveByAttaIds(String empIdcard, String empName, String deptNo, public R<?> uploadSinglePersonArchiveByAttaIds(String empIdcard, String empName, String deptNo,
String deptName, String materialType, List<String> attaIdList) { String deptName, String materialType, List<String> attaIdList) {
YifuUser user = SecurityUtils.getUser(); YifuUser user = SecurityUtils.getUser();
...@@ -1245,6 +1243,21 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo ...@@ -1245,6 +1243,21 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
detail.setFileCity(empInfo.getFileCity()); detail.setFileCity(empInfo.getFileCity());
detail.setFileTown(empInfo.getFileTown()); detail.setFileTown(empInfo.getFileTown());
detailService.save(detail); detailService.save(detail);
// 创建任务,假删除任务
TElectronicArchiveTask task = new TElectronicArchiveTask();
task.setTaskCode("DZDAPL_SINGLE");
task.setUploadFileName("单个上传");
task.setStatus(ArchiveConstants.TASK_STATUS_GENERATED);
task.setDeleteFlag(CommonConstants.ONE_STRING);
taskService.save(task);
// 建立任务和档案详情的关联关系
TTaskArchiveRelation relation = new TTaskArchiveRelation();
relation.setTaskId(task.getId());
relation.setArchiveDetailId(detail.getId());
relationService.save(relation);
} else { } else {
// 存在则更新资料类型(追加) // 存在则更新资料类型(追加)
Set<String> existTypes = new HashSet<>(); Set<String> existTypes = new HashSet<>();
......
...@@ -80,6 +80,7 @@ public class FileUploadServiceImpl implements FileUploadService { ...@@ -80,6 +80,7 @@ public class FileUploadServiceImpl implements FileUploadService {
extension = ""; extension = "";
} }
key = filePath + "/" + nameWithoutExt + "_" + System.currentTimeMillis() + extension; key = filePath + "/" + nameWithoutExt + "_" + System.currentTimeMillis() + extension;
fileName = nameWithoutExt + "_" + System.currentTimeMillis() + extension;
} }
boolean flag = ossUtil.uploadFileByStream(file.getInputStream(), key, "yf-hr-efile-source"); boolean flag = ossUtil.uploadFileByStream(file.getInputStream(), key, "yf-hr-efile-source");
......
...@@ -19,6 +19,7 @@ import com.yifu.cloud.plus.v1.batch.service.TElectronicArchiveDetailService; ...@@ -19,6 +19,7 @@ import com.yifu.cloud.plus.v1.batch.service.TElectronicArchiveDetailService;
import com.yifu.cloud.plus.v1.batch.service.TElectronicArchiveTaskService; import com.yifu.cloud.plus.v1.batch.service.TElectronicArchiveTaskService;
import com.yifu.cloud.plus.v1.batch.service.TTaskArchiveRelationService; import com.yifu.cloud.plus.v1.batch.service.TTaskArchiveRelationService;
import com.yifu.cloud.plus.v1.batch.vo.*; import com.yifu.cloud.plus.v1.batch.vo.*;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainListVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
...@@ -212,11 +213,25 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -212,11 +213,25 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 用于存储需要下载的档案及其附件 // 用于存储需要下载的档案及其附件
Map<String, ArchiveDownloadInfo> downloadMap = new LinkedHashMap<>(); Map<String, ArchiveDownloadInfo> downloadMap = new LinkedHashMap<>();
List<String> deptNoList = new ArrayList<>();
YifuUser user = SecurityUtils.getUser();
boolean isCheck = true;
List<Long> roleList = user.getClientRoleMap().get(ClientNameConstants.CLIENT_MVP);
if (CommonConstants.ZERO_STRING.equals(user.getSystemFlag()) || (Common.isNotNull(roleList)
&& (roleList.stream().anyMatch(role -> role == 1569585030423158786L)
|| roleList.stream().anyMatch(role -> role == 2003347621962379266L)))) {
isCheck = false;
}
if (Common.isNotNull(user) && isCheck) {
deptNoList = getDeptNoList(user.getId());
}
try { try {
// 1. 校验请求并查询档案信息 // 1. 校验请求并查询档案信息
for (ArchiveBatchDownloadRequestVO request : requestList) { for (ArchiveBatchDownloadRequestVO request : requestList) {
try { try {
validateAndPrepareDownload(request, downloadMap, feedbackList); validateAndPrepareDownload(request, downloadMap, feedbackList, isCheck, deptNoList);
} catch (Exception e) { } catch (Exception e) {
log.error("处理下载请求失败,姓名:{},身份证:{},项目编码:{}", log.error("处理下载请求失败,姓名:{},身份证:{},项目编码:{}",
request.getEmpName(), request.getEmpIdcard(), request.getDeptNo(), e); request.getEmpName(), request.getEmpIdcard(), request.getDeptNo(), e);
...@@ -279,6 +294,29 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -279,6 +294,29 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
} }
} }
/**
* 获取项目权限
*
* @author huych
* @param userId
* @return {@link List< String>}
*/
public List<String> getDeptNoList(String userId){
List<String> deptList = new ArrayList<>(16);
try{
R<TSettleDomainListVo> settleDomainList = archivesDaprUtil.getSettleDomainIdsByUserId(userId);
if(Common.isNotNull(settleDomainList) && settleDomainList.getCode() == CommonConstants.SUCCESS){
TSettleDomainListVo data = settleDomainList.getData();
if (Optional.ofNullable(data).isPresent()){
deptList = data.getDeptNos();
}
}
}catch (Exception e){
log.error("查询项目信息出错:"+e);
}
return deptList;
}
/** /**
* 校验请求并准备下载信息 * 校验请求并准备下载信息
* *
...@@ -288,7 +326,14 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -288,7 +326,14 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
*/ */
private void validateAndPrepareDownload(ArchiveBatchDownloadRequestVO request, private void validateAndPrepareDownload(ArchiveBatchDownloadRequestVO request,
Map<String, ArchiveDownloadInfo> downloadMap, Map<String, ArchiveDownloadInfo> downloadMap,
List<ArchiveDownloadFeedbackVO> feedbackList) { List<ArchiveDownloadFeedbackVO> feedbackList,
boolean isCheck,
List<String> deptNoList) {
//项目权限校验
if (isCheck && !deptNoList.contains(request.getDeptNo())) {
feedbackList.add(createFeedbackVO(request, "没有该项目的权限"));
return;
}
// 1. 根据姓名、身份证、项目编码、项目名称查询电子档案明细 // 1. 根据姓名、身份证、项目编码、项目名称查询电子档案明细
LambdaQueryWrapper<TElectronicArchiveDetail> wrapper = Wrappers.<TElectronicArchiveDetail>lambdaQuery() LambdaQueryWrapper<TElectronicArchiveDetail> wrapper = Wrappers.<TElectronicArchiveDetail>lambdaQuery()
...@@ -569,33 +614,18 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -569,33 +614,18 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
return R.failed("电子档案明细不存在"); return R.failed("电子档案明细不存在");
} }
// 2. 校验任务是否存在 // 2. 校验资料类型是否有效
TElectronicArchiveTask task = taskService.getById(request.getTaskId());
if (task == null) {
return R.failed("任务不存在");
}
// 3. 校验任务和明细的关联关系
LambdaQueryWrapper<TTaskArchiveRelation> relationWrapper = Wrappers.<TTaskArchiveRelation>lambdaQuery()
.eq(TTaskArchiveRelation::getTaskId, request.getTaskId())
.eq(TTaskArchiveRelation::getArchiveDetailId, request.getDetailId());
TTaskArchiveRelation relation = relationService.getOne(relationWrapper);
if (relation == null) {
return R.failed("任务和档案明细没有关联关系");
}
// 4. 校验资料类型是否有效
if (!isValidMaterialType(request.getMaterialType())) { if (!isValidMaterialType(request.getMaterialType())) {
return R.failed("资料类型不正确,必须为:存量、新签、续签、离职"); return R.failed("资料类型不正确,必须为:存量、新签、续签、离职");
} }
// 5. 查询要删除的附件 // 3. 查询要删除的附件
List<TAttaInfo> attachments = attaInfoService.listByIds(request.getAttachmentIds()); List<TAttaInfo> attachments = attaInfoService.listByIds(request.getAttachmentIds());
if (CollUtil.isEmpty(attachments)) { if (CollUtil.isEmpty(attachments)) {
return R.failed("附件不存在"); return R.failed("附件不存在");
} }
// 6. 校验附件是否都属于该明细 // 4. 校验附件是否都属于该明细
for (TAttaInfo atta : attachments) { for (TAttaInfo atta : attachments) {
if (!request.getDetailId().equals(atta.getDomainId())) { if (!request.getDetailId().equals(atta.getDomainId())) {
return R.failed("附件【" + atta.getAttaName() + "】不属于该档案明细"); return R.failed("附件【" + atta.getAttaName() + "】不属于该档案明细");
...@@ -613,7 +643,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -613,7 +643,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
} }
} }
// 7. 逻辑删除附件(将状态更新为不可用) // 5. 逻辑删除附件(将状态更新为不可用)
int successCount = 0; int successCount = 0;
int failCount = 0; int failCount = 0;
StringBuilder failReasons = new StringBuilder(); StringBuilder failReasons = new StringBuilder();
...@@ -643,7 +673,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -643,7 +673,7 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
} }
} }
// 8. 检查该资料类型下是否还有其他可用附件 // 6. 检查该资料类型下是否还有其他可用附件
LambdaQueryWrapper<TAttaInfo> attaWrapper = Wrappers.<TAttaInfo>lambdaQuery() LambdaQueryWrapper<TAttaInfo> attaWrapper = Wrappers.<TAttaInfo>lambdaQuery()
.eq(TAttaInfo::getDomainId, request.getDetailId()) .eq(TAttaInfo::getDomainId, request.getDetailId())
.eq(TAttaInfo::getRelationType, ArchiveConstants.ATTA_RELATION_TYPE_ZIP) .eq(TAttaInfo::getRelationType, ArchiveConstants.ATTA_RELATION_TYPE_ZIP)
...@@ -651,12 +681,12 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -651,12 +681,12 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
.like(TAttaInfo::getAttaSrc, "/" + request.getMaterialType() + "/"); .like(TAttaInfo::getAttaSrc, "/" + request.getMaterialType() + "/");
long remainingCount = attaInfoService.count(attaWrapper); long remainingCount = attaInfoService.count(attaWrapper);
// 9. 如果该资料类型下没有附件了,从明细的资料类型字段中移除 // 7. 如果该资料类型下没有附件了,从明细的资料类型字段中移除
if (remainingCount == 0) { if (remainingCount == 0) {
updateDetailMaterialTypeAfterDelete(detail, request.getMaterialType()); updateDetailMaterialTypeAfterDelete(detail, request.getMaterialType());
} }
// 10. 返回结果 // 8. 返回结果
String resultMsg = String.format("删除完成,成功:%d个,失败:%d个", successCount, failCount); String resultMsg = String.format("删除完成,成功:%d个,失败:%d个", successCount, failCount);
if (failCount > 0) { if (failCount > 0) {
resultMsg += "。失败的附件:" + failReasons.toString(); resultMsg += "。失败的附件:" + failReasons.toString();
...@@ -1049,11 +1079,8 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -1049,11 +1079,8 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
// 1. 根据查询条件查询电子档案明细列表 // 1. 根据查询条件查询电子档案明细列表
initSearchVo(searchVo); initSearchVo(searchVo);
// 构建查询条件
LambdaQueryWrapper<TElectronicArchiveDetail> wrapper = buildQueryWrapper(searchVo);
// 查询符合条件的档案明细列表 // 查询符合条件的档案明细列表
List<TElectronicArchiveDetail> detailList = baseMapper.selectList(wrapper); List<TElectronicArchiveDetail> detailList = baseMapper.getTElectronicArchiveDetailList(searchVo);
// 2. 检查是否有查询结果 // 2. 检查是否有查询结果
if (CollUtil.isEmpty(detailList)) { if (CollUtil.isEmpty(detailList)) {
...@@ -1121,89 +1148,6 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic ...@@ -1121,89 +1148,6 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
} }
} }
/**
* 构建查询条件
*
* @param searchVo 查询VO
* @return 查询条件
*/
private LambdaQueryWrapper<TElectronicArchiveDetail> buildQueryWrapper(TElectronicArchiveDetailSearchVo searchVo) {
LambdaQueryWrapper<TElectronicArchiveDetail> wrapper = Wrappers.<TElectronicArchiveDetail>lambdaQuery()
.eq(TElectronicArchiveDetail::getDeleteFlag, CommonConstants.ZERO_STRING)
.eq(TElectronicArchiveDetail::getStatus, ArchiveConstants.DETAIL_STATUS_ENABLED);
// 姓名(模糊查询)
if (StrUtil.isNotBlank(searchVo.getEmpName())) {
wrapper.like(TElectronicArchiveDetail::getEmpName, searchVo.getEmpName());
}
// 身份证号(精确查询)
if (StrUtil.isNotBlank(searchVo.getEmpIdcard())) {
wrapper.eq(TElectronicArchiveDetail::getEmpIdcard, searchVo.getEmpIdcard());
}
// 项目编码(精确查询)
if (StrUtil.isNotBlank(searchVo.getDeptNo())) {
wrapper.eq(TElectronicArchiveDetail::getDeptNo, searchVo.getDeptNo());
}
// 项目名称(模糊查询)
if (StrUtil.isNotBlank(searchVo.getDeptName())) {
wrapper.like(TElectronicArchiveDetail::getDeptName, searchVo.getDeptName());
}
// 客户名称(模糊查询)
if (StrUtil.isNotBlank(searchVo.getCustomerName())) {
wrapper.like(TElectronicArchiveDetail::getCustomerName, searchVo.getCustomerName());
}
// 客户编码(精确查询)
if (StrUtil.isNotBlank(searchVo.getCustomerCode())) {
wrapper.eq(TElectronicArchiveDetail::getCustomerCode, searchVo.getCustomerCode());
}
// 资料类型(IN查询)
if (CollUtil.isNotEmpty(searchVo.getTypeList())) {
wrapper.and(w -> {
for (String type : searchVo.getTypeList()) {
w.or().like(TElectronicArchiveDetail::getMaterialType, type);
}
});
}
// 档案所在地-省
if (searchVo.getFileProvince() != null) {
wrapper.eq(TElectronicArchiveDetail::getFileProvince, searchVo.getFileProvince());
}
// 档案所在地-市
if (searchVo.getFileCity() != null) {
wrapper.eq(TElectronicArchiveDetail::getFileCity, searchVo.getFileCity());
}
// 档案所在地-县
if (searchVo.getFileTown() != null) {
wrapper.eq(TElectronicArchiveDetail::getFileTown, searchVo.getFileTown());
}
// 创建人
if (StrUtil.isNotBlank(searchVo.getCreateBy())) {
wrapper.eq(TElectronicArchiveDetail::getCreateBy, searchVo.getCreateBy());
}
// 创建时间区间
if (searchVo.getCreateTimes() != null && searchVo.getCreateTimes().length == 2) {
if (searchVo.getCreateTimes()[0] != null) {
wrapper.ge(TElectronicArchiveDetail::getCreateTime, searchVo.getCreateTimes()[0]);
}
if (searchVo.getCreateTimes()[1] != null) {
wrapper.le(TElectronicArchiveDetail::getCreateTime, searchVo.getCreateTimes()[1]);
}
}
return wrapper;
}
/** /**
* 准备单个明细的导出信息 * 准备单个明细的导出信息
* *
......
...@@ -105,4 +105,16 @@ ...@@ -105,4 +105,16 @@
</where> </where>
ORDER BY a.CREATE_TIME DESC ORDER BY a.CREATE_TIME DESC
</select> </select>
<!--tElectronicArchiveDetail简单分页查询-->
<select id="getTElectronicArchiveDetailList" resultMap="tElectronicArchiveDetailMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_electronic_archive_detail a
<where>
a.DELETE_FLAG = '0'
<include refid="tElectronicArchiveDetail_where"/>
</where>
ORDER BY a.CREATE_TIME DESC
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment