From 657698fd2fb32794932474648dbaee9e284e38c8 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 12 十月 2026 18:31:20 +0800
Subject: [PATCH] feat(bpm): 添加全局免审批功能支持

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdItemMapper.java |   50 ++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdItemMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdItemMapper.java
index 81d024d..1e8945c 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdItemMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/item/MesMdItemMapper.java
@@ -1,37 +1,62 @@
 package cn.iocoder.yudao.module.mes.dal.mysql.md.item;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.string.StrUtils;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.MesMdItemPageReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
-import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
 
 /**
  * MES 鐗╂枡浜у搧 Mapper
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 @Mapper
 public interface MesMdItemMapper extends BaseMapperX<MesMdItemDO> {
 
     default PageResult<MesMdItemDO> selectPage(MesMdItemPageReqVO reqVO, Collection<Long> itemTypeIds) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<MesMdItemDO>()
+        MPJLambdaWrapperX<MesMdItemDO> query = new MPJLambdaWrapperX<>();
+        query.selectAll(MesMdItemDO.class);
+        // 鍏宠仈鐗╂枡鍒嗙被锛屼粎鐢ㄤ簬鎺掑簭锛氬悓鍒嗙被鐨勭墿鏂欒仛鍦ㄤ竴璧凤紝鍒嗙被涔嬮棿鎸夊垎绫荤殑鏄剧ず鎺掑簭
+        query.leftJoin(MesMdItemTypeDO.class, MesMdItemTypeDO::getId, MesMdItemDO::getItemTypeId)
                 .likeIfPresent(MesMdItemDO::getCode, reqVO.getCode())
-                .likeIfPresent(MesMdItemDO::getName, reqVO.getName())
                 .inIfPresent(MesMdItemDO::getItemTypeId, itemTypeIds)
+                .inIfPresent(MesMdItemDO::getId,
+                        StrUtil.isBlank(reqVO.getIds()) ? null : StrUtils.splitToLong(reqVO.getIds(), ","))
                 .eqIfPresent(MesMdItemDO::getStatus, reqVO.getStatus())
                 .betweenIfPresent(MesMdItemDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(MesMdItemDO::getId));
+                .orderByAsc(MesMdItemTypeDO::getSort)
+                .orderByAsc(MesMdItemTypeDO::getCode)
+                .orderByAsc(MesMdItemDO::getCode);
+        if (StrUtil.isNotBlank(reqVO.getName())) {
+            String keyword = reqVO.getName().replaceAll("[\\s\\u3000-]+", "").replace("鍏�", "g");
+            if (keyword.isEmpty()) {
+                query.like(MesMdItemDO::getName, reqVO.getName());
+            } else {
+                query.and(w -> w.like(MesMdItemDO::getName, reqVO.getName())
+                        .or().apply("REPLACE(REPLACE(REPLACE(CONCAT(COALESCE(t.name,''),COALESCE(t.specification,'')), ' ', ''), '-', ''), '鍏�', 'g') LIKE {0}",
+                                "%" + keyword + "%"));
+            }
+        }
+        if (StrUtil.isNotBlank(reqVO.getSpecification())) {
+            String specification = reqVO.getSpecification().replace("鍏�", "g");
+            query.apply("REPLACE(t.specification, '鍏�', 'g') LIKE {0}", "%" + specification + "%");
+        }
+        return selectPage(reqVO, query);
     }
 
     default MesMdItemDO selectByCode(String code) {
@@ -55,6 +80,19 @@
     }
 
     /**
+     * 鎸� ID 鏌ヨ璁板綍锛堜笉杩囨护閫昏緫鍒犻櫎锛屽惈宸插垹闄よ锛�
+     * 鐢ㄤ簬"鍙栨秷鍚屾锛堥�昏緫鍒犻櫎锛夊悗閲嶆柊鍚屾"鏃跺垽鏂富閿槸鍚﹁鍗犵敤
+     */
+    @Select("SELECT * FROM mes_md_item WHERE id = #{id} LIMIT 1")
+    MesMdItemDO selectAnyById(Long id);
+
+    /**
+     * 鎭㈠閫昏緫鍒犻櫎鐨勮褰曪紙deleted 缃� 0锛�
+     */
+    @Update("UPDATE mes_md_item SET deleted = 0, update_time = NOW() WHERE id = #{id}")
+    int restoreById(Long id);
+
+    /**
      * 鎵归噺鏌ヨ宸插瓨鍦ㄧ殑 MDM 鐗╂枡 ID 闆嗗悎
      *
      * @param mdmItemIds MDM 鐗╂枡 ID 鍒楄〃

--
Gitblit v1.9.3