From 99b9e8cf91904f6282ea99039d80fe5dd0ef0ef2 Mon Sep 17 00:00:00 2001 From: lifenlong Date: Wed, 26 May 2021 17:09:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E8=AE=A2=E5=8D=95=E5=8F=91?= =?UTF-8?q?=E8=B4=A7Excel=EF=BC=8C=E4=B8=8A=E4=BC=A0Excel=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=89=B9=E9=87=8F=E5=8F=91=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/pom.xml | 29 +++--- .../java/cn/lili/common/enums/ResultCode.java | 1 + .../modules/broadcast/entity/dos/Studio.java | 3 + .../serviceimpl/CommodityServiceImpl.java | 2 +- .../serviceimpl/StudioServiceImpl.java | 6 +- .../broadcast/util/WechatLivePlayerUtil.java | 8 +- .../broadcast/util/WechatMediaUtil.java | 3 + .../entity/dto/OrderBatchDeliverDTO.java | 27 ++++++ .../order/order/mapper/OrderMapper.java | 8 +- .../order/order/service/OrderService.java | 17 ++++ .../order/serviceimpl/OrderServiceImpl.java | 89 ++++++++++++++++--- .../system/mapper/StoreLogisticsMapper.java | 3 + .../system/service/StoreLogisticsService.java | 7 ++ .../StoreLogisticsServiceImpl.java | 5 ++ .../trade/OrderStoreController.java | 55 ++++++++++++ 15 files changed, 226 insertions(+), 37 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderBatchDeliverDTO.java diff --git a/framework/pom.xml b/framework/pom.xml index a47a8901..49ffefd8 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -45,6 +45,8 @@ 2.3.1 1.21 1.2 + 5.0.0 + 5.0.0 @@ -81,11 +83,6 @@ xk-time 2.2.0 - - - - - org.springframework.boot spring-boot-starter-web @@ -356,23 +353,11 @@ simple-http ${simple-http-version} - org.antlr antlr4-runtime ${antlr4-runtime-version} - - - - - - - - - - - com.alipay.sdk alipay-sdk-java @@ -385,6 +370,16 @@ UserAgentUtils ${userAgentUtils} + + org.apache.poi + poi + ${poi-version} + + + org.apache.poi + poi-ooxml + ${poi-ooxml-version} + diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index 838afc87..1787332e 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -138,6 +138,7 @@ public enum ResultCode { ORDER_NOT_USER(31007, "非当前会员的订单"), ORDER_TAKE_ERROR(31008, "当前订单无法核销"), MEMBER_ADDRESS_NOT_EXIST(31009, "订单无收货地址,请先配置收货地址"), + ORDER_DELIVER_NUM_ERROR(31010, "没有待发货的订单"), /** * 支付 diff --git a/framework/src/main/java/cn/lili/modules/broadcast/entity/dos/Studio.java b/framework/src/main/java/cn/lili/modules/broadcast/entity/dos/Studio.java index 9f90bb4d..c001b41a 100644 --- a/framework/src/main/java/cn/lili/modules/broadcast/entity/dos/Studio.java +++ b/framework/src/main/java/cn/lili/modules/broadcast/entity/dos/Studio.java @@ -77,6 +77,9 @@ public class Studio extends BaseEntity { @ApiModelProperty(value = "房间ID") private Integer roomId; + @ApiModelProperty(value = "小程序直播码") + private String qrCodeUrl; + @ApiModelProperty(value = "店铺ID") private String storeId; diff --git a/framework/src/main/java/cn/lili/modules/broadcast/serviceimpl/CommodityServiceImpl.java b/framework/src/main/java/cn/lili/modules/broadcast/serviceimpl/CommodityServiceImpl.java index 92863542..e213bd77 100644 --- a/framework/src/main/java/cn/lili/modules/broadcast/serviceimpl/CommodityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/broadcast/serviceimpl/CommodityServiceImpl.java @@ -58,7 +58,7 @@ public class CommodityServiceImpl extends ServiceImpl impleme public Boolean create(Studio studio) { try { //创建小程序直播 - Integer roomId = wechatLivePlayerUtil.create(studio); - studio.setRoomId(roomId); + Map roomMap=wechatLivePlayerUtil.create(studio); + studio.setRoomId(Integer.parseInt(roomMap.get("roomId"))); + studio.setQrCodeUrl(roomMap.get("qrcodeUrl")); studio.setStoreId(UserContext.getCurrentUser().getStoreId()); return this.save(studio); } catch (Exception e) { diff --git a/framework/src/main/java/cn/lili/modules/broadcast/util/WechatLivePlayerUtil.java b/framework/src/main/java/cn/lili/modules/broadcast/util/WechatLivePlayerUtil.java index 7faceeb4..dda7a1eb 100644 --- a/framework/src/main/java/cn/lili/modules/broadcast/util/WechatLivePlayerUtil.java +++ b/framework/src/main/java/cn/lili/modules/broadcast/util/WechatLivePlayerUtil.java @@ -1,6 +1,5 @@ package cn.lili.modules.broadcast.util; -import cn.hutool.core.convert.Convert; import cn.hutool.json.JSONObject; import cn.lili.modules.base.entity.enums.ClientTypeEnum; import cn.lili.modules.broadcast.entity.dos.Commodity; @@ -37,7 +36,7 @@ public class WechatLivePlayerUtil { * @param studio 小程序直播 * @return 房间ID */ - public Integer create(Studio studio) throws Exception{ + public Map create(Studio studio) throws Exception{ //获取token String token = wechatAccessTokenUtil.cgiAccessToken(ClientTypeEnum.WECHAT_MP); //发送url @@ -74,7 +73,10 @@ public class WechatLivePlayerUtil { String content = HttpUtils.doPostWithJson(url, map); JSONObject json = new JSONObject(content); log.info("微信小程序直播间创建结果:" + content); - return Convert.toInt(json.getStr("roomId")); + Map roomMap=new HashMap<>(); + roomMap.put("roomId",json.getStr("roomId")); + roomMap.put("qrcodeUrl",json.getStr("qrcode_url")); + return roomMap; } /** diff --git a/framework/src/main/java/cn/lili/modules/broadcast/util/WechatMediaUtil.java b/framework/src/main/java/cn/lili/modules/broadcast/util/WechatMediaUtil.java index 0cfb49fe..3f7650fe 100644 --- a/framework/src/main/java/cn/lili/modules/broadcast/util/WechatMediaUtil.java +++ b/framework/src/main/java/cn/lili/modules/broadcast/util/WechatMediaUtil.java @@ -115,6 +115,9 @@ public class WechatMediaUtil { fileExt = ".png"; break; case "image/jpeg": + fileExt = ".jpeg"; + break; + case "image/jpg": fileExt = ".jpg"; break; } diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderBatchDeliverDTO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderBatchDeliverDTO.java new file mode 100644 index 00000000..d6ccd31c --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/OrderBatchDeliverDTO.java @@ -0,0 +1,27 @@ +package cn.lili.modules.order.order.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 订单批量发货DTO + * @author Bulbasaur + * @date: 2021/5/26 4:21 下午 + * + */ +@Data +public class OrderBatchDeliverDTO { + + @ApiModelProperty(value = "订单SN") + private String orderSn; + + @ApiModelProperty(value = "物流公司ID") + private String logisticsId; + + @ApiModelProperty(value = "物流公司名称") + private String logisticsName; + + @ApiModelProperty(value = "发货单号") + private String logisticsNo; + +} diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java index e976a1a7..1cc21d35 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java @@ -11,6 +11,8 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; +import java.util.List; + /** * 订单数据处理层 * @@ -19,9 +21,6 @@ import org.apache.ibatis.annotations.Update; */ public interface OrderMapper extends BaseMapper { - @Update({"update li_order set order_status = #{status} where sn in #{orderSn}"}) - void batchUpdateStatus(String status, String orderSns); - @Update({"update li_order set order_status = #{status} where sn = #{orderSn}"}) void updateStatus(String status, String orderSn); @@ -39,8 +38,9 @@ public interface OrderMapper extends BaseMapper { " FROM li_order o INNER JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") IPage queryByParams(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); - @Select("select * from li_order ${ew.customSqlSegment} ") IPage queryPaymentLogs(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + @Select("SELECT sn FROM li_order o ${ew.customSqlSegment} ") + List deliverSnList(@Param(Constants.WRAPPER) Wrapper queryWrapper); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index 1f8da09e..c89e5e4a 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -4,6 +4,7 @@ import cn.lili.common.vo.PageVO; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.order.entity.dos.Order; +import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; @@ -13,6 +14,7 @@ import cn.lili.modules.system.entity.vo.Traces; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -176,4 +178,19 @@ public interface OrderService extends IService { */ void agglomeratePintuanOrder(String pintuanId, String parentOrderSn); + /** + * 获取待发货订单编号列表 + * @param response + * @param orderIds 订单ID列表 + * @param logisticsName 店铺已选择物流公司列表 + * @return 待发货订单编号列表 + */ + void getBatchDeliverList(HttpServletResponse response, List orderIds, List logisticsName); + + /** + * 订单批量发货 + * @param list 批量发货列表 + */ + void batchDeliver(List list); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 9b86d152..7d5869da 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -2,8 +2,11 @@ package cn.lili.modules.order.order.serviceimpl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.json.JSONUtil; +import cn.hutool.poi.excel.ExcelUtil; +import cn.hutool.poi.excel.ExcelWriter; import cn.lili.common.aop.syslog.annotation.SystemLogPoint; import cn.lili.common.delayqueue.DelayQueueTools; import cn.lili.common.delayqueue.DelayQueueType; @@ -31,6 +34,7 @@ import cn.lili.modules.order.order.aop.OrderLogPoint; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.dos.Receipt; +import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.dto.PriceDetailDTO; @@ -60,12 +64,16 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -78,7 +86,6 @@ import java.util.List; */ @Service @Transactional(rollbackFor = Exception.class) - public class OrderServiceImpl extends ServiceImpl implements OrderService { private static final String ORDER_SN_COLUMN = "order_sn"; @@ -364,8 +371,6 @@ public class OrderServiceImpl extends ServiceImpl implements this.updateById(order); //修改订单状态为已发送 this.updateStatus(orderSn, OrderStatusEnum.DELIVERED); - - //修改订单货物可以进行售后、投诉 orderItemService.update(new UpdateWrapper().eq(ORDER_SN_COLUMN, orderSn) .set("after_sale_status", OrderItemAfterSaleStatusEnum.NOT_APPLIED) @@ -375,8 +380,6 @@ public class OrderServiceImpl extends ServiceImpl implements orderMessage.setNewStatus(OrderStatusEnum.DELIVERED); orderMessage.setOrderSn(order.getSn()); this.sendUpdateStatusMessage(orderMessage); - - } else { throw new ServiceException(ResultCode.ORDER_DELIVER_ERROR); } @@ -512,6 +515,77 @@ public class OrderServiceImpl extends ServiceImpl implements } } + @Override + public void getBatchDeliverList(HttpServletResponse response, List orderIds, List logisticsName) { + //获取待发货订单列表 + List deliverList = this.baseMapper.deliverSnList(new LambdaQueryWrapper() + .eq(Order::getStoreId, UserContext.getCurrentUser().getStoreId()) + .eq(Order::getOrderStatus, "'UNDELIVERED'") + .in(orderIds.size() > 0, Order::getId, orderIds)); + //如果没有待发货的订单则返回 + if (deliverList.size() < 1) { + throw new ServiceException(ResultCode.ORDER_DELIVER_NUM_ERROR); + } + ExcelWriter writer = ExcelUtil.getWriter(); + writer.addHeaderAlias("sn", "订单号"); + writer.addHeaderAlias("logisticsName", "物流公司"); + writer.addHeaderAlias("logisticsNo", "物流单号"); + //写入待发货的订单列表 + writer.write(deliverList, true); + //存放下拉列表 + String[] logiList = logisticsName.toArray(new String[]{}); + CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(2, deliverList.size(), 2, 3); + writer.addSelect(cellRangeAddressList, logiList); + + response.setHeader("Content-Disposition", "attachment;filename=批量发货.xls"); + ServletOutputStream out = null; + try { + out = response.getOutputStream(); + writer.flush(out, true); + } catch (IOException e) { + e.printStackTrace(); + } finally { + writer.close(); + } + IoUtil.close(out); + } + + @Override + public void batchDeliver(List list) { + //循环检查是否符合规范 + checkBatchDeliver(list); + //订单批量发货 + for (OrderBatchDeliverDTO orderBatchDeliverDTO : list) { + this.delivery(orderBatchDeliverDTO.getOrderSn(), orderBatchDeliverDTO.getLogisticsNo(), orderBatchDeliverDTO.getLogisticsId()); + } + } + + /** + * 循环检查批量发货订单列表 + * + * @param list 待发货订单列表 + */ + private void checkBatchDeliver(List list) { + for (OrderBatchDeliverDTO orderBatchDeliverDTO : list) { + //查看订单号是否存在-是否是当前店铺的订单 + int count = this.count(new LambdaQueryWrapper() + .eq(Order::getStoreId, UserContext.getCurrentUser().getStoreId()) + .eq(Order::getSn, orderBatchDeliverDTO.getOrderSn())); + if (count == 0) { + throw new ServiceException("订单编号:'" + orderBatchDeliverDTO.getOrderSn() + " '不存在"); + } + //查看物流公司 + Logistics logistics = logisticsService.getOne(new LambdaQueryWrapper().eq(Logistics::getName, orderBatchDeliverDTO.getLogisticsName())); + if (logistics == null) { + throw new ServiceException("物流公司:'" + orderBatchDeliverDTO.getLogisticsName() + " '不存在"); + } else { + orderBatchDeliverDTO.setLogisticsId(logistics.getId()); + } + } + + + } + /** * 订单状态变更消息 * @@ -605,11 +679,6 @@ public class OrderServiceImpl extends ServiceImpl implements */ private void pintuanOrderFailed(List list) { for (Order order : list) { -// LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); -// updateWrapper.eq(Order::getId, order.getId()); -// updateWrapper.set(Order::getOrderStatus, OrderStatusEnum.CANCELLED.name()); -// updateWrapper.set(Order::getCancelReason, "拼团人数不足,拼团失败!"); -// this.update(updateWrapper); try { this.cancel(order.getSn(), "拼团人数不足,拼团失败!"); } catch (Exception e) { diff --git a/framework/src/main/java/cn/lili/modules/system/mapper/StoreLogisticsMapper.java b/framework/src/main/java/cn/lili/modules/system/mapper/StoreLogisticsMapper.java index d441d321..23bb348b 100644 --- a/framework/src/main/java/cn/lili/modules/system/mapper/StoreLogisticsMapper.java +++ b/framework/src/main/java/cn/lili/modules/system/mapper/StoreLogisticsMapper.java @@ -18,6 +18,9 @@ public interface StoreLogisticsMapper extends BaseMapper { @Select("SELECT l.* FROM li_logistics l RIGHT JOIN li_store_logistics sl ON l.id=sl.logistics_id WHERE sl.store_id=#{storeId}") List getSelectedStoreLogistics(String storeId); + @Select("SELECT l.name FROM li_logistics l RIGHT JOIN li_store_logistics sl ON l.id=sl.logistics_id WHERE sl.store_id=#{storeId}") + List getSelectedStoreLogisticsName(String storeId); + @Select("SELECT *, ( SELECT sl.id FROM li_store_logistics sl WHERE l.id = sl.logistics_id AND sl.store_id=#{storeId} ) AS selected FROM li_logistics l;") List getStoreLogistics(String storeId); diff --git a/framework/src/main/java/cn/lili/modules/system/service/StoreLogisticsService.java b/framework/src/main/java/cn/lili/modules/system/service/StoreLogisticsService.java index 0fb6adc3..8d4e39be 100644 --- a/framework/src/main/java/cn/lili/modules/system/service/StoreLogisticsService.java +++ b/framework/src/main/java/cn/lili/modules/system/service/StoreLogisticsService.java @@ -28,6 +28,13 @@ public interface StoreLogisticsService extends IService { */ List getStoreSelectedLogistics(); + /** + * 获取当前店铺已选择的物流公司名称列表 + * + * @return 物流公司列表 + */ + List getStoreSelectedLogisticsName(); + /** * 添加店铺-物流公司 * diff --git a/framework/src/main/java/cn/lili/modules/system/serviceimpl/StoreLogisticsServiceImpl.java b/framework/src/main/java/cn/lili/modules/system/serviceimpl/StoreLogisticsServiceImpl.java index 230296fc..b9f542ec 100644 --- a/framework/src/main/java/cn/lili/modules/system/serviceimpl/StoreLogisticsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/system/serviceimpl/StoreLogisticsServiceImpl.java @@ -35,6 +35,11 @@ public class StoreLogisticsServiceImpl extends ServiceImpl getStoreSelectedLogisticsName() { + return this.baseMapper.getSelectedStoreLogisticsName(UserContext.getCurrentUser().getStoreId()); + } + @Override public StoreLogistics add(String logisticsId) { //判断是否已经选择过,如果没有选择则进行添加 diff --git a/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java b/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java index 4ca89760..0c034911 100644 --- a/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/trade/OrderStoreController.java @@ -1,13 +1,18 @@ package cn.lili.controller.trade; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; +import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dto.MemberAddressDTO; +import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.service.OrderPriceService; import cn.lili.modules.order.order.service.OrderService; +import cn.lili.modules.system.service.StoreLogisticsService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -15,10 +20,15 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; /** * 店铺端,订单接口 @@ -42,6 +52,11 @@ public class OrderStoreController { */ @Autowired private OrderPriceService orderPriceService; + /** + * 物流公司 + */ + @Autowired + private StoreLogisticsService storeLogisticsService; @ApiOperation(value = "查询订单列表") @GetMapping @@ -121,4 +136,44 @@ public class OrderStoreController { public ResultMessage getTraces(@NotBlank(message = "订单编号不能为空") @PathVariable String orderSn) { return ResultUtil.data(orderService.getTraces(orderSn)); } + + @ApiOperation(value = "下载待发货的订单列表") + @GetMapping(value = "/downLoadDeliverExcel") + public ResultMessage downLoadDeliverExcel(HttpServletResponse response, List orderIds) { + + //获取店铺已经选择物流公司列表 + List logisticsName = storeLogisticsService.getStoreSelectedLogisticsName(); + //下载订单批量发货Excel + this.orderService.getBatchDeliverList(response,orderIds,logisticsName); + + return ResultUtil.success(ResultCode.SUCCESS); + + } + + @ApiOperation(value = "上传文件进行订单批量发货") + @ApiImplicitParam(name = "file", value = "订单列表", required = true, dataType = "file", paramType = "query") + @PutMapping(value = "/batchDeliver") + public void batchDeliver(@RequestParam MultipartFile file) { + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + // 2.应用HUtool ExcelUtil获取ExcelReader指定输入流和sheet + ExcelReader excelReader = ExcelUtil.getReader(inputStream); + // 可以加上表头验证 + // 3.读取第二行到最后一行数据 + List> read = excelReader.read(1, excelReader.getRowCount()); + List orderBatchDeliverDTOList=new ArrayList<>(); + for (List objects : read) { + OrderBatchDeliverDTO orderBatchDeliverDTO=new OrderBatchDeliverDTO(); + orderBatchDeliverDTO.setOrderSn(objects.get(0).toString()); + orderBatchDeliverDTO.setLogisticsName(objects.get(1).toString()); + orderBatchDeliverDTO.setLogisticsNo(objects.get(2).toString()); + orderBatchDeliverDTOList.add(orderBatchDeliverDTO); + } + orderService.batchDeliver(orderBatchDeliverDTOList); + } catch (Exception e) { + e.printStackTrace(); + } + + } } \ No newline at end of file