Parcourir la source

自定流程提交

小车车 il y a 4 mois
Parent
commit
4b2ec2c133

+ 0 - 38
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workflow/WorkflowStepController.java

@@ -44,32 +44,6 @@ public class WorkflowStepController {
         return success(workflowStepService.createWorkflowStep(createReqVO));
     }
 
-    @PutMapping("/updateWorkflowStep")
-    @Operation(summary = "更新工作流步骤")
-    @PreAuthorize("@ss.hasPermission('iscs:workflow-step:update')")
-    public CommonResult<Boolean> updateWorkflowStep(@Valid @RequestBody WorkflowStepSaveReqVO updateReqVO) {
-        workflowStepService.updateWorkflowStep(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/deleteWorkflowStepList")
-    @Parameter(name = "ids", description = "编号", required = true)
-    @Operation(summary = "批量删除工作流步骤")
-                @PreAuthorize("@ss.hasPermission('iscs:workflow-step:delete')")
-    public CommonResult<Boolean> deleteWorkflowStepList(@RequestParam("ids") List<Long> ids) {
-        workflowStepService.deleteWorkflowStepListByIds(ids);
-        return success(true);
-    }
-
-    @GetMapping("/selectWorkflowStepById")
-    @Operation(summary = "获得工作流步骤")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('iscs:workflow-step:query')")
-    public CommonResult<WorkflowStepRespVO> selectWorkflowStepById(@RequestParam("id") Long id) {
-        WorkflowStepDO workflowStep = workflowStepService.getWorkflowStep(id);
-        return success(BeanUtils.toBean(workflowStep, WorkflowStepRespVO.class));
-    }
-
     @GetMapping("/getWorkflowStepPage")
     @Operation(summary = "获得工作流步骤分页")
     @PreAuthorize("@ss.hasPermission('iscs:workflow-step:query')")
@@ -78,17 +52,5 @@ public class WorkflowStepController {
         return success(BeanUtils.toBean(pageResult, WorkflowStepRespVO.class));
     }
 
-    @GetMapping("/exportWorkflowStepExcel")
-    @Operation(summary = "导出工作流步骤 Excel")
-    @PreAuthorize("@ss.hasPermission('iscs:workflow-step:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportWorkflowStepExcel(@Valid WorkflowStepPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<WorkflowStepDO> list = workflowStepService.getWorkflowStepPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "工作流步骤.xls", "数据", WorkflowStepRespVO.class,
-                        BeanUtils.toBean(list, WorkflowStepRespVO.class));
-    }
 
 }

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workflow/vo/WorkflowStepTemplateSaveReqVO.java

@@ -12,7 +12,7 @@ public class WorkflowStepTemplateSaveReqVO {
     private Long Id;
 
     @Schema(description = "步骤编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "步骤编码不能为空")
+    // @NotEmpty(message = "步骤编码不能为空")
     private String stepCode;
 
     @Schema(description = "是否预置")

+ 15 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/workflow/WorkflowModeMapper.java

@@ -5,7 +5,11 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.module.iscs.controller.admin.workflow.vo.WorkflowModePageReqVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowModeDO;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 工作流模式 Mapper
@@ -27,4 +31,15 @@ public interface WorkflowModeMapper extends BaseMapperX<WorkflowModeDO> {
                 .orderByDesc(WorkflowModeDO::getId));
     }
 
+    @Delete({
+            "<script>",
+            "DELETE FROM isc_workflow_mode",
+            "WHERE id IN",
+            "<foreach item='id' collection='ids' open='(' separator=',' close=')'>",
+            "#{id}",
+            "</foreach>",
+            "</script>"
+    })
+    Boolean physicalDeleteByIds(@Param(value = "ids") List<Long> ids);
+
 }

+ 15 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/workflow/WorkflowStepMapper.java

@@ -4,8 +4,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowStepDO;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 import cn.iocoder.yudao.module.iscs.controller.admin.workflow.vo.*;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 工作流步骤 Mapper
@@ -42,4 +46,15 @@ public interface WorkflowStepMapper extends BaseMapperX<WorkflowStepDO> {
                 .orderByDesc(WorkflowStepDO::getId));
     }
 
