VciInfoServiceImpl.java 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  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.extension.plugins.pagination.Page;
  5. import com.om.entity.dto.AppBaseDTO;
  6. import com.om.entity.dto.GuidDTO;
  7. import com.om.entity.dto.VciQueryPageDTO;
  8. import com.om.entity.po.*;
  9. import com.om.entity.vo.*;
  10. import com.om.exception.BadReqException;
  11. import com.om.mapper.UserMapper;
  12. import com.om.mapper.VciInfoMapper;
  13. import com.om.service.*;
  14. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  15. import com.om.utils.*;
  16. import org.springframework.context.annotation.Bean;
  17. import org.springframework.stereotype.Service;
  18. import javax.annotation.Resource;
  19. import java.time.LocalDateTime;
  20. import java.util.ArrayList;
  21. import java.util.Collections;
  22. import java.util.List;
  23. import java.util.stream.Collectors;
  24. /**
  25. * <p>
  26. * 服务实现类
  27. * </p>
  28. *
  29. * @author bmmx
  30. * @since 2024-02-27
  31. */
  32. @Service
  33. public class VciInfoServiceImpl extends ServiceImpl<VciInfoMapper, VciInfo> implements IVciInfoService {
  34. @Resource
  35. private UserMapper userMapper;
  36. @Resource
  37. private IUserVciService userVciService;
  38. @Resource
  39. private JwtUtils jwtUtils;
  40. @Resource
  41. private ISdkClientsService sdkClientsService;
  42. @Resource
  43. private ISdkVersionInfoService sdkVersionInfoService;
  44. @Resource
  45. private ISdkVersionDescribeService sdkVersionDescribeService;
  46. @Resource
  47. private IPcbVersionInfoService pcbVersionInfoService;
  48. @Resource
  49. private IAppService appService;
  50. @Resource
  51. private IAppVersionDescribeService appVersionDescribeService;
  52. @Resource
  53. private IAppsClientsService appsClientsService;
  54. @Resource
  55. private HuaweiObsUtil obsUtil;
  56. @Override
  57. public Result addVci(VciInfo vciInfo) {
  58. if (BeanUtil.isEmpty(vciInfo)){
  59. throw new BadReqException("参数为空");
  60. }
  61. vciInfo.setCreateTime(LocalDateTime.now());
  62. vciInfo.setUpdateTime(LocalDateTime.now());
  63. this.save(vciInfo);
  64. return Result.ok();
  65. }
  66. @Override
  67. public Result addList(List<VciInfo> vciInfos) {
  68. if (BeanUtil.isEmpty(vciInfos)){
  69. throw new BadReqException("参数为空");
  70. }
  71. for (VciInfo vciInfo : vciInfos) {
  72. vciInfo.setCreateTime(LocalDateTime.now());
  73. vciInfo.setUpdateTime(LocalDateTime.now());
  74. }
  75. this.saveBatch(vciInfos);
  76. return Result.ok();
  77. }
  78. @Override
  79. public Result deleteByNum(String vciNum) {
  80. //根据vciNum查询
  81. VciInfo one = this.lambdaQuery()
  82. .eq(VciInfo::getVciNum, vciNum)
  83. .one();
  84. if (BeanUtil.isEmpty(one)){
  85. throw new BadReqException("vci设备不存在");
  86. }
  87. //删除
  88. this.removeById(one);
  89. return Result.ok();
  90. }
  91. @Override
  92. public Result updateState(Integer id, Integer state) {
  93. //根据id查询
  94. VciInfo vciInfo = this.getById(id);
  95. if (BeanUtil.isEmpty(vciInfo)){
  96. throw new BadReqException("vci设备不存在");
  97. }
  98. vciInfo.setState(state);
  99. this.updateById(vciInfo);
  100. return Result.ok();
  101. }
  102. @Override
  103. public Result getList() {
  104. List<VciInfo> list = this.list();
  105. return Result.ok(list);
  106. }
  107. @Override
  108. public Result<List<UserVciVO>> getUserList(Integer vciId) {
  109. VciInfo vciInfo = this.getById(vciId);
  110. if (BeanUtil.isEmpty(vciInfo)){
  111. throw new BadReqException("该vci不存在");
  112. }
  113. List<UserVci> list = userVciService.lambdaQuery()
  114. .eq(UserVci::getVciInfoId, vciId)
  115. .list();
  116. if (CollectionUtil.isEmpty(list)){
  117. return Result.ok(Collections.emptyList());
  118. }
  119. List<UserVciVO> vos= new ArrayList<>();
  120. for (UserVci userVci : list) {
  121. Integer userId = userVci.getUserId();
  122. User user = userMapper.selectById(userId);
  123. UserVciVO userVciVO = BeanUtil.copyProperties(userVci, UserVciVO.class);
  124. userVciVO.setUsername(user.getUsername());
  125. vos.add(userVciVO);
  126. }
  127. return Result.ok(vos);
  128. }
  129. @Override
  130. public Result<VciQueryPageVO> getPageList(VciQueryPageDTO dto) {
  131. Integer pageIndex = dto.getPageIndex();
  132. Integer pageSize = dto.getPageSize();
  133. String vciNum = dto.getVciNum();
  134. Page<VciInfo> page = this.lambdaQuery()
  135. .like(vciNum != null, VciInfo::getVciNum, vciNum)
  136. .orderByDesc(VciInfo::getCreateTime)
  137. .page(new Page<>(pageIndex, pageSize));
  138. VciQueryPageVO vo = new VciQueryPageVO();
  139. vo.setCurrent((int) page.getCurrent());
  140. vo.setSize((int) page.getSize());
  141. vo.setPages((int) page.getPages());
  142. vo.setTotal((int) page.getTotal());
  143. if (vciNum != null){
  144. vo.setSearchCount(true);
  145. }
  146. List<VciInfo> records = page.getRecords();
  147. vo.setRecords(records);
  148. return Result.ok(vo);
  149. }
  150. @Override
  151. public Result VciUpdate(AppBaseDTO dto) {
  152. if (BeanUtil.isEmpty(dto)){
  153. return Result.fail("未获取到数据").result(ResultCode.NO_DATA);
  154. }
  155. String guid = dto.getGuid();
  156. GuidDTO guidDTO = AesUtil.getGuidDTOFromGuid(guid);
  157. String clientNum = guidDTO.getClientNum();
  158. String language = dto.getLanguage();
  159. Integer userId = guidDTO.getUserId();
  160. AppSDKVO appSDKVO = new AppSDKVO();
  161. List<SDKData> sdkData = new ArrayList<>();
  162. List<appData> appData = new ArrayList<>();
  163. //根据客户端clientNum查询sdk
  164. List<Integer> sdkIds = sdkClientsService.lambdaQuery()
  165. .eq(SdkClients::getClientNum, clientNum)
  166. .list().stream().map(c -> c.getSdkId()).collect(Collectors.toList());
  167. if (!sdkIds.isEmpty()){
  168. List<SdkVersionInfo> sdkVersionInfos = sdkVersionInfoService.listByIds(sdkIds);
  169. for (SdkVersionInfo sdkVersionInfo : sdkVersionInfos) {
  170. SDKData sdk = BeanUtil.copyProperties(sdkVersionInfo, SDKData.class);
  171. sdk.setVersion(sdkVersionInfo.getVersionNum());
  172. String uploadUrl = obsUtil.getUploadUrl(sdkVersionInfo.getFileName(), "appv");
  173. sdk.setUrl(uploadUrl);
  174. //根据pcbId查询pcb
  175. PcbVersionInfo pcbVersionInfo = pcbVersionInfoService.getById(sdkVersionInfo.getId());
  176. if(BeanUtil.isEmpty(pcbVersionInfo)){
  177. throw new BadReqException("该PCB版本不存在!!!");
  178. }
  179. SdkVersionDescribe sdkVersionDescribe = sdkVersionDescribeService.lambdaQuery()
  180. .eq(SdkVersionDescribe::getSdkId, sdkVersionInfo.getId())
  181. .eq(SdkVersionDescribe::getLanguage, language)
  182. .one();
  183. if (BeanUtil.isEmpty(sdkVersionDescribe)){
  184. throw new BadReqException("SDK版本描述不存在");
  185. }
  186. sdk.setDescription(sdkVersionDescribe.getDescription());
  187. sdk.setPcbVersion(pcbVersionInfo.getVersionNum());
  188. sdkData.add(sdk);
  189. }
  190. }
  191. List<Integer> appIds = appsClientsService.lambdaQuery()
  192. .eq(AppsClients::getClientNum, clientNum)
  193. .list().stream().map(c -> c.getAppId()).collect(Collectors.toList());
  194. if (!appIds.isEmpty()){
  195. List<App> apps = appService.listByIds(appIds);
  196. if (apps.isEmpty()){
  197. return Result.error().result(ResultCode.SERVICE_HANDLE_ERROR);
  198. }
  199. for (App app : apps) {
  200. appData appData1 = BeanUtil.copyProperties(app, appData.class);
  201. appData1.setVersion(app.getVersionNum());
  202. appData1.setUrl(app.getSavePath());
  203. AppVersionDescribe appVersionDescribe = appVersionDescribeService.lambdaQuery()
  204. .eq(AppVersionDescribe::getAppId, app.getId())
  205. .eq(AppVersionDescribe::getLanguage, language)
  206. .one();
  207. if (BeanUtil.isEmpty(appVersionDescribe)){
  208. throw new BadReqException("app版本描述不存在");
  209. }
  210. appData1.setDescription(appVersionDescribe.getDescription());
  211. Integer sdkId = app.getSdkId();
  212. //根据sdkid查询sdk版本
  213. SdkVersionInfo sdkVersionInfo = sdkVersionInfoService.getById(sdkId);
  214. if (BeanUtil.isEmpty(sdkVersionInfo)){
  215. throw new BadReqException("该sdk版本不存在");
  216. }
  217. appData1.setMinSdkVersion(sdkVersionInfo.getVersionNum());
  218. appData.add(appData1);
  219. }
  220. }
  221. appSDKVO.setAppData(appData);
  222. appSDKVO.setSdkData(sdkData);
  223. return Result.ok(appSDKVO);
  224. }
  225. }