From 5d2cfd4562f74496a5263db3451c1e78ff53aead Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: 星期四, 27 三月 2025 08:44:16 +0800
Subject: [PATCH] 单据增加查询返回字段

---
 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java |   82 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 73 insertions(+), 9 deletions(-)

diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java
index baec209..32d3922 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java
+++ b/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;
     }
 

--
Gitblit v1.9.2