jiangping
2024-02-27 cd9cbc46c0774c01674be435bcc86d4a03ada687
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2,19 +2,16 @@
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.core.util.ReUtil;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.DataSyncConfig;
import com.doumee.config.Jwt.JwtPayLoad;
import com.doumee.config.Jwt.JwtTokenUtil;
import com.doumee.core.annotation.excel.ExcelImporter;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
@@ -28,18 +25,17 @@
import com.doumee.dao.admin.request.LaborMemberDTO;
import com.doumee.dao.admin.request.MemberQuery;
import com.doumee.dao.admin.response.MemberInfoDTO;
import com.doumee.dao.admin.response.StagingDataVO;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.MemberJoinMapper;
import com.doumee.dao.business.join.RetentionJoinMapper;
import com.doumee.dao.business.join.UserActionJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.reqeust.AccountLoginDTO;
import com.doumee.dao.web.reqeust.CheckVisitedDTO;
import com.doumee.dao.web.reqeust.VisitMemberDTO;
import com.doumee.dao.web.reqeust.VisitRecordDTO;
import com.doumee.dao.web.response.MemberVO;
import com.doumee.dao.web.response.VisitRecordVO;
import com.doumee.dao.web.response.WxAuthorizeVO;
import com.doumee.service.business.MemberService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -49,7 +45,6 @@
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -95,7 +90,18 @@
    private UserActionJoinMapper userActionJoinMapper;
    @Autowired
    private CompanyMapper companyMapper;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private DataSyncConfig dataSyncConfig;
    @Autowired
    private RetentionJoinMapper retentionJoinMapper;
    @Autowired
    private VisitsMapper visitsMapper;
    @Override
@@ -571,7 +577,6 @@
        } catch (Exception e) {
        }
//
    }
@@ -581,6 +586,7 @@
        MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Member.class);
        queryWrapper.selectAs(Company::getName,Member::getCompanyName);
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.in(Objects.nonNull(pageWrap.getModel().getCompanyIds())&&pageWrap.getModel().getCompanyIds().size()>0,
                        Member::getCompanyId,pageWrap.getModel().getCompanyIds())
@@ -592,12 +598,15 @@
                .isNotNull(!Objects.isNull(pageWrap.getModel().getHasFace())&&Constants.equalsInteger(pageWrap.getModel().getHasFace(),Constants.ONE),Member::getFaceId)
                .eq(Objects.nonNull(pageWrap.getModel().getCanVisit()),Member::getCanVisit,pageWrap.getModel().getCanVisit())
                .eq(Objects.nonNull(pageWrap.getModel().getStatus()),Member::getStatus,pageWrap.getModel().getStatus())
                .eq(StringUtils.isNotBlank(pageWrap.getModel().getErpOrgId()),Member::getErpOrgId,pageWrap.getModel().getErpOrgId())
                .eq(Member::getIsdeleted,Constants.ZERO)
//                .eq(Member::getStatus,Constants.Status.ENABLE.getValue())
                .eq(Member::getType,Constants.memberType.internal)
                .orderByDesc(Member::getCreateDate);
        if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin())==DataSyncConfig.origin.erp){
            queryWrapper.eq( StringUtils.isNotBlank(pageWrap.getModel().getErpOrgId()),Member::getErpOrgId,pageWrap.getModel().getErpOrgId());
        }else{
            queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getCompanyId()),Member::getCompanyId,pageWrap.getModel().getCompanyId());
        }
        IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
        if(CollectionUtils.isNotEmpty(memberIPage.getRecords())){
@@ -630,13 +639,23 @@
            roleIds = roleIds.replace("[","").replace("]","");
            List<String> ids = Arrays.asList(roleIds.split(","));
            ids.forEach(i->{
                DeviceRole deviceRole = deviceRoleList.stream().filter(m->m.getId().toString().equals(i)).findFirst().get();
//                DeviceRole deviceRole = deviceRoleList.stream().filter(m->m.getId().toString().equals(i)).findFirst().get();
                DeviceRole deviceRole = findRoleById(deviceRoleList,i);
                if(!Objects.isNull(deviceRole)){
                    stringList.add(deviceRole.getName());
                }
            });
        }
        return stringList;
    }
    private DeviceRole findRoleById(List<DeviceRole> deviceRoleList, String id) {
        for(DeviceRole role  : deviceRoleList){
            if(StringUtils.equals(role.getId().toString(),id)){
                return role;
            }
        }
        return null;
    }
    @Override
