package com.gkhy.assess.system.service.impl; import com.gkhy.assess.common.exception.ApiException; import com.gkhy.assess.system.domain.AssContract; import com.gkhy.assess.system.domain.AssProjectMaterial; import com.gkhy.assess.system.domain.vo.ProjectMaterialVO; import com.gkhy.assess.system.enums.ReportProgressEnum; import com.gkhy.assess.system.mapper.AssProjectMaterialMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.assess.system.service.AssContractService; import com.gkhy.assess.system.service.AssProjectMaterialService; import com.gkhy.assess.system.service.AssProjectService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** *

* 项目归档文件表 服务实现类 *

* * @author kzy * @since 2023-12-12 10:46:54 */ @Service public class AssProjectMaterialServiceImpl extends ServiceImpl implements AssProjectMaterialService { @Autowired private AssProjectService projectService; @Autowired private AssContractService contractService; @Override @Transactional(rollbackFor = RuntimeException.class) public int addProjectMaterial(ProjectMaterialVO projectMaterialVO) { List projectMaterials=projectMaterialVO.getProjectMaterials(); Long projectId=projectMaterialVO.getProjectId(); if(projectMaterials==null||projectMaterials.size()!=3){ throw new ApiException("项目归档为空或者项目归档数量不正确"); } projectService.checkUserAllowed(projectId); checkProjectMaterialCount(projectId); //校验项目状态 projectService.checkReportProgress(projectId, ReportProgressEnum.PROCESS_AUDIT); boolean b=saveBatch(projectMaterials); if(b) { //更新合同 AssContract contract= projectMaterialVO.getContract(); contractService.updateById(contract); //更新项目状态 projectService.changeReportProgress(projectId,ReportProgressEnum.PROJECT_MATERIAL); } return 1; } public void checkProjectMaterialCount(Long projectId){ //校验项目下项目归档数量 int count= baseMapper.getCountByProjectId(projectId); if(count>0){ throw new ApiException("项目下已存在项目归档"); } } @Override @Transactional(rollbackFor = RuntimeException.class) public int editProjectMaterial(ProjectMaterialVO projectMaterialVO) { Long projectId=projectMaterialVO.getProjectId(); projectService.checkUserAllowed(projectId); boolean b=updateBatchById(projectMaterialVO.getProjectMaterials()); if(b){ //更新合同 AssContract contract= projectMaterialVO.getContract(); contractService.updateById(contract); } return 1; } @Override public List getProjectMaterialByProjectId(Long projectId) { projectService.checkUserAllowed(projectId); return baseMapper.getProjectMaterialByProjectId(projectId); } @Override public AssProjectMaterial getProjectMaterialById(Long projectMaterialId) { return baseMapper.getProjectMaterialById(projectMaterialId); } }