Переглянути джерело

feat(qhse): 学习文件生成历史记录

- 新增学习文件相关实体类和 DAO
- 实现学习文件人员、记录等服务接口和实现类
- 添加学习文件历史数据生成功能
- 端新增学习文件历史数据生成接口
lg 1 місяць тому
батько
коміт
cc5f465053
18 змінених файлів з 721 додано та 0 видалено
  1. 7 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/dao/StudyFileDao.java
  2. 7 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/dao/StudyFilePersonDao.java
  3. 7 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/dao/StudyFilePersonRecordDao.java
  4. 7 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/dao/StudyFileRecordDao.java
  5. 7 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/service/StudyFilePersonRecordService.java
  6. 16 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/service/StudyFilePersonService.java
  7. 7 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/service/StudyFileRecordService.java
  8. 14 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/service/StudyFileService.java
  9. 11 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/service/impl/StudyFilePersonRecordServiceImpl.java
  10. 26 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/service/impl/StudyFilePersonServiceImpl.java
  11. 14 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/service/impl/StudyFileRecordServiceImpl.java
  12. 121 0
      qhse-common/src/main/java/com/rongwei/bscommon/sys/service/impl/StudyFileServiceImpl.java
  13. 15 0
      qhse-entity/src/main/java/com/rongwei/bsentity/Dto/StudyFileProduceHistoryDto.java
  14. 119 0
      qhse-entity/src/main/java/com/rongwei/bsentity/domain/StudyFileDo.java
  15. 90 0
      qhse-entity/src/main/java/com/rongwei/bsentity/domain/StudyFilePersonDo.java
  16. 96 0
      qhse-entity/src/main/java/com/rongwei/bsentity/domain/StudyFilePersonRecordDo.java
  17. 125 0
      qhse-entity/src/main/java/com/rongwei/bsentity/domain/StudyFileRecordDo.java
  18. 32 0
      qhse-server/src/main/java/com/rongwei/controller/StudyFileController.java

+ 7 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/dao/StudyFileDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.StudyFileDo;
+
+public interface StudyFileDao extends BaseMapper<StudyFileDo> {
+}

+ 7 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/dao/StudyFilePersonDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.bsentity.domain.StudyFilePersonDo;
+import com.rongwei.rwcommon.base.BaseDao;
+
+public interface StudyFilePersonDao extends BaseDao<StudyFilePersonDo> {
+}

+ 7 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/dao/StudyFilePersonRecordDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.StudyFilePersonRecordDo;
+
+public interface StudyFilePersonRecordDao extends BaseMapper<StudyFilePersonRecordDo> {
+}

+ 7 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/dao/StudyFileRecordDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.StudyFileRecordDo;
+
+public interface StudyFileRecordDao extends BaseMapper<StudyFileRecordDo> {
+}

+ 7 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/service/StudyFilePersonRecordService.java

@@ -0,0 +1,7 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.StudyFilePersonRecordDo;
+import com.rongwei.rwcommon.base.BaseService;
+
+public interface StudyFilePersonRecordService extends BaseService<StudyFilePersonRecordDo> {
+}

+ 16 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/service/StudyFilePersonService.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.StudyFilePersonDo;
+import com.rongwei.rwcommon.base.BaseService;
+
+import java.util.List;
+
+public interface StudyFilePersonService extends BaseService<StudyFilePersonDo> {
+    /**
+     * 根据学习文件id查询学习文件人员
+     *
+     * @param studyFileId 学习文件id
+     * @return 学习文件人员
+     */
+    List<StudyFilePersonDo> selectListByStudyFileId(String studyFileId);
+}

+ 7 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/service/StudyFileRecordService.java

@@ -0,0 +1,7 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.StudyFileRecordDo;
+import com.rongwei.rwcommon.base.BaseService;
+
+public interface StudyFileRecordService  extends BaseService<StudyFileRecordDo> {
+}

+ 14 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/service/StudyFileService.java

@@ -0,0 +1,14 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.StudyFileDo;
+
+public interface StudyFileService {
+    /**
+     * 生成历史数据
+     *
+     * @param studyFileDo 学习文件
+     * @param processType 流程类型
+     * @return 生成结果
+     */
+    boolean produceHistory(StudyFileDo studyFileDo, String processType);
+}

+ 11 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/service/impl/StudyFilePersonRecordServiceImpl.java

@@ -0,0 +1,11 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.rongwei.bscommon.sys.dao.StudyFilePersonRecordDao;
+import com.rongwei.bscommon.sys.service.StudyFilePersonRecordService;
+import com.rongwei.bsentity.domain.StudyFilePersonRecordDo;
+import com.rongwei.rwcommon.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class StudyFilePersonRecordServiceImpl extends BaseServiceImpl<StudyFilePersonRecordDao,StudyFilePersonRecordDo> implements StudyFilePersonRecordService {
+}

+ 26 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/service/impl/StudyFilePersonServiceImpl.java

@@ -0,0 +1,26 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.rongwei.bscommon.sys.dao.StudyFilePersonDao;
+import com.rongwei.bscommon.sys.service.StudyFilePersonService;
+import com.rongwei.bsentity.domain.StudyFilePersonDo;
+import com.rongwei.rwcommon.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class StudyFilePersonServiceImpl extends BaseServiceImpl<StudyFilePersonDao, StudyFilePersonDo>
+        implements StudyFilePersonService {
+    /**
+     * 根据学习文件id查询学习文件人员
+     *
+     * @param studyFileId 学习文件id
+     * @return 学习文件人员
+     */
+    @Override
+    public List<StudyFilePersonDo> selectListByStudyFileId(String studyFileId) {
+        return lambdaQuery().eq(StudyFilePersonDo::getStudyFileId, studyFileId)
+                .eq(StudyFilePersonDo::getDeleted, "0")
+                .list();
+    }
+}

+ 14 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/service/impl/StudyFileRecordServiceImpl.java

@@ -0,0 +1,14 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.rongwei.bscommon.sys.dao.StudyFileRecordDao;
+import com.rongwei.bscommon.sys.service.StudyFileRecordService;
+import com.rongwei.bsentity.domain.StudyFileRecordDo;
+import com.rongwei.rwcommon.base.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class StudyFileRecordServiceImpl extends BaseServiceImpl<StudyFileRecordDao, StudyFileRecordDo> implements StudyFileRecordService {
+    @Autowired
+    private StudyFileRecordDao studyFileRecordDao;
+}

+ 121 - 0
qhse-common/src/main/java/com/rongwei/bscommon/sys/service/impl/StudyFileServiceImpl.java

