From f14b28653fd815157dd22e6b49eff527e485f12c Mon Sep 17 00:00:00 2001
From: luoyuanqiao <2376770955@qq.com>
Date: 星期一, 28 二月 2022 17:16:30 +0800
Subject: [PATCH] 党建接口开发

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComDataStatisticsMemberExcelVo.java    |   74 ++++
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbMemberDAO.java                     |    8 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComPbMemberRoleExcelListen.java                               |  195 ++++++++++++
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbMemberRoleErrorExcelVo.java       |   43 ++
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/mapper/ComPbMemberMapper.xml                                          |  208 +++++++++----
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbMemberRoleExcelVo.java            |   40 ++
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java                   |   23 +
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/ComPbCheckUnitController.java           |    7 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/ComPbMemberRoleTypeEnum.java                                   |   39 ++
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbCheckUnitService.java          |    7 
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java    |  154 ++++++++-
 springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java         |   62 +++
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbMemberService.java             |   17 +
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComActDiscussDTO.java                           |    3 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java                      |   19 +
 springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbCheckUnitServiceImpl.java |    8 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbCheckUnitErrorExcelVO.java        |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/Constants.java                                             |    2 
 18 files changed, 827 insertions(+), 84 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/Constants.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/Constants.java
index c5e4021..29273dd 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/Constants.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/Constants.java
@@ -192,6 +192,8 @@
 
     public static final String PB_CHECK_UNIT_ERROR_LIST = "PB_CHECK_UNIT_ERROR_LIST_";
 
