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/DelegateInfoMapper.java |  123 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 0 deletions(-)

diff --git a/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/mapper/DelegateInfoMapper.java b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/mapper/DelegateInfoMapper.java
new file mode 100644
index 0000000..d685f95
--- /dev/null
+++ b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/mapper/DelegateInfoMapper.java
@@ -0,0 +1,123 @@
+package jnpf.flowable.mapper;
+
+import cn.hutool.core.collection.CollUtil;
+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.DelegateEntity;
+import jnpf.flowable.entity.DelegateInfoEntity;
+import jnpf.flowable.model.delegate.DelegateInfoModel;
+import jnpf.flowable.model.delegate.DelegateListVO;
+import jnpf.flowable.model.delegate.DelegatePagination;
+import jnpf.util.JsonUtil;
+import jnpf.util.UserProvider;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+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/9/2 13:39
+ */
+public interface DelegateInfoMapper extends SuperMapper<DelegateInfoEntity> {
+
+    default List<DelegateListVO> getList(DelegatePagination pagination) {
+        Integer type = ObjectUtil.equals(pagination.getType(), 2) ? 0 : 1;
+        String userId = UserProvider.getLoginUserId();
+        MPJLambdaWrapper<DelegateInfoEntity> wrapper = JoinWrappers.lambda(DelegateInfoEntity.class)
+                .leftJoin(DelegateEntity.class, DelegateEntity::getId, DelegateInfoEntity::getDelegateId)
+                .selectAs(DelegateInfoEntity::getId, DelegateInfoModel::getId)
+                .selectAs(DelegateInfoEntity::getDelegateId, DelegateInfoModel::getDelegateId)
+                .selectAs(DelegateInfoEntity::getToUserName, DelegateInfoModel::getToUserName)
+                .selectAs(DelegateInfoEntity::getStatus, DelegateInfoModel::getConfirmStatus)
+                .selectAs(DelegateEntity::getFlowName, DelegateInfoModel::getFlowName)
+                .selectAs(DelegateEntity::getUserName, DelegateInfoModel::getUserName)
+                .selectAs(DelegateEntity::getStartTime, DelegateInfoModel::getStartTime)
+                .selectAs(DelegateEntity::getEndTime, DelegateInfoModel::getEndTime)
+                .selectAs(DelegateEntity::getType, DelegateInfoModel::getType)
+                .selectAs(DelegateEntity::getDescription, DelegateInfoModel::getDescription)
+                .eq(DelegateInfoEntity::getToUserId, userId)
+                .eq(DelegateEntity::getType, type);
+
+        String keyword = pagination.getKeyword();
+        if (StringUtils.isNotBlank(keyword)) {
+            wrapper.and(t -> t.like(DelegateEntity::getUserName, keyword).or().like(DelegateEntity::getFlowName, keyword));
+        }
+
+        wrapper.orderByDesc(DelegateInfoEntity::getCreatorTime);
+        Page<DelegateInfoModel> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
+        Page<DelegateInfoModel> data = this.selectJoinPage(page, DelegateInfoModel.class, wrapper);
+        List<DelegateInfoModel> dataList = pagination.setData(data.getRecords(), page.getTotal());
+
+        List<DelegateListVO> voList = new ArrayList<>();
+        long time = new Date().getTime();
+        List<String> delegateIds = dataList.stream().map(DelegateInfoModel::getDelegateId).distinct().collect(Collectors.toList());
+        List<DelegateInfoEntity> list = this.getList(delegateIds);
+        for (DelegateInfoModel model : dataList) {
+            DelegateListVO vo = JsonUtil.getJsonToBean(model, DelegateListVO.class);
+            List<DelegateInfoEntity> infoList = list.stream()
+                    .filter(e -> ObjectUtil.equals(e.getDelegateId(), model.getDelegateId())).collect(Collectors.toList());
+            long rejectCount = infoList.stream().filter(e -> ObjectUtil.equals(e.getStatus(), 2)).count();
+            long acceptCount = infoList.stream().filter(e -> ObjectUtil.equals(e.getStatus(), 1)).count();
+            if (time >= vo.getEndTime() || rejectCount == infoList.size()) {// 宸插け鏁堬紝1銆佹墍鏈変汉閮芥嫆缁濓紱2銆佸埌杈剧粨鏉熸椂闂存垨缁堟濮旀墭
+                vo.setStatus(2);
+            } else if (time >= vo.getStartTime() && acceptCount > 0) {// 鐢熸晥涓紝瀵规柟鎺ュ彈涓斿埌杈惧紑濮嬫椂闂寸殑鐘舵��
+                vo.setStatus(1);
+            } else {// 鏈敓鏁堬紝涓ょ鍦烘櫙1锛氬鏂瑰凡鎺ュ彈浣嗘湭杈惧埌寮�濮嬫椂闂寸姸鎬佷负鏈敓鏁堬紝2銆佸鏂规湭鎺ュ彈鐘舵�佷负鏈敓鏁�
+                vo.setStatus(0);
+            }
+            voList.add(vo);
+        }
+        return voList;
+    }
+
+
+    default List<DelegateInfoEntity> getList(List<String> delegateIds) {
+        if (CollUtil.isEmpty(delegateIds)) {
+            return new ArrayList<>();
+        }
+        QueryWrapper<DelegateInfoEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().in(DelegateInfoEntity::getDelegateId, delegateIds);
+        return this.selectList(queryWrapper);
+    }
+
+    default List<DelegateInfoEntity> getList(String delegateId) {
+        QueryWrapper<DelegateInfoEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(DelegateInfoEntity::getDelegateId, delegateId);
+        return this.selectList(queryWrapper);
+    }
+
+    default List<DelegateInfoEntity> getByToUserId(String toUserId) {
+        QueryWrapper<DelegateInfoEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(DelegateInfoEntity::getToUserId, toUserId);
+        return this.selectList(queryWrapper);
+    }
+
+    default List<DelegateInfoEntity> getByToUserIds(List<String> userIds) {
+        List<DelegateInfoEntity> resList = new ArrayList<>();
+        if (CollUtil.isEmpty(userIds)) {
+            return resList;
+        }
+        QueryWrapper<DelegateInfoEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().in(DelegateInfoEntity::getToUserId, userIds);
+        resList = this.selectList(queryWrapper);
+        return resList;
+    }
+
+    default void delete(String delegateId) {
+        QueryWrapper<DelegateInfoEntity> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(DelegateInfoEntity::getDelegateId, delegateId);
+        this.delete(wrapper);
+    }
+
+
+}

--
Gitblit v1.8.0