diff --git a/gateway2/src/main/resources/application-dev.yml b/gateway2/src/main/resources/application-dev.yml
index 5cad0384..4ae0b766 100644
--- a/gateway2/src/main/resources/application-dev.yml
+++ b/gateway2/src/main/resources/application-dev.yml
@@ -91,9 +91,9 @@ management:
logging:
level:
- com.sdm.gateway2: DEBUG
- org.springframework.cloud.gateway: DEBUG
- reactor.netty: DEBUG
+ com.sdm.gateway2: INFO
+ org.springframework.cloud.gateway: INFO
+ reactor.netty: INFO
# 0单机处理,1负载均衡轮询
serverType: 0
diff --git a/gateway2/src/main/resources/application-local.yml b/gateway2/src/main/resources/application-local.yml
index 15c0f0c1..2588877b 100644
--- a/gateway2/src/main/resources/application-local.yml
+++ b/gateway2/src/main/resources/application-local.yml
@@ -91,9 +91,9 @@ management:
logging:
level:
- com.sdm.gateway2: DEBUG
- org.springframework.cloud.gateway: DEBUG
- reactor.netty: DEBUG
+ com.sdm.gateway2: INFO
+ org.springframework.cloud.gateway: INFO
+ reactor.netty: INFO
# 0单机处理,1负载均衡轮询
serverType: 0
diff --git a/gateway2/src/main/resources/application-prod.yml b/gateway2/src/main/resources/application-prod.yml
index 5cad0384..4ae0b766 100644
--- a/gateway2/src/main/resources/application-prod.yml
+++ b/gateway2/src/main/resources/application-prod.yml
@@ -91,9 +91,9 @@ management:
logging:
level:
- com.sdm.gateway2: DEBUG
- org.springframework.cloud.gateway: DEBUG
- reactor.netty: DEBUG
+ com.sdm.gateway2: INFO
+ org.springframework.cloud.gateway: INFO
+ reactor.netty: INFO
# 0单机处理,1负载均衡轮询
serverType: 0
diff --git a/gateway2/src/main/resources/logback.xml b/gateway2/src/main/resources/logback.xml
index dc7573a6..0f0c1be6 100644
--- a/gateway2/src/main/resources/logback.xml
+++ b/gateway2/src/main/resources/logback.xml
@@ -50,8 +50,8 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java
index c8ac55b2..10fe395a 100644
--- a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java
+++ b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java
@@ -147,4 +147,32 @@ public class SimulationNodeController implements ISimuluationNodeFeignClient {
}
+ /**
+ * 用户组项目统计
+ */
+ @GetMapping("/getUserGroupProjectStatistics")
+ @Operation(summary = "用户组项目统计", description = "用户组项目统计")
+ public SdmResponse getUserGroupProjectStatistics(@Parameter(description = "用户组ID")@RequestParam( value = "userGroupId") Integer userGroupId,@Parameter(description = "用户ID")@RequestParam( value = "userId", required = false) Integer userId) {
+ return nodeService.getUserGroupProjectStatistics(userGroupId,userId);
+ }
+
+ /**
+ * 用户组任务完成情况统计
+ */
+ @PostMapping("/getUserGroupTaskCompleteStatistics")
+ @Operation(summary = "用户组任务完成情况统计", description = "用户组任务完成情况统计")
+ public SdmResponse getUserGroupTaskCompleteStatistics(@RequestBody @Validated GetUserGroupTaskCompleteStatisticsReq req) {
+ return nodeService.getUserGroupTaskCompleteStatistics(req);
+ }
+
+ /**
+ * 用户组难度系数统计
+ *
+ */
+ @GetMapping("/getUserGroupDifficultyStatistics")
+ @Operation(summary = "用户组难度系数统计", description = "用户组难度系数统计")
+ public SdmResponse getUserGroupDifficultyStatistics(@RequestBody @Validated GetUserGroupTaskCompleteStatisticsReq req) {
+ return nodeService.getUserGroupDifficultyStatistics(req);
+ }
+
}
diff --git a/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java
index 173ab58e..ef784b24 100644
--- a/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java
+++ b/project/src/main/java/com/sdm/project/dao/SimulationNodeMapper.java
@@ -6,14 +6,8 @@ import com.sdm.project.model.po.PerformanceNodePo;
import com.sdm.project.model.po.ProjectNodePo;
import com.sdm.project.model.po.TaskNodeMemberPo;
import com.sdm.project.model.po.TaskNodePo;
-import com.sdm.project.model.req.SpdmNodeDetailReq;
-import com.sdm.project.model.req.SpdmNodeExtraReq;
-import com.sdm.project.model.req.SpdmNodeRelateMemberReq;
-import com.sdm.project.model.req.SpdmProjectNodeEditReq;
-import com.sdm.project.model.vo.SpdmNodeDetailVo;
-import com.sdm.project.model.vo.SpdmNodeExtraVo;
-import com.sdm.project.model.vo.SpdmNodeMemberVo;
-import com.sdm.project.model.vo.SpdmNodeVo;
+import com.sdm.project.model.req.*;
+import com.sdm.project.model.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -79,4 +73,10 @@ public interface SimulationNodeMapper extends BaseMapper {
List getNodeListByIds(@Param("nodeIdList") List nodeIdList);
+ List getUserGroupProjectStatistics(@Param("userGroupId") Integer userGroupId, @Param("userId") Integer userId);
+
+ List getUserGroupTaskCompleteStatistics(@Param("req") GetUserGroupTaskCompleteStatisticsReq req);
+
+ List getUserGroupDifficultyStatistics(@Param("req") GetUserGroupTaskCompleteStatisticsReq req);
+
}
diff --git a/project/src/main/java/com/sdm/project/dao/SimulationProjectMapper.java b/project/src/main/java/com/sdm/project/dao/SimulationProjectMapper.java
index 4ac123c1..939f0954 100644
--- a/project/src/main/java/com/sdm/project/dao/SimulationProjectMapper.java
+++ b/project/src/main/java/com/sdm/project/dao/SimulationProjectMapper.java
@@ -169,4 +169,5 @@ public interface SimulationProjectMapper {
List getTaskListByTag(@Param("req") ProjectTreeReq taskTreeReq);
+ void getUserGroupProjectStatistics();
}
diff --git a/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java b/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java
new file mode 100644
index 00000000..e8acf103
--- /dev/null
+++ b/project/src/main/java/com/sdm/project/model/req/GetUserGroupTaskCompleteStatisticsReq.java
@@ -0,0 +1,49 @@
+package com.sdm.project.model.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * 用户组任务完成情况统计请求参数
+ */
+@Data
+@Schema(description = "用户组任务完成情况统计请求参数")
+public class GetUserGroupTaskCompleteStatisticsReq {
+ @Schema(description = "用户组ID")
+ @NotNull
+ private Integer userGroupId;
+
+ @Schema(description = "用户ID")
+ private Integer userId;
+
+ @Schema(description = "标签1")
+ private String tag1;
+
+ @Schema(description = "标签2")
+ private String tag2;
+
+ @Schema(description = "标签3")
+ private String tag3;
+
+ @Schema(description = "标签4")
+ private String tag4;
+
+ @Schema(description = "标签5")
+ private String tag5;
+
+ @Schema(description = "标签6")
+ private String tag6;
+
+ @Schema(description = "标签7")
+ private String tag7;
+
+ @Schema(description = "标签8")
+ private String tag8;
+
+ @Schema(description = "标签9")
+ private String tag9;
+
+ @Schema(description = "标签10")
+ private String tag10;
+}
\ No newline at end of file
diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyStatisticsVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyStatisticsVo.java
new file mode 100644
index 00000000..07400dfa
--- /dev/null
+++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyStatisticsVo.java
@@ -0,0 +1,14 @@
+package com.sdm.project.model.vo;
+
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+public class UserGroupDifficultyStatisticsVo {
+ private Integer userId;
+ private String userName;
+ private Map difficultyCount = new HashMap<>();
+ private Integer totalTasks;
+}
diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyVo.java
new file mode 100644
index 00000000..807ae252
--- /dev/null
+++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupDifficultyVo.java
@@ -0,0 +1,11 @@
+package com.sdm.project.model.vo;
+
+import lombok.Data;
+
+@Data
+public class UserGroupDifficultyVo {
+ private float difficulty;
+ private Integer userId;
+ private String nickname;
+ private Integer groupId;
+}
diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupProjectVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupProjectVo.java
new file mode 100644
index 00000000..8038490c
--- /dev/null
+++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupProjectVo.java
@@ -0,0 +1,14 @@
+package com.sdm.project.model.vo;
+
+import lombok.Data;
+
+/**
+ * 用户项目统计VO
+ */
+@Data
+public class UserGroupProjectVo {
+ private String nodeId;
+ private Integer userId;
+ private String nickname;
+ private Integer groupId;
+}
diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteStatisticsVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteStatisticsVo.java
new file mode 100644
index 00000000..32b5bc42
--- /dev/null
+++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteStatisticsVo.java
@@ -0,0 +1,14 @@
+package com.sdm.project.model.vo;
+
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+public class UserGroupTaskCompleteStatisticsVo {
+ private Integer userId;
+ private String userName;
+ private Map statusCount = new HashMap<>();
+ private Integer totalTasks;
+}
\ No newline at end of file
diff --git a/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteVo.java b/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteVo.java
new file mode 100644
index 00000000..40ceac9e
--- /dev/null
+++ b/project/src/main/java/com/sdm/project/model/vo/UserGroupTaskCompleteVo.java
@@ -0,0 +1,11 @@
+package com.sdm.project.model.vo;
+
+import lombok.Data;
+
+@Data
+public class UserGroupTaskCompleteVo {
+ private String exeStatus;
+ private String nickname;
+ private Integer userId;
+ private Integer groupId;
+}
diff --git a/project/src/main/java/com/sdm/project/service/INodeService.java b/project/src/main/java/com/sdm/project/service/INodeService.java
index cc62929d..8a50f421 100644
--- a/project/src/main/java/com/sdm/project/service/INodeService.java
+++ b/project/src/main/java/com/sdm/project/service/INodeService.java
@@ -30,4 +30,11 @@ public interface INodeService extends IService {
SdmResponse> getAllNodeByProjectIdAndType(Integer chooseNodeId, String nextNodeType);
+ SdmResponse getUserGroupProjectStatistics(Integer userGroupId, Integer userId);
+
+ SdmResponse getUserGroupTaskCompleteStatistics(GetUserGroupTaskCompleteStatisticsReq req);
+
+ //用户组难度系数统计
+ SdmResponse getUserGroupDifficultyStatistics(GetUserGroupTaskCompleteStatisticsReq req);
+
}
diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java
index d2c52913..896e1949 100644
--- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java
+++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java
@@ -686,4 +686,105 @@ public class NodeServiceImpl extends ServiceImpl userGroupProjectStatistics = this.baseMapper.getUserGroupProjectStatistics(userGroupId, userId);
+ if(CollectionUtils.isEmpty(userGroupProjectStatistics)) {
+ return SdmResponse.success(new ArrayList<>());
+ }
+
+ // 按用户ID统计项目数量
+ Map userProjectCountMap = new HashMap<>();
+ // 存储每个用户的详细信息,使用LinkedHashMap保持插入顺序
+ Map userId2UserGroupProjectVo = new LinkedHashMap<>();
+
+ for (UserGroupProjectVo vo : userGroupProjectStatistics) {
+ Integer userIdKey = vo.getUserId();
+ userProjectCountMap.put(userIdKey, userProjectCountMap.getOrDefault(userIdKey, 0) + 1);
+ // 只保存第一个遇到的用户信息,或者可以考虑保存最新的
+ if (!userId2UserGroupProjectVo.containsKey(userIdKey)) {
+ userId2UserGroupProjectVo.put(userIdKey, vo);
+ }
+ }
+
+ // 转换为List