Browse Source
feat(quality): 新增质量反馈模块完整功能
feat(quality): 新增质量反馈模块完整功能
- 创建QualityIssue实体类定义质量问题相关字段 - 实现QualityIssueController控制器提供CRUD接口 - 添加质量反馈保存、更新、删除和关闭功能 - 实现质量问题与采购订单绑定功能 - 添加可用采购订单查询和关联操作 - 集成供应商信息查询和事务号管理 - 实现分页查询和批量操作功能 - 添加完整的数据传输对象DTO定义 - 配置MyBatis映射文件和数据库操作 - 实现事务管理和异常处理机制master
11 changed files with 441 additions and 0 deletions
-
30src/main/java/com/xujie/modules/quality/controller/QualityIssueController.java
-
15src/main/java/com/xujie/modules/quality/data/QualityIssueBindPoDto.java
-
26src/main/java/com/xujie/modules/quality/data/QualityIssuePoSelectDto.java
-
19src/main/java/com/xujie/modules/quality/data/QualityIssueSavePoDto.java
-
46src/main/java/com/xujie/modules/quality/data/QueryPoDto.java
-
3src/main/java/com/xujie/modules/quality/entity/QualityIssue.java
-
32src/main/java/com/xujie/modules/quality/entity/SrmQualityIssuePo.java
-
43src/main/java/com/xujie/modules/quality/mapper/SrmQualityIssuePoMapper.java
-
14src/main/java/com/xujie/modules/quality/service/QualityIssueService.java
-
110src/main/java/com/xujie/modules/quality/service/impl/QualityIssueServiceImpl.java
-
103src/main/resources/mapper/quality/SrmQualityIssuePoMapper.xml
@ -0,0 +1,15 @@ |
|||
package com.xujie.modules.quality.data; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class QualityIssueBindPoDto { |
|||
|
|||
private String site; |
|||
|
|||
private String issueNo; |
|||
|
|||
private List<QualityIssueSavePoDto> poList; |
|||
} |
|||
@ -0,0 +1,26 @@ |
|||
package com.xujie.modules.quality.data; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
public class QualityIssuePoSelectDto { |
|||
|
|||
private String site; |
|||
|
|||
private String poNo; |
|||
|
|||
private Integer itemNo; |
|||
|
|||
private String partNo; |
|||
|
|||
private String sku; |
|||
|
|||
private Date poDate; |
|||
|
|||
private BigDecimal qty; |
|||
|
|||
private BigDecimal shippedQty; |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
package com.xujie.modules.quality.data; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
|
|||
@Data |
|||
public class QualityIssueSavePoDto { |
|||
|
|||
private String poNo; |
|||
|
|||
private Integer itemNo; |
|||
|
|||
private String partNo; |
|||
|
|||
private BigDecimal qty; |
|||
|
|||
private BigDecimal shippedQty; |
|||
} |
|||
@ -0,0 +1,46 @@ |
|||
package com.xujie.modules.quality.data; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
public class QueryPoDto { |
|||
|
|||
/** |
|||
* 站点 |
|||
*/ |
|||
private String site; |
|||
|
|||
/** |
|||
* 供应商编号 |
|||
*/ |
|||
private String supplierNo; |
|||
|
|||
/** |
|||
* PO号 |
|||
*/ |
|||
private String poNo; |
|||
|
|||
/** |
|||
* 料号 |
|||
*/ |
|||
private String partNo; |
|||
|
|||
/** |
|||
* 开始日期 |
|||
*/ |
|||
private Date beginDate; |
|||
|
|||
/** |
|||
* 结束日期 |
|||
*/ |
|||
private Date endDate; |
|||
|
|||
/** |
|||
* 分页 |
|||
*/ |
|||
private Integer pageIndex = 1; |
|||
|
|||
private Integer pageSize = 20; |
|||
} |
|||
@ -0,0 +1,32 @@ |
|||
package com.xujie.modules.quality.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
public class SrmQualityIssuePo { |
|||
|
|||
private String site; |
|||
|
|||
private String issueNo; |
|||
|
|||
private String poNo; |
|||
|
|||
private Integer itemNo; |
|||
|
|||
private String partNo; |
|||
|
|||
@TableField(exist = false) |
|||
private String sku; |
|||
|
|||
private BigDecimal poQty; |
|||
|
|||
private BigDecimal shippedQty; |
|||
|
|||
private String createBy; |
|||
|
|||
private Date createDate; |
|||
} |
|||
@ -0,0 +1,43 @@ |
|||
package com.xujie.modules.quality.mapper; |
|||
|
|||
import com.xujie.modules.quality.data.QualityIssuePoSelectDto; |
|||
import com.xujie.modules.quality.entity.SrmQualityIssuePo; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
@Mapper |
|||
public interface SrmQualityIssuePoMapper { |
|||
|
|||
List<QualityIssuePoSelectDto> getAvailablePoList( |
|||
@Param("site") String site, |
|||
@Param("supplierNo") String supplierNo, |
|||
@Param("poNo") String poNo, |
|||
@Param("partNo") String partNo, |
|||
@Param("beginDate") Date beginDate, |
|||
@Param("endDate") Date endDate |
|||
); |
|||
|
|||
int deleteByIssueNo( |
|||
@Param("site") String site, |
|||
@Param("issueNo") String issueNo |
|||
); |
|||
|
|||
int batchInsert( |
|||
@Param("list") List<SrmQualityIssuePo> list |
|||
); |
|||
|
|||
List<SrmQualityIssuePo> getIssuePoList( |
|||
@Param("site") String site, |
|||
@Param("issueNo") String issueNo |
|||
); |
|||
|
|||
int deleteByPoNo( |
|||
@Param("site") String site, |
|||
@Param("issueNo") String issueNo, |
|||
@Param("poNo") String poNo, |
|||
@Param("itemNo") Integer itemNo |
|||
); |
|||
} |
|||
@ -0,0 +1,103 @@ |
|||
<?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.SrmQualityIssuePoMapper"> |
|||
|
|||
<select id="getAvailablePoList" resultType="com.xujie.modules.quality.data.QualityIssuePoSelectDto"> |
|||
SELECT |
|||
p.site, |
|||
p.order_ref1 as poNo, |
|||
p.item_no as itemNo, |
|||
p.part_no as partNo, |
|||
pt.sku as sku, |
|||
h.order_date as poDate, |
|||
p.qty, |
|||
p.shipped_qty as shippedQty |
|||
FROM PODetail p |
|||
LEFT JOIN POHeader h |
|||
ON p.site = h.site |
|||
AND p.order_no = h.order_no |
|||
LEFT JOIN part pt |
|||
ON p.part_no = pt.part_no |
|||
WHERE p.site = #{site} |
|||
AND ISNULL(p.shipped_qty, 0) > 0 |
|||
<if test="supplierNo != null and supplierNo != ''"> |
|||
AND h.supplier_no = #{supplierNo} |
|||
</if> |
|||
<if test="poNo != null and poNo != ''"> |
|||
AND p.order_ref1 LIKE '%' + #{poNo} + '%' |
|||
</if> |
|||
<if test="partNo != null and partNo != ''"> |
|||
AND p.part_no LIKE '%' + #{partNo} + '%' |
|||
</if> |
|||
<if test="beginDate != null"> |
|||
AND h.order_date >= #{beginDate} |
|||
</if> |
|||
<if test="endDate != null"> |
|||
AND h.order_date <= #{endDate} |
|||
</if> |
|||
ORDER BY h.order_date DESC |
|||
</select> |
|||
|
|||
<!-- 其他方法保持不变 --> |
|||
<delete id="deleteByIssueNo"> |
|||
DELETE FROM srm_quality_issue_po |
|||
WHERE site = #{site} |
|||
AND issue_no = #{issueNo} |
|||
</delete> |
|||
|
|||
<insert id="batchInsert"> |
|||
INSERT INTO srm_quality_issue_po |
|||
( |
|||
site, |
|||
issue_no, |
|||
po_no, |
|||
item_no, |
|||
part_no, |
|||
po_qty, |
|||
shipped_qty, |
|||
create_by, |
|||
create_date |
|||
) |
|||
VALUES |
|||
<foreach collection="list" item="item" separator=","> |
|||
( |
|||
#{item.site}, |
|||
#{item.issueNo}, |
|||
#{item.poNo}, |
|||
#{item.itemNo}, |
|||
#{item.partNo}, |
|||
#{item.poQty}, |
|||
#{item.shippedQty}, |
|||
#{item.createBy}, |
|||
GETDATE() |
|||
) |
|||
</foreach> |
|||
</insert> |
|||
|
|||
<select id="getIssuePoList" resultType="com.xujie.modules.quality.entity.SrmQualityIssuePo"> |
|||
SELECT |
|||
qip.site, |
|||
qip.issue_no, |
|||
qip.po_no, |
|||
qip.item_no, |
|||
qip.part_no, |
|||
pt.sku, |
|||
qip.po_qty, |
|||
qip.shipped_qty, |
|||
qip.create_by, |
|||
qip.create_date |
|||
FROM srm_quality_issue_po qip |
|||
LEFT JOIN part pt |
|||
ON qip.part_no = pt.part_no |
|||
WHERE qip.site = #{site} |
|||
AND qip.issue_no = #{issueNo} |
|||
</select> |
|||
|
|||
<delete id="deleteByPoNo"> |
|||
DELETE FROM srm_quality_issue_po |
|||
WHERE site = #{site} |
|||
AND issue_no = #{issueNo} |
|||
AND po_no = #{poNo} |
|||
AND item_no = #{itemNo} |
|||
</delete> |
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue