Parcourir la source

- 项目管理初步完成
- 文件夹管理基本完成

Huanyi il y a 2 jours
Parent
commit
c2c3647250
17 fichiers modifiés avec 676 ajouts et 38 suppressions
  1. 6 6
      ruoyi-admin/src/main/resources/banner.txt
  2. 21 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/constant/DocumentStatusConst.java
  3. 105 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/DocumentController.java
  4. 1 1
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/FolderController.java
  5. 6 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/ProjectController.java
  6. 79 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/Document.java
  7. 72 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/DocumentBo.java
  8. 10 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/ProjectListOnDashboardWorkbenchBo.java
  9. 94 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/DocumentVo.java
  10. 20 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectInDashboardWorkbenchVo.java
  11. 15 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/mapper/DocumentMapper.java
  12. 68 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/IDocumentService.java
  13. 1 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/IProjectService.java
  14. 141 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/DocumentServiceImpl.java
  15. 1 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/FolderServiceImpl.java
  16. 5 0
      ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/ProjectServiceImpl.java
  17. 31 31
      script/sql/business/create.sql

+ 6 - 6
ruoyi-admin/src/main/resources/banner.txt

@@ -1,8 +1,8 @@
 Application Version: ${revision}
 Spring Boot Version: ${spring-boot.version}
-__________            _____.___.__         ____   ____                     __________.__
-\______   \__ __  ____\__  |   |__|        \   \ /   /_ __   ____          \______   \  |  __ __  ______
- |       _/  |  \/  _ \/   |   |  |  ______ \   Y   /  |  \_/ __ \   ______ |     ___/  | |  |  \/  ___/
- |    |   \  |  (  <_> )____   |  | /_____/  \     /|  |  /\  ___/  /_____/ |    |   |  |_|  |  /\___ \
- |____|_  /____/ \____// ______|__|           \___/ |____/  \___  >         |____|   |____/____//____  >
-        \/             \/                                       \/                                   \/
+    ____      __       _____                  __        ________  _________   _____            __
+   /  _/___  / /____  / / (_)___ ____  ____  / /_   ___/_  __/  |/  / ____/  / ___/__  _______/ /____  ____ ___
+   / // __ \/ __/ _ \/ / / / __ `/ _ \/ __ \/ __/  / _ \/ / / /|_/ / /_      \__ \/ / / / ___/ __/ _ \/ __ `__ \
+ _/ // / / / /_/  __/ / / / /_/ /  __/ / / / /_   /  __/ / / /  / / __/     ___/ / /_/ (__  ) /_/  __/ / / / / /
+/___/_/ /_/\__/\___/_/_/_/\__, /\___/_/ /_/\__/   \___/_/ /_/  /_/_/       /____/\__, /____/\__/\___/_/ /_/ /_/
+                         /____/                                                 /____/

+ 21 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/constant/DocumentStatusConst.java

@@ -0,0 +1,21 @@
+package com.yingpaipay.business.constant;
+
+public interface DocumentStatusConst {
+
+    Integer UN_UPLOAD = 0;
+
+    Integer UN_AUDIT = 1;
+
+    Integer AUDIT_REJECT = 2;
+
+    Integer UN_FILING = 3;
+
+    Integer FILING = 4;
+
+    Integer UN_QUALITY_CONTROL = 5;
+
+    Integer QUALITY_CONTROL_PASS = 6;
+
+    Integer QUALITY_CONTROL_REJECT = 7;
+
+}

+ 105 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/DocumentController.java

