huanghongfa
2022-02-15 2d960f8cf9cbfe24b950ae21166ff90b75ac15a6
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngVolunteerMngServiceImpl.java
@@ -1,12 +1,23 @@
package com.panzhihua.service_community.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import cn.hutool.core.util.IdcardUtil;
import com.panzhihua.common.model.vos.community.volunteer.ComMngVolunteerErrorExcelVO;
import com.panzhihua.common.model.vos.community.volunteer.ComMngVolunteerExcelVO;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_community.dao.ComMngVolunteerOrgTeamMapper;
import com.panzhihua.service_community.dao.ComMngVolunteerSkillMapper;
import com.panzhihua.service_community.model.dos.ComMngVolunteerOrgTeam;
import com.panzhihua.service_community.model.dos.ComMngVolunteerSkill;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -33,6 +44,10 @@
public class ComMngVolunteerMngServiceImpl implements ComMngVolunteerMngService {
    @Resource
    private ComMngVolunteerMngDAO comMngVolunteerMngDAO;
    @Resource
    private ComMngVolunteerOrgTeamMapper comMngVolunteerOrgTeamMapper;
    @Resource
    private ComMngVolunteerSkillMapper comMngVolunteerSkillMapper;
    /**
     * 增加志愿者
@@ -116,7 +131,9 @@
        page.setCurrent(pageNum);
        IPage<ComMngVolunteerMngVO> iPage = comMngVolunteerMngDAO.pageVolunteer(page, comMngVolunteerMngVO);
        iPage.getRecords().forEach(record -> {
            record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone()));
            if(StringUtils.isNotEmpty(record.getIdCard())){
                record.setAge(IdcardUtil.getAgeByIdCard(record.getIdCard()));
            }
        });
        return R.ok(iPage);
    }
@@ -258,4 +275,90 @@
        BeanUtils.copyProperties(comMngVolunteerMngDO, vo);
        return R.ok(vo);
    }
    /**
     * 志愿者导入
     *
     * @param list        志愿者数据列表
     * @param communityId 社区id
     * @param userId      用户id
     * @return 导入结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R importVolunteerAdmin(List<ComMngVolunteerExcelVO> list, Long communityId, Long userId){
        //错误集合
        List<ComMngVolunteerErrorExcelVO> errorList = new ArrayList<>();
        for (ComMngVolunteerExcelVO excel : list) {
            //查询组织
            ComMngVolunteerOrgTeam orgVo = comMngVolunteerOrgTeamMapper.selectOne(new QueryWrapper<ComMngVolunteerOrgTeam>().lambda()
                    .eq(ComMngVolunteerOrgTeam::getName,excel.getOrgName()).eq(ComMngVolunteerOrgTeam::getCommunityId,communityId)
                    .eq(ComMngVolunteerOrgTeam::getParentId,0));
            if(orgVo == null){
                ComMngVolunteerErrorExcelVO errorExcelVO = new ComMngVolunteerErrorExcelVO();
                BeanUtils.copyProperties(excel,errorExcelVO);
                errorExcelVO.setError("该志愿者组织不存在,请先通过后台添加该志愿者组织");
                errorList.add(errorExcelVO);
                continue;
            }
            //查询队伍
            ComMngVolunteerOrgTeam teamVo = comMngVolunteerOrgTeamMapper.selectOne(new QueryWrapper<ComMngVolunteerOrgTeam>().lambda()
                    .eq(ComMngVolunteerOrgTeam::getName,excel.getTeamName()).eq(ComMngVolunteerOrgTeam::getCommunityId,communityId)
                    .eq(ComMngVolunteerOrgTeam::getParentId,orgVo.getId()));
            if(teamVo == null){
                ComMngVolunteerErrorExcelVO errorExcelVO = new ComMngVolunteerErrorExcelVO();
                BeanUtils.copyProperties(excel,errorExcelVO);
                errorExcelVO.setError("该志愿者队伍不存在,请先通过后台添加该志愿者队伍");
                errorList.add(errorExcelVO);
                continue;
            }
            //查询技能
            ComMngVolunteerSkill skillVo = comMngVolunteerSkillMapper.selectOne(new QueryWrapper<ComMngVolunteerSkill>().lambda()
                    .eq(ComMngVolunteerSkill::getName,excel.getSkillName()).eq(ComMngVolunteerSkill::getCommunityId,communityId));
            if(skillVo == null){
                ComMngVolunteerErrorExcelVO errorExcelVO = new ComMngVolunteerErrorExcelVO();
                BeanUtils.copyProperties(excel,errorExcelVO);
                errorExcelVO.setError("该志愿者技能不存在,请先通过后台添加该志愿者技能");
                errorList.add(errorExcelVO);
                continue;
            }
            Date nowDate = new Date();
            ComMngVolunteerMngDO comMngVolunteerMngDO = comMngVolunteerMngDAO.selectOne(new QueryWrapper<ComMngVolunteerMngDO>().lambda()
                    .eq(ComMngVolunteerMngDO::getIdCard,excel.getIdCard()).in(ComMngVolunteerMngDO::getState,1,2));
            if(comMngVolunteerMngDO != null){
                if(comMngVolunteerMngDO.getState().equals(1)){
                    BeanUtils.copyProperties(excel,comMngVolunteerMngDO);
                    comMngVolunteerMngDO.setState(2);
                    comMngVolunteerMngDO.setOrgId(orgVo.getId());
                    comMngVolunteerMngDO.setTeamId(teamVo.getId());
                    comMngVolunteerMngDO.setSkillId(skillVo.getId());
                    comMngVolunteerMngDAO.updateById(comMngVolunteerMngDO);
                }else{
                    ComMngVolunteerErrorExcelVO errorExcelVO = new ComMngVolunteerErrorExcelVO();
                    BeanUtils.copyProperties(excel,errorExcelVO);
                    errorExcelVO.setError("该志愿者已存在,不可重复添加");
                    errorList.add(errorExcelVO);
                }
            }else{
                comMngVolunteerMngDO = new ComMngVolunteerMngDO();
                BeanUtils.copyProperties(excel,comMngVolunteerMngDO);
                comMngVolunteerMngDO.setCommunityId(communityId);
                comMngVolunteerMngDO.setState(2);
                comMngVolunteerMngDO.setOrgId(orgVo.getId());
                comMngVolunteerMngDO.setTeamId(teamVo.getId());
                comMngVolunteerMngDO.setSkillId(skillVo.getId());
                comMngVolunteerMngDO.setCreateAt(nowDate);
                //查询用户id,如果存在则需要绑定
                Long volunteerUserId = comMngVolunteerMngDAO.selectUserIdByIdCard(excel.getIdCard());
                if(volunteerUserId != null){
                    comMngVolunteerMngDO.setSubmitUserId(volunteerUserId);
                }
                comMngVolunteerMngDAO.insert(comMngVolunteerMngDO);
            }
        }
        if(errorList.size() > 0){
            return R.fail(errorList);
        }
        return R.ok();
    }
}