Pārlūkot izejas kodu

新增表单管理

hubin 1 gadu atpakaļ
vecāks
revīzija
4be3ad0bfa

+ 82 - 0
src/main/java/com/aizuda/boot/modules/flw/controller/FormCategoryController.java

@@ -0,0 +1,82 @@
+package com.aizuda.boot.modules.flw.controller;
+
+import com.aizuda.boot.modules.flw.entity.FlwFormCategory;
+import com.aizuda.boot.modules.flw.entity.vo.FlwFormCategoryVO;
+import com.aizuda.boot.modules.flw.service.IFlwFormCategoryService;
+import com.aizuda.core.api.ApiController;
+import com.aizuda.core.api.PageParam;
+import com.aizuda.core.validation.Create;
+import com.aizuda.core.validation.Update;
+import com.baomidou.kisso.annotation.Permission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 流程表单分类 前端控制器
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+@Tag(name = "流程表单分类")
+@RestController
+@AllArgsConstructor
+@RequestMapping("/v1/form-category")
+public class FormCategoryController extends ApiController {
+    private IFlwFormCategoryService flwFormCategoryService;
+
+    @Operation(summary = "分页列表")
+    @Permission("sys:formCategory:page")
+    @PostMapping("/page")
+    public Page<FlwFormCategory> getPage(@RequestBody PageParam<FlwFormCategory> dto) {
+        return flwFormCategoryService.page(dto.page(), dto.getData());
+    }
+
+    @Operation(summary = "树列表")
+    @Permission("sys:formCategory:listTree")
+    @PostMapping("/list-tree")
+    public List<FlwFormCategoryVO> listTree(@RequestBody FlwFormCategory flwFormCategory) {
+        return flwFormCategoryService.listTree(flwFormCategory);
+    }
+
+    @Operation(summary = "列表(显示所有部门)")
+    @Permission("sys:formCategory:listAll")
+    @GetMapping("/list-all")
+    public List<FlwFormCategory> listAll() {
+        return flwFormCategoryService.listAll();
+    }
+
+    @Operation(summary = "查询 id 信息")
+    @Permission("sys:formCategory:get")
+    @GetMapping("/get")
+    public FlwFormCategory get(@RequestParam Long id) {
+        return flwFormCategoryService.getById(id);
+    }
+
+    @Operation(summary = "根据 id 修改信息")
+    @Permission("sys:formCategory:update")
+    @PostMapping("/update")
+    public boolean update(@Validated(Update.class) @RequestBody FlwFormCategory flwFormCategory) {
+        return flwFormCategoryService.updateById(flwFormCategory);
+    }
+
+    @Operation(summary = "创建添加")
+    @Permission("sys:formCategory:create")
+    @PostMapping("/create")
+    public boolean create(@Validated(Create.class) @RequestBody FlwFormCategory flwFormCategory) {
+        return flwFormCategoryService.save(flwFormCategory);
+    }
+
+    @Operation(summary = "根据 ids 删除")
+    @Permission("sys:formCategory:delete")
+    @PostMapping("/delete")
+    public boolean delete(@NotEmpty @RequestBody List<Long> ids) {
+        return flwFormCategoryService.removeByIds(ids);
+    }
+}

+ 67 - 0
src/main/java/com/aizuda/boot/modules/flw/controller/FormTemplateController.java

