From e0cfecb2b11b3d6ac91394e71c689a30356ead28 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 20 五月 2026 09:29:28 +0800
Subject: [PATCH] fix:1.生产按照特定工序更改 2.库存按照型号,工序类别,电压进行筛选 3.销售页面展示电压,类别 4.生产入库按照电压入库

---
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 109 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index 894cab1..32e5259 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -1,49 +1,72 @@
 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.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.EnumUtil;
 import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
-import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.stock.dto.StockInRecordDto;
+import com.ruoyi.stock.execl.StockInRecordExportData;
 import com.ruoyi.stock.mapper.StockInRecordMapper;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
+import com.ruoyi.stock.mapper.StockUninventoryMapper;
 import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.pojo.StockInventory;
+import com.ruoyi.stock.pojo.StockUninventory;
 import com.ruoyi.stock.service.StockInRecordService;
+import com.ruoyi.stock.service.StockInventoryService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
 
 @Service
 public class StockInRecordServiceImpl extends ServiceImpl<StockInRecordMapper, StockInRecord> implements StockInRecordService {
+
     @Autowired
     private StockInRecordMapper stockInRecordMapper;
+    @Autowired
+    private StockInventoryMapper stockInventoryMapper;
+    @Autowired
+    private StockUninventoryMapper stockUninventoryMapper;
+    @Autowired
+    private StockInventoryService stockInventoryService;
 
     @Override
     public IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto) {
         return stockInRecordMapper.listPage(page, stockInRecordDto);
     }
 
-    // 鏂板鍏ュ簱
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int add(StockInRecordDto stockInRecordDto) {
+    public Long add(StockInRecordDto stockInRecordDto) {
         String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK");
         stockInRecordDto.setInboundBatches(no);
         StockInRecord stockInRecord = new StockInRecord();
         BeanUtils.copyProperties(stockInRecordDto, stockInRecord);
-        return stockInRecordMapper.insert(stockInRecord);
+        int insertRows = stockInRecordMapper.insert(stockInRecord);
+        Long insertId = stockInRecord.getId();
+        return insertRows > 0 ? insertId : null;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int update(Long id, StockInRecordDto stockInRecordDto) {
-        // 鍒ゆ柇瀵硅薄鏄惁瀛樺湪
         StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
-        if (stockInRecord == null){
+        if (stockInRecord == null) {
             throw new BaseException("璇ュ叆搴撹褰曚笉瀛樺湪,鏃犳硶鏇存柊!!!");
         }
 
@@ -55,6 +78,86 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int batchDelete(List<Long> ids) {
+        for (Long id : ids) {
+            StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
+            if ("0".equals(stockInRecord.getType())) {
+                StockInventory stockInventory = findQualifiedInventory(stockInRecord);
+                if (stockInventory == null) {
+                    throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧锛屾棤娉曞垹闄�!!!");
+                }
+                stockInventory.setQualitity(defaultDecimal(stockInventory.getQualitity()).subtract(defaultDecimal(stockInRecord.getStockInNum())));
+                stockInventory.setVersion(stockInventory.getVersion() == null ? 1 : stockInventory.getVersion() + 1);
+                stockInventory.setUpdateTime(LocalDateTime.now());
+                stockInventoryMapper.updateById(stockInventory);
+            } else if ("1".equals(stockInRecord.getType())) {
+                StockUninventory stockUninventory = stockUninventoryMapper.selectOne(
+                        new LambdaQueryWrapper<StockUninventory>()
+                                .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId())
+                                .eq(StockUninventory::getBatchNo, stockInRecord.getBatchNo())
+                );
+                if (stockUninventory == null) {
+                    throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧锛屾棤娉曞垹闄�!!!");
+                }
+                stockUninventory.setQualitity(defaultDecimal(stockUninventory.getQualitity()).subtract(defaultDecimal(stockInRecord.getStockInNum())));
+                stockUninventory.setVersion(stockUninventory.getVersion() == null ? 1 : stockUninventory.getVersion() + 1);
+                stockUninventory.setUpdateTime(LocalDateTime.now());
+                stockUninventoryMapper.updateById(stockUninventory);
+            }
+        }
         return stockInRecordMapper.deleteBatchIds(ids);
     }
+
+    @Override
+    public void exportStockInRecord(HttpServletResponse response, StockInRecordDto stockInRecordDto) {
+        List<StockInRecordExportData> list = stockInRecordMapper.listStockInRecordExportData(stockInRecordDto);
+        for (StockInRecordExportData stockInRecordExportData : list) {
+            if ("0".equals(stockInRecordExportData.getType())) {
+                stockInRecordExportData.setRecordType(
+                        EnumUtil.fromCode(StockInQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()
+                );
+            } else {
+                stockInRecordExportData.setRecordType(
+                        EnumUtil.fromCode(StockInUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()
+                );
+            }
+        }
+        ExcelUtil<StockInRecordExportData> util = new ExcelUtil<>(StockInRecordExportData.class);
+        util.exportExcel(response, list, "鍏ュ簱璁板綍淇℃伅");
+    }
+
+    @Override
+    public StockInRecordDto selectByRecord(Long id) {
+        return stockInRecordMapper.selectByRecord(id);
+    }
+
+    @Override
+    public int updateStockInRecord(StockInRecordDto stockInRecordDto) {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        try {
+            stockInventoryService.addApproveByPurchase(loginUser, stockInRecordDto, stockInRecordDto.getId());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        stockInRecordDto.setApproveStatus(1);
+        return stockInRecordMapper.updateById(stockInRecordDto);
+    }
+
+    // 鍚堟牸鍏ュ簱鍥為��鎸変笌搴撳瓨鍚堝苟涓�鑷寸殑鍞竴閿煡鎵俱��
+    private StockInventory findQualifiedInventory(StockInRecord stockInRecord) {
+        LambdaQueryWrapper<StockInventory> queryWrapper = new LambdaQueryWrapper<StockInventory>()
+                .eq(StockInventory::getProductModelId, stockInRecord.getProductModelId())
+                .orderByAsc(StockInventory::getId);
+        String processCategory = StringUtils.trimToEmpty(stockInRecord.getProcessCategory());
+        String voltage = StringUtils.trimToEmpty(stockInRecord.getVoltage());
+        if (StringUtils.isNotBlank(processCategory) || StringUtils.isNotBlank(voltage)) {
+            queryWrapper.eq(StockInventory::getProcessCategory, processCategory);
+            queryWrapper.eq(StockInventory::getVoltage, voltage);
+        }
+        List<StockInventory> inventories = stockInventoryMapper.selectList(queryWrapper);
+        return inventories.isEmpty() ? null : inventories.get(0);
+    }
+
+    private BigDecimal defaultDecimal(BigDecimal value) {
+        return value == null ? BigDecimal.ZERO : value;
+    }
 }

--
Gitblit v1.9.3