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 ++++++++++++++++++++++---------------------
src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java | 4 +-
src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java | 21 +++-------
3 files changed, 53 insertions(+), 59 deletions(-)
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java
index a36d097..700b8c3 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeReagentStatusService.java
@@ -68,7 +68,7 @@
boolean updateReagentStatus(OpeReagentStatus opeReagentStatus);
boolean updateReagentStatus2(OpeReagentStatus opeReagentStatus);
- boolean updateReagentStatus3(OpeReagentStatus opeReagentStatus);
+ boolean updateReagentStatus3(List<String> reagentCodes,String userId,String projectNum,String laboratoryId,String laboratoryContainerId);
int getLogOpeReagentStatusTotalCount(String reagentLogId, Integer status, String userLogId, String loginId);
@@ -103,7 +103,7 @@
List<String> generateReagentCode(String startReagentCode2, String endReagentCode2);
- void updateOpeReagentStatus(OpeReagentStatus opeReagentStatus);
+ int updateOpeReagentStatus(OpeReagentStatus opeReagentStatus);
int getReagentNumInWarehouse(String id, String articleNumber, String warehouseId);
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
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
index 2cf787e..d63916b 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -205,7 +205,7 @@
}
}
- @Transactional(propagation = Propagation.REQUIRED)
+ @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public boolean updateOpeWarehouseReserve(OpeWarehouseReserve opeWarehouseReserve) {
try {
int row = this.opeWarehouseReserveDao.updateOpeWarehouseReserve(opeWarehouseReserve);
@@ -225,26 +225,14 @@
}
}
- @Transactional(propagation = Propagation.REQUIRED)
+ @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public void claimForPerson(List<OpeApplyReserve> selectedListForPerson,String userId,String projectNum,String laboratoryId,String laboratoryContainerId){
try{
for(OpeApplyReserve app:selectedListForPerson){
List<String> reagentCodes = app.getReagentCode();
if (reagentCodes != null && reagentCodes.size() > 0) {
- List<OpeReagentStatus> ss=new ArrayList<>();
- for (String opeReagentStatusId : reagentCodes) {
- OpeReagentStatus opeReagentStatus = this.opeReagentStatusService.getOpeReagentStatus(opeReagentStatusId);
- opeReagentStatus.setUserId(userId);
- opeReagentStatus.setProjectNum(projectNum);
- //boolean flag = this.opeReagentStatusService.updateReagentStatus(opeReagentStatus);
- ss.add(opeReagentStatus);
- //更新试剂状态和
- opeReagentStatus.setHouseId(laboratoryId);
- opeReagentStatus.setContainerId(laboratoryContainerId);
- this.opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus);
- this.opeReagentStatusService.updateReagentStatus3(opeReagentStatus);
+ this.opeReagentStatusService.updateReagentStatus3(reagentCodes,userId,projectNum,laboratoryId,laboratoryContainerId);
- }
//更新是现实库存
OpeLaboratoryReserve lr=new OpeLaboratoryReserve();
lr.setReagentId(app.getReagent().getId());
@@ -295,6 +283,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);
}
}
--
Gitblit v1.9.2