Browse Source

预付款接口优化

liyuan 7 months ago
parent
commit
d8fbbe274e

+ 54 - 38
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -31,6 +31,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
@@ -758,62 +759,77 @@ public class OrderController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@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, AuthUtil.getTenantId())
+			.eq(PjCorpsAttn::getTenantId, user.getTenantId())
 			.eq(PjCorpsAttn::getIsDeleted, 0)
-			.eq(PjCorpsAttn::getUserId, AuthUtil.getUserId()));
+			.eq(PjCorpsAttn::getUserId, user.getUserId()));
 		if (ObjectUtils.isNull(pjCorpsAttn)) {
 			throw new RuntimeException("未找到用户信息");
 		}
 		LambdaQueryWrapper<PjOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+		lambdaQueryWrapper.eq(PjOrder::getTenantId, user.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			//公司
-			.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(PjOrder::getSalesCompanyId, user.getDeptId())
 			.eq(PjOrder::getActualPaymentStatus, 1)
-			.apply("find_in_set(bs_type,'XS,GX')")
 			.eq(PjOrder::getCustomerId, pjCorpsAttn.getPid())
+			.in(PjOrder::getBsType, "XS","GX")
 			.orderByDesc(PjOrder::getCreateTime);
 		List<PjOrder> list = orderService.list(lambdaQueryWrapper);
-		for (PjOrder item : list) {
-			if ("内部销售".equals(item.getBusinessSource())) {
-				item.setSrcOrdNo(item.getOrdNo());
-			}
+		if (list.isEmpty()) {
+			return R.data(Collections.emptyList());
+		}
+		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)
+			);
 		}
-		orderService.updateBatchById(list);
 		//按照所属公司分组
 		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.forEach((k, v) -> {
-			if (ObjectUtil.isNotEmpty(v)) {
-				v.forEach(e -> {
-					List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>().eq(PjOrderItems::getPid, e.getId()));
-					for (PjOrderItems item : pjOrderItemsList) {
-						List<PjGoodsFiles> pjGoodsFiles = goodsFilesService.list(new LambdaQueryWrapper<PjGoodsFiles>()
-							.eq(PjGoodsFiles::getTenantId, AuthUtil.getTenantId())
-							.eq(PjGoodsFiles::getIsDeleted, 0)
-							.eq(PjGoodsFiles::getPid, item.getGoodsId())
-							.eq(PjGoodsFiles::getMainImage, 0));
-						item.setGoodsFilesList(pjGoodsFiles);
-						if (item.getGoodsFilesList().isEmpty() && ObjectUtils.isNotNull(item.getBrandId())) {
-							item.setGoodsFilesList(BeanUtil.copy(brandFilesService.list(new LambdaQueryWrapper<PjBrandFiles>()
-								.eq(PjBrandFiles::getMainImage, 0)
-								.eq(PjBrandFiles::getPid, item.getBrandId())
-								.eq(PjBrandFiles::getTenantId, AuthUtil.getTenantId())
-								.eq(PjBrandFiles::getIsDeleted, 0)), PjGoodsFiles.class));
-						}
+		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());
+			objectMap.put("list", orderMap.getValue());
+			mapList.add(objectMap);
+			if (orderMap.getValue().isEmpty()) {
+				continue;
+			}
+			for (PjOrder order : orderMap.getValue()) {
+				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;
 					}
-					e.setOrderItemsList(pjOrderItemsList);
-				});
+					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());
+				}
 			}
-			Map<String, Object> objectMap = new HashMap<>();
-			objectMap.put("name", k);
-			objectMap.put("list", v);
-
-			mapList.add(objectMap);
-		});
+		}
 		return R.data(mapList);
 	}