gdg
2020-12-09 638ea5df947afa0d14b2f27ae65d85f259b70297
模块:主控设备管理
新增:导入
提出:秦老师
已修改4个文件
已添加1个文件
143 ■■■■■ 文件已修改
src/main/java/com/nanometer/smartlab/controller/SysControllerMngController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysControllerService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/nanometer/smartlab/service/SysControllerServiceImpl.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/resources/template/主控设备导入模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/sys_controller_mng.xhtml 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>() {
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;
}
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);
src/main/webapp/resources/template/主控设备导入模板.xlsx
Binary files differ
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}"