| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.TypeReference; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | |
| | | import com.doumee.core.haikang.model.param.respose.OrgOrUserAddResponse; |
| | | import com.doumee.core.haikang.model.param.respose.OrgUpdateFailureResponse; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | import com.doumee.core.jiandaoyun.api.arch.DeptApiClient; |
| | | import com.doumee.core.jiandaoyun.constants.HttpConstant; |
| | | import com.doumee.core.jiandaoyun.model.dept.DeptEntityModel; |
| | | import com.doumee.core.wms.model.response.WmsBaseDataResponse; |
| | | import com.doumee.core.wms.model.response.WmsBaseResponse; |
| | | import com.doumee.service.business.third.model.LoginUserInfo; |
| | | import com.doumee.service.business.third.model.PageData; |
| | | import com.doumee.service.business.third.model.PageWrap; |
| | |
| | | .eq(Company::getErpId,jsonArray.getLong(i)) |
| | | ); |
| | | OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse = dingTalk.syncDepartmentInfo(jsonArray.getLong(i)); |
| | | Company param = new Company(); |
| | | param.setName(deptGetResponse.getName()); |
| | | param.setErpId(deptGetResponse.getDeptId().toString()); |
| | | param.setErpParentId(deptGetResponse.getParentId().toString()); |
| | | if(Objects.isNull(company)){ |
| | | getAddCompanyModel(deptGetResponse,company); |
| | | param.setSortnum(deptGetResponse.getOrder().intValue());//默认最上面 |
| | | getAddCompanyModel(param); |
| | | }else{ |
| | | getUpdateCompanyModel(deptGetResponse,company); |
| | | getUpdateCompanyModel(param,company); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public String syncDDCompany() throws ApiException { |
| | | List<OapiV2DepartmentGetResponse.DeptGetResponse> list = dingTalk.syncAllDDDepartmentList(); |
| | | if(list !=null && list.size()>0){ |
| | | List<Company> addList = new ArrayList<>(); |
| | | List<Company> updateList = new ArrayList<>(); |
| | | List<Long> delIds = new ArrayList<>();//修改为使用钉钉id erpId |
| | | List<Company> allList = companyMapper.selectList(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getIsdeleted,Constants.ZERO).eq(Company::getType,Constants.ONE)); |
| | | dealCompanyChangeList(list,addList,updateList,delIds,allList); |
| | | if(delIds.size()>0){ |
| | | syncDelCompany(delIds); |
| | | public String syncDDCompany() { |
| | | try { |
| | | List<OapiV2DepartmentGetResponse.DeptGetResponse> list = dingTalk.syncAllDDDepartmentList(); |
| | | if(list !=null && list.size()>0){ |
| | | List<Company> addList = new ArrayList<>(); |
| | | List<Company> updateList = new ArrayList<>(); |
| | | List<Long> delIds = new ArrayList<>();//修改为使用钉钉id erpId |
| | | List<Company> allList = companyMapper.selectList(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getIsdeleted,Constants.ZERO).eq(Company::getType,Constants.ONE)); |
| | | dealCompanyChangeList(list,addList,updateList,delIds,allList); |
| | | if(delIds.size()>0){ |
| | | syncDelCompany(delIds); |
| | | } |
| | | return "同步数据:新增【"+addList.size()+"】条,更新【"+updateList.size()+"】条,删除【"+delIds.size()+"】条"; |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "同步钉钉数据为空!"); |
| | | } |
| | | return "同步数据:新增【"+addList.size()+"】条,更新【"+updateList.size()+"】条,删除【"+delIds.size()+"】条"; |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "同步钉钉数据为空!"); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "同步钉钉数据异常!"); |
| | | } |
| | | } |
| | | @Override |
| | | public String syncJdyCompany() { |
| | | //{ |
| | | // "dept_no": 1,//数字 1 为根部门编号。 |
| | | // "has_child": true |
| | | //} |
| | | DeptApiClient deptApiClient = new DeptApiClient(HttpConstant.API_KEY, HttpConstant.HOST); |
| | | try { |
| | | Map<String, Object> result = deptApiClient.deptList(1,true,deptApiClient.getDefaultVersion()); |
| | | if(result!=null && result.get("departments")!=null ){ |
| | | TypeReference<List<DeptEntityModel>> typeReference = new TypeReference<List<DeptEntityModel>>(){}; |
| | | Object obj = result.get("departments"); |
| | | List<DeptEntityModel> list = com.alibaba.fastjson.JSONObject.parseObject(JSON.toJSONString(obj), typeReference.getType()); |
| | | if(list !=null && list.size()>0){ |
| | | List<Company> addList = new ArrayList<>(); |
| | | List<Company> updateList = new ArrayList<>(); |
| | | List<Long> delIds = new ArrayList<>();//修改为使用钉钉id erpId |
| | | List<Company> allList = companyMapper.selectList(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getIsdeleted,Constants.ZERO).eq(Company::getType,Constants.ONE)); |
| | | dealCompanyChangeListJdy(list,addList,updateList,delIds,allList); |
| | | if(delIds.size()>0){ |
| | | syncDelCompany(delIds); |
| | | } |
| | | return "同步数据:新增【"+addList.size()+"】条,更新【"+updateList.size()+"】条,删除【"+delIds.size()+"】条"; |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "同步钉钉数据为空!"); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "同步数据异常!"); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | private void dealCompanyChangeListJdy(List<DeptEntityModel> list, List<Company> addList, List<Company> updateList, List<Long> delIds, List<Company> allList) { |
| | | Date date = new Date(); |
| | | for(DeptEntityModel respone : list){ |
| | | Company param = new Company(); |
| | | param.setName(respone.getName()); |
| | | param.setErpId(respone.getDept_no().toString()); |
| | | param.setErpParentId(respone.getParent_no() !=null?respone.getParent_no() .toString():null); |
| | | param.setSortnum(respone.getSeq()!=null?respone.getSeq().intValue():null);//默认最上面 |
| | | //根据erpid查询企业信息,判断是新增还是更新 |
| | | Company company = findCompanyByERPId(allList,respone.getDept_no().toString()); |
| | | if(company == null){ |
| | | //如果是新增 |
| | | //封装新增组织对象数据 |
| | | addList.add(getAddCompanyModel(param)); |
| | | }else{ |
| | | updateList.add(getUpdateCompanyModel(param,company)); |
| | | } |
| | | } |
| | | if(allList!=null && allList.size()>0){ |
| | | for(Company c : allList){ |
| | | if(!isCompanyDeletedJdy(c,list)){ |
| | | delIds.add(Long.valueOf(c.getErpId())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | private void dealCompanyChangeList(List<OapiV2DepartmentGetResponse.DeptGetResponse> list, List<Company> addList, List<Company> updateList, List<Long> delIds, List<Company> allList) { |
| | | Date date = new Date(); |
| | | for(OapiV2DepartmentGetResponse.DeptGetResponse respone : list){ |
| | | Company param = new Company(); |
| | | param.setName(respone.getName()); |
| | | param.setErpId(respone.getDeptId().toString()); |
| | | param.setErpParentId(respone.getParentId().toString()); |
| | | param.setSortnum(respone.getOrder().intValue());//默认最上面 |
| | | //根据erpid查询企业信息,判断是新增还是更新 |
| | | Company company = findCompanyByERPId(allList,respone.getDeptId().toString()); |
| | | if(company == null){ |
| | | //如果是新增 |
| | | //封装新增组织对象数据 |
| | | addList.add(getAddCompanyModel(respone,new Company())); |
| | | addList.add(getAddCompanyModel(param)); |
| | | }else{ |
| | | updateList.add(getUpdateCompanyModel(respone,company)); |
| | | updateList.add(getUpdateCompanyModel(param,company)); |
| | | } |
| | | } |
| | | if(allList!=null && allList.size()>0){ |
| | |
| | | |
| | | /** |
| | | * 整理钉钉同步 新增组织对象 |
| | | * @param deptGetResponse |
| | | * @return |
| | | */ |
| | | private Company getAddCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse,Company company) { |
| | | return syncDDAddCompanyModel(deptGetResponse,company); |
| | | private Company getAddCompanyModel(Company param ) { |
| | | return syncDDAddCompanyModel(param); |
| | | } |
| | | |
| | | /** |
| | | * 整理钉钉同步 新增 需要修改的组织对象 |
| | | * @param deptGetResponse |
| | | * @param param |
| | | * @param company |
| | | * @return |
| | | */ |
| | | private Company getUpdateCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse, Company company) { |
| | | return syncDDEditCompanyModel(deptGetResponse,company); |
| | | private Company getUpdateCompanyModel(Company param, Company company) { |
| | | return syncDDEditCompanyModel(param,company); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | return false; |
| | | } |
| | | private boolean isCompanyDeletedJdy(Company c, List<DeptEntityModel> list) { |
| | | for(DeptEntityModel m : list){ |
| | | if(StringUtils.equals(c.getErpId(),m.getDept_no().toString())){ |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 整理 钉钉同步的 组织信息 |
| | | * @param deptGetResponse |
| | | * @param company |
| | | * @param param |
| | | * @return |
| | | */ |
| | | public Company syncDDAddCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse,Company company){ |
| | | company = new Company(); |
| | | public Company syncDDAddCompanyModel(Company param ){ |
| | | Company company = new Company(); |
| | | company.setCreateDate(new Date()); |
| | | company.setIsdeleted(Constants.ZERO); |
| | | company.setStatus(Constants.ZERO); |
| | | |
| | | company.setName(deptGetResponse.getName()); |
| | | company.setErpId(deptGetResponse.getDeptId().toString()); |
| | | company.setErpParentId(deptGetResponse.getParentId().toString()); |
| | | company.setSortnum(deptGetResponse.getOrder().intValue());//默认最上面 |
| | | // company.setName(deptGetResponse.getName()); |
| | | // company.setErpId(deptGetResponse.getDeptId().toString()); |
| | | // company.setErpParentId(deptGetResponse.getParentId().toString()); |
| | | // company.setSortnum(deptGetResponse.getOrder().intValue());//默认最上面 |
| | | company.setName(param.getName()); |
| | | company.setErpId(param.getErpId() ); |
| | | company.setErpParentId(param.getErpParentId()); |
| | | company.setSortnum(param.getSortnum());//默认最上面 |
| | | |
| | | company.setType(Constants.ONE); |
| | | String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode(); |
| | |
| | | } |
| | | |
| | | |
| | | public Company syncDDEditCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse,Company company){ |
| | | company.setErpParentId(deptGetResponse.getParentId().toString()); |
| | | public Company syncDDEditCompanyModel(Company param,Company company){ |
| | | company.setErpParentId(param.getErpParentId().toString()); |
| | | String idPath = ""; |
| | | if(StringUtils.isNotBlank(company.getErpParentId())){ |
| | | Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,company.getErpParentId()) |
| | |
| | | company.setParentId(parent.getId()); |
| | | } |
| | | |
| | | company.setName(deptGetResponse.getName()); |
| | | company.setErpId(deptGetResponse.getDeptId().toString()); |
| | | company.setErpParentId(deptGetResponse.getParentId().toString()); |
| | | company.setSortnum(deptGetResponse.getOrder().intValue());//默认最上面 |
| | | company.setName(param.getName()); |
| | | company.setErpId(param.getErpId()); |
| | | company.setSortnum(param.getSortnum());//默认最上面 |
| | | company.setEditDate(new Date()); |
| | | company.setHkCompanyPath(company.getCompanyNamePath()); |
| | | company.setHkStatus(Constants.ZERO); |
| | | company.setStatus(Constants.ZERO); |
| | | company.setSortnum(deptGetResponse.getOrder().intValue()); |
| | | company.setHkDate(company.getCreateDate()); |
| | | company.setEditDate(company.getCreateDate()); |
| | | company.setEditor(company.getCreator()); |