Jelajahi Sumber

产值填报归档新增

chenjun 10 bulan lalu
induk
melakukan
792147bd8c

+ 22 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/dto/ProjectFinishProgressDto.java

@@ -0,0 +1,22 @@
+package com.zjugis.business.bean.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author 陈俊
+ * @Date 2024/8/26 9:55
+ * @Version 1.0
+ */
+@Data
+public class ProjectFinishProgressDto {
+
+    private String projectId;
+
+    /**
+     * 完成进度
+     */
+    private BigDecimal finishProgress;
+
+}

+ 9 - 0
zjugis-business/src/main/java/com/zjugis/business/controller/ProjectReportPeriodController.java

@@ -39,4 +39,13 @@ public class ProjectReportPeriodController {
         projectReportPeriodService.end();
         return CommonResult.success(true);
     }
+
+    /**
+     * 填报归档
+     */
+    @GetMapping("/projectReportPeriod/archive")
+    public CommonResult<Boolean> archive() {
+        projectReportPeriodService.archive();
+        return CommonResult.success(true);
+    }
 }

+ 11 - 0
zjugis-business/src/main/java/com/zjugis/business/mapper/ProjectReportMapper.java

@@ -62,4 +62,15 @@ public interface ProjectReportMapper extends BaseMapperX<ProjectReport> {
                 .inIfPresent(ProjectReport::getProjectId,projectIds)
                 .eq(ProjectReport::getPeriodId,periodId));
     }
+
+    /**
+     * 获取全部审核通过列表
+     * @param periodId
+     * @return
+     */
+    default List<ProjectReport> getAllPassList(String periodId){
+        return selectList(new LambdaQueryWrapperX<ProjectReport>()
+                .eq(ProjectReport::getReportStatus, ProjectReportStatusEnum.PASS.getValue())
+                .eq(ProjectReport::getPeriodId,periodId));
+    }
 }

+ 8 - 0
zjugis-business/src/main/java/com/zjugis/business/mapper/ProjectReportPeriodMapper.java

@@ -23,4 +23,12 @@ public interface ProjectReportPeriodMapper extends BaseMapperX<ProjectReportPeri
     default ProjectReportPeriod getCurrentReportPeriod(){
        return selectOne(new LambdaQueryWrapperX<ProjectReportPeriod>().eq(ProjectReportPeriod::getStatus, CommonStatusEnum.ENABLE.getStatus()));
     }
+
+    /**
+     * 获取最近的填报期号
+     * @return
+     */
+    default ProjectReportPeriod getRecentlyReportPeriod(){
+        return selectList(new LambdaQueryWrapperX<ProjectReportPeriod>().orderByDesc(ProjectReportPeriod::getCreateTime)).get(0);
+    }
 }

+ 11 - 0
zjugis-business/src/main/java/com/zjugis/business/service/ProjectReportPeriodService.java

@@ -25,4 +25,15 @@ public interface ProjectReportPeriodService {
      * 关闭填报
      */
     void end();
+
+    /**
+     * 填报归档
+     */
+    void archive();
+
+    /**
+     * 获取最近的填报期号
+     * @return
+     */
+    ProjectReportPeriod getRecentlyReportPeriod();
 }

+ 7 - 0
zjugis-business/src/main/java/com/zjugis/business/service/ProjectReportService.java

@@ -63,4 +63,11 @@ public interface ProjectReportService {
      * @param reqVO
      */
     void batchPass(ProjectReportAuditBatchPassRequest reqVO);
+
+    /**
+     * 获取某期填报全部通过数据
+     * @param periodId
+     * @return
+     */
+    List<ProjectReport> getAllPassList(String periodId);
 }

+ 7 - 0
zjugis-business/src/main/java/com/zjugis/business/service/ProjectService.java