@@ -0,0 +1,121 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.rongwei.bscommon.sys.dao.StudyFileDao;
+import com.rongwei.bscommon.sys.service.StudyFilePersonRecordService;
+import com.rongwei.bscommon.sys.service.StudyFilePersonService;
+import com.rongwei.bscommon.sys.service.StudyFileRecordService;
+import com.rongwei.bscommon.sys.service.StudyFileService;
+import com.rongwei.bscommon.sys.utils.QHSEUtils;
+import com.rongwei.bsentity.domain.*;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class StudyFileServiceImpl implements StudyFileService {
+    @Autowired
+    private StudyFileDao studyFileDao;
+    @Autowired
+    private StudyFileRecordService studyFileRecordService;
+    @Autowired
+    private StudyFilePersonService studyFilePersonService;
+    @Autowired
+    private StudyFilePersonRecordService studyFilePersonRecordService;
+
+    /**
+     * 生成历史数据
+     *
+     * @param studyFileDo 学习文件
+     * @param processType 流程类型
+     * @return 生成结果
+     */
+    @Override
+    @Transactional
+    public boolean produceHistory(StudyFileDo studyFileDo, String processType) {
+
+        // 获取最新的学习文件信息
+        StudyFileDo currentFile = studyFileDao.selectById(studyFileDo.getId());
+        if (currentFile == null) {
+            return false;
+        }
+
+        // 保存历史学习文件信息
+        StudyFileRecordDo historyFile = createHistoryFileRecord(currentFile);
+        studyFileRecordService.save(historyFile);
+
+        // 处理相关人员历史记录
+        processPersonHistoryRecords(currentFile.getId(), historyFile.getId(), processType);
+
+        return true;
+    }
+
+    /**
+     * 创建历史学习文件记录
+     *
+     * @param source 源数据
+     */
+    private StudyFileRecordDo createHistoryFileRecord(StudyFileDo source) {
+        StudyFileRecordDo target = new StudyFileRecordDo();
+        BeanUtils.copyProperties(source, target);
+        target.setId(SecurityUtil.getUUID());
+        target.setMainId(source.getId());
+        return target;
+    }
+
+    /**
+     * 处理相关人员历史记录
+     *
+     * @param fileId        文件ID
+     * @param historyFileId 历史文件ID
+     * @param processType   流程类型
+     */
+    private void processPersonHistoryRecords(String fileId, String historyFileId, String processType) {
+        // 获取当前用户信息
+        SysUserVo currentUser = QHSEUtils.getCurrentUser();
+
+        // 查询当前文件的所有人员信息
+        List<StudyFilePersonDo> currentPersons = studyFilePersonService.selectListByStudyFileId(fileId);
+
+        // 转换为历史记录并收集需要删除的ID
+        List<StudyFilePersonRecordDo> historyPersons = currentPersons.stream()
+                .map(person -> convertToHistoryPersonRecord(person, historyFileId, currentUser))
+                .collect(Collectors.toList());
+
+        // 批量保存历史记录
+        studyFilePersonRecordService.saveBatch(historyPersons);
+
+        // 如果是更新操作,删除原人员记录
+        if ("update".equals(processType)) {
+            List<String> personIdsToDelete = currentPersons.stream()
+                    .map(StudyFilePersonDo::getId)
+                    .collect(Collectors.toList());
+            studyFilePersonService.removeByIds(personIdsToDelete);
+        }
+    }
+
+    /**
+     * 将人员记录转换为历史人员记录
+     *
+     * @param source        源数据
+     * @param historyFileId 历史文件ID
+     * @param currentUser
+     */
+    private StudyFilePersonRecordDo convertToHistoryPersonRecord(StudyFilePersonDo source, String historyFileId, SysUserVo currentUser) {
+        StudyFilePersonRecordDo target = new StudyFilePersonRecordDo();
+        BeanUtils.copyProperties(source, target);
+        target.setId(SecurityUtil.getUUID());
+        target.setMainId(source.getId());
+        target.setStudyFileId(historyFileId);
+        target.setCreatedate(new Date());
+        target.setCreateuserid(currentUser.getId());
+        target.setCreateusername(currentUser.getName());
+        return target;
+    }
+}

+ 15 - 0
qhse-entity/src/main/java/com/rongwei/bsentity/Dto/StudyFileProduceHistoryDto.java

@@ -0,0 +1,15 @@
+package com.rongwei.bsentity.Dto;
+
+import com.rongwei.bsentity.domain.StudyFileDo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class StudyFileProduceHistoryDto extends StudyFileDo {
+
+    /**
+     * 流程类型
+     */
+    private String processType;
+}

+ 119 - 0
qhse-entity/src/main/java/com/rongwei/bsentity/domain/StudyFileDo.java

