From 9ec0ecb6e1a81f1ce55935b9ba7fbda6c3a8810a Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 15 十月 2025 15:27:00 +0800
Subject: [PATCH] 员工导入
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetWarehouseServiceImpl.java | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 110 insertions(+), 0 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetWarehouseServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetWarehouseServiceImpl.java
index c50fb16..a2dad76 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetWarehouseServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetWarehouseServiceImpl.java
@@ -1,10 +1,31 @@
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.core.domain.entity.TDept;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.dto.asset.AssetWarehouseDTO;
import com.ruoyi.system.mapper.AssetWarehouseMapper;
+import com.ruoyi.system.model.AssetInventoryRecord;
import com.ruoyi.system.model.AssetWarehouse;
+import com.ruoyi.system.query.AssetWarehousePageQuery;
+import com.ruoyi.system.service.AssetInventoryRecordService;
import com.ruoyi.system.service.AssetWarehouseService;
+import com.ruoyi.system.service.TDeptService;
+import com.ruoyi.system.vo.asset.AssetWarehouseVO;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
/**
* <p>
@@ -15,6 +36,95 @@
* @since 2025-09-15
*/
@Service
+@RequiredArgsConstructor
public class AssetWarehouseServiceImpl extends ServiceImpl<AssetWarehouseMapper, AssetWarehouse> implements AssetWarehouseService {
+ private final AssetInventoryRecordService assetInventoryRecordService;
+ private final TDeptService deptService;
+
+ @Override
+ public IPage<AssetWarehouseVO> getPageList(AssetWarehousePageQuery pageQuery) {
+ LambdaQueryWrapper<AssetWarehouse> queryWrapper = new LambdaQueryWrapper<>();
+ if (StringUtils.isNotBlank(pageQuery.getKeyword())) {
+ queryWrapper.like(AssetWarehouse::getWarehouseName, pageQuery.getKeyword())
+ .or()
+ .like(AssetWarehouse::getManagerName, pageQuery.getKeyword());
+ }
+ Page<AssetWarehouse> page = this.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()), queryWrapper);
+ Page<AssetWarehouseVO> pageVO = new Page<>();
+ BeanUtil.copyProperties(page, pageVO, "records");
+ List<AssetWarehouseVO> assetWarehouseVOS = BeanUtil.copyToList(page.getRecords(), AssetWarehouseVO.class);
+ if (CollUtil.isEmpty(assetWarehouseVOS)) {
+ return pageVO;
+ }
+ List<Integer> warehouseIds = assetWarehouseVOS.stream().map(AssetWarehouseVO::getId).collect(Collectors.toList());
+ List<Integer> deptIds = assetWarehouseVOS.stream().map(AssetWarehouseVO::getDeptId).distinct().collect(Collectors.toList());
+
+ List<TDept> sysDepts = deptService.listByIds(deptIds);
+ Map<Integer, String> deptMap = sysDepts.stream()
+ .collect(Collectors.toMap(TDept::getId, TDept::getDeptName));
+ //查询库存数量
+ Map<Integer, List<AssetInventoryRecord>> inventoryRecordMap = assetInventoryRecordService.lambdaQuery()
+ .in(AssetInventoryRecord::getWarehouseId, warehouseIds)
+ .list().stream().collect(Collectors.groupingBy(AssetInventoryRecord::getWarehouseId));
+ //计算当前库存
+ assetWarehouseVOS.forEach(warehouseVO -> {
+ List<AssetInventoryRecord> assetInventoryRecords = inventoryRecordMap.get(warehouseVO.getId());
+ if (CollUtil.isEmpty(assetInventoryRecords)) {
+ warehouseVO.setCurrentStock(0);
+ } else {
+ long inStock = assetInventoryRecords.stream().filter(item -> item.getType().equals(0)).count();
+ long outStock = assetInventoryRecords.stream().filter(item -> item.getType().equals(1)).count();
+ warehouseVO.setCurrentStock((int) (inStock - outStock));
+ }
+ //设置部门名称
+ warehouseVO.setDeptName(deptMap.getOrDefault(warehouseVO.getDeptId(), ""));
+ });
+ pageVO.setRecords(assetWarehouseVOS);
+ return pageVO;
+ }
+
+ @Override
+ public void add(AssetWarehouseDTO dto) {
+ AssetWarehouse assetWarehouse = BeanUtil.copyProperties(dto, AssetWarehouse.class);
+ String username = SecurityUtils.getUsername();
+ assetWarehouse.setCreateBy(username);
+ this.save(assetWarehouse);
+ }
+
+ @Override
+ public void edit(AssetWarehouseDTO dto) {
+ if (Objects.isNull(dto.getId())) {
+ throw new ServiceException("仓库ID不能为空");
+ }
+ AssetWarehouse assetWarehouse = BeanUtil.copyProperties(dto, AssetWarehouse.class);
+ String username = SecurityUtils.getUsername();
+ assetWarehouse.setUpdateBy(username);
+ this.updateById(assetWarehouse);
+ }
+
+ @Override
+ public void delete(Integer id) {
+ if (Objects.isNull(id)) {
+ throw new ServiceException("仓库ID不能为空");
+ }
+ List<AssetInventoryRecord> list = assetInventoryRecordService.lambdaQuery().eq(AssetInventoryRecord::getWarehouseId, id).list();
+ if (CollUtil.isNotEmpty(list)) {
+ List<Integer> inStockIds = list.stream().filter(item -> item.getType().equals(0)).map(AssetInventoryRecord::getAssetMainId).collect(Collectors.toList());
+ list.stream().filter(item -> item.getType().equals(1)).forEach(item -> {
+ inStockIds.remove(item.getAssetMainId());
+ });
+ if (CollUtil.isNotEmpty(inStockIds)) {
+ throw new ServiceException("该仓库存在库存记录,不能删除");
+ }
+ }
+ this.removeById(id);
+ }
+
+ @Override
+ public List<AssetWarehouseVO> getAllList() {
+ LambdaQueryWrapper<AssetWarehouse> queryWrapper = new LambdaQueryWrapper<>();
+ List<AssetWarehouse> list = this.list(queryWrapper);
+ return BeanUtil.copyToList(list, AssetWarehouseVO.class);
+ }
}
--
Gitblit v1.7.1