gdg
2021-01-28 1116c716786ef8c0ca2075d403b22483a36e98b6
个人领用
已修改7个文件
已添加1个文件
794 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/controller/PersonalUseInfoController.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/dao/OpeUseFlowDao.xml 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/entity/dto/PersonUseDetail.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeUseFlowService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/OpeUseFlowServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/personal_use_info.xhtml 290 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}
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);
}
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 &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})
src/main/java/com/nanometer/smartlab/entity/OpeUseFlow.java
@@ -42,6 +42,12 @@
    private String operatestateName;
    private String operateState;
    private String receiptNumber;
    //人员信息
    private String project;
    private String phone;
    private String department;
    private Integer applyNum;
    
@@ -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;
    }
}
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;
    }
}
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);
}
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);
    }
}
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: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>
                <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>
                <p:column headerText="包装">
                    <h:outputText
                        value="#{''.concat(row.reagent.mainMetering).concat(baseMetaService.getBaseMetaValue(row.reagent.reagentUnit))}"></h:outputText>
                </p:column>
                <p:column headerText="批号">
                    <h:outputText value="#{row.articleNumber}"></h:outputText>
                </p:column>
<!--                <p:column headerText="残存量">-->
<!--                    <h:outputText value="#{row.remainder}"></h:outputText>-->
<!--                </p:column>-->
                <p:column headerText="申领人">
                <p:column headerText="申领人" width="80">
                    <h:outputText value="#{row.userName}" />
                </p:column>
                <p:column headerText="领用数量" width="50">
                    <h:outputText value="#{row.applyNum}"/>
                </p:column>
                <p:column headerText="课题组">
                    <h:outputText value="#{row.project}"/>
                </p:column>
                <p:column headerText="部门">
                    <h:outputText value="#{row.department}"/>
                </p:column>
                <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>