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