From 4c42809d3b7f85111c60520164eccd2e9020f4d2 Mon Sep 17 00:00:00 2001 From: ziin Date: Wed, 12 Nov 2025 19:15:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(employee-big-brother):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=BB=BA=E8=81=94=E7=8E=87=E7=BB=9F=E8=AE=A1=E4=B8=8E?= =?UTF-8?q?=E6=9F=B1=E7=8A=B6=E5=9B=BE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Controller 增加 /self_complete、/employeeCompleteBarChart 两个端点 - Mapper 新增 selectEmployeeBrotherCompleteBarChart、selectEmployeeBrotherWithOperationStatus 查询 - Service 层实现个人及多用户建联率统计逻辑 - XML 补充对应 SQL,支持按天数与用户列表过滤 --- .../EmployeeBigBrotherController.java | 19 ++++++++++ .../EmployeeBigBrotherMapper.java | 8 +++++ .../EmployeeBigBrotherService.java | 6 ++++ .../EmployeeBigBrotherServiceImpl.java | 35 +++++++++++++++++++ .../EmployeeBigBrotherMapper.xml | 35 +++++++++++++++++++ 5 files changed, 103 insertions(+) diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/employeebigbrother/EmployeeBigBrotherController.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/employeebigbrother/EmployeeBigBrotherController.java index 38456bc..24ac112 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/employeebigbrother/EmployeeBigBrotherController.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/controller/admin/employeebigbrother/EmployeeBigBrotherController.java @@ -6,9 +6,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.tkdata.controller.admin.employeebigbrother.vo.EmployeeBigBrotherPageReqVO; import cn.iocoder.yudao.module.tkdata.controller.admin.employeebigbrother.vo.EmployeeBigBrotherRespVO; import cn.iocoder.yudao.module.tkdata.controller.admin.employeebigbrother.vo.EmployeeBigBrotherSaveReqVO; +import cn.iocoder.yudao.module.tkdata.controller.admin.employeehosts.vo.CompletedRateVO; +import cn.iocoder.yudao.module.tkdata.controller.admin.employeehosts.vo.EmployeeCompleteBarChartReqVO; import cn.iocoder.yudao.module.tkdata.dal.dataobject.employeebigbrother.EmployeeBigBrotherDO; import cn.iocoder.yudao.module.tkdata.service.employeebigbrother.EmployeeBigBrotherService; import io.swagger.v3.oas.annotations.Operation; @@ -125,4 +128,20 @@ public class EmployeeBigBrotherController { employeeBigBrotherService.batchUpdateEmployeeBigBrother(updateReqVO); return success(true); } + @GetMapping("/self_complete") + @Operation(summary = "获得自己的建联率") + @PreAuthorize("@ss.hasPermission('server:employee-hosts:selfquery')") + public CommonResult getEmployeeHostsCompleteWithSelf() { + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + return success(employeeBigBrotherService.getEmployeeHostsCompleteWithSelf(loginUserId)); + } + + + @PostMapping("/employeeCompleteBarChart") + @Operation(summary = "获得员工的建联柱状图数据") + @PreAuthorize("@ss.hasPermission('server:employee-big-brother:selfquery')") + public CommonResult> getEmployeeCompleteBarChart(@RequestBody EmployeeCompleteBarChartReqVO reqVO) { + return success(employeeBigBrotherService.getEmployeeBrotherCompleteBarChart(reqVO.getUserId(),reqVO.getDays())); + } + } \ No newline at end of file diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/mysql/employeebigbrother/EmployeeBigBrotherMapper.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/mysql/employeebigbrother/EmployeeBigBrotherMapper.java index c8aae29..92a3a2c 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/mysql/employeebigbrother/EmployeeBigBrotherMapper.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/dal/mysql/employeebigbrother/EmployeeBigBrotherMapper.java @@ -3,11 +3,14 @@ package cn.iocoder.yudao.module.tkdata.dal.mysql.employeebigbrother; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.tkdata.controller.admin.employeebigbrother.vo.EmployeeBigBrotherPageReqVO; +import cn.iocoder.yudao.module.tkdata.controller.admin.employeehosts.vo.CompletedRateVO; import cn.iocoder.yudao.module.tkdata.dal.dataobject.employeebigbrother.EmployeeBigBrotherDO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 大哥数据员工业务 Mapper * @@ -20,4 +23,9 @@ public interface EmployeeBigBrotherMapper extends BaseMapperX selectPagewithSelf(@Param("page") IPage iPage,@Param("dto") EmployeeBigBrotherPageReqVO pageReqVO); + + List selectEmployeeBrotherCompleteBarChart(@Param("list") List list, @Param("days") Integer days); + + CompletedRateVO selectEmployeeBrotherWithOperationStatus(@Param("userId") Long userId); + } \ No newline at end of file diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/employeebigbrother/EmployeeBigBrotherService.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/employeebigbrother/EmployeeBigBrotherService.java index 18b5ca5..7c1132f 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/employeebigbrother/EmployeeBigBrotherService.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/employeebigbrother/EmployeeBigBrotherService.java @@ -5,7 +5,9 @@ import javax.validation.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.tkdata.controller.admin.employeebigbrother.vo.EmployeeBigBrotherPageReqVO; import cn.iocoder.yudao.module.tkdata.controller.admin.employeebigbrother.vo.EmployeeBigBrotherSaveReqVO; +import cn.iocoder.yudao.module.tkdata.controller.admin.employeehosts.vo.CompletedRateVO; import cn.iocoder.yudao.module.tkdata.dal.dataobject.employeebigbrother.EmployeeBigBrotherDO; +import org.apache.ibatis.annotations.Param; /** @@ -65,4 +67,8 @@ public interface EmployeeBigBrotherService { PageResult getEmployeeBigBrotherPageWithSelf(@Valid EmployeeBigBrotherPageReqVO pageReqVO); void batchUpdateEmployeeBigBrother(@Valid List updateReqVO); + + List getEmployeeBrotherCompleteBarChart(@Param("list") List list, @Param("days") Integer days); + + CompletedRateVO getEmployeeHostsCompleteWithSelf(Long loginUserId); } \ No newline at end of file diff --git a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/employeebigbrother/EmployeeBigBrotherServiceImpl.java b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/employeebigbrother/EmployeeBigBrotherServiceImpl.java index 8521fbb..7ee186d 100644 --- a/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/employeebigbrother/EmployeeBigBrotherServiceImpl.java +++ b/tkdata-model-server/src/main/java/cn/iocoder/yudao/module/tkdata/service/employeebigbrother/EmployeeBigBrotherServiceImpl.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; import cn.iocoder.yudao.module.tkdata.controller.admin.employeebigbrother.vo.EmployeeBigBrotherPageReqVO; import cn.iocoder.yudao.module.tkdata.controller.admin.employeebigbrother.vo.EmployeeBigBrotherSaveReqVO; +import cn.iocoder.yudao.module.tkdata.controller.admin.employeehosts.vo.CompletedRateVO; import cn.iocoder.yudao.module.tkdata.dal.dataobject.bigbrother.BigBrotherDO; import cn.iocoder.yudao.module.tkdata.dal.dataobject.employeebigbrother.EmployeeBigBrotherDO; import cn.iocoder.yudao.module.tkdata.dal.dataobject.employeehosts.EmployeeHostsDO; @@ -21,6 +22,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -157,4 +160,36 @@ public class EmployeeBigBrotherServiceImpl implements EmployeeBigBrotherService employeeBigBrotherMapper.updateBatch(employeeBigBrotherDOS); } + @Override + public List getEmployeeBrotherCompleteBarChart(List userIdList, Integer days) { + + List dbList = employeeBigBrotherMapper.selectEmployeeBrotherCompleteBarChart(userIdList,days); + + + try { + // 2. 转 Map,key 是 userId + Map dbMap = dbList.stream() + .collect(Collectors.toMap( + CompletedRateVO::getUserId, + Function.identity(), + (oldVal, newVal) -> newVal)); // 重复时保留新的 + // 3. 组装结果 + return userIdList.stream() + .map(userId -> dbMap.getOrDefault(userId, new CompletedRateVO(userId, 0))) // 缺数据补0 + .collect(Collectors.toList()); + } catch (Exception e) { + ArrayList nullData = new ArrayList<>(); + for (Long userId : userIdList) { + nullData.add(new CompletedRateVO(userId, 0)); + } + return nullData; + } + + } + + @Override + public CompletedRateVO getEmployeeHostsCompleteWithSelf(Long loginUserId) { + return employeeBigBrotherMapper.selectEmployeeBrotherWithOperationStatus(loginUserId); + } + } \ No newline at end of file diff --git a/tkdata-model-server/src/main/resources/mapper/employeebigbrother/EmployeeBigBrotherMapper.xml b/tkdata-model-server/src/main/resources/mapper/employeebigbrother/EmployeeBigBrotherMapper.xml index 4d0756a..81cb90b 100644 --- a/tkdata-model-server/src/main/resources/mapper/employeebigbrother/EmployeeBigBrotherMapper.xml +++ b/tkdata-model-server/src/main/resources/mapper/employeebigbrother/EmployeeBigBrotherMapper.xml @@ -228,4 +228,39 @@ + + + + \ No newline at end of file