From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/mapper/CirculateMapper.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 113 insertions(+), 0 deletions(-)

diff --git a/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/mapper/CirculateMapper.java b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/mapper/CirculateMapper.java
new file mode 100644
index 0000000..9961478
--- /dev/null
+++ b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/mapper/CirculateMapper.java
@@ -0,0 +1,113 @@
+package jnpf.flowable.mapper;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import jnpf.base.mapper.SuperMapper;
+import jnpf.flowable.entity.CirculateEntity;
+import jnpf.flowable.entity.TaskEntity;
+import jnpf.flowable.entity.TemplateEntity;
+import jnpf.flowable.enums.TaskStatusEnum;
+import jnpf.flowable.model.operator.OperatorVo;
+import jnpf.flowable.model.task.TaskPagination;
+import jnpf.util.StringUtil;
+import jnpf.util.UserProvider;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 绫荤殑鎻忚堪
+ *
+ * @author JNPF@YinMai Info. Co., Ltd
+ * @version 5.0.x
+ * @since 2024/4/18 16:00
+ */
+public interface CirculateMapper extends SuperMapper<CirculateEntity> {
+
+    default List<CirculateEntity> getList(String taskId) {
+        return getList(taskId, null);
+    }
+
+    default List<CirculateEntity> getList(String taskId, String nodeCode) {
+        QueryWrapper<CirculateEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CirculateEntity::getTaskId, taskId);
+        if (StringUtil.isNotEmpty(nodeCode)) {
+            queryWrapper.lambda().eq(CirculateEntity::getNodeCode, nodeCode);
+        }
+        return this.selectList(queryWrapper);
+    }
+
+
+    default List<OperatorVo> getList(TaskPagination pagination) {
+        String userId = StringUtil.isNotEmpty(pagination.getUserId()) ? pagination.getUserId() : UserProvider.getLoginUserId();
+        MPJLambdaWrapper<CirculateEntity> wrapper = JoinWrappers.lambda(CirculateEntity.class)
+                .selectAll(TaskEntity.class)
+                .leftJoin(TaskEntity.class, TaskEntity::getId, CirculateEntity::getTaskId)
+                .leftJoin(TemplateEntity.class, TemplateEntity::getId, TaskEntity::getTemplateId)
+                .selectAs(TemplateEntity::getSystemId, OperatorVo::getSystemName)
+                .selectAs(CirculateEntity::getNodeName, OperatorVo::getNodeName)
+                .selectAs(CirculateEntity::getNodeCode, OperatorVo::getNodeCode)
+                .selectAs(CirculateEntity::getId, OperatorVo::getId)
+                .selectAs(TaskEntity::getId, OperatorVo::getTaskId)
+                .selectAs(TaskEntity::getUrgent, OperatorVo::getFlowUrgent)
+                .selectAs(CirculateEntity::getCreatorTime, OperatorVo::getCreatorTime)
+                .ne(TaskEntity::getStatus, TaskStatusEnum.CANCEL.getCode())
+                .eq(CirculateEntity::getUserId, userId);
+        //鍏抽敭瀛楋紙娴佺▼鍚嶇О銆佹祦绋嬬紪鐮侊級
+        String keyWord = pagination.getKeyword();
+        if (ObjectUtil.isNotEmpty(keyWord)) {
+            wrapper.and(t -> t.like(TaskEntity::getEnCode, keyWord).or().like(TaskEntity::getFullName, keyWord));
+        }
+        //鏃ユ湡鑼冨洿锛堣繎7澶┿�佽繎1鏈堛�佽繎3鏈堛�佽嚜瀹氫箟锛�
+        if (ObjectUtil.isNotEmpty(pagination.getStartTime()) && ObjectUtil.isNotEmpty(pagination.getEndTime())) {
+            wrapper.between(TaskEntity::getStartTime, new Date(pagination.getStartTime()), new Date(pagination.getEndTime()));
+        }
+        //鎵�灞炴祦绋�
+        String templateId = pagination.getTemplateId();
+        if (ObjectUtil.isNotEmpty(templateId)) {
+            wrapper.eq(TaskEntity::getTemplateId, templateId);
+        }
+        //鎵�灞炲垎绫�
+        String category = pagination.getFlowCategory();
+        if (ObjectUtil.isNotEmpty(category)) {
+            List<String> categoryList = Arrays.stream(category.split(",")).collect(Collectors.toList());
+            wrapper.in(TaskEntity::getFlowCategory, categoryList);
+        }
+        //鏄惁宸茶
+        Integer status = pagination.getStatus();
+        if (ObjectUtil.isNotEmpty(status)) {
+            wrapper.in(CirculateEntity::getCirculateRead, status);
+        }
+        //鍙戣捣浜哄憳
+        String creatorUserId = pagination.getCreatorUserId();
+        if (ObjectUtil.isNotEmpty(creatorUserId)) {
+            wrapper.in(TaskEntity::getCreatorUserId, creatorUserId);
+        }
+        //绱ф�ョ▼搴�
+        Integer flowUrgent = pagination.getFlowUrgent();
+        if (ObjectUtil.isNotEmpty(flowUrgent)) {
+            wrapper.in(TaskEntity::getUrgent, flowUrgent);
+        }
+        //搴旂敤涓诲缓
+        String systemId = pagination.getSystemId();
+        if (ObjectUtil.isNotEmpty(systemId)) {
+            wrapper.eq(TemplateEntity::getSystemId, systemId);
+        }
+        wrapper.orderByDesc(CirculateEntity::getCreatorTime);
+        Page<OperatorVo> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
+        Page<OperatorVo> data = this.selectJoinPage(page, OperatorVo.class, wrapper);
+        return pagination.setData(data.getRecords(), page.getTotal());
+    }
+
+    default List<CirculateEntity> getNodeList(String taskId, String nodeId) {
+        QueryWrapper<CirculateEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CirculateEntity::getTaskId, taskId).like(CirculateEntity::getNodeId, nodeId)
+                .orderByDesc(CirculateEntity::getCreatorTime);
+        return this.selectList(queryWrapper);
+    }
+}

--
Gitblit v1.8.0