jiangping
2024-01-05 cb6874174975a370cb60f1557704c9d49a05f9e6
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -110,7 +110,7 @@
    public  int  initHkConfig(){
        ErpConstants.approveUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_APPROVE_URL).getCode();
        ErpConstants.orgListUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_ORGLIST_URL).getCode();
        ErpConstants.userListUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_USERSTATUS_RL).getCode();
        ErpConstants.userListUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_USERLIST_URL).getCode();
        ErpConstants.userStatusUrl=systemDictDataBiz.queryByCode(Constants.ERP,Constants.ERP_USERSTATUS_RL).getCode();
        return  0;
    }
@@ -122,6 +122,9 @@
    @Override
    @Transactional
    public String syncCompany(OrgListRequest param){
        if(!StringUtils.equals(Constants.ONE+"", systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ORG_USER_ORIGIN).getCode())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,当前不支持组织同步操作~");
        }
        //获取ERP组织信息(全量同步)
        List<ErpOrgListResponse>  list = ErpTool.getErpOrgList(ErpConstants.orgListUrl,param);
        if(list !=null && list.size()>0){
@@ -177,13 +180,15 @@
                    //如果已删除,加入删除集合中
                    delIds.add(company.getId());
                    continue;
                }else{
                    company.setIsdeleted(Constants.ZERO);
                }
                updateList.add(addUpdateCompanyModel(respone,company,date));
            }
        }
        if(allList!=null && allList.size()>0){
            for(Company  c : allList){
                if(isCompanyDeleted(c,list)){
                if(!isCompanyDeleted(c,list)){
                    delIds.add(c.getId());
                }
            }
@@ -217,13 +222,16 @@
     */
    private Company getAddCompanyModel(ErpOrgListResponse respone, Date date) {
        Company    company = new Company();
        company.setStatus(respone.getStatus());
        company.setIsdeleted(Constants.ZERO);
        company.setName(respone.getName());
        company.setErpId(respone.getId());
        company.setCreateDate(date);
        company.setType(Constants.ONE);
        company.setCode(respone.getCode());
        company.setErpParentId(respone.getParentOrgId());
        if(StringUtils.isNotBlank(respone.getParentOrgId())&&!respone.getParentOrgId().equals("orgRoot")){
            company.setErpParentId(respone.getParentOrgId());
        }
        company.setErpDate(date);
        company.setHkStatus(Constants.ZERO);
        return  company;
@@ -260,6 +268,9 @@
    @Override
    @Transactional
    public  String syncUsers(UserListRequest param){
        if(!StringUtils.equals(Constants.ONE+"", systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ORG_USER_ORIGIN).getCode())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,当前不支持人员同步操作~");
        }
        List<ErpUserListResponse>  list = ErpTool.getErpUserList(ErpConstants.userListUrl,param);
        if(list !=null && list.size()>0) {
            List<Member> addList = new ArrayList<>();
@@ -292,10 +303,11 @@
                        .set(Member::getHkStatus,Constants.ZERO)
                        .set(Member::getIsdeleted, Constants.ONE).in(Member::getId,delIds));
            }
            return "同步数据:新增【"+addList.size()+"】条,更新【"+updateList.size()+"】条,删除【"+delIds.size()+"】条";
        }else{
            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "同步ERP数据为空!");
        }
        return  null;
    }
    public void dealRoleEmpower(Member member,Date startTime , Date endTime){
@@ -309,6 +321,13 @@
    private void dealUserChangeList(List<ErpUserListResponse> list, List<Member> addList, List<Member> updateList, List<Member> delList, List<Member> allList) {
        Date date = new Date();
        for(ErpUserListResponse response : list){
            Company company =  new Company();
            if(StringUtils.isNotBlank(response.getOrgId())){
                company = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,response.getOrgId()).last("limit 1"));
                if(Objects.isNull(company)){
                    continue;
                }
            }
            //根据 erpId 查询用户信息,判断是新增还是更新
            Member member = findUserByERPId(allList,response.getId());
            if(member == null){
@@ -317,7 +336,7 @@
                    continue;
                }
                //封装新增组织对象数据
                addList.add(getAddMemberModel(response,date));
                addList.add(getAddMemberModel(response,date,company));
            }else{
                //如果是更新
                if(Constants.formatIntegerNum(response.getIsdeleted()) == Constants.ONE){
@@ -327,20 +346,19 @@
//                    delIds.add(member.getId());
                    continue;
                }
                updateList.add(addUpdateMemberModel(response,member,date));
                updateList.add(addUpdateMemberModel(response,member,date,company));
            }
        }
        if(allList!=null && allList.size()>0){
            for(Member  c : allList){
                if(isUserDeleted(c,list)){
                if(!Constants.equalsInteger(c.getIsdeleted(),Constants.ONE) &&  !isUserDeleted(c,list)){
                    delList.add(c);
//                    delIds.add(c.getId());
                }
            }
        }
    }
    private Member getAddMemberModel(ErpUserListResponse param, Date date) {
    private Member getAddMemberModel(ErpUserListResponse param, Date date,Company company) {
        Member member = new Member();
        BeanUtils.copyProperties(param,member);
        member.setCreateDate(new Date());
@@ -349,26 +367,31 @@
        member.setErpDate(new Date());
        member.setErpId(param.getId());
        member.setFsStatus(Constants.ZERO);
        member.setStatus(param.getStatus());
        member.setType(Constants.memberType.internal);
        String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo());
        member.setIdcardNo(encryptIdNo);
        member.setIdcardDecode(Constants.getTuominStr(param.getIdNo()));
        member.setErpOrgId(param.getOrgId());
        member.setHkStatus(Constants.ZERO);
        member.setRoleIds(param.getRoleIds());
        member.setCompanyId(Objects.isNull(company)?null:company.getId());
        member.setErpOrgId(param.getOrgId());
        return  member;
    }
    private Member addUpdateMemberModel(ErpUserListResponse param, Member member, Date date) {
    private Member addUpdateMemberModel(ErpUserListResponse param, Member member, Date date,Company company) {
        BeanUtils.copyProperties(param,member);
        String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo());
        member.setIdcardNo(encryptIdNo);
        member.setIdcardDecode(Constants.getTuominStr(param.getIdNo()));
        member.setErpOrgId(param.getOrgId());
        member.setEditDate(new Date());
        member.setStatus(param.getStatus());
        member.setErpDate(new Date());
        member.setHkStatus(Constants.ZERO);
        member.setRoleIds(param.getRoleIds());
        member.setCompanyId(Objects.isNull(company)?null:company.getId());
        member.setErpOrgId(param.getOrgId());
        return  member;
    }
