| | |
| | | |
| | | wrapper.eq(status != null, Orders::getStatus, status) |
| | | .in(statusList != null && !Constants.equalsInteger(combinedStatus, Constants.SEVEN), Orders::getStatus, statusList) |
| | | .orderByDesc(Orders::getCreateTime); |
| | | .orderByDesc(Orders::getId); |
| | | |
| | | IPage<Orders> orderPage = ordersMapper.selectJoinPage(p, Orders.class, wrapper); |
| | | List<MyOrderVO> voList = new ArrayList<>(); |
| | |
| | | .set(Orders::getTakeLocation, order.getDepositLocation()) |
| | | .set(Orders::getTakeLocationRemark, order.getDepositLocationRemark()) |
| | | .set(Orders::getTakeLat, order.getDepositLat()) |
| | | .set(Orders::getTakeLgt, order.getDepositLgt()); |
| | | .set(Orders::getTakeLgt, order.getDepositLgt()) |
| | | .set(Orders::getExpectedTakeTime, new Date()); |
| | | if (Constants.equalsInteger(status, Constants.OrderStatus.accepted.getStatus())) { |
| | | updateWrapper.lambda() |
| | | .set(Orders::getAcceptDriver, null) |
| | |
| | | if (!shopId.equals(order.getDepositShopId())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "该订单不属于当前门店,无法核销"); |
| | | } |
| | | order.setStatus(Constants.OrderStatus.deposited.getStatus()); |
| | | order.setStatus(Constants.equalsInteger(order.getType(),Constants.ZERO)?Constants.OrderStatus.arrived.getStatus():Constants.OrderStatus.deposited.getStatus()); |
| | | order.setDepositTime(now); |
| | | // 释放当前核销码,生成新的核销码供取件时使用 |
| | | String verifyCode = order.getMemberVerifyCode(); |
| | |
| | | |
| | | /** |
| | | * 就地寄存逾期天数计算 |
| | | * 过了预计取件时间当天的24:00(次日00:00)后才算第一天 |
| | | * 过了预计取件日期的次日(只比较年月日)后开始计逾期天数 |
| | | */ |
| | | private int calcLocalOverdueDays(Date now, Date expectedTakeTime) { |
| | | if (expectedTakeTime == null || !now.after(expectedTakeTime)) { |
| | | if (expectedTakeTime == null) { |
| | | return 0; |
| | | } |
| | | // 基准时间 = 预计取件日期的次日 00:00(即当天24:00) |
| | | // 只取年月日 |
| | | Calendar baseCal = Calendar.getInstance(); |
| | | baseCal.setTime(expectedTakeTime); |
| | | baseCal.set(Calendar.HOUR_OF_DAY, 0); |
| | | baseCal.set(Calendar.MINUTE, 0); |
| | | baseCal.set(Calendar.SECOND, 0); |
| | | baseCal.set(Calendar.MILLISECOND, 0); |
| | | baseCal.add(Calendar.DAY_OF_MONTH, 1); // 次日00:00 = 当天24:00 |
| | | Date baseTime = baseCal.getTime(); |
| | | |
| | | if (!now.after(baseTime)) { |
| | | return 0; |
| | | } |
| | | // 逾期天数 = 当前日期 - 基准日期(按天取差) |
| | | Calendar nowCal = Calendar.getInstance(); |
| | | nowCal.setTime(now); |
| | | nowCal.set(Calendar.HOUR_OF_DAY, 0); |
| | |
| | | nowCal.set(Calendar.SECOND, 0); |
| | | nowCal.set(Calendar.MILLISECOND, 0); |
| | | |
| | | Calendar baseDateCal = Calendar.getInstance(); |
| | | baseDateCal.setTime(baseTime); |
| | | baseDateCal.set(Calendar.HOUR_OF_DAY, 0); |
| | | baseDateCal.set(Calendar.MINUTE, 0); |
| | | baseDateCal.set(Calendar.SECOND, 0); |
| | | baseDateCal.set(Calendar.MILLISECOND, 0); |
| | | |
| | | long diffMs = nowCal.getTimeInMillis() - baseDateCal.getTimeInMillis(); |
| | | int days = (int) (diffMs / (1000 * 60 * 60 * 24)); |
| | | return Math.max(days, 0); |
| | | // 基准日期 = 预计取件日期的次日,当天及之前不算逾期 |
| | | if (nowCal.before(baseCal)) { |
| | | return 0; |
| | | } |
| | | // 逾期天数 = 当前日期 - 基准日期 |
| | | long diffMs = nowCal.getTimeInMillis() - baseCal.getTimeInMillis(); |
| | | return (int) (diffMs / (1000 * 60 * 60 * 24)); |
| | | } |
| | | |
| | | /** |
| | | * 异地寄存逾期天数计算 |
| | | * 过了转移到店时间当天的晚上12点(24:00)后才算第一天 |
| | | * 过了转移到店日期的次日(只比较年月日)后开始计逾期天数 |
| | | */ |
| | | private int calcRemoteOverdueDays(Date now, Date arriveTime) { |
| | | if (arriveTime == null || !now.after(arriveTime)) { |
| | | if (arriveTime == null) { |
| | | return 0; |
| | | } |
| | | // 基准时间 = 转移到店日期的次日 00:00(即当天24:00) |
| | | // 只取年月日 |
| | | Calendar baseCal = Calendar.getInstance(); |
| | | baseCal.setTime(arriveTime); |
| | | baseCal.set(Calendar.HOUR_OF_DAY, 0); |
| | | baseCal.set(Calendar.MINUTE, 0); |
| | | baseCal.set(Calendar.SECOND, 0); |
| | | baseCal.set(Calendar.MILLISECOND, 0); |
| | | baseCal.add(Calendar.DAY_OF_MONTH, 1); // 次日00:00 = 当天24:00 |
| | | Date baseTime = baseCal.getTime(); |
| | | |
| | | if (!now.after(baseTime)) { |
| | | return 0; |
| | | } |
| | | // 逾期天数 = 当前日期 - 基准日期 |
| | | Calendar nowCal = Calendar.getInstance(); |
| | | nowCal.setTime(now); |
| | | nowCal.set(Calendar.HOUR_OF_DAY, 0); |
| | |
| | | nowCal.set(Calendar.SECOND, 0); |
| | | nowCal.set(Calendar.MILLISECOND, 0); |
| | | |
| | | Calendar baseDateCal = Calendar.getInstance(); |
| | | baseDateCal.setTime(baseTime); |
| | | baseDateCal.set(Calendar.HOUR_OF_DAY, 0); |
| | | baseDateCal.set(Calendar.MINUTE, 0); |
| | | baseDateCal.set(Calendar.SECOND, 0); |
| | | baseDateCal.set(Calendar.MILLISECOND, 0); |
| | | |
| | | long diffMs = nowCal.getTimeInMillis() - baseDateCal.getTimeInMillis(); |
| | | int days = (int) (diffMs / (1000 * 60 * 60 * 24)); |
| | | return Math.max(days, 0); |
| | | // 基准日期 = 到店日期的次日,当天及之前不算逾期 |
| | | baseCal.add(Calendar.DAY_OF_MONTH, 1); |
| | | if (nowCal.before(baseCal)) { |
| | | return 0; |
| | | } |
| | | // 逾期天数 = 当前日期 - 基准日期 |
| | | long diffMs = nowCal.getTimeInMillis() - baseCal.getTimeInMillis(); |
| | | return (int) (diffMs / (1000 * 60 * 60 * 24)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | ActiveOrderTipVO vo = new ActiveOrderTipVO(); |
| | | vo.setOrderId(order.getId()); |
| | | vo.setStatus(order.getStatus()); |
| | | vo.setStatusDesc(Constants.OrderStatus.getDescByKey(order.getStatus(), order.getType())); |
| | | |
| | | // 构建提示文案 |
| | | boolean isLocal = Constants.equalsInteger(order.getType(), Constants.ZERO); |