@@ -0,0 +1,67 @@
+package com.aizuda.boot.modules.flw.controller;
+
+import com.aizuda.core.api.ApiController;
+import com.aizuda.core.api.PageParam;
+import com.aizuda.core.validation.Create;
+import com.aizuda.core.validation.Update;
+import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
+import com.aizuda.boot.modules.flw.service.IFlwFormTemplateService;
+import com.baomidou.kisso.annotation.Permission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 流程表单模板 前端控制器
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+@Tag(name = "流程表单模板")
+@RestController
+@AllArgsConstructor
+@RequestMapping("/v1/form-template")
+public class FormTemplateController extends ApiController {
+    private IFlwFormTemplateService flwFormTemplateService;
+
+    @Operation(summary = "分页列表")
+    @Permission("sys:formTemplate:page")
+    @PostMapping("/page")
+    public Page<FlwFormTemplate> getPage(@RequestBody PageParam<FlwFormTemplate> dto) {
+        return flwFormTemplateService.page(dto.page(), dto.getData());
+    }
+
+    @Operation(summary = "查询 id 信息")
+    @Permission("sys:formTemplate:get")
+    @GetMapping("/get")
+    public FlwFormTemplate get(@RequestParam Long id) {
+        return flwFormTemplateService.getById(id);
+    }
+
+    @Operation(summary = "根据 id 修改信息")
+    @Permission("sys:formTemplate:update")
+    @PostMapping("/update")
+    public boolean update(@Validated(Update.class) @RequestBody FlwFormTemplate flwFormTemplate) {
+        return flwFormTemplateService.updateById(flwFormTemplate);
+    }
+
+    @Operation(summary = "创建添加")
+    @Permission("sys:formTemplate:create")
+    @PostMapping("/create")
+    public boolean create(@Validated(Create.class) @RequestBody FlwFormTemplate flwFormTemplate) {
+        return flwFormTemplateService.save(flwFormTemplate);
+    }
+
+    @Operation(summary = "根据 ids 删除")
+    @Permission("sys:formTemplate:delete")
+    @PostMapping("/delete")
+    public boolean delete(@NotEmpty @RequestBody List<Long> ids) {
+        return flwFormTemplateService.removeByIds(ids);
+    }
+}

+ 56 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/FlwFormCategory.java

@@ -0,0 +1,56 @@
+package com.aizuda.boot.modules.flw.entity;
+
+import com.aizuda.core.bean.BaseEntity;
+import com.aizuda.core.validation.Create;
+import com.baomidou.mybatisplus.annotation.TableName;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.PositiveOrZero;
+import jakarta.validation.constraints.Size;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Setter;
+import lombok.Getter;
+
+/**
+ * 流程表单分类
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+@Getter
+@Setter
+@Schema(name = "FlwFormCategory", description = "流程表单分类")
+@TableName("flw_form_category")
+public class FlwFormCategory extends BaseEntity {
+
+	@Schema(description = "租户ID")
+	@NotBlank(groups = Create.class)
+	@Size(max = 64)
+	private String tenantId;
+
+	@Schema(description = "父ID")
+	@NotNull(groups = Create.class)
+	@PositiveOrZero
+	private Long pid;
+
+	@Schema(description = "名称")
+	@NotBlank(groups = Create.class)
+	@Size(max = 50)
+	private String name;
+
+	@Schema(description = "备注")
+	@Size(max = 255)
+	private String remark;
+
+	@Schema(description = "状态 0、禁用 1、正常")
+	@NotNull(groups = Create.class)
+	@PositiveOrZero
+	private Short status;
+
+	@Schema(description = "排序")
+	@NotNull(groups = Create.class)
+	@PositiveOrZero
+	private Short sort;
+
+}

+ 57 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/FlwFormTemplate.java

@@ -0,0 +1,57 @@
+package com.aizuda.boot.modules.flw.entity;
+
+import com.aizuda.core.bean.BaseEntity;
+import com.aizuda.core.validation.Create;
+import com.baomidou.mybatisplus.annotation.TableName;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.PositiveOrZero;
+import jakarta.validation.constraints.Size;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Setter;
+import lombok.Getter;
+
+/**
+ * 流程表单模板
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+@Getter
+@Setter
+@Schema(name = "FlwFormTemplate", description = "流程表单模板")
+@TableName("flw_form_template")
+public class FlwFormTemplate extends BaseEntity {
+
+	@Schema(description = "租户ID")
+	@NotBlank(groups = Create.class)
+	@Size(max = 64)
+	private String tenantId;
+
+	@Schema(description = "名称")
+	@NotBlank(groups = Create.class)
+	@Size(max = 100)
+	private String name;
+
+	@Schema(description = "唯一编号")
+	@NotBlank(groups = Create.class)
+	@Size(max = 100)
+	private String code;
+
+	@Schema(description = "内容")
+	@NotBlank(groups = Create.class)
+	@Size(max = 2147483647)
+	private String content;
+
+	@Schema(description = "状态 0、禁用 1、正常")
+	@NotNull(groups = Create.class)
+	@PositiveOrZero
+	private Short status;
+
+	@Schema(description = "排序")
+	@NotNull(groups = Create.class)
+	@PositiveOrZero
+	private Short sort;
+
+}

+ 21 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/vo/FlwFormCategoryVO.java

@@ -0,0 +1,21 @@
+package com.aizuda.boot.modules.flw.entity.vo;
+
+import com.aizuda.boot.modules.flw.entity.FlwFormCategory;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class FlwFormCategoryVO extends FlwFormCategory {
+
+    /**
+     * 父级部门
+     */
+    private String parentName;
+    /**
+     * 子部门
+     */
+    private List<FlwFormCategoryVO> children;
+}

