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 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 106 insertions(+), 5 deletions(-)

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);

--
Gitblit v1.9.2