|
|
@@ -1,19 +1,3 @@
|
|
|
-/*
|
|
|
- * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
|
|
|
- *
|
|
|
- * Redistribution and use in source and binary forms, with or without
|
|
|
- * modification, are permitted provided that the following conditions are met:
|
|
|
- *
|
|
|
- * Redistributions of source code must retain the above copyright notice,
|
|
|
- * this list of conditions and the following disclaimer.
|
|
|
- * Redistributions in binary form must reproduce the above copyright
|
|
|
- * notice, this list of conditions and the following disclaimer in the
|
|
|
- * documentation and/or other materials provided with the distribution.
|
|
|
- * Neither the name of the dreamlu.net developer nor the names of its
|
|
|
- * contributors may be used to endorse or promote products derived from
|
|
|
- * this software without specific prior written permission.
|
|
|
- * Author: Chill 庄骞 (smallchill@163.com)
|
|
|
- */
|
|
|
package org.springblade.salesPart.order.controller;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
@@ -43,10 +27,14 @@ import org.springblade.salesPart.corps.service.ICorpsDescService;
|
|
|
import org.springblade.salesPart.entity.*;
|
|
|
import org.springblade.salesPart.enums.OrderTypeEnum;
|
|
|
import org.springblade.salesPart.excel.*;
|
|
|
+import org.springblade.salesPart.goods.service.IGoodsDescService;
|
|
|
import org.springblade.salesPart.goods.service.IGoodsFilesService;
|
|
|
+import org.springblade.salesPart.goods.service.impl.GoodsDescServiceImpl;
|
|
|
import org.springblade.salesPart.order.service.IOrderItemsService;
|
|
|
import org.springblade.salesPart.order.service.IOrderService;
|
|
|
import org.springblade.salesPart.ship.service.IShipService;
|
|
|
+import org.springblade.salesPart.util.UserUtils;
|
|
|
+import org.springblade.salesPart.vo.GoodsImgVo;
|
|
|
import org.springblade.salesPart.vo.OrderStatistics;
|
|
|
import org.springblade.salesPart.vo.OrderVO;
|
|
|
import org.springblade.salesPart.vo.PjOrderStatisticsWeb;
|
|
|
@@ -75,15 +63,21 @@ import java.util.stream.Collectors;
|
|
|
public class OrderController extends BladeController {
|
|
|
|
|
|
private final IOrderService orderService;
|
|
|
+
|
|
|
private final IOrderItemsService orderItemsService;
|
|
|
- //获取用户信息
|
|
|
+
|
|
|
private final IUserClient iUserClient;
|
|
|
+
|
|
|
private final ICorpsAttnService corpsAttnService;
|
|
|
+
|
|
|
private final ICorpsDescService corpsDescService;
|
|
|
- private final IGoodsFilesService goodsFilesService;
|
|
|
- private final IBrandFilesService brandFilesService;
|
|
|
+
|
|
|
private final IShipService shipService;
|
|
|
|
|
|
+ private final IGoodsDescService goodsDescService;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 销售详情
|
|
|
*/
|
|
|
@@ -760,13 +754,7 @@ public class OrderController extends BladeController {
|
|
|
@ApiOperation(value = "购物车列表不分页查询", notes = "传入shoppingCart")
|
|
|
public R<List<Map<String, Object>>> listAll() {
|
|
|
BladeUser user = AuthUtil.getUser();
|
|
|
- PjCorpsAttn pjCorpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>()
|
|
|
- .eq(PjCorpsAttn::getTenantId, user.getTenantId())
|
|
|
- .eq(PjCorpsAttn::getIsDeleted, 0)
|
|
|
- .eq(PjCorpsAttn::getUserId, user.getUserId()));
|
|
|
- if (ObjectUtils.isNull(pjCorpsAttn)) {
|
|
|
- throw new RuntimeException("未找到用户信息");
|
|
|
- }
|
|
|
+ PjCorpsAttn pjCorpsAttn = UserUtils.getUserCorpsAttn();
|
|
|
LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
lambdaQueryWrapper.eq(PjOrder::getTenantId, user.getTenantId())
|
|
|
.eq(PjOrder::getIsDeleted, 0)
|
|
|
@@ -783,55 +771,31 @@ public class OrderController extends BladeController {
|
|
|
List<Long> orderIds = list.stream().map(PjOrder::getId).distinct().collect(Collectors.toList());
|
|
|
List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>().in(PjOrderItems::getPid, orderIds));
|
|
|
List<Long> goodsIds = pjOrderItemsList.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
- List<PjGoodsFiles> pjGoodsFiles = goodsFilesService.list(new LambdaQueryWrapper<PjGoodsFiles>()
|
|
|
- .eq(PjGoodsFiles::getTenantId, user.getTenantId())
|
|
|
- .eq(PjGoodsFiles::getIsDeleted, 0)
|
|
|
- .in(PjGoodsFiles::getPid, goodsIds)
|
|
|
- .eq(PjGoodsFiles::getMainImage, 0));
|
|
|
- List<Long> brandIds = pjOrderItemsList.stream().map(PjOrderItems::getBrandId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
|
|
- List<PjBrandFiles> brandFilesList = null;
|
|
|
- if (!brandIds.isEmpty()) {
|
|
|
- brandFilesList = brandFilesService.list(new LambdaQueryWrapper<PjBrandFiles>()
|
|
|
- .eq(PjBrandFiles::getMainImage, 0)
|
|
|
- .eq(PjBrandFiles::getTenantId, user.getTenantId())
|
|
|
- .eq(PjBrandFiles::getIsDeleted, 0)
|
|
|
- .in(PjBrandFiles::getPid, brandIds)
|
|
|
- );
|
|
|
- }
|
|
|
- //按照所属公司分组
|
|
|
+ // 查找goods、product、brand、brandFigure 中的图片,每个类型只取一条
|
|
|
+ List<GoodsImgVo> goodsImgVoList = goodsDescService.selectGoodsImgVoList(user.getTenantId(), goodsIds);
|
|
|
+ // 按照src 编码分组
|
|
|
Map<String, List<PjOrder>> map = list.stream().filter(item -> com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(item.getSrcOrdNo()))
|
|
|
.collect(Collectors.groupingBy(PjOrder::getSrcOrdNo));
|
|
|
List<Map<String, Object>> mapList = new ArrayList<>(map.size());
|
|
|
for (Map.Entry<String, List<PjOrder>> orderMap : map.entrySet()) {
|
|
|
- Map<String, Object> objectMap = new HashMap<>(2);
|
|
|
- objectMap.put("name", orderMap.getKey());
|
|
|
- mapList.add(objectMap);
|
|
|
if (orderMap.getValue().isEmpty()) {
|
|
|
- objectMap.put("list", Collections.EMPTY_LIST);
|
|
|
continue;
|
|
|
}
|
|
|
- List<PjOrder> nowOrderList = orderMap.getValue().stream().sorted(Comparator.comparing(PjOrder::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
- objectMap.put("list", nowOrderList);
|
|
|
- for (PjOrder order : nowOrderList) {
|
|
|
- List<PjOrderItems> nowOrderItemList = pjOrderItemsList.stream().filter(item -> order.getId().equals(item.getPid())).collect(Collectors.toList());
|
|
|
- order.setOrderItemsList(nowOrderItemList);
|
|
|
- for (PjOrderItems item : nowOrderItemList) {
|
|
|
- PjGoodsFiles goodsFiles = pjGoodsFiles.stream().filter(goods -> goods.getPid().equals(item.getGoodsId())).findFirst().orElse(null);
|
|
|
- if (goodsFiles != null) {
|
|
|
- item.setUrl(goodsFiles.getUrl());
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (brandFilesList == null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- PjBrandFiles brandFiles = brandFilesList.stream().filter(brand -> brand.getPid().equals(item.getBrandId())).findFirst().orElse(null);
|
|
|
- if (brandFiles == null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- item.setUrl(brandFiles.getUrl());
|
|
|
- }
|
|
|
- }
|
|
|
+ PjOrder nowOrder = orderMap.getValue().stream().max(Comparator.comparing(PjOrder::getCreateTime)).orElse(null);
|
|
|
+ Map<String, Object> objectMap = new HashMap<>(3);
|
|
|
+ mapList.add(objectMap);
|
|
|
+ objectMap.put("name", orderMap.getKey());
|
|
|
+ List<Long> nowOrderIds = orderMap.getValue().stream().map(PjOrder::getId).distinct().collect(Collectors.toList());
|
|
|
+ List<PjOrderItems> nowOrderItemList = pjOrderItemsList.stream().filter(item -> nowOrderIds.contains(item.getPid())).collect(Collectors.toList());
|
|
|
+ nowOrderItemList.forEach(o -> {
|
|
|
+ GoodsImgVo goodsImgVo = goodsImgVoList.stream().filter(e1 -> e1.getGoodsId().equals(o.getGoodsId())).findFirst().orElse(null);
|
|
|
+ o.setUrl(goodsImgVo == null ? null : goodsImgVo.getFirstNonEmptyUrl());
|
|
|
+ });
|
|
|
+ nowOrder.setOrderItemsList(nowOrderItemList);
|
|
|
+ objectMap.put("data", nowOrder);
|
|
|
+ objectMap.put("sort", nowOrder.getCreateTime());
|
|
|
}
|
|
|
+ mapList.sort(Comparator.nullsLast(Comparator.comparing((Map<String, Object> m) -> (Date) m.get("sort"), Comparator.nullsFirst(Comparator.naturalOrder())).reversed()));
|
|
|
return R.data(mapList);
|
|
|
}
|
|
|
|