From e3f9c9350c14707277b4fbf03a4d78c75ec04174 Mon Sep 17 00:00:00 2001
From: gdg <764716047@qq.com>
Date: 星期一, 01 二月 2021 10:16:04 +0800
Subject: [PATCH] 增加搜索

---
 src/main/java/com/nanometer/smartlab/service/OpeApplyService.java                |    4 
 src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml                       |   27 +++++++++
 src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml                         |   20 ++++++
 src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java   |   13 +++
 src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java              |    6 +
 src/main/webapp/personal_use_info.xhtml                                          |   13 +++-
 src/main/webapp/warehouse_stock_mng.xhtml                                        |   19 +++++
 src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java            |    6 +
 src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java                      |    2 
 src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java          |   28 ++++++++
 src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java |   17 ++++-
 11 files changed, 136 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java b/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
index bd1da35..72494d8 100644
--- a/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
@@ -54,6 +54,7 @@
 	 */
 	private LazyDataModel<OpeReagentStatus> dataModel;
 	private String reagentId;
+    private String reagentName;
 	private String reagentCode;
 	private String applyPerson;
 	private Date startTime;
@@ -244,11 +245,11 @@
 												   Map<String, Object> filters) {
 					List<OpeUseFlow> list = null;
 					try {
-						int count = opeUseFlowService.getPersonalUseInfoCount(reagentCode, getUserId(),startTime,endTime,receiptNumber,department,project);
+						int count = opeUseFlowService.getPersonalUseInfoCount(reagentCode, getUserId(),startTime,endTime,receiptNumber,department,project,applyPerson,reagentName);
 						this.setRowCount(count);
 						if (count > 0) {
 							list = opeUseFlowService.getPersonalUseInfoList
-									(reagentCode,  getUserId(),startTime,endTime ,receiptNumber,department,project,first,pageSize);
+									(reagentCode,  getUserId(),startTime,endTime ,receiptNumber,department,project,applyPerson,reagentName,first,pageSize);
 						}
 					} catch (Exception e) {
 						logger.error(e);
@@ -365,4 +366,12 @@
 	public void setPrintTable(Hashtable printTable) {
 		this.printTable = printTable;
 	}
+
+    public String getReagentName() {
+        return reagentName;
+    }
+
+    public void setReagentName(String reagentName) {
+        this.reagentName = reagentName;
+    }
 }
diff --git a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
index ecde8c7..008d127 100644
--- a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
@@ -166,6 +166,7 @@
 	private String warehouseName;
 
 	private Integer editFlag;
+	private Integer isAllApply = 0;
 	private StreamedContent file;
 	@Value("${pdf.export.file.path}")
 	private String pdfExportFilePath;
@@ -1735,11 +1736,11 @@
 					}
 
 					try {
-						int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id,reagentId, userName,productSn,applyCode,status);
+						int count = opeApplyService.getOpeApplyReserveTotalCountByNameFor(id, reagentId, userName, productSn, applyCode, status, isAllApply);
 						this.setRowCount(count);
 						if (count > 0) {
-							list = opeApplyService.getOpeApplyReserveListByNameFor(id,reagentId, userName, first,
-									pageSize,productSn,applyCode,status);
+							list = opeApplyService.getOpeApplyReserveListByNameFor(id, reagentId, userName, first,
+									pageSize, productSn, applyCode, status, isAllApply);
 						}
 					} catch (Exception e) {
 						logger.error(e);
@@ -1844,7 +1845,7 @@
 				realDataList=selectedListForPerson;
 			}else {
 				realDataList = opeApplyService.getOpeApplyReserveListByNameFor(id,reagentId, userName, null,
-						null,productSn,applyCode,status);
+						null,productSn,applyCode,status,isAllApply);
 			}
 			List<String> headerList = new ArrayList<>();
 			headerList.add("申购编号");
@@ -3037,4 +3038,12 @@
 	public void setWarehouseName(String warehouseName) {
 		this.warehouseName = warehouseName;
 	}
+
+	public Integer getIsAllApply() {
+		return isAllApply;
+	}
+
+	public void setIsAllApply(Integer isAllApply) {
+		this.isAllApply = isAllApply;
+	}
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
index b55d128..cda1831 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeApplyDao.xml
@@ -360,6 +360,16 @@
         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" />
+        <if test="isAllApply != null">
+            <choose>
+                <when test="isAllApply == 1">
+                    and oa.used = oa.num
+                </when>
+                <otherwise>
+                    and oa.used != oa.num
+                </otherwise>
+            </choose>
+        </if>
         GROUP BY oa.id
         )as oaa
     </select>
@@ -415,6 +425,16 @@
         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" />
+        <if test="isAllApply != null">
+            <choose>
+                <when test="isAllApply == 1">
+                    and oa.used = oa.num
+                </when>
+                <otherwise>
+                    and oa.used != oa.num
+                </otherwise>
+            </choose>
+        </if>
         GROUP BY oa.id
         order by oa.update_time desc
         <if test="first != null and pageSize != null">
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
index 352e62f..629acdf 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
@@ -42,4 +42,6 @@
     List<OpeUseFlow> selectPersonalUseInfo(Map params);
 
     List<PersonUseDetail> getApplyInfo(Map params);
+
+    int getApplyInfoSize(Map params);
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
index 89ad484..6e1b950 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
@@ -216,6 +216,12 @@
         <if test="receiptNumber !=null and receiptNumber != ''">
             and ouf.receipt_number like concat("%",#{receiptNumber},"%")
         </if>
+        <if test="reagentName !=null and reagentName != ''">
+            and sr.name like concat("%",#{reagentName},"%")
+        </if>
+        <if test="applyPerson !=null and applyPerson != ''">
+            and su.name like concat("%",#{applyPerson},"%")
+        </if>
         group by ouf.receipt_number) a
 
 
@@ -262,6 +268,12 @@
         <if test="receiptNumber !=null and receiptNumber != ''">
             and ouf.receipt_number like concat("%",#{receiptNumber},"%")
         </if>
+        <if test="reagentName !=null and reagentName != ''">
+            and sr.name like concat("%",#{reagentName},"%")
+        </if>
+        <if test="applyPerson !=null and applyPerson != ''">
+            and su.name like concat("%",#{applyPerson},"%")
+        </if>
         group by ouf.receipt_number
         ORDER BY ouf.create_time desc
         <if test="first != null and pageSize != null">
@@ -290,6 +302,21 @@
         and ouf.receipt_number = #{receiptNumber}
     </select>
 
+
+    <select id="getApplyInfoSize" resultType="java.lang.Integer">
+        SELECT
+        count(0)
+        from `ope_use_flow` ouf
+        LEFT JOIN ope_reagent_status ors ON ors.reagent_code = ouf.reagent_code
+        LEFT join sys_reagent sr ON ors.reagent_id = sr.id
+        LEFT JOIN base_meta bm ON bm.id = sr.reagent_format
+        LEFT JOIN base_meta bm1 on bm1.id = sr.reagent_unit
+        LEFT JOIN base_meta bm2 on bm2.id = sr.product_home
+        LEFT JOIN base_meta bm3 on bm3.id = sr.control_products
+        WHERE ouf.operatestate = #{operatestate}
+        and ouf.receipt_number = #{receiptNumber}
+    </select>
+
     <insert id="insertOpeUseFlow" parameterType="com.nanometer.smartlab.entity.OpeUseFlow">
     insert into ope_use_flow(id, reagent_code, status, house_id, container_id, user_id, remainder, place, store_type, valid_flag, create_time, realstatus, operatestate)
     values (#{id}, #{reagentCode}, #{status}, #{houseId}, #{containerId}, #{userId}, #{remainder}, #{place}, #{storeType}, 1, #{createTime}, #{realstatus},#{operateState})
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java b/src/main/java/com/nanometer/smartlab/service/OpeApplyService.java
index 7369cb2..63b4259 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);
+    int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status,Integer isAllApply);
     List<OpeApplyReserve> getOpeApplyReserveListByNameFor(String id,String reagentName, String personName, Integer first,
-                                                       Integer pageSize,String productSn,String applyCode,Integer status);
+                                                       Integer pageSize,String productSn,String applyCode,Integer status,Integer isAllApply);
 	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 2100151..e21f8ba 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeApplyServiceImpl.java
@@ -526,7 +526,7 @@
 	}
 
     @Override
-    public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status) {
+    public int getOpeApplyReserveTotalCountByNameFor(String id,String reagentName, String personName,String productSn,String applyCode,Integer status,Integer isAllApply) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("reagentName", reagentName);
@@ -535,6 +535,7 @@
             params.put("productSn",productSn);
             params.put("applyCode",applyCode);
             params.put("status",status);
+            params.put("isAllApply",isAllApply);
             return this.opeApplyDao.getOpeApplyReserveTotalCountFor(params);
         } catch (DataAccessException e) {
             logger.error(e.getMessage(), e);
@@ -544,7 +545,7 @@
     }
     @Override
     public List<OpeApplyReserve> getOpeApplyReserveListByNameFor(String id,String reagentName, String personName, Integer first,
-                                                              Integer pageSize,String productSn,String applyCode,Integer status) {
+                                                              Integer pageSize,String productSn,String applyCode,Integer status,Integer isAllApply) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("reagentName", reagentName);
@@ -555,6 +556,7 @@
             params.put("productSn",productSn);
             params.put("applyCode",applyCode);
             params.put("status",status);
+            params.put("isAllApply",isAllApply);
             return this.opeApplyDao.getOpeApplyReserveListFor(params);
         } catch (DataAccessException e) {
             logger.error(e.getMessage(), e);
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
index 042e7d1..952b16d 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
@@ -48,10 +48,12 @@
 
     void updateReceiptNumberByCode2(List<OpeWarehouseReserve> codeTmp, String receiptNumber);
 
-	int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project);
+	int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project,String applyPerson,String reagentName);
 
