From 08afeadee3b2a73266a0a43c899f86cd474a274d Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 01 Aug 2022 15:32:48 +0800
Subject: [PATCH] 加工产品新增销售、库存损耗功能

---
 src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java |   18 +++++++++
 src/main/java/org/springblade/modules/process/mapper/ProcessMapper.java                 |    3 +
 src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml                  |   22 ++++++++++-
 src/main/java/org/springblade/modules/process/service/impl/ProcessServiceImpl.java      |   10 +++++
 src/main/java/org/springblade/modules/process/service/IProcessService.java              |   15 +++++++
 src/main/java/org/springblade/modules/sale/controller/SaleController.java               |   19 +++++++++
 6 files changed, 85 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java b/src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java
index 57ca548..c1d0851 100644
--- a/src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java
+++ b/src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java
@@ -32,6 +32,7 @@
 import org.springblade.modules.InventoryLoss.entity.Inventory;
 import org.springblade.modules.InventoryLoss.service.InventoryService;
 import org.springblade.modules.InventoryLoss.vo.InventoryVO;
+import org.springblade.modules.process.service.IProcessService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -50,6 +51,7 @@
 
 	private final InventoryService inventoryService;
 	private final FarmProductStockService farmProductStockService;
+	private final IProcessService processService;
 
 	/**
 	 * 详情
@@ -121,6 +123,22 @@
 		return R.status(inventoryService.saveOrUpdate(inventory));
 	}
 
+	/**
+	 * 新增或修改 库存损耗记录表
+	 */
+	@PostMapping("/submitProcess")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "新增或修改", notes = "传入sale")
+	public R submitProcess(@Valid @RequestBody InventoryVO inventory) {
+		boolean res = processService.stockCompare(inventory.getSaleNum(),inventory.getProid());
+		if (!res){
+			throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足!"));
+		}else {
+			//库存充足,减去相应库存
+			processService.stockReduce(inventory.getSaleNum(),inventory.getProid());
+		}
+		return R.status(inventoryService.saveOrUpdate(inventory));
+	}
 
 	/**
 	 * 删除 库存损耗记录表
diff --git a/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.java b/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.java
index 009affd..95886fd 100644
--- a/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.java
+++ b/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.java
@@ -40,4 +40,7 @@
 	 */
 	List<ProcessVO> selectProcessPage(IPage page, @Param("process") ProcessVO process);
 
+	boolean stockCompare(@Param("saleNum") Double saleNum, @Param("proid") String proid);
+
+	Boolean stockReduce(@Param("saleNum") Double saleNum, @Param("proid") String proid);
 }
diff --git a/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml b/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
index 44033ac..7b00f08 100644
--- a/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
+++ b/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
@@ -23,7 +23,7 @@
 
 
     <select id="selectProcessPage" resultMap="processResultMap">
-        SELECT p.strain_id,
+        SELECT p.strain_id,p.id,
         p.land_id,sale_time,sale_num,strain_name,process_id,
         SUM(p.process_num) as process_num,
         m.machining_type AS processName,
@@ -39,7 +39,25 @@
         <if test="process.strainId !=null and process.strainId !=''">
             and p.strain_id = #{process.strainId}
         </if>
-        GROUP BY p.strain_id,m.machining_type,m.machining_tp,p.land_id,sale_time,sale_num,process_id
+        GROUP BY p.strain_id,m.machining_type,m.machining_tp,p.land_id,sale_time,sale_num,process_id,p.id
     </select>
 
+    <select id="stockCompare" resultType="boolean">
+        SELECT
+            CASE
+                WHEN
+                    process_num > #{saleNum} THEN
+                    TRUE ELSE FALSE
+                END result
+        FROM
+            sys_process
+        WHERE
+            id = #{proid}
+    </select>
+
+    <update id="stockReduce">
+        UPDATE sys_process SET process_num = process_num - #{saleNum}
+        WHERE
+            id = #{proid}
+    </update>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/process/service/IProcessService.java b/src/main/java/org/springblade/modules/process/service/IProcessService.java
index 51eed46..6d8ccfa 100644
--- a/src/main/java/org/springblade/modules/process/service/IProcessService.java
+++ b/src/main/java/org/springblade/modules/process/service/IProcessService.java
@@ -38,4 +38,19 @@
 	 */
 	IPage<ProcessVO> selectProcessPage(IPage<ProcessVO> page, ProcessVO process);
 
+	/**
+	 * 库存对比
+	 * @param saleNum 销售数量
+	 * @param proid 加工表主键
+	 * @return
+	 */
+	boolean stockCompare(Double saleNum, String proid);
+
+	/**
+	 * 对应库存减少
+	 * @param saleNum 销售数量
+	 * @param proid 加工表主键
+	 * @return
+	 */
+	Boolean stockReduce(Double saleNum, String proid);
 }
diff --git a/src/main/java/org/springblade/modules/process/service/impl/ProcessServiceImpl.java b/src/main/java/org/springblade/modules/process/service/impl/ProcessServiceImpl.java
index 7b53dcc..f08246c 100644
--- a/src/main/java/org/springblade/modules/process/service/impl/ProcessServiceImpl.java
+++ b/src/main/java/org/springblade/modules/process/service/impl/ProcessServiceImpl.java
@@ -38,4 +38,14 @@
 		return page.setRecords(baseMapper.selectProcessPage(page, process));
 	}
 
+	@Override
+	public boolean stockCompare(Double saleNum, String proid) {
+		return baseMapper.stockCompare(saleNum,proid);
+	}
+
+	@Override
+	public Boolean stockReduce(Double saleNum, String proid) {
+		return baseMapper.stockReduce(saleNum,proid);
+	}
+
 }
diff --git a/src/main/java/org/springblade/modules/sale/controller/SaleController.java b/src/main/java/org/springblade/modules/sale/controller/SaleController.java
index 5e296bf..3884491 100644
--- a/src/main/java/org/springblade/modules/sale/controller/SaleController.java
+++ b/src/main/java/org/springblade/modules/sale/controller/SaleController.java
@@ -30,6 +30,7 @@
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.modules.farmplant.service.FarmProductStockService;
+import org.springblade.modules.process.service.IProcessService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -52,6 +53,7 @@
 
 	private final ISaleService saleService;
 	private final FarmProductStockService farmProductStockService;
+	private final IProcessService processService;
 
 	/**
 	 * 详情
@@ -123,6 +125,23 @@
 		return R.status(saleService.saveOrUpdate(sale));
 	}
 
+	/**
+	 * 新增或修改 销售记录表(加工产品)
+	 */
+	@PostMapping("/submitProcess")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "新增或修改", notes = "传入sale")
+	public R submitProcess(@Valid @RequestBody SaleVO sale) {
+		//对比加工表库存量
+		boolean res = processService.stockCompare(sale.getSaleNum(),sale.getProid());
+		if (!res){
+			throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足!"));
+		}else {
+			//库存充足,减去相应库存
+			processService.stockReduce(sale.getSaleNum(),sale.getProid());
+		}
+		return R.status(saleService.saveOrUpdate(sale));
+	}
 
 	/**
 	 * 删除 销售记录表

--
Gitblit v1.9.3