|  |  | 
 |  |  | package com.moral.api.service.impl; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.poi.hssf.usermodel.HSSFRow; | 
 |  |  | import org.apache.poi.hssf.usermodel.HSSFSheet; | 
 |  |  | import org.apache.poi.hssf.usermodel.HSSFWorkbook; | 
 |  |  | 
 |  |  | import org.springframework.beans.BeanUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.util.ObjectUtils; | 
 |  |  | import org.springframework.web.multipart.MultipartFile; | 
 |  |  |  | 
 |  |  | import java.io.IOException; | 
 |  |  | 
 |  |  | import java.util.Map; | 
 |  |  | import java.util.Set; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSON; | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | import com.moral.api.entity.HistoryDaily; | 
 |  |  | import com.moral.api.entity.TbExcel; | 
 |  |  | import com.moral.api.mapper.ExcelMapper; | 
 |  |  | import com.moral.api.mapper.HistoryDailyMapper; | 
 |  |  | import com.moral.api.pojo.bo.ExcelBO; | 
 |  |  |  | 
 |  |  | import com.moral.api.pojo.vo.excel.ExcelVo; | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | @Service | 
 |  |  | @Slf4j | 
 |  |  | public class ExcelServiceImpl implements ExcelService { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ExcelMapper excelMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private HistoryDailyMapper  historyDailyMapper; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 高新区导入 | 
 |  |  | 
 |  |  |         if (Double.parseDouble(CO)<4){ | 
 |  |  |             count++; | 
 |  |  |         } | 
 |  |  |         if (Double.parseDouble(O8)<160){ | 
 |  |  |             count++; | 
 |  |  |         if (!O8.equals("--")) { | 
 |  |  |             if (Double.parseDouble(O8) < 160) { | 
 |  |  |                 count++; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |         return excelBOS; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 天数据补充 | 
 |  |  |      * @param files | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public void rexcelImport(List<MultipartFile> files) throws IOException { | 
 |  |  |         MultipartFile file = files.get(0); | 
 |  |  |         XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream()); | 
 |  |  | //        HashMap<String, Object> rsMap = new HashMap<>(); | 
 |  |  |         ArrayList<Map<String, Object>> list = new ArrayList<>(); | 
 |  |  |         XSSFSheet sheetAt = workbook.getSheetAt(0); | 
 |  |  |         //一共有多少行 | 
 |  |  |         int lastRowNum = sheetAt.getLastRowNum(); | 
 |  |  |         for (int i = 1; i <= lastRowNum; i++) { | 
 |  |  |             XSSFRow row = sheetAt.getRow(i); | 
 |  |  |             if (row == null) { | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             short lastCellNum = row.getLastCellNum(); | 
 |  |  | //            if (lastCellNum < 10) { | 
 |  |  | //                continue; | 
 |  |  | //            } | 
 |  |  |             Object[] objects = new Object[lastCellNum]; | 
 |  |  |             for (int j = 0; j < lastCellNum; j++) { | 
 |  |  |                 Cell cell = row.getCell(j); | 
 |  |  |                 Object value = ExcelUtils.getValue(cell); | 
 |  |  |                 objects[j] = value; | 
 |  |  |             } | 
 |  |  |             HashMap<String, Object> map = new HashMap<>(); | 
 |  |  |             map.put("mac", objects[0]); | 
 |  |  |             map.put("time", objects[1]); | 
 |  |  |             // pm2.5 | 
 |  |  |             if (!objects[2].toString().equals("-")){ | 
 |  |  |                 map.put("a34004", objects[2]); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             // pm10 | 
 |  |  |             if (!objects[3].toString().equals("-")){ | 
 |  |  |                 map.put("a34002", objects[3]); | 
 |  |  |             } | 
 |  |  |             // 二氧化硫 | 
 |  |  |             if (!objects[4].toString().equals("-")){ | 
 |  |  |                 map.put("a21026", objects[4]); | 
 |  |  |             } | 
 |  |  |             // 二氧化氮 | 
 |  |  |             if (!objects[5].toString().equals("-")){ | 
 |  |  |                 map.put("a21004", objects[5]); | 
 |  |  |             } | 
 |  |  |             // co | 
 |  |  |             if (!objects[6].toString().equals("-")){ | 
 |  |  |                 map.put("a21005", objects[6]); | 
 |  |  |             } | 
 |  |  |             // o3 | 
 |  |  |             if (!objects[7].toString().equals("-")){ | 
 |  |  |                 map.put("a05024", objects[7]); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             // 温度 | 
 |  |  |             if (!objects[8].toString().equals("-")){ | 
 |  |  |                 map.put("a01001", objects[8]); | 
 |  |  |             } | 
 |  |  |             // 湿度 | 
 |  |  |             if (!objects[9].toString().equals("-")){ | 
 |  |  |                 map.put("a01002", objects[9]); | 
 |  |  |             } | 
 |  |  |             // 风速 | 
 |  |  |             if (!objects[10].toString().equals("-")){ | 
 |  |  |                 map.put("a01007", objects[10]); | 
 |  |  |             } | 
 |  |  |             // 风向 | 
 |  |  |             if (!objects[11].toString().equals("-")){ | 
 |  |  |                 map.put("a01008", objects[11]); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             // 气压 | 
 |  |  |             if (!objects[12].toString().equals("-")){ | 
 |  |  |                 map.put("a01006", objects[12]); | 
 |  |  |             } | 
 |  |  |             // 光照强度 | 
 |  |  |             if (!objects[13].toString().equals("-")){ | 
 |  |  |                 map.put("a00e12", objects[13]); | 
 |  |  |             } | 
 |  |  |             // tvoc | 
 |  |  |             if (!objects[14].toString().equals("-")){ | 
 |  |  |                 map.put("a99054", objects[14]); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  | //            map.put("颗粒物0.3", objects[15]); | 
 |  |  | //            map.put("颗粒物2.5", objects[16]); | 
 |  |  | //            map.put("硫化氢", objects[17]); | 
 |  |  | //            map.put("氨气", objects[18]); | 
 |  |  | //            map.put("苯", objects[19]); | 
 |  |  | //            map.put("甲苯", objects[20]); | 
 |  |  | //            map.put("二甲苯", objects[21]); | 
 |  |  | //            map.put("非甲烷总烃", objects[22]); | 
 |  |  |             list.add(map); | 
 |  |  |         } | 
 |  |  | //        ArrayList<HistoryDaily> rsList = new ArrayList<>(); | 
 |  |  |         for (Map<String, Object> map : list) { | 
 |  |  |             HistoryDaily historyDaily = new HistoryDaily(); | 
 |  |  |             String time = map.remove("time").toString(); | 
 |  |  |             Date date = DateUtils.dateStringToDate(time); | 
 |  |  |             String mac = map.remove("mac").toString(); | 
 |  |  |             String value = JSONObject.toJSONString(map); | 
 |  |  |             historyDaily.setMac(mac); | 
 |  |  |             historyDaily.setTime(date); | 
 |  |  |             historyDaily.setValue(value); | 
 |  |  | //            log.info(historyDaily.getValue()); | 
 |  |  |             historyDailyMapper.insert(historyDaily); | 
 |  |  | //            rsList.add(historyDaily); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private String getBuilder(StringBuilder sb) { | 
 |  |  |         if (sb.length() > 0 && sb.charAt(sb.length() - 1) == '、') { |