Kaynağa Gözat

init: init project step4: biz code support

shc 1 yıl önce
ebeveyn
işleme
580eed9d4a

+ 1 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -957,6 +957,7 @@ public class ApiController {
         for (UserVO sysU : sysUserList) {
 
             Map<String, Object> mapOne = new HashMap<>();
+            mapOne.put("latestChangePwdTime", sysU.getLatestChangePwdTime());
             mapOne.put("userId", sysU.getUserId().toString());
             mapOne.put("realname", sysU.getRealname());
             mapOne.put("phone", sysU.getPhone());

+ 46 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysStatisticController.java

@@ -0,0 +1,46 @@
+package com.qunzhixinxi.hnqz.admin.controller;
+
+import com.qunzhixinxi.hnqz.admin.manager.SysStatisticManager;
+import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 统计前端控制器
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2024/05/26 15:21
+ */
+@Slf4j
+@RestController
+@AllArgsConstructor
+public class SysStatisticController {
+
+    private final SysStatisticManager statisticManager;
+
+
+    @GetMapping(value = "/stat/pkg")
+    public R<Map<String, Object>> getPkgStat() {
+        HnqzUser operator = SecurityUtils.getUser();
+        Map<String, Object> res = statisticManager.getPkgStat(operator);
+        return R.ok(res);
+    }
+
+
+    @GetMapping(value = "/stat/task")
+    public R<Map<String, Object>> getTaskStat() {
+
+        HnqzUser operator = SecurityUtils.getUser();
+        Map<String, Object> res = statisticManager.getTaskStat(operator);
+        return R.ok(res);
+    }
+
+
+}

+ 174 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysStatisticManager.java

@@ -0,0 +1,174 @@
+package com.qunzhixinxi.hnqz.admin.manager;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
+import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * 统计控制器
+ *
+ * @author jimmy
+ * @version 1.0.0
+ * @date 2024/05/26 15:22
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class SysStatisticManager {
+
+    private final WmScorePackageService packageService;
+    private final WmTaskService taskService;
+    private final WmTaskTypeService taskTypeService;
+
+    /**
+     * 获取积分包统计
+     *
+     * @param operator 操作人
+     * @return 包统计信息
+     */
+    public Map<String, Object> getPkgStat(HnqzUser operator) {
+        Map<String, Object> res = new HashMap<>(3);
+        Map<String, Long> total = new HashMap<>(2);
+        Map<String, Long> finish = new HashMap<>(2);
+        Map<String, Long> doing = new HashMap<>(2);
+
+        // 查询全部的积分包
+        List<WmScorePackage> packages = packageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getSendPackageDeptId, operator.getDeptId()));
+
+        if (CollUtil.isNotEmpty(packages)) {
+            // 统计全部的信息
+            total.put("count", (long) packages.size());
+            total.put("sum", packages.stream().mapToLong(WmScorePackage::getScore).sum());
+
+            // 统计已完成
+            Map<String, List<WmScorePackage>> collect = packages.stream().collect(Collectors.groupingBy(WmScorePackage::getPackageFinishStatus));
+
+            // 获取未完成的
+            List<WmScorePackage> doingPkgs = collect.get("0");
+            if (CollUtil.isNotEmpty(doingPkgs)) {
+                doing.put("count", (long) doingPkgs.size());
+                doing.put("sum", doingPkgs.stream().mapToLong(WmScorePackage::getScore).sum());
+            }
+
+            // 获取已完成的
+            List<WmScorePackage> finishPkgs = collect.get("1");
+            if (CollUtil.isNotEmpty(finishPkgs)) {
+                finish.put("count", (long) finishPkgs.size());
+                finish.put("sum", finishPkgs.stream().mapToLong(WmScorePackage::getScore).sum());
+            }
+
+
+        } else {
+            total.put("count", 0L);
+            total.put("sum", 0L);
+            doing.put("count", 0L);
+            doing.put("sum", 0L);
+            finish.put("count", 0L);
+            finish.put("sum", 0L);
+
+        }
+
+        res.put("total", total);
+        res.put("finish", finish);
+        res.put("doing", doing);
+
+        return res;
+    }
+
+
+    /**
+     * 获取任务的统计
+     *
+     * @param operator 操作人
+     * @return 任务统计
+     */
+    public Map<String, Object> getTaskStat(HnqzUser operator) {
+
+        // 查询全部的积分包
+        List<WmScorePackage> packages = packageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getSendPackageDeptId, operator.getDeptId()));
+
+        // 过滤出有下级包的包id
+        Set<String> pkgIds = packages.stream().filter(pkg -> StrUtil.isNotBlank(pkg.getRelationScoreId())).map(WmScorePackage::getId).collect(Collectors.toSet());
+
+        if (CollUtil.isNotEmpty(pkgIds)) {
+            List<WmScorePackage> pkgs = packageService.listByIds(pkgIds);
+            Set<String> collect = pkgs.stream().filter(pkg -> StrUtil.isNotBlank(pkg.getRelationScoreId())).map(WmScorePackage::getId).collect(Collectors.toSet());
+
+            if (CollUtil.isNotEmpty(collect)) {
+
+                List<WmScorePackage> pkgs1 = packageService.listByIds(collect);
+                Set<String> collect1 = pkgs1.stream().filter(pkg -> StrUtil.isNotBlank(pkg.getRelationScoreId())).map(WmScorePackage::getId).collect(Collectors.toSet());
+                if (CollUtil.isNotEmpty(collect1)) {
+                    List<WmScorePackage> pkgs2 = packageService.listByIds(collect1);
+                    pkgIds = pkgs2.stream().filter(pkg -> StrUtil.isNotBlank(pkg.getRelationScoreId())).map(WmScorePackage::getId).collect(Collectors.toSet());
+
+                } else {
+                    pkgIds = pkgs1.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+                }
+
+            } else {
+                pkgIds = pkgs.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+            }
+
+
+        } else {
+            pkgIds = packages.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+        }
+
+        Map<String, List<WmTask>> taskTypeAndTaskMap;
+        if (CollUtil.isNotEmpty(pkgIds)) {
+            List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getScorePackageId, pkgIds));
+
+            taskTypeAndTaskMap = tasks.stream().collect(Collectors.groupingBy(WmTask::getTaskTypeId));
+        } else {
+            taskTypeAndTaskMap = Collections.emptyMap();
+        }
+
+
+        List<WmTaskType> taskTypes = taskTypeService.list(Wrappers.<WmTaskType>lambdaQuery()
+                .eq(WmTaskType::getDelFlag, CommonConstants.STATUS_NORMAL)
+                .lt(WmTaskType::getId, 1000));
+
+        List<Map<String, Object>> taskTypeStatList = new ArrayList<>(taskTypes.size());
+
+        long total = 0;
+        for (WmTaskType taskType : taskTypes) {
+
+            Map<String, Object> taskTypeAndSumMap = new HashMap<>(2);
+            List<WmTask> wmTasks = taskTypeAndTaskMap.get(taskType.getId());
+
+            long sum = CollUtil.isEmpty(wmTasks) ? 0L : wmTasks.stream().mapToLong(WmTask::getScore).sum();
+            taskTypeAndSumMap.put("taskTypeName", taskType.getTaskTypeName());
+            taskTypeAndSumMap.put("sum", sum);
+            total += sum;
+            taskTypeStatList.add(taskTypeAndSumMap);
+
+        }
+
+
+        Map<String, Object> res = new HashMap<>(2);
+        res.put("details", taskTypeStatList);
+        res.put("total", total);
+
+        return res;
+    }
+}