From 8b73b81f3cbbf3c7b2d45b631182f629c81afc25 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期日, 26 一月 2025 14:20:39 +0800
Subject: [PATCH] 12.18

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |  121 +++++++++++++++++++++++++++++++---------
 1 files changed, 94 insertions(+), 27 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index f6062ef..d385ba9 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,10 +1,8 @@
 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.*;
@@ -22,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;
@@ -47,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;
@@ -116,7 +124,9 @@
     
     @Resource
     private UserChangeLogClient userChangeLogClient;
-    
+
+    @Resource
+    private RegionClient regionClient;
     
 
 
@@ -921,13 +931,82 @@
         }
     }
 
+    @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 SXSSFWorkbook(new XSSFWorkbook(fileInputStream));
             Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
             int lastRowNum = sheet.getLastRowNum();
-            for (int i = 1; i <= lastRowNum; i++) {
+            for (int i = 2; i <= lastRowNum; i++) {
+                Row row = sheet.getRow(i);
+                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);
+                }
+
+                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) {
+            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();
                 // 快递单号
@@ -938,26 +1017,14 @@
                 String provinceCode = row.getCell(10).getStringCellValue();
                 // 市区划代码
                 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){
-                    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);
+            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");
+    }
 }

--
Gitblit v1.7.1