Browse Source

退货功能拓展

24282 1 year ago
parent
commit
e5037057cf

+ 20 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeSelectDto.java

@@ -19,4 +19,24 @@ public class OrderExchangeSelectDto extends BaseSelectDto {
      */
     private Long orderInfoId;
 
+    /**
+     * 退换货单号
+     */
+    private String code;
+
+    /**
+     * 订单号
+     */
+    private String orderCode;
+
+    /**
+     * 万里牛单号
+     */
+    private String orderWlnCode;
+
+    /**
+     * 部门id
+     */
+    private String departmentId;
+
 }

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderExchange.java

@@ -22,6 +22,11 @@ import javax.validation.constraints.NotNull;
 public class OrderExchange extends BasePo {
 
     /**
+     * 退换货单号
+     */
+    private String code;
+
+    /**
      * 订单id
      */
     @NotNull(message = "订单id不能为空")

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderExchangeDetailVo.java

@@ -36,4 +36,9 @@ public class OrderExchangeDetailVo extends OrderExchangeDetail {
      */
     private BigDecimal buyQuantity;
 
+    /**
+     * 退货金额
+     */
+    private BigDecimal returnAmount;
+
 }

+ 20 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderExchangeVo.java

@@ -17,6 +17,26 @@ import java.util.List;
 public class OrderExchangeVo extends OrderExchange {
 
     /**
+     * 订单号
+     */
+    private String orderCode;
+
+    /**
+     * 万里牛单号
+     */
+    private String orderWlnCode;
+
+    /**
+     * 部门名称
+     */
+    private String departmentName;
+
+    /**
+     * 创建人名称
+     */
+    private String createUserName;
+
+    /**
      * 订单退货明细
      */
     private List<OrderExchangeDetailVo> orderExchangeDetailList;

+ 55 - 4
sd-business/src/main/java/com/sd/business/service/order/impl/OrderExchangeServiceImpl.java

@@ -8,12 +8,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.utils.UserUtil;
+import com.sd.business.entity.department.po.Department;
 import com.sd.business.entity.order.dto.OrderExchangeDto;
 import com.sd.business.entity.order.dto.OrderExchangeSelectDto;
 import com.sd.business.entity.order.po.OrderExchange;
 import com.sd.business.entity.order.po.OrderExchangeDetail;
+import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.po.OrderSku;
 import com.sd.business.entity.order.vo.OrderExchangeDetailVo;
 import com.sd.business.entity.order.vo.OrderExchangeVo;
@@ -22,14 +26,12 @@ import com.sd.business.service.order.OrderExchangeDetailService;
 import com.sd.business.service.order.OrderExchangeService;
 import com.sd.business.service.order.OrderSkuService;
 import com.sd.business.service.sku.SkuSpecService;
+import com.sd.business.util.CodeEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -58,7 +60,52 @@ public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, O
         IWrapper<OrderExchange> wrapper = getWrapper();
         wrapper.orderByDesc("oe", OrderExchange::getId);
         wrapper.eq("oe", OrderExchange::getOrderInfoId, dto.getOrderInfoId());
+        wrapper.like("oe", OrderExchange::getCode, dto.getCode());
+        wrapper.like("oi", OrderInfo::getCode, dto.getOrderCode());
+        wrapper.like("oi", OrderInfo::getWlnCode, dto.getOrderWlnCode());
+        wrapper.eq("d", Department::getId, dto.getDepartmentId());
+
         Page<OrderExchangeVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<OrderExchangeVo> records = page.getRecords();
+
+        if (records.size() == 0) {
+            return page;
+        }
+
+        // 赋值操作人名称
+        UserUtil.assignmentNickName(records, BasePo::getCreateUser, OrderExchangeVo::setCreateUserName);
+
+        List<Long> idList = records.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+        List<OrderExchangeDetail> list = orderExchangeDetailService
+                .list(q -> q.eq(OrderExchangeDetail::getOrderExchangeId, idList));
+        List<OrderExchangeDetailVo> orderExchangeDetailList = BeanUtil.copyToList(list, OrderExchangeDetailVo.class);
+
+        // 赋值sku规格id和采购数量
+        orderSkuService.attributeAssign(orderExchangeDetailList, OrderExchangeDetailVo::getOrderSkuId, (item, orderSku) -> {
+            item.setSkuSpecId(orderSku.getSkuSpecId());
+            item.setBuyQuantity(orderSku.getQuantity());
+            item.setReturnAmount((orderSku.getUnitPrice()
+                    .add(orderSku.getCustomProcessingFee())
+                    .add(orderSku.getLssueFee())
+                    .add(orderSku.getDeliveryMaterialsFee())
+                    .add(orderSku.getPackingLabor())
+                    .add(orderSku.getPackagingMaterialCost())
+                    .add(orderSku.getManagementFee())).multiply(item.getQuantity()));
+        });
+
+        // 赋值sku品号品名
+        skuSpecService.attributeAssign(orderExchangeDetailList, OrderExchangeDetailVo::getSkuSpecId, (item, skuSpec) -> {
+            item.setSkuSpecCode(skuSpec.getCode());
+            item.setSkuSpecName(skuSpec.getName());
+        });
+
+        Map<Long, List<OrderExchangeDetailVo>> map = orderExchangeDetailList.stream()
+                .collect(Collectors.groupingBy(OrderExchangeDetailVo::getOrderExchangeId));
+
+        for (OrderExchangeVo record : records) {
+            record.setOrderExchangeDetailList(map.getOrDefault(record.getId(), Collections.emptyList()));
+        }
+
         return page;
     }
 
@@ -85,6 +132,8 @@ public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, O
             item.setSkuSpecName(skuSpec.getName());
         });
 
