Browse Source

👎 增加后台商品列表的数据统计字段

sj
Loki 2 years ago
parent
commit
8a36c99ec7
  1. 31
      zsw-bxg/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java
  2. 11
      zsw-bxg/src/main/java/co/yixiang/modules/order/service/YxStoreOrderService.java
  3. 26
      zsw-bxg/src/main/java/co/yixiang/modules/order/service/dto/AdminOrderDto.java
  4. 65
      zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java

31
zsw-bxg/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java

@ -84,8 +84,8 @@ public class StoreOrderController {
this.yxStoreOrderStatusService = yxStoreOrderStatusService;
}
/**@Valid
* 根据商品分类统计订单占比
/**
* @Valid 根据商品分类统计订单占比
*/
@GetMapping("/yxStoreOrder/orderCount")
@ApiOperation(value = "根据商品分类统计订单占比", notes = "根据商品分类统计订单占比", response = ExpressParam.class)
@ -96,6 +96,7 @@ public class StoreOrderController {
/**
* 首页订单/用户等统计
*
* @return OrderTimeDataDto
*/
@GetMapping(value = "/data/count")
@ -106,6 +107,7 @@ public class StoreOrderController {
/**
* 返回本月订单金额与数量chart
*
* @return map
*/
@GetMapping(value = "/data/chart")
@ -118,20 +120,20 @@ public class StoreOrderController {
@ApiOperation(value = "查询订单")
@GetMapping(value = "/yxStoreOrder")
@PreAuthorize("@ss.hasAnyPermissions('admin','YXSTOREORDER_ALL','YXSTOREORDER_SELECT','YXEXPRESS_SELECT')")
public ResponseEntity getYxStoreOrders(YxStoreOrderQueryCriteria criteria,
public ResponseEntity<AdminOrderDto> getYxStoreOrders(YxStoreOrderQueryCriteria criteria,
Pageable pageable,
@RequestParam(name = "orderStatus") String orderStatus,
@RequestParam(name = "orderType") String orderType) {
//增加支持多选类型搜索
Map<String,Object> map;
AdminOrderDto dto;
String[] orderTypeList = orderType.split(",");
if (orderTypeList.length > 1) {//多选方法
map=yxStoreOrderService.queryManyType(orderTypeList, pageable,criteria,orderStatus);
dto = yxStoreOrderService.queryManyType(orderTypeList, pageable, criteria, orderStatus);
} else {
YxStoreOrderQueryCriteria newCriteria = this.handleQuery(criteria, orderStatus, orderType);
map=yxStoreOrderService.queryAll(newCriteria, pageable);
dto = yxStoreOrderService.queryAll(newCriteria, pageable);
}
return new ResponseEntity<>(map, HttpStatus.OK);
return new ResponseEntity<>(dto, HttpStatus.OK);
}
@ApiOperation(value = "根据订单id获取订单详情")
@ -140,6 +142,7 @@ public class StoreOrderController {
public ResponseEntity getYxStoreOrders(@PathVariable Long id) {
return new ResponseEntity<>(yxStoreOrderService.getOrderDetail(id), HttpStatus.OK);
}
@ApiOperation(value = "查询订单当前状态流程")
@GetMapping(value = "/getNowOrderStatus/{id}")
public ResponseEntity getNowOrderStatus(@PathVariable Long id) {
@ -190,6 +193,7 @@ public class StoreOrderController {
return new ResponseEntity(yxOrderNowOrderStatusDto, HttpStatus.OK);
}
public List<YxStoreOrderStatusDto> getOrderStatusDto(List<YxStoreOrderStatus> orderStatusLogList) {
List<YxStoreOrderStatusDto> dtoList = orderStatusLogList.stream().map(log -> {
YxStoreOrderStatusDto dto = generator.convert(log, YxStoreOrderStatusDto.class);
@ -199,6 +203,7 @@ public class StoreOrderController {
}).collect(Collectors.toList());
return dtoList;
}
@ApiOperation(value = "发货")
@PutMapping(value = "/yxStoreOrder")
@PreAuthorize("@ss.hasAnyPermissions('admin','YXSTOREORDER_ALL','YXSTOREORDER_EDIT')")
@ -232,7 +237,6 @@ public class StoreOrderController {
}
@ApiOperation(value = "修改快递单号")
@PutMapping(value = "/yxStoreOrder/updateDelivery")
@PreAuthorize("hasAnyAuthority('admin','YXSTOREORDER_ALL','YXSTOREORDER_EDIT')")
@ -250,7 +254,6 @@ public class StoreOrderController {
}
@ApiOperation(value = "订单核销")
@PutMapping(value = "/yxStoreOrder/check")
@PreAuthorize("@ss.hasAnyPermissions('admin','YXSTOREORDER_ALL','YXSTOREORDER_EDIT')")
@ -362,23 +365,24 @@ public class StoreOrderController {
@RequestParam(name = "listContent") String listContent) throws IOException, ParseException {
List<YxStoreOrderDto> list;
if (StringUtils.isEmpty(listContent)) {
list = (List)getYxStoreList(criteria, pageable, orderStatus, orderType).get("content");
list = getYxStoreList(criteria, pageable, orderStatus, orderType).getContent();
} else {
List<String> idList = JSONArray.parseArray(listContent).toJavaList(String.class);
list = (List)yxStoreOrderService.queryAll(idList).get("content");
list = yxStoreOrderService.queryAll(idList).getContent();
}
yxStoreOrderService.download(list, response);
}
/**
* 下载数据
*
* @param criteria criteria
* @param pageable pageable
* @param orderStatus orderStatus
* @param orderType orderType
* @return Map
*/
private Map<String,Object> getYxStoreList(YxStoreOrderQueryCriteria criteria,
private AdminOrderDto getYxStoreList(YxStoreOrderQueryCriteria criteria,
Pageable pageable,
String orderStatus,
String orderType) {
@ -388,9 +392,9 @@ public class StoreOrderController {
}
/**
* 处理订单查询
*
* @param criteria YxStoreOrderQueryCriteria
* @param orderStatus 订单状态
* @param orderType 订单类型
@ -480,5 +484,4 @@ public class StoreOrderController {
}
}

11
zsw-bxg/src/main/java/co/yixiang/modules/order/service/YxStoreOrderService.java

@ -12,10 +12,7 @@ import co.yixiang.common.service.BaseService;
import co.yixiang.modules.order.domain.YxStoreOrder;
import co.yixiang.modules.order.domain.YxStoreOrderCartInfo;
import co.yixiang.modules.order.param.OrderParam;
import co.yixiang.modules.order.service.dto.OrderCountDto;
import co.yixiang.modules.order.service.dto.OrderTimeDataDto;
import co.yixiang.modules.order.service.dto.YxStoreOrderDto;
import co.yixiang.modules.order.service.dto.YxStoreOrderQueryCriteria;
import co.yixiang.modules.order.service.dto.*;
import co.yixiang.modules.order.vo.ComputeVo;
import co.yixiang.modules.order.vo.ConfirmOrderVo;
import co.yixiang.modules.order.vo.OrderDataVo;
@ -257,7 +254,7 @@ public interface YxStoreOrderService extends BaseService<YxStoreOrder>{
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryManyType(String[] typeList, Pageable pageable,YxStoreOrderQueryCriteria criteria,String orderStatus);
AdminOrderDto queryManyType(String[] typeList, Pageable pageable, YxStoreOrderQueryCriteria criteria, String orderStatus);
/**
* 查询数据分页
@ -265,7 +262,7 @@ public interface YxStoreOrderService extends BaseService<YxStoreOrder>{
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(YxStoreOrderQueryCriteria criteria, Pageable pageable);
AdminOrderDto queryAll(YxStoreOrderQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
@ -293,7 +290,7 @@ public interface YxStoreOrderService extends BaseService<YxStoreOrder>{
*/
YxStoreOrderDto getOrderDetail(Long orderId);
Map<String,Object> queryAll(List<String> ids);
AdminOrderDto queryAll(List<String> ids);

26
zsw-bxg/src/main/java/co/yixiang/modules/order/service/dto/AdminOrderDto.java

@ -0,0 +1,26 @@
package co.yixiang.modules.order.service.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class AdminOrderDto {
@ApiModelProperty("订单列表")
private List<YxStoreOrderDto> content;
@ApiModelProperty("订单总数量")
private Long totalElements;
@ApiModelProperty("商品总数量")
private Integer productCount = 0;
@ApiModelProperty("订单金额")
private BigDecimal orderAmount = BigDecimal.ZERO;
@ApiModelProperty("客户数量")
private Long customerCount = 0L;
}

65
zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java

@ -93,6 +93,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
@ -109,6 +110,7 @@ import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -2408,7 +2410,8 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
@Override
public Map<String, Object> queryManyType(String[] typeList, Pageable pageable,YxStoreOrderQueryCriteria criteria,String orderStatus) {
public AdminOrderDto queryManyType(String[] typeList, Pageable pageable,YxStoreOrderQueryCriteria criteria,String orderStatus) {
LambdaQueryWrapper<YxStoreOrder> queryWrapper =new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(criteria.getOrderId())){
queryWrapper.like(YxStoreOrder::getOrderId,criteria.getOrderId());
@ -2532,6 +2535,10 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
}
});
// 分页前查询数据 这可能出问题
List<YxStoreOrder> beforePageList = this.list(queryWrapper);
getPage(pageable);
PageInfo<YxStoreOrder> page = new PageInfo<>(storeOrderMapper.selectList(queryWrapper));
// List<YxStoreOrderDto> storeOrderDTOS = new ArrayList<>();
@ -2541,9 +2548,25 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
List<YxStoreOrderDto> list=this.newAssemble(page.getList());
Map<String, Object> map = new LinkedHashMap<>(2);
// map.put("content", storeOrderDTOS);
map.put("content", list);
map.put("totalElements", page.getTotal());
return map;
AdminOrderDto dto = new AdminOrderDto();
dto.setContent(list);
dto.setTotalElements(page.getTotal());
// 商品数量
dto.setProductCount(beforePageList.stream().map(YxStoreOrder::getTotalNum).reduce(Integer::sum).orElse(0));
//
dto.setOrderAmount(beforePageList.stream().map(YxStoreOrder::getTotalPrice).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
//
List<Long> uidList = Lists.newArrayList();
long customerCount = beforePageList.stream().filter(yxStoreOrder -> {
boolean flag = !uidList.contains(yxStoreOrder.getUid());
uidList.add(yxStoreOrder.getUid());
return flag;
}).count();
dto.setCustomerCount(customerCount);
return dto;
}
@ -2684,7 +2707,9 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
}
@Override
public Map<String, Object> queryAll(YxStoreOrderQueryCriteria criteria, Pageable pageable) {
public AdminOrderDto queryAll(YxStoreOrderQueryCriteria criteria, Pageable pageable) {
List<YxStoreOrder> beforePageList = queryAll(criteria);
getPage(pageable);
PageInfo<YxStoreOrder> page = new PageInfo<>(queryAll(criteria));
// List<YxStoreOrderDto> storeOrderDTOS = new ArrayList<>();
@ -2695,9 +2720,25 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
List<YxStoreOrderDto> list=this.newAssemble(page.getList());
Map<String, Object> map = new LinkedHashMap<>(2);
// map.put("content", storeOrderDTOS);
map.put("content",list);
map.put("totalElements", page.getTotal());
return map;
AdminOrderDto dto = new AdminOrderDto();
dto.setContent(list);
dto.setTotalElements(page.getTotal());
// 商品数量
dto.setProductCount(beforePageList.stream().map(YxStoreOrder::getTotalNum).reduce(Integer::sum).orElse(0));
//
dto.setOrderAmount(beforePageList.stream().map(YxStoreOrder::getTotalPrice).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
//
List<Long> uidList = Lists.newArrayList();
long customerCount = beforePageList.stream().filter(yxStoreOrder -> {
boolean flag = !uidList.contains(yxStoreOrder.getUid());
uidList.add(yxStoreOrder.getUid());
return flag;
}).count();
dto.setCustomerCount(customerCount);
return dto;
}
@ -2902,7 +2943,7 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
}
@Override
public Map<String, Object> queryAll(List<String> ids) {
public AdminOrderDto queryAll(List<String> ids) {
List<YxStoreOrder> yxStoreOrders = this.list(new LambdaQueryWrapper<YxStoreOrder>().in(YxStoreOrder::getOrderId, ids));
List<YxStoreOrderDto> storeOrderDTOS = new ArrayList<>();
for (YxStoreOrder yxStoreOrder : yxStoreOrders) {
@ -2910,9 +2951,9 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
}
Map<String, Object> map = new LinkedHashMap<>(2);
map.put("content", storeOrderDTOS);
return map;
AdminOrderDto dto = new AdminOrderDto();
dto.setContent(storeOrderDTOS);
return dto;
}

Loading…
Cancel
Save