DiagnosisVersionInfoServiceImpl.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565
  1. package com.om.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.extension.plugins.pagination.Page;
  6. import com.om.entity.dto.*;
  7. import com.om.entity.po.*;
  8. import com.om.entity.vo.DiagnosisVersionSearchVO;
  9. import com.om.entity.vo.DiagnosisVersionVO;
  10. import com.om.exception.BadReqException;
  11. import com.om.exception.BizException;
  12. import com.om.mapper.DiagnosisVersionInfoMapper;
  13. import com.om.service.*;
  14. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  15. import com.om.utils.*;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.apache.commons.lang.StringUtils;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import javax.annotation.Resource;
  21. import java.time.LocalDateTime;
  22. import java.time.ZoneOffset;
  23. import java.util.ArrayList;
  24. import java.util.Comparator;
  25. import java.util.List;
  26. import java.util.function.Predicate;
  27. import java.util.stream.Collectors;
  28. /**
  29. * <p>
  30. * 服务实现类
  31. * </p>
  32. *
  33. * @author bmmx
  34. * @since 2024-03-06
  35. */
  36. @Service
  37. @Slf4j
  38. public class DiagnosisVersionInfoServiceImpl extends ServiceImpl<DiagnosisVersionInfoMapper, DiagnosisVersionInfo> implements IDiagnosisVersionInfoService {
  39. @Resource
  40. IDiagnosisVersionDescribeService describeService;
  41. @Resource
  42. IBrandService brandService;
  43. @Resource
  44. IClientService clientService;
  45. @Resource
  46. IUserService userService;
  47. @Resource
  48. IDiagClientsService diagClientsService;
  49. @Resource
  50. private JwtUtils jwtUtils;
  51. @Resource
  52. private HuaweiObsUtil obsUtil;
  53. @Resource
  54. private PushUtil pushUtil;
  55. @Resource
  56. private IClientDevicetokenService clientDevicetokenService;
  57. @Override
  58. @Transactional
  59. public Result add(DiagnosisVersionVO diagnosisVersionVO) {
  60. DiagnosisVersionInfo info = new DiagnosisVersionInfo();
  61. //客户端编号,需要取id,后面在进行设置
  62. String[] clientNums = diagnosisVersionVO.getClientNums();
  63. StringBuffer sb = new StringBuffer();
  64. for (int i = 0; i < clientNums.length; i++) {
  65. sb.append(clientNums[i]);
  66. if (clientNums.length != 1 && i != clientNums.length - 1) {
  67. sb.append(",");
  68. }
  69. }
  70. //文件地址
  71. info.setFile(diagnosisVersionVO.getFileUrl());
  72. //文件大小
  73. info.setDiagnosisFileSize(diagnosisVersionVO.getDiagnosisFileSize());
  74. //品牌代码
  75. info.setBrandCode(diagnosisVersionVO.getBrandCode());
  76. info.setClientNumber(sb.toString());
  77. //诊断程序名称
  78. info.setDiagnosisName(diagnosisVersionVO.getDiagnosisName());
  79. //程序状态
  80. info.setStatus(0);
  81. //设置用户名
  82. info.setUsername(diagnosisVersionVO.getUsername());
  83. //版本号
  84. info.setVersion(diagnosisVersionVO.getVersion());
  85. //保存地址
  86. info.setSavePath(diagnosisVersionVO.getSavePath());
  87. info.setFileName(diagnosisVersionVO.getFileName());
  88. info.setLifecycle(0);
  89. info.setCreateTime(LocalDateTime.now());
  90. info.setUpdateTime(LocalDateTime.now());
  91. //保存
  92. this.save(info);
  93. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
  94. queryWrapper.eq(DiagnosisVersionInfo::getId, info.getId());
  95. //保存后获取
  96. DiagnosisVersionInfo versionInfo = getOne(queryWrapper);
  97. log.info("==========={}=========", versionInfo);
  98. for (int i = 0; i < diagnosisVersionVO.getDescriptionList().length; i++) {
  99. DiagnosisVersionDescribe describe = new DiagnosisVersionDescribe();
  100. describe.setDiagnosisId(versionInfo.getId());
  101. describe.setDescription(diagnosisVersionVO.getDescriptionList()[i]);
  102. describe.setLanguage(diagnosisVersionVO.getLanguage()[i]);
  103. describeService.save(describe);
  104. }
  105. for (int i = 0; i < diagnosisVersionVO.getClientNums().length; i++) {
  106. DiagClients diagClients = new DiagClients();
  107. diagClients.setDiagId(versionInfo.getId());
  108. diagClients.setClientNum(diagnosisVersionVO.getClientNums()[i]);
  109. diagClientsService.save(diagClients);
  110. }
  111. return Result.ok();
  112. }
  113. @Override
  114. public Result downloadFile(Integer id) {
  115. DiagnosisVersionInfo diagnosisVersionInfo = this.getById(id);
  116. if (BeanUtil.isEmpty(diagnosisVersionInfo)) {
  117. throw new BadReqException("该诊断程序不存在");
  118. }
  119. String uploadUrl = obsUtil.getUploadUrl(diagnosisVersionInfo.getFileName(), "program");
  120. return Result.ok(uploadUrl);
  121. }
  122. @Override
  123. public Result edit(DiagnosisVersionVO diagnosisVersionVO) {
  124. Integer diaId = diagnosisVersionVO.getId();
  125. DiagnosisVersionVO versionVO = getVO(diaId);
  126. BeanUtil.copyProperties(diagnosisVersionVO, versionVO);
  127. DiagnosisVersionInfo info = new DiagnosisVersionInfo();
  128. DiagnosisVersionInfo info2 = this.getById(diaId);//查询到copy过去
  129. BeanUtil.copyProperties(info2, info);
  130. BeanUtil.copyProperties(diagnosisVersionVO, info);
  131. log.info("----修改用户信息{}-----", info);
  132. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrappeInfo = new LambdaQueryWrapper<>();
  133. queryWrappeInfo.eq(DiagnosisVersionInfo::getId, diaId);
  134. this.update(info, queryWrappeInfo);
  135. //客户端编号也要更改
  136. String[] clientNums = diagnosisVersionVO.getClientNums();
  137. LambdaQueryWrapper<DiagClients> queryWrapper = new LambdaQueryWrapper<>();
  138. queryWrapper.eq(DiagClients::getDiagId, diaId);
  139. //先删除
  140. diagClientsService.remove(queryWrapper);
  141. //在增加
  142. for (int i = 0; i < clientNums.length; i++) {
  143. DiagClients diagClients = new DiagClients();
  144. diagClients.setClientNum(clientNums[i]);
  145. diagClients.setDiagId(diaId);
  146. log.info("----修改客户端名称{}-----", diagClients);
  147. diagClientsService.save(diagClients);
  148. }
  149. log.info("----修改完成-----");
  150. // 描述
  151. String[] language = diagnosisVersionVO.getLanguage();
  152. String[] descriptionList = diagnosisVersionVO.getDescriptionList();
  153. List<DiagnosisVersionDescribe> diagnosisVersionDescribes = describeService.lambdaQuery()
  154. .eq(DiagnosisVersionDescribe::getDiagnosisId, diagnosisVersionVO.getId())
  155. .list();
  156. describeService.removeBatchByIds(diagnosisVersionDescribes);
  157. diagnosisVersionDescribes.clear();
  158. for (int i = 0; i < language.length; i++) {
  159. DiagnosisVersionDescribe diagnosisVersionDescribe = new DiagnosisVersionDescribe();
  160. diagnosisVersionDescribe.setLanguage(language[i]);
  161. diagnosisVersionDescribe.setDescription(descriptionList[i]);
  162. diagnosisVersionDescribe.setDiagnosisId(diagnosisVersionVO.getId());
  163. diagnosisVersionDescribes.add(diagnosisVersionDescribe);
  164. }
  165. describeService.saveBatch(diagnosisVersionDescribes);
  166. return Result.ok();
  167. }
  168. @Override
  169. public DiagnosisVersionVO getVO(Integer id) {
  170. log.info("-------查询信息------");
  171. DiagnosisVersionInfo versionInfo = this.getById(id);
  172. DiagnosisVersionVO versionVO = new DiagnosisVersionVO();
  173. BeanUtil.copyProperties(versionInfo, versionVO);
  174. LambdaQueryWrapper<DiagClients> clientQueryWrapper = new LambdaQueryWrapper<>();
  175. clientQueryWrapper.eq(DiagClients::getDiagId, id);
  176. List<DiagClients> diagClients = diagClientsService.list(clientQueryWrapper);
  177. String[] s = new String[diagClients.size()];
  178. for (int i = 0; i < diagClients.size(); i++) {
  179. s[i] = diagClients.get(i).getClientNum();
  180. }
  181. versionVO.setClientNums(s);
  182. //语言和描述
  183. LambdaQueryWrapper<DiagnosisVersionDescribe> describeLambdaQueryWrapper = new LambdaQueryWrapper<>();
  184. describeLambdaQueryWrapper.eq(DiagnosisVersionDescribe::getDiagnosisId, id);
  185. List<DiagnosisVersionDescribe> describes = describeService.list(describeLambdaQueryWrapper);
  186. String[] l = new String[describes.size()];
  187. String[] d = new String[describes.size()];
  188. for (int i = 0; i < describes.size(); i++) {
  189. l[i] = describes.get(i).getLanguage();
  190. d[i] = describes.get(i).getDescription();
  191. }
  192. versionVO.setDescriptionList(d);
  193. versionVO.setLanguage(l);
  194. log.info("=====getByUserId={}======", versionVO);
  195. return versionVO;
  196. }
  197. @Override
  198. public Result getByUserId(Integer id) {
  199. DiagnosisVersionVO versionVO = this.getVO(id);
  200. return Result.ok(versionVO);
  201. }
  202. @Override
  203. public Result getPageList(Integer pageIndex,
  204. Integer pageSize,
  205. String username) {
  206. Page<DiagnosisVersionInfo> page = this.lambdaQuery()
  207. .like(StringUtils.isNotBlank(username), DiagnosisVersionInfo::getUsername, username)
  208. .orderByDesc(DiagnosisVersionInfo::getBrandCode)
  209. .orderByDesc(DiagnosisVersionInfo::getVersion)
  210. .page(new Page<>(pageIndex, pageSize));
  211. //获取总的数据
  212. List<DiagnosisVersionInfo> diagLists = page.getRecords();
  213. List<DiagnosisVersionSearchVO> diagVOLists = new ArrayList<>();
  214. for (int i = 0; i < diagLists.size(); i++) {
  215. //然后取得客户端编号
  216. DiagnosisVersionInfo info = diagLists.get(i);
  217. //创建前端传输数据
  218. DiagnosisVersionSearchVO versionVO = new DiagnosisVersionSearchVO();
  219. BeanUtil.copyProperties(info, versionVO);
  220. Integer diagId = info.getId();
  221. LambdaQueryWrapper<DiagClients> queryWrapper = new LambdaQueryWrapper<>();
  222. queryWrapper.eq(DiagClients::getDiagId, diagId);
  223. List<DiagClients> diagClients = diagClientsService.list(queryWrapper);
  224. log.info("====diagClients={}", diagClients);
  225. String[] s = new String[diagClients.size()];
  226. String[] nums = new String[diagClients.size()];
  227. for (int j = 0; j < diagClients.size(); j++) {
  228. Client client = clientService.lambdaQuery()
  229. .eq(Client::getNumber, diagClients.get(j).getClientNum())
  230. .one();
  231. if (BeanUtil.isEmpty(client)) {
  232. throw new BadReqException("该客户端编号" + diagClients.get(j).getClientNum() + "不存在");
  233. }
  234. nums[j] = client.getNumber();
  235. s[j] = client.getName();
  236. }
  237. //传入客户端num
  238. versionVO.setClientNames(s);
  239. versionVO.setClientNum(nums);
  240. //传输描述和语言集合
  241. LambdaQueryWrapper<DiagnosisVersionDescribe> describeQueryWrapper = new LambdaQueryWrapper<>();
  242. describeQueryWrapper.eq(DiagnosisVersionDescribe::getDiagnosisId, diagId);
  243. List<DiagnosisVersionDescribe> describeList = describeService.list(describeQueryWrapper);
  244. log.info("List<DiagnosisVersionDescribe> describeList ={}", describeList);
  245. String[] language = new String[describeList.size()];
  246. String[] description = new String[describeList.size()];
  247. for (int i1 = 0; i1 < describeList.size(); i1++) {
  248. DiagnosisVersionDescribe describe = describeList.get(i1);
  249. language[i1] = describe.getLanguage();
  250. description[i1] = describe.getDescription();
  251. }
  252. //根据品牌编号查询名称
  253. Brand brand = brandService.lambdaQuery()
  254. .eq(Brand::getBrandCode, info.getBrandCode())
  255. .one();
  256. if (BeanUtil.isEmpty(brand)) {
  257. throw new BadReqException(info.getDiagnosisName() + "此诊断程序中品牌编号有误");
  258. }
  259. //传入客户端
  260. versionVO.setLanguage(language);
  261. versionVO.setDescriptionList(description);
  262. versionVO.setBrandName(brand.getBrandCn());
  263. diagVOLists.add(versionVO);
  264. }
  265. Page<DiagnosisVersionSearchVO> pageVO = new Page<>();
  266. BeanUtil.copyProperties(page, pageVO);
  267. pageVO.setRecords(diagVOLists);
  268. log.info("====={}=======", pageVO.getRecords());
  269. return Result.ok(pageVO);
  270. }
  271. @Override
  272. public Result release(Integer id) {
  273. DiagnosisVersionInfo info = this.getById(id);
  274. String brandCode = info.getBrandCode();
  275. List<DiagnosisVersionInfo> diagnosisVersionInfoList = this.lambdaQuery()
  276. .eq(DiagnosisVersionInfo::getBrandCode, brandCode)
  277. .eq(DiagnosisVersionInfo::getStatus, 1)
  278. .list();
  279. info.setStatus(1);
  280. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
  281. queryWrapper.eq(DiagnosisVersionInfo::getId, id);
  282. this.update(info, queryWrapper);
  283. if (CollectionUtil.isNotEmpty(diagnosisVersionInfoList)) {
  284. for (DiagnosisVersionInfo diagnosisVersionInfo : diagnosisVersionInfoList) {
  285. diagnosisVersionInfo.setStatus(2);
  286. }
  287. this.updateBatchById(diagnosisVersionInfoList);
  288. }
  289. return Result.ok();
  290. }
  291. @Override
  292. public Result repeal(Integer id) {
  293. DiagnosisVersionInfo info = this.getById(id);
  294. info.setStatus(2);
  295. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
  296. queryWrapper.eq(DiagnosisVersionInfo::getId, id);
  297. String brandCode = info.getBrandCode();
  298. List<DiagnosisVersionInfo> list = this.lambdaQuery()
  299. .eq(DiagnosisVersionInfo::getBrandCode, brandCode)
  300. .eq(DiagnosisVersionInfo::getStatus, 2)
  301. .list();
  302. DiagnosisVersionInfo diagnosisVersionInfo = list.stream().max(new Comparator<DiagnosisVersionInfo>() {
  303. @Override
  304. public int compare(DiagnosisVersionInfo o1, DiagnosisVersionInfo o2) {
  305. return VersionComparator.compareVersions(o1.getVersion(), o2.getVersion());
  306. }
  307. }).get();
  308. diagnosisVersionInfo.setStatus(1);
  309. this.updateById(diagnosisVersionInfo);
  310. this.update(info, queryWrapper);
  311. return Result.ok();
  312. }
  313. /*
  314. 修改状态
  315. */
  316. @Override
  317. @Transactional
  318. public Result upStatus(Integer id) {
  319. DiagnosisVersionInfo info = this.getById(id);
  320. info.setStatus(2);
  321. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
  322. queryWrapper.eq(DiagnosisVersionInfo::getId, id);
  323. String brandCode = info.getBrandCode();
  324. List<DiagnosisVersionInfo> list = this.lambdaQuery()
  325. .eq(DiagnosisVersionInfo::getBrandCode, brandCode)
  326. .eq(DiagnosisVersionInfo::getStatus, 2)
  327. .list();
  328. DiagnosisVersionInfo diagnosisVersionInfo = list.stream().max(new Comparator<DiagnosisVersionInfo>() {
  329. @Override
  330. public int compare(DiagnosisVersionInfo o1, DiagnosisVersionInfo o2) {
  331. return VersionComparator.compareVersions(o1.getVersion(), o2.getVersion());
  332. }
  333. }).get();
  334. diagnosisVersionInfo.setStatus(1);
  335. this.updateById(diagnosisVersionInfo);
  336. this.update(info, queryWrapper);
  337. return Result.ok();
  338. }
  339. @Override
  340. public Result diagnosisVersionInfoUpdate(AppDiagVersionUpdateDTO dto) {
  341. if (BeanUtil.isEmpty(dto)) {
  342. return Result.fail("未获取到数据").result(ResultCode.NO_DATA);
  343. }
  344. String language = dto.getLanguage();
  345. List<AppBrandInfo> brandInfo = dto.getBrandInfo();
  346. String guid = dto.getGuid();
  347. GuidDTO guidDTO = AesUtil.getGuidDTOFromGuid(guid);
  348. Integer userId = guidDTO.getUserId();
  349. String clientNum = guidDTO.getClientNum();
  350. if (brandInfo.isEmpty()) {
  351. throw new BadReqException("该诊断程序不存在");
  352. }
  353. User user = userService.getById(userId);
  354. if (BeanUtil.isEmpty(user)) {
  355. return Result.fail(240339, "该客户端账号不存在", null);
  356. }
  357. List<VehicleDates> voList = new ArrayList<>();
  358. for (AppBrandInfo vehicleDates : brandInfo) {
  359. String version = vehicleDates.getVersion();
  360. List<DiagnosisVersionInfo> diagnosisVersionInfos = this.lambdaQuery()
  361. .eq(DiagnosisVersionInfo::getBrandCode, vehicleDates.getBrandCode())
  362. .eq(user.getUserType() == 0, DiagnosisVersionInfo::getStatus, 1)
  363. .eq(user.getUserType() == 1, DiagnosisVersionInfo::getStatus, 0)
  364. .apply("CONCAT(',', client_number, ',') LIKE {0}", "%," + clientNum + ",%")
  365. //.gt(StringUtils.isNotBlank(version),DiagnosisVersionInfo::getVersion, version)
  366. .orderByDesc(DiagnosisVersionInfo::getVersion)
  367. .list();
  368. if (CollectionUtil.isEmpty(diagnosisVersionInfos)) {
  369. continue;
  370. }
  371. diagnosisVersionInfos = diagnosisVersionInfos.stream().filter(diagnosisVersionInfo ->
  372. VersionComparator.compareVersions(diagnosisVersionInfo.getVersion(), version) >= 0)
  373. .collect(Collectors.toList());
  374. if (CollectionUtil.isEmpty(diagnosisVersionInfos)) {
  375. continue;
  376. }
  377. DiagnosisVersionInfo diagnosisVersionInfo = diagnosisVersionInfos.get(0);
  378. //根据品牌id查询品牌
  379. Brand brand = brandService.lambdaQuery()
  380. .eq(Brand::getBrandCode, diagnosisVersionInfo.getBrandCode())
  381. .one();
  382. VehicleDates vehicleDates1 = BeanUtil.copyProperties(diagnosisVersionInfo, VehicleDates.class);
  383. //根据语言获取对应描述
  384. DiagnosisVersionDescribe diagnosisVersionDescribe = describeService.lambdaQuery()
  385. .eq(DiagnosisVersionDescribe::getLanguage, language)
  386. .eq(DiagnosisVersionDescribe::getDiagnosisId, diagnosisVersionInfo.getId())
  387. .one();
  388. if (!BeanUtil.isEmpty(diagnosisVersionDescribe)) {
  389. vehicleDates1.setDescription(diagnosisVersionDescribe.getDescription());
  390. } else {
  391. vehicleDates1.setDescription("");
  392. }
  393. //获取下载链接
  394. String uploadUrl = obsUtil.getUploadUrl(diagnosisVersionInfo.getFileName(), "program");
  395. vehicleDates1.setUrl(uploadUrl);
  396. vehicleDates1.setVersion(diagnosisVersionInfo.getVersion());
  397. double v = Double.valueOf(diagnosisVersionInfo.getDiagnosisFileSize()) * 1024 * 1024;
  398. vehicleDates1.setStatus(diagnosisVersionInfo.getStatus());
  399. vehicleDates1.setFileSize((long) v);
  400. vehicleDates1.setBrandCn(brand.getBrandCn());
  401. vehicleDates1.setBrandEn(brand.getBrandEn());
  402. vehicleDates1.setFileName(diagnosisVersionInfo.getFileName());
  403. vehicleDates1.setPath(diagnosisVersionInfo.getSavePath());
  404. vehicleDates1.setCreateTime(diagnosisVersionInfo.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli());
  405. voList.add(vehicleDates1);
  406. }
  407. return Result.ok(voList);
  408. }
  409. @Override
  410. public Result pushDiagnosis(Integer id) {
  411. DiagnosisVersionInfo diagnosisVersionInfo = this.getById(id);
  412. if (BeanUtil.isEmpty(diagnosisVersionInfo)) {
  413. throw new BadReqException("该诊断程序不存在");
  414. }
  415. PushInfo pushInfo = new PushInfo();
  416. pushInfo.setPushInfoType(2);
  417. VehicleInfo vehicleInfo = new VehicleInfo();
  418. BeanUtil.copyProperties(diagnosisVersionInfo, vehicleInfo);
  419. Brand brand = brandService.lambdaQuery()
  420. .eq(Brand::getBrandCode, diagnosisVersionInfo.getBrandCode())
  421. .one();
  422. if (BeanUtil.isEmpty(brand)) {
  423. throw new BadReqException("该品牌" + diagnosisVersionInfo.getBrandCode() + "不存在");
  424. }
  425. vehicleInfo.setBrandName(brand.getBrandCn());
  426. vehicleInfo.setBrandNameEn(brand.getBrandEn());
  427. if (diagnosisVersionInfo.getDiagnosisName() != null) {
  428. vehicleInfo.setSortLetter(diagnosisVersionInfo.getDiagnosisName().substring(0, 1));
  429. }
  430. vehicleInfo.setUrl(diagnosisVersionInfo.getSavePath());
  431. List<Describe> describeList = new ArrayList<>();
  432. List<DiagnosisVersionDescribe> diagnosisVersionDescribes = describeService.lambdaQuery()
  433. .eq(DiagnosisVersionDescribe::getDiagnosisId, diagnosisVersionInfo.getId())
  434. .list();
  435. if (!diagnosisVersionDescribes.isEmpty()) {
  436. for (DiagnosisVersionDescribe diagnosisVersionDescribe : diagnosisVersionDescribes) {
  437. Describe describe = new Describe();
  438. describe.setDescription(diagnosisVersionDescribe.getDescription());
  439. describe.setLanguage(diagnosisVersionDescribe.getLanguage());
  440. describeList.add(describe);
  441. }
  442. }
  443. vehicleInfo.setDescribeList(describeList);
  444. List<DiagClients> diagClients = diagClientsService.lambdaQuery()
  445. .eq(DiagClients::getDiagId, diagnosisVersionInfo.getId())
  446. .list();
  447. String[] tokens = null;
  448. if (!diagClients.isEmpty()) {
  449. List<String> clientNums = diagClients.stream().map(c -> c.getClientNum()).collect(Collectors.toList());
  450. List<String> tokenList = new ArrayList<>();
  451. for (String clientNum : clientNums) {
  452. tokenList.addAll(getTokenByClientNum(clientNum));
  453. }
  454. tokens = tokenList.toArray(new String[tokenList.size()]);
  455. //调用工具类
  456. pushInfo.setJson(GsonUtils.toJsonString(vehicleInfo));
  457. try {
  458. pushUtil.sendAndroidListcastJSON(tokens, pushInfo);
  459. } catch (Exception e) {
  460. throw new BizException("推送失败!!!");
  461. }
  462. }
  463. return Result.ok(tokens);
  464. }
  465. @Override
  466. public Result getDesc(DiagnosisVersionVO diagnosisVersionVO) {
  467. return null;
  468. }
  469. @Override
  470. public List<String> getTokenByClientNum(String clientNum) {
  471. Client client = clientService.lambdaQuery()
  472. .eq(Client::getNumber, clientNum)
  473. .one();
  474. if (BeanUtil.isNotEmpty(client)) {
  475. List<ClientDevicetoken> list = clientDevicetokenService.lambdaQuery()
  476. .eq(ClientDevicetoken::getClientId, client.getId())
  477. .list();
  478. return list.stream().map(c -> c.getDeviceToken()).collect(Collectors.toList());
  479. }
  480. return null;
  481. }
  482. }