From a5e1d3d875f140065a8f30a27601fb45ad36714a Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期五, 05 二月 2021 16:12:00 +0800
Subject: [PATCH] 修改入库接口--入的是智能柜的走入库+领用流程

---
 src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java |   99 ++++++++++++++++++++++++++-----------------------
 1 files changed, 53 insertions(+), 46 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
index a0deb2c..8033b98 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -48,8 +48,6 @@
 
     @Resource
     private OpeUseFlowService opeUseFlowService;
-    @Resource
-    private OpeWarehouseReserveService opeWarehouseReserveService;
 
     @Resource(name="baseMetaDao")
     private BaseMetaDao baseMetaDao;
@@ -94,7 +92,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);
@@ -102,6 +100,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);
@@ -111,12 +110,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);
@@ -508,23 +508,7 @@
 					opeReagentStatus.setStoreType(StoreType.DIRECTSTORE);
 					this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus);
 
-					// 试剂使用情况入库insert
-					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(opeApply.getReagent().getMainMetering()!=null?opeApply.getReagent().getMainMetering():new BigDecimal(0));
-					opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
 
-					Map<String, String> metaMap = new HashMap<>();
-					metaMap.put("groupId", "operate_status");
-					metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
-					List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
-					opeUseFlow.setOperateState(baseMetaList.get(0).getId());
-					this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
 					// 试剂使用情况领用insert
 					OpeUseFlow ouf=new OpeUseFlow();
 					ouf.setReagentCode(opeReagentStatus.getReagentCode());
@@ -572,23 +556,7 @@
 					opeReagentStatus.setStoreType(StoreType.DIRECTSTORE);
 					this.opeReagentStatusService.insertOpeReagentStatus(opeReagentStatus);
 
-					// 试剂使用情况入库insert
-					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(opeApply.getReagent().getMainMetering()!=null?opeApply.getReagent().getMainMetering():new BigDecimal(0));
-					opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
 
-					Map<String, String> metaMap = new HashMap<>();
-					metaMap.put("groupId", "operate_status");
-					metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
-					List<BaseMeta> baseMetaList = baseMetaDao.getBaseMetaList(metaMap);
-					opeUseFlow.setOperateState(baseMetaList.get(0).getId());
-					this.opeUseFlowService.insertOpeUseFlow(opeUseFlow);
 					// 试剂使用情况领用insert
 					OpeUseFlow ouf=new OpeUseFlow();
 					ouf.setReagentCode(opeReagentStatus.getReagentCode());
@@ -626,10 +594,9 @@
 
     @Override
 	@Transactional
