| | |
| | | package com.xiaopeng.account.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.xiaopeng.account.model.query.GroupUserPageQuery; |
| | | import com.xiaopeng.account.model.vo.GroupUserVO; |
| | | import com.xiaopeng.api.model.account.SysGroup; |
| | |
| | | * @param query 查询参数 |
| | | * @return 用户列表 |
| | | */ |
| | | PageInfo<GroupUserVO> queryUserPageList(PageInfo<GroupUserVO> pageInfo, @Param("query") GroupUserPageQuery query); |
| | | Page<GroupUserVO> queryUserPageList(PageInfo<GroupUserVO> pageInfo, @Param("query") GroupUserPageQuery query); |
| | | } |
| | |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.xiaopeng.account.constant.I18nKeyConstant; |
| | | import com.xiaopeng.account.mapper.SysGroupMapper; |
| | |
| | | // 分页查询 |
| | | PageInfo<GroupUserVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); |
| | | query.setGroupType(group.getGroupType()); |
| | | PageInfo<GroupUserVO> records = baseMapper.queryUserPageList(pageInfo, query); |
| | | |
| | | Page<GroupUserVO> records = baseMapper.queryUserPageList(pageInfo, query); |
| | | pageInfo.setRecords(records.getRecords()); |
| | | // 手动设置分页信息(因为使用了自定义SQL) |
| | | return pageInfo; |
| | | } |
| | |
| | | ou.id, |
| | | ou.nick_name AS nickName, |
| | | ou.unique_number AS uniqueNumber, |
| | | ou.user_account AS userAccount, |
| | | ou.phone_number AS userAccount, |
| | | ou.phone_number AS phoneNumber, |
| | | ou.status, |
| | | ou.remarks, |
| | | ou.create_time AS createTime, |
| | | GROUP_CONCAT(DISTINCT sr.role_name ORDER BY sr.role_name SEPARATOR ',') AS roleName |
| | | GROUP_CONCAT(DISTINCT sr.role_name SEPARATOR ',') AS roleName |
| | | FROM xp_operations_user ou |
| | | INNER JOIN xp_operations_role xor ON ou.id = xor.operations_user_id |
| | | INNER JOIN sys_role sr ON xor.role_id = sr.id |
| | | INNER JOIN xp_operations_role xop ON ou.id = xop.operations_user_id |
| | | INNER JOIN sys_role sr ON xop.role_id = sr.id |
| | | WHERE sr.group_id = #{query.groupId} |
| | | AND sr.is_deleted = 0 |
| | | AND ou.is_deleted = 0 |
| | |
| | | <if test="query.phoneNumber != null and query.phoneNumber != ''"> |
| | | AND ou.phone_number LIKE CONCAT('%', #{query.phoneNumber}, '%') |
| | | </if> |
| | | GROUP BY ou.id, ou.nick_name, ou.unique_number, ou.user_account, |
| | | ou.phone_number, ou.status, ou.remarks, ou.create_time |
| | | GROUP BY ou.id, ou.nick_name, ou.unique_number, ou.phone_number, ou.status, ou.remarks, ou.create_time |
| | | ORDER BY ou.create_time DESC |
| | | </otherwise> |
| | | </choose> |
| | |
| | | orderCancel.setCancelSource(3); // 3=运营人员(后台管理接口固定为运营人员) |
| | | orderCancel.setUserId(SecurityUtils.getUserId()); // 当前登录用户ID |
| | | orderCancel.setCancelReason("运营人员取消订单"); |
| | | orderCancel.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); |
| | | xpOrderCancelService.save(orderCancel); |
| | | //查询车辆信息 |
| | | R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getId()); |
| | |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setOrderId(order.getId().toString()); |
| | | pushOrderDto.setVin(xpVehicleR.getData().getVehicleVin()); |
| | | // pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | orderMissionClient.cancelOrder(pushOrderDto); |
| | | } |
| | | } else { |
| New file |
| | |
| | | package com.xiaopeng.vehicleConvoy.task; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; |
| | | import com.xiaopeng.vehicleConvoy.service.IXpVehicleService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneId; |
| | | |
| | | /** |
| | | * 运营车辆年检/保险/运营资质过期检查定时任务 |
| | | * 每日凌晨1点执行一次:任意一项过期则转为在库,车辆状态置为3(保险/年检已过期) |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | @RequiredArgsConstructor |
| | | public class VehicleDocumentExpiryTask { |
| | | |
| | | private static final ZoneId ZONE_GMT8 = ZoneId.of("GMT+8"); |
| | | |
| | | private final IXpVehicleService xpVehicleService; |
| | | |
| | | @Scheduled(cron = "0 0 1 * * ?", zone = "GMT+8") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void checkAndStockExpiredVehicles() { |
| | | LocalDate today = LocalDate.now(ZONE_GMT8); |
| | | LocalDateTime todayStart = today.atStartOfDay(); |
| | | |
| | | LambdaUpdateWrapper<XpVehicle> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(XpVehicle::getVehicleType, 2) |
| | | .and(w -> w.lt(XpVehicle::getAnnualInspectionDate, todayStart) |
| | | .or().lt(XpVehicle::getInsuranceEndTime, todayStart) |
| | | .or().lt(XpVehicle::getQualificationExpireTime, todayStart)) |
| | | .set(XpVehicle::getVehicleType, 1) |
| | | .set(XpVehicle::getStatus, 3); |
| | | |
| | | boolean updated = xpVehicleService.update(updateWrapper); |
| | | log.info("运营车辆证件过期检查任务执行完成,todayStart={}, updated={}", todayStart, updated); |
| | | } |
| | | } |
| | | |