Explorar o código

禁用表单和流程设计

车车 hai 4 meses
pai
achega
5866175e3d

+ 1 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/biz/iscs/IscsCommonApi.java

@@ -6,5 +6,6 @@ public interface IscsCommonApi {
 
     Boolean updateJobTicket(UpdateJobStateReqDTO dto);
 
+    Integer getNodeByFormId(Long formId);
 
 }

+ 9 - 0
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmFormController.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormRespVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormSaveReqVO;
+import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormStatusReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
 import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -46,6 +47,14 @@ public class BpmFormController {
         return success(true);
     }
 
+    @PutMapping("/updateStatus")
+    @Operation(summary = "更新动态表单-禁用")
+    @PreAuthorize("@ss.hasPermission('bpm:form:update')")
+    public CommonResult<Boolean> updateStatus(@Valid @RequestBody BpmFormStatusReqVO updateReqVO) {
+        formService.updateStatus(updateReqVO);
+        return success(true);
+    }
+
     @DeleteMapping("/delete")
     @Operation(summary = "删除动态表单")
     @Parameter(name = "id", description = "编号", required = true)

+ 19 - 0
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormStatusReqVO.java

@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 动态表单创建/更新状态 Request VO")
+@Data
+public class BpmFormStatusReqVO {
+
+    @Schema(description = "表单编号", example = "1024")
+    @NotNull(message = "ID不能为空")
+    private Long id;
+
+    @Schema(description = "表单状态-参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "表单状态不能为空")
+    private Integer status;
+
+}

+ 8 - 0
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormService.java

@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormSaveReqVO;
+import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormStatusReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
 import jakarta.validation.Valid;
 
@@ -34,6 +35,13 @@ public interface BpmFormService {
      */
     void updateForm(@Valid BpmFormSaveReqVO updateReqVO);
 
+    /**
+     * 更新动态表单-禁用
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateStatus(@Valid BpmFormStatusReqVO updateReqVO);
+
     /**
      * 删除动态表单
      *

+ 12 - 0
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormServiceImpl.java

@@ -2,11 +2,13 @@ package cn.iocoder.yudao.module.bpm.service.definition;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Assert;
+import cn.iocoder.yudao.framework.common.biz.iscs.IscsCommonApi;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormSaveReqVO;
+import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormStatusReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
 import cn.iocoder.yudao.module.bpm.dal.mysql.definition.BpmFormMapper;
 import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants;
@@ -30,6 +32,8 @@ public class BpmFormServiceImpl implements BpmFormService {
 
     @Resource
     private BpmFormMapper formMapper;
+    @Resource
+    private IscsCommonApi iscsCommonApi;
 
     @Override
     public Long createForm(BpmFormSaveReqVO createReqVO) {
@@ -51,6 +55,14 @@ public class BpmFormServiceImpl implements BpmFormService {
         formMapper.updateById(updateObj);
     }
 
+    @Override
+    public void updateStatus(BpmFormStatusReqVO updateReqVO) {
+        if (updateReqVO.getStatus().equals(1)) {
+            Integer nodeByFormId = iscsCommonApi.getNodeByFormId(updateReqVO.getId());
+            Assert.isTrue(nodeByFormId > 0, "表单正在被使用,不可删除");
+        }
+    }
+
     @Override
     public void deleteForm(Long id) {
         // 校验存在

+ 19 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/api/task/JobTicketApiImpl.java

@@ -2,11 +2,16 @@ package cn.iocoder.yudao.module.iscs.api.task;
 
 import cn.iocoder.yudao.framework.common.biz.iscs.IscsCommonApi;
 import cn.iocoder.yudao.framework.common.biz.iscs.dto.UpdateJobStateReqDTO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowDesignNodeDO;
 import cn.iocoder.yudao.module.iscs.service.jobticket.JobTicketService;
+import cn.iocoder.yudao.module.iscs.service.workdesign.WorkflowDesignNodeService;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
+import java.util.List;
+
 @Service
 @Validated
 public class JobTicketApiImpl implements IscsCommonApi {
@@ -14,9 +19,23 @@ public class JobTicketApiImpl implements IscsCommonApi {
     @Resource
     private JobTicketService jobTicketService;
 
+    @Resource
+    private WorkflowDesignNodeService workflowDesignNodeService;
+
 
     @Override
     public Boolean updateJobTicket(UpdateJobStateReqDTO dto) {
         return null;
     }
+
+    @Override
+    public Integer getNodeByFormId(Long formId) {
+        int i = 0;
+        if (formId != null) {
+            List<WorkflowDesignNodeDO> list = workflowDesignNodeService.list(Wrappers.<WorkflowDesignNodeDO>lambdaQuery()
+                    .eq(WorkflowDesignNodeDO::getFormId, formId));
+            i = list.size();
+        }
+        return i;
+    }
 }

+ 8 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workflowdesign/WorkflowDesignController.java

@@ -46,6 +46,14 @@ public class WorkflowDesignController {
         return success(true);
     }
 
+    @PutMapping("/updateWorkflowDesignStatus")
+    @Operation(summary = "更新流程设计-禁用")
+    @PreAuthorize("@ss.hasPermission('iscs:workflow-design:update')")
+    public CommonResult<Boolean> updateWorkflowDesignStatus(@Valid @RequestBody WorkflowDesignSaveReqVO updateReqVO) {
+        workflowDesignService.updateWorkflowDesignStatus(updateReqVO);
+        return success(true);
+    }
+
     @DeleteMapping("/deleteWorkflowDesignList")
     @Parameter(name = "ids", description = "编号", required = true)
     @Operation(summary = "批量删除流程设计")

+ 0 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workflowdesign/vo/WorkflowDesignSaveReqVO.java

@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowdesign.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;
 
 @Schema(description = "管理后台 - 流程设计新增/修改 Request VO")
@@ -12,7 +11,6 @@ public class WorkflowDesignSaveReqVO {
     private Long id;
 
     @Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
-    @NotEmpty(message = "流程名称不能为空")
     private String name;
 
     @Schema(description = "流程JSON配置(包含节点和连线)", requiredMode = Schema.RequiredMode.REQUIRED)

+ 4 - 9
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workflowworknode/WorkflowWorkNodeController.java

@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowworknode;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowworknode.vo.WorkflowWorkNodePageReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowworknode.vo.WorkflowWorkNodeSaveReqVO;
 import cn.iocoder.yudao.module.iscs.service.workdesign.WorkflowWorkNodeService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -10,7 +9,10 @@ import jakarta.annotation.Resource;
 import jakarta.validation.Valid;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
@@ -48,11 +50,4 @@ public class WorkflowWorkNodeController {
         return success(BeanUtils.toBean(pageResult, WorkflowWorkNodeRespVO.class));
     }*/
 
-    @PostMapping("/test")
-    @Operation(summary = "测试")
-    public CommonResult<Boolean> insertWorkflowWork(@Valid @RequestBody WorkflowWorkNodePageReqVO createReqVO) {
-        return success(workflowWorkNodeService.sendMessageToAdmin(createReqVO.getNodeId()));
-    }
-
-
 }

+ 7 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/WorkflowDesignService.java

@@ -31,6 +31,13 @@ public interface WorkflowDesignService extends IService<WorkflowDesignDO> {
      */
     void updateWorkflowDesign(@Valid WorkflowDesignSaveReqVO updateReqVO);
 
+    /**
+     * 更新流程设计-禁用
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateWorkflowDesignStatus(@Valid WorkflowDesignSaveReqVO updateReqVO);
+
     /**
      * 删除流程设计
      *

+ 24 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/WorkflowDesignServiceImpl.java

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowdesign.v
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowdesign.vo.WorkflowDesignSaveReqVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowDesignDO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowDesignNodeDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowWorkDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.workdesign.WorkflowDesignMapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,12 +15,14 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import jakarta.annotation.Resource;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 流程设计 Service 实现类
@@ -34,6 +37,9 @@ public class WorkflowDesignServiceImpl extends ServiceImpl<WorkflowDesignMapper,
     private WorkflowDesignMapper workflowDesignMapper;
     @Resource
     private WorkflowDesignNodeService workflowDesignNodeService;
+    @Lazy
+    @Resource
+    private WorkflowWorkService workflowWorkService;
 
     @Transactional
     @Override
@@ -114,6 +120,24 @@ public class WorkflowDesignServiceImpl extends ServiceImpl<WorkflowDesignMapper,
         workflowDesignMapper.updateById(updateObj);
     }
 
+    @Override
+    public void updateWorkflowDesignStatus(WorkflowDesignSaveReqVO updateReqVO) {
+        // 检查参数
+        Assert.notNull(updateReqVO.getId(), "ID不可为空");
+        Assert.notNull(updateReqVO.getStatus(), "状态不可为空");
+        if (updateReqVO.getStatus().equals(0)) {
+            // 检查是否被使用,使用了不能禁用
+            List<WorkflowWorkDO> list = workflowWorkService.list(Wrappers.<WorkflowWorkDO>lambdaQuery()
+                    .eq(WorkflowWorkDO::getDesignId, updateReqVO.getId()));
+            Assert.isTrue(list.isEmpty(), "正在被"
+                    + list.stream().map(WorkflowWorkDO::getName).collect(Collectors.joining(",")) + "使用,不可禁用");
+        }
+        update(Wrappers.<WorkflowDesignDO>lambdaUpdate()
+                .eq(WorkflowDesignDO::getId, updateReqVO.getId())
+                .set(WorkflowDesignDO::getStatus, updateReqVO.getStatus()));
+
+    }
+
     @Override
     public void deleteWorkflowDesign(Long id) {
         // 删除