package com.nanometer.smartlab.controller; import java.io.InputStream; import java.math.BigDecimal; import java.util.*; import javax.annotation.Resource; import com.nanometer.smartlab.entity.BaseMeta; import com.nanometer.smartlab.entity.SysLaboratory; import com.nanometer.smartlab.service.*; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.primefaces.context.RequestContext; import org.primefaces.event.FileUploadEvent; import org.primefaces.model.LazyDataModel; import org.primefaces.model.SortOrder; import org.primefaces.model.UploadedFile; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.nanometer.smartlab.entity.SysController; import com.nanometer.smartlab.entity.SysLaboratoryContainer; import com.nanometer.smartlab.util.Constants; import com.nanometer.smartlab.util.FacesUtils; /** * Created by cmower on 17/11/20. */ @Controller @Scope("session") public class LaboratoryContainerMngController extends BaseController { private static final long serialVersionUID = 101543880938627455L; private static Logger logger = Logger.getLogger(LaboratoryContainerMngController.class); @Resource private SysLaboratoryContainerService sysLaboratoryContainerService; @Resource private SysControllerService sysControllerService; @Resource private BaseMetaService baseMetaService; @Resource private SysLaboratoryService sysLaboratoryService; @Resource private SysProjectService sysProjectService; /** * 数据源 */ private LazyDataModel dataModel; /** * 数据模型 */ private SysLaboratoryContainer sysLaboratoryContainer=new SysLaboratoryContainer(); /** * 选中的list */ private List selectedList; private List controllers; private String laboratoryType; private String laboratoryName; private String project; private String controllerName; private int action; /** 左右门危险性质显示Flag */ private int characterRenderedFlag; public void onNewBtnClick() { if (this.selectedList == null || this.selectedList.size() == 0) { this.sysLaboratoryContainer = new SysLaboratoryContainer(); this.action = Constants.ACTION_ADD; this.setCharacterRenderedFlag(0); RequestContext.getCurrentInstance().execute("PF('dialog').show()"); } if (this.selectedList.size() == 1) { this.sysLaboratoryContainer = this.sysLaboratoryContainerService .getSysLaboratoryContainer(this.selectedList.get(0).getId()); if(this.baseMetaService.getBaseMetaKey(this.sysLaboratoryContainer.getType()).equals("200")) { // 智能柜时,左右门危险性质可配置 this.setCharacterRenderedFlag(1); }else { this.setCharacterRenderedFlag(0); this.sysLaboratoryContainer.setCharacterLeft(null); this.sysLaboratoryContainer.setCharacterRight(null); } this.sysLaboratoryContainer.setId(null); this.action = Constants.ACTION_ADD; this.setCharacterRenderedFlag(0); RequestContext.getCurrentInstance().execute("PF('dialog').show()"); } if (this.selectedList.size() > 1) { FacesUtils.warn("不允许选择两条和两条以上的数据。"); return; } //this.sysLaboratoryContainer = new SysLaboratoryContainer(); } public void onEditBtnClick() { if (this.selectedList == null || this.selectedList.size() == 0) { FacesUtils.warn("请选择数据。"); return; } if (this.selectedList.size() > 1) { FacesUtils.warn("只能选择一个数据进行修改。"); return; } this.sysLaboratoryContainer = this.sysLaboratoryContainerService .getSysLaboratoryContainer(this.selectedList.get(0).getId()); this.action = Constants.ACTION_EDIT; if(this.baseMetaService.getBaseMetaKey(this.sysLaboratoryContainer.getType()).equals("200")) { // 智能柜时,左右门危险性质可配置 this.setCharacterRenderedFlag(1); }else { this.setCharacterRenderedFlag(0); this.sysLaboratoryContainer.setCharacterLeft(null); this.sysLaboratoryContainer.setCharacterRight(null); } System.out.println(this.sysLaboratoryContainer.getControllerCode()); RequestContext.getCurrentInstance().execute("PF('dialog').show()"); } public void onSaveBtnClick() { try { // 新建 if (this.action == Constants.ACTION_ADD) { if (this.sysLaboratoryContainer == null) { FacesUtils.warn("新建对象为空。"); return; } boolean inputCheckFlag = false; if(this.sysLaboratoryContainer.getContainerCode()==null || this.sysLaboratoryContainer.getContainerCode().equals("")) { FacesUtils.error("请输入临时存储库条码", "请输入临时存储库条码"); inputCheckFlag = true; } if(this.sysLaboratoryContainer.getInfoCode()==null || this.sysLaboratoryContainer.getInfoCode().equals("")) { FacesUtils.error("请输入临时存储库状态码", "请输入临时存储库状态码"); inputCheckFlag = true; } if(this.sysLaboratoryContainer.getName()==null || this.sysLaboratoryContainer.getName().equals("")) { FacesUtils.error("请输入临时存储库名称", "请输入临时存储库名称"); inputCheckFlag = true; } if(inputCheckFlag) { return; } if (this.sysLaboratoryContainerService .isSysLaboratoryContainerExist(this.sysLaboratoryContainer.getContainerCode(), null)) { FacesUtils.warn("临时存储库条码已存在。"); return; } System.out.println(sysLaboratoryContainer.getContainerCode()); this.sysLaboratoryContainerService.insertSysLaboratoryContainer(sysLaboratoryContainer); FacesUtils.info("新建成功。"); RequestContext.getCurrentInstance().execute("PF('dialog').hide()"); // 修改 } else if (this.action == Constants.ACTION_EDIT) { if (this.sysLaboratoryContainer == null) { FacesUtils.warn("修改对象为空。"); return; } boolean inputCheckFlag = false; if(this.sysLaboratoryContainer.getContainerCode()==null || this.sysLaboratoryContainer.getContainerCode().equals("")) { FacesUtils.error("请输入临时存储库条码", "请输入临时存储库条码"); inputCheckFlag = true; } if(this.sysLaboratoryContainer.getInfoCode()==null || this.sysLaboratoryContainer.getInfoCode().equals("")) { FacesUtils.error("请输入临时存储库状态码", "请输入临时存储库状态码"); inputCheckFlag = true; } if(this.sysLaboratoryContainer.getName()==null || this.sysLaboratoryContainer.getName().equals("")) { FacesUtils.error("请输入临时存储库名称", "请输入临时存储库名称"); inputCheckFlag = true; } if(inputCheckFlag) { return; } if (this.sysLaboratoryContainerService.isSysLaboratoryContainerExist( this.sysLaboratoryContainer.getContainerCode(), this.sysLaboratoryContainer.getId())) { FacesUtils.warn("临时存储库条码已存在。"); return; } // sysLaboratoryContainer.setProject(null); // sysLaboratoryContainer.getProject(); this.sysLaboratoryContainerService.updateSysLaboratoryContainer(sysLaboratoryContainer); FacesUtils.info("修改成功。"); RequestContext.getCurrentInstance().execute("PF('dialog').hide()"); } } catch (Exception e) { logger.error("操作失败。", e); FacesUtils.warn("操作失败。"); } } public void export2Excel(){ try { List list = sysLaboratoryContainerService.exportExcelList(laboratoryType, laboratoryName,project,controllerName); sysLaboratoryContainerService.export2Excel(list); }catch (Exception e){ e.printStackTrace(); FacesUtils.warn("导出失败"); } } public void uploadFile(FileUploadEvent event) { System.out.println("=========导入开始====="); List typeList=baseMetaService.getBaseMetaList("container_type"); List struList=baseMetaService.getBaseMetaList("container_structure"); List charList=baseMetaService.getBaseMetaList("reagent_character"); List sysLaboratories=sysLaboratoryService.getAllSysLaboratoryList(); List sysControllers=sysControllerService.getAllControllerList(); try{ UploadedFile file = event.getFile(); InputStream is=file.getInputstream(); boolean isExcel2003=true; if (file.getFileName().matches("^.+\\.(?i)(xlsx)$")) { isExcel2003 = false; } Workbook wb=null; if(isExcel2003) { wb = new HSSFWorkbook(is); }else{ wb = new XSSFWorkbook(is); } Sheet sheet=wb.getSheetAt(0); List sysLaboratoryContainers = new ArrayList<>(); int totalRows = sheet.getPhysicalNumberOfRows(); Row row=null; int totalCells=0; for (int i = 1; i < totalRows; i++) { List valuesList=new ArrayList(); row=sheet.getRow(i); totalCells= row.getPhysicalNumberOfCells(); //System.out.println("====="+totalCells); // 目前导入文件11列,不满足条件的情况跳过 /*if (totalCells != 12) { throw new Exception("导入文件格式不正确"); }*/ for (int t = 0; t < totalCells; t++) { String cellInfo=""; if (row.getCell(t) != null) { if (row.getCell(t).getCellTypeEnum().toString().equals("NUMERIC")) { cellInfo = String.valueOf(row.getCell(t).getNumericCellValue()); if(t==2){ cellInfo=new BigDecimal(Double.valueOf(row.getCell(t).getNumericCellValue())).toString(); } if(t==4){ cellInfo=new BigDecimal(Double.valueOf(row.getCell(t).getNumericCellValue())).toString(); } } else { cellInfo = row.getCell(t).getStringCellValue(); } } valuesList.add(cellInfo); } if (valuesList.size() != 10){ break; } System.out.println("value : "+valuesList); SysLaboratoryContainer sysLaboratoryContainer=new SysLaboratoryContainer(); sysLaboratoryContainer.setLaboratoryId(getLabId(sysLaboratories,valuesList.get(0))); if (!valuesList.get(1).replace(" ","").isEmpty()){ List projects = Arrays.asList(valuesList.get(1).split(",")); for (String project : projects) { //不存再就直接推出 if (!sysProjectService.isExistProject(project)) { throw new Exception("课题组不存在,(" + i + "行)"); } } //都存在就设置 sysLaboratoryContainer.setProject(valuesList.get(1).replace(" ","")); }else{ sysLaboratoryContainer.setProject(null); } sysLaboratoryContainer.setControllerCode(getConCode(sysControllers,valuesList.get(2))); sysLaboratoryContainer.setContainerCode(valuesList.get(3)); sysLaboratoryContainer.setType(getBaseMetaId(typeList,valuesList.get(4))); sysLaboratoryContainer.setInfoCode(valuesList.get(5)); sysLaboratoryContainer.setStructure(getBaseMetaId(struList,valuesList.get(6))); sysLaboratoryContainer.setName(valuesList.get(7)); if(valuesList.get(4).equals("智能柜")){ sysLaboratoryContainer.setCharacterLeft(getBaseMetaId(charList,valuesList.get(8))); sysLaboratoryContainer.setCharacterRight(getBaseMetaId(charList,valuesList.get(9))); } sysLaboratoryContainers.add(sysLaboratoryContainer); } sysLaboratoryContainerService.insertSysReagentList(sysLaboratoryContainers); FacesUtils.info("导入成功。"); }catch (Exception ex){ ex.printStackTrace(); FacesUtils.info("导入失败。"); } } public Long getBaseMetaId(List list,String name){ Long id=null; for(int i=0;i list,String name){ Long id=null; for(int i=0;i list,String name){ String id=""; for(int i=0;i getDataModel() { if (this.dataModel == null) { this.dataModel = new LazyDataModel() { @Override public List load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) { List list = null; try { int count = sysLaboratoryContainerService.getSysLaboratoryContainerTotalCount(laboratoryType, laboratoryName,null,project); this.setRowCount(count); if (count > 0) { list = sysLaboratoryContainerService.getSysLaboratoryContainerList(laboratoryType, laboratoryName,null,project, first, pageSize); } selectedList = new ArrayList<> (); } catch (Exception e) { logger.error(e); } return list; } @Override public SysLaboratoryContainer getRowData(String rowKey) { // Iterator iterator = this.iterator(); // if (iterator != null) { // SysLaboratoryContainer su = null; // while (iterator.hasNext()) { // su = iterator.next(); // if (rowKey.equals(su.getId())) { // return su; // } // } // } Long id=Long.valueOf(rowKey); return sysLaboratoryContainerService.getSysLaboratoryContainer(id); } }; } return dataModel; } public SysLaboratoryContainer getSysLaboratoryContainer() { return sysLaboratoryContainer; } public void setSysLaboratoryContainer(SysLaboratoryContainer sysLaboratoryContainer) { this.sysLaboratoryContainer = sysLaboratoryContainer; } public List getSelectedList() { return selectedList; } public void setSelectedList(List selectedList) { this.selectedList = selectedList; } public int getAction() { return action; } public String getLaboratoryType() { return laboratoryType; } public void setLaboratoryType(String laboratoryType) { this.laboratoryType = laboratoryType; } public String getLaboratoryName() { return laboratoryName; } public void setLaboratoryName(String laboratoryName) { this.laboratoryName = laboratoryName; } public int getCharacterRenderedFlag() { return characterRenderedFlag; } public void setCharacterRenderedFlag(int characterRenderedFlag) { this.characterRenderedFlag = characterRenderedFlag; } public List getControllers() { this.controllers = sysControllerService.getAllControllerList(); return controllers; } public void setControllers(List controllers) { 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; } }