From df47c9300bfe6c641c88707aa5b54591ab4c004c Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: 星期五, 11 六月 2021 15:18:58 +0800
Subject: [PATCH] 订单领取:过期处理(确认和过期 状态处理),增加状态过期(需要将数据库字段加长) 实验室选中问题 仓库领取的仓库不存在问题

---
 src/main/java/com/nanometer/smartlab/service/OpeApplyService.java                |    4 
 src/main/webapp/warehouse_reagent_use.xhtml                                      |    1 
 src/main/java/com/nanometer/smartlab/entity/enumtype/ApplyStatus.java            |   20 +++++-
 src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml                         |   38 +++++++++++-
 src/main/webapp/warehouse_reagent_use_person.xhtml                               |    1 
 src/main/webapp/warehouse_stock_mng.xhtml                                        |   18 +++++
 src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java            |   16 ++++-
 src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java |   60 +++++++++++++++++++-
 8 files changed, 137 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
index 7cff03d..1440034 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() {
@@ -1518,6 +1520,10 @@
 				if(selectWarehouseReserve.getFlag()==1){
 					list.add(selectWarehouseReserve);
 				}else{
+					if (selectWarehouseReserve.getWarehouseId() == null) {
+						FacesUtils.warn("仓库不存在。");
+						return;
+					}
 					list2.add(selectWarehouseReserve);
 				}
 			}
@@ -1782,11 +1788,11 @@
 					}
 
 					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);
@@ -1891,7 +1897,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("申购编号");
@@ -2744,6 +2750,7 @@
 
 	public void resetLaboratory(){
 		laboratory = null;
+		laboratoryId = null;
 		laboratoryContainers = null;
 		//getLaboratory();
 		//getLaboratoryContainers();
@@ -3094,4 +3101,51 @@
 	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("操作成功。");
+	}
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
index d6b7303..f25e743 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
@@ -232,7 +232,11 @@
   </update>
 
   <update id="updateOpeApplyStatus" parameterType="java.util.Map" >
-    update ope_apply set status=#{status}, memo=#{memo}, update_time=now()
+    update ope_apply set status=#{status},
+     <if test="memo !=null and memo != ''">
+         memo=#{memo},
+     </if>
+      update_time=now()
     where id in
     <foreach collection="applyIds" item="item" index="index" open="(" separator="," close=")">
       #{item}
@@ -360,7 +364,7 @@
         LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
         LEFT JOIN sys_project as project on project.project = su.project
         LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
-        where oa.valid_flag = 1 and (oa.status=4 or oa.status=6)
+        where oa.valid_flag = 1 and (oa.status=4 or oa.status=6 or oa.status = 10)
         <include refid="getOpeApplyReserveList_queryWhereSql" />
         <if test="isAllApply != null">
             <choose>
@@ -426,8 +430,34 @@
         LEFT JOIN base_meta AS bm1 ON sr.product_home = bm1.id
         LEFT JOIN sys_project as project on project.project = su.project
         LEFT JOIN sys_user as su1 on su1.id = project.sys_user_id
