添加功能

This commit is contained in:
马宝龙
2026-06-27 01:58:14 +08:00
parent bfc69faa8c
commit c40c32ce8c
9 changed files with 404 additions and 0 deletions

View File

@@ -129,4 +129,17 @@ public class CommonConstant {
Tuples.of("6", "农业")
)));
/**
* 重点群体列表
*/
public static final List<Tuple2<String, String>> KEY_GROUP_LIST =
Collections.unmodifiableList(new ArrayList<>(Arrays.asList(
Tuples.of("1", "失业人员"),
Tuples.of("2", "高校毕业生"),
Tuples.of("3", "残疾人"),
Tuples.of("4", "低收入家庭"),
Tuples.of("5", "零就业家庭"),
Tuples.of("6", "其他重点人群")
)));
}

View File

@@ -1,9 +1,11 @@
package com.ruoyi.cms.controller;
import com.ruoyi.cms.domain.dto.KeyGroupQueryDTO;
import com.ruoyi.cms.domain.dto.QueryParamDto;
import com.ruoyi.cms.service.AnalysisKeyGroupServiceSituationService;
import com.ruoyi.common.core.domain.AjaxResult;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -109,4 +111,25 @@ public class AnalysisKeyGroupServiceSituationController {
public AjaxResult heatmap(@RequestBody QueryParamDto dto) {
return AjaxResult.success(analysisKeyGroupServiceSituationService.heatmap(dto));
}
/**
* 查询重点人群类型列表
*
* @return 重点人群类型列表
*/
@GetMapping("/keyGroupTypeList")
public AjaxResult keyGroupTypeList() {
return AjaxResult.success(analysisKeyGroupServiceSituationService.keyGroupTypeList());
}
/**
* 查询重点群体帮扶分页列表
*
* @param dto 查询参数
* @return 查询结果
*/
@PostMapping("/pageKeyGroup")
public AjaxResult pageKeyGroup(@RequestBody KeyGroupQueryDTO dto) {
return analysisKeyGroupServiceSituationService.pageKeyGroup(dto);
}
}

View File

@@ -0,0 +1,35 @@
package com.ruoyi.cms.domain.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* 重点群体查询参数
*
* @author 马宝龙
* @date 2026/6/26
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class KeyGroupQueryDTO extends PageDTO {
private static final long serialVersionUID = -4339925492039700077L;
/**
* 团场
*/
private String area;
/**
* 姓名
*/
private String name;
/**
* 重点人群类型
*/
private String keyGroupType;
}

View File

@@ -0,0 +1,36 @@
package com.ruoyi.cms.domain.dto;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 分页参数
*
* @author 马宝龙
* @date 2026/6/26
*/
@Data
public class PageDTO implements Serializable {
private static final long serialVersionUID = 2667497663931774784L;
/**
* 页码
*/
public static final Integer PAGE_NO = 1;
/**
* 每页条数
*/
public static final Integer PAGE_SIZE = 10;
@NotNull(message = "页码不能为空")
@Min(value = 1, message = "页码最小值为 1")
private Integer pageNo = PAGE_NO;
@NotNull(message = "每页条数不能为空")
@Min(value = 1, message = "每页条数最小值为 1")
private Integer pageSize = PAGE_SIZE;
}

View File

@@ -0,0 +1,51 @@
package com.ruoyi.cms.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 重点群体查询结果
*
* @author 马宝龙
* @date 2026/6/25
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class KeyGroupResultVo implements Serializable {
private static final long serialVersionUID = -370774975897655676L;
/**
* ID
*/
private Long id;
/**
* 姓名
*/
private String name;
/**
* 人员类型
*/
private String keyGroupType;
/**
* 人员类型描述
*/
private String keyGroupTypeDesc;
/**
* 服务内容
*/
private String serviceContent;
/**
* 服务时间
*/
private LocalDateTime serviceTime;
/**
* 技能等级描述
*/
private String skillLevelDesc;
}

View File

@@ -0,0 +1,46 @@
package com.ruoyi.cms.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 分页结果
*
* @param <T> 类型
* @author 马宝龙
* @date 2026/6/26
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PageVO<T> implements Serializable {
private static final long serialVersionUID = 1292342806693154866L;
/**
* 分页内容
*/
private List<T> list;
/**
* 总数
*/
private Long total;
/**
* 总页数
*/
private Integer totalPage;
/**
* 是否首页
*/
private Boolean isFirst;
/**
* 是否尾页
*/
private Boolean isLast;
}

View File

@@ -1,12 +1,19 @@
package com.ruoyi.cms.service;
import com.ruoyi.cms.domain.dto.KeyGroupQueryDTO;
import com.ruoyi.cms.domain.dto.QueryParamDto;
import com.ruoyi.cms.domain.vo.DictVo;
import com.ruoyi.cms.domain.vo.HeatmapVo;
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpScoreVo;
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpTypeVo;
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationKeyGroupScoreVo;
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationOverviewVo;
import com.ruoyi.cms.domain.vo.QueryResultVo;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -82,4 +89,19 @@ public interface AnalysisKeyGroupServiceSituationService {
* @return 热力图列表
*/
List<HeatmapVo> heatmap(QueryParamDto dto);
/**
* 查询重点人群类型列表
*
* @return 重点人群类型列表
*/
List<DictVo> keyGroupTypeList();
/**
* 查询重点群体帮扶分页列表
*
* @param dto 查询参数
* @return 查询结果
*/
AjaxResult pageKeyGroup(@RequestBody KeyGroupQueryDTO dto);
}

View File

