package com.gkhy.assess.system.service.impl; import com.gkhy.assess.common.exception.ApiException; import com.gkhy.assess.system.domain.AssEstimateTask; import com.gkhy.assess.system.domain.AssPlanPerson; import com.gkhy.assess.system.enums.PlayRoleEnum; import com.gkhy.assess.system.enums.ReportProgressEnum; import com.gkhy.assess.system.mapper.AssEstimateTaskMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.assess.system.service.AssEstimateTaskService; 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 org.springframework.transaction.annotation.Transactional; /** *

* 评价任务通知表 服务实现类 *

* * @author kzy * @since 2023-12-12 10:46:54 */ @Service public class AssEstimateTaskServiceImpl extends ServiceImpl implements AssEstimateTaskService { @Autowired private AssProjectService projectService; @Autowired private AssPlanPersonService planPersonService; @Override @Transactional(rollbackFor = RuntimeException.class) public int addEstimateTask(AssEstimateTask estimateTask) { Long projectId=estimateTask.getProjectId(); projectService.checkUserAllowed(projectId); checkTaskCount(projectId); // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimateTask.getLeaderId()).setProjectId(projectId)); //校验项目状态 projectService.checkReportProgress(projectId, ReportProgressEnum.CONTRACT); estimateTask.setCreateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.insert(estimateTask); if(row>0) { //更新项目状态 projectService.changeReportProgress(projectId,ReportProgressEnum.ESTIMATE_TASK); //todo 新增项目组成员 AssPlanPerson planPerson=new AssPlanPerson().setPersonId(estimateTask.getLeaderId()) .setPlayRole(PlayRoleEnum.PROJECT_LEADER.getCode()) .setProjectId(projectId); planPersonService.addPlanPerson(planPerson); } return row; } public void checkTaskCount(Long projectId){ //校验项目下评价任务数量 int contractCount= baseMapper.getCountByProjectId(projectId); if(contractCount>0){ throw new ApiException("项目下已存在评价任务数量"); } } @Override @Transactional(rollbackFor = RuntimeException.class) public int editEstimateTask(AssEstimateTask estimateTask) { projectService.checkUserAllowed(estimateTask.getProjectId()); AssEstimateTask oldTask=getById(estimateTask.getId()); estimateTask.setUpdateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.updateById(estimateTask); if(row>0 &&estimateTask.getLeaderId()!=null&& !estimateTask.getLeaderId().equals(oldTask.getLeaderId())){ // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimateTask.getLeaderId()).setProjectId(oldTask.getProjectId())); //todo 删除旧的项目成员 planPersonService.deletePlanPersonByPersonId(oldTask.getLeaderId(),estimateTask.getProjectId(),PlayRoleEnum.PROJECT_LEADER.getCode()); //todo 新增新的项目成员 planPersonService.addPlanPerson(new AssPlanPerson().setPersonId(estimateTask.getLeaderId()) .setPlayRole(PlayRoleEnum.PROJECT_LEADER.getCode()) .setProjectId(oldTask.getProjectId())); } return row; } @Override public AssEstimateTask getEstimateTaskByProjectId(Long projectId) { projectService.checkUserAllowed(projectId); return baseMapper.getTaskByProjectId(projectId); } @Override public AssEstimateTask getEstimateTaskById(Long taskId) { AssEstimateTask estimateTask= baseMapper.getTaskById(taskId); projectService.checkUserAllowed(estimateTask.getProjectId()); return estimateTask; } }