@@ -424,8 +447,8 @@
            result.setToken(token);
            result.setExpireTime(Constants.RedisKeys.EXPIRE_TIME);
            return result;
        }catch (BusinessException e ){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),e.getMessage());
        }catch (BusinessException e){
            throw e;
        }finally {
            Map<String,String> param = new HashMap<>();
            param.put("accessKey",accessKey);
@@ -478,8 +501,8 @@
                   }
               }
           }
       }catch (Exception e){
           e.printStackTrace();
       }catch (BusinessException e){
            throw e;
       }finally {
           saveInterfaceLog(param,"/visitBiz/resource/role/list",JSONObject.toJSONString(result),Constants.ZERO);
       }
@@ -510,8 +533,8 @@
                    result.add(parkListResponse);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/visitBiz/resource/park/list",JSONObject.toJSONString(result),Constants.ZERO);
        }
@@ -565,8 +588,8 @@
            }
            IPage<VisitEventListResponse> pageData = visitEventJoinMapper.selectJoinPage(page, VisitEventListResponse.class,queryWrapper);
            result = PageData.from(pageData);
        }catch (Exception e){
            e.printStackTrace();
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/visitBiz/resource/visit/list",JSONObject.toJSONString(result),Constants.ZERO);
        }
@@ -619,8 +642,8 @@
            IPage<DoorEventListResponse> pageData = deviceEventJoinMapper.selectJoinPage(page, DoorEventListResponse.class,queryWrapper);
            result = PageData.from(pageData);
        }catch (Exception e){
            e.printStackTrace();
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/visitBiz/resource/doorEvent/list",JSONObject.toJSONString(result),Constants.ZERO);
        }
@@ -683,8 +706,8 @@
                    i.setVehiclePicUrl(null);
                }
            });
        }catch (Exception e){
            e.printStackTrace();
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/visitBiz/resource/carEventList",JSONObject.toJSONString(result),Constants.ZERO);
        }
