|
@@ -0,0 +1,152 @@
|
|
|
+package org.springblade.archive.service.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springblade.archive.entity.ArchiveExaminingReport;
|
|
|
+import org.springblade.archive.entity.ArchiveExaminingReportDetail;
|
|
|
+import org.springblade.archive.mapper.ArchiveExaminingReportMapper;
|
|
|
+import org.springblade.archive.service.IArchiveExaminingReportDetailService;
|
|
|
+import org.springblade.archive.service.IArchiveExaminingReportService;
|
|
|
+import org.springblade.archive.socket.WebSocketServer;
|
|
|
+import org.springblade.archive.vo.ArchiveExaminingSocketVo;
|
|
|
+import org.springblade.common.constant.ArchiveConstant;
|
|
|
+import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.secure.utils.SecureUtil;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Param
|
|
|
+ * @Author wangwl
|
|
|
+ * @Date 2023/4/20 17:36
|
|
|
+ **/
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class ArchiveExaminingReportImpl extends BaseServiceImpl<ArchiveExaminingReportMapper, ArchiveExaminingReport> implements IArchiveExaminingReportService {
|
|
|
+ private final WebSocketServer webSocketServer;
|
|
|
+ private final IArchiveExaminingReportDetailService detailService;
|
|
|
+ /**
|
|
|
+ * 推送状态到前端
|
|
|
+ * @param id
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ @Override
|
|
|
+ public void pushStatusBySocket(Long userId,Long id) throws IOException, InterruptedException {
|
|
|
+ Integer status;
|
|
|
+ //获取检测状态,如果正在检测,则一直推送
|
|
|
+ do {
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ //获取最新检测的状态
|
|
|
+ ArchiveExaminingReport report = this.getById(id);
|
|
|
+ status = report.getStatus();
|
|
|
+ //获取检测详情
|
|
|
+ List<ArchiveExaminingReportDetail> list = detailService.list(new LambdaQueryWrapper<ArchiveExaminingReportDetail>()
|
|
|
+ .eq(ArchiveExaminingReportDetail::getReportId, id));
|
|
|
+ ArchiveExaminingSocketVo vo = new ArchiveExaminingSocketVo(status,list);
|
|
|
+ webSocketServer.sendMessagesToArchive(userId+"", JSON.toJSONString(vo));
|
|
|
+ status = report.getStatus();
|
|
|
+ }while (status != 4);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 四性检测
|
|
|
+ * @param id
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ @Override
|
|
|
+ public void getExamining(Long projectId,Long id) throws InterruptedException {
|
|
|
+ ArchiveExaminingReport report = new ArchiveExaminingReport();
|
|
|
+ report.setId(id);
|
|
|
+ report.setStatus(2);
|
|
|
+ this.updateById(report);
|
|
|
+ //检测中
|
|
|
+ //真实性
|
|
|
+ Thread.sleep(7000L);
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对固化信息有效性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对元数据项数据长度检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对元数据项数据类型、格式检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对设定值域的元数据项值域符合度检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对档号规范性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对内容数据的电子属性一致性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对元数据项数据重复性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对元数据是否关联内容数据检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对信息包目录结构规范性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对信息包一致性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对电子档案封装包规范性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_AUTHENTICITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对电子档案封装包电子前面有效性检测",0,"无"));
|
|
|
+ Thread.sleep(7000L);
|
|
|
+ //完整性
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对总件数相符性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对总字节数相符性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对元数据项完整性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对元数据必填著录项目检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对过程信息完整性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对连续性元数据项检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对内容数据完整性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对附件数据完整性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对归档范围检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对信息包元数据完整性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_INTEGRALITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对信息包内容数据完整性检测",0,"无"));
|
|
|
+ //可用性
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对信息包中元数据的可读性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对目标数据库中的元数据可访问下检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对内容数据格式检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对内容数据的可读性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对内容数据格式长期可用性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对软硬件环境合规性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对信息包中包含的内容数据格式合规性检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_USABILITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对备份数据可恢复性检测",0,"无"));
|
|
|
+ Thread.sleep(7000L);
|
|
|
+ //安全性
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_SECURITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对系统环境中是否安装杀毒软件检测",0,"无"));
|
|
|
+ detailService.save(new ArchiveExaminingReportDetail(projectId,id, ArchiveConstant.ARCHIVE_EXAMINING_SECURITY,
|
|
|
+ ArchiveConstant.ARCHIVE_EXAMINING_STANDARD+"对病毒感染检测",0,"无"));
|
|
|
+ Thread.sleep(7000L);
|
|
|
+ //生成报告,生成PDF
|
|
|
+ report.setStatus(3);
|
|
|
+ this.updateById(report);
|
|
|
+ //完成
|
|
|
+ report.setStatus(4);
|
|
|
+ this.updateById(report);
|
|
|
+ }
|
|
|
+}
|