From 31ffbaf322685984516cfb284fa58741debf4e96 Mon Sep 17 00:00:00 2001
From: gdg <764716047@qq.com>
Date: 星期五, 29 一月 2021 09:12:29 +0800
Subject: [PATCH] Merge remote-tracking branch 'remotes/origin/yufei' into master

---
 src/main/java/com/nanometer/smartlab/controller/OrderMngController.java               |    2 
 src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml                   |    4 
 src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml                            |  111 ++++++
 src/main/java/com/nanometer/smartlab/controller/LaboratoryContainerMngController.java |   21 +
 src/main/java/com/nanometer/smartlab/service/SysUserService.java                      |    4 
 src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java         |   14 
 src/main/webapp/warehouse_stock_mng.xhtml                                             |    5 
 src/main/java/com/nanometer/smartlab/service/SysLaboratoryService.java                |    8 
 src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerServiceImpl.java   |   10 
 src/main/java/com/nanometer/smartlab/controller/ProjectMngController.java             |    2 
 src/main/webapp/user_mng.xhtml                                                        |    8 
 src/main/java/com/nanometer/smartlab/controller/LaboratoryMngController.java          |   13 
 src/main/webapp/WEB-INF/config-mybatis.xml                                            |    2 
 src/main/java/com/nanometer/smartlab/dao/SysLaboratoryDao.xml                         |    3 
 src/main/webapp/personal_use_info.xhtml                                               |  278 ++++++++++++--
 src/main/java/com/nanometer/smartlab/api/ApiAction.java                               |    2 
 src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java                           |   48 ++
 src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java      |   25 +
 src/main/webapp/laboratory_mng.xhtml                                                  |    5 
 src/main/java/com/nanometer/smartlab/entity/dto/PersonUseDetail.java                  |   98 +++++
 src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java        |  182 +++++++++
 src/main/webapp/reagent_user_flow_info.xhtml                                          |    5 
 src/main/java/com/nanometer/smartlab/controller/UserMngController.java                |   22 +
 src/main/java/com/nanometer/smartlab/service/SysLaboratoryServiceImpl.java            |   27 +
 src/main/java/com/nanometer/smartlab/service/SysProjectServiceImpl.java               |    2 
 src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerService.java       |    5 
 src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java                  |    8 
 src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java                   |   13 
 src/main/webapp/laboratory_container_mng.xhtml                                        |    8 
 src/main/java/com/nanometer/smartlab/dao/SysLaboratoryContainerDao.xml                |   12 
 src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml                               |   11 
 src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java          |    4 
 src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java                           |    7 
 src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java               |   67 +++
 src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java      |    6 
 35 files changed, 939 insertions(+), 103 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/api/ApiAction.java b/src/main/java/com/nanometer/smartlab/api/ApiAction.java
index 4ce057e..fd70871 100644
--- a/src/main/java/com/nanometer/smartlab/api/ApiAction.java
+++ b/src/main/java/com/nanometer/smartlab/api/ApiAction.java
@@ -567,7 +567,7 @@
         logger.info("getUserInfo start...");
 
         List<SysUser> userList = sysUserService.getSysUserInfoList(startTime, endTime);
-        List<SysLaboratoryContainer> allLaboratoryContainerList = sysLaboratoryContainerService.getSysLaboratoryContainerList(null,null,null,null,null);
+        List<SysLaboratoryContainer> allLaboratoryContainerList = sysLaboratoryContainerService.getSysLaboratoryContainerList(null,null,null,null,null,null,null);
         List<SysWarehouseContainer> allWarehouseContainerList = sysWarehouseContainerService.getSysWarehouseContainerList(null,null,null,null,null);
 
         List<String> containerCodeList = new ArrayList<String>();
diff --git a/src/main/java/com/nanometer/smartlab/controller/LaboratoryContainerMngController.java b/src/main/java/com/nanometer/smartlab/controller/LaboratoryContainerMngController.java
index 977f2bc..95e1f42 100644
--- a/src/main/java/com/nanometer/smartlab/controller/LaboratoryContainerMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/LaboratoryContainerMngController.java
@@ -72,6 +72,8 @@
 
 	private String laboratoryType;
 	private String laboratoryName;
+	private String project;
+	private String controllerName;
 
 	private int action;
 
@@ -384,11 +386,11 @@
 					List<SysLaboratoryContainer> list = null;
 					try {
 						int count = sysLaboratoryContainerService.getSysLaboratoryContainerTotalCount(laboratoryType,
-								laboratoryName,null);
+								laboratoryName,null,project,controllerName);
 						this.setRowCount(count);
 						if (count > 0) {
 							list = sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryType,
-									laboratoryName,null, first, pageSize);
+									laboratoryName,null,project,controllerName, first, pageSize);
 						}
 					} catch (Exception e) {
 						logger.error(e);
@@ -471,4 +473,19 @@
 		this.controllers = controllers;
 	}
 
+	public String getProject() {
+		return project;
+	}
+
+	public void setProject(String project) {
+		this.project = project;
+	}
+
+	public String getControllerName() {
+		return controllerName;
+	}
+
+	public void setControllerName(String controllerName) {
+		this.controllerName = controllerName;
+	}
 }
diff --git a/src/main/java/com/nanometer/smartlab/controller/LaboratoryMngController.java b/src/main/java/com/nanometer/smartlab/controller/LaboratoryMngController.java
index 86ff06f..ca378ad 100644
--- a/src/main/java/com/nanometer/smartlab/controller/LaboratoryMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/LaboratoryMngController.java
@@ -60,6 +60,7 @@
 	private List<SysLaboratory> selectedList;
 	private String type;
 	private String name;
+	private String project;
 
 	private int action;
 
