lubo hace 3 meses
padre
commit
8211f31a55

+ 28 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/order/ShopOrderController.java

@@ -21,13 +21,19 @@ import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.enums.FilePathSplicingType;
 import com.ruoyi.common.filepathsplicing.FilePathSplicing;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.shop.order.domain.bo.BusinessCountBo;
 import com.ruoyi.shop.order.domain.bo.ShopOrderBo;
 import com.ruoyi.shop.order.domain.bo.ShopOrderBusinessRemarkBo;
 import com.ruoyi.shop.order.domain.vo.*;
 import com.ruoyi.common.enums.order.OrderType;
+import com.ruoyi.shop.order.enums.CancellationMethod;
+import com.ruoyi.shop.order.enums.ShippingMethod;
+import com.ruoyi.shop.order.enums.ShippingStatus;
 import com.ruoyi.shop.order.enums.TransactionStatus;
 import com.ruoyi.shop.order.service.IShopOrderService;
+import com.ruoyi.shop.product.domain.bo.ProductBo;
+import com.ruoyi.shop.product.domain.vo.ProductVo;
 import com.ruoyi.shop.rights.service.ISaleRightsOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -532,7 +538,7 @@ public class ShopOrderController extends BaseController {
     @ApiOperation("平台导出订单列表")
     @SaCheckPermission("order:shopOrder:export")
     @Log(title = "订单", businessType = BusinessType.EXPORT)
-    @GetMapping("/export")
+    @PostMapping("/export")
     public void export(@Validated ShopOrderBo bo, HttpServletResponse response) throws Exception {
         exportHandle(bo, response);
     }
@@ -543,19 +549,38 @@ public class ShopOrderController extends BaseController {
     @ApiOperation("店铺导出订单列表")
     @SaCheckPermission("order:shopOrder:businessExport")
     @Log(title = "订单", businessType = BusinessType.EXPORT)
-    @GetMapping("/businessExport")
+    @PostMapping("/businessExport")
     public void businessExport(@Validated ShopOrderBo bo, HttpServletResponse response) throws Exception {
         bo.setBusinessId(getBusinessId(true));
         exportHandle(bo, response);
     }
 
+    /**
+     * 店铺导出待发货列表
+     */
+    @ApiOperation("店铺导出待发货列表")
+    @SaCheckPermission("product:product:businessWaitExport")
+    @Log(title = "产品", businessType = BusinessType.EXPORT)
+    @PostMapping("/businessWaitExport")
+    public void businessWaitExport(@Validated ShopOrderBo bo, HttpServletResponse response) {
+        bo.setBusinessId(getBusinessId(true));
+        bo.setTransactionStatus(TransactionStatus.WAIT_DELIVER);
+        bo.setOrderType(OrderType.NORMAL);
+        bo.setShippingMethod(ShippingMethod.NORMAL_EXPRESS);
+        bo.setShippingStatus(ShippingStatus.WAIT_SHIP);
+        bo.setEffective(true);
+        bo.setCancellationMethod((CancellationMethod.UNCANCELED));
+        List<ShopOrderWaitShipVo> list = iShopOrderService.businessWaitExport(bo);
+        ExcelUtil.exportExcel(list, "待发货列表", ShopOrderWaitShipVo.class, response);
+    }
+
     /**
      * 总店导出连锁店订单列表
      */
     @ApiOperation("导出订单列表")
     @SaCheckPermission("order:shopOrder:chainExport")
     @Log(title = "订单", businessType = BusinessType.EXPORT)
-    @GetMapping("/chainExport")
+    @PostMapping("/chainExport")
     public void chainExport(@Validated ShopOrderBo bo, HttpServletResponse response) throws Exception {
         if(bo.getBusinessId() == null) {
             List<Long> ids = iBusinessService.queryBusinessIdsByBusinessId(getBusinessId(true));

+ 7 - 2
ruoyi-shop/src/main/java/com/ruoyi/shop/freightTemplate/domain/FreightTemplate.java

@@ -134,8 +134,13 @@ public class FreightTemplate extends BaseEntity {
         }
         else
         {
-            BigDecimal round = new BigDecimal(Math.round(tempValue.doubleValue() / matchRule.getContinued().doubleValue()));
-            BigDecimal continuedFreight = MathUtils.multiply(matchRule.getContinuedFreight(),round);
+            long round = Math.round(tempValue.doubleValue() / matchRule.getContinued().doubleValue());
+            BigDecimal tempVa = MathUtils.setScale(tempValue.doubleValue() % matchRule.getContinued().doubleValue());
+            if(tempVa.compareTo(BigDecimal.ZERO)>0)
+            {
+                round++;
+            }
+            BigDecimal continuedFreight = MathUtils.multiply(matchRule.getContinuedFreight(),BigDecimal.valueOf(round));
             return MathUtils.add(startFreight,continuedFreight);
         }
     }

+ 2 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/vo/ShopOrderPackageVo.java

@@ -153,4 +153,6 @@ public class ShopOrderPackageVo extends BaseVo {
 
 
 
+
+
 }

+ 3 - 3
ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/vo/ShopOrderVo.java

@@ -109,7 +109,7 @@ public class ShopOrderVo extends BaseVo {
     /**
      * 用户名称
      */
-    @Excel(name = "用户手机号", orderNum = "5", width = 15D, needMerge = true)
+    @Excel(name = "用户名称", orderNum = "5", width = 15D, needMerge = true)
     @ExcelProperty(value = "用户名称")
     @ApiModelProperty("用户名称")
     private String userName;
@@ -370,8 +370,8 @@ public class ShopOrderVo extends BaseVo {
      * 赠送返否积分
      */
     @Excel(name = "可赠送积分", orderNum = "26", width = 15D, needMerge = true)
-    @ExcelProperty(value = "赠送返否积分")
-    @ApiModelProperty("赠送返否积分")
+    @ExcelProperty(value = "赠送积分")
+    @ApiModelProperty("赠送积分")
     private BigDecimal givePoint;
 
 

+ 289 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/vo/ShopOrderWaitShipVo.java

@@ -0,0 +1,289 @@
+package com.ruoyi.shop.order.domain.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
+import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.business.domain.vo.BusinessVo;
+import com.ruoyi.business.service.IBusinessService;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelBooleanConvert;
+import com.ruoyi.common.convert.ExcelDateTimeConvert;
+import com.ruoyi.common.convert.ExcelEnumConvert;
+import com.ruoyi.common.core.domain.BaseVo;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.enums.CallInterfaceStatus;
+import com.ruoyi.common.enums.order.MarketingType;
+import com.ruoyi.common.enums.order.OrderType;
+import com.ruoyi.common.filepathsplicing.FilePathValue;
+import com.ruoyi.shop.order.domain.ShopOrderDetail;
+import com.ruoyi.shop.order.enums.*;
+import com.ruoyi.shop.order.service.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 代发货视图对象 tb_shop_order
+ *
+ * @author lubo
+ * @date 2025-10-23
+ */
+@Data
+@ApiModel("代发货视图对象")
+@ExcelTarget("ShopOrderVo")
+@ExcelIgnoreUnannotated
+public class ShopOrderWaitShipVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 订单号
+     */
+    @ExcelProperty(value = "订单号")
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+
+    /**
+     * 所属商家名称
+     */
+
+    @ExcelProperty(value = "所属商家名称")
+    @ApiModelProperty("所属商家名称")
+    private String businessName;
+
+
+    /**
+     * 用户手机号
+     */
+
+    @ExcelProperty(value = "用户手机号")
+    @ApiModelProperty("用户手机号")
+    private String userMobile;
+
+    /**
+     * 用户名称
+     */
+    @ExcelProperty(value = "用户名称")
+    @ApiModelProperty("用户名称")
+    private String userName;
+
+
+
+    /**
+     * 支付状态(0待支付,10已支付,100支付失败)
+     */
+    @ExcelProperty(value = "支付状态", converter = ExcelEnumConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=待支付,10=已支付,100=支付失败")
+    @ApiModelProperty("支付状态(0待支付,10已支付,100支付失败)")
+    private PaymentStatus paymentStatus;
+
+
+    /**
+     * 商品原sku价
+     */
+    @ExcelProperty(value = "商品原sku价")
+    @ApiModelProperty("商品原sku价")
+    private BigDecimal totalSkuPrice;
+
+    /**
+     * 商品实际总价
+     */
+    @ExcelProperty(value = "商品实际总价")
+    @ApiModelProperty("商品实际总价")
+    private BigDecimal totalRealPrice;
+
+
+    /**
+     * 订单运费
+     */
+    @Excel(name = "订单运费", orderNum = "19", width = 15D, needMerge = true)
+    @ExcelProperty(value = "订单运费")
+    @ApiModelProperty("订单运费")
+    private BigDecimal shippingFee;
+
+    /**
+     * 订单实付金额(商品实际总价-商家优惠券实际优惠+订单运费)
+     */
+    @ExcelProperty(value = "订单实付金额")
+    @ApiModelProperty("订单实付金额(商品实际总价-商家优惠券实际优惠+订单运费)")
+    private BigDecimal actualPayment;
+
+    /**
+     * 总优惠(会员价或活动价或改价后的价格总优惠+店铺优惠券实际优惠)
+     */
+    @ExcelProperty(value = "总优惠")
+    @ApiModelProperty("总优惠(会员价或活动价或改价后的价格总优惠+店铺优惠券实际优惠)")
+    private BigDecimal totalReduced;
+
+
+    /**
+     * 支付积分
+     */
+    @ExcelProperty(value = "支付积分")
+    @ApiModelProperty("支付积分")
+    private BigDecimal paymentPoints;
+
+    /**
+     * 积分抵扣多少钱
+     */
+    @ExcelProperty(value = "积分抵扣多少钱")
+    @ApiModelProperty(value = "积分抵扣多少钱")
+    private BigDecimal pointReduced;
+
+
+    /**
+     * 买家备注
+     */
+    @ExcelProperty(value = "买家备注")
+    @ApiModelProperty("买家备注")
+    private String buyerRemark;
+
+    /**
+     * 卖家备注
+     */
+    @ExcelProperty(value = "卖家备注")
+    @ApiModelProperty("卖家备注")
+    private String sellerRemark;
+
+    /**
+     * 卖家标记(0普通,10提醒,20特别)
+     */
+    @ExcelProperty(value = "卖家标记", converter = ExcelEnumConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=普通,10=提醒,20=特别")
+    @ApiModelProperty("卖家标记(0普通,10提醒,20特别)")
+    private SellerMark sellerMark;
+
+    /**
+     * 订单下单时间
+     */
+    @ExcelProperty(value = "下单时间",converter = ExcelDateTimeConvert.class)
+    @ApiModelProperty("订单下单时间")
+    private Date orderTime;
+
+    /**
+     * 订单支付时间
+     */
+    @ExcelProperty(value = "支付时间",converter = ExcelDateTimeConvert.class)
+    @ApiModelProperty("订单支付时间")
+    private Date paymentTime;
+
+
+    /**
+     * 商品总数量
+     */
+    @ExcelProperty(value = "商品总数量")
+    @ApiModelProperty("商品总数量")
+    private Integer productNumber;
+
+    @ExcelProperty(value = "商品详情")
+    @ApiModelProperty("商品详情")
+    private String productDetails;
+
+
+    @ApiModelProperty("订单明细")
+    private List<ShopOrderDetailVo> orderDetails;
+
+
+    /**
+     * 收货人姓名
+     */
+    @ExcelProperty(value = "收货人姓名")
+    @ApiModelProperty("收货人姓名")
+    private String receiverName;
+
+    /**
+     * 收货人电话
+     */
+    @ExcelProperty(value = "收货人电话")
+    @ApiModelProperty("收货人电话")
+    private String receiverPhone;
+
+    /**
+     * 地址详情
+     */
+    @ApiModelProperty("地址详情")
+    private String addressDetail;
+
+    /**
+     * 省名
+     */
+    @ExcelProperty(value = "省名")
+    @ApiModelProperty("省名")
+    private String provinceName;
+
+    /**
+     * 市名
+     */
+    @ExcelProperty(value = "市名")
+    @ApiModelProperty("市名")
+    private String cityName;
+
+    /**
+     * 区名
+     */
+    @ExcelProperty(value = "区名")
+    @ApiModelProperty("区名")
+    private String areaName;
+
+    @ExcelProperty(value = "收货地址")
+    private String allAddress;
+
+    /**
+     * 物流公司代号
+     */
+    @ApiModelProperty(value = "物流公司编号", required = true)
+    @ExcelProperty(value = "物流公司编号")
+    private String expressCode;
+
+    /**
+     * 物流公司名称
+     */
+    @ApiModelProperty(value = "物流公司名称", required = true)
+    @ExcelProperty(value = "物流公司名称")
+    private String expressName;
+
+    /**
+     * 快递单号
+     */
+    @ApiModelProperty(value = "快递单号", required = true)
+    @ExcelProperty(value = "快递单号")
+    private String logisticCode;
+
+
+    /**
+     * 加载收货地址
+     */
+    public String loadAllAddress() {
+        return this.allAddress = provinceName + cityName + areaName + addressDetail;
+    }
+
+    /**
+     * 获取订单描述
+     * @return
+     */
+    public String loadDescription() {
+        StringBuilder description = new StringBuilder();
+        for (ShopOrderDetailVo shopOrderDetail : this.orderDetails) {
+            description.append(String.format("%s %s * %d \\n",shopOrderDetail.getProductShortTitle(),shopOrderDetail.getSkuSetName(), shopOrderDetail.getProductNum()));
+        }
+        productDetails = description.toString();
+        return this.productDetails;
+    }
+
+
+}

+ 11 - 2
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/IShopOrderService.java

@@ -8,6 +8,7 @@ import com.ruoyi.shop.order.domain.ShopOrderDetail;
 import com.ruoyi.shop.order.domain.bo.*;
 import com.ruoyi.shop.order.domain.vo.ShopOrderTransactionStatusCountVo;
 import com.ruoyi.shop.order.domain.vo.ShopOrderVo;
+import com.ruoyi.shop.order.domain.vo.ShopOrderWaitShipVo;
 import com.ruoyi.shop.order.enums.RightsMethod;
 
 import java.math.BigDecimal;
@@ -101,13 +102,13 @@ public interface IShopOrderService {
 
     /**
      * 根据订单编号查询订单
-     * @param shopOrderPayDto 订单
+     * @param
      */
     ShopOrder loadByOrderNo( String orderNo, Boolean tw);
 
     /**
      * 根据订单编号查询订单
-     * @param shopOrderPayDto 订单
+     * @param
      */
     ShopOrder loadLockByOrderNo(String orderNo, Boolean tw);
 
@@ -229,4 +230,12 @@ public interface IShopOrderService {
      * @return 订单
      */
     ShopOrder goPay(GoPayOrderBo bo);
+
+    /**
+     * 商家待发货订单
+     *
+     * @param bo 订单
+     * @return 订单集合
+     */
+    List<ShopOrderWaitShipVo> businessWaitExport(ShopOrderBo bo);
 }

+ 7 - 4
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/impl/ShopOrderServiceImpl.java

@@ -38,6 +38,7 @@ import com.ruoyi.shop.order.domain.ShopOrderDetail;
 import com.ruoyi.shop.order.domain.bo.*;
 import com.ruoyi.shop.order.domain.vo.ShopOrderTransactionStatusCountVo;
 import com.ruoyi.shop.order.domain.vo.ShopOrderVo;
+import com.ruoyi.shop.order.domain.vo.ShopOrderWaitShipVo;
 import com.ruoyi.shop.order.enums.*;
 import com.ruoyi.shop.order.exception.ShopOrderExceptionEnum;
 import com.ruoyi.shop.order.mapper.ShopOrderDetailMapper;
@@ -56,10 +57,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -596,6 +594,11 @@ public class ShopOrderServiceImpl implements IShopOrderService {
         return order;
     }
 
+    @Override
+    public List<ShopOrderWaitShipVo> businessWaitExport(ShopOrderBo bo) {
+        return Collections.emptyList();
+    }
+
     @Override
     public void endRefundOrderSync(Long orderDetailId, Long orderId) {
         ShopOrder shopOrder = this.loadByLockId(orderId, true);