From 0e152f77327194edcb266b774c4d17768774b74b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <8153694@qq.com> Date: Thu, 10 Aug 2023 10:58:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=BA=E5=91=98=E5=AD=A6?= =?UTF-8?q?=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/project/model/vo/ProjectVo.java | 5 + .../study/service/StudyStatService.java | 7 ++ .../service/impl/StudyStatServiceImpl.java | 91 +++++++++++++++++-- .../module/study/web/StudyStatController.java | 24 +++++ .../mortals/httpclient/http-client.env.json | 4 + 5 files changed, 124 insertions(+), 7 deletions(-) diff --git a/study-manager/src/main/java/com/mortals/xhx/module/project/model/vo/ProjectVo.java b/study-manager/src/main/java/com/mortals/xhx/module/project/model/vo/ProjectVo.java index 9b9dd11..0b512c8 100644 --- a/study-manager/src/main/java/com/mortals/xhx/module/project/model/vo/ProjectVo.java +++ b/study-manager/src/main/java/com/mortals/xhx/module/project/model/vo/ProjectVo.java @@ -33,4 +33,9 @@ public class ProjectVo extends BaseEntityLong { */ private String studyPersonRadio; + /** + * 瀛︿範浜烘暟鏁伴噺 + */ + private Integer studyPersonCount; + } \ No newline at end of file diff --git a/study-manager/src/main/java/com/mortals/xhx/module/study/service/StudyStatService.java b/study-manager/src/main/java/com/mortals/xhx/module/study/service/StudyStatService.java index aeccefd..820bfee 100644 --- a/study-manager/src/main/java/com/mortals/xhx/module/study/service/StudyStatService.java +++ b/study-manager/src/main/java/com/mortals/xhx/module/study/service/StudyStatService.java @@ -1,6 +1,10 @@ package com.mortals.xhx.module.study.service; +import com.mortals.framework.model.Context; import com.mortals.framework.service.ICRUDService; import com.mortals.xhx.module.study.model.StudyStatEntity; + +import java.util.Map; + /** * StudyStatService * @@ -11,4 +15,7 @@ import com.mortals.xhx.module.study.model.StudyStatEntity; */ public interface StudyStatService extends ICRUDService<StudyStatEntity,Long>{ + + void indexStat(Map<String, Object> model,Context context); + } \ No newline at end of file diff --git a/study-manager/src/main/java/com/mortals/xhx/module/study/service/impl/StudyStatServiceImpl.java b/study-manager/src/main/java/com/mortals/xhx/module/study/service/impl/StudyStatServiceImpl.java index 980f056..3f57c8b 100644 --- a/study-manager/src/main/java/com/mortals/xhx/module/study/service/impl/StudyStatServiceImpl.java +++ b/study-manager/src/main/java/com/mortals/xhx/module/study/service/impl/StudyStatServiceImpl.java @@ -1,4 +1,17 @@ package com.mortals.xhx.module.study.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.mortals.xhx.common.code.ProjectTypeEnum; +import com.mortals.xhx.common.code.YesNoEnum; +import com.mortals.xhx.module.project.model.ProjectEntity; +import com.mortals.xhx.module.project.model.ProjectQuery; +import com.mortals.xhx.module.project.model.ProjectStudyEntity; +import com.mortals.xhx.module.project.model.ProjectStudyQuery; +import com.mortals.xhx.module.project.service.ProjectService; +import com.mortals.xhx.module.project.service.ProjectStudyService; +import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Indexed; import org.springframework.stereotype.Service; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.exception.AppException; @@ -6,14 +19,78 @@ import com.mortals.framework.model.Context; import com.mortals.xhx.module.study.dao.StudyStatDao; import com.mortals.xhx.module.study.model.StudyStatEntity; import com.mortals.xhx.module.study.service.StudyStatService; +import org.springframework.util.ObjectUtils; + +import java.util.*; +import java.util.stream.Collectors; + /** -* StudyStatService -* 瀛︿範缁熻 service瀹炵幇 -* -* @author zxfei -* @date 2023-03-06 -*/ + * StudyStatService + * 瀛︿範缁熻 service瀹炵幇 + * + * @author zxfei + * @date 2023-03-06 + */ @Service("studyStatService") public class StudyStatServiceImpl extends AbstractCRUDServiceImpl<StudyStatDao, StudyStatEntity, Long> implements StudyStatService { - + + @Autowired + private ProjectService projectService; + @Autowired + private ProjectStudyService projectStudyService; + + + @Override + public void indexStat(Map<String, Object> model, Context context) { + + //鏈€杩�7澶╁涔犱汉鏁拌秼鍔� + ProjectStudyQuery studyQuery = new ProjectStudyQuery(); + studyQuery.setUpdateTimeStart(DateUtil.offsetDay(new Date(), -7).toString()); + studyQuery.setUpdateTimeEnd(DateUtil.today()); + studyQuery.setStudyStatus(YesNoEnum.YES.getValue()); + + List<ProjectStudyEntity> projectStudyEntities = projectStudyService.find(studyQuery, context); + //鎸夊ぉ鍒嗙粍鏁伴噺 + Map<String, List<ProjectStudyEntity>> collect = projectStudyEntities.stream().collect(Collectors.groupingBy(x -> { + if (!ObjectUtils.isEmpty(x.getUpdateTime())) { + return DateUtil.formatDate(x.getUpdateTime()); + } else { + return ""; + } + })); + + Map<String, Integer> map = new HashMap<>(); + for (int i = 7; i > 0; i--) { + String beforeDay = DateUtil.offsetDay(new Date(), -i).toString(); + if (collect.containsKey(beforeDay)) { + map.put(beforeDay, collect.getOrDefault(beforeDay, new ArrayList<>()).size()); + } else { + map.put(beforeDay, 0); + } + } + model.put("dayTrend", map); + + + //棣栭〉缁熻銆� + //缁熻瀛︿簺绫诲瀷鍗犳瘮 + List<ProjectEntity> projectEntities = projectService.find(new ProjectQuery()); + Map<String, Long> studyTypeStat = projectEntities.stream().collect(Collectors.groupingBy(x -> ProjectTypeEnum.getByValue(x.getProjectType()).getDesc(), Collectors.counting())); + model.put("studyTypeStat", studyTypeStat); + + //瀛︿範閲忓墠 + for (ProjectEntity projectEntity : projectEntities) { + ProjectStudyQuery projectStudyQuery = new ProjectStudyQuery(); + projectStudyQuery.setStudyStatus(YesNoEnum.YES.getValue()); + projectStudyQuery.setProjectId(projectEntity.getId()); + int count = projectStudyService.count(projectStudyQuery, context); + projectEntity.setStudyPersonCount(count); + } + + + List<ProjectEntity> leaderList = projectEntities.stream() + .sorted(Comparator.comparing(ProjectEntity::getStudyPersonCount, Comparator.reverseOrder())) + .limit(5).collect(Collectors.toList()); + model.put("leaderList", leaderList); + + } } \ No newline at end of file diff --git a/study-manager/src/main/java/com/mortals/xhx/module/study/web/StudyStatController.java b/study-manager/src/main/java/com/mortals/xhx/module/study/web/StudyStatController.java index d2451ef..c6ded0a 100644 --- a/study-manager/src/main/java/com/mortals/xhx/module/study/web/StudyStatController.java +++ b/study-manager/src/main/java/com/mortals/xhx/module/study/web/StudyStatController.java @@ -1,4 +1,5 @@ package com.mortals.xhx.module.study.web; +import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.xhx.base.system.param.service.ParamService; import org.springframework.beans.factory.annotation.Autowired; @@ -46,4 +47,27 @@ public class StudyStatController extends BaseCRUDJsonBodyMappingController<Study } + /** + * 棣栭〉缁熻 + */ + @PostMapping(value = "indexStat") + @UnAuth + public String indexStat() { + JSONObject jsonObject = new JSONObject(); + Map<String, Object> model = new HashMap<>(); + jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); + jsonObject.put(KEY_RESULT_MSG, ""); + try { + this.service.indexStat(model,getContext()); + jsonObject.put(KEY_RESULT_DATA, model); + recordSysLog(request, "棣栭〉缁熻 銆愭垚鍔熴€�"); + } catch (Exception e) { + log.error("寮傚父", e); + jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE); + jsonObject.put(KEY_RESULT_MSG, super.convertException(e)); + } + return jsonObject.toJSONString(); + } + + } \ No newline at end of file diff --git a/study-manager/src/test/java/com/mortals/httpclient/http-client.env.json b/study-manager/src/test/java/com/mortals/httpclient/http-client.env.json index 1469fce..1b7cfa2 100644 --- a/study-manager/src/test/java/com/mortals/httpclient/http-client.env.json +++ b/study-manager/src/test/java/com/mortals/httpclient/http-client.env.json @@ -14,5 +14,9 @@ "portal": { "baseUrl": "http://192.168.0.98:11072/zwfw", "baseLogin": "http://192.168.0.98:11078/base" + }, + + "prod": { + "baseUrl": "http://125.64.74.247:11089/study" } } \ No newline at end of file -- 2.24.3