-	List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project, int first, int pageSize);
+	List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project,String applyPerson,String reagentName, int first, int pageSize);
 
     List<PersonUseDetail> getApplyInfo(String receiptNumber);
 
+	int getApplyInfoSize(String receiptNumber);
+
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
index 96f81ab..d14da94 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
@@ -459,7 +459,8 @@
     }
 
     @Override
-    public int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project) {
+    public int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber,
+                                       String department, String project,String applyPerson,String reagentName) {
         Map<String,Object> params = new HashMap<>();
         params.put("userId", userId);
         params.put("startTime", startTime);
@@ -468,6 +469,12 @@
         params.put("department", department);
         params.put("project", project);
         params.put("reagentCode", reagentCode);
+        params.put("applyPerson", applyPerson);
+        if (StringUtils.isNotBlank(reagentName)) {
+            //根据试剂名获取单号
+
+        }
+        params.put("reagentName", reagentName);
         //操作状态位仓库领取
         Map<String, String> metaMap2 = new HashMap<>();
         metaMap2.put("groupId", "operate_status");
@@ -480,7 +487,8 @@
     }
 
     @Override
-    public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project, int first, int pageSize) {
+    public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber,
+                                                   String department, String project,String applyPerson,String reagentName, int first, int pageSize) {
         Map<String, Object> params = new HashMap<>();
         params.put("userId", userId);
         params.put("startTime", startTime);
@@ -489,6 +497,8 @@
         params.put("department", department);
         params.put("project", project);
         params.put("reagentCode", reagentCode);
+        params.put("applyPerson", applyPerson);
+        params.put("reagentName", reagentName);
         //操作状态位仓库领取
         Map<String, String> metaMap2 = new HashMap<>();
         metaMap2.put("groupId", "operate_status");
@@ -517,4 +527,18 @@
     }
 
 
+    @Override
+    public int getApplyInfoSize(String receiptNumber) {
+        Map<String,Object> params = new HashMap<>();
+        Map<String, String> metaMap2 = new HashMap<>();
+        metaMap2.put("groupId", "operate_status");
+        metaMap2.put("metaKey", String.valueOf(OperateStatus.WAREHOUSEOUT.getKey()));
+        List<BaseMeta> baseMetas = baseMetaDao.getBaseMetaList(metaMap2);
+        params.put("operatestate", baseMetas.get(0).getId());
+        params.put("receiptNumber", receiptNumber);
+
+        return  opeUseFlowDao.getApplyInfoSize(params);
+
+    }
+
 }
