From 1116c716786ef8c0ca2075d403b22483a36e98b6 Mon Sep 17 00:00:00 2001
From: gdg <764716047@qq.com>
Date: 星期四, 28 一月 2021 14:28:46 +0800
Subject: [PATCH] 个人领用
---
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml | 107 +++++++
src/main/java/com/nanometer/smartlab/entity/dto/PersonUseDetail.java | 98 +++++++
src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java | 182 ++++++++++++
src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java | 9
src/main/webapp/personal_use_info.xhtml | 278 ++++++++++++++++---
src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java | 48 +++
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java | 7
src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java | 61 ++++
8 files changed, 736 insertions(+), 54 deletions(-)
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/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..96315bf 100644
--- a/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
+++ b/src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml
@@ -179,6 +179,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 >#{startTime}
+ </if>
+ <if test="endTime !=null and endTime != ''">
+ and ouf.create_time <#{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 >#{startTime}
+ </if>
+ <if test="endTime !=null and endTime != ''">
+ and ouf.create_time <#{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/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..252d834 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;
@@ -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..2a931b7 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;
@@ -454,4 +455,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/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>
--
Gitblit v1.9.2