From 14abea221d9284d2c04a726ca039defa60f205e2 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Thu, 30 Jun 2022 20:56:06 +0800
Subject: [PATCH] 1、接口对接,增加库存判断,省市县对接,动态调整库存

---
 src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml                              |    1 
 src/main/java/org/springblade/modules/farmplant/service/FarmProductStockService.java          |    4 +
 src/main/java/org/springblade/modules/farmplant/service/impl/FarmProductStockServiceImpl.java |    9 +++
 src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.java            |    2 
 src/main/java/org/springblade/modules/sale/entity/Sale.java                                   |   75 ++++++++++++++++--------
 src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml             |   20 ++++++
 src/main/java/org/springblade/modules/sale/controller/SaleController.java                     |   10 +++
 7 files changed, 95 insertions(+), 26 deletions(-)

diff --git a/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.java b/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.java
index 0d6593a..1f5e2d2 100644
--- a/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.java
+++ b/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.java
@@ -34,4 +34,6 @@
 	List<FarmProductStockVO> statisticsProduct(@Param("farmProductStock") FarmProductStockVO farmProductStock);
 	List<FarmProductStockVO> statisticsProductx(@Param("page") IPage page, @Param("farmProductStock") FarmProductStockVO farmProductStock);
 	Map<String, String> selctProductCount(String year);
+	boolean stockCompare(double sale,String id);
+	boolean stockReduce(double sale,String id);
 }
diff --git a/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml b/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml
index 10e2ee0..50aed43 100644
--- a/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml
+++ b/src/main/java/org/springblade/modules/farmplant/mapper/FarmProductStockMapper.xml
@@ -90,4 +90,24 @@
             and sfps.tenant_id = #{farmProductStock.tenantId}
         </if>
     </select>
+
+    <!--销售对比库存是否充足-->
+    <select id="stockCompare" resultType="boolean">
+        SELECT
+        CASE
+            WHEN
+                weight > #{sale} THEN
+                TRUE ELSE FALSE
+                END result
+        FROM
+            sys_farm_product_stock
+        WHERE
+            strain_id = #{id}
+    </select>
+    <!--减去对应库存-->
+    <update id="stockReduce">
+        UPDATE sys_farm_product_stock SET weight = weight - #{sale}
+        WHERE
+            strain_id = #{id}
+    </update>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/farmplant/service/FarmProductStockService.java b/src/main/java/org/springblade/modules/farmplant/service/FarmProductStockService.java
index 5ae263b..a03c30a 100644
--- a/src/main/java/org/springblade/modules/farmplant/service/FarmProductStockService.java
+++ b/src/main/java/org/springblade/modules/farmplant/service/FarmProductStockService.java
@@ -32,4 +32,8 @@
 	FarmProductStockVO statisticsProduct(FarmProductStockVO farmProductStock);
 	IPage<FarmProductStockVO> statisticsProductx(IPage<FarmProductStockVO> page, FarmProductStockVO farmProductStock);
 	Map<String, String> selctProductCount(String year);
+	//查看库存是否充足
+	boolean stockCompare(double sale,String id);
+	//减去相应库存
+	boolean stockReduce(double sale,String id);
 }
diff --git a/src/main/java/org/springblade/modules/farmplant/service/impl/FarmProductStockServiceImpl.java b/src/main/java/org/springblade/modules/farmplant/service/impl/FarmProductStockServiceImpl.java
index 20120b1..82f9f7b 100644
--- a/src/main/java/org/springblade/modules/farmplant/service/impl/FarmProductStockServiceImpl.java
+++ b/src/main/java/org/springblade/modules/farmplant/service/impl/FarmProductStockServiceImpl.java
@@ -60,4 +60,13 @@
 	public Map<String, String> selctProductCount(String year) {
 		return baseMapper.selctProductCount(year);
 	}
+
+	@Override
+	public boolean stockCompare(double sale,String id) {
+		return baseMapper.stockCompare(sale,id);
+	}
+	@Override
+	public boolean stockReduce(double sale,String id) {
+		return baseMapper.stockReduce(sale,id);
+	}
 }
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 b2ee976..706737e 100644
--- a/src/main/java/org/springblade/modules/sale/controller/SaleController.java
+++ b/src/main/java/org/springblade/modules/sale/controller/SaleController.java
@@ -28,6 +28,8 @@
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.modules.farmplant.service.FarmProductStockService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -49,6 +51,7 @@
 public class SaleController extends BladeController {
 
 	private final ISaleService saleService;
+	private final FarmProductStockService farmProductStockService;
 
 	/**
 	 * 详情
@@ -110,6 +113,13 @@
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入sale")
 	public R submit(@Valid @RequestBody Sale sale) {
+		boolean res = farmProductStockService.stockCompare(sale.getSaleNum(),sale.getStrainId());
+		if (!res){
+			throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足!"));
+		}else {
+			//库存充足,减去相应库存
+			farmProductStockService.stockReduce(sale.getSaleNum(),sale.getStrainId());
+		}
 		return R.status(saleService.saveOrUpdate(sale));
 	}
 
diff --git a/src/main/java/org/springblade/modules/sale/entity/Sale.java b/src/main/java/org/springblade/modules/sale/entity/Sale.java
index 7a2169d..586b162 100644
--- a/src/main/java/org/springblade/modules/sale/entity/Sale.java
+++ b/src/main/java/org/springblade/modules/sale/entity/Sale.java
@@ -16,12 +16,16 @@
  */
 package org.springblade.modules.sale.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.time.LocalDateTime;
-import org.springblade.core.mp.base.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * 销售记录表实体类
@@ -37,29 +41,48 @@
 	private static final long serialVersionUID = 1L;
 
 	/**
-	* 品种id
-	*/
-		private Integer strainId;
-	/**
-	* 销售时间
-	*/
-		private LocalDateTime saleTime;
-	/**
-	* 销售数量
-	*/
-		private Integer saleNum;
-	/**
-	* 销售去向
-	*/
-		private Integer saleDestination;
-	/**
-	* 具体销售去向
-	*/
-		private String saleDestination1;
-	/**
-	* 销售价格
-	*/
-		private Double salePrice;
+	 * 主键id
+	 */
+	@TableId(value = "id",type = IdType.AUTO)
+	private Long id;
 
+	/**
+	 * 品种id
+	 */
+	private String strainId;
+	/**
+	 * 销售时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private Date saleTime;
+	/**
+	 * 销售数量
+	 */
+	private Double saleNum;
+	/**
+	 * 销售去向(省)
+	 */
+	private Integer saleDestination;
+	/**
+	 * 具体销售去向
+	 */
+	private String saleDestination1;
+	/**
+	 * 销售价格
+	 */
+	private Double salePrice;
+	/**
+	 * 销售去向(市)
+	 */
+	private Integer city;
+	/**
+	 * 销售去向(县)
+	 */
+	private Integer county;
+	/**
+	 * 品牌
+	 */
+	private String saleBrand;
 
 }
diff --git a/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml b/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
index 8e1f3ca..79095ea 100644
--- a/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
+++ b/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
@@ -49,4 +49,5 @@
             YEAR ( sale_time ) = YEAR ( date_sub( now( )
             , INTERVAL 1 YEAR ) );
     </select>
+
 </mapper>

--
Gitblit v1.9.3