+ 19 - 0
src/main/java/com/aizuda/boot/modules/flw/mapper/FlwFormCategoryMapper.java

@@ -0,0 +1,19 @@
+package com.aizuda.boot.modules.flw.mapper;
+
+import com.aizuda.boot.modules.flw.entity.FlwFormCategory;
+import com.aizuda.service.mapper.CrudMapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 流程表单分类 Mapper 接口
+ * </p>
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+public interface FlwFormCategoryMapper extends CrudMapper<FlwFormCategory> {
+
+    List<Long> selectIdsRecursive(Long id);
+}

+ 16 - 0
src/main/java/com/aizuda/boot/modules/flw/mapper/FlwFormTemplateMapper.java

@@ -0,0 +1,16 @@
+package com.aizuda.boot.modules.flw.mapper;
+
+import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
+import com.aizuda.service.mapper.CrudMapper;
+
+/**
+ * <p>
+ * 流程表单模板 Mapper 接口
+ * </p>
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+public interface FlwFormTemplateMapper extends CrudMapper<FlwFormTemplate> {
+
+}

+ 23 - 0
src/main/java/com/aizuda/boot/modules/flw/service/IFlwFormCategoryService.java

@@ -0,0 +1,23 @@
+package com.aizuda.boot.modules.flw.service;
+
+import com.aizuda.boot.modules.flw.entity.FlwFormCategory;
+import com.aizuda.boot.modules.flw.entity.vo.FlwFormCategoryVO;
+import com.aizuda.service.service.IBaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import java.util.List;
+
+/**
+ * 流程表单分类 服务类
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+public interface IFlwFormCategoryService extends IBaseService<FlwFormCategory> {
+
+    Page<FlwFormCategory> page(Page<FlwFormCategory> page, FlwFormCategory flwFormCategory);
+
+    List<FlwFormCategoryVO> listTree(FlwFormCategory flwFormCategory);
+
+    List<FlwFormCategory> listAll();
+}

+ 17 - 0
src/main/java/com/aizuda/boot/modules/flw/service/IFlwFormTemplateService.java

@@ -0,0 +1,17 @@
+package com.aizuda.boot.modules.flw.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.aizuda.service.service.IBaseService;
+import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
+
+/**
+ * 流程表单模板 服务类
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+public interface IFlwFormTemplateService extends IBaseService<FlwFormTemplate> {
+
+    Page<FlwFormTemplate> page(Page<FlwFormTemplate> page, FlwFormTemplate flwFormTemplate);
+
+}

+ 90 - 0
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwFormCategoryServiceImpl.java

@@ -0,0 +1,90 @@
+package com.aizuda.boot.modules.flw.service.impl;
+
+import com.aizuda.boot.modules.flw.entity.FlwFormCategory;
+import com.aizuda.boot.modules.flw.entity.vo.FlwFormCategoryVO;
+import com.aizuda.boot.modules.flw.mapper.FlwFormCategoryMapper;
+import com.aizuda.boot.modules.flw.service.IFlwFormCategoryService;
+import com.aizuda.core.api.ApiAssert;
+import com.aizuda.service.service.BaseServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 流程表单分类 服务实现类
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+@Service
+public class FlwFormCategoryServiceImpl extends BaseServiceImpl<FlwFormCategoryMapper, FlwFormCategory> implements IFlwFormCategoryService {
+
+    @Override
+    public Page<FlwFormCategory> page(Page<FlwFormCategory> page, FlwFormCategory flwFormCategory) {
+        LambdaQueryWrapper<FlwFormCategory> lqw = Wrappers.lambdaQuery(flwFormCategory);
+        return super.page(page, lqw);
+    }
+
+    @Override
+    public List<FlwFormCategoryVO> listTree(FlwFormCategory flwFormCategory) {
+        List<FlwFormCategory> sysDepartmentList = super.list(Wrappers.lambdaQuery(flwFormCategory));
+        if (CollectionUtils.isEmpty(sysDepartmentList)) {
+            return null;
+        }
+        return sysDepartmentList.stream().filter(e -> Objects.equals(0L, e.getPid())).map(e -> {
+            FlwFormCategoryVO vo = e.convert(FlwFormCategoryVO.class);
+            vo.setChildren(this.getChild(vo.getId(), vo.getName(), sysDepartmentList));
+            return vo;
+        }).toList();
+    }
+
+    /**
+     * 获取子节点
+     */
+    private List<FlwFormCategoryVO> getChild(Long id, String parentName, List<FlwFormCategory> flwFormCategoryList) {
+        // 遍历所有节点,将所有表单分类的父id与传过来的根节点的id比较
+        List<FlwFormCategory> childList = flwFormCategoryList.stream().filter(e -> Objects.equals(id, e.getPid())).toList();
+        if (childList.isEmpty()) {
+            // 没有子节点,返回一个空 List(递归退出)
+            return null;
+        }
+        // 递归
+        return childList.stream().map(e -> {
+            FlwFormCategoryVO vo = e.convert(FlwFormCategoryVO.class);
+            vo.setParentName(parentName);
+            vo.setChildren(this.getChild(vo.getId(), vo.getName(), flwFormCategoryList));
+            return vo;
+        }).toList();
+    }
+
+    @Override
+    public List<FlwFormCategory> listAll() {
+        return super.list();
+    }
+
+    @Override
+    public boolean updateById(FlwFormCategory flwFormCategory) {
+        ApiAssert.isEmpty(flwFormCategory.getId(), "主键不存在无法更新");
+        List<Long> ids = baseMapper.selectIdsRecursive(flwFormCategory.getId());
+        ApiAssert.fail(CollectionUtils.isNotEmpty(ids) && ids.contains(flwFormCategory.getPid()),
+                "父分类不能为子分类,请重新选择父分类");
+        if (null == flwFormCategory.getPid()) {
+            // 未设置父ID设置为0
+            flwFormCategory.setPid(0L);
+        }
+        return super.updateById(flwFormCategory);
+    }
+
+    @Override
+    public boolean removeByIds(Collection<?> list) {
+        this.checkExists(Wrappers.<FlwFormCategory>lambdaQuery().select(FlwFormCategory::getId)
+                .in(FlwFormCategory::getPid, list), "存在子类不允许删除");
+        return super.removeByIds(list);
+    }
+}

