Browse Source

Merge remote-tracking branch 'origin/develop' into develop

master
jianjun 4 years ago
parent
commit
90de12052b
  1. 55
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java
  2. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectMonthResultDTO.java
  3. 35
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectResultDTO.java
  4. 93
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/IssueProjectCategoryDictDTO.java
  5. 40
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/CategoryProjectFormDTO.java
  6. 34
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectAnalysisFormDTO.java
  7. 32
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectCategoryTotalFormDTO.java
  8. 13
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectTotalFormDTO.java
  9. 51
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java
  10. 12
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/IssueProjectCategory.java
  11. 34
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectAnalysisResultDTO.java
  12. 24
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectCategoryTotalResultDTO.java
  13. 4
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectMonthIncrResultDTO.java
  14. 14
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectTotalResultDTO.java
  15. 19
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/UserTopicPageFormDTO.java
  16. 22
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/UserTopicResDTO.java
  17. 49
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java
  18. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java
  19. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  20. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/evaluationindex/EvaluationIndexDao.java
  21. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govissue/IssueDao.java
  22. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java
  23. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiTopicDao.java
  24. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  25. 22
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  26. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/EvaluationIndexService.java
  27. 11
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java
  28. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/GovIssueService.java
  29. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/impl/GovIssueServiceImpl.java
  30. 36
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java
  31. 137
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java
  32. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java
  33. 47
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java
  34. 62
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  35. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml
  36. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml
  37. 31
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml
  38. 18
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiTopicDao.xml
  39. 4
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java
  40. 3
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java
  41. 3
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java
  42. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml
  43. 4
      epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/IcResiPointPageFormDTO.java
  44. 2
      epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java
  45. 4
      epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointActionLogDao.xml
  46. 2
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java
  47. 2
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml
  48. 7
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/PageUserReportEventFormDTO.java
  49. 11
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java
  50. 18
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventDetailFormDTO.java
  51. 6
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventDetailResultDTO.java
  52. 26
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/PageUserReportEventResDTO.java
  53. 38
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisRightDTO.java
  54. 33
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisRightResultDTO.java
  55. 2
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
  56. 13
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  57. 14
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventController.java
  58. 11
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java
  59. 15
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventDao.java
  60. 9
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  61. 15
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventService.java
  62. 63
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  63. 46
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventServiceImpl.java
  64. 5
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml
  65. 16
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml

55
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java

@ -11,6 +11,7 @@ package com.epmet.commons.tools.utils;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.TimeListResultDTO;
import com.google.common.collect.Maps;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
@ -890,4 +891,58 @@ public class DateUtils {
format = DateUtils.format(DateUtils.getMonthEnd(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD);
System.out.println(format);
}
/**
* @Author sun
* @Description 获取dateId对应的num天的dateId活monthId
* dateId yyyymmdd
* type[date;month]
* num[1;-1]
* 20211201 date 1 -> 20211202
* 20211201 month -1 -> 202111
**/
public static String dateOrmonthId(String dateId, String type, int num){
Calendar cal=Calendar.getInstance();
if (StringUtils.isNotBlank(dateId)){
cal.setTime(DateUtils.parseDate(dateId,DateUtils.DATE_PATTERN_YYYYMMDD));
}
if("date".equals(type)){
cal.add(Calendar.DATE, num);
}else if("month".equals(type)){
cal.add(Calendar.MONTH, num);
}
Date time=cal.getTime();
if("month".equals(type)){
return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMM).format(time);
}
return new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD).format(time);
}
/**
* @Author sun
* @Description 获取dateId对应上一个月过去12个月的monthId
* dateId yyyymmdd
* 20211201 -> 202012-202111的值
**/
public static LinkedHashMap<String,String> getXproSub(String dateId){
java.time.format.DateTimeFormatter fmt = java.time.format.DateTimeFormatter.ofPattern("yyyyMM");
LinkedHashMap<String,String> xAxis = new LinkedHashMap<>();
Calendar cal=Calendar.getInstance();
cal.setTime(DateUtils.parseDate(dateId, DateUtils.DATE_PATTERN_YYYYMMDD));
TimeZone tz = cal.getTimeZone();
ZoneId zid = tz == null ? ZoneId.systemDefault() : tz.toZoneId();
java.time.LocalDate today = java.time.LocalDateTime.ofInstant(cal.toInstant(), zid).toLocalDate();
//java.time.LocalDate today = java.time.LocalDate.now();
for(int i = NumConstant.TWELVE;i > NumConstant.ZERO; i--){
java.time.LocalDate localDate = today.minusMonths(i);
String s = localDate.getMonth().getValue() + "月";
xAxis.put(localDate.format(fmt),s);
}
LinkedHashMap<String, String> result = Maps.newLinkedHashMap();
xAxis.entrySet().stream().sorted(Map.Entry.comparingByKey())
.forEachOrdered((e -> result.put(e.getKey(),e.getValue())));
return result;
}
}

21
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectMonthResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dataaggre.dto.datastats.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 项目月数据-接口返参
* @Auth sun
*/
@Data
public class FactAgencyProjectMonthResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
//组织Id
private String agencyId;
//月维度Id
private String monthId;
//当月项目总数 【当前组织及下级前一月新增项目数】
private Integer projectIncr = 0;
}

35
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/FactAgencyProjectResultDTO.java

@ -0,0 +1,35 @@
package com.epmet.dataaggre.dto.datastats.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description 项目总数-接口返参
* @Auth sun
*/
@Data
public class FactAgencyProjectResultDTO implements Serializable {
private static final long serialVersionUID = 466974582608407121L;
@JsonIgnore
BigDecimal bi = new BigDecimal(0);
//组织Id
private String agencyId;
//组织名称
private String dateId;
//月维度Id
private String monthId;
//项目总数
private Integer projectTotal = 0;
//处理中项目数
private Integer pendingTotal = 0;
//处理中项目占比
private String pendingRatio = "0%";
//已结案中项目数
private Integer closedTotal = 0;
//已结案中项目占比
private String closedRatio = "0%";
}

93
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govissue/IssueProjectCategoryDictDTO.java

@ -0,0 +1,93 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* 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.
* <p>
* 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.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dataaggre.dto.govissue;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 议题项目分类字典
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-12-08
*/
@Data
public class IssueProjectCategoryDictDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户id, 产品默认default
*/
private String customerId;
/**
* 上级分类ID 顶级此列存储0
*/
private String pid;
/**
* 所有上级分类ID用逗号分开
*/
private String pids;
/**
* 上级分类编码
*/
private String parentCategoryCode;
/**
* 分类编码分类编码+customer_id唯一
*/
private String categoryCode;
/**
* 分类名称
*/
private String categoryName;
/**
* 分类类别1,2,3,4....
*/
private String categoryType;
/**
* 排序
*/
private Integer sort;
/**
* 是否禁用(enable:启用 disable:禁用)
*/
private String isDisable;
/**
* 颜色
*/
private String colour;
}

40
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/CategoryProjectFormDTO.java

@ -0,0 +1,40 @@
package com.epmet.dataaggre.dto.govproject.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description 赋能平台项目分类分析-接口入参
* @Auth sun
*/
@NoArgsConstructor
@Data
public class CategoryProjectFormDTO implements Serializable {
private static final long serialVersionUID = -8515172319313536407L;
//组织Id
@NotBlank(message = "组织ID不能为空", groups = {Category.class})
private String agencyId;
//日期yyyymmdd
@NotBlank(message = "组织ID不能为空", groups = {Category.class})
private String dateId;
//一级分类Id
@NotBlank(message = "分类Code不能为空", groups = {Category.class})
private String categoryCode;
//页码
@Min(1)
private Integer pageNo = 1;
//每页多少条
private Integer pageSize = 20;
//是否分页(是:true 否:false)
private Boolean isPage = true;
public interface Category extends CustomerClientShowGroup {
}
}

34
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectAnalysisFormDTO.java

@ -0,0 +1,34 @@
package com.epmet.dataaggre.dto.govproject.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* @Description 赋能平台项目分类分析-接口入参
* @Auth sun
*/
@NoArgsConstructor
@Data
public class ProjectAnalysisFormDTO implements Serializable {
private static final long serialVersionUID = -8515172319313536407L;
//日期yyyymmdd
@NotBlank(message = "日维度ID不能为空", groups = {Analysis.class})
private String dateId;
//小程序话题或事件发起人Id
@NotBlank(message = "话题或事件发起人Id不能为空", groups = {Analysis.class})
private String userId;
//一级分类Id集合
@NotNull(message = "分类Code集合不能为空", groups = {Analysis.class})
private List<String> categoryCodeList;
public interface Analysis extends CustomerClientShowGroup {
}
}

