From 5cfa20bbf53a145e2f7abd5d8b61517b780f915c Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 04 六月 2026 14:42:33 +0800
Subject: [PATCH] 更改

---
 basic-server/src/main/java/com/ruoyi/basic/mapper/QualityDefectiveProductMapper.java            |   16 ++
 basic-server/src/main/java/com/ruoyi/basic/pojo/QualityDefectiveProduct.java                    |   88 +++++++++++
 basic-server/doc/质量管理.sql                                                                       |   25 +++
 basic-server/src/main/java/com/ruoyi/basic/controller/QualityDefectiveProductController.java    |   99 ++++++++++++
 basic-server/src/main/java/com/ruoyi/basic/dto/DefectiveProductDto.java                         |   44 +++++
 basic-server/src/main/java/com/ruoyi/basic/dto/DefectiveProductAuditDto.java                    |   20 ++
 basic-server/src/main/java/com/ruoyi/basic/service/QualityDefectiveProductService.java          |   33 ++++
 basic-server/src/main/resources/mapper/QualityDefectiveProductMapper.xml                        |   21 ++
 basic-server/src/main/java/com/ruoyi/basic/service/impl/QualityDefectiveProductServiceImpl.java |  121 +++++++++++++++
 9 files changed, 467 insertions(+), 0 deletions(-)