+ 33 - 0
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwFormTemplateServiceImpl.java

@@ -0,0 +1,33 @@
+package com.aizuda.boot.modules.flw.service.impl;
+
+import com.aizuda.core.api.ApiAssert;
+import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
+import com.aizuda.boot.modules.flw.mapper.FlwFormTemplateMapper;
+import com.aizuda.boot.modules.flw.service.IFlwFormTemplateService;
+import com.aizuda.service.service.BaseServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+
+/**
+ * 流程表单模板 服务实现类
+ *
+ * @author hubin
+ * @since 2024-05-19
+ */
+@Service
+public class FlwFormTemplateServiceImpl extends BaseServiceImpl<FlwFormTemplateMapper, FlwFormTemplate> implements IFlwFormTemplateService {
+
+    @Override
+    public Page<FlwFormTemplate> page(Page<FlwFormTemplate> page, FlwFormTemplate flwFormTemplate) {
+        LambdaQueryWrapper<FlwFormTemplate> lqw = Wrappers.lambdaQuery(flwFormTemplate);
+        return super.page(page, lqw);
+    }
+
+    @Override
+    public boolean updateById(FlwFormTemplate flwFormTemplate) {
+        ApiAssert.fail(null == flwFormTemplate.getId(), "主键不存在无法更新");
+        return super.updateById(flwFormTemplate);
+    }
+}

