From f8f1d6a91b32077c69dd97334559fe3165ff79b6 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 02 Sep 2025 13:45:20 +0800 Subject: [PATCH] feat(ai): 添加 AI 用户陪练(流式)功能 --- src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java | 74 +++++++++++++++++++++++++++++++++--- 1 files changed, 67 insertions(+), 7 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java index 7aa560b..2b1bb00 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java @@ -4,8 +4,10 @@ import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.enumerates.ClothesOrderStatusEnum; import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; +import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.common.utils.excl.ExcelSheetPO; @@ -19,6 +21,8 @@ import cc.mrbird.febs.mall.dto.activity.AdminCategoryUpdateDto; import cc.mrbird.febs.mall.dto.clothes.*; import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.ClothesOrderMapper; +import cc.mrbird.febs.mall.mapper.ClothesTypeMapper; import cc.mrbird.febs.mall.service.ClothesTypeService; import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintLocationVo; import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintMemberStatureVo; @@ -31,6 +35,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSON; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; @@ -46,10 +51,8 @@ import java.io.OutputStream; import java.math.BigDecimal; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Validated @@ -59,6 +62,8 @@ public class AdminClothesTypeController extends BaseController { private final ClothesTypeService clothesTypeService; + private final ClothesOrderMapper clothesOrderMapper; + private final ClothesTypeMapper clothesTypeMapper; private final RedisUtils redisUtils; /** @@ -443,9 +448,13 @@ return new FebsResponse().success(); } - @GetMapping("exportOrderList/{ids}") + @GetMapping("exportOrderList") @ControllerEndpoint(operation = "订单列表", exceptionMessage = "导出失败") - public FebsResponse exportOrderList(@NotBlank(message = "{required}") @PathVariable String ids, HttpServletResponse response) throws IOException { + public FebsResponse exportOrderList(ClothesOrder clothesOrder, HttpServletResponse response) throws IOException { + if(ObjectUtil.isNull(clothesOrder.getIds())){ + throw new FebsException("请选择要导出的订单"); + } + String ids = clothesOrder.getIds(); List<String> List = StrUtil.splitTrim(ids, ","); if(CollUtil.isNotEmpty( List)){ ArrayList<Long> orderIds = new ArrayList<>(); @@ -455,7 +464,58 @@ } if(CollUtil.isNotEmpty(orderIds)){ - clothesTypeService.exportOrderList(orderIds,response); + List<ExcelSheetPO> res = new ArrayList<>(); + + ExcelSheetPO orderSheet = new ExcelSheetPO(); + String title = "订单列表"; + orderSheet.setSheetName(title); + orderSheet.setTitle(title); + String[] header = {"订单ID", "订单编号", "收货姓名", "收货电话", "收货地址", "商品详情", "备注", "物流单号", "物流公司", "物流公司码"}; + orderSheet.setHeaders(header); + + QueryRequest request = new QueryRequest(); + request.setPageNum(1); + request.setPageSize(9999); + List<ClothesOrder> dataList = clothesOrderMapper.selectList( + Wrappers.lambdaQuery(ClothesOrder.class) + .in(ClothesOrder::getId, orderIds) + .eq(ClothesOrder::getDelFlag, 0) + .eq(ClothesOrder::getStatus, ClothesOrderStatusEnum.WAIT_SHIPPING.getValue())); + Map<Long, ClothesType> longClothesTypeHashMap = new HashMap<>(); + if(CollUtil.isNotEmpty(dataList)){ + Set<Long> typeIds = dataList.stream().map(ClothesOrder::getTypeId).collect(Collectors.toSet()); + List<ClothesType> clothesTypes = clothesTypeMapper.selectList( + Wrappers.lambdaQuery(ClothesType.class) + .in(ClothesType::getId, typeIds) + ); + if(CollUtil.isNotEmpty(clothesTypes)){ + //stream操作clothesTypes,返回一个HashMap<Long, ClothesType>, key为clothesType.id, value为clothesType + longClothesTypeHashMap = clothesTypes.stream().collect(Collectors.toMap(ClothesType::getId, clothesType -> clothesType)); + } + } + + List<List<Object>> list = new ArrayList<>(); + + if (dataList.size() > 0) { + for (ClothesOrder item : dataList) { + List<Object> temp = new ArrayList<>(); + temp.add(item.getId()); + temp.add(item.getOrderNo()); + temp.add(item.getName()); + temp.add(item.getPhone()); + temp.add(item.getAddress()); + temp.add(longClothesTypeHashMap.get(item.getTypeId()).getName()); + temp.add(item.getRemark()); + list.add(temp); + } + } + orderSheet.setDataList(list); + res.add(orderSheet); + response = ResponseHeadUtil.setExcelHead(response); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), "yyyyMMDDHHmmss") + ".xlsx".trim(), "UTF-8")); + OutputStream os = response.getOutputStream(); + ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); } } return null; -- Gitblit v1.9.1