jiaosong
2023-12-04 eb433a1a8a1c23738277ff5e7234eb8ccb1d7f74
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,25 +1,45 @@
package com.doumee.service.business.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdcardUtil;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.request.LaborMemberDTO;
import com.doumee.dao.admin.response.MemberInfoDTO;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.TrainTimeMapper;
import com.doumee.dao.business.join.MemberJoinMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.Empower;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.TrainTime;
import com.doumee.service.business.MemberService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 人员信息表Service实现
 * @author 江蹄蹄
 * @date 2023/11/23 18:16
 * @date 2023/11/30 15:33
 */
@Service
public class MemberServiceImpl implements MemberService {
@@ -27,10 +47,70 @@
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private MemberJoinMapper memberJoinMapper;
    @Autowired
    private TrainTimeMapper trainTimeMapper;
    @Override
    public Integer create(Member member) {
        memberMapper.insert(member);
        return member.getId();
    }
    @Transactional
    @Override
    public Integer laborMemberCreate(LaborMemberDTO member) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if (IdcardUtil.isValidCard(member.getIdcardNo())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误");
        }
        if (IdcardUtil.getGenderByIdCard(member.getIdcardNo()) == member.getSex()){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"性别有误");
        }
        //获取出生日期
        String birthByIdCard = IdcardUtil.getBirthByIdCard(member.getIdcardNo());
        //脱敏操作
        String hide = IdcardUtil.hide(member.getIdcardNo(), 6, 14);
        //转换日期
        DateTime yyyyMMdd = DateUtil.parse(birthByIdCard, "yyyyMMdd");
        Member insert = new Member();
        insert.setCreator(loginUserInfo.getId());
        insert.setCreateDate(new Date());
        insert.setEditor(loginUserInfo.getId());
        insert.setEditDate(new Date());
        insert.setIsdeleted(Constants.ZERO);
        insert.setCompanyId(member.getCompanyId());
        insert.setFaceImg(member.getFaceImg());
        insert.setImgurl(member.getImgurl());
        insert.setType(Constants.ZERO);
        insert.setName(member.getName());
        insert.setBirthday(yyyyMMdd);
        insert.setPhone(member.getPhone());
        insert.setIdcardNo(Utils.Secure.encryptString(member.getIdcardNo()));
        IdcardUtil.isValidCard(member.getIdcardNo());
        insert.setIdcardDecode(hide);
        insert.setStatus(Constants.ZERO);
        insert.setParentId(member.getParentId());
        memberMapper.insert(insert);
        TrainTime trainTime = new TrainTime();
        trainTime.setCreator(loginUserInfo.getId().toString());
        trainTime.setCreateDate(new Date());
        trainTime.setEdirot(loginUserInfo.getId().toString());
        trainTime.setEditDate(new Date());
        trainTime.setIsdeleted(Constants.ZERO);
        trainTime.setMemberId(insert.getId());
        trainTime.setStartTime(Utils.Date.getStart(member.getStartTime()));
        trainTime.setEndTime(Utils.Date.getDayEnd(member.getEndTime()));
//        trainTime.setImportStatus();
//        trainTime.setImportInfo();
        trainTimeMapper.insert(trainTime);
        return insert.getId();
    }
    @Override
@@ -83,7 +163,7 @@
        QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
        return memberMapper.selectList(wrapper);
    }
    @Override
    public PageData<Member> findPage(PageWrap<Member> pageWrap) {
        IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -207,6 +287,13 @@
        if (pageWrap.getModel().getRoleId() != null) {
            queryWrapper.lambda().eq(Member::getRoleId, pageWrap.getModel().getRoleId());
        }
        if (pageWrap.getModel().getRoleDate() != null) {
            queryWrapper.lambda().ge(Member::getRoleDate, Utils.Date.getStart(pageWrap.getModel().getRoleDate()));
            queryWrapper.lambda().le(Member::getRoleDate, Utils.Date.getEnd(pageWrap.getModel().getRoleDate()));
        }
        if (pageWrap.getModel().getErpOrgId() != null) {
            queryWrapper.lambda().eq(Member::getErpOrgId, pageWrap.getModel().getErpOrgId());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
@@ -218,6 +305,35 @@
    }
    @Override
    public PageData<MemberInfoDTO> findLaborMemberInfoPage(PageWrap<MemberInfoDTO> pageWrap) {
        IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
        MemberInfoDTO model = pageWrap.getModel();
        Utils.MP.blankToNull(model);
        Date end = Utils.Date.getEnd(pageWrap.getModel().getTrainTimeEndTime());
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId)
                .leftJoin(TrainTime.class,TrainTime::getMemberId,Member::getId)
                .leftJoin(Empower.class,Empower::getMemberId,Member::getId);
        queryWrapper.selectAll(Member.class)
                    .selectAs(Company::getName,MemberInfoDTO::getCompanyName)
                    .selectAs(Company::getLinkName,MemberInfoDTO::getLinkName)
                    .select("Max(t1.endTime)","trainTimeEndTime")
                    .select("Max(t2.endTime)","empowerEndTime");
        queryWrapper.eq(Objects.nonNull(model.getCompanyId()),Member::getCompanyId,model.getCompanyId())
                    .like(StringUtils.isNotBlank(model.getName()),Member::getName,model.getName())
                    .like(StringUtils.isNotBlank(model.getPhone()),Member::getPhone,model.getPhone())
                    .like(StringUtils.isNotBlank(model.getIdcardDecode()),Member::getIdcardDecode,model.getIdcardDecode())
                    .having("trainTimeEndTime < "+ DateUtil.format(end,"yyyy-MM-dd HH:mm:ss"));
        IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
        if (!CollectionUtils.isEmpty(memberIPage.getRecords())){
            memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode())));
        }
        return PageData.from(memberIPage);
    }
    @Override
    public long count(Member member) {
        QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
        return memberMapper.selectCount(wrapper);