From af607e09de61badbaef57bc0d38002e48a44ac4c Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期五, 12 十一月 2021 12:48:50 +0800
Subject: [PATCH] 订单领取申领人被删除报错

---
 src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java |  287 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 219 insertions(+), 68 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
index 527e594..dfba7bd 100644
--- a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
@@ -173,6 +173,8 @@
 	@Value("${institute.name}")
 	String instituteName;
 
+	private boolean isExpired;
+
 	private Hashtable printTable;
 
 	public Hashtable getPrintTable() {
@@ -218,6 +220,8 @@
 	//private boolean flag = false;
 	//领用单号
 	private String receiptNumber;
+	//备注
+	private String note;
 	// 试剂库
     private LazyDataModel<SysReagent> reagentDataModel;
 	// 直接入库试剂List
@@ -424,7 +428,8 @@
 		System.out.println(getUser().getSeeFlag().getKey());
 		//SysUser u=sysUserService.getSysUser(getUserId());
 		//System.out.println(u);
-		if (getUser().getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()) {
+		if (getUser().getSeeFlag().getKey() != SeeFlag.MANAGE.getKey()
+				&& getUser().getSeeFlag().getKey() != SeeFlag.LEADING.getKey()) {
 			editFlag=0;
 		}else{
 			editFlag=1;
@@ -541,6 +546,12 @@
 	public void  clearInputStorageTmp(){
 		selectedInputStorageTmpOrderList = null;
 	}
+
+	public void hideInputStorageTmp(){
+        selectedInputStorageTmpOrderList = null;
+
+        RequestContext.getCurrentInstance().execute("document.getElementById('putInStorage').style.display='none'");
+    }
 
 	public void cancel(){
 		if (trulySelectedList == null || trulySelectedList.size()<=0){
@@ -662,7 +673,11 @@
 		checkTable = null;
 		//
 		this.userId = selectedTmpOrderList.get(0).getApplyUser();
-
+		SysUser sysUser = sysUserService.getSysUser(this.userId);
+		if (sysUser == null){
+			FacesUtils.info("申领人不存在");
+			return;
+		}
 		this.menuController.goToPage(Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW_PERSON, Constants.PAGE_WAREHOUSE_STOCK_MNG);
 	}
 
@@ -793,7 +808,7 @@
 		//变换条码
 		btCodeChange();
 	}
-	
+
 	/**
 	* 取消一个仓库领取
 	*/
@@ -1068,6 +1083,7 @@
 		this.selectedInputStorageTmpOrderList = null;
 		this.endReagentCodeForPerson = null;
 		this.startReagentCodeForPerson = null;
+		this.laboratoryId = null;
 		this.useNum = null;
 		this.menuController.backToPage();
 	}
@@ -1204,16 +1220,24 @@
 			printTable = new Hashtable();
 			int sum = 0;
 			List<ApplyListDto> applyList = new ArrayList<>();
-			Map applyPersonInfo = sysUserService.getUser(userId);
+			SysUser applyPersonInfo = sysUserService.getUser(userId);
+			if (applyPersonInfo == null) {
+				FacesUtils.warn("申领人不存在或者申领人部门被删除。");
+				return;
+			}
 			printTable.put("head", instituteName);
 			printTable.put("title", "领用单");
-			printTable.put("applyPerson", applyPersonInfo.get("name"));
-			printTable.put("department", applyPersonInfo.get("meta_value"));
+			printTable.put("applyPerson", applyPersonInfo.getName());
+			printTable.put("department", applyPersonInfo.getDepartment());
 			printTable.put("date", Utils.now("yyyy-MM-dd"));
-			printTable.put("phone", applyPersonInfo.get("phone"));
 			String receiptNum = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
 			printTable.put("receiptNumber", receiptNum);
-			printTable.put("project", applyPersonInfo.get("project"));
+			if (StringUtils.isNotBlank(applyPersonInfo.getPhone())){
+				printTable.put("phone", applyPersonInfo.getPhone());
+			}
+			if (StringUtils.isNotBlank(applyPersonInfo.getProject())){
+				printTable.put("project", applyPersonInfo.getProject());
+			}
 			SysLaboratory lab = sysLaboratoryService.getSysLaboratory(laboratoryId);
 			printTable.put("lab", lab.getName());
 			this.receiptNumber = receiptNum;
@@ -1253,7 +1277,7 @@
 	 */
 	public void associatedFlowReceiptNumber() {
 		try {
-			opeUseFlowService.updateReceiptNumberByCode(selectedTmpOrderList, receiptNumber);
+			opeUseFlowService.updateReceiptNumberByCode(selectedTmpOrderList, receiptNumber, note);
 			//弹出打印窗口
 			RequestContext.getCurrentInstance().execute("document.getElementById('indirectPrint').click()");
 		} catch (Exception e) {
@@ -1269,7 +1293,7 @@
 
 	public void associatedFlowReceiptNumber2() {
 		try {
-			opeUseFlowService.updateReceiptNumberByCode2(selectedTmpList, receiptNumber);
+			opeUseFlowService.updateReceiptNumberByCode2(selectedTmpList, receiptNumber,note);
 			//弹出打印窗口
 			RequestContext.getCurrentInstance().execute("document.getElementById('indirectPrint').click()");
 		} catch (Exception e) {
@@ -1281,7 +1305,7 @@
 
 	public void closeDialog() {
 		try {
-			opeUseFlowService.updateReceiptNumberByCode(selectedTmpOrderList, receiptNumber);
+			opeUseFlowService.updateReceiptNumberByCode(selectedTmpOrderList, receiptNumber,note);
 			onCancelBtnClick();
 		} catch (Exception e) {
 			logger.info(e.getMessage());
@@ -1291,7 +1315,7 @@
 
 	public void closeDialog2() {
 		try {
-			opeUseFlowService.updateReceiptNumberByCode2(selectedTmpList, receiptNumber);
+			opeUseFlowService.updateReceiptNumberByCode2(selectedTmpList, receiptNumber,note);
 			onCancelBtnClick();
 		} catch (Exception e) {
 			logger.info(e.getMessage());
@@ -1481,14 +1505,22 @@
 			printTable = null;
 			printTable = new Hashtable();
 			List<ApplyListDto> applyList = new ArrayList<>();
-			Map applyPersonInfo = sysUserService.getUser(userId);
+			SysUser applyPersonInfo = sysUserService.getUser(userId);
+			if (applyPersonInfo == null) {
+				FacesUtils.warn("申领人不存在或者申领人部门被删除。");
+				return;
+			}
 			printTable.put("head", instituteName);
 			printTable.put("title", "领用单");
-			printTable.put("applyPerson", applyPersonInfo.get("name"));
-			printTable.put("department", applyPersonInfo.get("meta_value"));
+			printTable.put("applyPerson", applyPersonInfo.getName());
+			printTable.put("department", applyPersonInfo.getDepartment());
 			printTable.put("date", Utils.now("yyyy-MM-dd"));
-			printTable.put("phone", applyPersonInfo.get("phone"));
-			printTable.put("project", applyPersonInfo.get("project"));
+			if (StringUtils.isNotBlank(applyPersonInfo.getPhone())){
+				printTable.put("phone", applyPersonInfo.getPhone());
+			}
+			if (StringUtils.isNotBlank(applyPersonInfo.getProject())){
+				printTable.put("project", applyPersonInfo.getProject());
+			}
 			SysLaboratory lab = sysLaboratoryService.getSysLaboratory(laboratoryId);
 			String receiptNum = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
 			printTable.put("receiptNumber", receiptNum);
@@ -1503,11 +1535,42 @@
 				if(selectWarehouseReserve.getFlag()==1){
 					list.add(selectWarehouseReserve);
 				}else{
+					if (selectWarehouseReserve.getWarehouseId() == null) {
+						FacesUtils.warn("仓库不存在。");
+						return;
+					}
 					list2.add(selectWarehouseReserve);
 				}
 			}
+
+			//list2为补贴条码,检查条码重复
+			ArrayList<String> checkList = new ArrayList<>();
+			if (list2.size() > 0) {
+				for (OpeWarehouseReserve owr : list2) {
+					checkList.addAll(owr.getReagentCodes());
+				}
+			}
+
+			Set<String> checkTable = new HashSet<>();
+			if (checkList.size() > 0) {
+				for (String reagentCode : checkList) {
+					if (checkTable.contains(reagentCode)) {
+						throw new BusinessException(ExceptionEnumCode.PARAM_EXIST, "当前订单条码重复," + reagentCode);
+					} else {
+						checkTable.add(reagentCode);
+					}
+				}
+			}
+			checkTable = null;
+			checkList = null;
+
+
 			if(list.size()>0&&list!=null){
 				for (OpeWarehouseReserve selectWarehouseReserve : list) {
+					Map reagentDetail = sysReagentService.getReagentDetail(selectWarehouseReserve.getReagentId());
+					if (reagentDetail == null) {
+						throw new Exception("试剂有误,请联系管理员");
+					}
 					List<String> reagentCodes = selectWarehouseReserve.getReagentCodes();
 					if (reagentCodes != null && reagentCodes.size() > 0)
 						for (String opeReagentStatusId : reagentCodes) {
@@ -1534,7 +1597,6 @@
 							//}
 						}
 					ApplyListDto lis = new ApplyListDto();
-					Map reagentDetail = sysReagentService.getReagentDetail(selectWarehouseReserve.getReagentId());
 					lis.setNum(String.valueOf(selectWarehouseReserve.getSelectNum())); //数量
 					lis.setMainMetering(String.format("%s%s", reagentDetail.get("main_metering"), reagentDetail.get("unit")));
 					lis.setControlProducts((String) reagentDetail.get("controlProducts"));
@@ -1552,10 +1614,15 @@
 				//}
 				this.opeWarehouseReserveService.claim(list, userId,projectNum);
 			}
+
 			if(list2.size()>0&&list2!=null){
 				List<OpeApply> opeList=new ArrayList<>();
 				//this.opeApplyService.getOpeApplyList(null,null,null,null,null)
 				for(int i=0;i<list2.size();i++){
+					Map reagentDetail = sysReagentService.getReagentDetail(list2.get(i).getReagentId());
+					if (reagentDetail == null) {
+						throw new Exception("试剂有误,请联系管理员");
+					}
 					OpeApply opeApply=new OpeApply();
 					opeApply.setArticleNumber(list2.get(i).getArticleNumber());
 					opeApply.setHouseId(laboratoryId);
@@ -1575,7 +1642,6 @@
 					this.opeLaboratoryReserveService.insert(lr);
 					//opeList.add(this.opeApplyService.getOpeApply(list2.get(i).getId()));
 					ApplyListDto lis = new ApplyListDto();
-					Map reagentDetail = sysReagentService.getReagentDetail(list2.get(i).getReagentId());
 
 					lis.setNum(String.valueOf(list2.get(i).getSelectNum())); //数量
 					lis.setMainMetering(String.format("%s%s", reagentDetail.get("main_metering"), reagentDetail.get("unit")));
@@ -1588,7 +1654,7 @@
 
 					sum += list2.get(i).getSelectNum();
 				}
-				this.opeWarehouseReserveService.reagentDStore4(opeList,userId);
+				this.opeWarehouseReserveService.reagentDStore4(opeList,userId,receiptNum);
 				for(int i=0;i<list2.size();i++){
 
 					List<String> reagentCodes = opeReagentStatusService
@@ -1637,6 +1703,10 @@
 			FacesUtils.info("申领成功。");
 			RequestContext.getCurrentInstance().execute("PF('printDialog').show()");
 //            this.menuController.goToPage(Constants.PAGE_WAREHOUSE_STOCK_MNG, Constants.PAGE_WAREHOUSE_REAGENT_USE_NEW);
+		} catch (BusinessException e) {
+			logger.error(e.getMessage(), e);
+			FacesUtils.warn(e.getMessage());
+
 		} catch (Exception e) {
 			logger.error(e.getMessage(), e);
 			FacesUtils.warn("操作失败。");
@@ -1647,6 +1717,17 @@
 	*/
 	public void onSaveInputWarehouseClick(){
 		try{
+		    //0.0输入校验
+            for (OpeApplyReserve opeApplyReserve : opeApplyList) {
+                if (StringUtils.isBlank(opeApplyReserve.getArticleNumber())) {
+                    throw new BusinessException(ExceptionEnumCode.PARAM_EXIST, opeApplyReserve.getReagent().getName() + ":批号不能为空");
+                }
+                SysReagent sysReagent = sysReagentService.getSysReagent(opeApplyReserve.getReagent().getId());
+				if (sysReagent == null){
+					throw new BusinessException(ExceptionEnumCode.PARAM_EXIST, opeApplyReserve.getReagent().getName() + ":被删除");
+				}
+            }
+
 			//用来检验提交表单得试剂条码是否重复
 			Map<String,Boolean> checkTable= new HashMap<>();
 			if (opeApplyList != null && opeApplyList.size() > 0) {
@@ -1708,22 +1789,23 @@
 					} catch (Exception e) {
 						logger.error(e);
 					}
+					selectedList = null;
 					return list;
 				}
 
 				@Override
 				public OpeWarehouseReserve getRowData(String rowKey) {
-					Iterator<OpeWarehouseReserve> iterator = this.iterator();
-					if (iterator != null) {
-						OpeWarehouseReserve su = null;
-						while (iterator.hasNext()) {
-							su = iterator.next();
-							if (rowKey.equals(su.getId())) {
-								return su;
-							}
-						}
-					}
-					return null;
+//					Iterator<OpeWarehouseReserve> iterator = this.iterator();
+//					if (iterator != null) {
+//						OpeWarehouseReserve su = null;
+//						while (iterator.hasNext()) {
+//							su = iterator.next();
+//							if (rowKey.equals(su.getId())) {
+//								return su;
+//							}
+//						}
+//					}
+					return opeWarehouseReserveService.getRowData(rowKey);
 				}
 			};
 		}
@@ -1741,7 +1823,7 @@
 					List<OpeApplyReserve> list = null;
 					SysUser loginUser = getUser();
 					String id="";
-					if(loginUser.getSeeFlag()==SeeFlag.MANAGE){
+					if(loginUser.getSeeFlag()==SeeFlag.MANAGE||loginUser.getSeeFlag() ==SeeFlag.LEADING){
 
 					}else {
 						//userName=loginUser.getName();
@@ -1749,31 +1831,32 @@
 					}
 
 					try {
-						int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id, reagentId, userName, productSn, applyCode, status, isAllApply);
+						int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id, reagentId, userName, productSn, applyCode, status, isAllApply,isExpired);
 						this.setRowCount(count);
 						if (count > 0) {
 							list = opeApplyService.getOpeApplyReserveListByNameFor(id, reagentId, userName, first,
-									pageSize, productSn, applyCode, status, isAllApply);
+									pageSize, productSn, applyCode, status, isAllApply,isExpired);
 						}
 					} catch (Exception e) {
 						logger.error(e);
 					}
+					selectedListForPerson = null;
 					return list;
 				}
 
 				@Override
 				public OpeApplyReserve getRowData(String rowKey) {
-					Iterator<OpeApplyReserve> iterator = this.iterator();
-					if (iterator != null) {
-						OpeApplyReserve su = null;
-						while (iterator.hasNext()) {
-							su = iterator.next();
-							if (rowKey.equals(su.getId())) {
-								return su;
-							}
-						}
-					}
-					return null;
+//					Iterator<OpeApplyReserve> iterator = this.iterator();
+//					if (iterator != null) {
+//						OpeApplyReserve su = null;
+//						while (iterator.hasNext()) {
+//							su = iterator.next();
+//							if (rowKey.equals(su.getId())) {
+//								return su;
+//							}
+//						}
+//					}
+					return opeApplyService.getOpeApplyReserveListByNameForRowData(rowKey);
 				}
 			};
 		}
@@ -1848,7 +1931,7 @@
 			//map=null;
 			SysUser loginUser = getUser();
 			String id="";
-			if(loginUser.getSeeFlag()==SeeFlag.MANAGE){
+			if(loginUser.getSeeFlag()==SeeFlag.MANAGE||loginUser.getSeeFlag() == SeeFlag.LEADING){
 
 			}else {
 				//userName=loginUser.getName();
@@ -1858,7 +1941,7 @@
 				realDataList=selectedListForPerson;
 			}else {
 				realDataList = opeApplyService.getOpeApplyReserveListByNameFor(id,reagentId, userName, null,
-						null,productSn,applyCode,status,isAllApply);
+						null,productSn,applyCode,status,isAllApply,isExpired);
 			}
 			List<String> headerList = new ArrayList<>();
 			headerList.add("申购编号");
@@ -2264,6 +2347,7 @@
         this.reagentDStore.setReagent((SysReagent)event.getObject());
 
     	this.reagentDStoreEditFlag = Constants.ACTION_ADD;
+		onWarehouseSelectChange(null);
     	RequestContext.getCurrentInstance().execute("PF('reagentDStoreDialog').show()");
     }
 
@@ -2273,6 +2357,11 @@
         this.changeWarehouseContainerList(warehouseId);
         this.changeWarehouseContainerPlaceList(null);
     }
+
+	public void onWarehouseContainerSelectChange(String warehouseContainerId) {
+		this.warehouseContainerPlaceList = null;
+		this.changeWarehouseContainerPlaceList(warehouseContainerId);
+	}
 
     private void changeWarehouseContainerList(String warehouseId) {
         if (StringUtils.isBlank(warehouseId)) {
@@ -2522,6 +2611,10 @@
 			}
 	}
 
+	public void clearStartAndEndCode(){
+		endReagentCode = "";
+	}
+
 	public void handleEventForPerson(){
 		if(useNum!=null && useNum>0){
 			if(startReagentCodeForPerson!=null && !startReagentCodeForPerson.equals("")){
@@ -2614,17 +2707,17 @@
 
                 @Override
                 public SysReagent getRowData(String rowKey) {
-                    Iterator<SysReagent> iterator = this.iterator();
-                    if (iterator != null) {
-                        SysReagent sr = null;
-                        while (iterator.hasNext()) {
-                            sr = iterator.next();
-                            if (rowKey.equals(sr.getId())) {
-                                return sr;
-                            }
-                        }
-                    }
-                    return null;
+//                    Iterator<SysReagent> iterator = this.iterator();
+//                    if (iterator != null) {
+//                        SysReagent sr = null;
+//                        while (iterator.hasNext()) {
+//                            sr = iterator.next();
+//                            if (rowKey.equals(sr.getId())) {
+//                                return sr;
+//                            }
+//                        }
+//                    }
+                    return sysReagentService.getSysReagentListNewRowData(rowKey);
                 }
             };
         }
@@ -2711,17 +2804,20 @@
 
 	public void resetLaboratory(){
 		laboratory = null;
+		laboratoryId = null;
 		laboratoryContainers = null;
 		//getLaboratory();
 		//getLaboratoryContainers();
 	}
 
+//	public void setContainerId(){
+//	}
 	public void resetLaboratoryContainers() {
 		laboratoryContainers = null;
 		//getLaboratoryContainers();
 	}
 	public List<SysLaboratory> getLaboratory() {
-		if(userId != null && userId.trim().length() > 0)
+ 		if(userId != null && userId.trim().length() > 0)
 		{
 
 			//Todo 修改申领人的实验室显示信息
@@ -2729,15 +2825,15 @@
 			if(this.laboratory != null && this.laboratory.size() > 0)
 			{
 				//flag =true;
-				//if(laboratoryId != null && laboratoryId.trim().length() > 0)
-				//{
-				//	this.oriLaboratoryId = this.laboratoryId;
-				//}else
-				//{
-				//	this.oriLaboratoryId = this.laboratory.get(0).getId();
-				//}
+				if(laboratoryId != null && laboratoryId.trim().length() > 0)
+				{
+					this.oriLaboratoryId = this.laboratoryId;
+				}else
+				{
+					this.laboratoryId = this.laboratory.get(0).getId();
+				}
 
-				this.laboratoryId= laboratoryId==null?this.laboratory.get(0).getId():laboratoryId;
+//				this.laboratoryId = this.laboratory.get(0).getId();
 				this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryId);
 			}else {
 				this.oriLaboratoryId = null;
@@ -2757,7 +2853,7 @@
 	}
 
 	public List<SysLaboratoryContainer> getLaboratoryContainers() {
-		if(laboratoryId != null && laboratoryId.trim().length() > 0)
+ 		if(laboratoryId != null && laboratoryId.trim().length() > 0)
 		{
 			this.laboratoryContainers = this.sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryId);
 		}
@@ -3059,4 +3155,59 @@
 	public void setIsAllApply(Integer isAllApply) {
 		this.isAllApply = isAllApply;
 	}
+
+	public boolean getIsExpired() {
+		return isExpired;
+	}
+
+	public void setIsExpired(boolean isExpired) {
+		this.isExpired = isExpired;
+	}
+
+	//过期处理
+	public void expireOrder() {
+		//1.判断当前订单是否是已入库的状态
+		if (this.selectedListForPerson.size() < 1) {
+			FacesUtils.warn("请选择数据。");
+			return;
+		}
+		ArrayList<String> ids = new ArrayList<>();
+		for (OpeApplyReserve oa : this.selectedListForPerson) {
+			ids.add(oa.getId());
+			if (oa.getStatus() != ApplyStatus.SUPPLIER_CONFIRM) {
+				FacesUtils.warn("只能让已确认状态的单子过期。");
+				return;
+			}
+		}
+
+		opeApplyService.updateOpeApplyStatus(ApplyStatus.EXPIRED, null, ids);
+		FacesUtils.warn("操作成功。");
+
+
+	}
+
+	public void recoverOrder(){
+		if (this.selectedListForPerson.size() < 1) {
+			FacesUtils.warn("请选择数据。");
+			return;
+		}
+		ArrayList<String> ids = new ArrayList<>();
+		for (OpeApplyReserve oa : this.selectedListForPerson) {
+			ids.add(oa.getId());
+			if (oa.getStatus() != ApplyStatus.EXPIRED) {
+				FacesUtils.warn("只能让过期单子恢复确认。");
+				return;
+			}
+		}
+		opeApplyService.updateOpeApplyStatus(ApplyStatus.SUPPLIER_CONFIRM, null, ids);
+		FacesUtils.warn("操作成功。");
+	}
+
+    public String getNote() {
+        return note;
+    }
+
+    public void setNote(String note) {
+        this.note = note;
+    }
 }

--
Gitblit v1.9.2