| business/src/main/java/com/ycl/controller/IndexHomeController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| business/src/main/java/com/ycl/domain/form/ProjectProgressStatisticsForm.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| business/src/main/java/com/ycl/service/IndexHomeService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| business/src/main/resources/mapper/ProjectInfoMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| business/target/classes/com/ycl/mapper/ProjectInfoMapper.class | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| business/target/classes/mapper/ProjectInfoMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
business/src/main/java/com/ycl/controller/IndexHomeController.java
New file @@ -0,0 +1,67 @@ package com.ycl.controller; import com.ycl.common.base.Result; import com.ycl.domain.form.ProjectProgressStatisticsForm; import com.ycl.service.IndexHomeService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * nongtou-project-java * 新首页控制层 * @author : zxl * @date : 2025-11-26 15:55 **/ @RestController @RequiredArgsConstructor @RequestMapping("/index") public class IndexHomeController { private final IndexHomeService indexHomeService; /** * 首页统计项目状态 * @return */ @GetMapping("/codingCount") Result projectCodingStatusCount(){ return indexHomeService.projectCodingStatusCount(); } /** * 项目阶段状态统计 * @return */ @GetMapping("/stageCount") Result projectStageCount(){ return indexHomeService.projectStageCount(); } /** * 项目进度统计 * @return */ Result projectTaskStatus(ProjectProgressStatisticsForm form){ return indexHomeService.projectTaskStatus(form); } /** * 项目资金状态 * @return */ @GetMapping("/fundingStatus") Result projectFundingStatus(){ return indexHomeService.projectFundingStatus(); } /** * 项目推进卡点 * @return */ Result projectAdvanceCheckPoint(){ return indexHomeService.projectAdvanceCheckPoint(); } } business/src/main/java/com/ycl/domain/form/ProjectProgressStatisticsForm.java
New file @@ -0,0 +1,28 @@ package com.ycl.domain.form; import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.system.domain.base.AbsForm; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; /** * nongtou-project-java * 项目进度统计表单 * * @author : zxl * @date : 2025-11-26 16:34 **/ @Data @AllArgsConstructor @NoArgsConstructor public class ProjectProgressStatisticsForm extends AbsForm { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date startTime; } business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
@@ -46,4 +46,13 @@ ProjectInfo queryById(Integer recordId); List<ProjectInfo> checkProjectNameAndIdIsUnique(@Param("id")Long id,@Param("name") String name,@Param("code")String code); /** * 获得项目资金信息 * @param params * @return */ @DataScope(deptAlias = "d") List<ProjectInfoVO> getProjectInfoAndFunding(BaseEntity params); } business/src/main/java/com/ycl/service/IndexHomeService.java
New file @@ -0,0 +1,43 @@ package com.ycl.service; import com.ycl.common.annotation.DataScope; import com.ycl.common.base.Result; import com.ycl.domain.form.ProjectProgressStatisticsForm; /** * 首页 服务类 */ public interface IndexHomeService { /** * 首页统计项目状态 * @return */ Result projectCodingStatusCount(); /** * 项目阶段状态统计 * @return */ Result projectStageCount(); /** * 项目进度统计 * @return */ Result projectTaskStatus(ProjectProgressStatisticsForm form); /** * 项目资金状态 * @return */ Result projectFundingStatus(); /** * 项目推进卡点 * @return */ Result projectAdvanceCheckPoint(); } business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java
New file @@ -0,0 +1,143 @@ package com.ycl.service.impl; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ycl.common.annotation.DataScope; import com.ycl.common.base.Result; import com.ycl.common.constant.ProcessOverTimeConstants; import com.ycl.common.core.domain.BaseEntity; import com.ycl.common.enums.business.CodingRulerCodeTypeEnum; import com.ycl.common.enums.business.CodingRulerStatusEnum; import com.ycl.common.enums.business.ProjectCategoryEnum; import com.ycl.common.enums.business.ProjectStatusEnum; import com.ycl.common.utils.SecurityUtils; import com.ycl.domain.entity.ProjectInfo; import com.ycl.domain.form.ProjectProgressStatisticsForm; import com.ycl.domain.vo.ProjectInfoVO; import com.ycl.domain.vo.ProjectVO; import com.ycl.mapper.ProjectInfoMapper; import com.ycl.service.IndexHomeService; import com.ycl.service.ProjectInfoService; import com.ycl.service.ProjectProcessService; import com.ycl.system.mapper.SysDeptMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.*; import java.util.stream.Collectors; /** * nongtou-project-java * 首页实现类 * * @author : zxl * @date : 2025-11-26 16:51 **/ @Service @RequiredArgsConstructor public class IndexHomeServiceImpl implements IndexHomeService { private final SysDeptMapper sysDeptMapper; private final ProjectInfoMapper projectInfoMapper; @Override public Result projectCodingStatusCount() { //权限控制 Long userId = SecurityUtils.getUserId(); List<ProjectInfo> list; if (SecurityUtils.isAdmin(userId)){ //查询全部 list = new LambdaQueryChainWrapper<>(projectInfoMapper) .eq(ProjectInfo::getDeleted, Boolean.FALSE) .eq(ProjectInfo::getUsedStatus, 2) //审核通过 .list(); }else{ String ancestors = sysDeptMapper.selectAncestors(userId); String[] ancestorArr = ancestors.split(","); List<String> ancestorList = Arrays.stream(ancestorArr).collect(Collectors.toList()); ancestorList.add(SecurityUtils.getDeptId() + ""); //获得本单位以及其子单位deptId; list = new LambdaQueryChainWrapper<>(projectInfoMapper) .eq(ProjectInfo::getDeleted, Boolean.FALSE) .eq(ProjectInfo::getUsedStatus, 2) //审核通过 .in(ProjectInfo::getProjectOwnerUnit, ancestorList) .list(); } Map<String,Integer> map = new HashMap<>(); map.put(ProcessOverTimeConstants.GREEN,0); map.put(ProcessOverTimeConstants.YELLOW,0); map.put(ProcessOverTimeConstants.RED,0); map.put("total",0); if (CollectionUtils.isEmpty(list)) { //返回默认值 return Result.ok().data(map); } Map<String, List<ProjectInfo>> collect = list.stream() .filter(project -> project.getCoding() != null) // 过滤coding为null的情况 .collect(Collectors.groupingBy(ProjectInfo::getCoding)); if (collect.containsKey(ProcessOverTimeConstants.GREEN)) { map.put(ProcessOverTimeConstants.GREEN, collect.get(ProcessOverTimeConstants.GREEN).size()); } if (collect.containsKey(ProcessOverTimeConstants.YELLOW)) { map.put(ProcessOverTimeConstants.YELLOW, collect.get(ProcessOverTimeConstants.YELLOW).size()); } if (collect.containsKey(ProcessOverTimeConstants.RED)) { map.put(ProcessOverTimeConstants.RED, collect.get(ProcessOverTimeConstants.RED).size()); } map.put("total", list.size()); return Result.ok().data(map); } @Override public Result projectStageCount() { List<ProjectVO> projectVOS = projectInfoMapper.homeCount(new BaseEntity()); int reserve = 0; int previous = 0; int implement = 0; int finish = 0; for (ProjectVO projectVO : projectVOS) { if (ProjectCategoryEnum.RESERVE.getDesc().equals(ProjectCategoryEnum.getPhaseByProjectStatus(projectVO.getProjectPhase()))) { reserve+=1; } else if (ProjectCategoryEnum.PREVIOUS.getDesc().equals(ProjectCategoryEnum.getPhaseByProjectStatus(projectVO.getProjectPhase()))) { previous+=1; } else if (ProjectCategoryEnum.IMPLEMENT.getDesc().equals(ProjectCategoryEnum.getPhaseByProjectStatus(projectVO.getProjectPhase()))) { implement+=1; } else if (ProjectCategoryEnum.FINISH.getDesc().equals(ProjectCategoryEnum.getPhaseByProjectStatus(projectVO.getProjectPhase()))) { finish+=1; } } Map<String,Integer> map = new HashMap<>(); map.put(ProjectCategoryEnum.RESERVE.getCode(),reserve); map.put(ProjectCategoryEnum.PREVIOUS.getCode(),previous); map.put(ProjectCategoryEnum.IMPLEMENT.getCode(),implement); map.put(ProjectCategoryEnum.FINISH.getCode(),finish); return Result.ok().data(map); } @Override public Result projectTaskStatus(ProjectProgressStatisticsForm form) { return null; } @Override @DataScope(deptAlias = "d") public Result projectFundingStatus( ) { List<ProjectInfoVO> projectInfoAndFunding = projectInfoMapper.getProjectInfoAndFunding(new BaseEntity()); return Result.ok().data(projectInfoAndFunding); } @Override public Result projectAdvanceCheckPoint() { return null; } } business/src/main/resources/mapper/ProjectInfoMapper.xml
@@ -61,7 +61,6 @@ TPI.id = #{id} AND TPI.deleted = 0 </select> <select id="getPage" resultMap="resultMap"> SELECT TPI.*,TPP.process_ins_id as processId, @@ -251,4 +250,17 @@ </select> <select id="getProjectInfoAndFunding" parameterType="com.ycl.common.core.domain.BaseEntity" resultMap="resultMap"> SELECT TPI.*,TPIF.total_investment,TPIF.principal,TPIF.government_investment_total, TPIF.central_investment_total,TPIF.provincial_investment_total,TPIF.city_investment_total,TPIF.county_investment_total, TPIF.other_investment_total FROM t_project_info TPI LEFT JOIN t_project_investment_funding TPIF ON TPI.id = TPIF.project_id and TPIF.deleted = 0 LEFT JOIN sys_dept d ON TPI.project_owner_unit = d.dept_id <where> TPI.deleted = 0 AND TPI.used_status = 2 ${params.dataScope} </where> </select> </mapper> business/target/classes/com/ycl/mapper/ProjectInfoMapper.classBinary files differ
business/target/classes/mapper/ProjectInfoMapper.xml
@@ -61,7 +61,6 @@ TPI.id = #{id} AND TPI.deleted = 0 </select> <select id="getPage" resultMap="resultMap"> SELECT TPI.*,TPP.process_ins_id as processId, @@ -251,4 +250,17 @@ </select> <select id="getProjectInfoAndFunding" parameterType="com.ycl.common.core.domain.BaseEntity" resultMap="resultMap"> SELECT TPI.*,TPIF.total_investment,TPIF.principal,TPIF.government_investment_total, TPIF.central_investment_total,TPIF.provincial_investment_total,TPIF.city_investment_total,TPIF.county_investment_total, TPIF.other_investment_total FROM t_project_info TPI LEFT JOIN t_project_investment_funding TPIF ON TPI.id = TPIF.project_id and TPIF.deleted = 0 LEFT JOIN sys_dept d ON TPI.project_owner_unit = d.dept_id <where> TPI.deleted = 0 AND TPI.used_status = 2 ${params.dataScope} </where> </select> </mapper>