Sfoglia il codice sorgente

feat: 获取类型统计(各个类型的百分比)

xdd 1 mese fa
parent
commit
a3074e6ac9

+ 3 - 0
fs-admin/src/main/java/com/fs/his/controller/FsTodoItemsController.java

@@ -8,6 +8,7 @@ import com.fs.common.utils.ServletUtils;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.todo.domain.FsTodoItems;
+import com.fs.todo.dto.TodoCategoryStatisticsDTO;
 import com.fs.todo.param.AssignExecutorParam;
 import com.fs.todo.param.GetUserListParam;
 import com.fs.todo.param.QueryTodoItemsParam;
@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 
 @Api("待办")
 @RestController
@@ -54,6 +56,7 @@ public class FsTodoItemsController extends BaseController {
         return R.ok().put("data",byId);
     }
 
+
     @ApiOperation("更新待办事项状态")
     @PostMapping("/updateStatusById")
     public R updateStatusById(@RequestBody QueryTodoItemsParam param)

+ 30 - 0
fs-service/src/main/java/com/fs/todo/dto/TodoCategoryStatisticsDTO.java

@@ -0,0 +1,30 @@
+package com.fs.todo.dto;
+
+import lombok.Data;
+
+/**
+ * 待办事项分类统计DTO
+ */
+@Data
+public class TodoCategoryStatisticsDTO {
+
+    /**
+     * 分类ID
+     */
+    private Long cateId;
+
+    /**
+     * 总条目数
+     */
+    private Long totalCount;
+
+    /**
+     * 已完成条目数
+     */
+    private Long completedCount;
+
+    /**
+     * 完成率(百分比)
+     */
+    private Double completionRate;
+}

+ 16 - 0
fs-service/src/main/java/com/fs/todo/mapper/FsTodoItemsMapper.java

@@ -1,10 +1,12 @@
 package com.fs.todo.mapper;
 
 import com.fs.todo.domain.FsTodoItems;
+import com.fs.todo.dto.TodoCategoryStatisticsDTO;
 import com.fs.todo.param.AssignExecutorParam;
 import com.fs.todo.param.QueryTodoItemsParam;
 import org.apache.ibatis.annotations.*;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 待办事项表 Mapper接口
@@ -19,6 +21,20 @@ public interface FsTodoItemsMapper {
     FsTodoItems selectById(@Param("id") Long id);
 
 
+    @Select("SELECT \n" +
+            "   \n" +
+            "    cate_id,\n" +
+            "    COUNT(*) AS total_count,\n" +
+            "    SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) AS completed_count,\n" +
+            "    CASE \n" +
+            "        WHEN COUNT(*) = 0 THEN 0.00\n" +
+            "        ELSE ROUND((SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) / COUNT(*)) * 100, 2)\n" +
+            "    END AS completion_rate\n" +
+            "FROM fs_todo_items\n" +
+            "GROUP BY cate_id\n" +
+            "ORDER BY cate_id;")
+    @MapKey("cateId")
+    Map<Long,TodoCategoryStatisticsDTO> queryCateStatis();
 
     /**
      * 查询所有待办事项

+ 5 - 0
fs-service/src/main/java/com/fs/todo/service/FsTodoItemsService.java

@@ -1,10 +1,12 @@
 package com.fs.todo.service;
 
 import com.fs.todo.domain.FsTodoItems;
+import com.fs.todo.dto.TodoCategoryStatisticsDTO;
 import com.fs.todo.param.AssignExecutorParam;
 import com.fs.todo.param.QueryTodoItemsParam;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 待办事项表 服务类
@@ -58,4 +60,7 @@ public interface FsTodoItemsService {
     boolean removeById(Long id);
 
     void assignExecutor(AssignExecutorParam param);
+
+    Map<Long, TodoCategoryStatisticsDTO> queryCateStatis();
+
 }

+ 25 - 0
fs-service/src/main/java/com/fs/todo/service/impl/FsTodoItemsServiceImpl.java

@@ -9,6 +9,7 @@ import com.fs.hisStore.service.cache.IFsUserCacheService;
 import com.fs.system.mapper.SysUserMapper;
 import com.fs.system.service.ISysUserService;
 import com.fs.todo.domain.FsTodoItems;
+import com.fs.todo.dto.TodoCategoryStatisticsDTO;
 import com.fs.todo.mapper.FsTodoItemsMapper;
 import com.fs.todo.param.AssignExecutorParam;
 import com.fs.todo.param.QueryTodoItemsParam;
@@ -17,7 +18,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import java.time.LocalDateTime;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 待办事项表 服务实现类
@@ -208,4 +211,26 @@ public class FsTodoItemsServiceImpl implements FsTodoItemsService {
         }
         fsTodoItemsMapper.assignExecutor(param);
     }
+
+    @Override
+    public Map<Long, TodoCategoryStatisticsDTO> queryCateStatis() {
+        Map<Long, TodoCategoryStatisticsDTO> cateStatis = fsTodoItemsMapper.queryCateStatis();
+
+        if(cateStatis == null) {
+            cateStatis = new HashMap<>();
+        }
+        // 固定任务0
+        TodoCategoryStatisticsDTO fixedTask = cateStatis.get(0L);
+        if(fixedTask == null) {
+            fixedTask = new TodoCategoryStatisticsDTO();
+            cateStatis.put(0L,fixedTask);
+        }
+        // 工作计划1
+        TodoCategoryStatisticsDTO workSchedule = cateStatis.get(1L);
+        if(workSchedule == null) {
+            workSchedule = new TodoCategoryStatisticsDTO();
+            cateStatis.put(1L,workSchedule);
+        }
+        return cateStatis;
+    }
 }

+ 8 - 0
fs-user-app/src/main/java/com/fs/app/controller/FsTodoItemsController.java

@@ -6,6 +6,7 @@ import com.fs.common.core.domain.R;
 import com.fs.his.param.FsFollowListUParam;
 import com.fs.his.vo.FsFollowListUVO;
 import com.fs.todo.domain.FsTodoItems;
+import com.fs.todo.dto.TodoCategoryStatisticsDTO;
 import com.fs.todo.param.QueryTodoItemsParam;
 import com.fs.todo.service.FsTodoItemsService;
 import com.github.pagehelper.PageHelper;
@@ -17,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Api("待办")
@@ -26,7 +28,13 @@ public class FsTodoItemsController extends BaseController {
 
     @Autowired
     private FsTodoItemsService fsTodoItemsService;
+    @ApiOperation("获取类型统计(各个类型的百分比)")
+    @GetMapping("/queryCateStatis")
+    public R queryCateStatis(){
+        Map<Long, TodoCategoryStatisticsDTO> cateStatis = fsTodoItemsService.queryCateStatis();
 
+        return R.ok().put("data",cateStatis);
+    }
 
     @ApiOperation("查看待办列表")
     @PostMapping("/listPage")