|  |  | 
 |  |  | 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; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 高新区导入 | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public ExcelBO importTemplate(List<MultipartFile> files, Map<String, Object> params) throws IOException { | 
 |  |  |         Date date2 = new Date(); | 
 |  |  |         String time = (String) params.get("time"); | 
 |  |  |         String code = (String) params.get("code"); | 
 |  |  |         String time1 = (String) params.get("date"); | 
 |  |  | //        String time1 = (String) params.get("date"); | 
 |  |  |         Date date = DateUtils.getDate(time, "yyyy-MM-dd"); | 
 |  |  |         Date date1 = DateUtils.getDate(time1, "yyyy-MM-dd"); | 
 |  |  | //        Date date1 = DateUtils.getDate(time1, "yyyy-MM-dd"); | 
 |  |  |         ExcelBO excelBO = new ExcelBO(); | 
 |  |  |         QueryWrapper<TbExcel> wrapper = new QueryWrapper<>(); | 
 |  |  |         wrapper.eq("time",date).eq("code",code); | 
 |  |  | 
 |  |  |             excel1.setValue(s); | 
 |  |  |             excel1.setTime(date); | 
 |  |  |             excel1.setCode(code); | 
 |  |  |             excel1.setDate(date1); | 
 |  |  |             excel1.setDate(date2); | 
 |  |  |             excelMapper.insert(excel1); | 
 |  |  |             excelBO.setId(excel1.getId()); | 
 |  |  |             excelBO.setTime(excel1.getTime()); | 
 |  |  |             excelBO.setDate(excel1.getDate()); | 
 |  |  |             excelBO.setDate(date2); | 
 |  |  |  | 
 |  |  |         }else { | 
 |  |  |             HashMap<String, Object> map = new HashMap<>(); | 
 |  |  | 
 |  |  |             excelMapper.updateById(excel); | 
 |  |  |             excelBO.setId(excel.getId()); | 
 |  |  |             excelBO.setTime(excel.getTime()); | 
 |  |  |             excelBO.setDate(excel.getDate()); | 
 |  |  |             excelBO.setDate(date2); | 
 |  |  |         } | 
 |  |  |         return excelBO; | 
 |  |  |     } | 
 |  |  | 
 |  |  |                 Map map5 = JSON.parseObject(s, Map.class); | 
 |  |  |                 Set set1s = map5.keySet(); | 
 |  |  |                 for (Object set1 : set1s) { | 
 |  |  |                     Object o1 = map5.get(set1); | 
 |  |  |                     String s1 = JSON.toJSONString(o1); | 
 |  |  |                     Map map6 = JSON.parseObject(s1, Map.class); | 
 |  |  |                     map6.put("place",set1); | 
 |  |  |                     list3.add(map6); | 
 |  |  |                     if (set1.equals("高新区")){ | 
 |  |  |                         Object o1 = map5.get(set1); | 
 |  |  |                         String s1 = JSON.toJSONString(o1); | 
 |  |  |                         Map map6 = JSON.parseObject(s1, Map.class); | 
 |  |  |                         map6.put("place","国控站"); | 
 |  |  |                         list3.add(map6); | 
 |  |  |                     }else { | 
 |  |  |                         Object o1 = map5.get(set1); | 
 |  |  |                         String s1 = JSON.toJSONString(o1); | 
 |  |  |                         Map map6 = JSON.parseObject(s1, Map.class); | 
 |  |  |                         map6.put("place",set1.toString().substring(3)); | 
 |  |  |                         list3.add(map6); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if (set.equals("c4")){ | 
 |  |  | 
 |  |  |         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); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |                 objects[j] = value; | 
 |  |  |             } | 
 |  |  |             HashMap<String, Object> map = new HashMap<>(); | 
 |  |  |             map.put("place", objects[0]); | 
 |  |  |             if (objects[0].toString().equals("高新区")){ | 
 |  |  |                 map.put("place", "国控站"); | 
 |  |  |             }else { | 
 |  |  |                 map.put("place",objects[0].toString().substring(3)); | 
 |  |  |             } | 
 |  |  |             map.put("日期", objects[1]); | 
 |  |  |             map.put("SO2", objects[2]); | 
 |  |  |             map.put("SO2分指数", objects[3]); |