From 638ea5df947afa0d14b2f27ae65d85f259b70297 Mon Sep 17 00:00:00 2001 From: gdg <764716047@qq.com> Date: 星期三, 09 十二月 2020 15:30:27 +0800 Subject: [PATCH] 模块:主控设备管理 新增:导入 提出:秦老师 --- src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java | 111 +++++++++++++++++++++++++++++++++++- src/main/webapp/sys_controller_mng.xhtml | 19 +++++ src/main/java/com/nanometer/smartlab/service/SysControllerService.java | 4 + src/main/webapp/resources/template/主控设备导入模板.xlsx | 0 src/main/java/com/nanometer/smartlab/controller/SysControllerMngController.java | 9 +++ 5 files changed, 136 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/controller/SysControllerMngController.java b/src/main/java/com/nanometer/smartlab/controller/SysControllerMngController.java index d40502f..cac7f40 100644 --- a/src/main/java/com/nanometer/smartlab/controller/SysControllerMngController.java +++ b/src/main/java/com/nanometer/smartlab/controller/SysControllerMngController.java @@ -125,6 +125,15 @@ } } + public void uploadFile(FileUploadEvent event){ + try { + sysControllerService.uploadFile(event); + } catch (Exception e) { + e.printStackTrace(); + FacesUtils.warn("导入失败"); + } + } + public LazyDataModel<SysController> getDataModel() { if (this.dataModel == null) { this.dataModel = new LazyDataModel<SysController>() { diff --git a/src/main/java/com/nanometer/smartlab/service/SysControllerService.java b/src/main/java/com/nanometer/smartlab/service/SysControllerService.java index 2898fe5..38ff373 100644 --- a/src/main/java/com/nanometer/smartlab/service/SysControllerService.java +++ b/src/main/java/com/nanometer/smartlab/service/SysControllerService.java @@ -3,6 +3,7 @@ import java.util.List; import com.nanometer.smartlab.entity.SysController; +import org.primefaces.event.FileUploadEvent; public interface SysControllerService { @@ -23,4 +24,7 @@ int getSysControllerListCount(String code,String name); int deleteSysControllers(List<Integer> ids); + + void uploadFile(FileUploadEvent event) throws Exception; + } diff --git a/src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java b/src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java index 5c8d3f2..a1c6c0f 100644 --- a/src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java +++ b/src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java @@ -1,15 +1,24 @@ package com.nanometer.smartlab.service; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.InputStream; +import java.math.BigDecimal; +import java.util.*; import javax.annotation.Resource; import com.nanometer.smartlab.dao.SysLaboratoryContainerDao; +import com.nanometer.smartlab.entity.BaseMeta; import com.nanometer.smartlab.entity.SysLaboratoryContainer; +import com.nanometer.smartlab.entity.enumtype.ValidFlag; 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.event.FileUploadEvent; +import org.primefaces.model.UploadedFile; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -28,7 +37,10 @@ SysControllerDao sysControllerDao; @Resource(name = "sysLaboratoryContainerDao") SysLaboratoryContainerDao sysLaboratoryContainerDao; - + @Resource(name = "sysControllerService") + SysControllerService sysControllerService; + @Resource(name = "baseMetaService") + BaseMetaService baseMetaService; @Override public List<SysController> getAllControllerList() { try { @@ -99,7 +111,96 @@ } } - @Override + @Override + public void uploadFile(FileUploadEvent event) throws Exception{ + List<SysController> sysControllers=sysControllerService.getAllControllerList(); + List<BaseMeta> typeList=baseMetaService.getBaseMetaList("controller_type"); + //主控名字和条码 + HashSet<String> controllerInfo = new HashSet<>(); + if (sysControllers != null && sysControllers.size()>0){ + sysControllers.forEach(sysController -> { + controllerInfo.add(sysController.getControllerCode()); + controllerInfo.add(sysController.getControllerName()); + }); + + } + //主控类型 + Map<String, String> typeMap = new HashMap<>(); + if (typeList != null && typeList.size() > 0) { + typeList.forEach(type->{ + typeMap.put(type.getMetaValue(), type.getId()); + }); + } + + 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<SysLaboratoryContainer> sysLaboratoryContainers = new ArrayList<>(); + int totalRows = sheet.getPhysicalNumberOfRows(); + Row row = null; + int totalCells = 0; + for (int i = 1; i < totalRows; i++) { + List<String> valuesList=new ArrayList<String>(); + row=sheet.getRow(i); + + totalCells= row.getPhysicalNumberOfCells(); + + 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(); + } + + } else { + cellInfo = row.getCell(t).getStringCellValue(); + } + + } + valuesList.add(cellInfo); + } + //重名判断 + String controlName = valuesList.get(0); + if (controllerInfo.contains(controlName)){ + throw new Exception("设备名称重复:"+controlName); + } + + //条码重复 + String controlCode = valuesList.get(1); + if (controllerInfo.contains(controlCode)){ + throw new Exception("条码重复:"+controlCode); + } + + //设备类型填写判断 + String controlType = valuesList.get(2).trim(); + if (!typeMap.containsKey(controlType)){ + throw new Exception("设备类型填写不符合要求:"+controlType); + } + + SysController sysController = new SysController(); + sysController.setValidFlag(ValidFlag.VALID); + sysController.setControllerCode(controlCode); + sysController.setControllerName(controlName); + sysController.setType(typeMap.get(controlType)); + sysControllerService.insertSysController(sysController); + } + + } + + @Override public SysController getSysController(Integer id) { try { return this.sysControllerDao.getSysController(id); diff --git "a/src/main/webapp/resources/template/\344\270\273\346\216\247\350\256\276\345\244\207\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" "b/src/main/webapp/resources/template/\344\270\273\346\216\247\350\256\276\345\244\207\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" new file mode 100644 index 0000000..6197be9 --- /dev/null +++ "b/src/main/webapp/resources/template/\344\270\273\346\216\247\350\256\276\345\244\207\345\257\274\345\205\245\346\250\241\346\235\277.xlsx" Binary files differ diff --git a/src/main/webapp/sys_controller_mng.xhtml b/src/main/webapp/sys_controller_mng.xhtml index e267ac1..82a840d 100644 --- a/src/main/webapp/sys_controller_mng.xhtml +++ b/src/main/webapp/sys_controller_mng.xhtml @@ -26,7 +26,7 @@ </p:panelGrid> </p:panel> <p:panel styleClass="center-body"> - <p:panelGrid columns="3" styleClass="btn"> + <p:panelGrid columns="6" styleClass="btn"> <p:commandButton value="新建" styleClass="new-btn" process="@this" actionListener="#{sysControllerMngController.onNewBtnClick}" @@ -42,8 +42,23 @@ update="@form"> <p:confirm header="确认" message="确认操作?"></p:confirm> </p:commandButton> - </p:panelGrid> + <p:commandButton value="导入" styleClass="import-btn" onclick="importExcel()"/> + <p:commandButton value="导出" styleClass="new-btn" ajax="false" actionListener="${sysControllerMngController.export2Excel}"/> + <a href="resources/template/主控设备导入模板.xlsx" style="display: inline-block;"><img src="resources/images/xlsx.png" width="30px;" alt=""/></a> + <script type="text/javascript"> + function importExcel(){ + $("#sysControllerMngForm\\:importControl_input").click() + } + </script> + + </p:panelGrid> + <div style="display: none" id='importDv'> + <p:fileUpload fileUploadListener="#{sysControllerMngController.uploadFile}" + dragDropSupport="false" id="importControl" label="导入" + update="@form" auto="true" sizeLimit="5000000" + mode="advanced"/> + </div> <p:dataTable id="sysControllerMngDataTable" styleClass="data-table" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom" lazy="true" value="#{sysControllerMngController.dataModel}" var="row" rowKey="#{row.id}" -- Gitblit v1.9.2