From d05d46076c62c744cdbd84c84d6e19b42cda9259 Mon Sep 17 00:00:00 2001 From: lishenao <3065849776@qq.com> Date: 星期三, 02 七月 2025 09:30:15 +0800 Subject: [PATCH] 入库管理,出库管理,库存管理后端接口修改 --- src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java | 156 +++++++++++++------ src/main/java/com/ruoyi/inventory/excel/StockInExcelDto.java | 2 src/main/resources/mapper/inventory/StockManagementMapper.xml | 28 ++- src/main/java/com/ruoyi/inventory/dto/StockManagementDto.java | 4 src/main/java/com/ruoyi/inventory/service/impl/StockOutServiceImpl.java | 88 ++++++---- src/main/resources/mapper/inventory/StockOutMapper.xml | 26 ++- src/main/java/com/ruoyi/inventory/dto/StockinDto.java | 8 src/main/java/com/ruoyi/inventory/pojo/StockOut.java | 7 src/main/java/com/ruoyi/inventory/excel/StockManagementExcelDto.java | 2 src/main/java/com/ruoyi/inventory/excel/StockOutExcelDto.java | 4 src/main/java/com/ruoyi/inventory/service/impl/StockManagementServiceImpl.java | 66 ++++++++ src/main/java/com/ruoyi/inventory/service/StockManagementService.java | 5 src/main/java/com/ruoyi/inventory/service/StockInService.java | 2 src/main/java/com/ruoyi/inventory/dto/StockoutDto.java | 4 src/main/resources/mapper/inventory/StockInMapper.xml | 30 ++- src/main/java/com/ruoyi/inventory/pojo/StockManagement.java | 8 src/main/java/com/ruoyi/inventory/controller/StockManagementController.java | 4 src/main/java/com/ruoyi/inventory/pojo/StockIn.java | 6 src/main/java/com/ruoyi/inventory/controller/StockOutController.java | 2 19 files changed, 314 insertions(+), 138 deletions(-) diff --git a/src/main/java/com/ruoyi/inventory/controller/StockManagementController.java b/src/main/java/com/ruoyi/inventory/controller/StockManagementController.java index 3a38b4f..fba713f 100644 --- a/src/main/java/com/ruoyi/inventory/controller/StockManagementController.java +++ b/src/main/java/com/ruoyi/inventory/controller/StockManagementController.java @@ -47,4 +47,8 @@ public void stockmanageExport(HttpServletResponse response, StockManagementDto stockManagementDto) { stockManagementService.stockManageExport(response, stockManagementDto); } + @RequestMapping("/stockout") + public AjaxResult stockout(@RequestBody StockManagement stockManagement) { + return success(stockManagementService.stockout(stockManagement)); + } } diff --git a/src/main/java/com/ruoyi/inventory/controller/StockOutController.java b/src/main/java/com/ruoyi/inventory/controller/StockOutController.java index d201d66..c850bff 100644 --- a/src/main/java/com/ruoyi/inventory/controller/StockOutController.java +++ b/src/main/java/com/ruoyi/inventory/controller/StockOutController.java @@ -8,6 +8,7 @@ import com.ruoyi.inventory.dto.StockoutDto; import com.ruoyi.inventory.mapper.StockManagementMapper; import com.ruoyi.inventory.pojo.StockIn; +import com.ruoyi.inventory.pojo.StockManagement; import com.ruoyi.inventory.pojo.StockOut; import com.ruoyi.inventory.service.StockOutService; import org.springframework.beans.factory.annotation.Autowired; @@ -60,4 +61,5 @@ stockOutService.delStockOut(ids); return AjaxResult.success(); } + } diff --git a/src/main/java/com/ruoyi/inventory/dto/StockManagementDto.java b/src/main/java/com/ruoyi/inventory/dto/StockManagementDto.java index b92308b..e896ca0 100644 --- a/src/main/java/com/ruoyi/inventory/dto/StockManagementDto.java +++ b/src/main/java/com/ruoyi/inventory/dto/StockManagementDto.java @@ -33,4 +33,8 @@ * 瑙勬牸鍨嬪彿 */ private String specificationModel; + /** + * 鍏ュ簱浜� + */ + private String nickname; } diff --git a/src/main/java/com/ruoyi/inventory/dto/StockinDto.java b/src/main/java/com/ruoyi/inventory/dto/StockinDto.java index c325f5e..6cc55e0 100644 --- a/src/main/java/com/ruoyi/inventory/dto/StockinDto.java +++ b/src/main/java/com/ruoyi/inventory/dto/StockinDto.java @@ -13,6 +13,10 @@ import java.util.Date; @Data public class StockinDto extends StockIn{ + /** + * 鍏ュ簱浜� + */ + private String nickname; @ApiModelProperty(value = "浜у搧澶х被") private String productCategory; @@ -45,8 +49,4 @@ private BigDecimal taxExclusiveTotalPrice; @ApiModelProperty(value = "渚涘簲鍟嗗悕绉�") private String supplierName; - @TableField(exist = false) - private Date startTime; - @TableField(exist = false) - private Date endTime; } diff --git a/src/main/java/com/ruoyi/inventory/dto/StockoutDto.java b/src/main/java/com/ruoyi/inventory/dto/StockoutDto.java index c3605b8..85ac947 100644 --- a/src/main/java/com/ruoyi/inventory/dto/StockoutDto.java +++ b/src/main/java/com/ruoyi/inventory/dto/StockoutDto.java @@ -35,4 +35,8 @@ * 瑙勬牸鍨嬪彿 */ private String specificationModel; + /** + * 鍏ュ簱浜� + */ + private String nickname; } diff --git a/src/main/java/com/ruoyi/inventory/excel/StockInExcelDto.java b/src/main/java/com/ruoyi/inventory/excel/StockInExcelDto.java index 7680b0a..4b3fee6 100644 --- a/src/main/java/com/ruoyi/inventory/excel/StockInExcelDto.java +++ b/src/main/java/com/ruoyi/inventory/excel/StockInExcelDto.java @@ -31,5 +31,5 @@ @Excel(name = "绋庣巼") private BigDecimal taxRate; @Excel(name = "鍏ュ簱浜�") - private String inboundPerson; + private String nickname; } diff --git a/src/main/java/com/ruoyi/inventory/excel/StockManagementExcelDto.java b/src/main/java/com/ruoyi/inventory/excel/StockManagementExcelDto.java index 73f77ce..790678a 100644 --- a/src/main/java/com/ruoyi/inventory/excel/StockManagementExcelDto.java +++ b/src/main/java/com/ruoyi/inventory/excel/StockManagementExcelDto.java @@ -35,5 +35,5 @@ @Excel(name = "绋庣巼") private BigDecimal taxRate; @Excel(name = "鍏ュ簱浜�") - private String inboundPerson; + private String nickname; } diff --git a/src/main/java/com/ruoyi/inventory/excel/StockOutExcelDto.java b/src/main/java/com/ruoyi/inventory/excel/StockOutExcelDto.java index f62d765..04e1d45 100644 --- a/src/main/java/com/ruoyi/inventory/excel/StockOutExcelDto.java +++ b/src/main/java/com/ruoyi/inventory/excel/StockOutExcelDto.java @@ -8,7 +8,7 @@ @Data public class StockOutExcelDto { @Excel(name = "鍑哄簱鏃堕棿") - private String inboundTime; + private String outboundTime; @Excel(name = "鍑哄簱鎵规") private String inboundBatch; @Excel(name = "浜у搧澶х被") @@ -28,6 +28,6 @@ @Excel(name = "绋庣巼") private BigDecimal taxRate; @Excel(name = "鍑哄簱浜�") - private String outboundPerson; + private String nickname; } diff --git a/src/main/java/com/ruoyi/inventory/pojo/StockIn.java b/src/main/java/com/ruoyi/inventory/pojo/StockIn.java index 886682d..8eb7902 100644 --- a/src/main/java/com/ruoyi/inventory/pojo/StockIn.java +++ b/src/main/java/com/ruoyi/inventory/pojo/StockIn.java @@ -25,7 +25,7 @@ /** * 浜у搧id */ - private Long productId; + private Integer productRecordid; /** * 鍏ュ簱鏃堕棿 @@ -41,7 +41,7 @@ /** * 渚涘簲鍟唅d */ - private Long supplierId; + private Integer supplierId; /** * 鍏ュ簱鏁伴噺 */ @@ -52,7 +52,7 @@ /** * 鍏ュ簱浜� */ - private String inboundPerson; + private Long userId; // tenant_id /** * 绉熸埛ID diff --git a/src/main/java/com/ruoyi/inventory/pojo/StockManagement.java b/src/main/java/com/ruoyi/inventory/pojo/StockManagement.java index 0a25c1c..935bc91 100644 --- a/src/main/java/com/ruoyi/inventory/pojo/StockManagement.java +++ b/src/main/java/com/ruoyi/inventory/pojo/StockManagement.java @@ -25,15 +25,15 @@ /** * 浜у搧id */ - private Long productId; + private Integer productRecordid; /** * 褰撳墠搴撳瓨閲� */ private Integer stockQuantity; - - private Long supplierId; + private String inboundBatch; + private Integer supplierId; @JsonFormat(pattern = "yyyy-MM-dd") private Date boundTime; @@ -43,7 +43,7 @@ /** * 鍏ュ簱浜� */ - private String inboundPerson; + private Long userId; @TableField(fill = FieldFill.INSERT) private Long tenantId; diff --git a/src/main/java/com/ruoyi/inventory/pojo/StockOut.java b/src/main/java/com/ruoyi/inventory/pojo/StockOut.java index d3a90a1..47c494a 100644 --- a/src/main/java/com/ruoyi/inventory/pojo/StockOut.java +++ b/src/main/java/com/ruoyi/inventory/pojo/StockOut.java @@ -24,7 +24,7 @@ /** * 浜у搧id */ - private Long productId; + private Integer productRecordid; /** * 鍑哄簱鏃堕棿 @@ -39,7 +39,7 @@ /** * 渚涘簲鍟嗗悕绉� */ - private Long supplierId; + private Integer supplierId; /** * 鍏ュ簱鏁伴噺 @@ -51,7 +51,8 @@ /** * 鍑哄簱浜� */ - private String inboundPerson; + private Long userId; + private Integer stockmanageId; @TableField(fill = FieldFill.INSERT) private Long tenantId; diff --git a/src/main/java/com/ruoyi/inventory/service/StockInService.java b/src/main/java/com/ruoyi/inventory/service/StockInService.java index 3229280..551a09e 100644 --- a/src/main/java/com/ruoyi/inventory/service/StockInService.java +++ b/src/main/java/com/ruoyi/inventory/service/StockInService.java @@ -19,7 +19,7 @@ StockIn getStockInById(Long id); - int updateStockIn(StockIn stockIn); + boolean updateStockIn(StockIn stockIn); int delStockin(List<Integer> ids); // PageInfo<StockinProcuct> getStockInPage(Integer pageNum, Integer pageSize, StockInQueryDTO query); diff --git a/src/main/java/com/ruoyi/inventory/service/StockManagementService.java b/src/main/java/com/ruoyi/inventory/service/StockManagementService.java index 1f8bbdc..4d75978 100644 --- a/src/main/java/com/ruoyi/inventory/service/StockManagementService.java +++ b/src/main/java/com/ruoyi/inventory/service/StockManagementService.java @@ -3,9 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.ruoyi.basic.dto.SupplierManageDto; import com.ruoyi.inventory.dto.StockManagementDto; -import com.ruoyi.inventory.dto.StockinDto; import com.ruoyi.inventory.pojo.StockManagement; import javax.servlet.http.HttpServletResponse; @@ -18,5 +16,6 @@ int delStockManage(List<Integer> ids); IPage<StockManagement> selectStockManagePage(Page page, StockManagementDto stockManagementdto); void stockManageExport(HttpServletResponse response, StockManagementDto stockManagementdto); - + int stockout(StockManagement stockManagement); + int addStockManage(StockManagement stockManagement); } diff --git a/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java b/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java index 8c035f8..371dad2 100644 --- a/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java +++ b/src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java @@ -4,6 +4,8 @@ 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.basic.mapper.SupplierManageMapper; +import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.inventory.dto.StockinDto; import com.ruoyi.inventory.excel.StockInExcelDto; @@ -13,6 +15,8 @@ import com.ruoyi.inventory.pojo.StockManagement; import com.ruoyi.inventory.service.StockInService; import com.ruoyi.purchase.dto.PurchaseLedgerDto; +import com.ruoyi.purchase.mapper.ProductRecordMapper; +import com.ruoyi.purchase.pojo.ProductRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,6 +32,10 @@ private StockInMapper stockInMapper; @Autowired private StockManagementMapper stockManagementMapper; + @Autowired + private ProductRecordMapper productRecordMapper; + @Autowired + private SupplierManageMapper supplierManageMapper; // 鏂板鏂规硶 @@ -38,32 +46,41 @@ @Override @Transactional(rollbackFor = Exception.class) public void saveStockin(StockIn stockIn) { - stockInMapper.insert(stockIn); - StockManagement stockManagement = new StockManagement(); -// 杩涜鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勪骇鍝乮d鍜屼緵搴斿晢id - LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StockManagement::getProductId, stockIn.getProductId()); - queryWrapper.eq(StockManagement::getSupplierId, stockIn.getSupplierId()); - StockManagement stockManagement1 = stockManagementMapper.selectOne(queryWrapper); - if (stockManagement1!= null) { - stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() + stockIn.getInboundQuantity()); - stockManagement1.setInboundTime(stockIn.getInboundTime()); - stockManagement1.setBoundTime(new Date()); - stockManagement1.setInboundPerson(stockIn.getInboundPerson()); - System.out.println(stockManagement1+"22"); - stockManagementMapper.updateById(stockManagement1); +//闇�瑕佸厛鍒ゆ柇浜у搧璁板綍琛ㄤ腑鏄惁鏈夎浜у搧 + ProductRecord productRecord = productRecordMapper.selectById(stockIn.getProductRecordid()); + if (productRecord == null) { + throw new RuntimeException("浜у搧璁板綍琛ㄤ腑娌℃湁璇ヤ骇鍝�"); } - else { - stockManagement.setProductId(stockIn.getProductId()); - stockManagement.setStockQuantity(stockIn.getInboundQuantity()); - stockManagement.setBoundTime(stockIn.getInboundTime()); - stockManagement.setStockQuantity(stockIn.getInboundQuantity()); - stockManagement.setInboundPerson(stockIn.getInboundPerson()); +// 闇�瑕佸厛鍒ゆ柇渚涘簲鍟嗚〃涓槸鍚︽湁璇ヤ緵搴斿晢 + SupplierManage supplierManage = supplierManageMapper.selectById(stockIn.getSupplierId()); + if (supplierManage == null) { + throw new RuntimeException("渚涘簲鍟嗚〃涓病鏈夎渚涘簲鍟�"); + } +// 闇�瑕佸厛鍒ゆ柇搴撳瓨绠$悊琛ㄤ腑鏄惁鏈夎浜у搧 + LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StockManagement::getProductRecordid, stockIn.getProductRecordid()); + queryWrapper.eq(StockManagement::getSupplierId, stockIn.getSupplierId()); + queryWrapper.eq(StockManagement::getUserId, stockIn.getUserId()); + StockManagement stockManagement = stockManagementMapper.selectOne(queryWrapper); + if (stockManagement == null) { +// 濡傛灉娌℃湁璇ヤ骇鍝侊紝闇�瑕佸厛鏂板搴撳瓨绠$悊琛� + stockManagement = new StockManagement(); + stockManagement.setProductRecordid(stockIn.getProductRecordid()); stockManagement.setSupplierId(stockIn.getSupplierId()); - stockManagement.setTenantId(stockIn.getTenantId()); + stockManagement.setStockQuantity(stockIn.getInboundQuantity()); + stockManagement.setInboundTime(stockIn.getInboundTime()); stockManagement.setBoundTime(new Date()); + stockManagement.setUserId(stockIn.getUserId()); stockManagementMapper.insert(stockManagement); } +// 濡傛灉鏈夎浜у搧锛岄渶瑕佸厛鏇存柊搴撳瓨绠$悊琛� + stockManagement.setStockQuantity(stockManagement.getStockQuantity() + stockIn.getInboundQuantity()); + stockManagement.setInboundTime(stockIn.getInboundTime()); + stockManagement.setBoundTime(new Date()); + stockManagement.setUserId(stockIn.getUserId()); + stockManagementMapper.updateById(stockManagement); +// 闇�瑕佸厛鏂板搴撳瓨鍏ュ簱琛� + stockInMapper.insert(stockIn); } @Override//鏍规嵁id鑾峰彇搴撳瓨鍏ュ簱淇℃伅 @@ -71,39 +88,78 @@ StockIn stockIn = stockInMapper.selectById(id); return stockIn; } - - @Override//鏇存柊搴撳瓨鍏ュ簱淇℃伅 + @Override @Transactional(rollbackFor = Exception.class) - public int updateStockIn(StockIn stockIn) { - StockIn stockIn1 = stockInMapper.selectById(stockIn.getId()); -// 杩涜鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勪骇鍝乮d鍜屼緵搴斿晢id - LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StockManagement::getProductId, stockIn.getProductId()); - queryWrapper.eq(StockManagement::getSupplierId, stockIn.getSupplierId()); - StockManagement stockManagement1 = stockManagementMapper.selectOne(queryWrapper); - if (stockManagement1!= null) { - stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() - stockIn1.getInboundQuantity() + stockIn.getInboundQuantity()); - stockManagement1.setInboundTime(stockIn.getInboundTime()); - stockManagement1.setBoundTime(new Date()); - stockManagement1.setInboundPerson(stockIn.getInboundPerson()); - System.out.println(stockManagement1 + "22"); - stockManagementMapper.updateById(stockManagement1); - } else { - StockManagement stockManagement = new StockManagement(); - stockManagement.setProductId(stockIn.getProductId()); - stockManagement.setStockQuantity(stockIn.getInboundQuantity()); - stockManagement.setBoundTime(stockIn.getInboundTime()); - stockManagement.setStockQuantity(stockIn.getInboundQuantity()); - stockManagement.setInboundPerson(stockIn.getInboundPerson()); - stockManagement.setSupplierId(stockIn.getSupplierId()); - stockManagement.setTenantId(stockIn.getTenantId()); - stockManagement.setBoundTime(new Date()); - System.out.println(stockManagement + "33"); - stockManagementMapper.insert(stockManagement); + public boolean updateStockIn(StockIn stockIn) { + // 1. 鍙傛暟鏍¢獙 + if (stockIn == null || stockIn.getId() == null) { + throw new IllegalArgumentException("鍏ュ簱璁板綍ID涓嶈兘涓虹┖"); } - return stockInMapper.updateById(stockIn); + + // 2. 鑾峰彇鍘熷璁板綍 + StockIn original = stockInMapper.selectById(stockIn.getId()); + if (original == null) { + throw new RuntimeException("瑕佷慨鏀圭殑鍏ュ簱璁板綍涓嶅瓨鍦紝ID: " + stockIn.getId()); + } + + // 3. 妫�鏌ュ叧鑱旀暟鎹� + // 3.1 妫�鏌ヤ骇鍝� + if (stockIn.getProductRecordid() != null && + productRecordMapper.selectById(stockIn.getProductRecordid()) == null) { + throw new RuntimeException("浜у搧璁板綍涓嶅瓨鍦紝ID: " + stockIn.getProductRecordid()); + } + + // 3.2 妫�鏌ヤ緵搴斿晢 + if (stockIn.getSupplierId() != null && + supplierManageMapper.selectById(stockIn.getSupplierId()) == null) { + throw new RuntimeException("渚涘簲鍟嗕笉瀛樺湪锛孖D: " + stockIn.getSupplierId()); + } + + // 4. 纭畾鏈�缁堜娇鐢ㄧ殑鍚処D鍊� + Integer finalProductId = stockIn.getProductRecordid() != null ? + stockIn.getProductRecordid() : original.getProductRecordid(); + Integer finalSupplierId = stockIn.getSupplierId() != null ? + stockIn.getSupplierId() : original.getSupplierId(); + Long finalUserId = stockIn.getUserId() != null ? + stockIn.getUserId() : original.getUserId(); + + // 5. 澶勭悊搴撳瓨璁板綍锛堢‘淇濆瓨鍦ㄥ搴旇褰曪級 + LambdaQueryWrapper<StockManagement> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StockManagement::getProductRecordid, finalProductId) + .eq(StockManagement::getSupplierId, finalSupplierId) + .eq(StockManagement::getUserId, finalUserId); + + StockManagement stock = stockManagementMapper.selectOne(wrapper); + + // 璁$畻鏁伴噺鍙樺寲锛堝鏋滄湁淇敼锛� + Integer quantityChange = stockIn.getInboundQuantity() != null ? + stockIn.getInboundQuantity() - original.getInboundQuantity() : 0; + + if (stock == null) { + // 5.1 涓嶅瓨鍦ㄥ垯鍒涘缓鏂拌褰� + stock = new StockManagement(); + stock.setProductRecordid(finalProductId); + stock.setSupplierId(finalSupplierId); + stock.setUserId(finalUserId); + // 鍒濆搴撳瓨 = 鍘熷搴撳瓨 + 鍙樺寲閲忥紙鑰冭檻淇敼鍚庣殑鍊硷級 + stock.setStockQuantity(original.getInboundQuantity() + quantityChange); + stockManagementMapper.insert(stock); + } else if (quantityChange != 0) { + // 5.2 瀛樺湪涓旀暟閲忔湁鍙樺寲鍒欐洿鏂� + stock.setStockQuantity(stock.getStockQuantity() + quantityChange); + stockManagementMapper.updateById(stock); + } + + // 6. 鏇存柊鍏ュ簱璁板綍 + int updateResult = stockInMapper.updateById(stockIn); + if (updateResult <= 0) { + throw new RuntimeException("鍏ュ簱璁板綍鏇存柊澶辫触"); + } + + return updateResult > 0; } + @Override public int delStockin(List<Integer> ids) { LambdaQueryWrapper<StockIn> delWrapper = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/ruoyi/inventory/service/impl/StockManagementServiceImpl.java b/src/main/java/com/ruoyi/inventory/service/impl/StockManagementServiceImpl.java index 18a48dd..a19d90b 100644 --- a/src/main/java/com/ruoyi/inventory/service/impl/StockManagementServiceImpl.java +++ b/src/main/java/com/ruoyi/inventory/service/impl/StockManagementServiceImpl.java @@ -1,15 +1,21 @@ package com.ruoyi.inventory.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.basic.excel.SupplierManageExcelDto; +import com.ruoyi.basic.mapper.SupplierManageMapper; +import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.inventory.dto.StockManagementDto; import com.ruoyi.inventory.excel.StockManagementExcelDto; import com.ruoyi.inventory.mapper.StockManagementMapper; +import com.ruoyi.inventory.mapper.StockOutMapper; import com.ruoyi.inventory.pojo.StockManagement; +import com.ruoyi.inventory.pojo.StockOut; import com.ruoyi.inventory.service.StockManagementService; +import com.ruoyi.purchase.mapper.ProductRecordMapper; +import com.ruoyi.purchase.pojo.ProductRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,6 +26,14 @@ public class StockManagementServiceImpl extends ServiceImpl<StockManagementMapper,StockManagement> implements StockManagementService { @Autowired private StockManagementMapper stockManagementMapper; + @Autowired + private StockOutMapper stockOutMapper; + @Autowired + private ProductRecordMapper productRecordMapper; + @Autowired + private SupplierManageMapper supplierManageMapper; + + @Override public int updateStockManagement(StockManagement stockManagement) { @@ -43,4 +57,54 @@ ExcelUtil<StockManagementExcelDto> util = new ExcelUtil<StockManagementExcelDto>(StockManagementExcelDto.class); util.exportExcel(response, stockManageList, "搴撳瓨瀵煎嚭"); } + + @Override + public int stockout(StockManagement stockManagement) { +// 闇�瑕佽繘琛屽垽鏂紝搴撳瓨鏁伴噺鏄惁瓒冲 + StockManagement stockManagement1 = stockManagementMapper.selectById(stockManagement.getId()); + if (stockManagement1.getStockQuantity() < stockManagement.getStockQuantity()) { + throw new RuntimeException("搴撳瓨鏁伴噺涓嶈冻"); + }else if (stockManagement1.getStockQuantity().equals(stockManagement.getStockQuantity())){ +// 鍑忓幓鐨勬暟閲忚鍦ㄥ嚭搴撹褰曡〃涓姞涓�鏉℃暟鎹� + StockOut stockOut = new StockOut(); + stockOut.setInboundQuantity(stockManagement.getStockQuantity()); + stockOut.setProductRecordid(stockManagement1.getProductRecordid()); + stockOut.setSupplierId(stockManagement1.getSupplierId()); + stockOut.setUserId(stockManagement.getUserId()); + stockOut.setInboundTime(stockManagement1.getBoundTime()); + stockOutMapper.insert(stockOut); + return stockManagementMapper.deleteById(stockManagement.getId()); + } + else { + stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() - stockManagement.getStockQuantity()); + StockOut stockOut = new StockOut(); + stockOut.setInboundQuantity(stockManagement.getStockQuantity()); + stockOut.setProductRecordid(stockManagement1.getProductRecordid()); + stockOut.setSupplierId(stockManagement1.getSupplierId()); + stockOut.setUserId(stockManagement.getUserId()); + stockOut.setInboundTime(stockManagement1.getBoundTime()); + stockOutMapper.insert(stockOut); + return stockManagementMapper.updateById(stockManagement1); + } + } + +// 娣诲姞搴撳瓨鏂规硶 + @Override + public int addStockManage(StockManagement stockManagement) { +// 闇�瑕佽繘琛屽垽鏂� + LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(ProductRecord::getProductId, stockManagement.getProductRecordid()); + ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1); + if (productRecord == null) { + throw new RuntimeException("浜у搧涓嶅瓨鍦�"); + } + LambdaQueryWrapper<SupplierManage> queryWrapper2 = new LambdaQueryWrapper<>(); + queryWrapper2.eq(SupplierManage::getId, stockManagement.getSupplierId()); + SupplierManage supplierManage = supplierManageMapper.selectOne(queryWrapper2); + System.out.println(supplierManage+"11"); + if (supplierManage == null) { + throw new RuntimeException("渚涘簲鍟嗕笉瀛樺湪"); + } + return stockManagementMapper.insert(stockManagement); + } } diff --git a/src/main/java/com/ruoyi/inventory/service/impl/StockOutServiceImpl.java b/src/main/java/com/ruoyi/inventory/service/impl/StockOutServiceImpl.java index e7dfd58..d6e2383 100644 --- a/src/main/java/com/ruoyi/inventory/service/impl/StockOutServiceImpl.java +++ b/src/main/java/com/ruoyi/inventory/service/impl/StockOutServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.excel.SupplierManageExcelDto; +import com.ruoyi.basic.mapper.SupplierManageMapper; +import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.inventory.dto.StockoutDto; import com.ruoyi.inventory.excel.StockOutExcelDto; @@ -13,6 +15,8 @@ import com.ruoyi.inventory.pojo.StockOut; import com.ruoyi.inventory.service.StockOutService; +import com.ruoyi.purchase.mapper.ProductRecordMapper; +import com.ruoyi.purchase.pojo.ProductRecord; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -28,6 +32,10 @@ private StockOutMapper stockOutMapper; @Autowired private StockManagementMapper stockManagementMapper; + @Autowired + private ProductRecordMapper productRecordMapper; + @Autowired + private SupplierManageMapper supplierManageMapper; @Override @@ -44,47 +52,56 @@ @Override @Transactional(rollbackFor = Exception.class) public void saveStockout(StockOut stockOut) { -// 杩涜鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勪骇鍝乮d鍜屼緵搴斿晢id - LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StockManagement::getProductId, stockOut.getProductId()); - queryWrapper.eq(StockManagement::getSupplierId, stockOut.getSupplierId()); - StockManagement stockManagement1 = stockManagementMapper.selectOne(queryWrapper); - if (stockManagement1!= null) { -// 鍒ゆ柇搴撳瓨鏁伴噺鏄惁澶т簬鍑哄簱鏁伴噺 - if (stockManagement1.getStockQuantity() < stockOut.getInboundQuantity()) { - throw new RuntimeException("搴撳瓨鏁伴噺涓嶈冻"); - } - stockOutMapper.insert(stockOut); - stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() - stockOut.getInboundQuantity()); - stockManagement1.setInboundTime(new Date()); - stockManagementMapper.updateById(stockManagement1); +// 杩涜鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勪骇鍝乮d鍜屼緵搴斿晢id,瑕佸垽鏂璸roduct_id鍦ㄨ〃product_record涓槸鍚﹀瓨鍦紝鍥犱负stock_out琛ㄤ腑鐨刾roduct_id鏄痯roduct_record琛ㄤ腑鐨刾roduct_id鍏宠仈鐨� + LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(ProductRecord::getProductId, stockOut.getProductRecordid()); + ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1); + if (productRecord == null) { + throw new RuntimeException("浜у搧涓嶅瓨鍦�"); } - else { - throw new RuntimeException("搴撳瓨涓嶅瓨鍦�"); + LambdaQueryWrapper<SupplierManage> queryWrapper2 = new LambdaQueryWrapper<>(); + queryWrapper2.eq(SupplierManage::getId, stockOut.getSupplierId()); + SupplierManage supplierManage = supplierManageMapper.selectOne(queryWrapper2); + if (supplierManage == null) { + throw new RuntimeException("渚涘簲鍟嗕笉瀛樺湪"); + } + LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StockManagement::getProductRecordid, stockOut.getProductRecordid()); + queryWrapper.eq(StockManagement::getSupplierId, stockOut.getSupplierId()); + StockManagement stockManagement = stockManagementMapper.selectOne(queryWrapper); + if (stockManagement != null) { + stockOut.setStockmanageId(stockManagement.getId()); + stockOutMapper.insert(stockOut); + }else { + throw new RuntimeException("搴撳瓨涓笉瀛樺湪璇ヤ骇鍝佸拰渚涘簲鍟�"); } } @Override public int updateStockOut(StockOut stockOut) { -// 闇�瑕佽繘琛屽垽鏂湪搴撳瓨涓槸鍚﹀瓨鍦ㄨ浜у搧锛屽鏋滃瓨鍦紝灏辫繘琛屼慨鏀癸紝鍚﹀垯灏辨姏鍑哄紓甯� - StockOut stockOut1 = stockOutMapper.selectById(stockOut.getId()); - LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(StockManagement::getProductId, stockOut.getProductId()); - StockManagement stockManagement1 = stockManagementMapper.selectOne(queryWrapper); - if (stockManagement1!= null) { -// 鍒ゆ柇搴撳瓨鏁伴噺鏄惁澶т簬鍑哄簱鏁伴噺 - if (stockManagement1.getStockQuantity()+stockOut1.getInboundQuantity() < stockOut.getInboundQuantity()) { - throw new RuntimeException("搴撳瓨鏁伴噺涓嶈冻"); - } - stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() + stockOut1.getInboundQuantity() - stockOut.getInboundQuantity()); - stockManagement1.setInboundTime(stockOut.getInboundTime()); - stockManagement1.setBoundTime(new Date()); - System.out.println(stockManagement1 + "22"); - stockManagementMapper.updateById(stockManagement1); - } else { - throw new RuntimeException("搴撳瓨涓嶅瓨鍦�"); - } - return stockOutMapper.updateById(stockOut); +// 淇敼鐨勬椂鍊欒鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勪骇鍝乮d鍜屼緵搴斿晢id + LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(ProductRecord::getProductId, stockOut.getProductRecordid()); + ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1); + if (productRecord == null) { + throw new RuntimeException("浜у搧涓嶅瓨鍦�"); + } + LambdaQueryWrapper<SupplierManage> queryWrapper2 = new LambdaQueryWrapper<>(); + queryWrapper2.eq(SupplierManage::getId, stockOut.getSupplierId()); + SupplierManage supplierManage = supplierManageMapper.selectOne(queryWrapper2); + if (supplierManage == null) { + throw new RuntimeException("渚涘簲鍟嗕笉瀛樺湪"); + } + LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StockManagement::getProductRecordid, stockOut.getProductRecordid()); + queryWrapper.eq(StockManagement::getSupplierId, stockOut.getSupplierId()); + StockManagement stockManagement = stockManagementMapper.selectOne(queryWrapper); + if (stockManagement != null) { + stockOut.setStockmanageId(stockManagement.getId()); + return stockOutMapper.updateById(stockOut); + }else { + throw new RuntimeException("搴撳瓨涓笉瀛樺湪璇ヤ骇鍝佸拰渚涘簲鍟�"); + } } @Override @@ -98,4 +115,5 @@ ExcelUtil<StockOutExcelDto> util = new ExcelUtil<StockOutExcelDto>(StockOutExcelDto.class); util.exportExcel(response, stockoutList, "渚涘簲鍟嗗鍑�"); } + } diff --git a/src/main/resources/mapper/inventory/StockInMapper.xml b/src/main/resources/mapper/inventory/StockInMapper.xml index fca267e..aa53b7d 100644 --- a/src/main/resources/mapper/inventory/StockInMapper.xml +++ b/src/main/resources/mapper/inventory/StockInMapper.xml @@ -39,7 +39,7 @@ <select id="selectStockInWithProductInfo" resultType="com.ruoyi.inventory.dto.StockinDto"> SELECT T1.id, - T1.product_id, + T1.product_recordid, T1.inbound_time, T1.inbound_batch, T1.supplier_id, @@ -48,31 +48,29 @@ T2.tax_inclusive_total_price, T2.tax_rate, T2.tax_exclusive_total_price, - T1.inbound_person, + T1.user_id, T1.tenant_id, T2.product_category, T2.specification_model, T2.unit, - T3.supplier_name + T3.supplier_name, + T4.nick_name FROM stock_in T1 INNER JOIN product_record T2 ON - T1.product_id = T2.product_id + T1.product_recordid = T2.id INNER JOIN supplier_manage T3 ON T1.supplier_id = T3.id + INNER JOIN sys_user T4 + ON + T1.user_id = T4.user_id <where> <if test="stockinDto.supplierName != null and stockinDto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockinDto.supplierName}, '%') - </if> - <if test="stockinDto.startTime != null and stockinDto.startTime != ''"> - AND T1.inbound_time >= #{stockinDto.startTime} - </if> - <if test="stockinDto.endTime != null and stockinDto.endTime != ''"> - AND T1.inbound_time <= #{stockinDto.endTime} </if> </where> ORDER BY T1.inbound_time DESC @@ -81,7 +79,7 @@ <select id="stockinExportList" resultType="com.ruoyi.inventory.excel.StockInExcelDto"> SELECT T1.id, - T1.product_id, + T1.product_recordid, T1.inbound_time, T1.inbound_batch, T1.supplier_id, @@ -90,22 +88,26 @@ T2.tax_inclusive_total_price, T2.tax_rate, T2.tax_exclusive_total_price, - T1.inbound_person, + T1.user_id, T1.tenant_id, T2.product_category, T2.specification_model, T2.unit, - T3.supplier_name + T3.supplier_name, + T4.nick_name FROM stock_in T1 INNER JOIN product_record T2 ON - T1.product_id = T2.product_id + T1.product_recordid = T2.id INNER JOIN supplier_manage T3 ON T1.supplier_id = T3.id + INNER JOIN sys_user T4 + ON + T1.user_id = T4.user_id <where> <if test="stockinDto.supplierName != null and stockinDto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockinDto.supplierName}, '%') diff --git a/src/main/resources/mapper/inventory/StockManagementMapper.xml b/src/main/resources/mapper/inventory/StockManagementMapper.xml index a1f6ef4..4bc349f 100644 --- a/src/main/resources/mapper/inventory/StockManagementMapper.xml +++ b/src/main/resources/mapper/inventory/StockManagementMapper.xml @@ -12,27 +12,33 @@ T2.specification_model, T3.supplier_name, T1.id, - T1.product_id, + T1.product_recordid, T1.stock_quantity, T2.tax_inclusive_unit_price, T2.tax_inclusive_total_price, T2.tax_rate, T2.tax_exclusive_total_price, - T1.inbound_person, + T1.user_id, T1.supplier_id, T1.tenant_id, T1.bound_time, - T1.inbound_time + T1.inbound_time, + T4.nick_name, + T1.inbound_batch FROM stock_management T1 INNER JOIN product_record T2 ON - T1.product_id = T2.product_id + T1.product_recordid = T2.id INNER JOIN supplier_manage T3 ON T1.supplier_id = T3.id + INNER JOIN + sys_user T4 + ON + T1.user_id = T4.user_id <where> <if test="stockManagementDto.supplierName != null and stockManagementDto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockManagementDto.supplierName}, '%') @@ -47,27 +53,33 @@ T2.specification_model, T3.supplier_name, T1.id, - T1.product_id, + T1.product_recordid, T1.stock_quantity, T2.tax_inclusive_unit_price, T2.tax_inclusive_total_price, T2.tax_rate, T2.tax_exclusive_total_price, - T1.inbound_person, + T1.user_id, T1.supplier_id, T1.tenant_id, T1.bound_time, - T1.inbound_time + T1.inbound_time, + T4.nick_name, + T1.inbound_batch FROM stock_management T1 INNER JOIN product_record T2 ON - T1.product_id = T2.product_id + T1.product_recordid = T2.id INNER JOIN supplier_manage T3 ON T1.supplier_id = T3.id + INNER JOIN + sys_user T4 + ON + T1.user_id = T4.user_id <where> <if test="stockManagementDto.supplierName != null and stockManagementDto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockManagementDto.supplierName}, '%') diff --git a/src/main/resources/mapper/inventory/StockOutMapper.xml b/src/main/resources/mapper/inventory/StockOutMapper.xml index a551498..024494e 100644 --- a/src/main/resources/mapper/inventory/StockOutMapper.xml +++ b/src/main/resources/mapper/inventory/StockOutMapper.xml @@ -7,7 +7,7 @@ <select id="selectStockOutBypage" resultType="com.ruoyi.inventory.dto.StockoutDto"> SELECT T1.id, - T1.product_id, + T1.product_recordid, T1.inbound_time, T1.inbound_batch, T1.supplier_id, @@ -16,22 +16,27 @@ T2.tax_inclusive_total_price, T2.tax_rate, T2.tax_exclusive_total_price, - T1.inbound_person, + T1.user_id, T1.tenant_id, T2.product_category, T2.specification_model, T2.unit, - T3.supplier_name + T3.supplier_name, + T4.nick_name FROM stock_out T1 INNER JOIN product_record T2 ON - T1.product_id = T2.product_id + T1.product_recordid = T2.id INNER JOIN supplier_manage T3 ON T1.supplier_id = T3.id + INNER JOIN + sys_user T4 + ON + T1.user_id = T4.user_id <where> <if test="stockOutdto.supplierName != null and stockOutdto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockOutdto.supplierName}, '%') @@ -42,7 +47,7 @@ <select id="stockoutExportList" resultType="com.ruoyi.inventory.excel.StockOutExcelDto"> SELECT T1.id, - T1.product_id, + T1.productrecord_id, T1.inbound_time, T1.inbound_batch, T1.supplier_id, @@ -51,22 +56,27 @@ T2.tax_inclusive_total_price, T2.tax_rate, T2.tax_exclusive_total_price, - T1.inbound_person, + T1.user_id, T1.tenant_id, T2.product_category, T2.specification_model, T2.unit, - T3.supplier_name + T3.supplier_name, + T4.nick_name FROM stock_out T1 INNER JOIN product_record T2 ON - T1.product_id = T2.product_id + T1.productrecord_id = T2.id INNER JOIN supplier_manage T3 ON T1.supplier_id = T3.id + INNER JOIN + sys_user T4 + ON + T1.user_id = T4.user_id <where> <if test="stockOutdto.supplierName != null and stockOutdto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockOutdto.supplierName}, '%') -- Gitblit v1.9.3