From 47a751cb301d05276ae5d75145d57b2d090fe4e1 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期一, 01 七月 2024 10:58:35 +0800
Subject: [PATCH] change

---
 src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java |  138 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 131 insertions(+), 7 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..ab1463e 100644
--- a/src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java
+++ b/src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java
@@ -1,15 +1,25 @@
 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 com.nanometer.smartlab.util.ExcelUtils;
 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 +38,8 @@
 	SysControllerDao sysControllerDao;
 	@Resource(name = "sysLaboratoryContainerDao")
 	SysLaboratoryContainerDao sysLaboratoryContainerDao;
-	
+	@Resource(name = "baseMetaService")
+	BaseMetaService baseMetaService;
 	@Override
 	public List<SysController> getAllControllerList() {
 		try {
@@ -49,7 +60,7 @@
 			throw new BusinessException(ExceptionEnumCode.DB_ERR,
 					MessageUtil.getMessageByCode(ExceptionEnumCode.DB_ERR.getCode()), e);
 		}
-		
+
 	}
 
 	@Override
@@ -89,7 +100,7 @@
 	}
 
 	@Override
-	public int deleteSysControllers(List<Integer> ids) {
+	public int deleteSysControllers(List<Long> ids) {
 		try {
 			return this.sysControllerDao.deleteSysControllers(ids);
 		} catch (DataAccessException e) {
@@ -99,8 +110,121 @@
 		}
 	}
 
+    @Override
+    public void uploadFile(FileUploadEvent event) throws  Exception{
+		List<SysController> sysControllers=this.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, Long> 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);
+				}
+
+				if (valuesList.size() != 3){
+					break;
+				}
+
+				//重名判断
+				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));
+				this.insertSysController(sysController);
+				controllerInfo.add(controlName);
+				controllerInfo.add(controlCode);
+			}
+
+    }
+
 	@Override
-	public SysController getSysController(Integer id) {
+	public List<Map> exportExcelList(String name, String code) {
+		Map<String, String> params = new HashMap<>();
+		params.put("name", name);
+		params.put("code", code);
+		return sysControllerDao.exportExcelList(params);
+	}
+
+	@Override
+	public void export2Excel(List<Map> list) throws Exception {
+		Map<String, String> map = new LinkedHashMap<>();
+		map.put("name", "设备名称");
+		map.put("code", "设备代码");
+		map.put("type", "设备类型");
+		ExcelUtils.export2Excel(list,"主控设备信息",map);
+	}
+
+	@Override
+	public SysController getSysController(Long id) {
 		try {
 			return this.sysControllerDao.getSysController(id);
 		} catch (DataAccessException e) {

--
Gitblit v1.9.2