From e46155862879868751a13253675626d443650309 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期日, 26 一月 2025 16:49:09 +0800
Subject: [PATCH] 12.18
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 137 ++++++++++++++++++++++++++++++++++++---------
1 files changed, 109 insertions(+), 28 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 952cf22..cfc9dfc 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;
@@ -426,7 +436,7 @@
JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
Integer waitTime = jsonObject.getInteger("waitTime");
redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC));
-
+
JSONObject jsonObject1 = JSON.parseObject(confirmDelivery.getCode());
String com = jsonObject1.getString("com");
String num = jsonObject1.getString("num");
@@ -436,6 +446,10 @@
order.setExpressResult(JSON.toJSONString(mapTrackKD100Vo));
this.updateById(order);
return R.ok();
+ }
+
+ public static void main(String[] args) {
+ System.out.println(LocalDateTime.now().toEpochSecond(ZoneOffset.UTC));
}
@@ -921,13 +935,95 @@
}
}
+ @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 = 1; i <= lastRowNum; i++) {
+ 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)
+ );
+ if (order == null){
+ throw new ServiceException("订单不存在:"+orderNum, 500);
+ }
+
+ Integer orderType = order.getOrderType();
+ if (orderType != 2){
+ throw new ServiceException("该订单:"+orderNum+"类型不为单品订单", 500);
+ }
+ if (order.getDistributionMode() != 2){
+ throw new ServiceException("该订单:"+orderNum+"配送方式不为快递", 500);
+ }
+ Integer orderStatus = order.getOrderStatus();
+ if (orderStatus != 1){
+ throw new ServiceException("该订单:"+orderNum+"状态不为待发货", 500);
+ }
+
+ String companyNameByCode = ExpressCompanyMap.getCodeByCompanyName(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", companyNameByCode);
+ jsonObject.put("num", expressNum);
+ ConfirmDelivery confirmDelivery =new ConfirmDelivery();
+ confirmDelivery.setOrderId(order.getId());
+ confirmDelivery.setCode(jsonObject.toJSONString());
+ confirmDelivery.setDeliverProvince(regionBiCode.getData().getName());
+ confirmDelivery.setDeliverProvinceCode(regionBiCode.getData().getCode());
+ confirmDelivery.setDeliverCity(regionBiCode1.getData().getName());
+ confirmDelivery.setDeliverCityCode(regionBiCode1.getData().getCode());
+ confirmDelivery(confirmDelivery);
+ }
+
+ } 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 +1034,11 @@
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, 1)
- .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());
}
}
+
}
--
Gitblit v1.7.1