From a0c23770cc052d5370f2793d4b8dd93bedfc1322 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 27 一月 2026 16:03:02 +0800
Subject: [PATCH] fix(enum): 库存冻结解冻功能添加

---
 src/main/java/com/ruoyi/stock/pojo/StockInventory.java                      |   10 +-
 src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java    |   15 +++
 src/main/java/com/ruoyi/stock/service/StockInventoryService.java            |    6 +
 src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java                    |    2 
 src/main/resources/mapper/stock/StockInventoryMapper.xml                    |   43 ++++++----
 src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java                  |    4 +
 src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java   |    2 
 src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java            |    2 
 src/main/java/com/ruoyi/stock/controller/StockInventoryController.java      |   13 +++
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java    |    3 
 src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java    |   19 +---
 src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java                     |    1 
 src/main/java/com/ruoyi/stock/controller/StockInRecordController.java       |    1 
 src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java           |    5 -
 src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java      |    2 
 src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java              |    2 
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java |   30 ++++++
 src/main/resources/mapper/stock/StockUninventoryMapper.xml                  |   20 +++-
 src/main/java/com/ruoyi/stock/service/StockUninventoryService.java          |    7 +
 src/main/java/com/ruoyi/stock/pojo/StockUninventory.java                    |   18 +++-
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java   |   32 +++++++
 21 files changed, 165 insertions(+), 72 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
index 63f417b..39bdbf2 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.math.LongMath;
+import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.controller.BaseController;
@@ -14,6 +15,7 @@
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
 import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
 import com.ruoyi.procurementrecord.service.ProcurementRecordService;
+import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
 import com.ruoyi.sales.mapper.ShippingInfoMapper;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
@@ -47,9 +49,7 @@
     @Autowired
     private ISalesLedgerProductService salesLedgerProductService;
     @Autowired
-    private ProcurementRecordOutService procurementRecordOutService;
-    @Autowired
-    private ProcurementRecordService procurementRecordStorageService;
+    private StockUtils stockUtils;
 
     @GetMapping("/listPage")
     @ApiOperation("鍙戣揣瀹℃壒鍒楄〃")
@@ -99,18 +99,9 @@
 //                throw new ServiceException("閲囪喘璁板綍涓嶅瓨鍦紝瀹℃壒鍥炴粴");
 //            }
 
-            //  鐢熸垚鍑哄簱璁板綍
-            ProcurementRecordOutAdd procurementRecordOutAdd = new ProcurementRecordOutAdd();
-//            procurementRecordOutAdd.setId(procurementRecordStorage.getId());
-            procurementRecordOutAdd.setId(0);
-            procurementRecordOutAdd.setProductModelId(salesLedgerProduct.getProductModelId());
-            procurementRecordOutAdd.setSalesLedgerProductId((long) Math.toIntExact(salesLedgerProduct.getId()));
-            procurementRecordOutAdd.setType(2);
-            procurementRecordOutAdd.setUserId(Math.toIntExact(getUserId()));
-            procurementRecordOutAdd.setQuantity(salesLedgerProduct.getQuantity().toPlainString());
-            procurementRecordOutAdd.setTime(LocalDate.now().toString());
 
-            procurementRecordOutService.stockout(procurementRecordOutAdd);
+            //鍑哄簱
+            stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId());
         }
 
         return AjaxResult.success();
diff --git a/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java b/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
index 94e4669..b12fc67 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
@@ -6,7 +6,6 @@
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.stock.dto.StockInRecordDto;
-import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.service.StockInRecordService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
diff --git a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
index a1d1210..f4bd009 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
@@ -4,7 +4,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.compensationperformance.pojo.CompensationPerformance;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.R;
@@ -93,4 +92,16 @@
     public R stockInAndOutRecord(StockInventoryDto stockInventoryDto,Page page) {
         return R.ok(stockInventoryService.stockInAndOutRecord(stockInventoryDto,page));
     }
+
+    @PostMapping("/frozenStock")
+    @ApiOperation("鍐荤粨搴撳瓨")
+    public R frozenStock(@RequestBody StockInventoryDto stockInventoryDto) {
+        return R.ok(stockInventoryService.frozenStock(stockInventoryDto));
+    }
+
+    @PostMapping("/thawStock")
+    @ApiOperation("瑙e喕搴撳瓨")
+    public R thawStock(@RequestBody StockInventoryDto stockInventoryDto) {
+        return R.ok(stockInventoryService.thawStock(stockInventoryDto));
+    }
 }