32
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectCategoryTotalFormDTO.java

@ -0,0 +1,32 @@
package com.epmet.dataaggre.dto.govproject.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description 赋能平台项目分类分析-接口入参
* @Auth sun
*/
@NoArgsConstructor
@Data
public class ProjectCategoryTotalFormDTO implements Serializable {
private static final long serialVersionUID = -8515172319313536407L;
//组织Id
@NotBlank(message = "组织ID不能为空", groups = {Project.class})
private String agencyId;
//日期yyyymmdd
@NotBlank(message = "日维度ID不能为空", groups = {Project.class})
private String dateId;
private String customerId;
public interface Project extends CustomerClientShowGroup {
}
}

13
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/form/ProjectTotalFormDTO.java

@ -19,7 +19,7 @@ public class ProjectTotalFormDTO implements Serializable {
@NotBlank(message = "组织ID不能为空", groups = {Total.class, Monthincr.class, Statuslist.class})
private String agencyId;
//日期yyyymmdd
@NotBlank(message = "组织ID不能为空", groups = {Total.class, Monthincr.class, Statuslist.class})
@NotBlank(message = "日维度ID不能为空", groups = {Total.class, Monthincr.class, Statuslist.class})
private String dateId;
//状态:待处理 pending,结案closed
@NotBlank(message = "项目状态不能为空", groups = {Statuslist.class})
@ -32,4 +32,15 @@ public class ProjectTotalFormDTO implements Serializable {
public interface Statuslist extends CustomerClientShowGroup {
}
//较昨日的dateId值
private String yeDateId;
//较dateId上月的monthId值
private String monthId;
//查询数据起始月份Id
private String startMonth;
//查询数据结束月份Id
private String endMonth;
//明天的dateId值
private String toDateId;
}

51
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/CategoryProjectResultDTO.java

@ -0,0 +1,51 @@
package com.epmet.dataaggre.dto.govproject.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description 赋能平台项目处理分析分类下项目列表-接口返参
* @Auth sun
*/
@Data
public class CategoryProjectResultDTO implements Serializable {
private static final long serialVersionUID = 6188316867855643263L;
//总条数
private Integer total = 0;
private List<Project> list;
@Data
public static class Project {
//项目所属组织Id
private String agencyId;
//项目Id
private String projectId;
//项目编码[目前没这个功能 默认为空]
private String projectCode = "";
//一级分类Id集合
private List<String> categoryCodes;
//一级分类名称集合
private List<String> categoryNames;
//来源:议题issue 项目立项:agency 事件:resi_event【控制电机查看时里边三个按钮的显示】
private String origin;
//网格Id[立项项目此值为空]
private String gridId;
//网格名[立项项目此值为空]
private String gridName;
//状态:待处理 pending,已结案closed
private String status;
//标题
private String title;
//转项目时间
private String time;
//当前人员是否处理:未处理unhandled,已处理handle
private String isHandle;
//小程序居民端话题或事件创建人【立项项目此值为空】
private String userId;
}
}

12
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/IssueProjectCategory.java

@ -0,0 +1,12 @@
package com.epmet.dataaggre.dto.govproject.result;
import lombok.Data;
import java.io.Serializable;
@Data
public class IssueProjectCategory implements Serializable {
private static final long serialVersionUID = -2226298165882293959L;
private String issueId;
private String projectId;
}

34
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectAnalysisResultDTO.java

@ -0,0 +1,34 @@
package com.epmet.dataaggre.dto.govproject.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 赋能平台项目处理分析研判分析-接口返参
* @Auth sun
*/
@Data
public class ProjectAnalysisResultDTO implements Serializable {
private static final long serialVersionUID = 6188316867855643263L;
//组织Id
private String agencyId;
//日期yyyymmdd
private String dateId;
//项目总数
private Integer projectTotal = 0;
//较昨日数
private Integer dateIncr = 0;
//较上月数
private Integer monthIncr = 0;
//未结案项目数
private Integer pendingTotal = 0;
//为结案项目占比 xx%
private String pendingRatio = "0%";
//已结案项目数
private Integer closedTotal = 0;
//已结案项目占比
private String closedRatio = "0%";
}

24
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectCategoryTotalResultDTO.java

@ -0,0 +1,24 @@
package com.epmet.dataaggre.dto.govproject.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 赋能平台项目分类分析各分类项目数图表-接口返参
* @Auth sun
*/
@Data
public class ProjectCategoryTotalResultDTO implements Serializable {
private static final long serialVersionUID = 6188316867855643263L;
//组织Id
private String agencyId;
//一级分类Code
private String categoryCode;
//一级分类名称
private String categoryName;
//分类下项目总数
private Integer total = 0;
}

4
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectMonthIncrResultDTO.java

@ -13,8 +13,8 @@ public class ProjectMonthIncrResultDTO implements Serializable {
private static final long serialVersionUID = 6188316867855643263L;
//横坐标值
private String value;
private Integer value;
//横坐标
private Integer type;
private String type;
}

14
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/result/ProjectTotalResultDTO.java

@ -17,18 +17,18 @@ public class ProjectTotalResultDTO implements Serializable {
//日期yyyymmdd
private String dateId;
//项目总数
private Integer projectTotal;
private Integer projectTotal = 0;
//较昨日数
private Integer dateIncr;
private Integer dateIncr = 0;
//较上月数
private Integer monthIncr;
private Integer monthIncr = 0;
//未结案项目数
private Integer pendingTotal;
private Integer pendingTotal = 0;
//为结案项目占比 xx%
private String pendingRatio;
private String pendingRatio = "0%";
//已结案项目数
private Integer closedTotal;
private Integer closedTotal = 0;
//已结案项目占比
private String closedRatio;
private String closedRatio = "0%";
}

19
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/UserTopicPageFormDTO.java

@ -0,0 +1,19 @@
package com.epmet.dataaggre.dto.resigroup.form;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Data
public class UserTopicPageFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
//@NotBlank(message = "epmetUserId不能为空" , groups = AddUserInternalGroup.class)
private List<String> epmetUserIdList;
@NotNull(message = "pageNo不能为空",groups = AddUserInternalGroup.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空",groups = AddUserInternalGroup.class)
private Integer pageSize;
}

22
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/UserTopicResDTO.java

@ -0,0 +1,22 @@
package com.epmet.dataaggre.dto.resigroup.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 个人分析发布话题分页列表
*/
@Data
public class UserTopicResDTO implements Serializable {
private String topicId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date releaseTime;
private String topicContent;
private Boolean shiftIssue;
private String issueId;
private Boolean shiftProject=false;
private String projectId="";
}

49
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovProjectController.java

@ -6,17 +6,13 @@ import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.govproject.form.AllProjectFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectDistributionFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.AllProjectResultDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectDistributionResultDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectTotalResultDTO;
import com.epmet.dataaggre.dto.govproject.form.*;
import com.epmet.dataaggre.dto.govproject.result.*;
import com.epmet.dataaggre.service.govproject.GovProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.LinkedList;
import java.util.List;
/**
@ -75,9 +71,9 @@ public class GovProjectController {
* @author sun
*/
@PostMapping("projectmonthincr")
public Result<List<ProjectMonthIncrResultDTO>> projectMonthIncr(@RequestBody ProjectTotalFormDTO formDTO) {
public Result<LinkedList<ProjectMonthIncrResultDTO>> projectMonthIncr(@RequestBody ProjectTotalFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ProjectTotalFormDTO.Monthincr.class);
return new Result<List<ProjectMonthIncrResultDTO>>().ok(govProjectService.projectMonthIncr(formDTO));
return new Result<LinkedList<ProjectMonthIncrResultDTO>>().ok(govProjectService.projectMonthIncr(formDTO));
}
/**
@ -85,9 +81,40 @@ public class GovProjectController {
* @author sun
*/
@PostMapping("projectstatuslist")
public Result<List<ProjectTotalResultDTO>> projectStatusList(@RequestBody ProjectTotalFormDTO formDTO) {
public Result<List<ProjectStatusListResultDTO>> projectStatusList(@RequestBody ProjectTotalFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ProjectTotalFormDTO.Statuslist.class);
return new Result<List<ProjectTotalResultDTO>>().ok(govProjectService.projectStatusList(formDTO));
return new Result<List<ProjectStatusListResultDTO>>().ok(govProjectService.projectStatusList(formDTO));
}
/**
* @Description 赋能平台项目分类分析各分类项目数图表
* @author sun
*/
@PostMapping("projectcategorylist")
public Result<List<ProjectCategoryTotalResultDTO>> projectCategoryList(@LoginUser TokenDto tokenDto, @RequestBody ProjectCategoryTotalFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ProjectCategoryTotalFormDTO.Project.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
return new Result<List<ProjectCategoryTotalResultDTO>>().ok(govProjectService.projectCategoryList(formDTO));
}
/**
* @Description 赋能平台项目处理分析分类下项目列表
* @author sun
*/
@PostMapping("categoryprojectlist")
public Result<CategoryProjectResultDTO> categoryProjectList(@RequestBody CategoryProjectFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, CategoryProjectFormDTO.Category.class);
return new Result<CategoryProjectResultDTO>().ok(govProjectService.categoryProjectList(formDTO));
}
/**
* @Description 赋能平台项目处理分析研判分析
* @author sun
*/
@PostMapping("projectanalysis")
public Result<ProjectAnalysisResultDTO> projectAnalysis(@RequestBody ProjectAnalysisFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ProjectAnalysisFormDTO.Analysis.class);
return new Result<ProjectAnalysisResultDTO>().ok(govProjectService.projectAnalysis(formDTO));
}
}

