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