package com.gkhy.assess.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.gkhy.assess.common.enums.DeleteFlagEnum;
import com.gkhy.assess.common.exception.ApiException;
import com.gkhy.assess.common.utils.StringUtils;
import com.gkhy.assess.system.domain.AssPlanPerson;
import com.gkhy.assess.system.enums.PlayRoleEnum;
import com.gkhy.assess.system.mapper.AssPlanPersonMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.assess.system.service.AssPlanPersonService;
import com.gkhy.assess.system.service.AssProjectService;
import com.gkhy.assess.system.utils.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* 评价项目组成员表 服务实现类
*
*
* @author kzy
* @since 2023-12-12 10:46:54
*/
@Service
public class AssPlanPersonServiceImpl extends ServiceImpl implements AssPlanPersonService {
@Autowired
private AssProjectService projectService;
@Override
public List getByProjectId(Long projectId) {
projectService.checkUserAllowed(projectId);
return baseMapper.getPlanPersonByProjectId(projectId);
}
@Override
public int addPlanPerson(AssPlanPerson planPerson) {
projectService.checkUserAllowed(planPerson.getProjectId());
checkPersonUnique(planPerson);
planPerson.setCreateBy(ShiroUtils.getSysUser().getUsername());
return baseMapper.insert(planPerson);
}
@Override
public void checkPersonUnique(AssPlanPerson planPerson) {
LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery()
.eq(AssPlanPerson::getPersonId, planPerson.getPersonId())
.eq(AssPlanPerson::getDelFlag, DeleteFlagEnum.UN_DELETE)
.eq(AssPlanPerson::getProjectId, planPerson.getProjectId());
if(planPerson.getId()!=null){
lambdaQueryWrapper.ne(AssPlanPerson::getId,planPerson.getId());
}
AssPlanPerson pPerson= getOne(lambdaQueryWrapper);
if(pPerson!=null){
PlayRoleEnum playRoleEnum=PlayRoleEnum.getInfoByCode(pPerson.getPlayRole());
String message=playRoleEnum!=null?playRoleEnum.getInfo():"";
if(StringUtils.isBlank(message)){
message="改用户已存在";
}else{
message="该用户已担任"+message;
}
throw new ApiException(message);
}
}
@Override
public AssPlanPerson getPlanPersonByPersonId(Long personId,Long projectId) {
return getOne(Wrappers.lambdaQuery()
.eq(AssPlanPerson::getPersonId,personId)
.eq(AssPlanPerson::getDelFlag,DeleteFlagEnum.UN_DELETE.getCode())
.eq(AssPlanPerson::getProjectId,projectId));
}
@Override
public int editPlanPerson(AssPlanPerson planPerson) {
projectService.checkUserAllowed(planPerson.getProjectId());
if(planPerson.getPersonId()!=null){
checkPersonUnique(planPerson);
}
planPerson.setUpdateBy(ShiroUtils.getSysUser().getUsername());
return baseMapper.updateById(planPerson);
}
@Override
public int deletePlanPersonById(Long planPersonId) {
AssPlanPerson planPerson=getById(planPersonId);
projectService.checkUserAllowed(planPerson.getProjectId());
planPerson=new AssPlanPerson().setId(planPersonId)
.setDelFlag(DeleteFlagEnum.DELETED.getCode());
planPerson.setUpdateBy(ShiroUtils.getSysUser().getUsername());
return baseMapper.updateById(planPerson);
}
@Override
public int deletePlanPersonByPersonId(Long personId) {
return baseMapper.update(null,Wrappers.lambdaUpdate()
.set(AssPlanPerson::getDelFlag,DeleteFlagEnum.DELETED.getCode())
.set(AssPlanPerson::getUpdateBy,ShiroUtils.getSysUser().getUsername())
.eq(AssPlanPerson::getPersonId,personId));
}
}