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 ee0c9d27..f0003384 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 @@ -431,7 +431,56 @@ public class OrderController extends BaseController { response.setNewOrderNum(newMasterOrderCount + newDetailOrderCount); // 统计未排的单量 orderMaster.setOrderStatus(OrderStatus.PLAIN.code()); - response.setPlanOrderNum(orderMasterService.countOrderMasterList(orderMaster)); + orderDetail.setOrderStatus(OrderStatus.PLAIN.code()); + response.setPlanOrderNum(orderMasterService.countOrderMasterList(orderMaster) + orderDetailService.countOrderDetailList(orderDetail)); + // 统计待上门单量 + orderMaster.setOrderStatus(OrderStatus.GOING.code()); + orderDetail.setOrderStatus(OrderStatus.GOING.code()); + response.setWaitServOrderNum(orderMasterService.countOrderMasterList(orderMaster) + orderDetailService.countOrderDetailList(orderDetail)); + // 统计服务中单量 + orderMaster.setOrderStatus(OrderStatus.SERVER.code()); + orderDetail.setOrderStatus(OrderStatus.SERVER.code()); + response.setServingOrderNum(orderMasterService.countOrderMasterList(orderMaster) + orderDetailService.countOrderDetailList(orderDetail)); + // 统计待确认单量 + orderMaster.setOrderStatus(OrderStatus.FINISH_CHECK.code()); + orderDetail.setOrderStatus(OrderStatus.FINISH_CHECK.code()); + response.setWaitSureOrderNum(orderMasterService.countOrderMasterList(orderMaster) + orderDetailService.countOrderDetailList(orderDetail)); + // 统计超时单量 + OrderListRequest orderListRequest = new OrderListRequest(); + orderListRequest.setIsOverTime(true); + orderListRequest.setWorkerId(request.getWorkerId()); + AjaxResult overTimeRes = this.appMixOrderList(orderListRequest); + List overTimeList = (List)overTimeRes.get("data"); + response.setOverTimeOrderNum(overTimeList.size()); + // 统计今日单量 + Calendar today = Calendar.getInstance(); + today.set(Calendar.SECOND, 0); + today.set(Calendar.MINUTE, 0); + today.set(Calendar.HOUR_OF_DAY, 0); + today.set(Calendar.MILLISECOND, 0); + orderDetail.setOrderStatus(OrderStatus.GOING.code()); + orderDetail.setExpectTimeStart(today.getTime()); + today.set(Calendar.SECOND, 23); + today.set(Calendar.MINUTE, 59); + today.set(Calendar.HOUR_OF_DAY, 59); + today.set(Calendar.MILLISECOND, 0); + orderDetail.setExpectTimeEnd(today.getTime()); + response.setTodayOrderNum(orderDetailService.countOrderDetailList(orderDetail)); + // 统计明日单量 + Calendar tomorrow = Calendar.getInstance(); + tomorrow.add(Calendar.DATE, 1); + tomorrow.set(Calendar.SECOND, 0); + tomorrow.set(Calendar.MINUTE, 0); + tomorrow.set(Calendar.HOUR_OF_DAY, 0); + tomorrow.set(Calendar.MILLISECOND, 0); + orderDetail.setOrderStatus(OrderStatus.GOING.code()); + orderDetail.setExpectTimeStart(today.getTime()); + tomorrow.set(Calendar.SECOND, 23); + tomorrow.set(Calendar.MINUTE, 59); + tomorrow.set(Calendar.HOUR_OF_DAY, 59); + tomorrow.set(Calendar.MILLISECOND, 0); + orderDetail.setExpectTimeEnd(today.getTime()); + response.setTomorrowOrderNum(orderDetailService.countOrderDetailList(orderDetail)); } catch (Exception e) { e.printStackTrace(); logger.error(ExceptionUtils.getStackTrace(e)); @@ -476,8 +525,7 @@ public class OrderController extends BaseController { public List getMasterList(OrderMaster orderMaster) { List orderListResponses = new ArrayList<>(); List list = orderMasterService.selectOrderMasterList(orderMaster); - list.forEach(master -> { - // 初始化属性 + for (OrderMaster master : list) {// 初始化属性 OrderListResponse orderListResponse = new OrderListResponse(); List standardList = new ArrayList<>(); @@ -500,6 +548,19 @@ public class OrderController extends BaseController { // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(master.getAddressId()); + SysArea sysArea = sysAreaService.selectById(customerAddress.getCountryId()); + String completeAddress = sysArea.getMergerName().replaceAll(",", "") + customerAddress.getAddress(); + + // 查询是否超时 + List timeoutRecords = new ArrayList<>(); + List detailOrderList = orderDetailService.selectByOrderMasterId(master.getId()); + detailOrderList.stream().forEach(detail -> { + OrderTimeoutRecord timeoutRecord = orderFineRecordService.selectByDetailIdAndStatus(detail.getId(), detail.getOrderStatus()); + if (timeoutRecord != null) { + timeoutRecords.add(timeoutRecord); + } + }); + if (Boolean.TRUE.equals(orderMaster.getIsOverTime()) && timeoutRecords.size() == 0) continue; for (OrderGoods orderGoods : orderStandardList) { OrderStandard orderStandard = new OrderStandard(); @@ -527,21 +588,20 @@ public class OrderController extends BaseController { orderListResponse.setPayType(master.getPayType()); orderListResponse.setOrderMasterCode(master.getCode()); orderListResponse.setStandardList(standardList); - orderListResponse.setAddress(customerAddress.getAddress()); + orderListResponse.setAddress(completeAddress); orderListResponse.setRemark(goods.getRemark()); orderListResponse.setCustomerRemark(master.getRemark()); + orderListResponse.setOrderTimeoutRecords(timeoutRecords); orderListResponses.add(orderListResponse); - }); + } return orderListResponses; } public List getDetailList(OrderDetail orderDetail) { List orderListResponses = new ArrayList<>(); List list = orderDetailService.selectOrderDetailList(orderDetail); - list.forEach(detail -> { - - // 主单信息 + for (OrderDetail detail : list) {// 主单信息 OrderMaster orderMaster = orderMasterService.selectById(detail.getOrderMasterId()); // 初始化属性 OrderListResponse orderListResponse = new OrderListResponse(); @@ -582,6 +642,7 @@ public class OrderController extends BaseController { // 查询是否超时 OrderTimeoutRecord orderTimeoutRecord = orderFineRecordService.selectByDetailIdAndStatus(detail.getId(), detail.getOrderStatus()); Boolean isOverTime = orderTimeoutRecord == null ? false : true; + if (Boolean.TRUE.equals(orderDetail.getIsOverTime()) && !isOverTime) continue; // 编辑返回属性 orderListResponse.setOrderDetailId(detail.getId()); @@ -612,7 +673,7 @@ public class OrderController extends BaseController { orderListResponse.setOrderType(detail.getOrderType()); orderListResponse.setIsOverTime(isOverTime); orderListResponses.add(orderListResponse); - }); + } return orderListResponses; } } diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java index 31e121f6..f3ed3cee 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderMasterController.java @@ -29,7 +29,9 @@ import com.ghy.order.service.OrderDetailService; import com.ghy.order.service.OrderGoodsService; import com.ghy.order.service.OrderMasterService; import com.ghy.payment.domain.FinancialMaster; +import com.ghy.payment.domain.OrderTimeoutRecord; import com.ghy.payment.service.FinancialMasterService; +import com.ghy.payment.service.OrderFineRecordService; import com.ghy.web.pojo.vo.OrderListResponse; import com.ghy.web.pojo.vo.OrderMasterResponseVo; import com.ghy.web.pojo.vo.OrderStandard; @@ -84,6 +86,8 @@ public class OrderMasterController extends BaseController { private FinancialMasterService financialMasterService; @Autowired private GoodsStandardService goodsStandardService; + @Autowired + private OrderFineRecordService orderFineRecordService; @RequiresPermissions("order:master:view") @GetMapping() @@ -123,6 +127,13 @@ public class OrderMasterController extends BaseController { // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(master.getAddressId()); + // 查询是否超时 + List detailOrderList = orderDetailService.selectByOrderMasterId(master.getId()); + List detailOrderIds = detailOrderList.stream().map(OrderDetail::getId).collect(Collectors.toList()); + OrderTimeoutRecord params = new OrderTimeoutRecord(); + params.setOrderDetailIds(detailOrderIds); + List timeoutRecords = orderFineRecordService.selectList(params); + for (OrderGoods orderGoods : orderStandardList) { OrderStandard orderStandard = new OrderStandard(); orderStandard.setStandardName(orderGoods.getGoodsName()); @@ -152,6 +163,7 @@ public class OrderMasterController extends BaseController { orderListResponse.setAddress(customerAddress.getAddress()); orderListResponse.setRemark(goods.getRemark()); orderListResponse.setCustomerRemark(master.getRemark()); + orderListResponse.setOrderTimeoutRecords(timeoutRecords); orderListResponses.add(orderListResponse); }); diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListRequest.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListRequest.java index 63437f60..16d517a0 100644 --- a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListRequest.java +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListRequest.java @@ -21,4 +21,6 @@ public class OrderListRequest { private String goodsName; private Long countryId; + + private Boolean isOverTime; } diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListResponse.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListResponse.java index e62f8e6f..1ed993ce 100644 --- a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListResponse.java +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderListResponse.java @@ -1,5 +1,6 @@ package com.ghy.web.pojo.vo; +import com.ghy.payment.domain.OrderTimeoutRecord; import lombok.Data; import java.math.BigDecimal; @@ -65,6 +66,8 @@ public class OrderListResponse { private Boolean isOverTime; + private List orderTimeoutRecords; + private List standardList; private List orderStandardDetailList; diff --git a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStatisticsResponse.java b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStatisticsResponse.java index 967f3283..94503725 100644 --- a/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStatisticsResponse.java +++ b/ghy-admin/src/main/java/com/ghy/web/pojo/vo/OrderStatisticsResponse.java @@ -12,4 +12,10 @@ import lombok.Data; public class OrderStatisticsResponse { private long planOrderNum; private long newOrderNum; + private long waitServOrderNum; + private long servingOrderNum; + private long waitSureOrderNum; + private long overTimeOrderNum; + private long todayOrderNum; + private long tomorrowOrderNum; } diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java index ec07cfa2..a24bcf76 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderDetail.java @@ -62,4 +62,6 @@ public class OrderDetail extends BaseEntity { private String goodsName; private Long countryId; + + private Boolean isOverTime; } diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java index ee9fc1a7..a68bdccc 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderMaster.java @@ -75,4 +75,6 @@ public class OrderMaster extends BaseEntity { private Integer exceptOrderStatus; + private Boolean isOverTime; + } diff --git a/ghy-payment/src/main/java/com/ghy/payment/domain/OrderTimeoutRecord.java b/ghy-payment/src/main/java/com/ghy/payment/domain/OrderTimeoutRecord.java index 2a0621be..b00ac86e 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/domain/OrderTimeoutRecord.java +++ b/ghy-payment/src/main/java/com/ghy/payment/domain/OrderTimeoutRecord.java @@ -3,6 +3,7 @@ package com.ghy.payment.domain; import lombok.Data; import java.util.Date; +import java.util.List; /** * 订单超时扣款记录表 @@ -19,6 +20,8 @@ public class OrderTimeoutRecord { */ private Long orderDetailId; + private List orderDetailIds; + /** * 超时时的订单状态 */ diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/OrderFineRecordService.java b/ghy-payment/src/main/java/com/ghy/payment/service/OrderFineRecordService.java index 9b8ddd35..b92bef63 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/OrderFineRecordService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/OrderFineRecordService.java @@ -2,6 +2,8 @@ package com.ghy.payment.service; import com.ghy.payment.domain.OrderTimeoutRecord; +import java.util.List; + /** * 订单超时扣款记录接口 * @author ydq @@ -15,4 +17,11 @@ public interface OrderFineRecordService { * @return 超时记录 */ OrderTimeoutRecord selectByDetailIdAndStatus(Long orderDetailId, Integer orderStatus); + + /** + * 查询超时List + * @param params 查询条件 + * @return 超时List + */ + List selectList(OrderTimeoutRecord params); } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/OrderFineRecordServiceImpl.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/OrderFineRecordServiceImpl.java index b71a5cce..5fd5c722 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/OrderFineRecordServiceImpl.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/OrderFineRecordServiceImpl.java @@ -6,6 +6,7 @@ import com.ghy.payment.service.OrderFineRecordService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; /** * @author ydq @@ -22,4 +23,11 @@ public class OrderFineRecordServiceImpl implements OrderFineRecordService { public OrderTimeoutRecord selectByDetailIdAndStatus(Long orderDetailId, Integer orderStatus) { return orderFineRecordMapper.selectByDetailIdAndStatus(orderDetailId, orderStatus); } + + @Override + public List selectList(OrderTimeoutRecord params) { + return orderFineRecordMapper.selectList(params); + } + + } diff --git a/ghy-payment/src/main/resources/mapper/financial/OrderFineRecordMapper.xml b/ghy-payment/src/main/resources/mapper/financial/OrderFineRecordMapper.xml index 284b637d..9b87894e 100644 --- a/ghy-payment/src/main/resources/mapper/financial/OrderFineRecordMapper.xml +++ b/ghy-payment/src/main/resources/mapper/financial/OrderFineRecordMapper.xml @@ -29,6 +29,12 @@ AND order_detail_id = #{orderDetailId} + + AND order_detail_id IN + + #{orderDetailId} + + AND order_status = #{orderStatus}