From 51401d2c54214af5b52b66e3e7bea22233efdda5 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 22 一月 2026 10:05:37 +0800
Subject: [PATCH] feat(sales): 入库出库接口
---
src/main/java/com/ruoyi/stock/pojo/StockInventory.java | 9 ++
src/main/java/com/ruoyi/stock/service/StockInventoryService.java | 9 ++
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java | 19 ++++
src/main/java/com/ruoyi/stock/pojo/StockInRecord.java | 4
src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java | 10 ++
src/main/resources/mapper/stock/StockInventoryMapper.xml | 34 ++++++++
src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java | 18 ++++
src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java | 2
src/main/java/com/ruoyi/stock/controller/StockInventoryController.java | 34 ++++++++
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java | 18 ++++
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 69 +++++++++++++++++
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java | 2
12 files changed, 224 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
index b564a09..0993470 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
@@ -1,5 +1,16 @@
package com.ruoyi.stock.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.stock.dto.StockInventoryDto;
+import com.ruoyi.stock.pojo.StockInventory;
+import com.ruoyi.stock.service.StockInventoryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -13,6 +24,29 @@
*/
@RestController
@RequestMapping("/stockInventory")
+@Api(tags = "搴撳瓨琛�")
public class StockInventoryController {
+ @Autowired
+ private StockInventoryService stockInventoryService;
+
+ @GetMapping("/pagestockInventory")
+ @ApiOperation("鍒嗛〉鏌ヨ搴撳瓨")
+ public R pagestockInventory(Page page, StockInventoryDto stockInventoryDto) {
+ IPage<StockInventoryDto> stockInventoryDtoIPage = stockInventoryService.pagestockInventory(page, stockInventoryDto);
+ return R.ok(stockInventoryDtoIPage);
+ }
+
+ @PostMapping("/addstockInventory")
+ @ApiOperation("鏂板搴撳瓨")
+ public R addstockInventory(StockInventoryDto stockInventoryDto) {
+ return R.ok(stockInventoryService.addstockInventory(stockInventoryDto));
+ }
+
+
+ @PostMapping("/subtractStockInventory")
+ @ApiOperation("鎵e噺搴撳瓨")
+ public R subtractStockInventory(StockInventoryDto stockInventoryDto) {
+ return R.ok(stockInventoryService.subtractStockInventory(stockInventoryDto));
+ }
}
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
index 312eec9..2ac682c 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -1,7 +1,9 @@
package com.ruoyi.stock.dto;
import com.ruoyi.stock.pojo.StockInRecord;
+import lombok.Data;
+@Data
public class StockInRecordDto extends StockInRecord {
/**
* 浜у搧鍚嶇О
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
new file mode 100644
index 0000000..709facf
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -0,0 +1,19 @@
+package com.ruoyi.stock.dto;
+
+import com.ruoyi.stock.pojo.StockInventory;
+import lombok.Data;
+
+@Data
+public class StockInventoryDto extends StockInventory {
+
+ private String productName;
+ private String model;
+ private String unit;
+
+
+ //鍏ュ簱绫诲瀷
+ private String recordType;
+
+ //鍏ュ簱绫诲瀷瀵瑰簲鐨刬d
+ private Long recordId;
+}
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
index 74f4134..3463cc3 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
@@ -1,8 +1,12 @@
package com.ruoyi.stock.mapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.pojo.StockInventory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
/**
* <p>
@@ -15,4 +19,10 @@
@Mapper
public interface StockInventoryMapper extends BaseMapper<StockInventory> {
+ IPage<StockInventoryDto> pagestockInventory(Page page, @Param("ew") StockInventoryDto stockInventoryDto);
+
+
+ int updateAddStockInventory(@Param("ew") StockInventoryDto stockInventoryDto);
+
+ int updateSubtractStockInventory(@Param("ew") StockInventoryDto stockInventoryDto);
}
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
index 1ac862a..98b3d4b 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -28,10 +28,10 @@
@ApiModelProperty(value = "鍏ュ簱鏁伴噺")
private BigDecimal stockInNum;
- @ApiModelProperty(value = "璁板綍绫诲瀷")
+ @ApiModelProperty(value = "璁板綍绫诲瀷 閲囪喘鍏ュ簱/鐢熶骇鍏ュ簱/璐ㄩ噺鍏ュ簱/鑷畾涔夊叆搴�")
private String recordType;
- @ApiModelProperty(value = "璁板綍ID")
+ @ApiModelProperty(value = "璁板綍ID salesProductId/ProductrMainId/qualityInspectId/0")
private Long recordId;
@ApiModelProperty(value = "浜у搧瑙勬牸ID")
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
index 4dcc34f..9f36343 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -10,6 +10,9 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
+import org.springframework.lang.Nullable;
+
+import javax.validation.constraints.NotBlank;
/**
* <p>
@@ -31,7 +34,8 @@
private Long id;
@ApiModelProperty("瑙勬牸id")
- private Integer productModelId;
+ @NotBlank(message = "涓嶈兘涓虹┖")
+ private Long productModelId;
@ApiModelProperty("鏁伴噺")
private BigDecimal qualitity;
@@ -51,4 +55,7 @@
@ApiModelProperty("棰勮鏁伴噺")
private Integer warnNum;
+
+ @ApiModelProperty("绉熸埛id")
+ private Integer tenantId;
}
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
index 0511e37..0ca3630 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
@@ -36,7 +36,7 @@
private BigDecimal stockOutNum;
@ApiModelProperty("鍏ュ簱鏉ユ簮id")
- private Integer recordId;
+ private Long recordId;
@ApiModelProperty("鍏ュ簱绫诲瀷")
private String recordType;
diff --git a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
index eb6c9b8..bc523e4 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -1,5 +1,9 @@
package com.ruoyi.stock.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.pojo.StockInventory;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -13,4 +17,9 @@
*/
public interface StockInventoryService extends IService<StockInventory> {
+ IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto);
+
+ Boolean addstockInventory(StockInventoryDto stockInventoryDto);
+
+ Boolean subtractStockInventory(StockInventoryDto stockInventoryDto);
}
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..e360c95 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -1,5 +1,6 @@
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;
@@ -8,8 +9,11 @@
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.stock.dto.StockInRecordDto;
+import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.mapper.StockInRecordMapper;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.pojo.StockInventory;
import com.ruoyi.stock.service.StockInRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -21,6 +25,8 @@
public class StockInRecordServiceImpl extends ServiceImpl<StockInRecordMapper, StockInRecord> implements StockInRecordService {
@Autowired
private StockInRecordMapper stockInRecordMapper;
+ @Autowired
+ private StockInventoryMapper stockInventoryMapper;
@Override
public IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto) {
@@ -55,6 +61,18 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int batchDelete(List<Long> ids) {
+ for (Long id : ids) {
+ StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
+ StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, id));
+ if (stockInventory == null) {
+ throw new BaseException("璇ュ叆搴撹褰曚笅娌℃湁瀵瑰簲鐨勪骇鍝�,鏃犳硶鍒犻櫎!!!");
+ }else {
+ StockInventoryDto stockInRecordDto = new StockInventoryDto();
+ stockInRecordDto.setProductModelId(stockInventory.getProductModelId());
+ stockInRecordDto.setQualitity(stockInRecord.getStockInNum());
+ stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto);
+ }
+ }
return stockInRecordMapper.deleteBatchIds(ids);
}
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index f59a5cb..da7f4b4 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -1,10 +1,23 @@
package com.ruoyi.stock.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.stock.dto.StockInRecordDto;
+import com.ruoyi.stock.dto.StockInventoryDto;
+import com.ruoyi.stock.dto.StockOutRecordDto;
+import com.ruoyi.stock.pojo.StockInRecord;
import com.ruoyi.stock.pojo.StockInventory;
import com.ruoyi.stock.mapper.StockInventoryMapper;
+import com.ruoyi.stock.service.StockInRecordService;
import com.ruoyi.stock.service.StockInventoryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.stock.service.StockOutRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
/**
* <p>
@@ -17,4 +30,60 @@
@Service
public class StockInventoryServiceImpl extends ServiceImpl<StockInventoryMapper, StockInventory> implements StockInventoryService {
+ @Autowired
+ private StockInventoryMapper stockInventoryMapper;
+
+ @Autowired
+ private StockInRecordService stockInRecordService;
+ @Autowired
+ private StockOutRecordService stockOutRecordService;
+
+ @Override
+ public IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto) {
+ return stockInventoryMapper.pagestockInventory(page, stockInventoryDto);
+ }
+
+ //鍏ュ簱璋冪敤
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean addstockInventory(StockInventoryDto stockInventoryDto) {
+ //鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
+ StockInRecordDto stockInRecordDto = new StockInRecordDto();
+ stockInRecordDto.setRecordId(stockInventoryDto.getRecordId());
+ stockInRecordDto.setRecordType(stockInventoryDto.getRecordType());
+ stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity());
+ stockInRecordService.add(stockInRecordDto);
+ //鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
+ //鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
+ StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
+ if (ObjectUtils.isEmpty(oldStockInventory)) {
+ StockInventory newStockInventory = new StockInventory();
+ newStockInventory.setProductModelId(stockInventoryDto.getProductModelId());
+ newStockInventory.setQualitity(stockInventoryDto.getQualitity());
+ newStockInventory.setVersion(1);
+ stockInventoryMapper.insert(newStockInventory);
+ }else {
+ stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
+ }
+ return true;
+ }
+
+ //鍑哄簱璋冪敤
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean subtractStockInventory(StockInventoryDto stockInventoryDto) {
+ // 鏂板鍑哄簱璁板綍
+ StockOutRecordDto stockOutRecordDto = new StockOutRecordDto();
+ stockOutRecordDto.setRecordId(stockInventoryDto.getRecordId());
+ stockOutRecordDto.setRecordType(stockInventoryDto.getRecordType());
+ stockOutRecordDto.setStockOutNum(stockInventoryDto.getQualitity());
+ stockOutRecordService.add(stockOutRecordDto);
+ StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
+ if (ObjectUtils.isEmpty(oldStockInventory)) {
+ throw new RuntimeException("浜у搧搴撳瓨涓嶅瓨鍦�");
+ }else {
+ stockInventoryMapper.updateSubtractStockInventory(stockInventoryDto);
+ }
+ return true;
+ }
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
index d5c9c44..7d88f35 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -1,14 +1,18 @@
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.exception.base.BaseException;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.dto.StockOutRecordDto;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
import com.ruoyi.stock.mapper.StockOutRecordMapper;
import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.pojo.StockInventory;
import com.ruoyi.stock.pojo.StockOutRecord;
import com.ruoyi.stock.service.StockOutRecordService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +32,8 @@
public class StockOutRecordServiceImpl extends ServiceImpl<StockOutRecordMapper, StockOutRecord> implements StockOutRecordService {
@Autowired
private StockOutRecordMapper stockOutRecordMapper;
+ @Autowired
+ private StockInventoryMapper stockInventoryMapper;
@Override
public IPage<StockOutRecordDto> listPage(Page page, StockOutRecordDto stockOutRecordDto) {
@@ -58,6 +64,18 @@
@Override
public int batchDelete(List<Long> ids) {
+ for (Long id : ids) {
+ StockOutRecord stockOutRecord = stockOutRecordMapper.selectById(id);
+ StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, id));
+ if (stockInventory == null) {
+ throw new BaseException("璇ュ叆搴撹褰曚笅娌℃湁瀵瑰簲鐨勪骇鍝�,鏃犳硶鍒犻櫎!!!");
+ }else {
+ StockInventoryDto stockInRecordDto = new StockInventoryDto();
+ stockInRecordDto.setProductModelId(stockInventory.getProductModelId());
+ stockInRecordDto.setQualitity(stockOutRecord.getStockOutNum());
+ stockInventoryMapper.updateAddStockInventory(stockInRecordDto);
+ }
+ }
return stockOutRecordMapper.deleteBatchIds(ids);
}
}
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 5d493dc..52a855a 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -13,5 +13,39 @@
<result column="locked_quantity" property="lockedQuantity" />
<result column="warn_num" property="warnNum" />
</resultMap>
+ <update id="updateAddStockInventory">
+ update stock_inventory
+ <set>
+ <if test="qualitity != null">
+ qualitity = qualitity + #{ew.qualitity},
+ </if>
+ <if test="version != null">
+ version = version + 1,
+ </if>
+ </set>
+ where product_model_id = #{ew.productModelId}
+ </update>
+ <update id="updateSubtractStockInventory">
+ update stock_inventory
+ <set>
+ <if test="qualitity != null">
+ qualitity = qualitity - #{ew.qualitity},
+ </if>
+ <if test="version != null">
+ version = version + 1,
+ </if>
+ </set>
+ where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
+ </update>
+ <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+ select si.*,
+ pm.model,
+ pm.unit,
+ p.product_name
+ from stock_inventory si
+ left join product_model pm on si.product_model_id = pm.id
+ left join product p on pm.product_id = p.id
+ where 1 = 1
+ </select>
</mapper>
--
Gitblit v1.9.3