diff --git a/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java b/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
index 755084c..bd98859 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
@@ -5,9 +5,7 @@
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.stock.dto.StockInRecordDto;
 import com.ruoyi.stock.dto.StockOutRecordDto;
-import com.ruoyi.stock.pojo.StockOutRecord;
 import com.ruoyi.stock.service.StockOutRecordService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
diff --git a/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
index b2950db..43714ca 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
@@ -2,9 +2,9 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
 import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.dto.StockUninventoryDto;
 import com.ruoyi.stock.service.StockUninventoryService;
 import io.swagger.annotations.ApiOperation;
@@ -57,4 +57,17 @@
         stockUninventoryService.exportStockUninventory(response,stockUninventoryDto);
     }
 
+
+    @PostMapping("/frozenStock")
+    @ApiOperation("鍐荤粨搴撳瓨")
+    public R frozenStock(@RequestBody StockInventoryDto stockInventoryDto) {
+        return R.ok(stockUninventoryService.frozenStock(stockInventoryDto));
+    }
+
+    @PostMapping("/thawStock")
+    @ApiOperation("瑙e喕搴撳瓨")
+    public R thawStock(@RequestBody StockInventoryDto stockInventoryDto) {
+        return R.ok(stockUninventoryService.thawStock(stockInventoryDto));
+    }
+
 }
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
index 5c58f53..1aed75c 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -1,6 +1,5 @@
 package com.ruoyi.stock.dto;
 
-import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.stock.pojo.StockInRecord;
 import lombok.Data;
 
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 37b5efe..3d5856f 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -37,4 +37,6 @@
     private BigDecimal totalStockIn;
     private BigDecimal totalStockOut;
     private BigDecimal currentStock;
+
+    private String  unLockedQuantity;
 }
diff --git a/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
index e496352..404c58a 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
@@ -3,6 +3,8 @@
 import com.ruoyi.stock.pojo.StockUninventory;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 @Data
 public class StockUninventoryDto  extends StockUninventory {
     private String productName;
@@ -15,4 +17,6 @@
 
     //鍏ュ簱绫诲瀷瀵瑰簲鐨刬d
     private Long recordId;
+
+    private BigDecimal unLockedQuantity;
 }
diff --git a/src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java b/src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java
index 3daa2a8..86feed9 100644
--- a/src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java
+++ b/src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java
@@ -1,14 +1,9 @@
 package com.ruoyi.stock.execl;
 
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
 
 @Data
 public class StockInventoryExportData {
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
index 16b0519..d37e367 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
@@ -1,12 +1,12 @@
 package com.ruoyi.stock.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.stock.dto.StockInRecordDto;
 import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.execl.StockInventoryExportData;
 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;
 
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java
index 9c058ed..a5bdc44 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockUninventoryMapper.java
@@ -1,11 +1,11 @@
 package com.ruoyi.stock.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.stock.dto.StockUninventoryDto;
 import com.ruoyi.stock.execl.StockInventoryExportData;
 import com.ruoyi.stock.pojo.StockUninventory;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
index 4568dcc..36e7cf0 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -3,19 +3,17 @@
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.lang.Nullable;
 
 import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -61,7 +59,7 @@
     private BigDecimal lockedQuantity;
 
     @ApiModelProperty("棰勮鏁伴噺")
-    private Integer warnNum;
+    private BigDecimal warnNum;
 
     @ApiModelProperty("澶囨敞")
     private String remark;
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
index 6403dba..6ed47de 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
@@ -3,13 +3,16 @@
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -37,11 +40,15 @@
     private BigDecimal qualitity;
 
     @TableField(fill = FieldFill.INSERT)
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;
 
     @ApiModelProperty("鏇存柊鏃堕棿")
     @TableField(fill = FieldFill.INSERT_UPDATE)
-    private Integer updateTime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime updateTime;
 
     @ApiModelProperty("鐗堟湰鍙�")
     private Integer version;
@@ -49,4 +56,7 @@
     @ApiModelProperty("澶囨敞")
     private String remark;
 
+    @ApiModelProperty("琚鍗曢攣瀹氭暟閲�")
+    private BigDecimal lockedQuantity;
+
 }