-        where oa.valid_flag = 1 and (oa.status=4 or oa.status=6)
-        <include refid="getOpeApplyReserveList_queryWhereSql" />
+        where oa.valid_flag = 1 and (
+        <choose>
+            <when test="status == @com.nanometer.smartlab.entity.enumtype.ApplyStatus@EXPIRED">
+                oa.status = 10
+            </when>
+            <otherwise>
+                oa.status=4 or oa.status=6
+            </otherwise>
+        </choose>
+        )
+        <if test="reagentName != null and reagentName != ''">
+            and sr.name like concat('%',#{reagentName},'%')
+        </if>
+        <if test="personName != null and personName != ''">
+            and su.name like concat('%',#{personName},'%')
+        </if>
+        <if test="userId != null and userId != ''">
+            and oa.apply_user_id =#{userId}
+        </if>
+        <if test="status != null and status != ''">
+            and oa.status =#{status}
+        </if>
+        <if test="productSn != null and productSn != ''">
+            and sr.product_sn like concat('%',#{productSn},'%')
+        </if>
+        <if test="applyCode != null and applyCode != ''">
+            and oa.apply_code = #{applyCode}
+        </if>
         <if test="isAllApply != null">
             <choose>
                 <when test="isAllApply == 1">
diff --git a/src/main/java/com/nanometer/smartlab/entity/enumtype/ApplyStatus.java b/src/main/java/com/nanometer/smartlab/entity/enumtype/ApplyStatus.java
index 2a6d0c5..dcddaa4 100644
--- a/src/main/java/com/nanometer/smartlab/entity/enumtype/ApplyStatus.java
+++ b/src/main/java/com/nanometer/smartlab/entity/enumtype/ApplyStatus.java
@@ -3,7 +3,19 @@
 import java.util.HashMap;
 
 public enum ApplyStatus {
-	REFUSE(0, "拒绝"), PENDING_APPROVAL(1, "待审批"), APPROVED(2, "已审批"), PENDING_PURCHASE(3, "待采购"), STORAGE(4, "已入库"), CANCEL(5, "取消"),SUPPLIER_CONFIRM(6,"已确认"),SUPPLIER_CANCEL(7,"已取消"),FINISHED(8,"已完成"),UNCOMPLETED(9,"未完成");
+	REFUSE(0, "拒绝"),
+	PENDING_APPROVAL(1, "待审批"),
+	APPROVED(2, "已审批"),
+	PENDING_PURCHASE(3, "待采购"),
+	STORAGE(4, "已入库"),
+	CANCEL(5, "取消"),
+	SUPPLIER_CONFIRM(6,"已确认"),
+	SUPPLIER_CANCEL(7,"已取消"),
+	FINISHED(8,"已完成"),
+	UNCOMPLETED(9,"未完成"),
+
+
+	EXPIRED(10,"过期"),;
 	private int key;
 
 	private String text;
@@ -27,13 +39,13 @@
 			map.put(d.key, d);
 		}
 	}
-	
+
 	public static ApplyStatus parse(Integer index) {
 		if(map.containsKey(index)){
 			return map.get(index);
 		}
 		return null;
 	}
-	
-	
+
+
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java b/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java
index 63b4259..c2d18cd 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java
@@ -55,9 +55,9 @@
 	int getOpeApplyReserveTotalCountByName(String id,String reagentName, String personName);
 	List<OpeApplyReserve> getOpeApplyReserveListByName(String id,String reagentName, String personName, Integer first,
 			Integer pageSize);
-    int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status,Integer isAllApply);
+    int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status,Integer isAllApply,boolean isExpired);
     List<OpeApplyReserve> getOpeApplyReserveListByNameFor(String id,String reagentName, String personName, Integer first,
-                                                       Integer pageSize,String productSn,String applyCode,Integer status,Integer isAllApply);
+                                                       Integer pageSize,String productSn,String applyCode,Integer status,Integer isAllApply,boolean isExpired);
 	public boolean updaetOpeApplyPrice(BigDecimal applyPrice,String id);
 	public boolean updaetOpeApplyStockFlag(int stockFlag,String id);
 	public boolean cancelApply(ApplyStatus status,String id);
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java
index e84cdfa..88d24c1 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java
@@ -530,7 +530,7 @@
 	}
 
     @Override
-    public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status,Integer isAllApply) {
+    public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status,Integer isAllApply,boolean isExpired) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("reagentName", reagentName);
@@ -538,7 +538,11 @@
             params.put("userId",id);
             params.put("productSn",productSn);
             params.put("applyCode",applyCode);
-            params.put("status",status);
+            if (isExpired) {
+                params.put("status",ApplyStatus.EXPIRED);
+            }else{
+                params.put("status", status);
+            }
             params.put("isAllApply",isAllApply);
             return this.opeApplyDao.getOpeApplyReserveTotalCountFor(params);
         } catch (DataAccessException e) {
@@ -549,7 +553,7 @@
     }
     @Override
     public List<OpeApplyReserve> getOpeApplyReserveListByNameFor(String id,String reagentName, String personName, Integer first,
-                                                              Integer pageSize,String productSn,String applyCode,Integer status,Integer isAllApply) {
+                                                              Integer pageSize,String productSn,String applyCode,Integer status,Integer isAllApply,boolean isExpired) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("reagentName", reagentName);
@@ -559,7 +563,11 @@
             params.put("pageSize", pageSize);
             params.put("productSn",productSn);
             params.put("applyCode",applyCode);
