Explorar o código

531修改诊断报告导出h5的语言:数据库表新增了字段;
531取消对刷写文件的加密;
604修改deviceToken与客户端的关系:多对一,然后修改了推送和登录中的关于deviceToken的内容

bmmx hai 1 ano
pai
achega
ecfb0a169e
Modificáronse 28 ficheiros con 366 adicións e 129 borrados
  1. 2 2
      src/main/java/com/om/controller/admin/CommonController.java
  2. 29 0
      src/main/java/com/om/entity/dto/APPReportCreateDTO.java
  3. 0 3
      src/main/java/com/om/entity/po/Client.java
  4. 41 0
      src/main/java/com/om/entity/po/ClientDevicetoken.java
  5. 28 0
      src/main/java/com/om/entity/po/Repair.java
  6. 36 0
      src/main/java/com/om/entity/vo/RepairTitle.java
  7. 16 0
      src/main/java/com/om/mapper/ClientDevicetokenMapper.java
  8. 16 0
      src/main/java/com/om/service/IClientDevicetokenService.java
  9. 2 2
      src/main/java/com/om/service/IDiagnosisVersionInfoService.java
  10. 1 1
      src/main/java/com/om/service/IRepairService.java
  11. 7 6
      src/main/java/com/om/service/impl/AppServiceImpl.java
  12. 8 13
      src/main/java/com/om/service/impl/AppsServiceImpl.java
  13. 2 2
      src/main/java/com/om/service/impl/BrandServiceImpl.java
  14. 10 12
      src/main/java/com/om/service/impl/BrushFileServiceImpl.java
  15. 20 0
      src/main/java/com/om/service/impl/ClientDevicetokenServiceImpl.java
  16. 24 22
      src/main/java/com/om/service/impl/DiagnosisVersionInfoServiceImpl.java
  17. 1 1
      src/main/java/com/om/service/impl/DiagnosticMenuServiceImpl.java
  18. 7 11
      src/main/java/com/om/service/impl/ManualServiceImpl.java
  19. 28 9
      src/main/java/com/om/service/impl/RepairServiceImpl.java
  20. 15 3
      src/main/java/com/om/service/impl/UserServiceImpl.java
  21. 1 1
      src/main/java/com/om/service/impl/VciInfoServiceImpl.java
  22. 6 11
      src/main/java/com/om/service/impl/WxscServiceImpl.java
  23. 22 1
      src/main/java/com/om/utils/HtmlGenerator.java
  24. 5 0
      src/main/java/com/om/utils/HuaweiObsUtil.java
  25. 3 0
      src/main/resources/application-dev.yml
  26. 5 0
      src/main/resources/mapper/ClientDevicetokenMapper.xml
  27. 31 27
      src/main/resources/template/static/report.html
  28. 0 2
      src/test/java/com/util/MapToHTML.java

+ 2 - 2
src/main/java/com/om/controller/admin/CommonController.java

