优化统计接口速度
This commit is contained in:
parent
a5ad79dc0e
commit
28c6ccd65b
|
|
@ -44,6 +44,7 @@ import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
import org.springframework.util.StopWatch;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
@ -763,9 +764,7 @@ public class OrderController extends BaseController {
|
||||||
orderListRequest.setTimeout(1);
|
orderListRequest.setTimeout(1);
|
||||||
orderListRequest.setWorkerId(request.getWorkerId());
|
orderListRequest.setWorkerId(request.getWorkerId());
|
||||||
orderListRequest.setIsMonitoredOrder(true);
|
orderListRequest.setIsMonitoredOrder(true);
|
||||||
AjaxResult overTimeRes = this.appMixOrderList(orderListRequest);
|
response.setOverTimeOrderNum(this.appMixOrderCount(orderListRequest));
|
||||||
List<OrderListResponse> overTimeList = (List) overTimeRes.get("data");
|
|
||||||
response.setOverTimeOrderNum(overTimeList.size());
|
|
||||||
// 统计今日单量
|
// 统计今日单量
|
||||||
LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
|
LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
|
||||||
orderDetail.setOrderStatus(OrderStatus.GOING.code());
|
orderDetail.setOrderStatus(OrderStatus.GOING.code());
|
||||||
|
|
@ -789,6 +788,80 @@ public class OrderController extends BaseController {
|
||||||
return AjaxResult.success(response);
|
return AjaxResult.success(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long appMixOrderCount(OrderListRequest orderListRequest){
|
||||||
|
long count = 0;
|
||||||
|
|
||||||
|
// 校验参数
|
||||||
|
Assert.notNull(orderListRequest.getWorkerId(), "师傅id不能为空");
|
||||||
|
|
||||||
|
// 查询子单
|
||||||
|
OrderDetail orderDetailReq = new OrderDetail();
|
||||||
|
BeanUtils.copyProperties(orderListRequest, orderDetailReq);
|
||||||
|
List<OrderDetail> list = orderDetailService.selectOrderDetailList(orderDetailReq);
|
||||||
|
count+=list.size();
|
||||||
|
List<OrderMaster> allList = new ArrayList<>();
|
||||||
|
List<Long> masterIdSet = new ArrayList<Long>();
|
||||||
|
if(orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1){
|
||||||
|
// 增加主单下子单有超时的
|
||||||
|
OrderMaster param = new OrderMaster();
|
||||||
|
param.setWorkerId(orderListRequest.getWorkerId());
|
||||||
|
List<OrderMaster> allOrderMaster = orderMasterService.selectOrderMasterList(param);
|
||||||
|
StringBuilder ids = new StringBuilder();
|
||||||
|
for (OrderMaster model : allOrderMaster) {
|
||||||
|
List<OrderDetail> orderDetails = orderDetailService.selectByOrderMasterId(model.getId());
|
||||||
|
List<OrderDetail> result = orderDetails.stream().filter(s -> s.getTimeout().equals(1)).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isNotEmpty(result)) {
|
||||||
|
masterIdSet.add(model.getId());
|
||||||
|
ids.append(model.getId()).append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(ids.length() > 0){
|
||||||
|
OrderMaster timeOutMaster = new OrderMaster();
|
||||||
|
timeOutMaster.setOrderMasterIds(ids.substring(0, ids.length() - 1));
|
||||||
|
allList.addAll(orderMasterService.selectOrderMasterList(timeOutMaster));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询主单
|
||||||
|
OrderMaster orderMasterReq = new OrderMaster();
|
||||||
|
BeanUtils.copyProperties(orderListRequest, orderMasterReq);
|
||||||
|
orderMasterReq.setExceptOrderMasterIds(masterIdSet);
|
||||||
|
List<OrderMaster> masterList = orderMasterService.selectOrderMasterList(orderMasterReq);
|
||||||
|
allList.addAll(masterList);
|
||||||
|
// 超时查询需要排除同个师傅的主单子单同时出现
|
||||||
|
if (orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1) {
|
||||||
|
// 需要排除同个师傅的主单子单同时出现
|
||||||
|
List<OrderMaster> filteredMasterList = new ArrayList<OrderMaster>();
|
||||||
|
for (OrderMaster master : allList) {
|
||||||
|
boolean isKeep = false;
|
||||||
|
// 查询该主单下所有售后中的子单
|
||||||
|
OrderDetail detailAfterListOfMasterQry = new OrderDetail();
|
||||||
|
detailAfterListOfMasterQry.setOrderMasterCode(master.getCode());
|
||||||
|
List<OrderDetail> tmpDetailListOfMasters = orderDetailService.selectOrderDetailList(detailAfterListOfMasterQry);
|
||||||
|
List<OrderListResponse> detailListOfMasters = new ArrayList<>();
|
||||||
|
tmpDetailListOfMasters.forEach(model->{
|
||||||
|
OrderListResponse response = new OrderListResponse();
|
||||||
|
BeanUtils.copyProperties(model, response);
|
||||||
|
detailListOfMasters.add(response);
|
||||||
|
});
|
||||||
|
for (OrderListResponse detailListOfMaster : detailListOfMasters) {
|
||||||
|
if (!detailListOfMaster.getWorkerId().equals(orderListRequest.getWorkerId())) {
|
||||||
|
isKeep = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isKeep) {
|
||||||
|
filteredMasterList.add(master);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count+=filteredMasterList.size();
|
||||||
|
} else {
|
||||||
|
count+=masterList.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询主单子单的混合列表
|
* 查询主单子单的混合列表
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1115,7 +1115,7 @@ public class OrderDetailController extends BaseController {
|
||||||
|
|
||||||
@GetMapping("/count")
|
@GetMapping("/count")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult OrderDetailCount(OrderDetail orderDetail) {
|
public AjaxResult orderDetailCount(OrderDetail orderDetail) {
|
||||||
if(StringUtils.isNotEmpty(orderDetail.getWorkerName()) || StringUtils.isNotEmpty(orderDetail.getWorkerPhone())){
|
if(StringUtils.isNotEmpty(orderDetail.getWorkerName()) || StringUtils.isNotEmpty(orderDetail.getWorkerPhone())){
|
||||||
Worker param = new Worker();
|
Worker param = new Worker();
|
||||||
param.setName(orderDetail.getWorkerName());
|
param.setName(orderDetail.getWorkerName());
|
||||||
|
|
@ -1145,18 +1145,7 @@ public class OrderDetailController extends BaseController {
|
||||||
|
|
||||||
@GetMapping("/after/count")
|
@GetMapping("/after/count")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult AfterDetailOrderCount(OrderDetail orderDetail) {
|
public AjaxResult afterDetailOrderCount(OrderDetail orderDetail) {
|
||||||
AfterServiceRecord afterServiceRecord = new AfterServiceRecord();
|
return AjaxResult.success(orderDetailService.afterDetailOrderCount(orderDetail));
|
||||||
afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE);
|
|
||||||
List<AfterServiceRecord> afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord);
|
|
||||||
// 踢重后的子单ids
|
|
||||||
List<Long> detailIds = afterServiceRecordList.stream().map(AfterServiceRecord::getOrderDetailId).distinct().collect(Collectors.toList());
|
|
||||||
String ids = StringUtils.join(detailIds, ",");
|
|
||||||
if (StringUtils.isNotEmpty(ids)) {
|
|
||||||
orderDetail.setOrderDetailIds(ids);
|
|
||||||
} else {
|
|
||||||
orderDetail.setOrderDetailIds("0");
|
|
||||||
}
|
|
||||||
return AjaxResult.success(orderDetailService.countOrderDetailList(orderDetail));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -186,4 +186,6 @@ public interface OrderDetailService {
|
||||||
int insertOrderAddSubtract(OrderAddSubtract body);
|
int insertOrderAddSubtract(OrderAddSubtract body);
|
||||||
|
|
||||||
OrderDetailCount differentStatusOrderCount(OrderDetail orderDetail);
|
OrderDetailCount differentStatusOrderCount(OrderDetail orderDetail);
|
||||||
|
|
||||||
|
Long afterDetailOrderCount(OrderDetail orderDetail);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import com.ghy.order.domain.*;
|
||||||
import com.ghy.order.mapper.OrderAddSubtractMapper;
|
import com.ghy.order.mapper.OrderAddSubtractMapper;
|
||||||
import com.ghy.order.mapper.OrderDetailMapper;
|
import com.ghy.order.mapper.OrderDetailMapper;
|
||||||
import com.ghy.order.mapper.OrderMasterMapper;
|
import com.ghy.order.mapper.OrderMasterMapper;
|
||||||
|
import com.ghy.order.service.IAfterServiceRecordService;
|
||||||
import com.ghy.order.service.OrderDetailService;
|
import com.ghy.order.service.OrderDetailService;
|
||||||
import com.ghy.order.service.OrderGoodsService;
|
import com.ghy.order.service.OrderGoodsService;
|
||||||
import com.ghy.order.service.OrderMasterService;
|
import com.ghy.order.service.OrderMasterService;
|
||||||
|
|
@ -108,6 +109,9 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
@Resource
|
@Resource
|
||||||
private CustomerService customerService;
|
private CustomerService customerService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IAfterServiceRecordService afterServiceRecordService;
|
||||||
|
|
||||||
// Adapay 手续费率 默认0.008
|
// Adapay 手续费率 默认0.008
|
||||||
@Value("${adapay.fee_rate:0.008}")
|
@Value("${adapay.fee_rate:0.008}")
|
||||||
private String feeRate;
|
private String feeRate;
|
||||||
|
|
@ -1017,4 +1021,20 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
public OrderDetailCount differentStatusOrderCount(OrderDetail orderDetail) {
|
public OrderDetailCount differentStatusOrderCount(OrderDetail orderDetail) {
|
||||||
return orderDetailMapper.differentStatusOrderCount(orderDetail);
|
return orderDetailMapper.differentStatusOrderCount(orderDetail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long afterDetailOrderCount(OrderDetail orderDetail) {
|
||||||
|
AfterServiceRecord afterServiceRecord = new AfterServiceRecord();
|
||||||
|
afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE);
|
||||||
|
List<AfterServiceRecord> afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord);
|
||||||
|
// 踢重后的子单ids
|
||||||
|
List<Long> detailIds = afterServiceRecordList.stream().map(AfterServiceRecord::getOrderDetailId).distinct().collect(Collectors.toList());
|
||||||
|
String ids = StringUtils.join(detailIds, ",");
|
||||||
|
if (StringUtils.isNotEmpty(ids)) {
|
||||||
|
orderDetail.setOrderDetailIds(ids);
|
||||||
|
} else {
|
||||||
|
orderDetail.setOrderDetailIds("0");
|
||||||
|
}
|
||||||
|
return this.countOrderDetailList(orderDetail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue