package com.xiaopeng.operation.service.impl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
|
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient;
|
import com.xiaopeng.api.model.account.XpOperationsUser;
|
import com.xiaopeng.api.model.operation.XpPointSituationReport;
|
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
|
import com.xiaopeng.api.query.operation.XpPointSituationReportQuery;
|
import com.xiaopeng.api.vo.operation.XpPointSituationReportVo;
|
import com.xiaopeng.common.core.domain.R;
|
import com.xiaopeng.common.core.exception.ServiceException;
|
import com.xiaopeng.common.core.web.page.PageInfo;
|
import com.xiaopeng.operation.mapper.XpPointSituationReportMapper;
|
import com.xiaopeng.operation.service.IXpPointSituationReportService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
|
@Service
|
public class XpPointSituationReportServiceImpl extends ServiceImpl<XpPointSituationReportMapper, XpPointSituationReport> implements IXpPointSituationReportService {
|
|
|
|
@Autowired
|
private XpOperationUserClient xpOperationUserClient;
|
@Resource
|
private XpFleetOperationsClient xpFleetOperationsClient;
|
|
@Override
|
public PageInfo<XpPointSituationReportVo> pageList(XpPointSituationReportQuery query) {
|
// 创建分页对象
|
PageInfo<XpPointSituationReportVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
|
// 调用Mapper查询
|
List<XpPointSituationReportVo> list = this.baseMapper.pageList(pageInfo, query);
|
extracted(list);
|
// 设置结果
|
pageInfo.setRecords(list);
|
return pageInfo;
|
}
|
|
private void extracted(List<XpPointSituationReportVo> list) {
|
if(!list.isEmpty()){
|
// 收集所有运维人员ID
|
Set<Long> operationsUserIds = list.stream()
|
.map(XpPointSituationReportVo::getOperationsUserId)
|
.filter(Objects::nonNull)
|
.collect(Collectors.toSet());
|
// 批量查询操作人信息
|
Map<Long, String> userNameMap = new HashMap<>();
|
if (!CollectionUtils.isEmpty(operationsUserIds)) {
|
R<List<XpOperationsUser>> userResult = xpOperationUserClient.listByIds(operationsUserIds);
|
List<XpOperationsUser> users = userResult.getData();
|
if (!CollectionUtils.isEmpty(users)) {
|
userNameMap = users.stream()
|
.collect(Collectors.toMap(XpOperationsUser::getId, XpOperationsUser::getNickName));
|
}
|
}
|
|
for (XpPointSituationReportVo bean : list) {
|
if (userNameMap.containsKey(bean.getOperationsUserId())){
|
bean.setOperationsUserName(userNameMap.get(bean.getOperationsUserId()));
|
}
|
if(bean.getOperationStatus() != null){//运营状态 1=待启用 2=启用中 3=已停用 4=已失效
|
if(bean.getOperationStatus() == 1){
|
bean.setPointStatusName("待启用");
|
}else if(bean.getOperationStatus() == 2){
|
bean.setPointStatusName("启用中");
|
}else if(bean.getOperationStatus() == 3){
|
bean.setPointStatusName("已停用");
|
}else if(bean.getOperationStatus() == 4){
|
bean.setPointStatusName("已失效");
|
}
|
}
|
}
|
}
|
}
|
|
|
@Override
|
public XpPointSituationReportVo getdetail(Long id) {
|
XpPointSituationReportQuery query = new XpPointSituationReportQuery();
|
query.setId(id);
|
List<XpPointSituationReportVo> list = this.baseMapper.pageList(query);
|
if(list.isEmpty()){
|
throw new ServiceException("未查询该数据");
|
}
|
XpPointSituationReportVo bean = list.get(0);
|
|
// 批量查询操作人信息
|
R<List<XpOperationsUser>> userResult = xpOperationUserClient.listByIds(new ArrayList<Long>(){{
|
add(bean.getOperationsUserId());
|
}} );
|
List<XpOperationsUser> users = userResult.getData();
|
if (CollectionUtils.isEmpty(users)) {
|
throw new ServiceException("未查询该运维人员");
|
}
|
Map<Long, String> userNameMap = users.stream()
|
.collect(Collectors.toMap(XpOperationsUser::getId, XpOperationsUser::getNickName));
|
|
bean.setOperationsUserName(userNameMap.get(bean.getOperationsUserId()));
|
|
R<List<XpFleet>> fleetByUserId = xpFleetOperationsClient.getFleetByUserId(bean.getOperationsUserId());
|
if(fleetByUserId.getCode() != R.SUCCESS || fleetByUserId.getData().isEmpty()){
|
throw new ServiceException("未查询该车队");
|
}
|
|
bean.setOperationsUserFleetName(fleetByUserId.getData().get(0).getFleetName());
|
|
return bean;
|
}
|
|
|
@Override
|
public List<XpPointSituationReportVo> exportList(XpPointSituationReportQuery query) {
|
List<XpPointSituationReportVo> list = this.baseMapper.pageList(query);
|
extracted(list);
|
return list;
|
}
|
|
|
@Override
|
public void deleteById(Long id) {
|
// 1. 检查记录是否存在
|
XpPointSituationReport bean = this.getById(id);
|
if (bean == null) {
|
throw new ServiceException("密支付策略配置不存在");
|
}
|
// 2. 逻辑删除(MyBatis-Plus自动处理)
|
this.removeById(id);
|
}
|
|
}
|