Jelajahi Sumber

新增通知规则相关业务

车车 3 bulan lalu
induk
melakukan
a7bb7e2c87
18 mengubah file dengan 938 tambahan dan 0 penghapusan
  1. 74 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/NotifyConfigController.java
  2. 84 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/NotifyConfigDetailController.java
  3. 35 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigDetailPageReqVO.java
  4. 50 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigDetailRespVO.java
  5. 33 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigDetailSaveReqVO.java
  6. 42 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigPageReqVO.java
  7. 58 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigRespVO.java
  8. 43 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigSaveReqVO.java
  9. 59 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/notifyconfig/NotifyConfigDO.java
  10. 51 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/notifyconfig/NotifyConfigDetailDO.java
  11. 49 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/notifyconfig/NotifyConfigDetailMapper.java
  12. 49 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/notifyconfig/NotifyConfigMapper.java
  13. 67 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/notifyconfig/NotifyConfigDetailService.java
  14. 69 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/notifyconfig/NotifyConfigDetailServiceImpl.java
  15. 58 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/notifyconfig/NotifyConfigService.java
  16. 76 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/notifyconfig/NotifyConfigServiceImpl.java
  17. 19 0
      yudao-module-iscs/src/main/resources/mapper/NotifyConfigDetailMapper.xml
  18. 22 0
      yudao-module-iscs/src/main/resources/mapper/NotifyConfigMapper.xml

+ 74 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/NotifyConfigController.java

@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig.NotifyConfigDO;
+import cn.iocoder.yudao.module.iscs.service.notifyconfig.NotifyConfigService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 通知规则")
+@RestController
+@RequestMapping("/iscs/notify-config")
+@Validated
+public class NotifyConfigController {
+
+    @Resource
+    private NotifyConfigService notifyConfigService;
+
+    @PostMapping("/insertNotifyConfig")
+    @Operation(summary = "创建通知规则")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config:create')")
+    public CommonResult<Long> insertNotifyConfig(@Valid @RequestBody NotifyConfigSaveReqVO createReqVO) {
+        return success(notifyConfigService.createNotifyConfig(createReqVO));
+    }
+
+    @PutMapping("/updateNotifyConfig")
+    @Operation(summary = "更新通知规则")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config:update')")
+    public CommonResult<Boolean> updateNotifyConfig(@Valid @RequestBody NotifyConfigSaveReqVO updateReqVO) {
+        notifyConfigService.updateNotifyConfig(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteNotifyConfigList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除通知规则")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config:delete')")
+    public CommonResult<Boolean> deleteNotifyConfigList(@RequestParam("ids") List<Long> ids) {
+        notifyConfigService.deleteNotifyConfigListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectNotifyConfigById")
+    @Operation(summary = "获得通知规则")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config:query')")
+    public CommonResult<NotifyConfigRespVO> selectNotifyConfigById(@RequestParam("id") Long id) {
+        NotifyConfigDO notifyConfig = notifyConfigService.getNotifyConfig(id);
+        return success(BeanUtils.toBean(notifyConfig, NotifyConfigRespVO.class));
+    }
+
+    @GetMapping("/getNotifyConfigPage")
+    @Operation(summary = "获得通知规则分页")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config:query')")
+    public CommonResult<PageResult<NotifyConfigRespVO>> getNotifyConfigPage(@Valid NotifyConfigPageReqVO pageReqVO) {
+        PageResult<NotifyConfigRespVO> pageResult = notifyConfigService.getNotifyConfigPage(pageReqVO);
+        return success(pageResult);
+    }
+
+}

+ 84 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/NotifyConfigDetailController.java

@@ -0,0 +1,84 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig.NotifyConfigDetailDO;
+import cn.iocoder.yudao.module.iscs.service.notifyconfig.NotifyConfigDetailService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 通知规则角色和模板设置关联")
+@RestController
+@RequestMapping("/iscs/notify-config-detail")
+@Validated
+public class NotifyConfigDetailController {
+
+    @Resource
+    private NotifyConfigDetailService notifyConfigDetailService;
+
+    @PostMapping("/insertNotifyConfigDetail")
+    @Operation(summary = "创建通知规则角色和模板设置关联")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config-detail:create')")
+    public CommonResult<Long> insertNotifyConfigDetail(@Valid @RequestBody NotifyConfigDetailSaveReqVO createReqVO) {
+        return success(notifyConfigDetailService.createNotifyConfigDetail(createReqVO));
+    }
+
+    @PutMapping("/updateNotifyConfigDetail")
+    @Operation(summary = "更新通知规则角色和模板设置关联")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config-detail:update')")
+    public CommonResult<Boolean> updateNotifyConfigDetail(@Valid @RequestBody NotifyConfigDetailSaveReqVO updateReqVO) {
+        notifyConfigDetailService.updateNotifyConfigDetail(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteNotifyConfigDetailList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除通知规则角色和模板设置关联")
+                @PreAuthorize("@ss.hasPermission('iscs:notify-config-detail:delete')")
+    public CommonResult<Boolean> deleteNotifyConfigDetailList(@RequestParam("ids") List<Long> ids) {
+        notifyConfigDetailService.deleteNotifyConfigDetailListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectNotifyConfigDetailById")
+    @Operation(summary = "获得通知规则角色和模板设置关联")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config-detail:query')")
+    public CommonResult<NotifyConfigDetailRespVO> selectNotifyConfigDetailById(@RequestParam("id") Long id) {
+        NotifyConfigDetailDO notifyConfigDetail = notifyConfigDetailService.getNotifyConfigDetail(id);
+        return success(BeanUtils.toBean(notifyConfigDetail, NotifyConfigDetailRespVO.class));
+    }
+
+    @GetMapping("/selectNotifyConfigDetailByConfigId")
+    @Operation(summary = "获得通知规则角色和模板设置关联ByConfigId")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config-detail:query')")
+    public CommonResult<List<NotifyConfigDetailRespVO>> selectNotifyConfigDetailByConfigId(@RequestParam("configId") Long configId) {
+        List<NotifyConfigDetailRespVO> notifyConfigDetail = notifyConfigDetailService.selectNotifyConfigDetailByConfigId(configId);
+        return success(notifyConfigDetail);
+    }
+
+    @GetMapping("/getNotifyConfigDetailPage")
+    @Operation(summary = "获得通知规则角色和模板设置关联分页")
+    @PreAuthorize("@ss.hasPermission('iscs:notify-config-detail:query')")
+    public CommonResult<PageResult<NotifyConfigDetailRespVO>> getNotifyConfigDetailPage(@Valid NotifyConfigDetailPageReqVO pageReqVO) {
+        PageResult<NotifyConfigDetailDO> pageResult = notifyConfigDetailService.getNotifyConfigDetailPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, NotifyConfigDetailRespVO.class));
+    }
+
+
+}

+ 35 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigDetailPageReqVO.java

@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+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
+public class NotifyConfigDetailPageReqVO extends PageParam {
+
+    @Schema(description = "角色")
+    private Long roleId;
+
+    @Schema(description = "是否通知当事人(0-否 1-是)")
+    private Integer isClient;
+
+    @Schema(description = "通知模板id", example = "2559")
+    private Long notifyTemplateId;
+
+    @Schema(description = "状态(0-不启用 1-启用)", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "isc_notify_config主键id", example = "15466")
+    private Long configId;
+
+}

+ 50 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigDetailRespVO.java

@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo;
+
+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 NotifyConfigDetailRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1784")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "角色", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("角色")
+    private Long roleId;
+
+    @Schema(description = "角色NAME")
+    private String roleName;
+
+    @Schema(description = "是否通知当事人(0-否 1-是)", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("是否通知当事人(0-否 1-是)")
+    private Integer isClient;
+
+    @Schema(description = "通知模板id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2559")
+    @ExcelProperty("通知模板id")
+    private Long notifyTemplateId;
+
+    @Schema(description = "通知模板name", requiredMode = Schema.RequiredMode.REQUIRED, example = "2559")
+    @ExcelProperty("通知模板name")
+    private String notifyTemplateName;
+
+    @Schema(description = "状态(0-不启用 1-启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("状态(0-不启用 1-启用)")
+    private Integer status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "isc_notify_config主键id", example = "15466")
+    @ExcelProperty("isc_notify_config主键id")
+    private Long configId;
+
+}

+ 33 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigDetailSaveReqVO.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 通知规则角色和模板设置关联新增/修改 Request VO")
+@Data
+public class NotifyConfigDetailSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1784")
+    private Long id;
+
+    @Schema(description = "角色", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "角色不能为空")
+    private Long roleId;
+
+    @Schema(description = "是否通知当事人(0-否 1-是)", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "是否通知当事人(0-否 1-是)不能为空")
+    private Integer isClient;
+
+    @Schema(description = "通知模板id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2559")
+    @NotNull(message = "通知模板id不能为空")
+    private Long notifyTemplateId;
+
+    @Schema(description = "状态(0-不启用 1-启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "状态(0-不启用 1-启用)不能为空")
+    private Integer status;
+
+    @Schema(description = "isc_notify_config主键id", example = "15466")
+    private Long configId;
+
+}

+ 42 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigPageReqVO.java

@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+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
+public class NotifyConfigPageReqVO extends PageParam {
+
+    @Schema(description = "sopid")
+    private Long sopId;
+
+    @Schema(description = "配置名称", example = "王五")
+    private String name;
+
+    @Schema(description = "通知规则种类(0-计划通知 1-作业通知  2-步骤通知 3-操作通知)", example = "1")
+    private Integer type;
+
+    @Schema(description = "通知时间分类(0-提前 1-立即 2-延迟)", example = "1")
+    private Integer notifyTimeType;
+
+    @Schema(description = "分钟(立即提醒填写0)")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private Integer[] notifyTime;
+
+    @Schema(description = "通知区域", example = "843")
+    private Long workstationId;
+
+    @Schema(description = "状态(0-不启用 1-启用)", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 58 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigRespVO.java

@@ -0,0 +1,58 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo;
+
+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;
+import java.util.List;
+
+@Schema(description = "管理后台 - 通知规则 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class NotifyConfigRespVO {
+
+    @Schema(description = "配置id主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24568")
+    @ExcelProperty("配置id主键")
+    private Long id;
+
+    @Schema(description = "sopid")
+    private Long sopId;
+
+    @Schema(description = "配置名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @ExcelProperty("配置名称")
+    private String name;
+
+    @Schema(description = "通知规则种类(0-计划通知 1-作业通知  2-步骤通知 3-操作通知)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("通知规则种类(0-计划通知 1-作业通知  2-步骤通知 3-操作通知)")
+    private Integer type;
+
+    @Schema(description = "通知时间分类(0-提前 1-立即 2-延迟)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("通知时间分类(0-提前 1-立即 2-延迟)")
+    private Integer notifyTimeType;
+
+    @Schema(description = "分钟(立即提醒填写0)", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("分钟(立即提醒填写0)")
+    private Integer notifyTime;
+
+    @Schema(description = "通知区域", requiredMode = Schema.RequiredMode.REQUIRED, example = "843")
+    @ExcelProperty("通知区域")
+    private Long workstationId;
+
+    @Schema(description = "通知区域", requiredMode = Schema.RequiredMode.REQUIRED, example = "843")
+    @ExcelProperty("通知区域")
+    private String workstationName;
+
+    @Schema(description = "状态(0-不启用 1-启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("状态(0-不启用 1-启用)")
+    private Integer status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "角色和模板数据", requiredMode = Schema.RequiredMode.REQUIRED)
+    private List<NotifyConfigDetailRespVO> notifyConfigDetailRespVOList;
+
+}

+ 43 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/notifyconfig/vo/NotifyConfigSaveReqVO.java

@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 通知规则新增/修改 Request VO")
+@Data
+public class NotifyConfigSaveReqVO {
+
+    @Schema(description = "配置id主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24568")
+    private Long id;
+
+    @Schema(description = "sopid")
+    @NotNull(message = "SOPID不能为空")
+    private Long sopId;
+
+    @Schema(description = "配置名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @NotEmpty(message = "配置名称不能为空")
+    private String name;
+
+    @Schema(description = "通知规则种类(0-计划通知 1-作业通知  2-步骤通知 3-操作通知)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "通知规则种类(0-计划通知 1-作业通知  2-步骤通知 3-操作通知)不能为空")
+    private Integer type;
+
+    @Schema(description = "通知时间分类(0-提前 1-立即 2-延迟)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "通知时间分类(0-提前 1-立即 2-延迟)不能为空")
+    private Integer notifyTimeType;
+
+    @Schema(description = "分钟(立即提醒填写0)", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "分钟(立即提醒填写0)不能为空")
+    private Integer notifyTime;
+
+    @Schema(description = "通知区域", requiredMode = Schema.RequiredMode.REQUIRED, example = "843")
+    @NotNull(message = "通知区域不能为空")
+    private Long workstationId;
+
+    @Schema(description = "状态(0-不启用 1-启用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "状态(0-不启用 1-启用)不能为空")
+    private Integer status;
+
+}

+ 59 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/notifyconfig/NotifyConfigDO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 通知规则 DO
+ *
+ * @author 博士安全
+ */
+@TableName("isc_notify_config")
+@KeySequence("isc_notify_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class NotifyConfigDO extends BaseDO {
+
+    /**
+     * 配置id主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * sopId
+     */
+    private Long sopId;
+    /**
+     * 配置名称
+     */
+    private String name;
+    /**
+     * 通知规则种类(0-计划通知 1-作业通知  2-步骤通知 3-操作通知)
+     */
+    private Integer type;
+    /**
+     * 通知时间分类(0-提前 1-立即 2-延迟)
+     */
+    private Integer notifyTimeType;
+    /**
+     * 分钟(立即提醒填写0)
+     */
+    private Integer notifyTime;
+    /**
+     * 通知区域
+     */
+    private Long workstationId;
+    /**
+     * 状态(0-不启用 1-启用)
+     */
+    private Integer status;
+
+
+}

+ 51 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/notifyconfig/NotifyConfigDetailDO.java

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 通知规则角色和模板设置关联 DO
+ *
+ * @author 博士安全
+ */
+@TableName("isc_notify_config_detail")
+@KeySequence("isc_notify_config_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class NotifyConfigDetailDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 角色
+     */
+    private Long roleId;
+    /**
+     * 是否通知当事人(0-否 1-是)
+     */
+    private Integer isClient;
+    /**
+     * 通知模板id
+     */
+    private Long notifyTemplateId;
+    /**
+     * 状态(0-不启用 1-启用)
+     */
+    private Integer status;
+    /**
+     * isc_notify_config主键id
+     */
+    private Long configId;
+
+
+}

+ 49 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/notifyconfig/NotifyConfigDetailMapper.java

@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.notifyconfig;
+
+
+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.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailRespVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig.NotifyConfigDetailDO;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 通知规则角色和模板设置关联 Mapper
+ *
+ * @author 博士安全
+ */
+@Mapper
+public interface NotifyConfigDetailMapper extends BaseMapperX<NotifyConfigDetailDO> {
+
+    default PageResult<NotifyConfigDetailDO> selectPage(NotifyConfigDetailPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<NotifyConfigDetailDO>()
+                .eqIfPresent(NotifyConfigDetailDO::getRoleId, reqVO.getRoleId())
+                .eqIfPresent(NotifyConfigDetailDO::getIsClient, reqVO.getIsClient())
+                .eqIfPresent(NotifyConfigDetailDO::getNotifyTemplateId, reqVO.getNotifyTemplateId())
+                .eqIfPresent(NotifyConfigDetailDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(NotifyConfigDetailDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(NotifyConfigDetailDO::getConfigId, reqVO.getConfigId())
+                .orderByDesc(NotifyConfigDetailDO::getId));
+    }
+
+
+    @Delete({
+            "<script>",
+            "DELETE FROM isc_notify_config_detail",
+            "WHERE id IN",
+            "<foreach item='id' collection='ids' open='(' separator=',' close=')'>",
+            "#{id}",
+            "</foreach>",
+            "</script>"
+    })
+    Boolean physicalDeleteByIds(@Param(value = "ids") List<Long> ids);
+
+    List<NotifyConfigDetailRespVO> selectNotifyConfigDetailByConfigId(@Param(value = "configId") Long configId);
+
+}

+ 49 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/notifyconfig/NotifyConfigMapper.java

@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.notifyconfig;
+
+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.iscs.controller.admin.notifyconfig.vo.NotifyConfigPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigRespVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig.NotifyConfigDO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 通知规则 Mapper
+ *
+ * @author 博士安全
+ */
+@Mapper
+public interface NotifyConfigMapper extends BaseMapperX<NotifyConfigDO> {
+
+    default PageResult<NotifyConfigDO> selectPage(NotifyConfigPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<NotifyConfigDO>()
+                .likeIfPresent(NotifyConfigDO::getName, reqVO.getName())
+                .eqIfPresent(NotifyConfigDO::getType, reqVO.getType())
+                .eqIfPresent(NotifyConfigDO::getNotifyTimeType, reqVO.getNotifyTimeType())
+                .betweenIfPresent(NotifyConfigDO::getNotifyTime, reqVO.getNotifyTime())
+                .eqIfPresent(NotifyConfigDO::getWorkstationId, reqVO.getWorkstationId())
+                .eqIfPresent(NotifyConfigDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(NotifyConfigDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(NotifyConfigDO::getId));
+    }
+
+    Page<NotifyConfigRespVO> getNotifyConfigPage(Page<NotifyConfigDO> page, @Param(value = "vo") NotifyConfigPageReqVO vo);
+
+    @Delete({
+            "<script>",
+            "DELETE FROM isc_notify_config",
+            "WHERE id IN",
+            "<foreach item='id' collection='ids' open='(' separator=',' close=')'>",
+            "#{id}",
+            "</foreach>",
+            "</script>"
+    })
+    Boolean physicalDeleteByIds(@Param(value = "ids") List<Long> ids);
+
+}

+ 67 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/notifyconfig/NotifyConfigDetailService.java

@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.iscs.service.notifyconfig;
+
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig.NotifyConfigDetailDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * 通知规则角色和模板设置关联 Service 接口
+ *
+ * @author 博士安全
+ */
+public interface NotifyConfigDetailService extends IService<NotifyConfigDetailDO> {
+
+    /**
+     * 创建通知规则角色和模板设置关联
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createNotifyConfigDetail(@Valid NotifyConfigDetailSaveReqVO createReqVO);
+
+    /**
+     * 更新通知规则角色和模板设置关联
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateNotifyConfigDetail(@Valid NotifyConfigDetailSaveReqVO updateReqVO);
+
+    /**
+    * 批量删除通知规则角色和模板设置关联
+    *
+    * @param ids 编号
+    */
+    void deleteNotifyConfigDetailListByIds(List<Long> ids);
+
+    /**
+     * 获得通知规则角色和模板设置关联
+     *
+     * @param id 编号
+     * @return 通知规则角色和模板设置关联
+     */
+    NotifyConfigDetailDO getNotifyConfigDetail(Long id);
+
+    /**
+     * 获得通知规则角色和模板设置关联ByConfigId
+     *
+     * @param configId 编号
+     * @return 通知规则角色和模板设置关联
+     */
+    List<NotifyConfigDetailRespVO> selectNotifyConfigDetailByConfigId(Long configId);
+
+    /**
+     * 获得通知规则角色和模板设置关联分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 通知规则角色和模板设置关联分页
+     */
+    PageResult<NotifyConfigDetailDO> getNotifyConfigDetailPage(NotifyConfigDetailPageReqVO pageReqVO);
+
+}

+ 69 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/notifyconfig/NotifyConfigDetailServiceImpl.java

@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.iscs.service.notifyconfig;
+
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig.NotifyConfigDetailDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.notifyconfig.NotifyConfigDetailMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 通知规则角色和模板设置关联 Service 实现类
+ *
+ * @author 博士安全
+ */
+@Service
+@Validated
+public class NotifyConfigDetailServiceImpl extends ServiceImpl<NotifyConfigDetailMapper, NotifyConfigDetailDO> implements NotifyConfigDetailService {
+
+    @Resource
+    private NotifyConfigDetailMapper notifyConfigDetailMapper;
+
+    @Override
+    public Long createNotifyConfigDetail(NotifyConfigDetailSaveReqVO createReqVO) {
+        // 插入
+        NotifyConfigDetailDO notifyConfigDetail = BeanUtils.toBean(createReqVO, NotifyConfigDetailDO.class);
+        notifyConfigDetailMapper.insert(notifyConfigDetail);
+
+        // 返回
+        return notifyConfigDetail.getId();
+    }
+
+    @Override
+    public void updateNotifyConfigDetail(NotifyConfigDetailSaveReqVO updateReqVO) {
+        // 更新
+        NotifyConfigDetailDO updateObj = BeanUtils.toBean(updateReqVO, NotifyConfigDetailDO.class);
+        notifyConfigDetailMapper.updateById(updateObj);
+    }
+
+    @Override
+        public void deleteNotifyConfigDetailListByIds(List<Long> ids) {
+        // 删除
+        notifyConfigDetailMapper.physicalDeleteByIds(ids);
+        }
+
+
+    @Override
+    public NotifyConfigDetailDO getNotifyConfigDetail(Long id) {
+        return notifyConfigDetailMapper.selectById(id);
+    }
+
+    @Override
+    public List<NotifyConfigDetailRespVO> selectNotifyConfigDetailByConfigId(Long configId) {
+        return notifyConfigDetailMapper.selectNotifyConfigDetailByConfigId(configId);
+    }
+
+    @Override
+    public PageResult<NotifyConfigDetailDO> getNotifyConfigDetailPage(NotifyConfigDetailPageReqVO pageReqVO) {
+        return notifyConfigDetailMapper.selectPage(pageReqVO);
+    }
+
+}

+ 58 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/notifyconfig/NotifyConfigService.java

@@ -0,0 +1,58 @@
+package cn.iocoder.yudao.module.iscs.service.notifyconfig;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig.NotifyConfigDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * 通知规则 Service 接口
+ *
+ * @author 博士安全
+ */
+public interface NotifyConfigService extends IService<NotifyConfigDO> {
+
+    /**
+     * 创建通知规则
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createNotifyConfig(@Valid NotifyConfigSaveReqVO createReqVO);
+
+    /**
+     * 更新通知规则
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateNotifyConfig(@Valid NotifyConfigSaveReqVO updateReqVO);
+
+    /**
+    * 批量删除通知规则
+    *
+    * @param ids 编号
+    */
+    void deleteNotifyConfigListByIds(List<Long> ids);
+
+    /**
+     * 获得通知规则
+     *
+     * @param id 编号
+     * @return 通知规则
+     */
+    NotifyConfigDO getNotifyConfig(Long id);
+
+    /**
+     * 获得通知规则分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 通知规则分页
+     */
+    PageResult<NotifyConfigRespVO> getNotifyConfigPage(NotifyConfigPageReqVO pageReqVO);
+
+}

+ 76 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/notifyconfig/NotifyConfigServiceImpl.java

@@ -0,0 +1,76 @@
+package cn.iocoder.yudao.module.iscs.service.notifyconfig;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.notifyconfig.NotifyConfigDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.notifyconfig.NotifyConfigMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 通知规则 Service 实现类
+ *
+ * @author 博士安全
+ */
+@Service
+@Validated
+public class NotifyConfigServiceImpl extends ServiceImpl<NotifyConfigMapper, NotifyConfigDO> implements NotifyConfigService {
+
+    @Resource
+    private NotifyConfigMapper notifyConfigMapper;
+    @Resource
+    private NotifyConfigDetailService notifyConfigDetailService;
+
+    @Override
+    public Long createNotifyConfig(NotifyConfigSaveReqVO createReqVO) {
+        // 插入
+        NotifyConfigDO notifyConfig = BeanUtils.toBean(createReqVO, NotifyConfigDO.class);
+        notifyConfigMapper.insert(notifyConfig);
+
+        // 返回
+        return notifyConfig.getId();
+    }
+
+    @Override
+    public void updateNotifyConfig(NotifyConfigSaveReqVO updateReqVO) {
+        // 更新
+        NotifyConfigDO updateObj = BeanUtils.toBean(updateReqVO, NotifyConfigDO.class);
+        notifyConfigMapper.updateById(updateObj);
+    }
+
+    @Override
+        public void deleteNotifyConfigListByIds(List<Long> ids) {
+        // 删除
+        notifyConfigMapper.physicalDeleteByIds(ids);
+        }
+
+
+    @Override
+    public NotifyConfigDO getNotifyConfig(Long id) {
+        return notifyConfigMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<NotifyConfigRespVO> getNotifyConfigPage(NotifyConfigPageReqVO pageReqVO) {
+        Page<NotifyConfigDO> page = new Page<NotifyConfigDO>().setCurrent(pageReqVO.getPageNo()).setSize(pageReqVO.getPageSize());
+        Page<NotifyConfigRespVO> pageResult = notifyConfigMapper.getNotifyConfigPage(page, pageReqVO);
+        PageResult<NotifyConfigRespVO> respVOPageResult = new PageResult<>();
+        respVOPageResult.setList(pageResult.getRecords());
+        respVOPageResult.setTotal(pageResult.getTotal());
+        for (NotifyConfigRespVO record : pageResult.getRecords()) {
+            List<NotifyConfigDetailRespVO> notifyConfigDetailRespVOS = notifyConfigDetailService.selectNotifyConfigDetailByConfigId(record.getId());
+            record.setNotifyConfigDetailRespVOList(notifyConfigDetailRespVOS);
+        }
+        return respVOPageResult;
+    }
+
+}

+ 19 - 0
yudao-module-iscs/src/main/resources/mapper/NotifyConfigDetailMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.notifyconfig.NotifyConfigDetailMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+    <select id="selectNotifyConfigDetailByConfigId"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigDetailRespVO">
+        select d.*, t.name as notify_template_name
+        from isc_notify_config_detail d
+            left join system_notify_template t on t.id = d.notify_template_id
+        where d.config_id = #{configId}
+    </select>
+</mapper>

+ 22 - 0
yudao-module-iscs/src/main/resources/mapper/NotifyConfigMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.notifyconfig.NotifyConfigMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+    <select id="getNotifyConfigPage"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.notifyconfig.vo.NotifyConfigRespVO">
+        SELECT
+            n.*,
+            w.workstation_name
+        FROM
+            isc_notify_config n
+                LEFT JOIN isc_workstation w ON w.id = n.workstation_id
+
+    </select>
+</mapper>