diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/FactGroupActDailyDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/FactGroupActDailyDTO.java new file mode 100644 index 0000000000..a4f834fbb2 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/FactGroupActDailyDTO.java @@ -0,0 +1,96 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dataaggre.dto.datastats; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 组织活动(参加人数、组织次数、平均参加人数)按天累计值分析 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-05-13 + */ +@Data +public class FactGroupActDailyDTO implements Serializable { + + private static final long serialVersionUID = 4411632223804355342L; + /** + * 客户ID + */ + private String customerId; + + /** + * 数据更新至日期Id:yyyyMMdd + */ + private String dateId; + + /** + * 网格id + */ + private String orgId; + + /** + * 网格:grid;组织:agency + */ + private String orgType; + + /** + * 1)orgType=grid: pid=网格所属组织id; +2)orgType=agency: pid=当前组织的上级组织 + */ + private String pid; + + /** + * 1)orgType=grid: pids=网格所有上级组织,包括pid; +2)orgType=agency: pids=当前组织的所有上级组织,包括pid. + */ + private String pids; + + /** + * 活动分类编码 + */ + private String categoryCode; + + /** + * 上级分类编码 + */ + private String parentCode; + + /** + * 分类等级 + */ + private Integer level; + + /** + * 截止到dateId: 组织次数;包含dateId这一天的数据 + */ + private Integer organizeTotal; + + /** + * 截止到dateId: 参加人数;包含dateId这一天的数据 + */ + private Integer participateUserTotal; + + /** + * 截止到dateId: 平均参加人数;包含dateId这一天的数据 + */ + private Integer avgParticipateUserTotal; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/ActCategoryDictDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/ActCategoryDictDTO.java new file mode 100644 index 0000000000..3cee85b0bd --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/ActCategoryDictDTO.java @@ -0,0 +1,76 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dataaggre.dto.resigroup; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + + +/** + * 活动类别字典 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-16 + */ +@Data +public class ActCategoryDictDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @JsonIgnore + private String id; + + /** + * 客户id + */ + @JsonIgnore + private String customerId; + + /** + * 类别编码 + */ + private String categoryCode; + + /** + * 活动类别名称;eg:支部建设、联建共建 + */ + private String categoryName; + + /** + * 等级1,2...... + */ + @JsonIgnore + private Integer level; + + /** + * 排序 + */ + @JsonIgnore + private Integer sort; + + /** + * 上级类别编码 + */ + @JsonIgnore + private String parentCode; +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/BranchConAnalysisFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/BranchConAnalysisFormDTO.java new file mode 100644 index 0000000000..7090008a4f --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/BranchConAnalysisFormDTO.java @@ -0,0 +1,42 @@ +package com.epmet.dataaggre.dto.resigroup.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 001、【支建+联建】统计分析 入参 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/18 9:16 + */ +@Data +public class BranchConAnalysisFormDTO implements Serializable { + public interface AddUserInternalGroup { + } + + /** + * 支部建设:100;联建共建:101 + */ + @NotBlank(message = "firstCategoryCode必传,支部建设:100;联建共建:101", groups = AddUserInternalGroup.class) + private String firstCategoryCode; + + /** + * 当前客户id + */ + @NotBlank(message = "客户id不能为空", groups = AddUserInternalGroup.class) + private String customerId; + + /** + * 当前组织或者网格id + */ + @NotBlank(message = "orgId不能为空", groups = AddUserInternalGroup.class) + private String orgId; + + /** + * 默认传组织:agency; 网格:grid + */ + @NotBlank(message = "orgType不能为空", groups = AddUserInternalGroup.class) + private String orgType; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/GroupActCategoryQueryFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/GroupActCategoryQueryFormDTO.java new file mode 100644 index 0000000000..63bb6b1771 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/GroupActCategoryQueryFormDTO.java @@ -0,0 +1,32 @@ +package com.epmet.dataaggre.dto.resigroup.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 002、【支建+联建】二级分类字典查询 入参 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/18 13:42 + */ +@Data +public class GroupActCategoryQueryFormDTO implements Serializable { + private static final long serialVersionUID = 8373780230315448396L; + + public interface AddUserInternalGroup { + } + + /** + * 支部建设:100;联建共建:101 + */ + @NotBlank(message = "firstCategoryCode必传,支部建设:100;联建共建:101", groups = AddUserInternalGroup.class) + private String firstCategoryCode; + + /** + * 当前客户id + */ + @NotBlank(message = "客户id不能为空", groups = BranchConAnalysisFormDTO.AddUserInternalGroup.class) + private String customerId; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/SubAnalysisByCodeFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/SubAnalysisByCodeFormDTO.java new file mode 100644 index 0000000000..5f92ede5cb --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/SubAnalysisByCodeFormDTO.java @@ -0,0 +1,44 @@ +package com.epmet.dataaggre.dto.resigroup.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 003、【支建+联建】下级组织折线图 入参 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/18 13:52 + */ +@Data +public class SubAnalysisByCodeFormDTO implements Serializable { + private static final long serialVersionUID = -4132250208377993452L; + + public interface AddUserInternalGroup { + } + + /** + * 分类编码;002接口返回的 + */ + @NotBlank(message = "categoryCode不能为空", groups = AddUserInternalGroup.class) + private String categoryCode; + + /** + * 当前客户id + */ + @NotBlank(message = "客户id不能为空", groups = AddUserInternalGroup.class) + private String customerId; + + /** + * 当前组织或者网格id + */ + @NotBlank(message = "orgId不能为空", groups = AddUserInternalGroup.class) + private String orgId; + + /** + * 默认传组织:agency; 网格:grid + */ + @NotBlank(message = "orgType不能为空", groups = AddUserInternalGroup.class) + private String orgType; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/BranchConAnalysisDetailDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/BranchConAnalysisDetailDTO.java new file mode 100644 index 0000000000..da57f1f74f --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/BranchConAnalysisDetailDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dataaggre.dto.resigroup.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 001、【支建+联建】统计分析 返参 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/18 15:12 + */ +@Data +public class BranchConAnalysisDetailDTO implements Serializable { + private String name; + private String type; + private Integer value; + private Integer avg; + private String categoryCode; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/BranchConAnalysisResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/BranchConAnalysisResultDTO.java new file mode 100644 index 0000000000..7b25d8d8fc --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/BranchConAnalysisResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dataaggre.dto.resigroup.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * 001、【支建+联建】统计分析 返参 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/18 10:01 + */ +@Data +public class BranchConAnalysisResultDTO implements Serializable { + private static final long serialVersionUID = -4998343002705222898L; + + /** + * 组织活动次数 + */ + private Integer organizeTotal; + + /** + * 参加活动人数 + */ + private Integer participateUserTotal; + + private List dataList; + + public BranchConAnalysisResultDTO() { + this.organizeTotal = NumConstant.ZERO; + this.participateUserTotal = NumConstant.ZERO; + this.dataList=new ArrayList<>(); + } +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/OrgInfoCommonDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/OrgInfoCommonDTO.java new file mode 100644 index 0000000000..79b6460be4 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/OrgInfoCommonDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dataaggre.dto.resigroup.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 组织或者网格基本信息 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/18 14:36 + */ +@Data +public class OrgInfoCommonDTO implements Serializable { + private static final long serialVersionUID = -2191521364070476999L; + + private String orgId; + private String orgName; + private String orgType; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/SubAnalysisByCodeResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/SubAnalysisByCodeResultDTO.java new file mode 100644 index 0000000000..4b4ec0fe06 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/SubAnalysisByCodeResultDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dataaggre.dto.resigroup.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 003、【支建+联建】下级组织折线图 返参 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/18 14:09 + */ +@Data +public class SubAnalysisByCodeResultDTO implements Serializable { + private static final long serialVersionUID = -6025482721295705372L; + + /** + * 横坐标名称:组织名或者网格名 + */ + private String name; + + /** + * 参加人数、组织次数、平均参加人数 + */ + private String type; + + private Integer value; + + private String orgId; +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GroupActController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GroupActController.java new file mode 100644 index 0000000000..487b938fbc --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GroupActController.java @@ -0,0 +1,74 @@ +package com.epmet.dataaggre.controller; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; +import com.epmet.dataaggre.dto.resigroup.form.BranchConAnalysisFormDTO; +import com.epmet.dataaggre.dto.resigroup.form.GroupActCategoryQueryFormDTO; +import com.epmet.dataaggre.dto.resigroup.form.SubAnalysisByCodeFormDTO; +import com.epmet.dataaggre.dto.resigroup.result.BranchConAnalysisResultDTO; +import com.epmet.dataaggre.dto.resigroup.result.SubAnalysisByCodeResultDTO; +import com.epmet.dataaggre.service.resigroup.ResiGroupService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 专项组-组织活动相关API放这 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/18 9:08 + */ +@RestController +@RequestMapping("groupact") +public class GroupActController { + + @Autowired + private ResiGroupService resiGroupService; + + + /** + * @return com.epmet.commons.tools.utils.Result + * @param formDTO + * @author yinzuomei + * @description 001、【支建+联建】统计分析 + * @Date 2021/5/18 10:17 + **/ + @PostMapping("branchconanalysis") + public Result branchConAnalysis(@RequestBody BranchConAnalysisFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,BranchConAnalysisFormDTO.AddUserInternalGroup.class); + return new Result().ok(resiGroupService.branchConAnalysis(formDTO)); + } + + /** + * @return com.epmet.commons.tools.utils.Result> + * @param formDTO + * @author yinzuomei + * @description 002、【支建+联建】二级分类字典查询 + * @Date 2021/5/18 13:49 + **/ + @PostMapping("categorydictlist") + public Result> queryCategoryDictList(@RequestBody GroupActCategoryQueryFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,GroupActCategoryQueryFormDTO.AddUserInternalGroup.class); + return new Result>().ok(resiGroupService.queryActCategoryDictList(formDTO.getCustomerId(),formDTO.getFirstCategoryCode())); + } + + + /** + * @return com.epmet.commons.tools.utils.Result + * @param formDTO + * @author yinzuomei + * @description 003、【支建+联建】下级组织折线图 + * @Date 2021/5/18 14:31 + **/ + @PostMapping("subanalysisbycode") + public Result> querySubAnalysisByCode(@RequestBody SubAnalysisByCodeFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO,GroupActCategoryQueryFormDTO.AddUserInternalGroup.class); + return new Result>().ok(resiGroupService.querySubAnalysisByCode(formDTO)); + } + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java index c96b053cba..4f9ee94c72 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java @@ -17,6 +17,7 @@ package com.epmet.dataaggre.dao.datastats; +import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.result.*; @@ -154,4 +155,14 @@ public interface DataStatsDao { */ List getSubGridProject(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + List branchConAnalysis(@Param("customerId")String customerId, + @Param("orgId")String orgId, + @Param("orgType")String orgType, + @Param("dateId")String dateId, + @Param("parentCode")String parentCode); + + List querySubAnalysisByCode(@Param("customerId")String customerId, + @Param("pid")String pid, + @Param("dateId")String dateId, + @Param("categoryCode")String categoryCode); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java index fc33ce00bb..7d705c2aa3 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java @@ -49,4 +49,7 @@ public interface CustomerAgencyDao extends BaseDao { String getAgencyIdByUserId(@Param("userId") String userId); List selectUsedAreaCodeList(@Param("parentAreaCode") String parentAreaCode); + + + List selectNextAgency(@Param("customerId")String customerId, @Param("pid")String pid); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java index f297a4f82f..0632f8bbf8 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java @@ -18,6 +18,7 @@ package com.epmet.dataaggre.dao.resigroup; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO; import com.epmet.dataaggre.entity.resigroup.ResiGroupEntity; import org.apache.ibatis.annotations.Mapper; @@ -41,5 +42,7 @@ public interface ResiGroupDao extends BaseDao { * @date 2021/3/30 上午10:13 */ List candidateList(@Param("groupId")String groupId); - + + List selectActCategoryDictDTOByPcode(@Param("customerId")String customerId, + @Param("categoryCode")String firstCategoryCode); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index 6eb826dc8d..1f842209d9 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -1,5 +1,6 @@ package com.epmet.dataaggre.service.datastats; +import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; @@ -91,4 +92,8 @@ public interface DataStatsService { * @author sun */ List subGridProject(SubGridFormDTO formDTO); + + List branchConAnalysis(String customerId, String orgId, String orgType, String dateId, String parentCode); + + List querySubAnalysisByCode(String customerId, String pid, String dateId, String categoryCode); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index 900144795e..d41fd93a24 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -5,6 +5,7 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.datastats.DataStatsDao; +import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; @@ -811,4 +812,14 @@ public class DataStatsServiceImpl implements DataStatsService { return resultList; } + @Override + public List branchConAnalysis(String customerId, String orgId, String orgType, String dateId, String parentCode) { + return dataStatsDao.branchConAnalysis(customerId,orgId,orgType,dateId,parentCode); + } + + @Override + public List querySubAnalysisByCode(String customerId, String pid, String dateId, String categoryCode) { + return dataStatsDao.querySubAnalysisByCode(customerId,pid,dateId,categoryCode); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java index 7d9fc8f339..d0780b046d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java @@ -5,6 +5,7 @@ import com.epmet.dataaggre.dto.govorg.result.AgencyGridResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridInfoResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO; import com.epmet.dataaggre.dto.govorg.result.NextAreaCodeResultDTO; +import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; import java.util.List; @@ -45,4 +46,6 @@ public interface GovOrgService { String getAgencyIdByUserId(String userId); List queryNextLevelAreaCodeList(NextAreaCodeFormDTO formDTO); + + List queryNextOrgInfoDTO(String customerId, String orgId, String orgType); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index b09414f1bd..18ad900fc6 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -15,6 +15,7 @@ import com.epmet.dataaggre.dto.govorg.result.AgencyGridResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridInfoResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO; import com.epmet.dataaggre.dto.govorg.result.NextAreaCodeResultDTO; +import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; import com.epmet.dataaggre.service.commonservice.AreaCodeService; import com.epmet.dataaggre.service.govorg.GovOrgService; @@ -162,6 +163,31 @@ public class GovOrgServiceImpl implements GovOrgService { return allList; } + @Override + public List queryNextOrgInfoDTO(String customerId, String orgId, String orgType) { + List result=new ArrayList<>(); + if("agency".equals(orgType)){ + List customerAgencyEntityList = customerAgencyDao.selectNextAgency(customerId, orgId); + customerAgencyEntityList.forEach(agencyEntity->{ + OrgInfoCommonDTO agecnyInfo=new OrgInfoCommonDTO(); + agecnyInfo.setOrgId(agencyEntity.getId()); + agecnyInfo.setOrgName(agencyEntity.getOrganizationName()); + agecnyInfo.setOrgType("agency"); + result.add(agecnyInfo); + }); + }else if("grid".equals(orgType)){ + List list= customerGridDao.selectGridListByAgencyId(orgId); + list.forEach(grid->{ + OrgInfoCommonDTO gridInfo=new OrgInfoCommonDTO(); + gridInfo.setOrgId(grid.getGridId()); + gridInfo.setOrgName(grid.getGridName()); + gridInfo.setOrgType("grid"); + result.add(gridInfo); + }); + } + return result; + } + public static void main(String[] args) { List allList = new ArrayList<>(); NextAreaCodeResultDTO m1 = new NextAreaCodeResultDTO(); diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java index 5b163c4f5d..66c3b991dd 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java @@ -1,9 +1,13 @@ package com.epmet.dataaggre.service.resigroup; +import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO; +import com.epmet.dataaggre.dto.resigroup.form.BranchConAnalysisFormDTO; import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO; +import com.epmet.dataaggre.dto.resigroup.form.SubAnalysisByCodeFormDTO; +import com.epmet.dataaggre.dto.resigroup.result.BranchConAnalysisResultDTO; import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO; -import org.apache.ibatis.annotations.Param; +import com.epmet.dataaggre.dto.resigroup.result.SubAnalysisByCodeResultDTO; import java.util.List; @@ -20,4 +24,29 @@ public interface ResiGroupService { */ List candidateList(CandidateListFormDTO formDTO); List selectTopicInfoByIds(List topicIds); + + /** + * 001、【支建+联建】统计分析 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.resigroup.result.BranchConAnalysisResultDTO + */ + BranchConAnalysisResultDTO branchConAnalysis(BranchConAnalysisFormDTO formDTO); + + /** + * 002、【支建+联建】二级分类字典查询 + * + * @param customerId + * @param firstCategoryCode + * @return com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO + */ + List queryActCategoryDictList(String customerId, String firstCategoryCode); + + /** + * 003、【支建+联建】下级组织折线图 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.resigroup.result.DataCommonDTO + */ + List querySubAnalysisByCode(SubAnalysisByCodeFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java index 253d42f78b..141158f063 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java @@ -1,17 +1,25 @@ package com.epmet.dataaggre.service.resigroup.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; +import com.epmet.commons.tools.constant.Constant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.resigroup.ResiGroupDao; import com.epmet.dataaggre.dao.resigroup.ResiTopicDao; +import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO; -import com.epmet.dataaggre.dto.resigroup.ResiGroupDTO; +import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO; +import com.epmet.dataaggre.dto.resigroup.form.BranchConAnalysisFormDTO; import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO; -import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO; +import com.epmet.dataaggre.dto.resigroup.form.SubAnalysisByCodeFormDTO; +import com.epmet.dataaggre.dto.resigroup.result.*; import com.epmet.dataaggre.entity.resigroup.ResiGroupEntity; import com.epmet.dataaggre.redis.ResiGroupRedis; +import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; +import com.epmet.dataaggre.service.govorg.GovOrgService; import com.epmet.dataaggre.service.resigroup.ResiGroupService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -22,6 +30,7 @@ import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -40,6 +49,10 @@ public class ResiGroupServiceImpl implements ResiGroupService { private EpmetUserService epmetUserService; @Autowired private ResiGroupRedis resiGroupRedis; + @Autowired + private DataStatsService dataStatsService; + @Autowired + private GovOrgService govOrgService; @Override public List selectTopicInfoByIds(List topicIds) { @@ -92,4 +105,143 @@ public class ResiGroupServiceImpl implements ResiGroupService { showUsers.forEach(u -> result.stream().filter(r -> u.equals(r.getUserId())).forEach(r -> disResult.add(r))); return disResult; } + + + /** + * 001、【支建+联建】统计分析 + * + * @param formDTO + * @return Result + */ + @Override + public BranchConAnalysisResultDTO branchConAnalysis(BranchConAnalysisFormDTO formDTO) { + List categoryList = queryActCategoryDictList(formDTO.getCustomerId(), formDTO.getFirstCategoryCode()); + if (CollectionUtils.isEmpty(categoryList)) { + return new BranchConAnalysisResultDTO(); + } + String dateId = DateUtils.getBeforeNDay(NumConstant.ONE); + List factGroupActDailyDTOList = dataStatsService.branchConAnalysis(formDTO.getCustomerId(), formDTO.getOrgId(), formDTO.getOrgType(), + dateId, formDTO.getFirstCategoryCode()); + /** + * List -> Map + * 需要注意的是: + * toMap 如果集合对象有重复的key,会报错Duplicate key .... * apple1,apple12的id都为1。 + * 可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2 + */ + Map map = factGroupActDailyDTOList.stream().collect(Collectors.toMap(FactGroupActDailyDTO::getCategoryCode, a -> a,(k1,k2)->k1)); + + // 组织活动次数 + int organizeTotal=0; + // 参加活动人数 + int participateUserTotal=0; + List dataList=new ArrayList<>(); + + for (ActCategoryDictDTO categoryDictDTO : categoryList) { + + BranchConAnalysisDetailDTO participateUserTotalObject=new BranchConAnalysisDetailDTO(); + participateUserTotalObject.setName(categoryDictDTO.getCategoryName()); + participateUserTotalObject.setType("参加人数"); + participateUserTotalObject.setCategoryCode(categoryDictDTO.getCategoryCode()); + + BranchConAnalysisDetailDTO organizeTotalObject=new BranchConAnalysisDetailDTO(); + organizeTotalObject.setName(categoryDictDTO.getCategoryName()); + organizeTotalObject.setType("组织次数"); + organizeTotalObject.setCategoryCode(categoryDictDTO.getCategoryCode()); + + + /*DataCommonDTO avgParticipateUserTotalObject=new DataCommonDTO(); + avgParticipateUserTotalObject.setName(categoryDictDTO.getCategoryName()); + avgParticipateUserTotalObject.setType("平均参加人数");*/ + + if (map.containsKey(categoryDictDTO.getCategoryCode())) { + + participateUserTotalObject.setValue(map.get(categoryDictDTO.getCategoryCode()).getParticipateUserTotal()); + organizeTotalObject.setValue(map.get(categoryDictDTO.getCategoryCode()).getOrganizeTotal()); + // avgParticipateUserTotalObject.setValue(map.get(categoryDictDTO.getCategoryCode()).getAvgParticipateUserTotal()); + participateUserTotalObject.setAvg(map.get(categoryDictDTO.getCategoryCode()).getAvgParticipateUserTotal()); + organizeTotalObject.setAvg(map.get(categoryDictDTO.getCategoryCode()).getAvgParticipateUserTotal()); + + + organizeTotal += map.get(categoryDictDTO.getCategoryCode()).getOrganizeTotal(); + participateUserTotal += map.get(categoryDictDTO.getCategoryCode()).getParticipateUserTotal(); + + } else { + participateUserTotalObject.setValue(NumConstant.ZERO); + organizeTotalObject.setValue(NumConstant.ZERO); + participateUserTotalObject.setAvg(NumConstant.ZERO); + organizeTotalObject.setAvg(NumConstant.ZERO); + // avgParticipateUserTotalObject.setValue(NumConstant.ZERO); + } + dataList.add(participateUserTotalObject); + dataList.add(organizeTotalObject); + // dataList.add(avgParticipateUserTotalObject); + } + BranchConAnalysisResultDTO resultDTO = new BranchConAnalysisResultDTO(); + resultDTO.setOrganizeTotal(organizeTotal); + resultDTO.setParticipateUserTotal(participateUserTotal); + resultDTO.setDataList(dataList); + return resultDTO; + } + + @Override + public List queryActCategoryDictList(String customerId, String firstCategoryCode) { + List categoryList=resiGroupDao.selectActCategoryDictDTOByPcode(customerId,firstCategoryCode); + if(CollectionUtils.isEmpty(categoryList)){ + categoryList=resiGroupDao.selectActCategoryDictDTOByPcode(Constant.DEFAULT_CUSTOMER,firstCategoryCode); + } + return categoryList; + } + + /** + * 003、【支建+联建】下级组织折线图 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.resigroup.result.SubAnalysisByCodeResultDTO + */ + @Override + public List querySubAnalysisByCode(SubAnalysisByCodeFormDTO formDTO) { + List orgInfoDTOList = govOrgService.queryNextOrgInfoDTO(formDTO.getCustomerId(), formDTO.getOrgId(), formDTO.getOrgType()); + if (CollectionUtils.isEmpty(orgInfoDTOList)) { + return new ArrayList<>(); + } + + String dateId = DateUtils.getBeforeNDay(NumConstant.ONE); + List factGroupActDailyDTOList = dataStatsService.querySubAnalysisByCode(formDTO.getCustomerId(), formDTO.getOrgId(), + dateId, formDTO.getCategoryCode()); + Map map = factGroupActDailyDTOList.stream().collect(Collectors.toMap(FactGroupActDailyDTO::getOrgId, a -> a, (k1, k2) -> k1)); + List resultList = new ArrayList<>(); + for (OrgInfoCommonDTO orgInfo : orgInfoDTOList) { + + SubAnalysisByCodeResultDTO participateUserTotalObject=new SubAnalysisByCodeResultDTO(); + participateUserTotalObject.setName(orgInfo.getOrgName()); + participateUserTotalObject.setType("参加人数"); + participateUserTotalObject.setOrgId(orgInfo.getOrgId()); + + SubAnalysisByCodeResultDTO organizeTotalObject=new SubAnalysisByCodeResultDTO(); + organizeTotalObject.setName(orgInfo.getOrgName()); + organizeTotalObject.setType("组织次数"); + organizeTotalObject.setOrgId(orgInfo.getOrgId()); + + + SubAnalysisByCodeResultDTO avgParticipateUserTotalObject=new SubAnalysisByCodeResultDTO(); + avgParticipateUserTotalObject.setName(orgInfo.getOrgName()); + avgParticipateUserTotalObject.setType("平均参加人数"); + avgParticipateUserTotalObject.setOrgId(orgInfo.getOrgId()); + + if (map.containsKey(orgInfo.getOrgId())) { + participateUserTotalObject.setValue(map.get(orgInfo.getOrgId()).getParticipateUserTotal()); + organizeTotalObject.setValue(map.get(orgInfo.getOrgId()).getOrganizeTotal()); + avgParticipateUserTotalObject.setValue(map.get(orgInfo.getOrgId()).getAvgParticipateUserTotal()); + } else { + participateUserTotalObject.setValue(NumConstant.ZERO); + organizeTotalObject.setValue(NumConstant.ZERO); + avgParticipateUserTotalObject.setValue(NumConstant.ZERO); + } + resultList.add(participateUserTotalObject); + resultList.add(organizeTotalObject); + resultList.add(avgParticipateUserTotalObject); + + } + return resultList; + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 06967cceab..8d6299ec86 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -314,4 +314,51 @@ project_total DESC + + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml index fda4f7245c..3033937191 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml @@ -31,4 +31,18 @@ ca.DEL_FLAG = '0' AND ca.PARENT_AREA_CODE = #{parentAreaCode} + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml index 8a350ceec9..1549b66d21 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml @@ -15,4 +15,17 @@ AND rgm.GROUP_LEADER_FLAG != 'leader' AND rgm.RESI_GROUP_ID = #{groupId} + + \ No newline at end of file