DiagnosisVersionInfoServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. package com.om.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.util.PageUtil;
  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.DiagnosisVersionVO;
  9. import com.om.entity.vo.DignosisPageVO;
  10. import com.om.exception.BadReqException;
  11. import com.om.mapper.DiagnosisVersionInfoMapper;
  12. import com.om.service.*;
  13. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  14. import com.om.utils.*;
  15. import io.swagger.v3.oas.annotations.parameters.RequestBody;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.apache.commons.lang.StringUtils;
  18. import org.springframework.stereotype.Service;
  19. import javax.annotation.Resource;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. /**
  23. * <p>
  24. * 服务实现类
  25. * </p>
  26. *
  27. * @author bmmx
  28. * @since 2024-03-06
  29. */
  30. @Service
  31. @Slf4j
  32. public class DiagnosisVersionInfoServiceImpl extends ServiceImpl<DiagnosisVersionInfoMapper, DiagnosisVersionInfo> implements IDiagnosisVersionInfoService {
  33. @Resource
  34. IDiagnosisVersionDescribeService describeService;
  35. @Resource
  36. IBrandService brandService;
  37. @Resource
  38. IClientService clientService;
  39. @Resource
  40. IUserService userService;
  41. @Resource
  42. IDiagClientsService diagClientsService;
  43. @Resource
  44. private JwtUtils jwtUtils;
  45. @Override
  46. public Result add(DiagnosisVersionVO diagnosisVersionVO) {
  47. DiagnosisVersionInfo info = new DiagnosisVersionInfo();
  48. //客户端编号,需要取id,后面在进行设置
  49. //文件地址
  50. info.setFile(diagnosisVersionVO.getFileUrl());
  51. //文件大小
  52. info.setDiagnosisFileSize(diagnosisVersionVO.getDiagnosisFileSize());
  53. //品牌代码
  54. info.setBrandCode(diagnosisVersionVO.getBrandCode());
  55. //诊断程序名称
  56. info.setDiagnosisName(diagnosisVersionVO.getDiagnosisName());
  57. //程序状态
  58. info.setStatus(0);
  59. //设置用户名
  60. info.setUsername(diagnosisVersionVO.getUsername());
  61. //版本号
  62. info.setVersion(diagnosisVersionVO.getVersion());
  63. //保存地址
  64. info.setSavePath(diagnosisVersionVO.getSavePath());
  65. //保存
  66. this.save(info);
  67. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
  68. queryWrapper.eq(DiagnosisVersionInfo::getId, diagnosisVersionVO.getId());
  69. //保存后获取
  70. DiagnosisVersionInfo versionInfo = getOne(queryWrapper);
  71. log.info("==========={}=========", versionInfo);
  72. for (int i = 0; i < diagnosisVersionVO.getDescriptionList().length; i++) {
  73. DiagnosisVersionDescribe describe = new DiagnosisVersionDescribe();
  74. describe.setDiagnosisId(versionInfo.getId());
  75. describe.setDescription(diagnosisVersionVO.getDescriptionList()[i]);
  76. describe.setLanguage(diagnosisVersionVO.getLanguage()[i]);
  77. describeService.save(describe);
  78. }
  79. for (int i = 0; i < diagnosisVersionVO.getClientNums().length; i++) {
  80. DiagClients diagClients = new DiagClients();
  81. diagClients.setDiagId(versionInfo.getId());
  82. diagClients.setClientNum(diagnosisVersionVO.getClientNums()[i]);
  83. diagClientsService.save(diagClients);
  84. }
  85. return Result.ok();
  86. }
  87. @Override
  88. public Result downloadFile(Integer id) {
  89. return null;
  90. }
  91. @Override
  92. public Result edit(DiagnosisVersionVO diagnosisVersionVO) {
  93. Integer diaId = diagnosisVersionVO.getId();
  94. DiagnosisVersionVO versionVO = getVO(diaId);
  95. BeanUtil.copyProperties(diagnosisVersionVO, versionVO);
  96. DiagnosisVersionInfo info = new DiagnosisVersionInfo();
  97. DiagnosisVersionInfo info2 = this.getById(diaId);//查询到copy过去
  98. BeanUtil.copyProperties(info2, info);
  99. BeanUtil.copyProperties(diagnosisVersionVO, info);
  100. log.info("----修改用户信息{}-----", info);
  101. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrappeInfo = new LambdaQueryWrapper<>();
  102. queryWrappeInfo.eq(DiagnosisVersionInfo::getId, diaId);
  103. this.update(info, queryWrappeInfo);
  104. //客户端编号也要更改
  105. String[] clientNums = diagnosisVersionVO.getClientNums();
  106. LambdaQueryWrapper<DiagClients> queryWrapper = new LambdaQueryWrapper<>();
  107. queryWrapper.eq(DiagClients::getDiagId, diaId);
  108. //先删除
  109. diagClientsService.remove(queryWrapper);
  110. //在增加
  111. for (int i = 0; i < clientNums.length; i++) {
  112. DiagClients diagClients = new DiagClients();
  113. diagClients.setClientNum(clientNums[i]);
  114. diagClients.setDiagId(diaId);
  115. log.info("----修改客户端名称{}-----", diagClients);
  116. diagClientsService.save(diagClients);
  117. }
  118. log.info("----修改完成-----");
  119. return Result.ok();
  120. }
  121. @Override
  122. public DiagnosisVersionVO getVO(Integer id) {
  123. log.info("-------查询信息------");
  124. DiagnosisVersionInfo versionInfo = this.getById(id);
  125. DiagnosisVersionVO versionVO = new DiagnosisVersionVO();
  126. BeanUtil.copyProperties(versionInfo, versionVO);
  127. LambdaQueryWrapper<DiagClients> clientQueryWrapper = new LambdaQueryWrapper<>();
  128. clientQueryWrapper.eq(DiagClients::getDiagId, id);
  129. List<DiagClients> diagClients = diagClientsService.list(clientQueryWrapper);
  130. String[] s = new String[diagClients.size()];
  131. for (int i = 0; i < diagClients.size(); i++) {
  132. s[i] = diagClients.get(i).getClientNum();
  133. }
  134. versionVO.setClientNums(s);
  135. //语言和描述
  136. LambdaQueryWrapper<DiagnosisVersionDescribe> describeLambdaQueryWrapper = new LambdaQueryWrapper<>();
  137. describeLambdaQueryWrapper.eq(DiagnosisVersionDescribe::getDiagnosisId, id);
  138. List<DiagnosisVersionDescribe> describes = describeService.list(describeLambdaQueryWrapper);
  139. String[] l = new String[describes.size()];
  140. String[] d = new String[describes.size()];
  141. for (int i = 0; i < describes.size(); i++) {
  142. l[i] = describes.get(i).getLanguage();
  143. d[i] = describes.get(i).getDescription();
  144. }
  145. versionVO.setDescriptionList(d);
  146. versionVO.setLanguage(l);
  147. log.info("=====getByUserId={}======", versionVO);
  148. return versionVO;
  149. }
  150. @Override
  151. public Result getByUserId(Integer id) {
  152. DiagnosisVersionVO versionVO = this.getVO(id);
  153. return Result.ok(versionVO);
  154. }
  155. @Override
  156. public Result getPageList(Integer pageIndex,
  157. Integer pageSize,
  158. String username) {
  159. Page<DiagnosisVersionInfo> page = this.lambdaQuery()
  160. .like(StringUtils.isNotBlank(username), DiagnosisVersionInfo::getUsername, username)
  161. .orderByDesc(DiagnosisVersionInfo::getUpdateTime)
  162. .page(new Page<>(pageIndex, pageSize));
  163. //获取总的数据
  164. List<DiagnosisVersionInfo> diagLists = page.getRecords();
  165. List<DiagnosisVersionVO> diagVOLists = new ArrayList<>();
  166. for (int i = 0; i < diagLists.size(); i++) {
  167. //然后取得客户端编号
  168. DiagnosisVersionInfo info = diagLists.get(i);
  169. //创建前端传输数据
  170. DiagnosisVersionVO versionVO = new DiagnosisVersionVO();
  171. BeanUtil.copyProperties(info, versionVO);
  172. Integer diagId = info.getId();
  173. LambdaQueryWrapper<DiagClients> queryWrapper = new LambdaQueryWrapper<>();
  174. queryWrapper.eq(DiagClients::getDiagId, diagId);
  175. List<DiagClients> diagClients = diagClientsService.list(queryWrapper);
  176. log.info("====diagClients={}", diagClients);
  177. String[] s = new String[diagClients.size()];
  178. for (int j = 0; j < diagClients.size(); j++) {
  179. s[j] = diagClients.get(j).getClientNum();
  180. }
  181. //传入客户端num
  182. versionVO.setClientNums(s);
  183. //传输描述和语言集合
  184. LambdaQueryWrapper<DiagnosisVersionDescribe> describeQueryWrapper = new LambdaQueryWrapper<>();
  185. describeQueryWrapper.eq(DiagnosisVersionDescribe::getDiagnosisId, diagId);
  186. List<DiagnosisVersionDescribe> describeList = describeService.list(describeQueryWrapper);
  187. log.info("List<DiagnosisVersionDescribe> describeList ={}", describeList);
  188. String[] language = new String[describeList.size()];
  189. String[] description = new String[describeList.size()];
  190. for (int i1 = 0; i1 < describeList.size(); i1++) {
  191. DiagnosisVersionDescribe describe = describeList.get(i1);
  192. language[i1] = describe.getLanguage();
  193. description[i1] = describe.getDescription();
  194. }
  195. //传入客户端
  196. versionVO.setLanguage(language);
  197. versionVO.setDescriptionList(description);
  198. diagVOLists.add(versionVO);
  199. }
  200. Page<DiagnosisVersionVO> pageVO = new Page<>();
  201. BeanUtil.copyProperties(page, pageVO);
  202. pageVO.setRecords(diagVOLists);
  203. log.info("====={}=======", pageVO.getRecords());
  204. return Result.ok(pageVO);
  205. }
  206. @Override
  207. public Result release(Integer id) {
  208. DiagnosisVersionInfo info = this.getById(id);
  209. info.setStatus(1);
  210. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
  211. queryWrapper.eq(DiagnosisVersionInfo::getId, id);
  212. this.update(info, queryWrapper);
  213. return Result.ok();
  214. }
  215. @Override
  216. public Result repeal(Integer id) {
  217. DiagnosisVersionInfo info = this.getById(id);
  218. info.setStatus(2);
  219. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
  220. queryWrapper.eq(DiagnosisVersionInfo::getId, id);
  221. this.update(info, queryWrapper);
  222. return Result.ok();
  223. }
  224. /*
  225. 修改状态
  226. */
  227. @Override
  228. public Result upStatus(Integer id) {
  229. DiagnosisVersionInfo info = this.getById(id);
  230. info.setStatus(2);
  231. LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
  232. queryWrapper.eq(DiagnosisVersionInfo::getId, id);
  233. this.update(info, queryWrapper);
  234. return Result.ok();
  235. }
  236. @Override
  237. public Result diagnosisVersionInfoUpdate(AppDiagVersionUpdateDTO dto) {
  238. if (BeanUtil.isEmpty(dto)) {
  239. return Result.fail("未获取到数据").result(ResultCode.NO_DATA);
  240. }
  241. List<AppBrandInfo> brandInfo = dto.getBrandInfo();
  242. String guid = dto.getGuid();
  243. GuidDTO guidDTO = AesUtil.getGuidDTOFromGuid(guid);
  244. String clientNum = guidDTO.getClientNum();
  245. if (brandInfo.isEmpty()) {
  246. throw new BadReqException("该诊断程序不存在");
  247. }
  248. List<VehicleDates> voList = new ArrayList<>();
  249. for (AppBrandInfo vehicleDates : brandInfo) {
  250. String version = vehicleDates.getVersion();
  251. DiagnosisVersionInfo diagnosisVersionInfo = this.lambdaQuery()
  252. .eq(DiagnosisVersionInfo::getBrandCode, vehicleDates.getBrandCode())
  253. .apply("CONCAT(',', client_number, ',') LIKE {0}", "%,"+clientNum+",%")
  254. .gt(DiagnosisVersionInfo::getVersion, version)
  255. .one();
  256. if (BeanUtil.isEmpty(diagnosisVersionInfo)) {
  257. return Result.fail("未获取到数据").result(ResultCode.NO_DATA);
  258. }
  259. //根据品牌id查询品牌
  260. Brand brand = brandService.getById(diagnosisVersionInfo.getBrandId());
  261. if (BeanUtil.isEmpty(brand)) {
  262. throw new BadReqException("品牌不存在");
  263. }
  264. VehicleDates vehicleDates1 = BeanUtil.copyProperties(diagnosisVersionInfo, VehicleDates.class);
  265. vehicleDates1.setUrl(diagnosisVersionInfo.getSavePath());
  266. vehicleDates1.setVersion(diagnosisVersionInfo.getVersion());
  267. vehicleDates1.setFileSize(diagnosisVersionInfo.getDiagnosisFileSize());
  268. vehicleDates1.setBrandCn(brand.getBrandCn());
  269. vehicleDates1.setBrandEn(brand.getBrandEn());
  270. voList.add(vehicleDates1);
  271. }
  272. return Result.ok(voList);
  273. }
  274. @Override
  275. public Result getDesc(DiagnosisVersionVO diagnosisVersionVO) {
  276. return null;
  277. }
  278. }