@@ -279,10 +280,10 @@
 						Map<String, Object> filters) {
 					List<SysLaboratory> list = null;
 					try {
-						int count = sysLaboratoryService.getSysLaboratoryTotalCount(type, name);
+						int count = sysLaboratoryService.getSysLaboratoryTotalCount(type, name,project);
 						this.setRowCount(count);
 						if (count > 0) {
-							list = sysLaboratoryService.getSysLaboratoryList(type, name, first, pageSize);
+							list = sysLaboratoryService.getSysLaboratoryList(type, name,project, first, pageSize);
 						}
 					} catch (Exception e) {
 						logger.error(e);
@@ -344,4 +345,12 @@
 	public void setType(String type) {
 		this.type = type;
 	}
+
+	public String getProject() {
+		return project;
+	}
+
+	public void setProject(String project) {
+		this.project = project;
+	}
 }
diff --git a/src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java b/src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java
index 989d1a1..1df0b3a 100644
--- a/src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/OpeUseFlowInfoController.java
@@ -47,6 +47,8 @@
 
 	private Hashtable printTable;
 
+	private String containerCode;
+
 	public String getHouseName() {
 		return houseName;
 	}
@@ -98,10 +100,10 @@
 						Map<String, Object> filters) {
 					List<OpeUseFlow> list = null;
 					try {
-						int count = opeUseFlowService.getOpeUseFlowTotalCountByName(houseName,reagentId, reagentCode, null, getUserId(),startDate,endDate);
+						int count = opeUseFlowService.getOpeUseFlowTotalCountByName(houseName,reagentId, reagentCode, containerCode,null, getUserId(),startDate,endDate);
 						this.setRowCount(count);
 						if (count > 0) {
-							list = opeUseFlowService.getOpeUseFlowListByName(houseName,reagentId, reagentCode, null, getUserId(),startDate,endDate, first, pageSize);
+							list = opeUseFlowService.getOpeUseFlowListByName(houseName,reagentId, reagentCode, containerCode,null, getUserId(),startDate,endDate, first, pageSize);
 						}
 					} catch (Exception e) {
 						logger.error(e);
@@ -227,4 +229,12 @@
 	public void setPrintTable(Hashtable printTable) {
 		this.printTable = printTable;
 	}
+
+	public String getContainerCode() {
+		return containerCode;
+	}
+
+	public void setContainerCode(String containerCode) {
+		this.containerCode = containerCode;
+	}
 }
diff --git a/src/main/java/com/nanometer/smartlab/controller/OrderMngController.java b/src/main/java/com/nanometer/smartlab/controller/OrderMngController.java
index 730bec7..c1f72a4 100644
--- a/src/main/java/com/nanometer/smartlab/controller/OrderMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/OrderMngController.java
@@ -63,7 +63,7 @@
     private Map<String, List<SysWarehouseContainer>> warehouseIdContainerMap;
 
     public void initRukuPage() {
-        this.userSelectList = this.sysUserService.getSysUserList(null, null, null, null, null);
+        this.userSelectList = this.sysUserService.getSysUserList(null, null, null, null, null,null,null);
         //将admin置于首位
         for (int i = 0; i < userSelectList.size(); i++) {
             if ("admin".equals(userSelectList.get(i).getAccount())){
diff --git a/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java b/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
index 0b1b469..bd1da35 100644
--- a/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java
@@ -1,16 +1,22 @@
 package com.nanometer.smartlab.controller;
 
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 import javax.annotation.Resource;
 
+import com.nanometer.smartlab.entity.OpeUseFlow;
+import com.nanometer.smartlab.entity.SysLaboratory;
+import com.nanometer.smartlab.entity.dto.ApplyListDto;
+import com.nanometer.smartlab.entity.dto.PersonUseDetail;
+import com.nanometer.smartlab.service.SysLaboratoryService;
 import com.nanometer.smartlab.util.FacesUtils;
+import com.nanometer.smartlab.util.Utils;
 import org.apache.log4j.Logger;
+import org.primefaces.context.RequestContext;
 import org.primefaces.model.LazyDataModel;
 import org.primefaces.model.SortOrder;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Controller;
 
@@ -38,6 +44,10 @@
 
 	@Resource
 	private SysReagentService sysReagentService;
+	@Resource
+	private SysLaboratoryService sysLaboratoryService;
+	@Value("${institute.name}")
+	String instituteName;
 
 	/**
 	 * 数据源
@@ -48,6 +58,13 @@
 	private String applyPerson;
 	private Date startTime;
 	private Date endTime;
+	private String project;
+	private String department;
+	private String receiptNumber;
+	private LazyDataModel<OpeUseFlow> dataModel2;
+	private OpeUseFlow selectOne;
+	private List<PersonUseDetail> personUseDetail;
+	private Hashtable<String,Object> printTable;
 
 	private List<OpeReagentStatus> selectedList;
 	private List<SysReagent> reagentSelectList;
@@ -109,7 +126,75 @@
 
 
 	}
+	/**
+	* 生成领用单
+	*/
 
+	public void generateReceipt() {
+		if (this.selectOne == null) {
+			FacesUtils.warn("请选择数据");
+			return;
+		}
+
+		printTable = new Hashtable<>();
+		printTable.put("head", instituteName);
+		printTable.put("title", "领用单");
+		printTable.put("applyPerson", selectOne.getUserName());
+		printTable.put("department", selectOne.getDepartment());
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+		printTable.put("date", dateFormat.format(selectOne.getCreateTime()));
+		printTable.put("phone", selectOne.getPhone());
+		printTable.put("receiptNumber", selectOne.getReceiptNumber());
+		printTable.put("project", selectOne.getProject());
+		SysLaboratory sysLaboratory = sysLaboratoryService.getSysLaboratory(selectOne.getHouseId());
+		printTable.put("lab", sysLaboratory.getName());
+		//整理数据
+		List<PersonUseDetail> applyInfo = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
+		assert applyInfo.size() > 0;
+		List<ApplyListDto> applyList = new ArrayList<>();
+		Map<String, Integer> map = new HashMap<>();
+		for (PersonUseDetail pud : applyInfo) {
+			if (map.containsKey(pud.getReagentId())) {
+				map.put(pud.getReagentId(), map.get(pud.getReagentId()) + 1);
+			}else{
+				map.put(pud.getReagentId(), 1);
+			}
+		}
+		int sum = 0;
+		for (Map.Entry<String,Integer> entry : map.entrySet()) {
+			ApplyListDto apply = new ApplyListDto();
+			for (PersonUseDetail pud : applyInfo) {
+				if (entry.getKey().equals(pud.getReagentId())) {
+					apply.setControlProducts(pud.getControlProducts());
+					apply.setMainMetering(pud.getPerInfo());
+					apply.setNum(entry.getValue().toString());
+					apply.setProductCode(pud.getProductSn());
+					apply.setProductName(pud.getReagentName());
+					apply.setReagentFormat(pud.getReagentFormat());
+					applyList.add(apply);
+					sum += entry.getValue();
+					break;
+				}
+			}
+		}
+
+		applyList.add(new ApplyListDto("合计", "", "", "", "", String.valueOf(sum), ""));
+		printTable.put("applyList", applyList);
+		RequestContext.getCurrentInstance().execute("PF('printDialog').show()");
+	}
+
+	/**
+	* 查看详情
+	*/
+
+	public void detailInfo() {
+		if (this.selectOne == null) {
+			FacesUtils.warn("请选择数据");
+		}
+
+		personUseDetail = opeUseFlowService.getApplyInfo(selectOne.getReceiptNumber());
+
+	}
 
 	@SuppressWarnings("serial")
 	public LazyDataModel<OpeReagentStatus> getDataModel() {
@@ -151,6 +236,45 @@
 		return dataModel;
 	}
 
+	public LazyDataModel<OpeUseFlow> getDataModel2() {
+		if (this.dataModel2 == null) {
+			this.dataModel2 = new LazyDataModel<OpeUseFlow>() {
+				@Override
+				public List<OpeUseFlow> load(int first, int pageSize, String sortField, SortOrder sortOrder,
+												   Map<String, Object> filters) {
+					List<OpeUseFlow> list = null;
+					try {
+						int count = opeUseFlowService.getPersonalUseInfoCount(reagentCode, getUserId(),startTime,endTime,receiptNumber,department,project);
+						this.setRowCount(count);
+						if (count > 0) {
+							list = opeUseFlowService.getPersonalUseInfoList
+									(reagentCode,  getUserId(),startTime,endTime ,receiptNumber,department,project,first,pageSize);
+						}
+					} catch (Exception e) {
+						logger.error(e);
+					}
+					return list;
+				}
+
+				@Override
+				public OpeUseFlow getRowData(String rowKey) {
+					Iterator<OpeUseFlow> iterator = this.iterator();
+					if (iterator != null) {
+						OpeUseFlow su = null;
+						while (iterator.hasNext()) {
+							su = iterator.next();
+							if (rowKey.equals(su.getReceiptNumber())) {
+								return su;
+							}
+						}
+					}
+					return null;
+				}
+			};
+		}
+		return dataModel2;
+	}
+
 	public String getReagentId() {
 		return reagentId;
 	}
@@ -191,4 +315,54 @@
 	public void setEndTime(Date endTime) {
 		this.endTime = endTime;
 	}
+
+	public String getProject() {
+		return project;
+	}
+
+	public void setProject(String project) {
+		this.project = project;
+	}
+
+	public String getDepartment() {
+		return department;
+	}
+
+	public void setDepartment(String department) {
+		this.department = department;
+	}
+
+	public String getReceiptNumber() {
+		return receiptNumber;
+	}
+
+	public void setReceiptNumber(String receiptNumber) {
+		this.receiptNumber = receiptNumber;
+	}
+
+
+	public OpeUseFlow getSelectOne() {
+		return selectOne;
+	}
+
+	public void setSelectOne(OpeUseFlow selectOne) {
+		this.selectOne = selectOne;
+	}
+
+
+	public List<PersonUseDetail> getPersonUseDetail() {
+		return personUseDetail;
+	}
+
+	public void setPersonUseDetail(List<PersonUseDetail> personUseDetail) {
+		this.personUseDetail = personUseDetail;
+	}
+
+	public Hashtable getPrintTable() {
+		return printTable;
+	}
+
+	public void setPrintTable(Hashtable printTable) {
+		this.printTable = printTable;
+	}
 }
diff --git a/src/main/java/com/nanometer/smartlab/controller/ProjectMngController.java b/src/main/java/com/nanometer/smartlab/controller/ProjectMngController.java
index 6f1f31e..66cd58b 100644
--- a/src/main/java/com/nanometer/smartlab/controller/ProjectMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/ProjectMngController.java
@@ -73,7 +73,7 @@
 
     private void initUserSelectList() {
         logger.info("WarehouseStockMngController initUserSelectList start");
-        this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null));
+        this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null,null,null));
     }
     public void setUserSelectList(List<SysUser> userSelectList) {
         this.userSelectList = userSelectList;
diff --git a/src/main/java/com/nanometer/smartlab/controller/UserMngController.java b/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
index fe55ece..9656bc2 100644
--- a/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
@@ -71,6 +71,8 @@
     private List<BaseMeta> codeList;
     private List<BaseRole> roleList;
     private List<Waster> wasterSelectList;
+    private String project;
+    private String company;
 
     public List<BaseRole> getRoleList() {
         return roleList;
@@ -493,10 +495,10 @@
                 public List<SysUser> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                     List<SysUser> list = null;
                     try {
-                        int count = sysUserService.getSysUserTotalCount(arp, name,departmentName);
+                        int count = sysUserService.getSysUserTotalCount(arp, name,departmentName,project,company);
                         this.setRowCount(count);
                         if (count > 0) {
-                            list = sysUserService.getSysUserList(arp, name,departmentName, first, pageSize);
+                            list = sysUserService.getSysUserList(arp, name,departmentName,project,company, first, pageSize);
                         }
                     } catch (Exception e) {
                         logger.error(e);
@@ -622,4 +624,20 @@
     public void setDepartmentName(String departmentName) {
         this.departmentName = departmentName;
     }
+
+    public String getProject() {
+        return project;
+    }
+
+    public void setProject(String project) {
+        this.project = project;
+    }
+
+    public String getCompany() {
+        return company;
+    }
+
+    public void setCompany(String company) {
+        this.company = company;
+    }
 }
diff --git a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
index c7697d0..beca0e3 100644
--- a/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/WarehouseStockMngController.java
@@ -163,6 +163,7 @@
 	private String endReagentCode;
 	private String startReagentCodeForPerson;
 	private String endReagentCodeForPerson;
+	private String warehouseName;
 
 	private Integer editFlag;
 	private StreamedContent file;
@@ -373,7 +374,7 @@
 
 	private void initUserSelectList() {
 		logger.info("WarehouseStockMngController initUserSelectList start");
-		this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null));
+		this.setUserSelectList(this.sysUserService.getSysUserList(null, null, null, null, null,null,null));
 		/**if(sysUserService.getSysUser(userId) == null)
 		{
 			this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByDep(this.getUserDepartment());
@@ -1658,11 +1659,11 @@
 						Map<String, Object> filters) {
 					List<OpeWarehouseReserve> list = null;
 					try {
-						int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId,productSn);
+						int count = opeWarehouseReserveService.getOpeWarehouseReserveTotalCountByName(reagentId, supplierId,productSn,warehouseName);
 						this.setRowCount(count);
 						if (count > 0) {
 							list = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, first,
-									pageSize,productSn);
+									pageSize,productSn,warehouseName);
 						}
 					} catch (Exception e) {
 						logger.error(e);
@@ -1934,7 +1935,7 @@
 				realDataList=selectedList;
 			}else {
 				realDataList = opeWarehouseReserveService.getOpeWarehouseReserveListByName(reagentId, supplierId, null,
-						null,productSn);
+						null,productSn,warehouseName);
 			}
 				List<String> headerList = new ArrayList<>();
 				headerList.add("试剂名称");
@@ -2535,7 +2536,7 @@
 				list.add(sysUser);
 				applyUserSelectList = list;
 			} else {
-				applyUserSelectList = this.sysUserService.getSysUserList(null, null, null, null, null);
+				applyUserSelectList = this.sysUserService.getSysUserList(null, null, null, null, null,null,null);
 			}
 		}
 		return applyUserSelectList;
@@ -2682,7 +2683,9 @@
 	public List<SysLaboratory> getLaboratory() {
 		if(userId != null && userId.trim().length() > 0)
 		{
-			this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByDep(sysUserService.getSysUser(userId).getDepartment());
+
+			//Todo 修改申领人的实验室显示信息
+			this.laboratory = this.sysLaboratoryService.getSysLaboratoryListByUserId(userId);
 			if(this.laboratory != null && this.laboratory.size() > 0)
 			{
 				//flag =true;
@@ -2862,7 +2865,7 @@
 	}
 
 	public List getConsignee() {
-		List<SysUser> dataList = this.sysUserService.getSysUserList(null, null, null, null, null);
+		List<SysUser> dataList = this.sysUserService.getSysUserList(null, null, null, null, null,null,null);
 		//将admin置于首位
 		for (int i = 0; i < dataList.size(); i++) {
 			if ("admin".equals(dataList.get(i).getAccount())){
@@ -3000,4 +3003,12 @@
 	public void setReceiptNumber(String receiptNumber) {
 		this.receiptNumber = receiptNumber;
 	}
+
+	public String getWarehouseName() {
+		return warehouseName;
+	}
+
+	public void setWarehouseName(String warehouseName) {
+		this.warehouseName = warehouseName;
+	}
 }
diff --git a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
index 3b913f9..352e62f 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java
@@ -1,6 +1,7 @@
 package com.nanometer.smartlab.dao;
 
 import com.nanometer.smartlab.entity.OpeUseFlow;
+import com.nanometer.smartlab.entity.dto.PersonUseDetail;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.dao.DataAccessException;
 
@@ -35,4 +36,10 @@
     List<Map> getRegentInfoFromReceiptNumber(String receiptNumber);
 
     Map getUserIdByReagentCode(String reagentCode, String id);
+
+    int countPersonalUseInfo(Map params);
+
+    List<OpeUseFlow> selectPersonalUseInfo(Map params);
+
+    List<PersonUseDetail> getApplyInfo(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 d0b9b40..89ad484 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
@@ -85,6 +85,10 @@
     <if test="endDate != null and endDate !=''">
         and oa.create_time &lt;= #{endDate}
     </if>
+    <if test="containerCode != null and containerCode !=''">
+        and wc.container_code = #{containerCode}
+        or lc.container_code =#{containerCode}
+    </if>
   </sql>
 
     <sql id="queryColumns">
@@ -179,6 +183,113 @@
         and valid_flag = 1
         limit 1
     </select>
+    <select id="countPersonalUseInfo" resultType="java.lang.Integer">
+      select count(0) from (
+      SELECT count(0)
+        FROM
+        ope_use_flow  ouf
+        LEFT JOIN sys_user su on su.id = ouf.user_id
+        LEFT JOIN base_meta bm on bm.id = ouf.operatestate
+        LEFT JOIN ope_reagent_status ors on ors.reagent_code = ouf.reagent_code
+        LEFT JOIN sys_reagent sr on sr.id = ors.reagent_id
+        left join base_meta bm1 on bm1.id = su.department
+        <if test="userId !=null and userId != ''">
+            LEFT JOIN sys_reagent sr2 on sr2.id = ouf.user_id
+        </if>
+        WHERE ouf.operatestate = #{operatestate}
+        and   LENGTH(trim(ouf.receipt_number))>0
+        <if test="reagentCode !=null and reagentCode != ''">
+            and ouf.reagent_code like concat("%",#{reagentCode},"%")
+        </if>
+        <if test="startTime !=null and startTime != ''">
+            and ouf.create_time &gt;#{startTime}
+        </if>
+        <if test="endTime !=null and endTime != ''">
+            and ouf.create_time &lt;#{endTime}
+        </if>
+        <if test="project !=null and project != ''">
+            and su.project like concat("%",#{project},"%")
+        </if>
+        <if test="department !=null and department != ''">
+            and su.bm1.meta_value like concat("%",#{department},"%")
+        </if>
+        <if test="receiptNumber !=null and receiptNumber != ''">
+            and ouf.receipt_number like concat("%",#{receiptNumber},"%")
+        </if>
+        group by ouf.receipt_number) a
+
+
+
+    </select>
+    <select id="selectPersonalUseInfo" resultType="com.nanometer.smartlab.entity.OpeUseFlow">
+        SELECT ouf.receipt_number receiptNumber,
+        count(ouf.reagent_code) applyNum,
+        su.name username,
+        su.project ,
+        su.phone,
+        bm1.meta_value department,
+        sl.name laboratoryName,
+        ouf.create_time createTime,
+        ouf.house_id houseId
+        FROM
+        ope_use_flow  ouf
+        LEFT JOIN sys_user su on su.id = ouf.user_id
+        LEFT JOIN base_meta bm on bm.id = ouf.operatestate
+        LEFT JOIN ope_reagent_status ors on ors.reagent_code = ouf.reagent_code
+        LEFT JOIN sys_reagent sr on sr.id = ors.reagent_id
+        left join base_meta bm1 on bm1.id = su.department
+        left join sys_laboratory sl on sl.id = ouf.house_id
+        <if test="userId !=null and userId != ''">
+            LEFT JOIN sys_reagent sr2 on sr2.id = ouf.user_id
+        </if>
+        WHERE ouf.operatestate = #{operatestate}
+        and   LENGTH(trim(ouf.receipt_number))>0
+        <if test="reagentCode !=null and reagentCode != ''">
+            and ouf.reagent_code like concat("%",#{reagentCode},"%")
+        </if>
+        <if test="startTime !=null and startTime != ''">
+            and ouf.create_time &gt;#{startTime}
+        </if>
+        <if test="endTime !=null and endTime != ''">
+            and ouf.create_time &lt;#{endTime}
+        </if>
+        <if test="project !=null and project != ''">
+            and su.project like concat("%",#{project},"%")
+        </if>
+        <if test="department !=null and department != ''">
+            and su.bm1.meta_value like concat("%",#{department},"%")
+        </if>
+        <if test="receiptNumber !=null and receiptNumber != ''">
+            and ouf.receipt_number like concat("%",#{receiptNumber},"%")
+        </if>
+        group by ouf.receipt_number
+        ORDER BY ouf.create_time desc
+        <if test="first != null and pageSize != null">
+            limit #{first}, #{pageSize}
+        </if>
+    </select>
+    <select id="getApplyInfo" resultType="com.nanometer.smartlab.entity.dto.PersonUseDetail">
+        SELECT
+        ors.reagent_id reagentId,
+        ors.article_number articleNumber,
+        ouf.reagent_code reagentCode,
+        sr.product_sn productSn,
+        sr.NAME reagentName,
+        bm1.meta_value  reagentFormat,
+        CONCAT(sr.per_box,bm1.meta_value) perInfo,
+        bm2.meta_value productHome,
+        bm3.meta_value controlProducts
+        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/dao/OpeWarehouseReserveDao.xml b/src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml
index e1377d9..060936f 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeWarehouseReserveDao.xml
@@ -57,6 +57,9 @@
     <if test="productSn != null and productSn != ''">
         and sr.product_sn like concat('%',#{productSn},'%')
     </if>
+      <if test="warehouseName != null and warehouseName != ''">
+          and sw.name like concat('%',#{warehouseName},'%')
+      </if>
   </sql>
 
   <sql id="queryColumns">
@@ -135,7 +138,6 @@
          set reserve=#{reserve}
         where id=#{id}
     </update>
-
 
     <select id="selectByReId" resultMap="OpeWarehouseReserve">
         select * from ope_warehouse_reserve where reagent_id=#{id}
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysLaboratoryContainerDao.xml b/src/main/java/com/nanometer/smartlab/dao/SysLaboratoryContainerDao.xml
index d96843d..36d76e3 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysLaboratoryContainerDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/SysLaboratoryContainerDao.xml
@@ -77,6 +77,12 @@
     <if test="laboratoryName != null and laboratoryName != ''">
       and ss.name like #{laboratoryName}
     </if>
+    <if test="project != null and project != ''">
+      and su.project like concat("%",#{project},"%")
+    </if>
+    <if test="controllerName != null and controllerName != ''">
+      and sc.controller_name like concat("%",#{controllerName},"%")
+    </if>
     order by ss.name ASC,sc.controller_name,su.container_code,su.name
     <if test="first != null and pageSize != null">
       limit #{first}, #{pageSize}
@@ -137,6 +143,12 @@
     <if test="editId != null and editId != ''">
       and su.id != #{editId}
     </if>
+    <if test="project != null and project != ''">
+      and su.project like concat("%",#{project},"%")
+    </if>
+    <if test="controllerName != null and controllerName != ''">
+      and sc.controller_name like concat("%",#{controllerName},"%")
+    </if>
   </select>
 
   <insert id="insertSysLaboratoryContainer" parameterType="com.nanometer.smartlab.entity.SysLaboratoryContainer">
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysLaboratoryDao.xml b/src/main/java/com/nanometer/smartlab/dao/SysLaboratoryDao.xml
index 0a59ab5..a557fe8 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysLaboratoryDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/SysLaboratoryDao.xml
@@ -31,6 +31,9 @@
     <if test="department != null and department != ''">
       and su.department = #{department}
     </if>
+    <if test="project != null and project != ''">
+      and su.project like concat("%",#{project},"%")
+    </if>
   </sql>
 
   <select id="getSysLaboratory" parameterType="java.lang.String"  resultMap="SysLaboratory" >
diff --git a/src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml b/src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
index 8bb1b6b..e171985 100644
--- a/src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
@@ -74,6 +74,12 @@
     <if test="waster != null">
         and su.waster = #{waster}
     </if>
+    <if test="project != null and project != ''">
+        and su.project like concat("%",#{project},"%")
+    </if>
+    <if test="company != null and company != ''">
+         and bm1.meta_value like concat("%",#{company},"%")
+    </if>
   </sql>
 
   <select id="getSysUser" parameterType="java.lang.String"  resultMap="SysUser" >
@@ -117,6 +123,7 @@
     select su.*, br.name as roleName from sys_user as su
     left join base_role as br on su.role_id = br.id
       left join base_meta bm on su.department = bm.id
+      left join base_meta bm1 on bm1.id = su.company
     where su.valid_flag = 1
       <if test="departmentNameLike != null and departmentNameLike != ''">
           and bm.meta_value  like #{departmentNameLike}
@@ -150,7 +157,9 @@
   </select>
 
   <select id="getSysUserTotalCount" parameterType="java.util.Map" resultType="int">
-    select count(1) from sys_user as su left join base_meta bm on su.department = bm.id
+    select count(1) from sys_user as su
+    left join base_meta bm on su.department = bm.id
+    left join base_meta bm1 on bm1.id = su.company
     where su.valid_flag = 1
       <if test="departmentNameLike != null and departmentNameLike != ''">
           and bm.meta_value  like #{departmentNameLike}
diff --git a/src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java b/src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java
index f6dd09a..1baf23c 100644
--- a/src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java
+++ b/src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java
@@ -30,19 +30,25 @@
     private SysReagent reagent;
     private String userName;
     private String articleNumber;
-    
+
     private String laboratoryName;
     private String warehouseName;
-    
+
     private String warehouseContainerName;
     private String laboratoryContainerName;
     private String warehouseContainerCode;
     private String laboratoryContainerCode;
-    
+
     private String operatestateName;
     private String operateState;
     private String receiptNumber;
-    
+    //人员信息
+    private String project;
+    private String phone;
+    private String department;
+    private Integer applyNum;
+
+
 
 
 	public String getWarehouseContainerCode() {
@@ -238,4 +244,38 @@
     public void setReceiptNumber(String receiptNumber) {
         this.receiptNumber = receiptNumber;
     }
+
+
+
+    public Integer getApplyNum() {
+        return applyNum;
+    }
+
+    public void setApplyNum(Integer applyNum) {
+        this.applyNum = applyNum;
+    }
+
+    public String getProject() {
+        return project;
+    }
+
+    public void setProject(String project) {
+        this.project = project;
+    }
+
+    public String getDepartment() {
+        return department;
+    }
+
+    public void setDepartment(String department) {
+        this.department = department;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
 }
diff --git a/src/main/java/com/nanometer/smartlab/entity/dto/PersonUseDetail.java b/src/main/java/com/nanometer/smartlab/entity/dto/PersonUseDetail.java
new file mode 100644
index 0000000..5b8478d
--- /dev/null
+++ b/src/main/java/com/nanometer/smartlab/entity/dto/PersonUseDetail.java
@@ -0,0 +1,98 @@
+package com.nanometer.smartlab.entity.dto;
+
+import java.io.Serializable;
+
+public class PersonUseDetail implements Serializable {
+
+    private String reagentId;
+
+    private String articleNumber;
+
+    private String productSn;
+
+    private String reagentName;
+
+    private String reagentFormat;
+
+    private String perInfo;
+
+    private String productHome;
+
+    private String controlProducts;
+
+    private String reagentCode;
+
+
+    public String getReagentId() {
+        return reagentId;
+    }
+
+    public void setReagentId(String reagentId) {
+        this.reagentId = reagentId;
+    }
+
+    public String getArticleNumber() {
+        return articleNumber;
+    }
+
+    public void setArticleNumber(String articleNumber) {
+        this.articleNumber = articleNumber;
+    }
+
+
+    public String getProductSn() {
+        return productSn;
+    }
+
+    public void setProductSn(String productSn) {
+        this.productSn = productSn;
+    }
+
+    public String getReagentName() {
+        return reagentName;
+    }
+
+    public void setReagentName(String reagentName) {
+        this.reagentName = reagentName;
+    }
+
+    public String getReagentFormat() {
+        return reagentFormat;
+    }
+
+    public void setReagentFormat(String reagentFormat) {
+        this.reagentFormat = reagentFormat;
+    }
+
+    public String getPerInfo() {
+        return perInfo;
+    }
+
+    public void setPerInfo(String perInfo) {
+        this.perInfo = perInfo;
+    }
+
+    public String getProductHome() {
+        return productHome;
+    }
+
+    public void setProductHome(String productHome) {
+        this.productHome = productHome;
+    }
+
+    public String getControlProducts() {
+        return controlProducts;
+    }
+
+    public void setControlProducts(String controlProducts) {
+        this.controlProducts = controlProducts;
+    }
+
+    public String getReagentCode() {
+        return reagentCode;
+    }
+
+    public void setReagentCode(String reagentCode) {
+        this.reagentCode = reagentCode;
+    }
+}
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
index 8c8242d..042e7d1 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java
@@ -3,7 +3,7 @@
 import com.nanometer.smartlab.entity.OpeApplyReserve;
 import com.nanometer.smartlab.entity.OpeUseFlow;
 import com.nanometer.smartlab.entity.OpeWarehouseReserve;
-import com.nanometer.smartlab.entity.SysReagent;
+import com.nanometer.smartlab.entity.dto.PersonUseDetail;
 
 import java.text.ParseException;
 import java.util.Date;
@@ -23,10 +23,10 @@
 
 	int getOpeUseFlowTotalCount(String reagentId, String reagentCode, Integer status, String userId);
 
-	List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode, Integer status, String userId, Date startDate,Date endDate,
+	List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId, Date startDate,Date endDate,
 			Integer first, Integer pageSize);
 
-	int getOpeUseFlowTotalCountByName(String houseName, String reagentId, String reagentCode, Integer status, String userId, Date startDate,Date endDate);
+	int getOpeUseFlowTotalCountByName(String houseName, String reagentId, String reagentCode,String containerCode, Integer status, String userId, Date startDate,Date endDate);
 
 	boolean update(OpeUseFlow opeUseFlow);
 
@@ -47,4 +47,11 @@
 	Map<String,String>  getApplyUserByReagentCode(String reagentCode);
 
     void updateReceiptNumberByCode2(List<OpeWarehouseReserve> codeTmp, String receiptNumber);
+
+	int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project);
+
+	List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project, int first, int pageSize);
+
+    List<PersonUseDetail> getApplyInfo(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 2d7ab3e..96f81ab 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java
@@ -12,6 +12,7 @@
 import com.nanometer.smartlab.dao.SysLaboratoryContainerDao;
 import com.nanometer.smartlab.dao.SysWarehouseContainerDao;
 import com.nanometer.smartlab.entity.*;
+import com.nanometer.smartlab.entity.dto.PersonUseDetail;
 import com.nanometer.smartlab.entity.enumtype.OperateStatus;
 import com.nanometer.smartlab.util.Constants;
 import org.apache.commons.lang.StringUtils;
@@ -135,7 +136,7 @@
     }
 
     @Transactional(propagation = Propagation.REQUIRED)
-    public List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode, Integer status, String userId,
+    public List<OpeUseFlow> getOpeUseFlowListByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,
                                                     Date startDate,Date endDate,Integer first, Integer pageSize) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
@@ -175,6 +176,7 @@
 
             params.put("status", status);
             params.put("houseName", houseName);
+            params.put("containerCode", containerCode);
             addParamByUserId(userId, params);
 
             params.put("first", first);
@@ -188,7 +190,7 @@
     }
 
     @Transactional(propagation = Propagation.REQUIRED)
-    public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode, Integer status, String userId,Date startDate,Date endDate) {
+    public int getOpeUseFlowTotalCountByName(String houseName,String reagentId, String reagentCode,String containerCode, Integer status, String userId,Date startDate,Date endDate) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             params.put("reagentName", reagentId);
@@ -226,6 +228,7 @@
             }
 
             params.put("houseName", houseName);
+            params.put("containerCode", containerCode);
             addParamByUserId(userId, params);
 
             params.put("status", status);
@@ -454,4 +457,64 @@
         }
 
     }
+
+    @Override
+    public int getPersonalUseInfoCount(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project) {
+        Map<String,Object> params = new HashMap<>();
+        params.put("userId", userId);
+        params.put("startTime", startTime);
+        params.put("endTime", endTime);
+        params.put("receiptNumber", receiptNumber);
+        params.put("department", department);
+        params.put("project", project);
+        params.put("reagentCode", reagentCode);
+        //操作状态位仓库领取
+        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());
+
+        addParamByUserId(userId, params);
+        return opeUseFlowDao.countPersonalUseInfo(params);
+    }
+
+    @Override
+    public List<OpeUseFlow> getPersonalUseInfoList(String reagentCode,String userId, Date startTime, Date endTime, String receiptNumber, String department, String project, int first, int pageSize) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("userId", userId);
+        params.put("startTime", startTime);
+        params.put("endTime", endTime);
+        params.put("receiptNumber", receiptNumber);
+        params.put("department", department);
+        params.put("project", project);
+        params.put("reagentCode", reagentCode);
+        //操作状态位仓库领取
+        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("first", first);
+        params.put("pageSize", pageSize);
+
+        addParamByUserId(userId, params);
+        return opeUseFlowDao.selectPersonalUseInfo(params);
+    }
+
+    @Override
+    public List<PersonUseDetail> getApplyInfo(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.getApplyInfo(params);
+
+    }
+
+
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java
index 07a1fdd..e1dcab6 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveService.java
@@ -16,8 +16,8 @@
                                                          Integer pageSize);
 	int getOpeWarehouseReserveTotalCount(String reagentId, String supplierId);
 	List<OpeWarehouseReserve> getOpeWarehouseReserveListByName(String reagentId, String supplierId, Integer first,
-			Integer pageSize,String productSn);
-	int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn);
+			Integer pageSize,String productSn,String warehouseName);
+	int getOpeWarehouseReserveTotalCountByName(String reagentId, String supplierId,String productSn,String warehouseName);
 	OpeWarehouseReserve getOpeWarehouseReserve(String reagentId, String articleNumber);
 	OpeWarehouseReserve getOpeWarehouseReserve2(String reagentId, String articleNumber,String warehouseId);
 
diff --git a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
index c26f32f..8f5995c 100644
--- a/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/OpeWarehouseReserveServiceImpl.java
@@ -94,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);
@@ -102,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);
@@ -111,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);
diff --git a/src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerService.java b/src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerService.java
index f70dfed..df8cdec 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerService.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerService.java
@@ -11,9 +11,10 @@
  */
 public interface SysLaboratoryContainerService {
 
-    List<SysLaboratoryContainer> getSysLaboratoryContainerList(String laboratoryType, String laboratoryName, String laboratoryId, Integer first, Integer pageSize);
+    List<SysLaboratoryContainer> getSysLaboratoryContainerList(String laboratoryType, String laboratoryName, String laboratoryId
+            ,String project,String controllerName, Integer first, Integer pageSize);
     List<SysLaboratoryContainer> getSysLaboratoryContainerList(String laboratoryId);
-    int getSysLaboratoryContainerTotalCount(String laboratoryType, String laboratoryName,String laboratoryId);
+    int getSysLaboratoryContainerTotalCount(String laboratoryType, String laboratoryName,String laboratoryId,String project,String controllerName);
     SysLaboratoryContainer getSysLaboratoryContainer(String id);
     SysLaboratoryContainer getSysLaboratoryContainerByContainerCode(String containerCode);
     SysLaboratoryContainer insertSysLaboratoryContainer(SysLaboratoryContainer sysLaboratory);
diff --git a/src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerServiceImpl.java
index 486ea69..07ada63 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysLaboratoryContainerServiceImpl.java
@@ -38,7 +38,7 @@
 
 	@Transactional(propagation = Propagation.REQUIRED)
 	public List<SysLaboratoryContainer> getSysLaboratoryContainerList(String laboratoryType, String laboratoryName,
-			String laboratoryId, Integer first, Integer pageSize) {
+			String laboratoryId,String project,String controllerName, Integer first, Integer pageSize) {
 		try {
 			Map<String, Object> params = new HashMap<String, Object>();
 			if (StringUtils.isNotBlank(laboratoryType)) {
@@ -50,6 +50,8 @@
 			if (StringUtils.isNotBlank(laboratoryId)) {
 				params.put("laboratoryId", laboratoryId);
 			}
+			params.put("project", project);
+			params.put("controllerName", controllerName);
 			params.put("first", first);
 			params.put("pageSize", pageSize);
 			return this.sysLaboratoryContainerDao.getSysLaboratoryContainerList(params);
@@ -63,11 +65,11 @@
 	@Transactional(propagation = Propagation.REQUIRED)
 	public List<SysLaboratoryContainer> getSysLaboratoryContainerList(
 			String laboratoryId) {
-		 return getSysLaboratoryContainerList(null,null,laboratoryId,null,null);
+		 return getSysLaboratoryContainerList(null,null,laboratoryId,null,null,null,null);
 	}
 
 	@Transactional(propagation = Propagation.REQUIRED)
-	public int getSysLaboratoryContainerTotalCount(String laboratoryType, String laboratoryName, String laboratoryId) {
+	public int getSysLaboratoryContainerTotalCount(String laboratoryType, String laboratoryName, String laboratoryId,String project,String controllerName) {
 		try {
 			Map<String, Object> params = new HashMap<String, Object>();
 			if (StringUtils.isNotBlank(laboratoryType)) {
@@ -79,6 +81,8 @@
 			if (StringUtils.isNotBlank(laboratoryId)) {
 				params.put("laboratoryId", laboratoryId);
 			}
+			params.put("project", project);
+			params.put("controllerName", controllerName);
 			return this.sysLaboratoryContainerDao.getSysLaboratoryContainerTotalCount(params);
 		} catch (DataAccessException e) {
 			logger.error(e.getMessage(), e);
diff --git a/src/main/java/com/nanometer/smartlab/service/SysLaboratoryService.java b/src/main/java/com/nanometer/smartlab/service/SysLaboratoryService.java
index b7733c8..e07e4cd 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysLaboratoryService.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysLaboratoryService.java
@@ -11,13 +11,13 @@
  */
 public interface SysLaboratoryService {
 
-	List<SysLaboratory> getSysLaboratoryList(String type, String name, Integer first, Integer pageSize);
+	List<SysLaboratory> getSysLaboratoryList(String type, String name, String project, Integer first, Integer pageSize);
 
 	List<SysLaboratory> getAllSysLaboratoryList();
 
 	List<SysLaboratory> getSysLaboratoryListByDep(String depId);
 
-	int getSysLaboratoryTotalCount(String type, String name);
+	int getSysLaboratoryTotalCount(String type, String name,String project);
 
 	boolean isSysLaboratoryExist(String barCode, String editId);
 
@@ -38,4 +38,8 @@
 	List<Map> exportLabList(String type, String name);
 
 	List<LaboratoryVo.Laboratory> getLaboratoryByProject(String project);
+
+	List<SysLaboratory> getSysLaboratoryListByUserId(String userId);
+
+
 }
diff --git a/src/main/java/com/nanometer/smartlab/service/SysLaboratoryServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysLaboratoryServiceImpl.java
index b169e9f..70a1d09 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysLaboratoryServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysLaboratoryServiceImpl.java
@@ -1,7 +1,9 @@
 package com.nanometer.smartlab.service;
 
 import com.nanometer.smartlab.dao.SysLaboratoryDao;
+import com.nanometer.smartlab.dao.SysUserDao;
 import com.nanometer.smartlab.entity.SysLaboratory;
+import com.nanometer.smartlab.entity.SysUser;
 import com.nanometer.smartlab.entity.dto.LaboratoryVo;
 import com.nanometer.smartlab.exception.AlarmCode;
 import com.nanometer.smartlab.exception.AlarmException;
@@ -38,9 +40,11 @@
 
 	@Resource(name = "sysLaboratoryDao")
 	SysLaboratoryDao sysLaboratoryDao;
+	@Resource
+	SysUserDao sysUserDao;
 
 	@Transactional(propagation = Propagation.REQUIRED)
-	public List<SysLaboratory> getSysLaboratoryList(String type, String name, Integer first, Integer pageSize) {
+	public List<SysLaboratory> getSysLaboratoryList(String type, String name,String project,Integer first, Integer pageSize) {
 		try {
 			Map<String, Object> params = new HashMap<String, Object>();
 			if (StringUtils.isNotBlank(type)) {
@@ -49,6 +53,7 @@
 			if (StringUtils.isNotBlank(name)) {
 				params.put("name", "%" + name + "%");
 			}
+			params.put("project", project);
 			params.put("first", first);
 			params.put("pageSize", pageSize);
 			return this.sysLaboratoryDao.getSysLaboratoryList(params);
@@ -60,7 +65,7 @@
 	}
 
 	@Transactional(propagation = Propagation.REQUIRED)
-	public int getSysLaboratoryTotalCount(String type, String name) {
+	public int getSysLaboratoryTotalCount(String type, String name,String project) {
 		try {
 			Map<String, Object> params = new HashMap<String, Object>();
 			if (StringUtils.isNotBlank(type)) {
@@ -69,6 +74,7 @@
 			if (StringUtils.isNotBlank(name)) {
 				params.put("name", "%" + name + "%");
 			}
+			params.put("project", project);
 			return this.sysLaboratoryDao.getSysLaboratoryTotalCount(params);
 		} catch (DataAccessException e) {
 			logger.error(e.getMessage(), e);
@@ -257,7 +263,22 @@
 		return sysLaboratoryDao.getLaboratoryByProject(project);
     }
 
-    @Override
+	@Override
+	public List<SysLaboratory> getSysLaboratoryListByUserId(String userId) {
+
+		//1.根据用户的课题组获取实验室,没有就按照部门
+		SysUser user = sysUserDao.getSysUser(userId);
+		Map<String,Object> params = new HashMap<>();
+		params.put("project", user.getProject());
+		List<SysLaboratory> list = sysLaboratoryDao.getSysLaboratoryList(params);
+		if (list.size() < 1) {
+			return this.getSysLaboratoryListByDep(user.getDepartment());
+		}else{
+			return list;
+		}
+	}
+
+	@Override
 	@Transactional(propagation = Propagation.REQUIRED)
 	public List<SysLaboratory> getSysLaboratoryListByDep(String depId) {
 		try {
diff --git a/src/main/java/com/nanometer/smartlab/service/SysProjectServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysProjectServiceImpl.java
index 0133124..dd9d421 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysProjectServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysProjectServiceImpl.java
@@ -163,7 +163,7 @@
     @Transactional
     public void importProject(FileUploadEvent event,SysUser currentUser) throws Exception {
 
-        List<SysUser> userList = sysUserService.getSysUserList(null, null, null, null, null);
+        List<SysUser> userList = sysUserService.getSysUserList(null, null, null, null, null,null,null);
         List<SysProject> sysProjectList = sysProjectDao.getSysProjectList(new HashMap());
         Map<String,String> userMap = new HashMap();
         Map<String,String> projectMap = new HashMap();
diff --git a/src/main/java/com/nanometer/smartlab/service/SysUserService.java b/src/main/java/com/nanometer/smartlab/service/SysUserService.java
index a613193..5fd2f5b 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysUserService.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysUserService.java
@@ -14,8 +14,8 @@
  */
 public interface SysUserService {
 
-    List<SysUser> getSysUserList(String arp, String name,String departmentName, Integer first, Integer pageSize);
-    int getSysUserTotalCount(String arp, String name,String departmentName);
+    List<SysUser> getSysUserList(String arp, String name,String departmentName,String project,String company,Integer first, Integer pageSize);
+    int getSysUserTotalCount(String arp, String name,String departmentName,String project,String company);
     SysUser getSysUser(String id);
     SysUser getSysUserForSuppllier(String id);
     SysUser getSysUserByAccount(String account);
diff --git a/src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java
index 2edb936..c9bd4d4 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysUserServiceImpl.java
@@ -43,7 +43,7 @@
     SysUserDao sysUserDao;
 
     @Transactional(propagation = Propagation.REQUIRED)
-    public List<SysUser> getSysUserList(String arp, String name,String departmentName, Integer first, Integer pageSize) {
+    public List<SysUser> getSysUserList(String arp, String name,String departmentName,String project,String company, Integer first, Integer pageSize) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             if (StringUtils.isNotBlank(arp)) {
@@ -55,6 +55,8 @@
             if (StringUtils.isNotBlank(departmentName)) {
                 params.put("departmentNameLike", "%" + departmentName + "%");
             }
+            params.put("project", project);
+            params.put("company", company);
             params.put("first", first);
             params.put("pageSize", pageSize);
             return this.sysUserDao.getSysUserList(params);
@@ -64,7 +66,7 @@
         }
     }
     @Transactional(propagation = Propagation.REQUIRED)
-    public int getSysUserTotalCount(String arp, String name,String departmentName) {
+    public int getSysUserTotalCount(String arp, String name,String departmentName,String project,String company) {
         try {
             Map<String, Object> params = new HashMap<String, Object>();
             if (StringUtils.isNotBlank(arp)) {
@@ -76,6 +78,8 @@
             if (StringUtils.isNotBlank(departmentName)) {
                 params.put("departmentNameLike", "%" + departmentName + "%");
             }
+            params.put("project", project);
+            params.put("company", company);
             return this.sysUserDao.getSysUserTotalCount(params);
         } catch (DataAccessException e) {
             logger.error(e.getMessage(), e);
diff --git a/src/main/webapp/WEB-INF/config-mybatis.xml b/src/main/webapp/WEB-INF/config-mybatis.xml
index 365d9cd..861a53f 100644
--- a/src/main/webapp/WEB-INF/config-mybatis.xml
+++ b/src/main/webapp/WEB-INF/config-mybatis.xml
@@ -15,7 +15,7 @@
 		<setting name="useGeneratedKeys" value="false"/>
 		<setting name="defaultExecutorType" value="SIMPLE"/>
 		<setting name="defaultStatementTimeout" value="25000"/>
-		<setting name="logImpl" value="STDOUT_LOGGING" />
+		<setting name="logImpl" value="LOG4J" />
 	</settings>
 
 	<typeHandlers>
diff --git a/src/main/webapp/laboratory_container_mng.xhtml b/src/main/webapp/laboratory_container_mng.xhtml
index b6ad4db..25fb1be 100644
--- a/src/main/webapp/laboratory_container_mng.xhtml
+++ b/src/main/webapp/laboratory_container_mng.xhtml
@@ -12,7 +12,7 @@
 	<h:form id="laboratoryContainerMngForm">
 		<p:panel styleClass="center-header">
 			<p:outputLabel styleClass="title" value="实验室临时存储库管理"></p:outputLabel>
-			<p:panelGrid styleClass="filter" columns="5">
+			<p:panelGrid styleClass="filter" columns="9">
 				<p:outputLabel value="实验室类型:"></p:outputLabel>
 				<p:selectOneMenu value="#{laboratoryContainerMngController.laboratoryType}">
 					<f:selectItem itemLabel="全部" itemValue="#{null}" noSelectionOption="true"></f:selectItem>
@@ -24,6 +24,12 @@
 				<p:outputLabel value="实验室名:"></p:outputLabel>
 				<p:inputText value="#{laboratoryContainerMngController.laboratoryName}"></p:inputText>
 
+				<p:outputLabel value="课题名称:"></p:outputLabel>
+				<p:inputText value="#{laboratoryContainerMngController.project}"></p:inputText>
+
+				<p:outputLabel value="主控名称:"></p:outputLabel>
+				<p:inputText value="#{laboratoryContainerMngController.controllerName}"></p:inputText>
+
 				<p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
 			</p:panelGrid>
 		</p:panel>
diff --git a/src/main/webapp/laboratory_mng.xhtml b/src/main/webapp/laboratory_mng.xhtml
index 601dedb..0d36f3c 100644
--- a/src/main/webapp/laboratory_mng.xhtml
+++ b/src/main/webapp/laboratory_mng.xhtml
@@ -12,7 +12,7 @@
 	<h:form id="laboratoryMngForm">
 		<p:panel styleClass="center-header">
 			<p:outputLabel styleClass="title" value="实验室管理"></p:outputLabel>
-			<p:panelGrid styleClass="filter" columns="5">
+			<p:panelGrid styleClass="filter" columns="7">
 				<p:outputLabel value="实验室类型:"></p:outputLabel>
 				<p:selectOneMenu value="#{laboratoryMngController.type}">
 					<f:selectItem itemLabel="全部" itemValue="#{null}" noSelectionOption="true"></f:selectItem>
@@ -24,6 +24,9 @@
 				<p:outputLabel value="实验室名:"></p:outputLabel>
 				<p:inputText value="#{laboratoryMngController.name}"></p:inputText>
 
+				<p:outputLabel value="课题组:"></p:outputLabel>
+				<p:inputText value="#{laboratoryMngController.project}"></p:inputText>
+
 				<p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
 			</p:panelGrid>
 		</p:panel>
diff --git a/src/main/webapp/personal_use_info.xhtml b/src/main/webapp/personal_use_info.xhtml
index 22644b5..ff71fb3 100644
--- a/src/main/webapp/personal_use_info.xhtml
+++ b/src/main/webapp/personal_use_info.xhtml
@@ -50,84 +50,272 @@
 			<p:panel styleClass="center-header">
 				<p:panelGrid styleClass="filter" columns="13">
 
-					<p:outputLabel value="试剂名称:"></p:outputLabel>
-					<p:inputText value="#{personalUseInfoController.reagentId}"></p:inputText>
+					<p:outputLabel value="单据编号:"/>
+					<p:inputText value="#{personalUseInfoController.receiptNumber}"/>
 
-					<p:outputLabel value="条形码:"></p:outputLabel>
-					<p:inputText value="#{personalUseInfoController.reagentCode}"></p:inputText>
-					<p:outputLabel value="申领人:"/>
-					<p:inputText value="#{personalUseInfoController.applyPerson}"/>
+					<p:outputLabel value="课题组:"/>
+					<p:inputText value="#{personalUseInfoController.project}"/>
+
+					<p:outputLabel value="部门:"/>
+					<p:inputText value="#{personalUseInfoController.department}"/>
 
 					<p:outputLabel for="startTime" value="开始时间:" />
 					<p:calendar id="startTime" value="#{personalUseInfoController.startTime}" pattern="yyyy-MM-dd HH:mm" />
 					<p:outputLabel for="endTime" value="截止时间:" />
 					<p:calendar id="endTime" value="#{personalUseInfoController.endTime}" pattern="yyyy-MM-dd HH:mm" />
 
-					<p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
-					<p:commandButton value="更新时间" styleClass="store-btn" process="@form" actionListener="#{personalUseInfoController.updateTimeByCode}"
-					update="@form"></p:commandButton>
-					<p:commandButton value="取消领用" style="background: #b94a48; border: 1px solid #b94a48" styleClass="store-btn" process="@form" actionListener="#{personalUseInfoController.reagentReturn}"
-									 update="@form"></p:commandButton>
-				</p:panelGrid>
+					<p:commandLink styleClass="search" process="@form" update="@form"/>
+
+					<p:commandButton value="生成领用单"
+									 style="background: #b94a48; border: 1px solid #b94a48"
+									 styleClass="store-btn"
+									 process="@form"
+									 actionListener="#{personalUseInfoController.generateReceipt}"
+									 update="printDialog"/>
+					<p:commandButton value="查看详情"
+									 styleClass="store-btn"
+									 update=":dialog,:dialogForm"
+									 actionListener="#{personalUseInfoController.detailInfo}"
+									 oncomplete="PF('dialog').show()"/>
+
+
+			</p:panelGrid>
 			</p:panel>
 		</p:panel>
 
-		<style>
+		<style type="text/css">
 			.ui-datatable tbody td{
 				white-space: normal;
 				word-break: break-all;
 			}
 		</style>
 		<p:panel styleClass="center-body">
-			<p:dataTable id="personalUseInfoDataTable" styleClass="data-table" resizableColumns="true"
-				paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom"
-				lazy="true" value="#{personalUseInfoController.dataModel}" var="row"
-				rowKey="#{row.id}" emptyMessage="无数据" rows="20" pageLinks="5" selection="#{personalUseInfoController.selectedList}">
-				<p:column selectionMode="multiple" style="width: 30px;text-align: center;"/>
-				<p:column headerText="试剂名称">
-					<h:outputText value="#{row.reagent.name}"></h:outputText>
+			<p:dataTable id="personalUseInfoDataTable"
+						 styleClass="data-table"
+						 resizableColumns="true"
+						 paginator="true"
+						 paginatorAlwaysVisible="false"
+						 paginatorPosition="bottom"
+						 lazy="true"
+						 value="#{personalUseInfoController.dataModel2}"
+						 var="row"
+						 rowKey="#{row.receiptNumber}"
+						 selectionMode="single"
+						 emptyMessage="无数据"
+						 selection="#{personalUseInfoController.selectOne}"
+						 rows="20" pageLinks="5">
+
+<!--				<p:column selectionMode="multiple" style="width: 30px;text-align: center;"/>-->
+				<p:column headerText="单据编号">
+					<h:outputText value="#{row.receiptNumber}"/>
 				</p:column>
 
-				<p:column headerText="试剂条形码">
-					<h:outputText value="#{row.reagentCode}"></h:outputText>
+				<p:column headerText="申领人" width="80">
+					<h:outputText value="#{row.userName}"/>
 				</p:column>
 
-                <p:column headerText="厂家">
-                    <h:outputText value="#{baseMetaService.getBaseMetaValue(row.reagent.productHome)}"></h:outputText>
-                </p:column>
-				<!--<p:column headerText="供应商">-->
-					<!--<h:outputText value="#{row.reagent.supplierName}"></h:outputText>-->
-				<!--</p:column>-->
-
-				<p:column headerText="规格">
-					<h:outputText
-						value="#{baseMetaService.getBaseMetaValue(row.reagent.reagentFormat)}"></h:outputText>
+				<p:column headerText="领用数量" width="50">
+					<h:outputText value="#{row.applyNum}"/>
 				</p:column>
 
-				<p:column headerText="包装">
-					<h:outputText
-						value="#{''.concat(row.reagent.mainMetering).concat(baseMetaService.getBaseMetaValue(row.reagent.reagentUnit))}"></h:outputText>
+				<p:column headerText="课题组">
+					<h:outputText value="#{row.project}"/>
 				</p:column>
 
-				<p:column headerText="批号">
-					<h:outputText value="#{row.articleNumber}"></h:outputText>
+				<p:column headerText="部门">
+					<h:outputText value="#{row.department}"/>
 				</p:column>
 
-<!--				<p:column headerText="残存量">-->
-<!--					<h:outputText value="#{row.remainder}"></h:outputText>-->
-<!--				</p:column>-->
-
-				<p:column headerText="申领人">
-					<h:outputText value="#{row.userName}" />
+				<p:column headerText="地点">
+					<h:outputText value="#{row.laboratoryName}"/>
 				</p:column>
 
 				<p:column headerText="领用时间">
-                    <h:outputText value="#{row.updateTime}">
-                        <f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss" locale="zh_CN"></f:convertDateTime>
+                    <h:outputText value="#{row.createTime}">
+                        <f:convertDateTime pattern="yyyy-MM-dd HH:mm" locale="zh_CN"/>
                     </h:outputText>
                 </p:column>
 			</p:dataTable>
 		</p:panel>
 	</h:form>
+
+	<p:dialog modal="true" header="试剂详情页面" appendTo="@(body)"
+			  id="dialog" widgetVar="dialog"
+			  resizable="false" width="1000">
+		<h:form id="dialogForm">
+			<p:dataTable styleClass="data-table"
+						 paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom"
+						 value="#{personalUseInfoController.personUseDetail}" var="row" rowKey="#{row.id}"
+						 emptyMessage="无数据"
+						 style="margin:50px 0 80px 0"
+						 rows="5" pageLinks="5">
+
+				<p:column headerText="产品编号">
+					<h:outputText value="#{row.productSn}"/>
+				</p:column>
+
+				<p:column headerText="试剂名称">
+					<h:outputText value="#{row.reagentName}"/>
+				</p:column>
+
+				<p:column headerText="试剂条形码">
+					<h:outputText value="#{row.reagentCode}"/>
+				</p:column>
+
+				<p:column headerText="管制品">
+					<h:outputText value="#{row.controlProducts}"/>
+				</p:column>
+
+				<p:column headerText="规格型号">
+					<h:outputText value="#{row.reagentFormat}"/>
+				</p:column>
+
+				<p:column headerText="包装">
+					<h:outputText value="#{row.perInfo}"/>
+				</p:column>
+
+				<p:column headerText="厂家">
+					<h:outputText value="#{row.productHome}"/>
+				</p:column>
+
+				<p:column headerText="批号">
+					<h:outputText value="#{row.articleNumber}"/>
+				</p:column>
+
+			</p:dataTable>
+
+			<p:panel styleClass="btn" style="text-align: right">
+			</p:panel>
+		</h:form>
+	</p:dialog>
+	<p:dialog id="apply-ui" header="领用单" widgetVar="printDialog" appendTo="@(body)" modal="true" resizable="false"
+			  width="1380">
+		<div id="printTarget">
+			<div style=" margin: 20mm 27mm 0mm 30mm;">
+				<h:form id="printDialog" style="width: 1100px">
+
+					<p:outputPanel style="text-align: center;font-size: 14px;font-weight: 700;">#{personalUseInfoController.printTable['head']}</p:outputPanel>
+					<p:outputPanel style="text-align: center;font-size: 15px;margin: 20px;font-weight: 700;">#{personalUseInfoController.printTable['title']}</p:outputPanel>
+					<div>
+						<div style="display: flex;flex-direction: row;justify-content: flex-end;width: 1081px;">
+							<div style="width: 98px;">单据编号:</div>
+							<div style="width: 183px;">#{personalUseInfoController.printTable['receiptNumber']}</div>
+						</div>
+					</div>
+
+					<div style="margin: 10px 0;">
+						<div style="display: inline-flex;">
+							<div style="width: 100px;margin-left: 10px;">部门:</div>
+							<div style="width: 300px;">#{personalUseInfoController.printTable['department']}</div>
+						</div>
+						<div style="display: inline-flex;">
+							<div style="width: 100px;">申购人:</div>
+							<div style="width: 200px;padding-top: 1px;">#{personalUseInfoController.printTable['applyPerson']}</div>
+						</div>
+						<div style="display: inline-flex;float: right;">
+							<div style="width: 100px;">日期:</div>
+							<div style="width: 200px;padding-top: 1px;">#{personalUseInfoController.printTable['date']}</div>
+						</div>
+					</div>
+
+					<div style="margin-bottom: 20px;">
+						<div style="display: inline-flex;">
+							<div style="width: 100px;margin-left: 10px;">课题组</div>
+							<div style="width: 300px;">#{personalUseInfoController.printTable['project']}</div>
+						</div>
+						<div style="display: inline-flex;">
+							<div style="width: 100px;">使用地点:</div>
+							<div style="width: 200px;padding-top: 1px;">#{personalUseInfoController.printTable['lab']}</div>
+						</div>
+						<div style="display: inline-flex;float: right;">
+							<div style="width: 100px;">联系方式:</div>
+							<div style="width: 200px;">#{personalUseInfoController.printTable['phone']}</div>
+						</div>
+					</div>
+
+
+
+
+					<p:dataTable id="printTB" styleClass="apply-list"
+								 value="#{personalUseInfoController.printTable['applyList']}" var="row" >
+						<p:column headerText="产品编号" width="150px;" style="text-align: center;">
+							<h:outputText value="#{row.productCode}" />
+						</p:column>
+						<p:column headerText="产品名称" width="150px;" style="text-align: center;">
+							<h:outputText value="#{row.productName}" />
+						</p:column>
+
+						<p:column headerText="管制品" width="100px;" style="text-align: center;">
+							<h:outputText value="#{row.controlProducts}" />
+						</p:column>
+
+						<p:column headerText="规格型号" width="160px;" style="text-align: center;">
+							<h:outputText value="#{row.reagentFormat}" />
+						</p:column>
+
+						<p:column headerText="包装" width="90px;" style="text-align: center;">
+							<h:outputText value="#{row.mainMetering==null?'':row.mainMetering.replace('null','')}" />
+						</p:column>
+
+						<p:column headerText="数量" width="90px;" style="text-align: center;">
+							<h:outputText value="#{row.num}" />
+						</p:column>
+
+						<p:column headerText="备注" width="170px;" style="text-align: center;">
+							<h:outputText value="#{row.memo}" />
+						</p:column>
+					</p:dataTable>
+
+					<div style="margin-top: 20px;margin-right: 94px;">
+						<div style="display: flex;flex-direction: row;justify-content: flex-end;">
+							<div style="width: 100px">签收人:</div>
+							<div style="width: 100px"></div>
+						</div>
+					</div>
+
+					<div style="margin: 10px 94px 10px 0;">
+						<div style="display: flex;flex-direction: row;justify-content: flex-end;">
+							<div style="width: 100px">日期:</div>
+							<div style="width: 100px"></div>
+						</div>
+					</div>
+
+
+
+					<p:panel styleClass="btn  no-print">
+						<div class="div-btn cancel" id="cancel">关闭</div>
+						<div class="div-btn print" id="print">打印</div>
+
+						<script type="text/javascript" src="resources/js/print.js"/>
+						<script type="text/javascript">
+							$(function () {
+								$("#print").on("click", function () {
+									jQuery.print('#printTarget')
+								})
+								$("#cancel").on("click", function () {
+									$("#apply-ui a").click();
+								})
+							})
+
+
+						</script>
+					</p:panel>
+				</h:form>
+			</div>
+		</div>
+		<script type="text/javascript" src="resources/js/print.js"/>
+		<script type="text/javascript">
+			$(function () {
+				$("#print").on("click", function () {
+					jQuery.print('#printTarget');
+				});
+				$("#cancel").on("click", function () {
+					$("#reagentUseFlowInfoForm\\:apply-ui a").click();
+				})
+			})
+
+
+		</script>
+	</p:dialog>
 </ui:composition>
 </html>
diff --git a/src/main/webapp/reagent_user_flow_info.xhtml b/src/main/webapp/reagent_user_flow_info.xhtml
index 02ca1f0..1519eeb 100644
--- a/src/main/webapp/reagent_user_flow_info.xhtml
+++ b/src/main/webapp/reagent_user_flow_info.xhtml
@@ -14,7 +14,7 @@
 			<p:outputLabel styleClass="title" value="试剂流向追踪"></p:outputLabel>
 
 			<p:panel styleClass="center-header">
-				<p:panelGrid styleClass="filter" columns="11">
+				<p:panelGrid styleClass="filter" columns="13">
 					<p:outputLabel value="开始时间:"></p:outputLabel>
 					<p:calendar value="#{opeUseFlowInfoController.startDate}"></p:calendar>
 
@@ -27,6 +27,9 @@
 					<p:outputLabel value="条形码:"></p:outputLabel>
 					<p:inputText value="#{opeUseFlowInfoController.reagentCode}"></p:inputText>
 
+					<p:outputLabel value="柜号:"></p:outputLabel>
+					<p:inputText value="#{opeUseFlowInfoController.containerCode}"></p:inputText>
+
 					<p:outputLabel value="场所名:"></p:outputLabel>
 					<p:inputText value="#{opeUseFlowInfoController.houseName}"></p:inputText>
 					<p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
diff --git a/src/main/webapp/user_mng.xhtml b/src/main/webapp/user_mng.xhtml
index 09ccb1b..eabe205 100644
--- a/src/main/webapp/user_mng.xhtml
+++ b/src/main/webapp/user_mng.xhtml
@@ -15,16 +15,22 @@
         <p:panel styleClass="center-header">
             <p:outputLabel styleClass="title" value="用户管理"></p:outputLabel>
 
-            <p:panelGrid styleClass="filter" columns="7">
+            <p:panelGrid styleClass="filter" columns="11">
                 <p:outputLabel value="ARP号:"></p:outputLabel>
                 <p:inputText value="#{userMngController.arp}"></p:inputText>
 
                 <p:outputLabel value="姓名:"></p:outputLabel>
                 <p:inputText value="#{userMngController.name}"></p:inputText>
 
+                <p:outputLabel value="课题组:"></p:outputLabel>
+                <p:inputText value="#{userMngController.project}"></p:inputText>
+
                 <p:outputLabel value="部门:"></p:outputLabel>
                 <p:inputText value="#{userMngController.departmentName}"></p:inputText>
 
+                <p:outputLabel value="单位:"></p:outputLabel>
+                <p:inputText value="#{userMngController.company}"></p:inputText>
+
                 <p:commandLink styleClass="search" process="@form" update="@form"></p:commandLink>
             </p:panelGrid>
         </p:panel>
diff --git a/src/main/webapp/warehouse_stock_mng.xhtml b/src/main/webapp/warehouse_stock_mng.xhtml
index 4673d4e..e475480 100644
--- a/src/main/webapp/warehouse_stock_mng.xhtml
+++ b/src/main/webapp/warehouse_stock_mng.xhtml
@@ -79,7 +79,7 @@
 			<br/>
 			<h:form id="warehouseStockMngForm">
 				<p:panel styleClass="center-header">
-					<p:panelGrid styleClass="filter" columns="7">
+					<p:panelGrid styleClass="filter" columns="9">
 
 						<p:outputLabel value="试剂名称:"></p:outputLabel>
 						<p:inputText value="#{warehouseStockMngController.reagentId}"></p:inputText>
@@ -91,6 +91,9 @@
 										   var="item" itemLabel="#{item.name}" itemValue="#{item.id}"></f:selectItems>
 						</p:selectOneMenu>
 
+						<p:outputLabel value="仓库名:"></p:outputLabel>
+						<p:inputText value="#{warehouseStockMngController.warehouseName}"></p:inputText>
+
 						<p:outputLabel value="产品编号:"></p:outputLabel>
 						<p:inputText value="#{warehouseStockMngController.productSn}"></p:inputText>
 

--
Gitblit v1.9.2