| | |
| | | package com.xiaopeng.maintenance.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.xiaopeng.api.model.maintenance.XpCheckLocation; |
| | | import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRecord; |
| | | import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRule; |
| | | import com.xiaopeng.api.model.maintenance.XpCruiseCheckInRuleLocation; |
| | | import com.xiaopeng.api.feignClient.account.XpOperationUserClient; |
| | | import com.xiaopeng.api.feignClient.account.XpOperationsUserClient; |
| | | import com.xiaopeng.api.model.account.XpOperationsUser; |
| | | import com.xiaopeng.api.model.maintenance.*; |
| | | import com.xiaopeng.common.core.exception.ServiceException; |
| | | import com.xiaopeng.common.core.utils.GeodesyUtil; |
| | | import com.xiaopeng.common.core.utils.StringUtils; |
| | | import com.xiaopeng.common.redis.service.RedisService; |
| | | import com.xiaopeng.maintenance.constant.I18nKeyConstant; |
| | | import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleDto; |
| | | import com.xiaopeng.maintenance.dto.XpCruiseCheckInRuleListPageDto; |
| | | import com.xiaopeng.maintenance.mapper.XpCruiseCheckInRuleMapper; |
| | | import com.xiaopeng.maintenance.mapper.XpCruiseCheckInRuleOperationsUserMapper; |
| | | import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInLocationVo; |
| | | import com.xiaopeng.maintenance.model.vo.AppXpCruiseCheckInRuleVo; |
| | | import com.xiaopeng.maintenance.model.vo.CheckInMessageVo; |
| | |
| | | import com.xiaopeng.maintenance.service.IXpCruiseCheckInRecordService; |
| | | import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleLocationService; |
| | | import com.xiaopeng.maintenance.service.IXpCruiseCheckInRuleService; |
| | | import com.xiaopeng.maintenance.vo.XpCruiseCheckInRuleListPage; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | private IXpCheckLocationService xpCheckLocationService; |
| | | @Autowired |
| | | private RedisService redisService; |
| | | |
| | | @Resource |
| | | private XpOperationUserClient xpOperationsUserClient; |
| | | |
| | | @Resource |
| | | private XpCruiseCheckInRuleOperationsUserMapper xpCruiseCheckInRuleOperationsUserMapper; |
| | | |
| | | |
| | | @Override |
| | |
| | | .eq(XpCruiseCheckInRecord::getOperationsUserId, uid) |
| | | .last(" and DATE(check_in_time) = DATE(NOW())")); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取巡游打卡规则列表 |
| | | * @param pageInfo |
| | | * @param dto |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<XpCruiseCheckInRuleListPage> getXpCruiseCheckInRuleListPage(Page<XpCruiseCheckInRuleListPage> pageInfo, XpCruiseCheckInRuleListPageDto dto) { |
| | | List<Long> ids = new ArrayList<>(); |
| | | if(StringUtils.isNotEmpty(dto.getUserName())){ |
| | | List<XpOperationsUser> data = xpOperationsUserClient.listByName(dto.getUserName()).getData(); |
| | | ids.addAll(data.stream().map(XpOperationsUser::getId).collect(Collectors.toList())); |
| | | } |
| | | if(StringUtils.isNotEmpty(dto.getPhoneNumber())){ |
| | | List<XpOperationsUser> data = xpOperationsUserClient.getByPhoneNumber(dto.getPhoneNumber()).getData(); |
| | | ids.addAll(data.stream().map(XpOperationsUser::getId).collect(Collectors.toList())); |
| | | } |
| | | if(!list().isEmpty()){ |
| | | List<XpCruiseCheckInRuleOperationsUser> operationsUserId = xpCruiseCheckInRuleOperationsUserMapper.selectList(new QueryWrapper<XpCruiseCheckInRuleOperationsUser>().in("operations_user_id", ids)); |
| | | List<Integer> ruleIds = operationsUserId.stream().map(XpCruiseCheckInRuleOperationsUser::getCruiseCheckInRuleId).collect(Collectors.toList()); |
| | | dto.setIds(ruleIds); |
| | | } |
| | | List<XpCruiseCheckInRuleListPage> xpCruiseCheckInRuleListPage = this.baseMapper.getXpCruiseCheckInRuleListPage(pageInfo, dto); |
| | | return xpCruiseCheckInRuleListPage; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 新增巡游打卡规则 |
| | | * @param dto |
| | | */ |
| | | @Override |
| | | public void addXpCruiseCheckInRule(XpCruiseCheckInRuleDto dto) { |
| | | XpCruiseCheckInRule one = this.getOne(new QueryWrapper<XpCruiseCheckInRule>().like("name", dto.getName()).eq("is_deleted", 0)); |
| | | if(null != one){ |
| | | throw new ServiceException("巡游打卡规则名称已存在"); |
| | | } |
| | | XpCruiseCheckInRule xpCruiseCheckInRule = new XpCruiseCheckInRule(); |
| | | BeanUtils.copyProperties(dto, xpCruiseCheckInRule); |
| | | xpCruiseCheckInRule.setDeleted(false); |
| | | this.save(xpCruiseCheckInRule); |
| | | dto.getPoints().forEach(s->{ |
| | | s.setCruiseCheckInRuleId(xpCruiseCheckInRule.getId()); |
| | | }); |
| | | xpCruiseCheckInRuleLocationService.saveBatch(dto.getPoints()); |
| | | Long relationId = dto.getRelationId(); |
| | | |
| | | XpCruiseCheckInRuleOperationsUser xpCruiseCheckInRuleOperationsUser = new XpCruiseCheckInRuleOperationsUser(); |
| | | xpCruiseCheckInRuleOperationsUser.setCruiseCheckInRuleId(xpCruiseCheckInRule.getId()); |
| | | xpCruiseCheckInRuleOperationsUser.setOperationsUserId(relationId); |
| | | xpCruiseCheckInRuleOperationsUserMapper.insert(xpCruiseCheckInRuleOperationsUser); |
| | | } |
| | | } |