package cn.cslg.pas.service;
import cn.cslg.pas.common.model.PersonnelVO;
import cn.cslg.pas.common.model.vo.ClientVO;
import cn.cslg.pas.common.model.vo.ProjectVO;
import cn.cslg.pas.common.utils.*;
import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
import cn.cslg.pas.domain.Client;
import cn.cslg.pas.mapper.ClientMapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* 委托方表 服务类
*
*
* @author 王岩
* @since 2022-02-17
*/
@Service
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class ClientService extends ServiceImpl {
private final LoginUtils loginUtils;
private final CacheUtils cacheUtils;
private final ApiUtils apiUtils;
public IPage getPageList(ClientVO params) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(params.getName())) {
queryWrapper.like(Client::getName, params.getName());
}
queryWrapper.orderByDesc(Client::getCreateTime);
IPage lst = this.page(new Page<>(params.getCurrent(), params.getSize()), queryWrapper);
List list = this.page(new Page<>(params.getCurrent(), params.getSize()), queryWrapper).getRecords();
//获取专题库负责人对应信息
Map map1 = new HashMap<>();
try {
map1.put("personnelId", list.stream().map(Client::getPersonnelId).collect(Collectors.toList()));
String jsonObject1 = apiUtils.invokeApi(new JSONObject(map1), "/permission/api/system/getPersonnelById", "post", "data");
JSONArray jsonArray = JSON.parseArray(jsonObject1);
List personnelList = jsonArray.toJavaList(ProjectVO.Personnel.class);
for (Client client : list) {
for (ProjectVO.Personnel personnel : personnelList) {
if (client.getPersonnelId() != null) {
if (client.getPersonnelId().equals(personnel.getId())) {
client.setPersonnelName(personnel.getPersonnelName());
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
lst.setRecords(list);
return lst;
}
public Client getClientByName(String name) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Client::getName, name);
return this.getOne(queryWrapper);
}
public List