@@ -2,6 +2,7 @@ package com.zjugis.business.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.business.bean.dto.ProjectDto;
+import com.zjugis.business.bean.dto.ProjectFinishProgressDto;
 import com.zjugis.business.bean.entity.Project;
 import com.zjugis.business.bean.request.ProjectChildRequest;
 import com.zjugis.business.bean.request.ProjectMaterialRequest;
@@ -100,5 +101,11 @@ public interface ProjectService {
     int updateByIdJx(ProjectRequest project);
 
     List<Project> getUserReportProjectList();
+
+    /**
+     * 批量更新项目产值进度
+     * @param finishProgressDtos
+     */
+    void batchUpdateFinishProgress(List<ProjectFinishProgressDto> finishProgressDtos);
 }
 

+ 43 - 0
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectReportPeriodServiceImpl.java

@@ -1,16 +1,23 @@
 package com.zjugis.business.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.zjugis.business.bean.dto.ProjectFinishProgressDto;
+import com.zjugis.business.bean.entity.ProjectReport;
 import com.zjugis.business.bean.entity.ProjectReportPeriod;
 import com.zjugis.business.mapper.ProjectReportPeriodMapper;
 import com.zjugis.business.service.ProjectReportPeriodService;
+import com.zjugis.business.service.ProjectReportService;
+import com.zjugis.business.service.ProjectService;
 import com.zjugis.framework.common.enums.CommonStatusEnum;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 
 import java.time.LocalDateTime;
 import java.time.Year;
+import java.util.ArrayList;
+import java.util.List;
 
 import static com.zjugis.business.enums.ErrorCodeConstants.REPORT_PERIOD_IS_EXISTS;
 import static com.zjugis.business.enums.ErrorCodeConstants.REPORT_PERIOD_NOT_EXISTS;
@@ -26,6 +33,10 @@ public class ProjectReportPeriodServiceImpl implements ProjectReportPeriodServic
 
     @Resource
     private ProjectReportPeriodMapper projectReportPeriodMapper;
+    @Resource
+    private ProjectReportService projectReportService;
+    @Resource
+    private ProjectService projectService;
 
     @Override
     public ProjectReportPeriod getCurrentReportPeriod() {
@@ -55,4 +66,36 @@ public class ProjectReportPeriodServiceImpl implements ProjectReportPeriodServic
         currentReportPeriod.setEndDate(LocalDateTime.now());
         projectReportPeriodMapper.updateById(currentReportPeriod);
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void archive() {
+        ProjectReportPeriod currentReportPeriod = getCurrentReportPeriod();
+        if(ObjectUtil.isNull(currentReportPeriod)){
+            throw exception(REPORT_PERIOD_NOT_EXISTS);
+        }
+        List<ProjectReport> allPassList = projectReportService.getAllPassList(currentReportPeriod.getId());
+        List<ProjectFinishProgressDto> finishProgressDtos = new ArrayList<>(allPassList.size());
+        allPassList.forEach(projectReport -> {
+            ProjectFinishProgressDto dto = new ProjectFinishProgressDto();
+            dto.setProjectId(projectReport.getProjectId());
+            dto.setFinishProgress(projectReport.getFinishProgress());
+            finishProgressDtos.add(dto);
+        });
+        projectService.batchUpdateFinishProgress(finishProgressDtos);
+        end(currentReportPeriod.getId());
+    }
+
+    @Override
+    public ProjectReportPeriod getRecentlyReportPeriod() {
+        return projectReportPeriodMapper.getRecentlyReportPeriod();
+    }
+
+    private void end(String id) {
+        ProjectReportPeriod projectReportPeriod = new ProjectReportPeriod();
+        projectReportPeriod.setStatus(CommonStatusEnum.DISABLE.getStatus());
+        projectReportPeriod.setEndDate(LocalDateTime.now());
+        projectReportPeriod.setId(id);
+        projectReportPeriodMapper.updateById(projectReportPeriod);
+    }
 }

+ 13 - 6
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectReportServiceImpl.java

