().error(e.getCode(), e.getMessage()));
             } catch (Exception e) {
-                logger.error("CpAuthGatewayFilterFactory认证出错,错误信息:{}", ExceptionUtils.getErrorStackTrace(e));
+                logger.error("CpAuthGatewayFilterFactory认证出错Exception,错误信息:{}", ExceptionUtils.getErrorStackTrace(e));
                 return response(exchange, new Result<>().error(e.getMessage()));
             }
 
diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml
index 4f65034c7d..ca78ab64aa 100644
--- a/epmet-gateway/src/main/resources/bootstrap.yml
+++ b/epmet-gateway/src/main/resources/bootstrap.yml
@@ -336,12 +336,20 @@ spring:
         # 宣传服务
         - id: epmet-openapi-adv-server
           uri: @gateway.routes.epmet-openapi-adv-server.url@
-          order: 35
+          order: 36
           predicates:
             - Path=${server.servlet.context-path}/adv/**
           filters:
             - StripPrefix=1
             - CpAuth=true
+        - id: tduck-api
+          uri: @gateway.routes.tduck-api.url@
+          order: 37
+          predicates:
+            - Path=${server.servlet.context-path}/tduck-api/**
+          filters:
+            - StripPrefix=1
+            - CpAuth=true
     nacos:
       discovery:
         server-addr: @nacos.server-addr@
@@ -472,6 +480,7 @@ epmet:
     - /epmetuser/customerstaff/customerlist
     - /gov/project/project/platformcallback
     - /oper/customize/customerstartpage/homestartpage
+    - /tduck-api/**
 
   # 外部应用认证,使用AccessToken等头进行认证
   externalOpenUrls:
diff --git a/epmet-module/data-aggregator/data-aggregator-client/pom.xml b/epmet-module/data-aggregator/data-aggregator-client/pom.xml
index 4e8beca881..7f6f4cd2ff 100644
--- a/epmet-module/data-aggregator/data-aggregator-client/pom.xml
+++ b/epmet-module/data-aggregator/data-aggregator-client/pom.xml
@@ -17,6 +17,12 @@
             epmet-commons-tools 
             2.0.0 
         
+        
+            com.baomidou 
+            mybatis-plus-annotation 
+            3.2.0 
+            compile 
+         
     
 
 
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java
index dd9ab18035..8ae93cc5d4 100644
--- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java
@@ -32,5 +32,9 @@ public interface DataSourceConstant {
     String EVALUATION_INDEX = "evaluationIndex";
 
     String OPERCUSTOMIZE="opercustomize";
+
     String EPMET_MESSAGE="epmetmessage";
+
+    String EPMET_T_DUCK = "epmettduck";
+    String EPMETTDUCK="epmettduck";
 }
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/TDuckConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/TDuckConstant.java
new file mode 100644
index 0000000000..87ef2de7cb
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/TDuckConstant.java
@@ -0,0 +1,17 @@
+package com.epmet.dataaggre.constant;
+
+/**
+ * @Author zxc
+ * @DateTime 2021/9/23 4:06 下午
+ * @DESC
+ */
+public interface TDuckConstant {
+
+    String CLIENT_GOV = "gov";
+    String CLIENT_RESI = "resi";
+    
+    String ORG_TYPE_AGENCY = "agency";
+    String ORG_TYPE_GRID = "grid";
+    String ORG_TYPE_DEPT = "dept";
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/AcUserAuthorizeDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/AcUserAuthorizeDTO.java
new file mode 100644
index 0000000000..3db0c9939d
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/AcUserAuthorizeDTO.java
@@ -0,0 +1,85 @@
+package com.epmet.dataaggre.dto.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 第三方用户授权信息
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class AcUserAuthorizeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 第三方平台类型
+     */
+	private Integer type;
+
+    /**
+     * 平台AppId
+     */
+	private String appId;
+
+    /**
+     * 平台OpenId
+     */
+	private String openId;
+
+    /**
+     * 平台用户名
+     */
+	private String userName;
+
+    /**
+     * 用户Id
+     */
+	private String userId;
+
+    /**
+     * 平台用户信息
+     */
+	private String userInfo;
+
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/AcUserDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/AcUserDTO.java
new file mode 100644
index 0000000000..a1bb83f55b
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/AcUserDTO.java
@@ -0,0 +1,121 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 用户
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class AcUserDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 姓名
+     */
+	private String name;
+
+    /**
+     * 头像
+     */
+	private String avatar;
+
+    /**
+     * 性别0未知 1男2女
+     */
+	private Integer gender;
+
+    /**
+     * 邮箱
+     */
+	private String email;
+
+    /**
+     * 手机号
+     */
+	private String phoneNumber;
+
+    /**
+     * 密码
+     */
+	private String password;
+
+    /**
+     * 注册渠道
+     */
+	private String regChannel;
+
+    /**
+     * 最后登录渠道
+     */
+	private Integer lastLoginChannel;
+
+    /**
+     * 最后登录时间
+     */
+	private Date lastLoginTime;
+
+    /**
+     * 最后登录Ip
+     */
+	private String lastLoginIp;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/InputMapDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/InputMapDTO.java
new file mode 100644
index 0000000000..befdf3ae93
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/InputMapDTO.java
@@ -0,0 +1,19 @@
+package com.epmet.dataaggre.dto.epmettduck;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description TODO
+ * @Author yinzuomei
+ * @Date 2021/9/16 11:34 下午
+ */
+@Data
+public class InputMapDTO implements Serializable {
+    private BigDecimal longitude;
+    private BigDecimal latitude;
+    private String address;
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateCategoryDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateCategoryDTO.java
new file mode 100644
index 0000000000..8c0956058f
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateCategoryDTO.java
@@ -0,0 +1,85 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目模板分类
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrProjectTemplateCategoryDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 主题名称
+     */
+	private String name;
+
+    /**
+     * 排序
+     */
+	private Integer sort;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateDTO.java
new file mode 100644
index 0000000000..1b995189c6
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateDTO.java
@@ -0,0 +1,111 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrProjectTemplateDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 模板唯一标识
+     */
+	private String key;
+
+    /**
+     * 封面图
+     */
+	private String coverImg;
+
+    /**
+     * 项目名称
+     */
+	private String name;
+
+    /**
+     * 项目描述
+     */
+	private String describe;
+
+    /**
+     * 喜欢数
+     */
+	private Integer likeCount;
+
+    /**
+     * 项目类型
+     */
+	private String categoryId;
+
+    /**
+     * 状态
+     */
+	private Integer status;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateItemDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateItemDTO.java
new file mode 100644
index 0000000000..2174d4f39d
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectTemplateItemDTO.java
@@ -0,0 +1,141 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrProjectTemplateItemDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 表单项Id
+     */
+	private String formItemId;
+
+    /**
+     * 表单项类型 
+     */
+	private String type;
+
+    /**
+     * 表单项标题
+     */
+	private String label;
+
+    /**
+     * 是否显示标签
+     */
+	private Integer showLabel;
+
+    /**
+     * 表单项默认值
+     */
+	private String defaultValue;
+
+    /**
+     * 是否必填
+     */
+	private Integer required;
+
+    /**
+     * 输入型提示文字
+     */
+	private String placeholder;
+
+    /**
+     * 排序
+     */
+	private Long sort;
+
+    /**
+     * 栅格宽度
+     */
+	private Integer span;
+
+    /**
+     * 扩展字段 表单项独有字段
+     */
+	private String expand;
+
+    /**
+     * 正则表达式 
+     */
+	private String regList;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+    /**
+     * 展示类型组件
+     */
+	private Integer isDisplayType;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectThemeDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectThemeDTO.java
new file mode 100644
index 0000000000..8bf8538c2a
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrProjectThemeDTO.java
@@ -0,0 +1,101 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目主题外观模板
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrProjectThemeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 主题名称
+     */
+	private String name;
+
+    /**
+     * 主题风格
+
+     */
+	private String style;
+
+    /**
+     * 头部图片
+     */
+	private String headImgUrl;
+
+    /**
+     * 颜色代码
+     */
+	private String color;
+
+    /**
+     * 按钮颜色
+     */
+	private String btnsColor;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrPublishRangeDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrPublishRangeDTO.java
new file mode 100644
index 0000000000..944965d1ec
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrPublishRangeDTO.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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目发布范围表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrPublishRangeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 范围组织ids,格式与组织维度一致 冒号隔开 即选中节点的全路径id
+     */
+	private String orgIds;
+
+    /**
+     * 最后发布组织的ID
+     */
+	private String orgId;
+
+    /**
+     * 最后发布组织的类型;department,agency;grid
+     */
+	private String orgType;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrResultExtDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrResultExtDTO.java
new file mode 100644
index 0000000000..4f0ade42a5
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrResultExtDTO.java
@@ -0,0 +1,101 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 问卷填写附属信息表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrResultExtDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 姓名
+     */
+	private String userId;
+
+    /**
+     * 结果Id
+     */
+	private String resultId;
+
+    /**
+     * 工作端小程序:gov、居民端小程序:resi、运营端:oper、其他:other
+     */
+	private String userType;
+
+    /**
+     * 在哪个组织填写的
+     */
+	private String fromOrgId;
+
+    /**
+     * 组织:agency;部门:department;网格:grid
+     */
+	private String fromOrgType;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectDTO.java
new file mode 100644
index 0000000000..7f9bba34cb
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectDTO.java
@@ -0,0 +1,121 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrUserProjectDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户id
+     */
+	private String customerId;
+
+    /**
+     * 项目code
+     */
+	private String key;
+
+    /**
+     * 来源Id
+     */
+	private String sourceId;
+
+    /**
+     * 来源类型
+     */
+	private Integer sourceType;
+
+    /**
+     * 项目名称
+     */
+	private String name;
+
+    /**
+     * 项目描述
+     */
+	private String describe;
+
+    /**
+     * 用户ID
+     */
+	private String userId;
+
+    /**
+     * 项目类型
+     */
+	private Integer type;
+
+    /**
+     * 状态
+     */
+	private Integer status;
+
+    /**
+     * 适用于哪个端 resi:居民端用户;gov:工作端用户;运营端用户:oper
+     */
+	private String client;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectItemDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectItemDTO.java
new file mode 100644
index 0000000000..614236b09c
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectItemDTO.java
@@ -0,0 +1,141 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrUserProjectItemDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 表单项Id
+     */
+	private String formItemId;
+
+    /**
+     * 表单项类型 
+     */
+	private String type;
+
+    /**
+     * 表单项标题
+     */
+	private String label;
+
+    /**
+     * 展示类型组件
+     */
+	private Integer isDisplayType;
+
+    /**
+     * 是否显示标签
+     */
+	private Integer showLabel;
+
+    /**
+     * 表单项默认值
+     */
+	private String defaultValue;
+
+    /**
+     * 是否必填
+     */
+	private Integer required;
+
+    /**
+     * 输入型提示文字
+     */
+	private String placeholder;
+
+    /**
+     * 排序
+     */
+	private Long sort;
+
+    /**
+     * 栅格宽度
+     */
+	private Integer span;
+
+    /**
+     * 扩展字段 表单项独有字段
+     */
+	private String expand;
+
+    /**
+     * 正则表达式 
+     */
+	private String regList;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectLogicDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectLogicDTO.java
new file mode 100644
index 0000000000..901a8b41ba
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectLogicDTO.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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目逻辑
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrUserProjectLogicDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 逻辑Id
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 问题Id
+     */
+	private String formItemId;
+
+    /**
+     * 条件选项 
+     */
+	private Integer expression;
+
+    /**
+     * 条件列表
+     */
+	private String conditionList;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectResultDTO.java
new file mode 100644
index 0000000000..dd81d962fc
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectResultDTO.java
@@ -0,0 +1,141 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrUserProjectResultDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 序号
+     */
+	private Integer serialNumber;
+
+    /**
+     * 填写结果
+     */
+	private String originalData;
+
+    /**
+     * 填写结果
+     */
+	private String processData;
+
+    /**
+     * 提交ua
+     */
+	private String submitUa;
+
+    /**
+     * 提交系统
+     */
+	private String submitOs;
+
+    /**
+     * 提交浏览器
+     */
+	private String submitBrowser;
+
+    /**
+     * 请求ip
+     */
+	private String submitRequestIp;
+
+    /**
+     * 提交地址
+     */
+	private String submitAddress;
+
+    /**
+     * 完成时间 毫秒
+     */
+	private Integer completeTime;
+
+    /**
+     * 用户Id
+     */
+	private String userId;
+
+    /**
+     * 微信openId
+     */
+	private String wxOpenId;
+
+    /**
+     * 微信用户信息
+     */
+	private String wxUserInfo;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectSettingDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectSettingDTO.java
new file mode 100644
index 0000000000..bb44c7e351
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectSettingDTO.java
@@ -0,0 +1,186 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrUserProjectSettingDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 提交提示图片
+     */
+	private String submitPromptImg;
+
+    /**
+     * 提交提示文字
+     */
+	private String submitPromptText;
+
+    /**
+     * 提交跳转连接
+     */
+	private String submitJumpUrl;
+
+    /**
+     * 公开提交结果
+     */
+	private Integer isPublicResult;
+
+    /**
+     * 只在微信填写
+     */
+	private Integer isWxWrite;
+
+    /**
+     * 
+     */
+	private Integer isWxWriteOnce;
+
+    /**
+     * 每人只能填写一次
+     */
+	private Integer isEveryoneWriteOnce;
+
+    /**
+     * 每人每天只能填写一次
+     */
+	private Integer isEveryoneDayWriteOnce;
+
+    /**
+     * 填写之后提示
+     */
+	private String writeOncePromptText;
+
+    /**
+     * 新反馈通知邮件
+     */
+	private String newWriteNotifyEmail;
+
+    /**
+     * 新反馈通知微信
+     */
+	private String newWriteNotifyWx;
+
+    /**
+     * 记录微信用户个人信息
+     */
+	private Integer isRecordWxUser;
+
+    /**
+     * 定时收集开始时间
+     */
+	private Date timedCollectionBeginTime;
+
+    /**
+     * 定时收集结束时间
+     */
+	private Date timedCollectionEndTime;
+
+    /**
+     * 定时未启动提示文字
+     */
+	private String timedNotEnabledPromptText;
+
+    /**
+     * 定时停用会提示文字
+     */
+	private String timedDeactivatePromptText;
+
+    /**
+     * 定时定量数量
+     */
+	private Integer timedQuantitativeQuantity;
+
+    /**
+     * 定时定量完成提示
+     */
+	private String timedEndPromptText;
+
+    /**
+     * 分享图片
+     */
+	private String shareImg;
+
+    /**
+     * 分享标题
+     */
+	private String shareTitle;
+
+    /**
+     * 分享描述
+     */
+	private String shareDesc;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectThemeDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectThemeDTO.java
new file mode 100644
index 0000000000..e42dd917fc
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrUserProjectThemeDTO.java
@@ -0,0 +1,126 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrUserProjectThemeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 主题Id
+     */
+	private String themeId;
+
+    /**
+     * 提交按钮文字
+     */
+	private String submitBtnText;
+
+    /**
+     * logo图片
+     */
+	private String logoImg;
+
+    /**
+     * logo位置
+     */
+	private String logoPosition;
+
+    /**
+     * 背景颜色
+     */
+	private String backgroundColor;
+
+    /**
+     * 背景图片
+     */
+	private String backgroundImg;
+
+    /**
+     * 是否显示标题
+     */
+	private Integer showTitle;
+
+    /**
+     * 是否显示描述语
+     */
+	private Integer showDescribe;
+
+    /**
+     * 显示序号
+     */
+	private Integer showNumber;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrVistRecordDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrVistRecordDTO.java
new file mode 100644
index 0000000000..7e747c2680
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/PrVistRecordDTO.java
@@ -0,0 +1,91 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 用户访问问卷记录表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class PrVistRecordDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 姓名
+     */
+	private String userId;
+
+    /**
+     * 工作端小程序:gov、居民端小程序:resi、运营端:oper、其他:other
+     */
+	private String userType;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/ProjectItemTypeEnum.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/ProjectItemTypeEnum.java
new file mode 100644
index 0000000000..8083aeb077
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/ProjectItemTypeEnum.java
@@ -0,0 +1,75 @@
+package com.epmet.dataaggre.dto.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.epmet.dataaggre.dto.epmettduck.struct.*;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Author zxc
+ * @DateTime 2021/9/16 2:28 下午
+ * @DESC
+ */
+@AllArgsConstructor
+@Getter
+public enum ProjectItemTypeEnum {
+
+    //联系人组件:
+    INPUT("INPUT", "单行文本", InputExpandStruct.class),
+    TEXTAREA("TEXTAREA", "多行文本", TextareaExpandStruct.class),
+    PASSWORD_INPUT("PASSWORD_INPUT", "密码输入", null),
+    NUMBER_INPUT("NUMBER_INPUT", "数字输入", NumberExpandStruct.class),
+    SELECT("SELECT", "下拉框", SelectExpandStruct.class),
+    CASCADER("CASCADER", "级联选择", CascaderExpandStruct.class),
+    RADIO("RADIO", "单选框", RadioExpandStruct.class),
+    CHECKBOX("CHECKBOX", "多选框", CheckboxExpandStruct.class),
+    SWITCH("SWITCH", "开关", SwitchExpandStruct.class),
+    TIME("TIME", "时间选择", TimeExpandStruct.class),
+    TIME_RANGE("TIME_RANGE", "时间范围", TimeRangeExpandStruct.class),
+    DATE("DATE", "日期选择", DateExpandStruct.class),
+    DATE_RANGE("DATE_RANGE", "日期范围", DateRangeExpandStruct.class),
+    RATE("RATE", "评分", RateExpandStruct.class),
+    PROVINCE_CITY("PROVINCE_CITY", "省市联动", EmptyExpandStruct.class),
+    INPUT_MAP("INPUT_MAP", "地理位置", EmptyExpandStruct.class),
+
+    // 以下不分析
+    PHONE_VERIFICATION("PHONE_VERIFICATION", "手机号验证", EmptyExpandStruct.class),
+    SLIDER("SLIDER", "滑块", SliderExpandStruct.class),
+    COLOR("COLOR", "颜色", ColorExpandStruct.class),
+    UPLOAD("UPLOAD", "文件上传组件", UploadExpandStruct.class),
+    IMAGE("IMAGE", "图片展示", ImageExpandStruct.class),
+    IMAGE_SELECT("IMAGE_SELECT", "图片选择", ImageSelectExpandStruct.class),
+    IMAGE_CAROUSEL("IMAGE_CAROUSEL", "图片轮播", ImageCarouselExpandStruct.class),
+    DESC_TEXT("DESC_TEXT", "文字描述", DescTextExpandStruct.class),
+    SIGN_PAD("SIGN_PAD", "手写签名", SignPadExpandStruct.class),
+    PAGINATION("PAGINATION", "分页", PaginationExpandStruct.class),
+    DIVIDER("DIVIDER", "分割线", DividerExpandStruct.class);
+
+    @EnumValue
+    @JsonValue
+    private String value;
+
+    private String desc;
+    /**
+     * 扩展属性类
+     */
+    private Class expandClass;
+
+    /**
+     * 枚举入参注解
+     *
+     * @param value
+     * @return
+     */
+    @JsonCreator
+    public static ProjectItemTypeEnum getByValue(String value) {
+        for (ProjectItemTypeEnum typeEnum : values()) {
+            if (typeEnum.getValue().equals(value)) {
+                return typeEnum;
+            }
+        }
+        return null;
+    }
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/WxMpUserDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/WxMpUserDTO.java
new file mode 100644
index 0000000000..e50b5fffab
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/WxMpUserDTO.java
@@ -0,0 +1,126 @@
+/**
+ * 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.epmettduck;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * 微信公众号用户 
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+public class WxMpUserDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+	private String id;
+
+    /**
+     * 公众号AppId
+     */
+	private String appid;
+
+    /**
+     * 昵称
+     */
+	private String nickname;
+
+    /**
+     * 性别
+     */
+	private Integer sex;
+
+    /**
+     * 头像
+     */
+	private String headImgUrl;
+
+    /**
+     * 
+     */
+	private String unionId;
+
+    /**
+     * 
+     */
+	private String openId;
+
+    /**
+     * 国家
+     */
+	private String country;
+
+    /**
+     * 省
+     */
+	private String province;
+
+    /**
+     * 城市
+     */
+	private String city;
+
+    /**
+     * 是否关注
+     */
+	private Integer isSubscribe;
+
+    /**
+     * 用户Id
+     */
+	private String userId;
+
+    /**
+     * 删除标识 1删除;0未删除
+     */
+    private String delFlag;
+
+    /**
+     * 乐观锁
+     */
+    private Integer revision;
+
+    /**
+     * 创建人
+     */
+    private String createdBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createdTime;
+
+    /**
+     * 更新人
+     */
+    private String updatedBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updatedTime;
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ItemResDetailFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ItemResDetailFormDTO.java
new file mode 100644
index 0000000000..a107080eea
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ItemResDetailFormDTO.java
@@ -0,0 +1,32 @@
+package com.epmet.dataaggre.dto.epmettduck.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description 问卷-数据分析-查看详情
+ * @Author yinzuomei
+ * @Date 2021/9/22 1:29 下午
+ */
+@Data
+public class ItemResDetailFormDTO extends ProjectKeyCommonDTO{
+
+    @NotBlank(message = "formItemId不能为空",groups = AddUserInternalGroup.class)
+    private String formItemId;
+    /**
+     * 表单项类型
+     */
+    @NotBlank(message = "type不能为空",groups = AddUserInternalGroup.class)
+    private String type;
+
+
+    /**
+     * 09.22目前产品没要求分页
+     */
+    //@NotNull(message = "pageNo不能为空",groups = AddUserInternalGroup.class)
+    //private Integer pageNo;
+    //@NotNull(message = "pageSize不能为空",groups = AddUserInternalGroup.class)
+    //private Integer pageSize;
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ProjectKeyCommonDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ProjectKeyCommonDTO.java
new file mode 100644
index 0000000000..9ed0db927c
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/ProjectKeyCommonDTO.java
@@ -0,0 +1,23 @@
+package com.epmet.dataaggre.dto.epmettduck.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @Description projectKey通用
+ * @Author yinzuomei
+ * @Date 2021/9/16 1:32 下午
+ */
+@Data
+public class ProjectKeyCommonDTO implements Serializable {
+    public interface AddUserInternalGroup {
+    }
+    /**
+     * 问卷id, 对应pr_user_project.key
+     */
+    @NotBlank(message = "projectKey不能为空",groups = AddUserInternalGroup.class)
+    private String projectKey;
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckDetailFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckDetailFormDTO.java
new file mode 100644
index 0000000000..3a9b934b69
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckDetailFormDTO.java
@@ -0,0 +1,38 @@
+package com.epmet.dataaggre.dto.epmettduck.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Author zxc
+ * @DateTime 2021/9/16 2:00 下午
+ * @DESC
+ */
+@Data
+public class TDuckDetailFormDTO implements Serializable {
+
+    private static final long serialVersionUID = 3793280475377993346L;
+
+    public interface TDuckDetailForm{}
+    public interface PermissionValidate{}
+
+    /**
+     * 项目key
+     */
+    @NotBlank(message = "项目key不能为空",groups = { TDuckDetailForm.class, PermissionValidate.class })
+    private String key;
+    /**
+     * 是否显示类型
+     */
+    @NotNull(message = "是否显示类型不能为空",groups = TDuckDetailForm.class)
+    private Boolean displayType;
+
+    /** 当前操作人所在的组织的类型(grid:网格,agency:单位) */
+    private String orgType;
+
+    /** 当前操作人所在的组织的ID(当orgType为grid的时候必填,为agency的时候留空) */
+    private String orgId;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckHeaderInfoFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckHeaderInfoFormDTO.java
new file mode 100644
index 0000000000..2e0a1a953f
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckHeaderInfoFormDTO.java
@@ -0,0 +1,23 @@
+package com.epmet.dataaggre.dto.epmettduck.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Author zxc
+ * @DateTime 2021/9/17 10:47 上午
+ * @DESC
+ */
+@Data
+public class TDuckHeaderInfoFormDTO implements Serializable {
+
+    private static final long serialVersionUID = 3624352114576287768L;
+
+    public interface TDuckHeaderInfoForm{}
+
+    @NotBlank(message = "projectKey不能为空",groups = TDuckHeaderInfoForm.class)
+    private String projectKey;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckListFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckListFormDTO.java
new file mode 100644
index 0000000000..83fc43fd6f
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/form/TDuckListFormDTO.java
@@ -0,0 +1,43 @@
+package com.epmet.dataaggre.dto.epmettduck.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Author zxc
+ * @DateTime 2021/9/17 10:47 上午
+ * @DESC
+ */
+@Data
+public class TDuckListFormDTO implements Serializable {
+
+    private static final long serialVersionUID = 3624352114576287768L;
+
+    public interface TDuckListForm{}
+
+    /**
+     * 1:未发布,2:收集中,3:已结束
+     */
+    @NotNull(message = "问卷调查状态不能为空",groups = TDuckListForm.class)
+    private Integer status;
+
+    @NotNull(message = "pageNo不能为空",groups = TDuckListForm.class)
+    private Integer pageNo;
+
+    @NotNull(message = "pageSize不能为空",groups = TDuckListForm.class)
+    private Integer pageSize;
+
+    private String orgId;
+
+    private String orgType;
+
+    @NotBlank(message = "client不能为空",groups = TDuckListForm.class)
+    private String client;
+
+    private String userId;
+
+    private String customerId;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/AnalysisReportResDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/AnalysisReportResDTO.java
new file mode 100644
index 0000000000..e532068afa
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/AnalysisReportResDTO.java
@@ -0,0 +1,68 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * @Description TODO
+ * @Author yinzuomei
+ * @Date 2021/9/16 5:30 下午
+ */
+@Data
+public class AnalysisReportResDTO implements Serializable {
+    private static final long serialVersionUID = -1637286883477938648L;
+
+    /**
+     * 项目key
+     */
+    private String projectKey;
+
+    /**
+     * 表单项类型
+     */
+    private String type;
+
+    /**
+     * 表单项标题
+     */
+    private String label;
+
+    /**
+     * 表单项Id
+     */
+    private String formItemId;
+
+    /**
+     * 展示类型组件
+     */
+    private Integer isDisplayType;
+
+    /**
+     * 是否显示标签
+     */
+    private Integer showLabel;
+
+    /**
+     * 是否必填
+     */
+    private Integer required;
+
+    /**
+     * 排序
+     */
+    private Long sort;
+
+    private Map detail;
+
+    /**
+     * 扩展字段 表单项独有字段
+     */
+    @JsonIgnore
+    private String expand;
+
+    private String moduleType;
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/CascaderDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/CascaderDTO.java
new file mode 100644
index 0000000000..3b5888a543
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/CascaderDTO.java
@@ -0,0 +1,40 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description 级联选择组件答案参数格式
+ * @Author yinzuomei
+ * @Date 2021/9/18 3:40 下午
+ */
+@Data
+public class CascaderDTO implements Serializable {
+    /**
+     * 当前选择的选项id
+     */
+    private Integer id;
+    /**
+     * 选项名
+     */
+    private String label;
+
+    /**
+     * 选项名
+     */
+    private String value;
+
+    /**
+     * pid
+     */
+    private Integer pid;
+
+    /**
+     * 全路径名字
+     */
+    private List labels;
+    public String pathName;
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ConcatTableHeaderDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ConcatTableHeaderDTO.java
new file mode 100644
index 0000000000..b44f736854
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ConcatTableHeaderDTO.java
@@ -0,0 +1,27 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description 表头
+ * @Author yinzuomei
+ * @Date 2021/9/22 3:41 下午
+ */
+@Data
+public class ConcatTableHeaderDTO implements Serializable {
+    private static final long serialVersionUID = -1133629000511948034L;
+
+    /**
+     * 显示名称
+     */
+    private String label;
+    /**
+     * 表单项Id
+     */
+    private String formItemId;
+
+    private String type;
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/GetRangeResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/GetRangeResultDTO.java
new file mode 100644
index 0000000000..d1ea08f6fe
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/GetRangeResultDTO.java
@@ -0,0 +1,24 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author zhaoqifeng
+ * @Date 2021/9/18 14:41
+ */
+@Data
+public class GetRangeResultDTO implements Serializable {
+    private static final long serialVersionUID = 3208245365454855156L;
+    /**
+     * 适用于哪个端 resi:居民端用户;gov:工作端用户
+     */
+    private String client;
+    /**
+     * 发布范围组织列表
+     */
+    private List orgList;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ItemResDetailConcatResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ItemResDetailConcatResultDTO.java
new file mode 100644
index 0000000000..8bb7fb8ccc
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ItemResDetailConcatResultDTO.java
@@ -0,0 +1,27 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description 联系人组件
+ * @Author yinzuomei
+ * @Date 2021/9/22 2:54 下午
+ */
+@Data
+public class ItemResDetailConcatResultDTO implements Serializable {
+    private static final long serialVersionUID = -3695200094740706700L;
+    private List tableHeaderList;
+    private List> dataMap;
+    //private List> dataList;
+
+    public ItemResDetailConcatResultDTO(){
+        this.tableHeaderList=new ArrayList<>();
+        this.dataMap=new ArrayList<>();
+    }
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/OptionDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/OptionDTO.java
new file mode 100644
index 0000000000..c1d64bba1e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/OptionDTO.java
@@ -0,0 +1,29 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description
+ * @Author yinzuomei
+ * @Date 2021/9/17 3:25 下午
+ */
+@Data
+public class OptionDTO implements Serializable {
+    /**
+     * 选项题目
+     */
+    private String label;
+
+    /**
+     * 答案值
+     */
+    private Integer value;
+
+    /**
+     * 多少个人选择此答案
+     */
+    private Integer currentCount=0;
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/PermissionValidateResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/PermissionValidateResultDTO.java
new file mode 100644
index 0000000000..45897428d9
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/PermissionValidateResultDTO.java
@@ -0,0 +1,9 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import lombok.Data;
+
+@Data
+public class PermissionValidateResultDTO {
+    private Boolean permitted;
+    private String accessKey;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ProjectProfileResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ProjectProfileResultDTO.java
new file mode 100644
index 0000000000..c5df187969
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/ProjectProfileResultDTO.java
@@ -0,0 +1,39 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description 统计图标,上面的一行
+ * @Author yinzuomei
+ * @Date 2021/9/16 2:10 下午
+ */
+@Data
+public class ProjectProfileResultDTO implements Serializable {
+    private static final long serialVersionUID = -6087175682515652086L;
+
+    /**
+     * 问卷id, 对应pr_user_project.key
+     */
+    private String projectKey;
+
+    /**
+     * 采集数量
+     */
+    private Integer collectionTotal;
+
+    //CREATE(1, "未发布"),
+    //RELEASE(2, "收集中"),
+    //STOP(3, "停止发布");
+    private Integer status;
+
+    /**
+     * 采集数量
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+}
+
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/RedPointResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/RedPointResultDTO.java
new file mode 100644
index 0000000000..38654cfd7c
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/RedPointResultDTO.java
@@ -0,0 +1,19 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description
+ * @Author zhaoqifeng
+ * @Date 2021/9/23 10:03
+ */
+@Data
+public class RedPointResultDTO implements Serializable {
+    private static final long serialVersionUID = -2230123089546481389L;
+    /**
+     * redPoint
+     */
+    private String redPoint;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/TDuckListResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/TDuckListResultDTO.java
new file mode 100644
index 0000000000..ee412e8ad3
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/result/TDuckListResultDTO.java
@@ -0,0 +1,114 @@
+package com.epmet.dataaggre.dto.epmettduck.result;
+
+import com.epmet.commons.tools.constant.NumConstant;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Author zxc
+ * @DateTime 2021/9/17 10:47 上午
+ * @DESC
+ */
+@Data
+public class TDuckListResultDTO implements Serializable {
+
+    private static final long serialVersionUID = 3624352114576287768L;
+
+    /**
+     * 客户id
+     */
+    private String customerId;
+
+    /**
+     * 项目code
+     */
+    private String key;
+
+    /**
+     * 来源Id
+     */
+    private String sourceId;
+
+    /**
+     * 来源类型
+     */
+    private Integer sourceType;
+
+    /**
+     * 项目名称
+     */
+    private String name;
+
+    /**
+     * 项目描述
+     */
+    private String describe;
+
+    /**
+     * 用户ID
+     */
+    private String userId;
+
+    /**
+     * 项目类型
+     */
+    private Integer type;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 适用于哪个端 resi:居民端用户;gov:工作端用户;运营端用户:oper
+     */
+    private String client;
+
+    private String createdTime;
+
+    /**
+     * 是否填写问卷,true:是,false:否
+     */
+    private Boolean fillStatus;
+
+    /**
+     * 是否还能填写问卷,能:true,不能:false
+     */
+    private Boolean isFillQuestion;
+
+    /**
+     * 回收状态 0:未回收;1已回收
+     */
+    private Integer recycled;
+
+    /**
+     * 组织名
+     */
+    private String orgName;
+
+    private String createdBy;
+
+    @JsonIgnore
+    private Integer isEveryoneWriteOnceUid;
+
+    public TDuckListResultDTO() {
+        this.customerId = "";
+        this.key = "";
+        this.sourceId = "";
+        this.sourceType = NumConstant.ONE;
+        this.name = "";
+        this.describe = "";
+        this.userId = "";
+        this.type = NumConstant.ONE;
+        this.status = NumConstant.ONE;
+        this.client = "";
+        this.createdTime = "";
+        this.fillStatus = false;
+        this.isFillQuestion = true;
+        this.orgName = "";
+    }
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/CascaderExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/CascaderExpandStruct.java
new file mode 100644
index 0000000000..7961fdbf5d
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/CascaderExpandStruct.java
@@ -0,0 +1,50 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : smalljop
+ * @description : 级联选择
+ * @create : 2020-11-19 15:13
+ **/
+@Data
+public class CascaderExpandStruct {
+    /**
+     * 选项
+     */
+    private List options;
+
+    /**
+     * 塞选
+     */
+    private Boolean filterable;
+
+    /**
+     * 多选
+     */
+    private Boolean multiple;
+
+    /**
+     * 分割符
+     */
+    private String separator;
+
+    /**
+     * 显示全路径
+     */
+    private Boolean showAllLevels;
+
+    @Data
+    public static class Option {
+        public Integer id;
+        public String label;
+        public String value;
+        /**
+         * 莹姐加了这个参数
+         */
+        public String pid;
+        public List  children;
+    }
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/CheckboxExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/CheckboxExpandStruct.java
new file mode 100644
index 0000000000..09b4978f57
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/CheckboxExpandStruct.java
@@ -0,0 +1,45 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : smalljop
+ * @description : 颜色选择
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class CheckboxExpandStruct {
+    /**
+     * 最小
+     */
+    private Integer min;
+    /**
+     * 最大
+     */
+    private Integer max;
+
+    /**
+     * 选项类型
+     */
+    private String optionType;
+
+    /**
+     * 选项是按钮时大小
+     */
+    private String size;
+
+    /**
+     * 选项
+     */
+    private List  options;
+
+
+    @Data
+    public static class Option {
+        public String label;
+        public Integer value;
+    }
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ColorExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ColorExpandStruct.java
new file mode 100644
index 0000000000..42dc7d96b5
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ColorExpandStruct.java
@@ -0,0 +1,14 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 颜色选择
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class ColorExpandStruct {
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DateExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DateExpandStruct.java
new file mode 100644
index 0000000000..4ab27c65ab
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DateExpandStruct.java
@@ -0,0 +1,20 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 日期选择
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class DateExpandStruct {
+
+    // 日期类型
+    private String type;
+    // 日期格式
+    private String format;
+    // 日期格式
+    private String valueFormat;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DateRangeExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DateRangeExpandStruct.java
new file mode 100644
index 0000000000..e92ff2c35c
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DateRangeExpandStruct.java
@@ -0,0 +1,14 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 日期范围
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class DateRangeExpandStruct {
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DescTextExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DescTextExpandStruct.java
new file mode 100644
index 0000000000..28392247dd
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DescTextExpandStruct.java
@@ -0,0 +1,24 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+
+import lombok.Data;
+
+/**
+ * 文字描述组件属性
+ *
+ * @author smalljop
+ */
+@Data
+public class DescTextExpandStruct {
+    /**
+     * 颜色
+     */
+    private String color;
+
+    /**
+     * 文字位置
+     */
+    private String textAlign;
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DividerExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DividerExpandStruct.java
new file mode 100644
index 0000000000..7561201063
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/DividerExpandStruct.java
@@ -0,0 +1,15 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+
+import lombok.Data;
+
+/**
+ * 分割线组件属性
+ *
+ * @author smalljop
+ */
+@Data
+public class DividerExpandStruct {
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/EmptyExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/EmptyExpandStruct.java
new file mode 100644
index 0000000000..d192629832
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/EmptyExpandStruct.java
@@ -0,0 +1,10 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * 无扩展属性
+ */
+@Data
+public class EmptyExpandStruct {
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageCarouselExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageCarouselExpandStruct.java
new file mode 100644
index 0000000000..e6b2296f88
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageCarouselExpandStruct.java
@@ -0,0 +1,25 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : smalljop
+ * @description : 颜色选择
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class ImageCarouselExpandStruct {
+
+    /**
+     * 选项
+     */
+    private List  options;
+
+    public static class Option {
+        public String image;
+        public String label;
+    }
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageExpandStruct.java
new file mode 100644
index 0000000000..0048186f76
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageExpandStruct.java
@@ -0,0 +1,12 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+
+import lombok.Data;
+
+@Data
+public class ImageExpandStruct {
+    private String src;
+
+    private String alt;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageSelectExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageSelectExpandStruct.java
new file mode 100644
index 0000000000..014399fcac
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ImageSelectExpandStruct.java
@@ -0,0 +1,31 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : smalljop
+ * @description : 颜色选择
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class ImageSelectExpandStruct {
+
+    /**
+     * 选项
+     */
+    private List  options;
+
+    /**
+     * 是否多选
+     */
+    private Boolean multiple;
+
+    public static class Option {
+        public String image;
+        public String label;
+        public Integer value;
+    }
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/InputExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/InputExpandStruct.java
new file mode 100644
index 0000000000..ddece7ae8e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/InputExpandStruct.java
@@ -0,0 +1,36 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 输入框配置
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class InputExpandStruct {
+
+    /**
+     * 前缀
+     */
+    public String prepend;
+    /**
+     * 后缀
+     */
+    public String append;
+
+    /**
+     * 最大长度
+     */
+    private Long maxlength;
+
+    /**
+     * 前置图标
+     */
+    private String prefixIcon;
+
+    /**
+     * 显示可输入字数
+     */
+    private Boolean showWordLimit;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ItemDefaultValueStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ItemDefaultValueStruct.java
new file mode 100644
index 0000000000..f8ff73512c
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/ItemDefaultValueStruct.java
@@ -0,0 +1,21 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ItemDefaultValueStruct {
+    /**
+     * 值是否是Json
+     */
+    private boolean json;
+    /**
+     * 默认值具体值
+     */
+    private Object value;
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/NumberExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/NumberExpandStruct.java
new file mode 100644
index 0000000000..2dd6094a76
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/NumberExpandStruct.java
@@ -0,0 +1,38 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 数字型输入
+ * @create : 2020-11-19 15:13
+ **/
+@Data
+public class NumberExpandStruct {
+    /**
+     * 最小
+     */
+    private Integer min;
+    /**
+     * 最大
+     */
+    private Integer max;
+    /**
+     * 计数器步长 每次+几
+     */
+    private Integer step;
+    /**
+     * 是否只能输入 step 的倍数
+     */
+    private Boolean stepStrictly;
+
+    /**
+     * 经度
+     */
+    private Integer precision;
+
+    /**
+     * 按钮控制位置
+     */
+    private String controlsPosition;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/PaginationExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/PaginationExpandStruct.java
new file mode 100644
index 0000000000..e4c8567e06
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/PaginationExpandStruct.java
@@ -0,0 +1,13 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 分页组件属性
+ * @create :  2021/05/19 10:29
+ **/
+@Data
+public class PaginationExpandStruct {
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/RadioExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/RadioExpandStruct.java
new file mode 100644
index 0000000000..5a4455fd31
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/RadioExpandStruct.java
@@ -0,0 +1,31 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : smalljop
+ * @description : d
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class RadioExpandStruct {
+
+    /**
+     * 选项样式
+     */
+    private String optionType;
+
+
+    /**
+     * 选项
+     */
+    private List  options;
+
+    @Data
+    public static class Option {
+        public String label;
+        public Integer value;
+    }
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/RateExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/RateExpandStruct.java
new file mode 100644
index 0000000000..ab29b16895
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/RateExpandStruct.java
@@ -0,0 +1,35 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 评分
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class RateExpandStruct {
+
+    /**
+     * 最大分数
+     */
+    private Integer max;
+    /**
+     * 允许半选
+     */
+    private Boolean allowHalf;
+    /**
+     * 辅助文字
+     */
+    private Boolean showText;
+    /**
+     * 显示分数
+     */
+    private Boolean showScore;
+    /**
+     * 禁用
+     */
+    private Boolean disabled;
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SelectExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SelectExpandStruct.java
new file mode 100644
index 0000000000..0eaacde3b6
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SelectExpandStruct.java
@@ -0,0 +1,48 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : smalljop
+ * @description : 下拉框
+ * @create : 2020-11-19 15:13
+ **/
+@Data
+public class SelectExpandStruct {
+    /**
+     * 选项
+     */
+    private List  options;
+    /**
+     * 最大
+     */
+    private Boolean multiple;
+
+    /**
+     * 塞选
+     */
+    private Boolean filterable;
+    /**
+     * 是否只能输入 step 的倍数
+     */
+    private Boolean stepStrictly;
+
+    /**
+     * 经度
+     */
+    private Integer precision;
+
+    /**
+     * 按钮控制位置
+     */
+    private String controlsPosition;
+
+
+    @Data
+    public static class Option {
+        public String label;
+        public Integer value;
+    }
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SignPadExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SignPadExpandStruct.java
new file mode 100644
index 0000000000..1ef3b0244e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SignPadExpandStruct.java
@@ -0,0 +1,19 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+
+import lombok.Data;
+
+/**
+ * 手写签名组件属性
+ *
+ * @author smalljop
+ */
+@Data
+public class SignPadExpandStruct {
+    /**
+     * 颜色
+     */
+    private String color;
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SliderExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SliderExpandStruct.java
new file mode 100644
index 0000000000..007614250a
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SliderExpandStruct.java
@@ -0,0 +1,35 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 滑块
+ * @create : 2020-11-19 15:13
+ **/
+@Data
+public class SliderExpandStruct {
+    /**
+     * 最小
+     */
+    private Integer min;
+    /**
+     * 最大
+     */
+    private Integer max;
+    /**
+     * 计数器步长 每次+几
+     */
+    private Integer step;
+
+
+    /**
+     * 是否是范围选择
+     */
+    private Boolean range;
+
+    /**
+     * 按钮控制位置
+     */
+    private String controlsPosition;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SwitchExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SwitchExpandStruct.java
new file mode 100644
index 0000000000..af96d2e567
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/SwitchExpandStruct.java
@@ -0,0 +1,14 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 输入框配置
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class SwitchExpandStruct {
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TextareaExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TextareaExpandStruct.java
new file mode 100644
index 0000000000..828dc7b5f3
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TextareaExpandStruct.java
@@ -0,0 +1,27 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 多行文本
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class TextareaExpandStruct {
+
+    /**
+     * 最大行数
+     */
+    public Integer maxRows;
+    /**
+     * 最小行数
+     */
+    public Integer minRows;
+
+    /**
+     * 最大长度
+     */
+    private Long maxlength;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TimeExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TimeExpandStruct.java
new file mode 100644
index 0000000000..e505722dd0
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TimeExpandStruct.java
@@ -0,0 +1,14 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 时间选择
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class TimeExpandStruct {
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TimeRangeExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TimeRangeExpandStruct.java
new file mode 100644
index 0000000000..6ecd0a89c8
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/TimeRangeExpandStruct.java
@@ -0,0 +1,14 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 时间区间选择
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class TimeRangeExpandStruct {
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/UploadExpandStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/UploadExpandStruct.java
new file mode 100644
index 0000000000..28ede6b16b
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/UploadExpandStruct.java
@@ -0,0 +1,53 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+/**
+ * @author : smalljop
+ * @description : 上传文件
+ * @create : 2020-11-19 11:42
+ **/
+@Data
+public class UploadExpandStruct {
+
+
+    /**
+     * 按钮文字
+     */
+    private String buttonText;
+
+    /**
+     * 显示提示
+     */
+    private Boolean showTip;
+
+    /**
+     * 文件大小
+     */
+    private Long fileSize;
+
+    /**
+     * 大小单位
+     */
+    private String sizeUnit;
+
+    /**
+     * 显示列表类型
+     */
+    private String listType;
+
+
+    /**
+     * 文件数字
+     */
+    private Integer limit;
+
+    /**
+     * 是否可以多选
+     */
+    private boolean multiple;
+    /**
+     * 允许上传的文件类型
+     */
+    private String accept;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/UploadResultStruct.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/UploadResultStruct.java
new file mode 100644
index 0000000000..f45409966b
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmettduck/struct/UploadResultStruct.java
@@ -0,0 +1,22 @@
+package com.epmet.dataaggre.dto.epmettduck.struct;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : smalljop
+ * @description : 上传收集结果
+ * @create :  2021/06/07 16:37
+ **/
+@Data
+public class UploadResultStruct {
+
+    private List files;
+
+    @Data
+    public static class UploadFile {
+        private String fileName;
+        private String url;
+    }
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/CustomerStaffResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/CustomerStaffResultDTO.java
index b12ea53fec..a03406f0d0 100644
--- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/CustomerStaffResultDTO.java
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/CustomerStaffResultDTO.java
@@ -21,6 +21,11 @@ public class CustomerStaffResultDTO implements Serializable {
      */
     private String agencyId;
 
+    /**
+     * 工作人员所属组织ID的pids
+     */
+    private String agencyPIds;
+
     /**
      * 工作人员所属组织名称
      */
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/SubOrgFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/SubOrgFormDTO.java
index effc43d25c..dca75903ab 100644
--- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/SubOrgFormDTO.java
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/SubOrgFormDTO.java
@@ -15,6 +15,10 @@ public class SubOrgFormDTO implements Serializable {
     private static final long serialVersionUID = -3651225675593357002L;
     @NotBlank(message = "组织ID不能为空")
     private String agencyId;
+    /**
+     * 所属端 居民端resi,工作端gov
+     */
+    private String client;
     /**
      * 是否包括我(1 是,0 否)
      */
diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgTreeResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgTreeResultDTO.java
new file mode 100644
index 0000000000..b9b6c724cd
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgTreeResultDTO.java
@@ -0,0 +1,21 @@
+package com.epmet.dataaggre.dto.govorg.result;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author zhaoqifeng
+ * @Date 2021/9/16 16:50
+ */
+@Data
+public class OrgTreeResultDTO implements Serializable {
+    private static final long serialVersionUID = -4304356050545598564L;
+    private String orgId;
+    private String orgName;
+    private String orgType;
+    private String orgPids;
+    private List  subOrgList;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/pom.xml b/epmet-module/data-aggregator/data-aggregator-server/pom.xml
index 6fd3a89472..52f83c2963 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/pom.xml
+++ b/epmet-module/data-aggregator/data-aggregator-server/pom.xml
@@ -201,6 +201,13 @@
                 epmet_message_user 
                 EpmEt-db-UsEr 
 
+                
+                
+                    
+                 
+                epmet_tduck_user 
+                EpmEt-db-UsEr 
+
                 
                 0 
                 192.168.1.140 
@@ -308,6 +315,13 @@
                 epmet_message_user 
                 EpmEt-db-UsEr 
 
+                
+                
+                    
+                 
+                epmet_tduck_user 
+                EpmEt-db-UsEr 
+
                 
                 0 
                 192.168.1.140 
@@ -415,6 +429,13 @@
                 epmet 
                 elink@833066 
 
+                
+                
+                    
+                 
+                epmet 
+                elink@833066 
+
                 
                 0 
                 r-m5eoz5b6tkx09y6bpz.redis.rds.aliyuncs.com 
@@ -522,6 +543,13 @@
                 epmet_message_user 
                 EpmEt-db-UsEr 
 
+                
+                
+                    
+                 
+                epmet_tduck 
+                EpmEt-db-UsEr 
+
                 
                 0 
                 r-m5ez3n1j0qc3ykq2ut.redis.rds.aliyuncs.com 
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java
new file mode 100644
index 0000000000..101313d56c
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetTDuckController.java
@@ -0,0 +1,181 @@
+package com.epmet.dataaggre.controller;
+
+import com.epmet.commons.tools.annotation.LoginUser;
+import com.epmet.commons.tools.constant.AppClientConstant;
+import com.epmet.commons.tools.exception.EpmetErrorCode;
+import com.epmet.commons.tools.exception.ValidateException;
+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.epmettduck.PrPublishRangeDTO;
+import com.epmet.dataaggre.dto.epmettduck.form.*;
+import com.epmet.dataaggre.dto.epmettduck.result.*;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectEntity;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectItemEntity;
+import com.epmet.dataaggre.service.QuestionnaireService;
+import com.epmet.dataaggre.service.epmettduck.PrUserProjectItemService;
+import com.epmet.dataaggre.service.epmettduck.PrUserProjectService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
+/**
+ * @Author zxc
+ * @DateTime 2021/9/15 2:43 下午
+ * @DESC
+ */
+@RestController
+@RequestMapping("questionnaire")
+public class EpmetTDuckController {
+    @Autowired
+    private PrUserProjectService prUserProjectService;
+    @Autowired
+    private PrUserProjectItemService projectItemService;
+    @Autowired
+    private QuestionnaireService questionnaireService;
+
+
+    /**
+     * 问卷概要
+     *
+     * @param formDTO
+     * @return  com.epmet.commons.tools.utils.Result
+     * @author yinzuomei
+     * @date 2021/9/16 2:54 下午
+     */
+    @PostMapping("projectprofile")
+    public Result queryProjectProfile(@RequestBody ProjectKeyCommonDTO formDTO){
+        return new Result().ok(prUserProjectService.queryProjectProfile(formDTO.getProjectKey()));
+    }
+
+    /**
+     * @Description 问卷调查详情
+     * @Param formDTO
+     * @author zxc
+     * @date 2021/9/16 2:51 下午
+     */
+    @PostMapping("detail")
+    public Result> queryProjectItem(@RequestBody TDuckDetailFormDTO formDTO) {
+        ValidatorUtils.validateEntity(formDTO, TDuckDetailFormDTO.TDuckDetailForm.class);
+        return new Result>().ok(projectItemService.queryProjectItem(formDTO));
+    }
+    /**
+     * 分析报告
+     *
+     * @param formDTO
+     * @return  com.epmet.commons.tools.utils.Result
+     * @author yinzuomei
+     * @date 2021/9/16 5:56 下午
+     */
+    @PostMapping("analysisreport")
+    public Result> queryAnalysisReport(@RequestBody ProjectKeyCommonDTO formDTO){
+        ValidatorUtils.validateEntity(formDTO,ProjectKeyCommonDTO.AddUserInternalGroup.class);
+        return new Result>().ok(prUserProjectService.queryAnalysisReport(formDTO.getProjectKey()));
+    }
+
+    /**
+     * @Description  问卷调查列表
+     * @Param formDTO
+     * @author zxc
+     * @date 2021/9/18 10:29 上午
+     */
+    @PostMapping("list")
+    public Result> queryProjectList(@RequestBody TDuckListFormDTO formDTO,@LoginUser TokenDto tokenDto){
+        ValidatorUtils.validateEntity(formDTO,TDuckListFormDTO.TDuckListForm.class);
+        formDTO.setUserId(tokenDto.getUserId());
+        formDTO.setCustomerId(tokenDto.getCustomerId());
+        return new Result>().ok(prUserProjectService.queryProjectList(formDTO));
+    }
+
+    /**
+     * @Description  查询问卷调查的头部信息
+     * @Param formDTO
+     * @author zxc
+     * @date 2021/9/18 10:35 上午
+     */
+    @PostMapping("headerinfo")
+    public Result headerInfo(@RequestBody TDuckHeaderInfoFormDTO formDTO){
+        ValidatorUtils.validateEntity(formDTO, TDuckHeaderInfoFormDTO.TDuckHeaderInfoForm.class);
+        return new Result().ok(prUserProjectService.headerInfo(formDTO));
+    }
+
+    /**
+     * @Description 获取发布范围
+     * @Param formDTO
+     * @Return {@link Result< GetRangeResultDTO>}
+     * @Author zhaoqifeng
+     * @Date 2021/9/18 15:18
+     */
+    @PostMapping("getrange")
+    public Result getRange(@RequestBody PrPublishRangeDTO formDTO) {
+        return new Result().ok(prUserProjectService.getRange(formDTO.getProjectKey()));
+    }
+
+    /**
+     * 查看详情
+     * 1、联系人组件统一用一个统计显示多少条,点击查看更多显示汇总列表,如有非必填项没有填写显示空(手机号验证不需要统计)
+     * 2、单行文本、多行文本、时间选择、时间范围、日期选择、日期范围,统计填写人数,点击查看列表
+     *
+     * @param formDTO
+     * @return  com.epmet.commons.tools.utils.Result
+     * @author yinzuomei
+     * @date 2021/9/22 1:37 下午
+     */
+    @PostMapping("itemresdetail-list")
+    public Result> queryItemResDetail(@RequestBody ItemResDetailFormDTO formDTO){
+        ValidatorUtils.validateEntity(formDTO,ProjectKeyCommonDTO.AddUserInternalGroup.class);
+        return new Result>().ok(prUserProjectService.queryItemResDetail(formDTO));
+    }
+
+    /**
+     * 联系人组件-查看详情
+     *
+     * @param formDTO
+     * @return  com.epmet.commons.tools.utils.Result
+     * @author yinzuomei
+     * @date 2021/9/22 2:57 下午
+     */
+    @PostMapping("itemresdetail-concat")
+    public Result queryItemResDetailConcat(@RequestBody ProjectKeyCommonDTO formDTO){
+        ValidatorUtils.validateEntity(formDTO,ProjectKeyCommonDTO.AddUserInternalGroup.class);
+        return new Result().ok(prUserProjectService.queryItemResDetailConcat(formDTO));
+    }
+
+    @PostMapping("redpoint")
+    public Result redPoint(@LoginUser TokenDto tokenDto) {
+        return new Result().ok(prUserProjectService.redPoint(tokenDto));
+    }
+
+    /**
+     * @description 校验权限,并且获取accesskey
+     *
+     * @param input
+     * @return
+     * @author wxz
+     * @date 2021.09.23 15:13:53
+     */
+    @PostMapping("/permission-validate")
+    public Result permissionValidate(@RequestBody TDuckDetailFormDTO input, @LoginUser TokenDto loginUserInfo, @RequestHeader("customerId") String customerId) {
+        ValidatorUtils.validateEntity(input, TDuckDetailFormDTO.PermissionValidate.class);
+        // 所用端的类型:gov:工作端,resi居民端
+        String app = loginUserInfo.getApp();
+        String orgId = input.getOrgId();
+        String projectKey = input.getKey();
+        String userId = loginUserInfo.getUserId();
+
+        PermissionValidateResultDTO r = null;
+        if (AppClientConstant.APP_RESI.equals(app)) {
+            if (StringUtils.isBlank(orgId) || !"grid".equals(input.getOrgType())) {
+                // 居民端,orgId是网格id,必填
+                throw new ValidateException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode(), "【调查问卷】校验访问权限-居民端 orgId不能为空,且orgType需要为[grid]");
+            }
+            r = questionnaireService.resiPermissionValidate(projectKey, userId, orgId);
+        } else if (AppClientConstant.APP_GOV.equals(app)) {
+            // 工作端
+            r = questionnaireService.govPermissionValidate(projectKey, userId, customerId);
+        }
+
+        return new Result().ok(r);
+    }
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
index 561dff2acc..17f939b2c6 100644
--- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
@@ -165,4 +165,17 @@ public class GovOrgController {
         return new Result().ok(govOrgService.getSubOrg(formDTO));
     }
 
+    /**
+     * @Description 当前组织级下级组织树
+     * @Param tokenDto
+     * @Param formDTO
+     * @Return {@link Result< OrgTreeResultDTO>}
+     * @Author zhaoqifeng
+     * @Date 2021/9/17 14:02
+     */
+    @PostMapping("agencytree")
+    public Result> getAgencyTree(@LoginUser TokenDto tokenDto, @RequestBody SubOrgFormDTO formDTO) {
+        return new Result>().ok(govOrgService.getAgencyTree(tokenDto, formDTO));
+    }
+
 }
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/AcUserAuthorizeDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/AcUserAuthorizeDao.java
new file mode 100644
index 0000000000..e9ecd3404e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/AcUserAuthorizeDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.AcUserAuthorizeEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 第三方用户授权信息
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface AcUserAuthorizeDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/AcUserDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/AcUserDao.java
new file mode 100644
index 0000000000..80fc110012
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/AcUserDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.AcUserEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface AcUserDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateCategoryDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateCategoryDao.java
new file mode 100644
index 0000000000..4446abbd70
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateCategoryDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectTemplateCategoryEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目模板分类
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrProjectTemplateCategoryDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateDao.java
new file mode 100644
index 0000000000..570e6a224b
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectTemplateEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrProjectTemplateDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateItemDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateItemDao.java
new file mode 100644
index 0000000000..cf857e5eea
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectTemplateItemDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectTemplateItemEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrProjectTemplateItemDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectThemeDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectThemeDao.java
new file mode 100644
index 0000000000..bb2d70f35a
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrProjectThemeDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectThemeEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目主题外观模板
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrProjectThemeDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrPublishRangeDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrPublishRangeDao.java
new file mode 100644
index 0000000000..8c34b43604
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrPublishRangeDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrPublishRangeEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目发布范围表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrPublishRangeDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrResultExtDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrResultExtDao.java
new file mode 100644
index 0000000000..9fa0907418
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrResultExtDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrResultExtEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 问卷填写附属信息表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrResultExtDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectDao.java
new file mode 100644
index 0000000000..68f185ad89
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectDao.java
@@ -0,0 +1,77 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.dto.epmettduck.result.AnalysisReportResDTO;
+import com.epmet.dataaggre.dto.epmettduck.result.ProjectProfileResultDTO;
+import com.epmet.dataaggre.dto.epmettduck.result.TDuckListResultDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectEntity;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectResultEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrUserProjectDao extends BaseDao {
+    /**
+     * 问卷概要
+     *
+     * @param projectKey
+     * @return  com.epmet.dataaggre.dto.epmettduck.result.ProjectProfileResultDTO
+     * @author yinzuomei
+     * @date 2021/9/16 2:58 下午
+     */
+    ProjectProfileResultDTO queryProjectProfile(String projectKey);
+
+    /**
+     * 分析报告展示的题目列表
+     *
+     * @param projectKey
+     * @return  java.util.List
+     * @author yinzuomei
+     * @date 2021/9/16 5:59 下午
+     */
+    List selectItems(String projectKey);
+
+    /**
+     * 查询结果项
+     *
+     * @param projectKey
+     * @return  java.util.List
+     * @author yinzuomei
+     * @date 2021/9/16 6:18 下午
+     */
+    List selectResults(String projectKey);
+
+    /**
+     * @Description  查询范围内的问卷调查
+     * @Param orgId
+     * @author zxc
+     * @date 2021/9/17 2:16 下午
+     */
+    List selectProjectKey(@Param("orgIds")List orgIds);
+
+    /**
+     * @Description  根据keys查询project
+     * @Param keys
+     * @author zxc
+     * @date 2021/9/17 3:41 下午
+     */
+    List queryProjectList(@Param("keys")List keys, @Param("status")Integer status,@Param("client")String client);
+
+    /**
+     * 当前问卷中所有的联系人组件
+     *
+     * @param projectKey
+     * @return  java.util.List
+     * @author yinzuomei
+     * @date 2021/9/22 3:04 下午
+     */
+    List selectCocatItems(String projectKey);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectItemDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectItemDao.java
new file mode 100644
index 0000000000..c98c794092
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectItemDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectItemEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrUserProjectItemDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectLogicDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectLogicDao.java
new file mode 100644
index 0000000000..419f270dc9
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectLogicDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectLogicEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目逻辑
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrUserProjectLogicDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectResultDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectResultDao.java
new file mode 100644
index 0000000000..eac14a49b8
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectResultDao.java
@@ -0,0 +1,21 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectResultEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrUserProjectResultDao extends BaseDao {
+
+    List selectFillRecordByUserId(@Param("userId")String userId);
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectSettingDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectSettingDao.java
new file mode 100644
index 0000000000..02fe88207b
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectSettingDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectSettingEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrUserProjectSettingDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectThemeDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectThemeDao.java
new file mode 100644
index 0000000000..1344849bc6
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrUserProjectThemeDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectThemeEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrUserProjectThemeDao extends BaseDao {
+	
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrVistRecordDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrVistRecordDao.java
new file mode 100644
index 0000000000..5714df590e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/PrVistRecordDao.java
@@ -0,0 +1,21 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.PrVistRecordEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 用户访问问卷记录表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface PrVistRecordDao extends BaseDao {
+
+
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/WxMpUserDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/WxMpUserDao.java
new file mode 100644
index 0000000000..2894fd9c61
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmettduck/WxMpUserDao.java
@@ -0,0 +1,16 @@
+package com.epmet.dataaggre.dao.epmettduck;
+
+import com.epmet.commons.mybatis.dao.BaseDao;
+import com.epmet.dataaggre.entity.epmettduck.WxMpUserEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 微信公众号用户 
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Mapper
+public interface WxMpUserDao extends BaseDao {
+	
+}
\ 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 544f7387dd..bd29030255 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
@@ -18,10 +18,7 @@
 package com.epmet.dataaggre.dao.govorg;
 
 import com.epmet.commons.mybatis.dao.BaseDao;
-import com.epmet.dataaggre.dto.govorg.result.AgencyGridResultDTO;
-import com.epmet.dataaggre.dto.govorg.result.StaffAgencyGridListResultDTO;
-import com.epmet.dataaggre.dto.govorg.result.StaffOrgNameResultDTO;
-import com.epmet.dataaggre.dto.govorg.result.StaffOrgRelationResultDTO;
+import com.epmet.dataaggre.dto.govorg.result.*;
 import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -74,4 +71,31 @@ public interface CustomerAgencyDao extends BaseDao {
      * @return
      */
     StaffOrgRelationResultDTO getStaffFromOrgType(@Param("staffId") String staffId);
+    /**
+     * @Description 工作端组织级下级组织树
+     * @Param agencyId
+     * @Return {@link OrgTreeResultDTO}
+     * @Author zhaoqifeng
+     * @Date 2021/9/23 10:16
+     */
+    OrgTreeResultDTO getOrgTree(@Param("agencyId") String agencyId);
+    List getSubOrgList(@Param("pid") String pid);
+    /**
+     * @Description 居民端组织级下级组织树
+     * @Param agencyId
+     * @Return {@link OrgTreeResultDTO}
+     * @Author zhaoqifeng
+     * @Date 2021/9/23 10:16
+     */
+    OrgTreeResultDTO getResiOrgTree(@Param("agencyId") String agencyId);
+    List getResiSubOrgList(@Param("pid") String pid);
+
+    /**
+     * @Description 工作人员所在的组织,部门,网格
+     * @Param staffId
+     * @Return {@link List< String>}
+     * @Author zhaoqifeng
+     * @Date 2021/9/23 10:16
+     */
+    List getOrgList(@Param("staffId") String staffId);
 }
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/AcUserAuthorizeEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/AcUserAuthorizeEntity.java
new file mode 100644
index 0000000000..8573983676
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/AcUserAuthorizeEntity.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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 第三方用户授权信息
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("ac_user_authorize")
+public class AcUserAuthorizeEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 第三方平台类型
+     */
+	private Integer type;
+
+    /**
+     * 平台AppId
+     */
+	private String appId;
+
+    /**
+     * 平台OpenId
+     */
+	private String openId;
+
+    /**
+     * 平台用户名
+     */
+	private String userName;
+
+    /**
+     * 用户Id
+     */
+	private String userId;
+
+    /**
+     * 平台用户信息
+     */
+	private String userInfo;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/AcUserEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/AcUserEntity.java
new file mode 100644
index 0000000000..3b6f74e8ab
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/AcUserEntity.java
@@ -0,0 +1,97 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 用户
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("ac_user")
+public class AcUserEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 姓名
+     */
+	private String name;
+
+    /**
+     * 头像
+     */
+	private String avatar;
+
+    /**
+     * 性别0未知 1男2女
+     */
+	private Integer gender;
+
+    /**
+     * 邮箱
+     */
+	private String email;
+
+    /**
+     * 手机号
+     */
+	private String phoneNumber;
+
+    /**
+     * 密码
+     */
+	private String password;
+
+    /**
+     * 注册渠道
+     */
+	private String regChannel;
+
+    /**
+     * 最后登录渠道
+     */
+	private Integer lastLoginChannel;
+
+    /**
+     * 最后登录时间
+     */
+	private Date lastLoginTime;
+
+    /**
+     * 最后登录Ip
+     */
+	private String lastLoginIp;
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateCategoryEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateCategoryEntity.java
new file mode 100644
index 0000000000..c575a16456
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateCategoryEntity.java
@@ -0,0 +1,62 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目模板分类
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_project_template_category")
+public class PrProjectTemplateCategoryEntity extends BaseEpmetEntity{
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 主题名称
+     */
+	private String name;
+
+    /**
+     * 排序
+     */
+	private Integer sort;
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateEntity.java
new file mode 100644
index 0000000000..6d87744261
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateEntity.java
@@ -0,0 +1,87 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_project_template")
+public class PrProjectTemplateEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 模板唯一标识
+     */
+	private String key;
+
+    /**
+     * 封面图
+     */
+	private String coverImg;
+
+    /**
+     * 项目名称
+     */
+	private String name;
+
+    /**
+     * 项目描述
+     */
+	private String describe;
+
+    /**
+     * 喜欢数
+     */
+	private Integer likeCount;
+
+    /**
+     * 项目类型
+     */
+	private String categoryId;
+
+    /**
+     * 状态
+     */
+	private Integer status;
+
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateItemEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateItemEntity.java
new file mode 100644
index 0000000000..4b109d6df9
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectTemplateItemEntity.java
@@ -0,0 +1,116 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_project_template_item")
+public class PrProjectTemplateItemEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 表单项Id
+     */
+	private String formItemId;
+
+    /**
+     * 表单项类型 
+     */
+	private String type;
+
+    /**
+     * 表单项标题
+     */
+	private String label;
+
+    /**
+     * 是否显示标签
+     */
+	private Integer showLabel;
+
+    /**
+     * 表单项默认值
+     */
+	private String defaultValue;
+
+    /**
+     * 是否必填
+     */
+	private Integer required;
+
+    /**
+     * 输入型提示文字
+     */
+	private String placeholder;
+
+    /**
+     * 排序
+     */
+	private Long sort;
+
+    /**
+     * 栅格宽度
+     */
+	private Integer span;
+
+    /**
+     * 扩展字段 表单项独有字段
+     */
+	private String expand;
+
+    /**
+     * 正则表达式 
+     */
+	private String regList;
+
+    /**
+     * 展示类型组件
+     */
+	private Integer isDisplayType;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectThemeEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectThemeEntity.java
new file mode 100644
index 0000000000..b3790a9b43
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrProjectThemeEntity.java
@@ -0,0 +1,77 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目主题外观模板
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_project_theme")
+public class PrProjectThemeEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 主题名称
+     */
+	private String name;
+
+    /**
+     * 主题风格
+
+     */
+	private String style;
+
+    /**
+     * 头部图片
+     */
+	private String headImgUrl;
+
+    /**
+     * 颜色代码
+     */
+	private String color;
+
+    /**
+     * 按钮颜色
+     */
+	private String btnsColor;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrPublishRangeEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrPublishRangeEntity.java
new file mode 100644
index 0000000000..c69e65d3f1
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrPublishRangeEntity.java
@@ -0,0 +1,71 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目发布范围表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_publish_range")
+public class PrPublishRangeEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 范围组织ids,格式与组织维度一致 冒号隔开 即选中节点的全路径id
+     */
+	private String orgIds;
+
+    /**
+     * 最后发布组织的ID
+     */
+	private String orgId;
+
+    /**
+     * 最后发布组织的类型;department,agency;grid
+     */
+	private String orgType;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrResultExtEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrResultExtEntity.java
new file mode 100644
index 0000000000..00029fd51b
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrResultExtEntity.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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 问卷填写附属信息表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_result_ext")
+public class PrResultExtEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 姓名
+     */
+	private String userId;
+
+    /**
+     * 结果Id
+     */
+	private String resultId;
+
+    /**
+     * 工作端小程序:gov、居民端小程序:resi、运营端:oper、其他:other
+     */
+	private String userType;
+
+    /**
+     * 在哪个组织填写的
+     */
+	private String fromOrgId;
+
+    /**
+     * 组织:agency;部门:department;网格:grid
+     */
+	private String fromOrgType;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectEntity.java
new file mode 100644
index 0000000000..5d06a44213
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectEntity.java
@@ -0,0 +1,99 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_user_project")
+public class PrUserProjectEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户id
+     */
+	private String customerId;
+
+    /**
+     * 项目code
+     */
+    @TableField("`key`")
+	private String key;
+
+    /**
+     * 来源Id
+     */
+	private String sourceId;
+
+    /**
+     * 来源类型
+     */
+	private Integer sourceType;
+
+    /**
+     * 项目名称
+     */
+	private String name;
+
+    /**
+     * 项目描述
+     */
+    @TableField("`describe`")
+	private String describe;
+
+    /**
+     * 用户ID
+     */
+	private String userId;
+
+    /**
+     * 项目类型
+     */
+	private Integer type;
+
+    /**
+     * 状态
+     */
+	private Integer status;
+
+    /**
+     * 适用于哪个端 resi:居民端用户;gov:工作端用户;运营端用户:oper
+     */
+	private String client;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectItemEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectItemEntity.java
new file mode 100644
index 0000000000..e3ce844e69
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectItemEntity.java
@@ -0,0 +1,133 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import com.epmet.dataaggre.dto.epmettduck.ProjectItemTypeEnum;
+import com.epmet.dataaggre.dto.epmettduck.struct.ItemDefaultValueStruct;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import lombok.experimental.FieldNameConstants;
+import org.apache.ibatis.type.EnumTypeHandler;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@Accessors(chain = true)
+@TableName(value = "pr_user_project_item", autoResultMap = true)
+@FieldNameConstants
+public class PrUserProjectItemEntity extends BaseEpmetEntity{
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 表单项Id
+     */
+	private String formItemId;
+
+    /**
+     * 表单项类型 
+     */
+	@TableField(typeHandler = EnumTypeHandler.class)
+	private ProjectItemTypeEnum type;
+
+    /**
+     * 表单项标题
+     */
+	private String label;
+
+    /**
+     * 展示类型组件
+     */
+	@TableField("is_display_type")
+	private Integer displayType;
+
+    /**
+     * 是否显示标签
+     */
+	private Boolean showLabel;
+
+    /**
+     * 表单项默认值
+     */
+	@TableField(value = "default_value",typeHandler = JacksonTypeHandler.class)
+	private ItemDefaultValueStruct defaultValue;
+
+    /**
+     * 是否必填
+     */
+	private Boolean required;
+
+    /**
+     * 输入型提示文字
+     */
+	private String placeholder;
+
+    /**
+     * 排序
+     */
+	private Long sort;
+
+    /**
+     * 栅格宽度
+     */
+	private Integer span;
+
+    /**
+     * 扩展字段 表单项独有字段
+     */
+	@TableField(typeHandler = JacksonTypeHandler.class)
+	private Map expand;
+
+    /**
+     * 正则表达式 
+     */
+	@TableField(typeHandler = JacksonTypeHandler.class)
+	private List> regList;
+
+	/**
+	 * 组件类型:联系人组件:concat;输入型组件:input;图片型组件:image;辅助型组件:assist;选择性组件:choose
+	 */
+	private String moduleType;
+	/**
+	 * 与type一致,手机号:phone;邮箱:email;身份证号:idCard。。。。详见数据库
+	 */
+	private String itemKey;
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectLogicEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectLogicEntity.java
new file mode 100644
index 0000000000..7c565fed9e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectLogicEntity.java
@@ -0,0 +1,71 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目逻辑
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_user_project_logic")
+public class PrUserProjectLogicEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 逻辑Id
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 问题Id
+     */
+	private String formItemId;
+
+    /**
+     * 条件选项 
+     */
+	private Integer expression;
+
+    /**
+     * 条件列表
+     */
+	private String conditionList;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectResultEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectResultEntity.java
new file mode 100644
index 0000000000..9f46a03222
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectResultEntity.java
@@ -0,0 +1,116 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_user_project_result")
+public class PrUserProjectResultEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 序号
+     */
+	private Integer serialNumber;
+
+    /**
+     * 填写结果
+     */
+	private String originalData;
+
+    /**
+     * 填写结果
+     */
+	private String processData;
+
+    /**
+     * 提交ua
+     */
+	private String submitUa;
+
+    /**
+     * 提交系统
+     */
+	private String submitOs;
+
+    /**
+     * 提交浏览器
+     */
+	private String submitBrowser;
+
+    /**
+     * 请求ip
+     */
+	private String submitRequestIp;
+
+    /**
+     * 提交地址
+     */
+	private String submitAddress;
+
+    /**
+     * 完成时间 毫秒
+     */
+	private Integer completeTime;
+
+    /**
+     * 用户Id
+     */
+	private String userId;
+
+    /**
+     * 微信openId
+     */
+	private String wxOpenId;
+
+    /**
+     * 微信用户信息
+     */
+	private String wxUserInfo;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectSettingEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectSettingEntity.java
new file mode 100644
index 0000000000..d4b352e21b
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectSettingEntity.java
@@ -0,0 +1,161 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_user_project_setting")
+public class PrUserProjectSettingEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 提交提示图片
+     */
+	private String submitPromptImg;
+
+    /**
+     * 提交提示文字
+     */
+	private String submitPromptText;
+
+    /**
+     * 提交跳转连接
+     */
+	private String submitJumpUrl;
+
+    /**
+     * 公开提交结果
+     */
+	private Integer isPublicResult;
+
+    /**
+     * 只在微信填写
+     */
+	private Integer isWxWrite;
+
+    /**
+     * 
+     */
+	private Integer isWxWriteOnce;
+
+    /**
+     * 每人只能填写一次
+     */
+	private Integer isEveryoneWriteOnce;
+
+    /**
+     * 每人每天只能填写一次
+     */
+	private Integer isEveryoneDayWriteOnce;
+
+    /**
+     * 填写之后提示
+     */
+	private String writeOncePromptText;
+
+    /**
+     * 新反馈通知邮件
+     */
+	private String newWriteNotifyEmail;
+
+    /**
+     * 新反馈通知微信
+     */
+	private String newWriteNotifyWx;
+
+    /**
+     * 记录微信用户个人信息
+     */
+	private Integer isRecordWxUser;
+
+    /**
+     * 定时收集开始时间
+     */
+	private Date timedCollectionBeginTime;
+
+    /**
+     * 定时收集结束时间
+     */
+	private Date timedCollectionEndTime;
+
+    /**
+     * 定时未启动提示文字
+     */
+	private String timedNotEnabledPromptText;
+
+    /**
+     * 定时停用会提示文字
+     */
+	private String timedDeactivatePromptText;
+
+    /**
+     * 定时定量数量
+     */
+	private Integer timedQuantitativeQuantity;
+
+    /**
+     * 定时定量完成提示
+     */
+	private String timedEndPromptText;
+
+    /**
+     * 分享图片
+     */
+	private String shareImg;
+
+    /**
+     * 分享标题
+     */
+	private String shareTitle;
+
+    /**
+     * 分享描述
+     */
+	private String shareDesc;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectThemeEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectThemeEntity.java
new file mode 100644
index 0000000000..db6d6192a8
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrUserProjectThemeEntity.java
@@ -0,0 +1,101 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_user_project_theme")
+public class PrUserProjectThemeEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+    /**
+     * 主题Id
+     */
+	private String themeId;
+
+    /**
+     * 提交按钮文字
+     */
+	private String submitBtnText;
+
+    /**
+     * logo图片
+     */
+	private String logoImg;
+
+    /**
+     * logo位置
+     */
+	private String logoPosition;
+
+    /**
+     * 背景颜色
+     */
+	private String backgroundColor;
+
+    /**
+     * 背景图片
+     */
+	private String backgroundImg;
+
+    /**
+     * 是否显示标题
+     */
+	private Integer showTitle;
+
+    /**
+     * 是否显示描述语
+     */
+	private Integer showDescribe;
+
+    /**
+     * 显示序号
+     */
+	private Integer showNumber;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrVistRecordEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrVistRecordEntity.java
new file mode 100644
index 0000000000..00864276e1
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/PrVistRecordEntity.java
@@ -0,0 +1,66 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 用户访问问卷记录表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("pr_vist_record")
+public class PrVistRecordEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+	private String id;
+
+    /**
+     * 客户Id
+     */
+	private String customerId;
+
+    /**
+     * 姓名
+     */
+	private String userId;
+
+    /**
+     * 工作端小程序:gov、居民端小程序:resi、运营端:oper、其他:other
+     */
+	private String userType;
+
+    /**
+     * 项目key
+     */
+	private String projectKey;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/WxMpUserEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/WxMpUserEntity.java
new file mode 100644
index 0000000000..e51905536c
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmettduck/WxMpUserEntity.java
@@ -0,0 +1,101 @@
+/**
+ * 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.entity.epmettduck;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 微信公众号用户 
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("wx_mp_user")
+public class WxMpUserEntity extends BaseEpmetEntity {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+	private String id;
+
+    /**
+     * 公众号AppId
+     */
+	private String appid;
+
+    /**
+     * 昵称
+     */
+	private String nickname;
+
+    /**
+     * 性别
+     */
+	private Integer sex;
+
+    /**
+     * 头像
+     */
+	private String headImgUrl;
+
+    /**
+     * 
+     */
+	private String unionId;
+
+    /**
+     * 
+     */
+	private String openId;
+
+    /**
+     * 国家
+     */
+	private String country;
+
+    /**
+     * 省
+     */
+	private String province;
+
+    /**
+     * 城市
+     */
+	private String city;
+
+    /**
+     * 是否关注
+     */
+	private Integer isSubscribe;
+
+    /**
+     * 用户Id
+     */
+	private String userId;
+
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/QuestionnaireService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/QuestionnaireService.java
new file mode 100644
index 0000000000..c23f7f1245
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/QuestionnaireService.java
@@ -0,0 +1,9 @@
+package com.epmet.dataaggre.service;
+
+import com.epmet.dataaggre.dto.epmettduck.result.PermissionValidateResultDTO;
+
+public interface QuestionnaireService {
+    PermissionValidateResultDTO resiPermissionValidate(String projectKey, String userId, String gridId);
+
+    PermissionValidateResultDTO govPermissionValidate(String projectKey, String staffId, String customerId);
+}
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/AcUserAuthorizeService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/AcUserAuthorizeService.java
new file mode 100644
index 0000000000..84b2002e8a
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/AcUserAuthorizeService.java
@@ -0,0 +1,78 @@
+package com.epmet.dataaggre.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.AcUserAuthorizeDTO;
+import com.epmet.dataaggre.entity.epmettduck.AcUserAuthorizeEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 第三方用户授权信息
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface AcUserAuthorizeService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return AcUserAuthorizeDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    AcUserAuthorizeDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(AcUserAuthorizeDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(AcUserAuthorizeDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/AcUserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/AcUserService.java
new file mode 100644
index 0000000000..3ab7e664e9
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/AcUserService.java
@@ -0,0 +1,78 @@
+package com.epmet.dataaggre.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.AcUserDTO;
+import com.epmet.dataaggre.entity.epmettduck.AcUserEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface AcUserService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return AcUserDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    AcUserDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(AcUserDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(AcUserDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateCategoryService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateCategoryService.java
new file mode 100644
index 0000000000..360af280e9
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateCategoryService.java
@@ -0,0 +1,14 @@
+package com.epmet.dataaggre.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectTemplateCategoryEntity;
+
+/**
+ * 项目模板分类
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrProjectTemplateCategoryService {
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateItemService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateItemService.java
new file mode 100644
index 0000000000..26803febd3
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateItemService.java
@@ -0,0 +1,95 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrProjectTemplateItemDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectTemplateItemEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrProjectTemplateItemService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrProjectTemplateItemDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrProjectTemplateItemDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrProjectTemplateItemDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrProjectTemplateItemDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateService.java
new file mode 100644
index 0000000000..52b6f23deb
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectTemplateService.java
@@ -0,0 +1,95 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrProjectTemplateDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectTemplateEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrProjectTemplateService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrProjectTemplateDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrProjectTemplateDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrProjectTemplateDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrProjectTemplateDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectThemeService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectThemeService.java
new file mode 100644
index 0000000000..5144ceb67a
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrProjectThemeService.java
@@ -0,0 +1,95 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrProjectThemeDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectThemeEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目主题外观模板
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrProjectThemeService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrProjectThemeDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrProjectThemeDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrProjectThemeDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrProjectThemeDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrPublishRangeService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrPublishRangeService.java
new file mode 100644
index 0000000000..66a2dbb79e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrPublishRangeService.java
@@ -0,0 +1,123 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrPublishRangeDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrPublishRangeEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目发布范围表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrPublishRangeService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrPublishRangeDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrPublishRangeDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrPublishRangeDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrPublishRangeDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+
+    /**
+     * @Description 发布范围组织列表
+     * @Param projectKey
+     * @Return {@link List< String>}
+     * @Author zhaoqifeng
+     * @Date 2021/9/18 15:28
+     */
+    List getRangeOrgList(String projectKey);
+
+    /**
+     * @description 使用projectKey查询发布范围entity
+     *
+     * @param projectKey
+     * @return
+     * @author wxz
+     * @date 2021.09.23 23:04:23
+     */
+    List getPublishRangeEntity(String projectKey);
+
+    /**
+     * @Description 获取组织范围内的问卷
+     * @Param orgList
+     * @Return {@link List< PrPublishRangeDTO>}
+     * @Author zhaoqifeng
+     * @Date 2021/9/23 10:27
+     */
+    List getListByOrg(List orgList);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrResultExtService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrResultExtService.java
new file mode 100644
index 0000000000..98f7e0b713
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrResultExtService.java
@@ -0,0 +1,95 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrResultExtDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrResultExtEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 问卷填写附属信息表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrResultExtService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrResultExtDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrResultExtDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrResultExtDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrResultExtDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectItemService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectItemService.java
new file mode 100644
index 0000000000..74d1ddd332
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectItemService.java
@@ -0,0 +1,28 @@
+package com.epmet.dataaggre.service.epmettduck;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrUserProjectItemDTO;
+import com.epmet.dataaggre.dto.epmettduck.form.TDuckDetailFormDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectItemEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrUserProjectItemService extends IService {
+
+    /**
+     * @Description 问卷调查详情
+     * @Param formDTO
+     * @author zxc
+     * @date 2021/9/16 2:51 下午
+     */
+    List queryProjectItem(TDuckDetailFormDTO formDTO);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectLogicService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectLogicService.java
new file mode 100644
index 0000000000..5440d9a334
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectLogicService.java
@@ -0,0 +1,95 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrUserProjectLogicDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectLogicEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目逻辑
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrUserProjectLogicService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrUserProjectLogicDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrUserProjectLogicDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrUserProjectLogicDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrUserProjectLogicDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectResultService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectResultService.java
new file mode 100644
index 0000000000..aaa8a131e6
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectResultService.java
@@ -0,0 +1,95 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrUserProjectResultDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectResultEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrUserProjectResultService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrUserProjectResultDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrUserProjectResultDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrUserProjectResultDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrUserProjectResultDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectService.java
new file mode 100644
index 0000000000..93e437a043
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectService.java
@@ -0,0 +1,187 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.security.dto.TokenDto;
+import com.epmet.dataaggre.dto.epmettduck.PrUserProjectDTO;
+import com.epmet.dataaggre.dto.epmettduck.form.ItemResDetailFormDTO;
+import com.epmet.dataaggre.dto.epmettduck.form.ProjectKeyCommonDTO;
+import com.epmet.dataaggre.dto.epmettduck.form.TDuckHeaderInfoFormDTO;
+import com.epmet.dataaggre.dto.epmettduck.form.TDuckListFormDTO;
+import com.epmet.dataaggre.dto.epmettduck.result.*;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrUserProjectService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrUserProjectDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrUserProjectDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrUserProjectDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrUserProjectDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+
+    /**
+     * 问卷概要
+     *
+     * @param projectKey
+     * @return  com.epmet.dataaggre.dto.epmettduck.result.ProjectProfileResultDTO
+     * @author yinzuomei
+     * @date 2021/9/16 2:54 下午
+     */
+    ProjectProfileResultDTO queryProjectProfile(String projectKey);
+
+    /**
+     * @Description  问卷调查列表
+     * @Param formDTO
+     * @author zxc
+     * @date 2021/9/18 10:29 上午
+     */
+    List queryProjectList(TDuckListFormDTO formDTO);
+
+    /**
+     * 分析报告
+     *
+     * @param projectKey
+     * @return  com.epmet.dataaggre.dto.epmettduck.result.AnalysisReportResDTO
+     * @author yinzuomei
+     * @date 2021/9/16 5:57 下午
+     */
+    List queryAnalysisReport(String projectKey);
+
+    /**
+     * @Description  查询问卷调查的头部信息
+     * @Param formDTO
+     * @author zxc
+     * @date 2021/9/18 10:35 上午
+     */
+    PrUserProjectEntity headerInfo(TDuckHeaderInfoFormDTO formDTO);
+
+    /**
+     * @Description 获取发布范围
+     * @Param projectKey
+     * @Return {@link GetRangeResultDTO}
+     * @Author zhaoqifeng
+     * @Date 2021/9/18 15:18
+     */
+    GetRangeResultDTO getRange(String projectKey);
+
+    /**
+     * 查看详情
+     * 1、联系人组件统一用一个统计显示多少条,点击查看更多显示汇总列表,如有非必填项没有填写显示空(手机号验证不需要统计)
+     * 2、单行文本、多行文本、时间选择、时间范围、日期选择、日期范围,统计填写人数,点击查看列表
+     *
+     * @param formDTO
+     * @return  com.epmet.commons.tools.utils.Result
+     * @author yinzuomei
+     * @date 2021/9/22 1:37 下午
+     */
+    List queryItemResDetail(ItemResDetailFormDTO formDTO);
+
+    /**
+     * 联系人组件
+     *
+     * @param formDTO
+     * @return  com.epmet.dataaggre.dto.epmettduck.result.ItemResDetailConcatResultDTO
+     * @author yinzuomei
+     * @date 2021/9/22 2:57 下午
+     */
+    ItemResDetailConcatResultDTO queryItemResDetailConcat(ProjectKeyCommonDTO formDTO);
+
+    /**
+     * 有新的问卷显示小红点
+     * @Param tokenDto
+     * @Return {@link RedPointResultDTO}
+     * @Author zhaoqifeng
+     * @Date 2021/9/23 10:05
+     */
+    RedPointResultDTO redPoint(TokenDto tokenDto);
+
+    /**
+     * @description 根据key查询问卷
+     *
+     * @param key
+     * @return
+     * @author wxz
+     * @date 2021.09.23 22:25:57
+     */
+    PrUserProjectEntity getProjectEntityBykey(String key);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectSettingService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectSettingService.java
new file mode 100644
index 0000000000..67111d9eb4
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectSettingService.java
@@ -0,0 +1,78 @@
+package com.epmet.dataaggre.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrUserProjectSettingDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectSettingEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrUserProjectSettingService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrUserProjectSettingDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrUserProjectSettingDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrUserProjectSettingDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrUserProjectSettingDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectThemeService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectThemeService.java
new file mode 100644
index 0000000000..48fc3f1d63
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrUserProjectThemeService.java
@@ -0,0 +1,95 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrUserProjectThemeDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrUserProjectThemeEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrUserProjectThemeService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrUserProjectThemeDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrUserProjectThemeDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrUserProjectThemeDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrUserProjectThemeDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrVistRecordService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrVistRecordService.java
new file mode 100644
index 0000000000..691e4cdc95
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/PrVistRecordService.java
@@ -0,0 +1,104 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.PrVistRecordDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrVistRecordEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户访问问卷记录表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface PrVistRecordService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return PrVistRecordDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    PrVistRecordDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(PrVistRecordDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(PrVistRecordDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+
+    /**
+     * @Description 获取最新访问记录
+     * @Param staffId
+     * @Return {@link PrVistRecordDTO}
+     * @Author zhaoqifeng
+     * @Date 2021/9/23 14:16
+     */
+    PrVistRecordDTO getNewestRecord(String staffId);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/WxMpUserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/WxMpUserService.java
new file mode 100644
index 0000000000..b65983748c
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/WxMpUserService.java
@@ -0,0 +1,95 @@
+/**
+ * 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.service.epmettduck;
+
+import com.epmet.commons.mybatis.service.BaseService;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.dataaggre.dto.epmettduck.WxMpUserDTO;
+import com.epmet.dataaggre.entity.epmettduck.WxMpUserEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 微信公众号用户 
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+public interface WxMpUserService extends BaseService {
+
+    /**
+     * 默认分页
+     *
+     * @param params
+     * @return PageData
+     * @author generator
+     * @date 2021-09-15
+     */
+    PageData page(Map params);
+
+    /**
+     * 默认查询
+     *
+     * @param params
+     * @return java.util.List
+     * @author generator
+     * @date 2021-09-15
+     */
+    List list(Map params);
+
+    /**
+     * 单条查询
+     *
+     * @param id
+     * @return WxMpUserDTO
+     * @author generator
+     * @date 2021-09-15
+     */
+    WxMpUserDTO get(String id);
+
+    /**
+     * 默认保存
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void save(WxMpUserDTO dto);
+
+    /**
+     * 默认更新
+     *
+     * @param dto
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void update(WxMpUserDTO dto);
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return void
+     * @author generator
+     * @date 2021-09-15
+     */
+    void delete(String[] ids);
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/AcUserAuthorizeServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/AcUserAuthorizeServiceImpl.java
new file mode 100644
index 0000000000..2887bd8ecf
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/AcUserAuthorizeServiceImpl.java
@@ -0,0 +1,104 @@
+/**
+ * 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.service.epmettduck.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.epmet.commons.dynamic.datasource.annotation.DataSource;
+import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import com.epmet.dataaggre.constant.DataSourceConstant;
+import com.epmet.dataaggre.dao.epmettduck.AcUserAuthorizeDao;
+import com.epmet.dataaggre.dto.epmettduck.AcUserAuthorizeDTO;
+import com.epmet.dataaggre.entity.epmettduck.AcUserAuthorizeEntity;
+import com.epmet.dataaggre.service.epmettduck.AcUserAuthorizeService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 第三方用户授权信息
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Slf4j
+@DataSource(DataSourceConstant.EPMETTDUCK)
+@Service
+public class AcUserAuthorizeServiceImpl extends BaseServiceImpl implements AcUserAuthorizeService {
+
+    @Override
+    public PageData page(Map params) {
+        IPage page = baseDao.selectPage(
+                getPage(params, FieldConstant.CREATED_TIME, false),
+                getWrapper(params)
+        );
+        return getPageData(page, AcUserAuthorizeDTO.class);
+    }
+
+    @Override
+    public List list(Map params) {
+        List entityList = baseDao.selectList(getWrapper(params));
+
+        return ConvertUtils.sourceToTarget(entityList, AcUserAuthorizeDTO.class);
+    }
+
+    private QueryWrapper getWrapper(Map params){
+        String id = (String)params.get(FieldConstant.ID_HUMP);
+
+        QueryWrapper wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
+
+        return wrapper;
+    }
+
+    @Override
+    public AcUserAuthorizeDTO get(String id) {
+        AcUserAuthorizeEntity entity = baseDao.selectById(id);
+        return ConvertUtils.sourceToTarget(entity, AcUserAuthorizeDTO.class);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(AcUserAuthorizeDTO dto) {
+        AcUserAuthorizeEntity entity = ConvertUtils.sourceToTarget(dto, AcUserAuthorizeEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(AcUserAuthorizeDTO dto) {
+        AcUserAuthorizeEntity entity = ConvertUtils.sourceToTarget(dto, AcUserAuthorizeEntity.class);
+        updateById(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(String[] ids) {
+        // 逻辑删除(@TableLogic 注解)
+        baseDao.deleteBatchIds(Arrays.asList(ids));
+    }
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/AcUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/AcUserServiceImpl.java
new file mode 100644
index 0000000000..c53ce7da8e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/AcUserServiceImpl.java
@@ -0,0 +1,104 @@
+/**
+ * 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.service.epmettduck.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.epmet.commons.dynamic.datasource.annotation.DataSource;
+import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import com.epmet.dataaggre.constant.DataSourceConstant;
+import com.epmet.dataaggre.dao.epmettduck.AcUserDao;
+import com.epmet.dataaggre.dto.epmettduck.AcUserDTO;
+import com.epmet.dataaggre.entity.epmettduck.AcUserEntity;
+import com.epmet.dataaggre.service.epmettduck.AcUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Slf4j
+@DataSource(DataSourceConstant.EPMETTDUCK)
+@Service
+public class AcUserServiceImpl extends BaseServiceImpl implements AcUserService {
+
+    @Override
+    public PageData page(Map params) {
+        IPage page = baseDao.selectPage(
+                getPage(params, FieldConstant.CREATED_TIME, false),
+                getWrapper(params)
+        );
+        return getPageData(page, AcUserDTO.class);
+    }
+
+    @Override
+    public List list(Map params) {
+        List entityList = baseDao.selectList(getWrapper(params));
+
+        return ConvertUtils.sourceToTarget(entityList, AcUserDTO.class);
+    }
+
+    private QueryWrapper getWrapper(Map params){
+        String id = (String)params.get(FieldConstant.ID_HUMP);
+
+        QueryWrapper wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
+
+        return wrapper;
+    }
+
+    @Override
+    public AcUserDTO get(String id) {
+        AcUserEntity entity = baseDao.selectById(id);
+        return ConvertUtils.sourceToTarget(entity, AcUserDTO.class);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(AcUserDTO dto) {
+        AcUserEntity entity = ConvertUtils.sourceToTarget(dto, AcUserEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(AcUserDTO dto) {
+        AcUserEntity entity = ConvertUtils.sourceToTarget(dto, AcUserEntity.class);
+        updateById(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(String[] ids) {
+        // 逻辑删除(@TableLogic 注解)
+        baseDao.deleteBatchIds(Arrays.asList(ids));
+    }
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateCategoryServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateCategoryServiceImpl.java
new file mode 100644
index 0000000000..bf82320282
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateCategoryServiceImpl.java
@@ -0,0 +1,37 @@
+/**
+ * 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.service.epmettduck.impl;
+
+import com.epmet.commons.dynamic.datasource.annotation.DataSource;
+import com.epmet.dataaggre.constant.DataSourceConstant;
+import com.epmet.dataaggre.service.epmettduck.PrProjectTemplateCategoryService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 项目模板分类
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Slf4j
+@DataSource(DataSourceConstant.EPMETTDUCK)
+@Service
+public class PrProjectTemplateCategoryServiceImpl implements PrProjectTemplateCategoryService {
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateItemServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateItemServiceImpl.java
new file mode 100644
index 0000000000..a903234d27
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateItemServiceImpl.java
@@ -0,0 +1,104 @@
+/**
+ * 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.service.epmettduck.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.epmet.commons.dynamic.datasource.annotation.DataSource;
+import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import com.epmet.dataaggre.constant.DataSourceConstant;
+import com.epmet.dataaggre.dao.epmettduck.PrProjectTemplateItemDao;
+import com.epmet.dataaggre.dto.epmettduck.PrProjectTemplateItemDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectTemplateItemEntity;
+import com.epmet.dataaggre.service.epmettduck.PrProjectTemplateItemService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表单项
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Slf4j
+@DataSource(DataSourceConstant.EPMETTDUCK)
+@Service
+public class PrProjectTemplateItemServiceImpl extends BaseServiceImpl implements PrProjectTemplateItemService {
+
+    @Override
+    public PageData page(Map params) {
+        IPage page = baseDao.selectPage(
+                getPage(params, FieldConstant.CREATED_TIME, false),
+                getWrapper(params)
+        );
+        return getPageData(page, PrProjectTemplateItemDTO.class);
+    }
+
+    @Override
+    public List list(Map params) {
+        List entityList = baseDao.selectList(getWrapper(params));
+
+        return ConvertUtils.sourceToTarget(entityList, PrProjectTemplateItemDTO.class);
+    }
+
+    private QueryWrapper getWrapper(Map params){
+        String id = (String)params.get(FieldConstant.ID_HUMP);
+
+        QueryWrapper wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
+
+        return wrapper;
+    }
+
+    @Override
+    public PrProjectTemplateItemDTO get(String id) {
+        PrProjectTemplateItemEntity entity = baseDao.selectById(id);
+        return ConvertUtils.sourceToTarget(entity, PrProjectTemplateItemDTO.class);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(PrProjectTemplateItemDTO dto) {
+        PrProjectTemplateItemEntity entity = ConvertUtils.sourceToTarget(dto, PrProjectTemplateItemEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(PrProjectTemplateItemDTO dto) {
+        PrProjectTemplateItemEntity entity = ConvertUtils.sourceToTarget(dto, PrProjectTemplateItemEntity.class);
+        updateById(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(String[] ids) {
+        // 逻辑删除(@TableLogic 注解)
+        baseDao.deleteBatchIds(Arrays.asList(ids));
+    }
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateServiceImpl.java
new file mode 100644
index 0000000000..29eabe1520
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectTemplateServiceImpl.java
@@ -0,0 +1,104 @@
+/**
+ * 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.service.epmettduck.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.epmet.commons.dynamic.datasource.annotation.DataSource;
+import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import com.epmet.dataaggre.constant.DataSourceConstant;
+import com.epmet.dataaggre.dao.epmettduck.PrProjectTemplateDao;
+import com.epmet.dataaggre.dto.epmettduck.PrProjectTemplateDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectTemplateEntity;
+import com.epmet.dataaggre.service.epmettduck.PrProjectTemplateService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Slf4j
+@DataSource(DataSourceConstant.EPMETTDUCK)
+@Service
+public class PrProjectTemplateServiceImpl extends BaseServiceImpl implements PrProjectTemplateService {
+
+    @Override
+    public PageData page(Map params) {
+        IPage page = baseDao.selectPage(
+                getPage(params, FieldConstant.CREATED_TIME, false),
+                getWrapper(params)
+        );
+        return getPageData(page, PrProjectTemplateDTO.class);
+    }
+
+    @Override
+    public List list(Map params) {
+        List entityList = baseDao.selectList(getWrapper(params));
+
+        return ConvertUtils.sourceToTarget(entityList, PrProjectTemplateDTO.class);
+    }
+
+    private QueryWrapper getWrapper(Map params){
+        String id = (String)params.get(FieldConstant.ID_HUMP);
+
+        QueryWrapper wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
+
+        return wrapper;
+    }
+
+    @Override
+    public PrProjectTemplateDTO get(String id) {
+        PrProjectTemplateEntity entity = baseDao.selectById(id);
+        return ConvertUtils.sourceToTarget(entity, PrProjectTemplateDTO.class);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(PrProjectTemplateDTO dto) {
+        PrProjectTemplateEntity entity = ConvertUtils.sourceToTarget(dto, PrProjectTemplateEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(PrProjectTemplateDTO dto) {
+        PrProjectTemplateEntity entity = ConvertUtils.sourceToTarget(dto, PrProjectTemplateEntity.class);
+        updateById(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(String[] ids) {
+        // 逻辑删除(@TableLogic 注解)
+        baseDao.deleteBatchIds(Arrays.asList(ids));
+    }
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectThemeServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectThemeServiceImpl.java
new file mode 100644
index 0000000000..07345640c1
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrProjectThemeServiceImpl.java
@@ -0,0 +1,104 @@
+/**
+ * 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.service.epmettduck.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.epmet.commons.dynamic.datasource.annotation.DataSource;
+import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import com.epmet.dataaggre.constant.DataSourceConstant;
+import com.epmet.dataaggre.dao.epmettduck.PrProjectThemeDao;
+import com.epmet.dataaggre.dto.epmettduck.PrProjectThemeDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrProjectThemeEntity;
+import com.epmet.dataaggre.service.epmettduck.PrProjectThemeService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目主题外观模板
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Slf4j
+@DataSource(DataSourceConstant.EPMETTDUCK)
+@Service
+public class PrProjectThemeServiceImpl extends BaseServiceImpl implements PrProjectThemeService {
+
+    @Override
+    public PageData page(Map params) {
+        IPage page = baseDao.selectPage(
+                getPage(params, FieldConstant.CREATED_TIME, false),
+                getWrapper(params)
+        );
+        return getPageData(page, PrProjectThemeDTO.class);
+    }
+
+    @Override
+    public List list(Map params) {
+        List entityList = baseDao.selectList(getWrapper(params));
+
+        return ConvertUtils.sourceToTarget(entityList, PrProjectThemeDTO.class);
+    }
+
+    private QueryWrapper getWrapper(Map params){
+        String id = (String)params.get(FieldConstant.ID_HUMP);
+
+        QueryWrapper wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
+
+        return wrapper;
+    }
+
+    @Override
+    public PrProjectThemeDTO get(String id) {
+        PrProjectThemeEntity entity = baseDao.selectById(id);
+        return ConvertUtils.sourceToTarget(entity, PrProjectThemeDTO.class);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void save(PrProjectThemeDTO dto) {
+        PrProjectThemeEntity entity = ConvertUtils.sourceToTarget(dto, PrProjectThemeEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(PrProjectThemeDTO dto) {
+        PrProjectThemeEntity entity = ConvertUtils.sourceToTarget(dto, PrProjectThemeEntity.class);
+        updateById(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(String[] ids) {
+        // 逻辑删除(@TableLogic 注解)
+        baseDao.deleteBatchIds(Arrays.asList(ids));
+    }
+
+}
\ No newline at end of file
diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrPublishRangeServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrPublishRangeServiceImpl.java
new file mode 100644
index 0000000000..6865f8764e
--- /dev/null
+++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmettduck/impl/PrPublishRangeServiceImpl.java
@@ -0,0 +1,160 @@
+/**
+ * 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.service.epmettduck.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.epmet.commons.dynamic.datasource.annotation.DataSource;
+import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.FieldConstant;
+import com.epmet.commons.tools.constant.NumConstant;
+import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.utils.ConvertUtils;
+import com.epmet.dataaggre.constant.DataSourceConstant;
+import com.epmet.dataaggre.dao.epmettduck.PrPublishRangeDao;
+import com.epmet.dataaggre.dto.epmettduck.PrPublishRangeDTO;
+import com.epmet.dataaggre.entity.epmettduck.PrPublishRangeEntity;
+import com.epmet.dataaggre.service.epmettduck.PrPublishRangeService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 项目发布范围表
+ *
+ * @author generator generator@elink-cn.com
+ * @since v1.0.0 2021-09-15
+ */
+@Slf4j
+@DataSource(DataSourceConstant.EPMETTDUCK)
+@Service
+public class PrPublishRangeServiceImpl extends BaseServiceImpl implements PrPublishRangeService {
+
+    @Override
+    public PageData page(Map params) {
+        IPage page = baseDao.selectPage(
+                getPage(params, FieldConstant.CREATED_TIME, false),
+                getWrapper(params)
+        );
+        return getPageData(page, PrPublishRangeDTO.class);
+    }
+
+    @Override
+    public List list(Map params) {
+        List entityList = baseDao.selectList(getWrapper(params));
+
+        return ConvertUtils.sourceToTarget(entityList, PrPublishRangeDTO.class);
+    }
+
+    private QueryWrapper getWrapper(Map params){
+        String id = (String)params.get(FieldConstant.ID_HUMP);
+
+        QueryWrapper