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

自定义流程接口-入库申请加入版本号控制

wangliang 3 роки тому
батько
коміт
fa38eabbc2

+ 25 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskApplyTemp.java

@@ -5,14 +5,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.ExamStatusEnum;
-import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -48,6 +45,31 @@ public class ExamTaskApplyTemp extends BaseEntity implements Serializable {
     @TableField(exist = false)
     private List<Long> approveUserIds;
 
+    @ApiModelProperty(value = "自定义流程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField(exist = false)
+    private Long customFlowId;
+
+    @ApiModelProperty(value = "版本号")
+    @TableField(exist = false)
+    private Integer version;
+
+    public Long getCustomFlowId() {
+        return customFlowId;
+    }
+
+    public void setCustomFlowId(Long customFlowId) {
+        this.customFlowId = customFlowId;
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.business.service;
 
 import com.qmth.distributed.print.business.bean.flow.CustomFlowSaveDto;
+import com.qmth.distributed.print.business.bean.result.FlowInfoResult;
 import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
 import com.qmth.distributed.print.business.bean.result.FlowViewResult;
 import com.qmth.distributed.print.business.bean.result.TaskInfoResult;
@@ -98,5 +99,5 @@ public interface ActivitiService {
      * @param type
      * @return
      */
-    public List<FlowTaskResult> getFlowInfoByType(TFCustomTypeEnum type);
+    public FlowInfoResult getFlowInfoByType(TFCustomTypeEnum type);
 }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -1422,7 +1422,7 @@ public class ActivitiServiceImpl implements ActivitiService {
      * @return
      */
     @Override
-    public List<FlowTaskResult> getFlowInfoByType(TFCustomTypeEnum type) {
+    public FlowInfoResult getFlowInfoByType(TFCustomTypeEnum type) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         TFCustomFlow tfCustomFlow = tfCustomFlowService.findMaxVersion(sysUser.getSchoolId(), null, type);
         Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到自定义流程数据"));
@@ -1439,7 +1439,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                 f.setApproveUserNames(customFlowVarDto.getApproveUserNames());
             }
         }
-        return flowTaskResultList;
+        return new FlowInfoResult(tfCustomFlow.getId(), tfCustomFlow.getVersion(), flowTaskResultList);
     }
 
     /**

+ 15 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -173,6 +173,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     CommonCacheService commonCacheService;
 
+    @Resource
+    TFCustomFlowService tfCustomFlowService;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -1623,6 +1626,18 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     public ExamTask submitTaskApply(ExamTaskApplyTemp examTaskApplyTemp) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        Long customFlowId = examTaskApplyTemp.getCustomFlowId();
+        Optional.ofNullable(customFlowId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程id为空"));
+
+        Integer version = examTaskApplyTemp.getVersion();
+        Optional.ofNullable(version).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程版本号为空"));
+
+        TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(customFlowId);
+        Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到自定义流程数据"));
+
+        if (tfCustomFlow.getVersion().intValue() > version.intValue()) {
+            Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程数据已发生改变,请刷新重试"));
+        }
 
         JSONObject jsonObject = JSONObject.parseObject(examTaskApplyTemp.getExamTaskContent());
 

+ 2 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java

@@ -12,10 +12,7 @@ import com.qmth.distributed.print.business.bean.flow.CustomFlowSaveDto;
 import com.qmth.distributed.print.business.bean.params.CustomFlowParam;
 import com.qmth.distributed.print.business.bean.params.CustomFlowRenameParam;
 import com.qmth.distributed.print.business.bean.params.FlowTaskApproveParam;
-import com.qmth.distributed.print.business.bean.result.FlowApproveListResult;
-import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
-import com.qmth.distributed.print.business.bean.result.FlowViewResult;
-import com.qmth.distributed.print.business.bean.result.TaskInfoResult;
+import com.qmth.distributed.print.business.bean.result.*;
 import com.qmth.distributed.print.business.entity.TFCustomFlow;
 import com.qmth.distributed.print.business.entity.TFCustomFlowEntity;
 import com.qmth.distributed.print.business.entity.TFFlowApprove;
@@ -284,7 +281,7 @@ public class TFCustomFlowController {
     }
 
     @ApiOperation(value = "根据流程类型获取流程节点")
-    @ApiResponses({@ApiResponse(code = 200, message = "当前流程节点信息", response = FlowTaskResult.class)})
+    @ApiResponses({@ApiResponse(code = 200, message = "当前流程节点信息", response = FlowInfoResult.class)})
     @RequestMapping(value = "/get_flow_info_by_type", method = RequestMethod.POST)
     public Result getFlowInfoByType(@ApiParam(value = "流程类型", required = true) @RequestParam TFCustomTypeEnum type) {
         return ResultUtil.ok(activitiService.getFlowInfoByType(type));