@@ -654,13 +673,16 @@
                .and(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()), ms->ms.like(Member::getVisitCompanyName,pageWrap.getModel().getCompanyName())
                        .or().like(Company::getName,pageWrap.getModel().getCompanyName()))
                .like(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,pageWrap.getModel().getIdcardNo())
                .eq(StringUtils.isNotBlank(pageWrap.getModel().getErpOrgId()),Member::getErpOrgId,pageWrap.getModel().getErpOrgId())
                .eq(Objects.isNull(pageWrap.getModel().getStatus()),Member::getStatus,Constants.Status.ENABLE.getValue())
                .eq(!Objects.isNull(pageWrap.getModel().getStatus()),Member::getStatus,pageWrap.getModel().getStatus())
                .eq(Member::getType,Constants.memberType.visitor)
                .eq(Member::getIsdeleted,Constants.ZERO)
                .orderByDesc(Member::getCreateDate);
        if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin())==DataSyncConfig.origin.erp){
            queryWrapper.eq( StringUtils.isNotBlank(pageWrap.getModel().getErpOrgId()),Member::getErpOrgId,pageWrap.getModel().getErpOrgId());
        }else{
            queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getCompanyId()),Member::getCompanyId,pageWrap.getModel().getCompanyId());
        }
        IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
        return PageData.from(memberIPage);
@@ -688,6 +710,7 @@
                        .or().like(Member::getVisitCompanyName,pageWrap.getModel().getCompanyName()))
                .like(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,pageWrap.getModel().getIdcardNo())
                .eq(Member::getStatus,Constants.Status.FREEZE.getValue())
                .eq(StringUtils.isNotBlank(pageWrap.getModel().getCompanyId()),Company::getId,pageWrap.getModel().getCompanyId())
                .eq(Objects.nonNull(pageWrap.getModel().getCode()),Member::getCode,pageWrap.getModel().getCode())
                .orderByDesc(Member::getCreateDate);
@@ -863,13 +886,16 @@
                .eq(Member::getPhone,checkVisitedDTO.getMobile())
                .eq(validType.equals(Constants.ONE),Member::getName,checkVisitedDTO.getName())
                .eq(Member::getIsdeleted,Constants.ZERO)
                .eq(Member::getStatus,Constants.ZERO)
//                .eq(Member::getStatus,Constants.ZERO)
                .eq(Member::getCanVisit,Constants.ONE)
                .eq(Member::getType,Constants.memberType.internal)
                .last(" limit 1 ")
        );
        MemberVO memberVO = new MemberVO();
        if(!Objects.isNull(member)){
            if(!member.getStatus().equals(Constants.ZERO)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"被访人账号异常,请确认后再试");
            }
            BeanUtils.copyProperties(member,memberVO);
        }else{
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
@@ -962,6 +988,45 @@
    @Override
    public StagingDataVO stagingHead(StagingDataVO stagingHeadVO){
        //人员信息
        List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO));
        if(CollectionUtils.isNotEmpty(memberList)){
            stagingHeadVO.setWorkerCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.internal)).count());
            stagingHeadVO.setLwCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.lw_visitor)).count());
            stagingHeadVO.setVisitorCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.visitor)).count());
        }
        //在场车辆
        stagingHeadVO.setPresenceCarCount(retentionJoinMapper.selectCount(new QueryWrapper<Retention>().lambda().eq(Retention::getType,3)));
        //长期车辆
        stagingHeadVO.setLongCarCount(retentionJoinMapper.selectCount(new QueryWrapper<Retention>().lambda().eq(Retention::getType,3)
                .exists(" select 1 from park_book p where p.origin = 0 and p.car_code = retention.car_no and p.ISDELETED = 0  ")
        ));
        stagingHeadVO.setVisitorCarCount(stagingHeadVO.getPresenceCarCount() - stagingHeadVO.getLongCarCount());
        stagingHeadVO.setSupplierCount(companyMapper.selectCount(new QueryWrapper<Company>().lambda().eq(Company::getIsdeleted,Constants.ZERO)));
        return stagingHeadVO;
    }
    @Override
    public StagingDataVO stagingBody(StagingDataVO stagingHeadVO){
        List<Map<String,Object>> companyMaps = memberJoinMapper.selectJoinMaps(
                new MPJLambdaWrapper<Member>()
                        .select("count(1) as memberCount, t1.name as companyName")
                        .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                        .eq(Member::getType,Constants.memberType.lw_visitor)
                        .groupBy(Company::getId,Company::getName)
        );
        List<Map<String,Object>> retentionMaps = retentionJoinMapper.selectMaps(new MPJLambdaWrapper<Retention>()
                        .select(" count(1) as memberCount, type as memberType ")
                        .ne(Retention::getType,3)
                .groupBy(Retention::getType)
        );
        stagingHeadVO.setCompanyUsers(companyMaps);
        stagingHeadVO.setRetentionUsers(retentionMaps);
        return stagingHeadVO;
    }