-    public void insertOpeWarehouseReserve2(OpeApplyReserve opeApplyReserve, OpeOrder oo) {
+    public void insertOpeWarehouseReserve2(OpeApplyReserve opeApplyReserve, OpeOrder oo,String consigneeId) {
 
-		OpeWarehouseReserve ope = this.opeWarehouseReserveService
-				.getOpeWarehouseReserve2(opeApplyReserve.getReagent().getId(), opeApplyReserve.getArticleNumber(),opeApplyReserve.getHouseId());
+		OpeWarehouseReserve ope = this.getOpeWarehouseReserve2(opeApplyReserve.getReagent().getId(), opeApplyReserve.getArticleNumber(),opeApplyReserve.getHouseId());
 		if (ope == null) {
 
 			ope = new OpeWarehouseReserve();
@@ -637,6 +604,8 @@
 			ope.setReserve(opeApplyReserve.getArrivalNum());
 			//仓库
 			ope.setWarehouseId(opeApplyReserve.getHouseId());
+			//仓库的货柜号
+			ope.setContainerId(opeApplyReserve.getContainerId());
 			//试剂
 			ope.setReagentId(opeApplyReserve.getReagent().getId());
 			//订单编号
@@ -646,10 +615,12 @@
 			//批号
 			ope.setArticleNumber(opeApplyReserve.getArticleNumber());
 			ope.setId(IDUtils.uuid());
+			//新增收货人 保存在仓库库存表
+			ope.setUserId(consigneeId);
 			opeWarehouseReserveDao.insertOpeWarehouseReserve2(ope);
 		}else {
 			ope.setReserve(ope.getReserve() + opeApplyReserve.getArrivalNum());
-			this.opeWarehouseReserveService.updateOpeWarehouseReserve(ope);
+			this.updateOpeWarehouseReserve(ope);
 		}
 
 
@@ -711,14 +682,15 @@
 		}
 		for (OpeApplyReserve oar : opeList) {
 			String reagentId = oar.getReagent().getId();
-
+			List<String> reagentCodes = new ArrayList<>(oar.getReagentCode());
 			//开始库存扣除
 			List<OpeWarehouseReserve> cacheUpdateList = oar.getCacheUpdateList();
 			for (OpeWarehouseReserve owr : cacheUpdateList) {
 				//1.根据仓库id和试剂id搜索不同批号的试剂库存
-				List<OpeWarehouseReserve> reserveList = opeWarehouseReserveService
+				List<OpeWarehouseReserve> reserveList = this
 						.selectWarehouseByRidAndArticleNumberAndWarehouse(reagentId, owr.getArticleNumber(), owr.getWarehouseId());
 				Integer numLeave = owr.getUseNum();
+
 				for (OpeWarehouseReserve warehouseReserve:reserveList){
 					//库存大于剩余领用-》直接扣完
 					int usedNum = 0;
@@ -731,8 +703,41 @@
 					//	warehouseReserve.setReserve(0);
 						usedNum =  warehouseReserve.getReserve();
 					}
+
+					//更新流向,加入一条
+					if (usedNum > 0) {
+						for (int i = 0; i < usedNum; i++) {
+							// 试剂使用情况入库insert TODO 流向需要当时的时间和地点
+							OpeUseFlow opeUseFlow = new OpeUseFlow();
+							opeUseFlow.setReagentCode(reagentCodes.get(0));
+							opeUseFlow.setStatus(ArrivalStatus.WAREHOUSE);
+							opeUseFlow.setUserId(warehouseReserve.getUserId());
+							//仓库地点
+							opeUseFlow.setHouseId(warehouseReserve.getWarehouseId());
+							opeUseFlow.setContainerId(warehouseReserve.getContainerId());
+							opeUseFlow.setRemainder(oar.getReagent().getMainMetering()!=null?oar.getReagent().getMainMetering():new BigDecimal(0));
+							//入库时间
+							opeUseFlow.setCreateTime(warehouseReserve.getUpdateTime());
+							opeUseFlow.setStoreType(StoreType.DIRECTSTORE);
+
+							Map<String, String> metaMap = new HashMap<>();
+							metaMap.put("groupId", "operate_status");
+							metaMap.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEIN.getKey()));
+							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);
+
+						}
+
+					}
+
+
 					//更新库存
-					opeWarehouseReserveService.updateBtReserve(warehouseReserve.getId(),usedNum);
+					this.updateBtReserve(warehouseReserve.getId(),usedNum);
 					if (numLeave < 1) {
 						break;
 					}
@@ -819,19 +824,21 @@
 
 
             // 仓库库存update
-            opeWarehouseReserve = this.opeWarehouseReserveService.getOpeWarehouseReserve2(opeApply.getReagent().getId(), opeApply.getArticleNumber(),opeApply.getHouseId());
+            opeWarehouseReserve = this.getOpeWarehouseReserve2(opeApply.getReagent().getId(), opeApply.getArticleNumber(),opeApply.getHouseId());
             if (opeWarehouseReserve == null) {
                 opeWarehouseReserve = new OpeWarehouseReserve();
                 opeWarehouseReserve.setReagentId(opeApply.getReagent().getId());
                 opeWarehouseReserve.setArticleNumber(opeApply.getArticleNumber());
                 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())) {
-                this.opeWarehouseReserveService.insertOpeWarehouseReserve(opeWarehouseReserve);
+                this.insertOpeWarehouseReserve(opeWarehouseReserve);
             } else {
-                this.opeWarehouseReserveService.updateOpeWarehouseReserve(opeWarehouseReserve);
+                this.updateOpeWarehouseReserve(opeWarehouseReserve);
             }
         }
 	}

--
Gitblit v1.9.2