From c3510da29a7974c6af7ff3de1ade3db429d6f848 Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期三, 18 八月 2021 14:27:59 +0800
Subject: [PATCH] 申购管理申请履历显示所有历史单据,提交时如有无效试剂耗材报错

---
 src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 37 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
index 18fc0ef..a37acb1 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -16,6 +16,7 @@
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.dao.DataAccessException;
 import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.dao.DuplicateKeyException;
@@ -46,6 +47,7 @@
 	@Resource
 	private OpeReagentStatusService opeReagentStatusService;
 
+	@Lazy
     @Resource
     private OpeUseFlowService opeUseFlowService;
 
@@ -92,7 +94,7 @@
 
 	@Transactional(propagation = Propagation.REQUIRED)
 	public List<OpeWarehouseReserve> getOpeWarehouseReserveListByName(String reagentId, String supplierId, Integer first,
-			Integer pageSize,String productSn) {
+			Integer pageSize,String productSn,String warehouseName) {
 		try {
 			Map<String, Object> params = new HashMap<String, Object>();
 			params.put("reagentName", reagentId);
@@ -100,6 +102,7 @@
 			params.put("first", first);
 			params.put("pageSize", pageSize);
 			params.put("productSn", productSn);
+			params.put("warehouseName", warehouseName);
 			return this.opeWarehouseReserveDao.getOpeWarehouseReserveList(params);
 		} catch (DataAccessException e) {
 			logger.error(e.getMessage(), e);
@@ -109,12 +112,13 @@
 	}
 
 	@Transactional(propagation = Propagation.REQUIRED)
-	public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn) {
+	public int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn,String warehouseName) {
 		try {
 			Map<String, Object> params = new HashMap<String, Object>();
 			params.put("reagentName", reagentId);
 			params.put("supplierId", supplierId);
 			params.put("productSn", productSn);
+			params.put("warehouseName", warehouseName);
 			return this.opeWarehouseReserveDao.getOpeWarehouseReserveTotalCount(params);
 		} catch (DataAccessException e) {
 			logger.error(e.getMessage(), e);
@@ -201,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);
@@ -221,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);
-						this.opeReagentStatusService.updateReagentStatus3(opeReagentStatus);
-						ss.add(opeReagentStatus);
-						//更新试剂状态和
-						opeReagentStatus.setHouseId(laboratoryId);
-						opeReagentStatus.setContainerId(laboratoryContainerId);
-						this.opeReagentStatusDao.updateOpeReagentStatusDao(opeReagentStatus);
+					this.opeReagentStatusService.updateReagentStatus3(reagentCodes,userId,projectNum,laboratoryId,laboratoryContainerId);
 
-					}
 					//更新是现实库存
 					OpeLaboratoryReserve lr=new OpeLaboratoryReserve();
 					lr.setReagentId(app.getReagent().getId());
@@ -291,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);
 		}
 	}
 
@@ -592,7 +587,7 @@
 
     @Override
 	@Transactional
-    public void insertOpeWarehouseReserve2(OpeApplyReserve opeApplyReserve, OpeOrder oo) {
+    public void insertOpeWarehouseReserve2(OpeApplyReserve opeApplyReserve, OpeOrder oo,String consigneeId) {
 
 		OpeWarehouseReserve ope = this.getOpeWarehouseReserve2(opeApplyReserve.getReagent().getId(), opeApplyReserve.getArticleNumber(),opeApplyReserve.getHouseId());
 		if (ope == null) {
@@ -613,6 +608,8 @@
 			//批号
 			ope.setArticleNumber(opeApplyReserve.getArticleNumber());
 			ope.setId(IDUtils.uuid());
+			//新增收货人 保存在仓库库存表
+			ope.setUserId(consigneeId);
 			opeWarehouseReserveDao.insertOpeWarehouseReserve2(ope);
 		}else {
 			ope.setReserve(ope.getReserve() + opeApplyReserve.getArrivalNum());
@@ -671,8 +668,22 @@
 		opeWarehouseReserveDao.updateBtReserve(id, useNum);
 	}
 
-	@Override
-	public void btWarehouseReserveReduce(List<OpeApplyReserve> opeList,String userId) {
+    @Override
+    public int countByReagentId(String id) {
+		int num = 0;
+		if (opeWarehouseReserveDao.countByReagentId(id) != null) {
+			num = opeWarehouseReserveDao.countByReagentId(id);
+		}
+		return num;
+    }
+
+    @Override
+    public OpeWarehouseReserve getRowData(String rowKey) {
+        return opeWarehouseReserveDao.getRowData(rowKey);
+    }
+
+    @Override
+	public void btWarehouseReserveReduce(List<OpeApplyReserve> opeList) {
 		if (opeList.size() < 1) {
 			return;
 		}
@@ -707,7 +718,7 @@
 							OpeUseFlow opeUseFlow = new OpeUseFlow();
 							opeUseFlow.setReagentCode(reagentCodes.get(0));
 							opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE);
-							opeUseFlow.setUserId(userId);
+							opeUseFlow.setUserId(warehouseReserve.getUserId());
 							//仓库地点
 							opeUseFlow.setHouseId(warehouseReserve.getWarehouseId());
 							opeUseFlow.setContainerId(warehouseReserve.getContainerId());
@@ -722,7 +733,11 @@
 							List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
 							opeUseFlow.setOperateState(baseMetaList.get(0).getId());
 							this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
+							//更新试剂状态表 :批号
+							opeReagentStatusDao.updateArticleNumberByRCode(reagentCodes.get(0),warehouseReserve.getArticleNumber());
+
 							reagentCodes.remove(0);
+
 						}
 
 					}
@@ -824,6 +839,7 @@
                 opeWarehouseReserve.setReserve(0);
                 opeWarehouseReserve.setWarehouseId(opeApply.getHouseId());
                 opeWarehouseReserve.setContainerId(opeApply.getContainerId());
+                opeWarehouseReserve.setUserId(loginUserId);
             }
             opeWarehouseReserve.setReserve(opeWarehouseReserve.getReserve() + opeApply.getArrivalNum());
             if (StringUtils.isBlank(opeWarehouseReserve.getId())) {

--
Gitblit v1.9.2