puzhibing
2025-01-26 4286e458968ab057d17e3522c7da72e7f58bd4a0
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,13 +1,12 @@
package com.ruoyi.order.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.*;
import com.ruoyi.account.api.model.*;
import com.ruoyi.common.core.constant.ExpressCompanyMap;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
@@ -21,21 +20,29 @@
import com.ruoyi.order.model.OrderBalancePayment;
import com.ruoyi.order.model.OrderGood;
import com.ruoyi.order.model.RefundPass;
import com.ruoyi.order.service.*;
import com.ruoyi.order.service.CommissionService;
import com.ruoyi.order.service.OrderBalancePaymentService;
import com.ruoyi.order.service.OrderService;
import com.ruoyi.order.service.RefundPassService;
import com.ruoyi.order.util.ExpressDeliveryUtil;
import com.ruoyi.order.util.payment.PaymentUtil;
import com.ruoyi.order.util.payment.model.RefundCallbackResult;
import com.ruoyi.order.util.payment.model.RefundResult;
import com.ruoyi.order.util.vo.MapTrackKD100Vo;
import com.ruoyi.order.util.vo.QueryKD100ListVo;
import com.ruoyi.order.util.vo.QueryKD100Vo;
import com.ruoyi.order.vo.*;
import com.ruoyi.other.api.domain.*;
import com.ruoyi.other.api.feignClient.*;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
import org.apache.poi.ss.usermodel.*;
import lombok.SneakyThrows;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -46,6 +53,8 @@
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.MalformedURLException;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
@@ -115,7 +124,9 @@
    
    @Resource
    private UserChangeLogClient userChangeLogClient;
    @Resource
    private RegionClient regionClient;
    
@@ -345,9 +356,24 @@
            List<ShopBalanceStatement> data = shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), Long.valueOf(orderPageListVo.getId())).getData();
            BigDecimal reduce = data.stream().map(ShopBalanceStatement::getVariableAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
            orderPageListVo.setGetCommission(reduce);
            String expressJson = orderPageListVo.getExpressJson();
            if (StringUtils.isNotEmpty(expressJson) && !expressJson.equals("NULL")){
                JSONObject jsonObject = null;
                try {
                    jsonObject = JSONObject.parseObject(expressJson);
                    String companyName = ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com"));
                    orderPageListVo.setExpressCompany(companyName);
                    orderPageListVo.setExpressNum(jsonObject.getString("num"));
                } catch (Exception e) {
                }
            }
        }
        return pageInfo.setRecords(list);
    }
    /**
@@ -905,18 +931,101 @@
        }
    }
    @SneakyThrows
    @Override
    public void importExpress(MultipartFile file) {
        try (InputStream inputStream = file.getInputStream()) {
            Workbook workbook = WorkbookFactory.create(inputStream);
    @Transactional(rollbackFor = Exception.class)
    public void importExpress(String url) {
        URL url1 = new URL(url);
        try (InputStream  fileInputStream = url1.openStream()) {
            Workbook workbook = new XSSFWorkbook(fileInputStream);
            Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
            int lastRowNum = sheet.getLastRowNum();
            for (int i = 2; i <= lastRowNum; i++) {
                Row row = sheet.getRow(i);
                row.getCell(1).setCellType(CellType.STRING);
                String orderNum = row.getCell(1).getStringCellValue();
                // 快递单号
                row.getCell(7).setCellType(CellType.STRING);
                String expressNum = row.getCell(7).getStringCellValue();
                // 快递公司名称
                row.getCell(8).setCellType(CellType.STRING);
                String expressName = row.getCell(8).getStringCellValue();
                // 省区划代码
                row.getCell(10).setCellType(CellType.STRING);
                String provinceCode = row.getCell(10).getStringCellValue();
                // 市区划代码
                row.getCell(12).setCellType(CellType.STRING);
                String cityCode = row.getCell(12).getStringCellValue();
                Order order = this.getOne(new LambdaQueryWrapper<Order>()
                        .eq(Order::getOrderNumber, orderNum)
                        .eq(Order::getOrderType, 2)
                        .eq(Order::getDistributionMode,2)
                        .eq(Order::getOrderStatus, 1)
                );
                if (order == null){
                    throw new ServiceException("订单不存在:"+orderNum, 500);
                }
            for (Row row : sheet) {
//                cell.getStringCellValue()
                System.out.println();
                String companyNameByCode = ExpressCompanyMap.getCompanyNameByCode(expressName);
                if(StringUtils.isEmpty(companyNameByCode)){
                    throw new ServiceException("快递公司编码错误:"+expressName, 500);
                }
                R<Region> regionBiCode = regionClient.getRegionBiCode(provinceCode);
                if (regionBiCode.getData() == null) {
                    throw new ServiceException("省份编码错误:"+provinceCode, 500);
                }
                R<Region> regionBiCode1 = regionClient.getRegionBiCode(cityCode);
                if (regionBiCode1.getData() == null) {
                    throw new ServiceException("城市编码错误:"+cityCode, 500);
                }
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("com", expressName);
                jsonObject.put("num", expressNum);
                order.setExpressJson(jsonObject.toJSONString());
                order.setDeliverProvinceCode(provinceCode);
                order.setDeliverCityCode(cityCode);
                order.setOrderStatus(2);
                this.updateById(order);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
            e.printStackTrace();
            throw new ServiceException(e.getMessage());
        }
    }
    public static void importExpress2(String filePath) throws MalformedURLException {
        // 从网络地址读取
        URL url = new URL(filePath);
        try (InputStream  fileInputStream = url.openStream()) {
            Workbook workbook = new XSSFWorkbook(fileInputStream);
            Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
            int lastRowNum = sheet.getLastRowNum();
            for (int i = 2; i <= lastRowNum; i++) {
                Row row = sheet.getRow(i);
                String orderNum = row.getCell(1).getStringCellValue();
                // 快递单号
                String expressNum = row.getCell(7).getStringCellValue();
                // 快递公司名称
                String expressName = row.getCell(8).getStringCellValue();
                // 省区划代码
                String provinceCode = row.getCell(10).getStringCellValue();
                // 市区划代码
                String cityCode = row.getCell(12).getStringCellValue();
            }
        } catch (IOException e) {
            throw new ServiceException(e.getMessage());
        }
    }
    public static void main(String[] args) throws MalformedURLException {
        importExpress2("http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/admin/69c1fcbe5c114f2a9f38703e4f5e1af0.xlsx");
    }
}