From fa326e87de2805d8b66b301daee596b1d959e430 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Thu, 15 Sep 2022 11:42:45 +0800
Subject: [PATCH] 出入库记录删除回滚逻辑修改

---
 src/main/java/org/springblade/modules/process/controller/ProcessController.java |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 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..6367c02 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,14 @@
 		}else {
 			//库存充足,减去相应库存
 			farmProductStockService.stockReduce(process.getSaleNum(),process.getProid());
+			//向加工产品库存表中添加数据
+			ProcessInv processInv = new ProcessInv();
+			processInv.setFpsId(process.getProid());
+			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));
 	}
@@ -129,6 +143,27 @@
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "逻辑删除", notes = "传入ids")
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		//对加工产品库存和农产品库存进行回滚
+		Process process = processService.getById(Long.parseLong(ids));
+		//通过strainId和landId 确定是由哪一个品种库存加工而来
+		FarmProductStock farmProductStock = farmProductStockService.selectBy2Id(process.getStrainId(),process.getLandId());
+		//通过strainId和processId(processId为产品id)确定对应的加工库存
+		ProcessInv processInv = processInvService.selectBySPId(process.getStrainId(),process.getProcessId(),farmProductStock.getId());
+		//农产品增加相应库存
+		Double weight = Double.parseDouble(farmProductStock.getWeight())+process.getSaleNum();
+		farmProductStock.setWeight(weight.toString());
+		farmProductStockService.updateById(farmProductStock);
+		//加工产品减少对应库存
+		Double num = processInv.getProductInventoryNum()-process.getProcessNum();
+		if (num<0){
+			//删除对应库存
+//			processInvService.del(processInv.getId());
+			throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足,不能删除数据!"));
+		}else {
+			//更新库存
+			processInv.setProductInventoryNum(num);
+			processInvService.updateById(processInv);
+		}
 		return R.status(processService.deleteLogic(Func.toLongList(ids)));
 	}
 

--
Gitblit v1.9.3