heheng
2025-03-27 5d2cfd4562f74496a5263db3451c1e78ff53aead
assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java
@@ -2,21 +2,29 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.gkhy.assess.common.api.CommonPage;
import com.gkhy.assess.common.constant.SuperAccountConstant;
import com.gkhy.assess.common.enums.DeleteFlagEnum;
import com.gkhy.assess.common.enums.UserIdentityEnum;
import com.gkhy.assess.common.exception.ApiException;
import com.gkhy.assess.common.utils.PageUtil;
import com.gkhy.assess.common.utils.StringUtils;
import com.gkhy.assess.system.domain.AssPlanPerson;
import com.gkhy.assess.system.domain.AssProject;
import com.gkhy.assess.system.domain.SysAgency;
import com.gkhy.assess.system.domain.vo.AssProjectVo;
import com.gkhy.assess.system.domain.vo.PersonRecognitionVO;
import com.gkhy.assess.system.domain.vo.ProjectStaticVO;
import com.gkhy.assess.system.enums.ProgressPhaseEnum;
import com.gkhy.assess.system.enums.ReportProgressEnum;
import com.gkhy.assess.system.enums.SafetyCheckEnum;
import com.gkhy.assess.system.mapper.AssPlanPersonMapper;
import com.gkhy.assess.system.mapper.AssProjectMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.assess.system.domain.SysUser;
import com.gkhy.assess.system.mapper.SysAgencyMapper;
import com.gkhy.assess.system.service.AssProjectService;
import com.gkhy.assess.system.utils.ShiroUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -38,6 +46,8 @@
public class AssProjectServiceImpl extends ServiceImpl<AssProjectMapper, AssProject> implements AssProjectService {
    @Autowired
    private AssPlanPersonMapper planPersonMapper;
    @Autowired
    private SysAgencyMapper agencyMapper;
    @Override
    public CommonPage projectList(AssProject project) {
@@ -48,16 +58,49 @@
                throw new ApiException("用户机构id为空");
            }
            project.setAgencyId(user.getAgencyId());
        }else {
            //监管机构只能查看本辖区的项目
            if (!SuperAccountConstant.ADMINISTRATOR.equals(user.getUsername()) && !SuperAccountConstant.SUPER_ADMIN.equals(user.getUsername())){
                project.setCity(user.getManageRegion());
            }
        }
        PageUtil.startPage();
        List<AssProject> projects=baseMapper.projectList(project);
        //获取签字确认人数
        handleProjectRecognitionCount(projects);
        return CommonPage.restPage(projects);
    }
    public void handleProjectRecognitionCount(List<AssProject> projects){
        List<Long>projectIds=projects.stream().map(item -> item.getId()).collect(Collectors.toList());
        if(!projectIds.isEmpty()) {
            List<PersonRecognitionVO> personAndRecognitions = planPersonMapper.getPersonAndRecognitionCount(projectIds);
            Map<Long, PersonRecognitionVO> map = personAndRecognitions.stream().collect(Collectors.toMap(PersonRecognitionVO::getProjectId, a -> a));
            for (AssProject project : projects) {
                PersonRecognitionVO personRecognitionVO = map.get(project.getId());
                if (personRecognitionVO != null) {
                    project.setPersonRecognition(personRecognitionVO);
                }
            }
        }
    }
    @Override
    public AssProject getProjectById(Long projectId) {
        return baseMapper.getProjectById(projectId);
    public AssProjectVo getProjectById(Long projectId) {
        AssProject projectById = baseMapper.getProjectById(projectId);
        if(projectById!=null){
            AssProjectVo projectVo = new AssProjectVo();
            BeanUtils.copyProperties(projectById, projectVo);
            Long agencyId = projectVo.getAgencyId();
            if (agencyId != null) {
                SysAgency agency = agencyMapper.getAgencyById(agencyId);
                projectVo.setAgency(agency);
            }
            return projectVo;
        }
        return null;
    }
    @Override
@@ -70,10 +113,12 @@
        if(user.getAgencyId()==null){
            throw new ApiException("用户机构id为空");
        }
        project.setAgencyId(user.getAgencyId());
        project.setSafetyCheck(project.getEstimateType() == 33 ? SafetyCheckEnum.CHECKED.getCode() :SafetyCheckEnum.UN_CHECK.getCode());
        if(!checkNameUnique(project)){
            throw new ApiException("项目名已存在");
        }
        project.setAgencyId(user.getAgencyId());
        project.setReportProgress(ReportProgressEnum.ADD.getCode());
        project.setCreateBy(ShiroUtils.getSysUser().getUsername());
        int row=baseMapper.insert(project);
@@ -85,7 +130,14 @@
        //todo  权限校验
        SysUser user= ShiroUtils.getSysUser();
        checkUserAllowed(projectId);
        AssProject project=new AssProject()
        //判断项目流转状态
        AssProject project=getById(projectId);
        if(project.getReportProgress().equals(ReportProgressEnum.CONFIRM_FINAL.getCode())){
            if(!user.getIdentity().equals(UserIdentityEnum.MONITOR.getCode())){
                throw new ApiException("没有权限删除确认完结的项目,请联系监管用户删除");
            }
        }
        project=new AssProject()
                .setId(projectId)
                .setDelFlag(DeleteFlagEnum.DELETED.getCode());
        project.setUpdateBy(user.getUsername());
@@ -99,9 +151,9 @@
            throw new ApiException("项目id不能为空");
        }
        checkUserAllowed(projectId);
        if(!checkNameUnique(project)){
            throw new ApiException("项目名已存在");
        }
//        if(!checkNameUnique(project)){
//            throw new ApiException("项目名已存在");
//        }
        project.setAgencyId(null);//机构id不能修改
        project.setReportProgress(null);//项目状态不能修改
        project.setUpdateBy(ShiroUtils.getSysUser().getUsername());
@@ -124,7 +176,7 @@
    @Override
    public boolean checkNameUnique(AssProject project) {
        Long projectId = project.getId()==null? -1L : project.getId();
        AssProject pro = baseMapper.getProjectByName(project.getName());
        AssProject pro = baseMapper.getProjectByName(project.getName(),project.getAgencyId(),project.getSafetyCheck());
        if (pro!=null && pro.getId().longValue() != projectId.longValue())
        {
            return false;
@@ -212,13 +264,25 @@
        project.setPhase(ProgressPhaseEnum.ARCHIVE.getCode());
        Integer archiveTotal=baseMapper.getProjectCount(project);
        project.setPhase(null);
        project.setUnFinish(1);
        project.setSafetyCheck(SafetyCheckEnum.CHECKED.getCode());
        Integer safetyCheckTotal=baseMapper.getProjectCount(project);
        project.setSafetyCheck(SafetyCheckEnum.UN_CHECK.getCode());
        Integer safetyTotal=baseMapper.getProjectCount(project);
        ProjectStaticVO projectStaticVO=new ProjectStaticVO()
                .setProjectTotal(projectTotal)
                .setRiskTotal(riskTotal)
                .setInvestigationTotal(investigationTotal)
                .setReviewTotal(reviewTotal)
                .setReportTotal(reportTotal)
                .setArchiveTotal(archiveTotal);
                .setArchiveTotal(archiveTotal)
                .setSafetyCheckTotal(safetyCheckTotal)
                .setSafetyTotal(safetyTotal)
                .setUnFinishTotal(safetyTotal+safetyCheckTotal);
        return projectStaticVO;
    }