package com.gkhy.assess.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.assess.common.exception.ApiException; import com.gkhy.assess.system.domain.AssPlanPerson; import com.gkhy.assess.system.domain.AssProcessAudit; import com.gkhy.assess.system.enums.AccessoryFileTypeEnum; import com.gkhy.assess.system.enums.PlayRoleEnum; import com.gkhy.assess.system.enums.ReportProgressEnum; import com.gkhy.assess.system.mapper.AssProcessAuditMapper; import com.gkhy.assess.system.service.AssAccessoryFileService; import com.gkhy.assess.system.service.AssPlanPersonService; import com.gkhy.assess.system.service.AssProcessAuditService; 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 AssProcessAuditServiceImpl extends ServiceImpl implements AssProcessAuditService { @Autowired private AssProjectService projectService; @Autowired private AssPlanPersonService planPersonService; @Autowired private AssAccessoryFileService accessoryFileService; @Override @Transactional(rollbackFor = RuntimeException.class) public int addProcessAudit(AssProcessAudit processAudit) { Long projectId=processAudit.getProjectId(); projectService.checkUserAllowed(projectId); checkProcessAuditCount(projectId); // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()).setProjectId(projectId)); //校验项目状态 projectService.checkReportProgress(projectId, ReportProgressEnum.CONCLUSION); processAudit.setCreateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.insert(processAudit); if(row>0) { //更新项目状态 projectService.changeReportProgress(projectId,ReportProgressEnum.PROCESS_AUDIT); //todo 新增项目组成员 AssPlanPerson planPerson=new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()) .setPlayRole(PlayRoleEnum.PROCESS_LEADER.getCode()) .setProjectId(projectId); planPersonService.addPlanPerson(planPerson); } return row; } public void checkProcessAuditCount(Long projectId){ //校验项目下过程控制数量 int count= baseMapper.getCountByProjectId(projectId); if(count>0){ throw new ApiException("项目下已存在过程控制"); } } @Override @Transactional(rollbackFor = RuntimeException.class) public int editProcessAudit(AssProcessAudit processAudit) { projectService.checkUserAllowed(processAudit.getProjectId()); AssProcessAudit oldProcess=getById(processAudit.getId()); processAudit.setUpdateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.updateById(processAudit); if(row>0 && processAudit.getProcessLeaderId()!=null&& !processAudit.getProcessLeaderId().equals(oldProcess.getProcessLeaderId())){ // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()).setProjectId(oldProcess.getProjectId())); //todo 删除旧的项目成员 planPersonService.deletePlanPersonByPersonId(oldProcess.getProcessLeaderId(),processAudit.getProjectId(),PlayRoleEnum.PROCESS_LEADER.getCode()); //todo 新增新的项目成员 planPersonService.addPlanPerson(new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()) .setPlayRole(PlayRoleEnum.PROCESS_LEADER.getCode()) .setProjectId(oldProcess.getProjectId())); } return row; } @Override public AssProcessAudit getProcessAuditByProjectId(Long projectId) { projectService.checkUserAllowed(projectId); AssProcessAudit processAudit= baseMapper.getProcessAuditByProjectId(projectId); processAudit.setAccessoryFiles(accessoryFileService.getAccessoryFileByProjectId(projectId, null,AccessoryFileTypeEnum.PROCESS_ATTACHMENT.getCode())); return processAudit; } @Override public AssProcessAudit getProcessAuditById(Long processAuditId) { return baseMapper.getProcessAuditById(processAuditId); } }