12
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java

@ -1,12 +1,15 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import com.epmet.dataaggre.dto.resigroup.result.UserTopicResDTO;
import com.epmet.dataaggre.service.resigroup.ResiGroupService;
import com.epmet.dto.form.PageUserReportEventFormDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -39,4 +42,13 @@ public class ResiGroupController {
return new Result<List<CandidateListResultDTO>>().ok(resiGroupService.candidateList(formDTO));
}
/**
* 数字赋能平台-个人分析发布话题分页列表
* @return
*/
@PostMapping("pageusertopic")
public Result<PageData<UserTopicResDTO>> pageUserTopic(@RequestBody PageUserReportEventFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, PageUserReportEventFormDTO.AddUserInternalGroup.class);
return new Result<PageData<UserTopicResDTO>>().ok(resiGroupService.pageUserTopic(formDTO));
}
}

14
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java

@ -24,6 +24,8 @@ import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO;
import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
@ -335,4 +337,16 @@ public interface DataStatsDao {
* @author sun
*/
List<CustomerDataManageResultDTO.CustomerDataManage> projectList(CustomerDataManageFormDTO formDTO);
/**
* @Description 分别查询组织下dateId较昨日较上月项目统计数据
* @author sun
*/
List<FactAgencyProjectResultDTO> getProjectTotal(ProjectTotalFormDTO formDTO);
/**
* @Description 查询dateId的上一月过去12个月份组织项目数据
* @author sun
*/
List<FactAgencyProjectMonthResultDTO> getProjectMonthIncr(ProjectTotalFormDTO formDTO);
}

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/evaluationindex/EvaluationIndexDao.java

@ -21,6 +21,8 @@ import com.epmet.dataaggre.dto.datastats.result.GovrnRatioResultDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectCategoryTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectCategoryTotalResultDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -103,4 +105,10 @@ public interface EvaluationIndexDao {
*/
String selectAgencyNameByAgencyId(@Param("agencyId")String agencyId);
/**
* @Description 按dateId查询组织下一级分类项目总数统计
* @author sun
*/
List<ProjectCategoryTotalResultDTO> projectCategoryList(ProjectCategoryTotalFormDTO formDTO);
}

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govissue/IssueDao.java

@ -18,6 +18,7 @@
package com.epmet.dataaggre.dao.govissue;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO;
import com.epmet.dataaggre.dto.govissue.form.ClosedIssueListFormDTO;
import com.epmet.dataaggre.dto.govissue.form.ShiftProjectIssueListFormDTO;
import com.epmet.dataaggre.dto.govissue.form.VotingIssueListFormDTO;
@ -74,4 +75,10 @@ public interface IssueDao extends BaseDao<IssueEntity> {
Integer selectIssueCount(@Param("gridIds") List<String> gridIds,@Param("issueType")String issueType);
List<IssueInfoDTO> selectShiftProjectIssueList(@Param("customerId") String customerId, @Param("gridId") String gridId);
/**
* @Description 查询客户下分类信息
* @author sun
**/
List<IssueProjectCategoryDictDTO> getCategoryList(@Param("customerId") String customerId);
}

11
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java

@ -18,11 +18,14 @@
package com.epmet.dataaggre.dao.govproject;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.govproject.result.IssueProjectCategory;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govproject.ProjectDTO;
import com.epmet.dataaggre.dto.govproject.form.AllProjectFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectDistributionResultDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectInfoDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectStatusListResultDTO;
import com.epmet.dataaggre.entity.govproject.ProjectEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -70,4 +73,12 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
List<ProjectDistributionResultDTO> selectList(@Param("customerId") String customerId,@Param("list")List<String> issueIds);
int countRedDot(String userId);
/**
* @Description 查询组织下截止到dateId的某个状态的项目列表
* @author sun
*/
List<ProjectStatusListResultDTO> getProjectStatusList(ProjectTotalFormDTO formDTO);
List<IssueProjectCategory> selectProjectIssueCategory(@Param("issueIds") List<String> issueIds);
}

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiTopicDao.java

@ -19,7 +19,9 @@ package com.epmet.dataaggre.dao.resigroup;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.dto.resigroup.result.UserTopicResDTO;
import com.epmet.dataaggre.entity.resigroup.ResiTopicEntity;
import com.epmet.dto.form.PageUserReportEventFormDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -35,4 +37,12 @@ import java.util.List;
public interface ResiTopicDao extends BaseDao<ResiTopicEntity> {
List<ResiTopicDTO> selectTopicInfoByIds(@Param("list") List<String> topicIds);
/**
* 数据分析-个人档案-发布话题列表
*
* @param formDTO
* @return
*/
List<UserTopicResDTO> selectListTopic(PageUserReportEventFormDTO formDTO);
}

13
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java

@ -6,6 +6,8 @@ import com.epmet.dataaggre.dto.datastats.result.*;
import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO;
import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
@ -247,4 +249,15 @@ public interface DataStatsService {
*/
CustomerDataManageResultDTO operateExport(CustomerDataManageFormDTO formDTO) throws ParseException;
/**
* @Description 分别查询组织下dateId较昨日较上月项目统计数据
* @author sun
*/
List<FactAgencyProjectResultDTO> getProjectTotal(ProjectTotalFormDTO formDTO);
/**
* @Description 查询dateId的上一月过去12个月份组织项目数据
* @author sun
*/
List<FactAgencyProjectMonthResultDTO> getProjectMonthIncr(ProjectTotalFormDTO formDTO);
}

22
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java

@ -23,7 +23,9 @@ import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectMonthIncrResultDTO;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO;
import com.epmet.dataaggre.entity.datastats.DimAgencyEntity;
import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity;
@ -2114,5 +2116,23 @@ public class DataStatsServiceImpl implements DataStatsService {
return resultDTO;
}
/**
* @Description 分别查询组织下dateId较昨日较上月项目统计数据
* @author sun
*/
@Override
public List<FactAgencyProjectResultDTO> getProjectTotal(ProjectTotalFormDTO formDTO) {
return dataStatsDao.getProjectTotal(formDTO);
}
/**
* @Description 查询dateId的上一月过去12个月份组织项目数据
* @author sun
*/
@Override
public List<FactAgencyProjectMonthResultDTO> getProjectMonthIncr(ProjectTotalFormDTO formDTO) {
return dataStatsDao.getProjectMonthIncr(formDTO);
}
}

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/EvaluationIndexService.java

@ -6,6 +6,8 @@ import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectCategoryTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectCategoryTotalResultDTO;
import java.util.List;
@ -86,4 +88,9 @@ public interface EvaluationIndexService {
*/
ScreenAgencyOrGridListDTO getSubAgencyOrGridList(String agencyId);
/**
* @Description 按dateId查询组织下一级分类项目总数统计
* @author sun
*/
List<ProjectCategoryTotalResultDTO> projectCategoryList(ProjectCategoryTotalFormDTO formDTO);
}

11
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/evaluationindex/impl/EvaluationIndexServiceImpl.java

