浏览代码

客户端诊断报告

bmmx 1 年之前
父节点
当前提交
7c0eb8166d

+ 51 - 0
src/main/java/com/om/controller/user/APPRepairController.java

@@ -0,0 +1,51 @@
+package com.om.controller.user;
+
+
+import com.om.entity.dto.APPRepairQueryPageDTO;
+import com.om.entity.dto.APPReportCreateDTO;
+import com.om.entity.vo.AppRepairQueryPageVO;
+import com.om.service.IRepairService;
+import com.om.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author bmmx
+ * @since 2024-02-18
+ */
+@RestController
+@Api(tags = "用户端诊断报告")
+@RequestMapping("/app/diagnosis/report")
+public class APPRepairController {
+
+    @Resource
+    private IRepairService repairService;
+
+    @PostMapping("/create")
+    @ApiOperation("创建诊断报告")
+    public Result createReport(@RequestBody APPReportCreateDTO dto){
+        return repairService.createReport(dto);
+    }
+
+
+    @PostMapping("/getPageList")
+    @ApiOperation("获取诊断报告列表")
+    public Result<AppRepairQueryPageVO> getPageList(@RequestBody APPRepairQueryPageDTO dto){
+        return repairService.getPageList(dto);
+    }
+
+
+    @PostMapping("/delete")
+    @ApiOperation("获取诊断报告列表")
+    public Result delete(@RequestParam Integer id){
+        return repairService.delete(id);
+    }
+
+}

+ 15 - 0
src/main/java/com/om/entity/dto/APPRepairQueryPageDTO.java

@@ -0,0 +1,15 @@
+package com.om.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class APPRepairQueryPageDTO {
+    @ApiModelProperty(value = "当前页码")
+    private Integer pageIndex;
+
+    @ApiModelProperty(value = "每个页码的大小")
+    private Integer pageSize;
+}

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

@@ -0,0 +1,38 @@
+package com.om.entity.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class APPReportCreateDTO {
+
+    @ApiModelProperty(value = "诊断报告ID")
+    private Integer id;
+
+    @ApiModelProperty(value = "主标题,如:诊断报告")
+    private String mainTitle;
+
+    @ApiModelProperty(value = "小标题,如车辆信息")
+    private String carInfoTitle;
+
+    @ApiModelProperty(value = "里程")
+    private String mileage;
+
+    @ApiModelProperty(value = "SN号")
+    private String sn;
+
+    @ApiModelProperty(value = "文件名")
+    private String fileName;
+
+    @ApiModelProperty(value = "诊断路径")
+    private String diagnosticPath;
+
+
+    @ApiModelProperty(value = "激活的系统集合")
+    private List<AppElectronicDTO> electronicControls;
+}

+ 18 - 0
src/main/java/com/om/entity/dto/AppEcuInfoDTO.java

@@ -0,0 +1,18 @@
+package com.om.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class AppEcuInfoDTO {
+
+    @ApiModelProperty(value = "EcuInfoID")
+    private Integer id;
+
+
+    @ApiModelProperty(value = "条目名称")
+    private String strCaption;
+
+    @ApiModelProperty(value = "值")
+    private String strInformation;
+}

+ 39 - 0
src/main/java/com/om/entity/dto/AppElectronicDTO.java

@@ -0,0 +1,39 @@
+package com.om.entity.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AppElectronicDTO {
+
+    @ApiModelProperty(value = "electronic_controlID")
+    private Integer id;
+
+    @ApiModelProperty(value = "系统名称")
+    private String electronicControlName;
+
+    @ApiModelProperty(value = "小标题,如:诊断详情")
+    private String diagnosticDetailsTitle;
+
+    @ApiModelProperty(value = "故障码标题")
+    private String faultCodeTitle;
+
+    @ApiModelProperty(value = "版本信息标题")
+    private String versionInfoTitle;
+
+    @ApiModelProperty(value = "异常系统标题")
+    private String abnormalSystemTitle;
+
+    @ApiModelProperty(value = "正常系统标题")
+    private String normalSystem;
+
+    @ApiModelProperty(value = "版本信息集合")
+    private List<AppEcuInfoDTO> ecuInfors;
+
+    @ApiModelProperty(value = "故障码集合")
+    private List<AppFaultCodeDTO> faultCodes;
+}

