吴羡
2 天以前 8ad863082097ffdcab4a8e7f426d344a1fe6f892
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java
@@ -13,7 +13,9 @@
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.manage.util.DocumentPreviewUtils;
import com.ruoyi.manage.mapper.*;
@@ -97,6 +99,7 @@
        manageRecordAudit.setReason(manageDocumentAlter.getAlterNote());
        manageRecordAudit.setAlterUser(SecurityUtils.getUserId().intValue());
        manageRecordAudit.setMethod("修订");
        manageRecordAudit.setCreateTime(LocalDate.now());
        if (ObjectUtils.isNotEmpty(manageDocumentAlter.getFile())) {
            String urlString;
            String pathName;
@@ -154,7 +157,44 @@
                return 0;
            }
        }
        return manageDocumentAlterMapper.updateById(manageDocumentAlter);
        int result = manageDocumentAlterMapper.updateById(manageDocumentAlter);
        // 变更内容修改后同步到自动生成的修订记录,避免两个页面内容对不上
        ManageRecordAudit linkedAudit = findLinkedAudit(manageDocumentAlter1);
        if (linkedAudit != null) {
            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeCode())) {
                linkedAudit.setDocumentCode(manageDocumentAlter.getAlterBeforeCode());
            }
            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeName())) {
                linkedAudit.setDocumentName(manageDocumentAlter.getAlterBeforeName());
            }
            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeVersion())) {
                linkedAudit.setBeforeVersion(manageDocumentAlter.getAlterBeforeVersion());
            }
            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterAfterVersion())) {
                linkedAudit.setAfterVersion(manageDocumentAlter.getAlterAfterVersion());
            }
            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterNote())) {
                linkedAudit.setReason(manageDocumentAlter.getAlterNote());
            }
            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterAfterUrl())) {
                linkedAudit.setAfterUrl(manageDocumentAlter.getAlterAfterUrl());
            }
            manageRecordAuditMapper.updateById(linkedAudit);
        }
        return result;
    }
    // 按变更前信息定位自动生成的那条修订记录
    private ManageRecordAudit findLinkedAudit(ManageDocumentAlter manageDocumentAlter) {
        return manageRecordAuditMapper.selectOne(Wrappers.<ManageRecordAudit>lambdaQuery()
                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeCode()), ManageRecordAudit::getDocumentCode, manageDocumentAlter.getAlterBeforeCode())
                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeName()), ManageRecordAudit::getDocumentName, manageDocumentAlter.getAlterBeforeName())
                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeVersion()), ManageRecordAudit::getBeforeVersion, manageDocumentAlter.getAlterBeforeVersion())
                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterAfterVersion()), ManageRecordAudit::getAfterVersion, manageDocumentAlter.getAlterAfterVersion())
                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getCreateUser()), ManageRecordAudit::getAlterUser, manageDocumentAlter.getCreateUser())
                .eq(ManageRecordAudit::getMethod, "修订")
                .orderByDesc(ManageRecordAudit::getId)
                .last("limit 1"));
    }
    @Override
@@ -215,6 +255,8 @@
                manageRecordAudit.setDocumentName(manageDocumentCancel.getName());
                manageRecordAudit.setAlterThing("作废");
                manageRecordAudit.setMethod("作废");
                manageRecordAudit.setAlterUser(oldManageDocumentAlter.getCreateUser());
                manageRecordAudit.setCreateTime(LocalDate.now());
                manageRecordAuditMapper.insert(manageRecordAudit);
            }else {
                //如果是存档不可用,那就将文件清单的状态改为无效
@@ -233,27 +275,26 @@
        manageRecordCheck.setCheckState(manageDocumentAlter.getState());
        manageRecordCheck.setRemark(manageDocumentAlter.getAlterNote());
        manageRecordCheckMapper.insert(manageRecordCheck);
        // 审核通过后回写批准人,文件修订申请审批记录里能直接看到审批结果
        ManageRecordAudit linkedAudit = findLinkedAudit(oldManageDocumentAlter);
        if (linkedAudit != null
                && "通过".equals(manageDocumentAlter.getState())
                && linkedAudit.getRatifyUser() == null
                && oldManageDocumentAlter.getCheckUser() != null) {
            linkedAudit.setRatifyUser(oldManageDocumentAlter.getCheckUser());
            manageRecordAuditMapper.updateById(linkedAudit);
        }
        return manageDocumentAlterMapper.updateById(manageDocumentAlter);
    }
    @Override
    public void checkManageDocumentAlterPdf(Long id, HttpServletResponse response) throws Exception {
        ManageDocumentAlter manageDocumentAlter = manageDocumentAlterMapper.selectById(id);
        File file = new File(wordUrl + "/" + manageDocumentAlter.getAlterAfterUrl());
        FileInputStream fileInputStream = new FileInputStream(file);
        response.setContentType("application/pdf");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-disposition", "inline;filename=" + file.getName());
        response.setContentLength((int)file.length());
        OutputStream os = response.getOutputStream();
        // 将文件内容写入输出流
        byte[] buffer = new byte[4096];
        int bytesRead;
        while ((bytesRead = fileInputStream.read(buffer)) != -1) {
            os.write(buffer, 0, bytesRead);
        if (manageDocumentAlter == null || ObjectUtils.isEmpty(manageDocumentAlter.getAlterAfterUrl())) {
            throw new ErrorException("文件未上传");
        }
        os.flush();
        os.close();
        // PDF 直接输出,Word/图片在线转 PDF,供前端预览盖章
        DocumentPreviewUtils.writeAsPdf(new File(wordUrl + "/" + manageDocumentAlter.getAlterAfterUrl()), response);
    }
    @Override