From 13afb7eafeffac6ecccc7c66d36974c54c5172d4 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 28 五月 2026 15:13:37 +0800
Subject: [PATCH] 库存管理增加库存类型,并返回相关数据显示

---
 src/main/java/com/ruoyi/stock/service/impl/ManufacturerServiceImpl.java |  160 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 160 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/service/impl/ManufacturerServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/ManufacturerServiceImpl.java
new file mode 100644
index 0000000..55c8a6b
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/service/impl/ManufacturerServiceImpl.java
@@ -0,0 +1,160 @@
+package com.ruoyi.stock.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.excel.SupplierManageExcelDto;
+import com.ruoyi.basic.pojo.SupplierManage;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.stock.dto.ManufacturerDto;
+import com.ruoyi.stock.execl.ManufacturerExcelDto;
+import com.ruoyi.stock.mapper.ManufacturerMapper;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
+import com.ruoyi.stock.pojo.Manufacturer;
+import com.ruoyi.stock.pojo.StockInventory;
+import com.ruoyi.stock.service.ManufacturerService;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 鍘傚晢鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-05-28 09:52:35
+ */
+@Service
+@RequiredArgsConstructor
+public class ManufacturerServiceImpl extends ServiceImpl<ManufacturerMapper, Manufacturer> implements ManufacturerService {
+
+    private final StockInventoryMapper stockInventoryMapper;
+    private final ManufacturerMapper manufacturerMapper;
+    private final SysUserMapper sysUserMapper;
+
+    /**
+     * 鍘傚晢鏂板
+     */
+    @Override
+    @Transactional
+    public void saveManufacturer(Manufacturer manufacturer) {
+        LambdaQueryWrapper<Manufacturer> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Manufacturer::getName,manufacturer.getName());
+        if (baseMapper.selectCount(queryWrapper) > 0) {
+            throw new RuntimeException("鍘傚宸插瓨鍦�");
+        }
+
+        baseMapper.insert(manufacturer);
+    }
+
+    /**
+     * 鍘傚晢鍒犻櫎
+     */
+    @Override
+    @Transactional
+    public int delManufacturer(List<Long> ids) {
+        // 鎵归噺妫�鏌ユ槸鍚﹀叧鑱斿簱瀛�
+        LambdaQueryWrapper<StockInventory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(StockInventory::getManufacturerId, ids);
+        List<StockInventory> inventoryList = stockInventoryMapper.selectList(queryWrapper);
+
+        if (!inventoryList.isEmpty()) {
+            throw new RuntimeException("鍘傚晢宸插叧鑱斿簱瀛橈紝鏃犳硶鍒犻櫎");
+        }
+
+        return baseMapper.deleteBatchIds(ids);
+    }
+
+    /**
+     * 鍘傚晢璇︽儏
+     */
+    @Override
+    public Manufacturer manufacturerDetail(Long id) {
+        return baseMapper.selectById(id);
+    }
+
+    /**
+     * 鍘傚晢淇敼
+     */
+    @Override
+    @Transactional
+    public int manufacturerUpdate(Manufacturer manufacturer) {
+        return baseMapper.updateById(manufacturer);
+    }
+
+    /**
+     * 鍘傚晢鍒嗛〉鏌ヨ
+     */
+    @Override
+    public IPage<Manufacturer> manufacturerListPage(Page page, ManufacturerDto manufacturerDto) {
+        return manufacturerMapper.manufacturerListPage(page,manufacturerDto);
+    }
+
+    /**
+     * 鍘傚晢瀵煎嚭
+     */
+    @Override
+    public void manufacturerExport(HttpServletResponse response, ManufacturerDto manufacturerDto) {
+        List<ManufacturerExcelDto> list = manufacturerMapper.manufacturerExportList(manufacturerDto);
+        ExcelUtil<ManufacturerExcelDto> util = new ExcelUtil<>(ManufacturerExcelDto.class);
+        util.exportExcel(response, list, "鍘傚鏁版嵁");
+    }
+
+    /**
+     * 鍘傚晢瀵煎叆
+     */
+    @Override
+    @Transactional
+    public R importData(MultipartFile file) {
+        try {
+            ExcelUtil<ManufacturerExcelDto> util = new ExcelUtil<>(ManufacturerExcelDto.class);
+            List<ManufacturerExcelDto> list = util.importExcel(file.getInputStream());
+            ArrayList<Manufacturer> manufacturers = new ArrayList<>();
+            list.stream().forEach(dto -> {
+                Manufacturer manufacturer = new Manufacturer();
+                BeanUtils.copyProperties(dto, manufacturer);
+                manufacturer.setMaintainTime(LocalDate.now());
+
+                // 妫�鏌ュ巶瀹跺悕绉版槸鍚﹂噸澶�
+                LambdaQueryWrapper<Manufacturer> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(Manufacturer::getName, manufacturer.getName());
+                if (baseMapper.selectCount(queryWrapper) > 0) {
+                    throw new RuntimeException("鍘傚鍚嶇О宸插瓨鍦�: " + manufacturer.getName());
+                }
+
+                if (StringUtils.isEmpty(dto.getMaintainUserName())) {
+                    manufacturer.setMaintainUserId(SecurityUtils.getLoginUser().getUser().getUserId());
+                } else {
+                    SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getNickName, dto.getMaintainUserName()));
+                    if (sysUser == null) {
+                        throw new RuntimeException("缁存姢浜轰笉瀛樺湪: " + dto.getMaintainUserName());
+                    }
+                    manufacturer.setMaintainUserId(sysUser.getUserId());
+                }
+                manufacturers.add(manufacturer);
+            });
+            this.saveOrUpdateBatch(manufacturers);
+            return R.ok("瀵煎叆鎴愬姛");
+        } catch (Exception e) {
+            log.error("瀵煎叆澶辫触", e);
+            return R.fail("瀵煎叆澶辫触: " + e.getMessage());
+        }
+    }
+}

--
Gitblit v1.9.3