杜洪波
2024-08-23 3f175663a851caa93a705ec0de39359726ff720f
代码提交
已修改3个文件
109 ■■■■■ 文件已修改
src/main/java/com/product/file/config/DocumentCode.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/controller/DocumentController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/service/DocumentService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/file/config/DocumentCode.java
@@ -33,6 +33,8 @@
    DOCUMENT_COLLECTION_FAIL("文档收藏失败:", ModuleEnum.FILE.getValue() + "011"),
    DOCUMENT_CANCEL_COLLECTION_FAIL("文档取消收藏失败", ModuleEnum.FILE.getValue() + "012"),
    DOCUMENT_OPERATE_FAIL("文档操作失败", ModuleEnum.FILE.getValue() + "013"),
    DOCUMENT_SAVE_NEW_VERION_FAIL("文档最新版本保存失败", ModuleEnum.FILE.getValue() + "014"),
    DOCUMENT_DATA_NO_EXIST("文档数据不存在", ModuleEnum.FILE.getValue() + "015"),
    ;
    
    private String text;
src/main/java/com/product/file/controller/DocumentController.java
@@ -415,6 +415,51 @@
            return this.error(DocumentCode.DOCUMENT_OPERATE_FAIL.getValue(), DocumentCode.DOCUMENT_OPERATE_FAIL.getText() + e.getMessage());
        }
    }
    /**
     *     文档历史版本
     * @param request
     * @return
     */
    @RequestMapping(value = "/document-history/{version}", method = RequestMethod.POST)
    @ApiVersion(1)
    public String findDocumentHistory(HttpServletRequest request) {
        try {
            //获取参数
            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_OA_DOCUMENT_COLLECTION);
            return OK_List(documentService.findDocumentHistory(fse.getUUID()));
        } catch (BaseException e) {
            e.printStackTrace();
            return this.error(e);
        } catch (Exception e) {
            e.printStackTrace();
            return this.error(DocumentCode.DOCUMENT_OPERATE_FAIL.getValue(), DocumentCode.DOCUMENT_OPERATE_FAIL.getText() + e.getMessage());
        }
    }
    /**
     *     文档最新版本保存
     * @param request
     * @return
     */
    @RequestMapping(value = "/document-save-new-version/{version}", method = RequestMethod.POST)
    @ApiVersion(1)
    public String documentSaveNewVersion(HttpServletRequest request) {
        try {
            //获取参数
            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_OA_DOCUMENT_COLLECTION);
            if (documentService.documentSaveNewVersion(fse)) {
                return OK();
            }
            return error(DocumentCode.DOCUMENT_SAVE_NEW_VERION_FAIL.getValue(), DocumentCode.DOCUMENT_SAVE_NEW_VERION_FAIL.getText());
        } catch (BaseException e) {
            e.printStackTrace();
            return this.error(e);
        } catch (Exception e) {
            e.printStackTrace();
            return this.error(DocumentCode.DOCUMENT_OPERATE_FAIL.getValue(), DocumentCode.DOCUMENT_OPERATE_FAIL.getText() + e.getMessage());
        }
    }
    @RequestMapping(value = "/getApplyDocument/{version}", method = RequestMethod.POST)
src/main/java/com/product/file/service/DocumentService.java
@@ -6,7 +6,6 @@
import com.product.common.collect.ListUtils;
import com.product.common.collect.MapUtils;
import com.product.common.lang.DateUtils;
import com.product.core.config.Global;
import com.product.core.dao.BaseDao;
import com.product.core.entity.DataTableEntity;
import com.product.core.entity.FieldMetaEntity;
@@ -17,6 +16,7 @@
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.core.transfer.Transactional;
import com.product.file.config.CmnConst;
import com.product.file.config.DocumentCode;
import com.product.file.service.ide.IDocumentService;
import com.product.module.sys.entity.SystemUser;
import com.product.util.BaseUtil;
@@ -87,6 +87,7 @@
            BaseUtil.createCreatorAndCreationTime(fseDocumentHistory);
            fseDocument.setValue("document_uuid", documentUUID);
            fseDocument.setValue("attachment_uuid", attachment.getUUID());
            fseDocument.setValue("version_number", "v1");
            baseDao.add(fseDocumentHistory);
            
            uuidList.add(documentUUID);
@@ -500,6 +501,65 @@
    public boolean documentCancelCollection(String documentUUID) {
        return baseDao.delete(CmnConst.PRODUCT_OA_DOCUMENT_COLLECTION, "document_uuid = ? AND document_collector = ?", new Object[] {documentUUID, SpringMVCContextHolder.getCurrentUserId()});
    }
    /**
     *     查询文档历史版本
     * @param documentUUID
     * @return
     */
    public DataTableEntity findDocumentHistory(String documentUUID) {
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT A.*,B.file_name");
        sql.append("FROM product_oa_document_history A \n");
        sql.append("LEFT JOIN product_oa_document_history B ON B.uuid = A.document_uuid \n");
        sql.append("WHERE A.document_uuid = ?");
        sql.append("ORDER BY A.version_number");
        return baseDao.listTable(sql.toString(), new Object[] {documentUUID});
    }
    /**
     *     文档最新版本保存
     * @param fse
     * @return
     */
    @Transactional
    public boolean documentSaveNewVersion(FieldSetEntity fse) {
        // 获取文档数据和最大编号
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT A.*, IFNULL(B.max_version_number, 'v0')AS max_version_number \n");
        sql.append("FROM product_oa_document A \n");
        sql.append("LEFT JOIN ( \n");
        sql.append("    SELECT document_uuid, MAX(version_number) AS max_version_number \n");
        sql.append("    FROM product_oa_document_history B \n");
        sql.append("    WHERE document_uuid = ? \n");
        sql.append("    GROUP BY document_uuid \n");
        sql.append(") B ON B.document_uuid = A.uuid \n");
        sql.append("WHERE uuid = ? \n");
        FieldSetEntity fseDocument = baseDao.getFieldSetEntityBySQL(sql.toString(), new Object[] {fse.getString("document_uuid"),fse.getString("document_uuid")}, false);
        if(fseDocument == null) {
            throw new BaseException(DocumentCode.DOCUMENT_DATA_NO_EXIST.getValue(), DocumentCode.DOCUMENT_DATA_NO_EXIST.getText());
        }
        fseDocument.setValue("attachments_uuid", fse.getString("attachment_uuid"));
        baseDao.saveFieldSetEntity(fseDocument);
        fse.setValue("version_number", versionNUmberAddne(fseDocument.getString("max_version_number")));
        return baseDao.saveFieldSetEntity(fse);
    }
    /**
     *     文档版本+1
     * @param originNumber
     * @return
     */
    public String versionNUmberAddne(String originNumber) {
        String numberStr = originNumber.substring(1); // 去掉前缀"v"
        int number = Integer.parseInt(numberStr); // 将字符串转
        // 数字加一
        number += 1;
        // 重新构建字符串(这里我们假设前缀总是"v")
        return "v" + number;
    }
    @Override
    public DataTableEntity getApplyDocument(FieldSetEntity fse) throws BaseException {