+    public static final String PB_MEMBER_ROLE_ERROR_LIST = "PB_MEMBER_ROLE_ERROR_LIST_";
+
     public static final String CLUSTER_MEMBER_DEFAULT_IMAGE_URL = "https://www.psciio.com/files/4822602b68af48bcbbea7842aa463227/a6a7882b3fd24d60ac6809fef42d879d.png";
 
     /**
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/ComPbMemberRoleTypeEnum.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/ComPbMemberRoleTypeEnum.java
new file mode 100644
index 0000000..a1e95b7
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/ComPbMemberRoleTypeEnum.java
@@ -0,0 +1,39 @@
+package com.panzhihua.common.enums;
+
+import lombok.Getter;
+
+/**
+ * @author lyq
+ * 党委标签枚举
+ */
+@Getter
+public enum ComPbMemberRoleTypeEnum {
+
+    SQDW(1, "社区党委"), CYDWWY(2, "区域党委委员");
+
+    private final Integer code;
+    private final String name;
+
+    ComPbMemberRoleTypeEnum(Integer code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public static int getCodeByName(String name) {
+        for (ComPbMemberRoleTypeEnum item : ComPbMemberRoleTypeEnum.values()) {
+            if (item.name.equals(name)) {
+                return item.getCode();
+            }
+        }
+        return 0;
+    }
+
+    public static String getCnDescByName(Integer code) {
+        for (ComPbMemberRoleTypeEnum item : ComPbMemberRoleTypeEnum.values()) {
+            if (item.code.equals(code)) {
+                return item.getName();
+            }
+        }
+        return "";
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComPbMemberRoleExcelListen.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComPbMemberRoleExcelListen.java
new file mode 100644
index 0000000..ac50991
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComPbMemberRoleExcelListen.java
@@ -0,0 +1,195 @@
+package com.panzhihua.common.listen;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSONArray;
+import com.google.common.collect.Lists;
+import com.panzhihua.common.constants.Constants;
+import com.panzhihua.common.exceptions.ServiceException;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbCheckUnitErrorExcelVO;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbCheckUnitExcelVO;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleErrorExcelVo;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleExcelVo;
+import com.panzhihua.common.service.partybuilding.ComPbCheckUnitFeign;
+import com.panzhihua.common.service.partybuilding.PartyBuildingService;
+import com.panzhihua.common.utlis.ListUtils;
+import com.panzhihua.common.utlis.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * title: 社区党委导入监听
+ * @author : lyq
+ */
+@Slf4j
+public class ComPbMemberRoleExcelListen extends AnalysisEventListener<Map<Integer, String>> {
+    /**
+     * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
+     */
+    private static final int BATCH_COUNT = 3000;
+    private static int headSize = 0;
+    List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>();
+    private PartyBuildingService partyBuildingService;;
+    private Long communityId;
+    private Long userId;
+    private Map<Integer, String> headData;
+    private StringRedisTemplate stringRedisTemplate;
+
+    public ComPbMemberRoleExcelListen(PartyBuildingService partyBuildingService, Long communityId, Long userId,
+                                      StringRedisTemplate stringRedisTemplate) {
+        this.partyBuildingService = partyBuildingService;
+        this.communityId = communityId;
+        this.userId = userId;
+        this.stringRedisTemplate = stringRedisTemplate;
+    }
+
+    @Override
+    public void invoke(Map<Integer, String> data, AnalysisContext context) {
+        list.add(data);
+        if (list.size() >= BATCH_COUNT) {
+            saveData();
+            list.clear();
+        }
+    }
+
+    /**
+     * 这里会一行行的返回头
+     *
+     * @param headMap
+     * @param context
+     */
+    @Override
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+        headSize = headMap.size();
+        headData = headMap;
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        saveData();
+        log.info("所有数据解析完成!");
+    }
+
+    /**
+     * 不是固定的列只能手动处理
+     */
+    private void saveData() {
+        log.info("表格总数据:" + list.size());
+        if (list.size() == 0) {
+            throw new ServiceException("000", "导入数据为空!");
+        }
+        ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
+        String key = Constants.PB_MEMBER_ROLE_ERROR_LIST + communityId;
+        int index = 2;
+        try {
+            ArrayList<ComPbMemberRoleExcelVo> voList = Lists.newArrayList();
+            ArrayList<ComPbMemberRoleErrorExcelVo> mistakes = Lists.newArrayList();
+            for (Map<Integer, String> oneData : list) {
+                ComPbMemberRoleExcelVo vo = new ComPbMemberRoleExcelVo();
+
+                if (StringUtils.isEmpty(oneData.get(0))) {
+                    index++;
+                    mistakes.add(setErrorObject(oneData,"党员姓名不可为空,请填写党员姓名"));
+                    continue;
+                }else{
+                    //判断导入的名字的长度是否超过30
+                    if(oneData.get(0).length() > 10){
+                        index++;
+                        mistakes.add(setErrorObject(oneData,"党员姓名长度不可超过10,请重新填写党员姓名"));
+                        continue;
+                    }
+                }
+                vo.setName(oneData.get(0));
+                if (StringUtils.isEmpty(oneData.get(1))) {
+                    index++;
+                    mistakes.add(setErrorObject(oneData,"身份证号不可为空,请填写身份证号"));
+                    continue;
+                }
+                vo.setIdCard(oneData.get(1));
+
+                if (StringUtils.isEmpty(oneData.get(2))) {
+                    index++;
+                    mistakes.add(setErrorObject(oneData,"手机号不可为空,请填写手机号"));
+                    continue;
+                }
+                vo.setPhone(oneData.get(2));
+
+                if (StringUtils.isNotEmpty(oneData.get(3))) {
+                    vo.setTypeName(oneData.get(3));
+                }
+
+                if (StringUtils.isEmpty(oneData.get(4))) {
+                    index++;
+                    mistakes.add(setErrorObject(oneData,"入党日期不可为空,请填写入党日期"));
+                    continue;
+                }
+                vo.setJoinTime(oneData.get(4));
+
+                if (StringUtils.isNotEmpty(oneData.get(5))) {
+                    vo.setEmploymentTime(oneData.get(5));
+                }
+                if (StringUtils.isNotEmpty(oneData.get(6))) {
+                    vo.setPosition(oneData.get(6));
+                }
+                if (StringUtils.isNotEmpty(oneData.get(7))) {
+                    vo.setJobResponsibilities(oneData.get(7));
+                }
+                voList.add(vo);
+                index++;
+            }
+            List<ComPbMemberRoleExcelVo> newVoList =
+                voList.stream().filter(ListUtils.distinctByKey(ComPbMemberRoleExcelVo::getIdCard))
+                    .collect(Collectors.toList());
+            R r = partyBuildingService.importPbMemberRole(newVoList, communityId, userId);
+            if (!R.isOk(r)) {
+                List<ComPbMemberRoleErrorExcelVo> list =
+                    JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComPbMemberRoleErrorExcelVo.class);
+                mistakes.addAll(list);
+                valueOperations.set(key, JSONArray.toJSONString(mistakes), 1, TimeUnit.HOURS);
+                throw new ServiceException("500", key);
+            } else {
+                if (!mistakes.isEmpty()) {
+                    valueOperations.set(key, JSONArray.toJSONString(mistakes), 1, TimeUnit.HOURS);
+                    throw new ServiceException("500", key);
+                }
+            }
+        } catch (NumberFormatException e) {
+            e.printStackTrace();
+            throw new ServiceException("500", "导入失败");
+        }
+    }
+
+    private void setError(Map<Integer, String> map, ComPbMemberRoleErrorExcelVo vo) {
+        vo.setName(map.get(0));
+        vo.setIdCard(map.get(1));
+        vo.setPhone(map.get(2));
+        vo.setTypeName(map.get(3));
+        vo.setJoinTime(map.get(4));
+        vo.setEmploymentTime(map.get(5));
+        vo.setPosition(map.get(6));
+        vo.setJobResponsibilities(map.get(7));
+    }
+
+    /**
+     * 组装错误信息
+     * @param oneData   数据表格对象
+     * @param error     错误信息
+     * @return  错误对象
+     */
+    private ComPbMemberRoleErrorExcelVo setErrorObject(Map<Integer, String> oneData, String error){
+        ComPbMemberRoleErrorExcelVo mistake = new ComPbMemberRoleErrorExcelVo();
+        setError(oneData, mistake);
+        mistake.setError(error);
+        return mistake;
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComActDiscussDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComActDiscussDTO.java
index 0f7e50b..fbfdafb 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComActDiscussDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComActDiscussDTO.java
@@ -89,6 +89,9 @@
     @NotBlank(message = "投票结果不能为空", groups = {PutGroup.class})
     private String publishResult;
 
+    @ApiModelProperty("议事内容类型(1.社区议事 2.院落议事 3.党群议事)")
+    private Integer contentType;
+
     /**
      * 类型 1 议事 2 投票
      */
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComDataStatisticsMemberExcelVo.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComDataStatisticsMemberExcelVo.java
new file mode 100644
index 0000000..6fac2d6
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComDataStatisticsMemberExcelVo.java
@@ -0,0 +1,74 @@
+package com.panzhihua.common.model.vos.partybuilding.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author lyq
+ * 分页查询党建数据统计返回参数
+ */
+@Data
+@ApiModel("分页查询党建数据统计返回参数")
+public class ComDataStatisticsMemberExcelVo {
+
+    @ExcelProperty(value = "序号", index = 0)
+    private Long id;
+
+    @ExcelProperty(value = "党员姓名", index = 1)
+    private String name;
+
+    @ExcelProperty(value = "党龄", index = 2)
+    private Integer partyAge;
+
+    @ExcelProperty(value = "联系电话", index = 3)
+    private String phone;
+
+    @ExcelProperty(value = "身份证号", index = 4)
+    private String idCard;
+
+    @ExcelProperty(value = "职能", index = 5)
+    private String function;
+
+    @ExcelProperty(value = "特长", index = 6)
+    private String specialtyName;
+
+    @ExcelProperty(value = "双报道单位", index = 7)
+    private String checkUnitName;
+
+    @ExcelProperty(value = "总参与活动次数", index = 8)
+    private Integer activityCount;
+
+    @ExcelProperty(value = "总参与活动时长(小时)", index = 9)
+    private Integer activityDuration;
+
+    @ExcelProperty(value = "参与党员活动次数", index = 10)
+    private Integer partyActivityCount;
+
+    @ExcelProperty(value = "参与党员活动时长(小时)", index = 11)
+    private Integer partyActivityDuration;
+
+    @ExcelProperty(value = "参与党员活动积分", index = 12)
+    private Integer partyActivityIntegral;
+
+    @ExcelProperty(value = "参与志愿者活动次数", index = 13)
+    private Integer volunteerActivityCount;
+
+    @ExcelProperty(value = "参与志愿者活动时长(小时)", index = 14)
+    private Integer volunteerActivityDuration;
+
+    @ExcelProperty(value = "参与志愿者活动积分", index = 15)
+    private Integer volunteerActivityIntegral;
+
+    @ExcelProperty(value = "完成微心愿数量", index = 16)
+    private Integer wishCount;
+
+    @ExcelProperty(value = "完成随手拍数量", index = 17)
+    private Integer easyCount;
+
+    private Long communityId;
+
+    private Long userId;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbCheckUnitErrorExcelVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbCheckUnitErrorExcelVO.java
index b1c4b34..b6858c4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbCheckUnitErrorExcelVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbCheckUnitErrorExcelVO.java
@@ -24,6 +24,6 @@
     @ExcelProperty(value = "负责人联系电话", index = 3)
     private String phone;
 
-    @ExcelProperty(value = "错误信息", index = 7)
+    @ExcelProperty(value = "错误信息", index = 4)
     private String error;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbMemberRoleErrorExcelVo.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbMemberRoleErrorExcelVo.java
new file mode 100644
index 0000000..2fab74b
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbMemberRoleErrorExcelVo.java
@@ -0,0 +1,43 @@
+package com.panzhihua.common.model.vos.partybuilding.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author lyq
+ * 分页查询党建数据统计返回参数
+ */
+@Data
+@ApiModel("分页查询党建数据统计返回参数")
+public class ComPbMemberRoleErrorExcelVo {
+
+
+    @ExcelProperty(value = "党员姓名", index = 0)
+    private String name;
+
+    @ExcelProperty(value = "身份证号", index = 1)
+    private String idCard;
+
+    @ExcelProperty(value = "手机号", index = 2)
+    private String phone;
+
+    @ExcelProperty(value = "党委标签(社区党委/区域党委委员)", index = 3)
+    private String typeName;
+
+    @ExcelProperty(value = "入党日期", index = 4)
+    private String joinTime;
+
+    @ExcelProperty(value = "转正日期", index = 5)
+    private String employmentTime;
+
+    @ExcelProperty(value = "职位", index = 6)
+    private String position;
+
+    @ExcelProperty(value = "岗位职责", index = 7)
+    private String jobResponsibilities;
+
+    @ExcelProperty(value = "错误信息", index = 8)
+    private String error;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbMemberRoleExcelVo.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbMemberRoleExcelVo.java
new file mode 100644
index 0000000..5d5e2b7
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/partybuilding/excel/ComPbMemberRoleExcelVo.java
@@ -0,0 +1,40 @@
+package com.panzhihua.common.model.vos.partybuilding.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author lyq
+ * 分页查询党建数据统计返回参数
+ */
+@Data
+@ApiModel("分页查询党建数据统计返回参数")
+public class ComPbMemberRoleExcelVo {
+
+
+    @ExcelProperty(value = "党员姓名", index = 0)
+    private String name;
+
+    @ExcelProperty(value = "身份证号", index = 1)
+    private String idCard;
+
+    @ExcelProperty(value = "手机号", index = 2)
+    private String phone;
+
+    @ExcelProperty(value = "党委标签(社区党委/区域党委委员)", index = 3)
+    private String typeName;
+
+    @ExcelProperty(value = "入党日期", index = 4)
+    private String joinTime;
+
+    @ExcelProperty(value = "转正日期", index = 5)
+    private String employmentTime;
+
+    @ExcelProperty(value = "职位", index = 6)
+    private String position;
+
+    @ExcelProperty(value = "岗位职责", index = 7)
+    private String jobResponsibilities;
+
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java
index d6aa233..46330ed 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/partybuilding/PartyBuildingService.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleExcelVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -564,4 +565,22 @@
      */
     @GetMapping("/partybuildIng/getHeaderOrgDataStatistics")
     R getHeaderOrgDataStatistics(@RequestParam("communityId") Long communityId);
+
+    /**
+     * 党员数据统计-党员导出数据查询
+     * @param statisticsMemberDto   请求参数
+     * @return  党员导出数据
+     */
+    @PostMapping("/partybuildIng/exportDataStatisticsMember")
+    R exportDataStatisticsMember(@RequestBody PageComDataStatisticsMemberDto statisticsMemberDto);
+
+    /**
+     * 党委导入接口
+     * @param memberRoleExcelVoList 数据列表
+     * @param communityId   社区id
+     * @param userId    用户id
+     * @return  导入结果
+     */
+    @PostMapping("/partybuildIng/importPbMemberRole")
+    R importPbMemberRole(@RequestBody List<ComPbMemberRoleExcelVo> memberRoleExcelVoList,@RequestParam("communityId") Long communityId,@RequestParam("userId") Long userId);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java
index 79faee8..52ecf72 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommunityPartyBuildingApi.java
@@ -13,10 +13,15 @@
 
 import com.panzhihua.common.model.dtos.partybuilding.ComDataStatisticsOrgDto;
 import com.panzhihua.common.model.dtos.partybuilding.PageComDataStatisticsMemberDto;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeRightExcelAdminVO;
+import com.panzhihua.common.model.vos.community.reserve.ComActReserveMakeRightStatisticsAdminVO;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComDataStatisticsMemberExcelVo;
 import com.panzhihua.common.model.vos.user.SysTemplateConfigVO;
 import com.panzhihua.common.service.partybuilding.ComDataStatisticsFeign;
 import com.panzhihua.community_backstage.config.MinioUtil;
+import com.panzhihua.community_backstage.config.SFTPConfig;
 import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.ObjectUtils;
 import org.springframework.validation.annotation.Validated;
@@ -95,6 +100,8 @@
     private int port;
     @Value("${ftp.url}")
     private String url;
+    @Resource
+    private SFTPConfig sftpConfig;
 
     @Resource
     private MinioUtil minioUtil;
@@ -805,4 +812,59 @@
     public R getHeaderOrgDataStatistics() {
         return partyBuildingService.getHeaderOrgDataStatistics(this.getCommunityId());
     }
+
+    @ApiOperation(value = "党员数据统计-导出党员数据")
+    @PostMapping("/dataStatistics/member/export")
+    public R exportDataStatisticsMember(@RequestBody PageComDataStatisticsMemberDto statisticsMemberDto) {
+        statisticsMemberDto.setCommunityId(this.getCommunityId());
+        String url = sftpConfig.getExcelUrl();
+        String name = "党员数据统计-党员导出数据.xlsx";
+        String ftpUrl = "/mnt/data/web/excel/";
+        R r = partyBuildingService.exportDataStatisticsMember(statisticsMemberDto);
+        if (R.isOk(r)) {
+            List<ComDataStatisticsMemberExcelVo> resultList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), ComDataStatisticsMemberExcelVo.class);
+            try {
+                SFTPUtil sftp = new SFTPUtil(sftpConfig.getUserName(), sftpConfig.getPassword(), sftpConfig.getHost(), sftpConfig.getPort());
+                sftp.login();
+                boolean existDir = sftp.isExistDir(ftpUrl + name);
+                if (!existDir) {
+                    String property = System.getProperty("user.dir");
+                    String fileName = property + File.separator + name;
+                    // 这里 需要指定写用哪个class去写
+                    ExcelWriter excelWriter = null;
+                    InputStream inputStream = null;
+                    try {
+                        excelWriter = EasyExcel.write(fileName, ComActReserveMakeRightExcelAdminVO.class)
+                                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                                .registerWriteHandler(new CustomSheetWriteHandler()).build();
+                        WriteSheet writeSheet = EasyExcel.writerSheet("党员导出数据").build();
+                        excelWriter.write(resultList, writeSheet);
+                        excelWriter.finish();
+                        File file = new File(fileName);
+                        inputStream = new FileInputStream(file);
+                        sftp.uploadMore(ftpUrl, name, inputStream);
+                        sftp.logout();
+                        inputStream.close();
+                        String absolutePath = file.getAbsolutePath();
+                        boolean delete = file.delete();
+                        log.info("删除excel【{}】结果【{}】", absolutePath, delete);
+                    } finally {
+                        // 千万别忘记finish 会帮忙关闭流
+                        if (inputStream != null) {
+                            inputStream.close();
+                        }
+                        if (excelWriter != null) {
+                            excelWriter.finish();
+                        }
+                    }
+                }
+                return R.ok(url + name);
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("文件传输失败【{}】", e.getMessage());
+                return R.fail();
+            }
+        }
+        return r;
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/ComPbCheckUnitController.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/ComPbCheckUnitController.java
index 3db252b..fa2ba2b 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/ComPbCheckUnitController.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/ComPbCheckUnitController.java
@@ -104,6 +104,13 @@
         return this.comPbCheckUnitService.queryByList(comPbCheckUnit);
     }
 
+    /**
+     * 批量导入报道单位
+     * @param list  导入数据
+     * @param communityId   社区id
+     * @param userId    用户id
+     * @return  导入结果
+     */
     @PostMapping("/importCheckUnit")
     public R importCheckUnit(@RequestBody List<ComPbCheckUnitExcelVO> list, @RequestParam(value = "communityId") Long communityId
             ,@RequestParam(value = "userId") Long userId){
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java
index e7e29f1..b1821e0 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/api/PartyBuildIngApi.java
@@ -5,6 +5,7 @@
 
 import javax.annotation.Resource;
 
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleExcelVo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
@@ -736,4 +737,26 @@
     public R getHeaderOrgDataStatistics(@RequestParam("communityId") Long communityId) {
         return comPbMemberService.getHeaderOrgDataStatistics(communityId);
     }
+
+    /**
+     * 党员数据统计-党员导出数据查询
+     * @param statisticsMemberDto   请求参数
+     * @return  党员导出数据
+     */
+    @PostMapping("/exportDataStatisticsMember")
+    public R exportDataStatisticsMember(@RequestBody PageComDataStatisticsMemberDto statisticsMemberDto) {
+        return comPbMemberService.exportDataStatisticsMember(statisticsMemberDto);
+    }
+
+    /**
+     * 党委导入接口
+     * @param memberRoleExcelVoList 数据列表
+     * @param communityId   社区id
+     * @param userId    用户id
+     * @return  导入结果
+     */
+    @PostMapping("/partybuildIng/importPbMemberRole")
+    public R importPbMemberRole(@RequestBody List<ComPbMemberRoleExcelVo> memberRoleExcelVoList,@RequestParam("communityId") Long communityId,@RequestParam("userId") Long userId){
+        return comPbMemberService.importPbMemberRole(memberRoleExcelVoList,communityId,userId);
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbMemberDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbMemberDAO.java
index 8edc919..8687ffc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbMemberDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/dao/ComPbMemberDAO.java
@@ -5,6 +5,7 @@
 
 import com.panzhihua.common.model.dtos.partybuilding.PageComDataStatisticsMemberDto;
 import com.panzhihua.common.model.vos.partybuilding.*;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComDataStatisticsMemberExcelVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -163,4 +164,11 @@
      * @return  党组织表头统计数据
      */
     ComDataStatisticsHeaderOrgVo getHeaderOrgDataStatistics(@Param("communityId") Long communityId);
+
+    /**
+     * 党员数据统计-党员导出数据查询
+     * @param statisticsMemberDto   请求参数
+     * @return  党员导出数据
+     */
+    List<ComDataStatisticsMemberExcelVo> exportDataStatisticsMember(@Param("dto") PageComDataStatisticsMemberDto statisticsMemberDto);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbCheckUnitService.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbCheckUnitService.java
index 936d0b4..c0fb4ce 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbCheckUnitService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbCheckUnitService.java
@@ -78,6 +78,13 @@
      */
     R queryByList(PageComPbCheckUnitDto comPbCheckUnit);
 
+    /**
+     * 批量导入报道单位
+     * @param list  导入数据
+     * @param communityId   社区id
+     * @param userId    用户id
+     * @return  导入结果
+     */
     R importCheckUnit(List<ComPbCheckUnitExcelVO> list, Long communityId, Long userId);
 
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbMemberService.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbMemberService.java
index b8b4a88..1e9a260 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbMemberService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/ComPbMemberService.java
@@ -7,6 +7,7 @@
 import com.panzhihua.common.model.dtos.partybuilding.PageComDataStatisticsMemberDto;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.partybuilding.*;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleExcelVo;
 import com.panzhihua.service_dangjian.model.dos.ComPbMemberDO;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -217,4 +218,20 @@
      * @return  党组织表头统计数据
      */
     R getHeaderOrgDataStatistics(Long communityId);
+
+    /**
+     * 党员数据统计-党员导出数据查询
+     * @param statisticsMemberDto   请求参数
+     * @return  党员导出数据
+     */
+    R exportDataStatisticsMember(PageComDataStatisticsMemberDto statisticsMemberDto);
+
+    /**
+     * 党委导入接口
+     * @param list 数据列表
+     * @param communityId   社区id
+     * @param userId    用户id
+     * @return  导入结果
+     */
+    R importPbMemberRole(List<ComPbMemberRoleExcelVo> list, Long communityId, Long userId);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbCheckUnitServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbCheckUnitServiceImpl.java
index 55a9c64..260d6fb 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbCheckUnitServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbCheckUnitServiceImpl.java
@@ -147,6 +147,13 @@
         return R.ok(this.baseMapper.queryAllByList(comPbCheckUnit));
     }
 
+    /**
+     * 批量导入报道单位
+     * @param list  导入数据
+     * @param communityId   社区id
+     * @param userId    用户id
+     * @return  导入结果
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R importCheckUnit(List<ComPbCheckUnitExcelVO> list, Long communityId, Long userId){
@@ -161,6 +168,7 @@
                     ComPbCheckUnitErrorExcelVO checkUnitError = new ComPbCheckUnitErrorExcelVO();
                     BeanUtils.copyProperties(checkUnit,checkUnitError);
                     checkUnitError.setError("该单位已存在,不可重复导入");
+                    mistakes.add(checkUnitError);
                 }else{
                     comPbCheckUnit = new ComPbCheckUnit();
                     BeanUtils.copyProperties(checkUnit,comPbCheckUnit);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java
index c896c13..2e6204f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java
@@ -9,8 +9,16 @@
 
 import javax.annotation.Resource;
 
+import cn.hutool.core.util.IdcardUtil;
+import com.google.common.collect.Lists;
+import com.panzhihua.common.enums.ComPbMemberRoleTypeEnum;
 import com.panzhihua.common.model.dtos.partybuilding.ComDataStatisticsOrgDto;
 import com.panzhihua.common.model.dtos.partybuilding.PageComDataStatisticsMemberDto;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComDataStatisticsMemberExcelVo;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbCheckUnitErrorExcelVO;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleErrorExcelVo;
+import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleExcelVo;
+import com.panzhihua.service_dangjian.entity.ComPbCheckUnit;
 import io.swagger.annotations.ApiModelProperty;
 import org.springframework.beans.BeanUtils;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -673,6 +681,16 @@
         IPage<ComDataStatisticsMemberVo> memberPage = comPbMemberDAO.pageDataStatisticsMember(new Page(statisticsMemberDto.getPageNum()
                 ,statisticsMemberDto.getPageSize()),statisticsMemberDto);
         memberPage.getRecords().forEach(member -> {
+            if(member.getIsRole() > 0){
+                member.setIsRole(1);
+            }else{
+                member.setIsRole(2);
+            }
+            try {
+                member.setAge(IdcardUtil.getAgeByIdCard(member.getIdCard()));
+            } catch (Exception e) {
+                log.error("年龄转义失败");
+            }
             //查询党员统计数据
             ComDataStatisticsMemberVo statisticsMemberVo = comPbMemberDAO.getMemberStatistics(member.getUserId(),member.getCommunityId());
             if(statisticsMemberVo != null){
@@ -700,25 +718,27 @@
         List<Long> orgIds = new ArrayList<>();
         Long communityId = statisticsOrgDto.getCommunityId();
         ComDataStatisticsOrgVo statisticsOrgVo = new ComDataStatisticsOrgVo();
-        ComPbOrgDO pbOrgDO = comPbOrgDAO.selectById(statisticsOrgDto.getOrgId());
-        if(pbOrgDO == null){
-            return R.fail("未查询到党组织");
-        }
-        //拼接党组织id
-        if(pbOrgDO.getOneId() != null){
-            orgIds.add(pbOrgDO.getOneId());
-        }
-        if(pbOrgDO.getTwoId() != null){
-            orgIds.add(pbOrgDO.getTwoId());
-        }
-        if(pbOrgDO.getThirdId() != null){
-            orgIds.add(pbOrgDO.getThirdId());
-        }
-        if(pbOrgDO.getFourId() != null){
-            orgIds.add(pbOrgDO.getFourId());
-        }
-        if(pbOrgDO.getFiveId() != null){
-            orgIds.add(pbOrgDO.getFiveId());
+        if(statisticsOrgDto.getOrgId() != null){
+            ComPbOrgDO pbOrgDO = comPbOrgDAO.selectById(statisticsOrgDto.getOrgId());
+            if(pbOrgDO == null){
+                return R.fail("未查询到党组织");
+            }
+            //拼接党组织id
+            if(pbOrgDO.getOneId() != null){
+                orgIds.add(pbOrgDO.getOneId());
+            }
+            if(pbOrgDO.getTwoId() != null){
+                orgIds.add(pbOrgDO.getTwoId());
+            }
+            if(pbOrgDO.getThirdId() != null){
+                orgIds.add(pbOrgDO.getThirdId());
+            }
+            if(pbOrgDO.getFourId() != null){
+                orgIds.add(pbOrgDO.getFourId());
+            }
+            if(pbOrgDO.getFiveId() != null){
+                orgIds.add(pbOrgDO.getFiveId());
+            }
         }
         //拼接查询开始结束时间
         String startTime = statisticsOrgDto.getYear() + "-01-01 00:00:00";
@@ -792,4 +812,100 @@
         return R.ok(headerOrgVo);
     }
 
+    /**
+     * 党员数据统计-党员导出数据查询
+     * @param statisticsMemberDto   请求参数
+     * @return  党员导出数据
+     */
+    @Override
+    public R exportDataStatisticsMember(PageComDataStatisticsMemberDto statisticsMemberDto) {
+        List<ComDataStatisticsMemberExcelVo> memberList = comPbMemberDAO.exportDataStatisticsMember(statisticsMemberDto);
+        memberList.forEach(member -> {
+            //查询党员统计数据
+            ComDataStatisticsMemberVo statisticsMemberVo = comPbMemberDAO.getMemberStatistics(member.getUserId(),member.getCommunityId());
+            if(statisticsMemberVo != null){
+                member.setPartyActivityCount(statisticsMemberVo.getPartyActivityCount());
+                member.setPartyActivityDuration(statisticsMemberVo.getPartyActivityDuration());
+                member.setVolunteerActivityCount(statisticsMemberVo.getVolunteerActivityCount());
+                member.setVolunteerActivityDuration(statisticsMemberVo.getVolunteerActivityDuration());
+                member.setVolunteerActivityIntegral(statisticsMemberVo.getVolunteerActivityIntegral());
+                member.setWishCount(statisticsMemberVo.getWishCount());
+                member.setEasyCount(statisticsMemberVo.getEasyCount());
+                member.setActivityCount(member.getPartyActivityCount() + member.getVolunteerActivityCount());
+                member.setActivityDuration(member.getPartyActivityDuration() + member.getVolunteerActivityDuration());
+            }
+        });
+        return R.ok(memberList);
+    }
+
+    /**
+     * 党委导入接口
+     * @param list 数据列表
+     * @param communityId   社区id
+     * @param userId    用户id
+     * @return  导入结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R importPbMemberRole(List<ComPbMemberRoleExcelVo> list, Long communityId, Long userId) {
+        ArrayList<ComPbMemberRoleErrorExcelVo> mistakes = Lists.newArrayList();
+        ArrayList<ComPbMemberRoleDO> saveList = Lists.newArrayList();
+        Date nowDate = new Date();
+        if(list != null && list.size() > 0){
+            list.forEach(memberRole -> {
+                ComPbMemberRoleDO memberRoleDO = comPbMemberRoleDAO.selectOne(new QueryWrapper<ComPbMemberRoleDO>().lambda()
+                        .eq(ComPbMemberRoleDO::getCommunityId,communityId).eq(ComPbMemberRoleDO::getIdCard,memberRole.getIdCard()));
+                if(memberRoleDO != null){
+                    ComPbMemberRoleErrorExcelVo roleErrorExcelVo = new ComPbMemberRoleErrorExcelVo();
+                    BeanUtils.copyProperties(memberRole,roleErrorExcelVo);
+                    roleErrorExcelVo.setError("该党委已存在,不可重复导入");
+                    mistakes.add(roleErrorExcelVo);
+                }else{
+                    memberRoleDO = new ComPbMemberRoleDO();
+                    BeanUtils.copyProperties(memberRole,memberRoleDO);
+                    Integer type = ComPbMemberRoleTypeEnum.getCodeByName(memberRole.getTypeName());
+                    if(type.equals(0)){
+                        ComPbMemberRoleErrorExcelVo roleErrorExcelVo = new ComPbMemberRoleErrorExcelVo();
+                        BeanUtils.copyProperties(memberRole,roleErrorExcelVo);
+                        roleErrorExcelVo.setError("党委标签不存在,请核对后再重新导入");
+                        mistakes.add(roleErrorExcelVo);
+                        return;
+                    }else{
+                        memberRoleDO.setType(type);
+                    }
+                    try {
+                        Date joinTime = DateUtils.stringToDate(memberRole.getJoinTime(),DateUtils.yyyyMMdd_format);
+                        memberRoleDO.setJoinTime(joinTime);
+                    } catch (Exception e) {
+                        ComPbMemberRoleErrorExcelVo roleErrorExcelVo = new ComPbMemberRoleErrorExcelVo();
+                        BeanUtils.copyProperties(memberRole,roleErrorExcelVo);
+                        roleErrorExcelVo.setError("入党时间格式错误,请按照正确格式填写,如:2022-01-01");
+                        mistakes.add(roleErrorExcelVo);
+                        return;
+                    }
+
+                    try {
+                        Date employmentTime = DateUtils.stringToDate(memberRole.getEmploymentTime(),DateUtils.yyyyMMdd_format);
+                        memberRoleDO.setEmploymentTime(employmentTime);
+                    } catch (Exception e) {
+                        ComPbMemberRoleErrorExcelVo roleErrorExcelVo = new ComPbMemberRoleErrorExcelVo();
+                        BeanUtils.copyProperties(memberRole,roleErrorExcelVo);
+                        roleErrorExcelVo.setError("转正时间格式错误,请按照正确格式填写,如:2022-01-01");
+                        mistakes.add(roleErrorExcelVo);
+                        return;
+                    }
+                }
+            });
+        }
+
+        if(saveList.size() > 0){
+            saveList.forEach(save -> {
+                comPbMemberRoleDAO.insert(save);
+            });
+        }
+        if(mistakes.size() > 0){
+            return R.fail(mistakes);
+        }
+        return R.ok();
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/mapper/ComPbMemberMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/mapper/ComPbMemberMapper.xml
index fb2bd3d..4086983 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/mapper/ComPbMemberMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/resources/mapper/ComPbMemberMapper.xml
@@ -219,52 +219,68 @@
         SELECT
             count( id ) AS tyNum,
             ( SELECT count( id ) FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND specialty_category = 2
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+                <if test="orgIds != null and orgIds.size > 0">
+                    AND org_id in
+                    <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
             ) AS wdNum,
             ( SELECT count( id ) FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND specialty_category = 3
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+                <if test="orgIds != null and orgIds.size > 0">
+                    AND org_id in
+                    <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
             ) AS yyNum,
             ( SELECT count( id ) FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND specialty_category = 4
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             ) AS msNum,
             ( SELECT count( id ) FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND specialty_category = 5
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             ) AS qtNum,
             ( SELECT count( id ) FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND specialty_category IS NULL
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             ) AS wuNum,
             ( SELECT count( id ) FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND type = 1
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             ) AS preparePartyMemberNum,
             ( SELECT count( id ) FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND type = 2
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             ) AS formalPartyMemberNum,
             ( SELECT count( id ) FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId}
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             ) AS partyMemberNum
         FROM
             com_pb_member
@@ -272,10 +288,12 @@
             audit_result = 1
             AND community_id = #{communityId}
             AND specialty_category = 1
+        <if test="orgIds != null and orgIds.size > 0">
             AND org_id in
             <foreach collection="orgIds" item="item" open="(" separator="," close=")">
                 #{item}
             </foreach>
+        </if>
     </select>
 
     <select id="getOrgDataStatisticsLeftDown" resultType="com.panzhihua.common.model.vos.partybuilding.ComDataStatisticsOrgVo">
@@ -291,10 +309,12 @@
                 caas.`status` = 1
                 AND caas.is_volunteer = 1
                 AND caas.user_id IN ( SELECT user_id FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND user_id IS NOT NULL
-                    AND org_id in
-                    <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                        #{item}
-                    </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
                 )
                 AND caas.create_at BETWEEN #{startTime}
                 AND #{endTime}
@@ -310,10 +330,12 @@
                 AND cpm.community_id = #{communityId}
                 AND cpam.create_at BETWEEN #{startTime}
                 AND #{endTime}
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             ) AS participatePartyActivityNum
         FROM
             com_act_act_sign
@@ -321,10 +343,12 @@
             `status` = 1
             AND is_volunteer = 1
             AND user_id IN ( SELECT user_id FROM com_pb_member WHERE audit_result = 1 AND community_id = #{communityId} AND user_id IS NOT NULL
-                AND org_id in
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             )
             AND create_at BETWEEN #{startTime}
             AND #{endTime}
@@ -351,10 +375,12 @@
         <where>
             and m.audit_result = 1
             and m.community_id = #{communityId}
-            and m.org_id in
-            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                #{item}
-            </foreach>
+            <if test="orgIds != null and orgIds.size > 0">
+                AND m.org_id in
+                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
         </where>
     </select>
 
@@ -378,10 +404,12 @@
                     community_id = #{communityId}
                     AND audit_result = 1
                     AND user_id IS NOT NULL
-                AND org_id IN
-                <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
                 )) AS cumulativeWishNum,
             (SELECT
                 count( caep.id )
@@ -401,10 +429,12 @@
                     community_id = #{communityId}
                     AND audit_result = 1
                     AND user_id IS NOT NULL
-                AND org_id IN
-        <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
                 ) )	as completeEasyNum,
                 (SELECT
                 count( caep.id )
@@ -423,10 +453,12 @@
                     community_id = #{communityId}
                     AND audit_result = 1
                     AND user_id IS NOT NULL
-                AND org_id IN
-        <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
                 ) ) as cumulativeEasyNum
         FROM
             com_act_micro_wish AS camw
@@ -444,10 +476,12 @@
                 community_id = #{communityId}
                 AND audit_result = 1
             AND user_id IS NOT NULL
-            AND org_id IN
-        <foreach collection="orgIds" item="item" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+        <if test="orgIds != null and orgIds.size > 0">
+            AND org_id in
+            <foreach collection="orgIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
             )
     </select>
 
@@ -461,5 +495,51 @@
         WHERE
             community_id = #{communityId}
     </select>
+
+    <select id="exportDataStatisticsMember" resultType="com.panzhihua.common.model.vos.partybuilding.excel.ComDataStatisticsMemberExcelVo">
+        SELECT
+        cpm.id,
+        cpm.`name`,
+        cpm.photo_path,
+        cpm.type,
+        cpm.`function`,
+        cpm.specialty_category,
+        cpm.specialty_name,
+        cpm.position,
+        cpm.position_two,
+        cpm.id_card,
+        cpm.phone,
+        cpm.check_unit_id,
+        cpm.user_id,
+        cpcu.`name` AS checkUnitName,
+        cpm.org_id,
+        cpm.community_id,
+        cpo.`name` AS orgName,
+        YEAR (
+        from_days(
+        datediff( now( ), cpm.join_time ))) AS partyAge,
+        (select count(id) from com_pb_member_role where id_card = cpm.id_card) as isRole
+        FROM
+        com_pb_member AS cpm
+        LEFT JOIN com_pb_check_unit AS cpcu ON cpcu.id = cpm.check_unit_id
+        LEFT JOIN com_pb_org AS cpo ON cpo.id = cpm.org_id
+        <where>
+            and cpm.audit_result = 1
+            <if test="dto.communityId != null">
+                and cpm.community_id = #{dto.communityId}
+            </if>
+
+            <if test="dto.keyWord != null and dto.keyWord !=''">
+                and (
+                cpm.`name` like concat (#{dto.keyWord},'%') or
+                cpm.`id_card` = #{dto.keyWord} or
+                cpm.`phone` like concat (#{dto.keyWord},'%') or
+                cpcu.`name` like concat (#{dto.keyWord},'%') or
+                cpo.`name` like concat (#{dto.keyWord},'%')
+                )
+            </if>
+        </where>
+        order by cpm.create_at desc
+    </select>
 </mapper>
 

--
Gitblit v1.7.1