diff --git a/src/main/webapp/personal_use_info.xhtml b/src/main/webapp/personal_use_info.xhtml
index ff71fb3..5b4174d 100644
--- a/src/main/webapp/personal_use_info.xhtml
+++ b/src/main/webapp/personal_use_info.xhtml
@@ -48,10 +48,16 @@
 				}
 			</style>
 			<p:panel styleClass="center-header">
-				<p:panelGrid styleClass="filter" columns="13">
+				<p:panelGrid styleClass="filter" columns="10">
 
 					<p:outputLabel value="单据编号:"/>
 					<p:inputText value="#{personalUseInfoController.receiptNumber}"/>
+
+					<p:outputLabel value="试剂名称:"/>
+					<p:inputText value="#{personalUseInfoController.reagentName}"/>
+
+					<p:outputLabel value="申领人:"/>
+					<p:inputText value="#{personalUseInfoController.applyPerson}"/>
 
 					<p:outputLabel value="课题组:"/>
 					<p:inputText value="#{personalUseInfoController.project}"/>
@@ -103,7 +109,7 @@
 						 selectionMode="single"
 						 emptyMessage="无数据"
 						 selection="#{personalUseInfoController.selectOne}"
-						 rows="20" pageLinks="5">
+						 rows="10" pageLinks="5">
 
 <!--				<p:column selectionMode="multiple" style="width: 30px;text-align: center;"/>-->
 				<p:column headerText="单据编号">
@@ -115,7 +121,8 @@
 				</p:column>
 
 				<p:column headerText="领用数量" width="50">
-					<h:outputText value="#{row.applyNum}"/>
+					<h:outputText value="#{personalUseInfoController.reagentName eq null
+					or personalUseInfoController.reagentName eq ''?row.applyNum:OpeUseFlowService.getApplyInfoSize(row.getReceiptNumber())}"/>
 				</p:column>
 
 				<p:column headerText="课题组">
diff --git a/src/main/webapp/warehouse_stock_mng.xhtml b/src/main/webapp/warehouse_stock_mng.xhtml
index e475480..c5d2f4d 100644
--- a/src/main/webapp/warehouse_stock_mng.xhtml
+++ b/src/main/webapp/warehouse_stock_mng.xhtml
@@ -348,7 +348,15 @@
 			</div>
 			<h:form id="warehouseStockMngFormForPerson">
 				<p:panel styleClass="center-header" style="border-bottom:none;">
-					<p:panelGrid styleClass="filter" columns="12">
+					<p:panelGrid styleClass="filter" columns="14">
+						<style type="text/css">
+							.ui-selectonemenu.ui-widget.ui-state-default.ui-corner-all{
+								min-width: 60px !important;
+							}
+							.ui-selectonemenu-items.ui-selectonemenu-list.ui-widget-content.ui-widget.ui-corner-all.ui-helper-reset{
+								width: 77px !important;
+							}
+						</style>
 
 						<p:outputLabel value="试剂名称:"></p:outputLabel>
 						<p:inputText value="#{warehouseStockMngController.reagentId}"></p:inputText>
@@ -359,12 +367,19 @@
 						<p:outputLabel value="产品编号:"></p:outputLabel>
 						<p:inputText value="#{warehouseStockMngController.productSn}"></p:inputText>
 						<p:outputLabel value="状态:"></p:outputLabel>
-						<p:selectOneMenu value="#{warehouseStockMngController.status}">
+						<p:selectOneMenu value="#{warehouseStockMngController.status}" style="width: 60px;">
 							<f:selectItem itemLabel="全部" noSelectionOption="true"></f:selectItem>
 							<f:selectItems value="#{warehouseStockMngController.statusSelectList}" var="item"
 										   itemLabel="#{item.text}" itemValue="#{item.key}"></f:selectItems>
 						</p:selectOneMenu>
 
+						<p:outputLabel value="已领用:"></p:outputLabel>
+						<p:selectOneMenu value="#{warehouseStockMngController.isAllApply}" style="width: 60px;">
+							<f:selectItem itemLabel="否" itemValue="0"/>
+							<f:selectItem itemLabel="是"  itemValue="1"/>
+							<f:selectItem itemLabel="全部" noSelectionOption="true"/>
+						</p:selectOneMenu>
+
 						<p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
 					</p:panelGrid>
 				</p:panel>

--
Gitblit v1.9.2