@ -11,6 +11,8 @@ import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO;
import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectCategoryTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.result.ProjectCategoryTotalResultDTO;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.opercrm.CustomerRelation;
import lombok.extern.slf4j.Slf4j;
@ -206,4 +208,13 @@ public class EvaluationIndexServiceImpl implements EvaluationIndexService {
return resultDTO;
}
/**
* @Description 按dateId查询组织下一级分类项目总数统计
* @author sun
*/
@Override
public List<ProjectCategoryTotalResultDTO> projectCategoryList(ProjectCategoryTotalFormDTO formDTO) {
return evaluationIndexDao.projectCategoryList(formDTO);
}
}

7
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/GovIssueService.java

@ -1,6 +1,7 @@
package com.epmet.dataaggre.service.govissue;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO;
import com.epmet.dataaggre.dto.govissue.form.AllIssueFormDTO;
import com.epmet.dataaggre.dto.govissue.form.ClosedIssueListFormDTO;
import com.epmet.dataaggre.dto.govissue.form.ShiftProjectIssueListFormDTO;
@ -45,4 +46,10 @@ public interface GovIssueService {
List<ClosedIssueListResultDTO> closedIssueList(ClosedIssueListFormDTO fromDTO);
List<IssueInfoDTO> selectShiftProjectIssueList(String customerId,String gridId,Integer pageNo,Integer pageSize);
/**
* @Description 查询客户下一级分类信息
* @author sun
**/
List<IssueProjectCategoryDictDTO> categoryList(String customerId);
}

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govissue/impl/GovIssueServiceImpl.java

@ -8,6 +8,7 @@ import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.IssueConstant;
import com.epmet.dataaggre.dao.govissue.IssueApplicationDao;
import com.epmet.dataaggre.dao.govissue.IssueDao;
import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO;
import com.epmet.dataaggre.dto.govissue.form.AllIssueFormDTO;
import com.epmet.dataaggre.dto.govissue.form.ClosedIssueListFormDTO;
import com.epmet.dataaggre.dto.govissue.form.ShiftProjectIssueListFormDTO;
@ -323,4 +324,13 @@ public class GovIssueServiceImpl implements GovIssueService {
return issueDao.selectShiftProjectIssueList(customerId, gridId);
}
/**
* @Description 查询客户下一级分类信息
* @author sun
**/
@Override
public List<IssueProjectCategoryDictDTO> categoryList(String customerId) {
return issueDao.getCategoryList(customerId);
}
}

36
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java

@ -1,12 +1,12 @@
package com.epmet.dataaggre.service.govproject;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dataaggre.dto.govproject.result.IssueProjectCategory;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govproject.form.AllProjectFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectDistributionFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.form.*;
import com.epmet.dataaggre.dto.govproject.result.*;
import java.util.LinkedList;
import java.util.List;
/**
@ -61,11 +61,37 @@ public interface GovProjectService {
* @Description 赋能平台项目处理分析进12月新增项目折线图
* @author sun
*/
List<ProjectMonthIncrResultDTO> projectMonthIncr(ProjectTotalFormDTO formDTO);
LinkedList<ProjectMonthIncrResultDTO> projectMonthIncr(ProjectTotalFormDTO formDTO);
/**
* @Description 赋能平台项目处理分析按状态查询项目列表
* @author sun
*/
List<ProjectTotalResultDTO> projectStatusList(ProjectTotalFormDTO formDTO);
List<ProjectStatusListResultDTO> projectStatusList(ProjectTotalFormDTO formDTO);
/**
* @Description 赋能平台项目分类分析各分类项目数图表
* @author sun
*/
List<ProjectCategoryTotalResultDTO> projectCategoryList(ProjectCategoryTotalFormDTO formDTO);
/**
* @Description 赋能平台项目处理分析分类下项目列表
* @author sun
*/
CategoryProjectResultDTO categoryProjectList(CategoryProjectFormDTO formDTO);
/**
* @Description 赋能平台项目处理分析研判分析
* @author sun
*/
ProjectAnalysisResultDTO projectAnalysis(ProjectAnalysisFormDTO formDTO);
/**
* 找出这些议题中对应的项目id,以及项目对应的一级分类编码
*
* @param issueIds
* @return
*/
List<IssueProjectCategory> getIssueProjectFirstCategory(List<String> issueIds);
}

137
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java