diff --git "a/basic-server/doc/\350\264\250\351\207\217\347\256\241\347\220\206.sql" "b/basic-server/doc/\350\264\250\351\207\217\347\256\241\347\220\206.sql"
new file mode 100644
index 0000000..8af8002
--- /dev/null
+++ "b/basic-server/doc/\350\264\250\351\207\217\347\256\241\347\220\206.sql"
@@ -0,0 +1,25 @@
+CREATE TABLE `quality_defective_product` (
+                                             `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+                                             `report_no` VARCHAR(100) DEFAULT NULL COMMENT '鎶ュ憡缂栧彿',
+                                             `product_name` VARCHAR(200) DEFAULT NULL COMMENT '浜у搧鍚嶇О',
+                                             `production_batch` VARCHAR(100) DEFAULT NULL COMMENT '鐢熶骇鎵规',
+                                             `material_name` VARCHAR(200) DEFAULT NULL COMMENT '鐗╂枡鍚嶇О',
+                                             `specs_models` VARCHAR(200) DEFAULT NULL COMMENT '瑙勬牸鍨嬪彿',
+                                             `manufacturer` VARCHAR(200) DEFAULT NULL COMMENT '鐢熶骇鍘傚',
+                                             `raw_material_info` TEXT DEFAULT NULL COMMENT '鍘熸潗鏂欎俊鎭�',
+                                             `defective_qty` INT DEFAULT NULL COMMENT '涓嶈壇鍝佹暟閲�',
+                                             `related_test_info` TEXT DEFAULT NULL COMMENT '鍏宠仈妫�娴嬩俊鎭�',
+                                             `unqualified_desc` TEXT DEFAULT NULL COMMENT '涓嶅悎鏍兼弿杩�',
+                                             `inspector` VARCHAR(100) DEFAULT NULL COMMENT '妫�楠屼汉鍛�',
+                                             `register_by` VARCHAR(100) DEFAULT NULL COMMENT '鐧昏浜�',
+                                             `register_time` DATETIME DEFAULT NULL COMMENT '鐧昏鏃堕棿',
+                                             `audit_status` TINYINT DEFAULT '0' COMMENT '瀹℃牳鐘舵�侊細0-寰呭鏍革紝1-宸插鏍�',
+                                             `audit_remark` TEXT DEFAULT NULL COMMENT '瀹℃牳鎰忚',
+                                             `audit_by` VARCHAR(100) DEFAULT NULL COMMENT '瀹℃牳浜�',
+                                             `audit_time` DATETIME DEFAULT NULL COMMENT '瀹℃牳鏃堕棿',
+                                             `create_by` VARCHAR(100) DEFAULT NULL COMMENT '鍒涘缓浜�',
+                                             `update_by` VARCHAR(100) DEFAULT NULL COMMENT '淇敼浜�',
+                                             `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+                                             `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+                                             PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='涓嶈壇鍝佺櫥璁拌〃';
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/QualityDefectiveProductController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/QualityDefectiveProductController.java
new file mode 100644
index 0000000..fc1800f
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/QualityDefectiveProductController.java
@@ -0,0 +1,99 @@
+package com.ruoyi.basic.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.basic.dto.DefectiveProductAuditDto;
+import com.ruoyi.basic.dto.DefectiveProductDto;
+import com.ruoyi.basic.pojo.QualityDefectiveProduct;
+import com.ruoyi.basic.service.QualityDefectiveProductService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * 涓嶈壇鍝佺櫥璁版帶鍒跺櫒
+ */
+@Api(tags = "涓嶈壇鍝佺櫥璁�")
+@RestController
+@RequestMapping("/quality/defectiveProduct")
+public class QualityDefectiveProductController {
+
+    @Resource
+    private QualityDefectiveProductService defectiveProductService;
+
+    /**
+     * 鏌ヨ涓嶈壇鍝佺櫥璁板垪琛�
+     */
+    @ApiOperation(value = "鏌ヨ涓嶈壇鍝佺櫥璁板垪琛�")
+    @GetMapping("/list")
+    public Result<IPage<QualityDefectiveProduct>> pageDefectiveProduct(Page<QualityDefectiveProduct> page, QualityDefectiveProduct query) {
+        return Result.success(defectiveProductService.selectPage(page, query));
+    }
+
+    /**
+     * 鑾峰彇涓嶈壇鍝佽鎯�
+     */
+    @ApiOperation(value = "鑾峰彇涓嶈壇鍝佽鎯�")
+    @GetMapping("/get")
+    public Result<QualityDefectiveProduct> getDefectiveProduct(Long id) {
+        return Result.success(defectiveProductService.selectById(id));
+    }
+
+    /**
+     * 鏂板涓嶈壇鍝佺櫥璁�
+     */
+    @ApiOperation(value = "鏂板涓嶈壇鍝佺櫥璁�")
+    @PostMapping
+    public Result<Integer> addDefectiveProduct(@RequestBody DefectiveProductDto data) {
+        return Result.success(defectiveProductService.insert(data));
+    }
+
+    /**
+     * 淇敼涓嶈壇鍝佺櫥璁�
+     */
+    @ApiOperation(value = "淇敼涓嶈壇鍝佺櫥璁�")
+    @PostMapping("/update")
+    public Result<Integer> updateDefectiveProduct(@RequestBody QualityDefectiveProduct data) {
+        return Result.success(defectiveProductService.update(data));
+    }
+
+    /**
+     * 鍒犻櫎涓嶈壇鍝佺櫥璁帮紙鏀寔鎵归噺鍒犻櫎锛�
+     */
+    @ApiOperation(value = "鍒犻櫎涓嶈壇鍝佺櫥璁�")
+    @DeleteMapping("/delete")
+    public Result<Integer> deleteDefectiveProduct(Long[] ids) {
+        if (ids == null || ids.length == 0) {
+            return Result.fail("璇烽�夋嫨瑕佸垹闄ょ殑璁板綍");
+        }
+        if (ids.length == 1) {
+            return Result.success(defectiveProductService.deleteById(ids[0]));
+        }
+        return Result.success(defectiveProductService.deleteBatchIds(ids));
+    }
+
+    /**
+     * 鏌ヨ涓嶈壇鍝佸鏍稿垪琛�
+     */
+    @ApiOperation(value = "鏌ヨ涓嶈壇鍝佸鏍稿垪琛�")
+    @GetMapping("/audit/page")
+    public Result<IPage<QualityDefectiveProduct>> pageDefectiveProductAudit(Page<QualityDefectiveProduct> page, QualityDefectiveProduct query) {
+        // 瀹℃牳鍒楄〃榛樿鍙煡璇㈠緟瀹℃牳鐘舵��
+        if (query.getAuditStatus() == null) {
+            query.setAuditStatus(0);
+        }
+        return Result.success(defectiveProductService.selectPage(page, query));
+    }
+
+    /**
+     * 涓嶈壇鍝佸鏍�
+     */
+    @ApiOperation(value = "涓嶈壇鍝佸鏍�")
+    @PostMapping("/audit")
+    public Result<Integer> auditDefectiveProduct(@RequestBody DefectiveProductAuditDto data) {
+        return Result.success(defectiveProductService.audit(data));
+    }
+}
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/DefectiveProductAuditDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/DefectiveProductAuditDto.java
new file mode 100644
index 0000000..c9165ae
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/DefectiveProductAuditDto.java
@@ -0,0 +1,20 @@
+package com.ruoyi.basic.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 涓嶈壇鍝佸鏍窪TO
+ */
+@Data
+public class DefectiveProductAuditDto {
+
+    @ApiModelProperty(value = "涓婚敭ID")
+    private Long id;
+
+    @ApiModelProperty(value = "瀹℃牳鐘舵�侊細0-寰呭鏍革紝1-宸插鏍�")
+    private Integer auditStatus;
+
+    @ApiModelProperty(value = "瀹℃牳鎰忚")
+    private String auditRemark;
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/DefectiveProductDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/DefectiveProductDto.java
new file mode 100644
index 0000000..08f193b
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/DefectiveProductDto.java
@@ -0,0 +1,44 @@
+package com.ruoyi.basic.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 涓嶈壇鍝佺櫥璁癉TO
+ */
+@Data
+public class DefectiveProductDto {
+
+    @ApiModelProperty(value = "鎶ュ憡缂栧彿")
+    private String reportNo;
+
+    @ApiModelProperty(value = "浜у搧鍚嶇О")
+    private String productName;
+
+    @ApiModelProperty(value = "鐢熶骇鎵规")
+    private String productionBatch;
+
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О")
+    private String materialName;
+
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+    private String specsModels;
+
+    @ApiModelProperty(value = "鐢熶骇鍘傚")
+    private String manufacturer;
+
+    @ApiModelProperty(value = "鍘熸潗鏂欎俊鎭�")
+    private String rawMaterialInfo;
+
+    @ApiModelProperty(value = "涓嶈壇鍝佹暟閲�")
+    private Integer defectiveQty;
+
+    @ApiModelProperty(value = "鍏宠仈妫�娴嬩俊鎭�")
+    private String relatedTestInfo;
+
+    @ApiModelProperty(value = "涓嶅悎鏍兼弿杩�")
+    private String unqualifiedDesc;
+
+    @ApiModelProperty(value = "妫�楠屼汉鍛�")
+    private String inspector;
+}
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/QualityDefectiveProductMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/QualityDefectiveProductMapper.java
new file mode 100644
index 0000000..a3a3084
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/QualityDefectiveProductMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.basic.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.pojo.QualityDefectiveProduct;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 涓嶈壇鍝佺櫥璁癕apper鎺ュ彛
+ */
+public interface QualityDefectiveProductMapper extends BaseMapper<QualityDefectiveProduct> {
+
+    IPage<QualityDefectiveProduct> selectPage(Page<QualityDefectiveProduct> page, @Param("ew") QueryWrapper<QualityDefectiveProduct> ew);
+}
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/pojo/QualityDefectiveProduct.java b/basic-server/src/main/java/com/ruoyi/basic/pojo/QualityDefectiveProduct.java
new file mode 100644
index 0000000..9084b40
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/pojo/QualityDefectiveProduct.java
@@ -0,0 +1,88 @@
+package com.ruoyi.basic.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 涓嶈壇鍝佺櫥璁�
+ * @TableName quality_defective_product
+ */
+@TableName(value ="quality_defective_product")
+@Data
+public class QualityDefectiveProduct implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "鎶ュ憡缂栧彿")
+    private String reportNo;
+
+    @ApiModelProperty(value = "浜у搧鍚嶇О")
+    private String productName;
+
+    @ApiModelProperty(value = "鐢熶骇鎵规")
+    private String productionBatch;
+
+    @ApiModelProperty(value = "鐗╂枡鍚嶇О")
+    private String materialName;
+
+    @ApiModelProperty(value = "瑙勬牸鍨嬪彿")
+    private String specsModels;
+
+    @ApiModelProperty(value = "鐢熶骇鍘傚")
+    private String manufacturer;
+
+    @ApiModelProperty(value = "鍘熸潗鏂欎俊鎭�")
+    private String rawMaterialInfo;
+
+    @ApiModelProperty(value = "涓嶈壇鍝佹暟閲�")
+    private Integer defectiveQty;
+
+    @ApiModelProperty(value = "鍏宠仈妫�娴嬩俊鎭�")
+    private String relatedTestInfo;
+
+    @ApiModelProperty(value = "涓嶅悎鏍兼弿杩�")
+    private String unqualifiedDesc;
+
+    @ApiModelProperty(value = "妫�楠屼汉鍛�")
+    private String inspector;
+
+    @ApiModelProperty(value = "鐧昏浜�")
+    private String registerBy;
+
+    @ApiModelProperty(value = "鐧昏鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime registerTime;
+
+    @ApiModelProperty(value = "瀹℃牳鐘舵�侊細0-寰呭鏍革紝1-瀹℃牳閫氳繃锛�2-椹冲洖")
+    private Integer auditStatus;
+
+    @ApiModelProperty(value = "瀹℃牳鎰忚")
+    private String auditRemark;
+
+    @ApiModelProperty(value = "瀹℃牳浜�")
+    private String auditBy;
+
+    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime auditTime;
+
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+
+    @ApiModelProperty(value = "淇敼浜�")
+    private String updateBy;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+}
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/QualityDefectiveProductService.java b/basic-server/src/main/java/com/ruoyi/basic/service/QualityDefectiveProductService.java
new file mode 100644
index 0000000..9bb1e30
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/QualityDefectiveProductService.java
@@ -0,0 +1,33 @@
+package com.ruoyi.basic.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.DefectiveProductAuditDto;
+import com.ruoyi.basic.dto.DefectiveProductDto;
+import com.ruoyi.basic.pojo.QualityDefectiveProduct;
+
+import java.util.List;
+
+/**
+ * 涓嶈壇鍝佺櫥璁癝ervice鎺ュ彛
+ */
+public interface QualityDefectiveProductService {
+
+    IPage<QualityDefectiveProduct> selectPage(Page<QualityDefectiveProduct> page, QualityDefectiveProduct entity);
+
+    QualityDefectiveProduct selectById(Long id);
+
+    int insert(DefectiveProductDto dto);
+
+    int update(Long id, DefectiveProductDto dto);
+
+    int update(QualityDefectiveProduct entity);
+
+    int deleteById(Long id);
+
+    int deleteBatchIds(Long[] ids);
+
+    int audit(DefectiveProductAuditDto auditDto);
+
+    List<QualityDefectiveProduct> selectList();
+}
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/QualityDefectiveProductServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/QualityDefectiveProductServiceImpl.java
new file mode 100644
index 0000000..c31098c
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/QualityDefectiveProductServiceImpl.java
@@ -0,0 +1,121 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.basic.dto.DefectiveProductAuditDto;
+import com.ruoyi.basic.dto.DefectiveProductDto;
+import com.ruoyi.basic.mapper.QualityDefectiveProductMapper;
+import com.ruoyi.basic.pojo.QualityDefectiveProduct;
+import com.ruoyi.basic.service.QualityDefectiveProductService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 涓嶈壇鍝佺櫥璁癝ervice瀹炵幇绫�
+ */
+@Service
+public class QualityDefectiveProductServiceImpl implements QualityDefectiveProductService {
+
+    @Resource
+    private QualityDefectiveProductMapper defectiveProductMapper;
+
+    @Override
+    public IPage<QualityDefectiveProduct> selectPage(Page<QualityDefectiveProduct> page, QualityDefectiveProduct entity) {
+        return defectiveProductMapper.selectPage(page, QueryWrappers.queryWrappers(entity));
+    }
+
+    @Override
+    public QualityDefectiveProduct selectById(Long id) {
+        return defectiveProductMapper.selectById(id);
+    }
+
+    @Override
+    public int insert(DefectiveProductDto dto) {
+        QualityDefectiveProduct entity = new QualityDefectiveProduct();
+        BeanUtils.copyProperties(dto, entity);
+
+        // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+        String username = SecurityUtils.getUsername();
+
+        // 璁剧疆鐧昏鐩稿叧瀛楁
+        entity.setRegisterBy(username);
+        entity.setRegisterTime(LocalDateTime.now());
+
+        // 璁剧疆鍒涘缓鐩稿叧瀛楁
+        entity.setCreateBy(username);
+        entity.setCreateTime(LocalDateTime.now());
+
+        // 璁剧疆鏇存柊鐩稿叧瀛楁
+        entity.setUpdateBy(username);
+        entity.setUpdateTime(LocalDateTime.now());
+
+        // 璁剧疆瀹℃牳鐘舵�佷负寰呭鏍�
+        entity.setAuditStatus(0);
+
+        return defectiveProductMapper.insert(entity);
+    }
+
+    @Override
+    public int update(Long id, DefectiveProductDto dto) {
+        QualityDefectiveProduct entity = defectiveProductMapper.selectById(id);
+        if (entity == null) {
+            throw new RuntimeException("涓嶈壇鍝佷俊鎭笉瀛樺湪");
+        }
+
+        BeanUtils.copyProperties(dto, entity);
+        entity.setId(id);
+        entity.setUpdateBy(SecurityUtils.getUsername());
+        entity.setUpdateTime(LocalDateTime.now());
+
+        return defectiveProductMapper.updateById(entity);
+    }
+
+    @Override
+    public int update(QualityDefectiveProduct entity) {
+        if (entity.getId() == null) {
+            throw new RuntimeException("ID涓嶈兘涓虹┖");
+        }
+        entity.setUpdateBy(SecurityUtils.getUsername());
+        entity.setUpdateTime(LocalDateTime.now());
+        return defectiveProductMapper.updateById(entity);
+    }
+
+    @Override
+    public int deleteById(Long id) {
+        return defectiveProductMapper.deleteById(id);
+    }
+
+    @Override
+    public int deleteBatchIds(Long[] ids) {
+        return defectiveProductMapper.deleteBatchIds(java.util.Arrays.asList(ids));
+    }
+
+    @Override
+    public int audit(DefectiveProductAuditDto auditDto) {
+        QualityDefectiveProduct entity = defectiveProductMapper.selectById(auditDto.getId());
+        if (entity == null) {
+            throw new RuntimeException("涓嶈壇鍝佷俊鎭笉瀛樺湪");
+        }
+
+        entity.setAuditStatus(auditDto.getAuditStatus());
+        entity.setAuditRemark(auditDto.getAuditRemark());
+        entity.setAuditBy(SecurityUtils.getUsername());
+        entity.setAuditTime(LocalDateTime.now());
+        entity.setUpdateBy(SecurityUtils.getUsername());
+        entity.setUpdateTime(LocalDateTime.now());
+
+        return defectiveProductMapper.updateById(entity);
+    }
+
+    @Override
+    public List<QualityDefectiveProduct> selectList() {
+        return defectiveProductMapper.selectList(Wrappers.emptyWrapper());
+    }
+}
\ No newline at end of file
diff --git a/basic-server/src/main/resources/mapper/QualityDefectiveProductMapper.xml b/basic-server/src/main/resources/mapper/QualityDefectiveProductMapper.xml
new file mode 100644
index 0000000..cf95605
--- /dev/null
+++ b/basic-server/src/main/resources/mapper/QualityDefectiveProductMapper.xml
@@ -0,0 +1,21 @@
+<?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.ruoyi.basic.mapper.QualityDefectiveProductMapper">
+
+    <select id="selectPage" resultType="com.ruoyi.basic.pojo.QualityDefectiveProduct">
+        SELECT
+        id, report_no, product_name, production_batch, material_name, specs_models,
+        manufacturer, raw_material_info, defective_qty, related_test_info,
+        unqualified_desc, inspector, register_by, register_time,
+        audit_status, audit_remark, audit_by, audit_time,
+        create_by, update_by, create_time, update_time
+        FROM quality_defective_product
+        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+            ${ew.customSqlSegment}
+        </if>
+        ORDER BY create_time DESC
+    </select>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3