无关风月
2025-08-25 48d3f1b77adea0609bb2453c7b4a660f2222871f
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ChargeOrderServiceImpl.java
@@ -17,6 +17,7 @@
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.dto.GetImportOrderDTO;
import com.ruoyi.order.mapper.ChargeOrderMapper;
import com.ruoyi.order.mapper.OrderMapper;
@@ -51,11 +52,14 @@
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;
@@ -135,127 +139,130 @@
                // 开始时间
                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();
                //检查订单号是否重复
@@ -307,7 +314,7 @@
            throw new ServiceException(e.getMessage());
        }
        if(!result.isEmpty()){
            return R.ok(result);
            return R.fail(result);
        }
        return R.ok();
    }
@@ -378,6 +385,9 @@
                sysUserClient.updateSysUser(sysUser);
            }
        }
        //保存到数据库
        chargeOrder.setPoint(point);
        chargeOrderService.save(chargeOrder);
        //添加用户积分流水
        //转入用户
        UserPoint userPoint = new UserPoint();
@@ -392,9 +402,7 @@
        if (r.isError(r)) {
            return R.fail("导入订单-保存用户积分流水失败");
        }
        //保存到数据库
        chargeOrder.setPoint(point);
        chargeOrderService.save(chargeOrder);
        return R.ok();
    }