@@ -0,0 +1,119 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 学习文件管理表
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName(value = "qhse_study_file")
+public class StudyFileDo extends BaseDo {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "ID")
+    private String id;
+
+    /**
+     * 学习文件类型ID
+     */
+    @TableField(value = "STUDYFILETYPEID")
+    private String studyFileTypeId;
+
+    /**
+     * 编号
+     */
+    @TableField(value = "CODE")
+    private String code;
+
+    /**
+     * 名称
+     */
+    @TableField(value = "NAME")
+    private String name;
+
+    /**
+     * 部门ID
+     */
+    @TableField(value = "DEPARTMENTID")
+    private String departmentId;
+
+    /**
+     * 部门名称
+     */
+    @TableField(value = "DEPARTMENTNAME")
+    private String departmentName;
+
+    /**
+     * 类型
+     */
+    @TableField(value = "TYPE")
+    private String type;
+
+    /**
+     * 是否可下载, 0-否, 1-是
+     */
+    @TableField(value = "CANDOWNLOAD")
+    private String canDownload;
+
+    /**
+     * 文件路径
+     */
+    @TableField(value = "FILEPATH")
+    private String filePath;
+
+    /**
+     * 租户ID
+     */
+    @TableField(value = "TENANTID")
+    private String tenantId;
+
+    /**
+     * 扩展json格式配置
+     */
+    @TableField(value = "ROPTION")
+    private String roption;
+
+    /**
+     * 文件UUID,关联实际存储的文件标识
+     */
+    @TableField(value = "FILEUUID")
+    private String fileUuid;
+
+    /**
+     * 版本号
+     */
+    @TableField(value = "VERSION")
+    private String version;
+
+    /**
+     * 网格
+     */
+    @TableField(value = "GRID")
+    private String grid;
+
+    /**
+     * 流程ID
+     */
+    @TableField(value = "PROCESSINSTID")
+    private String processInstId;
+
+    /**
+     * 流程状态
+     */
+    @TableField(value = "PROCESSINSTSTATUS")
+    private String processInstStatus;
+
+    /**
+     * 是否废弃, 0-否, 1-是(默认 '0')
+     */
+    @TableField(value = "ISABANDONED")
+    private String isAbandoned = "0";
+}

+ 90 - 0
qhse-entity/src/main/java/com/rongwei/bsentity/domain/StudyFilePersonDo.java

@@ -0,0 +1,90 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * 学习文件人员表
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName(value = "qhse_study_file_person")
+public class StudyFilePersonDo extends BaseDo {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "ID")
+    private String id;
+
+    /**
+     * 学习文件ID
+     */
+    @TableField("STUDYFILEID")
+    private String studyFileId;
+
+    /**
+     * 部门id
+     */
+    @TableField("DEPARTMENTID")
+    private String departmentId;
+
+    /**
+     * 部门名称
+     */
+    @TableField("DEPARTMENTNAME")
+    private String departmentName;
+
+    /**
+     * 人员id
+     */
+    @TableField("PERSONID")
+    private String personId;
+
+    /**
+     * 人员名称
+     */
+    @TableField("PERSONNAME")
+    private String personName;
+
+    /**
+     * 是否培训完成,0-否,1-是
+     */
+    @TableField("ISTRAINED")
+    private String isTrained = "0";
+
+    /**
+     * 培训完成时间
+     */
+    @TableField("TRAINEDTIME")
+    private LocalDateTime trainedTime;
+
+    /**
+     * 已学习文件ID
+     */
+    @TableField("STUDIEDFILEID")
+    private String studiedFileId;
+
+    /**
+     * 已学习文件名称
+     */
+    @TableField("STUDIEDFILENAME")
+    private String studiedFileName;
+
+    /**
+     * 租户ID
+     */
+    @TableField("TENANTID")
+    private String tenantId;
+
+    /**
+     * 扩展json格式配置
+     */
+    @TableField(value = "ROPTION", typeHandler = JacksonTypeHandler.class)
+    private Object roption;
+}

+ 96 - 0
qhse-entity/src/main/java/com/rongwei/bsentity/domain/StudyFilePersonRecordDo.java

@@ -0,0 +1,96 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * 学习文件人员记录表
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName(value = "qhse_study_file_person_record")
+public class StudyFilePersonRecordDo extends BaseDo {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "ID")
+    private String id;
+
+    /**
+     * 原表ID
+     */
+    @TableField("MAINID")
+    private String mainId;
+
+    /**
+     * 学习文件ID
+     */
+    @TableField("STUDYFILEID")
+    private String studyFileId;
+
+    /**
+     * 部门id
+     */
+    @TableField("DEPARTMENTID")
+    private String departmentId;
+
+    /**
+     * 部门名称
+     */
+    @TableField("DEPARTMENTNAME")
+    private String departmentName;
+
+    /**
+     * 人员id
+     */
+    @TableField("PERSONID")
+    private String personId;
+
+    /**
+     * 人员名称
+     */
+    @TableField("PERSONNAME")
+    private String personName;
+
+    /**
+     * 是否培训完成,0-否,1-是
+     */
+    @TableField("ISTRAINED")
+    private String isTrained = "0";
+
+    /**
+     * 培训完成时间
+     */
+    @TableField("TRAINEDTIME")
+    private LocalDateTime trainedTime;
+
+    /**
+     * 已学习文件ID
+     */
+    @TableField("STUDIEDFILEID")
+    private String studiedFileId;
+
+    /**
+     * 已学习文件名称
+     */
+    @TableField("STUDIEDFILENAME")
+    private String studiedFileName;
+
+    /**
+     * 租户ID
+     */
+    @TableField("TENANTID")
+    private String tenantId;
+
+    /**
+     * 扩展json格式配置
+     */
+    @TableField(value = "ROPTION", typeHandler = JacksonTypeHandler.class)
+    private Object roption;
+}