@ -5,18 +5,22 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.constant.ProjectConstant;
import com.epmet.dataaggre.dao.govproject.ProjectDao;
import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectMonthResultDTO;
import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO;
import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueInfoDTO;
import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO;
import com.epmet.dataaggre.dto.govproject.ProjectDTO;
import com.epmet.dataaggre.dto.govproject.form.AllProjectFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectDistributionFormDTO;
import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO;
import com.epmet.dataaggre.dto.govproject.form.*;
import com.epmet.dataaggre.dto.govproject.result.*;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.service.datastats.DataStatsService;
import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService;
import com.epmet.dataaggre.service.govissue.GovIssueService;
import com.epmet.dataaggre.service.govorg.GovOrgService;
import com.epmet.dataaggre.service.govproject.GovProjectService;
@ -52,6 +56,10 @@ public class GovProjectServiceImpl implements GovProjectService {
private GovIssueService govIssueService;
@Autowired
private ResiGroupService resiGroupService;
@Autowired
private DataStatsService dataStatsService;
@Autowired
private EvaluationIndexService evaluationIndexService;
/**
* @Description 查询项目信息
@ -251,7 +259,37 @@ public class GovProjectServiceImpl implements GovProjectService {
*/
@Override
public ProjectTotalResultDTO projectTotal(ProjectTotalFormDTO formDTO) {
return null;
ProjectTotalResultDTO result = new ProjectTotalResultDTO();
result.setAgencyId(formDTO.getAgencyId());
result.setDateId(formDTO.getDateId());
//较昨日dateId值
formDTO.setYeDateId(DateUtils.dateOrmonthId(formDTO.getDateId(), "date", -1));
//较上月monthId值
formDTO.setMonthId(DateUtils.dateOrmonthId(formDTO.getDateId(), "month", -1));
//1.分别查询组织下dateId、较昨日、较上月项目统计数据
List<FactAgencyProjectResultDTO> list = dataStatsService.getProjectTotal(formDTO);
if (CollectionUtils.isEmpty(list) || !formDTO.getDateId().equals(list.get(0).getDateId())) {
return result;
}
//2.封装数据
list.forEach(l -> {
if (formDTO.getDateId().equals(l.getDateId())) {
result.setProjectTotal(l.getProjectTotal());
result.setPendingTotal(l.getPendingTotal());
result.setPendingRatio(l.getPendingRatio());
result.setClosedTotal(l.getClosedTotal());
result.setClosedRatio(l.getClosedRatio());
}
if (formDTO.getYeDateId().equals(l.getDateId())) {
result.setDateIncr(result.getProjectTotal() - l.getProjectTotal());
} else if (formDTO.getMonthId().equals(l.getMonthId())) {
result.setMonthIncr(result.getProjectTotal() - l.getProjectTotal());
}
});
return result;
}
/**
@ -259,8 +297,30 @@ public class GovProjectServiceImpl implements GovProjectService {
* @author sun
*/
@Override
public List<ProjectMonthIncrResultDTO> projectMonthIncr(ProjectTotalFormDTO formDTO) {
return null;
public LinkedList<ProjectMonthIncrResultDTO> projectMonthIncr(ProjectTotalFormDTO formDTO) {
LinkedList<ProjectMonthIncrResultDTO> resultList = new LinkedList<>();
//1.获取起始终止月份值
LinkedHashMap<String, String> map = DateUtils.getXproSub(formDTO.getDateId());
List<String> monthIdList = map.keySet().stream().collect(Collectors.toList());
formDTO.setStartMonth(monthIdList.get(NumConstant.ZERO));
formDTO.setEndMonth(monthIdList.get(NumConstant.ELEVEN));
//2.查询dateId的上一月过去12个月份数据【2021-12-08 数据是202012到202111的数据】
List<FactAgencyProjectMonthResultDTO> list = dataStatsService.getProjectMonthIncr(formDTO);
//3.封装数据并返回
map.forEach((k, v) -> {
ProjectMonthIncrResultDTO dto = new ProjectMonthIncrResultDTO();
dto.setType(v);
list.forEach(l -> {
if (k.equals(l.getMonthId())) {
dto.setValue(l.getProjectIncr());
}
});
resultList.add(dto);
});
return resultList;
}
/**
@ -268,8 +328,71 @@ public class GovProjectServiceImpl implements GovProjectService {
* @author sun
*/
@Override
public List<ProjectTotalResultDTO> projectStatusList(ProjectTotalFormDTO formDTO) {
public List<ProjectStatusListResultDTO> projectStatusList(ProjectTotalFormDTO formDTO) {
//所选日期后一天的dateId值
formDTO.setYeDateId(DateUtils.dateOrmonthId(formDTO.getDateId(), "date", 1));
//1.查询组织下截止到dateId的某个状态的项目列表
List<ProjectStatusListResultDTO> resultList = projectDao.getProjectStatusList(formDTO);
return resultList;
}
/**
* @Description 赋能平台项目分类分析各分类项目数图表
, * @author sun
*/
@Override
public List<ProjectCategoryTotalResultDTO> projectCategoryList(ProjectCategoryTotalFormDTO formDTO) {
List<ProjectCategoryTotalResultDTO> resultList = new ArrayList<>();
//1.查询客户下一级分类信息
List<IssueProjectCategoryDictDTO> categoryList = govIssueService.categoryList(formDTO.getCustomerId());
//2.按dateId查询组织下一级分类项目总数
List<ProjectCategoryTotalResultDTO> list = evaluationIndexService.projectCategoryList(formDTO);
//3.封装数据并返回
categoryList.forEach(ca -> {
ProjectCategoryTotalResultDTO dto = new ProjectCategoryTotalResultDTO();
dto.setAgencyId(formDTO.getAgencyId());
dto.setCategoryCode(ca.getCategoryCode());
dto.setCategoryName(ca.getCategoryName());
list.forEach(l -> {
if (ca.getCategoryCode().equals(l.getCategoryCode())) {
dto.setTotal(l.getTotal());
}
});
resultList.add(dto);
});
return resultList;
}
/**
* @Description 赋能平台项目处理分析分类下项目列表
* @author sun
*/
@Override
public CategoryProjectResultDTO categoryProjectList(CategoryProjectFormDTO formDTO) {
return null;
}
/**
* @Description 赋能平台项目处理分析研判分析
* @author sun
*/
@Override
public ProjectAnalysisResultDTO projectAnalysis(ProjectAnalysisFormDTO formDTO) {
return null;
}
/**
* 找出这些议题中对应的项目id,以及项目对应的一级分类编码
*
* @param issueIds
* @return
*/
@Override
public List<IssueProjectCategory> getIssueProjectFirstCategory(List<String> issueIds) {
return projectDao.selectProjectIssueCategory(issueIds);
}
}

9
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java

@ -1,9 +1,11 @@
package com.epmet.dataaggre.service.resigroup;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.dto.resigroup.form.*;
import com.epmet.dataaggre.dto.resigroup.result.*;
import com.epmet.dto.form.PageUserReportEventFormDTO;
import java.util.List;
@ -61,4 +63,11 @@ public interface ResiGroupService {
* @return com.epmet.dataaggre.dto.resigroup.result.GroupActRankResultDTO
*/
List<GroupActRankResultDTO> querySubRankList(GroupActRankFormDTO formDTO);
/**
* 分页查询我发布的话题
* @param formDTO
* @return
*/
PageData<UserTopicResDTO> pageUserTopic(PageUserReportEventFormDTO formDTO);
}

47
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java

@ -3,12 +3,15 @@ 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.constant.StrConstant;
import com.epmet.commons.tools.page.PageData;
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.govproject.result.IssueProjectCategory;
import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.dto.resigroup.form.*;
@ -18,7 +21,9 @@ 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.govproject.GovProjectService;
import com.epmet.dataaggre.service.resigroup.ResiGroupService;
import com.epmet.dto.form.PageUserReportEventFormDTO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
@ -27,10 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -53,6 +55,8 @@ public class ResiGroupServiceImpl implements ResiGroupService {
private DataStatsService dataStatsService;
@Autowired
private GovOrgService govOrgService;
@Autowired
private GovProjectService govProjectService;
@Override
public List<ResiTopicDTO> selectTopicInfoByIds(List<String> topicIds) {
@ -358,4 +362,39 @@ public class ResiGroupServiceImpl implements ResiGroupService {
}
return resultDTOList;
}
/**
* 数据分析-个人档案-发布话题列表
*
* @param formDTO
* @return
*/
@Override
public PageData<UserTopicResDTO> pageUserTopic(PageUserReportEventFormDTO formDTO) {
if (org.apache.commons.collections4.CollectionUtils.isEmpty(formDTO.getEpmetUserIdList())) {
return new PageData<UserTopicResDTO>(new ArrayList<>(), NumConstant.ZERO);
}
PageInfo<UserTopicResDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(),
formDTO.getPageSize()).doSelectPageInfo(() -> resiTopicDao.selectListTopic(formDTO));
List<UserTopicResDTO> list =pageInfo.getList();
//根据议题id查询出每个议题对应的项目id,以及项目分类编码
List<String> issueIds=list.stream().filter(dto -> StringUtils.isNotBlank(dto.getIssueId())).map(UserTopicResDTO::getIssueId).collect(Collectors.toList());
if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(issueIds)){
List<IssueProjectCategory> categoryList= govProjectService.getIssueProjectFirstCategory(issueIds);
for(UserTopicResDTO topicResDTO :pageInfo.getList()){
topicResDTO.setShiftProject(false);
topicResDTO.setProjectId(StrConstant.EPMETY_STR);
for(IssueProjectCategory category:categoryList){
if(topicResDTO.getIssueId().equals(category.getIssueId())&&StringUtils.isNotBlank(category.getProjectId())){
topicResDTO.setShiftProject(true);
topicResDTO.setProjectId(category.getProjectId());
break;
}
}
}
}
return new PageData<>(pageInfo.getList(), pageInfo.getTotal());
}
}

62
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml

@ -1035,4 +1035,66 @@
GROUP BY t.orgId
</select>
<select id="getProjectTotal" resultType="com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO">
SELECT * FROM (
SELECT
agency_id,
date_id,
month_id,
project_total,
pending_total,
(case when pending_ratio is null then '0%' else CONCAT(FORMAT(pending_ratio*100,2),'%') end) pendingRatio,
closed_total,
(case when closed_ratio is null then '0%' else CONCAT(FORMAT(closed_ratio*100,2),'%') end) closedRatio
FROM fact_agency_project_daily
WHERE agency_id = #{agencyId}
AND date_id = #{dateId}
UNION ALL
SELECT
agency_id,
date_id,
month_id,
project_total,
pending_total,
(case when pending_ratio is null then '0%' else CONCAT(FORMAT(pending_ratio*100,2),'%') end) pendingRatio,
closed_total,
(case when closed_ratio is null then '0%' else CONCAT(FORMAT(closed_ratio*100,2),'%') end) closedRatio
FROM fact_agency_project_daily
WHERE agency_id = #{agencyId}
AND date_id = #{yeDateId}
UNION ALL
(
SELECT
agency_id,
date_id,
month_id,
project_total,
pending_total,
(case when pending_ratio is null then '0%' else CONCAT(FORMAT(pending_ratio*100,2),'%') end) pendingRatio,
closed_total,
(case when closed_ratio is null then '0%' else CONCAT(FORMAT(closed_ratio*100,2),'%') end) closedRatio
FROM fact_agency_project_daily
WHERE agency_id = #{agencyId}
AND month_id = #{monthId}
ORDER BY date_id DESC
LIMIT 1
)
) a
ORDER BY a.date_id DESC
</select>
<select id="getProjectMonthIncr" resultType="com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectMonthResultDTO">
SELECT
agency_id,
month_id,
project_incr
FROM
fact_agency_project_monthly
WHERE
agency_id = #{agencyId}
AND month_id &gt;= #{startMonth}
AND month_id <![CDATA[ <= ]]> #{endMonth}
ORDER BY month_id ASC
</select>
</mapper>

13
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/evaluationindex/EvaluationIndexDao.xml

@ -182,4 +182,17 @@
AND DEL_FLAG = 0
</select>
<select id="projectCategoryList" resultType="com.epmet.dataaggre.dto.govproject.result.ProjectCategoryTotalResultDTO">
SELECT
org_id agencyId,
category_code categoryCode,
project_total total
FROM
screen_project_category_org_daily
WHERE
`level` = '1'
AND org_id = #{agencyId}
AND date_id = #{dateId}
</select>
</mapper>

12
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govissue/IssueDao.xml

@ -124,4 +124,16 @@
</if>
order by i.SHIFTED_TIME desc
</select>
<select id="getCategoryList" resultType="com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO">
SELECT
*
FROM issue_project_category_dict
WHERE del_flag = 0
AND customer_id = #{customerId}
AND category_type = '1'
AND is_disable = 'enable'
ORDER BY category_code
</select>
</mapper>

31
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml

