kongzy
2024-07-01 47a751cb301d05276ae5d75145d57b2d090fe4e1
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) {