| | |
| | | import cn.lili.common.event.TransactionCommitSendMQEvent; |
| | | import cn.lili.common.exception.ServiceException; |
| | | import cn.lili.common.properties.RocketmqCustomProperties; |
| | | import cn.lili.common.security.AuthUser; |
| | | import cn.lili.common.security.OperationalJudgment; |
| | | import cn.lili.common.security.context.UserContext; |
| | | import cn.lili.common.security.enums.UserEnums; |
| | | import cn.lili.common.utils.CurrencyUtil; |
| | | import cn.lili.common.utils.SnowFlake; |
| | | import cn.lili.common.utils.StringUtils; |
| | | import cn.lili.common.vo.ResultMessage; |
| | | import cn.lili.modules.goods.entity.dos.Goods; |
| | | import cn.lili.modules.goods.entity.dos.GoodsSku; |
| | | import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage; |
| | |
| | | import cn.lili.modules.lmk.domain.vo.OrderCountVO; |
| | | import cn.lili.modules.lmk.enums.general.AdminRoleEnum; |
| | | import cn.lili.modules.lmk.enums.general.VirtualGoodsTypeEnum; |
| | | import cn.lili.modules.lmk.mapper.LmkOrderSelectMapper; |
| | | import cn.lili.modules.lmk.service.CouponVirtualService; |
| | | import cn.lili.modules.member.entity.dos.Member; |
| | | import cn.lili.modules.member.entity.dto.MemberAddressDTO; |
| | | import cn.lili.modules.member.entity.dto.UpdateTracesDTO; |
| | | import cn.lili.modules.member.mapper.MemberMapper; |
| | | import cn.lili.modules.order.cart.entity.dto.TradeDTO; |
| | | import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; |
| | |
| | | import cn.lili.modules.order.trade.entity.dos.OrderLog; |
| | | import cn.lili.modules.order.trade.service.OrderLogService; |
| | | import cn.lili.modules.payment.entity.enums.PaymentMethodEnum; |
| | | import cn.lili.modules.permission.entity.dos.AdminUser; |
| | | import cn.lili.modules.permission.service.AdminUserService; |
| | | import cn.lili.modules.permission.service.RoleService; |
| | | import cn.lili.modules.promotion.entity.dos.Coupon; |
| | | import cn.lili.modules.promotion.entity.dos.Pintuan; |
| | | import cn.lili.modules.promotion.service.CouponService; |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import io.reactivex.rxjava3.core.Maybe; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.poi.ss.usermodel.Cell; |
| | | import org.apache.poi.ss.usermodel.Row; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.InputStream; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.net.URLEncoder; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | import cn.lili.modules.permission.entity.dos.Role; |
| | | |
| | | /** |
| | | * 子订单业务层实现 |
| | | * |
| | |
| | | |
| | | @Autowired |
| | | private GoodsSkuService goodsSkuService; |
| | | |
| | | @Autowired |
| | | private LmkOrderSelectMapper lmkOrderSelectMapper; |
| | | |
| | | |
| | | private final static String LOCK_ORDER_NO_MQ="lock_order_no_mq:"; |
| | | private final static String LOCK_EDIT_ORDER_ADDRESS="lock_edit_order_address:"; |
| | | private final static String LOCK_COUPON_CARD="lock_coupon_card:"; |
| | |
| | | String couponName = skuInfo.getCouponName(); |
| | | orderItem.setCouponId(couponId); |
| | | orderItem.setCouponName(couponName); |
| | | }//订单中有定制商品将订单改为定制商品 |
| | | else if (CustomizeFlagEnum.CUSTOMIZE.name().equals(skuInfo.getCustomizeFlag())) { |
| | | order.setCustomizeFlag(CustomizeFlagEnum.CUSTOMIZE.name()); |
| | | } |
| | | } |
| | | orderItems.add(orderItem); |
| | |
| | | queryWrapper.groupBy("o.id"); |
| | | queryWrapper.orderByDesc("o.id"); |
| | | IPage<OrderSimpleVO> page = this.baseMapper.queryByParams(PageUtil.initPage(orderSearchParams), queryWrapper); |
| | | if (needHide){ |
| | | if (!adminUserService.havePermissionRole(AdminRoleEnum.ORDER_INFO_PERMISSION)){ |
| | | for (OrderSimpleVO vo : page.getRecords()){ |
| | | vo.setConsigneeName(CommonUtil.maskName(vo.getConsigneeName())); |
| | | vo.setConsigneeMobile(CommonUtil.maskMobile(vo.getConsigneeMobile())); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return page; |
| | | } |
| | | @Override |
| | | public IPage<OrderSimpleVO> queryShareMineOrder(OrderSearchParams orderSearchParams,Boolean needHide) { |
| | | QueryWrapper queryWrapper = orderSearchParams.queryWrapper(); |
| | | queryWrapper.groupBy("o.id"); |
| | | queryWrapper.orderByDesc("o.id"); |
| | | IPage<OrderSimpleVO> page = this.baseMapper.queryByShareParams(PageUtil.initPage(orderSearchParams), queryWrapper); |
| | | if (needHide){ |
| | | if (!adminUserService.havePermissionRole(AdminRoleEnum.ORDER_INFO_PERMISSION)){ |
| | | for (OrderSimpleVO vo : page.getRecords()){ |
| | |
| | | @Override |
| | | public void queryExportOrder(HttpServletResponse response, OrderSearchParams orderSearchParams) { |
| | | List<OrderExportDTO> orderExportDTOS = this.baseMapper.queryExportOrder(orderSearchParams.queryWrapper()); |
| | | |
| | | if (!adminUserService.havePermissionRole(AdminRoleEnum.ORDER_INFO_PERMISSION)){ |
| | | for (OrderExportDTO vo : orderExportDTOS){ |
| | | vo.setConsigneeName(CommonUtil.maskName(vo.getConsigneeName())); |
| | | vo.setConsigneeMobile(CommonUtil.maskMobile(vo.getConsigneeMobile())); |
| | | } |
| | | } |
| | | XSSFWorkbook workbook = initOrderExportData(orderExportDTOS); |
| | | try { |
| | | // 设置响应头 |
| | | String fileName = URLEncoder.encode("订单列表", "UTF-8"); |
| | | response.setContentType("application/vnd.ms-excel;charset=UTF-8"); |
| | | response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); |
| | | |
| | | ServletOutputStream out = response.getOutputStream(); |
| | | workbook.write(out); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | workbook.close(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | public void queryShareExportOrder(HttpServletResponse response, OrderSearchParams orderSearchParams) { |
| | | List<OrderExportDTO> orderExportDTOS = this.baseMapper.queryShareExportOrder(orderSearchParams.queryWrapper()); |
| | | |
| | | if (!adminUserService.havePermissionRole(AdminRoleEnum.ORDER_INFO_PERMISSION)){ |
| | | for (OrderExportDTO vo : orderExportDTOS){ |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void updateTraces(UpdateTracesDTO updateTracesDTO) { |
| | | LambdaQueryWrapper<OrderPackage> eq = Wrappers.<OrderPackage>lambdaQuery() |
| | | .eq(OrderPackage::getOrderSn, updateTracesDTO.getOrderSn()) |
| | | .eq(OrderPackage::getPackageNo, updateTracesDTO.getPackageNo()); |
| | | OrderPackage one = orderPackageService.getOne(eq); |
| | | if (one == null) { |
| | | throw new ServiceException("当前包裹不存在"); |
| | | } |
| | | |
| | | String logisticsId = updateTracesDTO.getLogisticsId(); |
| | | if (StringUtils.isNotBlank(logisticsId)) { |
| | | Logistics logic = logisticsService.getById(logisticsId); |
| | | one.setLogisticsNo(updateTracesDTO.getLogisticsNo()); |
| | | one.setLogisticsCode(logic.getCode()); |
| | | one.setLogisticsName(logic.getName()); |
| | | orderPackageService.updateById(one); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Traces getMapTraces(String orderSn) { |
| | | //获取订单信息 |
| | | Order order = this.getBySn(orderSn); |
| | |
| | | checkBatchDeliver(orderBatchDeliverDTOList); |
| | | //订单批量发货 |
| | | for (OrderBatchDeliverDTO orderBatchDeliverDTO : orderBatchDeliverDTOList) { |
| | | this.delivery(orderBatchDeliverDTO.getOrderSn(), orderBatchDeliverDTO.getLogisticsNo(), orderBatchDeliverDTO.getLogisticsId()); |
| | | String logisticsNo = orderBatchDeliverDTO.getLogisticsNo(); |
| | | String[] split = logisticsNo.split(","); |
| | | //如果物流单号包含多个,则进行拆单 |
| | | if (split.length > 1) { |
| | | for (int i = 0; i < split.length; i++) { |
| | | PartDeliveryParamsDTO partDeliveryParamsDTO = new PartDeliveryParamsDTO(); |
| | | partDeliveryParamsDTO.setOrderSn(orderBatchDeliverDTO.getOrderSn()); |
| | | partDeliveryParamsDTO.setLogisticsNo(split[i]); |
| | | partDeliveryParamsDTO.setLogisticsId(orderBatchDeliverDTO.getLogisticsId()); |
| | | ArrayList<PartDeliveryDTO> partDeliveryDTOList = new ArrayList<>(); |
| | | partDeliveryParamsDTO.setPartDeliveryDTOList(partDeliveryDTOList); |
| | | if (i == split.length - 1){ |
| | | List<OrderItem> orderItemList = orderItemService.getByOrderSn(orderBatchDeliverDTO.getOrderSn()); |
| | | for (OrderItem orderItem : orderItemList) { |
| | | if (RefundStatusEnum.NO_REFUND.name().equals(orderItem.getIsRefund())) { |
| | | PartDeliveryDTO partDeliveryDTO = new PartDeliveryDTO(); |
| | | partDeliveryDTO.setDeliveryNum(orderItem.getNum()); |
| | | partDeliveryDTO.setOrderItemId(orderItem.getId()); |
| | | partDeliveryDTOList.add(partDeliveryDTO); |
| | | } |
| | | } |
| | | } |
| | | this.partDelivery(partDeliveryParamsDTO); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | orderLogService.saveBatch(orderLogList); |
| | | //判断订单货物是否全部发货完毕 |
| | | Boolean delivery = true; |
| | | log.info("打印订单货物:{}",orderItemList); |
| | | |
| | | //需要再此处判断订单是否有申请售后状态 |
| | | for (OrderItem orderItem : orderItemList) { |
| | | if (orderItem.getDeliverNumber() < orderItem.getNum()) { |
| | | delivery = false; |
| | | break; |
| | | // 先判断是否是未申请售后的订单 |
| | | if (OrderItemAfterSaleStatusEnum.NOT_APPLIED.name().equals(orderItem.getAfterSaleStatus())){ |
| | | // 发货数量小于订单数量则全发 |
| | | log.info("打印发货数量:{},该商品订单数量货物对应的:{}",orderItem.getDeliverNumber(),orderItem.getNum()); |
| | | if (orderItem.getDeliverNumber() < orderItem.getNum()) { |
| | | delivery = false; |
| | | break; |
| | | } |
| | | }else{ |
| | | //全部退回情况 |
| | | if(Objects.equals(orderItem.getReturnGoodsNumber(), orderItem.getNum())){ |
| | | break; |
| | | } |
| | | //存在情况 退回数量不是全部退回而是部分退回 |
| | | if (orderItem.getReturnGoodsNumber() + orderItem.getDeliverNumber() < orderItem.getNum()) { |
| | | delivery = false; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | log.info("delivery状态:{}",delivery); |
| | | //是否全部发货 |
| | | if (delivery) { |
| | | return delivery(orderSn, invoiceNumber, logisticsId); |
| | |
| | | Calendar calendar = Calendar.getInstance(); // 用于日期计算的日历实例 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | int days = 0; |
| | | switch (queryParam.getSearchType()) { |
| | | case "TODAY": |
| | | // 今天:从今天0点到现在 |
| | | calendar.setTime(new Date()); // 重置为当前时间 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); // 小时设为0(24小时制) |
| | | calendar.set(Calendar.MINUTE, 0); // 分钟设为0 |
| | | calendar.set(Calendar.SECOND, 0); // 秒设为0 |
| | | calendar.set(Calendar.MILLISECOND, 0); // 毫秒设为0 |
| | | startTime = calendar.getTime(); // 得到今天0点的Date对象 |
| | | dateList.add(sdf.format(startTime)); |
| | | break; |
| | | case "YESTERDAY": |
| | | // 昨天:从昨天0点到昨天23:59:59.999 |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -1); // 日期减1天(变为昨天) |
| | | //判断是否是按年月查询 |
| | | if (queryParam.getYear() != null && queryParam.getMonth() != null) { |
| | | Date[] dates =CommonUtil.getMonthStartAndEnd(queryParam.getYear(),queryParam.getMonth()); |
| | | startTime = dates[0]; |
| | | endTime = dates[1]; |
| | | System.out.println("开始打印"); |
| | | System.out.println(startTime); |
| | | System.out.println(endTime); |
| | | Calendar tempCalendar = Calendar.getInstance(); |
| | | tempCalendar.setTime(startTime); |
| | | days = tempCalendar.getActualMaximum(Calendar.DAY_OF_MONTH); |
| | | for (int i = 0; i < days; i++) { |
| | | dateList.add(sdf.format(tempCalendar.getTime())); |
| | | tempCalendar.add(Calendar.DATE, 1); // 每天累加1天 |
| | | } |
| | | }else{ |
| | | switch (queryParam.getSearchType()) { |
| | | case "TODAY": |
| | | // 今天:从今天0点到现在 |
| | | calendar.setTime(new Date()); // 重置为当前时间 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); // 小时设为0(24小时制) |
| | | calendar.set(Calendar.MINUTE, 0); // 分钟设为0 |
| | | calendar.set(Calendar.SECOND, 0); // 秒设为0 |
| | | calendar.set(Calendar.MILLISECOND, 0); // 毫秒设为0 |
| | | startTime = calendar.getTime(); // 得到今天0点的Date对象 |
| | | dateList.add(sdf.format(startTime)); |
| | | break; |
| | | case "YESTERDAY": |
| | | // 昨天:从昨天0点到昨天23:59:59.999 |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -1); // 日期减1天(变为昨天) |
| | | |
| | | // 设置昨天0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | // 设置昨天0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | // 设置昨天23:59:59.999 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 23); |
| | | calendar.set(Calendar.MINUTE, 59); |
| | | calendar.set(Calendar.SECOND, 59); |
| | | calendar.set(Calendar.MILLISECOND, 999); |
| | | endTime = calendar.getTime(); |
| | | // 设置昨天23:59:59.999 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 23); |
| | | calendar.set(Calendar.MINUTE, 59); |
| | | calendar.set(Calendar.SECOND, 59); |
| | | calendar.set(Calendar.MILLISECOND, 999); |
| | | endTime = calendar.getTime(); |
| | | |
| | | dateList.add(sdf.format(startTime)); |
| | | break; |
| | | case "LAST_SEVEN": |
| | | // 过去七天:从7天前0点到现在(含今天共7天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -6); // 日期减6天(7天前的今天) |
| | | dateList.add(sdf.format(startTime)); |
| | | break; |
| | | case "LAST_SEVEN": |
| | | // 过去七天:从7天前0点到现在(含今天共7天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -6); // 日期减6天(7天前的今天) |
| | | |
| | | // 设置7天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | // 设置7天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | days = 7; |
| | | // 循环生成7天的日期字符串 |
| | | Calendar tempCalendar = Calendar.getInstance(); |
| | | tempCalendar.setTime(startTime); |
| | | for (int i = 0; i < days; i++) { |
| | | dateList.add(sdf.format(tempCalendar.getTime())); |
| | | tempCalendar.add(Calendar.DATE, 1); // 每天累加1天 |
| | | } |
| | | break; |
| | | case "LAST_THIRTY": |
| | | // 过去30天:从30天前0点到现在(含今天共30天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -29); // 日期减29天(30天前的今天) |
| | | days = 7; |
| | | // 循环生成7天的日期字符串 |
| | | Calendar tempCalendar = Calendar.getInstance(); |
| | | tempCalendar.setTime(startTime); |
| | | for (int i = 0; i < days; i++) { |
| | | dateList.add(sdf.format(tempCalendar.getTime())); |
| | | tempCalendar.add(Calendar.DATE, 1); // 每天累加1天 |
| | | } |
| | | break; |
| | | case "LAST_THIRTY": |
| | | // 过去30天:从30天前0点到现在(含今天共30天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -29); // 日期减29天(30天前的今天) |
| | | |
| | | // 设置30天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | // 设置30天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | days = 30; |
| | | // 循环生成30天的日期字符串 |
| | | Calendar tempCalendar30 = Calendar.getInstance(); |
| | | tempCalendar30.setTime(startTime); |
| | | for (int i = 0; i < days; i++) { |
| | | dateList.add(sdf.format(tempCalendar30.getTime())); |
| | | tempCalendar30.add(Calendar.DATE, 1); // 每天累加1天 |
| | | } |
| | | break; |
| | | default: |
| | | return Result.error("不支持的时间范围类型"); |
| | | days = 30; |
| | | // 循环生成30天的日期字符串 |
| | | Calendar tempCalendar30 = Calendar.getInstance(); |
| | | tempCalendar30.setTime(startTime); |
| | | for (int i = 0; i < days; i++) { |
| | | dateList.add(sdf.format(tempCalendar30.getTime())); |
| | | tempCalendar30.add(Calendar.DATE, 1); // 每天累加1天 |
| | | } |
| | | break; |
| | | default: |
| | | return Result.error("不支持的时间范围类型"); |
| | | } |
| | | } |
| | | List<Map<String, Object>> maps = baseMapper.selectOrderCountByDay(startTime,endTime); |
| | | |
| | | List<Map<String, Object>> maps = lmkOrderSelectMapper.selectOrderCountByDay(startTime,endTime,queryParam.getStoreId()); |
| | | |
| | | Map<String, Long> dayCountMap = maps.stream() |
| | | .collect(Collectors.toMap( |
| | |
| | | List<String> dateList = new ArrayList<>(); |
| | | |
| | | Calendar calendar = Calendar.getInstance(); // 用于日期计算的日历实例 |
| | | for (int i =0;i<=24;i++){ |
| | | for (int i =0;i<24;i++){ |
| | | dateList.add(i + "点"); |
| | | } |
| | | switch (queryParam.getSearchType()) { |
| | | case "TODAY": |
| | | // 今天:从今天0点到现在 |
| | | calendar.setTime(new Date()); // 重置为当前时间 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); // 小时设为0(24小时制) |
| | | calendar.set(Calendar.MINUTE, 0); // 分钟设为0 |
| | | calendar.set(Calendar.SECOND, 0); // 秒设为0 |
| | | calendar.set(Calendar.MILLISECOND, 0); // 毫秒设为0 |
| | | startTime = calendar.getTime(); // 得到今天0点的Date对象 |
| | | break; |
| | | case "YESTERDAY": |
| | | // 昨天:从昨天0点到昨天23:59:59.999 |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -1); // 日期减1天(变为昨天) |
| | | if (queryParam.getYear() != null && queryParam.getMonth() != null) { |
| | | Date[] dates =CommonUtil.getMonthStartAndEnd(queryParam.getYear(),queryParam.getMonth()); |
| | | startTime = dates[0]; |
| | | endTime = dates[1]; |
| | | }else{ |
| | | switch (queryParam.getSearchType()) { |
| | | case "TODAY": |
| | | // 今天:从今天0点到现在 |
| | | calendar.setTime(new Date()); // 重置为当前时间 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); // 小时设为0(24小时制) |
| | | calendar.set(Calendar.MINUTE, 0); // 分钟设为0 |
| | | calendar.set(Calendar.SECOND, 0); // 秒设为0 |
| | | calendar.set(Calendar.MILLISECOND, 0); // 毫秒设为0 |
| | | startTime = calendar.getTime(); // 得到今天0点的Date对象 |
| | | break; |
| | | case "YESTERDAY": |
| | | // 昨天:从昨天0点到昨天23:59:59.999 |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -1); // 日期减1天(变为昨天) |
| | | |
| | | // 设置昨天0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | // 设置昨天0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | // 设置昨天23:59:59.999 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 23); |
| | | calendar.set(Calendar.MINUTE, 59); |
| | | calendar.set(Calendar.SECOND, 59); |
| | | calendar.set(Calendar.MILLISECOND, 999); |
| | | endTime = calendar.getTime(); |
| | | // 设置昨天23:59:59.999 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 23); |
| | | calendar.set(Calendar.MINUTE, 59); |
| | | calendar.set(Calendar.SECOND, 59); |
| | | calendar.set(Calendar.MILLISECOND, 999); |
| | | endTime = calendar.getTime(); |
| | | break; |
| | | case "LAST_SEVEN": |
| | | // 过去七天:从7天前0点到现在(含今天共7天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -6); // 日期减6天(7天前的今天) |
| | | |
| | | break; |
| | | case "LAST_SEVEN": |
| | | // 过去七天:从7天前0点到现在(含今天共7天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -6); // 日期减6天(7天前的今天) |
| | | // 设置7天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | // 设置7天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | break; |
| | | case "LAST_THIRTY": |
| | | // 过去30天:从30天前0点到现在(含今天共30天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -29); // 日期减29天(30天前的今天) |
| | | |
| | | break; |
| | | case "LAST_THIRTY": |
| | | // 过去30天:从30天前0点到现在(含今天共30天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -29); // 日期减29天(30天前的今天) |
| | | // 设置30天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | // 设置30天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | break; |
| | | default: |
| | | return Result.error("不支持的时间范围类型"); |
| | | break; |
| | | default: |
| | | return Result.error("不支持的时间范围类型"); |
| | | } |
| | | } |
| | | List<Map<String, Object>> maps = baseMapper.selectOrderTimePeriod(startTime,endTime); |
| | | |
| | | Map<String, Long> dayCountMap = maps.stream() |
| | | |
| | | |
| | | List<Map<String, Object>> maps = lmkOrderSelectMapper.selectOrderTimePeriod(startTime,endTime,queryParam.getStoreId()); |
| | | List<String> goodsIds = new ArrayList<>(); |
| | | //如果查询条件带了店铺 查询店铺的商品 |
| | | if (StringUtils.isNotBlank(queryParam.getStoreId())){ |
| | | List<Goods> list = new LambdaQueryChainWrapper<>(goodsService.getBaseMapper()) |
| | | .eq(Goods::getDeleteFlag, Boolean.FALSE) |
| | | .eq(Goods::getStoreId, queryParam.getStoreId()) |
| | | .list(); |
| | | goodsIds = list.stream().map(Goods::getId).collect(Collectors.toList()); |
| | | } |
| | | |
| | | |
| | | List<Map<String,Object>> countMap = lmkOrderSelectMapper.selectViewDataCount(startTime,endTime,queryParam.getStoreId(),goodsIds); |
| | | |
| | | |
| | | Map<String, Long> countByDayHour = maps.stream() |
| | | .collect(Collectors.toMap( |
| | | map -> map.get("day").toString(), // 日期字符串(如2023-09-19) |
| | | map -> Long.valueOf(map.get("count").toString()) // 订单数量 |
| | | map -> map.get("hour").toString(), |
| | | map -> Long.valueOf(map.get("count").toString()), |
| | | Long::sum // 如果有重复,累加count |
| | | )); |
| | | |
| | | List<Long> orderCounts = new ArrayList<>(); |
| | | for (String date : dateList) { |
| | | // 核心:存在则取查询结果,不存在则补0 |
| | | orderCounts.add(dayCountMap.getOrDefault(date, 0L)); |
| | | Map<String, Long> viewDataCountByDayHour = countMap.stream() |
| | | .collect(Collectors.toMap( |
| | | map -> map.get("hour").toString(), |
| | | map -> Long.valueOf(map.get("count").toString()), |
| | | Long::sum |
| | | )); |
| | | // 遍历查看结果 |
| | | List<Long> countList = new ArrayList<>(); |
| | | List<Long> viewData = new ArrayList<>(); |
| | | for (int i = 0; i < 24; i++) { |
| | | String hourKey = String.valueOf(i); |
| | | Long viewDataCount = viewDataCountByDayHour.getOrDefault(hourKey,0L); |
| | | Long count = countByDayHour.getOrDefault(hourKey, 0L); |
| | | countList.add(count); |
| | | viewData.add(viewDataCount); |
| | | } |
| | | |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("dateData",dateList); |
| | | map.put("countData",countList); |
| | | map.put("viewData",viewData); |
| | | |
| | | return Result.ok().data(orderCounts); |
| | | return Result.ok().data(map); |
| | | } |
| | | @Override |
| | | public Result getPvUv(StatisticsQueryParam queryParam) { |
| | | Date startTime = null; |
| | | Date endTime = new Date(); // 结束时间默认是当前时间 |
| | | List<String> dateList = new ArrayList<>(); |
| | | Calendar calendar = Calendar.getInstance(); // 用于日期计算的日历实例 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | int days = 0; |
| | | if (queryParam.getYear() != null && queryParam.getMonth() != null) { |
| | | Date[] dates =CommonUtil.getMonthStartAndEnd(queryParam.getYear(),queryParam.getMonth()); |
| | | startTime = dates[0]; |
| | | endTime = dates[1]; |
| | | Calendar tempCalendar = Calendar.getInstance(); |
| | | tempCalendar.setTime(startTime); |
| | | days = tempCalendar.getActualMaximum(Calendar.DAY_OF_MONTH); |
| | | for (int i = 0; i < days; i++) { |
| | | dateList.add(sdf.format(tempCalendar.getTime())); |
| | | tempCalendar.add(Calendar.DATE, 1); // 每天累加1天 |
| | | } |
| | | }else{ |
| | | switch (queryParam.getSearchType()) { |
| | | case "TODAY": |
| | | // 今天:从今天0点到现在 |
| | | calendar.setTime(new Date()); // 重置为当前时间 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); // 小时设为0(24小时制) |
| | | calendar.set(Calendar.MINUTE, 0); // 分钟设为0 |
| | | calendar.set(Calendar.SECOND, 0); // 秒设为0 |
| | | calendar.set(Calendar.MILLISECOND, 0); // 毫秒设为0 |
| | | startTime = calendar.getTime(); // 得到今天0点的Date对象 |
| | | dateList.add(sdf.format(startTime)); |
| | | break; |
| | | case "YESTERDAY": |
| | | // 昨天:从昨天0点到昨天23:59:59.999 |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -1); // 日期减1天(变为昨天) |
| | | |
| | | // 设置昨天0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | // 设置昨天23:59:59.999 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 23); |
| | | calendar.set(Calendar.MINUTE, 59); |
| | | calendar.set(Calendar.SECOND, 59); |
| | | calendar.set(Calendar.MILLISECOND, 999); |
| | | endTime = calendar.getTime(); |
| | | dateList.add(sdf.format(startTime)); |
| | | break; |
| | | case "LAST_SEVEN": |
| | | // 过去七天:从7天前0点到现在(含今天共7天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -6); // 日期减6天(7天前的今天) |
| | | |
| | | // 设置7天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | days = 7; |
| | | // 循环生成7天的日期字符串 |
| | | Calendar tempCalendar = Calendar.getInstance(); |
| | | tempCalendar.setTime(startTime); |
| | | for (int i = 0; i < days; i++) { |
| | | dateList.add(sdf.format(tempCalendar.getTime())); |
| | | tempCalendar.add(Calendar.DATE, 1); // 每天累加1天 |
| | | } |
| | | break; |
| | | case "LAST_THIRTY": |
| | | // 过去30天:从30天前0点到现在(含今天共30天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -29); // 日期减29天(30天前的今天) |
| | | |
| | | // 设置30天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | days = 30; |
| | | // 循环生成30天的日期字符串 |
| | | Calendar tempCalendar30 = Calendar.getInstance(); |
| | | tempCalendar30.setTime(startTime); |
| | | for (int i = 0; i < days; i++) { |
| | | dateList.add(sdf.format(tempCalendar30.getTime())); |
| | | tempCalendar30.add(Calendar.DATE, 1); // 每天累加1天 |
| | | } |
| | | break; |
| | | default: |
| | | return Result.error("不支持的时间范围类型"); |
| | | } |
| | | } |
| | | List<String> goodsIds = new ArrayList<>(); |
| | | //如果查询条件带了店铺 查询店铺的商品 |
| | | if (StringUtils.isNotBlank(queryParam.getStoreId())){ |
| | | List<Goods> list = new LambdaQueryChainWrapper<>(goodsService.getBaseMapper()) |
| | | .eq(Goods::getDeleteFlag, Boolean.FALSE) |
| | | .eq(Goods::getStoreId, queryParam.getStoreId()) |
| | | .list(); |
| | | goodsIds = list.stream().map(Goods::getId).collect(Collectors.toList()); |
| | | } |
| | | List<Map<String,Object>> maps = lmkOrderSelectMapper.selectPvUv(startTime,endTime,queryParam.getStoreId(),goodsIds); |
| | | Map<String, Long> pvDataMap = maps.stream() |
| | | .collect(Collectors.toMap( |
| | | map -> map.get("day").toString(), |
| | | map -> Long.valueOf(map.get("pvData").toString()), |
| | | Long::sum // 如果有重复,累加count |
| | | )); |
| | | Map<String, Long> uvDataMap = maps.stream() |
| | | .collect(Collectors.toMap( |
| | | map -> map.get("day").toString(), |
| | | map -> Long.valueOf(map.get("uvData").toString()), |
| | | Long::sum // 如果有重复,累加count |
| | | )); |
| | | List<Long> pvData = new ArrayList<>(); |
| | | List<Long> uvData = new ArrayList<>(); |
| | | for (String date: dateList){ |
| | | String dayKey = String.valueOf(date); |
| | | Long pv = pvDataMap.getOrDefault(dayKey,0L); |
| | | Long uv = uvDataMap.getOrDefault(dayKey, 0L); |
| | | pvData.add(pv); |
| | | uvData.add(uv); |
| | | } |
| | | |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("dateData",dateList); |
| | | map.put("pvData",pvData); |
| | | map.put("uvData",uvData); |
| | | return Result.ok().data(map); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public Result gerProductRepurchase(StatisticsQueryParam queryParam) { |
| | | Date startTime = null; |
| | | Date endTime = new Date(); // 结束时间默认是当前时间 |
| | | |
| | | Calendar calendar = Calendar.getInstance(); // 用于日期计算的日历实例 |
| | | |
| | | if (queryParam.getYear() != null && queryParam.getMonth() != null) { |
| | | Date[] dates =CommonUtil.getMonthStartAndEnd(queryParam.getYear(),queryParam.getMonth()); |
| | | startTime = dates[0]; |
| | | endTime = dates[1]; |
| | | }else{ |
| | | switch (queryParam.getSearchType()) { |
| | | case "TODAY": |
| | | // 今天:从今天0点到现在 |
| | | calendar.setTime(new Date()); // 重置为当前时间 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); // 小时设为0(24小时制) |
| | | calendar.set(Calendar.MINUTE, 0); // 分钟设为0 |
| | | calendar.set(Calendar.SECOND, 0); // 秒设为0 |
| | | calendar.set(Calendar.MILLISECOND, 0); // 毫秒设为0 |
| | | startTime = calendar.getTime(); // 得到今天0点的Date对象 |
| | | break; |
| | | case "YESTERDAY": |
| | | // 昨天:从昨天0点到昨天23:59:59.999 |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -1); // 日期减1天(变为昨天) |
| | | |
| | | // 设置昨天0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | // 设置昨天23:59:59.999 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 23); |
| | | calendar.set(Calendar.MINUTE, 59); |
| | | calendar.set(Calendar.SECOND, 59); |
| | | calendar.set(Calendar.MILLISECOND, 999); |
| | | endTime = calendar.getTime(); |
| | | break; |
| | | case "LAST_SEVEN": |
| | | // 过去七天:从7天前0点到现在(含今天共7天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -6); // 日期减6天(7天前的今天) |
| | | |
| | | // 设置7天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | break; |
| | | case "LAST_THIRTY": |
| | | // 过去30天:从30天前0点到现在(含今天共30天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -29); // 日期减29天(30天前的今天) |
| | | |
| | | // 设置30天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | break; |
| | | default: |
| | | return Result.error("不支持的时间范围类型"); |
| | | } |
| | | } |
| | | List<Map<String, Object>> maps = lmkOrderSelectMapper.selectProductRepurchase(startTime,endTime,queryParam.getCurrentLimit(),queryParam.getStoreId()); |
| | | List<String> goodsData = new ArrayList<>(); |
| | | List<BigDecimal> rateData = new ArrayList<>(); |
| | | |
| | | // 遍历结果集,提取数据到集合 |
| | | for (Map<String, Object> map : maps) { |
| | | // 提取商品名(注意:键是resultMap中定义的property值"goodsName") |
| | | if (Objects.nonNull(map.get("goodsName"))) { |
| | | String goodsName = map.get("goodsName").toString(); |
| | | String buyerCount = map.get("buyerCount").toString(); |
| | | String repurchaseBuyerCount = map.get("repurchaseBuyerCount").toString(); |
| | | String format = String.format("%s:购买人数 %s 复购人数%s", goodsName, buyerCount, repurchaseBuyerCount); |
| | | goodsData.add(format); |
| | | } |
| | | |
| | | // 提取复购率(复购率通常是数字类型,这里用BigDecimal接收) |
| | | if (Objects.nonNull(map.get("repurchaseRate"))) { |
| | | // 转换为BigDecimal(根据实际类型调整,也可能是Double等) |
| | | BigDecimal rate = new BigDecimal(map.get("repurchaseRate").toString()).setScale(2, RoundingMode.HALF_UP); |
| | | rateData.add(rate); |
| | | } |
| | | } |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("goodsData",goodsData); |
| | | map.put("rateData",rateData); |
| | | |
| | | return Result.ok().data(map); |
| | | } |
| | | |
| | | /** |
| | |
| | | for (Order unpaidOrder : unpaidOrders) { |
| | | this.systemCancel(unpaidOrder.getSn(), "拼团活动结束订单未付款,系统自动取消订单", false); |
| | | } |
| | | |
| | | } |
| | | List<Order> paidOrders = listMap.get(PayStatusEnum.PAID.name()); |
| | | //如待参团人数大于0,并已开启虚拟成团 |
| | |
| | | orderExportDetailDTO.setPaymentMethod(CharSequenceUtil.isNotBlank(orderExportDTO.getPaymentMethod()) ? PaymentMethodEnum.valueOf(orderExportDTO.getPaymentMethod()).paymentName() : ""); |
| | | orderExportDetailDTO.setClientType(ClientTypeEnum.valueOf(orderExportDTO.getClientType()).value()); |
| | | orderExportDetailDTO.setOrderType(orderExportDTO.getOrderType().equals(OrderTypeEnum.NORMAL.name()) ? "普通订单" : "虚拟订单"); |
| | | orderExportDetailDTO.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.valueOf(orderExportDTO.getAfterSaleStatus()).description()); |
| | | |
| | | String afterSaleStatus = orderExportDTO.getAfterSaleStatus(); |
| | | if (StringUtils.isNotBlank(afterSaleStatus)) { |
| | | try { |
| | | orderExportDetailDTO.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.valueOf(afterSaleStatus).description()); |
| | | } catch (IllegalArgumentException e) { |
| | | // 处理枚举值不存在的情况 |
| | | orderExportDetailDTO.setAfterSaleStatus("未知状态"); |
| | | } |
| | | } else { |
| | | // 设置默认值或空字符串 |
| | | orderExportDetailDTO.setAfterSaleStatus("无售后状态"); |
| | | } |
| | | //时间 |
| | | orderExportDetailDTO.setCreateTime(DateUtil.formatDateTime(orderExportDTO.getCreateTime())); |
| | | orderExportDetailDTO.setPaymentTime(DateUtil.formatDateTime(orderExportDTO.getPaymentTime())); |
| | |
| | | // 创建表头 |
| | | Row header = sheet.createRow(0); |
| | | String[] headers = {"主订单编号", "子订单编号", "选购商品", "商品数量", "商品ID", "商品单价", "订单应付金额", |
| | | "运费", "优惠总金额", "平台优惠", "商家优惠", "商家改价", "支付方式","买家名称", "收件人", "收件人手机号", |
| | | "运费", "优惠总金额", "平台优惠", "商家优惠", "商家改价", "支付方式","会员ID","买家名称", "收件人", "收件人手机号", |
| | | "省", "市", "区", "街道", "详细地址", "买家留言", "订单提交时间", "支付完成时间", "来源", |
| | | "订单状态", "订单类型", "售后状态", "取消原因", "发货时间", "完成时间", "店铺"}; |
| | | |
| | |
| | | row.createCell(0).setCellValue(dto.getOrderSn()); |
| | | row.createCell(1).setCellValue(dto.getOrderItemSn()); |
| | | row.createCell(2).setCellValue(dto.getGoodsName()); |
| | | row.createCell(3).setCellValue(dto.getNum()); |
| | | row.createCell(3).setCellValue(dto.getNum()!=null?dto.getNum():0); |
| | | row.createCell(4).setCellValue(dto.getGoodsId()); |
| | | row.createCell(5).setCellValue(dto.getUnitPrice()!=null?dto.getUnitPrice():0); |
| | | row.createCell(6).setCellValue(dto.getFlowPrice()!=null?dto.getFlowPrice():0); |
| | |
| | | row.createCell(10).setCellValue(dto.getStoreMarketingCost()!=null?dto.getStoreMarketingCost():0); |
| | | row.createCell(11).setCellValue(dto.getUpdatePrice()!=null?dto.getUpdatePrice():0); |
| | | row.createCell(12).setCellValue(dto.getPaymentMethod()); |
| | | row.createCell(13).setCellValue(dto.getMemberId()); |
| | | row.createCell(14).setCellValue(dto.getNickName()); |
| | | |
| | | row.createCell(13).setCellValue(dto.getNickName()); |
| | | |
| | | row.createCell(14).setCellValue(dto.getConsigneeName()); |
| | | row.createCell(15).setCellValue(dto.getConsigneeMobile()); |
| | | row.createCell(16).setCellValue(dto.getProvince()); |
| | | row.createCell(17).setCellValue(dto.getCity()); |
| | | row.createCell(18).setCellValue(dto.getDistrict()); |
| | | row.createCell(19).setCellValue(dto.getStreet()); |
| | | row.createCell(20).setCellValue(dto.getConsigneeDetail()); |
| | | row.createCell(21).setCellValue(dto.getRemark()); |
| | | row.createCell(22).setCellValue(dto.getCreateTime()); |
| | | row.createCell(23).setCellValue(dto.getPaymentTime()); |
| | | row.createCell(24).setCellValue(dto.getClientType()); |
| | | row.createCell(25).setCellValue(dto.getOrderStatus()); |
| | | row.createCell(26).setCellValue(dto.getOrderType()); |
| | | row.createCell(27).setCellValue(dto.getAfterSaleStatus()); |
| | | row.createCell(28).setCellValue(dto.getCancelReason()); |
| | | row.createCell(29).setCellValue(dto.getLogisticsTime()); |
| | | row.createCell(30).setCellValue(dto.getCompleteTime()); |
| | | row.createCell(31).setCellValue(dto.getStoreName()); |
| | | row.createCell(15).setCellValue(dto.getConsigneeName()); |
| | | row.createCell(16).setCellValue(dto.getConsigneeMobile()); |
| | | row.createCell(17).setCellValue(dto.getProvince()); |
| | | row.createCell(18).setCellValue(dto.getCity()); |
| | | row.createCell(19).setCellValue(dto.getDistrict()); |
| | | row.createCell(20).setCellValue(dto.getStreet()); |
| | | row.createCell(21).setCellValue(dto.getConsigneeDetail()); |
| | | row.createCell(22).setCellValue(dto.getRemark()); |
| | | row.createCell(23).setCellValue(dto.getCreateTime()); |
| | | row.createCell(24).setCellValue(dto.getPaymentTime()); |
| | | row.createCell(25).setCellValue(dto.getClientType()); |
| | | row.createCell(26).setCellValue(dto.getOrderStatus()); |
| | | row.createCell(27).setCellValue(dto.getOrderType()); |
| | | row.createCell(28).setCellValue(dto.getAfterSaleStatus()); |
| | | row.createCell(29).setCellValue(dto.getCancelReason()); |
| | | row.createCell(30).setCellValue(dto.getLogisticsTime()); |
| | | row.createCell(31).setCellValue(dto.getCompleteTime()); |
| | | row.createCell(32).setCellValue(dto.getStoreName()); |
| | | } |
| | | |
| | | //修改列宽 |