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
+
+ SELECT
+ m.CUSTOMER_ID as customerId,
+ m.DATE_ID as dateId,
+ m.ORG_ID as orgId,
+ m.ORG_TYPE as orgType,
+ m.PID as pid,
+ m.CATEGORY_CODE as categoryCode,
+ m.PARENT_CODE as parentCode,
+ m.`LEVEL` as level,
+ m.ORGANIZE_TOTAL as organizeTotal,
+ m.PARTICIPATE_USER_TOTAL as participateUserTotal,
+ m.AVG_PARTICIPATE_USER_TOTAL as avgParticipateUserTotal
+ FROM
+ fact_group_act_daily m
+ WHERE
+ m.DEL_FLAG = '0'
+ AND m.CUSTOMER_ID = #{customerId}
+ AND m.PARENT_CODE = #{parentCode}
+ AND m.DATE_ID = #{dateId}
+ AND m.ORG_ID = #{orgId}
+ AND m.ORG_TYPE = #{orgType}
+ order by m.CATEGORY_CODE asc
+
+
+
+ SELECT
+ m.CUSTOMER_ID as customerId,
+ m.DATE_ID as dateId,
+ m.ORG_ID as orgId,
+ m.ORG_TYPE as orgType,
+ m.PID as pid,
+ m.CATEGORY_CODE as categoryCode,
+ m.PARENT_CODE as parentCode,
+ m.`LEVEL` as level,
+ m.ORGANIZE_TOTAL as organizeTotal,
+ m.PARTICIPATE_USER_TOTAL as participateUserTotal,
+ m.AVG_PARTICIPATE_USER_TOTAL as avgParticipateUserTotal
+ FROM
+ fact_group_act_daily m
+ WHERE
+ m.DEL_FLAG = '0'
+ AND m.CUSTOMER_ID = #{customerId}
+ AND m.CATEGORY_CODE = #{categoryCode}
+ AND m.DATE_ID = #{dateId}
+ AND m.PID = #{pid}
+
\ 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}
+
+
+ SELECT
+ *
+ FROM
+ customer_agency ca
+ WHERE
+ ca.DEL_FLAG = '0'
+
+ AND ca.CUSTOMER_ID = #{customerId}
+
+ AND ca.PID = #{pid}
+ order by ca.CREATED_TIME asc
+
\ 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}
+
+
+ SELECT
+ *
+ FROM
+ act_category_dict acd
+ WHERE
+ acd.DEL_FLAG = '0'
+ AND acd.PARENT_CODE = #{categoryCode}
+ AND acd.CUSTOMER_ID = #{customerId}
+ ORDER BY
+ acd.SORT ASC
+
\ No newline at end of file