| | |
| | | import java.net.URI; |
| | | import java.net.URISyntaxException; |
| | | import java.net.URL; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.time.ZoneId; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.UUID; |
| | | |
| | |
| | | |
| | | |
| | | // 开始时间 |
| | | Cell beginTimeCell = row.getCell(6); |
| | | Cell beginTimeCell = row.getCell(4); |
| | | if (beginTimeCell == null) { |
| | | throw new ServiceException("第" + (i + 1) + "行开始时间为空", 500); |
| | | } |
| | | |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | LocalDateTime beginTime; |
| | | if (beginTimeCell.getCellType() == CellType.NUMERIC || DateUtil.isCellDateFormatted(beginTimeCell)) { |
| | | // 处理数值型日期(包括Excel内置日期格式) |
| | | beginTime = beginTimeCell.getDateCellValue().toInstant() |
| | | .atZone(ZoneId.systemDefault()) |
| | | .toLocalDateTime(); |
| | | } else { |
| | | // 处理文本型日期(如 "2025/4/3 23:25:38") |
| | | String dateStr = beginTimeCell.getStringCellValue().trim(); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/M/d H:mm:ss"); |
| | | beginTime = LocalDateTime.parse(dateStr, formatter); |
| | | try { |
| | | Date startDate = format.parse(beginTimeCell.getStringCellValue()); |
| | | beginTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | // LocalDateTime beginTime; |
| | | // if (beginTimeCell.getCellType() == CellType.NUMERIC || DateUtil.isCellDateFormatted(beginTimeCell)) { |
| | | // // 处理数值型日期(包括Excel内置日期格式) |
| | | // beginTime = beginTimeCell.getDateCellValue().toInstant() |
| | | // .atZone(ZoneId.systemDefault()) |
| | | // .toLocalDateTime(); |
| | | // } else { |
| | | // // 处理文本型日期(如 "2025/4/3 23:25:38") |
| | | // String dateStr = beginTimeCell.getStringCellValue().trim(); |
| | | // DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/M/d H:mm:ss"); |
| | | // beginTime = LocalDateTime.parse(dateStr, formatter); |
| | | // } |
| | | |
| | | // 结束时间 |
| | | Cell endTimeCell = row.getCell(7); |
| | | Cell endTimeCell = row.getCell(5); |
| | | if (endTimeCell == null) { |
| | | throw new ServiceException("第" + (i + 1) + "行开始时间为空", 500); |
| | | } |
| | | |
| | | LocalDateTime endTime; |
| | | if (endTimeCell.getCellType() == CellType.NUMERIC || DateUtil.isCellDateFormatted(endTimeCell)) { |
| | | // 处理数值型日期(包括Excel内置日期格式) |
| | | endTime = endTimeCell.getDateCellValue().toInstant() |
| | | .atZone(ZoneId.systemDefault()) |
| | | .toLocalDateTime(); |
| | | } else { |
| | | // 处理文本型日期(如 "2025/4/3 23:25:38") |
| | | String dateStr = beginTimeCell.getStringCellValue().trim(); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/M/d H:mm:ss"); |
| | | endTime = LocalDateTime.parse(dateStr, formatter); |
| | | try { |
| | | Date startDate = format.parse(endTimeCell.getStringCellValue()); |
| | | endTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | |
| | | // 充电时长 |
| | | if (row.getCell(8 )== null){ |
| | | if (row.getCell(6 )== null){ |
| | | throw new ServiceException("第" + i + "行充电时长为空", 500); |
| | | } |
| | | row.getCell(8).setCellType(CellType.STRING); |
| | | String chargingDuration = row.getCell(8).getStringCellValue(); |
| | | row.getCell(6).setCellType(CellType.STRING); |
| | | String chargingDuration = row.getCell(6).getStringCellValue(); |
| | | |
| | | |
| | | // 充电电量 |
| | | if (row.getCell(9 )== null){ |
| | | if (row.getCell(7 )== null){ |
| | | throw new ServiceException("第" + i + "行充电电量为空", 500); |
| | | } |
| | | row.getCell(9).setCellType(CellType.STRING); |
| | | String chargingCapacity = row.getCell(9).getStringCellValue(); |
| | | row.getCell(7).setCellType(CellType.STRING); |
| | | String chargingCapacity = row.getCell(7).getStringCellValue(); |
| | | |
| | | // 电站运营商 |
| | | if (row.getCell(15 )== null){ |
| | | if (row.getCell(8 )== null){ |
| | | throw new ServiceException("第" + i + "行电站运营商为空", 500); |
| | | } |
| | | row.getCell(15).setCellType(CellType.STRING); |
| | | String powerStationOperator = row.getCell(15).getStringCellValue(); |
| | | row.getCell(8).setCellType(CellType.STRING); |
| | | String powerStationOperator = row.getCell(8).getStringCellValue(); |
| | | |
| | | // 城市名称 |
| | | if (row.getCell(16 )== null){ |
| | | if (row.getCell(9 )== null){ |
| | | throw new ServiceException("第" + i + "行城市名称为空", 500); |
| | | } |
| | | row.getCell(16).setCellType(CellType.STRING); |
| | | String city = row.getCell(16).getStringCellValue(); |
| | | row.getCell(9).setCellType(CellType.STRING); |
| | | String city = row.getCell(9).getStringCellValue(); |
| | | |
| | | // 充电场站 |
| | | if (row.getCell(17 )== null){ |
| | | if (row.getCell(10 )== null){ |
| | | throw new ServiceException("第" + i + "行充电场站为空", 500); |
| | | } |
| | | row.getCell(17).setCellType(CellType.STRING); |
| | | String chargingStation = row.getCell(17).getStringCellValue(); |
| | | row.getCell(10).setCellType(CellType.STRING); |
| | | String chargingStation = row.getCell(10).getStringCellValue(); |
| | | |
| | | // 电站id |
| | | if (row.getCell(18 )== null){ |
| | | if (row.getCell(11 )== null){ |
| | | throw new ServiceException("第" + i + "行电站id为空", 500); |
| | | } |
| | | row.getCell(18).setCellType(CellType.STRING); |
| | | String powerStationId = row.getCell(18).getStringCellValue(); |
| | | row.getCell(11).setCellType(CellType.STRING); |
| | | String powerStationId = row.getCell(11).getStringCellValue(); |
| | | |
| | | // 终端编码 |
| | | if (row.getCell(19 )== null){ |
| | | if (row.getCell(12 )== null){ |
| | | throw new ServiceException("第" + i + "行终端编码为空", 500); |
| | | } |
| | | row.getCell(19).setCellType(CellType.STRING); |
| | | String terminalCode = row.getCell(19).getStringCellValue(); |
| | | row.getCell(12).setCellType(CellType.STRING); |
| | | String terminalCode = row.getCell(12).getStringCellValue(); |
| | | |
| | | // 车牌号 |
| | | if (row.getCell(20 )== null){ |
| | | if (row.getCell(13 )== null){ |
| | | throw new ServiceException("第" + i + "行车牌号为空", 500); |
| | | } |
| | | row.getCell(20).setCellType(CellType.STRING); |
| | | String plateNumber = row.getCell(26).getStringCellValue(); |
| | | row.getCell(13).setCellType(CellType.STRING); |
| | | String plateNumber = row.getCell(13).getStringCellValue(); |
| | | |
| | | // 电站价电费金额 |
| | | if (row.getCell(21 )== null){ |
| | | if (row.getCell(14 )== null){ |
| | | throw new ServiceException("第" + i + "行电站价电费金额为空", 500); |
| | | } |
| | | row.getCell(21).setCellType(CellType.STRING); |
| | | String electricityAmount = row.getCell(21).getStringCellValue(); |
| | | row.getCell(14).setCellType(CellType.STRING); |
| | | String electricityAmount = row.getCell(14).getStringCellValue(); |
| | | |
| | | // 电站价服务费金额 |
| | | if (row.getCell(22 )== null){ |
| | | if (row.getCell(15 )== null){ |
| | | throw new ServiceException("第" + i + "行电站价服务费金额为空", 500); |
| | | } |
| | | row.getCell(22).setCellType(CellType.STRING); |
| | | String serviceAmount = row.getCell(22).getStringCellValue(); |
| | | row.getCell(15).setCellType(CellType.STRING); |
| | | String serviceAmount = row.getCell(15).getStringCellValue(); |
| | | |
| | | // 电站价总金额 |
| | | if (row.getCell(23 )== null){ |
| | | if (row.getCell(16 )== null){ |
| | | throw new ServiceException("第" + i + "行电站价总金额为空", 500); |
| | | } |
| | | row.getCell(23).setCellType(CellType.STRING); |
| | | String totalAmount = row.getCell(23).getStringCellValue(); |
| | | row.getCell(16).setCellType(CellType.STRING); |
| | | String totalAmount = row.getCell(16).getStringCellValue(); |
| | | // 绿电分 |
| | | if (row.getCell(24 )== null){ |
| | | if (row.getCell(17 )== null){ |
| | | throw new ServiceException("第" + i + "行绿电分为空", 500); |
| | | } |
| | | row.getCell(24).setCellType(CellType.STRING); |
| | | String point = row.getCell(24).getStringCellValue(); |
| | | row.getCell(17).setCellType(CellType.STRING); |
| | | String point = row.getCell(17).getStringCellValue(); |
| | | |
| | | |
| | | //检查订单号是否重复 |