From 680b380e3d9189f2bfd79fb33a6428d82219e4bc Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sat, 17 Sep 2022 10:29:44 +0800
Subject: [PATCH] 新增加工产品出库,修改加工产品数据存储逻辑

---
 src/main/java/org/springblade/modules/process/controller/ProcessController.java |   69 ++++++++++++++++++++++++++++++++++
 1 files changed, 68 insertions(+), 1 deletions(-)

diff --git a/src/main/java/org/springblade/modules/process/controller/ProcessController.java b/src/main/java/org/springblade/modules/process/controller/ProcessController.java
index 7e3cb38..4327905 100644
--- a/src/main/java/org/springblade/modules/process/controller/ProcessController.java
+++ b/src/main/java/org/springblade/modules/process/controller/ProcessController.java
@@ -28,7 +28,10 @@
 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.entity.FarmProductStock;
 import org.springblade.modules.farmplant.service.FarmProductStockService;
+import org.springblade.modules.processInv.entity.ProcessInv;
+import org.springblade.modules.processInv.service.IProcessInvService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -36,6 +39,8 @@
 import org.springblade.modules.process.vo.ProcessVO;
 import org.springblade.modules.process.service.IProcessService;
 import org.springblade.core.boot.ctrl.BladeController;
+
+import java.util.Date;
 
 /**
  * 加工记录表 控制器
@@ -51,6 +56,7 @@
 
 	private final IProcessService processService;
 	private final FarmProductStockService farmProductStockService;
+	private final IProcessInvService processInvService;
 	/**
 	 * 详情
 	 */
@@ -117,6 +123,39 @@
 		}else {
 			//库存充足,减去相应库存
 			farmProductStockService.stockReduce(process.getSaleNum(),process.getProid());
+			//向加工产品库存表中添加数据
+			ProcessInv processInv = new ProcessInv();
+
+			processInv.setFpsId(process.getFarmId());
+			processInv.setProductId(Long.parseLong(process.getProcessId()));
+			processInv.setProductInventoryNum(process.getProcessNum());
+//			processInv.setStrainId(Long.parseLong(process.getStrainId()));
+			processInv.setUpdateUser(process.getCreateUser());
+			processInvService.insertOrUpdate(processInv);
+		}
+		return R.status(processService.saveOrUpdate(process));
+	}
+
+	/**
+	 * 新增或修改 加工记录表(加工产品)
+	 */
+	@PostMapping("/submitProcess")
+	@ApiOperation(value = "新增或修改", notes = "传入process")
+	public R submitProcess(@Valid @RequestBody ProcessVO process) {
+		boolean res = processInvService.stockCompare(process.getSaleNum(),process.getProid());
+		if (!res){
+			throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足!"));
+		}else {
+			//库存充足,减去相应库存
+			processInvService.stockReduce(process.getSaleNum(),process.getProid());
+			//向加工产品库存表中添加数据
+			ProcessInv processInv = new ProcessInv();
+
+			processInv.setFpsId(process.getFarmId());
+			processInv.setProductId(Long.parseLong(process.getProcessId()));
+			processInv.setProductInventoryNum(process.getProcessNum());
+			processInv.setUpdateUser(process.getCreateUser());
+			processInvService.insertOrUpdate(processInv);
 		}
 		return R.status(processService.saveOrUpdate(process));
 	}
@@ -128,7 +167,35 @@
 	@PostMapping("/remove")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids,@RequestParam String farmId) {
+		Process process = processService.getById(Long.parseLong(ids));
+		if (process.getStrainId() == null){
+			//只对加工产品库存操作
+			ProcessInv processInvCP = processInvService.selectByFarmIdProductId(farmId,process.getProcessId());
+			ProcessInv processInvLY = processInvService.selectByFarmIdProductId(farmId,process.getParentId());
+			if (processInvCP.getProductInventoryNum()<0){
+				throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前加工产品库存不足,不能删除数据!"));
+			}else {
+				processInvService.stockReduce(process.getProcessNum(),processInvCP.getId().toString());
+				processInvService.stockAdd(process.getSaleNum(),processInvLY.getId().toString());
+			}
+		}else {
+			//对加工产品库存和农产品库存操作
+			FarmProductStock farmProductStock = farmProductStockService.selectBy2Id(process.getStrainId(),process.getLandId());
+			ProcessInv processInv = processInvService.selectByFarmIdProductId(farmId,process.getProcessId());
+			Double invNum = processInv.getProductInventoryNum()-process.getProcessNum();
+			if (invNum<0){
+				throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前加工产品库存不足,不能删除数据!"));
+			}else {
+				//更新加工产品库存
+				processInv.setProductInventoryNum(invNum);
+				processInvService.updateById(processInv);
+				//更新农产品库存
+				Double weight = Double.parseDouble(farmProductStock.getWeight())+process.getSaleNum();
+				farmProductStock.setWeight(weight.toString());
+				farmProductStockService.updateById(farmProductStock);
+			}
+		}
 		return R.status(processService.deleteLogic(Func.toLongList(ids)));
 	}
 

--
Gitblit v1.9.3