1.管理能查看到员工今日建联数量

This commit is contained in:
2025-09-09 20:31:28 +08:00
parent 4411d38b39
commit 18822ef3e1
6 changed files with 107 additions and 2 deletions

View File

@@ -149,8 +149,6 @@ public class EmployeeHostsController {
return success(employeeHostsService.getEmployeeHostsCompleteWithSelf(userId));
}
@GetMapping("/self_complete")
@Operation(summary = "获得自己的建联率")
@PreAuthorize("@ss.hasPermission('server:employee-hosts:selfquery')")
@@ -158,4 +156,12 @@ public class EmployeeHostsController {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
return success(employeeHostsService.getEmployeeHostsCompleteWithSelf(loginUserId));
}
@PostMapping("/employeeCompleteBarChart")
@Operation(summary = "获得员工的建联柱状图数据")
@PreAuthorize("@ss.hasPermission('server:employee-hosts:selfquery')")
public CommonResult<List<CompletedRateVO>> getEmployeeCompleteBarChart(@RequestBody List<Long> userId) {
return success(employeeHostsService.getEmployeeHostsCompleteBarChart(userId));
}
}

View File

@@ -1,17 +1,26 @@
package cn.iocoder.yudao.module.tkdata.controller.admin.employeehosts.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/*
* @author: ziin
* @date: 2025/8/6 15:13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "管理后台 - 员工建联完成率")
public class CompletedRateVO {
private Long userId;
private Integer finishedNum;
private Integer UnfinishedNum;
private Integer totalNum;
public CompletedRateVO(Long userId, int i) {
this.userId = userId;
this.finishedNum = i;
}
}

View File

@@ -33,4 +33,6 @@ public interface EmployeeHostsMapper extends BaseMapperX<EmployeeHostsDO> {
void batchUpdate(ArrayList<EmployeeHostsDO> employeeHostsDOS);
CompletedRateVO selectEmployeeHostsWithOperationStatus(@Param("userId") Long userId);
List<CompletedRateVO> selectEmployeeHostsCompleteBarChart(List<Long> list);
}

View File

@@ -66,4 +66,6 @@ public interface EmployeeHostsService {
void batchUpdateEmployeeHosts(List<EmployeeHostsSaveReqVO> updateReqVOList);
CompletedRateVO getEmployeeHostsCompleteWithSelf(@Valid Long userId);
List<CompletedRateVO> getEmployeeHostsCompleteBarChart(@Valid List<Long> userId);
}

View File

@@ -25,6 +25,8 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -178,5 +180,22 @@ public class EmployeeHostsServiceImpl implements EmployeeHostsService {
return employeeHostsMapper.selectEmployeeHostsWithOperationStatus(userId);
}
@Override
public List<CompletedRateVO> getEmployeeHostsCompleteBarChart(List<Long> userIdList) {
List<CompletedRateVO> dbList = employeeHostsMapper.selectEmployeeHostsCompleteBarChart(userIdList);
// 2. 转 Mapkey 是 userId
Map<Long, CompletedRateVO> dbMap = dbList.stream()
.collect(Collectors.toMap(CompletedRateVO::getUserId, Function.identity()));
// 3. 组装结果
List<CompletedRateVO> result = userIdList.stream()
.map(userId -> dbMap.getOrDefault(userId, new CompletedRateVO(userId, 0))) // 缺数据补0
.collect(Collectors.toList());
return result;
}
}

View File

@@ -12,6 +12,54 @@
<!-- 使用 IGNORE 关键字忽略重复插入 -->
<sql id="Base_Column_List">
id,
hosts_id,
user_id,
hosts_level,
hosts_coins,
invitation_type,
online_fans,
fans,
fllowernum,
yesterday_coins,
country,
hosts_kind,
operation_status,
remake,
`uid`,
tenant_id,
flag,
create_time,
update_time,
creator,
updater,
deleted
</sql>
<resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.tkdata.dal.dataobject.employeehosts.EmployeeHostsDO">
<result column="id" property="id"/>
<result column="hosts_id" property="hostsId"/>
<result column="user_id" property="userId"/>
<result column="hosts_level" property="hostsLevel"/>
<result column="hosts_coins" property="hostsCoins"/>
<result column="invitation_type" property="invitationType"/>
<result column="online_fans" property="onlineFans"/>
<result column="fans" property="fans"/>
<result column="fllowernum" property="fllowernum"/>
<result column="yesterday_coins" property="yesterdayCoins"/>
<result column="country" property="country"/>
<result column="hosts_kind" property="hostsKind"/>
<result column="operation_status" property="operationStatus"/>
<result column="remake" property="remake"/>
<result column="uid" property="uid"/>
<result column="tenant_id" property="tenantId"/>
<result column="flag" property="flag"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="creator" property="creator"/>
<result column="updater" property="updater"/>
<result column="deleted" property="deleted"/>
</resultMap>
<insert id="insertIgnore" parameterType="cn.iocoder.yudao.module.tkdata.dal.dataobject.employeehosts.EmployeeHostsDO">
INSERT IGNORE INTO server_employee_hosts
<trim prefix="(" suffix=")" suffixOverrides=",">
@@ -364,4 +412,23 @@
</if>
GROUP BY user_id
</select>
<select id="selectEmployeeHostsCompleteBarChart"
resultType="cn.iocoder.yudao.module.tkdata.controller.admin.employeehosts.vo.CompletedRateVO">
SELECT
user_id as userId,
SUM(CASE WHEN operation_status = 1 THEN 1 ELSE 0 END) AS finishedNum
FROM
server_employee_hosts
WHERE
deleted = 0
AND operation_status = 1
AND DATE(update_time) = CURDATE()
<if test="list != null and list.size() != 0">
AND user_id IN
<foreach collection="list" item="user_id" open="(" separator="," close=")">
#{user_id}
</foreach>
</if>
</select>
</mapper>