DiagnosisVersionInfoServiceImpl.java 12 KB

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