@@ -0,0 +1,105 @@
+package com.yingpaipay.business.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import com.yingpaipay.business.domain.vo.DocumentVo;
+import com.yingpaipay.business.domain.bo.DocumentBo;
+import com.yingpaipay.business.service.IDocumentService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 文档
+ *
+ * @author Huanyi
+ * @date 2025-12-11
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/document/document")
+public class DocumentController extends BaseController {
+
+    private final IDocumentService documentService;
+
+    /**
+     * 查询文档列表
+     */
+    @SaCheckPermission("document:document:list")
+    @GetMapping("/list")
+    public TableDataInfo<DocumentVo> list(DocumentBo bo, PageQuery pageQuery) {
+        return documentService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出文档列表
+     */
+    @SaCheckPermission("document:document:export")
+    @Log(title = "文档", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(DocumentBo bo, HttpServletResponse response) {
+        List<DocumentVo> list = documentService.queryList(bo);
+        ExcelUtil.exportExcel(list, "文档", DocumentVo.class, response);
+    }
+
+    /**
+     * 获取文档详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("document:document:query")
+    @GetMapping("/{id}")
+    public R<DocumentVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(documentService.queryById(id));
+    }
+
+    /**
+     * 新增文档
+     */
+    @SaCheckPermission("document:document:add")
+    @Log(title = "文档", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody DocumentBo bo) {
+        return toAjax(documentService.insertByBo(bo));
+    }
+
+    /**
+     * 修改文档
+     */
+    @SaCheckPermission("document:document:edit")
+    @Log(title = "文档", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody DocumentBo bo) {
+        return toAjax(documentService.updateByBo(bo));
+    }
+
+    /**
+     * 删除文档
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("document:document:remove")
+    @Log(title = "文档", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(documentService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 1 - 1
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/FolderController.java

@@ -41,7 +41,7 @@ public class FolderController extends BaseController {
     private final IFolderService folderService;
     private final IProjectService projectService;
 
-    @SaCheckPermission("document:folder:listProject")
+    @SaCheckPermission("document:folder:list")
     @GetMapping("/listProject")
     public TableDataInfo<ProjectOnDocumentVo> listProject(ProjectOnDocumentBo bo, PageQuery pageQuery) {
         return projectService.listOnDocument(bo, pageQuery);

+ 6 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/controller/ProjectController.java

@@ -47,6 +47,12 @@ public class ProjectController extends BaseController {
         return projectService.queryPageList(bo, pageQuery);
     }
 
+    @SaCheckPermission("dashboard:workbench:index")
+    @GetMapping("/listOnDashboardWorkbench")
+    public TableDataInfo<ProjectInDashboardWorkbenchVo> listOnDashboardWorkbench(ProjectListOnDashboardWorkbenchBo bo, PageQuery pageQuery) {
+        return projectService.queryPageListOnDashboardWorkbench(bo, pageQuery);
+    }
+
     /**
      * 导出项目管理列表
      */

+ 79 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/Document.java

@@ -0,0 +1,79 @@
+package com.yingpaipay.business.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 文档对象 document
+ *
+ * @author Huanyi
+ * @date 2025-12-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("document")
+public class Document extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 所属文件夹
+     */
+    private Long folderId;
+
+    /**
+     * 文档标识
+     */
+    private String fileSpecification;
+
+    /**
+     * 计划文件类型
+     */
+    private String type;
+
+    /**
+     * 计划名称
+     */
+    private String name;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 递交截止时间
+     */
+    private Date submissionDeadline;
+
+    /**
+     * 文档本体
+     */
+    private Long ossId;
+
+    /**
+     * 备注
+     */
+    private String note;
+
+    /**
+     * 删除标志(0代表存在 1代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 72 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/DocumentBo.java

@@ -0,0 +1,72 @@
+package com.yingpaipay.business.domain.bo;
+
+import com.yingpaipay.business.domain.Document;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 文档业务对象 document
+ *
+ * @author Huanyi
+ * @date 2025-12-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Document.class, reverseConvertGenerate = false)
+public class DocumentBo extends BaseEntity {
+
+    /**
+     * 序号
+     */
+    @NotNull(message = "序号不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 所属文件夹
+     */
+    @NotNull(message = "所属文件夹不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long folderId;
+
+    /**
+     * 文档标识
+     */
+    @NotBlank(message = "文档标识不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fileSpecification;
+
+    /**
+     * 计划名称
+     */
+    @NotBlank(message = "计划名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 状态
+     */
+    @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer status;
+
+    /**
+     * 计划上传时间
+     */
+    @NotNull(message = "递交截止时间", groups = { AddGroup.class, EditGroup.class })
+    private Date submissionDeadline;
+
+    /**
+     * 文档本体
+     */
+    private Long ossId;
+
+    /**
+     * 备注
+     */
+    private String note;
+
+
+}

+ 10 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/bo/ProjectListOnDashboardWorkbenchBo.java

@@ -0,0 +1,10 @@
+package com.yingpaipay.business.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class ProjectListOnDashboardWorkbenchBo {
+
+    String content;
+
+}

+ 94 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/DocumentVo.java

@@ -0,0 +1,94 @@
+package com.yingpaipay.business.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yingpaipay.business.domain.Document;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 文档视图对象 document
+ *
+ * @author Huanyi
+ * @date 2025-12-11
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = Document.class)
+public class DocumentVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ExcelProperty(value = "序号")
+    private Long id;
+
+    /**
+     * 所属文件夹
+     */
+    @ExcelProperty(value = "所属文件夹")
+    private Long folderId;
+
+    /**
+     * 文档标识
+     */
+    @ExcelProperty(value = "文档标识")
+    private String fileSpecification;
+
+    /**
+     * 计划名称
+     */
+    @ExcelProperty(value = "计划名称")
+    private String name;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private Integer status;
+
+    /**
+     * 计划上传时间
+     */
+    @ExcelProperty(value = "计划上传时间")
+    private Date scheduledUploadTime;
+
+    /**
+     * 文档本体
+     */
+    @ExcelProperty(value = "文档本体")
+    private Long ossId;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String note;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @ExcelProperty(value = "更新时间")
+    private Date updateTime;
+
+
+}

+ 20 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/domain/vo/ProjectInDashboardWorkbenchVo.java

@@ -0,0 +1,20 @@
+package com.yingpaipay.business.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class ProjectInDashboardWorkbenchVo {
+
+    private Long id;
+
+    private String code;
+
+    private String name;
+
+    private Double onTimeSubmissionRate;
+
+    private Integer lateSubmissionCount;
+
+    private Double submissionProgress;
+
+}

+ 15 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/mapper/DocumentMapper.java

@@ -0,0 +1,15 @@
+package com.yingpaipay.business.mapper;
+
+import com.yingpaipay.business.domain.Document;
+import com.yingpaipay.business.domain.vo.DocumentVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 文档Mapper接口
+ *
+ * @author Huanyi
+ * @date 2025-12-11
+ */
+public interface DocumentMapper extends BaseMapperPlus<Document, DocumentVo> {
+
+}

+ 68 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/IDocumentService.java

@@ -0,0 +1,68 @@
+package com.yingpaipay.business.service;
+
+import com.yingpaipay.business.domain.vo.DocumentVo;
+import com.yingpaipay.business.domain.bo.DocumentBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 文档Service接口
+ *
+ * @author Huanyi
+ * @date 2025-12-11
+ */
+public interface IDocumentService {
+
+    /**
+     * 查询文档
+     *
+     * @param id 主键
+     * @return 文档
+     */
+    DocumentVo queryById(Long id);
+
+    /**
+     * 分页查询文档列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 文档分页列表
+     */
+    TableDataInfo<DocumentVo> queryPageList(DocumentBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的文档列表
+     *
+     * @param bo 查询条件
+     * @return 文档列表
+     */
+    List<DocumentVo> queryList(DocumentBo bo);
+
+    /**
+     * 新增文档
+     *
+     * @param bo 文档
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(DocumentBo bo);
+
+    /**
+     * 修改文档
+     *
+     * @param bo 文档
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(DocumentBo bo);
+
+    /**
+     * 校验并批量删除文档信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 1 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/IProjectService.java

@@ -80,4 +80,5 @@ public interface IProjectService {
 
     TableDataInfo<ProjectMemberNotInCenterVo> queryMemberNotInCenter(Long projectId, Long folderId, String name, PageQuery pageQuery);
 
+    TableDataInfo<ProjectInDashboardWorkbenchVo> queryPageListOnDashboardWorkbench(ProjectListOnDashboardWorkbenchBo bo, PageQuery pageQuery);
 }

+ 141 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/DocumentServiceImpl.java

@@ -0,0 +1,141 @@
+package com.yingpaipay.business.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import com.yingpaipay.business.domain.bo.DocumentBo;
+import com.yingpaipay.business.domain.vo.DocumentVo;
+import com.yingpaipay.business.domain.Document;
+import com.yingpaipay.business.mapper.DocumentMapper;
+import com.yingpaipay.business.service.IDocumentService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 文档Service业务层处理
+ *
+ * @author Huanyi
+ * @date 2025-12-11
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class DocumentServiceImpl implements IDocumentService {
+
+    private final DocumentMapper baseMapper;
+
+    /**
+     * 查询文档
+     *
+     * @param id 主键
+     * @return 文档
+     */
+    @Override
+    public DocumentVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询文档列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 文档分页列表
+     */
+    @Override
+    public TableDataInfo<DocumentVo> queryPageList(DocumentBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<Document> lqw = buildQueryWrapper(bo);
+        Page<DocumentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的文档列表
+     *
+     * @param bo 查询条件
+     * @return 文档列表
+     */
+    @Override
+    public List<DocumentVo> queryList(DocumentBo bo) {
+        LambdaQueryWrapper<Document> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<Document> buildQueryWrapper(DocumentBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<Document> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(Document::getId);
+        lqw.eq(bo.getFolderId() != null, Document::getFolderId, bo.getFolderId());
+        lqw.eq(StringUtils.isNotBlank(bo.getFileSpecification()), Document::getFileSpecification, bo.getFileSpecification());
+        lqw.like(StringUtils.isNotBlank(bo.getName()), Document::getName, bo.getName());
+        lqw.eq(bo.getStatus() != null, Document::getStatus, bo.getStatus());
+        lqw.between(params.get("beginScheduledUploadTime") != null && params.get("endScheduledUploadTime") != null,
+            Document::getScheduledUploadTime ,params.get("beginScheduledUploadTime"), params.get("endScheduledUploadTime"));
+        lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
+            Document::getCreateTime ,params.get("beginCreateTime"), params.get("endCreateTime"));
+        lqw.between(params.get("beginUpdateTime") != null && params.get("endUpdateTime") != null,
+            Document::getUpdateTime ,params.get("beginUpdateTime"), params.get("endUpdateTime"));
+        return lqw;
+    }
+
+    /**
+     * 新增文档
+     *
+     * @param bo 文档
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(DocumentBo bo) {
+        Document add = MapstructUtils.convert(bo, Document.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改文档
+     *
+     * @param bo 文档
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(DocumentBo bo) {
+        Document update = MapstructUtils.convert(bo, Document.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(Document entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除文档信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 1 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/FolderServiceImpl.java

@@ -98,6 +98,7 @@ public class FolderServiceImpl implements IFolderService {
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean insertByBo(FolderBo bo) {
         Folder entity = MapstructUtils.convert(bo, Folder.class);
         boolean flag = baseMapper.insert(entity) == 0;

+ 5 - 0
ruoyi-modules/yingpaipay-business/src/main/java/com/yingpaipay/business/service/impl/ProjectServiceImpl.java

@@ -344,6 +344,11 @@ public class ProjectServiceImpl implements IProjectService {
         }));
     }
 
+    @Override
+    public TableDataInfo<ProjectInDashboardWorkbenchVo> queryPageListOnDashboardWorkbench(ProjectListOnDashboardWorkbenchBo bo, PageQuery pageQuery) {
+        return TableDataInfo.build();
+    }
+
     private LambdaQueryWrapper<Folder> buildQueryProjectCenterWrapper(ProjectCenterListBo bo) {
         return Wrappers.lambdaQuery(Folder.class)
             .like(StringUtils.isNotEmpty(bo.getName()), Folder::getName, bo.getName())

+ 31 - 31
script/sql/business/create.sql

@@ -27,7 +27,7 @@ CREATE TABLE `project`
 
 CREATE TABLE `sys_user_projects`
 (
-    `user_id`   bigint NOT NULL PRIMARY KEY COMMENT '用户ID',
+    `user_id`  bigint       NOT NULL PRIMARY KEY COMMENT '用户ID',
     `projects` varchar(255) NOT NULL COMMENT '项目ID'
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='用户项目数据权限表';
@@ -35,7 +35,7 @@ CREATE TABLE `sys_user_projects`
 CREATE TABLE `sys_user_center`
 (
     `user_id`   bigint NOT NULL COMMENT '用户ID',
-    `folder_id`    bigint NOT NULL COMMENT '文件夹ID',
+    `folder_id` bigint NOT NULL COMMENT '文件夹ID',
     PRIMARY KEY (`user_id`, `folder_id`)
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='用户中心关联表';
@@ -59,41 +59,41 @@ CREATE TABLE `folder`
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='文件夹';
 
-CREATE TABLE `file`
+CREATE TABLE `document`
 (
-    `id`                 bigint unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '序号',
-    `parent_id`          bigint unsigned             NOT NULL COMMENT '所属父级',
-    `type`               tinyint(1)                  NOT NULL COMMENT '文档类型',
-    `file_specification` char(1)                     NOT NULL COMMENT '文档标识',
-    `name`               varchar(128)                NOT NULL COMMENT '名称',
-    `status`             tinyint(1)                  NOT NULL DEFAULT 0 COMMENT '状态',
-    `auditor_id`         bigint(1)                   NOT NULL COMMENT '审核人',
-    `reject_reason`      varchar(255) COMMENT '驳回原因',
-    `audit_time`         datetime COMMENT '审核时间',
-    `note`               varchar(255) COMMENT '备注',
-    `create_dept`        bigint(20) COMMENT '创建部门',
-    `create_by`          bigint(20) COMMENT '创建者',
-    `create_time`        datetime COMMENT '创建时间',
-    `update_by`          bigint(20) COMMENT '更新者',
-    `update_time`        datetime COMMENT '更新时间',
-    `del_flag`           char(1)                              DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
-    `tenant_id`          varchar(40) COMMENT '租户id'
+    `id`                    bigint unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '序号',
+    `folder_id`             bigint unsigned             NOT NULL COMMENT '所属文件夹',
+    `file_specification`    char(1)                     NOT NULL COMMENT '文档标识',
+    `name`                  varchar(128)                NOT NULL COMMENT '计划名称',
+    `status`                tinyint(1)                  NOT NULL DEFAULT 0 COMMENT '状态',
+    `scheduled_upload_time` date                        NOT NULL COMMENT '计划上传时间',
+    `oss_id`                bigint COMMENT '文档本体',
+    `note`                  varchar(255) COMMENT '备注',
+    `create_dept`           bigint(20) COMMENT '创建部门',
+    `create_by`             bigint(20) COMMENT '创建者',
+    `create_time`           datetime COMMENT '创建时间',
+    `update_by`             bigint(20) COMMENT '更新者',
+    `update_time`           datetime COMMENT '更新时间',
+    `del_flag`              char(1)                              DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
+    `tenant_id`             varchar(40) COMMENT '租户id'
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='文档';
 
 CREATE TABLE `file_audit_log`
 (
-    `id`          bigint unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '序号',
-    `file_id`     bigint unsigned             NOT NULL COMMENT '文件',
-    `auditor_id`  bigint unsigned             NOT NULL COMMENT '审核人',
-    `status`      tinyint(1)                  NOT NULL COMMENT '状态',
-    `create_dept` bigint(20) COMMENT '创建部门',
-    `create_by`   bigint(20) COMMENT '创建者',
-    `create_time` datetime COMMENT '创建时间',
-    `update_by`   bigint(20) COMMENT '更新者',
-    `update_time` datetime COMMENT '更新时间',
-    `del_flag`    char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
-    `tenant_id`   varchar(40) COMMENT '租户id'
+    `id`            bigint unsigned PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '序号',
+    `file_id`       bigint unsigned             NOT NULL COMMENT '文件',
+    `auditor_id`    bigint unsigned             NOT NULL COMMENT '审核人',
+    `result`        tinyint(1)                  NOT NULL COMMENT '审核结果',
+    `reject_reason` varchar(255) COMMENT '驳回理由',
+    `audit_time`    datetime                    NOT NULL COMMENT '审核时间',
+    `create_dept`   bigint(20) COMMENT '创建部门',
+    `create_by`     bigint(20) COMMENT '创建者',
+    `create_time`   datetime COMMENT '创建时间',
+    `update_by`     bigint(20) COMMENT '更新者',
+    `update_time`   datetime COMMENT '更新时间',
+    `del_flag`      char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
+    `tenant_id`     varchar(40) COMMENT '租户id'
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='文档审核记录';