@@ -701,22 +724,35 @@
            if(Objects.isNull(param)
                    ||Objects.isNull(param.getId())
                    ||StringUtils.isBlank(param.getName())
                    ||StringUtils.isBlank(param.getLinkName())
                    ||StringUtils.isBlank(param.getLinkPhone())
                    ||Objects.isNull(param.getEditDate())
//                    ||StringUtils.isBlank(param.getLinkName())
//                    ||StringUtils.isBlank(param.getLinkPhone())
//                    ||Objects.isNull(param.getEditDate())
            ){
                throw new BusinessException(ResponseStatus.BAD_REQUEST);
            }
            Company company = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,param.getId()).last("limit 1"));
            Company parentCompany = new Company();
            if(StringUtils.isNotBlank(param.getParentId())){
                parentCompany = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,param.getParentId()).last("limit 1"));
                if(Objects.isNull(parentCompany)){
                    throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到上级组织数据");
                }
            }
            String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode();
            if(Objects.isNull(company)){
                company = new Company();
//                BeanUtils.copyProperties(param,company);
                company.setId(null);
                company.setCreateDate(new Date());
                company.setHkStatus(Constants.ZERO);
                company.setErpStatus(Constants.ONE);
                company.setErpDate(new Date());
                company.setName(param.getName());
               /* if(StringUtils.isNotBlank(param.getParentId())){
                    company.setHkId(rootOrgId);
                }*/
                company.setErpId(param.getId());
                company.setErpParentId(param.getParentId());
                company.setParentId(Objects.isNull(parentCompany)?null:parentCompany.getId());
                company.setErpParentId(param.getParentId());
                company.setFsStatus(Constants.ZERO);
                company.setType(Constants.ONE);
@@ -728,16 +764,21 @@
//                BeanUtils.copyProperties(param,company);
                company.setEditDate(new Date());
                company.setErpId(param.getId());
            /*    if(StringUtils.isNotBlank(param.getParentId())){
                    company.setHkId(rootOrgId);
                }*/
                company.setHkStatus(Constants.ZERO);
                company.setErpDate(new Date());
                company.setName(param.getName());
                company.setErpParentId(param.getParentId());
                company.setParentId(Objects.isNull(parentCompany)?null:parentCompany.getId());
                company.setLinkName(param.getLinkName());
                company.setLinkPhone(param.getLinkPhone());
                companyMapper.updateById(company);
                //TODO 海康数据更新
            }
        }catch (Exception e){
            e.printStackTrace();
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/visitBiz/resource/orgUpdate",null,Constants.ZERO);
        }
@@ -749,19 +790,23 @@
    public void userUpdate(UserUpdateRequest param){
        try{
            if(Objects.isNull(param)
                    ||Objects.isNull(param.getId())
                    ||StringUtils.isBlank(param.getName())
                    ||StringUtils.isBlank(param.getIdNo())
                    ||Objects.isNull(param.getIdType())
                    ||Objects.isNull(param.getSex())
                    ||Objects.isNull(param.getOrgId())
                    ||StringUtils.isNotBlank(param.getFaceImg())
                    ||StringUtils.isNotBlank(param.getCode())
                    ||StringUtils.isNotBlank(param.getPhone())
                    ||Objects.isNull(param.getEditDate())){
                    ||Objects.isNull(param.getId())//编码
                    ||StringUtils.isBlank(param.getName())//名称
                    ||StringUtils.isBlank(param.getIdNo())//证件号
                    ||Objects.isNull(param.getIdType())//证件类型
                    ||Objects.isNull(param.getSex())//性别
                    ||Objects.isNull(param.getOrgId())//所属组织编码
                    ||StringUtils.isBlank(param.getFaceImg())//人脸照片
                    ||StringUtils.isBlank(param.getCode())//工号
                    ||StringUtils.isBlank(param.getPhone())//手机号
             ){
                throw new BusinessException(ResponseStatus.BAD_REQUEST);
            }
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getErpId,param.getId()).last("limit 1"));
            Company company = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,param.getOrgId()).last("limit 1"));
            if(Objects.isNull(company)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到组织信息");
            }
            List<Integer> doorIds = null;
              if(Objects.isNull(member)){
                member = new Member();
@@ -802,8 +847,8 @@
            dealMemberRoleEmpower(member,doorIds,param.getValidStartTime(),param.getValidEndTime());
            //添加人员卡片数据
            dealMemberCard(member,param);
        }catch (Exception e){
            e.printStackTrace();
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/visitBiz/resource/userUpdate",null,Constants.ZERO);
        }
@@ -946,7 +991,7 @@
                .set(ParkBook::getHkStatus,Constants.ZERO)
        );
        //查询车库信息
        List<Parks> parksList = parksMapper.selectList(new QueryWrapper<Parks>().lambda().in(Parks::getId,param.getPartIdList()));
        List<Parks> parksList = parksMapper.selectList(new QueryWrapper<Parks>().lambda().in(Parks::getId,param.getParkIdList()));
        if(CollectionUtils.isNotEmpty(parksList)){
            List<ParkBook> parkBookList = new ArrayList<>();
            for (Parks parks:parksList) {
@@ -993,8 +1038,8 @@
                    visitsMapper.updateById(i);
                });
            }
        }catch (Exception e){
            e.printStackTrace();
        }catch (BusinessException e){
            throw e;
        }finally {
            saveInterfaceLog(param,"/visitBiz/resource/approveApply",null,Constants.ZERO);
        }