+    @Delete({
+            "<script>",
+            "DELETE FROM isc_workflow_step",
+            "WHERE id IN",
+            "<foreach item='id' collection='ids' open='(' separator=',' close=')'>",
+            "#{id}",
+            "</foreach>",
+            "</script>"
+    })
+    Boolean physicalDeleteByIds(@Param(value = "ids") List<Long> ids);
+
 }

+ 37 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workflow/WorkflowModeServiceImpl.java

@@ -1,14 +1,19 @@
 package cn.iocoder.yudao.module.iscs.service.workflow;
 
+import cn.hutool.core.lang.Assert;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.iscs.controller.admin.workflow.vo.WorkflowModePageReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workflow.vo.WorkflowModeSaveReqVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowModeDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowStepDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.workflow.WorkflowModeMapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import java.util.List;
@@ -24,9 +29,20 @@ public class WorkflowModeServiceImpl extends ServiceImpl<WorkflowModeMapper, Wor
 
     @Resource
     private WorkflowModeMapper workflowModeMapper;
+    @Resource
+    private WorkflowStepService workflowStepService;
 
     @Override
     public Long createWorkflowMode(WorkflowModeSaveReqVO createReqVO) {
+        Assert.notBlank(createReqVO.getModeName(), "模式名称不可为空!");
+        List<WorkflowModeDO> list = list(Wrappers.<WorkflowModeDO>lambdaQuery()
+                .eq(WorkflowModeDO::getModeName, createReqVO.getModeName()));
+        Assert.isTrue(list.isEmpty(), "该模式名称已存在!");
+        if (StringUtils.isNotBlank(createReqVO.getModeTitle())) {
+            List<WorkflowModeDO> list1 = list(Wrappers.<WorkflowModeDO>lambdaQuery()
+                    .eq(WorkflowModeDO::getModeTitle, createReqVO.getModeTitle()));
+            Assert.isTrue(list1.isEmpty(), "该模式标题已存在!");
+        }
         // 插入
         WorkflowModeDO workflowMode = BeanUtils.toBean(createReqVO, WorkflowModeDO.class);
         workflowModeMapper.insert(workflowMode);
@@ -37,6 +53,18 @@ public class WorkflowModeServiceImpl extends ServiceImpl<WorkflowModeMapper, Wor
 
     @Override
     public void updateWorkflowMode(WorkflowModeSaveReqVO updateReqVO) {
+        Assert.notNull(updateReqVO.getId(), "主键ID不可为空!");
+        Assert.notBlank(updateReqVO.getModeName(), "模式名称不可为空!");
+        List<WorkflowModeDO> list = list(Wrappers.<WorkflowModeDO>lambdaQuery()
+                .eq(WorkflowModeDO::getModeName, updateReqVO.getModeName())
+                .ne(WorkflowModeDO::getId, updateReqVO.getId()));
+        Assert.isTrue(list.isEmpty(), "该模式名称已存在!");
+        if (StringUtils.isNotBlank(updateReqVO.getModeTitle())) {
+            List<WorkflowModeDO> list1 = list(Wrappers.<WorkflowModeDO>lambdaQuery()
+                    .eq(WorkflowModeDO::getModeTitle, updateReqVO.getModeTitle())
+                    .ne(WorkflowModeDO::getId, updateReqVO.getId()));
+            Assert.isTrue(list1.isEmpty(), "该模式标题已存在!");
+        }
         // 更新
         WorkflowModeDO updateObj = BeanUtils.toBean(updateReqVO, WorkflowModeDO.class);
         workflowModeMapper.updateById(updateObj);
@@ -48,10 +76,18 @@ public class WorkflowModeServiceImpl extends ServiceImpl<WorkflowModeMapper, Wor
         workflowModeMapper.deleteById(id);
     }
 
+    @Transactional
     @Override
         public void deleteWorkflowModeListByIds(List<Long> ids) {
+        // 删除的时候同时删除步骤
+        List<WorkflowStepDO> list = workflowStepService.list(Wrappers.<WorkflowStepDO>lambdaQuery()
+                .in(WorkflowStepDO::getModeId, ids));
+        if (!list.isEmpty()) {
+            List<Long> list1 = list.stream().map(WorkflowStepDO::getId).toList();
+            workflowStepService.deleteWorkflowStepListByIds(list1);
+        }
         // 删除
-        workflowModeMapper.deleteByIds(ids);
+        workflowModeMapper.physicalDeleteByIds(ids);
         }
 
 

+ 0 - 22
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workflow/WorkflowStepService.java

@@ -24,20 +24,6 @@ public interface WorkflowStepService extends IService<WorkflowStepDO> {
      */
     Long createWorkflowStep(@Valid WorkflowStepSaveReqVO createReqVO);
 
-    /**
-     * 更新工作流步骤
-     *
-     * @param updateReqVO 更新信息
-     */
-    void updateWorkflowStep(@Valid WorkflowStepSaveReqVO updateReqVO);
-
-    /**
-     * 删除工作流步骤
-     *
-     * @param id 编号
-     */
-    void deleteWorkflowStep(Long id);
-
     /**
     * 批量删除工作流步骤
     *
@@ -45,14 +31,6 @@ public interface WorkflowStepService extends IService<WorkflowStepDO> {
     */
     void deleteWorkflowStepListByIds(List<Long> ids);
 
-    /**
-     * 获得工作流步骤
-     *
-     * @param id 编号
-     * @return 工作流步骤
-     */
-    WorkflowStepDO getWorkflowStep(Long id);
-
     /**
      * 获得工作流步骤分页
      *

+ 13 - 19
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workflow/WorkflowStepServiceImpl.java

@@ -1,13 +1,17 @@
 package cn.iocoder.yudao.module.iscs.service.workflow;
 
+import cn.hutool.core.lang.Assert;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.iscs.controller.admin.workflow.vo.WorkflowStepPageReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workflow.vo.WorkflowStepSaveReqVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowStepDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowStepTemplateDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.workflow.WorkflowStepMapper;
+import cn.iocoder.yudao.module.iscs.dal.mysql.workflow.WorkflowStepTemplateMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
+import org.apache.ibatis.annotations.Delete;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -24,9 +28,17 @@ public class WorkflowStepServiceImpl extends ServiceImpl<WorkflowStepMapper, Wor
 
     @Resource
     private WorkflowStepMapper workflowStepMapper;
+    @Resource
+    private WorkflowStepTemplateService workflowStepTemplateService;
 
     @Override
     public Long createWorkflowStep(WorkflowStepSaveReqVO createReqVO) {
+        // 如果步骤模板不是空,则开始复制模板
+        if (createReqVO.getStepTemplateId() != null) {
+            WorkflowStepTemplateDO stepTemplateDO = workflowStepTemplateService.getById(createReqVO.getStepTemplateId());
+            Assert.isFalse(stepTemplateDO == null, "模板数据消失啦!");
+            BeanUtils.toBean(createReqVO, WorkflowStepDO.class);
+        }
         // 插入
         WorkflowStepDO workflowStep = BeanUtils.toBean(createReqVO, WorkflowStepDO.class);
         workflowStepMapper.insert(workflowStep);
@@ -35,29 +47,11 @@ public class WorkflowStepServiceImpl extends ServiceImpl<WorkflowStepMapper, Wor
         return workflowStep.getId();
     }
 
-    @Override
-    public void updateWorkflowStep(WorkflowStepSaveReqVO updateReqVO) {
-        // 更新
-        WorkflowStepDO updateObj = BeanUtils.toBean(updateReqVO, WorkflowStepDO.class);
-        workflowStepMapper.updateById(updateObj);
-    }
-
-    @Override
-    public void deleteWorkflowStep(Long id) {
-        // 删除
-        workflowStepMapper.deleteById(id);
-    }
 
     @Override
     public void deleteWorkflowStepListByIds(List<Long> ids) {
         // 删除
-        workflowStepMapper.deleteByIds(ids);
-    }
-
-
-    @Override
-    public WorkflowStepDO getWorkflowStep(Long id) {
-        return workflowStepMapper.selectById(id);
+        workflowStepMapper.physicalDeleteByIds(ids);
     }
 
     @Override

+ 42 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workflow/WorkflowStepTemplateServiceImpl.java

@@ -1,13 +1,17 @@
 package cn.iocoder.yudao.module.iscs.service.workflow;
 
+import cn.hutool.core.lang.Assert;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.iscs.controller.admin.workflow.vo.WorkflowStepTemplatePageReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workflow.vo.WorkflowStepTemplateSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowStepDO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workflow.WorkflowStepTemplateDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.workflow.WorkflowStepTemplateMapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -27,6 +31,23 @@ public class WorkflowStepTemplateServiceImpl extends ServiceImpl<WorkflowStepTem
 
     @Override
     public Long createWorkflowStepTemplate(WorkflowStepTemplateSaveReqVO createReqVO) {
+        // 检查名称重复
+        Assert.notBlank(createReqVO.getStepName(), "步骤名称不可为空!");
+        List<WorkflowStepTemplateDO> list = list(Wrappers.<WorkflowStepTemplateDO>lambdaQuery()
+                .eq(WorkflowStepTemplateDO::getStepName, createReqVO.getStepName()));
+        Assert.isTrue(list.isEmpty(), "该名称已被使用,请更换!");
+        // 检查标题重复
+        if (StringUtils.isNotBlank(createReqVO.getStepTitle())) {
+            List<WorkflowStepTemplateDO> list1 = list(Wrappers.<WorkflowStepTemplateDO>lambdaQuery()
+                    .eq(WorkflowStepTemplateDO::getStepTitle, createReqVO.getStepTitle()));
+            Assert.isTrue(list1.isEmpty(), "该标题已被使用,请更换!");
+        }
+        // 检查短标题重复
+        if (StringUtils.isNotBlank(createReqVO.getStepTitleShort())) {
+            List<WorkflowStepTemplateDO> list2 = list(Wrappers.<WorkflowStepTemplateDO>lambdaQuery()
+                    .eq(WorkflowStepTemplateDO::getStepTitleShort, createReqVO.getStepTitleShort()));
+            Assert.isTrue(list2.isEmpty(), "该短标题已被使用,请更换!");
+        }
         // 插入
         WorkflowStepTemplateDO workflowStepTemplate = BeanUtils.toBean(createReqVO, WorkflowStepTemplateDO.class);
         workflowStepTemplateMapper.insert(workflowStepTemplate);
@@ -37,6 +58,27 @@ public class WorkflowStepTemplateServiceImpl extends ServiceImpl<WorkflowStepTem
 
     @Override
     public void updateWorkflowStepTemplate(WorkflowStepTemplateSaveReqVO updateReqVO) {
+        Assert.notNull(updateReqVO.getId(), "主键ID不可为空!");
+        Assert.notBlank(updateReqVO.getStepName(), "步骤名称不可为空!");
+        // 检查名称重复
+        List<WorkflowStepTemplateDO> list = list(Wrappers.<WorkflowStepTemplateDO>lambdaQuery()
+                .eq(WorkflowStepTemplateDO::getStepName, updateReqVO.getStepName())
+                .ne(WorkflowStepTemplateDO::getId, updateReqVO.getId()));
+        Assert.isTrue(list.isEmpty(), "该名称已被使用,请更换!");
+        // 检查标题重复
+        if (StringUtils.isNotBlank(updateReqVO.getStepTitle())) {
+            List<WorkflowStepTemplateDO> list1 = list(Wrappers.<WorkflowStepTemplateDO>lambdaQuery()
+                    .eq(WorkflowStepTemplateDO::getStepTitle, updateReqVO.getStepTitle())
+                    .ne(WorkflowStepTemplateDO::getId, updateReqVO.getId()));
+            Assert.isTrue(list1.isEmpty(), "该标题已被使用,请更换!");
+        }
+        // 检查短标题重复
+        if (StringUtils.isNotBlank(updateReqVO.getStepTitleShort())) {
+            List<WorkflowStepTemplateDO> list2 = list(Wrappers.<WorkflowStepTemplateDO>lambdaQuery()
+                    .eq(WorkflowStepTemplateDO::getStepTitleShort, updateReqVO.getStepTitleShort())
+                    .ne(WorkflowStepTemplateDO::getId, updateReqVO.getId()));
+            Assert.isTrue(list2.isEmpty(), "该短标题已被使用,请更换!");
+        }
         // 更新
         WorkflowStepTemplateDO updateObj = BeanUtils.toBean(updateReqVO, WorkflowStepTemplateDO.class);
         workflowStepTemplateMapper.updateById(updateObj);