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 6d717308..015c8395 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 @@ -1249,9 +1249,11 @@ public class OrderController extends BaseController { BeanUtils.copyProperties(orderListRequest, orderDetailReq); List list = orderDetailService.selectOrderDetailList(orderDetailReq); long size = list.stream() - .filter(order -> order.getOrderStatus() != 6) // 先过滤状态不等于6的订单 - .filter(order -> order.getOrderStatus() != 5) - .filter(order->order.getOrderType()==1&&order.getOrderStatus()!=OrderStatus.GOING.code()) + .filter(order -> order.getOrderStatus() != 6) // 排除已取消的订单 + .filter(order -> order.getOrderStatus() != 5) // 排除已完成的订单 + // 排除商品订单中“服务中(3)”状态:保留非商品订单,或商品订单且状态 != 服务中 + .filter(order -> order.getOrderType() != 1 || + order.getOrderStatus() != OrderStatus.SERVER.code()) .count(); count += size; logger.info("子单超时数量{}", count); @@ -1295,6 +1297,14 @@ public class OrderController extends BaseController { orderMasterReq.setExceptOrderMasterIds(masterIdSet); List masterList = orderMasterService.selectOrderMasterList(orderMasterReq); allList.addAll(masterList); + allList=allList.stream() + .filter(order -> order.getOrderStatus() != 6) // 排除已取消的订单 + .filter(order -> order.getOrderStatus() != 5) // 排除已完成的订单 + // 排除商品订单中“服务中(3)”状态:保留非商品订单,或商品订单且状态 != 服务中 + .filter(order -> order.getOrderType() != 1 || + order.getOrderStatus() != OrderStatus.SERVER.code()) + .filter(order -> order.getHasDispatchedAll()!=null&&order.getHasDispatchedAll()==0) + .collect(Collectors.toList()); List mateIds = allList.stream().map(OrderMaster::getId) .collect(Collectors.toList()); // logger.info("查询符合条件的主单条件{}总数{}allList的数量{}allist的主单id{}", orderMasterReq, count, allList.size(), mateIds); 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 0ffa8b1b..2f3fee6f 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 @@ -1234,9 +1234,11 @@ public class OrderDetailController extends BaseController { e.printStackTrace(); } } + orderDetail=orderDetailService.selectById(orderDetail.getId()); if (orderDetail.getIsQuicklyDelivery()!=null&&orderDetail.getIsQuicklyDelivery()==1) { // 立即发货时更新订单商品的已发货数量 logger.info("立即发货订单[{}]开始更新商品已发货数量", orderDetail.getId()); + orderDetail.setTimeout(0); try { // 获取子订单商品列表 List detailGoodsList = orderGoodsService.selectByOrderDetailId(orderDetail.getId()); diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerAreaController.java b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerAreaController.java index 1a30db6b..5d2c6bdc 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerAreaController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/worker/WorkerAreaController.java @@ -111,41 +111,58 @@ public class WorkerAreaController extends BaseController { byWorker = workerAreaService.getByWorker(workerId); } - // 收集城市ID - Set cityIds = new HashSet<>(); + // 收集只有cityId没有districtId的城市ID集合(用于单独处理) + Set cityOnlyIds = new HashSet<>(); + // 按districtId分组收集cityIds + Map> districtCityMap = new HashMap<>(); + for (WorkerArea area : byWorker){ - List ids; - if(countryMap.containsKey(area.getDistrictId())){ - ids = countryMap.get(area.getDistrictId()); - }else { - ids = new ArrayList<>(); - } + Long districtId = area.getDistrictId(); - // 收集城市ID - if (area.getCityId() != null) { - cityIds.add(area.getCityId()); - } - - ids.add(String.valueOf(area.getStreetId())); - if (area.getDistrictId()!=null){ - countryMap.put(area.getDistrictId(), ids); + // 如果有districtId,按districtId分组处理 + if (districtId != null) { + List ids; + if(countryMap.containsKey(districtId)){ + ids = countryMap.get(districtId); + } else { + ids = new ArrayList<>(); + } + + // 收集该district下的城市ID + if (area.getCityId() != null) { + districtCityMap.computeIfAbsent(districtId, k -> new HashSet<>()).add(area.getCityId()); + } + + // 添加街道ID + if (area.getStreetId() != null) { + ids.add(String.valueOf(area.getStreetId())); + } + + countryMap.put(districtId, ids); + } else { + // 如果只有cityId没有districtId,收集到cityOnlyIds + if (area.getCityId() != null) { + cityOnlyIds.add(area.getCityId()); + } } } List result = new ArrayList<>(); + + // 处理有districtId的情况(正常流程) for (Map.Entry> longListEntry : countryMap.entrySet()) { WorkerArea model = new WorkerArea(); - SysArea countryArea = sysAreaService.selectById(longListEntry.getKey()); + Long districtId = longListEntry.getKey(); + SysArea countryArea = sysAreaService.selectById(districtId); model.setDistrictArea(countryArea); SysArea cityArea = sysAreaService.selectById(Long.valueOf(countryArea.getParentCode())); model.setCityArea(cityArea); SysArea provinceArea = sysAreaService.selectById(Long.valueOf(cityArea.getParentCode())); model.setProvinceArea(provinceArea); - // 需求2:增加cityIds字段 - List cityIdList = cityIds.stream() - .map(Long::valueOf) - .collect(Collectors.toList()); + // 设置该district下的cityIds + Set districtCityIds = districtCityMap.getOrDefault(districtId, new HashSet<>()); + List cityIdList = new ArrayList<>(districtCityIds); model.setCityIds(cityIdList); // 设置街道ID列表 @@ -153,6 +170,24 @@ public class WorkerAreaController extends BaseController { result.add(model); } + + // 处理只有cityId没有districtId的情况(只返回省市信息) + for (Long cityId : cityOnlyIds) { + WorkerArea model = new WorkerArea(); + SysArea cityArea = sysAreaService.selectById(cityId); + model.setCityArea(cityArea); + // 获取省份信息 + SysArea provinceArea = sysAreaService.selectById(Long.valueOf(cityArea.getParentCode())); + model.setProvinceArea(provinceArea); + + // 只设置城市ID列表 + List cityIdList = new ArrayList<>(); + cityIdList.add(cityId); + model.setCityIds(cityIdList); + + // 不设置district和street信息 + result.add(model); + } return AjaxResult.success(result); } diff --git a/ghy-order/src/main/java/com/ghy/order/quartz/AfterServiceTimeoutTask.java b/ghy-order/src/main/java/com/ghy/order/quartz/AfterServiceTimeoutTask.java index bfd8135e..0db578a6 100644 --- a/ghy-order/src/main/java/com/ghy/order/quartz/AfterServiceTimeoutTask.java +++ b/ghy-order/src/main/java/com/ghy/order/quartz/AfterServiceTimeoutTask.java @@ -195,6 +195,7 @@ public class AfterServiceTimeoutTask { record.setCustomerFinalCheck(1L); record.setIsAutoProcessed(1); record.setRefundApplyTime(new Date()); + record.setAfterServiceStatus(1); // 更新记录 afterServiceRecordService.updateGoodsAfterServiceRecord(record); 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 cfd46ab6..c8f443fd 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 @@ -288,7 +288,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService } Assert.notNull(afterServiceRecord, "售后记录不存在!"); OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId()); - + afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); // 检查orderDetail是否为null,避免NullPointerException if (orderDetail == null) { log.error("订单详情不存在,售后记录ID:{},订单详情ID:{}", afterServiceRecord.getId(), afterServiceRecord.getOrderDetailId()); @@ -602,6 +602,8 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService if (param.getWorkerReceiveConfirm() != null) { afterServiceRecord.setWorkerReceiveConfirm(param.getWorkerReceiveConfirm()); } + afterServiceRecord.setUpdateTime(new Date()); + afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); Assert.notNull(afterServiceRecord, "售后记录不存在!"); OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId()); boolean drawCash = orderDetail.getDrawCashTime() != null; @@ -658,37 +660,6 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService return AjaxResult.success("重做/补做完成状态已更新"); } - // 新增:处理师傅反馈结果为0或1时,设置redoCompleteTime为当前时间+36小时 - // if (param.getWorkerFeedbackResult() != null && (param.getWorkerFeedbackResult().equals(0L) || param.getWorkerFeedbackResult().equals(1L))) { - // afterServiceRecord.setWorkerFeedbackResult(param.getWorkerFeedbackResult()); - // // 设置当前时间推后36小时 - // Calendar calendar = Calendar.getInstance(); - // calendar.setTime(new Date()); - // calendar.add(Calendar.HOUR_OF_DAY, 36); - // afterServiceRecord.setRedoCompleteTime(calendar.getTime()); - - // // 处理师傅反馈相关字段 - // if (param.getWorkerFeedbackReasonType() != null) { - // afterServiceRecord.setWorkerFeedbackReasonType(param.getWorkerFeedbackReasonType()); - // } - // if (param.getWorkerFeedbackReason() != null) { - // afterServiceRecord.setWorkerFeedbackReason(param.getWorkerFeedbackReason()); - // } - // if (param.getWorkerFeedbackImages() != null) { - // afterServiceRecord.setWorkerFeedbackImages(param.getWorkerFeedbackImages()); - // } - // if (param.getAgreedRefund() != null) { - // afterServiceRecord.setAgreedRefund(param.getAgreedRefund()); - // } - // if (param.getUpdateBy() != null) { - // afterServiceRecord.setUpdateBy(param.getUpdateBy()); - // } - - // afterServiceRecordMapper.updateAfterServiceRecord(afterServiceRecord); - // log.info("商品售后-师傅反馈结果为{},记录ID:{},redoCompleteTime设置为:{}", param.getWorkerFeedbackResult(), param.getId(), afterServiceRecord.getRedoCompleteTime()); - // return AjaxResult.success("师傅反馈结果已更新"); - // } - // 新增:处理师傅重发/补发方案 if (param.getWorkerResendPlan() != null) { // 验证快递/物流方式必须提供单号 @@ -824,7 +795,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService param.getId(), afterServiceRecord.getWorkerAgreeType()); } - } else { + } else if (afterServiceRecord.getCustomerFinalCheck() == null) { afterServiceRecord.setCustomerFinalCheck(0L); // 如果redoCompleteTime字段有值,且师傅操作为0或1,且客户不同意,则将其设置为null if (afterServiceRecord.getRedoCompleteTime() != null && @@ -940,7 +911,7 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService afterServiceRecordMapper.updateAfterServiceRecord(param); return drawCash ? AjaxResult.error("本单银联已确认货款结算完毕(订单支付完成),款项已到达或即将到达您所绑定帐户,需同意退款的同意后您线下与客户另行操作,系统无法提供原路返回退款!") : AjaxResult.success(); } else { - if(two.equals(param.getCustomerFinalCheck())){ + if(two.equals(afterServiceRecord.getCustomerFinalCheck())){ // 客户不同意师傅的意见,如果订单是确认中,则需要将订单改为服务中 if(orderDetail.getOrderStatus() == OrderStatus.FINISH_CHECK.code() && orderDetail.getDrawCashTime()!= null ){ orderDetail.setOrderStatus(OrderStatus.SERVER.code()); diff --git a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml index d15107bf..ae617128 100644 --- a/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/AfterServiceRecordMapper.xml @@ -322,7 +322,7 @@ OR -- workerResendType为2或3(送货上门/自提):24小时倒计时 (worker_resend_type IN (2, 3) AND worker_resend_time <= DATE_SUB(NOW(), INTERVAL 24 HOUR) - AND worker_resend_time >= DATE_SUB(NOW(), INTERVAL 1440 MINUTE)) + AND worker_resend_time >= DATE_SUB(NOW(), INTERVAL 1800 MINUTE)) )