From fcdb56cf78b63f5b1455bbfab0c2bd7934b0aca5 Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期三, 07 四月 2021 18:18:14 +0800
Subject: [PATCH] 去除多余事务

---
 src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java |   87 ++++++++++++++++++++++---------------------
 1 files changed, 45 insertions(+), 42 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
index 33cd818..f4c3e7a 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusServiceImpl.java
@@ -476,45 +476,48 @@
 	}
 
 	@Override
-	@Transactional(propagation = Propagation.REQUIRED)
-	public boolean updateReagentStatus3(OpeReagentStatus opeReagentStatus) {
+	public boolean updateReagentStatus3(List<String> reagentCodes,String userId,String projectNum,String laboratoryId,String laboratoryContainerId) {
 		try {
-			//1.判断->试剂状态是否为在仓库
-			if (isAllowWarehouseUse(opeReagentStatus)) {
-				//1.1获得 试剂的库存选择批次
-				List<OpeWarehouseReserve> owrList = this.opeWarehouseReserveService
-						.getOpeWarehouseReserveList(opeReagentStatus.getReagent().getId(), opeReagentStatus.getArticleNumber(),opeReagentStatus.getHouseId());
-				//在同一个仓库有相同批次的试剂,根据时间早的,个数少的先扣除库存
-				owrList.get(0).setReserve(owrList.get(0).getReserve() - 1);
-				this.opeWarehouseReserveService.updateOpeWarehouseReserve(owrList.get(0));
+			for (String opeReagentStatusId : reagentCodes) {
+				OpeReagentStatus opeReagentStatus = this.getOpeReagentStatus(opeReagentStatusId);
+				opeReagentStatus.setUserId(userId);
+				opeReagentStatus.setProjectNum(projectNum);
+				//1.判断->试剂状态是否为在仓库
+				if (isAllowWarehouseUse(opeReagentStatus)) {
+					//1.1获得 试剂的库存选择批次
+					List<OpeWarehouseReserve> owrList = this.opeWarehouseReserveService
+							.getOpeWarehouseReserveList(opeReagentStatus.getReagent().getId(), opeReagentStatus.getArticleNumber(), opeReagentStatus.getHouseId());
+					//在同一个仓库有相同批次的试剂,根据时间早的,个数少的先扣除库存
+					owrList.get(0).setReserve(owrList.get(0).getReserve() - 1);
+					this.opeWarehouseReserveService.updateOpeWarehouseReserve(owrList.get(0));
+				}
+				//设置 试剂状态->领用待入库
+				opeReagentStatus.setStatus(ArrivalStatus.NOREGISTER);
+				opeReagentStatus.setHouseId(laboratoryId);
+				opeReagentStatus.setContainerId(laboratoryContainerId);
+				int row = this.updateOpeReagentStatus(opeReagentStatus);
+
+				if (row == 0) {
+					return false;
+				}
+
+				OpeUseFlow opeUseFlow = new OpeUseFlow();
+				opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode());
+				opeUseFlow.setStatus(opeReagentStatus.getStatus());
+				opeUseFlow.setHouseId(laboratoryId);
+				opeUseFlow.setContainerId(laboratoryContainerId);
+				opeUseFlow.setUserId(opeReagentStatus.getUserId());
+				opeUseFlow.setPlace(opeReagentStatus.getPlace());
+				opeUseFlow.setRemainder(opeReagentStatus.getRemainder());
+
+				Map<String, String> metaMap = new HashMap<>();
+				metaMap.put("groupId", "operate_status");
+				metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
+				List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
+				opeUseFlow.setOperateState(baseMetaList.get(0).getId());
+
+				this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
 			}
-			//设置 试剂状态->领用待入库
-			opeReagentStatus.setStatus(ArrivalStatus.NOREGISTER);
-			int row = this.opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus);
-
-			if (row == 0) {
-				return false;
-			}
-
-
-
-			OpeUseFlow opeUseFlow = new OpeUseFlow();
-			opeUseFlow.setReagentCode(opeReagentStatus.getReagentCode());
-			opeUseFlow.setStatus(opeReagentStatus.getStatus());
-			opeUseFlow.setHouseId(opeReagentStatus.getHouseId());
-			opeUseFlow.setContainerId(opeReagentStatus.getContainerId());
-			opeUseFlow.setUserId(opeReagentStatus.getUserId());
-			opeUseFlow.setPlace(opeReagentStatus.getPlace());
-			opeUseFlow.setRemainder(opeReagentStatus.getRemainder());
-
-			Map<String, String> metaMap = new HashMap<>();
-			metaMap.put("groupId", "operate_status");
-			metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
-			List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
-			opeUseFlow.setOperateState(baseMetaList.get(0).getId());
-
-			this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
-
 			return true;
 		} catch (DuplicateKeyException ex) {
 			logger.warn(ex.getMessage(), ex);
@@ -527,6 +530,9 @@
 			logger.error(ex.getMessage(), ex);
 			throw new BusinessException(ExceptionEnumCode.DB_ERR,
 					MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), ex);
+		}catch(Exception e){
+			e.printStackTrace();
+			throw new RuntimeException(e);
 		}
 	}
 
@@ -576,7 +582,6 @@
 		}
 	}
 
-	@Transactional(propagation = Propagation.REQUIRED)
 	public OpeReagentStatus getOpeReagentStatus(String id) {
 		try {
 			return this.opeReagentStatusDao.getOpeReagentStatus(id);
@@ -587,7 +592,6 @@
 		}
 	}
 
-	@Transactional(propagation = Propagation.REQUIRED)
 	public OpeReagentStatus getOpeReagentStatusByReagentCode2(OpeReagentStatus opeReagentStatus) {
 		try {
 			OpeReagentStatus status = this.opeReagentStatusDao.getOpeReagentStatusByReagentCode(opeReagentStatus.getReagentCode());
@@ -600,7 +604,6 @@
 		}
 	}
 
-	@Transactional(propagation = Propagation.REQUIRED)
 	public OpeReagentStatus getOpeReagentStatusByReagentCode(String reagentCode) {
 		try {
 			OpeReagentStatus status = this.opeReagentStatusDao.getOpeReagentStatusByReagentCode(reagentCode);
@@ -1042,8 +1045,8 @@
 	}
 
 	@Override
-	public void updateOpeReagentStatus(OpeReagentStatus opeReagentStatus) {
-		opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus);
+	public int updateOpeReagentStatus(OpeReagentStatus opeReagentStatus) {
+		return opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus);
 	}
 
 	@Override

--
Gitblit v1.9.2