+        result.setOrderExchangeDetailList(orderExchangeDetailList);
+
         return result;
     }
 
@@ -143,6 +192,8 @@ public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, O
             orderExchangeDetail.setExchangeStatus(StatusConstant.NO);
         }
 
+
+        orderExchangeDto.setCode(orderExchangeDto.getType() == 1 ? CodeEnum.TH_CODE.getCode() : CodeEnum.HH_CODE.getCode());
         save(orderExchangeDto);
         orderExchangeDetailService.saveBatch(orderExchangeDetailList);
         ObsFileUtil.saveFile(orderExchangeDto.getFileList(), orderExchangeDto.getId());

+ 5 - 2
sd-business/src/main/java/com/sd/business/util/CodeEnum.java

@@ -10,6 +10,7 @@ import com.ruoyi.common.exception.ServiceException;
 import com.sd.business.service.apply.ApplyBuyService;
 import com.sd.business.service.in.InOutStorageService;
 import com.sd.business.service.lend.LendService;
+import com.sd.business.service.order.OrderExchangeService;
 import com.sd.business.service.purchase.PurchaseService;
 import com.sd.business.service.statement.StatementOfAccountService;
 import lombok.Getter;
@@ -32,8 +33,10 @@ public enum CodeEnum {
     STATEMENT_OF_ACCOUNT_CODE("SOA", "-yyMMdd-", "code", 6, StatementOfAccountService.class),
     // 采购单号
     PURCHASE_CODE("PA", "-yyMMdd-", "code", 6, PurchaseService.class),
-
-    ;
+    // 退货单号
+    TH_CODE("TH", "-yyMMdd-", "code", 6, OrderExchangeService.class),
+    // 换货单号
+    HH_CODE("HH", "-yyMMdd-", "code", 6, OrderExchangeService.class);
 
     // 编码前缀
     private final String prefix;

+ 7 - 1
sd-business/src/main/resources/mapper/order/OrderExchangeMapper.xml

@@ -3,6 +3,7 @@
 <mapper namespace="com.sd.business.mapper.order.OrderExchangeMapper">
     <select id="getPage" resultType="com.sd.business.entity.order.vo.OrderExchangeVo">
         select oe.id,
+               oe.code,
                oe.order_info_id,
                oe.type,
                oe.reason,
@@ -17,8 +18,13 @@
                oe.create_user,
                oe.create_time,
                oe.update_user,
-               oe.update_time
+               oe.update_time,
+               oi.code     orderCode,
+               oi.wln_code orderWlnCode,
+               d.name      departmentName
         from order_exchange oe
+                 left join order_info oi on oe.order_info_id = oi.id
+                 left join department d on oi.department_id = d.id
             ${ew.customSqlSegment}
     </select>