From 0047f8ce5986c577e6b887403dd24ea884c9ce4b Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 10 三月 2026 13:15:19 +0800
Subject: [PATCH] 入库前需审批,审批后入库(消息通知)
---
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java | 126 +++++++++++++++++++++++++++++++++++++-----
1 files changed, 111 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 06096c5..ab630bb 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -1,21 +1,35 @@
package com.ruoyi.stock.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
+import com.ruoyi.approve.vo.ApproveProcessVO;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.stock.dto.StockInRecordDto;
+import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.dto.StockOutRecordDto;
import com.ruoyi.stock.dto.StockUninventoryDto;
-import com.ruoyi.stock.pojo.StockInventory;
-import com.ruoyi.stock.pojo.StockUninventory;
+import com.ruoyi.stock.execl.StockUnInventoryExportData;
import com.ruoyi.stock.mapper.StockUninventoryMapper;
+import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.pojo.StockUninventory;
import com.ruoyi.stock.service.StockInRecordService;
import com.ruoyi.stock.service.StockOutRecordService;
import com.ruoyi.stock.service.StockUninventoryService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
/**
* <p>
@@ -26,11 +40,13 @@
* @since 2026-01-22 10:17:45
*/
@Service
+@AllArgsConstructor
public class StockUninventoryServiceImpl extends ServiceImpl<StockUninventoryMapper, StockUninventory> implements StockUninventoryService {
private StockUninventoryMapper stockUninventoryMapper;
private StockOutRecordService stockOutRecordService;
private StockInRecordService stockInRecordService;
+ private ApproveProcessServiceImpl approveProcessService;
@Override
public IPage<StockUninventoryDto> pageStockUninventory(Page page, StockUninventoryDto stockUninventoryDto) {
@@ -46,21 +62,69 @@
stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType());
stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity());
stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
+ stockInRecordDto.setRemark(stockUninventoryDto.getRemark());
stockInRecordDto.setType("1");
- stockInRecordService.add(stockInRecordDto);
- //鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
- //鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
- StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId()));
- if (ObjectUtils.isEmpty(oldStockUnInventory)) {
- StockUninventory newStockUnInventory = new StockUninventory();
- newStockUnInventory.setProductModelId(stockUninventoryDto.getProductModelId());
- newStockUnInventory.setQualitity(stockUninventoryDto.getQualitity());
- newStockUnInventory.setVersion(1);
- stockUninventoryMapper.insert(newStockUnInventory);
- }else {
- stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
+ int add = stockInRecordService.add(stockInRecordDto);
+
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (add > 0){
+ try {
+ addApproveByPurchase(loginUser,stockInRecordDto);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
}
+
return 1;
+ }
+
+ public void addApproveByPurchase(LoginUser loginUser, StockInRecordDto stockInRecordDto) throws Exception {
+ ApproveProcessVO approveProcessVO = new ApproveProcessVO();
+ approveProcessVO.setApproveType(9);
+ approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId());
+ approveProcessVO.setApproveReason(stockInRecordDto.getInboundBatches());
+ approveProcessVO.setApproveUserIds(String.valueOf(1));
+ approveProcessVO.setApproveUser(loginUser.getUserId());
+ approveProcessVO.setApproveTime(LocalDate.now().toString());
+ approveProcessVO.setInventoryReview(false);
+ approveProcessVO.setStorageType("涓嶅悎鏍煎叆搴�");
+ approveProcessVO.setRecordId(stockInRecordDto.getId());
+ approveProcessService.addApprove(approveProcessVO);
+ }
+
+ /**
+ * 鏇存柊鎴栧垱寤洪潪鑹搧搴撳瓨淇℃伅
+ * @param stockInRecord 闈炶壇鍝佸簱瀛楧TO瀵硅薄
+ */
+ public void updateOrCreateStockUninventory(StockInRecord stockInRecord) {
+ // 鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪
+ StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(
+ new QueryWrapper<StockUninventory>().lambda()
+ .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId())
+ );
+
+ if (ObjectUtils.isEmpty(oldStockUnInventory)) {
+ // 涓嶅瓨鍦ㄥ垯鏂板
+ StockUninventory newStockUnInventory = new StockUninventory();
+ newStockUnInventory.setProductModelId(stockInRecord.getProductModelId());
+ newStockUnInventory.setQualitity(stockInRecord.getStockInNum());
+ newStockUnInventory.setVersion(1);
+ newStockUnInventory.setRemark(stockInRecord.getRemark());
+ stockUninventoryMapper.insert(newStockUnInventory);
+ } else {
+ LambdaUpdateWrapper<StockUninventory> updateWrapper = new LambdaUpdateWrapper<>();
+ if (stockInRecord.getStockInNum() != null) {
+ updateWrapper.setSql("qualitity = qualitity + " + stockInRecord.getStockInNum());
+ }
+ updateWrapper.setSql("version = version + 1");
+ String remark = stockInRecord.getRemark();
+ if (remark != null && !remark.isEmpty()) {
+ updateWrapper.set(StockUninventory::getRemark, remark);
+ }
+ updateWrapper.set(StockUninventory::getUpdateTime, new Date());
+ updateWrapper.eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId());
+ stockUninventoryMapper.update(null, updateWrapper);
+ }
}
@Override
@@ -73,6 +137,7 @@
stockOutRecordDto.setRecordType(stockUninventoryDto.getRecordType());
stockOutRecordDto.setStockOutNum(stockUninventoryDto.getQualitity());
stockOutRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
+ stockOutRecordDto.setType("1");
stockOutRecordService.add(stockOutRecordDto);
StockUninventory oldStockInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId()));
if (ObjectUtils.isEmpty(oldStockInventory)) {
@@ -82,4 +147,35 @@
}
return 1;
}
+
+ @Override
+ public void exportStockUninventory(HttpServletResponse response, StockUninventoryDto stockUninventoryDto) {
+ List<StockUnInventoryExportData> list = stockUninventoryMapper.listStockInventoryExportData(stockUninventoryDto);
+ ExcelUtil<StockUnInventoryExportData> util = new ExcelUtil<>(StockUnInventoryExportData.class);
+ util.exportExcel(response,list, "涓嶅悎鏍煎簱瀛樹俊鎭�");
+ }
+
+ @Override
+ public Boolean frozenStock(StockInventoryDto stockInventoryDto) {
+ StockUninventory stockUninventory = stockUninventoryMapper.selectById(stockInventoryDto.getId());
+ if (stockUninventory.getQualitity().compareTo(stockInventoryDto.getLockedQuantity())<0) {
+ throw new RuntimeException("鍐荤粨鏁伴噺涓嶈兘瓒呰繃搴撳瓨鏁伴噺");
+ }
+ if (ObjectUtils.isEmpty(stockUninventory.getLockedQuantity())) {
+ stockUninventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
+ }else {
+ stockUninventory.setLockedQuantity(stockUninventory.getLockedQuantity().add(stockInventoryDto.getLockedQuantity()));
+ }
+ return this.updateById(stockUninventory);
+ }
+
+ @Override
+ public Boolean thawStock(StockInventoryDto stockInventoryDto) {
+ StockUninventory stockUninventory = stockUninventoryMapper.selectById(stockInventoryDto.getId());
+ if (stockUninventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity())<0) {
+ throw new RuntimeException("瑙e喕鏁伴噺涓嶈兘瓒呰繃鍐荤粨鏁伴噺");
+ }
+ stockUninventory.setLockedQuantity(stockUninventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity()));
+ return this.updateById(stockUninventory);
+ }
}
--
Gitblit v1.9.3