+ 23 - 0
src/main/java/com/om/entity/dto/AppFaultCodeDTO.java

@@ -0,0 +1,23 @@
+package com.om.entity.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class AppFaultCodeDTO {
+
+    @ApiModelProperty(value = "FaultCodeID")
+    private Integer id;
+
+    @ApiModelProperty(value = "故障代码")
+    private String faultCode;
+
+    @ApiModelProperty(value = "描述")
+    private String description;
+
+    @ApiModelProperty(value = "故障码状态")
+    private String status;
+
+}

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

@@ -12,9 +12,6 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 /**
- * <p>
- * 
- * </p>
  *
  * @author bmmx
  * @since 2024-02-18

+ 32 - 0
src/main/java/com/om/entity/vo/AppRepairQueryPageVO.java

@@ -0,0 +1,32 @@
+package com.om.entity.vo;
+
+import com.om.entity.po.User;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+public class AppRepairQueryPageVO {
+
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    @ApiModelProperty(value = "总页码")
+    private Integer pages;
+
+    @ApiModelProperty(value = "每个页码的大小")
+    private Integer size;
+
+    @ApiModelProperty(value = "总数量")
+    private Integer total;
+
+    @ApiModelProperty(value = "是否是查询")
+    private Boolean searchCount = false;
+
+    @ApiModelProperty(value = "结果集")
+    private List<DiagnosticReportVO> records;
+
+}

+ 28 - 0
src/main/java/com/om/entity/vo/DiagnosticReportVO.java

@@ -0,0 +1,28 @@
+package com.om.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@NoArgsConstructor
+public class DiagnosticReportVO {
+    @ApiModelProperty(value = "诊断报告ID")
+    private Integer diagnosticReportId;
+
+    @ApiModelProperty(value = "文件名")
+    private String fileName;
+
+    @ApiModelProperty(value = "诊断报告名称")
+    private String diagnosticReportName;
+
+    @ApiModelProperty(value = "故障数量")
+    private String faultCodesNumber;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime creationTime;
+}

+ 9 - 0
src/main/java/com/om/service/IRepairService.java

@@ -1,7 +1,11 @@
 package com.om.service;
 
+import com.om.entity.dto.APPRepairQueryPageDTO;
+import com.om.entity.dto.APPReportCreateDTO;
 import com.om.entity.po.Repair;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.om.entity.vo.AppRepairQueryPageVO;
+import com.om.utils.Result;
 
 /**
  * <p>
@@ -13,4 +17,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IRepairService extends IService<Repair> {
 
+    Result createReport(APPReportCreateDTO dto);
+
+    Result<AppRepairQueryPageVO> getPageList(APPRepairQueryPageDTO dto);
+
+    Result delete(Integer id);
 }

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

@@ -1,14 +1,33 @@
 package com.om.service.impl;
 
-import com.om.entity.po.Repair;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.om.entity.dto.*;
+import com.om.entity.po.*;
+import com.om.entity.vo.AppRepairQueryPageVO;
+import com.om.entity.vo.DiagnosticReportVO;
+import com.om.exception.BadReqException;
 import com.om.mapper.RepairMapper;
+import com.om.service.IEcuInfoService;
+import com.om.service.IElectronicControlService;
+import com.om.service.IFaultCodeService;
 import com.om.service.IRepairService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.om.utils.Result;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author bmmx
@@ -17,4 +36,129 @@ import org.springframework.stereotype.Service;
 @Service
 public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> implements IRepairService {
 
+    @Resource
+    private IFaultCodeService faultCodeService;
+
+    @Resource
+    private IEcuInfoService ecuInfoService;
+
+    @Resource
+    private IElectronicControlService electronicControlService;
+
+    @Override
+    @Transactional
+    public Result createReport(APPReportCreateDTO dto) {
+        // 判断数据、
+        if (BeanUtil.isEmpty(dto)) {
+            throw new BadReqException("数据为空");
+        }
+
+        Repair repair = BeanUtil.copyProperties(dto, Repair.class);
+        List<AppElectronicDTO> electronicControls = dto.getElectronicControls();
+
+        List<ElectronicControl> electronicControlList = new ArrayList<>();
+        for (AppElectronicDTO electronicControlDTO : electronicControls) {
+            ElectronicControl electronicControl = BeanUtil.copyProperties(electronicControlDTO, ElectronicControl.class);
+            electronicControlList.add(electronicControl);
+            List<AppEcuInfoDTO> ecuInfors = electronicControlDTO.getEcuInfors();
+            List<AppFaultCodeDTO> faultCodes = electronicControlDTO.getFaultCodes();
+
+            List<EcuInfo> ecuInfos = BeanUtil.copyToList(ecuInfors, EcuInfo.class);
+            List<FaultCode> faultCodes1 = BeanUtil.copyToList(faultCodes, FaultCode.class);
+
+            for (EcuInfo ecuInfo : ecuInfos) {
+                ecuInfo.setElectronicControlId(electronicControl.getId());
+            }
+
+            for (FaultCode faultCode : faultCodes1) {
+                faultCode.setElectronicControlId(electronicControl.getId());
+            }
+            repair.setElectronicControlId(electronicControl.getId());
+            ecuInfoService.saveBatch(ecuInfos);
+            faultCodeService.saveBatch(faultCodes1);
+
+        }
+        electronicControlService.saveBatch(electronicControlList);
+
+        this.save(repair);
+        return Result.ok();
+    }
+
+    @Override
+    public Result<AppRepairQueryPageVO> getPageList(APPRepairQueryPageDTO dto) {
+        //获取数据
+        Integer pageIndex = dto.getPageIndex();
+        Integer pageSize = dto.getPageSize();
+
+        //分页查询
+        Page<Repair> page = this.lambdaQuery()
+                .orderByDesc(Repair::getCreateTime)
+                .page(new Page<>(pageIndex, pageSize));
+
+        if (BeanUtil.isEmpty(page)) {
+            throw new BadReqException("请求失败");
+        }
+
+        AppRepairQueryPageVO vo = new AppRepairQueryPageVO();
+
+        vo.setSize(pageSize);
+        vo.setCurrent(pageIndex);
+        vo.setPages((int) page.getPages());
+        vo.setTotal((int) page.getTotal());
+
+        List<Repair> records = page.getRecords();
+        if (CollectionUtil.isEmpty(records)) {
+            records = Collections.emptyList();
+        }
+
+        List<DiagnosticReportVO> list = new ArrayList<>();
+        for (Repair record : records) {
+            DiagnosticReportVO diagnosticReportVO = new DiagnosticReportVO();
+            diagnosticReportVO.setCreationTime(LocalDateTime.now());
+            diagnosticReportVO.setDiagnosticReportId(record.getId());
+            diagnosticReportVO.setDiagnosticReportName(record.getMainTitle());
+            diagnosticReportVO.setFileName(record.getFileName());
+            Integer electronicControlId = record.getElectronicControlId();
+
+            List<FaultCode> faultCodeList = faultCodeService.lambdaQuery()
+                    .eq(FaultCode::getElectronicControlId, electronicControlId)
+                    .list();
+
+            diagnosticReportVO.setFaultCodesNumber(String.valueOf(faultCodeList.size()));
+
+            list.add(diagnosticReportVO);
+        }
+
+        vo.setRecords(list);
+        return Result.ok(vo);
+    }
+
+    @Override
+    @Transactional
+    public Result delete(Integer id) {
+        //根据id查询
+        Repair repair = this.getById(id);
+        if (BeanUtil.isEmpty(repair)) {
+            throw new BadReqException("该诊断报告不存在");
+        }
+        Integer electronicControlId = repair.getElectronicControlId();
+
+        List<FaultCode> faultCodeList = faultCodeService.lambdaQuery()
+                .eq(FaultCode::getElectronicControlId, electronicControlId)
+                .list();
+        List<Integer> faultCodeIds = faultCodeList.stream().map(c -> c.getId()).collect(Collectors.toList());
+
+
+        List<EcuInfo> ecuInfos = ecuInfoService.lambdaQuery()
+                .eq(EcuInfo::getElectronicControlId, electronicControlId)
+                .list();
+        List<Integer> ecuIds = ecuInfos.stream().map(c -> c.getId()).collect(Collectors.toList());
+        faultCodeService.removeByIds(faultCodeIds);
+        ecuInfoService.removeByIds(ecuIds);
+
+        electronicControlService.removeById(electronicControlId);
+        this.removeById(id);
+        return Result.ok();
+    }
 }
+