+ 15 - 16
src/main/java/com/aizuda/boot/modules/system/service/impl/SysDepartmentServiceImpl.java

@@ -38,19 +38,6 @@ public class SysDepartmentServiceImpl extends BaseServiceImpl<SysDepartmentMappe
         return super.page(page, lqw);
     }
 
-    @Override
-    public boolean updateById(SysDepartment sysDepartment) {
-        ApiAssert.isEmpty(sysDepartment.getId(), "主键不存在无法更新");
-        List<Long> ids = baseMapper.selectIdsRecursive(sysDepartment.getId());
-        ApiAssert.fail(CollectionUtils.isNotEmpty(ids) && ids.contains(sysDepartment.getPid()),
-                "父分类不能为子分类,请重新选择父分类");
-        if (null == sysDepartment.getPid()) {
-            // 未设置父ID设置为0
-            sysDepartment.setPid(0L);
-        }
-        return super.updateById(sysDepartment);
-    }
-
     @Override
     public List<SysDepartmentVO> listTree(SysDepartment sysDepartment) {
         List<SysDepartment> sysDepartmentList = super.list(Wrappers.lambdaQuery(sysDepartment));
@@ -67,10 +54,9 @@ public class SysDepartmentServiceImpl extends BaseServiceImpl<SysDepartmentMappe
     /**
      * 获取子节点
      */
-    protected List<SysDepartmentVO> getChild(Long id, String parentName, List<SysDepartment> sysDepartmentList) {
+    private List<SysDepartmentVO> getChild(Long id, String parentName, List<SysDepartment> sysDepartmentList) {
         // 遍历所有节点,将所有菜单的父id与传过来的根节点的id比较
-        List<SysDepartment> childList = sysDepartmentList.stream().filter(e -> Objects.equals(id, e.getPid()))
-                .toList();
+        List<SysDepartment> childList = sysDepartmentList.stream().filter(e -> Objects.equals(id, e.getPid())).toList();
         if (childList.isEmpty()) {
             // 没有子节点,返回一个空 List(递归退出)
             return null;
@@ -89,6 +75,19 @@ public class SysDepartmentServiceImpl extends BaseServiceImpl<SysDepartmentMappe
         return super.list();
     }
 
+    @Override
+    public boolean updateById(SysDepartment sysDepartment) {
+        ApiAssert.isEmpty(sysDepartment.getId(), "主键不存在无法更新");
+        List<Long> ids = baseMapper.selectIdsRecursive(sysDepartment.getId());
+        ApiAssert.fail(CollectionUtils.isNotEmpty(ids) && ids.contains(sysDepartment.getPid()),
+                "父分类不能为子分类,请重新选择父分类");
+        if (null == sysDepartment.getPid()) {
+            // 未设置父ID设置为0
+            sysDepartment.setPid(0L);
+        }
+        return super.updateById(sysDepartment);
+    }
+
     @Override
     public boolean removeByIds(Collection<?> list) {
         this.checkExists(Wrappers.<SysDepartment>lambdaQuery().select(SysDepartment::getId)

+ 10 - 0
src/main/resources/mapper/FlwFormCategoryMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.aizuda.boot.modules.flw.mapper.FlwFormCategoryMapper">
+
+    <select id="selectIdsRecursive" resultType="java.lang.Long">
+        WITH RECURSIVE r AS (SELECT id FROM flw_form_category WHERE id=#{id} UNION ALL SELECT c.id
+        FROM flw_form_category c JOIN r ON c.pid=r.id) SELECT id FROM r
+    </select>
+
+</mapper>