feat(qms): 增加来料检验任务不合格管理功能
- 新增QmsIncomingInspectionTaskNonconformance实体及数据库映射 - 添加来料检验任务不合格管理分页查询接口及实现 - 引入不合格管理查询条件支持多维度筛选 - 新建不合格管理Mapper及对应XML配置,实现复杂查询 - 扩展VO层,增加不合格管理相关字段展示 - 新增REST Controller,支持不合格管理数据分页查询 - 新增来料检验任务查询功能完善及关联字段扩展
This commit is contained in:
parent
5727b7a8f1
commit
8acd4fa0ff
|
|
@ -0,0 +1,33 @@
|
|||
package com.nflg.qms.admin.controller;
|
||||
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskNonconformanceSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO;
|
||||
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskNonconformanceService;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
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("/incoming-inspection-task-nonconformance")
|
||||
public class QmsIncomingInspectionTaskNonconformanceController extends BaseController {
|
||||
|
||||
@Resource
|
||||
private IQmsIncomingInspectionTaskNonconformanceService nonconformanceService;
|
||||
|
||||
/**
|
||||
* 分页查询来料检验任务不合格管理列表
|
||||
*/
|
||||
@PostMapping("search")
|
||||
public ApiResult<PageData<QmsIncomingInspectionTaskNonconformanceVO>> search(@Valid @RequestBody QmsIncomingInspectionTaskNonconformanceSearchQO request) {
|
||||
return ApiResult.success(nonconformanceService.search(request));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 来料检验任务不合格管理 - 分页查询QO
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class QmsIncomingInspectionTaskNonconformanceSearchQO extends PageQO {
|
||||
|
||||
/**
|
||||
* 类型,0:来料;1:盘库
|
||||
*/
|
||||
private Integer dataType;
|
||||
|
||||
/**
|
||||
* 物料编码(模糊匹配)
|
||||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 采购单号(模糊匹配)
|
||||
*/
|
||||
private String purchaseOrderNo;
|
||||
|
||||
/**
|
||||
* 供应商名称(模糊匹配)
|
||||
*/
|
||||
private String supplierName;
|
||||
|
||||
/**
|
||||
* 检验人姓名(模糊匹配)
|
||||
*/
|
||||
private String inspectorName;
|
||||
|
||||
/**
|
||||
* 检验状态:0=待检,1=检验中,2=已检
|
||||
*/
|
||||
private Short inspectionStatus;
|
||||
|
||||
/**
|
||||
* 所属工厂
|
||||
*/
|
||||
private String factory;
|
||||
|
||||
/**
|
||||
* 所属仓库
|
||||
*/
|
||||
private String warehouse;
|
||||
|
||||
/**
|
||||
* 送货单号(模糊匹配)
|
||||
*/
|
||||
private String deliveryOrderNo;
|
||||
|
||||
/**
|
||||
* 检验结果:true=合格,false=不合格
|
||||
*/
|
||||
private Boolean inspectionResult;
|
||||
|
||||
/**
|
||||
* 是否超期:true=超期,false=未超期
|
||||
*/
|
||||
private Boolean isOverdue;
|
||||
|
||||
/**
|
||||
* 送检日期开始
|
||||
*/
|
||||
private LocalDate submitStartDate;
|
||||
|
||||
/**
|
||||
* 送检日期结束
|
||||
*/
|
||||
private LocalDate submitEndDate;
|
||||
|
||||
/**
|
||||
* 检验开始日期开始(检验开始时间)
|
||||
*/
|
||||
private LocalDate inspectionBeginStartDate;
|
||||
|
||||
/**
|
||||
* 检验开始日期结束(检验开始时间)
|
||||
*/
|
||||
private LocalDate inspectionBeginEndDate;
|
||||
|
||||
/**
|
||||
* 检测日期开始(检验完成时间)
|
||||
*/
|
||||
private LocalDate inspectionStartDate;
|
||||
|
||||
/**
|
||||
* 检测日期结束(检验完成时间)
|
||||
*/
|
||||
private LocalDate inspectionEndDate;
|
||||
|
||||
/**
|
||||
* 不合格处理状态:0=待办,1=处理中,2=处理完成
|
||||
*/
|
||||
private Short nonconformanceStatus;
|
||||
}
|
||||
|
|
@ -47,6 +47,11 @@ public class QmsIncomingInspectionTaskSearchQO extends PageQO {
|
|||
*/
|
||||
private String factory;
|
||||
|
||||
/**
|
||||
* 所属仓库
|
||||
*/
|
||||
private String warehouse;
|
||||
|
||||
/**
|
||||
* 送货单号(模糊匹配)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,177 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 来料检验任务不合格管理 - 查询VO
|
||||
*/
|
||||
@Data
|
||||
public class QmsIncomingInspectionTaskNonconformanceVO {
|
||||
|
||||
/**
|
||||
* 不合格管理记录ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 来料检验任务ID
|
||||
*/
|
||||
private Long taskId;
|
||||
|
||||
/**
|
||||
* 检测单号
|
||||
*/
|
||||
private String taskNo;
|
||||
|
||||
/**
|
||||
* 物料id
|
||||
*/
|
||||
private Long materialId;
|
||||
|
||||
/**
|
||||
* 物料编码
|
||||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 物料描述
|
||||
*/
|
||||
private String materialDesc;
|
||||
|
||||
/**
|
||||
* 图号版本号
|
||||
*/
|
||||
private String drawingNoVer;
|
||||
|
||||
/**
|
||||
* 供应商编号
|
||||
*/
|
||||
private String supplierCode;
|
||||
|
||||
/**
|
||||
* 供应商名称
|
||||
*/
|
||||
private String supplierName;
|
||||
|
||||
/**
|
||||
* 送货单号
|
||||
*/
|
||||
private String deliveryOrderNo;
|
||||
|
||||
/**
|
||||
* 送货单行号
|
||||
*/
|
||||
private String deliveryOrderLine;
|
||||
|
||||
/**
|
||||
* 采购单号
|
||||
*/
|
||||
private String purchaseOrderNo;
|
||||
|
||||
/**
|
||||
* 采购单行号
|
||||
*/
|
||||
private String purchaseOrderLine;
|
||||
|
||||
/**
|
||||
* 所属工厂
|
||||
*/
|
||||
private String factory;
|
||||
|
||||
/**
|
||||
* 检测类型,0:来料检测;1:盘库检测
|
||||
*/
|
||||
private Integer inspectionType;
|
||||
|
||||
/**
|
||||
* 检验数量
|
||||
*/
|
||||
private Integer inspectionQty;
|
||||
|
||||
/**
|
||||
* 合格数量
|
||||
*/
|
||||
private Integer qualifiedQty;
|
||||
|
||||
/**
|
||||
* 不合格数量
|
||||
*/
|
||||
private Integer unqualifiedQty;
|
||||
|
||||
/**
|
||||
* 检验状态:0=待检,1=检验中,2=已检
|
||||
*/
|
||||
private Short inspectionStatus;
|
||||
|
||||
/**
|
||||
* 检验结果:true=合格,false=不合格
|
||||
*/
|
||||
private Boolean inspectionResult;
|
||||
|
||||
/**
|
||||
* 检验人id
|
||||
*/
|
||||
private Long inspectorId;
|
||||
|
||||
/**
|
||||
* 检验人姓名
|
||||
*/
|
||||
private String inspectorName;
|
||||
|
||||
/**
|
||||
* 送检时间
|
||||
*/
|
||||
private LocalDateTime submitTime;
|
||||
|
||||
/**
|
||||
* 检验开始时间
|
||||
*/
|
||||
private LocalDateTime inspectionStartTime;
|
||||
|
||||
/**
|
||||
* 检验完成时间
|
||||
*/
|
||||
private LocalDateTime inspectionFinishTime;
|
||||
|
||||
/**
|
||||
* 要求完成时间
|
||||
*/
|
||||
private LocalDateTime requiredFinishTime;
|
||||
|
||||
/**
|
||||
* 是否超期:true=超期,false=未超期
|
||||
*/
|
||||
private Boolean isOverdue;
|
||||
|
||||
/**
|
||||
* 不合格处理状态:0=待办,1=处理中,2=处理完成
|
||||
*/
|
||||
private Short nonconformanceStatus;
|
||||
|
||||
/**
|
||||
* 不合格处理状态名称
|
||||
*/
|
||||
private String nonconformanceStatusName;
|
||||
|
||||
/**
|
||||
* 不合格记录创建人ID
|
||||
*/
|
||||
private Long nonconformanceCreateUserId;
|
||||
|
||||
/**
|
||||
* 不合格记录创建人姓名
|
||||
*/
|
||||
private String nonconformanceCreateUserName;
|
||||
|
||||
/**
|
||||
* 不合格记录创建时间
|
||||
*/
|
||||
private LocalDateTime nonconformanceCreateTime;
|
||||
|
||||
/**
|
||||
* 不合格记录更新时间
|
||||
*/
|
||||
private LocalDateTime nonconformanceUpdateTime;
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
package com.nflg.wms.repository.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 来料检验任务不合格管理表
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("qms_incoming_inspection_task_nonconformance")
|
||||
public class QmsIncomingInspectionTaskNonconformance implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 来料检验任务ID,关联 qms_incoming_inspection_task 表
|
||||
*/
|
||||
private Long taskId;
|
||||
|
||||
/**
|
||||
* 处理状态:0=待办,1=处理中,2=处理完成
|
||||
*/
|
||||
private Short status;
|
||||
|
||||
/**
|
||||
* 创建人ID
|
||||
*/
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
private String createUserName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人ID
|
||||
*/
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新人姓名
|
||||
*/
|
||||
private String updateUserName;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.nflg.wms.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskNonconformanceSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO;
|
||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskNonconformance;
|
||||
|
||||
/**
|
||||
* 来料检验任务不合格管理 Mapper
|
||||
*/
|
||||
public interface QmsIncomingInspectionTaskNonconformanceMapper extends BaseMapper<QmsIncomingInspectionTaskNonconformance> {
|
||||
|
||||
/**
|
||||
* 分页查询来料检验任务不合格管理列表
|
||||
*/
|
||||
IPage<QmsIncomingInspectionTaskNonconformanceVO> search(QmsIncomingInspectionTaskNonconformanceSearchQO request, Page<Object> page);
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.nflg.wms.repository.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskNonconformanceSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO;
|
||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskNonconformance;
|
||||
|
||||
/**
|
||||
* 来料检验任务不合格管理 Service 接口
|
||||
*/
|
||||
public interface IQmsIncomingInspectionTaskNonconformanceService extends IService<QmsIncomingInspectionTaskNonconformance> {
|
||||
|
||||
/**
|
||||
* 分页查询来料检验任务不合格管理列表
|
||||
*/
|
||||
IPage<QmsIncomingInspectionTaskNonconformanceVO> search(QmsIncomingInspectionTaskNonconformanceSearchQO request);
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.nflg.wms.repository.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.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskNonconformanceSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO;
|
||||
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskNonconformance;
|
||||
import com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskNonconformanceMapper;
|
||||
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskNonconformanceService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 来料检验任务不合格管理 Service 实现类
|
||||
*/
|
||||
@Service
|
||||
public class QmsIncomingInspectionTaskNonconformanceServiceImpl extends ServiceImpl<QmsIncomingInspectionTaskNonconformanceMapper, QmsIncomingInspectionTaskNonconformance> implements IQmsIncomingInspectionTaskNonconformanceService {
|
||||
|
||||
@Override
|
||||
public IPage<QmsIncomingInspectionTaskNonconformanceVO> search(QmsIncomingInspectionTaskNonconformanceSearchQO request) {
|
||||
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
|
||||
}
|
||||
}
|
||||
|
|
@ -63,6 +63,9 @@
|
|||
<if test="request.factory != null and request.factory != ''">
|
||||
AND t.factory = #{request.factory}
|
||||
</if>
|
||||
<if test="request.warehouse != null and request.warehouse != ''">
|
||||
AND t.warehouse = #{request.warehouse}
|
||||
</if>
|
||||
<if test="request.deliveryOrderNo != null and request.deliveryOrderNo != ''">
|
||||
AND t.delivery_order_no ilike concat('%', #{request.deliveryOrderNo}, '%')
|
||||
</if>
|
||||
|
|
@ -126,13 +129,14 @@
|
|||
t.inspection_finish_time,
|
||||
t.required_finish_time,
|
||||
t.is_overdue,
|
||||
t.related_task_no,
|
||||
t2.task_no as related_task_no,
|
||||
t.update_user_id,
|
||||
t.update_user_name,
|
||||
t.update_time
|
||||
FROM qms_incoming_inspection_task t
|
||||
LEFT JOIN qms_qc_material m ON t.material_id = m.id
|
||||
LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id
|
||||
LEFT JOIN qms_incoming_inspection_task t2 ON t.related_task_id = t2.id
|
||||
<where>
|
||||
<choose>
|
||||
<when test="request.inspectionStatus != null">
|
||||
|
|
@ -197,13 +201,14 @@
|
|||
t.inspection_finish_time,
|
||||
t.required_finish_time,
|
||||
t.is_overdue,
|
||||
t.related_task_no,
|
||||
t2.task_no as related_task_no,
|
||||
t.update_user_id,
|
||||
t.update_user_name,
|
||||
t.update_time
|
||||
FROM qms_incoming_inspection_task t
|
||||
LEFT JOIN qms_qc_material m ON t.material_id = m.id
|
||||
LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id
|
||||
LEFT JOIN qms_incoming_inspection_task t2 ON t.related_task_id = t2.id
|
||||
WHERE t.id = #{id}
|
||||
</select>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,106 @@
|
|||
<?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.nflg.wms.repository.mapper.QmsIncomingInspectionTaskNonconformanceMapper">
|
||||
|
||||
<select id="search" resultType="com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskNonconformanceVO">
|
||||
SELECT
|
||||
n.id,
|
||||
n.task_id,
|
||||
t.task_no,
|
||||
t.material_id,
|
||||
m.material_no,
|
||||
m.material_desc,
|
||||
m.drawing_no_ver,
|
||||
t.supplier_code,
|
||||
t.supplier_name,
|
||||
t.delivery_order_no,
|
||||
t.delivery_order_line,
|
||||
t.purchase_order_no,
|
||||
t.purchase_order_line,
|
||||
t.factory,
|
||||
t.inspection_type,
|
||||
t.inspection_qty,
|
||||
t.qualified_qty,
|
||||
t.unqualified_qty,
|
||||
t.inspection_status,
|
||||
t.inspection_result,
|
||||
t.inspector_id,
|
||||
t.inspector_name,
|
||||
t.submit_time,
|
||||
t.inspection_start_time,
|
||||
t.inspection_finish_time,
|
||||
t.required_finish_time,
|
||||
t.is_overdue,
|
||||
n.status AS nonconformance_status,
|
||||
CASE n.status
|
||||
WHEN 0 THEN '待办'
|
||||
WHEN 1 THEN '处理中'
|
||||
WHEN 2 THEN '处理完成'
|
||||
END AS nonconformance_status_name,
|
||||
n.create_user_id AS nonconformance_create_user_id,
|
||||
n.create_user_name AS nonconformance_create_user_name,
|
||||
n.create_time AS nonconformance_create_time,
|
||||
n.update_time AS nonconformance_update_time
|
||||
FROM qms_incoming_inspection_task_nonconformance n
|
||||
INNER JOIN qms_incoming_inspection_task t ON n.task_id = t.id
|
||||
INNER JOIN qms_qc_material m ON t.material_id = m.id
|
||||
<where>
|
||||
<if test="request.dataType != null">
|
||||
AND t.data_type = #{request.dataType}
|
||||
</if>
|
||||
<if test="request.materialNo != null and request.materialNo != ''">
|
||||
AND m.material_no ilike concat('%', #{request.materialNo}, '%')
|
||||
</if>
|
||||
<if test="request.purchaseOrderNo != null and request.purchaseOrderNo != ''">
|
||||
AND t.purchase_order_no ilike concat('%', #{request.purchaseOrderNo}, '%')
|
||||
</if>
|
||||
<if test="request.supplierName != null and request.supplierName != ''">
|
||||
AND t.supplier_name ilike concat('%', #{request.supplierName}, '%')
|
||||
</if>
|
||||
<if test="request.inspectorName != null and request.inspectorName != ''">
|
||||
AND t.inspector_name ilike concat('%', #{request.inspectorName}, '%')
|
||||
</if>
|
||||
<if test="request.inspectionStatus != null">
|
||||
AND t.inspection_status = #{request.inspectionStatus}
|
||||
</if>
|
||||
<if test="request.factory != null and request.factory != ''">
|
||||
AND t.factory = #{request.factory}
|
||||
</if>
|
||||
<if test="request.warehouse != null and request.warehouse != ''">
|
||||
AND t.warehouse = #{request.warehouse}
|
||||
</if>
|
||||
<if test="request.deliveryOrderNo != null and request.deliveryOrderNo != ''">
|
||||
AND t.delivery_order_no ilike concat('%', #{request.deliveryOrderNo}, '%')
|
||||
</if>
|
||||
<if test="request.inspectionResult != null">
|
||||
AND t.inspection_result = #{request.inspectionResult}
|
||||
</if>
|
||||
<if test="request.isOverdue != null">
|
||||
AND t.is_overdue = #{request.isOverdue}
|
||||
</if>
|
||||
<if test="request.submitStartDate != null">
|
||||
AND t.submit_time >= #{request.submitStartDate}
|
||||
</if>
|
||||
<if test="request.submitEndDate != null">
|
||||
AND t.submit_time < #{request.submitEndDate} + INTERVAL '1 day'
|
||||
</if>
|
||||
<if test="request.inspectionBeginStartDate != null">
|
||||
AND t.inspection_start_time >= #{request.inspectionBeginStartDate}
|
||||
</if>
|
||||
<if test="request.inspectionBeginEndDate != null">
|
||||
AND t.inspection_start_time < #{request.inspectionBeginEndDate} + INTERVAL '1 day'
|
||||
</if>
|
||||
<if test="request.inspectionStartDate != null">
|
||||
AND t.inspection_finish_time >= #{request.inspectionStartDate}
|
||||
</if>
|
||||
<if test="request.inspectionEndDate != null">
|
||||
AND t.inspection_finish_time < #{request.inspectionEndDate} + INTERVAL '1 day'
|
||||
</if>
|
||||
<if test="request.nonconformanceStatus != null">
|
||||
AND n.status = #{request.nonconformanceStatus}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY n.id DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue