package com.fdkankan.site.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.fdkankan.site.common.util.JwtUtil;
import com.fdkankan.site.entity.ProjectNum;
import com.fdkankan.site.entity.ProjectTeam;
import com.fdkankan.site.mapper.IProjectNumMapper;
import com.fdkankan.site.request.AppGetSceneInfoParam;
import com.fdkankan.site.service.IProjectLogService;
import com.fdkankan.site.service.IProjectNumService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.site.service.IProjectTeamService;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
*
* 服务实现类
*
*
* @author
* @since 2022-10-10
*/
@Service
public class ProjectNumServiceImpl extends ServiceImpl implements IProjectNumService {
@Autowired
IProjectTeamService projectTeamService;
@Autowired
IProjectLogService projectLogService;
@Override
public List getListByProjectIds(Set projectIds) {
if(projectIds == null || projectIds.size() <=0){
return new ArrayList<>();
}
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.in(ProjectNum::getProjectId,projectIds);
return this.list(wrapper);
}
@Override
public HashMap> getTypeMap(List projectNums) {
HashMap> typeMap = new HashMap<>();
for (ProjectNum projectNum : projectNums) {
List numList ;
if(typeMap.get(projectNum.getType()) == null){
numList = new ArrayList<>();
}else {
numList = typeMap.get(projectNum.getType());
}
numList.add(projectNum.getNum());
typeMap.put(projectNum.getType(),numList);
}
return typeMap;
}
@Override
public void delByNumList(Integer projectId, List delNumList) {
if(delNumList.size() >0){
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProjectNum::getProjectId,projectId);
wrapper.in(ProjectNum::getNum,delNumList);
this.remove(wrapper);
}
}
@Override
public void addByNumList(Integer projectId, HashMap numType, List addNumList) {
List list = new ArrayList<>();
for (String num : addNumList) {
ProjectNum projectNum = new ProjectNum();
projectNum.setProjectId(projectId.toString());
projectNum.setNum(num);
projectNum.setType(numType.get(num));
list.add(projectNum);
}
if(list.size() >0){
this.saveBatch(list);
}
}
@Override
public List getByNumList(List numList) {
if(numList.size() >0 ){
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.in(ProjectNum::getNum,numList);
return this.list(wrapper);
}
return new ArrayList<>();
}
@Override
public void updateProjectScene(AppGetSceneInfoParam param) {
if(param.getNumList().size() >0 ){
LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>();
wrapper.in(ProjectNum::getNum,param.getNumList());
if(param.getEditableFlag()!= null){
wrapper.set(ProjectNum::getEditableFlag,param.getEditableFlag());
}
if(StringUtils.isNotBlank(param.getParentScene())){
wrapper.set(ProjectNum::getParentScene,param.getParentScene());
}
this.update(wrapper);
}
}
@Override
public Set getNumList() {
List list = this.list();
return list.stream().map(ProjectNum::getNum).collect(Collectors.toSet());
}
@Override
public void delByProjectId(Integer projectId,String token) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProjectNum::getProjectId,projectId);
List list = this.list(wrapper);
if(list.size() <=0){
return;
}
List numList = list.stream().map(ProjectNum::getNum).collect(Collectors.toList());
this.remove(wrapper);
projectLogService.addLog(projectId,"プロジェクト削除->シーン削除:",token,numList);
}
@Override
public List getByNum(String num) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProjectNum::getNum,num);
return this.list(wrapper);
}
@Override
public ProjectNum getByNumAndProjectId(String num, Integer projectId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProjectNum::getNum,num);
wrapper.eq(ProjectNum::getProjectId,projectId);
return this.getOne(wrapper);
}
}