Browse Source

feat(quality): 添加质量问实体类、控制器、服务和数据访问层

- 创建 QualityIssue 实体类,定义质量问题相关字段
- 实现 QualityIssueController 控制器,提供分页查询和保存接口
- 创建 QualityIssueMapper 数据访问接口及 XML 映射文件
- 实现 QualityIssueService 业务逻辑层,包含分页查询和保存功能
- 在 ServiceImpl 中实现事务管理和自动生成问题编号逻辑
- 集成供应商信息查询,支持质量问题与供应商关联显示
master
qiankanghui 3 weeks ago
parent
commit
55084e3752
  1. 36
      src/main/java/com/xujie/modules/quality/controller/QualityIssueController.java
  2. 54
      src/main/java/com/xujie/modules/quality/entity/QualityIssue.java
  3. 17
      src/main/java/com/xujie/modules/quality/mapper/QualityIssueMapper.java
  4. 13
      src/main/java/com/xujie/modules/quality/service/QualityIssueService.java
  5. 63
      src/main/java/com/xujie/modules/quality/service/impl/QualityIssueServiceImpl.java
  6. 90
      src/main/resources/mapper/quality/QualityIssueMapper.xml

36
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();
}
}

54
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;
}

17
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<QualityIssue> {
List<QualityIssue> queryPage(IPage<QualityIssue> page, @Param("qualityIssue") QualityIssue qualityIssue);
void insertIssue(QualityIssue qualityIssue);
}

13
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<QualityIssue> {
PageUtils queryPage(QualityIssue qualityIssue);
void saveIssue(QualityIssue qualityIssue);
}

63
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<QualityIssueMapper, QualityIssue> implements QualityIssueService {
@Autowired
private QualityIssueMapper qualityIssueMapper;
@Autowired
private SrmSupplierMapper srmSupplierMapper;
@Override
public PageUtils queryPage(QualityIssue qualityIssue) {
IPage<QualityIssue> page =
new Page<>(qualityIssue.getPage(), qualityIssue.getLimit());
List<QualityIssue> 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);
}
}

90
src/main/resources/mapper/quality/QualityIssueMapper.xml

@ -0,0 +1,90 @@
<?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.xujie.modules.quality.mapper.QualityIssueMapper">
<select id="queryPage" resultType="com.xujie.modules.quality.entity.QualityIssue">
SELECT
qi.site,
qi.issue_no AS issueNo,
qi.issue_date AS issueDate,
qi.supplier_no AS supplierNo,
s.supplier_name AS supplierName,
qi.issue_category AS issueCategory,
qi.issue_summary AS issueSummary,
qi.issue_description AS issueDescription,
qi.require_reply_date AS requireReplyDate,
qi.status,
qi.reply_by AS replyBy,
qi.reply_time AS replyTime,
qi.closed_by AS closedBy,
qi.closed_time AS closedTime,
qi.create_by AS createBy, -- 表字段是 create_by
qi.create_date AS createDate, -- 表字段是 create_date
qi.update_by AS updateBy,
qi.update_date AS updateDate
FROM srm_quality_issue qi
LEFT JOIN srm_supplier s
ON qi.supplier_no = s.supplier_no
AND qi.site = s.site
<where>
<if test="qualityIssue.site != null and qualityIssue.site != ''">
AND qi.site = #{qualityIssue.site}
</if>
<if test="qualityIssue.issueNo != null and qualityIssue.issueNo != ''">
AND qi.issue_no LIKE '%' + #{qualityIssue.issueNo} + '%'
</if>
<if test="qualityIssue.issueDate != null">
AND CAST(qi.issue_date AS DATE) = #{qualityIssue.issueDate}
</if>
<if test="qualityIssue.supplierNo != null and qualityIssue.supplierNo != ''">
AND qi.supplier_no LIKE '%' + #{qualityIssue.supplierNo} + '%'
</if>
<if test="qualityIssue.supplierName != null and qualityIssue.supplierName != ''">
AND s.supplier_name LIKE '%' + #{qualityIssue.supplierName} + '%'
</if>
<if test="qualityIssue.issueCategory != null and qualityIssue.issueCategory != ''">
AND qi.issue_category = #{qualityIssue.issueCategory}
</if>
<if test="qualityIssue.status != null and qualityIssue.status != ''">
AND qi.status = #{qualityIssue.status}
</if>
</where>
ORDER BY
ISNULL(qi.create_date, qi.issue_date) DESC,
qi.issue_no DESC
</select>
<insert id="insertIssue">
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}
)
</insert>
</mapper>
Loading…
Cancel
Save