@@ -27,7 +27,7 @@ public class CommonController {
 
     @GetMapping("report/h5")
     @ApiOperation("查看诊断报告---导出h5")
-    public Result<String> reportH5(@RequestParam("id") Integer id){
-        return repairService.reportH5(id);
+    public Result<String> reportH5(@RequestParam("id") Integer id,@RequestParam("language") String language){
+        return repairService.reportH5(id,language);
     }
 }

+ 29 - 0
src/main/java/com/om/entity/dto/APPReportCreateDTO.java

@@ -59,6 +59,35 @@ public class APPReportCreateDTO extends AppBaseDTO {
 
     @ApiModelProperty(value = "正常系统标题")
     private String normalSystemTitle;
+    @ApiModelProperty(value = "地址标题")
+    private String addressTitle;
+
+    @ApiModelProperty(value = "公司标题")
+    private String companyTitle;
+
+    @ApiModelProperty(value = "电话标题")
+    private String telephoneTitle;
+
+    @ApiModelProperty(value = "提示信息")
+    private String disclaimer;
+
+    @ApiModelProperty(value = "年款标题")
+    private String modelYearTitle;
+
+    @ApiModelProperty(value = "SN标题")
+    private String snTitle;
+
+    @ApiModelProperty(value = "vin标题")
+    private String vinTitle;
+
+    @ApiModelProperty(value = "里程标题")
+    private String mileageTitle;
+
+    @ApiModelProperty(value = "诊断报告编号标题")
+    private String diagnosticReportTitle;
+
+    @ApiModelProperty(value = "诊断路径标题")
+    private String diagnosticPathTitle;
 
     @ApiModelProperty(value = "激活的系统集合")
     private List<AppElectronicDTO> electronicControls;

+ 0 - 3
src/main/java/com/om/entity/po/Client.java

@@ -38,9 +38,6 @@ public class Client implements Serializable {
     @ApiModelProperty(value = "描述信息")
     private String description;
 
-    @ApiModelProperty(value = "deviceToken")
-    private String deviceToken;
-
     @ApiModelProperty(value = "客户端编号")
     private String number;
 

+ 41 - 0
src/main/java/com/om/entity/po/ClientDevicetoken.java

@@ -0,0 +1,41 @@
+package com.om.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-06-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("client_devicetoken")
+@ApiModel(value="ClientDevicetoken对象", description="")
+public class ClientDevicetoken implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "客户端id")
+    private Integer clientId;
+
+    @ApiModelProperty(value = "device_token")
+    private String deviceToken;
+
+
+}

+ 28 - 0
src/main/java/com/om/entity/po/Repair.java

@@ -105,5 +105,33 @@ public class Repair implements Serializable {
     private String normalSystemTitle;
 
 
+    @ApiModelProperty(value = "地址标题")
+    private String addressTitle;
 
+    @ApiModelProperty(value = "公司标题")
+    private String companyTitle;
+
+    @ApiModelProperty(value = "电话标题")
+    private String telephoneTitle;
+
+    @ApiModelProperty(value = "提示信息")
+    private String disclaimer;
+
+    @ApiModelProperty(value = "年款标题")
+    private String modelYearTitle;
+
+    @ApiModelProperty(value = "SN标题")
+    private String snTitle;
+
+    @ApiModelProperty(value = "vin标题")
+    private String vinTitle;
+
+    @ApiModelProperty(value = "里程标题")
+    private String mileageTitle;
+
+    @ApiModelProperty(value = "诊断报告编号标题")
+    private String diagnosticReportTitle;
+
+    @ApiModelProperty(value = "诊断路径标题")
+    private String diagnosticPathTitle;
 }

+ 36 - 0
src/main/java/com/om/entity/vo/RepairTitle.java

@@ -0,0 +1,36 @@
+package com.om.entity.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class RepairTitle implements Serializable {
+
+    public String mainTitle;
+
+    public String carInfoTitle;
+
+    private String diagnosticDetailsTitle;
+
+    private String faultCodeTitle;
+
+    private String versionInfoTitle;
+
+    private String abnormalSystemTitle;
+
+    private String normalSystemTitle;
+
+    private String vin;
+    private String modelYear;
+    private String mileage;
+    private String diagnosticPath;
+    private String repairNum;
+    private String SN;
+    private String company;
+    private String telephone;
+    private String address;
+    private String message;
+
+}

+ 16 - 0
src/main/java/com/om/mapper/ClientDevicetokenMapper.java

@@ -0,0 +1,16 @@
+package com.om.mapper;
+
+import com.om.entity.po.ClientDevicetoken;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-06-04
+ */
+public interface ClientDevicetokenMapper extends BaseMapper<ClientDevicetoken> {
+
+}

+ 16 - 0
src/main/java/com/om/service/IClientDevicetokenService.java

@@ -0,0 +1,16 @@
+package com.om.service;
+
+import com.om.entity.po.ClientDevicetoken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-06-04
+ */
+public interface IClientDevicetokenService extends IService<ClientDevicetoken> {
+
+}

+ 2 - 2
src/main/java/com/om/service/IDiagnosisVersionInfoService.java

@@ -1,12 +1,10 @@
 package com.om.service;
 
 import com.om.entity.dto.AppDiagVersionUpdateDTO;
-import com.om.entity.dto.UpStatusDto;
 import com.om.entity.dto.VehicleDates;
 import com.om.entity.po.DiagnosisVersionInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.om.entity.vo.DiagnosisVersionVO;
-import com.om.entity.vo.DignosisPageVO;
 import com.om.utils.Result;
 
 import java.util.List;
@@ -46,4 +44,6 @@ public interface IDiagnosisVersionInfoService extends IService<DiagnosisVersionI
     Result<List<VehicleDates>> diagnosisVersionInfoUpdate(AppDiagVersionUpdateDTO dto);
 
     Result pushDiagnosis(Integer id);
+
+    List<String> getTokenByClientNum(String clientNum);
 }

+ 1 - 1
src/main/java/com/om/service/IRepairService.java

