| | |
| | | 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.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 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; |
| | |
| | | |
| | | @Resource |
| | | private UserChangeLogClient userChangeLogClient; |
| | | |
| | | |
| | | @Resource |
| | | private RegionClient regionClient; |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | return pageInfo.setRecords(list); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | 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"); |
| | |
| | | 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)); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | @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(); |
| | | // 快递单号 |
| | |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | | } |