From 55084e37529e5dd6c0c5360cc0820445304a5572 Mon Sep 17 00:00:00 2001 From: qiankanghui Date: Fri, 29 May 2026 17:06:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(quality):=20=E6=B7=BB=E5=8A=A0=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=E9=97=AE=E5=AE=9E=E4=BD=93=E7=B1=BB=E3=80=81=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=99=A8=E3=80=81=E6=9C=8D=E5=8A=A1=E5=92=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=AE=BF=E9=97=AE=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建 QualityIssue 实体类,定义质量问题相关字段 - 实现 QualityIssueController 控制器,提供分页查询和保存接口 - 创建 QualityIssueMapper 数据访问接口及 XML 映射文件 - 实现 QualityIssueService 业务逻辑层,包含分页查询和保存功能 - 在 ServiceImpl 中实现事务管理和自动生成问题编号逻辑 - 集成供应商信息查询,支持质量问题与供应商关联显示 --- .../controller/QualityIssueController.java | 36 ++++++++ .../modules/quality/entity/QualityIssue.java | 54 +++++++++++ .../quality/mapper/QualityIssueMapper.java | 17 ++++ .../quality/service/QualityIssueService.java | 13 +++ .../service/impl/QualityIssueServiceImpl.java | 63 +++++++++++++ .../mapper/quality/QualityIssueMapper.xml | 90 +++++++++++++++++++ 6 files changed, 273 insertions(+) create mode 100644 src/main/java/com/xujie/modules/quality/controller/QualityIssueController.java create mode 100644 src/main/java/com/xujie/modules/quality/entity/QualityIssue.java create mode 100644 src/main/java/com/xujie/modules/quality/mapper/QualityIssueMapper.java create mode 100644 src/main/java/com/xujie/modules/quality/service/QualityIssueService.java create mode 100644 src/main/java/com/xujie/modules/quality/service/impl/QualityIssueServiceImpl.java create mode 100644 src/main/resources/mapper/quality/QualityIssueMapper.xml diff --git a/src/main/java/com/xujie/modules/quality/controller/QualityIssueController.java b/src/main/java/com/xujie/modules/quality/controller/QualityIssueController.java new file mode 100644 index 0000000..bea1e29 --- /dev/null +++ b/src/main/java/com/xujie/modules/quality/controller/QualityIssueController.java @@ -0,0 +1,36 @@ +package com.xujie.modules.quality.controller; + +import com.xujie.common.utils.PageUtils; +import com.xujie.common.utils.R; +import com.xujie.modules.quality.entity.QualityIssue; +import com.xujie.modules.quality.service.QualityIssueService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/srm/qualityIssue") +public class QualityIssueController { + + @Autowired + private QualityIssueService qualityIssueService; + + @PostMapping("/queryPage") + public R queryPage(@RequestBody QualityIssue qualityIssue) { + + PageUtils page = qualityIssueService.queryPage(qualityIssue); + + return R.ok().put("page", page); + } + + + @PostMapping("/save") + public R save(@RequestBody QualityIssue qualityIssue){ + qualityIssueService.saveIssue(qualityIssue); + return R.ok(); + } + +} diff --git a/src/main/java/com/xujie/modules/quality/entity/QualityIssue.java b/src/main/java/com/xujie/modules/quality/entity/QualityIssue.java new file mode 100644 index 0000000..94afb2a --- /dev/null +++ b/src/main/java/com/xujie/modules/quality/entity/QualityIssue.java @@ -0,0 +1,54 @@ +package com.xujie.modules.quality.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xujie.common.utils.QueryPage; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@TableName("srm_quality_issue") +public class QualityIssue extends QueryPage { + + private String site; + + private String issueNo; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date issueDate; + + private String supplierNo; + + private String supplierName; + + private String issueCategory; + + private String issueSummary; + + private String issueDescription; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date requireReplyDate; + + private String status; + + private String replyBy; + + private Date replyTime; + + private String closedBy; + + private Date closedTime; + + private String createBy; + + private Date createDate; + + private String updateBy; + + private Date updateDate; +} diff --git a/src/main/java/com/xujie/modules/quality/mapper/QualityIssueMapper.java b/src/main/java/com/xujie/modules/quality/mapper/QualityIssueMapper.java new file mode 100644 index 0000000..c576af6 --- /dev/null +++ b/src/main/java/com/xujie/modules/quality/mapper/QualityIssueMapper.java @@ -0,0 +1,17 @@ +package com.xujie.modules.quality.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xujie.modules.quality.entity.QualityIssue; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface QualityIssueMapper extends BaseMapper { + + List queryPage(IPage page, @Param("qualityIssue") QualityIssue qualityIssue); + + void insertIssue(QualityIssue qualityIssue); +} diff --git a/src/main/java/com/xujie/modules/quality/service/QualityIssueService.java b/src/main/java/com/xujie/modules/quality/service/QualityIssueService.java new file mode 100644 index 0000000..5e1abf7 --- /dev/null +++ b/src/main/java/com/xujie/modules/quality/service/QualityIssueService.java @@ -0,0 +1,13 @@ +package com.xujie.modules.quality.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xujie.common.utils.PageUtils; +import com.xujie.modules.quality.entity.QualityIssue; + + +public interface QualityIssueService extends IService { + + PageUtils queryPage(QualityIssue qualityIssue); + + void saveIssue(QualityIssue qualityIssue); +} diff --git a/src/main/java/com/xujie/modules/quality/service/impl/QualityIssueServiceImpl.java b/src/main/java/com/xujie/modules/quality/service/impl/QualityIssueServiceImpl.java new file mode 100644 index 0000000..30e7c46 --- /dev/null +++ b/src/main/java/com/xujie/modules/quality/service/impl/QualityIssueServiceImpl.java @@ -0,0 +1,63 @@ +package com.xujie.modules.quality.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xujie.common.utils.PageUtils; +import com.xujie.common.utils.ShiroUtils; +import com.xujie.modules.quality.entity.QualityIssue; +import com.xujie.modules.quality.mapper.QualityIssueMapper; +import com.xujie.modules.quality.service.QualityIssueService; +import com.xujie.modules.srm.mapper.SrmSupplierMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; + +@Service +public class QualityIssueServiceImpl extends ServiceImpl implements QualityIssueService { + @Autowired + private QualityIssueMapper qualityIssueMapper; + + @Autowired + private SrmSupplierMapper srmSupplierMapper; + + @Override + public PageUtils queryPage(QualityIssue qualityIssue) { + IPage page = + new Page<>(qualityIssue.getPage(), qualityIssue.getLimit()); + + List list = + qualityIssueMapper.queryPage(page, qualityIssue); + + page.setRecords(list); + + return new PageUtils(page); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveIssue(QualityIssue qualityIssue) { + + String site = qualityIssue.getSite(); + // 生成反馈单号 + srmSupplierMapper.updateTransNo(site, "QI"); + String issueNo = srmSupplierMapper.getTransNo(site, "QI"); + + qualityIssue.setIssueNo(issueNo); + + // 状态默认已确认 + qualityIssue.setStatus("待回复"); + + // 当前用户 + qualityIssue.setCreateBy(ShiroUtils.getUserEntity().getUsername()); + + // 当前时间 + qualityIssue.setCreateDate(new Date()); + + qualityIssueMapper.insertIssue(qualityIssue); + } + +} diff --git a/src/main/resources/mapper/quality/QualityIssueMapper.xml b/src/main/resources/mapper/quality/QualityIssueMapper.xml new file mode 100644 index 0000000..21904da --- /dev/null +++ b/src/main/resources/mapper/quality/QualityIssueMapper.xml @@ -0,0 +1,90 @@ + + + + + + + + + INSERT INTO srm_quality_issue + ( + site, + issue_no, + issue_date, + supplier_no, + supplier_name, + issue_category, + issue_summary, + issue_description, + require_reply_date, + status, + create_by, + create_date + ) + VALUES + ( + #{site}, + #{issueNo}, + #{issueDate}, + #{supplierNo}, + #{supplierName}, + #{issueCategory}, + #{issueSummary}, + #{issueDescription}, + #{requireReplyDate}, + #{status}, + #{createBy}, + #{createDate} + ) + +