diff --git a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
index d4b5171..65dcca3 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -2,15 +2,14 @@
 
 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.framework.web.domain.R;
 import com.ruoyi.stock.dto.StockInRecordDto;
 import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.pojo.StockInventory;
-import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.List;
 
 /**
  * <p>
@@ -36,4 +35,7 @@
 
     IPage<StockInventoryDto> stockInAndOutRecord(StockInventoryDto stockInventoryDto,Page page);
 
+    Boolean frozenStock(StockInventoryDto stockInventoryDto);
+
+    Boolean thawStock(StockInventoryDto stockInventoryDto);
 }
diff --git a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
index 7f435fa..0d6ba6d 100644
--- a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
@@ -2,9 +2,10 @@
 
 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.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.dto.StockUninventoryDto;
 import com.ruoyi.stock.pojo.StockUninventory;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -25,4 +26,8 @@
     Integer subtractStockUninventory(StockUninventoryDto stockUninventoryDto);
 
     void exportStockUninventory(HttpServletResponse response, StockUninventoryDto stockUninventoryDto);
+
+    Boolean frozenStock(StockInventoryDto stockInventoryDto);
+
+    Boolean thawStock(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 e622dd7..bf64268 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -11,12 +11,10 @@
 import com.ruoyi.common.utils.OrderUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.staff.pojo.StaffOnJob;
 import com.ruoyi.stock.dto.StockInRecordDto;
 import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.dto.StockUninventoryDto;
 import com.ruoyi.stock.execl.StockInRecordExportData;
-import com.ruoyi.stock.execl.StockInventoryExportData;
 import com.ruoyi.stock.mapper.StockInRecordMapper;
 import com.ruoyi.stock.mapper.StockInventoryMapper;
 import com.ruoyi.stock.mapper.StockUninventoryMapper;
@@ -25,7 +23,6 @@
 import com.ruoyi.stock.pojo.StockUninventory;
 import com.ruoyi.stock.service.StockInRecordService;
 import lombok.AllArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
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 e103f75..b15f881 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -4,6 +4,7 @@
 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.common.enums.StockQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.domain.R;
@@ -13,11 +14,10 @@
 import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.dto.StockOutRecordDto;
 import com.ruoyi.stock.execl.StockInventoryExportData;
-import com.ruoyi.stock.pojo.StockInventory;
 import com.ruoyi.stock.mapper.StockInventoryMapper;
+import com.ruoyi.stock.pojo.StockInventory;
 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 lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -70,6 +70,7 @@
             newStockInventory.setQualitity(stockInventoryDto.getQualitity());
             newStockInventory.setVersion(1);
             newStockInventory.setRemark(stockInventoryDto.getRemark());
+            newStockInventory.setWarnNum(stockInventoryDto.getWarnNum());
             stockInventoryMapper.insert(newStockInventory);
         }else {
              stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
@@ -90,6 +91,9 @@
         stockOutRecordDto.setType("0");
         stockOutRecordService.add(stockOutRecordDto);
         StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
+        if (stockInventoryDto.getQualitity().compareTo( oldStockInventory.getQualitity().subtract(oldStockInventory.getLockedQuantity()))>0) {
+            throw new RuntimeException("搴撳瓨涓嶈冻鏃犳硶鍑哄簱");
+        }
         if (ObjectUtils.isEmpty(oldStockInventory)) {
             throw new RuntimeException("浜у搧搴撳瓨涓嶅瓨鍦�");
         }else {
@@ -167,4 +171,28 @@
     public IPage<StockInventoryDto> stockInAndOutRecord(StockInventoryDto stockInventoryDto, Page page) {
         return stockInventoryMapper.stockInAndOutRecord(stockInventoryDto,page);
     }
+
+    @Override
+    public Boolean frozenStock(StockInventoryDto stockInventoryDto) {
+        StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId());
+        if (stockInventory.getQualitity().compareTo(stockInventoryDto.getLockedQuantity())<0) {
+            throw new RuntimeException("鍐荤粨鏁伴噺涓嶈兘瓒呰繃搴撳瓨鏁伴噺");
+        }
+        if (ObjectUtils.isEmpty(stockInventory.getLockedQuantity())) {
+            stockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
+        }else {
+            stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().add(stockInventoryDto.getLockedQuantity()));
+        }
+        return this.updateById(stockInventory);
+    }
+
+    @Override
+    public Boolean thawStock(StockInventoryDto stockInventoryDto) {
+        StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId());
+        if (stockInventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity())<0) {
+            throw new RuntimeException("瑙e喕鏁伴噺涓嶈兘瓒呰繃鍐荤粨鏁伴噺");
+        }
+        stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity()));
+        return this.updateById(stockInventory);
+    }
 }
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 76dc175..f46f4c0 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -14,7 +14,6 @@
 import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.dto.StockOutRecordDto;
 import com.ruoyi.stock.dto.StockUninventoryDto;
-import com.ruoyi.stock.execl.StockInRecordExportData;
 import com.ruoyi.stock.execl.StockOutRecordExportData;
 import com.ruoyi.stock.mapper.StockInventoryMapper;
 import com.ruoyi.stock.mapper.StockOutRecordMapper;
@@ -25,7 +24,6 @@
 import com.ruoyi.stock.pojo.StockUninventory;
 import com.ruoyi.stock.service.StockOutRecordService;
 import lombok.AllArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
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 fae9248..4c3233b 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -4,18 +4,18 @@
 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.common.utils.poi.ExcelUtil;
 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.execl.StockInventoryExportData;
-import com.ruoyi.stock.pojo.StockInventory;
-import com.ruoyi.stock.pojo.StockUninventory;
 import com.ruoyi.stock.mapper.StockUninventoryMapper;
+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;
@@ -98,4 +98,28 @@
         ExcelUtil<StockInventoryExportData> util = new ExcelUtil<>(StockInventoryExportData.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);
+    }
 }
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index b3f54ee..e7f365f 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -4,14 +4,14 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.ruoyi.stock.pojo.StockInventory">
-        <result column="id" property="id" />
-        <result column="product_model_id" property="productModelId" />
-        <result column="qualitity" property="qualitity" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="version" property="version" />
-        <result column="locked_quantity" property="lockedQuantity" />
-        <result column="warn_num" property="warnNum" />
+        <result column="id" property="id"/>
+        <result column="product_model_id" property="productModelId"/>
+        <result column="qualitity" property="qualitity"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="version" property="version"/>
+        <result column="locked_quantity" property="lockedQuantity"/>
+        <result column="warn_num" property="warnNum"/>
     </resultMap>
     <update id="updateAddStockInventory">
         update stock_inventory
@@ -19,11 +19,14 @@
             <if test="ew.qualitity != null">
                 qualitity = qualitity + #{ew.qualitity},
             </if>
-           <if test="ew.version != null">
-               version = version + 1,
+            <if test="ew.version != null">
+                version = version + 1,
             </if>
             <if test="ew.remark != null and ew.remark !=''">
                 remark = #{ew.remark},
+            </if>
+            <if test="ew.warnNum != null and ew.warnNum !=''">
+                warn_num = #{ew.warnNum},
             </if>
             update_time = now()
         </set>
@@ -46,13 +49,21 @@
         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
+        select si.id,
+        si.qualitity,
+        COALESCE(si.locked_quantity, 0) as locked_quantity,
+        si.product_model_id,
+        si.create_time,
+        si.update_time,
+        COALESCE(si.warn_num, 0) as warn_num,
+        si.version,
+        (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+        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
+        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
         <if test="ew.productName != null and ew.productName !=''">
             and p.product_name like concat('%',#{ew.productName},'%')
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index 39b16b3..6c5d3be 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -44,13 +44,21 @@
         where product_model_id = #{ew.productModelId}
     </update>
     <select id="pageStockUninventory" resultType="com.ruoyi.stock.dto.StockUninventoryDto">
-        select su.*,
-               pm.model,
-               pm.unit,
-               p.product_name
+        select su.id,
+        su.qualitity,
+        COALESCE(su.locked_quantity, 0) as locked_quantity,
+        su.product_model_id,
+        su.create_time,
+        su.update_time,
+        su.version,
+        su.update_time,
+        (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
+        pm.model,
+        pm.unit,
+        p.product_name
         from stock_uninventory su
-                 left join product_model pm on su.product_model_id = pm.id
-                 left join product p on pm.product_id = p.id
+        left join product_model pm on su.product_model_id = pm.id
+        left join product p on pm.product_id = p.id
         where 1 = 1
         <if test="ew.productName != null and ew.productName !=''">
             and p.product_name like concat('%',#{ew.productName},'%')

--
Gitblit v1.9.3