-            params.put("status",status);
+            if (isExpired) {
+                params.put("status",ApplyStatus.EXPIRED);
+            }else{
+                params.put("status", status);
+            }
             params.put("isAllApply",isAllApply);
             return this.opeApplyDao.getOpeApplyReserveListFor(params);
         } catch (DataAccessException e) {
diff --git a/src/main/webapp/warehouse_reagent_use.xhtml b/src/main/webapp/warehouse_reagent_use.xhtml
index 69d8cb8..790913e 100644
--- a/src/main/webapp/warehouse_reagent_use.xhtml
+++ b/src/main/webapp/warehouse_reagent_use.xhtml
@@ -48,7 +48,6 @@
 					<p:outputLabel value="实验室试剂柜:"></p:outputLabel>
 					<p:selectOneMenu value="#{warehouseStockMngController.laboratoryContainerId}" id="stacks"
 						>
-<!--						<f:ajax listener="#{warehouseStockMngController.setContainerId}"/>-->
 						<f:selectItems value="#{warehouseStockMngController.laboratoryContainers}"
 							var="item" itemLabel="#{item.name}" itemValue="#{item.id}"></f:selectItems>
 					</p:selectOneMenu>
diff --git a/src/main/webapp/warehouse_reagent_use_person.xhtml b/src/main/webapp/warehouse_reagent_use_person.xhtml
index cb9d1d0..e580c46 100644
--- a/src/main/webapp/warehouse_reagent_use_person.xhtml
+++ b/src/main/webapp/warehouse_reagent_use_person.xhtml
@@ -45,7 +45,6 @@
 					<p:outputLabel value="实验室试剂柜:"></p:outputLabel>
 					<p:selectOneMenu value="#{warehouseStockMngController.laboratoryContainerId}" id="stacks"
 						>
-						<f:ajax listener="#{warehouseStockMngController.setContainerId}"/>
 						<f:selectItems value="#{warehouseStockMngController.laboratoryContainers}"
 							var="item" itemLabel="#{item.name}" itemValue="#{item.id}"></f:selectItems>
 					</p:selectOneMenu>
diff --git a/src/main/webapp/warehouse_stock_mng.xhtml b/src/main/webapp/warehouse_stock_mng.xhtml
index de017d9..9978d02 100644
--- a/src/main/webapp/warehouse_stock_mng.xhtml
+++ b/src/main/webapp/warehouse_stock_mng.xhtml
@@ -360,7 +360,7 @@
 			<br/>
 			<h:form id="warehouseStockMngFormForPerson">
 				<p:panel styleClass="center-header" style="border-bottom:none;">
-					<p:panelGrid styleClass="filter" columns="14">
+					<p:panelGrid styleClass="filter" columns="16">
 						<style type="text/css">
 							.ui-selectonemenu.ui-widget.ui-state-default.ui-corner-all{
 								min-width: 60px !important;
@@ -384,6 +384,9 @@
 							<f:selectItems value="#{warehouseStockMngController.statusSelectList}" var="item"
 										   itemLabel="#{item.text}" itemValue="#{item.key}"></f:selectItems>
 						</p:selectOneMenu>
+						<p:outputLabel value="过期:"></p:outputLabel>
+						<p:selectBooleanCheckbox value="#{warehouseStockMngController.isExpired}"
+												 itemLabel=""/>
 
 						<p:outputLabel value="已领用:"></p:outputLabel>
 						<p:selectOneMenu value="#{warehouseStockMngController.isAllApply}" style="width: 60px;">
@@ -398,7 +401,7 @@
 
 				<p:panel styleClass="center-body">
 
-					<p:panelGrid columns="3" styleClass="btn" rendered="#{warehouseStockMngController.editFlag==1}">
+					<p:panelGrid columns="7" styleClass="btn" rendered="#{warehouseStockMngController.editFlag==1}">
 						<p:commandButton value="入库" styleClass="edit-btn" process="@form"
 										 actionListener="#{warehouseStockMngController.addInputStorageOrder}"
 										 disabled="#{warehouseStockMngController.editFlag==0}"
@@ -411,6 +414,17 @@
 										 oncomplete="$('#showTabOrder').css('display','block');$('#putInStorage').css('display','none');"
 										 update="@(.tmpOrder)"
 						></p:commandButton>
+
+						<p:commandButton value="过期处理" styleClass="edit-btn" process="@form"
+										 actionListener="#{warehouseStockMngController.expireOrder}"
+										 disabled="#{warehouseStockMngController.editFlag==0}"
+										 update=":centerRootPanel"
+						></p:commandButton>
+						<p:commandButton value="恢复处理" styleClass="edit-btn" process="@form"
+										 actionListener="#{warehouseStockMngController.recoverOrder}"
+										 disabled="#{warehouseStockMngController.editFlag==0}"
+										 update=":centerRootPanel"
+						></p:commandButton>
 						<p:commandButton update=":centerRootPanel" actionListener="#{warehouseStockMngController.onExportFileBtnClickOrder}"
 										 ajax="false" value="导出" styleClass="new-btn" />
 					</p:panelGrid>

--
Gitblit v1.9.2