From 28c6ccd65b3b0fcc606ae8fd39b58d2fd2aac420 Mon Sep 17 00:00:00 2001 From: donqi Date: Wed, 30 Aug 2023 23:20:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=9F=E8=AE=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/order/OrderController.java | 79 ++++++++++++++++++- .../order/OrderDetailController.java | 17 +--- .../ghy/order/service/OrderDetailService.java | 2 + .../service/impl/OrderDetailServiceImpl.java | 20 +++++ 4 files changed, 101 insertions(+), 17 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java index c6a9b8bd..63f5a73f 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java @@ -44,6 +44,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; +import org.springframework.util.StopWatch; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -763,9 +764,7 @@ public class OrderController extends BaseController { orderListRequest.setTimeout(1); orderListRequest.setWorkerId(request.getWorkerId()); orderListRequest.setIsMonitoredOrder(true); - AjaxResult overTimeRes = this.appMixOrderList(orderListRequest); - List overTimeList = (List) overTimeRes.get("data"); - response.setOverTimeOrderNum(overTimeList.size()); + response.setOverTimeOrderNum(this.appMixOrderCount(orderListRequest)); // 统计今日单量 LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); orderDetail.setOrderStatus(OrderStatus.GOING.code()); @@ -789,6 +788,80 @@ public class OrderController extends BaseController { 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 list = orderDetailService.selectOrderDetailList(orderDetailReq); + count+=list.size(); + List allList = new ArrayList<>(); + List masterIdSet = new ArrayList(); + if(orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1){ + // 增加主单下子单有超时的 + OrderMaster param = new OrderMaster(); + param.setWorkerId(orderListRequest.getWorkerId()); + List allOrderMaster = orderMasterService.selectOrderMasterList(param); + StringBuilder ids = new StringBuilder(); + for (OrderMaster model : allOrderMaster) { + List orderDetails = orderDetailService.selectByOrderMasterId(model.getId()); + List 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 masterList = orderMasterService.selectOrderMasterList(orderMasterReq); + allList.addAll(masterList); + // 超时查询需要排除同个师傅的主单子单同时出现 + if (orderListRequest.getTimeout() != null && orderListRequest.getTimeout() == 1) { + // 需要排除同个师傅的主单子单同时出现 + List filteredMasterList = new ArrayList(); + for (OrderMaster master : allList) { + boolean isKeep = false; + // 查询该主单下所有售后中的子单 + OrderDetail detailAfterListOfMasterQry = new OrderDetail(); + detailAfterListOfMasterQry.setOrderMasterCode(master.getCode()); + List tmpDetailListOfMasters = orderDetailService.selectOrderDetailList(detailAfterListOfMasterQry); + List 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; + } + /** * 查询主单子单的混合列表 */ diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java index 552b3af4..bad5b612 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java @@ -1115,7 +1115,7 @@ public class OrderDetailController extends BaseController { @GetMapping("/count") @ResponseBody - public AjaxResult OrderDetailCount(OrderDetail orderDetail) { + public AjaxResult orderDetailCount(OrderDetail orderDetail) { if(StringUtils.isNotEmpty(orderDetail.getWorkerName()) || StringUtils.isNotEmpty(orderDetail.getWorkerPhone())){ Worker param = new Worker(); param.setName(orderDetail.getWorkerName()); @@ -1145,18 +1145,7 @@ public class OrderDetailController extends BaseController { @GetMapping("/after/count") @ResponseBody - public AjaxResult AfterDetailOrderCount(OrderDetail orderDetail) { - AfterServiceRecord afterServiceRecord = new AfterServiceRecord(); - afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE); - List afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord); - // 踢重后的子单ids - List 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)); + public AjaxResult afterDetailOrderCount(OrderDetail orderDetail) { + return AjaxResult.success(orderDetailService.afterDetailOrderCount(orderDetail)); } } diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java index 9db2bf5f..1a6c04d1 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderDetailService.java @@ -186,4 +186,6 @@ public interface OrderDetailService { int insertOrderAddSubtract(OrderAddSubtract body); OrderDetailCount differentStatusOrderCount(OrderDetail orderDetail); + + Long afterDetailOrderCount(OrderDetail orderDetail); } diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index 37a6882f..c61d9fa8 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -26,6 +26,7 @@ import com.ghy.order.domain.*; import com.ghy.order.mapper.OrderAddSubtractMapper; import com.ghy.order.mapper.OrderDetailMapper; import com.ghy.order.mapper.OrderMasterMapper; +import com.ghy.order.service.IAfterServiceRecordService; import com.ghy.order.service.OrderDetailService; import com.ghy.order.service.OrderGoodsService; import com.ghy.order.service.OrderMasterService; @@ -108,6 +109,9 @@ public class OrderDetailServiceImpl implements OrderDetailService { @Resource private CustomerService customerService; + @Resource + private IAfterServiceRecordService afterServiceRecordService; + // Adapay 手续费率 默认0.008 @Value("${adapay.fee_rate:0.008}") private String feeRate; @@ -1017,4 +1021,20 @@ public class OrderDetailServiceImpl implements OrderDetailService { public OrderDetailCount differentStatusOrderCount(OrderDetail orderDetail) { return orderDetailMapper.differentStatusOrderCount(orderDetail); } + + @Override + public Long afterDetailOrderCount(OrderDetail orderDetail) { + AfterServiceRecord afterServiceRecord = new AfterServiceRecord(); + afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE); + List afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord); + // 踢重后的子单ids + List 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); + } }