From 3619d8623dcb5e1bc7202492f43dc0a83efb3b72 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 12 Mar 2025 13:35:03 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/AiLabelController.java | 106 ++++++++++++++ .../controller/system/SysPostController.java | 34 +++++ .../org/dromara/system/domain/AiLabel.java | 51 +++++++ .../dromara/system/domain/AiLablePost.java | 37 +++++ .../dromara/system/domain/bo/AiLabelBo.java | 71 ++++++++++ .../system/domain/bo/AiLablePostBindBo.java | 23 +++ .../system/domain/bo/AiLablePostBo.java | 46 ++++++ .../dromara/system/domain/vo/AiLabelVo.java | 58 ++++++++ .../system/domain/vo/AiLablePostVo.java | 42 ++++++ .../dromara/system/mapper/AiLabelMapper.java | 15 ++ .../system/mapper/AiLablePostMapper.java | 20 +++ .../system/service/IAiLabelService.java | 69 +++++++++ .../system/service/IAiLablePostService.java | 69 +++++++++ .../system/service/ISysPostService.java | 3 + .../service/impl/AiLabelServiceImpl.java | 132 ++++++++++++++++++ .../service/impl/AiLablePostServiceImpl.java | 131 +++++++++++++++++ .../service/impl/SysPostServiceImpl.java | 11 +- .../resources/mapper/system/AiLabelMapper.xml | 7 + .../mapper/system/AiLablePostMapper.xml | 10 ++ 19 files changed, 934 insertions(+), 1 deletion(-) create mode 100644 dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/domain/AiLabel.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/domain/AiLablePost.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLabelBo.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLablePostBindBo.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLablePostBo.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLabelVo.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLablePostVo.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/mapper/AiLabelMapper.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/mapper/AiLablePostMapper.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/service/IAiLablePostService.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java create mode 100644 dk-modules/system/src/main/resources/mapper/system/AiLabelMapper.xml create mode 100644 dk-modules/system/src/main/resources/mapper/system/AiLablePostMapper.xml diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java new file mode 100644 index 0000000..3c85d96 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java @@ -0,0 +1,106 @@ +package org.dromara.system.controller.system; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.system.domain.vo.AiLabelVo; +import org.dromara.system.domain.bo.AiLabelBo; +import org.dromara.system.service.IAiLabelService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * ai 识别类型 + * 前端访问路由地址为:/system/label + * + * @author LionLi + * @date 2025-03-11 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/label") +public class AiLabelController extends BaseController { + + private final IAiLabelService aiLabelService; + + /** + * 查询ai 识别类型列表 + */ + @SaCheckPermission("system:label:list") + @GetMapping("/list") + public TableDataInfo list(AiLabelBo bo, PageQuery pageQuery) { + return aiLabelService.queryPageList(bo, pageQuery); + } + + /** + * 导出ai 识别类型列表 + */ + @SaCheckPermission("system:label:export") + @Log(title = "ai 识别类型", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(AiLabelBo bo, HttpServletResponse response) { + List list = aiLabelService.queryList(bo); + ExcelUtil.exportExcel(list, "ai 识别类型", AiLabelVo.class, response); + } + + /** + * 获取ai 识别类型详细信息 + * + * @param lableId 主键 + */ + @SaCheckPermission("system:label:query") + @GetMapping("/{lableId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long lableId) { + return R.ok(aiLabelService.queryById(lableId)); + } + + /** + * 新增ai 识别类型 + */ + @SaCheckPermission("system:label:add") + @Log(title = "ai 识别类型", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody AiLabelBo bo) { + return toAjax(aiLabelService.insertByBo(bo)); + } + + /** + * 修改ai 识别类型 + */ + @SaCheckPermission("system:label:edit") + @Log(title = "ai 识别类型", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody AiLabelBo bo) { + return toAjax(aiLabelService.updateByBo(bo)); + } + + /** + * 删除ai 识别类型 + * + * @param lableIds 主键串 + */ + @SaCheckPermission("system:label:remove") + @Log(title = "ai 识别类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{lableIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] lableIds) { + return toAjax(aiLabelService.deleteWithValidByIds(List.of(lableIds), true)); + } +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysPostController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysPostController.java index 1871183..aba0a0b 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysPostController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysPostController.java @@ -2,6 +2,7 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.ObjectUtil; +import org.checkerframework.checker.units.qual.A; import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.domain.R; import org.dromara.common.excel.utils.ExcelUtil; @@ -10,8 +11,13 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.AiLablePost; +import org.dromara.system.domain.bo.AiLablePostBindBo; +import org.dromara.system.domain.bo.AiLablePostBo; import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.vo.AiLablePostVo; import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.service.IAiLablePostService; import org.dromara.system.service.ISysPostService; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -33,6 +39,7 @@ import java.util.List; public class SysPostController extends BaseController { private final ISysPostService postService; + private final IAiLablePostService aiLablePostService; /** * 获取岗位列表 @@ -65,6 +72,32 @@ public class SysPostController extends BaseController { return R.ok(postService.selectPostById(postId)); } + /** + * 绑定标签 + */ + @SaCheckPermission("system:post:add") + @Log(title = "岗位管理-绑定标签", businessType = BusinessType.INSERT) + @PostMapping("/bindLable") + public void add(@Validated @RequestBody AiLablePostBindBo aiLablePostBindBo) { + for (Long labelId : aiLablePostBindBo.getLableIdList()) { + AiLablePostBo ailablePost = new AiLablePostBo(); + ailablePost.setPostId(aiLablePostBindBo.getPostId()); + ailablePost.setLableId(labelId); + aiLablePostService.insertByBo(ailablePost); + } + } + + /** + * 标签列表 + */ + @SaCheckPermission("system:post:list") + @GetMapping("/lableList") + public TableDataInfo lableList(AiLablePostBo post, PageQuery pageQuery) { + return postService.lableList(post, pageQuery); + } + + + /** * 新增岗位 */ @@ -80,6 +113,7 @@ public class SysPostController extends BaseController { return toAjax(postService.insertPost(post)); } + /** * 修改岗位 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/AiLabel.java b/dk-modules/system/src/main/java/org/dromara/system/domain/AiLabel.java new file mode 100644 index 0000000..5279510 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/AiLabel.java @@ -0,0 +1,51 @@ +package org.dromara.system.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * ai 识别类型对象 ai_label + * + * @author LionLi + * @date 2025-03-11 + */ +@Data + +@TableName("ai_label") +public class AiLabel { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "lable_id") + private Long lableId; + + /** + * 标签名-英 + */ + private String labelEn; + + /** + * 标签名-中 + */ + private String labelCn; + + /** + * 算法类型 + */ + private String aiType; + + /** + * 算法名称 + */ + private String aiName; + + +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/AiLablePost.java b/dk-modules/system/src/main/java/org/dromara/system/domain/AiLablePost.java new file mode 100644 index 0000000..d3f8422 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/AiLablePost.java @@ -0,0 +1,37 @@ +package org.dromara.system.domain; + + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + + +import java.io.Serial; + +/** + * 职能-标签关系对象 ai_lable_post + * + * @author LionLi + * @date 2025-03-11 + */ +@Data +@TableName("ai_lable_post") +public class AiLablePost { + + @Serial + private static final long serialVersionUID = 1L; + + @TableId(value = "id") + private Long id; + /** + * 标签id + */ + private Long lableId; + + /** + * 岗位id + */ + + private Long postId; + + +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLabelBo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLabelBo.java new file mode 100644 index 0000000..aada006 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLabelBo.java @@ -0,0 +1,71 @@ +package org.dromara.system.domain.bo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import org.dromara.system.domain.AiLabel; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.util.HashMap; +import java.util.Map; + +/** + * ai 识别类型业务对象 ai_label + * + * @author LionLi + * @date 2025-03-11 + */ +@Data +@AutoMapper(target = AiLabel.class, reverseConvertGenerate = false) +public class AiLabelBo { + + /** + * 搜索值 + */ + @JsonIgnore + @TableField(exist = false) + private String searchValue; + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long lableId; + + /** + * 标签名-英 + */ + @NotBlank(message = "标签名-英不能为空", groups = { AddGroup.class, EditGroup.class }) + private String labelEn; + + /** + * 标签名-中 + */ + @NotBlank(message = "标签名-中不能为空", groups = { AddGroup.class, EditGroup.class }) + private String labelCn; + + /** + * 算法类型 + */ + + private String aiType; + + /** + * 算法名称 + */ + + private String aiName; + + + /** + * 请求参数 + */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + @TableField(exist = false) + private Map params = new HashMap<>(); +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLablePostBindBo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLablePostBindBo.java new file mode 100644 index 0000000..c3ba11e --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLablePostBindBo.java @@ -0,0 +1,23 @@ +package org.dromara.system.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * @auther yq + * @data 2025/3/11 + */ + +@Data +public class AiLablePostBindBo { + + @NotNull(message = "postId不能为空") + private Long postId; + + + @NotNull(message = "标签不能为空") + private List lableIdList; + +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLablePostBo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLablePostBo.java new file mode 100644 index 0000000..c53f2f5 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/AiLablePostBo.java @@ -0,0 +1,46 @@ +package org.dromara.system.domain.bo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonInclude; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.system.domain.AiLablePost; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.util.HashMap; +import java.util.Map; + +/** + * 职能-标签关系业务对象 ai_lable_post + * + * @author LionLi + * @date 2025-03-11 + */ +@Data +@AutoMapper(target = AiLablePost.class, reverseConvertGenerate = false) +public class AiLablePostBo { + + /** + * 标签id + */ + @NotNull(message = "标签id不能为空", groups = { AddGroup.class , EditGroup.class }) + private Long lableId; + + /** + * 岗位id + */ + @NotNull(message = "岗位id不能为空" ) + private Long postId; + + /** + * 请求参数 + */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + @TableField(exist = false) + private Map params = new HashMap<>(); + +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLabelVo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLabelVo.java new file mode 100644 index 0000000..2f079ca --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLabelVo.java @@ -0,0 +1,58 @@ +package org.dromara.system.domain.vo; + +import org.dromara.system.domain.AiLabel; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * ai 识别类型视图对象 ai_label + * + * @author LionLi + * @date 2025-03-11 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = AiLabel.class) +public class AiLabelVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + // @ExcelProperty(value = "id") + private Long lableId; + + /** + * 标签名-英 + */ + @ExcelProperty(value = "标签名-英") + private String labelEn; + + /** + * 标签名-中 + */ + @ExcelProperty(value = "标签名-中") + private String labelCn; + + /** + * 算法类型 + */ + // @ExcelProperty(value = "算法类型") + private String aiType; + + /** + * 算法名称 + */ + // @ExcelProperty(value = "算法名称") + private String aiName; + + +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLablePostVo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLablePostVo.java new file mode 100644 index 0000000..5a5fdb5 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLablePostVo.java @@ -0,0 +1,42 @@ +package org.dromara.system.domain.vo; + +import org.dromara.system.domain.AiLablePost; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 职能-标签关系视图对象 ai_lable_post + * + * @author LionLi + * @date 2025-03-11 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = AiLablePost.class) +public class AiLablePostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + /** + * 标签id + */ + private Long lableId; + + private String labelCn; + + /** + * 岗位id + */ + + private Long postId; + + private String postName; + +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/AiLabelMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/AiLabelMapper.java new file mode 100644 index 0000000..2d69bb0 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/AiLabelMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.AiLabel; +import org.dromara.system.domain.vo.AiLabelVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * ai 识别类型Mapper接口 + * + * @author LionLi + * @date 2025-03-11 + */ +public interface AiLabelMapper extends BaseMapperPlus { + +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/AiLablePostMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/AiLablePostMapper.java new file mode 100644 index 0000000..b2ba80c --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/AiLablePostMapper.java @@ -0,0 +1,20 @@ +package org.dromara.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.system.domain.AiLablePost; +import org.dromara.system.domain.bo.AiLablePostBo; +import org.dromara.system.domain.vo.AiLablePostVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 职能-标签关系Mapper接口 + * + * @author LionLi + * @date 2025-03-11 + */ +public interface AiLablePostMapper extends BaseMapperPlus { + Page selectAiLablePostPage(@Param("page") Page page, @Param("ew") QueryWrapper wrapper); +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java new file mode 100644 index 0000000..c81a07a --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java @@ -0,0 +1,69 @@ +package org.dromara.system.service; + +import org.dromara.system.domain.AiLabel; +import org.dromara.system.domain.vo.AiLabelVo; +import org.dromara.system.domain.bo.AiLabelBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * ai 识别类型Service接口 + * + * @author LionLi + * @date 2025-03-11 + */ +public interface IAiLabelService { + + /** + * 查询ai 识别类型 + * + * @param lableId 主键 + * @return ai 识别类型 + */ + AiLabelVo queryById(Long lableId); + + /** + * 分页查询ai 识别类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return ai 识别类型分页列表 + */ + TableDataInfo queryPageList(AiLabelBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的ai 识别类型列表 + * + * @param bo 查询条件 + * @return ai 识别类型列表 + */ + List queryList(AiLabelBo bo); + + /** + * 新增ai 识别类型 + * + * @param bo ai 识别类型 + * @return 是否新增成功 + */ + Boolean insertByBo(AiLabelBo bo); + + /** + * 修改ai 识别类型 + * + * @param bo ai 识别类型 + * @return 是否修改成功 + */ + Boolean updateByBo(AiLabelBo bo); + + /** + * 校验并批量删除ai 识别类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLablePostService.java b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLablePostService.java new file mode 100644 index 0000000..5da8933 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLablePostService.java @@ -0,0 +1,69 @@ +package org.dromara.system.service; + +import org.dromara.system.domain.AiLablePost; +import org.dromara.system.domain.vo.AiLablePostVo; +import org.dromara.system.domain.bo.AiLablePostBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 职能-标签关系Service接口 + * + * @author LionLi + * @date 2025-03-11 + */ +public interface IAiLablePostService { + + /** + * 查询职能-标签关系 + * + * @param lableId 主键 + * @return 职能-标签关系 + */ + AiLablePostVo queryById(Long lableId); + + /** + * 分页查询职能-标签关系列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 职能-标签关系分页列表 + */ + TableDataInfo queryPageList(AiLablePostBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的职能-标签关系列表 + * + * @param bo 查询条件 + * @return 职能-标签关系列表 + */ + List queryList(AiLablePostBo bo); + + /** + * 新增职能-标签关系 + * + * @param bo 职能-标签关系 + * @return 是否新增成功 + */ + Boolean insertByBo(AiLablePostBo bo); + + /** + * 修改职能-标签关系 + * + * @param bo 职能-标签关系 + * @return 是否修改成功 + */ + Boolean updateByBo(AiLablePostBo bo); + + /** + * 校验并批量删除职能-标签关系信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java index bc3d3de..79cdc21 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java @@ -2,7 +2,9 @@ package org.dromara.system.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.AiLablePostBo; import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.vo.AiLablePostVo; import org.dromara.system.domain.vo.SysPostVo; import java.util.List; @@ -17,6 +19,7 @@ public interface ISysPostService { TableDataInfo selectPagePostList(SysPostBo post, PageQuery pageQuery); + TableDataInfo lableList(AiLablePostBo bo, PageQuery pageQuery); /** * 查询岗位信息集合 * diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java new file mode 100644 index 0000000..fe0dad6 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java @@ -0,0 +1,132 @@ +package org.dromara.system.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.system.domain.bo.AiLabelBo; +import org.dromara.system.domain.vo.AiLabelVo; +import org.dromara.system.domain.AiLabel; +import org.dromara.system.mapper.AiLabelMapper; +import org.dromara.system.service.IAiLabelService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * ai 识别类型Service业务层处理 + * + * @author LionLi + * @date 2025-03-11 + */ +@RequiredArgsConstructor +@Service +public class AiLabelServiceImpl implements IAiLabelService { + + private final AiLabelMapper baseMapper; + + /** + * 查询ai 识别类型 + * + * @param lableId 主键 + * @return ai 识别类型 + */ + @Override + public AiLabelVo queryById(Long lableId){ + return baseMapper.selectVoById(lableId); + } + + /** + * 分页查询ai 识别类型列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return ai 识别类型分页列表 + */ + @Override + public TableDataInfo queryPageList(AiLabelBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的ai 识别类型列表 + * + * @param bo 查询条件 + * @return ai 识别类型列表 + */ + @Override + public List queryList(AiLabelBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(AiLabelBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getLabelEn()), AiLabel::getLabelEn, bo.getLabelEn()); + lqw.eq(StringUtils.isNotBlank(bo.getLabelCn()), AiLabel::getLabelCn, bo.getLabelCn()); + lqw.eq(StringUtils.isNotBlank(bo.getAiType()), AiLabel::getAiType, bo.getAiType()); + lqw.like(StringUtils.isNotBlank(bo.getAiName()), AiLabel::getAiName, bo.getAiName()); + return lqw; + } + + /** + * 新增ai 识别类型 + * + * @param bo ai 识别类型 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(AiLabelBo bo) { + AiLabel add = MapstructUtils.convert(bo, AiLabel.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setLableId(add.getLableId()); + } + return flag; + } + + /** + * 修改ai 识别类型 + * + * @param bo ai 识别类型 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(AiLabelBo bo) { + AiLabel update = MapstructUtils.convert(bo, AiLabel.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(AiLabel entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除ai 识别类型信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java new file mode 100644 index 0000000..b363e82 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java @@ -0,0 +1,131 @@ +package org.dromara.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.system.mapper.AiLabelMapper; +import org.springframework.stereotype.Service; +import org.dromara.system.domain.bo.AiLablePostBo; +import org.dromara.system.domain.vo.AiLablePostVo; +import org.dromara.system.domain.AiLablePost; +import org.dromara.system.mapper.AiLablePostMapper; +import org.dromara.system.service.IAiLablePostService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 职能-标签关系Service业务层处理 + * + * @author LionLi + * @date 2025-03-11 + */ +@RequiredArgsConstructor +@Service +public class AiLablePostServiceImpl implements IAiLablePostService { + + private final AiLablePostMapper baseMapper; + private final AiLabelMapper aiLabelMapper; + + /** + * 查询职能-标签关系 + * + * @param lableId 主键 + * @return 职能-标签关系 + */ + @Override + public AiLablePostVo queryById(Long lableId){ + return baseMapper.selectVoById(lableId); + } + + /** + * 分页查询职能-标签关系列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 职能-标签关系分页列表 + */ + @Override + public TableDataInfo queryPageList(AiLablePostBo bo, PageQuery pageQuery) { + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("a.post_id", bo.getPostId()); + Page result = baseMapper.selectAiLablePostPage(pageQuery.build(), queryWrapper); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的职能-标签关系列表 + * + * @param bo 查询条件 + * @return 职能-标签关系列表 + */ + @Override + public List queryList(AiLablePostBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(AiLablePostBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + return lqw; + } + + /** + * 新增职能-标签关系 + * + * @param bo 职能-标签关系 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(AiLablePostBo bo) { + AiLablePost add = MapstructUtils.convert(bo, AiLablePost.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setLableId(add.getLableId()); + } + return flag; + } + + /** + * 修改职能-标签关系 + * + * @param bo 职能-标签关系 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(AiLablePostBo bo) { + AiLablePost update = MapstructUtils.convert(bo, AiLablePost.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(AiLablePost entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除职能-标签关系信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index d3179c5..a44667c 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -14,11 +14,15 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.system.domain.AiLablePost; import org.dromara.system.domain.SysDept; import org.dromara.system.domain.SysPost; import org.dromara.system.domain.SysUserPost; +import org.dromara.system.domain.bo.AiLablePostBo; import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.vo.AiLablePostVo; import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.mapper.AiLablePostMapper; import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.mapper.SysPostMapper; import org.dromara.system.mapper.SysUserPostMapper; @@ -37,7 +41,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor @Service public class SysPostServiceImpl implements ISysPostService { - + private final AiLablePostServiceImpl aiLablePostService; private final SysPostMapper baseMapper; private final SysDeptMapper deptMapper; private final SysUserPostMapper userPostMapper; @@ -48,6 +52,11 @@ public class SysPostServiceImpl implements ISysPostService { return TableDataInfo.build(page); } + @Override + public TableDataInfo lableList(AiLablePostBo bo, PageQuery pageQuery) { + return aiLablePostService.queryPageList(bo,pageQuery); + } + /** * 查询岗位信息集合 * diff --git a/dk-modules/system/src/main/resources/mapper/system/AiLabelMapper.xml b/dk-modules/system/src/main/resources/mapper/system/AiLabelMapper.xml new file mode 100644 index 0000000..fdc71dd --- /dev/null +++ b/dk-modules/system/src/main/resources/mapper/system/AiLabelMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/dk-modules/system/src/main/resources/mapper/system/AiLablePostMapper.xml b/dk-modules/system/src/main/resources/mapper/system/AiLablePostMapper.xml new file mode 100644 index 0000000..62ac66d --- /dev/null +++ b/dk-modules/system/src/main/resources/mapper/system/AiLablePostMapper.xml @@ -0,0 +1,10 @@ + + + + + + From 46e29785628992ec17c5212739afc7375a05d7eb Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 12 Mar 2025 14:44:12 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E8=B0=83=E7=94=A8=E6=8E=A5=E5=8F=A3=EF=BC=9A=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E7=BC=96=E7=A0=81=E4=B8=8E=E9=83=A8=E9=97=A8id?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=A0=87=E7=AD=BE=E9=9B=86=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/api/RemoteLablePostService.java | 25 +++++++++ .../api/domain/vo/RemoteAiLabelPostVo.java | 56 +++++++++++++++++++ .../system/domain/vo/AiLablePostVo.java | 2 + .../dubbo/RemoteLablePostServicelmpl.java | 39 +++++++++++++ .../dromara/system/mapper/SysPostMapper.java | 1 + .../system/service/IAiLablePostService.java | 2 + .../system/service/ISysPostService.java | 1 + .../service/impl/AiLablePostServiceImpl.java | 5 ++ .../service/impl/SysPostServiceImpl.java | 5 ++ .../resources/mapper/system/SysPostMapper.xml | 4 ++ pom.xml | 4 +- 11 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 dk-api/api-system/src/main/java/org/dromara/system/api/RemoteLablePostService.java create mode 100644 dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java create mode 100644 dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLablePostServicelmpl.java diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteLablePostService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteLablePostService.java new file mode 100644 index 0000000..0def653 --- /dev/null +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteLablePostService.java @@ -0,0 +1,25 @@ +package org.dromara.system.api; + +import org.dromara.system.api.domain.bo.RemoteLogininforBo; +import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; +import org.dromara.system.api.domain.vo.RemoteDeptVo; + +import java.util.List; + +/** + * @auther yq + * @data 2025/3/12 + */ +public interface RemoteLablePostService { + + + /** + * 根据岗位编码和部门id进行查询绑定的标签集合 + * @param postCode 岗位编码 + * @param deptId 部门id + * @return 标签集合 + * + * */ + List selectLableByList(String postCode, Long deptId); + +} diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java b/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java new file mode 100644 index 0000000..9296275 --- /dev/null +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java @@ -0,0 +1,56 @@ +package org.dromara.system.api.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.system.domain.AiLabel; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * ai 识别类型视图对象 ai_label + * + * @author LionLi + * @date 2025-03-11 + */ +@Data + +public class RemoteAiLabelPostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + // @ExcelProperty(value = "id") + private Long lableId; + + /** + * 标签名-英 + */ + + private String labelEn; + + /** + * 标签名-中 + */ + + private String labelCn; + + /** + * 算法类型 + */ + private String aiType; + + /** + * 算法名称 + */ + private String aiName; + + private Long postId; + private String postName; +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLablePostVo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLablePostVo.java index 5a5fdb5..dda13be 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLablePostVo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLablePostVo.java @@ -31,6 +31,8 @@ public class AiLablePostVo implements Serializable { private String labelCn; + private String labelEn; + /** * 岗位id */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLablePostServicelmpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLablePostServicelmpl.java new file mode 100644 index 0000000..2811be5 --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLablePostServicelmpl.java @@ -0,0 +1,39 @@ +package org.dromara.system.dubbo; + +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.system.api.RemoteLablePostService; +import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; +import org.dromara.system.api.domain.vo.RemoteDictDataVo; +import org.dromara.system.domain.vo.AiLablePostVo; +import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.service.IAiLablePostService; +import org.dromara.system.service.ISysPostService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * @auther yq + * @data 2025/3/12 + */ +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteLablePostServicelmpl implements RemoteLablePostService { + + private final ISysPostService sysPostService; + private final IAiLablePostService aiLablePostService; + + @Override + public List selectLableByList(String postCode, Long deptId) { + SysPostVo sysPostVo = sysPostService.selectLableByList(postCode, deptId); + if(sysPostVo != null){ + List aiLablePostVos = aiLablePostService.queryListByLable(sysPostVo.getPostId()); + return MapstructUtils.convert(aiLablePostVos, RemoteAiLabelPostVo.class); + } + return new ArrayList<>(); + } +} diff --git a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java index f9bf134..ce010cc 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java +++ b/dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -33,4 +33,5 @@ public interface SysPostMapper extends BaseMapperPlus { */ List selectPostsByUserId(Long userId); + SysPostVo selectLableByList(@Param("postCode") String postCode, @Param("deptId") Long deptId); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLablePostService.java b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLablePostService.java index 5da8933..00ead53 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLablePostService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLablePostService.java @@ -66,4 +66,6 @@ public interface IAiLablePostService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List queryListByLable(Long postId); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java index 79cdc21..38c36e0 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java @@ -130,4 +130,5 @@ public interface ISysPostService { * @return 结果 */ List selectPostsByUserId(Long userId); + SysPostVo selectLableByList(String post_code, Long dept_id); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java index b363e82..d672325 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java @@ -128,4 +128,9 @@ public class AiLablePostServiceImpl implements IAiLablePostService { } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public List queryListByLable(Long postId) { + return List.of(); + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index a44667c..7bbf7f9 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -253,4 +253,9 @@ public class SysPostServiceImpl implements ISysPostService { public List selectPostsByUserId(Long userId) { return baseMapper.selectPostsByUserId(userId); } + + @Override + public SysPostVo selectLableByList(String postCode, Long deptId) { + return baseMapper.selectLableByList(postCode,deptId); + } } diff --git a/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml index 322403f..77615e6 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml @@ -25,5 +25,9 @@ left join sys_user u on u.user_id = up.user_id where u.user_id = #{userId} + diff --git a/pom.xml b/pom.xml index 23aa72a..63a9d40 100644 --- a/pom.xml +++ b/pom.xml @@ -86,12 +86,12 @@ dev - 114.235.183.147:8848 + 127.0.0.1:8848 DEFAULT_GROUP DEFAULT_GROUP nacos nacos - 114.235.183.147:4560 + 127.0.0.1:4560 From d7a1860093291b766bc050b444b35b77f610737e Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 12 Mar 2025 15:22:12 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E4=B8=8B=E6=8B=89=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/api/RemoteLablePostService.java | 4 ---- .../system/controller/system/AiLabelController.java | 10 ++++++++++ .../system/dubbo/RemoteLablePostServicelmpl.java | 1 - .../org/dromara/system/service/IAiLabelService.java | 4 ++++ .../system/service/impl/AiLabelServiceImpl.java | 6 ++++++ 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteLablePostService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteLablePostService.java index 0def653..ca80427 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteLablePostService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteLablePostService.java @@ -1,9 +1,5 @@ package org.dromara.system.api; - -import org.dromara.system.api.domain.bo.RemoteLogininforBo; import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; -import org.dromara.system.api.domain.vo.RemoteDeptVo; - import java.util.List; /** diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java index 3c85d96..92d7fa3 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java @@ -46,6 +46,16 @@ public class AiLabelController extends BaseController { return aiLabelService.queryPageList(bo, pageQuery); } + /** + * 下拉框集合 + */ + @SaCheckPermission("system:label:list") + @GetMapping("/list") + public List list() { + return aiLabelService.allList(); + } + + /** * 导出ai 识别类型列表 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLablePostServicelmpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLablePostServicelmpl.java index 2811be5..2fe5f83 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLablePostServicelmpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLablePostServicelmpl.java @@ -5,7 +5,6 @@ import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.system.api.RemoteLablePostService; import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; -import org.dromara.system.api.domain.vo.RemoteDictDataVo; import org.dromara.system.domain.vo.AiLablePostVo; import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.service.IAiLablePostService; diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java index c81a07a..8d3d4ff 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java @@ -25,6 +25,10 @@ public interface IAiLabelService { */ AiLabelVo queryById(Long lableId); + List allList(); + + + /** * 分页查询ai 识别类型列表 * diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java index fe0dad6..6a1ba3f 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java @@ -15,6 +15,7 @@ import org.dromara.system.domain.AiLabel; import org.dromara.system.mapper.AiLabelMapper; import org.dromara.system.service.IAiLabelService; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Collection; @@ -42,6 +43,11 @@ public class AiLabelServiceImpl implements IAiLabelService { return baseMapper.selectVoById(lableId); } + @Override + public List allList() { + return baseMapper.selectVoList().stream().sorted(Comparator.comparing(AiLabelVo::getLableId)).toList(); + } + /** * 分页查询ai 识别类型列表 * From c09b01ea7b173823fb704431454d421becefd1a8 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Wed, 12 Mar 2025 18:03:31 +0800 Subject: [PATCH 04/13] =?UTF-8?q?[feat]=201=E3=80=81=E8=81=94=E8=B0=83?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=202?= =?UTF-8?q?=E3=80=81=E5=BC=80=E5=8F=91=E6=B5=81=E7=A8=8B=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/domain/vo/RemoteAiLabelPostVo.java | 2 +- .../workflow/api/RemoteWorkflowService.java | 10 ++ .../workflow/api/domain/RemoteFlowNode.java | 12 ++ ...oller.java => BusinessHookController.java} | 32 ++++- .../business/domain/BusinessAlert.java | 29 +++- .../business/domain/bo/BusinessAlertBo.java | 20 ++- .../business/domain/bo/BusinessHookBo.java | 57 ++++++++ .../business/domain/vo/BusinessAlertVo.java | 16 ++- .../business/mapper/BusinessAlertMapper.java | 16 +-- .../impl/BusinessAlertServiceImpl.java | 42 +++++- .../mapper/business/BusinessAlertMapper.xml | 14 +- .../controller/FlwDefinitionController.java | 1 - .../controller/FlwDepartController.java | 46 +++++++ .../controller/FlwTaskController.java | 30 ++--- .../dromara/workflow/domain/FlowDepart.java | 48 +++++++ .../workflow/domain/bo/BackProcessBo.java | 11 ++ .../workflow/domain/bo/CompleteTaskBo.java | 15 +++ .../workflow/domain/bo/TaskOperationBo.java | 15 +++ .../dubbo/RemoteWorkflowServiceImpl.java | 5 + .../workflow/handler/ListTypeHandler.java | 51 +++++++ .../workflow/mapper/FlwDepartMapper.java | 7 + .../workflow/mapper/FlwTaskMapper.java | 3 + .../workflow/service/FlwDepartService.java | 9 ++ .../workflow/service/IFlwTaskService.java | 2 + .../workflow/service/WorkflowService.java | 3 + .../service/impl/FlwDepartServiceImpl.java | 37 +++++ .../service/impl/FlwTaskServiceImpl.java | 21 ++- .../service/impl/WorkflowServiceImpl.java | 6 + .../org/dromara/workflow/utils/JsonUtil.java | 126 ++++++++++++++++++ .../mapper/workflow/FlwDepartMapper.xml | 8 ++ pom.xml | 4 +- 31 files changed, 633 insertions(+), 65 deletions(-) create mode 100644 dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteFlowNode.java rename dk-modules/business/src/main/java/org/dromara/business/controller/{WebhookController.java => BusinessHookController.java} (50%) create mode 100644 dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessHookBo.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDepartController.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/domain/FlowDepart.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/handler/ListTypeHandler.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/utils/JsonUtil.java create mode 100644 dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java b/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java index 9296275..e466b18 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java @@ -4,7 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.system.domain.AiLabel; +//import org.dromara.system.domain.AiLabel; import java.io.Serial; import java.io.Serializable; diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java index 50a5924..955611b 100644 --- a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java @@ -5,6 +5,7 @@ import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; +import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -108,4 +109,13 @@ public interface RemoteWorkflowService { * @return 结果 */ boolean processInvalid(Long instanceId); + + /** + * 获取当前任务的所有办理人 + * + * @param taskId 任务id + * @return 结果 + */ + List currentTaskAllUser(Long taskId); + } diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteFlowNode.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteFlowNode.java new file mode 100644 index 0000000..eaed983 --- /dev/null +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/RemoteFlowNode.java @@ -0,0 +1,12 @@ +package org.dromara.workflow.api.domain; + +import lombok.Data; + +@Data +public class RemoteFlowNode { + + private Long definitionId; + + private String permission_flag; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/WebhookController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessHookController.java similarity index 50% rename from dk-modules/business/src/main/java/org/dromara/business/controller/WebhookController.java rename to dk-modules/business/src/main/java/org/dromara/business/controller/BusinessHookController.java index e54b6b4..658fe6a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/WebhookController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessHookController.java @@ -4,7 +4,7 @@ package org.dromara.business.controller; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.dromara.common.web.core.BaseController; +import org.dromara.business.domain.bo.BusinessHookBo; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -20,15 +20,15 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/index/hook") @Tag(name = "ZLMediaKit视频流事件回调") @Slf4j -public class WebhookController { +public class BusinessHookController { /** * 处理播放事件 */ @PostMapping("/on_play") - public String onPlay(@RequestBody String body) { - log.info("on_play event: {}", body); + public String onPlay(@RequestBody BusinessHookBo hookPlayBo) { + log.info("on_play event: {}", hookPlayBo); return "{\"code\": 0}"; } @@ -37,8 +37,28 @@ public class WebhookController { * 处理录制 MP4 文件事件 */ @PostMapping("/on_record_mp4") - public String onRecordMp4(@RequestBody String body) { - log.info("on_record_mp4 event: {}", body); + public String onRecordMp4(@RequestBody BusinessHookBo businessRecordBo) { + log.info("on_record_mp4 event: {}", businessRecordBo); + + return "{\"code\": 0}"; + } + + /** + * rtsp/rtmp/rtp 推流事件 + */ + @PostMapping("/on_publish") + public String onPublish(@RequestBody BusinessHookBo hookPublishBo) { + log.info("on_publish event: {}", hookPublishBo); + + return "{\"code\": 0}"; + } + + /** + * rtsp/rtmp 流注册或注销时触发此事件 + */ + @PostMapping("/on_stream_changed") + public String onStreamChanged(@RequestBody String body) { + log.info("on_stream_changed event: {}", body); return "{\"code\": 0}"; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index 80ac27e..43e1502 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -20,7 +20,7 @@ import java.util.List; */ @Data @EqualsAndHashCode(callSuper = true) -@TableName("business_alert") +@TableName(value = "business_alert",autoResultMap = true) public class BusinessAlert extends BaseEntity { @Serial @@ -63,11 +63,7 @@ public class BusinessAlert extends BaseEntity { */ private String images; - /** - * 识别类型 - */ - @TableField(value = "identify_type",typeHandler = JacksonTypeHandler.class) - private List identifyType; + /** * 纬度 @@ -79,6 +75,18 @@ public class BusinessAlert extends BaseEntity { */ private Long lng; + /** + * 标签名-英 + */ + + private String labelEn; + + /** + * 标签名-中 + */ + private String labelCn; + + /** * 预警类型 */ @@ -229,4 +237,13 @@ public class BusinessAlert extends BaseEntity { @TableField(exist = false) private Long flowTaskId; + @TableField(exist = false) + private Long instanceId; + + @TableField(exist = false) + private Boolean button; + + @TableField(exist = false) + private String permissions; + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index b69c43b..fa1d2d5 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -1,5 +1,6 @@ package org.dromara.business.domain.bo; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableField; import org.dromara.business.domain.BusinessAlert; import org.dromara.common.mybatis.core.domain.BaseEntity; @@ -46,10 +47,6 @@ public class BusinessAlertBo { */ private String images; - /** - * 识别类型 - */ - private List identifyType; /** * 纬度 @@ -194,9 +191,15 @@ public class BusinessAlertBo { List deptIdList; /** - * 识别类型集合 + * 标签名-英 */ - List alertTypeList; + private String labelEn; + + /** + * 标签名-中 + */ + private String labelCn; + /** * 年 @@ -216,5 +219,10 @@ public class BusinessAlertBo { private String createTime; + /** + * 岗位编码 + */ + private String postCode; + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessHookBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessHookBo.java new file mode 100644 index 0000000..02e6f42 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessHookBo.java @@ -0,0 +1,57 @@ +package org.dromara.business.domain.bo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(name = "流回调对象") +public class BusinessHookBo { + + @Schema(name = "流应用名") + private String app; + + @Schema(name = "TCP链接唯一ID") + private String id; + + @Schema(name = "播放器ip/推流器ip") + private String ip; + + @Schema(name = "播放url参数/推流url参数") + private String params; + + @Schema(name = "播放器端口号/推流器端口号") + private String port; + + @Schema(name = "播放的协议,可能是rtsp、rtmp、http") + private String schema; + + @Schema(name = "流ID") + private String stream; + + @Schema(name = "流虚拟主机") + private String vhost; + + @Schema(name = "服务器 id,通过配置文件设置") + private String mediaServerId; + + @Schema(name = "文件名") + private String file_name; + + @Schema(name = "文件绝对路径") + private String file_path; + + @Schema(name = "文件大小,单位字节") + private String file_size; + + @Schema(name = "文件所在目录路径") + private String folder; + + @Schema(name = "开始录制时间戳") + private Integer start_time; + + @Schema(name = "录制时长,单位秒") + private Float time_len; + + @Schema(name = "http/rtsp/rtmp点播相对url路径") + private String url; +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java index e228dd1..04ed32d 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java @@ -58,10 +58,6 @@ public class BusinessAlertVo implements Serializable { private String images; - /** - * 识别类型 - */ - private List identifyType; /** * 纬度 @@ -75,6 +71,18 @@ public class BusinessAlertVo implements Serializable { @ExcelProperty(value = "精度") private Long lng; + /** + * 标签名-英 + */ + private String labelEn; + + /** + * 标签名-中 + */ + @ExcelProperty(value = "标签名-中") + private String labelCn; + + /** * 预警类型 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 2fcee06..d242c68 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -23,24 +23,16 @@ import java.util.Map; */ public interface BusinessAlertMapper extends BaseMapperPlus { - @DataPermission( - @DataColumn(key = "deptName", value = "ba.dept_id") - ) + Page pageBusinessAlert(Page page, QueryWrapper ew); - @DataPermission( - @DataColumn(key = "deptName", value = "ba.dept_id") - ) + Page pageAlertFinish(Page page, QueryWrapper ew); - @DataPermission( - @DataColumn(key = "deptName", value = "ba.dept_id") - ) + Page pageAlertTodo(Page page, QueryWrapper ew); - @DataPermission( - @DataColumn(key = "deptName", value = "ba.dept_id") - ) + Page pageBusinessAlertCancel(Page build, QueryWrapper ew); @DataPermission( diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index aeca005..31a12a1 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -18,6 +18,8 @@ import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.api.RemoteLablePostService; +import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.system.api.model.PostDTO; import org.dromara.workflow.api.RemoteWorkflowService; @@ -28,6 +30,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 预警任务Service业务层处理 @@ -44,6 +47,9 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { @DubboReference RemoteWorkflowService remoteWorkflowService; + @DubboReference + RemoteLablePostService remoteLablePostService; + /** * 新增预警任务 * @@ -128,6 +134,10 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); +// if (ObjectUtil.isEmpty(wrapper)){ +// return new TableDataInfo<>(); +// } + Page page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper); return TableDataInfo.build(page); @@ -144,6 +154,12 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { bo.setHandleType(BusinessStatusEnum.INVALID.getStatus()); QueryWrapper wrapper = buildQueryWrapper(bo); +// if (ObjectUtil.isEmpty(wrapper)){ +// return new TableDataInfo<>(); +// } + + wrapper.in("b.flow_status", BusinessStatusEnum.INVALID.getStatus()); + Page page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper); return TableDataInfo.build(page); @@ -159,9 +175,15 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { @Override public TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); + +// if (ObjectUtil.isEmpty(wrapper)){ +// return new TableDataInfo<>(); +// } + buildCommonQueryWrapper(wrapper); wrapper.in("a.approver", LoginHelper.getUserId()); + wrapper.in("b.flow_status", BusinessStatusEnum.FINISH.getStatus()); Page page = this.baseMapper.pageAlertFinish(pageQuery.build(), wrapper); return TableDataInfo.build(page); @@ -177,15 +199,21 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { @Override public TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); + +// if (ObjectUtil.isEmpty(wrapper)){ +// return new TableDataInfo<>(); +// } + buildCommonQueryWrapper(wrapper); wrapper.eq("uu.del_flag", 0); wrapper.in("uu.type", 1,2,3); wrapper.in("uu.processed_by", remoteWorkflowService.getPermissions()); - wrapper.in("b.flow_status", BusinessStatusEnum.WAITING.getStatus()); + wrapper.eq("b.flow_status", BusinessStatusEnum.WAITING.getStatus()); Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); + List records = page.getRecords(); if (CollUtil.isNotEmpty(records)) { List taskIds = StreamUtils.toList(records, BusinessAlert::getFlowTaskId); @@ -211,14 +239,18 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { QueryWrapper wrapper = new QueryWrapper<>(); //根据当前用户职能获取识别类型 -// List posts = LoginHelper.getLoginUser().getPosts(); +// List postVoList = remoteLablePostService.selectLableByList(bo.getPostCode(), LoginHelper.getDeptId()); + +// if (ObjectUtil.isEmpty(postVoList)) { +// return null; +// } +// +// +// wrapper.in("ba.label_en",StreamUtils.toList(postVoList, RemoteAiLabelPostVo::getLabelEn)); //排除状态为验证状态预警 wrapper.ne("ba.handle_type", BusinessStatusEnum.VERIFY.getStatus()); - if (ObjectUtil.isNotEmpty(bo.getAlertTypeList())){ - wrapper.in("ba.alert_type", bo.getAlertTypeList()); - } if (ObjectUtil.isNotEmpty(bo.getHandleType())){ wrapper.eq("ba.handle_type", bo.getHandleType()); diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index aca5e87..27b62d8 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -21,7 +21,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select ba.*, b.flow_status flowStatus, - b.business_id businessId + b.business_id businessId, + b.id instanceId from dk_business.business_alert ba left join dk_workflow.flow_instance b on ba.id = b.business_id ${ew.getCustomSqlSegment} @@ -31,7 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select ba.*, b.flow_status flowStatus, - b.business_id businessId + b.business_id businessId, + b.id instanceId from dk_business.business_alert ba left join dk_workflow.flow_instance b on ba.id = b.business_id ${ew.getCustomSqlSegment} @@ -43,7 +45,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.flow_status flowStatus, b.business_id businessId, a.approver, - a.id flowTaskId + a.id flowTaskId, + b.id instanceId from dk_business.business_alert ba left join dk_workflow.flow_instance b on ba.id = b.business_id left join dk_workflow.flow_his_task a on a.instance_id = b.id @@ -58,12 +61,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" b.flow_status, b.business_id, uu.processed_by approver, - a.id flowTaskId + a.id flowTaskId, + b.id instanceId, + fn.permissions from dk_business.business_alert ba left join dk_workflow.flow_instance b on ba.id = b.business_id left join dk_workflow.flow_task a on a.instance_id = b.id left join dk_workflow.flow_user uu on uu.associated = a.id left join dk_workflow.flow_definition c on a.definition_id = c.id + left join dk_workflow.flow_node fn on fn.node_code = b.node_code ${ew.getCustomSqlSegment} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java index 3db2857..c14c474 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java @@ -198,5 +198,4 @@ public class FlwDefinitionController extends BaseController { public R active(@PathVariable Long id, @RequestParam boolean active) { return R.ok(active ? defService.active(id) : defService.unActive(id)); } - } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDepartController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDepartController.java new file mode 100644 index 0000000..848ce37 --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDepartController.java @@ -0,0 +1,46 @@ +package org.dromara.workflow.controller; + + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.domain.FlowDepart; +import org.dromara.workflow.service.FlwDepartService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@Tag(name = "流程部门管理") +@ConditionalOnEnable +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/depart") +public class FlwDepartController { + + + private final FlwDepartService flwDepartService; + + /** + * 查询流程部门关系 + * flowCode + */ + @Operation(summary = "查询流程部门关系",description = "查询流程部门关系") + @GetMapping("/{flowCode}/getInfo") + public R getInfo(@PathVariable String flowCode) { + return R.ok(flwDepartService.getInfo(flowCode)); + } + + + /** + * 绑定流程部门关系 + * flowCode + */ + @Operation(summary = "绑定流程部门关系",description = "绑定流程部门关系") + @PostMapping("/bind/depart") + public R bindDepart(@Validated({AddGroup.class}) @RequestBody FlowDepart flowDepart) { + return R.ok(flwDepartService.bindDepart(flowDepart)); + } +} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index 2618ade..33aaf67 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -65,6 +65,21 @@ public class FlwTaskController extends BaseController { return toAjax(flwTaskService.completeTask(completeTaskBo)); } + /** + * 任务操作 + * + * @param bo 参数 + * @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature + */ + @Operation(summary = "任务操作",description = "任务操作",parameters = { + @Parameter(name = "taskOperation", description = "操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature") + }) + @RepeatSubmit + @PostMapping("/taskOperation/{taskOperation}") + public R taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) { + return toAjax(flwTaskService.taskOperation(bo, taskOperation)); + } + /** * 查询当前用户的待办任务 * @@ -148,21 +163,6 @@ public class FlwTaskController extends BaseController { return R.ok(flwTaskService.terminationTask(bo)); } - /** - * 任务操作 - * - * @param bo 参数 - * @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature - */ - @Operation(summary = "任务操作",description = "任务操作",parameters = { - @Parameter(name = "taskOperation", description = "操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature") - }) - @RepeatSubmit - @PostMapping("/taskOperation/{taskOperation}") - public R taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) { - return toAjax(flwTaskService.taskOperation(bo, taskOperation)); - } - /** * 修改任务办理人 * diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/FlowDepart.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/FlowDepart.java new file mode 100644 index 0000000..a2e3fb1 --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/FlowDepart.java @@ -0,0 +1,48 @@ +package org.dromara.workflow.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.workflow.handler.ListTypeHandler; + +import java.util.List; + +/** + * 部门流程关系表 + */ +@Data +@TableName(value = "flow_depart",autoResultMap = true) +public class FlowDepart { + + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 流程类型 + */ + @NotNull(message = "流程类型不能为空", groups = AddGroup.class) + private String flowType; + + /** + * 流程编码 + */ + @NotNull(message = "流程编码不能为空", groups = AddGroup.class) + private String flowCode; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 部门id集合 + */ + @NotNull(message = "部门id不能为空", groups = AddGroup.class) + @TableField(value = "dept_ids",typeHandler = ListTypeHandler.class) + List departIds; +} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java index 3117a33..4c6a8ff 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java @@ -56,11 +56,22 @@ public class BackProcessBo implements Serializable { */ private String notice; + /** * 流程变量 */ private Map variables; + /** + * 预警类型 + */ + private String alertType; + + /** + * 是否违建 + */ + private Boolean isIllegal; + public Map getVariables() { if (variables == null) { return new HashMap<>(16); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java index 9fdf484..53cbf24 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java @@ -64,6 +64,21 @@ public class CompleteTaskBo implements Serializable { */ private String ext; + /** + * 预警类型 + */ + private String alertType; + + /** + * 是否违建 + */ + private Boolean isIllegal; + + /** + * 选择其他的时候内容 + */ + private String alertTypeContent; + public Map getVariables() { if (variables == null) { return new HashMap<>(16); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java index 4348e31..936ded1 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java @@ -45,4 +45,19 @@ public class TaskOperationBo implements Serializable { */ private String message; + /** + * 预警类型 + */ + private String alertType; + + /** + * 是否违建 + */ + private Boolean isIllegal; + + /** + * 选择其他的时候内容 + */ + private String alertTypeContent; + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java index f9def49..137d1ab 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java @@ -84,6 +84,11 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService { return workflowService.processInvalid(instanceId); } + @Override + public List currentTaskAllUser(Long taskId) { + return workflowService.currentTaskAllUser(taskId); + } + @Override public boolean completeTask(RemoteCompleteTask completeTask) { return workflowService.completeTask(completeTask); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/ListTypeHandler.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/ListTypeHandler.java new file mode 100644 index 0000000..f63591d --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/ListTypeHandler.java @@ -0,0 +1,51 @@ +package org.dromara.workflow.handler; + +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; +import org.apache.ibatis.type.TypeHandler; +import org.dromara.workflow.utils.JsonUtil; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +@MappedJdbcTypes(JdbcType.VARCHAR) +@MappedTypes({List.class}) +public class ListTypeHandler implements TypeHandler> { + + @Override + public void setParameter(PreparedStatement ps, int i, List list, JdbcType jdbcType) throws SQLException { + ps.setString(i, JsonUtil.toJson(list)); + } + + @Override + public List getResult(ResultSet rs, String columnName) throws SQLException { + if (StringUtils.isBlank(rs.getString(columnName))) { + return new ArrayList<>(); + } + return JsonUtil.jsonToList(rs.getString(columnName), Long.class); + } + + @Override + public List getResult(ResultSet rs, int columnIndex) throws SQLException { + if (StringUtils.isBlank(rs.getString(columnIndex))) { + return new ArrayList<>(); + } + return JsonUtil.jsonToList(rs.getString(columnIndex), Long.class); + } + + @Override + public List getResult(CallableStatement cs, int columnIndex) throws SQLException { + String value = cs.getString(columnIndex); + + if (StringUtils.isBlank(value)) { + return new ArrayList<>(); + } + return JsonUtil.jsonToList(value, Long.class); + } +} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java new file mode 100644 index 0000000..34d6364 --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java @@ -0,0 +1,7 @@ +package org.dromara.workflow.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.workflow.domain.FlowDepart; + +public interface FlwDepartMapper extends BaseMapperPlus { +} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java index fd86c82..fa31d6c 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java @@ -5,10 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import org.dromara.warm.flow.orm.entity.FlowNode; import org.dromara.workflow.domain.bo.FlowTaskBo; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; +import java.util.LinkedList; import java.util.List; @@ -54,4 +56,5 @@ public interface FlwTaskMapper { * @return 结果 */ Page getTaskCopyByPage(@Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java new file mode 100644 index 0000000..e6b5937 --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java @@ -0,0 +1,9 @@ +package org.dromara.workflow.service; + +import org.dromara.workflow.domain.FlowDepart; + +public interface FlwDepartService { + FlowDepart getInfo(String flowCode); + + FlowDepart bindDepart(FlowDepart flowDepart); +} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index 4dda912..4524aea 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -8,6 +8,7 @@ import org.dromara.warm.flow.core.entity.Node; import org.dromara.warm.flow.core.entity.Task; import org.dromara.warm.flow.core.service.impl.TaskServiceImpl; import org.dromara.warm.flow.orm.entity.FlowHisTask; +import org.dromara.warm.flow.orm.entity.FlowNode; import org.dromara.warm.flow.orm.entity.FlowTask; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.domain.bo.*; @@ -200,4 +201,5 @@ public interface IFlwTaskService { * 返回当前用户权限集合 */ List getPermissions(); + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java index 8894d51..be12f87 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java @@ -1,5 +1,6 @@ package org.dromara.workflow.service; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; @@ -90,4 +91,6 @@ public interface WorkflowService { * @return */ boolean processInvalid(Long instanceId); + + List currentTaskAllUser(Long taskId); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java new file mode 100644 index 0000000..01732ec --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java @@ -0,0 +1,37 @@ +package org.dromara.workflow.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.dromara.workflow.domain.FlowDepart; +import org.dromara.workflow.mapper.FlwDepartMapper; +import org.dromara.workflow.service.FlwDepartService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class FlwDepartServiceImpl extends ServiceImpl implements FlwDepartService { + + + @Override + public FlowDepart getInfo(String flowCode) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(FlowDepart::getFlowCode, flowCode); + + return this.baseMapper.selectOne(wrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public FlowDepart bindDepart(FlowDepart flowDepart) { + //首先清楚原来的 + LambdaQueryWrapper updateWrapper = new LambdaQueryWrapper<>(); + updateWrapper.eq(FlowDepart::getFlowCode, flowDepart.getFlowCode()); + this.baseMapper.delete(updateWrapper); + + this.baseMapper.insert(flowDepart); + + return flowDepart; + } +} diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index f047148..3210338 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; @@ -92,9 +93,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @DubboReference private RemoteUserService remoteUserService; - @DubboReference(stub = "true") - private final RemoteMessageService remoteMessageService; - @Autowired private ApplicationContext applicationContext; @@ -183,6 +181,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService { flowParams.message(completeTaskBo.getMessage()); flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus()); + // 构建 JSON 对象 + JSONObject extJson = new JSONObject(); + extJson.put("isIllegal", ObjectUtil.isNotEmpty(completeTaskBo.getIsIllegal())?completeTaskBo.getIsIllegal():false); + extJson.put("alertType", completeTaskBo.getAlertType()); + extJson.put("alertTypeContent", completeTaskBo.getAlertTypeContent()); + + flowParams.ext(extJson.toJSONString()); + flowParams.hisTaskExt(completeTaskBo.getFileId()); // 执行任务跳转,并根据返回的处理人设置下一步处理人 Instance instance = taskService.skip(taskId, flowParams); @@ -587,6 +593,15 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Transactional(rollbackFor = Exception.class) public boolean taskOperation(TaskOperationBo bo, String taskOperation) { FlowParams flowParams = new FlowParams(); + + // 构建 JSON 对象 + JSONObject extJson = new JSONObject(); + extJson.put("isIllegal", ObjectUtil.isNotEmpty(bo.getIsIllegal())?bo.getIsIllegal():false); + extJson.put("alertType", bo.getAlertType()); + extJson.put("alertTypeContent", bo.getAlertTypeContent()); + + flowParams.ext(extJson.toJSONString()); + flowParams.message(bo.getMessage()); if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) { flowParams.ignore(true); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 48864b8..2f98ecc 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.utils.StringUtils; +import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; @@ -142,4 +143,9 @@ public class WorkflowServiceImpl implements WorkflowService { flowInvalidBo.setId(instanceId); return flwInstanceService.processInvalid(flowInvalidBo); } + + @Override + public List currentTaskAllUser(Long taskId) { + return flwTaskService.currentTaskAllUser(taskId); + } } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/utils/JsonUtil.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/utils/JsonUtil.java new file mode 100644 index 0000000..e11692e --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/utils/JsonUtil.java @@ -0,0 +1,126 @@ +package org.dromara.workflow.utils; + +import cn.hutool.core.util.ObjectUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * 定义响应结构 + */ +public class JsonUtil { + + private static ObjectMapper MAPPER; + static{ + MAPPER=new ObjectMapper(); + } + + /** + * 将对象转换成json字符串。 + * @param data + * @return + */ + public static String toJson(Object data){ + String string = null; + try { + string = MAPPER.writeValueAsString(data); + if(StringUtils.isEmpty(string)){ + return null; + } + return string; + } catch (JsonProcessingException e) { + e.printStackTrace(); + return null; + } + } + + /** + * 将json结果集转化为对象 + * + * @param jsonData json数据 + * @return + */ + public static T jsonToPojo(String jsonData, Class beanType) { + try { + T t = MAPPER.readValue(jsonData, beanType); + return t; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 将json数据转换成pojo对象list + *

Title: jsonToList

+ *

Description:

+ * @param jsonData + * @param beanType + * @return + */ + public static List jsonToList(String jsonData, Class beanType) { + JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); + try { + List list = MAPPER.readValue(jsonData, javaType); + return list; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + /** + * 将Object对象里面的属性和值转化成Map对象 + * + * @param obj + * @return + * @throws IllegalAccessException + */ + public static Map objectToMap(Object obj){ + try { + Map map = new HashMap(); + Class clazz = obj.getClass(); + for (Field field : clazz.getDeclaredFields()) { + field.setAccessible(true); + String fieldName = field.getName(); + if(ObjectUtil.isNotEmpty(field.get(obj))){ + Object value = field.get(obj); + map.put(fieldName, value); + }else{ + map.put(fieldName, ""); + } + } + return map; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + public static Map jsonToMap(String json){ + try { + return MAPPER.readValue(json, new TypeReference>(){}); + } catch (JsonProcessingException e) { + e.printStackTrace(); + return null; + } + } + + public static LinkedHashMap jsonToStrMap(String json){ + try { + return MAPPER.readValue(json, new TypeReference>(){}); + } catch (JsonProcessingException e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml new file mode 100644 index 0000000..782aa3b --- /dev/null +++ b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/pom.xml b/pom.xml index 63a9d40..23aa72a 100644 --- a/pom.xml +++ b/pom.xml @@ -86,12 +86,12 @@ dev - 127.0.0.1:8848 + 114.235.183.147:8848 DEFAULT_GROUP DEFAULT_GROUP nacos nacos - 127.0.0.1:4560 + 114.235.183.147:4560 From 5a2985aa595f4f5cd8416e0a63453df64dedd14c Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Thu, 13 Mar 2025 14:45:10 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java | 2 +- .../dromara/system/controller/system/AiLabelController.java | 2 +- pom.xml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java b/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java index e466b18..90d5c1c 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteAiLabelPostVo.java @@ -4,7 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -//import org.dromara.system.domain.AiLabel; + import java.io.Serial; import java.io.Serializable; diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java index 92d7fa3..ea3d31f 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/AiLabelController.java @@ -50,7 +50,7 @@ public class AiLabelController extends BaseController { * 下拉框集合 */ @SaCheckPermission("system:label:list") - @GetMapping("/list") + @GetMapping("/allList") public List list() { return aiLabelService.allList(); } diff --git a/pom.xml b/pom.xml index 23aa72a..63a9d40 100644 --- a/pom.xml +++ b/pom.xml @@ -86,12 +86,12 @@ dev - 114.235.183.147:8848 + 127.0.0.1:8848 DEFAULT_GROUP DEFAULT_GROUP nacos nacos - 114.235.183.147:4560 + 127.0.0.1:4560 From d5441f5235a3b0997a91a43f08130d2a7c64a1c3 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Thu, 13 Mar 2025 14:45:42 +0800 Subject: [PATCH 06/13] =?UTF-8?q?[feat]=201=E3=80=81=E8=81=94=E8=B0=83?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=202?= =?UTF-8?q?=E3=80=81=E5=BC=80=E5=8F=91=E6=B5=81=E7=A8=8B=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/RemoteBusinessAlertService.java | 2 +- .../common/core/enums/BusinessStatusEnum.java | 8 ++- .../business/domain/BusinessAlert.java | 18 ++++++ .../business/domain/bo/BusinessAlertBo.java | 19 +++++++ .../business/domain/vo/BusinessAlertVo.java | 19 +++++++ .../dubbo/RemoteBusinessAlertServiceImpl.java | 4 +- .../business/mapper/BusinessAlertMapper.java | 16 +++++- .../service/IBusinessAlertService.java | 4 +- .../impl/BusinessAlertServiceImpl.java | 57 +++++++++++++++++-- .../mapper/business/BusinessAlertMapper.xml | 18 ++++++ .../org/dromara/system/domain/SysDept.java | 5 ++ .../dromara/system/domain/bo/SysDeptBo.java | 5 ++ .../workflow/domain/bo/CompleteTaskBo.java | 15 +++++ .../workflow/handler/FlwAlertHandler.java | 16 +++++- .../handler/WorkflowPermissionHandler.java | 5 +- .../service/impl/FlwTaskServiceImpl.java | 14 ++++- 16 files changed, 208 insertions(+), 17 deletions(-) diff --git a/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java b/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java index 2237092..88b19c7 100644 --- a/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java +++ b/dk-api/api-business/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java @@ -15,5 +15,5 @@ public interface RemoteBusinessAlertService { * @param businessId 业务id(预警、工单) * @param flowStatus 流程状态 */ - void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType); + void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType,String message,String assignName); } diff --git a/dk-common/common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java b/dk-common/common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java index d2c38dd..329ee68 100644 --- a/dk-common/common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java +++ b/dk-common/common-core/src/main/java/org/dromara/common/core/enums/BusinessStatusEnum.java @@ -32,10 +32,16 @@ public enum BusinessStatusEnum { * 草稿 */ DRAFT("draft", "草稿"), + /** + * 处理中 + */ + WAITING("waiting", "处理中"), + /** * 待审核 */ - WAITING("waiting", "待审核"), + TODO("todo", "待审核"), + /** * 已完成 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index 43e1502..5ef21c5 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -165,6 +165,24 @@ public class BusinessAlert extends BaseEntity { */ private String jobName; + /** + * 指派人员 + */ + private String assignUserId; + + + /** + * 指派人员名称 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "assignUserId") + private String assignUserName; + + + /** + * 指派时间 + */ + private Date assignDate; + /** * 处理时间 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index fa1d2d5..00d3c61 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -10,6 +10,9 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + import java.util.Date; import java.util.List; @@ -224,5 +227,21 @@ public class BusinessAlertBo { */ private String postCode; + /** + * 指派人员 + */ + private String assignUserId; + + + /** + * 指派人员名称 + */ + private String assignUserName; + + + /** + * 指派时间 + */ + private Date assignDate; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java index 04ed32d..c70d16a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java @@ -6,6 +6,8 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.business.domain.BusinessAlert; import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; import java.io.Serial; import java.io.Serializable; @@ -233,4 +235,21 @@ public class BusinessAlertVo implements Serializable { @ExcelProperty(value = "来源:0:平台 1:小程序") private Long handleSource; + + /** + * 指派人员 + */ + private String assignUserId; + + + /** + * 指派人员名称 + */ + private String assignUserName; + + + /** + * 指派时间 + */ + private Date assignDate; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java index be01604..dc63dbb 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java @@ -23,7 +23,7 @@ public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertServic * @param flowStatus 流程状态 */ @Override - public void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType) { - businessAlertService.updateAlertStatus(businessId,flowStatus,isIllegal,alertType); + public void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType,String message,String assignName) { + businessAlertService.updateAlertStatus(businessId,flowStatus,isIllegal,alertType,message,assignName); } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index d242c68..94933ec 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -29,10 +29,22 @@ public interface BusinessAlertMapper extends BaseMapperPlus pageAlertFinish(Page page, QueryWrapper ew); - + /** + * 待指派 + * @param page + * @param ew + * @return + */ + Page pageAlertAssign(Page page, QueryWrapper ew); + + /** + * 处理中 + * @param page + * @param ew + * @return + */ Page pageAlertTodo(Page page, QueryWrapper ew); - Page pageBusinessAlertCancel(Page build, QueryWrapper ew); @DataPermission( diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 7d7d5a8..5c642cb 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java @@ -20,6 +20,8 @@ public interface IBusinessAlertService { TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery); + TableDataInfo pageAlertAssign(BusinessAlertBo bo, PageQuery pageQuery); + TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery); TableDataInfo pageBusinessAlertCancel(BusinessAlertBo bo, PageQuery pageQuery); @@ -62,7 +64,7 @@ public interface IBusinessAlertService { * @param businessId * @param flowStatus */ - void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType); + void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType,String message,String assignName); TableDataInfo getInfo(BusinessAlertBo bo, PageQuery pageQuery, String alertCode); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 31a12a1..67a90dd 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -26,10 +26,7 @@ import org.dromara.workflow.api.RemoteWorkflowService; import org.springframework.stereotype.Service; import java.lang.reflect.Method; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -109,7 +106,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { * @param flowStatus */ @Override - public void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType) { + public void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType,String message,String assignName) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.set(BusinessAlert::getHandleType, BusinessStatusEnum.getByStatus(flowStatus).getStatus()); if (ObjectUtil.isNotEmpty(isIllegal)){ @@ -118,6 +115,17 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { if (ObjectUtil.isNotEmpty(alertType)){ wrapper.set(BusinessAlert::getAlertType, alertType); } + + if (ObjectUtil.isNotEmpty(message)){ + wrapper.set(BusinessAlert::getReason, message); + } + + //判断指派人员是否为空 + if (ObjectUtil.isNotEmpty(assignName)){ + wrapper.set(BusinessAlert::getAssignUserId, assignName); + wrapper.set(BusinessAlert::getAssignDate, new Date()); + } + wrapper.eq(BusinessAlert::getId, businessId); this.baseMapper.update(wrapper); @@ -189,6 +197,45 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { return TableDataInfo.build(page); } + /** + * 查询当前用户待办预警 + * @param bo + * @param pageQuery + * @return + */ + @Override + public TableDataInfo pageAlertAssign(BusinessAlertBo bo, PageQuery pageQuery) { + QueryWrapper wrapper = buildQueryWrapper(bo); + +// if (ObjectUtil.isEmpty(wrapper)){ +// return new TableDataInfo<>(); +// } + + buildCommonQueryWrapper(wrapper); + + wrapper.eq("uu.del_flag", 0); + wrapper.in("uu.type", 1,2,3); + + wrapper.in("uu.processed_by", remoteWorkflowService.getPermissions()); + wrapper.eq("b.flow_status", BusinessStatusEnum.DRAFT.getStatus()); + + Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); + + List records = page.getRecords(); + if (CollUtil.isNotEmpty(records)) { + List taskIds = StreamUtils.toList(records, BusinessAlert::getFlowTaskId); + Map> listMap = remoteWorkflowService.currentTaskAllUser(taskIds); + records.forEach(t -> { + List userList = listMap.getOrDefault(t.getId(), Collections.emptyList()); + if (CollUtil.isNotEmpty(userList)) { + t.setApprover(StreamUtils.join(userList, e -> String.valueOf(e.getUserId()))); + t.setApproveName(StreamUtils.join(userList, RemoteUserVo::getNickName)); + } + }); + } + return TableDataInfo.build(page); + } + /** * 查询当前用户待办预警 diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 27b62d8..8a25577 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -73,6 +73,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ${ew.getCustomSqlSegment} + + - SELECT *,a.label_cn as ,label_en FROM ai_lable_post p inner JOIN ai_lable a ON p.lable_id = a.lable_id ${ew.customSqlSegment} + From 2b991dcc70ab098a76cd995c60c6267dadf2334b Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Fri, 14 Mar 2025 18:06:11 +0800 Subject: [PATCH 09/13] =?UTF-8?q?[feat]=201=E3=80=81=E8=81=94=E8=B0=83?= =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=202?= =?UTF-8?q?=E3=80=81=E5=BC=80=E5=8F=91=E6=B5=81=E7=A8=8B=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=85=B3=E7=B3=BB=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/event/ProcessCreateTaskEvent.java | 12 ++ .../controller/BusinessAlertController.java | 8 +- .../business/domain/BusinessAlert.java | 9 ++ .../business/mapper/BusinessAlertMapper.java | 12 +- .../service/IBusinessAlertService.java | 2 - .../impl/BusinessAlertServiceImpl.java | 121 ++++++------------ .../mapper/business/BusinessAlertMapper.xml | 105 +++++++-------- .../dubbo/RemoteLabelPostServicelmpl.java | 19 ++- .../system/service/IAiLabelPostService.java | 3 +- .../system/service/IAiLabelService.java | 2 + .../service/impl/AiLabelServiceImpl.java | 7 + .../service/impl/AiLablePostServiceImpl.java | 8 +- .../workflow/domain/bo/CompleteTaskBo.java | 2 +- .../handler/FlowProcessEventHandler.java | 6 +- .../workflow/handler/FlwAlertHandler.java | 18 +-- .../listener/WorkflowGlobalListener.java | 4 +- .../workflow/service/IFlwTaskService.java | 9 ++ .../workflow/service/WorkflowService.java | 1 + .../service/impl/FlwDepartServiceImpl.java | 1 - .../service/impl/FlwTaskServiceImpl.java | 20 +-- .../service/impl/WorkflowServiceImpl.java | 4 + 21 files changed, 191 insertions(+), 182 deletions(-) diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java index eabb443..11deccf 100644 --- a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/event/ProcessCreateTaskEvent.java @@ -6,6 +6,7 @@ import org.dromara.common.core.utils.SpringUtils; import org.springframework.cloud.bus.event.RemoteApplicationEvent; import java.io.Serial; +import java.util.Map; /** * 流程创建任务监听 @@ -54,6 +55,17 @@ public class ProcessCreateTaskEvent extends RemoteApplicationEvent { */ private Boolean isIllegal; + + /** + * 办理参数 + */ + private Map params; + + /** + * 审核意见 + */ + private String message; + public ProcessCreateTaskEvent() { super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null)); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index 11e4a17..75ea4cb 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -10,10 +10,10 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * 预警服务 diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index 5ef21c5..11e5ace 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -264,4 +264,13 @@ public class BusinessAlert extends BaseEntity { @TableField(exist = false) private String permissions; + /** + * 显示处置人员已办理预警状态 + */ + @TableField(exist = false) + private String flowTaskStatus; + + @TableField(exist = false) + private String alertId; + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 94933ec..39b69b6 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -23,20 +23,14 @@ import java.util.Map; */ public interface BusinessAlertMapper extends BaseMapperPlus { - + @DataPermission( + @DataColumn(key = "deptName", value = "ba.dept_id") + ) Page pageBusinessAlert(Page page, QueryWrapper ew); Page pageAlertFinish(Page page, QueryWrapper ew); - /** - * 待指派 - * @param page - * @param ew - * @return - */ - Page pageAlertAssign(Page page, QueryWrapper ew); - /** * 处理中 * @param page diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 5c642cb..0be6d43 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java @@ -20,8 +20,6 @@ public interface IBusinessAlertService { TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery); - TableDataInfo pageAlertAssign(BusinessAlertBo bo, PageQuery pageQuery); - TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery); TableDataInfo pageBusinessAlertCancel(BusinessAlertBo bo, PageQuery pageQuery); diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index d1d9aae..fae5fbe 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -19,11 +19,16 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.RemoteLabelPostService; +import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.workflow.api.RemoteWorkflowService; import org.springframework.stereotype.Service; import java.lang.reflect.Method; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Map; import java.util.*; /** @@ -139,9 +144,9 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } Page page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper); @@ -159,11 +164,11 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { bo.setHandleType(BusinessStatusEnum.INVALID.getStatus()); QueryWrapper wrapper = buildQueryWrapper(bo); -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } - wrapper.in("b.flow_status", BusinessStatusEnum.INVALID.getStatus()); + wrapper.in("t.flowStatus", BusinessStatusEnum.INVALID.getStatus()); Page page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper); @@ -181,58 +186,17 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } - buildCommonQueryWrapper(wrapper); + wrapper.apply(" EXISTS(select * from dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); - wrapper.in("a.approver", LoginHelper.getUserId()); - wrapper.in("b.flow_status", BusinessStatusEnum.FINISH.getStatus()); Page page = this.baseMapper.pageAlertFinish(pageQuery.build(), wrapper); return TableDataInfo.build(page); } - /** - * 查询当前用户待办预警 - * @param bo - * @param pageQuery - * @return - */ - @Override - public TableDataInfo pageAlertAssign(BusinessAlertBo bo, PageQuery pageQuery) { - QueryWrapper wrapper = buildQueryWrapper(bo); - -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } - - buildCommonQueryWrapper(wrapper); - - wrapper.eq("uu.del_flag", 0); - wrapper.in("uu.type", 1,2,3); - - wrapper.in("uu.processed_by", remoteWorkflowService.getPermissions()); - wrapper.eq("b.flow_status", BusinessStatusEnum.DRAFT.getStatus()); - - Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); - - List records = page.getRecords(); - if (CollUtil.isNotEmpty(records)) { - List taskIds = StreamUtils.toList(records, BusinessAlert::getFlowTaskId); - Map> listMap = remoteWorkflowService.currentTaskAllUser(taskIds); - records.forEach(t -> { - List userList = listMap.getOrDefault(t.getId(), Collections.emptyList()); - if (CollUtil.isNotEmpty(userList)) { - t.setApprover(StreamUtils.join(userList, e -> String.valueOf(e.getUserId()))); - t.setApproveName(StreamUtils.join(userList, RemoteUserVo::getNickName)); - } - }); - } - return TableDataInfo.build(page); - } - /** * 查询当前用户待办预警 @@ -244,17 +208,13 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); -// if (ObjectUtil.isEmpty(wrapper)){ -// return new TableDataInfo<>(); -// } - - buildCommonQueryWrapper(wrapper); - - wrapper.eq("uu.del_flag", 0); - wrapper.in("uu.type", 1,2,3); + if (ObjectUtil.isEmpty(wrapper)){ + return new TableDataInfo<>(); + } - wrapper.in("uu.processed_by", remoteWorkflowService.getPermissions()); - wrapper.eq("b.flow_status", BusinessStatusEnum.WAITING.getStatus()); + wrapper.eq("t.node_type", 1); + wrapper.in("t.approver", remoteWorkflowService.getPermissions()); + wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); Page page = this.baseMapper.pageAlertTodo(pageQuery.build(), wrapper); @@ -270,6 +230,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { } }); } + return TableDataInfo.build(page); } @@ -283,38 +244,34 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { QueryWrapper wrapper = new QueryWrapper<>(); //根据当前用户职能获取识别类型 -// List postVoList = remoteLablePostService.selectLableByList(bo.getPostCode(), LoginHelper.getDeptId()); + List postVoList = remoteLablePostService.selectLabelByList(bo.getPostCode(), LoginHelper.getDeptId()); -// if (ObjectUtil.isEmpty(postVoList)) { -// return null; -// } -// -// -// wrapper.in("ba.label_en",StreamUtils.toList(postVoList, RemoteAiLabelPostVo::getLabelEn)); + if (ObjectUtil.isEmpty(postVoList)) { + return null; + } + + wrapper.in("t.label_en",StreamUtils.toList(postVoList, RemoteAiLabelPostVo::getLabelEn)); //排除状态为验证状态预警 - wrapper.ne("ba.handle_type", BusinessStatusEnum.VERIFY.getStatus()); + wrapper.ne("t.handle_type", BusinessStatusEnum.VERIFY.getStatus()); if (ObjectUtil.isNotEmpty(bo.getHandleType())){ - wrapper.eq("ba.handle_type", bo.getHandleType()); + wrapper.eq("t.handle_type", bo.getHandleType()); + } + if (ObjectUtil.isNotEmpty(bo.getJobName())){ + wrapper.like("t.job_name", bo.getJobName()); } - wrapper.orderByAsc("ba.create_time"); + if (ObjectUtil.isNotEmpty(bo.getCreateTime())){ + wrapper.eq("DATE_FORMAT(t.create_time, '%Y-%m-%d')", bo.getCreateTime()); + } + + wrapper.orderByAsc("t.create_time"); return wrapper; } - /** - * 构建通用流程wrapper - * @param wrapper - */ - private void buildCommonQueryWrapper(QueryWrapper wrapper) { - wrapper.eq("a.del_flag",0); - wrapper.eq("b.del_flag",0); - wrapper.eq("c.del_flag",0); - wrapper.in("a.node_type",1,3,4); - } /** * 保存前的数据校验 diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 8a25577..2dee8e9 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -18,76 +18,67 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java index fd28541..783530c 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java @@ -3,16 +3,21 @@ package org.dromara.system.dubbo; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.system.api.RemoteLabelPostService; import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; +import org.dromara.system.domain.AiLabel; +import org.dromara.system.domain.AiLabelPost; import org.dromara.system.domain.vo.AiLabelPostVo; import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.service.IAiLabelPostService; +import org.dromara.system.service.IAiLabelService; import org.dromara.system.service.ISysPostService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @auther yq @@ -25,13 +30,23 @@ public class RemoteLabelPostServicelmpl implements RemoteLabelPostService { private final ISysPostService sysPostService; private final IAiLabelPostService aiLabelPostService; + private final IAiLabelService aiLabelService; @Override public List selectLabelByList(String postCode, Long deptId) { SysPostVo sysPostVo = sysPostService.selectLableByList(postCode, deptId); if(sysPostVo != null){ - List aiLablePostVos = aiLabelPostService.queryListByLabel(sysPostVo.getPostId()); - return MapstructUtils.convert(aiLablePostVos, RemoteAiLabelPostVo.class); + List aiLablePostVos = aiLabelPostService.queryListByLabel(sysPostVo.getPostId()); + List aiLabelList = aiLabelService.queryListByLabel(StreamUtils.toList(aiLablePostVos,AiLabelPost::getLabelId)); + return aiLabelList.stream() + .map(aiLabel -> { + RemoteAiLabelPostVo remoteAiLabelPostVo = new RemoteAiLabelPostVo(); + remoteAiLabelPostVo.setLableId(aiLabel.getLabelId()); + remoteAiLabelPostVo.setLabelEn(aiLabel.getLabelEn()); + remoteAiLabelPostVo.setLabelCn(aiLabel.getLabelCn()); + return remoteAiLabelPostVo; + }) + .collect(Collectors.toList()); } return new ArrayList<>(); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelPostService.java b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelPostService.java index 845dec2..d1c2bf2 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelPostService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelPostService.java @@ -1,5 +1,6 @@ package org.dromara.system.service; +import org.dromara.system.domain.AiLabelPost; import org.dromara.system.domain.bo.AiLabelPostBo; import org.dromara.system.domain.vo.AiLabelPostVo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -66,5 +67,5 @@ public interface IAiLabelPostService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); - List queryListByLabel(Long postId); + List queryListByLabel(Long postId); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java index b3cba0b..1d41595 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/IAiLabelService.java @@ -70,4 +70,6 @@ public interface IAiLabelService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List queryListByLabel(List labelIds); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java index 40e019c..05bea7e 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLabelServiceImpl.java @@ -135,4 +135,11 @@ public class AiLabelServiceImpl implements IAiLabelService { } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public List queryListByLabel(List labelIds) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(AiLabel::getLabelId, labelIds); + return this.baseMapper.selectList(wrapper); + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java index ac8e27c..eabfd30 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/AiLablePostServiceImpl.java @@ -130,7 +130,11 @@ public class AiLablePostServiceImpl implements IAiLabelPostService { } @Override - public List queryListByLabel(Long postId) { - return List.of(); + public List queryListByLabel(Long postId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(AiLabelPost::getPostId, postId); + + return this.baseMapper.selectList(wrapper); } } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java index 8b17915..7a626a3 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java @@ -92,7 +92,7 @@ public class CompleteTaskBo implements Serializable { /** * 是否需要指派 */ - private Boolean assign = true; + private Boolean assign = false; public Map getVariables() { if (variables == null) { diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java index ee5afe9..2a6b8c5 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java @@ -3,12 +3,14 @@ package org.dromara.workflow.handler; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.workflow.api.event.ProcessCreateTaskEvent; import org.dromara.workflow.api.event.ProcessDeleteEvent; import org.dromara.workflow.api.event.ProcessEvent; import org.dromara.workflow.common.ConditionalOnEnable; import org.springframework.stereotype.Component; +import java.util.HashMap; import java.util.Map; /** @@ -51,7 +53,7 @@ public class FlowProcessEventHandler { * @param taskId 任务id * @param businessId 业务id */ - public void processCreateTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId) { + public void processCreateTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId, Map variable, String message) { String tenantId = TenantHelper.getTenantId(); log.info("发布流程任务事件, 租户ID: {}, 流程编码: {}, 节点编码: {}, 任务ID: {}, 业务ID: {}", tenantId, flowCode, nodeCode, taskId, businessId); ProcessCreateTaskEvent processCreateTaskEvent = new ProcessCreateTaskEvent(); @@ -60,6 +62,8 @@ public class FlowProcessEventHandler { processCreateTaskEvent.setNodeCode(nodeCode); processCreateTaskEvent.setTaskId(taskId); processCreateTaskEvent.setBusinessId(businessId); + processCreateTaskEvent.setParams(variable); + processCreateTaskEvent.setMessage(message); SpringUtils.context().publishEvent(processCreateTaskEvent); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java index d7f8ae9..3554140 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/handler/FlwAlertHandler.java @@ -34,16 +34,7 @@ public class FlwAlertHandler implements FlwCommonHandler { @EventListener(condition = "#processEvent.flowCode.startsWith('alert')") @Override public void processHandler(ProcessEvent processEvent) { - String message = null; - String assignName = null; - if (ObjectUtil.isNotEmpty(processEvent.getParams())){ - message = ObjectUtil.isNotEmpty(processEvent.getParams().get("message"))?(String)processEvent.getParams().get("message"):null; - if ((Boolean) processEvent.getParams().get("assign")) { - assignName = ObjectUtil.isNotEmpty(processEvent.getParams().get("handler"))?(String)processEvent.getParams().get("handler"):null; - } - } - - alertService.updateAlertStatus(processEvent.getBusinessId(),processEvent.getStatus(),processEvent.getIsIllegal(),processEvent.getAlertType(),message,assignName); + alertService.updateAlertStatus(processEvent.getBusinessId(),processEvent.getStatus(),processEvent.getIsIllegal(),processEvent.getAlertType(),null,null); } /** @@ -55,7 +46,12 @@ public class FlwAlertHandler implements FlwCommonHandler { @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('alert')") @Override public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { - alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus(),processCreateTaskEvent.getIsIllegal(),processCreateTaskEvent.getAlertType(),null,null); + String assignName = null; + if (ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams())){ + assignName = ObjectUtil.isNotEmpty(processCreateTaskEvent.getParams().get("handler"))?(String)processCreateTaskEvent.getParams().get("handler"):null; + } + + alertService.updateAlertStatus(processCreateTaskEvent.getBusinessId(), BusinessStatusEnum.WAITING.getStatus(),processCreateTaskEvent.getIsIllegal(),processCreateTaskEvent.getAlertType(),processCreateTaskEvent.getMessage(),assignName); } /** diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index 272f9de..5d6202b 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -50,9 +50,11 @@ public class WorkflowGlobalListener implements GlobalListener { String businessId = instance.getBusinessId(); String flowStatus = instance.getFlowStatus(); Task task = listenerVariable.getTask(); + Map variable = listenerVariable.getVariable(); + FlowParams flowParams = listenerVariable.getFlowParams(); if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(flowStatus)) { // 判断流程状态(发布审批中事件) - flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId); + flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId,variable,flowParams.getMessage()); } } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index 4524aea..7d896e1 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -15,6 +15,7 @@ import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -202,4 +203,12 @@ public interface IFlwTaskService { */ List getPermissions(); + /** + * 获取所有审批节点 + * @param nodeCode + * @param definitionId + * @return + */ + List getByNodeCodes(String nodeCode,Long definitionId); + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java index be12f87..c611d1a 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java @@ -93,4 +93,5 @@ public interface WorkflowService { boolean processInvalid(Long instanceId); List currentTaskAllUser(Long taskId); + } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java index 01732ec..de6e64a 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java @@ -25,7 +25,6 @@ public class FlwDepartServiceImpl extends ServiceImpl updateWrapper = new LambdaQueryWrapper<>(); updateWrapper.eq(FlowDepart::getFlowCode, flowDepart.getFlowCode()); this.baseMapper.delete(updateWrapper); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 8312daf..6f3a21c 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -97,9 +97,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Autowired private ApplicationContext applicationContext; - @Autowired - private RemoteBusinessAlertService remoteBusinessAlertService; - /** * 启动任务 * @@ -149,7 +146,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { dto.setProcessInstanceId(instance.getId()); dto.setTaskId(taskList.get(0).getId()); - remoteBusinessAlertService.updateAlertStatus(startProcessBo.getBusinessId(),flowParams.getFlowStatus(),null,null,null,null); + executeTask(taskList.get(0).getId()); return dto; } @@ -181,12 +178,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } // 构建流程参数,包括变量、跳转类型、消息、处理人、权限等信息 FlowParams flowParams = new FlowParams(); + + Map variables = completeTaskBo.getVariables(); // 流程变量 - completeTaskBo.getVariables().put("flag",completeTaskBo.getFlag()); - completeTaskBo.getVariables().put("assign",completeTaskBo.getAssign()); - completeTaskBo.getVariables().put("handler", completeTaskBo.getHandler()); + variables.put("flag",completeTaskBo.getFlag()); + variables.put("assign",completeTaskBo.getAssign()); + variables.put("handler", completeTaskBo.getHandler()); - flowParams.variable(completeTaskBo.getVariables()); + flowParams.variable(variables); flowParams.skipType(SkipType.PASS.getKey()); flowParams.message(completeTaskBo.getMessage()); flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus()); @@ -320,6 +319,11 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return SpringUtils.getBean(WorkflowPermissionHandler.class).permissions(); } + @Override + public List getByNodeCodes(String nodeCode, Long definitionId) { + return nodeService.getByNodeCodes(Collections.singletonList(nodeCode), definitionId); + } + /** * 查询当前用户的已办任务 * diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 2f98ecc..494fe0d 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.dromara.common.core.utils.StringUtils; import org.dromara.system.api.domain.vo.RemoteUserVo; +import org.dromara.warm.flow.core.entity.Node; import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; @@ -19,8 +20,11 @@ import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.service.WorkflowService; import org.springframework.stereotype.Service; +import java.lang.reflect.Field; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 通用 工作流服务实现 From cb2631ab61fbec2fb4626a3088bcc6fa638471d3 Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Sat, 15 Mar 2025 16:50:02 +0800 Subject: [PATCH 10/13] =?UTF-8?q?[feat]=201=E3=80=81=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BA=A7=E7=94=9F=E9=A2=84=E8=AD=A6=E5=8E=8B?= =?UTF-8?q?=E5=8A=9B=E6=B5=8B=E8=AF=95=EF=BC=8C=E5=B9=B6=E4=B8=94=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/api/RemoteWorkflowService.java | 12 +++ .../workflow/api/domain/FlowDepartVo.java | 22 ++++++ .../controller/BusinessAlertController.java | 3 + .../business/controller/FixController.java | 74 +++++++++++++++++++ .../business/domain/BusinessAlert.java | 1 + .../impl/BusinessAlertServiceImpl.java | 23 +----- .../system/SysDepartBoundaryController.java | 2 + .../dubbo/RemoteLabelPostServicelmpl.java | 7 +- .../dubbo/RemoteWorkflowServiceImpl.java | 17 +++++ .../workflow/mapper/FlwDepartMapper.java | 8 ++ .../workflow/service/FlwDepartService.java | 2 + .../workflow/service/IFlwTaskService.java | 7 ++ .../workflow/service/WorkflowService.java | 7 ++ .../service/impl/FlwDepartServiceImpl.java | 13 ++++ .../service/impl/FlwTaskServiceImpl.java | 14 +++- .../service/impl/WorkflowServiceImpl.java | 15 ++++ .../workflow/utils/BatchProcessorUtil.java | 39 ++++++++++ .../mapper/workflow/FlwDepartMapper.xml | 14 ++++ 18 files changed, 257 insertions(+), 23 deletions(-) create mode 100644 dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/FlowDepartVo.java create mode 100644 dk-modules/business/src/main/java/org/dromara/business/controller/FixController.java create mode 100644 dk-modules/workflow/src/main/java/org/dromara/workflow/utils/BatchProcessorUtil.java diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java index 955611b..f83753a 100644 --- a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/RemoteWorkflowService.java @@ -1,6 +1,7 @@ package org.dromara.workflow.api; import org.dromara.system.api.domain.vo.RemoteUserVo; +import org.dromara.workflow.api.domain.FlowDepartVo; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; @@ -8,6 +9,7 @@ import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; /** * 通用 工作流服务 @@ -79,6 +81,14 @@ public interface RemoteWorkflowService { */ RemoteStartProcessReturn startWorkFlow(RemoteStartProcess startProcess); + /** + * 批量启动流程 + * + * @param startProcess 参数 + * @return 结果 + */ + Boolean startWorkFlowBatch(List startProcess); + /** * 办理任务 * @@ -118,4 +128,6 @@ public interface RemoteWorkflowService { */ List currentTaskAllUser(Long taskId); + FlowDepartVo getFlowDepart(Long deptId); + } diff --git a/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/FlowDepartVo.java b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/FlowDepartVo.java new file mode 100644 index 0000000..84dc82b --- /dev/null +++ b/dk-api/api-workflow/src/main/java/org/dromara/workflow/api/domain/FlowDepartVo.java @@ -0,0 +1,22 @@ +package org.dromara.workflow.api.domain; + +import lombok.Data; + +@Data +public class FlowDepartVo { + + + private Long id; + + /** + * 流程类型 + */ + private String flowType; + + /** + * 流程编码 + */ + private String flowCode; + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index 75ea4cb..b9860f2 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -39,4 +39,7 @@ public class BusinessAlertController extends BaseController { public TableDataInfo pageBusinessAlert(BusinessAlertBo bo, PageQuery pageQuery,@PathVariable String alertCode) { return businessAlertService.getInfo(bo,pageQuery,alertCode); } + + + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/FixController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/FixController.java new file mode 100644 index 0000000..f84c3ef --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/FixController.java @@ -0,0 +1,74 @@ +package org.dromara.business.controller; + +import cn.hutool.core.collection.ListUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.business.domain.BusinessAlert; +import org.dromara.business.mapper.BusinessAlertMapper; +import org.dromara.business.service.IBusinessAlertService; +import org.dromara.business.utils.BatchProcessorUtil; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; +import org.dromara.workflow.api.RemoteWorkflowService; +import org.dromara.workflow.api.domain.RemoteStartProcess; +import org.dromara.workflow.api.domain.RemoteStartProcessReturn; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +@RequiredArgsConstructor +@RestController +@RequestMapping("/fix") +@Tag(name = "fix") +public class FixController extends BaseController { + + @DubboReference(timeout = 30000) + RemoteWorkflowService remoteWorkflowService; + + private final BusinessAlertMapper baseMapper; + + @Operation(summary ="生成流程",description = "生成流程") + @GetMapping("startFlow") + public R startFlow(@RequestParam String flowCode) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BusinessAlert::getHandleType,"verify"); + wrapper.in(BusinessAlert::getLabelEn,"plough","towns"); + List businessAlerts = baseMapper.selectList(wrapper); + + List alertList = ListUtil.sub(businessAlerts, 0, 10); + + List flowList = alertList.stream() + .map(alert -> { + RemoteStartProcess remoteStartProcess = new RemoteStartProcess(); + remoteStartProcess.setFlowCode(flowCode); + remoteStartProcess.setBusinessId(alert.getId()); + return remoteStartProcess; + }) + .collect(Collectors.toList()); + + // 分批处理 + int startIndex = 0; // 从第 0 条开始 + int batchSize = 5; // 每批处理 5 条 + boolean flag = BatchProcessorUtil.processBatches(flowList, batchSize, startIndex, batch -> { + //批量新增部门区域数据 + remoteWorkflowService.startWorkFlowBatch(batch); + }); + + + return toAjax(flag); + } + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index 11e5ace..33a382f 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -175,6 +175,7 @@ public class BusinessAlert extends BaseEntity { * 指派人员名称 */ @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "assignUserId") + @TableField(exist = false) private String assignUserName; diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index fae5fbe..b22effd 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -144,10 +144,6 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertAll(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); - if (ObjectUtil.isEmpty(wrapper)){ - return new TableDataInfo<>(); - } - Page page = this.baseMapper.pageBusinessAlert(pageQuery.build(), wrapper); return TableDataInfo.build(page); @@ -164,10 +160,6 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { bo.setHandleType(BusinessStatusEnum.INVALID.getStatus()); QueryWrapper wrapper = buildQueryWrapper(bo); - if (ObjectUtil.isEmpty(wrapper)){ - return new TableDataInfo<>(); - } - wrapper.in("t.flowStatus", BusinessStatusEnum.INVALID.getStatus()); Page page = this.baseMapper.pageBusinessAlertCancel(pageQuery.build(), wrapper); @@ -186,10 +178,6 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertFinish(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); - if (ObjectUtil.isEmpty(wrapper)){ - return new TableDataInfo<>(); - } - wrapper.apply(" EXISTS(select * from dk_workflow.flow_his_task ht where ht.approver ='" + LoginHelper.getUserId() + "' and ht.instance_id = t.instanceId)"); Page page = this.baseMapper.pageAlertFinish(pageQuery.build(), wrapper); @@ -208,10 +196,6 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public TableDataInfo pageBusinessAlertTodo(BusinessAlertBo bo, PageQuery pageQuery) { QueryWrapper wrapper = buildQueryWrapper(bo); - if (ObjectUtil.isEmpty(wrapper)){ - return new TableDataInfo<>(); - } - wrapper.eq("t.node_type", 1); wrapper.in("t.approver", remoteWorkflowService.getPermissions()); wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); @@ -246,11 +230,10 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { //根据当前用户职能获取识别类型 List postVoList = remoteLablePostService.selectLabelByList(bo.getPostCode(), LoginHelper.getDeptId()); - if (ObjectUtil.isEmpty(postVoList)) { - return null; - } - wrapper.in("t.label_en",StreamUtils.toList(postVoList, RemoteAiLabelPostVo::getLabelEn)); + if (ObjectUtil.isNotEmpty(postVoList)) { + wrapper.in("t.label_en",StreamUtils.toList(postVoList, RemoteAiLabelPostVo::getLabelEn)); + } //排除状态为验证状态预警 wrapper.ne("t.handle_type", BusinessStatusEnum.VERIFY.getStatus()); diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java index 53ba22a..1e0d558 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysDepartBoundaryController.java @@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.domain.SysDepartBoundary ; import org.dromara.common.core.domain.R; import org.dromara.common.mybatis.core.page.PageQuery; @@ -35,6 +36,7 @@ public class SysDepartBoundaryController extends BaseController { @Operation(summary ="查询部门的地理位置",description = "查询部门的地理位置") @GetMapping(value = "/listJson") public R listJson(SysDepartBoundary departBoundary) { + departBoundary.setDeptId(String.valueOf(LoginHelper.getDeptId())); String listJson = departBoundaryService.listJson(departBoundary); return R.ok("查询成功!",listJson); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java index 783530c..ee494ad 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java @@ -34,10 +34,13 @@ public class RemoteLabelPostServicelmpl implements RemoteLabelPostService { @Override public List selectLabelByList(String postCode, Long deptId) { + //获取岗位只能Id SysPostVo sysPostVo = sysPostService.selectLableByList(postCode, deptId); if(sysPostVo != null){ - List aiLablePostVos = aiLabelPostService.queryListByLabel(sysPostVo.getPostId()); - List aiLabelList = aiLabelService.queryListByLabel(StreamUtils.toList(aiLablePostVos,AiLabelPost::getLabelId)); + //根据岗位职能Id获取标签id + List aiLabelPostVos = aiLabelPostService.queryListByLabel(sysPostVo.getPostId()); + //根据标签id获取标签 + List aiLabelList = aiLabelService.queryListByLabel(StreamUtils.toList(aiLabelPostVos,AiLabelPost::getLabelId)); return aiLabelList.stream() .map(aiLabel -> { RemoteAiLabelPostVo remoteAiLabelPostVo = new RemoteAiLabelPostVo(); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java index 137d1ab..c5e2d02 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/dubbo/RemoteWorkflowServiceImpl.java @@ -1,9 +1,11 @@ package org.dromara.workflow.dubbo; +import cn.dev33.satoken.stp.StpUtil; import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.workflow.api.RemoteWorkflowService; +import org.dromara.workflow.api.domain.FlowDepartVo; import org.dromara.workflow.api.domain.RemoteCompleteTask; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; @@ -13,6 +15,9 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; /** * RemoteWorkflowServiceImpl @@ -29,6 +34,8 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService { private final IFlwTaskService flwTaskService; + private static final ExecutorService executor = Executors.newFixedThreadPool(10); + @Override public boolean deleteInstance(List businessIds) { return workflowService.deleteInstance(businessIds); @@ -69,6 +76,11 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService { return workflowService.startWorkFlow(startProcess); } + @Override + public Boolean startWorkFlowBatch(List startProcess) { + return workflowService.startWorkFlowBatch(startProcess); + } + @Override public Map> currentTaskAllUser(List taskIds) { return flwTaskService.currentTaskAllUser(taskIds); @@ -89,6 +101,11 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService { return workflowService.currentTaskAllUser(taskId); } + @Override + public FlowDepartVo getFlowDepart(Long deptId) { + return flwTaskService.getFlowDepart(deptId); + } + @Override public boolean completeTask(RemoteCompleteTask completeTask) { return workflowService.completeTask(completeTask); diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java index 34d6364..56e6de2 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwDepartMapper.java @@ -1,7 +1,15 @@ package org.dromara.workflow.mapper; +import jakarta.validation.constraints.NotNull; +import org.apache.ibatis.annotations.Param; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.workflow.domain.FlowDepart; +import java.util.List; +import java.util.Map; + public interface FlwDepartMapper extends BaseMapperPlus { + FlowDepart getFlowDepart(@Param("deptId") Long deptId); + + Integer checkFlowDepart(@Param("deptIds") List departIds); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java index e6b5937..c8c478a 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/FlwDepartService.java @@ -6,4 +6,6 @@ public interface FlwDepartService { FlowDepart getInfo(String flowCode); FlowDepart bindDepart(FlowDepart flowDepart); + + FlowDepart getFlowDepart(Long deptId); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java index 7d896e1..e21c6c8 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -10,6 +10,7 @@ import org.dromara.warm.flow.core.service.impl.TaskServiceImpl; import org.dromara.warm.flow.orm.entity.FlowHisTask; import org.dromara.warm.flow.orm.entity.FlowNode; import org.dromara.warm.flow.orm.entity.FlowTask; +import org.dromara.workflow.api.domain.FlowDepartVo; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.FlowHisTaskVo; @@ -211,4 +212,10 @@ public interface IFlwTaskService { */ List getByNodeCodes(String nodeCode,Long definitionId); + /** + * 根据部门获取流程 + * @param deptId + * @return + */ + FlowDepartVo getFlowDepart(Long deptId); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java index c611d1a..e970236 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/WorkflowService.java @@ -94,4 +94,11 @@ public interface WorkflowService { List currentTaskAllUser(Long taskId); + /** + * 批量启动流程 + * + * @param startProcess 参数 + * @return 结果 + */ + Boolean startWorkFlowBatch(List startProcess); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java index de6e64a..5cfb40c 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDepartServiceImpl.java @@ -3,12 +3,15 @@ package org.dromara.workflow.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; import org.dromara.workflow.domain.FlowDepart; import org.dromara.workflow.mapper.FlwDepartMapper; import org.dromara.workflow.service.FlwDepartService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Map; + @Service @RequiredArgsConstructor public class FlwDepartServiceImpl extends ServiceImpl implements FlwDepartService { @@ -29,8 +32,18 @@ public class FlwDepartServiceImpl extends ServiceImpl 0){ + throw new ServiceException("所选的部门中,已存在在其他流程中,请检查后在提交!"); + } + this.baseMapper.insert(flowDepart); return flowDepart; } + + @Override + public FlowDepart getFlowDepart(Long deptId) { + return this.baseMapper.getFlowDepart(deptId); + } } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 6f3a21c..e149a0d 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -40,11 +40,13 @@ import org.dromara.warm.flow.orm.entity.*; import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; +import org.dromara.workflow.api.domain.FlowDepartVo; import org.dromara.workflow.api.domain.RemoteStartProcessReturn; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.enums.MessageTypeEnum; import org.dromara.workflow.common.enums.TaskAssigneeType; import org.dromara.workflow.common.enums.TaskStatusEnum; +import org.dromara.workflow.domain.FlowDepart; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; @@ -52,8 +54,10 @@ import org.dromara.workflow.handler.FlowProcessEventHandler; import org.dromara.workflow.handler.WorkflowPermissionHandler; import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwTaskMapper; +import org.dromara.workflow.service.FlwDepartService; import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.utils.WorkflowUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; @@ -90,7 +94,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { private final FlowProcessEventHandler flowProcessEventHandler; private final FlwTaskMapper flwTaskMapper; private final FlwCategoryMapper flwCategoryMapper; - + private final FlwDepartService flwDepartService; @DubboReference private RemoteUserService remoteUserService; @@ -324,6 +328,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService { return nodeService.getByNodeCodes(Collections.singletonList(nodeCode), definitionId); } + @Override + public FlowDepartVo getFlowDepart(Long deptId) { + FlowDepart flowDepart = flwDepartService.getFlowDepart(deptId); + FlowDepartVo flowDepartVo = new FlowDepartVo(); + BeanUtils.copyProperties(flowDepart, flowDepartVo); + return flowDepartVo; + } + /** * 查询当前用户的已办任务 * diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 494fe0d..d113438 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -3,6 +3,7 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.StringUtils; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.warm.flow.core.entity.Node; @@ -18,6 +19,7 @@ import org.dromara.workflow.service.IFlwDefinitionService; import org.dromara.workflow.service.IFlwInstanceService; import org.dromara.workflow.service.IFlwTaskService; import org.dromara.workflow.service.WorkflowService; +import org.dromara.workflow.utils.BatchProcessorUtil; import org.springframework.stereotype.Service; import java.lang.reflect.Field; @@ -34,6 +36,7 @@ import java.util.stream.Collectors; @ConditionalOnEnable @RequiredArgsConstructor @Service +@Slf4j public class WorkflowServiceImpl implements WorkflowService { private final IFlwInstanceService flwInstanceService; @@ -152,4 +155,16 @@ public class WorkflowServiceImpl implements WorkflowService { public List currentTaskAllUser(Long taskId) { return flwTaskService.currentTaskAllUser(taskId); } + + @Override + public Boolean startWorkFlowBatch(List startProcess) { + try { + startProcess.forEach(startProcessBo -> { + flwTaskService.startWorkFlow(BeanUtil.toBean(startProcessBo, StartProcessBo.class)); + }); + } catch (Exception e) { + return false; + } + return true; + } } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/utils/BatchProcessorUtil.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/utils/BatchProcessorUtil.java new file mode 100644 index 0000000..34f68ab --- /dev/null +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/utils/BatchProcessorUtil.java @@ -0,0 +1,39 @@ +package org.dromara.workflow.utils; + +import java.util.List; +import java.util.function.Consumer; + +/** + * 分批处理工具类 + */ +public class BatchProcessorUtil { + + /** + * 分批处理数据 + * + * @param dataList 数据集合 + * @param batchSize 每批处理的数据量 + * @param startIndex 起始位置 + * @param batchHandler 每批数据的处理逻辑 + * @return 下一次的起始位置 + */ + public static boolean processBatches(List dataList, int batchSize, int startIndex, Consumer> batchHandler) { + if (dataList == null || dataList.isEmpty()) { + return true; // 数据为空,直接返回当前起始位置 + } + + int totalSize = dataList.size(); + while (startIndex < totalSize) { + int endIndex = Math.min(startIndex + batchSize, totalSize); + List batch = dataList.subList(startIndex, endIndex); + + // 处理当前批次的数据 + batchHandler.accept(batch); + + // 更新起始位置 + startIndex = endIndex; + } + + return startIndex >= totalSize; // 返回下一次的起始位置 + } +} diff --git a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml index 782aa3b..e8d2908 100644 --- a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml +++ b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwDepartMapper.xml @@ -4,5 +4,19 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + From a793f83667c61610410017eb699bc272a27162a3 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Mon, 17 Mar 2025 18:06:27 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=9A=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E5=B7=A5=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dk-modules/business/pom.xml | 4 +- .../BusinessOperationController.java | 14 ++++++ .../controller/BusinessTaskController.java | 2 + .../business/domain/BusinessOperation.java | 2 +- .../dromara/business/domain/BusinessTask.java | 13 ++++-- .../domain/bo/BusinessOperationBo.java | 2 + .../business/domain/bo/BusinessTaskBo.java | 28 ++++++------ .../business/domain/vo/BusinessTaskVo.java | 20 ++++----- .../business/mapper/BusinessTaskMapper.java | 9 ++++ .../service/impl/BusinessTaskServiceImpl.java | 19 +++++--- .../mapper/business/BusinessTaskMapper.xml | 43 +++++++++++++++++++ 11 files changed, 118 insertions(+), 38 deletions(-) diff --git a/dk-modules/business/pom.xml b/dk-modules/business/pom.xml index 8cb8480..2d00876 100644 --- a/dk-modules/business/pom.xml +++ b/dk-modules/business/pom.xml @@ -1,6 +1,6 @@ - 4.0.0 diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessOperationController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessOperationController.java index c8cad86..634693c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessOperationController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessOperationController.java @@ -83,6 +83,20 @@ public class BusinessOperationController extends BaseController { return toAjax(businessOperationService.insertByBo(bo)); } + /** + * 上传航线-绑定工单 + */ + @SaCheckPermission("system:operation:add") + @Log(title = "运营中心-上传航线-绑定工单", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/bindFile") + public R bindFile(@Validated(AddGroup.class) BusinessOperationBo bo) { + //根据工单绘制上传航线,绑定航线,填报信息 + return toAjax(businessOperationService.insertByBo(bo)); + } + + + /** * 修改运营中心-工单处理 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessTaskController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessTaskController.java index 4e9bc43..f16fb86 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessTaskController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessTaskController.java @@ -2,6 +2,7 @@ package org.dromara.business.controller; import java.util.List; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; @@ -34,6 +35,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; @RequiredArgsConstructor @RestController @RequestMapping("/task") +@Tag(name = "预警工单相关操作") public class BusinessTaskController extends BaseController { private final IBusinessTaskService businessTaskService; diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessOperation.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessOperation.java index 758ef1f..030b6f3 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessOperation.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessOperation.java @@ -61,5 +61,5 @@ public class BusinessOperation { */ private String deviceSn; - + private String tenantId; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java index 8b3498b..ccc39b1 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; +import java.awt.*; import java.io.Serial; import java.math.BigDecimal; import java.util.Date; @@ -29,9 +30,8 @@ public class BusinessTask extends BaseEntity { @TableId(value = "id") private Long id; - private BigDecimal lng; - - private BigDecimal lat; + @TableField(fill = FieldFill.INSERT) + private Polygon polygonRegion; /** * 期望完成时间 @@ -42,18 +42,23 @@ public class BusinessTask extends BaseEntity { /** * 任务描述 * */ - private String explain; + @TableField(fill = FieldFill.INSERT) + private String demand; /** * 完成时间 * */ @TableField(fill = FieldFill.UPDATE) + private Date completeTime; /** *工单类型(0:拍照 1:喊话) * */ + @TableField(fill = FieldFill.INSERT) private String taskType; /** * 工单状态(0预约中 1 等待中,2执行中 3 未完成 4已完结 ) * */ private String status; + + private String tenantId; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessOperationBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessOperationBo.java index dbc5625..126dc38 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessOperationBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessOperationBo.java @@ -36,6 +36,8 @@ public class BusinessOperationBo { @NotNull(message = "工单id不能为空", groups = { AddGroup.class, EditGroup.class }) private Long taskId; + private String tenantId; + /** * 处理人id */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessTaskBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessTaskBo.java index a35f6ad..9c4faa7 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessTaskBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessTaskBo.java @@ -1,6 +1,7 @@ package org.dromara.business.domain.bo; +import com.alibaba.excel.annotation.ExcelProperty; import org.dromara.business.domain.BusinessTask; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -9,6 +10,8 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; + +import java.awt.*; import java.util.Date; /** @@ -25,25 +28,16 @@ public class BusinessTaskBo extends BaseEntity { /** * */ - @NotNull(message = "不能为空", groups = { EditGroup.class }) - private Long id; - /** - * - */ - @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long lng; + private Long id; - /** - * - */ - @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long lat; + @NotNull(message = "地图不能为空", groups = { EditGroup.class }) + private Polygon polygonRegion; /** * 工单类型(0:拍照 1:喊话) */ - @NotBlank(message = "工单类型(0:拍照 1:喊话)不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotBlank(message = "工单类型 不能为空", groups = { AddGroup.class, EditGroup.class }) private String taskType; /** @@ -56,7 +50,7 @@ public class BusinessTaskBo extends BaseEntity { * 说明 */ @NotBlank(message = "说明不能为空", groups = { AddGroup.class, EditGroup.class }) - private String explain; + private String demand; /** * 完成时间 @@ -70,5 +64,11 @@ public class BusinessTaskBo extends BaseEntity { private String status; + private String startTime; + private String endTime; + + private String tenantId; + private String nickName; + private String deptName; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessTaskVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessTaskVo.java index 8636030..2e0c74e 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessTaskVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessTaskVo.java @@ -1,5 +1,6 @@ package org.dromara.business.domain.vo; +import java.awt.*; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -37,17 +38,7 @@ public class BusinessTaskVo implements Serializable { @ExcelProperty(value = "") private Long id; - /** - * - */ - @ExcelProperty(value = "") - private Long lng; - - /** - * - */ - @ExcelProperty(value = "") - private Long lat; + private Polygon polygonRegion; /** * 工单类型(0:拍照 1:喊话) @@ -66,7 +57,7 @@ public class BusinessTaskVo implements Serializable { * 说明 */ @ExcelProperty(value = "说明") - private String explain; + private String demand; /** * 完成时间 @@ -81,5 +72,10 @@ public class BusinessTaskVo implements Serializable { @ExcelDictFormat(readConverterExp = "0=预约中,1=,等=待中,2执行中,3=,未=完成,4=已完结") private String status; + @ExcelProperty(value = "完成时间") + private Long createBy; + private String nickName; + private Long createDept; + private String deptName; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessTaskMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessTaskMapper.java index 5275417..c4a77b2 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessTaskMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessTaskMapper.java @@ -1,9 +1,16 @@ package org.dromara.business.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; import org.dromara.business.domain.BusinessTask; +import org.dromara.business.domain.bo.BusinessTaskBo; import org.dromara.business.domain.vo.BusinessTaskVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.List; /** * 工单预约Mapper接口 @@ -15,4 +22,6 @@ public interface BusinessTaskMapper extends BaseMapperPlus queryPageList(@Param("page") Page page, @Param("bo") BusinessTaskBo bo); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessTaskServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessTaskServiceImpl.java index a9c9302..b206cb5 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessTaskServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessTaskServiceImpl.java @@ -13,9 +13,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.helper.DataPermissionHelper; +import org.dromara.system.api.model.LoginUser; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Collection; @@ -52,8 +55,7 @@ public class BusinessTaskServiceImpl implements IBusinessTaskService { */ @Override public TableDataInfo queryPageList(BusinessTaskBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + Page result = baseMapper.queryPageList(pageQuery.build(),bo); return TableDataInfo.build(result); } @@ -72,11 +74,9 @@ public class BusinessTaskServiceImpl implements IBusinessTaskService { private LambdaQueryWrapper buildQueryWrapper(BusinessTaskBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(bo.getLng() != null, BusinessTask::getLng, bo.getLng()); - lqw.eq(bo.getLat() != null, BusinessTask::getLat, bo.getLat()); lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), BusinessTask::getTaskType, bo.getTaskType()); lqw.eq(bo.getExpectTime() != null, BusinessTask::getExpectTime, bo.getExpectTime()); - lqw.eq(StringUtils.isNotBlank(bo.getExplain()), BusinessTask::getExplain, bo.getExplain()); + lqw.eq(StringUtils.isNotBlank(bo.getDemand()), BusinessTask::getDemand, bo.getDemand()); lqw.eq(bo.getCompleteTime() != null, BusinessTask::getCompleteTime, bo.getCompleteTime()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BusinessTask::getStatus, bo.getStatus()); return lqw; @@ -90,6 +90,15 @@ public class BusinessTaskServiceImpl implements IBusinessTaskService { */ @Override public Boolean insertByBo(BusinessTaskBo bo) { + // 获取当前登录用户信息 + LoginUser currentUser = DataPermissionHelper.getVariable("user"); + bo.setCreateBy(currentUser.getUserId()); + bo.setNickName(currentUser.getNickname()); + bo.setCreateDept(currentUser.getDeptId()); + bo.setDeptName(currentUser.getDeptName()); + bo.setTenantId(currentUser.getTenantId()); + bo.setStatus("0"); + bo.setCreateTime(new Date()); BusinessTask add = MapstructUtils.convert(bo, BusinessTask.class); boolean flag = baseMapper.insert(add) > 0; if (flag) { diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml index 72e21e6..7638879 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml @@ -4,6 +4,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + From 535eda6d96f44e0caa6c0fe7f703345c3f6e5558 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Mon, 17 Mar 2025 18:26:05 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/business/domain/BusinessTask.java | 3 ++- .../java/org/dromara/business/domain/bo/BusinessTaskBo.java | 3 ++- .../java/org/dromara/business/domain/vo/BusinessTaskVo.java | 3 ++- .../src/main/resources/mapper/business/BusinessTaskMapper.xml | 4 +++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java index ccc39b1..7f45208 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessTask.java @@ -31,8 +31,9 @@ public class BusinessTask extends BaseEntity { private Long id; @TableField(fill = FieldFill.INSERT) - private Polygon polygonRegion; + private String polygonRegion; + private String verbalTrick; /** * 期望完成时间 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessTaskBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessTaskBo.java index 9c4faa7..482c0a9 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessTaskBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessTaskBo.java @@ -32,7 +32,7 @@ public class BusinessTaskBo extends BaseEntity { private Long id; @NotNull(message = "地图不能为空", groups = { EditGroup.class }) - private Polygon polygonRegion; + private String polygonRegion; /** * 工单类型(0:拍照 1:喊话) @@ -40,6 +40,7 @@ public class BusinessTaskBo extends BaseEntity { @NotBlank(message = "工单类型 不能为空", groups = { AddGroup.class, EditGroup.class }) private String taskType; + private String verbalTrick; /** * 期望完成时间 */ diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessTaskVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessTaskVo.java index 2e0c74e..5620b22 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessTaskVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessTaskVo.java @@ -38,7 +38,7 @@ public class BusinessTaskVo implements Serializable { @ExcelProperty(value = "") private Long id; - private Polygon polygonRegion; + private String polygonRegion; /** * 工单类型(0:拍照 1:喊话) @@ -53,6 +53,7 @@ public class BusinessTaskVo implements Serializable { @ExcelProperty(value = "期望完成时间") private Date expectTime; + private String verbalTrick; /** * 说明 */ diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml index 7638879..8c2e611 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessTaskMapper.xml @@ -16,6 +16,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + +