Browse Source

sop发布和删除加入流程校验

wangliang 1 year ago
parent
commit
f2187da839

+ 31 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TBCrmDetail.java

@@ -1,16 +1,19 @@
 package com.qmth.sop.business.entity;
 
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.qmth.sop.business.bean.dto.CrmDetailImportDto;
 import com.qmth.sop.common.base.BaseEntity;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.enums.CrmStatusEnum;
+import com.qmth.sop.common.enums.FlowStatusEnum;
 import com.qmth.sop.common.enums.ServiceScopeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.Objects;
 
 /**
  * <p>
@@ -72,6 +75,14 @@ public class TBCrmDetail extends BaseEntity implements Serializable {
     @NotNull(message = "阅卷结束时间不能为空")
     private Long markPaperEndTime;
 
+    @ApiModelProperty(value = "状态")
+    @TableField(exist = false)
+    String flowStatusStr;
+
+    @ApiModelProperty(value = "状态,START:已开始,AUDITING:审核中,REJECT:已驳回,END:已终止,FINISH:已结束")
+    @TableField(exist = false)
+    private FlowStatusEnum flowStatus;
+
     public TBCrmDetail() {
 
     }
@@ -121,6 +132,26 @@ public class TBCrmDetail extends BaseEntity implements Serializable {
         updateInfo(userId);
     }
 
+    public String getFlowStatusStr() {
+        if (Objects.nonNull(this.flowStatus)) {
+            return this.flowStatus.getTitle();
+        } else {
+            return flowStatusStr;
+        }
+    }
+
+    public void setFlowStatusStr(String flowStatusStr) {
+        this.flowStatusStr = flowStatusStr;
+    }
+
+    public FlowStatusEnum getFlowStatus() {
+        return flowStatus;
+    }
+
+    public void setFlowStatus(FlowStatusEnum flowStatus) {
+        this.flowStatus = flowStatus;
+    }
+
     public String getCrmNo() {
         return crmNo;
     }

+ 9 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBCrmDetailService.java

@@ -6,6 +6,7 @@ import com.qmth.sop.business.bean.params.CrmDetailSopParam;
 import com.qmth.sop.business.bean.result.CrmProjectResult;
 import com.qmth.sop.business.entity.TBCrmDetail;
 import com.qmth.sop.business.entity.TFCustomFlow;
+import com.qmth.sop.common.enums.FlowStatusEnum;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Map;
@@ -93,4 +94,12 @@ public interface TBCrmDetailService extends IService<TBCrmDetail> {
      * @return
      */
     public TBCrmDetail findBySopNo(String sopNo);
+
+    /**
+     * 根据id查询流程状态
+     *
+     * @param id
+     * @return
+     */
+    public FlowStatusEnum findById(Long id);
 }

+ 40 - 36
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBCrmDetailServiceImpl.java

@@ -216,24 +216,12 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
                 TBCrmDetail tbCrmDetailDb = tbCrmDetailService.getById(tbCrmDetail.getId());
                 Objects.requireNonNull(tbCrmDetailDb, "未找到派单sop信息");
 
-                if (tbCrmDetailDb.getStatus() == CrmStatusEnum.PUBLISH) {
-                    TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
-                            new QueryWrapper<TFCustomFlowEntity>().lambda()
-                                    .eq(TFCustomFlowEntity::getCode, tbCrmDetailDb.getSopNo()));
-                    Optional.ofNullable(tfCustomFlowEntity)
-                            .orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
-
-                    TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(new QueryWrapper<TFFlowApprove>().lambda()
-                            .eq(TFFlowApprove::getFlowId, tfCustomFlowEntity.getFlowId()));
-                    Optional.ofNullable(tfFlowApprove)
-                            .orElseThrow(() -> ExceptionResultEnum.FLOW_APPROVE_NO_DATA.exception());
-
-                    if (tfFlowApprove.getStatus() == FlowStatusEnum.FINISH
-                            || tfFlowApprove.getStatus() == FlowStatusEnum.END) {
-                        throw ExceptionResultEnum.ERROR.exception("流程已结束,无法编辑");
-                    } else if (tfFlowApprove.getStatus() != FlowStatusEnum.DRAFT) {
-                        throw ExceptionResultEnum.ERROR.exception("在途流程不支持编辑");
-                    }
+                FlowStatusEnum flowStatus = tbCrmDetailService.findById(tbCrmDetailDb.getId());
+                if (Objects.nonNull(flowStatus) && (flowStatus == FlowStatusEnum.FINISH
+                        || flowStatus == FlowStatusEnum.END)) {
+                    throw ExceptionResultEnum.ERROR.exception("流程已结束,无法编辑");
+                } else if (Objects.nonNull(flowStatus) && (flowStatus != FlowStatusEnum.DRAFT)) {
+                    throw ExceptionResultEnum.ERROR.exception("在途流程不支持编辑");
                 }
                 tbCrmDetail.updateInfo(sysUser.getId());
             }
@@ -325,28 +313,18 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
         TBCrmDetail tbCrmDetail = tbCrmDetailService.getById(id);
         Objects.requireNonNull(tbCrmDetail, "未找到派单sop信息");
 
-        boolean result = false;
-        if (tbCrmDetail.getStatus() == CrmStatusEnum.PUBLISH) {
+        FlowStatusEnum flowStatus = tbCrmDetailService.findById(id);
+        if (Objects.nonNull(flowStatus) && (flowStatus == FlowStatusEnum.FINISH || flowStatus == FlowStatusEnum.END)) {
+            throw ExceptionResultEnum.ERROR.exception("流程已结束,无法删除");
+        } else if (Objects.nonNull(flowStatus) && (flowStatus != FlowStatusEnum.DRAFT)) {
+            throw ExceptionResultEnum.ERROR.exception("在途流程不支持删除");
+        } else if (Objects.nonNull(flowStatus)) {
             TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
                     new QueryWrapper<TFCustomFlowEntity>().lambda()
                             .eq(TFCustomFlowEntity::getCode, tbCrmDetail.getSopNo()));
-            Optional.ofNullable(tfCustomFlowEntity)
-                    .orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
-
-            TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(new QueryWrapper<TFFlowApprove>().lambda()
-                    .eq(TFFlowApprove::getFlowId, tfCustomFlowEntity.getFlowId()));
-            Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.FLOW_APPROVE_NO_DATA.exception());
-
-            tfFlowApprove.setStatus(FlowStatusEnum.DRAFT);
-            if (tfFlowApprove.getStatus() == FlowStatusEnum.FINISH || tfFlowApprove.getStatus() == FlowStatusEnum.END) {
-                throw ExceptionResultEnum.ERROR.exception("流程已结束,无法删除");
-            } else if (tfFlowApprove.getStatus() != FlowStatusEnum.DRAFT) {
-                throw ExceptionResultEnum.ERROR.exception("在途流程不支持删除");
-            } else {
-                activitiService.flowEnd(tfCustomFlowEntity.getFlowId());
-            }
-            result = tbCrmDetailService.removeById(tbCrmDetail.getId());
+            activitiService.flowEnd(tfCustomFlowEntity.getFlowId());
         }
+        boolean result = tbCrmDetailService.removeById(tbCrmDetail.getId());
         int count = tbCrmDetailService.count(
                 new QueryWrapper<TBCrmDetail>().lambda().eq(TBCrmDetail::getStatus, CrmStatusEnum.PUBLISH));
         if (count == 0) {
@@ -365,4 +343,30 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
     public TBCrmDetail findBySopNo(String sopNo) {
         return tbCrmDetailService.getOne(new QueryWrapper<TBCrmDetail>().lambda().eq(TBCrmDetail::getSopNo, sopNo));
     }
+
+    /**
+     * 根据id查询流程状态
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public FlowStatusEnum findById(Long id) {
+        TBCrmDetail tbCrmDetail = tbCrmDetailService.getById(id);
+        Objects.requireNonNull(tbCrmDetail, "未找到派单sop信息");
+
+        TFFlowApprove tfFlowApprove = null;
+        if (tbCrmDetail.getStatus() == CrmStatusEnum.PUBLISH) {
+            TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
+                    new QueryWrapper<TFCustomFlowEntity>().lambda()
+                            .eq(TFCustomFlowEntity::getCode, tbCrmDetail.getSopNo()));
+            Optional.ofNullable(tfCustomFlowEntity)
+                    .orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
+
+            tfFlowApprove = tfFlowApproveService.getOne(new QueryWrapper<TFFlowApprove>().lambda()
+                    .eq(TFFlowApprove::getFlowId, tfCustomFlowEntity.getFlowId()));
+            Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.FLOW_APPROVE_NO_DATA.exception());
+        }
+        return Objects.nonNull(tfFlowApprove) ? tfFlowApprove.getStatus() : null;
+    }
 }

+ 4 - 1
sop-business/src/main/resources/mapper/TBCrmDetailMapper.xml

@@ -3,6 +3,9 @@
 <mapper namespace="com.qmth.sop.business.mapper.TBCrmDetailMapper">
 
     <select id="list" resultType="com.qmth.sop.business.entity.TBCrmDetail">
-        select t.* from t_b_crm_detail t where t.crm_no = #{crmNo}
+        select t.*,tffa.status as flowStatus from t_b_crm_detail t
+        left join t_f_custom_flow_entity tfcfe on tfcfe.code = t.sop_no
+        left join t_f_flow_approve tffa on tffa.flow_id = tfcfe.flow_id
+        where t.crm_no = #{crmNo}
     </select>
 </mapper>