From f1e1ea5b322c4840711afbc7e069b4c280742807 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 21 十月 2025 19:54:13 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdServiceImpl.java | 72 +++++++++++++++++++++++------------- 1 files changed, 46 insertions(+), 26 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdServiceImpl.java index 97ed50b..44dd518 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdServiceImpl.java @@ -1,11 +1,13 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.system.constants.AssetDeptConstant; import com.ruoyi.system.dto.asset.AssetAdDTO; import com.ruoyi.system.mapper.AssetAdMapper; import com.ruoyi.system.mapper.AssetAdRentalRecordMapper; @@ -14,18 +16,17 @@ import com.ruoyi.system.query.AssetAdQuery; import com.ruoyi.system.service.AssetAdService; import com.ruoyi.system.service.AssetTypeService; +import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.vo.asset.AssetAdDetailVO; import com.ruoyi.system.vo.asset.AssetAdRentalRecordVO; import com.ruoyi.system.vo.asset.AssetAdVO; import lombok.RequiredArgsConstructor; -import org.apache.commons.lang3.StringUtils; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -44,6 +45,7 @@ public class AssetAdServiceImpl extends ServiceImpl<AssetAdMapper, AssetAd> implements AssetAdService { private final AssetTypeService assetTypeService; private final AssetAdRentalRecordMapper rentalRecordMapper; + private final ISysUserService sysUserService; @Override public void addAssetAd(AssetAdDTO dto) { @@ -51,6 +53,7 @@ assetAd.setAssetTypeId(2); assetAd.setAssetCode(generateCode()); assetAd.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + assetAd.setDeptId(Integer.parseInt(SecurityUtils.getLoginUser().getUser().getDeptId())); save(assetAd); } @@ -83,15 +86,30 @@ @Override public IPage<AssetAdVO> getPageList(AssetAdQuery query) { - // 1. 分页查询 AssetAd - Page<AssetAd> page = new Page<>(query.getPageNum(), query.getPageSize()); - LambdaQueryWrapper<AssetAd> queryWrapper = new LambdaQueryWrapper<AssetAd>() - .like(StringUtils.isNotBlank(query.getKeyword()), AssetAd::getAssetName, query.getKeyword()) - .or() - .like(StringUtils.isNotBlank(query.getKeyword()), AssetAd::getAssetCode, query.getKeyword()) - .orderByDesc(AssetAd::getCreateTime); + // 数据权限:超级管理员/资产管理部查看所有数据,其他部门查看当前及下级部门的数据 + Long userId = SecurityUtils.getUserId(); + boolean isAdmin = SecurityUtils.isAdmin(userId); - Page<AssetAd> assetPage = this.page(page, queryWrapper); + if (!isAdmin) { + try { + // 获取当前用户的部门名称 + String deptName = sysUserService.selectUserById(userId).getDeptName(); + + // 非超级管理员且非资产管理部,设置部门权限 + if (!AssetDeptConstant.ASSET_INVENTORY_DEPT_NAMES.contains(deptName)) { + query.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); + } + } catch (Exception e) { + // 如果获取部门信息失败,默认设置部门权限 + try { + query.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); + } catch (Exception ex) { + // ignore parse, leave null if cannot parse + } + } + } + // 1. 分页查询 AssetAd + Page<AssetAdVO> assetPage = this.baseMapper.getPageList(new Page<>(query.getPageNum(), query.getPageSize()), query); // 2. 如果没有数据,返回空分页 if (assetPage.getRecords().isEmpty()) { @@ -100,7 +118,7 @@ // 3. 获取所有资产ID List<Integer> assetAdIds = assetPage.getRecords().stream() - .map(AssetAd::getId) + .map(AssetAdVO::getId) .collect(Collectors.toList()); // 4. 查询相关租赁记录 @@ -118,30 +136,18 @@ .collect(Collectors.toMap(AssetAdRentalRecord::getAssetAdId, Function.identity())); // 6. 组装VO数据 - List<AssetAdVO> voList = new ArrayList<>(); - for (AssetAd asset : assetPage.getRecords()) { - AssetAdVO vo = BeanUtil.copyProperties(asset, AssetAdVO.class); - + for (AssetAdVO vo : assetPage.getRecords()) { // 设置租赁相关信息 - AssetAdRentalRecord currentRental = currentRentalMap.get(asset.getId()); + AssetAdRentalRecord currentRental = currentRentalMap.get(vo.getId()); if (currentRental != null) { vo.setCurrentUseBy(currentRental.getUseBy()); vo.setRentalPrice(currentRental.getRentalPrice()); vo.setUseDuration(calculateUseDuration(currentRental.getStartDate(), currentRental.getEndDate())); } - - voList.add(vo); } // 7. 返回分页结果 - Page<AssetAdVO> resultPage = new Page<>(query.getPageNum(), query.getPageSize()); - resultPage.setRecords(voList); - resultPage.setTotal(assetPage.getTotal()); - resultPage.setSize(assetPage.getSize()); - resultPage.setCurrent(assetPage.getCurrent()); - resultPage.setPages(assetPage.getPages()); - - return resultPage; + return assetPage; } /** @@ -181,4 +187,18 @@ return detailVO; } + + @Override + public void importAssetAd(List<AssetAdDTO> list) { + if (CollUtil.isNotEmpty(list)) { + List<AssetAd> collect = list.stream().map(item -> { + AssetAd assetAd = BeanUtil.copyProperties(item, AssetAd.class); + assetAd.setAssetTypeId(2); + assetAd.setAssetCode(generateCode()); + assetAd.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + return assetAd; + }).collect(Collectors.toList()); + saveBatch(collect); + } + } } -- Gitblit v1.7.1