@ -155,4 +155,35 @@
AND rem.RED_DOT = '1'
AND rem.USER_ID = #{userId}
</select>
<select id="getProjectStatusList" resultType="com.epmet.dataaggre.dto.govproject.result.ProjectStatusListResultDTO">
SELECT
agency_id "agencyId",
id "projectId",
origin "origin",
`status` "status",
locate_longitude "longitude",
locate_dimension dimension
FROM
project
WHERE
del_flag = '0'
AND agency_id = #{agencyId}
AND `status` = #{status}
AND created_time <![CDATA[<]]> DATE_FORMAT(#{dateId}, '%Y-%m-%d')
ORDER BY created_time DESC
</select>
<select id="selectProjectIssueCategory" parameterType="map" resultType="com.epmet.dataaggre.dto.govproject.result.IssueProjectCategory">
SELECT
p.ORIGIN_ID AS issueId,
p.id AS projectId
FROM
project p
WHERE
p.DEL_FLAG = '0'
<foreach item="issueId" collection="issueIds" separator="OR" open="AND (" close=")" index="">
p.ORIGIN_ID = #{issueId}
</foreach>
</select>
</mapper>

18
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiTopicDao.xml

@ -22,4 +22,22 @@
#{topicId}
</foreach>
</select>
<!-- 发布话题,分页-->
<select id="selectListTopic" parameterType="com.epmet.dto.form.PageUserReportEventFormDTO"
resultType="com.epmet.dataaggre.dto.resigroup.result.UserTopicResDTO">
SELECT
rt.id as topicId,
rt.TOPIC_CONTENT as topicContent,
rt.SHIFT_ISSUE as shiftIssue,
IFNULL(rt.ISSUE_ID,'') AS issueId,
rt.CREATED_TIME as releaseTime
FROM
resi_topic RT
WHERE
rt.DEL_FLAG = '0'
<foreach item="epmetUserId" collection="epmetUserIdList" open="AND (" separator="or" close=")" index="">
rt.CREATED_BY = #{epmetUserId}
</foreach>
</select>
</mapper>

4
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java

@ -16,8 +16,8 @@ public class IcResiUserDemandFromDTO implements Serializable {
/**
* 居民信息录入的居民的id
*/
@NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class)
private String userId;
@NotBlank(message = "icResiUserId不能为空", groups = AddUserInternalGroup.class)
private String icResiUserId;
/**
* icresiuser/persondata接口返参中有此值

3
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java

@ -30,4 +30,7 @@ public class IcResiUserReportDemandRes implements Serializable {
private String status;
private String statusName;
private String firstCategoryCode;
private String firstCategoryName;
}

3
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java

@ -476,7 +476,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
formDTO.setEpmetUserId(userRes.getData().getEpmetUserId());*/
//icresiuser/persondata接口已经返回去epmetUserId,这里就不需要再查询了。直接让前端传过来
List<String> userIds=new ArrayList<>();
userIds.add(formDTO.getUserId());
userIds.add(formDTO.getIcResiUserId());
if(CollectionUtils.isNotEmpty(formDTO.getEpmetUserIdList())){
userIds.addAll(formDTO.getEpmetUserIdList());
}
@ -498,6 +498,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
if (null != dictMap && dictMap.containsKey(resDto.getCategoryCode())) {
resDto.setCategoryName(dictMap.get(resDto.getCategoryCode()));
}
resDto.setFirstCategoryName(demandDictService.getCategoryName(formDTO.getCustomerId(),resDto.getFirstCategoryCode()));
}
}
return new PageData<>(list, pageInfo.getTotal());

9
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml

@ -129,7 +129,8 @@
r.PARENT_CODE as parentCode,
r.CONTENT,
r.`STATUS`,
r.WANT_SERVICE_TIME as wantServiceTime
r.WANT_SERVICE_TIME as wantServiceTime,
left(r.CATEGORY_CODE,4) as firstCategoryCode
FROM
ic_user_demand_rec r
WHERE
@ -181,11 +182,7 @@
IFNULL(s.FINISH_DESC,'') as finishDesc,
'' AS serviceShowName,
s.id as serviceId,
(
case when r.PARENT_CODE !='0' then r.PARENT_CODE
ELSE R.CATEGORY_CODE
END
) as firstCategoryCode
left(r.CATEGORY_CODE,4) as firstCategoryCode
FROM
ic_user_demand_rec r
left JOIN ic_user_demand_service s ON ( r.id = s.DEMAND_REC_ID AND s.DEL_FLAG = '0' )

4
epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/IcResiPointPageFormDTO.java

