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 0b517f0e..e02babbd 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 @@ -1511,7 +1511,10 @@ public class OrderController extends BaseController { Collections.sort(orderListResponses, new Comparator() { @Override public int compare(OrderListResponse o1, OrderListResponse o2) { - return o2.getUpdateTime().compareTo(o1.getUpdateTime()); + // 如果updateTime为null,则使用createTime代替 + Date o1Time = o1.getUpdateTime() != null ? o1.getUpdateTime() : o1.getCreateTime(); + Date o2Time = o2.getUpdateTime() != null ? o2.getUpdateTime() : o2.getCreateTime(); + return o2Time.compareTo(o1Time); } }); @@ -2297,7 +2300,11 @@ public class OrderController extends BaseController { afterServiceRecord.setExcludeAfterServiceFinished(true); List afterServiceRecordList =afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord); - orderListResponse.setShowAfterServiceRecord( 1); + if (detail.getAfterServiceStatus()==2||detail.getAfterServiceStatus()==3) { + orderListResponse.setShowAfterServiceRecord( 0); + } else{ + orderListResponse.setShowAfterServiceRecord( 1); + } // 编辑返回属性 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 0a7a6ffc..781e5b09 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 @@ -6,6 +6,7 @@ import com.ghy.common.constant.UserConstants; import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; import com.ghy.common.core.page.TableDataInfo; +import com.github.pagehelper.PageInfo; import com.ghy.common.enums.*; import com.ghy.common.utils.*; import com.ghy.common.utils.poi.ExcelUtil; @@ -188,10 +189,14 @@ public class OrderDetailController extends BaseController { return getDataTable(new ArrayList<>()); } } - startPage(); + if (this.getSysUser().getDept().getParentId() != 101) { orderDetail.setDeptId(this.getSysUser().getDept().getParentId()); } + + // 手动分页:先获取总数,再进行分页查询 + Long total = orderDetailService.selectOrderDetailCount(orderDetail); + startPage(); List orderDetails = orderDetailService.selectOrderDetailList(orderDetail); Set customerIds = orderDetails.stream().map(OrderDetail::getCustomerId).collect(Collectors.toSet()); @@ -328,7 +333,12 @@ public class OrderDetailController extends BaseController { detail.setOrderImgs(stringBuilder.toString()); } - return getDataTable(orderDetails); + // 使用手动获取的总数返回正确的分页信息 + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(0); + rspData.setRows(orderDetails); + rspData.setTotal(total); + return rspData; } /** @@ -425,6 +435,7 @@ public class OrderDetailController extends BaseController { // 财务信息 FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(detail.getId()); BigDecimal detailPayMoney = financialDetail.getPayMoney(); + // 查询子单加价记录 // FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); // changeRecordQry.setOrderDetailId(detail.getId()); @@ -462,7 +473,7 @@ public class OrderDetailController extends BaseController { orderStandard.setWaitServerNum(orderStandard.getStandardNum() - orderStandard.getServerNum()); standardList.add(orderStandard); } - if (this.checkIsOnlyServer(orderMaster.getId(), orderMaster.getWorkerId())) { + if (this.checkIsOnlyServer(orderMaster.getId(), orderMaster.getWorkerId())) { BigDecimal workerFee = financialMaster.getPayMoney(); List financialDetailList = financialDetailService.selectByFinancialMasterId(financialMaster.getId()); for (FinancialDetail param : financialDetailList) { @@ -483,6 +494,26 @@ public class OrderDetailController extends BaseController { AfterServiceRecord afterServiceRecord = new AfterServiceRecord(); afterServiceRecord.setOrderDetailId(detail.getId()); List afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord); + if (CollectionUtils.isNotEmpty(afterServiceRecordList)) { + // 计算平台退款金额总和 + BigDecimal totalPlatformRefund = BigDecimal.ZERO; + for (AfterServiceRecord record : afterServiceRecordList) { + if (record.getPlatformRefund() != null) { + totalPlatformRefund = totalPlatformRefund.add(record.getPlatformRefund()); + } + } + // 从detailPayMoney中减去平台退款金额 + if (totalPlatformRefund.compareTo(BigDecimal.ZERO) > 0) { + orderListResponse.setPayAddMoney(detailPayMoney.subtract(totalPlatformRefund)); + + } + + } + + + + + // 查询加价记录 FinancialChangeRecord changeRecordQry = new FinancialChangeRecord(); @@ -685,7 +716,12 @@ public class OrderDetailController extends BaseController { .map(attachMoney -> attachMoney.multiply(rate).setScale(2, RoundingMode.DOWN)) .reduce(BigDecimal.ZERO, BigDecimal::add); } + BigDecimal platformRefundMoney = BigDecimal.ZERO; + if (afterServiceRecord.getPlatformRefund()!=null) { + platformRefundMoney=afterServiceRecord.getPlatformRefund(); + } logger.info("是否支付{}加价的金额{}配件费{}总服务金额为{}", changeRecords, workerFee, attachmentMoney, orderListResponse.getPayMoney().add(workerFee).add(attachmentMoney)); + orderListResponse.setPayAddMoney(orderListResponse.getPayMoney().add(workerFee).add(attachmentMoney)); } 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 a04ad411..b78e7e46 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 @@ -992,6 +992,7 @@ public class OrderMasterController extends BaseController { @PostMapping("/app/list") @ResponseBody public TableDataInfo appList(@RequestBody OrderMaster orderMaster) { + logger.info("appList orderMaster:{}", orderMaster); // TableDataInfo rspData = new TableDataInfo(); List orderListResponses = new ArrayList<>(); // 入参中的城市id存在时,查询符合条件的地址id @@ -1015,17 +1016,25 @@ public class OrderMasterController extends BaseController { // if (orderMaster.getOrderStatus()==OrderStatus.FINISH_CHECK.code()){ // orderMaster.setOrderStatuses(); // } + if (orderMaster.getOrderType() != null && orderMaster.getOrderType() == 0&&orderMaster.getFrom().equals("customer")) { + orderMaster.setExcludeGoodsOrder(true); + } List list = orderMasterService.selectOrderMasterList(orderMaster); + Long count=orderMasterService.selectOrderMasterCount(orderMaster); + logger.info("初始 list数量:{},总数{}", list.size(),count); // 处理orderType为0的情况,额外查询原师傅ID相关的订单并添加到list中 OrderMaster origiOrderMaster = new OrderMaster(); if (orderMaster.getOrderType() == 0 && orderMaster.getWorkerId() != null && orderMaster.getWorkerId() != -1 && orderMaster.getIsMonitoredOrder() == true) { origiOrderMaster.setOriginalWorkerId(orderMaster.getWorkerId()); + // origiOrderMaster.setFrom(orderMaster.getFrom()); // 修复:将原始请求的isMonitoredOrder属性复制到额外查询中,确保过滤条件一致 // origiOrderMaster.setShowInMonitor(orderMaster.getIsMonitoredOrder()); origiOrderMaster.setOrderStatuses("0,1,2,3,4"); List originalList = orderMasterService.selectOrderMasterList(origiOrderMaster); + // 对额外查询的结果也应用相同的过滤条件 + list.addAll(originalList); list.sort((o1, o2) -> { if (o1.getUpdateTimeAlias() == null && o2.getUpdateTimeAlias() == null) return 0; @@ -1076,7 +1085,7 @@ public class OrderMasterController extends BaseController { List goodsList = goodsService.selectByIds(goodsIds); goodsList.forEach(goods -> goodsMap.put(goods.getGoodsId(), goods)); } - + logger.info("list:数量{}", list.size()); list.forEach(master -> { // 子单 List detailList = orderDetailService.selectByOrderMasterId(master.getId()); @@ -1748,6 +1757,27 @@ public class OrderMasterController extends BaseController { FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId()); // 计算总额 BigDecimal totalPayMoney = financialMaster.getPayMoney(); + + // 扣减平台退款金额 + BigDecimal totalPlatformRefundMoney = BigDecimal.ZERO; + for (OrderDetail orderDetail : orderDetailList) { + AfterServiceRecord afterServiceRecordQuery = new AfterServiceRecord(); + afterServiceRecordQuery.setOrderDetailId(orderDetail.getId()); + List afterServiceRecords = afterServiceRecordService + .selectAfterServiceRecordList(afterServiceRecordQuery); + if (CollectionUtils.isNotEmpty(afterServiceRecords)) { + for (AfterServiceRecord record : afterServiceRecords) { + if (record.getPlatformRefund() != null && record.getPlatformRefund().compareTo(BigDecimal.ZERO) > 0) { + totalPlatformRefundMoney = totalPlatformRefundMoney.add(record.getPlatformRefund()); + } + } + } + } + if (totalPlatformRefundMoney.compareTo(BigDecimal.ZERO) > 0) { + totalPayMoney = totalPayMoney.subtract(totalPlatformRefundMoney); + } + + BigDecimal leaderMoney = BigDecimal.ZERO; for (OrderDetail orderDetail : orderDetailList) { List standardList = new ArrayList<>(); @@ -1901,7 +1931,8 @@ public class OrderMasterController extends BaseController { Worker goodsWorker =new Worker(); OrderMaster goodsOrderMaster =null; WorkerCertification goodsWorkerRealInfo = null; - + Integer goodsPayStatus = null; + // 消费者信息 // Customer customer = // customerService.selectByCustomerId(orderMaster.getCustomerId()); @@ -1915,6 +1946,7 @@ public class OrderMasterController extends BaseController { goodsWorkerRealInfo = workerCertificationService.selectByWorkerId(goodsOrderMaster.getWorkerId()); orderStandardList=orderGoodsService.selectByOrderMasterId(goodsOrderMaster.getId()); orderListResponse.setOriginalOrderMasterCode(goodsOrderMaster.getCode()); + goodsPayStatus=goodsOrderMaster.getPayStatus(); } if (masterWorker != null) { // 大师傅实名信息 @@ -2039,7 +2071,7 @@ public class OrderMasterController extends BaseController { org.apache.commons.lang3.StringUtils.isNotEmpty(orderMaster.getPhone()) ? orderMaster.getPhone() : customerAddress.getPhone()); orderListResponse.setOrderStatus(orderMaster.getOrderStatus()); - orderListResponse.setPayStatus(orderMaster.getPayStatus()); + orderListResponse.setPayStatus(goodsPayStatus!=null?goodsPayStatus:orderMaster.getPayStatus()); orderListResponse.setPayType(orderMaster.getPayType()); orderListResponse.setStandardList(standardList); orderListResponse.setAddress(completeAddress); @@ -2139,7 +2171,6 @@ public class OrderMasterController extends BaseController { } } - startPage(); // 非管理员 if (this.getSysUser().getRoles().get(0).getRoleId() != 1) { orderMaster.setDeptId(this.getSysUser().getDeptId()); @@ -2148,6 +2179,11 @@ public class OrderMasterController extends BaseController { if (this.getSysUser().getRoles().get(0).getRoleId() == 101L) { orderMaster.setCreateBy(this.getSysUser().getUserId().toString()); } + + // 先获取总数 + Long total = orderMasterService.selectOrderMasterCount(orderMaster); + + startPage(); List orderMasterList = orderMasterService.selectOrderMasterList(orderMaster); Set orderMasterIds = orderMasterList.stream().map(OrderMaster::getId).collect(Collectors.toSet()); @@ -2276,7 +2312,9 @@ public class OrderMasterController extends BaseController { }); master.setOrderImgs(stringBuilder.toString()); } - return getDataTable(orderMasterList); + TableDataInfo dataTable = getDataTable(orderMasterList); + dataTable.setTotal(total); + return dataTable; } @Log(title = "主订单管理", businessType = BusinessType.EXPORT) diff --git a/ghy-admin/src/main/resources/templates/order/master.html b/ghy-admin/src/main/resources/templates/order/master.html index 716d6208..662a7421 100644 --- a/ghy-admin/src/main/resources/templates/order/master.html +++ b/ghy-admin/src/main/resources/templates/order/master.html @@ -1041,7 +1041,7 @@ modalContent += ''; modalContent += '' + (record.orderDetailCode || record.id) + ''; modalContent += '¥' + (record.refund || record.agreedRefund || 0) + ''; - modalContent += '' + getWorkerFeedbackText(record.workerFeedbackResult) + ''; + modalContent += '' + getWorkerFeedbackText(record.workerFeedbackResult) + '
反馈金额:¥' + (record.agreedRefund || 0) + ''; modalContent += '' + getCustomerCheckText(record.customerFinalCheck) + ''; modalContent += ''; modalContent += '
'; diff --git a/ghy-admin/src/main/resources/templates/order/orderManager.html b/ghy-admin/src/main/resources/templates/order/orderManager.html index 3556fe52..24da34a6 100644 --- a/ghy-admin/src/main/resources/templates/order/orderManager.html +++ b/ghy-admin/src/main/resources/templates/order/orderManager.html @@ -1275,7 +1275,7 @@ html += ''; html += '' + (record.orderDetailCode || '') + ''; html += '¥' + (record.refund || record.agreedRefund || 0) + ''; - html += '' + getWorkerFeedbackText(record.workerFeedbackResult) + ''; + html += '' + getWorkerFeedbackText(record.workerFeedbackResult) + '
反馈金额:¥' + (record.agreedRefund || 0) + ''; html += '' + getCustomerCheckText(record.customerFinalCheck) + ''; html += ''; html += '
'; 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 bbe40123..af433df2 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 @@ -365,4 +365,12 @@ public class OrderMaster extends BaseEntity { */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTimeAlias; + + + private String from; + + /** + * 是否排除商品订单标识(用于Service层过滤逻辑) + */ + private Boolean excludeGoodsOrder; } 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 693392fb..1b38d0f1 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 @@ -35,6 +35,14 @@ public interface OrderDetailMapper { Long countOrderDetailList(OrderDetail orderDetail); + /** + * 查询符合条件的子单总数(用于分页) + * + * @param orderDetail 查询条件 + * @return 总数 + */ + Long selectOrderDetailCount(OrderDetail orderDetail); + /** * @param orderDetailId 细单表id * @return 细单表 diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java index 8402ede2..e1c9dfb5 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java @@ -39,6 +39,14 @@ public interface OrderMasterMapper { */ Long countOrderMasterList(OrderMaster orderMaster); + /** + * 查询符合条件的主单总数 + * + * @param orderMaster 主订单入参 + * @return 满足条件的主单总数 + */ + Long selectOrderMasterCount(OrderMaster orderMaster); + /** * @param orderMasterId 主订单id * @return 主订单 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 ed03e142..3ff46c3a 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 @@ -128,6 +128,14 @@ public interface OrderDetailService { */ Long countOrderDetailList(OrderDetail orderDetail); + /** + * 查询符合条件的子单总数(用于分页) + * + * @param orderDetail 查询条件 + * @return 总数 + */ + Long selectOrderDetailCount(OrderDetail orderDetail); + /** * 子单改价接口 * diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java index 6a5a8d91..0f899f63 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java @@ -47,6 +47,14 @@ public interface OrderMasterService { */ Long countOrderMasterList(OrderMaster orderMaster); + /** + * 查询符合条件的主单总数 + * + * @param orderMaster 主订单入参 + * @return 符合条件的主单总数 + */ + Long selectOrderMasterCount(OrderMaster orderMaster); + /** * @param orderMasterId 主订单id * @return 主订单 diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java index 7ca7338c..4df92b0b 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java @@ -513,15 +513,21 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService // 更新对应主单和子单的售后状态为已完成 OrderDetail orderDetail1 = orderDetailService.selectById(afterServiceRecord.getOrderDetailId()); if (orderDetail1 != null) { - orderDetail1.setAfterServiceStatus(2); - orderDetailService.updateOrderDetail(orderDetail1); - log.info("已将子单[{}]售后状态设置为已完成", orderDetail1.getId()); + // 只有当子单的售后状态为售后纠纷(1)时,才修改为已完成(2) + if (orderDetail1.getAfterServiceStatus() != null && orderDetail1.getAfterServiceStatus() == 1) { + orderDetail1.setAfterServiceStatus(2); + orderDetailService.updateOrderDetail(orderDetail1); + log.info("已将子单[{}]售后状态从售后纠纷设置为已完成", orderDetail1.getId()); + } OrderMaster orderMaster = orderMasterService.selectById(orderDetail1.getOrderMasterId()); if (orderMaster != null) { - orderMaster.setAfterServiceStatus(2); - orderMasterService.updateOrderMaster(orderMaster); - log.info("已将主单[{}]售后状态设置为已完成", orderMaster.getId()); + // 只有当主单的售后状态为售后纠纷(1)时,才修改为已完成(2) + if (orderMaster.getAfterServiceStatus() != null && orderMaster.getAfterServiceStatus() == 1) { + orderMaster.setAfterServiceStatus(2); + orderMasterService.updateOrderMaster(orderMaster); + log.info("已将主单[{}]售后状态从售后纠纷设置为已完成", orderMaster.getId()); + } } } } catch (Exception e) { 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 7e385889..f80dc6eb 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 @@ -1112,6 +1112,11 @@ public class OrderDetailServiceImpl implements OrderDetailService { return orderDetailMapper.countOrderDetailList(orderDetail); } + @Override + public Long selectOrderDetailCount(OrderDetail orderDetail) { + return orderDetailMapper.selectOrderDetailCount(orderDetail); + } + @Override @Transactional(rollbackFor = Exception.class) public int changePrice(Long orderDetailId, BigDecimal changeMoney, Integer type, String remark,String urls ,String fileNames,String reason) throws diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java index 9a399629..29e9c1ee 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java @@ -140,10 +140,20 @@ public class OrderMasterServiceImpl implements OrderMasterService { @Override public Long countOrderMasterList(OrderMaster orderMaster) { - + // 如果查询的是服务订单,则设置标识以排除商品主单id有值的数据 + if (orderMaster.getOrderType() != null && orderMaster.getOrderType() == 0 + && "customer".equals(orderMaster.getFrom())) { + orderMaster.setExcludeGoodsOrder(true); + } + return orderMasterMapper.countOrderMasterList(orderMaster); } + @Override + public Long selectOrderMasterCount(OrderMaster orderMaster) { + return orderMasterMapper.selectOrderMasterCount(orderMaster); + } + @Override public OrderMaster selectById(Long orderMasterId) { return orderMasterMapper.selectById(orderMasterId); diff --git a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml index 4adbc69e..2247b5b4 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderDetailMapper.xml @@ -287,6 +287,129 @@ + + @@ -836,4 +842,180 @@ WHERE goods_order_master_id = #{goodsOrderMasterId} + + diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java index 72acdd6f..c1bbe4b5 100644 --- a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java +++ b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java @@ -238,7 +238,9 @@ public class OrderServiceImpl implements OrderService { log.info("主订单[{}]超时60分钟", order.getId()); // 已超时 45min后取消超时状态 清空workerId orderMasterService.updateTimeout(order.getId(), 0); - orderMasterService.removeWorker(order.getId()); + if (order.getGoodsOrderMasterId()==null) { + orderMasterService.removeWorker(order.getId()); + } orderMasterService.updateCreateTime(order.getId()); } return;