EsayPoi导入导出表格

/**
     * 导出 excel表格
     *
     * @param spacecraftId
     */
    @Override
    public CheckResult exportParamExcel(Long spacecraftId, HttpServletResponse response) {
        Map<String, Object> parameterMap = new HashMap<>(5);
        parameterMap.put("spacecraftId", spacecraftId);
        parameterMap.put("groupIds", -1);
        parameterMap.put("paramType", -1);
        parameterMap.put("values", -1);
        List<SpacecraftTelemetryParam> spacecraftTelemetryParamList = selectByGroupId(parameterMap);
        if (spacecraftTelemetryParamList.isEmpty()) {
            log.info(MsgPrefixKit.genMgt("没查到该飞行器下的参数信息"));
            return CheckResult.fail("没有对应的文件,导出失败");
        }
        List<SpacecraftTelemetryParamExcel> list = new ArrayList<>(spacecraftTelemetryParamList.size());
        //导出  表格数据拼写
        for (int i = 0; i < spacecraftTelemetryParamList.size(); i++) {
            SpacecraftTelemetryParamExcel spacecraftTelemetryParamExcel = new SpacecraftTelemetryParamExcel();
            BeanUtil.copyProperties(spacecraftTelemetryParamList.get(i), spacecraftTelemetryParamExcel);
            SpacecraftTelemetryFrame spacecraftTelemetryFrame = telemetryFrameService.selectBySpacecraftId(spacecraftTelemetryParamList.get(i).getSpacecraftId());
            spacecraftTelemetryParamExcel.setTelemetryDataName(spacecraftTelemetryFrame.getTelemetryFormat());
            list.add(spacecraftTelemetryParamExcel);
        }
        ExportParams exportParams = new ExportParams();
        exportParams.setSheetName("遥测参数");
        // 生成workbook 并导出
        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, SpacecraftTelemetryParamExcel.class, list);
        // 组装excel文件name
        Spacecraft spacecraft = spacecraftService.selectById(spacecraftId);
        String dateName = DateUtil.format(new Date(), "yyyyMMddHHmmss");
        String fileName = spacecraft.getSpacecraftName() + "遥测参数" + dateName;
        
        // 下载excel
        outPut(response, fileName, workbook);

        //TODO: 目录桌面  后期修改
//        File savefile = new File("C:\\Users\\Administrator\\Desktop\\Ceshi.xlsx");
//        if (!savefile.exists()) {
//            boolean result = savefile.mkdirs();
//            System.out.println("目录不存在,创建" + result);
//        }
//        FileOutputStream fos = null;
//        try {
//            fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\" + spacecraftId + ".xlsx");
//            workbook.write(fos);
//            fos.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return CheckResult.fail("导出异常失败");
//        }
        return CheckResult.success("导出成功");
    }



/**
     * 导入 excel表格
     *
     * @param spacecraftId
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public CheckResult input(MultipartFile file, Long spacecraftId) {
        ImportParams importParams = new ImportParams();
        // 因为Excel是从第2行开始才有正式数据,所以我们这里从第1行开始读取数据
        importParams.setHeadRows(1);
        // 需要校验
        importParams.setNeedVerify(true);
        // 获取模板
        ExcelImportResult<SpacecraftTelemetryParamExcel> data = new ExcelImportResult<>();
        try {
            data = ExcelImportUtil.importExcelMore(file.getInputStream(), SpacecraftTelemetryParamExcel.class, importParams);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        // 获取模板数据(通过校验的数据)
        List<SpacecraftTelemetryParamExcel> successList = data.getList();
        if (successList.size() == 0) {
            // 如果数据量为0直接返回错误信息,不继续执行
            log.info(MsgPrefixKit.genMgt("错误信息,不继续执行"));
            return CheckResult.fail("错误信息,不继续执行");
        }
        // 校验失败的数据集合
        List<SpacecraftTelemetryParamExcel> failList = data.getFailList();
        if (failList.size() > 0) {
            // 如果此数据量大于0,直接返回错误信息
            log.info(MsgPrefixKit.genMgt("有" + data.getFailList().size() + "条数据不合格,无法导入"));
        }
        // 循环数据
        List<SpacecraftTelemetryParamExcel> spacecraftTelemetryParamExcels = new ArrayList<>(successList);
        List<SpacecraftTelemetryParam> spacecraftTelemetryParamList = new ArrayList<>();
        for (SpacecraftTelemetryParamExcel spacecraftTelemetryParamExcel : spacecraftTelemetryParamExcels) {
            SpacecraftTelemetryParam spacecraftTelemetryParam = new SpacecraftTelemetryParam();
            BeanUtil.copyProperties(spacecraftTelemetryParamExcel, spacecraftTelemetryParam);
            SpacecraftTelemetryFrame spacecraftTelemetryFrame = telemetryFrameService.selectBySpacecraftId(spacecraftId);
            spacecraftTelemetryParam.setTelemetryDataId(spacecraftTelemetryFrame.getTelemetryDataId());
            spacecraftTelemetryParam.setSpacecraftId(spacecraftId);
            spacecraftTelemetryParamList.add(spacecraftTelemetryParam);
        }
        Spacecraft spacecraft = spacecraftService.selectById(spacecraftId);
        if (spacecraft == null) {
            return CheckResult.fail("传入的飞行器id不正确");
        }
        //TODO: 2 没有修改和删除  查询参数识别码看是否有此数据 ,有修改 没有添加
        for (SpacecraftTelemetryParam spacecraftTelemetryParam : spacecraftTelemetryParamList) {
            SpacecraftTelemetryParam telemetryParam = selectIdentificationWord(spacecraftTelemetryParam.getParamIdentificationWord(), spacecraftId);
            if (telemetryParam == null) {
                insert(spacecraftTelemetryParam);
//            } else {
//                spacecraftTelemetryParam.setSpacecraftParamId(telemetryParam.getSpacecraftParamId());
//                updateByPrimaryKey(spacecraftTelemetryParam);
            }
        }

        //TODO: 1 没有修改和删除  查询主键看是否有此数据 , 没有添加
//        for (SpacecraftTelemetryParam spacecraftTelemetryParam : spacecraftTelemetryParamList) {
//
//            SpacecraftTelemetryParam telemetryParam = selectById(spacecraftTelemetryParam.getSpacecraftParamId());
//            if (telemetryParam == null) {
//                insert(spacecraftTelemetryParam);
//            }
//        }
        return CheckResult.success(spacecraftTelemetryParamList);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值