@ -4,13 +4,13 @@ import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Data
public class IcResiPointPageFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
//@NotBlank(message = "epmetUserId不能为空" , groups = AddUserInternalGroup.class)
private String epmetUserId;
private List<String> epmetUserIdList;
@NotNull(message = "pageNo不能为空",groups = AddUserInternalGroup.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空",groups = AddUserInternalGroup.class)

2
epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java

@ -571,7 +571,7 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl<UserPointActi
*/
@Override
public PageData<ResiPointPageResDTO> pageUserPoint(IcResiPointPageFormDTO formDTO) {
if(StringUtils.isBlank(formDTO.getEpmetUserId())){
if(org.apache.commons.collections4.CollectionUtils.isEmpty(formDTO.getEpmetUserIdList())){
return new PageData<ResiPointPageResDTO>(new ArrayList<>(),NumConstant.ZERO);
}
PageInfo<ResiPointPageResDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(),

4
epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/UserPointActionLogDao.xml

@ -52,7 +52,9 @@
USER_POINT_ACTION_LOG
WHERE
DEL_FLAG = '0'
AND USER_ID = #{epmetUserId}
<foreach item="epmetUserId" collection="epmetUserIdList" open="AND (" separator="or" close=")" index="">
USER_ID = #{epmetUserId}
</foreach>
ORDER BY
CREATED_TIME DESC
</select>

2
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java

@ -284,5 +284,7 @@ public class IssueController {
return new Result<List<UnResolvedResultDTO>>().ok(issueService.getUnResolvedList(formDTO));
}
// @PostMapping("resibuzz")
}

2
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml

@ -256,7 +256,7 @@
AND CUSTOMER_ID = #{customerId}
AND CATEGORY_TYPE = 1
AND IS_DISABLE = 'enable'
ORDER BY CATEGORY_CODE
ORDER BY SORT
</select>
<update id="updateIssueProjectCategoryDict">

7
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/PageUserReportEventFormDTO.java

@ -4,14 +4,17 @@ import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* 数据分析-个人档案-上报事件列表入参
*/
@Data
public class PageUserReportEventFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
//@NotBlank(message = "epmetUserId不能为空" , groups = AddUserInternalGroup.class)
private String epmetUserId;
private List<String> epmetUserIdList;
@NotNull(message = "pageNo不能为空",groups = AddUserInternalGroup.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空",groups = AddUserInternalGroup.class)

11
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java

@ -17,7 +17,14 @@ public class ProjectDistributionAnalysisFormDTO implements Serializable {
public interface ProjectDistributionAnalysisForm{}
@NotBlank(message = "date不能为空",groups = ProjectDistributionAnalysisForm.class)
private String date;
@NotBlank(message = "startDate不能为空",groups = ProjectDistributionAnalysisForm.class)
private String startDate;
@NotBlank(message = "endDate不能为空",groups = ProjectDistributionAnalysisForm.class)
private String endDate;
private String orgId;
private String orgType;
}

18
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ResiEventDetailFormDTO.java

@ -0,0 +1,18 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 数字赋能平台-个人档案-上报事件-事件详情
*/
@Data
public class ResiEventDetailFormDTO implements Serializable {
private static final long serialVersionUID = 4449275163195979994L;
public interface AddUserInternalGroup {
}
@NotBlank(message = "resiEventId不能为空",groups =AddUserInternalGroup.class )
private String resiEventId;
}

6
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventDetailResultDTO.java

@ -11,7 +11,7 @@ import java.util.List;
/**
* @Author zxc
* @DateTime 2021/8/3 1:30 下午
* @DESC
* @DESC 两端通用时间详情接口+个人档案-数据分析-事件详情
*/
@Data
public class EventDetailResultDTO implements Serializable {
@ -87,10 +87,10 @@ public class EventDetailResultDTO implements Serializable {
@JsonIgnore
private List<String> orgNameList;
@JsonIgnore
//@JsonIgnore
private String projectId;
@JsonIgnore
//@JsonIgnore
private Boolean isProject;
public EventDetailResultDTO() {

26
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/PageUserReportEventResDTO.java

@ -1,9 +1,35 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 数据分析-个人档案-上报事件列表入参
*/
@Data
public class PageUserReportEventResDTO implements Serializable {
private String resiEventId;
/**
* 事件内容
*/
private String eventContent;
/**
* 事件上报事件
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date reportTime;
/**
* true 已转项目false:未转项目
*/
private Boolean shiftProject;
/**
* 项目id
*/
private String projectId;
}

38
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisRightDTO.java

@ -0,0 +1,38 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/12/8 10:14 上午
* @DESC
*/
@Data
public class ProjectDistributionAnalysisRightDTO implements Serializable {
private static final long serialVersionUID = 7233782006110358477L;
/**
* 组织ID
*/
private String orgId;
/**
* 组织类型组织agency网格grid
*/
private String orgType;
/**
* 热力值
*/
private Integer count;
public ProjectDistributionAnalysisRightDTO() {
this.orgId = "";
this.orgType = "";
this.count = NumConstant.ZERO;
}
}

33
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisRightResultDTO.java

@ -0,0 +1,33 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/12/8 10:11 上午
* @DESC
*/
@Data
public class ProjectDistributionAnalysisRightResultDTO implements Serializable {
private static final long serialVersionUID = 8359144215262197796L;
/**
* ..以上
*/
private String under;
/**
* 中间区间
*/
private String middle;
/**
* ..以下
*/
private String above;
private List<ProjectDistributionAnalysisRightDTO> list;
}

2
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java

@ -195,4 +195,6 @@ public interface ProjectConstant {
String SORT_ASC = "asc";
String SORT_DESC = "desc";
String ORG_TYPE_GRID = "grid";
}

13
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java

@ -287,4 +287,17 @@ public class ProjectController {
return new Result<List<ProjectDistributionAnalysisLeftResultDTO>>().ok(projectService.projectDistributionAnalysisLeft(formDTO,tokenDto));
}
/**
* @Description 社区治理项目分布分析-右边
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/8 10:21 上午
*/
@PostMapping("projectdistributionanalysisright")
public Result<ProjectDistributionAnalysisRightResultDTO> projectDistributionAnalysisRight(@RequestBody ProjectDistributionAnalysisFormDTO formDTO, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, ProjectDistributionAnalysisFormDTO.ProjectDistributionAnalysisForm.class);
return new Result<ProjectDistributionAnalysisRightResultDTO>().ok(projectService.projectDistributionAnalysisRight(formDTO,tokenDto));
}
}

14
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ResiEventController.java

@ -57,6 +57,18 @@ public class ResiEventController {
return new Result<EventDetailResultDTO>().ok(resiEventService.eventDetail(formDTO, tokenDto));
}
/**
* 数字赋能平台-个人档案-事件详情
*
* @param formDTO
* @return
*/
@PostMapping("eventdetail-icdata")
public Result<EventDetailResultDTO> eventDetailForIcData(@RequestBody ResiEventDetailFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO,ResiEventDetailFormDTO.AddUserInternalGroup.class);
return new Result<EventDetailResultDTO>().ok(resiEventService.eventDetailForIcData(formDTO));
}
/**
* 我要报事-提交
*
@ -217,7 +229,7 @@ public class ResiEventController {
/**
* 数据分析-个人档案-上报事件列表
*
* 根据epmetUserIdList查询
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.result.MyReportedResultDTO>>
* @author yinzuomei

11
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java

@ -219,12 +219,15 @@ public interface ProjectDao extends BaseDao<ProjectEntity> {
List<ProjectEntity> selectByOriginId(String originId);
/**
* @Description 根据日期查询项目分类
* @param date
* @Description 根据日期查询项目分类
* @param startDate
* @param endDate
* @param codeLength 1级分类编码长度
* @param orgId
* @author zxc
* @date 2021/12/7 2:43 下午
* @date 2021/12/8 1:37 下午
*/
List<ProjectCategoryByDateDTO> selectProjectCategoryByDate(@Param("date")String date,@Param("orgId")String orgId,@Param("codeLength")Integer codeLength);
List<ProjectCategoryByDateDTO> selectProjectCategoryByDate(@Param("startDate")String startDate,@Param("endDate")String endDate,
@Param("orgId")String orgId,@Param("codeLength")Integer codeLength);
}

15
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ResiEventDao.java

@ -18,10 +18,8 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.EventDetailResultDTO;
import com.epmet.dto.result.EventListResultDTO;
import com.epmet.dto.result.MyReportedResultDTO;
import com.epmet.dto.result.NewEventsResultDTO;
import com.epmet.dto.form.PageUserReportEventFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.ResiEventEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -88,4 +86,13 @@ public interface ResiEventDao extends BaseDao<ResiEventEntity> {
* @date 2021/8/5 10:42 上午
*/
List<NewEventsResultDTO> newEvents(@Param("orgIds")List<String> orgIds);
/**
* 数据分析-个人档案-上报事件列表
* 根据epmetUserIdList查询
*
* @param formDTO
* @return
*/
List<PageUserReportEventResDTO> selectUserReported(PageUserReportEventFormDTO formDTO);
}

9
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java

@ -342,4 +342,13 @@ public interface ProjectService extends BaseService<ProjectEntity> {
*/
List<ProjectDistributionAnalysisLeftResultDTO> projectDistributionAnalysisLeft(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto);
/**
* @Description 社区治理项目分布分析-右边
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/8 10:21 上午
*/
ProjectDistributionAnalysisRightResultDTO projectDistributionAnalysisRight(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto);
}

15
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ResiEventService.java

@ -41,6 +41,14 @@ public interface ResiEventService extends BaseService<ResiEventEntity> {
*/
EventDetailResultDTO eventDetail(EventDetailFormDTO formDTO, TokenDto tokenDto);
/**
* 数字赋能平台-个人档案-事件详情
*
* @param formDTO
* @return
*/
EventDetailResultDTO eventDetailForIcData(ResiEventDetailFormDTO formDTO);
/**
* 我要报事-提交
*
@ -131,5 +139,12 @@ public interface ResiEventService extends BaseService<ResiEventEntity> {
*/
ResiEventManageRedDotRes queryResiEventManageRedDot(String agencyId);
/**
* 数据分析-个人档案-上报事件列表
* 根据epmetUserIdList查询
*
* @param formDTO
* @return
*/
PageData<PageUserReportEventResDTO> pageUserReported(PageUserReportEventFormDTO formDTO);
}

63
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -2859,19 +2859,48 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
*/
@Override
public List<ProjectDistributionAnalysisLeftResultDTO> projectDistributionAnalysisLeft(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo){
throw new EpmetException("未查询到此工作人员的所属组织信息...");
if (StringUtils.isBlank(formDTO.getOrgId())){
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo){
throw new EpmetException("未查询到此工作人员的所属组织信息...");
}
formDTO.setOrgId(staffInfo.getAgencyId());
}
Result<List<CategoryListResultDTO>> listResult = govIssueOpenFeignClient.selectCategoryOneLevelListByCustomerId(tokenDto);
if (!listResult.success()){
throw new EpmetException("查询1级分类列表失败...");
}
List<ProjectCategoryByDateDTO> projectCategoryByDateDTOS = baseDao.selectProjectCategoryByDate(formDTO.getDate(), staffInfo.getAgencyId(), listResult.getData().get(NumConstant.ZERO).getCodeLength());
List<ProjectCategoryByDateDTO> projectCategoryByDateDTOS = baseDao.selectProjectCategoryByDate(formDTO.getStartDate(),formDTO.getEndDate(), formDTO.getOrgId(), listResult.getData().get(NumConstant.ZERO).getCodeLength());
if (CollectionUtils.isEmpty(projectCategoryByDateDTOS)){
return new ArrayList<>();
}
return disposeTimeInterval(projectCategoryByDateDTOS, formDTO.getDate(), listResult.getData());
return disposeTimeInterval(projectCategoryByDateDTOS, formDTO.getStartDate(), listResult.getData());
}
/**
* @Description 社区治理项目分布分析-右边
* 因项目数是随时间和组织变化很难设定一个固定的数值段因此根据分段规则将数据分成三段
* 分段规则
* 组织内所有网格项目数网格内最低项目数向下十位取整数网格内最高项目数向上取整数获得取值范围
*
* 根据
* 最小取值+最大取值-最小取值/3
* 最小取值+最大取值-最小取值*2/3
* 获得两个数值用两个数值确定三个取值范围
*
* 代码公式
* 左区间=(最少项目个数/10)*10
* 右区间=(最多项目个数/10+1)*10
* 比如阜新路街道内共10个网格最低项目数的是124个项目十位向下取整数最高项目数的是241个项目十位向上取整数那就取值120~250区间120到250分成3段数值一120+250-120/3163.3 , 数值二120+250-120*2/3206.6 ,
* 所以热力图三个数值应该是160以下十位向下取整数160-210十位向上取整数210以上
* @param formDTO
* @param tokenDto
* @author zxc
* @date 2021/12/8 10:21 上午
*/
@Override
public ProjectDistributionAnalysisRightResultDTO projectDistributionAnalysisRight(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto) {
return null;
}
/**
@ -2890,9 +2919,9 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
ProjectDistributionAnalysisLeftResultDTO dto = new ProjectDistributionAnalysisLeftResultDTO();
dto.setTime(intervalTimeList.get(i));
dto.setCategoryList(ConvertUtils.sourceToTarget(listResult,CategoryListDTO.class));
String concat = date.concat(" ").concat(intervalTimeList.get(i)).concat(":00");
long end = DateUtils.stringToDate(DateUtils.DATE_TIME_PATTERN, concat).getTime();
if (i == NumConstant.ZERO){
String concat = date.concat(" ").concat(intervalTimeList.get(i)).concat(":00");
long end = DateUtils.stringToDate(concat,DateUtils.DATE_TIME_PATTERN).getTime();
dto.getCategoryList().forEach(cate -> {
AtomicReference<Integer> count = new AtomicReference<>(cate.getCount());
groupByCode.forEach((k,v) -> {
@ -2905,17 +2934,27 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
});
});
}else if (i == intervalTimeList.size() - NumConstant.ONE){
break;
}else {
String concat = date.concat(" ").concat(intervalTimeList.get(i)).concat(":00");
long end = NumConstant.ZERO_L;
if (intervalTimeList.get(i).equals("00:00")){
Calendar c = new GregorianCalendar();
Date endDate = DateUtils.stringToDate(concat,DateUtils.DATE_TIME_PATTERN);
c.setTime(endDate);
c.add(Calendar.DATE,NumConstant.ONE);
end = c.getTime().getTime();
}else {
end = DateUtils.stringToDate(concat,DateUtils.DATE_TIME_PATTERN).getTime();
}
String startStr = date.concat(" ").concat(intervalTimeList.get(i - NumConstant.ONE)).concat(":00");
long start = DateUtils.stringToDate(DateUtils.DATE_TIME_PATTERN, startStr).getTime();
long start = DateUtils.stringToDate(startStr,DateUtils.DATE_TIME_PATTERN).getTime();
long finalEnd = end;
dto.getCategoryList().forEach(cate -> {
AtomicReference<Integer> count = new AtomicReference<>(cate.getCount());
groupByCode.forEach((k,v) -> {
if (cate.getCategoryCode().equals(k)){
v.forEach(l -> {
if (l.getCreatedTime().getTime() < end && l.getCreatedTime().getTime() >= start){
if (l.getCreatedTime().getTime() < finalEnd && l.getCreatedTime().getTime() >= start){
cate.setCount(count.getAndSet(count.get() + NumConstant.ONE));
}
});
@ -2955,8 +2994,6 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}
}
list.remove(list.size() - NumConstant.ONE);
list.add(list.size(),"24:00");
list.remove(NumConstant.ZERO);
return list;
}

46
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ResiEventServiceImpl.java

@ -163,7 +163,20 @@ public class ResiEventServiceImpl extends BaseServiceImpl<ResiEventDao, ResiEven
@Override
@Transactional(rollbackFor = Exception.class)
public EventDetailResultDTO eventDetail(EventDetailFormDTO formDTO, TokenDto tokenDto) {
EventDetailResultDTO dto = baseDao.selectEventDetail(formDTO.getEventId());
//单独抽出来一个方法,因为数据分析中,个人档案-事件详情也许要调用
EventDetailResultDTO dto =getEventDetailResultDTO(formDTO.getEventId());
// 更改已读状态 报事人的红点:resi_event,艾特人的:resi_event_mention,所代表的组织的:resi_event_report_org
if (tokenDto.getApp().equals(EventConstant.TYPE_RESI)){
baseDao.updateResiEvent(tokenDto.getUserId(),formDTO.getEventId());
baseDao.updateEventMention(tokenDto.getUserId(),formDTO.getEventId());
}else if (tokenDto.getApp().equals(EventConstant.TYPE_GOV)){
resiEventReportOrgDao.updateEventOrg(formDTO.getEventId(), formDTO.getOrgId());
}
return dto;
}
public EventDetailResultDTO getEventDetailResultDTO(String resiEventId){
EventDetailResultDTO dto = baseDao.selectEventDetail(resiEventId);
if (null == dto){
return new EventDetailResultDTO();
}
@ -205,15 +218,17 @@ public class ResiEventServiceImpl extends BaseServiceImpl<ResiEventDao, ResiEven
}
List<String> data = orgResult.getData();
dto.setEventOrg(data);
// 更改已读状态 报事人的红点:resi_event,艾特人的:resi_event_mention,所代表的组织的:resi_event_report_org
if (tokenDto.getApp().equals(EventConstant.TYPE_RESI)){
baseDao.updateResiEvent(tokenDto.getUserId(),formDTO.getEventId());
baseDao.updateEventMention(tokenDto.getUserId(),formDTO.getEventId());
}else if (tokenDto.getApp().equals(EventConstant.TYPE_GOV)){
resiEventReportOrgDao.updateEventOrg(formDTO.getEventId(), formDTO.getOrgId());
}
return dto;
}
/**
* 数字赋能平台-个人档案-事件详情
*
* @param formDTO
* @return
*/
public EventDetailResultDTO eventDetailForIcData(ResiEventDetailFormDTO formDTO){
return getEventDetailResultDTO(formDTO.getResiEventId());
}
/**
* 我要报事-提交
@ -640,10 +655,21 @@ public class ResiEventServiceImpl extends BaseServiceImpl<ResiEventDao, ResiEven
return res;
}
/**
* 数据分析-个人档案-上报事件列表
* 根据epmetUserIdList查询
*
* @param formDTO
* @return
*/
@Override
public PageData<PageUserReportEventResDTO> pageUserReported(PageUserReportEventFormDTO formDTO) {
//todo
return null;
if (org.apache.commons.collections4.CollectionUtils.isEmpty(formDTO.getEpmetUserIdList())) {
return new PageData<PageUserReportEventResDTO>(new ArrayList<>(), NumConstant.ZERO);
}
PageInfo<PageUserReportEventResDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(),
formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectUserReported(formDTO));
return new PageData<>(pageInfo.getList(), pageInfo.getTotal());
}

