From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期五, 01 八月 2025 13:27:59 +0800 Subject: [PATCH] yys 密码已重置 --- cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyServiceImpl.java | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 455 insertions(+), 0 deletions(-) diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyServiceImpl.java new file mode 100644 index 0000000..0e8426d --- /dev/null +++ b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessMethodVerifyServiceImpl.java @@ -0,0 +1,455 @@ +package com.ruoyi.process.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +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 javax.annotation.Resource; +import javax.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; + +/** + * 鏍囧噯鏂规硶楠岃瘉 + * + * @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("璇烽�夋嫨鏄彉鏇磋繕鏄獙璇�"); + } + // 鏂板 + 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; + } + + /** + * 淇敼鏍囧噯鏂规硶楠岃瘉 + * + * @param methodVerifyDto + * @return + */ + @Override + public boolean updateMethodVerify(ProcessMethodVerifyDto 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); + + // 灏嗗唴閮ㄥ瓧娈佃浆鎹㈡垚灞曠ず鍒皐ord涓殑瀵硅薄 + ProcessMethodVerifyExportWordDto exportWordTemplate = getExportWordTemplate(processMethodVerify); + + // 瀹氫箟涓�涓泦鍚堝瓨鏀句汉鍛樼鍚� + ArrayList<PictureRenderData> pictureRenderDataList = new ArrayList<>(); + // TODO:纭鏈�澶氫細鏈�5涓汉 + String confirmUser = processMethodVerify.getConfirmUser(); + if (StringUtils.isNotBlank(confirmUser)) { + // 瀵逛汉鍛榠d瀛楃涓茶繘琛屽垎鍓叉垚鏁扮粍 + String[] userIds = confirmUser.split(","); + // 寰幆鑾峰彇浜哄憳绛惧悕 + for (String userIdStr : userIds) { + // 杞崲涓篿nt绫诲瀷 + Integer userId = Integer.valueOf(userIdStr); + // 鑾峰彇浜哄憳绛惧悕瀵硅薄 + PictureRenderData finalUserSignatureUrl = UserUtils.getFinalUserSignatureUrl(userId); + // 灏嗕汉鍛樼鍚嶅璞℃坊鍔犲埌闆嗗悎涓� + pictureRenderDataList.add(finalUserSignatureUrl); + } + } + + // 鍒ゆ柇闆嗗悎闀垮害锛屽苟琛ull鍒�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 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(1); + 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()); + } + +} + -- Gitblit v1.9.3