package com.ruoyi.process.service.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.deepoove.poi.XWPFTemplate;
|
import com.deepoove.poi.config.Configure;
|
import com.deepoove.poi.data.PictureRenderData;
|
import com.ruoyi.common.core.domain.entity.User;
|
import com.ruoyi.common.utils.QueryWrappers;
|
import com.ruoyi.device.mapper.DeviceMapper;
|
import com.ruoyi.framework.exception.ErrorException;
|
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
|
import com.ruoyi.inspect.util.UserUtils;
|
import com.ruoyi.process.dto.ProcessMethodVerifyDto;
|
import com.ruoyi.process.dto.ProcessMethodVerifyExportWordDto;
|
import com.ruoyi.process.mapper.ProcessMethodVerifyCalibrationsFileMapper;
|
import com.ruoyi.process.mapper.ProcessMethodVerifyMapper;
|
import com.ruoyi.process.mapper.ProcessMethodVerifyWorkFileMapper;
|
import com.ruoyi.process.pojo.*;
|
import com.ruoyi.process.service.*;
|
import com.ruoyi.system.mapper.UserMapper;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
|
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
|
import org.apache.poi.xwpf.usermodel.XWPFTable;
|
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
|
|
import jakarta.annotation.Resource;
|
import jakarta.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.net.URLEncoder;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.LinkedHashSet;
|
import java.util.Objects;
|
import java.util.Set;
|
|
/**
|
* 标准方法验证
|
*
|
* @author zhuo
|
* @since 2024-11-05
|
*/
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class ProcessMethodVerifyServiceImpl extends ServiceImpl<ProcessMethodVerifyMapper, ProcessMethodVerify> implements ProcessMethodVerifyService {
|
|
@Resource
|
private ProcessMethodVerifyCalibrationsFileService processMethodVerifyCalibrationsFileService;
|
@Resource
|
private ProcessMethodVerifyMethodFileService processMethodVerifyMethodFileService;
|
@Resource
|
private ProcessMethodVerifyWorkFileService processMethodVerifyWorkFileService;
|
@Resource
|
private ProcessMethodVerifyMachineAttachmentService processMethodVerifyMachineAttachmentService;
|
@Resource
|
private ProcessMethodVerifyCalibrationsFileMapper processMethodVerifyCalibrationsFileMapper;
|
@Resource
|
private ProcessMethodVerifyWorkFileMapper processMethodVerifyWorkFileMapper;
|
@Resource
|
private DeviceMapper deviceMapper;
|
|
@Resource
|
private UserMapper userMapper;
|
|
@Value("${file.path}")
|
private String imgUrl;
|
|
@Value("${wordUrl}")
|
private String wordUrl;
|
|
|
/**
|
* 标准方法跟新验证修改
|
*
|
* @param page
|
* @param methodVerifyDto
|
* @return
|
*/
|
@Override
|
public IPage<ProcessMethodVerify> pagesMethodVerify(Page page, ProcessMethodVerifyDto methodVerifyDto) {
|
if (methodVerifyDto.getOperationType() == null) {
|
throw new ErrorException("请选择是变更还是验证");
|
}
|
return baseMapper.pagesMethodVerify(page, QueryWrappers.queryWrappers(methodVerifyDto));
|
}
|
|
/**
|
* 新增标准方法验证
|
*
|
* @param methodVerifyDto
|
* @return
|
*/
|
@Override
|
public boolean addMethodSearchNew(ProcessMethodVerifyDto methodVerifyDto) {
|
if (methodVerifyDto.getOperationType() == null) {
|
throw new ErrorException("请选择是变更还是验证");
|
}
|
validateWordVerification(methodVerifyDto);
|
// 新增
|
baseMapper.insert(methodVerifyDto);
|
|
// 判断确认人是否为空
|
if (StringUtils.isNotBlank(methodVerifyDto.getConfirmUser())) {
|
// 添加上岗证
|
this.addWorkFile(methodVerifyDto);
|
}
|
|
// 新增设备信息
|
if (CollectionUtils.isNotEmpty(methodVerifyDto.getMachineAttachmentList())) {
|
this.addDevice(methodVerifyDto);
|
}
|
|
return true;
|
}
|
|
/**
|
* 查询标准方法验证详情
|
*
|
* @param methodVerifyId
|
* @return
|
*/
|
@Override
|
public ProcessMethodVerifyDto getMethodVerifyOne(Integer methodVerifyId) {
|
ProcessMethodVerify processMethodVerify = baseMapper.selectById(methodVerifyId);
|
ProcessMethodVerifyDto processMethodVerifyDto = new ProcessMethodVerifyDto();
|
BeanUtil.copyProperties(processMethodVerify, processMethodVerifyDto);
|
|
// 查询设备详情
|
processMethodVerifyDto.setMachineAttachmentList(processMethodVerifyMachineAttachmentService.list(Wrappers.<ProcessMethodVerifyMachineAttachment>lambdaQuery()
|
.eq(ProcessMethodVerifyMachineAttachment::getMethodVerifyId, methodVerifyId)));
|
// 查询原始记录
|
processMethodVerifyDto.setMethodFileList(processMethodVerifyMethodFileService.list(Wrappers.<ProcessMethodVerifyMethodFile>lambdaQuery()
|
.eq(ProcessMethodVerifyMethodFile::getMethodVerifyId, methodVerifyId)));
|
// 查询上岗证
|
processMethodVerifyDto.setWorkFileList(processMethodVerifyWorkFileService.list(Wrappers.<ProcessMethodVerifyWorkFile>lambdaQuery()
|
.eq(ProcessMethodVerifyWorkFile::getMethodVerifyId, methodVerifyId)));
|
// 查询校准证书
|
processMethodVerifyDto.setCalibrationsFileList(processMethodVerifyCalibrationsFileMapper.selectCalibrationsFileList(methodVerifyId));
|
|
|
return processMethodVerifyDto;
|
}
|
|
@Override
|
public List<ProcessMethodVerifyWorkFile> getCurrentWorkFiles(String userIds) {
|
List<ProcessMethodVerifyWorkFile> files = new ArrayList<>();
|
if (StringUtils.isBlank(userIds)) return files;
|
|
Set<Integer> ids = new LinkedHashSet<>();
|
for (String value : StrUtil.split(userIds, ",")) {
|
try {
|
ids.add(Integer.valueOf(value.trim()));
|
} catch (NumberFormatException e) {
|
throw new ErrorException("检测人员ID无效");
|
}
|
}
|
if (ids.size() > 5) throw new ErrorException("最多选择5名检测人员");
|
|
for (Integer userId : ids) {
|
ProcessMethodVerifyWorkFile file = processMethodVerifyWorkFileMapper.selectLatestAuthorization(userId);
|
if (file == null) continue;
|
file.setUserId(userId);
|
if (StringUtils.isBlank(file.getFileUrl())) {
|
file.setFileName("未上传上岗证书");
|
file.setType(0);
|
} else {
|
file.setFileName(file.getFileUrl());
|
file.setType(file.getFileUrl().matches("(?i).*\\.(png|jpe?g|gif|bmp|webp)$") ? 1 : 2);
|
}
|
files.add(file);
|
}
|
return files;
|
}
|
|
/**
|
* 修改标准方法验证
|
*
|
* @param methodVerifyDto
|
* @return
|
*/
|
@Override
|
public boolean updateMethodVerify(ProcessMethodVerifyDto methodVerifyDto) {
|
validateWordVerification(methodVerifyDto);
|
baseMapper.updateById(methodVerifyDto);
|
|
// 删除上岗证
|
processMethodVerifyWorkFileService.remove(Wrappers.<ProcessMethodVerifyWorkFile>lambdaQuery()
|
.eq(ProcessMethodVerifyWorkFile::getMethodVerifyId, methodVerifyDto.getMethodVerifyId()));
|
|
// 删除原本设备详情
|
processMethodVerifyMachineAttachmentService.remove(Wrappers.<ProcessMethodVerifyMachineAttachment>lambdaQuery()
|
.eq(ProcessMethodVerifyMachineAttachment::getMethodVerifyId, methodVerifyDto.getMethodVerifyId()));
|
|
// 删除元校准证书
|
processMethodVerifyCalibrationsFileService.remove(Wrappers.<ProcessMethodVerifyCalibrationsFile>lambdaQuery()
|
.eq(ProcessMethodVerifyCalibrationsFile::getMethodVerifyId, methodVerifyDto.getMethodVerifyId()));
|
|
// 判断确认人是否为空
|
if (StringUtils.isNotBlank(methodVerifyDto.getConfirmUser())) {
|
// 添加上岗证
|
this.addWorkFile(methodVerifyDto);
|
}
|
|
// 新增设备信息
|
if (CollectionUtils.isNotEmpty(methodVerifyDto.getMachineAttachmentList())) {
|
this.addDevice(methodVerifyDto);
|
}
|
return true;
|
}
|
|
/**
|
* 删除标准方法验证
|
*
|
* @param methodVerifyId
|
* @return
|
*/
|
@Override
|
public boolean delMethodVerify(Integer methodVerifyId) {
|
// 删除所有设备
|
processMethodVerifyMachineAttachmentService.remove(Wrappers.<ProcessMethodVerifyMachineAttachment>lambdaQuery()
|
.eq(ProcessMethodVerifyMachineAttachment::getMethodVerifyId, methodVerifyId));
|
|
// 删除所有原始记录
|
processMethodVerifyMethodFileService.remove(Wrappers.<ProcessMethodVerifyMethodFile>lambdaQuery()
|
.eq(ProcessMethodVerifyMethodFile::getMethodVerifyId, methodVerifyId));
|
|
|
baseMapper.deleteById(methodVerifyId);
|
|
return true;
|
}
|
|
/**
|
* 方法验证确认
|
*
|
* @param methodVerifyId
|
* @return
|
*/
|
@Override
|
public boolean methodVerifyAffirm(Integer methodVerifyId) {
|
baseMapper.update(null, Wrappers.<ProcessMethodVerify>lambdaUpdate()
|
.set(ProcessMethodVerify::getConfirmDate, LocalDateTime.now())
|
.eq(ProcessMethodVerify::getMethodVerifyId, methodVerifyId));
|
return true;
|
}
|
|
/**
|
* 方法验证新增原始记录
|
*
|
* @param methodVerifyId
|
* @param file
|
* @return
|
*/
|
@Override
|
public boolean uploadVerifyMethodFile(Integer methodVerifyId, MultipartFile file) {
|
if (methodVerifyId == null) {
|
throw new ErrorException("缺少原始记录id");
|
}
|
|
String urlString;
|
String pathName;
|
String path;
|
String filename = file.getOriginalFilename();
|
String contentType = file.getContentType();
|
ProcessMethodVerifyMethodFile methodFile = new ProcessMethodVerifyMethodFile();
|
methodFile.setMethodVerifyId(methodVerifyId);
|
methodFile.setFileName(filename);
|
if (contentType != null && contentType.startsWith("image/")) {
|
// 是图片
|
path = imgUrl;
|
methodFile.setType(1);
|
} else {
|
// 是文件
|
path = wordUrl;
|
methodFile.setType(2);
|
}
|
try {
|
File realpath = new File(path);
|
if (!realpath.exists()) {
|
realpath.mkdirs();
|
}
|
pathName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")) + "_" + file.getOriginalFilename();
|
urlString = realpath + "/" + pathName;
|
file.transferTo(new File(urlString));
|
methodFile.setFileUrl(pathName);
|
return processMethodVerifyMethodFileService.save(methodFile);
|
} catch (Exception e) {
|
e.printStackTrace();
|
System.err.println("附件上传错误");
|
return false;
|
}
|
}
|
|
/**
|
* 标准方法验证原始记录列表
|
*
|
* @param methodVerifyId
|
* @return
|
*/
|
@Override
|
public List<ProcessMethodVerifyMethodFile> getVerifyMethodFileList(Integer methodVerifyId) {
|
return processMethodVerifyMethodFileService.list(Wrappers.<ProcessMethodVerifyMethodFile>lambdaQuery()
|
.eq(ProcessMethodVerifyMethodFile::getMethodVerifyId, methodVerifyId));
|
}
|
|
/**
|
* 导出标准方法更新验证
|
*
|
* @param methodVerifyId 标准方法验证id
|
* @param response
|
*/
|
@Override
|
public void exportMethodVerify(Integer methodVerifyId, HttpServletResponse response) {
|
// 获取标准方法更新验证数据
|
ProcessMethodVerify processMethodVerify = baseMapper.selectById(methodVerifyId);
|
if (processMethodVerify == null) {
|
throw new ErrorException("方法验证记录不存在");
|
}
|
if (Objects.equals(processMethodVerify.getOperationType(), 1)
|
&& StringUtils.isNotBlank(processMethodVerify.getVerificationContent())) {
|
exportWordVerification(processMethodVerify, response);
|
return;
|
}
|
|
// 将内部字段转换成展示到word中的对象
|
ProcessMethodVerifyExportWordDto exportWordTemplate = getExportWordTemplate(processMethodVerify);
|
|
// 定义一个集合存放人员签名
|
ArrayList<PictureRenderData> pictureRenderDataList = new ArrayList<>();
|
// TODO:确认最多会有5个人
|
String confirmUser = processMethodVerify.getConfirmUser();
|
if (StringUtils.isNotBlank(confirmUser)) {
|
// 对人员id字符串进行分割成数组
|
String[] userIds = confirmUser.split(",");
|
// 循环获取人员签名
|
for (String userIdStr : userIds) {
|
// 转换为int类型
|
Integer userId = Integer.valueOf(userIdStr);
|
// 获取人员签名对象
|
PictureRenderData finalUserSignatureUrl = UserUtils.getFinalUserSignatureUrl(userId);
|
// 将人员签名对象添加到集合中
|
pictureRenderDataList.add(finalUserSignatureUrl);
|
}
|
}
|
|
// 判断集合长度,并补null到5个
|
while (pictureRenderDataList.size() < 5) {
|
pictureRenderDataList.add(null);
|
}
|
|
// 获取设备信息
|
List<ProcessMethodVerifyMachineAttachment> processMethodVerifyMachineAttachmentList = processMethodVerifyMachineAttachmentService.list(Wrappers.<ProcessMethodVerifyMachineAttachment>lambdaQuery()
|
.eq(ProcessMethodVerifyMachineAttachment::getMethodVerifyId, methodVerifyId));
|
|
// 获取路径
|
InputStream inputStream = this.getClass().getResourceAsStream("/static/method-verify.docx");
|
Configure configure = Configure.builder()
|
.bind("processMethodVerifyMachineAttachmentList", new HackLoopTableRenderPolicy())
|
.build();
|
XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
|
new HashMap<String, Object>() {{
|
put("processMethodVerify", exportWordTemplate);
|
put("processMethodVerifyMachineAttachmentList", processMethodVerifyMachineAttachmentList);
|
put("affirmUserUrl1", pictureRenderDataList.get(0));
|
put("affirmUserUrl2", pictureRenderDataList.get(1));
|
put("affirmUserUrl3", pictureRenderDataList.get(2));
|
put("affirmUserUrl4", pictureRenderDataList.get(3));
|
put("affirmUserUrl5", pictureRenderDataList.get(4));
|
}});
|
|
try {
|
response.setContentType("application/msword");
|
String fileName = URLEncoder.encode(
|
"标准(方法)确认记录", "UTF-8");
|
response.setHeader("Content-disposition",
|
"attachment;filename=" + fileName + ".docx");
|
OutputStream os = response.getOutputStream();
|
template.write(os);
|
os.flush();
|
os.close();
|
inputStream.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new RuntimeException("导出失败");
|
}
|
}
|
|
/** 新版方法验证主表导出;原始记录和验证结果仍作为附件保存。 */
|
private void exportWordVerification(ProcessMethodVerify verify, HttpServletResponse response) {
|
JSONObject content = JSONUtil.parseObj(verify.getVerificationContent());
|
String[][] checks = {
|
{"personnel", "1. 人员能力"}, {"equipment", "2. 检测设备"},
|
{"reagents", "3. 试剂要求"}, {"conditions", "4. 试验条件"},
|
{"sample", "5. 样品处置"}, {"steps", "6. 试验步骤"},
|
{"processing", "7. 数据处理"}, {"qualityControl", "质量控制方法"},
|
{"result", "方法验证结果"}
|
};
|
try (XWPFDocument document = new XWPFDocument()) {
|
XWPFParagraph title = document.createParagraph();
|
title.setAlignment(ParagraphAlignment.CENTER);
|
title.createRun().setText("方法验证记录");
|
|
XWPFTable basic = document.createTable(2, 4);
|
setCells(basic, 0, "标准名称", verify.getStandardName(), "标准编号", verify.getStandardCode());
|
setCells(basic, 1, "验证项目", verify.getVerifyItem(), "", "");
|
|
XWPFTable table = document.createTable(checks.length + 1, 4);
|
setCells(table, 0, "验证内容", "方法要求", "实验室能力", "是否满足");
|
JSONArray entries = content.getJSONArray("checks");
|
for (int i = 0; i < checks.length; i++) {
|
JSONObject entry = findCheck(entries, checks[i][0]);
|
Integer satisfied = entry == null ? null : entry.getInt("satisfied");
|
setCells(table, i + 1, checks[i][1], field(entry, "requirement"),
|
field(entry, "capability"), satisfied == null ? "" : satisfied == 1 ? "是" : "否");
|
}
|
|
XWPFTable conclusion = document.createTable(1, 2);
|
setCells(conclusion, 0, "验证结论", field(content, "conclusion"));
|
XWPFTable decisions = document.createTable(2, 4);
|
setCells(decisions, 0, "评审意见", field(content, "reviewDecision"),
|
"评审人员:" + field(content, "reviewer"), field(content, "reviewDate"));
|
setCells(decisions, 1, "审批意见", field(content, "approvalDecision"),
|
"技术负责人:" + field(content, "approver"), field(content, "approvalDate"));
|
|
document.createParagraph().createRun().setText("附件1 原始记录;附件2 验证结果(附件在系统中查看)");
|
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
String fileName = URLEncoder.encode("方法验证记录", "UTF-8");
|
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx");
|
document.write(response.getOutputStream());
|
} catch (Exception e) {
|
throw new RuntimeException("导出方法验证记录失败", e);
|
}
|
}
|
|
private JSONObject findCheck(JSONArray entries, String key) {
|
if (entries == null) return null;
|
for (Object value : entries) {
|
JSONObject check = JSONUtil.parseObj(value);
|
if (key.equals(check.getStr("key"))) return check;
|
}
|
return null;
|
}
|
|
private String field(JSONObject object, String key) {
|
return object == null ? "" : StrUtil.nullToEmpty(object.getStr(key));
|
}
|
|
private void setCells(XWPFTable table, int row, String... values) {
|
for (int i = 0; i < values.length; i++) {
|
XWPFTableCell cell = table.getRow(row).getCell(i);
|
cell.setText(StrUtil.nullToEmpty(values[i]));
|
}
|
}
|
|
private void validateWordVerification(ProcessMethodVerifyDto verify) {
|
// 没有 verificationContent 的旧记录继续由旧表单维护。
|
if (!Objects.equals(verify.getOperationType(), 1)
|
|| StringUtils.isBlank(verify.getVerificationContent())) return;
|
if (StringUtils.isBlank(verify.getStandardName())
|
|| StringUtils.isBlank(verify.getStandardCode())
|
|| StringUtils.isBlank(verify.getVerifyItem())) {
|
throw new ErrorException("请填写标准名称、标准编号和验证项目");
|
}
|
try {
|
JSONUtil.parseObj(verify.getVerificationContent());
|
} catch (Exception e) {
|
throw new ErrorException("方法验证内容格式错误");
|
}
|
// 保留旧列供现有依赖 method_name 的查询使用。
|
verify.setMethodName(verify.getStandardName());
|
}
|
|
private ProcessMethodVerifyExportWordDto getExportWordTemplate(ProcessMethodVerify processMethodVerify) {
|
ProcessMethodVerifyExportWordDto processMethodVerifyExportWordDto = new ProcessMethodVerifyExportWordDto();
|
BeanUtil.copyProperties(processMethodVerify, processMethodVerifyExportWordDto);
|
// (人)是否满足
|
if (processMethodVerify.getPersonIsSatisfied() != null) {
|
processMethodVerifyExportWordDto.setPersonIsSatisfiedStr(processMethodVerify.getPersonIsSatisfied() == 1 ? "√" : "×");
|
}
|
// (机)是否满足
|
if (processMethodVerify.getMachineIsSatisfied() != null) {
|
processMethodVerifyExportWordDto.setMachineIsSatisfiedStr(processMethodVerify.getMachineIsSatisfied() == 1 ? "√" : "×");
|
}
|
// (料)是否满足
|
if (processMethodVerify.getMaterialIsSatisfied() != null) {
|
processMethodVerifyExportWordDto.setMaterialIsSatisfiedStr(processMethodVerify.getMaterialIsSatisfied() == 1 ? "√" : "×");
|
}
|
// (法)是否满足
|
if (processMethodVerify.getMethodIsSatisfied() != null) {
|
processMethodVerifyExportWordDto.setMethodIsSatisfiedStr(processMethodVerify.getMethodIsSatisfied() == 1? "√" : "×");
|
}
|
// (环)是否满足
|
if (processMethodVerify.getEnvironmentIsSatisfied() != null) {
|
processMethodVerifyExportWordDto.setEnvironmentIsSatisfiedStr(processMethodVerify.getEnvironmentIsSatisfied() == 1 ? "√" : "×");
|
}
|
// (测量溯源性)是否满足
|
if (processMethodVerify.getTraceabilityIsSatisfied() != null) {
|
processMethodVerifyExportWordDto.setTraceabilityIsSatisfiedStr(processMethodVerify.getTraceabilityIsSatisfied() == 1 ? "√" : "×");
|
}
|
// (样品管理需求)是否满足
|
if (processMethodVerify.getManagementIsSatisfied() != null) {
|
processMethodVerifyExportWordDto.setManagementIsSatisfiedStr(processMethodVerify.getManagementIsSatisfied() == 1 ? "√" : "×");
|
}
|
// (其他)是否满足
|
if (processMethodVerify.getOtherIsSatisfied() != null) {
|
processMethodVerifyExportWordDto.setOtherIsSatisfiedStr(processMethodVerify.getOtherIsSatisfied() == 1 ? "√" : "×");
|
}
|
// 确认日期
|
processMethodVerifyExportWordDto.setConfirmDateStr(processMethodVerify.getConfirmDate() != null ? processMethodVerify.getConfirmDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")): null);
|
return processMethodVerifyExportWordDto;
|
}
|
|
|
/**
|
* 添加上岗证
|
*
|
* @param methodVerifyDto
|
*/
|
private void addWorkFile(ProcessMethodVerifyDto methodVerifyDto) {
|
List<String> confirmUserIds = StrUtil.split(methodVerifyDto.getConfirmUser(), ",");
|
List<ProcessMethodVerifyWorkFile> workFileList = new ArrayList<>();
|
for (String confirmUserId : confirmUserIds) {
|
Integer userId = Integer.valueOf(confirmUserId);
|
String workName = processMethodVerifyWorkFileMapper.selectWorkFile(userId);
|
// 判断是否有证书
|
if (StringUtils.isNotBlank(workName)) {
|
User user = userMapper.selectById(userId);
|
ProcessMethodVerifyWorkFile workFile = new ProcessMethodVerifyWorkFile();
|
workFile.setMethodVerifyId(methodVerifyDto.getMethodVerifyId());
|
workFile.setType(workName.matches("(?i).*\\.(png|jpe?g|gif|bmp|webp)$") ? 1 : 2);
|
workFile.setFileUrl(workName);
|
workFile.setFileName(workName);
|
workFile.setUserId(user.getId());
|
workFile.setUserName(user.getName());
|
workFileList.add(workFile);
|
}
|
}
|
if (CollectionUtils.isNotEmpty(workFileList)) {
|
processMethodVerifyWorkFileService.saveBatch(workFileList);
|
}
|
}
|
|
/**
|
* 添加设备信息
|
*
|
* @param methodVerifyDto
|
*/
|
private void addDevice(ProcessMethodVerifyDto methodVerifyDto) {
|
List<ProcessMethodVerifyCalibrationsFile> calibrationsFiles = new ArrayList<>();
|
for (ProcessMethodVerifyMachineAttachment machineAttachment : methodVerifyDto.getMachineAttachmentList()) {
|
machineAttachment.setMethodVerifyId(methodVerifyDto.getMethodVerifyId());
|
// 查询校准证书
|
String calibrationsName = processMethodVerifyCalibrationsFileMapper.selectCalibrationsFile(machineAttachment.getDeviceId());
|
// 判断是否有证书
|
if (StringUtils.isNotBlank(calibrationsName)) {
|
ProcessMethodVerifyCalibrationsFile calibrationsFile = new ProcessMethodVerifyCalibrationsFile();
|
calibrationsFile.setMethodVerifyId(methodVerifyDto.getMethodVerifyId());
|
calibrationsFile.setType(1);
|
calibrationsFile.setFileUrl(calibrationsName);
|
calibrationsFile.setFileName(calibrationsName);
|
calibrationsFile.setDeviceId((machineAttachment.getDeviceId()));
|
calibrationsFiles.add(calibrationsFile);
|
}
|
}
|
// 添加校准证书
|
processMethodVerifyCalibrationsFileService.saveBatch(calibrationsFiles);
|
|
// 添加设备
|
processMethodVerifyMachineAttachmentService.saveBatch(methodVerifyDto.getMachineAttachmentList());
|
}
|
|
}
|