| | |
| | | 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.AppUserClient; |
| | | import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient; |
| | | import com.ruoyi.account.api.feignClient.UserCouponClient; |
| | | import com.ruoyi.account.api.feignClient.UserPointClient; |
| | | 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; |
| | |
| | | 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 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; |
| | | import java.io.IOException; |
| | | 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; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | private UserPointClient userPointClient; |
| | | |
| | | @Resource |
| | | private PointSettingClient pointSettingClient; |
| | | |
| | | @Resource |
| | | private OrderBalancePaymentService orderBalancePaymentService; |
| | | |
| | | @Resource |
| | |
| | | @Resource |
| | | private UserCouponClient userCouponClient; |
| | | |
| | | @Resource |
| | | private UserChangeLogClient userChangeLogClient; |
| | | |
| | | @Resource |
| | | private RegionClient regionClient; |
| | | |
| | | |
| | | |
| | |
| | | if(StringUtils.isNotEmpty(order.getExpressResult())){ |
| | | MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(order.getExpressResult(), MapTrackKD100Vo.class); |
| | | List<QueryKD100ListVo> data = mapTrackKD100Vo.getData(); |
| | | orderDetailVO.setExpress(data.size() > 0 ? data.get(0).getContext() : ""); |
| | | orderDetailVO.setExpress(null != data && data.size() > 0 ? data.get(0).getContext() : ""); |
| | | } |
| | | |
| | | if(order.getOrderType() == 1){ |
| | |
| | | if(StringUtils.isNotEmpty(technicianId) && !"null".equals(technicianId)){ |
| | | order.setTechnicianId(Integer.valueOf(technicianId)); |
| | | } |
| | | // TODO |
| | | orderMapper.updateById(order); |
| | | } |
| | | |
| | |
| | | */ |
| | | @Override |
| | | public PageInfo<OrderPageListVo> getOrderPageList(OrderPageList orderPageList) { |
| | | Long userid = tokenService.getLoginUser().getUserid(); |
| | | SysUser sysUser = sysUserClient.getSysUser(userid).getData(); |
| | | if(2 == sysUser.getRoleType()){ |
| | | Long userId = tokenService.getLoginUser().getUserid(); |
| | | SysUser sysUser = sysUserClient.getSysUser(userId).getData(); |
| | | |
| | | // 设置店铺ID |
| | | if (sysUser.getRoleType() == 2) { |
| | | orderPageList.setShopId(sysUser.getObjectId()); |
| | | } |
| | | //搜索条件,用户姓名 |
| | | 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(null != orderPageList.getAppUserIds()){ |
| | | List<Long> appUserIds = orderPageList.getAppUserIds(); |
| | | appUserIds.addAll(collect); |
| | | orderPageList.setAppUserIds(appUserIds); |
| | | }else{ |
| | | orderPageList.setAppUserIds(collect); |
| | | } |
| | | } |
| | | //搜索条件,用户电话 |
| | | 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(null != orderPageList.getAppUserIds()){ |
| | | List<Long> appUserIds = orderPageList.getAppUserIds(); |
| | | appUserIds.addAll(collect); |
| | | orderPageList.setAppUserIds(appUserIds); |
| | | }else{ |
| | | orderPageList.setAppUserIds(collect); |
| | | } |
| | | } |
| | | |
| | | 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(); |
| | | AppUser appUser = appUserClient.getAppUserById(appUserId); |
| | | if(null != appUser){ |
| | | orderPageListVo.setUserName(appUser.getName()); |
| | | orderPageListVo.setPhone(appUser.getPhone()); |
| | | } |
| | | RefundPass one = refundPassService.getOne(new LambdaQueryWrapper<RefundPass>().eq(RefundPass::getOrderId, orderPageListVo.getId()).eq(RefundPass::getDelFlag, 0).last(" order by create_time desc limit 0,1")); |
| | | orderPageListVo.setRefundPassId(null != one ? one.getId().toString() : null); |
| | | |
| | | // 平台分佣 |
| | | 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); |
| | | } |
| | | // 处理用户姓名搜索条件 |
| | | processAppUserIds(orderPageList, orderPageList.getUserName(), appUserClient::getAppUserByNameNoFilter); |
| | | |
| | | // 处理用户电话搜索条件 |
| | | processAppUserIds(orderPageList, orderPageList.getPhone(), appUserClient::getAppUserByPhoneNoFilter); |
| | | |
| | | // 去重 appUserIds |
| | | Optional.ofNullable(orderPageList.getAppUserIds()) |
| | | .ifPresent(ids -> orderPageList.setAppUserIds(ids.stream().distinct().collect(Collectors.toList()))); |
| | | |
| | | log.error("orderPageList:"+orderPageList.getAppUserIds()); |
| | | // 分页查询订单列表 |
| | | PageInfo<OrderPageListVo> pageInfo = new PageInfo<>(orderPageList.getPageCurr(), orderPageList.getPageSize()); |
| | | List<OrderPageListVo> list = this.baseMapper.getOrderPageList(pageInfo, orderPageList); |
| | | |
| | | // 处理订单列表中的每个订单 |
| | | list.forEach(this::processOrderPageListVo); |
| | | |
| | | return pageInfo.setRecords(list); |
| | | } |
| | | |
| | | |
| | | |
| | | private void processAppUserIds(OrderPageList orderPageList, String searchKey, Function<String, R<List<AppUser>>> userSearchFunction) { |
| | | if (StringUtils.isNotEmpty(searchKey)) { |
| | | List<Long> userIds = Optional.ofNullable(userSearchFunction.apply(searchKey).getData()) |
| | | .orElse(Collections.emptyList()) |
| | | .stream() |
| | | .map(AppUser::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | if (CollectionUtils.isEmpty(userIds)) { |
| | | return; |
| | | } |
| | | |
| | | List<Long> existingUserIds = orderPageList.getAppUserIds(); |
| | | if (existingUserIds != null) { |
| | | if (!containsAny(existingUserIds, userIds)) { |
| | | return; |
| | | } |
| | | existingUserIds.addAll(userIds); |
| | | } else { |
| | | orderPageList.setAppUserIds(userIds); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void processOrderPageListVo(OrderPageListVo orderPageListVo) { |
| | | Long appUserId = orderPageListVo.getAppUserId(); |
| | | Optional.ofNullable(appUserClient.getAppUserById(appUserId)) |
| | | .ifPresent(appUser -> { |
| | | orderPageListVo.setUserName(appUser.getName()); |
| | | orderPageListVo.setPhone(appUser.getPhone()); |
| | | }); |
| | | |
| | | Optional.ofNullable(refundPassService.getOne(new LambdaQueryWrapper<RefundPass>() |
| | | .eq(RefundPass::getOrderId, orderPageListVo.getId()) |
| | | .eq(RefundPass::getDelFlag, 0) |
| | | .orderByDesc(RefundPass::getCreateTime) |
| | | .last("limit 1"))) |
| | | .ifPresent(refundPass -> orderPageListVo.setRefundPassId(refundPass.getId().toString())); |
| | | |
| | | // 平台分佣 |
| | | BigDecimal commission = Optional.ofNullable(shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), Long.valueOf(orderPageListVo.getId())).getData()) |
| | | .orElse(Collections.emptyList()) |
| | | .stream() |
| | | .map(ShopBalanceStatement::getVariableAmount) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | orderPageListVo.setGetCommission(commission); |
| | | |
| | | // 处理快递信息 |
| | | Optional.ofNullable(orderPageListVo.getExpressJson()) |
| | | .filter(expressJson -> !expressJson.equals("NULL")) |
| | | .ifPresent(expressJson -> { |
| | | try { |
| | | JSONObject jsonObject = JSONObject.parseObject(expressJson); |
| | | orderPageListVo.setExpressCompany(ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com"))); |
| | | orderPageListVo.setExpressNum(jsonObject.getString("num")); |
| | | } catch (Exception e) { |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 判断两个列表中是否至少有一个相同的元素 |
| | | * 此方法用于检查两个长整型列表之间的元素交集 |
| | | * 主要解决的问题是确定两个列表是否有共同的元素,用于避免潜在的数据不一致或错误 |
| | | * |
| | | * @param list1 第一个列表,包含一系列长整型数值 |
| | | * @param list2 第二个列表,同样包含一系列长整型数值 |
| | | * @return 返回一个布尔值,如果两个列表中至少有一个相同的元素,则返回true,否则返回false |
| | | */ |
| | | private boolean containsAny(List<Long> list1, List<Long> list2) { |
| | | return list1.stream().anyMatch(list2::contains) || list2.stream().anyMatch(list1::contains); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | 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"); |
| | |
| | | this.updateById(order); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 取消订单操作 |
| | |
| | | BigDecimal balance = appUser.getBalance(); |
| | | if(null != orderBalancePayment){ |
| | | appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN)); |
| | | appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN)); |
| | | // appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN)); |
| | | } |
| | | appUser.setBalance(balance.add(paymentAmount).setScale(2, RoundingMode.HALF_EVEN)); |
| | | appUser.setShopAmount(appUser.getShopAmount().subtract(paymentAmount).setScale(2, RoundingMode.HALF_EVEN)); |
| | |
| | | } |
| | | appUser.setTotalPoint(appUser.getTotalPoint() - shopPoint); |
| | | |
| | | boolean vipDemotion = vipDemotion(appUser.getShopPoint(), appUser.getVipId()); |
| | | if(vipDemotion){ |
| | | appUser.setVipId(appUser.getVipId() - 1); |
| | | } |
| | | |
| | | //构建积分流水明细 |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(1); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(shopPoint); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(order.getAppUserId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | if(shopPoint > 0){ |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(1); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(shopPoint); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(order.getAppUserId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | } |
| | | appUserClient.editAppUserById(appUser); |
| | | |
| | | //降级检测 |
| | | if(1 < appUser.getVipId() && appUser.getVipId() < 4){ |
| | | appUserClient.vipDemotion(appUser.getId()); |
| | | } |
| | | //回退优惠券状态 |
| | | if(null != order.getUserCouponId()){ |
| | | UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData(); |
| | |
| | | BigDecimal balance = appUser.getBalance(); |
| | | if(null != orderBalancePayment){ |
| | | appUser.setTotalRedPacketAmount(appUser.getTotalRedPacketAmount().add(orderBalancePayment.getRedPacketAmount()).setScale(2, RoundingMode.HALF_EVEN)); |
| | | appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN)); |
| | | // appUser.setTotalDistributionAmount(appUser.getTotalDistributionAmount().add(orderBalancePayment.getDistributionAmount()).setScale(2, RoundingMode.HALF_EVEN)); |
| | | } |
| | | appUser.setBalance(balance.add(expressAmount).setScale(2, RoundingMode.HALF_EVEN)); |
| | | //构建账户余额流水明细 |
| | |
| | | appUser.setTransferablePoint(appUser.getTransferablePoint() + transferablePoint); |
| | | |
| | | //构建积分流水明细 |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(11); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(order.getPoint()); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(order.getAppUserId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | if(order.getPoint() > 0){ |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(11); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(order.getPoint()); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(order.getAppUserId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | } |
| | | appUserClient.editAppUserById(appUser); |
| | | } |
| | | |
| | |
| | | } |
| | | appUser.setTotalPoint(appUser.getTotalPoint() - shopPoint); |
| | | |
| | | boolean vipDemotion = vipDemotion(appUser.getShopPoint(), appUser.getVipId()); |
| | | if(vipDemotion){ |
| | | appUser.setVipId(appUser.getVipId() - 1); |
| | | } |
| | | |
| | | //构建积分流水明细 |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(1); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(shopPoint); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(order.getAppUserId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | if(shopPoint > 0){ |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(1); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(shopPoint); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(order.getAppUserId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | } |
| | | appUserClient.editAppUserById(appUser); |
| | | |
| | | //降级检测 |
| | | if(1 < appUser.getVipId() && appUser.getVipId() < 4){ |
| | | appUserClient.vipDemotion(appUser.getId()); |
| | | } |
| | | |
| | | //回退优惠券状态 |
| | | if(null != order.getUserCouponId()){ |
| | |
| | | appUser.setTransferablePoint(appUser.getTransferablePoint() + transferablePoint); |
| | | |
| | | //构建积分流水明细 |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(11); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(order.getPoint()); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(order.getAppUserId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | if(order.getPoint() > 0){ |
| | | UserPoint userPoint = new UserPoint(); |
| | | userPoint.setType(11); |
| | | userPoint.setHistoricalPoint(lavePoint); |
| | | userPoint.setVariablePoint(order.getPoint()); |
| | | userPoint.setBalance(appUser.getLavePoint()); |
| | | userPoint.setCreateTime(LocalDateTime.now()); |
| | | userPoint.setAppUserId(order.getAppUserId()); |
| | | userPoint.setObjectId(order.getId()); |
| | | userPointClient.saveUserPoint(userPoint); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 会员降级检测 |
| | | */ |
| | | public boolean vipDemotion(Integer shopPoint, Integer vipId){ |
| | | if(vipId == 1 || vipId > 3){ |
| | | return false; |
| | | } |
| | | VipSetting vipSetting = vipSettingClient.getVipSetting(vipId).getData(); |
| | | Integer vipLevelUpShopRole = vipSetting.getVipLevelUpShopRole(); |
| | | Integer vipLevelUpShop = vipSetting.getVipLevelUpShop(); |
| | | return 1 == vipLevelUpShopRole && shopPoint < vipLevelUpShop; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | } |
| | | List<OrderGood> orderGoods = orderGoodMapper.selectList(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0)); |
| | | int sum = orderGoods.stream().mapToInt(OrderGood::getNum).sum(); |
| | | System.out.println("111111111111222"); |
| | | orderInfo.setGoodsNum(sum); |
| | | List<Object> goodsJson = new ArrayList<>(); |
| | | for (OrderGood orderGood : orderGoods) { |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Integer getGoodsSaleNum(Integer goodsId, Integer type) { |
| | | return this.baseMapper.getGoodsSaleNum(goodsId, type); |
| | | public Integer getGoodsSaleNum(Integer goodsId, Integer type, Long userId) { |
| | | return this.baseMapper.getGoodsSaleNum(goodsId, type, userId); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @SneakyThrows |
| | | @Override |
| | | @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(); |
| | | // 快递单号 |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | | } |