Przeglądaj źródła

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

wangliang 1 rok temu
rodzic
commit
9998cd6ada

+ 57 - 3
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBCrmDetailServiceImpl.java

@@ -64,6 +64,12 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
     @Resource
     TBSopInfoService tbSopInfoService;
 
+    @Resource
+    TFCustomFlowEntityService tfCustomFlowEntityService;
+
+    @Resource
+    TFFlowApproveService tfFlowApproveService;
+
     @Resource
     ActivitiService activitiService;
 
@@ -209,7 +215,26 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
             } else {
                 TBCrmDetail tbCrmDetailDb = tbCrmDetailService.getById(tbCrmDetail.getId());
                 Objects.requireNonNull(tbCrmDetailDb, "未找到派单sop信息");
-                //todo 补上流程信息
+
+                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("在途流程不支持编辑");
+                    }
+                }
                 tbCrmDetail.updateInfo(sysUser.getId());
             }
             return tbCrmDetailService.saveOrUpdate(tbCrmDetail);
@@ -274,6 +299,9 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
         TBCrm tbCrm = tbCrmService.findByCrmNo(tbCrmDetail.getCrmNo());
         //发布流程
         TFCustomFlow tfCustomFlow = tbCrmDetailService.queryCustomFlow(tbCrmDetail.getCrmNo());
+        if (tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW) {
+            throw ExceptionResultEnum.ERROR.exception("研究生SOP暂不支持发布");
+        }
         Map<String, Object> var = new HashMap<>();
         var.put(SystemConstant.CRM_DETAIL, tbCrmDetail);
         var.put(SystemConstant.PROCESS_VAR, tbCrm.getProcessVar());
@@ -297,8 +325,34 @@ public class TBCrmDetailServiceImpl extends ServiceImpl<TBCrmDetailMapper, TBCrm
         TBCrmDetail tbCrmDetail = tbCrmDetailService.getById(id);
         Objects.requireNonNull(tbCrmDetail, "未找到派单sop信息");
 
-        //todo 补上流程信息
-        return tbCrmDetailService.removeById(tbCrmDetail.getId());
+        boolean result = false;
+        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 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());
+        }
+        int count = tbCrmDetailService.count(
+                new QueryWrapper<TBCrmDetail>().lambda().eq(TBCrmDetail::getStatus, CrmStatusEnum.PUBLISH));
+        if (count == 0) {
+            tbCrmService.updateCrmStatus(tbCrmDetail.getCrmNo(), CrmStatusEnum.UN_PUBLISH);
+        }
+        return result;
     }
 
     /**