+ 125 - 0
qhse-entity/src/main/java/com/rongwei/bsentity/domain/StudyFileRecordDo.java

@@ -0,0 +1,125 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 学习文件管理记录表
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@TableName(value = "qhse_study_file_record")
+public class StudyFileRecordDo extends BaseDo {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "ID")
+    private String id;
+
+    /**
+     * 原表ID
+     */
+    @TableField(value = "MAINID")
+    private String mainId;
+
+    /**
+     * 学习文件类型ID
+     */
+    @TableField(value = "STUDYFILETYPEID")
+    private String studyFileTypeId;
+
+    /**
+     * 编号
+     */
+    @TableField(value = "CODE")
+    private String code;
+
+    /**
+     * 名称
+     */
+    @TableField(value = "NAME")
+    private String name;
+
+    /**
+     * 部门ID
+     */
+    @TableField(value = "DEPARTMENTID")
+    private String departmentId;
+
+    /**
+     * 部门名称
+     */
+    @TableField(value = "DEPARTMENTNAME")
+    private String departmentName;
+
+    /**
+     * 类型
+     */
+    @TableField(value = "TYPE")
+    private String type;
+
+    /**
+     * 是否可下载, 0-否, 1-是
+     */
+    @TableField(value = "CANDOWNLOAD")
+    private String canDownload;
+
+    /**
+     * 文件路径
+     */
+    @TableField(value = "FILEPATH")
+    private String filePath;
+
+    /**
+     * 租户ID
+     */
+    @TableField(value = "TENANTID")
+    private String tenantId;
+
+    /**
+     * 扩展json格式配置
+     */
+    @TableField(value = "ROPTION")
+    private String roption;
+
+    /**
+     * 文件UUID,关联实际存储的文件标识
+     */
+    @TableField(value = "FILEUUID")
+    private String fileUuid;
+
+    /**
+     * 版本号
+     */
+    @TableField(value = "VERSION")
+    private String version;
+
+    /**
+     * 网格
+     */
+    @TableField(value = "GRID")
+    private String grid;
+
+    /**
+     * 流程ID
+     */
+    @TableField(value = "PROCESSINSTID")
+    private String processInstId;
+
+    /**
+     * 是否废弃, 0-否, 1-是(默认 '0')
+     */
+    @TableField(value = "ISABANDONED")
+    private String isAbandoned = "0";
+
+    /**
+     * 流程状态
+     */
+    @TableField(value = "PROCESSINSTSTATUS")
+    private String processInstStatus;
+}

+ 32 - 0
qhse-server/src/main/java/com/rongwei/controller/StudyFileController.java

@@ -0,0 +1,32 @@
+package com.rongwei.controller;
+
+import com.rongwei.bscommon.sys.service.StudyFileService;
+import com.rongwei.bsentity.Dto.StudyFileProduceHistoryDto;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/study/file")
+public class StudyFileController {
+    @Autowired
+    private StudyFileService studyFileService;
+
+    /**
+     * 生成历史数据
+     *
+     * @param dto 学习文件
+     * @return 生成结果
+     */
+    @PostMapping("/produce/history")
+    public R produceHistory(@RequestBody StudyFileProduceHistoryDto dto) {
+        if (StringUtils.isBlank(dto.getId())) {
+            return R.error("请选择要生成历史记录的文件!");
+        }
+        return studyFileService.produceHistory(dto, dto.getProcessType()) ? R.ok() : R.error("生成历史记录失败!");
+    }
+}