gdg
2021-01-29 31ffbaf322685984516cfb284fa58741debf4e96
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;
   }
}