罗元桥
2021-06-10 e03b2f752543120e8d5d8987c089f3e426466bac
Merge branch 'test_elder_cedoo' into 'test'

Test elder cedoo

See merge request root/zhihuishequ!46
2个文件已添加
120 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComEldersAuthRecordExcelListen.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/EldersAuthRecordExcelVO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComEldersAuthRecordExcelListen.java
New file
@@ -0,0 +1,84 @@
package com.panzhihua.common.listen;
import cn.hutool.core.util.IdcardUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSONObject;
import com.panzhihua.common.enums.EldersAuthLevelEnum;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.EldersAuthElderlyExcelVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.ListUtils;
import com.panzhihua.common.utlis.StringUtils;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @description: 高龄老人导入监听
 * @author: xyh
 * @date: 2021/3/11 13:26
 */
@Slf4j
public class ComEldersAuthRecordExcelListen extends AnalysisEventListener<EldersAuthElderlyExcelVO> {
    private CommunityService communityService;
    private Long communityId;
    private Long createBy;
    public ComEldersAuthRecordExcelListen(CommunityService communityService, Long communityId, Long createBy){
        this.communityService = communityService;
        this.communityId = communityId;
        this.createBy = createBy;
    }
    private static final int BATCH_COUNT = 500;
    private List<EldersAuthElderlyExcelVO> list = new ArrayList<>();
    @Override
    public void invoke(EldersAuthElderlyExcelVO eldersAuthElderlyExcelVO, AnalysisContext analysisContext) {
        if(StringUtils.isEmpty(eldersAuthElderlyExcelVO.getName())){
            throw new ServiceException("姓名不可为空");
        }
        if(StringUtils.isEmpty(eldersAuthElderlyExcelVO.getIsExist())){
            eldersAuthElderlyExcelVO.setIsExist("是");
        }
        if(StringUtils.isEmpty(eldersAuthElderlyExcelVO.getIsBigAge())){
            eldersAuthElderlyExcelVO.setIsBigAge("是");
        }
        if(StringUtils.isEmpty(eldersAuthElderlyExcelVO.getIdCard()) || IdcardUtil.isvalidCard18(eldersAuthElderlyExcelVO.getIdCard())){
            throw new ServiceException("身份证号错误");
        }
        eldersAuthElderlyExcelVO.setBirthday(DateUtils.getDateStringYMD(IdcardUtil.getBirthDate(eldersAuthElderlyExcelVO.getIdCard())));
        eldersAuthElderlyExcelVO.setLevel(EldersAuthLevelEnum.getCode(IdcardUtil.getAgeByIdCard(eldersAuthElderlyExcelVO.getIdCard())));
        list.add(eldersAuthElderlyExcelVO);
        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
        if(list.size() >= BATCH_COUNT){
            log.info("excel导入数据【{}】", JSONObject.toJSONString(list));
            List<EldersAuthElderlyExcelVO> newVoList = list.stream().filter(ListUtils.distinctByKey(EldersAuthElderlyExcelVO::getIdCard)).collect(Collectors.toList());
            R r = this.communityService.listSaveEldersAuthElderlyExcelVO(newVoList,this.communityId,this.createBy);
            if (!R.isOk(r)) {
                throw new ServiceException(r.getMsg());
            }
            list.clear();           //清空list
        }
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        List<EldersAuthElderlyExcelVO> newVoList = list.stream().filter(ListUtils.distinctByKey(EldersAuthElderlyExcelVO::getIdCard)).collect(Collectors.toList());
        R r = this.communityService.listSaveEldersAuthElderlyExcelVO(newVoList,this.communityId,this.createBy);
        if (!R.isOk(r)) {
            throw new ServiceException(r.getMsg());
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/EldersAuthRecordExcelVO.java
New file
@@ -0,0 +1,36 @@
package com.panzhihua.common.model.vos.community;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
/**
 * @author xyh
 * @date 2021/6/9 14:54
 */
@Data
public class EldersAuthRecordExcelVO implements Serializable {
    private static final long serialVersionUID = -6256711519268125208L;
    @ExcelProperty(value = "姓名" ,index = 0)
    private String name;
    @ExcelProperty(value = "身份证号" ,index = 1)
    private String idCard;
    @ExcelProperty(value = "是否健在" ,index = 2)
    private String isExist;
    @ExcelProperty(value = "是否登记" ,index = 3)
    private String isBigAge;
    private String birthday;
    private Integer level;
    private String domicile;
    private Long communityId;
    private Long createBy;
}