From 4ea15c3e2a3f0434df79a1b49fe4e90f7337b025 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 06 二月 2025 18:16:40 +0800 Subject: [PATCH] 修改物流信息导入模板 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 166 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 132 insertions(+), 34 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 3eac7b1..41cf60b 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,24 +20,33 @@ 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; +import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -47,6 +54,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 +125,9 @@ @Resource private UserChangeLogClient userChangeLogClient; - + + @Resource + private RegionClient regionClient; @@ -308,6 +319,9 @@ if(StringUtils.isNotEmpty(orderPageList.getUserName())){ List<AppUser> data = appUserClient.getAppUserByName(orderPageList.getUserName()).getData(); List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(collect)){ + return new PageInfo<>(); + } if(null != orderPageList.getAppUserIds()){ List<Long> appUserIds = orderPageList.getAppUserIds(); appUserIds.addAll(collect); @@ -320,6 +334,9 @@ if(StringUtils.isNotEmpty(orderPageList.getPhone())){ List<AppUser> data = appUserClient.getAppUserByPhone(orderPageList.getPhone()).getData(); List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(collect)){ + return new PageInfo<>(); + } if(null != orderPageList.getAppUserIds()){ List<Long> appUserIds = orderPageList.getAppUserIds(); appUserIds.addAll(collect); @@ -328,9 +345,11 @@ orderPageList.setAppUserIds(collect); } } + + - PageInfo<OrderPageListVo> pageInfo = new PageInfo(orderPageList.getPageCurr(), orderPageList.getPageSize()); - + PageInfo<OrderPageListVo> pageInfo = new PageInfo<>(orderPageList.getPageCurr(), orderPageList.getPageSize()); + List<OrderPageListVo> list = this.baseMapper.getOrderPageList(pageInfo, orderPageList); for (OrderPageListVo orderPageListVo : list) { Long appUserId = orderPageListVo.getAppUserId(); @@ -348,15 +367,22 @@ orderPageListVo.setGetCommission(reduce); String expressJson = orderPageListVo.getExpressJson(); - // {"com":"zhongtong","num":"78853319672621"} - JSONObject jsonObject = JSONObject.parseObject(expressJson); + 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) { + } - String companyName = ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com")); - orderPageListVo.setExpressCompany(companyName); - orderPageListVo.setExpressNum(jsonObject.getString("num")); + } + } return pageInfo.setRecords(list); } + /** @@ -419,7 +445,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"); @@ -429,6 +455,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)); } @@ -914,13 +944,96 @@ } } + @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++) { + Row row = sheet.getRow(i); + // 订单编号 + row.getCell(0).setCellType(CellType.STRING); + String orderNum = row.getCell(0).getStringCellValue(); + // 快递单号 + row.getCell(1).setCellType(CellType.STRING); + String expressNum = row.getCell(1).getStringCellValue(); + // 快递公司名称 + row.getCell(2).setCellType(CellType.STRING); + String expressName = row.getCell(2).getStringCellValue(); + // 省区划代码 + row.getCell(3).setCellType(CellType.STRING); + String provinceCode = row.getCell(3).getStringCellValue(); + // 市区划代码 + row.getCell(4).setCellType(CellType.STRING); + String cityCode = row.getCell(4).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(); // 快递单号 @@ -931,26 +1044,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