diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogFormController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogFormController.java new file mode 100644 index 00000000..5cb5c7a7 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogFormController.java @@ -0,0 +1,78 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.*; +import cn.iocoder.yudao.module.system.convert.worklog.LogFormConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO; +import cn.iocoder.yudao.module.system.service.worklog.LogFormService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +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.validation.Valid; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 日志动态表单") +@RestController +@RequestMapping("/system/worklog/form") +@Validated +public class LogFormController { + + @Resource + private LogFormService formService; + + @PostMapping("/create") + @Operation(summary = "创建动态表单") + @PreAuthorize("@ss.hasPermission('worklog:form:create')") + public CommonResult createForm(@Valid @RequestBody LogFormCreateReqVO createReqVO) { + return success(formService.createForm(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新动态表单") + @PreAuthorize("@ss.hasPermission('worklog:form:update')") + public CommonResult updateForm(@Valid @RequestBody LogFormUpdateReqVO updateReqVO) { + formService.updateForm(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除动态表单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('worklog:form:delete')") + public CommonResult deleteForm(@RequestParam("id") Long id) { + formService.deleteForm(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得动态表单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('worklog:form:query')") + public CommonResult getForm(@RequestParam("id") Long id) { + LogFormDO form = formService.getForm(id); + return success(LogFormConvert.INSTANCE.convert(form)); + } + + @GetMapping("/list-all-simple") + @Operation(summary = "获得动态表单的精简列表", description = "用于表单下拉框") + public CommonResult> getSimpleForms() { + List list = formService.getFormList(); + return success(LogFormConvert.INSTANCE.convertList2(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得动态表单分页") + @PreAuthorize("@ss.hasPermission('worklog:form:query')") + public CommonResult> getFormPage(@Valid LogFormPageReqVO pageVO) { + PageResult pageResult = formService.getFormPage(pageVO); + return success(LogFormConvert.INSTANCE.convertPage(pageResult)); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java new file mode 100644 index 00000000..659ef72c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog; + +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO; +import cn.iocoder.yudao.module.system.service.worklog.LogInstanceService; + +@Tag(name = "管理后台 - 日志实例的拓展") +@RestController +@RequestMapping("/system/log-instance") +@Validated +public class LogInstanceController { + + @Resource + private LogInstanceService logInstanceService; + + @PostMapping("/create") + @Operation(summary = "创建日志实例的拓展") + @PreAuthorize("@ss.hasPermission('system:log-instance:create')") + public CommonResult createLogInstance(@Valid @RequestBody LogInstanceSaveReqVO createReqVO) { + return success(logInstanceService.createLogInstance(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新日志实例的拓展") + @PreAuthorize("@ss.hasPermission('system:log-instance:update')") + public CommonResult updateLogInstance(@Valid @RequestBody LogInstanceSaveReqVO updateReqVO) { + logInstanceService.updateLogInstance(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除日志实例的拓展") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:log-instance:delete')") + public CommonResult deleteLogInstance(@RequestParam("id") Long id) { + logInstanceService.deleteLogInstance(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得日志实例的拓展") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:log-instance:query')") + public CommonResult getLogInstance(@RequestParam("id") Long id) { + LogInstanceDO logInstance = logInstanceService.getLogInstance(id); + return success(BeanUtils.toBean(logInstance, LogInstanceRespVO.class)); + } + + @GetMapping("/my-page") + @Operation(summary = "获得我的日志分页列表", description = "在【我的日志】菜单中,进行调用") + @PreAuthorize("@ss.hasPermission('system:log-instance:query')") + public CommonResult> getMyLogInstancePage(@Valid LogInstancePageReqVO pageReqVO) { + + return success(logInstanceService.getMyProcessInstancePage(getLoginUserId(), pageReqVO)); + } + + @GetMapping("/page") + @Operation(summary = "获得日志实例的拓展分页") + @PreAuthorize("@ss.hasPermission('system:view-log:query')") + public CommonResult> getLogInstancePage(@Valid LogInstancePageReqVO pageReqVO) { + PageResult pageResult = logInstanceService.getLogInstancePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, LogInstanceRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出日志实例的拓展 Excel") + @PreAuthorize("@ss.hasPermission('system:log-instance:export')") + @OperateLog(type = EXPORT) + public void exportLogInstanceExcel(@Valid LogInstancePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = logInstanceService.getLogInstancePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "日志实例的拓展.xls", "数据", LogInstanceRespVO.class, + BeanUtils.toBean(list, LogInstanceRespVO.class)); + } +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogRuleController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogRuleController.java new file mode 100644 index 00000000..298aa536 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogRuleController.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRulePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRuleRespVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRuleSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO; +import cn.iocoder.yudao.module.system.service.worklog.LogRuleService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +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.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 日志规则") +@RestController +@RequestMapping("/system/log-rule") +@Validated +public class LogRuleController { + + @Resource + private LogRuleService logRuleService; + + @PostMapping("/create") + @Operation(summary = "创建日志规则") + @PreAuthorize("@ss.hasPermission('system:log-rule:create')") + public CommonResult createLogRule(@Valid @RequestBody LogRuleSaveReqVO createReqVO) { + return success(logRuleService.createLogRule(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新日志规则") + @PreAuthorize("@ss.hasPermission('system:log-rule:update')") + public CommonResult updateLogRule(@Valid @RequestBody LogRuleSaveReqVO updateReqVO) { + logRuleService.updateLogRule(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除日志规则") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:log-rule:delete')") + public CommonResult deleteLogRule(@RequestParam("id") Long id) { + logRuleService.deleteLogRule(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得日志规则") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:log-rule:query')") + public CommonResult getLogRule(@RequestParam("id") Long id) { + LogRuleDO logRule = logRuleService.getLogRule(id); + return success(BeanUtils.toBean(logRule, LogRuleRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得日志规则分页") + @PreAuthorize("@ss.hasPermission('system:log-rule:query')") + public CommonResult> getLogRulePage(@Valid LogRulePageReqVO pageReqVO) { + PageResult pageResult = logRuleService.getLogRulePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, LogRuleRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出日志规则 Excel") + @PreAuthorize("@ss.hasPermission('system:log-rule:export')") + @OperateLog(type = EXPORT) + public void exportLogRuleExcel(@Valid LogRulePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = logRuleService.getLogRulePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "日志规则.xls", "数据", LogRuleRespVO.class, + BeanUtils.toBean(list, LogRuleRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormBaseVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormBaseVO.java new file mode 100644 index 00000000..e8b97991 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormBaseVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** +* 动态表单 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class LogFormBaseVO { + + @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + @NotNull(message = "表单名称不能为空") + private String name; + + @Schema(description = "日志绑定规则编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "1") + private String ruleId; + + @Schema(description = "表单状态-参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "表单状态不能为空") + private Integer status; + + @Schema(description = "备注", example = "我是备注") + private String remark; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormCreateReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormCreateReqVO.java new file mode 100644 index 00000000..826de9e9 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormCreateReqVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Schema(description = "管理后台 - 动态表单创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class LogFormCreateReqVO extends LogFormBaseVO { + + @Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "表单的配置不能为空") + private String conf; + + @Schema(description = "表单项的数组-JSON 字符串的数组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "表单项的数组不能为空") + private List fields; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormPageReqVO.java new file mode 100644 index 00000000..6abacdf3 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormPageReqVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - 动态表单分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class LogFormPageReqVO extends PageParam { + + @Schema(description = "表单名称", example = "芋道") + private String name; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormRespVO.java new file mode 100644 index 00000000..9c2128ff --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormRespVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 动态表单 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class LogFormRespVO extends LogFormBaseVO { + + @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "表单的配置不能为空") + private String conf; + + @Schema(description = "表单项的数组-JSON 字符串的数组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "表单项的数组不能为空") + private List fields; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormSimpleRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormSimpleRespVO.java new file mode 100644 index 00000000..41ea5ae6 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormSimpleRespVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 流程表单精简 Response VO") +@Data +public class LogFormSimpleRespVO { + + @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") + private String name; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormUpdateReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormUpdateReqVO.java new file mode 100644 index 00000000..b0a8f175 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/form/LogFormUpdateReqVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Schema(description = "管理后台 - 动态表单更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class LogFormUpdateReqVO extends LogFormBaseVO { + + @Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotNull(message = "表单编号不能为空") + private Long id; + + @Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "表单的配置不能为空") + private String conf; + + @Schema(description = "表单项的数组-JSON 字符串的数组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "表单项的数组不能为空") + private List fields; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java new file mode 100644 index 00000000..61d36372 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadUserFile; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 日志实例的拓展分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class LogInstancePageReqVO extends PageParam { + + @Schema(description = "发起日志的用户编号", example = "24292") + private Long startUserId; + + @Schema(description = "日志发起人的部门编号", example = "24292") + private Long deptId; + + @Schema(description = "日志实例的名字", example = "张三") + private String name; + + @Schema(description = "日志类型 字典值 详情参考work_log_type", example = "2") + private Integer type; + + @Schema(description = "模板编号", example = "11857") + private Long formId; + + @Schema(description = "模板值") + private Map formVariables; + + @Schema(description = "日志阅读状态", example = "2") + private Map readStatus; + + @Schema(description = "附件信息") + private List fileItems ; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstanceRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstanceRespVO.java new file mode 100644 index 00000000..b2d3b780 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstanceRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance; + +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadUserFile; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +@Schema(description = "管理后台 - 日志实例的拓展 Response VO") +@Data +@ExcelIgnoreUnannotated +public class LogInstanceRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20649") + private Long id; + + @Schema(description = "日志发起人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24292") + private Long startUserId; + + @Schema(description = "日志发起人的部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24292") + private Long deptId; + + @Schema(description = "日志实例的名字", example = "张三") + private String name; + + @Schema(description = "日志类型 字典值 详情参考work_log_type", example = "2") + private Integer type; + + @Schema(description = "模板编号", example = "11857") + private Long formId; + + @Schema(description = "模板值") + private Map formVariables; + + @Schema(description = "日志阅读状态", example = "2") + private Map readStatus; + + @Schema(description = "附件信息") + private List fileItems ; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstanceSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstanceSaveReqVO.java new file mode 100644 index 00000000..4c1e156d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstanceSaveReqVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance; + +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadUserFile; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import javax.validation.constraints.*; +import java.util.List; +import java.util.Map; + +@Schema(description = "管理后台 - 日志实例的拓展新增/修改 Request VO") +@Data +public class LogInstanceSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20649") + private Long id; + + @Schema(description = "日志发起人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24292") + @NotNull(message = "发起日志的用户编号不能为空") + private Long startUserId; + + @Schema(description = "日志发起人的部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24292") + @NotNull(message = "发起日志的用户编号不能为空") + private Long deptId; + + @Schema(description = "日志实例的名字", example = "张三") + private String name; + + @Schema(description = "日志类型 字典值 详情参考work_log_type", example = "2") + private Integer type; + + @Schema(description = "模板编号", example = "11857") + private Long formId; + + @Schema(description = "模板值") + private Map formVariables; + + @Schema(description = "日志阅读状态", example = "2") + private Map readStatus; + + @Schema(description = "附件信息") + private List fileItems ; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRulePageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRulePageReqVO.java new file mode 100644 index 00000000..1aff5090 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRulePageReqVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 日志规则分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class LogRulePageReqVO extends PageParam { + + @Schema(description = "模板使用部门组") + private String deptIds; + + @Schema(description = "日志类型 字典值 详情参考work_log_type", example = "2") + private Integer type; + + @Schema(description = "日报情况,需提交的日期") + private String weekDays; + + @Schema(description = "提交开始时间段") + private String startTime; + + @Schema(description = "提交结束时间段") + private String endTime; + + @Schema(description = "提醒时间(小时)") + private Integer remindTime; + + @Schema(description = "统计时间") + private String statisticalTime; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRuleRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRuleRespVO.java new file mode 100644 index 00000000..2e1f87de --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRuleRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 日志规则 Response VO") +@Data +@ExcelIgnoreUnannotated +public class LogRuleRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21181") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "模板使用部门组", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("模板使用部门组") + private Long deptIds; + + @Schema(description = "日志类型 字典值 详情参考work_log_type", example = "2") + @ExcelProperty("日志类型") + private Integer type; + + @Schema(description = "日报情况,需提交的日期") + @ExcelProperty("日报情况,需提交的日期") + private String weekDays; + + @Schema(description = "提交开始时间段") + @ExcelProperty("提交开始时间段") + private String startTime; + + @Schema(description = "提交结束时间段") + @ExcelProperty("提交结束时间段") + private String endTime; + + @Schema(description = "提醒时间(小时)") + @ExcelProperty("提醒时间(小时)") + private Integer remindTime; + + @Schema(description = "统计时间段") + @ExcelProperty("统计时间段") + private String statisticalTime; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRuleSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRuleSaveReqVO.java new file mode 100644 index 00000000..4a838719 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/rule/LogRuleSaveReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 日志规则新增/修改 Request VO") +@Data +public class LogRuleSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21181") + private Long id; + + @Schema(description = "模板使用部门组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "模板使用部门组不能为空") + private String deptIds; + + @Schema(description = "日志类型", example = "2") + private Integer type; + + @Schema(description = "日报情况,需提交的日期") + private String weekDays; + + @Schema(description = "提交开始时间段") + private String startTime; + + @Schema(description = "提交结束时间段") + private String endTime; + + @Schema(description = "提醒时间(小时)") + private Integer remindTime; + + @Schema(description = "统计时间段") + private String statisticalTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/upload/UploadUserFile.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/upload/UploadUserFile.java new file mode 100644 index 00000000..d612fb49 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/upload/UploadUserFile.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 功能描述 用于给日志附件同用的上传文件对象 + */ +@Data +public class UploadUserFile { + + @Schema(description = "文件原始名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "123.jpg") + private String name; + + @Schema(description = "文件URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://xxx.xxx/xx/xx/123.jpgss") + private String url; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogFormConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogFormConvert.java new file mode 100644 index 00000000..5e6ba64d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogFormConvert.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.system.convert.worklog; + + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormRespVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormSimpleRespVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormUpdateReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 动态表单 Convert + * + * @author furongxin + */ +@Mapper +public interface LogFormConvert { + + LogFormConvert INSTANCE = Mappers.getMapper(LogFormConvert.class); + + LogFormDO convert(LogFormCreateReqVO bean); + + LogFormDO convert(LogFormUpdateReqVO bean); + + LogFormRespVO convert(LogFormDO bean); + + List convertList2(List list); + + PageResult convertPage(PageResult page); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogInstanceConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogInstanceConvert.java new file mode 100644 index 00000000..3dae2faf --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogInstanceConvert.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.system.convert.worklog; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 日志详情 Convert + * + * @author furongxin + */ +@Mapper +public interface LogInstanceConvert { + + LogInstanceConvert INSTANCE = Mappers.getMapper(LogInstanceConvert.class); + + LogInstanceDO convert(LogInstanceSaveReqVO bean); + + + LogInstanceRespVO convert(LogInstanceDO bean); + + PageResult convertPage(PageResult page); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogFormDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogFormDO.java new file mode 100644 index 00000000..413d61fc --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogFormDO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.worklog; + +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; + +/** + * 日志的表单定义 + * 用于日志的申请表单,需要动态配置的场景 + * + + */ +@TableName(value = "work_log_form", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LogFormDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 表单名 + */ + private String name; + /** + * 规则ID + */ + private Long ruleId; + /** + * 状态 + */ + private Integer status; + /** + * 表单的配置 + */ + private String conf; + /** + * 表单项的数组 + * + * 目前直接将 https://github.com/JakHuang/form-generator 生成的 JSON 串,直接保存 + * 定义:https://github.com/JakHuang/form-generator/issues/46 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List fields; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java new file mode 100644 index 00000000..b0d6013c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java @@ -0,0 +1,75 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.worklog; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadUserFile; +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; +import java.util.Map; + +/** + * 日志的详情 + * + */ +@TableName(value = "work_log_instance_ext", autoResultMap = true) +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LogInstanceDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + + /** + * 日志发起人的用户ID + */ + private Long startUserId; + + /** + * 日志发起人的部门ID + */ + private Long deptId; + + /** + * 日志名称 + */ + private String name; + + /** + * 日报类型 + */ + private Integer type; + + /** + * 日志模板编号 + */ + private Long formId; + + /** + * 日志模板值 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private Map formVariables; + + /** + * 日志阅读状态 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private Map readStatus; + + /** + * 附件基本信息 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List fileItems ; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogRuleDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogRuleDO.java new file mode 100644 index 00000000..4e1eadc5 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogRuleDO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.worklog; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * 日志规则 DO + * + * @author 符溶馨 + */ +@TableName("work_log_rule") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LogRuleDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 模板使用部门组 + */ + private String deptIds; + /** + * 日志类型 + */ + private Integer type; + /** + * 日报情况,需提交的日期 + */ + private String weekDays; + /** + * 提交开始时间段 + */ + private String startTime; + /** + * 提交结束时间段 + */ + private String endTime; + /** + * 提醒时间(小时) + */ + private Integer remindTime; + /** + * 统计时间段 + */ + private String statisticalTime; + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogFormMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogFormMapper.java new file mode 100644 index 00000000..41e5b23c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogFormMapper.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.system.dal.mysql.worklog; + +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 cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface LogFormMapper extends BaseMapperX { + + default PageResult selectPage(LogFormPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .likeIfPresent("name", reqVO.getName()) + .orderByDesc("id")); + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java new file mode 100644 index 00000000..4341bd29 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.system.dal.mysql.worklog; + +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.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 日志实例的拓展 Mapper + * + * @author 符溶馨 + */ +@Mapper +public interface LogInstanceMapper extends BaseMapperX { + + default PageResult selectPage(LogInstancePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(LogInstanceDO::getStartUserId, reqVO.getStartUserId()) + .likeIfPresent(LogInstanceDO::getName, reqVO.getName()) + .eqIfPresent(LogInstanceDO::getFormId, reqVO.getFormId()) + .eqIfPresent(LogInstanceDO::getFormVariables, reqVO.getFormVariables()) + .eqIfPresent(LogInstanceDO::getReadStatus, reqVO.getReadStatus()) + .eqIfPresent(LogInstanceDO::getFileItems, reqVO.getFileItems()) + .betweenIfPresent(LogInstanceDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(LogInstanceDO::getId)); + } + + default PageResult selectMyPage(Long userId, LogInstancePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(LogInstanceDO::getStartUserId, userId) + .likeIfPresent(LogInstanceDO::getName, reqVO.getName()) + .eqIfPresent(LogInstanceDO::getFormId, reqVO.getFormId()) + .eqIfPresent(LogInstanceDO::getFormVariables, reqVO.getFormVariables()) + .eqIfPresent(LogInstanceDO::getReadStatus, reqVO.getReadStatus()) + .eqIfPresent(LogInstanceDO::getFileItems, reqVO.getFileItems()) + .betweenIfPresent(LogInstanceDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(LogInstanceDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogRuleMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogRuleMapper.java new file mode 100644 index 00000000..a4407855 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogRuleMapper.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.system.dal.mysql.worklog; + +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.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRulePageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 日志规则 Mapper + * + * @author 符溶馨 + */ +@Mapper +public interface LogRuleMapper extends BaseMapperX { + + default PageResult selectPage(LogRulePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(LogRuleDO::getDeptIds, reqVO.getDeptIds()) + .eqIfPresent(LogRuleDO::getType, reqVO.getType()) + .betweenIfPresent(LogRuleDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(LogRuleDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java index d0617473..8f847f5c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/notice/NoticeServiceImpl.java @@ -85,6 +85,7 @@ public class NoticeServiceImpl implements NoticeService { @Resource private SubscribeMessageSendApi subscribeMessageSendApi; + @Override public void sendNotice(NoticeDO notice) { //获取当前登陆用户的名称 LoginUser user = SecurityFrameworkUtils.getLoginUser() ; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogFormService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogFormService.java new file mode 100644 index 00000000..4bab25fd --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogFormService.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.module.system.service.worklog; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormUpdateReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +public interface LogFormService { + + /** + * 创建动态表单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createForm(@Valid LogFormCreateReqVO createReqVO); + + /** + * 更新动态表单 + * + * @param updateReqVO 更新信息 + */ + void updateForm(@Valid LogFormUpdateReqVO updateReqVO); + + /** + * 删除动态表单 + * + * @param id 编号 + */ + void deleteForm(Long id); + + /** + * 获得动态表单 + * + * @param id 编号 + * @return 动态表单 + */ + LogFormDO getForm(Long id); + + /** + * 获得动态表单列表 + * + * @return 动态表单列表 + */ + List getFormList(); + + /** + * 获得动态表单列表 + * + * @param ids 编号 + * @return 动态表单列表 + */ + List getFormList(Collection ids); + + /** + * 获得动态表单 Map + * + * @param ids 编号 + * @return 动态表单 Map + */ + default Map getFormMap(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyMap(); + } + return CollectionUtils.convertMap(this.getFormList(ids), LogFormDO::getId); + } + + /** + * 获得动态表单分页 + * + * @param pageReqVO 分页查询 + * @return 动态表单分页 + */ + PageResult getFormPage(LogFormPageReqVO pageReqVO); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogFormServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogFormServiceImpl.java new file mode 100644 index 00000000..6596a532 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogFormServiceImpl.java @@ -0,0 +1,110 @@ +package cn.iocoder.yudao.module.system.service.worklog; + +import cn.hutool.core.lang.Assert; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormUpdateReqVO; +import cn.iocoder.yudao.module.system.convert.worklog.LogFormConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO; +import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogFormMapper; +import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; +import cn.iocoder.yudao.module.system.service.worklog.dto.LogFormFieldRespDTO; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.*; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 动态表单 Service 实现类 + * + * @author 风里雾里 + */ +@Service +@Validated +public class LogFormServiceImpl implements LogFormService{ + + @Resource + private LogFormMapper formMapper; + + @Override + public Long createForm(LogFormCreateReqVO createReqVO) { + this.checkFields(createReqVO.getFields()); + // 插入 + LogFormDO form = LogFormConvert.INSTANCE.convert(createReqVO); + formMapper.insert(form); + // 返回 + return form.getId(); + } + + @Override + public void updateForm(LogFormUpdateReqVO updateReqVO) { + this.checkFields(updateReqVO.getFields()); + // 校验存在 + this.validateFormExists(updateReqVO.getId()); + // 更新 + LogFormDO updateObj = LogFormConvert.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(ErrorCodeConstants.FORM_NOT_EXISTS); + } + } + + @Override + public LogFormDO getForm(Long id) { + return formMapper.selectById(id); + } + + @Override + public List getFormList() { + return formMapper.selectList(); + } + + @Override + public List getFormList(Collection ids) { + return formMapper.selectBatchIds(ids); + } + + @Override + public PageResult getFormPage(LogFormPageReqVO pageReqVO) { + return formMapper.selectPage(pageReqVO); + } + + /** + * 校验 Field,避免 field 重复 + * + * @param fields field 数组 + */ + private void checkFields(List fields) { + if (true) { // TODO 芋艿:兼容 Vue3 工作流:因为采用了新的表单设计器,所以暂时不校验 + return; + } + Map fieldMap = new HashMap<>(); // key 是 vModel,value 是 label + for (String field : fields) { + LogFormFieldRespDTO fieldDTO = JsonUtils.parseObject(field, LogFormFieldRespDTO.class); + Assert.notNull(fieldDTO); + String oldLabel = fieldMap.put(fieldDTO.getVModel(), fieldDTO.getLabel()); + // 如果不存在,则直接返回 + if (oldLabel == null) { + continue; + } + // 如果存在,则报错 + throw exception(ErrorCodeConstants.FORM_FIELD_REPEAT, oldLabel, fieldDTO.getLabel(), fieldDTO.getVModel()); + } + } +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java new file mode 100644 index 00000000..15da52df --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.system.service.worklog; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO; + +import javax.validation.Valid; + +/** + * 日志实例的拓展 Service 接口 + * + * @author 符溶馨 + */ +public interface LogInstanceService { + + /** + * 创建日志实例的拓展 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createLogInstance(@Valid LogInstanceSaveReqVO createReqVO); + + /** + * 更新日志实例的拓展 + * + * @param updateReqVO 更新信息 + */ + void updateLogInstance(@Valid LogInstanceSaveReqVO updateReqVO); + + /** + * 删除日志实例的拓展 + * + * @param id 编号 + */ + void deleteLogInstance(Long id); + + /** + * 获得日志实例的拓展 + * + * @param id 编号 + * @return 日志实例的拓展 + */ + LogInstanceDO getLogInstance(Long id); + + /** + * 获得日志实例的拓展分页 + * + * @param pageReqVO 分页查询 + * @return 日志实例的拓展分页 + */ + PageResult getLogInstancePage(LogInstancePageReqVO pageReqVO); + + /** + * 获得我的日志的分页 + * + * @param userId 用户编号 + * @param pageReqVO 分页请求 + * @return 流程实例的分页 + */ + PageResult getMyProcessInstancePage(Long userId, LogInstancePageReqVO pageReqVO); +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java new file mode 100644 index 00000000..457860ad --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java @@ -0,0 +1,170 @@ +package cn.iocoder.yudao.module.system.service.worklog; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO; +import cn.iocoder.yudao.module.system.convert.worklog.LogInstanceConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; +import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO; +import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper; +import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; +import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogInstanceMapper; +import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum; +import cn.iocoder.yudao.module.system.service.dept.DeptService; +import cn.iocoder.yudao.module.system.service.permission.MenuService; +import cn.iocoder.yudao.module.system.service.permission.PermissionService; +import cn.iocoder.yudao.module.system.service.permission.RoleService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.*; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LOG_INSTANCE_NOT_EXISTS; + +/** + * 日志实例的拓展 Service 实现类 + * + * @author 符溶馨 + */ +@Service +@Validated +public class LogInstanceServiceImpl implements LogInstanceService { + + @Resource + private LogInstanceMapper logInstanceMapper; + + @Resource + private MenuService menuService; + + @Resource + private PermissionService permissionService; + + @Resource + private RoleService roleService; + + @Resource + private UserRoleMapper userRoleMapper; + + @Resource + private AdminUserMapper adminUserMapper; + + @Resource + private DeptService deptService; + + @Override + public Long createLogInstance(LogInstanceSaveReqVO createReqVO) { + // 插入 + LogInstanceDO logInstance = BeanUtils.toBean(createReqVO, LogInstanceDO.class); + logInstanceMapper.insert(logInstance); + + //根据查询权限获取menuID + List menuIds = menuService.getMenuIdListByPermissionFromCache("system:view-log:query"); + if (menuIds != null && !menuIds.isEmpty()) { + + Map readStatus = new HashMap<>(); + List roles = new ArrayList<>(); + + //根据menuID 获取 roleIds + Set roleIds = permissionService.getMenuRoleIdListByMenuIdFromCache(menuIds.get(0)); + + List roleDOS = roleService.getRoleList(roleIds); + for (RoleDO roleDo : roleDOS) { + + if (Objects.equals(roleDo.getDataScope(), DataScopeEnum.ALL.getScope())) { //数据权限是全部时 + + roles.add(roleDo.getId()); + }else if (Objects.equals(roleDo.getDataScope(), DataScopeEnum.DEPT_CUSTOM.getScope())) { //数据权限是指定部门 + + //指定部门组里存在 发起人的部门 + if (roleDo.getDataScopeDeptIds().contains(createReqVO.getDeptId())) { + + roles.add(roleDo.getId()); + } + }else if (Objects.equals(roleDo.getDataScope(), DataScopeEnum.DEPT_ONLY.getScope())) { //数据权限是本部门 + + List userDos = adminUserMapper.selectListByRoleId(roleDo.getId()); + for (AdminUserDO userDO : userDos) { + + //权限部门与发起人部门一致时 + if (Objects.equals(userDO.getDeptId(), createReqVO.getDeptId())) { + + readStatus.put(String.valueOf(userDO.getId()), "0"); + } + } + }else if (Objects.equals(roleDo.getDataScope(), DataScopeEnum.DEPT_AND_CHILD.getScope())) { //数据权限是本部门及一下 + + //根据规则ID 查询用户信息 + List userDos = adminUserMapper.selectListByRoleId(roleDo.getId()); + for (AdminUserDO userDO : userDos) { + + Set deptIds = deptService.getChildDeptIdListFromCache(userDO.getDeptId()); + //权限部门与发起人部门一致时 + if (deptIds.contains(createReqVO.getDeptId())) { + + readStatus.put(String.valueOf(userDO.getId()), "0"); + } + } + } + } + + //通过满足条件的roleId 查询所有用户信息 + List userRoleDOS = userRoleMapper.selectListByRoleIds(roles); + for (UserRoleDO userRoleDO : userRoleDOS) { + + readStatus.put(String.valueOf(userRoleDO.getUserId()), "0"); + } + + LogInstanceDO updateObj = new LogInstanceDO(); +// updateObj.setReadStatus(JsonObject.); +// logInstanceMapper.updateById(); + } + + // 返回 + return logInstance.getId(); + } + + @Override + public void updateLogInstance(LogInstanceSaveReqVO updateReqVO) { + // 校验存在 + validateLogInstanceExists(updateReqVO.getId()); + // 更新 + LogInstanceDO updateObj = BeanUtils.toBean(updateReqVO, LogInstanceDO.class); + logInstanceMapper.updateById(updateObj); + } + + @Override + public void deleteLogInstance(Long id) { + // 校验存在 + validateLogInstanceExists(id); + // 删除 + logInstanceMapper.deleteById(id); + } + + private void validateLogInstanceExists(Long id) { + if (logInstanceMapper.selectById(id) == null) { + throw exception(LOG_INSTANCE_NOT_EXISTS); + } + } + + @Override + public LogInstanceDO getLogInstance(Long id) { + return logInstanceMapper.selectById(id); + } + + @Override + public PageResult getLogInstancePage(LogInstancePageReqVO pageReqVO) { + return logInstanceMapper.selectPage(pageReqVO); + } + + @Override + public PageResult getMyProcessInstancePage(Long userId, LogInstancePageReqVO pageReqVO) { + + return LogInstanceConvert.INSTANCE.convertPage(logInstanceMapper.selectMyPage(userId, pageReqVO)); + } +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogRuleService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogRuleService.java new file mode 100644 index 00000000..e71b9b76 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogRuleService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.system.service.worklog; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRulePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRuleSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO; + +import javax.validation.Valid; + +/** + * 日志规则 Service 接口 + * + * @author 符溶馨 + */ +public interface LogRuleService { + + /** + * 创建日志规则 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createLogRule(@Valid LogRuleSaveReqVO createReqVO); + + /** + * 更新日志规则 + * + * @param updateReqVO 更新信息 + */ + void updateLogRule(@Valid LogRuleSaveReqVO updateReqVO); + + /** + * 删除日志规则 + * + * @param id 编号 + */ + void deleteLogRule(Long id); + + /** + * 获得日志规则 + * + * @param id 编号 + * @return 日志规则 + */ + LogRuleDO getLogRule(Long id); + + /** + * 获得日志规则分页 + * + * @param pageReqVO 分页查询 + * @return 日志规则分页 + */ + PageResult getLogRulePage(LogRulePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogRuleServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogRuleServiceImpl.java new file mode 100644 index 00000000..e85cf123 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogRuleServiceImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.system.service.worklog; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRulePageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRuleSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO; +import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogRuleMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LOG_RULE_NOT_EXISTS; + +/** + * 日志规则 Service 实现类 + * + * @author 符溶馨 + */ +@Service +@Validated +public class LogRuleServiceImpl implements LogRuleService { + + @Resource + private LogRuleMapper logRuleMapper; + + @Override + public Long createLogRule(LogRuleSaveReqVO createReqVO) { + // 插入 + LogRuleDO logRule = BeanUtils.toBean(createReqVO, LogRuleDO.class); + logRuleMapper.insert(logRule); + // 返回 + return logRule.getId(); + } + + @Override + public void updateLogRule(LogRuleSaveReqVO updateReqVO) { + // 校验存在 + validateLogRuleExists(updateReqVO.getId()); + // 更新 + LogRuleDO updateObj = BeanUtils.toBean(updateReqVO, LogRuleDO.class); + logRuleMapper.updateById(updateObj); + } + + @Override + public void deleteLogRule(Long id) { + // 校验存在 + validateLogRuleExists(id); + // 删除 + logRuleMapper.deleteById(id); + } + + private void validateLogRuleExists(Long id) { + if (logRuleMapper.selectById(id) == null) { + throw exception(LOG_RULE_NOT_EXISTS); + } + } + + @Override + public LogRuleDO getLogRule(Long id) { + return logRuleMapper.selectById(id); + } + + @Override + public PageResult getLogRulePage(LogRulePageReqVO pageReqVO) { + return logRuleMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/dto/LogFormFieldRespDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/dto/LogFormFieldRespDTO.java new file mode 100644 index 00000000..7551cb76 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/dto/LogFormFieldRespDTO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.system.service.worklog.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * Bpm 表单的 Field 表单项 Response DTO + * 字段的定义,可见 https://github.com/JakHuang/form-generator/issues/46 文档 + * + + */ +@Data +public class LogFormFieldRespDTO { + + /** + * 表单标题 + */ + private String label; + /** + * 表单字段的属性名,可自定义 + */ + @JsonProperty(value = "vModel") + private String vModel; + +}