Browse Source
feat(quality): 添加质量问实体类、控制器、服务和数据访问层
feat(quality): 添加质量问实体类、控制器、服务和数据访问层
- 创建 QualityIssue 实体类,定义质量问题相关字段 - 实现 QualityIssueController 控制器,提供分页查询和保存接口 - 创建 QualityIssueMapper 数据访问接口及 XML 映射文件 - 实现 QualityIssueService 业务逻辑层,包含分页查询和保存功能 - 在 ServiceImpl 中实现事务管理和自动生成问题编号逻辑 - 集成供应商信息查询,支持质量问题与供应商关联显示master
6 changed files with 273 additions and 0 deletions
-
36src/main/java/com/xujie/modules/quality/controller/QualityIssueController.java
-
54src/main/java/com/xujie/modules/quality/entity/QualityIssue.java
-
17src/main/java/com/xujie/modules/quality/mapper/QualityIssueMapper.java
-
13src/main/java/com/xujie/modules/quality/service/QualityIssueService.java
-
63src/main/java/com/xujie/modules/quality/service/impl/QualityIssueServiceImpl.java
-
90src/main/resources/mapper/quality/QualityIssueMapper.xml
@ -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(); |
|||
} |
|||
|
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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); |
|||
} |
|||
|
|||
} |
|||
@ -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> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue