From 043d8cf9f9e2d46f7736a97bf6303bdd142098dd Mon Sep 17 00:00:00 2001 From: donqi Date: Thu, 15 Jun 2023 00:17:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=AE=A2=E5=8D=95=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/OrderDetailController.java | 60 +++- .../ghy/web/pojo/vo/OrderListResponse.java | 3 + .../resources/templates/order/master.html | 316 ++++++++++++++---- .../resources/templates/order/pc-master.html | 13 +- .../java/com/ghy/order/domain/OrderCount.java | 25 ++ .../com/ghy/order/domain/OrderDetail.java | 21 +- .../ghy/order/domain/OrderDetailCount.java | 12 + .../ghy/order/domain/OrderMasterCount.java | 13 +- .../ghy/order/mapper/OrderDetailMapper.java | 3 + .../ghy/order/service/OrderDetailService.java | 6 +- .../service/impl/OrderDetailServiceImpl.java | 5 + .../mapper/order/OrderDetailMapper.xml | 46 +++ 12 files changed, 441 insertions(+), 82 deletions(-) create mode 100644 ghy-order/src/main/java/com/ghy/order/domain/OrderCount.java create mode 100644 ghy-order/src/main/java/com/ghy/order/domain/OrderDetailCount.java 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 ee0424e5..e7df2abd 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 @@ -112,6 +112,10 @@ public class OrderDetailController extends BaseController { @PostMapping("/list") @ResponseBody public TableDataInfo list(OrderDetail orderDetail) { + if (orderDetail.getSearchAfterList() !=null && orderDetail.getSearchAfterList()) { + return this.afterServiceList(orderDetail); + } + if(StringUtils.isNotEmpty(orderDetail.getWorkerName()) || StringUtils.isNotEmpty(orderDetail.getWorkerPhone())){ Worker param = new Worker(); param.setName(orderDetail.getWorkerName()); @@ -150,7 +154,7 @@ public class OrderDetailController extends BaseController { List financialMasters = financialMasterService.selectByOrderMasterIds(orderMasterIds); Map financialMasterMap = financialMasters .stream().collect(Collectors.toMap(FinancialMaster::getOrderMasterId, x -> x, (x, y) -> y)); - + Set orderDetailIds = orderDetails.stream().map(OrderDetail::getId).collect(Collectors.toSet()); Map financialDetailMap = financialDetailService.selectByOrderDetailIds(orderDetailIds) .stream().collect(Collectors.toMap(FinancialDetail::getOrderDetailId, x -> x, (x, y) -> y)); @@ -599,6 +603,7 @@ public class OrderDetailController extends BaseController { orderListResponse.setOrderDetailCode(detail.getCode()); orderListResponse.setOrderMasterId(detail.getOrderMasterId()); orderListResponse.setOrderMasterCode(detail.getOrderMasterCode()); + orderListResponse.setGoods(goods); orderListResponse.setGoodsName(goods.getGoodsName()); orderListResponse.setGoodsLogoUrl(goods.getGoodsImgUrl()); orderListResponse.setDiscountMoney(financialDetail.getDiscountMoney()); @@ -995,4 +1000,57 @@ public class OrderDetailController extends BaseController { int i = orderDetailService.insertOrderAddSubtract(body); return AjaxResult.success(i); } + + @GetMapping("/differentStatus/count") + @ResponseBody + public AjaxResult differentStatusOrderCount(OrderDetail orderDetail) { + return AjaxResult.success(orderDetailService.differentStatusOrderCount(orderDetail)); + } + + @GetMapping("/count") + @ResponseBody + public AjaxResult OrderDetailCount(OrderDetail orderDetail) { + if(StringUtils.isNotEmpty(orderDetail.getWorkerName()) || StringUtils.isNotEmpty(orderDetail.getWorkerPhone())){ + Worker param = new Worker(); + param.setName(orderDetail.getWorkerName()); + param.setPhone(orderDetail.getWorkerPhone()); + List workList = workerService.getWorkList(param); + List ids = workList.stream().map(Worker::getWorkerId).collect(Collectors.toList()); + orderDetail.setWorkerIds(ids); + if(CollectionUtils.isEmpty(ids)){ + return AjaxResult.success(0); + } + } + if(orderDetail.getSysPayStatus() != null){ + FinancialMaster param = new FinancialMaster(); + param.setPayStatus(orderDetail.getSysPayStatus()); + List financialMasters = financialMasterService.selectFinancialMasterList(param); + List masterIds = financialMasters.stream().map(FinancialMaster::getOrderMasterId).collect(Collectors.toList()); + orderDetail.setMasterIds(masterIds); + if(CollectionUtils.isEmpty(masterIds)){ + return AjaxResult.success(0); + } + } + if (this.getSysUser().getDept().getParentId() != 101) { + orderDetail.setDeptId(this.getSysUser().getDept().getParentId()); + } + return AjaxResult.success(orderDetailService.countOrderDetailList(orderDetail)); + } + + @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)); + } } 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 026c8b62..2b13db58 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 @@ -2,6 +2,7 @@ package com.ghy.web.pojo.vo; import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonFormat; +import com.ghy.goods.domain.Goods; import com.ghy.goods.domain.GoodsArea; import com.ghy.order.domain.AfterServiceRecord; import com.ghy.payment.domain.FinancialChangeRecord; @@ -149,4 +150,6 @@ public class OrderListResponse { private Integer timeoutFineTimes; private String orderMode; + + private Goods goods; } diff --git a/ghy-admin/src/main/resources/templates/order/master.html b/ghy-admin/src/main/resources/templates/order/master.html index 4dc77cb3..6afe8aa7 100644 --- a/ghy-admin/src/main/resources/templates/order/master.html +++ b/ghy-admin/src/main/resources/templates/order/master.html @@ -50,6 +50,12 @@ .long-input { width: 400px; } + + .active-condition-btn { + background-color: #1c84c6; + border-color: #1c84c6; + color: #fff; + } @@ -62,55 +68,62 @@ - -
- - -
+ + + +
- +
- +
- +
- -
-
- - - +
+ + + + + + + + +
+
-
- + @@ -304,6 +328,7 @@ var editFlag = [[${@permission.hasPermi('order:order:edit')}]]; var prefix = ctx + "order/detail"; + var customParams = {}; $(function () { var panehHidden = false; @@ -367,6 +392,110 @@ }) changeOrderMode(); + + + $.ajax({ + type: "GET", + dataType:"json", + url: prefix + '/differentStatus/count', + success: function (result) { + if (result.code == web_status.SUCCESS) { + $('#newOrderNum').text(result.data.newOrderNum); + $('#acceptedOrderNum').text(result.data.acceptedOrderNum); + $('#canceledOrderNum').text(result.data.canceledOrderNum); + $('.confirmingOrderNum').text(result.data.confirmingOrderNum); + $('#finishedOrderNum').text(result.data.finishedOrderNum); + $('#servingOrderNum').text(result.data.servingOrderNum); + $('#waitForDoorOrderNum').text(result.data.waitForDoorOrderNum); + } else { + $.modal.msgError("数据加载错误,请重试!") + } + } + }) + + + $.ajax({ + type: "GET", + dataType:"json", + url: prefix + '/differentStatus/count', + data: {timeout: 1}, + success: function (result) { + if (result.code == web_status.SUCCESS) { + $('#newTimeoutOrderNum').text(result.data.newOrderNum); + $('.acceptedTimeoutOrderNum').text(result.data.acceptedOrderNum); + $('#servingTimeoutOrderNum').text(result.data.servingOrderNum); + $('#waitForDoorTimeoutOrderNum').text(result.data.waitForDoorOrderNum); + } else { + $.modal.msgError("数据加载错误,请重试!") + } + } + }) + + + $.ajax({ + type: "GET", + dataType:"json", + url: prefix + '/count', + data: {sysPayStatus: 0}, + success: function (result) { + if (result.code == web_status.SUCCESS) { + $('#nonPaidOrderNum').text(result.data); + } else { + $.modal.msgError("数据加载错误,请重试!") + } + } + }) + + + var date = new Date(); + $.ajax({ + type: "GET", + dataType:"json", + url: prefix + '/count', + data: { + orderStatus: 2, + expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00", + expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 23:59:59" + }, + success: function (result) { + if (result.code == web_status.SUCCESS) { + $('#todayOrderNum').text(result.data); + } else { + $.modal.msgError("数据加载错误,请重试!") + } + } + }) + $.ajax({ + type: "GET", + dataType:"json", + url: prefix + '/count', + data: { + orderStatus: 2, + expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 00:00:00", + expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 23:59:59" + }, + success: function (result) { + if (result.code == web_status.SUCCESS) { + $('#tomorrowOrderNum').text(result.data); + } else { + $.modal.msgError("数据加载错误,请重试!") + } + } + }) + + + $.ajax({ + type: "GET", + dataType:"json", + url: prefix + '/after/count', + success: function (result) { + if (result.code == web_status.SUCCESS) { + $('#afterServiceOrderNum').text(result.data); + } else { + $.modal.msgError("数据加载错误,请重试!") + } + } + }) }); function changeOrderMode(orderMode) { @@ -433,6 +562,7 @@ var options = { url: prefix + "/list", exportUrl: prefix + "/export", + queryParams: queryParams, sortName: "createTime", sortOrder: "desc", modalName: "订单", @@ -544,6 +674,12 @@ $.table.init(options); } + function queryParams(params) { + var search = $.table.queryParams(params); + Object.assign(search, customParams) + return search; + } + function detail(id) { var url = "order/goods?orderId=" + id; $.modal.open("商品信息", url); @@ -563,8 +699,66 @@ }); } - function searchByOrderStatus(orderStatus) { - $('#orderStatus').val(orderStatus); + function changeConditionBtnChosenStyle(e) { + $('.condition-btn .btn').removeClass('active-condition-btn'); + if (e) { + $(e).addClass('active-condition-btn'); + } + } + + function selectConditionBtn(e, params = {}) { + changeConditionBtnChosenStyle(e); + searchOrderList(params) + } + + function selectOnDoorOrderToday(e) { + changeConditionBtnChosenStyle(e); + var date = new Date(); + selectConditionBtn(e, { + orderStatus: 2, + expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00", + expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 23:59:59" + }) + } + + function selectOnDoorOrderTomorrow(e) { + changeConditionBtnChosenStyle(e); + var date = new Date(); + selectConditionBtn(e, { + orderStatus: 2, + expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 00:00:00", + expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 23:59:59" + }) + } + + function searchOrderList(params) { + customParams = params; + $.table.search(); + } + + function searchByForm() { + let params = { + createTimeStart: $('#createTimeStart').val() ? $('#createTimeStart').val() + " 00:00:00" : undefined, + createTimeEnd: $('#createTimeEnd').val() ? $('#createTimeEnd').val() + " 23:59:59" : undefined, + workBeginTimeStart: $('#workBeginTimeStart').val(), + workBeginTimeEnd: $('#workBeginTimeEnd').val() ? $('#workBeginTimeEnd').val() + " 23:59:59" : undefined, + workFinishTimeStart: $('#workFinishTimeStart').val(), + workFinishTimeEnd: $('#workFinishTimeEnd').val() ? $('#workFinishTimeEnd').val() + " 23:59:59" : undefined, + storeName: $('#storeName').val(), + storePhone: $('#storePhone').val(), + workerName: $('#workerName').val(), + workerPhone: $('#workerPhone').val(), + keyWords: $('#keyWords').val() + } + + customParams = Object.assign(customParams, params); + $.table.search(); + } + + function resetForm() { + $.form.reset(); + customParams = {}; + changeConditionBtnChosenStyle(); $.table.search(); } diff --git a/ghy-admin/src/main/resources/templates/order/pc-master.html b/ghy-admin/src/main/resources/templates/order/pc-master.html index 043f5ef2..3154d5ed 100644 --- a/ghy-admin/src/main/resources/templates/order/pc-master.html +++ b/ghy-admin/src/main/resources/templates/order/pc-master.html @@ -118,11 +118,11 @@ 明日待上门 (0) - + 售后 (0) - + 急报中 (0) @@ -153,7 +153,7 @@
@@ -555,6 +555,13 @@ $.table.search(); } + function resetForm() { + $.form.reset(); + customParams = {}; + changeConditionBtnChosenStyle(); + $.table.search(); + } + function showPayQrcode(id) { var url = "payQrcode/" + id; diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderCount.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderCount.java new file mode 100644 index 00000000..6af1608a --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderCount.java @@ -0,0 +1,25 @@ +package com.ghy.order.domain; + +import lombok.Data; + +/** + * @description: 订单通用统计实体 + * @author: yangdanqi + * @date: 2023/6/14 + */ +@Data +public class OrderCount { + private Integer newOrderNum; + + private Integer acceptedOrderNum; + + private Integer waitForDoorOrderNum; + + private Integer servingOrderNum; + + private Integer confirmingOrderNum; + + private Integer finishedOrderNum; + + private Integer canceledOrderNum; +} 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 379fc92e..03a42d57 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 @@ -8,8 +8,10 @@ import com.ghy.common.enums.PayTypeEnum; import com.ghy.goods.domain.Goods; import com.ghy.worker.domain.Worker; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -45,11 +47,11 @@ public class OrderDetail extends BaseEntity { @Excel(name = "消费者电话", cellType = Excel.ColumnType.STRING) private String customerPhone; - + private String addressPhone; private String addressName; - + private String address; @Excel(name = "订单类型", cellType = Excel.ColumnType.NUMERIC) @@ -179,4 +181,19 @@ public class OrderDetail extends BaseEntity { private List masterIds; + private Boolean searchAfterList; + + private Date workBeginTimeStart; + + private Date workBeginTimeEnd; + + private Date workFinishTimeStart; + + private Date workFinishTimeEnd; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTimeStart; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTimeEnd; } diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderDetailCount.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderDetailCount.java new file mode 100644 index 00000000..39a324af --- /dev/null +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderDetailCount.java @@ -0,0 +1,12 @@ +package com.ghy.order.domain; + +import lombok.Data; + +/** + * @description: 子单统计实体 + * @author: yangdanqi + * @date: 2023/6/14 + */ +@Data +public class OrderDetailCount extends OrderCount { +} diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderMasterCount.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderMasterCount.java index b3a0552e..812295cf 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderMasterCount.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderMasterCount.java @@ -8,16 +8,5 @@ import lombok.Data; * @date: 2023/6/7 */ @Data -public class OrderMasterCount { - private Integer acceptedOrderNum; - - private Integer waitForDoorOrderNum; - - private Integer servingOrderNum; - - private Integer confirmingOrderNum; - - private Integer finishedOrderNum; - - private Integer canceledOrderNum; +public class OrderMasterCount extends OrderCount { } diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java index 97ff8196..bd314047 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderDetailMapper.java @@ -1,6 +1,7 @@ package com.ghy.order.mapper; import com.ghy.order.domain.OrderDetail; +import com.ghy.order.domain.OrderDetailCount; import com.ghy.order.domain.OrderStatusCount; import org.apache.ibatis.annotations.Param; @@ -114,4 +115,6 @@ public interface OrderDetailMapper { @Param("drawCashTime") Date drawCashTime, @Param("arrivalTime") Date arrivalTime); int deleteByMaster(Long masterId); + + OrderDetailCount differentStatusOrderCount(OrderDetail 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 0a903973..9db2bf5f 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 @@ -1,9 +1,7 @@ package com.ghy.order.service; import com.ghy.common.enums.OrderStatus; -import com.ghy.order.domain.OrderAddSubtract; -import com.ghy.order.domain.OrderDetail; -import com.ghy.order.domain.OrderStatusCount; +import com.ghy.order.domain.*; import com.ghy.payment.domain.FinancialChangeRecord; import com.huifu.adapay.core.exception.BaseAdaPayException; @@ -186,4 +184,6 @@ public interface OrderDetailService { * @return 1 */ int insertOrderAddSubtract(OrderAddSubtract body); + + OrderDetailCount differentStatusOrderCount(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 70cd084b..367e17eb 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 @@ -849,4 +849,9 @@ public class OrderDetailServiceImpl implements OrderDetailService { insert.setPayType(body.getPayType()); return orderAddSubtractMapper.insert(insert); } + + @Override + public OrderDetailCount differentStatusOrderCount(OrderDetail orderDetail) { + return orderDetailMapper.differentStatusOrderCount(orderDetail); + } } diff --git a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml index 431b9a1a..0a620a2b 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml @@ -156,6 +156,24 @@ AND od.expect_time_end <= #{expectTimeEnd} + + AND od.create_time >= #{createTimeStart} + + + AND od.create_time <= #{createTimeEnd} + + + AND od.work_finish_time >= #{workFinishTimeStart} + + + AND od.work_finish_time <= #{workFinishTimeEnd} + + + AND od.work_begin_time >= #{workBeginTimeStart} + + + AND od.work_begin_time <= #{workBeginTimeEnd} + AND od.id in ( ${orderDetailIds} ) @@ -248,6 +266,18 @@ #{drawCashStatus} + + AND od.timeout_ = #{timeout} + + + AND od.order_master_id in + + #{masterId} + + + + AND od.id in ( ${orderDetailIds} ) + order by od.create_time @@ -412,4 +442,20 @@ update_time = NOW() WHERE draw_cash_id = #{drawCashId} + +