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 ac791e5d..3e7d6342 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 @@ -129,19 +129,19 @@ public class OrderServiceImpl implements OrderService { if (nowT.getHour() < 8 || nowT.getHour() > 20) { return; } - List list=new ArrayList<>(); + List list = new ArrayList<>(); list.add(OrderStatus.FINISH_CHECK.code()); OrderMaster orderMasterFinishCheck = new OrderMaster(); orderMasterFinishCheck.setOrderStatus(OrderStatus.FINISH_CHECK.code()); orderMasterFinishCheck.setWithdrawn(1); List orderMasterFinish = orderMasterService.selectOrderMasterList(orderMasterFinishCheck); - for (OrderMaster orderMaster:orderMasterFinish){ - log.info("满足完成条件的主订单{}",orderMaster); - List orderDetailList=orderDetailService.selectByOrderMasterId(orderMaster.getId()); + for (OrderMaster orderMaster : orderMasterFinish) { + log.info("满足完成条件的主订单{}", orderMaster); + List orderDetailList = orderDetailService.selectByOrderMasterId(orderMaster.getId()); boolean allDrawCashStatusIs2 = orderDetailList != null && orderDetailList.stream() .allMatch(detail -> detail.getDrawCashStatus() == 2); - if (allDrawCashStatusIs2){ + if (allDrawCashStatusIs2) { orderMaster.setWithdrawn(2); orderMaster.setOrderStatus(OrderStatus.FINISH.code()); orderMasterService.updateOrderMaster(orderMaster); @@ -149,7 +149,6 @@ public class OrderServiceImpl implements OrderService { } - // 查询待接单状态的主单 List orderMasters = orderMasterService.selectByStatus(orderMasterTimeoutStatus); log.info("扫描到{}条未完成的主订单", orderMasters.size()); @@ -186,9 +185,9 @@ public class OrderServiceImpl implements OrderService { Date overTime1h = getOverTime(createTime, 30 * 60 * 1000); boolean flag; if (order.getUpdateTime() != null) { - flag = getOverTime(order.getUpdateTime(), 45 * 60 * 1000).before(now); + flag = getOverTime(order.getUpdateTime(), 8 * 60 * 60 * 1000).before(now); } else { - flag = getOverTime(createTime, 45 * 60 * 1000).before(now); + flag = getOverTime(createTime, 8 * 60 * 60 * 1000).before(now); log.info("判断时间:{},当前时间:{},结果:{}", getOverTime(createTime, 45 * 60 * 1000), now, flag); } // 是否已经超时 @@ -242,14 +241,14 @@ public class OrderServiceImpl implements OrderService { boolean timeout = ONE.equals(order.getTimeout()); Integer fineTimes = order.getTimeoutFineTimes(); if (!timeout) { - log.info("主订单是否未约未排[{}]派单工id{}", order.getIsCall(),order.getWorkerId()); + log.info("主订单是否未约未排[{}]派单工id{}", order.getIsCall(), order.getWorkerId()); if (overTime30min.before(now)) { // 30min未接单为超时 - log.info("主订单[{}]超时30分钟未排的参数{}", order.getId(),order.getHasDispatchedAll()); + log.info("主订单[{}]超时30分钟未排的参数{}", order.getId(), order.getHasDispatchedAll()); orderMasterService.updateTimeout(order.getId(), 1); timeout = true; //主单超时未约未排 - if (order.getIsCall().equals("01")&&order.getHasDispatchedAll().equals(0)) { + if (order.getIsCall().equals("01") && order.getHasDispatchedAll().equals(0)) { log.info("主订单未约[{}]", order.getIsCall()); try { // 推送公众号通知数据。 @@ -271,7 +270,7 @@ public class OrderServiceImpl implements OrderService { } } //主订单未排 - else if (order.getHasDispatchedAll().equals(0)) { + else if (order.getHasDispatchedAll().equals(0)) { log.info("主订单未排[{}]", order.getIsCall()); try { // 推送公众号通知数据。 @@ -322,9 +321,9 @@ public class OrderServiceImpl implements OrderService { public boolean isInTimeRange(LocalTime now, int hour, int minute) { LocalTime end = LocalTime.of(hour, minute, 59); // 17:30:59 - if(minute==0){ - minute=60; - hour=hour-1; + if (minute == 0) { + minute = 60; + hour = hour - 1; } LocalTime start = LocalTime.of(hour, minute - 1, 59); // 17:29:59 return !now.isBefore(start) && !now.isAfter(end); @@ -353,9 +352,9 @@ public class OrderServiceImpl implements OrderService { // 查询一下售后单时间 Date afterTime = getOverTime(afterServiceRecord.get(0).getUpdateTime(), 30 * 60 * 1000); //师傅没有操作 则正常进行售后超时计算 - boolean WorkerFeedback=afterServiceRecord.get(0).getWorkerFeedbackResult()==null; - log.info("师傅操作{},所有记录{},师傅是否进行操作{}",afterServiceRecord.get(0).getWorkerFeedbackResult(),afterServiceRecord,WorkerFeedback); - if (afterTime.before(now) && !afterTimeout&&WorkerFeedback) { + boolean WorkerFeedback = afterServiceRecord.get(0).getWorkerFeedbackResult() == null; + log.info("师傅操作{},所有记录{},师傅是否进行操作{}", afterServiceRecord.get(0).getWorkerFeedbackResult(), afterServiceRecord, WorkerFeedback); + if (afterTime.before(now) && !afterTimeout && WorkerFeedback) { log.info("售后订单[{}]超时30分钟", order.getId()); orderDetailService.updateAfterTimeout(order.getId(), 1, 0); // 售后超时通知 @@ -386,7 +385,7 @@ public class OrderServiceImpl implements OrderService { if (order.getOrderStatus().equals(OrderStatus.SERVER.code())) { // 服务中状态要按预计上门时间计算4h超时 // Date overTime = DateUtils.addMilliseconds(order.getUpdateTime(), 4 * 60 * 60 * 1000); - Date overTime=calculateOverTime(order.getUpdateTime()); + Date overTime = calculateOverTime(order.getUpdateTime()); log.info("订单[{}]服务中状态超时4小时 4小时后的时间", overTime); if (overTime.before(now)) { log.info("订单[{}]服务中状态超时4小时 扣款", order.getId()); @@ -420,36 +419,36 @@ public class OrderServiceImpl implements OrderService { } else if (timeoutOrderStatus.contains(order.getOrderStatus())) { // 其它状态用update_time判断30min超时 Date overTime = getOverTime(order.getUpdateTime(), 30 * 60 * 1000); - if (overTime.before(now)&&order.getOrderStatus()!=OrderStatus.GOING.code()) { + if (overTime.before(now) && order.getOrderStatus() != OrderStatus.GOING.code()) { log.info("订单[{}]超时30分钟", order.getId()); orderDetailService.updateTimeout(order.getId(), 1, 0); // 判断是否约单 OrderCallRecord param = new OrderCallRecord(); param.setOrderId(order.getId()); List list = orderCallRecordService.selectOrderCallRecordList(param); - if (order.getOrderStatus()==OrderStatus.RECEIVE.code()){ - try { - // 推送公众号通知数据。 - // 消息组装。 - Map paramsNew = new HashMap<>(); - // 订单编号 + if (order.getOrderStatus() == OrderStatus.RECEIVE.code()) { + try { + // 推送公众号通知数据。 + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 paramsNew.put("thing9", "您帐号有1条新订单超时未接"); // 名称 paramsNew.put("thing10", "请进入【我的订单--新订单】操作处理"); - OrderMaster orderMaster = orderMasterService.selectById(order.getOrderMasterId()); - CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); - paramsNew.put("thing2", address.getName()); - // 预约时间 - paramsNew.put("time8", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + OrderMaster orderMaster = orderMasterService.selectById(order.getOrderMasterId()); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing2", address.getName()); + // 预约时间 + paramsNew.put("time8", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); // 查师傅信息 Worker worker = workerService.selectById(order.getWorkerId()); - WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TIMEOUT_ORDER, paramsNew); - } catch (Exception e) { - log.error(e.getMessage(), e); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TIMEOUT_ORDER, paramsNew); + } catch (Exception e) { + log.error(e.getMessage(), e); + } } - } // 超时预约通知 - else if (CollectionUtil.isEmpty(list)) { + else if (CollectionUtil.isEmpty(list)) { // 通知师傅新订单 try { // 推送公众号通知数据。 @@ -698,7 +697,7 @@ public class OrderServiceImpl implements OrderService { } } // 如果已经不存在"已完成"和"已取消"以外的子订单 就把主订单也改为完成 - if (allFinish&&om.getWithdrawn()==null) { + if (allFinish && om.getWithdrawn() == null) { log.info("主订单自动完成[id={} code={}]", om.getId(), om.getCode()); orderMasterService.finish(om.getId()); } @@ -724,7 +723,7 @@ public class OrderServiceImpl implements OrderService { orderListRequest.setIsMonitoredOrder(true); orderListRequest.setNeedImgs(false); long num = this.appMixOrderCount(orderListRequest); - log.info("超时巡查超时数量{},超时师傅名称{}",num,worker.getName()); + log.info("超时巡查超时数量{},超时师傅名称{}", num, worker.getName()); if (num > 0) { try { // 推送公众号通知数据。 @@ -735,7 +734,7 @@ public class OrderServiceImpl implements OrderService { // 名称 paramsNew.put("thing7", "请进入【我的订单--超时单】迅速处理"); - paramsNew.put("character_string23", num ); + paramsNew.put("character_string23", num); // 预约时间 paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); @@ -759,8 +758,8 @@ public class OrderServiceImpl implements OrderService { orderDetail1.setDeptId(worker.getDeptId()); orderDetail1.setWorkerId(worker.getWorkerId()); orderDetail1.setShelveStatus(1); - long num =orderDetailService.countOrderDetailList(orderDetail1); - log.info("搁置单巡查超时数量{},超时师傅名称{}",num,worker.getName()); + long num = orderDetailService.countOrderDetailList(orderDetail1); + log.info("搁置单巡查超时数量{},超时师傅名称{}", num, worker.getName()); if (num > 0) { try { // 推送公众号通知数据。 @@ -770,7 +769,7 @@ public class OrderServiceImpl implements OrderService { paramsNew.put("thing13", "您有《无法排单》需再次联系客户"); // 名称 paramsNew.put("thing7", "请进入【我的订单--搁置单】操作处理"); - paramsNew.put("character_string23", num ); + paramsNew.put("character_string23", num); // 预约时间 paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.DEFAULT_HANDLE_ORDER, paramsNew); @@ -789,30 +788,30 @@ public class OrderServiceImpl implements OrderService { orderDetail.setExpectTimeStart(Date.from(tomorrow.atZone(ZoneId.systemDefault()).toInstant())); tomorrow = LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MAX); orderDetail.setExpectTimeEnd(Date.from(tomorrow.atZone(ZoneId.systemDefault()).toInstant())); - long tomorrowNum =orderDetailService.countOrderDetailList(orderDetail); - log.info("明日单巡查超时数量{},超时师傅名称{}",tomorrowNum,worker.getName()); - if (tomorrowNum>0){ - log.info("订单[{}]明日订单通知", worker.getName()); - try { - // 推送公众号通知数据。 - // 消息组装。 - Map paramsNew = new HashMap<>(); - // 订单编号 - paramsNew.put("thing13", "您有订单,明日待上门/待服务"); - // 名称 - paramsNew.put("thing7", "进入【我的订单--明日单】查看准备"); + long tomorrowNum = orderDetailService.countOrderDetailList(orderDetail); + log.info("明日单巡查超时数量{},超时师傅名称{}", tomorrowNum, worker.getName()); + if (tomorrowNum > 0) { + log.info("订单[{}]明日订单通知", worker.getName()); + try { + // 推送公众号通知数据。 + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing13", "您有订单,明日待上门/待服务"); + // 名称 + paramsNew.put("thing7", "进入【我的订单--明日单】查看准备"); - paramsNew.put("character_string23", tomorrowNum ); - // 预约时间 - paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); - WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TOMORROW_ORDER, paramsNew); + paramsNew.put("character_string23", tomorrowNum); + // 预约时间 + paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TOMORROW_ORDER, paramsNew); - } catch (Exception e) { - log.error(e.getMessage(), e); - } + } catch (Exception e) { + log.error(e.getMessage(), e); + } } - orderListRequest = new OrderListRequest(); + orderListRequest = new OrderListRequest(); orderListRequest.setDeptId(worker.getDeptId()); orderListRequest.setWorkerId(worker.getWorkerId()); orderListRequest.setIsMonitoredOrder(true); @@ -820,8 +819,8 @@ public class OrderServiceImpl implements OrderService { orderListRequest.setNeedImgs(false); AjaxResult afterListRes = this.appMixAfterList(orderListRequest); List afterList = (List) afterListRes.get("data"); - log.info("售后单巡查超时数量{},超时师傅名称{}",num,worker.getName()); - if (afterList.size()>0){ + log.info("售后单巡查超时数量{},超时师傅名称{}", num, worker.getName()); + if (afterList.size() > 0) { log.info("订单[{}]售后巡查订单通知", worker.getName()); try { // 推送公众号通知数据。 @@ -831,7 +830,7 @@ public class OrderServiceImpl implements OrderService { paramsNew.put("thing13", "售后巡查,您或您下级售后单未完成"); // 名称 paramsNew.put("thing7", "请进入【我的订单--售后中】查看处理"); - paramsNew.put("character_string23", afterList.size() ); + paramsNew.put("character_string23", afterList.size()); // 预约时间 paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.DEFAULT_HANDLE_ORDER, paramsNew); @@ -845,7 +844,6 @@ public class OrderServiceImpl implements OrderService { } - public long appMixOrderCount(OrderListRequest orderListRequest) { long count = 0; @@ -856,7 +854,7 @@ public class OrderServiceImpl implements OrderService { OrderDetail orderDetailReq = new OrderDetail(); BeanUtils.copyProperties(orderListRequest, orderDetailReq); List list = orderDetailService.selectOrderDetailList(orderDetailReq); - long size= list.stream() + long size = list.stream() .filter(order -> order.getOrderStatus() != 6) // 先过滤状态不等于6的订单 .filter(order -> order.getOrderStatus() != 5).count(); count += size; @@ -876,7 +874,7 @@ public class OrderServiceImpl implements OrderService { .map(OrderMaster::getId) // 再提取id .collect(Collectors.toList()) ); - if (org.apache.commons.collections.CollectionUtils.isEmpty(countParam.getMasterIds())){ + if (org.apache.commons.collections.CollectionUtils.isEmpty(countParam.getMasterIds())) { return count; } List orderDetails = orderDetailService.selectOrderDetailList(countParam); @@ -919,13 +917,13 @@ public class OrderServiceImpl implements OrderService { break; } } - if (isKeep|| org.apache.commons.collections.CollectionUtils.isEmpty(tmpDetailListOfMasters)) { + if (isKeep || org.apache.commons.collections.CollectionUtils.isEmpty(tmpDetailListOfMasters)) { filteredMasterList.add(master); } } count += filteredMasterList.size(); - if (filteredMasterList.isEmpty()){ + if (filteredMasterList.isEmpty()) { count += masterList.size(); } } else { @@ -933,6 +931,7 @@ public class OrderServiceImpl implements OrderService { } return count; } + public AjaxResult appMixAfterList(@RequestBody OrderListRequest orderListRequest) { List orderListResponses = new ArrayList<>(); @@ -964,9 +963,9 @@ public class OrderServiceImpl implements OrderService { break; } } - long count = detailAfterListOfMasters.stream().filter(x->(x.getAfterTimeout()!=null && x.getAfterTimeout() == 1)).count(); + long count = detailAfterListOfMasters.stream().filter(x -> (x.getAfterTimeout() != null && x.getAfterTimeout() == 1)).count(); if (isKeep) { - if(count > 0){ + if (count > 0) { master.setAfterTimeout(1); } filteredMasterList.add(master); @@ -984,6 +983,7 @@ public class OrderServiceImpl implements OrderService { return AjaxResult.success(orderListResponses); } + public List getMasterAfterList(OrderMaster orderMaster) { // 查所有售后的单 @@ -1061,9 +1061,9 @@ public class OrderServiceImpl implements OrderService { // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(master.getAddressId()); SysArea sysArea; - if(customerAddress.getStreetId()!=null){ + if (customerAddress.getStreetId() != null) { sysArea = sysAreaService.selectById(customerAddress.getStreetId()); - }else { + } else { sysArea = sysAreaService.selectById(customerAddress.getCountryId()); } String completeAddress = sysArea.getMergerName().replaceAll(",", "") + customerAddress.getAddress(); @@ -1097,8 +1097,8 @@ public class OrderServiceImpl implements OrderService { // orderListResponse.setChangeMoney(totalChangeMoney); orderListResponse.setWorkerName(worker == null ? "" : worker.getName()); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); - orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName())?master.getName():customerAddress.getName()); - orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone())?master.getPhone():customerAddress.getPhone()); + orderListResponse.setCustomerName(StringUtils.isNotEmpty(master.getName()) ? master.getName() : customerAddress.getName()); + orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(master.getPhone()) ? master.getPhone() : customerAddress.getPhone()); orderListResponse.setServerTime(master.getRevTime()); orderListResponse.setExpectTimeStart(master.getExpectTimeStart()); orderListResponse.setExpectTimeEnd(master.getExpectTimeEnd()); @@ -1158,7 +1158,7 @@ public class OrderServiceImpl implements OrderService { if (worker != null) { // 师傅实名信息 workerRealInfo = workerCertificationService.selectByWorkerId(orderMaster.getWorkerId()); - workerName = workerRealInfo == null ? worker.getName() : workerRealInfo.getSurname()+workerRealInfo.getName(); + workerName = workerRealInfo == null ? worker.getName() : workerRealInfo.getSurname() + workerRealInfo.getName(); } // 消费者信息 @@ -1183,9 +1183,9 @@ public class OrderServiceImpl implements OrderService { // 地址信息 CustomerAddress customerAddress = addressService.selectByCustomerAddressId(orderMaster.getAddressId()); SysArea sysArea; - if(customerAddress.getStreetId()!=null){ + if (customerAddress.getStreetId() != null) { sysArea = sysAreaService.selectById(customerAddress.getStreetId()); - }else { + } else { sysArea = sysAreaService.selectById(customerAddress.getCountryId()); } String completeAddress = sysArea.getMergerName().replaceAll(",", "") + customerAddress.getAddress(); @@ -1231,8 +1231,8 @@ public class OrderServiceImpl implements OrderService { orderListResponse.setWorkerId(detail.getWorkerId()); orderListResponse.setWorkerName(workerName); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); - orderListResponse.setCustomerName(StringUtils.isNotEmpty(orderMaster.getName())?orderMaster.getName():customerAddress.getName()); - orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(orderMaster.getPhone())?orderMaster.getPhone():customerAddress.getPhone()); + orderListResponse.setCustomerName(StringUtils.isNotEmpty(orderMaster.getName()) ? orderMaster.getName() : customerAddress.getName()); + orderListResponse.setCustomerPhone(StringUtils.isNotEmpty(orderMaster.getPhone()) ? orderMaster.getPhone() : customerAddress.getPhone()); orderListResponse.setOrderStatus(detail.getOrderStatus()); orderListResponse.setPayStatus(orderMaster.getPayStatus()); orderListResponse.setPayType(orderMaster.getPayType()); @@ -1260,6 +1260,7 @@ public class OrderServiceImpl implements OrderService { }); return orderListResponses; } + private boolean checkIsOnlyServer(Long orderMasterId, Long workId) { // 找出原单的数量 List orderGoodsList = orderGoodsService.selectByOrderMasterId(orderMasterId); @@ -1289,6 +1290,7 @@ public class OrderServiceImpl implements OrderService { } return true; } + /*判断超时4小时的时间 如果超过晚上八点则剩余的时间从第二天早上开始计时*/ public static Date calculateOverTime(Date updateTime) { // 1. 增加4小时 @@ -1313,6 +1315,7 @@ public class OrderServiceImpl implements OrderService { } return Date.from(overTime.atZone(java.time.ZoneId.systemDefault()).toInstant()); } + //单独处理待上门通知 public void checkTimeoutDoor(OrderDetail order) { log.info("子单超时开始:单号:{}, 内容:{}", order.getCode(), order); @@ -1333,7 +1336,7 @@ public class OrderServiceImpl implements OrderService { Date oneHourTime = DateUtils.addMilliseconds(order.getExpectTimeStart(), -60 * 60 * 1000); log.info("待上门订单开始前一个小时 订单号:[{}]时间:{} 当前时间 {} 是否为同一时间小时{} 分钟{}", order.getId(), oneHourTime, now, oneHourTime.getHours(), oneHourTime.getMinutes()); - log.info("待上门订单[{}]服务中预计超时时间{},是否已经超时{}", order.getId(),overTime,overTime.before(now)); + log.info("待上门订单[{}]服务中预计超时时间{},是否已经超时{}", order.getId(), overTime, overTime.before(now)); LocalTime currentTime = LocalTime.now(); // 当前系统时间 if (overTime.before(now)) { log.info("订单[{}]待上门状态超时30分钟", order.getId()); @@ -1364,7 +1367,7 @@ public class OrderServiceImpl implements OrderService { log.error(e.getMessage(), e); } } - if (isInTimeRange(currentTime, oneHourTime.getHours(), oneHourTime.getMinutes())&&isSameYearMonthDay(now,oneHourTime)) { + if (isInTimeRange(currentTime, oneHourTime.getHours(), oneHourTime.getMinutes()) && isSameYearMonthDay(now, oneHourTime)) { log.info("订单[{}]约一小时上门服务", order.getId()); try { // 推送公众号通知数据。 @@ -1392,6 +1395,7 @@ public class OrderServiceImpl implements OrderService { } } + public static boolean isSameYearMonthDay(Date date1, Date date2) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 格式化为本地时间的字符串(忽略时间部分) @@ -1399,27 +1403,28 @@ public class OrderServiceImpl implements OrderService { String dateStr2 = sdf.format(date2); return dateStr1.equals(dateStr2); } + @Override public void orderServerToFinishCheck() { List orderDetails = orderDetailService.selectByStatus(Collections.singletonList(OrderStatus.SERVER.code())); Date now = new Date(); - + for (OrderDetail orderDetail : orderDetails) { try { OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); - + if (orderMaster == null) { continue; } - + Date targetTime; String logType = "已设置"; - + // 优先使用已设置的确认截止时间 if (orderDetail.getConfirmStartTime() != null) { targetTime = orderDetail.getConfirmStartTime(); - log.debug("订单[{}]使用已设置的确认截止时间:{}", orderDetail.getCode(), - com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); + log.debug("订单[{}]使用已设置的确认截止时间:{}", orderDetail.getCode(), + com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); } else { // 兼容旧数据,重新计算确认截止时间 Date updateTime = orderDetail.getUpdateTime(); @@ -1427,9 +1432,9 @@ public class OrderServiceImpl implements OrderService { log.warn("订单[{}]更新时间为空,跳过处理", orderDetail.getCode()); continue; } - + long waitTimeMillis; - + // 根据发货类型判断等待时间 if (orderMaster.getDeliveryType() == 2 || orderMaster.getDeliveryType() == 3) { // 送货上门或自提:8小时 @@ -1444,40 +1449,40 @@ public class OrderServiceImpl implements OrderService { log.warn("订单[{}]发货类型未知[{}],跳过处理", orderDetail.getCode(), orderMaster.getDeliveryType()); continue; } - + // 计算确认截止时间 targetTime = new Date(updateTime.getTime() + waitTimeMillis); - + // 回写到数据库,避免下次重复计算 OrderDetail updateOrderDetail = new OrderDetail(); updateOrderDetail.setId(orderDetail.getId()); updateOrderDetail.setConfirmStartTime(targetTime); orderDetailService.updateOrderDetail(updateOrderDetail); - - log.info("订单[{}]补充设置确认截止时间,发货类型[{}],截止时间:{}", - orderDetail.getCode(), logType, - com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); + + log.info("订单[{}]补充设置确认截止时间,发货类型[{}],截止时间:{}", + orderDetail.getCode(), logType, + com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); } - + // 检查是否到达目标时间 - if (now.after(targetTime)&&orderMaster.getPayStatus()==1) { + if (now.after(targetTime) && orderMaster.getPayStatus() == 1) { log.info("订单[{}]确认截止时间已到,开始转为确认中状态", orderDetail.getCode()); orderDetail.setWorkFinishTime(new Date()); orderDetailService.updateOrderDetail(orderDetail); // 更新订单状态为确认中 int result = orderDetailService.updateStatus(orderDetail.getId(), OrderStatus.FINISH_CHECK.code()); - + if (result > 0) { log.info("订单[{}]状态已成功更新为确认中", orderDetail.getCode()); } else { log.error("订单[{}]状态更新失败", orderDetail.getCode()); } } else { - log.debug("订单[{}]尚未到达确认截止时间,截止时间:{}", - orderDetail.getCode(), - com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); + log.debug("订单[{}]尚未到达确认截止时间,截止时间:{}", + orderDetail.getCode(), + com.ghy.common.utils.DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", targetTime)); } - + } catch (Exception e) { log.error("处理订单[{}]自动转确认中状态时发生异常", orderDetail.getCode(), e); }