cjl
2023-11-08 0e4aa8d08a3bf8e8683d05081baefdbf96ce080f
screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java
@@ -1,6 +1,7 @@
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;
@@ -11,7 +12,6 @@
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;
@@ -25,12 +25,13 @@
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;
@@ -41,10 +42,14 @@
@Service
@Slf4j
public class ExcelServiceImpl implements ExcelService {
    @Autowired
    private ExcelMapper excelMapper;
    @Autowired
    private HistoryDailyMapper  historyDailyMapper;
    /**
     * 高新区导入
@@ -377,8 +382,10 @@
        if (Double.parseDouble(CO)<4){
            count++;
        }
        if (Double.parseDouble(O8)<160){
            count++;
        if (!O8.equals("--")) {
            if (Double.parseDouble(O8) < 160) {
                count++;
            }
        }
@@ -452,6 +459,126 @@
        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=null;
            if (time.length()>20){
                date = DateUtils.dateStringToDate(time);
            }else {
                date = DateUtils.getDate(time, DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
            }
            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) == '、') {