@@ -1,14 +1,20 @@
package com.ruoyi.cms.service.impl;
import com.ruoyi.cms.constant.CommonConstant;
import com.ruoyi.cms.domain.dto.KeyGroupQueryDTO;
import com.ruoyi.cms.domain.dto.QueryParamDto;
import com.ruoyi.cms.domain.vo.DictVo;
import com.ruoyi.cms.domain.vo.HeatmapVo;
import com.ruoyi.cms.domain.vo.KeyGroupResultVo;
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpScoreVo;
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationHelpTypeVo;
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationKeyGroupScoreVo;
import com.ruoyi.cms.domain.vo.KeyGroupServiceSituationOverviewVo;
import com.ruoyi.cms.domain.vo.QueryResultVo;
import com.ruoyi.cms.service.AnalysisKeyGroupServiceSituationService;
import com.ruoyi.cms.util.PageUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@@ -17,6 +23,7 @@ import reactor.util.function.Tuples;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -208,4 +215,108 @@ public class AnalysisKeyGroupServiceSituationServiceImpl implements AnalysisKeyG
}
return list;
}
@Override
public List<DictVo> keyGroupTypeList() {
List<DictVo> list = new ArrayList<>();
for (Tuple2<String, String> industry : CommonConstant.KEY_GROUP_LIST) {
list.add(DictVo.builder().code(industry.getT1()).desc(industry.getT2()).build());
}
return list;
}
@Override
public AjaxResult pageKeyGroup(KeyGroupQueryDTO dto) {
// 查询总数
long count = 8L;
if (0 == count) {
return AjaxResult.success(PageUtil.<KeyGroupResultVo>empty());
}
// 查询分页内容
List<KeyGroupResultVo> voList = new ArrayList<>();
KeyGroupResultVo vo = KeyGroupResultVo.builder()
.id(1L)
.name("张三")
.keyGroupType("1")
.keyGroupTypeDesc("失业人员")
.serviceContent("xxx")
.serviceTime(LocalDateTime.now())
.skillLevelDesc("xxx")
.build();
voList.add(vo);
vo = KeyGroupResultVo.builder()
.id(2L)
.name("李四")
.keyGroupType("2")
.keyGroupTypeDesc("高校毕业生")
.serviceContent("xxx")
.serviceTime(LocalDateTime.now())
.skillLevelDesc("xxx")
.build();
voList.add(vo);
vo = KeyGroupResultVo.builder()
.id(3L)
.name("王五")
.keyGroupType("3")
.keyGroupTypeDesc("残疾人")
.serviceContent("xxx")
.serviceTime(LocalDateTime.now())
.skillLevelDesc("xxx")
.build();
voList.add(vo);
vo = KeyGroupResultVo.builder()
.id(4L)
.name("郑六")
.keyGroupType("4")
.keyGroupTypeDesc("低收入家庭")
.serviceContent("xxx")
.serviceTime(LocalDateTime.now())
.skillLevelDesc("xxx")
.build();
voList.add(vo);
vo = KeyGroupResultVo.builder()
.id(5L)
.name("吕七")
.keyGroupType("5")
.keyGroupTypeDesc("零就业家庭")
.serviceContent("xxx")
.serviceTime(LocalDateTime.now())
.skillLevelDesc("xxx")
.build();
voList.add(vo);
vo = KeyGroupResultVo.builder()
.id(6L)
.name("陈九")
.keyGroupType("6")
.keyGroupTypeDesc("其他重点人群")
.serviceContent("xxx")
.serviceTime(LocalDateTime.now())
.skillLevelDesc("xxx")
.build();
voList.add(vo);
vo = KeyGroupResultVo.builder()
.id(7L)
.name("孙十")
.keyGroupType("1")
.keyGroupTypeDesc("失业人员")
.serviceContent("xxx")
.serviceTime(LocalDateTime.now())
.skillLevelDesc("xxx")
.build();
voList.add(vo);
vo = KeyGroupResultVo.builder()
.id(8L)
.name("赵一")
.keyGroupType("2")
.keyGroupTypeDesc("高校毕业生")
.serviceContent("xxx")
.serviceTime(LocalDateTime.now())
.skillLevelDesc("xxx")
.build();
voList.add(vo);
return AjaxResult.success(PageUtil.init(voList, count, dto.getPageNo(), dto.getPageSize()));
}
}

View File

@@ -0,0 +1,67 @@
package com.ruoyi.cms.util;
import com.ruoyi.cms.domain.dto.PageDTO;
import com.ruoyi.cms.domain.vo.PageVO;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* 分页工具类
*
* @author 马宝龙
* @date 2026/6/26
*/
public class PageUtil {
private PageUtil() {
}
/**
* 返回空分页对象
*
* @param <T> 类型
* @return 空分页
*/
public static <T> PageVO<T> empty() {
return PageVO.<T>builder()
.list(new ArrayList<>())
.total(0L)
.totalPage(0)
.isFirst(true)
.isLast(true)
.build();
}
/**
* 初始化分页
*
* @param list 内容列表
* @param total 总数
* @param pageNo 页码
* @param pageSize 每页数量
* @param <T> 类型
* @return 分页
*/
public static <T> PageVO<T> init(List<T> list, Long total, Integer pageNo, Integer pageSize) {
total = Optional.ofNullable(total).orElse(0L);
pageNo = Optional.ofNullable(pageNo).orElse(PageDTO.PAGE_NO);
pageSize = Optional.ofNullable(pageSize).orElse(PageDTO.PAGE_SIZE);
int totalPage = (int) (total / pageSize);
int morePage = (int) (total % pageSize);
if (morePage > 0) {
totalPage += 1;
}
return PageVO.<T>builder()
.list(list)
.total(total)
.totalPage(totalPage)
.isFirst(pageNo.equals(PageDTO.PAGE_NO))
.isLast(pageNo.equals(totalPage))
.build();
}
}