package com.gkhy.assess.system.service.impl; import cn.hutool.core.util.ObjectUtil; 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.domain.SysUser; 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.mapper.SysUserMapper; 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.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** *

* 评价项目组成员表 服务实现类 *

* * @author kzy * @since 2023-12-12 10:46:54 */ @Service public class AssPlanPersonServiceImpl extends ServiceImpl implements AssPlanPersonService { @Autowired private AssProjectService projectService; @Autowired private SysUserMapper sysUserMapper; @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) { if(planPerson.getPlayRole()==null){ planPerson.setPlayRole(PlayRoleEnum.PROJECT_MEMBER.getCode()); } LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery() .eq(AssPlanPerson::getPersonId, planPerson.getPersonId()) .eq(AssPlanPerson::getDelFlag, DeleteFlagEnum.UN_DELETE) .eq(AssPlanPerson::getProjectId, planPerson.getProjectId()) .eq(AssPlanPerson::getPlayRole,planPerson.getPlayRole()); if(planPerson.getId()!=null){ lambdaQueryWrapper.ne(AssPlanPerson::getId,planPerson.getId()); } AssPlanPerson pPerson= getOne(lambdaQueryWrapper); if(pPerson!=null){ PlayRoleEnum playRoleEnum=PlayRoleEnum.getInfoByCode(pPerson.getPlayRole()); SysUser sysUser=sysUserMapper.selectById(planPerson.getPersonId()); if(sysUser==null){ throw new ApiException("选择的用户不存在"); } String message=playRoleEnum!=null?playRoleEnum.getInfo():""; if(StringUtils.isBlank(message)){ message=String.format("用户<%s>已担任职务",sysUser.getName()); }else{ message=String.format("用户<%s>已担任%s",sysUser.getName(),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 getMajorPlanPersonCountByProject(Long projectId) { return baseMapper.getMajorPlanPersonCountByProject(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,Long projectId,Integer playCode) { return baseMapper.update(null,Wrappers.lambdaUpdate() .set(AssPlanPerson::getDelFlag,DeleteFlagEnum.DELETED.getCode()) .set(AssPlanPerson::getUpdateBy,ShiroUtils.getSysUser().getUsername()) .eq(AssPlanPerson::getPersonId,personId) .eq(AssPlanPerson::getProjectId,projectId) .eq(AssPlanPerson::getPlayRole,playCode)); } }