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