5
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml

@ -402,13 +402,14 @@
<select id="selectProjectCategoryByDate" resultType="com.epmet.dto.result.ProjectCategoryByDateDTO">
SELECT
DISTINCT p.ID AS projectId,
p.CREATED_TIME AS createdTime,
CONCAT(#{startDate},' ', DATE_FORMAT(p.CREATED_TIME,'%h:%i:%s')) AS createdTime,
LEFT(pc.CATEGORY_CODE,#{codeLength}) AS categoryCode
FROM project p
INNER JOIN project_category pc ON (pc.PROJECT_ID = p.ID AND pc.DEL_FLAG = 0)
WHERE p.DEL_FLAG = 0
AND p.ORG_ID_PATH LIKE CONCAT('%',#{orgId})
AND DATE_FORMAT(p.CREATED_TIME,'%Y-%m-%d') = #{date}
AND DATE_FORMAT(p.CREATED_TIME,'%Y-%m-%d') >= #{startDate}
AND DATE_FORMAT(p.CREATED_TIME,'%Y-%m-%d') <![CDATA[ <= ]]> #{endDate}
ORDER BY projectId
</select>
</mapper>

16
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml

@ -201,4 +201,20 @@
</foreach>)
ORDER BY ro.CREATED_TIME DESC
</select>
<select id="selectUserReported" parameterType="com.epmet.dto.form.PageUserReportEventFormDTO" resultType="com.epmet.dto.result.PageUserReportEventResDTO">
SELECT
re.id AS resiEventId,
re.EVENT_CONTENT AS eventContent,
re.SHIFT_PROJECT AS shiftProject,
IFNULL(re.PROJECT_ID,'') AS projectId,
re.CREATED_TIME AS reportTime
FROM
resi_event re
WHERE
re.DEL_FLAG = '0'
<foreach item="epmetUserId" collection="epmetUserIdList" open="AND (" separator="or" close=")" index="">
re.REPORT_USER_ID = #{epmetUserId}
</foreach>
</select>
</mapper>
Loading…
Cancel
Save