123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 |
- package com.om.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.util.PageUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.obs.services.model.TemporarySignatureRequest;
- import com.om.entity.dto.*;
- import com.om.entity.po.*;
- import com.om.entity.vo.DiagnosisVersionSearchVO;
- import com.om.entity.vo.DiagnosisVersionVO;
- import com.om.entity.vo.DignosisPageVO;
- import com.om.exception.BadReqException;
- import com.om.mapper.DiagnosisVersionDescribeMapper;
- import com.om.mapper.DiagnosisVersionInfoMapper;
- import com.om.service.*;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.om.utils.*;
- import io.swagger.v3.oas.annotations.parameters.RequestBody;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.PathVariable;
- import javax.annotation.Resource;
- import java.time.ZoneOffset;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author bmmx
- * @since 2024-03-06
- */
- @Service
- @Slf4j
- public class DiagnosisVersionInfoServiceImpl extends ServiceImpl<DiagnosisVersionInfoMapper, DiagnosisVersionInfo> implements IDiagnosisVersionInfoService {
- @Resource
- IDiagnosisVersionDescribeService describeService;
- @Resource
- IBrandService brandService;
- @Resource
- IClientService clientService;
- @Resource
- IUserService userService;
- @Resource
- IDiagClientsService diagClientsService;
- @Resource
- private JwtUtils jwtUtils;
- @Resource
- private HuaweiObsUtil obsUtil;
- @Override
- @Transactional
- public Result add(DiagnosisVersionVO diagnosisVersionVO) {
- DiagnosisVersionInfo info = new DiagnosisVersionInfo();
- //客户端编号,需要取id,后面在进行设置
- String[] clientNums = diagnosisVersionVO.getClientNums();
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < clientNums.length; i++) {
- sb.append(clientNums[i]);
- if (clientNums.length != 1 && i != clientNums.length - 1){
- sb.append(",");
- }
- }
- //文件地址
- info.setFile(diagnosisVersionVO.getFileUrl());
- //文件大小
- info.setDiagnosisFileSize(diagnosisVersionVO.getDiagnosisFileSize());
- //品牌代码
- info.setBrandCode(diagnosisVersionVO.getBrandCode());
- info.setClientNumber(sb.toString());
- //诊断程序名称
- info.setDiagnosisName(diagnosisVersionVO.getDiagnosisName());
- //程序状态
- info.setStatus(0);
- //设置用户名
- info.setUsername(diagnosisVersionVO.getUsername());
- //版本号
- info.setVersion(diagnosisVersionVO.getVersion());
- //保存地址
- info.setSavePath(diagnosisVersionVO.getSavePath());
- info.setFileName(diagnosisVersionVO.getFileName());
- info.setLifecycle(0);
- //保存
- this.save(info);
- LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DiagnosisVersionInfo::getId, info.getId());
- //保存后获取
- DiagnosisVersionInfo versionInfo = getOne(queryWrapper);
- log.info("==========={}=========", versionInfo);
- for (int i = 0; i < diagnosisVersionVO.getDescriptionList().length; i++) {
- DiagnosisVersionDescribe describe = new DiagnosisVersionDescribe();
- describe.setDiagnosisId(versionInfo.getId());
- describe.setDescription(diagnosisVersionVO.getDescriptionList()[i]);
- describe.setLanguage(diagnosisVersionVO.getLanguage()[i]);
- describeService.save(describe);
- }
- for (int i = 0; i < diagnosisVersionVO.getClientNums().length; i++) {
- DiagClients diagClients = new DiagClients();
- diagClients.setDiagId(versionInfo.getId());
- diagClients.setClientNum(diagnosisVersionVO.getClientNums()[i]);
- diagClientsService.save(diagClients);
- }
- return Result.ok();
- }
- @Override
- public Result downloadFile(Integer id) {
- DiagnosisVersionInfo diagnosisVersionInfo = this.getById(id);
- if (BeanUtil.isEmpty(diagnosisVersionInfo)) {
- throw new BadReqException("该诊断程序不存在");
- }
- String uploadUrl = obsUtil.getUploadUrl(diagnosisVersionInfo.getFileName(), diagnosisVersionInfo.getSavePath());
- return Result.ok(uploadUrl);
- }
- @Override
- public Result edit(DiagnosisVersionVO diagnosisVersionVO) {
- Integer diaId = diagnosisVersionVO.getId();
- DiagnosisVersionVO versionVO = getVO(diaId);
- BeanUtil.copyProperties(diagnosisVersionVO, versionVO);
- DiagnosisVersionInfo info = new DiagnosisVersionInfo();
- DiagnosisVersionInfo info2 = this.getById(diaId);//查询到copy过去
- BeanUtil.copyProperties(info2, info);
- BeanUtil.copyProperties(diagnosisVersionVO, info);
- log.info("----修改用户信息{}-----", info);
- LambdaQueryWrapper<DiagnosisVersionInfo> queryWrappeInfo = new LambdaQueryWrapper<>();
- queryWrappeInfo.eq(DiagnosisVersionInfo::getId, diaId);
- this.update(info, queryWrappeInfo);
- //客户端编号也要更改
- String[] clientNums = diagnosisVersionVO.getClientNums();
- LambdaQueryWrapper<DiagClients> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DiagClients::getDiagId, diaId);
- //先删除
- diagClientsService.remove(queryWrapper);
- //在增加
- for (int i = 0; i < clientNums.length; i++) {
- DiagClients diagClients = new DiagClients();
- diagClients.setClientNum(clientNums[i]);
- diagClients.setDiagId(diaId);
- log.info("----修改客户端名称{}-----", diagClients);
- diagClientsService.save(diagClients);
- }
- log.info("----修改完成-----");
- return Result.ok();
- }
- @Override
- public DiagnosisVersionVO getVO(Integer id) {
- log.info("-------查询信息------");
- DiagnosisVersionInfo versionInfo = this.getById(id);
- DiagnosisVersionVO versionVO = new DiagnosisVersionVO();
- BeanUtil.copyProperties(versionInfo, versionVO);
- LambdaQueryWrapper<DiagClients> clientQueryWrapper = new LambdaQueryWrapper<>();
- clientQueryWrapper.eq(DiagClients::getDiagId, id);
- List<DiagClients> diagClients = diagClientsService.list(clientQueryWrapper);
- String[] s = new String[diagClients.size()];
- for (int i = 0; i < diagClients.size(); i++) {
- s[i] = diagClients.get(i).getClientNum();
- }
- versionVO.setClientNums(s);
- //语言和描述
- LambdaQueryWrapper<DiagnosisVersionDescribe> describeLambdaQueryWrapper = new LambdaQueryWrapper<>();
- describeLambdaQueryWrapper.eq(DiagnosisVersionDescribe::getDiagnosisId, id);
- List<DiagnosisVersionDescribe> describes = describeService.list(describeLambdaQueryWrapper);
- String[] l = new String[describes.size()];
- String[] d = new String[describes.size()];
- for (int i = 0; i < describes.size(); i++) {
- l[i] = describes.get(i).getLanguage();
- d[i] = describes.get(i).getDescription();
- }
- versionVO.setDescriptionList(d);
- versionVO.setLanguage(l);
- log.info("=====getByUserId={}======", versionVO);
- return versionVO;
- }
- @Override
- public Result getByUserId( Integer id) {
- DiagnosisVersionVO versionVO = this.getVO(id);
- return Result.ok(versionVO);
- }
- @Override
- public Result getPageList(Integer pageIndex,
- Integer pageSize,
- String username) {
- Page<DiagnosisVersionInfo> page = this.lambdaQuery()
- .like(StringUtils.isNotBlank(username), DiagnosisVersionInfo::getUsername, username)
- .orderByDesc(DiagnosisVersionInfo::getUpdateTime)
- .page(new Page<>(pageIndex, pageSize));
- //获取总的数据
- List<DiagnosisVersionInfo> diagLists = page.getRecords();
- List<DiagnosisVersionSearchVO> diagVOLists = new ArrayList<>();
- for (int i = 0; i < diagLists.size(); i++) {
- //然后取得客户端编号
- DiagnosisVersionInfo info = diagLists.get(i);
- //创建前端传输数据
- DiagnosisVersionSearchVO versionVO = new DiagnosisVersionSearchVO();
- BeanUtil.copyProperties(info, versionVO);
- Integer diagId = info.getId();
- LambdaQueryWrapper<DiagClients> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DiagClients::getDiagId, diagId);
- List<DiagClients> diagClients = diagClientsService.list(queryWrapper);
- log.info("====diagClients={}", diagClients);
- String[] s = new String[diagClients.size()];
- for (int j = 0; j < diagClients.size(); j++) {
- s[j] = diagClients.get(j).getClientName();
- }
- //传入客户端num
- versionVO.setClientNames(s);
- //传输描述和语言集合
- LambdaQueryWrapper<DiagnosisVersionDescribe> describeQueryWrapper = new LambdaQueryWrapper<>();
- describeQueryWrapper.eq(DiagnosisVersionDescribe::getDiagnosisId, diagId);
- List<DiagnosisVersionDescribe> describeList = describeService.list(describeQueryWrapper);
- log.info("List<DiagnosisVersionDescribe> describeList ={}", describeList);
- String[] language = new String[describeList.size()];
- String[] description = new String[describeList.size()];
- for (int i1 = 0; i1 < describeList.size(); i1++) {
- DiagnosisVersionDescribe describe = describeList.get(i1);
- language[i1] = describe.getLanguage();
- description[i1] = describe.getDescription();
- }
- //根据品牌编号查询名称
- Brand brand = brandService.lambdaQuery()
- .eq(Brand::getBrandCode, info.getBrandCode())
- .one();
- if (BeanUtil.isEmpty(brand)){
- throw new BadReqException(info.getDiagnosisName()+"此诊断程序中品牌编号有误");
- }
- //传入客户端
- versionVO.setLanguage(language);
- versionVO.setDescriptionList(description);
- versionVO.setBrandName(brand.getBrandCn());
- diagVOLists.add(versionVO);
- }
- Page<DiagnosisVersionSearchVO> pageVO = new Page<>();
- BeanUtil.copyProperties(page, pageVO);
- pageVO.setRecords(diagVOLists);
- log.info("====={}=======", pageVO.getRecords());
- return Result.ok(pageVO);
- }
- @Override
- public Result release(Integer id) {
- DiagnosisVersionInfo info = this.getById(id);
- info.setStatus(1);
- LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DiagnosisVersionInfo::getId, id);
- this.update(info, queryWrapper);
- return Result.ok();
- }
- @Override
- public Result repeal(Integer id) {
- DiagnosisVersionInfo info = this.getById(id);
- info.setStatus(2);
- LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DiagnosisVersionInfo::getId, id);
- this.update(info, queryWrapper);
- return Result.ok();
- }
- /*
- 修改状态
- */
- @Override
- public Result upStatus(Integer id) {
- DiagnosisVersionInfo info = this.getById(id);
- info.setStatus(2);
- LambdaQueryWrapper<DiagnosisVersionInfo> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(DiagnosisVersionInfo::getId, id);
- this.update(info, queryWrapper);
- return Result.ok();
- }
- @Override
- public Result diagnosisVersionInfoUpdate(AppDiagVersionUpdateDTO dto) {
- if (BeanUtil.isEmpty(dto)) {
- return Result.fail("未获取到数据").result(ResultCode.NO_DATA);
- }
- String language = dto.getLanguage();
- List<AppBrandInfo> brandInfo = dto.getBrandInfo();
- String guid = dto.getGuid();
- GuidDTO guidDTO = AesUtil.getGuidDTOFromGuid(guid);
- String clientNum = guidDTO.getClientNum();
- if (brandInfo.isEmpty()) {
- throw new BadReqException("该诊断程序不存在");
- }
- List<VehicleDates> voList = new ArrayList<>();
- for (AppBrandInfo vehicleDates : brandInfo) {
- String version = vehicleDates.getVersion();
- DiagnosisVersionInfo diagnosisVersionInfo = this.lambdaQuery()
- .eq(DiagnosisVersionInfo::getBrandCode, vehicleDates.getBrandCode())
- .apply("CONCAT(',', client_number, ',') LIKE {0}", "%,"+clientNum+",%")
- .gt(DiagnosisVersionInfo::getVersion, version)
- .one();
- if (BeanUtil.isEmpty(diagnosisVersionInfo)) {
- return Result.fail("未获取到数据").result(ResultCode.NO_DATA);
- }
- //根据品牌id查询品牌
- Brand brand = brandService.lambdaQuery()
- .eq(Brand::getBrandCode,diagnosisVersionInfo.getBrandCode())
- .one();
- if (BeanUtil.isEmpty(brand)) {
- throw new BadReqException("品牌不存在");
- }
- //根据语言获取对应描述
- DiagnosisVersionDescribe diagnosisVersionDescribe = describeService.lambdaQuery()
- .eq(DiagnosisVersionDescribe::getLanguage, language)
- .eq(DiagnosisVersionDescribe::getDiagnosisId, diagnosisVersionInfo.getId())
- .one();
- if (BeanUtil.isEmpty(diagnosisVersionDescribe)) {
- throw new BadReqException("该描述不存在");
- }
- //获取下载链接
- String uploadUrl = obsUtil.getUploadUrl(diagnosisVersionInfo.getFileName(), "program");
- VehicleDates vehicleDates1 = BeanUtil.copyProperties(diagnosisVersionInfo, VehicleDates.class);
- vehicleDates1.setUrl(uploadUrl);
- vehicleDates1.setVersion(diagnosisVersionInfo.getVersion());
- double v = Double.valueOf(diagnosisVersionInfo.getDiagnosisFileSize()) * 1024 * 1024;
- vehicleDates1.setFileSize((long) v);
- vehicleDates1.setBrandCn(brand.getBrandCn());
- vehicleDates1.setBrandEn(brand.getBrandEn());
- vehicleDates1.setDescription(diagnosisVersionDescribe.getDescription());
- vehicleDates1.setFileName(diagnosisVersionInfo.getFileName());
- vehicleDates1.setPath(diagnosisVersionInfo.getSavePath());
- vehicleDates1.setCreateTime(diagnosisVersionInfo.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli());
- voList.add(vehicleDates1);
- }
- return Result.ok(voList);
- }
- @Override
- public Result getDesc(DiagnosisVersionVO diagnosisVersionVO) {
- return null;
- }
- }
|