SynThirdInfoServiceImpl.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. package jnpf.message.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollectionUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.github.yulichang.toolkit.JoinWrappers;
  8. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  9. import jnpf.base.entity.SuperBaseEntity;
  10. import jnpf.base.entity.SuperExtendEntity;
  11. import jnpf.base.entity.SysConfigEntity;
  12. import jnpf.base.model.synThirdInfo.PaginationSynThirdInfo;
  13. import jnpf.base.service.SuperServiceImpl;
  14. import com.alibaba.fastjson.JSONObject;
  15. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  16. import com.dingtalk.api.response.OapiV2DepartmentGetResponse;
  17. import jnpf.base.service.SysconfigService;
  18. import jnpf.base.service.SystemConfigApi;
  19. import jnpf.flowable.entity.CommentEntity;
  20. import jnpf.flowable.model.task.TaskVo;
  21. import jnpf.message.entity.SynThirdInfoEntity;
  22. import jnpf.message.mapper.SynThirdInfoMapper;
  23. import jnpf.message.model.SynThirdInfoVo;
  24. import jnpf.message.model.message.DingTalkDeptModel;
  25. import jnpf.message.model.message.OrganizeListVO;
  26. import jnpf.message.service.SynThirdDingTalkService;
  27. import jnpf.message.service.SynThirdInfoService;
  28. import jnpf.base.util.SynDingTalkUtil;
  29. import jnpf.message.util.SynThirdConsts;
  30. import jnpf.message.util.SynThirdTotal;
  31. import jnpf.model.SocialsSysConfig;
  32. import jnpf.permission.entity.OrganizeEntity;
  33. import jnpf.permission.entity.UserEntity;
  34. import jnpf.permission.model.organize.OrganizeModel;
  35. import jnpf.permission.service.OrganizeService;
  36. import jnpf.permission.service.UserService;
  37. import jnpf.util.*;
  38. import jnpf.util.treeutil.SumTree;
  39. import jnpf.util.treeutil.newtreeutil.TreeDotUtils;
  40. import org.jetbrains.annotations.NotNull;
  41. import org.springframework.beans.factory.annotation.Autowired;
  42. import org.springframework.stereotype.Service;
  43. import java.util.*;
  44. import java.util.stream.Collectors;
  45. /**
  46. * 第三方工具的公司-部门-用户同步表模型
  47. *
  48. * @版本: V3.1.0
  49. * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
  50. * @作者: JNPF开发平台组
  51. * @日期: 2021/4/23 17:33
  52. */
  53. @Service
  54. public class SynThirdInfoServiceImpl extends SuperServiceImpl<SynThirdInfoMapper, SynThirdInfoEntity> implements SynThirdInfoService {
  55. @Autowired
  56. private SynThirdInfoService synThirdInfoService;
  57. @Autowired
  58. private UserService userApi;
  59. @Autowired
  60. private SynThirdDingTalkService synThirdDingTalkService;
  61. @Autowired
  62. private SysconfigService sysconfigService;
  63. @Autowired
  64. private OrganizeService organizeService;
  65. @Autowired
  66. private RedisUtil redisUtil;
  67. @Autowired
  68. private CacheKeyUtil cacheKeyUtil;
  69. public static final String SOCIALS_CONFIG = "SocialsConfig";
  70. public static final String QYH_DEPARTMENT = "qyhDepartment";
  71. public static final String DING_DEPARTMENT = "dingDepartment";
  72. @Override
  73. public List<SynThirdInfoEntity> getList(String thirdType, String dataType) {
  74. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  75. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getThirdType, Integer.valueOf(thirdType)));
  76. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getDataType, Integer.valueOf(dataType)));
  77. queryWrapper.lambda().orderByAsc(SynThirdInfoEntity::getCreatorTime);
  78. return this.list(queryWrapper);
  79. }
  80. @Override
  81. public List<SynThirdInfoEntity> getList(String thirdType, String dataType, String enableMark) {
  82. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  83. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getThirdType, Integer.valueOf(thirdType)));
  84. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getDataType, Integer.valueOf(dataType)));
  85. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getEnabledMark, Integer.valueOf(enableMark)));
  86. queryWrapper.lambda().orderByAsc(SynThirdInfoEntity::getCreatorTime);
  87. return this.list(queryWrapper);
  88. }
  89. @Override
  90. public SynThirdInfoEntity getInfo(String id) {
  91. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  92. queryWrapper.lambda().eq(SynThirdInfoEntity::getId, id);
  93. return this.getOne(queryWrapper);
  94. }
  95. @Override
  96. public void create(SynThirdInfoEntity entity) {
  97. String sysObjId = entity.getSysObjId();
  98. Integer thirdType = entity.getThirdType();
  99. Integer dataType = entity.getDataType();
  100. LambdaQueryWrapper<SynThirdInfoEntity> wrapper = new LambdaQueryWrapper<>();
  101. wrapper.eq(SynThirdInfoEntity::getSysObjId, sysObjId);
  102. wrapper.eq(SynThirdInfoEntity::getThirdType, thirdType);
  103. wrapper.eq(SynThirdInfoEntity::getDataType, dataType);
  104. SynThirdInfoEntity one = this.getOne(wrapper);
  105. if (BeanUtil.isNotEmpty(one)) {
  106. BeanUtil.copyProperties(entity, one,"id");
  107. this.updateById(one);
  108. return;
  109. }
  110. this.save(entity);
  111. }
  112. @Override
  113. public boolean update(String id, SynThirdInfoEntity entity) {
  114. entity.setId(id);
  115. return this.updateById(entity);
  116. }
  117. @Override
  118. public void delete(SynThirdInfoEntity entity) {
  119. if (entity != null) {
  120. this.removeById(entity.getId());
  121. }
  122. }
  123. @Override
  124. public SynThirdInfoEntity getInfoBySysObjId(String thirdType, String dataType, String id) {
  125. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  126. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getThirdType, thirdType));
  127. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getDataType, dataType));
  128. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getSysObjId, id));
  129. return this.getOne(queryWrapper);
  130. }
  131. public @NotNull List<OrganizeEntity> getOrganizeEntitiesBind(String dingDepartment) {
  132. // 获取同步表、部门表的信息
  133. Map<String, OrganizeEntity> organizeList = organizeService.getOrgMapsAll();
  134. // 部门进行树结构化,固化上下层级序列化
  135. List<OrganizeModel> organizeModelList = JsonUtil.getJsonToList(organizeList.values(), OrganizeModel.class);
  136. List<SumTree<OrganizeModel>> trees = TreeDotUtils.convertListToTreeDot(organizeModelList);
  137. List<SumTree<OrganizeModel>> collect = trees
  138. .stream().filter(t -> t.getId().equals(dingDepartment)).collect(Collectors.toList());
  139. List<OrganizeListVO> listVO = JsonUtil.getJsonToList(collect, OrganizeListVO.class);
  140. // 转化成为按上下层级顺序排序的列表数据
  141. List<OrganizeEntity> listByOrder = new ArrayList<>();
  142. for (OrganizeListVO organizeVo : listVO) {
  143. OrganizeEntity entity = organizeList.get(organizeVo.getId());
  144. listByOrder.add(entity);
  145. SynDingTalkUtil.getOrganizeTreeToList(organizeVo, organizeList, listByOrder);
  146. }
  147. return listByOrder;
  148. }
  149. @Override
  150. public List<SynThirdInfoVo> getListJoin(PaginationSynThirdInfo paginationSynThirdInfo) {
  151. MPJLambdaWrapper<SynThirdInfoEntity> wrapper = JoinWrappers.lambda(SynThirdInfoEntity.class);
  152. wrapper.and(t -> t.eq(SynThirdInfoEntity::getThirdType
  153. , Integer.valueOf(paginationSynThirdInfo.getThirdType())));
  154. wrapper.and(t -> t.eq(SynThirdInfoEntity::getDataType
  155. , Integer.valueOf(paginationSynThirdInfo.getType())));
  156. wrapper.and(t -> t.eq(SynThirdInfoEntity::getEnabledMark
  157. , Integer.valueOf(paginationSynThirdInfo.getResultType())));
  158. if (StringUtil.isNotEmpty(paginationSynThirdInfo.getKeyword())) {
  159. String keyword = paginationSynThirdInfo.getKeyword();
  160. wrapper.and(t -> {
  161. t.like(SynThirdInfoEntity::getDescription, keyword);
  162. t.or().like(SynThirdInfoEntity::getThirdName, keyword);
  163. if (paginationSynThirdInfo.getType().equals(SynThirdConsts.DATA_TYPE_ORG)) {
  164. t.or().like(OrganizeEntity::getFullName, keyword);
  165. }
  166. });
  167. }
  168. wrapper.selectAs(SynThirdInfoEntity::getId, SynThirdInfoVo::getId)
  169. .selectAs(SynThirdInfoEntity::getDataType, SynThirdInfoVo::getDataType)
  170. .selectAs(SynThirdInfoEntity::getEnabledMark, SynThirdInfoVo::getEnabledMark)
  171. .selectAs(SynThirdInfoEntity::getCreatorTime, SynThirdInfoVo::getCreatorTime)
  172. .selectAs(SynThirdInfoEntity::getLastModifyTime, SynThirdInfoVo::getLastModifyTime)
  173. .selectAs(SynThirdInfoEntity::getThirdType, SynThirdInfoVo::getThirdType)
  174. .selectAs(SynThirdInfoEntity::getThirdName, SynThirdInfoVo::getThirdName)
  175. .selectAs(SynThirdInfoEntity::getDescription, SynThirdInfoVo::getDescription)
  176. .selectAs(SynThirdInfoEntity::getSysObjId, SynThirdInfoVo::getSysObjId);
  177. if (paginationSynThirdInfo.getType().equals(SynThirdConsts.DATA_TYPE_ORG)) {
  178. wrapper.leftJoin(OrganizeEntity.class, OrganizeEntity::getId, SynThirdInfoEntity::getSysObjId);
  179. wrapper.selectAs(OrganizeEntity::getFullName, SynThirdInfoVo::getSystemObjectName);
  180. } else {
  181. wrapper.leftJoin(UserEntity.class, UserEntity::getId, SynThirdInfoEntity::getSysObjId);
  182. wrapper.selectAs(UserEntity::getRealName, SynThirdInfoVo::getSystemObjectName);
  183. }
  184. Page<SynThirdInfoVo> page = new Page<>(paginationSynThirdInfo.getCurrentPage(), paginationSynThirdInfo.getPageSize());
  185. Page<SynThirdInfoVo> synThirdInfoVoPage = this.selectJoinListPage(page, SynThirdInfoVo.class, wrapper);
  186. return paginationSynThirdInfo.setData(synThirdInfoVoPage.getRecords(), page.getTotal());
  187. }
  188. @Override
  189. public List<SynThirdInfoEntity> getListByDepartment(String thirdTypeDing, String dataTypeOrg, String dingDepartment) {
  190. List<OrganizeEntity> organizeEntitiesBind = getOrganizeEntitiesBind(dingDepartment);
  191. LambdaQueryWrapper<SynThirdInfoEntity> synThirdInfoEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
  192. synThirdInfoEntityLambdaQueryWrapper.eq(SynThirdInfoEntity::getThirdType, Integer.valueOf(thirdTypeDing));
  193. synThirdInfoEntityLambdaQueryWrapper.eq(SynThirdInfoEntity::getDataType, Integer.valueOf(dataTypeOrg));
  194. synThirdInfoEntityLambdaQueryWrapper.eq(SynThirdInfoEntity::getEnabledMark, 1);
  195. synThirdInfoEntityLambdaQueryWrapper.in(SynThirdInfoEntity::getSysObjId, organizeEntitiesBind
  196. .stream().map(SuperBaseEntity.SuperIBaseEntity::getId).collect(Collectors.toList()));
  197. return this.list(synThirdInfoEntityLambdaQueryWrapper);
  198. }
  199. @Override
  200. public SynThirdTotal getSynTotal(String thirdType, String dataType) {
  201. SocialsSysConfig socialsConfig = sysconfigService.getSocialsConfig();
  202. String department = "";
  203. if (thirdType.equals(SynThirdConsts.THIRD_TYPE_DING)) {
  204. department = socialsConfig.getDingDepartment();
  205. } else {
  206. department = socialsConfig.getQyhDepartment();
  207. }
  208. List<OrganizeEntity> organizeEntitiesBind = this.getOrganizeEntitiesBind(department);
  209. List<String> ids = new ArrayList<>();
  210. if (dataType.equals(SynThirdConsts.DATA_TYPE_ORG)) {
  211. ids = organizeEntitiesBind.stream()
  212. .map(SuperBaseEntity.SuperIBaseEntity::getId)
  213. .distinct()
  214. .collect(Collectors.toList());
  215. } else {
  216. List<UserEntity> userEntities = userApi.getList(organizeEntitiesBind.stream()
  217. .map(SuperBaseEntity.SuperIBaseEntity::getId)
  218. .collect(Collectors.toList()), "");
  219. ids = userEntities.stream().map(UserEntity::getId).collect(Collectors.toList());
  220. }
  221. String synType = dataType.equals(SynThirdConsts.DATA_TYPE_ORG) ? "组织" : "用户";
  222. int recordTotal = 0;
  223. long synSuccessCount = 0L;
  224. long synFailCount = 0L;
  225. long unSynCount = 0L;
  226. Date synDate = null;
  227. // 获取列表数据
  228. List<SynThirdInfoEntity> synList = getList(thirdType, dataType).stream().filter(t -> t.getLastModifyTime() != null).collect(Collectors.toList());
  229. List<String> finalIds = ids;
  230. // List<SynThirdInfoEntity> collect = synList.stream()
  231. // .filter(t -> finalIds.contains(t.getSysObjId())).collect(Collectors.toList());
  232. if (!synList.isEmpty()) {
  233. synSuccessCount = synList.stream().filter(t -> t.getEnabledMark().equals(SynThirdConsts.SYN_STATE_OK)).count();
  234. synFailCount = synList.stream().filter(t -> t.getEnabledMark().equals(SynThirdConsts.SYN_STATE_FAIL)).count();
  235. unSynCount = synList.stream().filter(t -> t.getEnabledMark().equals(SynThirdConsts.SYN_STATE_NO)).count();
  236. synDate = synList.stream()
  237. .max(Comparator.comparing(SuperBaseEntity.SuperCUBaseEntity::getLastModifyTime))
  238. .isPresent() ? synList.stream().max(Comparator.comparing(SuperBaseEntity.SuperCUBaseEntity::getLastModifyTime))
  239. .get().getLastModifyTime() : null;
  240. }
  241. // 获取本系统的组织、用户表的记录数
  242. if (dataType.equals(SynThirdConsts.DATA_TYPE_ORG)) {
  243. // 获取组织(公司和部门)的记录数
  244. recordTotal = synList.size();
  245. } else {
  246. // 获取用户的记录数
  247. recordTotal = synList.size();
  248. }
  249. // 写入同步统计模型对象
  250. SynThirdTotal synThirdTotal = new SynThirdTotal();
  251. synThirdTotal.setSynType(synType);
  252. synThirdTotal.setRecordTotal(recordTotal);
  253. synThirdTotal.setSynSuccessCount(synSuccessCount);
  254. synThirdTotal.setSynFailCount(synFailCount);
  255. synThirdTotal.setUnSynCount(unSynCount);
  256. synThirdTotal.setSynDate(synDate);
  257. return synThirdTotal;
  258. }
  259. @Override
  260. public List<SynThirdInfoEntity> syncThirdInfoByType(String thirdToSysType, String dataTypeOrg, String SysToThirdType) {
  261. HashMap<String, String> typeMap = new HashMap<>();
  262. typeMap.put(SysToThirdType, thirdToSysType);
  263. typeMap.put(thirdToSysType, SysToThirdType);
  264. List<SynThirdInfoEntity> synThirdInfoList = this.getList(thirdToSysType, dataTypeOrg);
  265. List<SynThirdInfoEntity> synThirdInfoDingList = this.getList(typeMap.get(thirdToSysType), dataTypeOrg);
  266. List<String> collectSource = synThirdInfoList.stream().filter(t -> StringUtil.isBlank(t.getThirdObjId()) || StringUtil.isBlank(t.getSysObjId())).map(SuperBaseEntity.SuperIBaseEntity::getId).collect(Collectors.toList());
  267. List<String> collectTarget = synThirdInfoDingList.stream().filter(t -> StringUtil.isBlank(t.getThirdObjId()) || StringUtil.isBlank(t.getSysObjId())).map(SuperBaseEntity.SuperIBaseEntity::getId).collect(Collectors.toList());
  268. List<String> deleteList = new ArrayList<>();
  269. deleteList.addAll(collectSource);
  270. deleteList.addAll(collectTarget);
  271. // List<String> fails = this.selectAllFail();
  272. // deleteList.addAll(fails);
  273. // if (!deleteList.isEmpty()) {
  274. //
  275. // this.getBaseMapper().deleteByIds(deleteList);
  276. // }
  277. synThirdInfoList = this.getList(thirdToSysType, dataTypeOrg);
  278. synThirdInfoDingList = this.getList(typeMap.get(thirdToSysType), dataTypeOrg);
  279. // 记录已经存在的组合
  280. HashMap<String, Boolean> existingMap = new HashMap<>();
  281. synThirdInfoList.forEach(k -> {
  282. String tag = k.getThirdType() + "-" + k.getDataType() + "-" + k.getSysObjId() + "-" + k.getThirdObjId();
  283. existingMap.put(tag, true);
  284. });
  285. synThirdInfoDingList.forEach(k -> {
  286. String tag = k.getThirdType() + "-" + k.getDataType() + "-" + k.getSysObjId() + "-" + k.getThirdObjId();
  287. existingMap.put(tag, true);
  288. });
  289. HashMap<String, SynThirdInfoEntity> mapSource = new HashMap<>();
  290. HashMap<String, SynThirdInfoEntity> mapTarget = new HashMap<>();
  291. String tag = "";
  292. for (SynThirdInfoEntity entity : synThirdInfoList) {
  293. // if(collectSource.size()>0 && !collectSource.contains(entity.getId())){
  294. tag = entity.getSysObjId() + "-" + entity.getThirdObjId();
  295. mapSource.put(tag, entity);
  296. // }
  297. }
  298. for (SynThirdInfoEntity entity : synThirdInfoDingList) {
  299. // if(collectTarget.size()>0 && !collectTarget.contains(entity.getId())){
  300. tag = entity.getSysObjId() + "-" + entity.getThirdObjId();
  301. mapTarget.put(tag, entity);
  302. // }
  303. }
  304. // 同步记录
  305. List<SynThirdInfoEntity> synThirdInfoAddList = new ArrayList<>();
  306. SynThirdInfoEntity addEntity = null;
  307. if (mapSource.size() == 0 && mapTarget.size() == 0) {
  308. return new ArrayList<>();
  309. } else if (mapSource.size() > 0 && mapTarget.size() == 0) {
  310. for (String key : mapSource.keySet()) {
  311. SynThirdInfoEntity synThirdInfoEntity = mapSource.get(key);
  312. addEntity = JsonUtil.getJsonToBean(synThirdInfoEntity, SynThirdInfoEntity.class);
  313. addEntity.setId(RandomUtil.uuId());
  314. addEntity.setThirdType(Integer.valueOf(typeMap.get(thirdToSysType)));
  315. synThirdInfoAddList.add(addEntity);
  316. }
  317. } else if (mapSource.size() == 0 && mapTarget.size() > 0) {
  318. for (String key : mapTarget.keySet()) {
  319. SynThirdInfoEntity synThirdInfoEntity = mapTarget.get(key);
  320. addEntity = JsonUtil.getJsonToBean(synThirdInfoEntity, SynThirdInfoEntity.class);
  321. addEntity.setId(RandomUtil.uuId());
  322. addEntity.setThirdType(Integer.valueOf(thirdToSysType));
  323. synThirdInfoAddList.add(addEntity);
  324. }
  325. } else {
  326. for (String key : mapSource.keySet()) {
  327. if (!mapTarget.containsKey(key)) {
  328. SynThirdInfoEntity synThirdInfoEntity = mapSource.get(key);
  329. addEntity = JsonUtil.getJsonToBean(synThirdInfoEntity, SynThirdInfoEntity.class);
  330. addEntity.setId(RandomUtil.uuId());
  331. addEntity.setThirdType(Integer.valueOf(typeMap.get(thirdToSysType)));
  332. synThirdInfoAddList.add(addEntity);
  333. }
  334. }
  335. for (String key : mapTarget.keySet()) {
  336. if (!mapSource.containsKey(key)) {
  337. SynThirdInfoEntity synThirdInfoEntity = mapTarget.get(key);
  338. addEntity = JsonUtil.getJsonToBean(synThirdInfoEntity, SynThirdInfoEntity.class);
  339. addEntity.setId(RandomUtil.uuId());
  340. addEntity.setThirdType(Integer.valueOf(thirdToSysType));
  341. synThirdInfoAddList.add(addEntity);
  342. }
  343. }
  344. }
  345. ArrayList<SynThirdInfoEntity> addList = new ArrayList<>();
  346. if (synThirdInfoAddList.size() > 0) {
  347. // 过滤
  348. synThirdInfoAddList.forEach(k -> {
  349. String addTag = k.getThirdType() + "-" + k.getDataType() + "-" + k.getSysObjId() + "-" + k.getThirdObjId();
  350. if (existingMap.get(addTag) == null) {
  351. addList.add(k);
  352. }
  353. });
  354. this.saveBatch(addList);
  355. }
  356. // 查找对应的数据
  357. synThirdInfoList = this.getList(thirdToSysType, dataTypeOrg);
  358. return synThirdInfoList;
  359. }
  360. private List<String> selectAllFail() {
  361. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  362. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getEnabledMark, "2"));
  363. List<SynThirdInfoEntity> lists = this.getBaseMapper().selectList(queryWrapper);
  364. return lists.stream().map(t -> t.getId()).collect(Collectors.toList());
  365. }
  366. @Override
  367. public void initBaseDept(Long dingRootDeptId, String access_token, String thirdType) {
  368. final String sysByThird = this.getSysByThird("1", Integer.valueOf(thirdType));
  369. // 判断是否在中间表存在
  370. JSONObject retMsg = new JSONObject();
  371. if (StringUtil.isBlank(sysByThird)) {
  372. if ("2".equals(thirdType)) {
  373. retMsg = SynDingTalkUtil.getDepartmentInfo(SynThirdConsts.DING_ROOT_DEPT_ID, access_token);
  374. OapiV2DepartmentGetResponse.DeptGetResponse departmentInfo = (OapiV2DepartmentGetResponse.DeptGetResponse) retMsg.get("departmentInfo");
  375. DingTalkDeptModel model = JsonUtil.getJsonToBean(departmentInfo, DingTalkDeptModel.class);
  376. retMsg = synThirdDingTalkService.createDepartmentDingToSys(true, model, access_token);
  377. }
  378. // if("11".equals(thirdType)){
  379. // retMsg = SynDingTalkUtil.getDepartmentInfo(SynThirdConsts.QY_ROOT_DEPT_ID, access_token);
  380. // OapiV2DepartmentGetResponse.DeptGetResponse departmentInfo = (OapiV2DepartmentGetResponse.DeptGetResponse) retMsg.get("departmentInfo");
  381. // DingTalkDeptModel model = JsonUtil.getJsonToBean(departmentInfo, DingTalkDeptModel.class);
  382. // retMsg = synThirdDingTalkService.createDepartmentDingToSys(true, model, access_token);
  383. // }
  384. }
  385. }
  386. @Override
  387. public boolean getBySysObjId(String id,String thirdType) {
  388. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  389. queryWrapper.lambda().eq(SynThirdInfoEntity::getEnabledMark, "1");
  390. queryWrapper.lambda().eq(SynThirdInfoEntity::getThirdType, Integer.valueOf(thirdType));
  391. queryWrapper.lambda().eq(SynThirdInfoEntity::getSysObjId, id);
  392. List<SynThirdInfoEntity> list = this.getBaseMapper().selectList(queryWrapper);
  393. if (list != null && !list.isEmpty()) {
  394. return true;
  395. } else {
  396. return false;
  397. }
  398. }
  399. @Override
  400. public String getSysByThird(String valueOf) {
  401. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  402. queryWrapper.lambda().isNotNull(SynThirdInfoEntity::getSysObjId);
  403. queryWrapper.lambda().eq(SynThirdInfoEntity::getThirdObjId, valueOf);
  404. List<SynThirdInfoEntity> list = this.getBaseMapper().selectList(queryWrapper);
  405. if (list != null && !list.isEmpty()) {
  406. return list.get(0).getSysObjId();
  407. }
  408. return null;
  409. }
  410. @Override
  411. public String getSysByThird(String valueOf, Integer type) {
  412. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  413. queryWrapper.lambda().isNotNull(SynThirdInfoEntity::getSysObjId);
  414. queryWrapper.lambda().eq(SynThirdInfoEntity::getThirdType, type);
  415. queryWrapper.lambda().eq(SynThirdInfoEntity::getThirdObjId, valueOf);
  416. List<SynThirdInfoEntity> list = this.getBaseMapper().selectList(queryWrapper);
  417. if (list != null && !list.isEmpty()) {
  418. return list.get(0).getSysObjId();
  419. }
  420. return null;
  421. }
  422. @Override
  423. public SynThirdInfoEntity getInfoByThirdObjId(String thirdType, String dataType, String thirdObjId) {
  424. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  425. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getThirdType, thirdType));
  426. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getDataType, dataType));
  427. queryWrapper.lambda().and(t -> t.eq(SynThirdInfoEntity::getThirdObjId, thirdObjId));
  428. return this.getOne(queryWrapper);
  429. }
  430. @Override
  431. public void clearAllSyn(Integer type) {
  432. QueryWrapper<SynThirdInfoEntity> queryWrapper = new QueryWrapper<>();
  433. queryWrapper.lambda().eq(SynThirdInfoEntity::getThirdType, type);
  434. this.remove(queryWrapper);
  435. LambdaQueryWrapper<SysConfigEntity> wrapper = new LambdaQueryWrapper<>();
  436. wrapper.eq(SysConfigEntity::getCategory, SOCIALS_CONFIG);
  437. //把最高级组织删掉
  438. if (type.toString().equals(SynThirdConsts.THIRD_TYPE_QY)){
  439. wrapper.eq(SysConfigEntity::getFkey, QYH_DEPARTMENT);
  440. }else {
  441. wrapper.eq(SysConfigEntity::getFkey, DING_DEPARTMENT);
  442. }
  443. List<SysConfigEntity> list = sysconfigService.list(wrapper);
  444. SysConfigEntity configEntity = list.get(0);
  445. configEntity.setValue("");
  446. sysconfigService.updateById(configEntity);
  447. String cacheKey = cacheKeyUtil.getSocialsConfig();
  448. redisUtil.remove(cacheKey);
  449. }
  450. }