@@ -86,8 +86,10 @@ public class ProjectReportServiceImpl implements ProjectReportService {
     public ProjectReport save(ProjectReport entity) {
         ProjectReport projectReport = projectReportMapper.selectByProjectIdAndPeriodId(entity.getProjectId(), entity.getPeriodId());
         //填报待审核或者已通过不允许修改
-        if (ProjectReportStatusEnum.AUDIT.getValue().equals(projectReport.getReportStatus()) || (ProjectReportStatusEnum.PASS.getValue().equals(projectReport.getReportStatus()))) {
-            throw exception(REPORT_IS_SUBMITTED);
+        if (ObjectUtil.isNotNull(projectReport)) {
+            if (ProjectReportStatusEnum.AUDIT.getValue().equals(projectReport.getReportStatus()) || (ProjectReportStatusEnum.PASS.getValue().equals(projectReport.getReportStatus()))) {
+                throw exception(REPORT_IS_SUBMITTED);
+            }
         }
         if (StringUtils.isNotEmpty(entity.getId())) {
             projectReportMapper.updateById(entity);
@@ -181,16 +183,16 @@ public class ProjectReportServiceImpl implements ProjectReportService {
     @Override
     public List<ProjectReportResp> getCheckList() {
         ProjectReportPeriod currentReportPeriod = projectReportPeriodService.getCurrentReportPeriod();
-        List<ProjectReport> checkList = projectReportMapper.getCheckList(SecurityFrameworkUtils.getLoginUserId(),currentReportPeriod.getId());
+        List<ProjectReport> checkList = projectReportMapper.getCheckList(SecurityFrameworkUtils.getLoginUserId(), currentReportPeriod.getId());
         return ProjectReportConvert.INSTANCE.convertList01(checkList);
     }
 
     @Override
     public List<ProjectReportResp> getPassList() {
-        ProjectReportPeriod currentReportPeriod = projectReportPeriodService.getCurrentReportPeriod();
+        ProjectReportPeriod recentlyReportPeriod = projectReportPeriodService.getRecentlyReportPeriod();
         List<Project> projects = projectService.selectByPermission();
         Set<String> projectIds = convertSet(projects, Project::getId);
-        List<ProjectReport> passList = projectReportMapper.getPassList(projectIds, currentReportPeriod.getId());
+        List<ProjectReport> passList = projectReportMapper.getPassList(projectIds, recentlyReportPeriod.getId());
         return ProjectReportConvert.INSTANCE.convertList01(passList);
     }
 
@@ -198,8 +200,13 @@ public class ProjectReportServiceImpl implements ProjectReportService {
     @Override
     public void batchPass(ProjectReportAuditBatchPassRequest reqVO) {
         List<ProjectReportAuditPassRequest> passList = reqVO.getPassList();
-        passList.forEach(x->{
+        passList.forEach(x -> {
             pass(x);
         });
     }
+
+    @Override
+    public List<ProjectReport> getAllPassList(String periodId) {
+        return projectReportMapper.getAllPassList(periodId);
+    }
 }

+ 12 - 0
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectServiceImpl.java

@@ -612,5 +612,17 @@ public class ProjectServiceImpl implements ProjectService {
     public List<Project> getUserReportProjectList() {
         return projectMapper.getUserReportProjectList(SecurityFrameworkUtils.getLoginUserId());
     }
+
+    @Override
+    public void batchUpdateFinishProgress(List<ProjectFinishProgressDto> finishProgressDtos) {
+        List<Project> projects = new ArrayList<>(finishProgressDtos.size());
+        finishProgressDtos.forEach(projectFinishProgressDto -> {
+            Project project = new Project();
+            project.setId(projectFinishProgressDto.getProjectId());
+            project.setFinishProgress(projectFinishProgressDto.getFinishProgress());
+            projects.add(project);
+        });
+        projectMapper.updateBatch(projects);
+    }
 }