@@ -35,7 +35,7 @@ public interface IRepairService extends IService<Repair> {
 
     Result<String> reportPdf(Integer id);
 
-    Result<String> reportH5(Integer id);
+    Result<String> reportH5(Integer id,String language);
 
     Result updateBase(AppRepairUpdateBaseDTO dto);
 

+ 7 - 6
src/main/java/com/om/service/impl/AppServiceImpl.java

@@ -50,6 +50,9 @@ public class AppServiceImpl extends ServiceImpl<AppMapper, App> implements IAppS
     @Resource
     private PushUtil pushUtil;
 
+    @Resource
+    private IDiagnosisVersionInfoService diagnosisVersionInfoService;
+
     @Override
     public Result add(AppVO appVO) {
         App app = new App();
@@ -200,14 +203,12 @@ public class AppServiceImpl extends ServiceImpl<AppMapper, App> implements IAppS
         pushInfo.setJson(jsonString);
         String clientNums = byId.getClientNums();
         String[] clientNumList = clientNums.substring(1, clientNums.length() - 1).split(",");
-        String[] tokens = new String[clientNumList.length];
+        String[] tokens = null;
+        List<String> tokenList = new ArrayList<>();
         for (int i = 0; i < clientNumList.length; i++) {
-            LambdaQueryWrapper<Client> clientLambdaQueryWrapper = new LambdaQueryWrapper<>();
-            clientLambdaQueryWrapper.eq(Client::getNumber,clientNumList[i]);
-            Client client = clientMapper.selectOne(clientLambdaQueryWrapper);
-            tokens[i] = client.getDeviceToken();
+            tokenList.addAll(diagnosisVersionInfoService.getTokenByClientNum(clientNumList[i]));
         }
-
+        tokens = tokenList.toArray(new String[tokenList.size()]);
         try {
             pushUtil.sendAndroidListcastJSON(tokens,pushInfo);
         } catch (Exception e) {

+ 8 - 13
src/main/java/com/om/service/impl/AppsServiceImpl.java

@@ -17,10 +17,7 @@ import com.om.entity.vo.AppUpdateVO;
 import com.om.exception.BadReqException;
 import com.om.exception.BizException;
 import com.om.mapper.AppsMapper;
-import com.om.service.IAppsClientsService;
-import com.om.service.IAppsDescService;
-import com.om.service.IAppsService;
-import com.om.service.IClientService;
+import com.om.service.*;
 import com.om.utils.*;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -65,6 +62,9 @@ public class AppsServiceImpl extends ServiceImpl<AppsMapper, Apps> implements IA
     @Resource
     private PushUtil pushUtil;
 
+    @Resource
+    private IDiagnosisVersionInfoService diagnosisVersionInfoService;
+
     @Override
     public Page<Apps> findApps(Page<Apps> objectPage, String code, String title) {
         Page<Apps> apps = appsMapper.findApps(objectPage, code, title);
@@ -155,17 +155,12 @@ public class AppsServiceImpl extends ServiceImpl<AppsMapper, Apps> implements IA
 
         if (!appsClientsList.isEmpty()) {
             List<String> clientNums = appsClientsList.stream().map(c -> c.getClientNum()).collect(Collectors.toList());
-            String[] tokens = new String[clientNums.size()];
+            String[] tokens = null;
+            List<String> tokenList = new ArrayList<>();
             for (String clientNum : clientNums) {
-                int i = 0;
-                Client client = clientService.lambdaQuery()
-                        .eq(Client::getNumber, clientNum)
-                        .one();
-                if (BeanUtil.isNotEmpty(client)) {
-                    tokens[i] = client.getDeviceToken();
-                    i++;
-                }
+                tokenList.addAll(diagnosisVersionInfoService.getTokenByClientNum(clientNum));
             }
+            tokens = tokenList.toArray(new String[tokenList.size()]);
             //调用工具类
             String jsonString = GsonUtils.toJsonString(appInfo);
             pushInfo.setJson(jsonString);

+ 2 - 2
src/main/java/com/om/service/impl/BrandServiceImpl.java

@@ -271,7 +271,7 @@ public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements
                 .eq(Client::getNumber, clientNum)
                 .one();
         if (BeanUtil.isEmpty(client)){
-            throw new BadReqException("该客户端不存在!!");
+            return Result.fail(52306,"该客户端不存在!!",null);
         }
         //根据客户端id查询品牌客户端关联表
         List<BrandClient> brandClients = brandClientService.lambdaQuery()
@@ -291,7 +291,7 @@ public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements
                     .eq(BrandClient::getBrandId, brand.getId())
                     .list().stream().map(c -> c.getClientId()).collect(Collectors.toList());
             if (clientIds.isEmpty()){
-                throw new BadReqException("该品牌下没有查询到客户端");
+                return Result.fail(52306,"该品牌下没有查询到客户端!!",null);
             }
             brandVO.setClientIds(clientIds);
             brandVO.setCreateTime(brand.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli());

+ 10 - 12
src/main/java/com/om/service/impl/BrushFileServiceImpl.java

@@ -60,6 +60,9 @@ public class BrushFileServiceImpl extends ServiceImpl<BrushFileMapper, BrushFile
     @Resource
     private IBrandService brandService;
 
+    @Resource
+    private IDiagnosisVersionInfoService diagnosisVersionInfoService;
+
     @Resource
     private PushUtil pushUtil;
 
@@ -174,11 +177,11 @@ public class BrushFileServiceImpl extends ServiceImpl<BrushFileMapper, BrushFile
 
     @Override
     public Result<BrushUploadVO> uploadBrush(MultipartFile file) {
-        try {
+       /* try {
             file = FileSigner.sign(file);
         } catch (Exception e) {
             throw new BizException("ECU刷写文件签名出错");
-        }
+        }*/
         long fileSize = file.getSize();
         String size = FileSizeConverter.convertBytes(fileSize);
         String filename = file.getOriginalFilename();
@@ -267,7 +270,7 @@ public class BrushFileServiceImpl extends ServiceImpl<BrushFileMapper, BrushFile
                     .eq(Client::getNumber, clientNum)
                     .one();
             if (BeanUtil.isEmpty(client)){
-                throw new BadReqException("该客户端不存在");
+                return Result.fail(52306,"该客户端不存在",null);
             }
             BrushClient brushClient = new BrushClient();
             brushClient.setClientNum(clientNum);
@@ -316,17 +319,12 @@ public class BrushFileServiceImpl extends ServiceImpl<BrushFileMapper, BrushFile
 
         if (CollectionUtil.isNotEmpty(brushClientList)) {
             List<String> clientNums = brushClientList.stream().map(c -> c.getClientNum()).collect(Collectors.toList());
-            String[] tokens = new String[clientNums.size()];
+            String[] tokens = null;
+            List<String> tokenList = new ArrayList<>();
             for (String clientNum : clientNums) {
-                int i = 0;
-                Client client = clientService.lambdaQuery()
-                        .eq(Client::getNumber, clientNum)
-                        .one();
-                if (BeanUtil.isNotEmpty(client)) {
-                    tokens[i] = client.getDeviceToken();
-                    i++;
-                }
+                tokenList.addAll(diagnosisVersionInfoService.getTokenByClientNum(clientNum));
             }
+            tokens = tokenList.toArray(new String[tokenList.size()]);
             //调用工具类
             pushInfo.setJson(GsonUtils.toJsonString(brushInfo));
             try {

+ 20 - 0
src/main/java/com/om/service/impl/ClientDevicetokenServiceImpl.java

@@ -0,0 +1,20 @@
+package com.om.service.impl;
+
+import com.om.entity.po.ClientDevicetoken;
+import com.om.mapper.ClientDevicetokenMapper;
+import com.om.service.IClientDevicetokenService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-06-04
+ */
+@Service
+public class ClientDevicetokenServiceImpl extends ServiceImpl<ClientDevicetokenMapper, ClientDevicetoken> implements IClientDevicetokenService {
+
+}

+ 24 - 22
src/main/java/com/om/service/impl/DiagnosisVersionInfoServiceImpl.java

@@ -2,35 +2,26 @@ package com.om.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.PageUtil;
-import cn.hutool.json.JSONUtil;
 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.exception.BizException;
-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.LocalDateTime;
 import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
@@ -68,6 +59,9 @@ public class DiagnosisVersionInfoServiceImpl extends ServiceImpl<DiagnosisVersio
     @Resource
     private PushUtil pushUtil;
 
+    @Resource
+    private IClientDevicetokenService clientDevicetokenService;
+
     @Override
     @Transactional
     public Result add(DiagnosisVersionVO diagnosisVersionVO) {
@@ -424,7 +418,7 @@ public class DiagnosisVersionInfoServiceImpl extends ServiceImpl<DiagnosisVersio
         }
         User user = userService.getById(userId);
         if (BeanUtil.isEmpty(user)) {
-            throw new BadReqException("该客户端账号不存在");
+            return Result.fail(240339,"该客户端账号不存在",null);
         }
         List<VehicleDates> voList = new ArrayList<>();
 
@@ -521,22 +515,15 @@ public class DiagnosisVersionInfoServiceImpl extends ServiceImpl<DiagnosisVersio
         List<DiagClients> diagClients = diagClientsService.lambdaQuery()
                 .eq(DiagClients::getDiagId, diagnosisVersionInfo.getId())
                 .list();
-
+        String[] tokens  = null;
         if (!diagClients.isEmpty()) {
             List<String> clientNums = diagClients.stream().map(c -> c.getClientNum()).collect(Collectors.toList());
-            String[] tokens = new String[clientNums.size()];
+            List<String> tokenList = new ArrayList<>();
             for (String clientNum : clientNums) {
-                int i = 0;
-                Client client = clientService.lambdaQuery()
-                        .eq(Client::getNumber, clientNum)
-                        .one();
-                if (BeanUtil.isNotEmpty(client)) {
-                    tokens[i] = client.getDeviceToken();
-                    i++;
-                }
+                tokenList.addAll(getTokenByClientNum(clientNum));
             }
+            tokens = tokenList.toArray(new String[tokenList.size()]);
             //调用工具类
-
             pushInfo.setJson(GsonUtils.toJsonString(vehicleInfo));
             try {
                 pushUtil.sendAndroidListcastJSON(tokens,pushInfo);
@@ -544,11 +531,26 @@ public class DiagnosisVersionInfoServiceImpl extends ServiceImpl<DiagnosisVersio
                 throw new BizException("推送失败!!!");
             }
         }
-        return Result.ok();
+        return Result.ok(tokens);
     }
 
     @Override
     public Result getDesc(DiagnosisVersionVO diagnosisVersionVO) {
         return null;
     }
+
+    @Override
+    public List<String> getTokenByClientNum(String clientNum) {
+        Client client = clientService.lambdaQuery()
+                .eq(Client::getNumber, clientNum)
+                .one();
+        if (BeanUtil.isNotEmpty(client)) {
+            List<ClientDevicetoken> list = clientDevicetokenService.lambdaQuery()
+                    .eq(ClientDevicetoken::getClientId, client.getId())
+                    .list();
+
+            return list.stream().map(c -> c.getDeviceToken()).collect(Collectors.toList());
+        }
+       return null;
+    }
 }

+ 1 - 1
src/main/java/com/om/service/impl/DiagnosticMenuServiceImpl.java

@@ -207,7 +207,7 @@ public class DiagnosticMenuServiceImpl extends ServiceImpl<DiagnosticMenuMapper,
                 .eq(Client::getNumber, clientNum)
                 .one();
         if (BeanUtil.isEmpty(client)) {
-            throw new BadReqException("该客户端不存在");
+            return Result.fail(52306,"该客户端不存在!!",null);
         }
         QueryWrapper<DiagnosticMenu> wrapper = new QueryWrapper<>();
         wrapper.apply("CONCAT(',', client_ids, ',') LIKE {0}", "%," + client.getId() + ",%");

+ 7 - 11
src/main/java/com/om/service/impl/ManualServiceImpl.java

@@ -15,6 +15,7 @@ import com.om.exception.BadReqException;
 import com.om.exception.BizException;
 import com.om.mapper.ManualMapper;
 import com.om.service.IClientService;
+import com.om.service.IDiagnosisVersionInfoService;
 import com.om.service.IManualService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.om.utils.*;
@@ -52,6 +53,9 @@ public class ManualServiceImpl extends ServiceImpl<ManualMapper, Manual> impleme
   @Resource
   private PushUtil pushUtil;
 
+  @Resource
+  private IDiagnosisVersionInfoService diagnosisVersionInfoService;
+
   @Override
   public Page<ManualPageVO> findManual(Page<Manual> page, String code, String title) {
       Page<Manual> manualPage
@@ -99,7 +103,7 @@ public class ManualServiceImpl extends ServiceImpl<ManualMapper, Manual> impleme
     public Result pushManual(Integer id) {
         Manual manual = this.getById(id);
         if (BeanUtil.isEmpty(manual)){
-            throw new BadReqException("该使用手册不存在");
+            return Result.fail(53211,"该使用手册不存在",null);
         }
         PushInfo pushInfo = new PushInfo();
         pushInfo.setPushInfoType(4);
@@ -127,22 +131,14 @@ public class ManualServiceImpl extends ServiceImpl<ManualMapper, Manual> impleme
         String clientCode = manual.getClientCode();
         if (StringUtils.isNotBlank(clientCode)){
 
-            Client client = clientService.lambdaQuery()
-                    .eq(Client::getNumber, clientCode)
-                    .one();
+            List<String> tokenByClientNum = diagnosisVersionInfoService.getTokenByClientNum(clientCode);
 
-            if (BeanUtil.isEmpty(client)){
-                throw new BadReqException("该客户端编号不存在");
-            }
-            String deviceToken = client.getDeviceToken();
-            if (StringUtils.isNotBlank(deviceToken)){
-                String[] token = new String[]{deviceToken};
+                String[] token = tokenByClientNum.toArray(new String[tokenByClientNum.size()]);
                 try {
                     pushUtil.sendAndroidListcastJSON(token,pushInfo);
                 } catch (Exception e) {
                     throw new BizException("推送失败");
                 }
-            }
         }
         return Result.ok();
     }

+ 28 - 9
src/main/java/com/om/service/impl/RepairServiceImpl.java

@@ -152,7 +152,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
         String searchVciSn = dto.getSearchVciSn();
         User user = userService.getById(userId);
         if (BeanUtil.isEmpty(user)) {
-            return Result.fail("用户不存在").result(ResultCode.NO_DATA);
+            return Result.fail("用户不存在").result(ResultCode.USER_NO_EXIST);
         }
 
         UserVci userVci = userVciService.lambdaQuery()
@@ -453,7 +453,6 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
         try {
             huaweiObsUtil.upload(file, "report");
             String uploadUrl1 = huaweiObsUtil.getUploadUrl(file.getName(), "report");
-            file.delete();
             return Result.ok(uploadUrl1);
         } catch (IOException e) {
             throw new RuntimeException(e);
@@ -461,15 +460,17 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
     }
 
     @Override
-    public Result reportH5(Integer id) {
+    public Result reportH5(Integer id, String language) {
         //根据id查询报告是否存在
         Repair repair = this.getById(id);
 
         if (BeanUtil.isEmpty(repair)) {
             throw new BadReqException("该诊断报告不存在");
         }
-
+        RepairTitle repairTitle = new RepairTitle();
+        BeanUtil.copyProperties(repair, repairTitle);
         Map<String, String> baseMap = new HashMap<>();
+        Map<String, String> companyMap = new HashMap<>();
         baseMap.put("车架号", repair.getVin());
         baseMap.put("年款", repair.getModelYear());
         baseMap.put("里程", repair.getMileage());
@@ -477,11 +478,24 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
         baseMap.put("报告编号", repair.getRepairNum());
         baseMap.put("SN", repair.getSn());
 
-        Map<String, String> companyMap = new HashMap<>();
+
         companyMap.put("公司", repair.getCompany());
         companyMap.put("电话", repair.getTelephone());
         companyMap.put("地址", repair.getAddress());
 
+        repairTitle.setVin(repair.getVinTitle());
+        repairTitle.setModelYear(repair.getModelYearTitle());
+        repairTitle.setMileage(repair.getMileageTitle());
+        repairTitle.setDiagnosticPath(repair.getDiagnosticPathTitle());
+        repairTitle.setRepairNum(repair.getDiagnosticReportTitle());
+        repairTitle.setSN(repair.getSnTitle());
+
+        repairTitle.setCompany(repair.getCompanyTitle());
+        repairTitle.setTelephone(repair.getTelephoneTitle());
+        repairTitle.setAddress(repair.getAddressTitle());
+        repairTitle.setMessage(repair.getDisclaimer());
+
+
         List<ControlListMap> controlListMap = new ArrayList<>();
 
         List<Integer> eleIds = electronicControlService.lambdaQuery()
@@ -519,22 +533,27 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
         }
 
 
-        File file = htmlGenerator.generateHtmlByMap(repair.getId(), controlListMap, baseMap, companyMap);
+        File file = htmlGenerator.generateHtmlByMap(repair.getId(), controlListMap, baseMap, companyMap, repairTitle);
 
         if (file == null) {
             throw new BizException("该h5文件不存在");
         }
         try {
+            //上传设置
+
             huaweiObsUtil.upload(file, "h5");
 
             String uploadUrl1 = huaweiObsUtil.getUploadUrl(file.getName(), "h5");
-            file.delete();
             return Result.ok(uploadUrl1);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
     }
 
+    private void setRepairLanguage(RepairTitle repairTitle, String language) {
+
+    }
+
     @Override
     public Result updateBase(AppRepairUpdateBaseDTO dto) {
         Integer id = dto.getId();
@@ -598,9 +617,9 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
         String guid = dto.getGuid();
         GuidDTO guidDTO = AesUtil.getGuidDTOFromGuid(guid);
         Integer userId = guidDTO.getUserId();
-
+        String language = dto.getLanguage();
         Integer diagnosticReportId = dto.getDiagnosticReportId();
-        return this.reportH5(diagnosticReportId);
+        return this.reportH5(diagnosticReportId, language);
     }
 
 

+ 15 - 3
src/main/java/com/om/service/impl/UserServiceImpl.java

@@ -74,6 +74,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Resource
     private IDeviceService deviceService;
 
+    @Resource
+    private IClientDevicetokenService clientDevicetokenService;
+
 
     @Override
     @Transactional
@@ -118,11 +121,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                 .eq(Client::getNumber, clientNum)
                 .one();
         if (BeanUtil.isEmpty(client)) {
-            throw new BadReqException("该客户端不存在");
+            return Result.fail(52306,"该客户端不存在",null);
         }
-        client.setDeviceToken(deviceToken);
-        clientService.updateById(client);
 
+        clientService.updateById(client);
+        ClientDevicetoken clientDevicetoken1 = clientDevicetokenService.lambdaQuery()
+                .eq(ClientDevicetoken::getClientId, client.getId())
+                .eq(ClientDevicetoken::getDeviceToken, deviceToken)
+                .one();
+        if (BeanUtil.isEmpty(clientDevicetoken1)) {
+            ClientDevicetoken clientDevicetoken = new ClientDevicetoken();
+            clientDevicetoken.setClientId(client.getId());
+            clientDevicetoken.setDeviceToken(deviceToken);
+            clientDevicetokenService.save(clientDevicetoken);
+        }
         // 生成token
         Map<String, Object> claims = new HashMap<>();
         claims.put("u_id", user.getId());

+ 1 - 1
src/main/java/com/om/service/impl/VciInfoServiceImpl.java

@@ -244,7 +244,7 @@ public class VciInfoServiceImpl extends ServiceImpl<VciInfoMapper, VciInfo> impl
                 //根据pcbId查询pcb
                 PcbVersionInfo pcbVersionInfo = pcbVersionInfoService.getById(sdkVersionInfo.getPcbId());
                 if(BeanUtil.isEmpty(pcbVersionInfo)){
-                    throw new BadReqException("该PCB版本不存在!!!");
+                    return Result.error().message("该PCB版本不存在!!!").result(24001);
                 }
 
                 SdkVersionDescribe sdkVersionDescribe = sdkVersionDescribeService.lambdaQuery()

+ 6 - 11
src/main/java/com/om/service/impl/WxscServiceImpl.java

@@ -18,6 +18,7 @@ import com.om.exception.BizException;
 import com.om.mapper.BrandMapper;
 import com.om.mapper.WxscMapper;
 import com.om.service.IClientService;
+import com.om.service.IDiagnosisVersionInfoService;
 import com.om.service.IWxscService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.om.utils.*;
@@ -64,6 +65,9 @@ public class WxscServiceImpl extends ServiceImpl<WxscMapper, Wxsc> implements IW
   @Resource
   private PushUtil pushUtil;
 
+  @Resource
+  private IDiagnosisVersionInfoService diagnosisVersionInfoService;
+
   @Override
   public Page<WxscPageVO> findManual(Page<Wxsc> page, String code, String title) {
       Page<Wxsc> wxscPage = wxscMapper.findManual(page, code, title);
@@ -201,22 +205,13 @@ public class WxscServiceImpl extends ServiceImpl<WxscMapper, Wxsc> implements IW
         String clientCode = wxsc.getClientCode();
         if (StringUtils.isNotBlank(clientCode)){
 
-            Client client = clientService.lambdaQuery()
-                    .eq(Client::getNumber, clientCode)
-                    .one();
-
-            if (BeanUtil.isEmpty(client)){
-                throw new BadReqException("该客户端编号不存在");
-            }
-            String deviceToken = client.getDeviceToken();
-            if (StringUtils.isNotBlank(deviceToken)){
-                String[] token = new String[]{deviceToken};
+            List<String> tokenByClientNum = diagnosisVersionInfoService.getTokenByClientNum(clientCode);
+                String[] token = tokenByClientNum.toArray(new String[tokenByClientNum.size()]);
                 try {
                     pushUtil.sendAndroidListcastJSON(token,pushInfo);
                 } catch (Exception e) {
                     throw new BizException("推送失败");
                 }
-            }
         }
         return Result.ok();
     }

+ 22 - 1
src/main/java/com/om/utils/HtmlGenerator.java

@@ -3,6 +3,7 @@ package com.om.utils;
 
 import com.om.OperationApplication;
 import com.om.entity.dto.ControlListMap;
+import com.om.entity.vo.RepairTitle;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import org.apache.velocity.VelocityContext;
@@ -25,7 +26,7 @@ public class HtmlGenerator {
 
 
     public  File generateHtmlByMap(Integer id, List<ControlListMap> controlListMap
-            , Map<String, String> baseMap, Map<String, String> companyMap){
+            , Map<String, String> baseMap, Map<String, String> companyMap, RepairTitle repairTitle){
 
         try {
             Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
@@ -35,11 +36,31 @@ public class HtmlGenerator {
             String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
             StringWriter out = new StringWriter();
             Map<String, Object> data = new HashMap<>();
+
             data.put("reportTime",format);
             data.put("baseMap", baseMap);
             data.put("controlListMap", controlListMap);
             data.put("companyMap", companyMap);
             data.put("id", id);
+            data.put("mainTitle",repairTitle.getMainTitle());
+            data.put("carInfoTitle",repairTitle.getCarInfoTitle());
+            data.put("diagnosticDetailsTitle",repairTitle.getDiagnosticDetailsTitle());
+            data.put("abnormalSystemTitle",repairTitle.getAbnormalSystemTitle());
+            data.put("normalSystemTitle",repairTitle.getNormalSystemTitle());
+            data.put("faultCodeTitle",repairTitle.getFaultCodeTitle());
+            data.put("versionInfoTitle",repairTitle.getVersionInfoTitle());
+
+            data.put("vin",repairTitle.getVin());
+            data.put("modelYear",repairTitle.getModelYear());
+            data.put("mileage",repairTitle.getMileage());
+            data.put("diagnosticPath",repairTitle.getDiagnosticPath());
+            data.put("repairNum",repairTitle.getRepairNum());
+            data.put("SN",repairTitle.getSN());
+            data.put("company",repairTitle.getCompany());
+            data.put("address",repairTitle.getAddress());
+            data.put("telephone",repairTitle.getTelephone());
+            data.put("message",repairTitle.getMessage());
+
 
             template.process(data, out);
 

+ 5 - 0
src/main/java/com/om/utils/HuaweiObsUtil.java

@@ -47,6 +47,9 @@ public class HuaweiObsUtil {
     @Value("${obs.path}")
     private String path;
 
+    @Value("${h5.upload.url}")
+    private String h5UploadUrl;
+
     /**
      * 文件上传
      *
@@ -184,5 +187,7 @@ public class HuaweiObsUtil {
             return desc;
         }
     }
+
+
 }
 

+ 3 - 0
src/main/resources/application-dev.yml

@@ -59,6 +59,9 @@ obs:
   endpoint: obs.cn-south-1.myhuaweicloud.com
   path: http://resources.yanxingauto.cn/
 
+h5:
+  upload:
+    url: src/main/resources/template/static/h5/
 
 umeng:
   appkey: 645ccc629d750b58f0cde94a

+ 5 - 0
src/main/resources/mapper/ClientDevicetokenMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.om.mapper.ClientDevicetokenMapper">
+
+</mapper>

+ 31 - 27
src/main/resources/template/static/report.html

@@ -43,7 +43,7 @@
             text-align: center;
             margin: 0 auto;
             padding: 10px;
-            width: 120px;
+            width: 200px;
 
 
             border-bottom-left-radius: 8px;
@@ -55,7 +55,7 @@
             font-size: 24px; /* 调整字体大小 */
             font-weight: bold;
 
-            text-align: center;
+            text-align: left;
             padding: 10px;
             width: 500px;
             margin-top: 40px;
@@ -191,27 +191,27 @@
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
     <script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js"></script>
 
-    <script src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com/static/axios.min.js"></script>
+    <script src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com:443/static/axios.min.js"></script>
 </head>
 <body>
 
 <div class="vehicle-info">
-    <h1 class="report-title">诊断报告</h1>
+    <h1 class="report-title">${mainTitle}</h1>
     <p class="report-time">- ${reportTime} -</p>
 </div>
 
-<#list controlListMap as controlMap>
+
 <div class="vehicle-info">
     <div>
-        <h2>车辆信息</h2>
-        <img src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com/static/img.png"
+        <h2>${carInfoTitle}</h2>
+      <!--  <img src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com:443/static/img.png"
              height="30" width="30"
              style="float: right; margin: 0 0 10px 10px; cursor: pointer;"
-             onclick="editCell()">
+             onclick="editCell()">-->
     </div>
     <table>
         <tr>
-            <td>车架号:</td>
+            <td>${vin}:</td>
             <td id="vin" style="padding-left: 180px">
                 <#if baseMap["车架号"]?has_content>
                 ${baseMap["车架号"]}
@@ -221,7 +221,7 @@
             </td>
         </tr>
         <tr>
-            <td>年款:</td>
+            <td>${modelYear}:</td>
             <td id="year" style="padding-left: 180px">
                 <#if baseMap["年款"]?has_content>
                 ${baseMap["年款"]}
@@ -231,7 +231,7 @@
             </td>
         </tr>
         <tr>
-            <td>里程:</td>
+            <td>${mileage}:</td>
             <td id="mileage" style="padding-left: 180px">
                 <#if baseMap["里程"]?has_content>
                 ${baseMap["里程"]}
@@ -242,27 +242,29 @@
         </tr>
 
         <tr>
-            <td>诊断路径:</td>
+            <td>${diagnosticPath}:</td>
             <td style="padding-left: 180px">${baseMap["诊断路径"]}</td>
         </tr>
         <tr>
-            <td>报告编号:</td>
+            <td>${repairNum}:</td>
             <td style="padding-left: 180px">${baseMap["报告编号"]}</td>
         </tr>
         <tr>
-            <td>SN:</td>
+            <td>${SN}:</td>
             <td style="padding-left: 180px">${baseMap["SN"]}</td>
         </tr>
 
     </table>
 </div>
+
 <div class="diagnosis-details">
-    <h2>诊断详情</h2>
+    <h2>${diagnosticDetailsTitle}</h2>
+    <#list controlListMap as controlMap>
     <div style="display: flex;"><div class="fan"><h3>${controlMap.getName()}</h3></div>
         <div style="margin-top: 83px;width: 10000px;margin-right: 50px" ><hr color="#406DB7"></div></div>
     <table>
         <div class="company-info">
-            <p>故障码(
+            <p>${faultCodeTitle}(
                 <#if controlMap.getFaultCodeMap()?size != 0 >
                 ${controlMap.getFaultCodeMap()?size}
                 <#else>
@@ -291,7 +293,7 @@
         </tr>
     </table>
     <div class="vehicle-info">
-        <p>版本信息(
+        <p>${versionInfoTitle}(
             <#if controlMap.getVersionMap()?size != 0 >
             ${controlMap.getVersionMap()?size}
             <#else>
@@ -308,17 +310,18 @@
         </tr>
     </#list>
     </table>
-</div>
 </#list>
+</div>
+
 
 <div class="company-info">
-    <img src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com/static/img.png"
+    <!--<img src="https://wl-resource.obs.cn-south-1.myhuaweicloud.com:443/static/img.png"
          height="30" width="30"
          style="float: right; margin: 0 0 10px 10px; cursor: pointer;"
-         onclick="editCellFoot()">
+         onclick="editCellFoot()">-->
     <table>
         <tr>
-            <td>公司:</td>
+            <td>${company}:</td>
             <td id="company" style="padding-left: 180px">
                 <#if companyMap["公司"]?has_content>
                 ${companyMap["公司"]}
@@ -328,7 +331,7 @@
             </td>
         </tr>
         <tr>
-            <td>电话:</td>
+            <td>${telephone}:</td>
             <td id="phone" style="padding-left: 180px">
                 <#if companyMap["电话"]?has_content>
                 ${companyMap["电话"]}
@@ -338,7 +341,7 @@
             </td>
         </tr>
         <tr>
-            <td>地址:</td>
+            <td>${address}:</td>
             <td id="address" style="padding-left: 180px">
                 <#if companyMap["地址"]?has_content>
                 ${companyMap["地址"]}
@@ -349,9 +352,10 @@
         </tr>
 
     </table>
-    <p STYLE="font-size: 15px"><text style="color: red">*</text>该车辆检测报告仅对本次检查结果负责</p>
+    <p STYLE="font-size: 15px"><text style="color: red">*</text>${message}</p>
 </div>
-<script>
+<!--<script>
+
 
 
     function editCell() {
@@ -381,7 +385,7 @@
         // 这里可以进行保存操作,比如向服务器发送请求保存数据修改
         // 保存完成后可以进行一些提示或其他操作
         // 使用 Axios 发送 POST 请求
-        axios.post('http://47.113.197.148:8888/app/diagnosis/report/updateBase', {
+        axios.post('http://116.205.227.91:8888/app/diagnosis/report/updateBase', {
             id: id,
             type: field,
             value: value,
@@ -452,7 +456,7 @@
                 console.error(error);
             });
     }
-</script>
+</script>-->
 
 
 </body>

+ 0 - 2
src/test/java/com/util/MapToHTML.java

@@ -19,8 +19,6 @@ public class MapToHTML {
     @Test
     public void reportH5test(){
 
-        Result<String> stringResult = repairService.reportH5(1);
-        System.out.println(stringResult);
     }