| | |
| | | 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 cn.hutool.core.util.PhoneUtil; |
| | | import com.doumee.core.annotation.excel.ExcelImporter; |
| | | 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.LaborEmpowerDTO; |
| | | 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.collections.CollectionUtils; |
| | | 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.util.CollectionUtils; |
| | | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | 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 { |
| | |
| | | @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 (PhoneUtil.isPhone(member.getPhone())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"电话号码格式有误"); |
| | | } |
| | | 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(), 5, 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 |
| | |
| | | @Override |
| | | public void updateById(Member member) { |
| | | memberMapper.updateById(member); |
| | | } |
| | | |
| | | @Override |
| | | public void updateStatusById(Member member) { |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Member update = new Member(); |
| | | update.setEditDate(new Date()); |
| | | update.setEditor(loginUserInfo.getId()); |
| | | update.setStatus(member.getStatus()); |
| | | memberMapper.updateById(update); |
| | | } |
| | | |
| | | @Override |
| | |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | @Override |
| | | public void importMemberBatch(LaborEmpowerDTO laborEmpowerDTO) { |
| | | try { |
| | | ExcelImporter ie = new ExcelImporter(laborEmpowerDTO.getFile(),0,0); |
| | | |
| | | List<LaborEmpowerDTO.LaborMemberEmpower> dataList = ie.getDataList(LaborEmpowerDTO.LaborMemberEmpower.class,null); |
| | | |
| | | if (CollectionUtils.isEmpty(dataList)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"文件无数据记录"); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | |
| | | } |
| | | // |
| | | |
| | | } |
| | | } |