From 50ee6ccb8d8036ffaa2aabb4e4999c14a05b45a3 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 30 九月 2025 16:35:12 +0800
Subject: [PATCH] 资产管理数据权限修改

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetItemServiceImpl.java |   68 +++++++++++++++++++++++++++++++++-
 1 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetItemServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetItemServiceImpl.java
index b307d20..652a386 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetItemServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetItemServiceImpl.java
@@ -1,16 +1,26 @@
 package com.ruoyi.system.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.system.emums.ApprovalStatusEnum;
 import com.ruoyi.system.mapper.OaApprovalApplicationAssetItemMapper;
+import com.ruoyi.system.model.AssetMain;
 import com.ruoyi.system.model.OaApprovalApplicationAssetItem;
+import com.ruoyi.system.model.OaApprovalApplications;
 import com.ruoyi.system.query.ApprovalDetailQuery;
+import com.ruoyi.system.service.AssetMainService;
 import com.ruoyi.system.service.OaApprovalApplicationAssetItemService;
+import com.ruoyi.system.service.OaApprovalApplicationsService;
 import com.ruoyi.system.vo.GrabListVO;
-import com.ruoyi.system.vo.PurchaseListVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -21,8 +31,10 @@
  * @since 2025-09-15
  */
 @Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class OaApprovalApplicationAssetItemServiceImpl extends ServiceImpl<OaApprovalApplicationAssetItemMapper, OaApprovalApplicationAssetItem> implements OaApprovalApplicationAssetItemService {
-
+    private final AssetMainService assetMainService;
+    private final OaApprovalApplicationsService oaApprovalApplicationsService;
     @Override
     public PageInfo<GrabListVO> pageList(ApprovalDetailQuery query) {
         PageInfo<GrabListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
@@ -30,4 +42,56 @@
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    @Override
+    public void validateAssetStatus(List<Integer> assetMainIds) {
+        if (CollUtil.isEmpty(assetMainIds)) {
+            return;
+        }
+
+        // 1. 根据资产ID列表查询资产关联表
+        List<OaApprovalApplicationAssetItem> assetItems = this.lambdaQuery()
+                .in(OaApprovalApplicationAssetItem::getAssetMainId, assetMainIds)
+                .list();
+
+        if (CollUtil.isEmpty(assetItems)) {
+            return;
+        }
+
+        // 2. 收集所有资产关联表中的审批申请ID
+        List<Integer> approvalApplicationIds = assetItems.stream()
+                .map(OaApprovalApplicationAssetItem::getApprovalApplicationId)
+                .distinct()
+                .collect(Collectors.toList());
+
+        // 3. 查询待审核状态的审批记录
+        List<OaApprovalApplications> pendingApplications = oaApprovalApplicationsService.lambdaQuery()
+                .in(OaApprovalApplications::getId, approvalApplicationIds)
+                .eq(OaApprovalApplications::getApprovalStatus, ApprovalStatusEnum.PENDING.getCode())
+                .list();
+
+        if (CollUtil.isNotEmpty(pendingApplications)) {
+            // 4. 如果存在待审批记录,获取涉及的资产ID
+            Set<Integer> pendingAssetIds = this.lambdaQuery()
+                    .in(OaApprovalApplicationAssetItem::getApprovalApplicationId,
+                            pendingApplications.stream()
+                                    .map(OaApprovalApplications::getId)
+                                    .collect(Collectors.toList()))
+                    .list()
+                    .stream()
+                    .map(OaApprovalApplicationAssetItem::getAssetMainId)
+                    .distinct()
+                    .collect(Collectors.toSet());
+            //取交集
+            pendingAssetIds.retainAll(assetMainIds);
+            // 获取资产信息用于错误提示
+            List<AssetMain> pendingAssets = assetMainService.listByIds(pendingAssetIds);
+            String assetNames = pendingAssets.stream()
+                    .map(AssetMain::getAssetName)
+                    .collect(Collectors.joining("、"));
+
+            throw new ServiceException("操作失败," + assetNames + "资产已存在待审批的记录");
+        }
+    }
+
 }

--
Gitblit v1.7.1