Browse Source

Merge branch 'master' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into feature/activiti

YunaiV 3 years ago
parent
commit
6f8e8acae0
20 changed files with 654 additions and 7 deletions
  1. 1 0
      .gitattributes
  2. 100 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/WlFormController.java
  3. 28 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormBaseVO.java
  4. 12 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormCreateReqVO.java
  5. 34 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExcelVO.java
  6. 33 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExportReqVO.java
  7. 36 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormPageReqVO.java
  8. 19 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormRespVO.java
  9. 17 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormUpdateReqVO.java
  10. 36 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/WfFormConvert.java
  11. 57 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfForm.java
  12. 55 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfFormData.java
  13. 43 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/WfFormMapper.java
  14. 14 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/WfFormErrorCodeConstants.java
  15. 75 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/WfFormService.java
  16. 86 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/WfFormServiceImpl.java
  17. 3 3
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java
  18. 2 2
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java
  19. 2 2
      yudao-admin-server/src/main/resources/application-local.yaml
  20. 1 0
      更新日志.md

+ 1 - 0
.gitattributes

@@ -0,0 +1 @@
+*.sql linguist-language=java

+ 100 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/WlFormController.java

@@ -0,0 +1,100 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.controller.form;
+
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.*;
+import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.WfFormConvert;
+import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm;
+import cn.iocoder.yudao.adminserver.modules.activiti.service.form.WfFormService;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
+
+// TODO @风里雾里: Os=》Wf,/os 改成 /wl 开头。目前这个模块,咱先定位成给工作流用的
+@Api(tags = "动态表单")
+@RestController
+@RequestMapping("/wl/form")
+@Validated
+public class WlFormController {
+
+    @Resource
+    private WfFormService formService;
+
+    @PostMapping("/create")
+    @ApiOperation("创建动态表单")
+    @PreAuthorize("@ss.hasPermission('os:form:create')")
+    public CommonResult<Long> createForm(@Valid @RequestBody WfFormCreateReqVO createReqVO) {
+        return success(formService.createForm(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @ApiOperation("更新动态表单")
+    @PreAuthorize("@ss.hasPermission('os:form:update')")
+    public CommonResult<Boolean> updateForm(@Valid @RequestBody WfFormUpdateReqVO updateReqVO) {
+        formService.updateForm(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @ApiOperation("删除动态表单")
+    @ApiImplicitParam(name = "id", value = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('os:form:delete')")
+    public CommonResult<Boolean> deleteForm(@RequestParam("id") Long id) {
+        formService.deleteForm(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @ApiOperation("获得动态表单")
+    @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
+    @PreAuthorize("@ss.hasPermission('os:form:query')")
+    public CommonResult<WfFormRespVO> getForm(@RequestParam("id") Long id) {
+        WfForm form = formService.getForm(id);
+        return success(WfFormConvert.INSTANCE.convert(form));
+    }
+
+    @GetMapping("/list")
+    @ApiOperation("获得动态表单列表")
+    @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
+    @PreAuthorize("@ss.hasPermission('os:form:query')")
+    public CommonResult<List<WfFormRespVO>> getFormList(@RequestParam("ids") Collection<Long> ids) {
+        List<WfForm> list = formService.getFormList(ids);
+        return success(WfFormConvert.INSTANCE.convertList(list));
+    }
+
+    @GetMapping("/page")
+    @ApiOperation("获得动态表单分页")
+    @PreAuthorize("@ss.hasPermission('os:form:query')")
+    public CommonResult<PageResult<WfFormRespVO>> getFormPage(@Valid WfFormPageReqVO pageVO) {
+        PageResult<WfForm> pageResult = formService.getFormPage(pageVO);
+        return success(WfFormConvert.INSTANCE.convertPage(pageResult));
+    }
+
+    @GetMapping("/export-excel")
+    @ApiOperation("导出动态表单 Excel")
+    @PreAuthorize("@ss.hasPermission('os:form:export')")
+    @OperateLog(type = EXPORT)
+    public void exportFormExcel(@Valid WfFormExportReqVO exportReqVO,
+              HttpServletResponse response) throws IOException {
+        List<WfForm> list = formService.getFormList(exportReqVO);
+        // 导出 Excel
+        List<WfFormExcelVO> datas = WfFormConvert.INSTANCE.convertList02(list);
+        ExcelUtils.write(response, "动态表单.xls", "数据", WfFormExcelVO.class, datas);
+    }
+
+}

+ 28 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormBaseVO.java

@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo;
+
+import lombok.*;
+import io.swagger.annotations.*;
+import javax.validation.constraints.*;
+
+/**
+* 动态表单 Base VO,提供给添加、修改、详细的子 VO 使用
+* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
+*/
+@Data
+public class WfFormBaseVO {
+
+    @ApiModelProperty(value = "表单名称", required = true)
+    @NotNull(message = "表单名称不能为空")
+    private String name;
+
+    @ApiModelProperty(value = "商户状态", required = true)
+    @NotNull(message = "商户状态不能为空")
+    private Integer status;
+
+    @ApiModelProperty(value = "表单JSON")
+    private String formJson;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+}

+ 12 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormCreateReqVO.java

@@ -0,0 +1,12 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo;
+
+import lombok.*;
+import io.swagger.annotations.*;
+
+@ApiModel("动态表单创建 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class WfFormCreateReqVO extends WfFormBaseVO {
+
+}

+ 34 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExcelVO.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo;
+
+import lombok.*;
+import java.util.*;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+
+/**
+ * 动态表单 Excel VO
+ *
+ * @author 芋艿
+ */
+@Data
+public class WfFormExcelVO {
+
+    @ExcelProperty("表单编号")
+    private Long id;
+
+    @ExcelProperty("表单名称")
+    private String name;
+
+    @ExcelProperty("商户状态")
+    private Integer status;
+
+    @ExcelProperty("表单JSON")
+    private String formJson;
+
+    @ExcelProperty("备注")
+    private String remark;
+
+    @ExcelProperty("创建时间")
+    private Date createTime;
+
+}

+ 33 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormExportReqVO.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.annotations.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@ApiModel(value = "动态表单 Excel 导出 Request VO", description = "参数和 OsFormPageReqVO 是一致的")
+@Data
+public class WfFormExportReqVO {
+
+    @ApiModelProperty(value = "表单名称")
+    private String name;
+
+    @ApiModelProperty(value = "商户状态")
+    private Integer status;
+
+    @ApiModelProperty(value = "表单JSON")
+    private String formJson;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @ApiModelProperty(value = "开始创建时间")
+    private Date beginCreateTime;
+
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @ApiModelProperty(value = "结束创建时间")
+    private Date endCreateTime;
+
+}

+ 36 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormPageReqVO.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.annotations.*;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@ApiModel("动态表单分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class WfFormPageReqVO extends PageParam {
+
+    @ApiModelProperty(value = "表单名称")
+    private String name;
+
+    @ApiModelProperty(value = "商户状态")
+    private Integer status;
+
+    @ApiModelProperty(value = "表单JSON")
+    private String formJson;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @ApiModelProperty(value = "开始创建时间")
+    private Date beginCreateTime;
+
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @ApiModelProperty(value = "结束创建时间")
+    private Date endCreateTime;
+
+}

+ 19 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormRespVO.java

@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.annotations.*;
+
+@ApiModel("动态表单 Response VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class WfFormRespVO extends WfFormBaseVO {
+
+    @ApiModelProperty(value = "表单编号", required = true)
+    private Long id;
+
+    @ApiModelProperty(value = "创建时间", required = true)
+    private Date createTime;
+
+}

+ 17 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/controller/form/vo/WfFormUpdateReqVO.java

@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo;
+
+import lombok.*;
+import io.swagger.annotations.*;
+import javax.validation.constraints.*;
+
+@ApiModel("动态表单更新 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class WfFormUpdateReqVO extends WfFormBaseVO {
+
+    @ApiModelProperty(value = "表单编号", required = true)
+    @NotNull(message = "表单编号不能为空")
+    private Long id;
+
+}

+ 36 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/convert/form/WfFormConvert.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.convert.form;
+
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormCreateReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormExcelVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormRespVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormUpdateReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 动态表单 Convert
+ *
+ * @author 芋艿
+ */
+@Mapper
+public interface WfFormConvert {
+
+    WfFormConvert INSTANCE = Mappers.getMapper(WfFormConvert.class);
+
+    WfForm convert(WfFormCreateReqVO bean);
+
+    WfForm convert(WfFormUpdateReqVO bean);
+
+    WfFormRespVO convert(WfForm bean);
+
+    List<WfFormRespVO> convertList(List<WfForm> list);
+
+    PageResult<WfFormRespVO> convertPage(PageResult<WfForm> page);
+
+    List<WfFormExcelVO> convertList02(List<WfForm> list);
+
+}

+ 57 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfForm.java

@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.*;
+
+import java.util.List;
+
+/**
+ * 工作流的表单定义
+ * 用于工作流的申请表单,需要动态配置的场景
+ *
+ * @author 芋道源码
+ */
+@TableName(value = "wf_form", autoResultMap = true)
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class WfForm extends BaseDO {
+
+    /**
+     * 编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 表单名
+     */
+    private String name;
+    /**
+     * 状态
+     */
+    private Integer status;
+    /**
+     * 表单JSON
+     */
+    private String formJson;
+    /**
+     * 表单配置
+     *
+     * 目前直接将 https://github.com/JakHuang/form-generator 生成的 JSON 串,直接保存
+     * 定义:https://github.com/JakHuang/form-generator/issues/46
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> fields;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 55 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/dataobject/form/WfFormData.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 工作流的表单结果
+ * 用户每次填写工作流的申请表单时,会保存一条记录到该表】
+ *
+ * @author 芋道源码
+ */
+@TableName(value = "wf_form", autoResultMap = true)
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class WfFormData extends BaseDO {
+
+    /**
+     * 编号
+     */
+    private Long id;
+    /**
+     * 表单编号
+     *
+     * 关联 {@link WfForm#getId()}
+     */
+    private Long formId;
+    /**
+     * 状态
+     */
+    private Integer status;
+    /**
+     * 表单配置
+     *
+     * 冗余 {@link WfForm#getFields()}
+     * 主要考虑,表单是可以修改的
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> fields;
+    /**
+     * 表单值
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private Map<String, Object> values;
+
+}

+ 43 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/dal/mysql/form/WfFormMapper.java

@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.form;
+
+
+
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormExportReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormPageReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 动态表单 Mapper
+ *
+ * @author 风里雾里
+ */
+@Mapper
+public interface WfFormMapper extends BaseMapperX<WfForm> {
+
+    default PageResult<WfForm> selectPage(WfFormPageReqVO reqVO) {
+        return selectPage(reqVO, new QueryWrapperX<WfForm>()
+                .likeIfPresent("name", reqVO.getName())
+                .eqIfPresent("status", reqVO.getStatus())
+                .eqIfPresent("form_json", reqVO.getFormJson())
+                .eqIfPresent("remark", reqVO.getRemark())
+                .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
+                .orderByDesc("id")        );
+    }
+
+    default List<WfForm> selectList(WfFormExportReqVO reqVO) {
+        return selectList(new QueryWrapperX<WfForm>()
+                .likeIfPresent("name", reqVO.getName())
+                .eqIfPresent("status", reqVO.getStatus())
+                .eqIfPresent("form_json", reqVO.getFormJson())
+                .eqIfPresent("remark", reqVO.getRemark())
+                .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
+                .orderByDesc("id")        );
+    }
+
+}

+ 14 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/enums/form/WfFormErrorCodeConstants.java

@@ -0,0 +1,14 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.enums.form;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+
+/**
+ * activiti 系统 错误码枚举类
+ *
+ * 003 activiti
+ * 001 oa
+ * activiti 系统,使用 1-003-000-000 段
+ */
+public interface WfFormErrorCodeConstants {
+    ErrorCode FORM_NOT_EXISTS = new ErrorCode(1003001002, "动态表单不存在");
+}

+ 75 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/WfFormService.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.service.form;
+
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormCreateReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormExportReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormPageReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormUpdateReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import java.util.*;
+import javax.validation.*;
+
+
+/**
+ * 动态表单 Service 接口
+ *
+ * TODO @风里雾里
+ */
+public interface WfFormService {
+
+    /**
+     * 创建动态表单
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createForm(@Valid WfFormCreateReqVO createReqVO);
+
+    /**
+     * 更新动态表单
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateForm(@Valid WfFormUpdateReqVO updateReqVO);
+
+    /**
+     * 删除动态表单
+     *
+     * @param id 编号
+     */
+    void deleteForm(Long id);
+
+    /**
+     * 获得动态表单
+     *
+     * @param id 编号
+     * @return 动态表单
+     */
+    WfForm getForm(Long id);
+
+    /**
+     * 获得动态表单列表
+     *
+     * @param ids 编号
+     * @return 动态表单列表
+     */
+    List<WfForm> getFormList(Collection<Long> ids);
+
+    /**
+     * 获得动态表单分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 动态表单分页
+     */
+    PageResult<WfForm> getFormPage(WfFormPageReqVO pageReqVO);
+
+    /**
+     * 获得动态表单列表, 用于 Excel 导出
+     *
+     * @param exportReqVO 查询条件
+     * @return 动态表单列表
+     */
+    List<WfForm> getFormList(WfFormExportReqVO exportReqVO);
+
+}

+ 86 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/activiti/service/form/impl/WfFormServiceImpl.java

@@ -0,0 +1,86 @@
+package cn.iocoder.yudao.adminserver.modules.activiti.service.form.impl;
+
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormCreateReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormExportReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormPageReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.controller.form.vo.WfFormUpdateReqVO;
+import cn.iocoder.yudao.adminserver.modules.activiti.convert.form.WfFormConvert;
+import cn.iocoder.yudao.adminserver.modules.activiti.dal.dataobject.form.WfForm;
+import cn.iocoder.yudao.adminserver.modules.activiti.dal.mysql.form.WfFormMapper;
+import cn.iocoder.yudao.adminserver.modules.activiti.service.form.WfFormService;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.List;
+
+import static cn.iocoder.yudao.adminserver.modules.activiti.enums.form.WfFormErrorCodeConstants.FORM_NOT_EXISTS;
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * 动态表单 Service 实现类
+ *
+ * TODO @风里雾里
+ */
+@Service
+@Validated
+public class WfFormServiceImpl implements WfFormService {
+
+    @Resource
+    private WfFormMapper formMapper;
+
+    @Override
+    public Long createForm(WfFormCreateReqVO createReqVO) {
+        // 插入
+        WfForm form = WfFormConvert.INSTANCE.convert(createReqVO);
+        formMapper.insert(form);
+        // 返回
+        return form.getId();
+    }
+
+    @Override
+    public void updateForm(WfFormUpdateReqVO updateReqVO) {
+        // 校验存在
+        this.validateFormExists(updateReqVO.getId());
+        // 更新
+        WfForm updateObj = WfFormConvert.INSTANCE.convert(updateReqVO);
+        formMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteForm(Long id) {
+        // 校验存在
+        this.validateFormExists(id);
+        // 删除
+        formMapper.deleteById(id);
+    }
+
+    private void validateFormExists(Long id) {
+        if (formMapper.selectById(id) == null) {
+            throw exception(FORM_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public WfForm getForm(Long id) {
+        return formMapper.selectById(id);
+    }
+
+    @Override
+    public List<WfForm> getFormList(Collection<Long> ids) {
+        return formMapper.selectBatchIds(ids);
+    }
+
+    @Override
+    public PageResult<WfForm> getFormPage(WfFormPageReqVO pageReqVO) {
+        return formMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public List<WfForm> getFormList(WfFormExportReqVO exportReqVO) {
+        return formMapper.selectList(exportReqVO);
+    }
+
+}

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/dict/SysDictTypeController.java

@@ -60,7 +60,7 @@ public class SysDictTypeController {
 
     @ApiOperation("/获得字典类型的分页列表")
     @GetMapping("/page")
-    @PreAuthorize("@ss.hasPermission('system:dict:quey')")
+    @PreAuthorize("@ss.hasPermission('system:dict:query')")
     public CommonResult<PageResult<SysDictTypeRespVO>> pageDictTypes(@Valid SysDictTypePageReqVO reqVO) {
         return success(SysDictTypeConvert.INSTANCE.convertPage(dictTypeService.getDictTypePage(reqVO)));
     }
@@ -68,7 +68,7 @@ public class SysDictTypeController {
     @ApiOperation("/查询字典类型详细")
     @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
     @GetMapping(value = "/get")
-    @PreAuthorize("@ss.hasPermission('system:dict:quey')")
+    @PreAuthorize("@ss.hasPermission('system:dict:query')")
     public CommonResult<SysDictTypeRespVO> getDictType(@RequestParam("id") Long id) {
         return success(SysDictTypeConvert.INSTANCE.convert(dictTypeService.getDictType(id)));
     }
@@ -83,7 +83,7 @@ public class SysDictTypeController {
 
     @ApiOperation("导出数据类型")
     @GetMapping("/export")
-    @PreAuthorize("@ss.hasPermission('system:dict:quey')")
+    @PreAuthorize("@ss.hasPermission('system:dict:query')")
     @OperateLog(type = EXPORT)
     public void export(HttpServletResponse response, @Valid SysDictTypeExportReqVO reqVO) throws IOException {
         List<SysDictTypeDO> list = dictTypeService.getDictTypeList(reqVO);

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/controller/notice/SysNoticeController.java

@@ -56,7 +56,7 @@ public class SysNoticeController {
 
     @GetMapping("/page")
     @ApiOperation("获取通知公告列表")
-    @PreAuthorize("@ss.hasPermission('system:notice:quey')")
+    @PreAuthorize("@ss.hasPermission('system:notice:query')")
     public CommonResult<PageResult<SysNoticeRespVO>> pageNotices(@Validated SysNoticePageReqVO reqVO) {
         return success(SysNoticeConvert.INSTANCE.convertPage(noticeService.pageNotices(reqVO)));
     }
@@ -64,7 +64,7 @@ public class SysNoticeController {
     @GetMapping("/get")
     @ApiOperation("获得通知公告")
     @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
-    @PreAuthorize("@ss.hasPermission('system:notice:quey')")
+    @PreAuthorize("@ss.hasPermission('system:notice:query')")
     public CommonResult<SysNoticeRespVO> getNotice(@RequestParam("id") Long id) {
         return success(SysNoticeConvert.INSTANCE.convert(noticeService.getNotice(id)));
     }

+ 2 - 2
yudao-admin-server/src/main/resources/application-local.yaml

@@ -47,13 +47,13 @@ spring:
           url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
           driver-class-name: com.mysql.jdbc.Driver
           username: root
-          password: root
+          password: 123456
         slave: # 模拟从库,可根据自己需要修改
           name: ruoyi-vue-pro
           url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
           driver-class-name: com.mysql.jdbc.Driver
           username: root
-          password: root
+          password: 123456
 
 
   activiti:

+ 1 - 0
更新日志.md

@@ -21,6 +21,7 @@
 ## [v1.2.0] 进行中
 
 * 新增用户前台的昵称、头像的修改
+* 修复通知和字典查询权限 Bug
 
 TODO