diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIncomingInspectionTaskController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIncomingInspectionTaskController.java new file mode 100644 index 00000000..195b3a59 --- /dev/null +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIncomingInspectionTaskController.java @@ -0,0 +1,43 @@ +package com.nflg.qms.admin.controller; + +import com.nflg.qms.admin.service.IncomingInspectionTaskControllerService; +import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskSearchQO; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskTransferQO; +import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO; +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") +public class QmsIncomingInspectionTaskController extends BaseController { + + @Resource + private IncomingInspectionTaskControllerService incomingInspectionTaskControllerService; + + /** + * 分页查询来料检测任务列表 + */ + @PostMapping("search") + public ApiResult> search(@Valid @RequestBody QmsIncomingInspectionTaskSearchQO request) { + return ApiResult.success(incomingInspectionTaskControllerService.search(request)); + } + + /** + * 转办 + */ + @PostMapping("transfer") + public ApiResult transfer(@Valid @RequestBody QmsIncomingInspectionTaskTransferQO request) { + incomingInspectionTaskControllerService.transfer(request); + return ApiResult.success(); + } +} diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java new file mode 100644 index 00000000..33c04002 --- /dev/null +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java @@ -0,0 +1,93 @@ +package com.nflg.qms.admin.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskSearchQO; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskTransferQO; +import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO; +import com.nflg.wms.common.util.VUtil; +import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.repository.entity.QmsIncomingInspectionTask; +import com.nflg.wms.repository.entity.QmsQualityInspector; +import com.nflg.wms.repository.entity.User; +import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService; +import com.nflg.wms.repository.service.IQmsQualityInspectorService; +import com.nflg.wms.repository.service.IUserService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +/** + * 来料检测任务 Controller 服务 + */ +@Slf4j +@Component +public class IncomingInspectionTaskControllerService { + + @Resource + private IQmsIncomingInspectionTaskService incomingInspectionTaskService; + + @Resource + private IQmsQualityInspectorService qualityInspectorService; + + @Resource + private IUserService userService; + + /** + * 分页查询来料检测任务列表 + */ + public IPage search(QmsIncomingInspectionTaskSearchQO request) { + return incomingInspectionTaskService.search(request); + } + + /** + * 转办 + * - 已检状态的任务不允许转办 + * - 代办人必须在质检人员表中存在 + * - 更新代办人id、代办人姓名、更新人id、更新人姓名、更新时间 + */ + @Transactional + public void transfer(QmsIncomingInspectionTaskTransferQO request) { + // 校验代办人是否在质检人员表中存在 + QmsQualityInspector inspector = qualityInspectorService.lambdaQuery() + .eq(QmsQualityInspector::getId, request.getAgentId()) + .one(); + VUtil.trueThrowBusinessError(Objects.isNull(inspector)) + .throwMessage("代办人不存在于质检人员表中"); + + // 查询所有目标任务 + List tasks = incomingInspectionTaskService.listByIds(request.getIds()); + VUtil.trueThrowBusinessError(tasks.isEmpty()) + .throwMessage("未找到对应的检测任务"); + + // 校验是否存在已检任务 + boolean hasFinished = tasks.stream() + .anyMatch(t -> t.getInspectionStatus() != null && t.getInspectionStatus() == 1); + VUtil.trueThrowBusinessError(hasFinished) + .throwMessage("已检状态的任务不允许转办"); + + String operator = UserUtil.getUserName(); + Long operatorId = UserUtil.getUserId(); + LocalDateTime now = LocalDateTime.now(); + + // 查询代办人姓名 + User agentUser = userService.getById(inspector.getUserId()); + VUtil.trueThrowBusinessError(Objects.isNull(agentUser)) + .throwMessage("代办人用户信息不存在"); + + // 批量更新代办人信息 + incomingInspectionTaskService.lambdaUpdate() + .eq(QmsIncomingInspectionTask::getInspectionStatus, 0) + .in(QmsIncomingInspectionTask::getId, request.getIds()) + .set(QmsIncomingInspectionTask::getAgentId, inspector.getId()) + .set(QmsIncomingInspectionTask::getAgentName, agentUser.getUserName()) + .set(QmsIncomingInspectionTask::getUpdateUserId, operatorId) + .set(QmsIncomingInspectionTask::getUpdateUserName, operator) + .set(QmsIncomingInspectionTask::getUpdateTime, now) + .update(); + } +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskSearchQO.java new file mode 100644 index 00000000..98134b3e --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskSearchQO.java @@ -0,0 +1,84 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; + +/** + * 来料检测任务 - 分页查询QO + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class QmsIncomingInspectionTaskSearchQO extends PageQO { + + /** + * 物料编码(模糊匹配) + */ + private String materialNo; + + /** + * 采购单号(模糊匹配) + */ + private String purchaseOrderNo; + + /** + * 供应商名称(模糊匹配) + */ + private String supplierName; + + /** + * 检验人姓名(模糊匹配) + */ + private String inspectorName; + + /** + * 检验状态:0=待检,1=已检 + */ + private Short inspectionStatus; + + /** + * 所属工厂 + */ + private String factory; + + /** + * 送货单号(模糊匹配) + */ + private String deliveryOrderNo; + + /** + * 检验结果:true=合格,false=不合格 + */ + private Boolean inspectionResult; + + /** + * 是否超期:true=超期,false=未超期 + */ + private Boolean isOverdue; + + /** + * 检测类型(字典项id) + */ + private Long inspectionType; + + /** + * 送检日期开始 + */ + private LocalDate submitStartDate; + + /** + * 送检日期结束 + */ + private LocalDate submitEndDate; + + /** + * 检测日期开始(检验完成时间) + */ + private LocalDate inspectionStartDate; + + /** + * 检测日期结束(检验完成时间) + */ + private LocalDate inspectionEndDate; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTransferQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTransferQO.java new file mode 100644 index 00000000..660c2311 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTransferQO.java @@ -0,0 +1,26 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * 来料检测任务 - 转办QO + */ +@Data +public class QmsIncomingInspectionTaskTransferQO { + + /** + * 任务ID列表(支持多选) + */ + @NotEmpty(message = "任务ID列表不能为空") + private List ids; + + /** + * 代办人id(质检人员表id) + */ + @NotNull(message = "代办人不能为空") + private Long agentId; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskVO.java new file mode 100644 index 00000000..14ddceb5 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsIncomingInspectionTaskVO.java @@ -0,0 +1,180 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 来料检测任务 - 查询返回VO + */ +@Data +public class QmsIncomingInspectionTaskVO { + + private Long id; + + /** + * 检测单号 + */ + private String taskNo; + + /** + * 物料id + */ + private Long materialId; + + /** + * 物料编码 + */ + private String materialNo; + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 图号版本号 + */ + private String drawingNoVer; + + /** + * 检验标准id + */ + private Long inspectionStandardId; + + /** + * 检测标准版本号 + */ + private String standardVersion; + + /** + * 供应商编号 + */ + private String supplierCode; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * 送货单号 + */ + private String deliveryOrderNo; + + /** + * 送货单行号 + */ + private String deliveryOrderLine; + + /** + * 采购单号 + */ + private String purchaseOrderNo; + + /** + * 采购单行号 + */ + private String purchaseOrderLine; + + /** + * 所属工厂 + */ + private String factory; + + /** + * 检测类型(字典项id) + */ + private Long inspectionType; + + /** + * 检验数量 + */ + private BigDecimal inspectionQty; + + /** + * 合格数量 + */ + private BigDecimal qualifiedQty; + + /** + * 不合格数量 + */ + private BigDecimal unqualifiedQty; + + /** + * 检验状态:0=待检,1=已检 + */ + private Short inspectionStatus; + + /** + * 检验结果:true=合格,false=不合格 + */ + private Boolean inspectionResult; + + /** + * 检验人id + */ + private Long inspectorId; + + /** + * 检验人姓名 + */ + private String inspectorName; + + /** + * 代办人id + */ + private Long agentId; + + /** + * 代办人姓名 + */ + private String agentName; + + /** + * 送检时间 + */ + private LocalDateTime submitTime; + + /** + * 检验开始时间 + */ + private LocalDateTime inspectionStartTime; + + /** + * 检验完成时间 + */ + private LocalDateTime inspectionFinishTime; + + /** + * 要求完成时间 + */ + private LocalDateTime requiredFinishTime; + + /** + * 是否超期:true=超期,false=未超期 + */ + private Boolean isOverdue; + + /** + * 关联检测任务单号 + */ + private Long relatedTaskNo; + + /** + * 最近更新人id + */ + private Long updateUserId; + + /** + * 最近更新人姓名 + */ + private String updateUserName; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTask.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTask.java new file mode 100644 index 00000000..92d94df8 --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTask.java @@ -0,0 +1,179 @@ +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.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * 来料检测任务表 + *

+ * + * @author 代码生成器生成 + * @since 2026 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("qms_incoming_inspection_task") +public class QmsIncomingInspectionTask implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 检测单号,自动生成 + */ + private String taskNo; + + /** + * 物料id,关联质检物料表 + */ + private Long materialId; + + /** + * 检验标准id,关联检验标准表 + */ + private Long inspectionStandardId; + + /** + * 供应商编号 + */ + private String supplierCode; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * 送货单号 + */ + private String deliveryOrderNo; + + /** + * 送货单行号 + */ + private String deliveryOrderLine; + + /** + * 采购单号 + */ + private String purchaseOrderNo; + + /** + * 采购单行号 + */ + private String purchaseOrderLine; + + /** + * 所属工厂 + */ + private String factory; + + /** + * 检测类型,字典项id + */ + private Long inspectionType; + + /** + * 检验数量,即送检数量 + */ + private BigDecimal inspectionQty; + + /** + * 合格数量 + */ + private BigDecimal qualifiedQty; + + /** + * 不合格数量 + */ + private BigDecimal unqualifiedQty; + + /** + * 检验状态:0=待检,1=已检 + */ + private Short inspectionStatus; + + /** + * 检验结果:true=合格,false=不合格 + */ + private Boolean inspectionResult; + + /** + * 检验人id,关联质检人员表 + */ + private Long inspectorId; + + /** + * 检验人姓名 + */ + private String inspectorName; + + /** + * 代办人id,转办后的质检人员id + */ + private Long agentId; + + /** + * 代办人姓名 + */ + private String agentName; + + /** + * 送检时间 + */ + private LocalDateTime submitTime; + + /** + * 检验开始时间 + */ + private LocalDateTime inspectionStartTime; + + /** + * 检验完成时间 + */ + private LocalDateTime inspectionFinishTime; + + /** + * 要求完成时间,送检时间加检验标准中的检测周期 + */ + private LocalDateTime requiredFinishTime; + + /** + * 是否超期:true=超期,false=未超期 + */ + private Boolean isOverdue; + + /** + * 关联检测任务单号 + */ + private Long relatedTaskNo; + + /** + * 最近更新人id + */ + private Long updateUserId; + + /** + * 最近更新人姓名 + */ + private String updateUserName; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsIncomingInspectionTaskMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsIncomingInspectionTaskMapper.java new file mode 100644 index 00000000..a805fdea --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/QmsIncomingInspectionTaskMapper.java @@ -0,0 +1,16 @@ +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.QmsIncomingInspectionTaskSearchQO; +import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO; +import com.nflg.wms.repository.entity.QmsIncomingInspectionTask; + +/** + * 来料检测任务 Mapper + */ +public interface QmsIncomingInspectionTaskMapper extends BaseMapper { + + IPage search(QmsIncomingInspectionTaskSearchQO request, Page page); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskService.java new file mode 100644 index 00000000..8473c6ce --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskService.java @@ -0,0 +1,24 @@ +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.QmsIncomingInspectionTaskSearchQO; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskTransferQO; +import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO; +import com.nflg.wms.repository.entity.QmsIncomingInspectionTask; + +/** + * 来料检测任务 服务类 + */ +public interface IQmsIncomingInspectionTaskService extends IService { + + /** + * 分页查询来料检测任务列表 + */ + IPage search(QmsIncomingInspectionTaskSearchQO request); + + /** + * 转办 + */ + void transfer(QmsIncomingInspectionTaskTransferQO request); +} diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskServiceImpl.java new file mode 100644 index 00000000..2d97dc5d --- /dev/null +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskServiceImpl.java @@ -0,0 +1,29 @@ +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.QmsIncomingInspectionTaskSearchQO; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskTransferQO; +import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO; +import com.nflg.wms.repository.entity.QmsIncomingInspectionTask; +import com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskMapper; +import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService; +import org.springframework.stereotype.Service; + +/** + * 来料检测任务 服务实现类 + */ +@Service +public class QmsIncomingInspectionTaskServiceImpl extends ServiceImpl implements IQmsIncomingInspectionTaskService { + + @Override + public IPage search(QmsIncomingInspectionTaskSearchQO request) { + return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public void transfer(QmsIncomingInspectionTaskTransferQO request) { + // 转办逻辑由 ControllerService 处理,此处留空 + } +} diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml new file mode 100644 index 00000000..505c7172 --- /dev/null +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml @@ -0,0 +1,91 @@ + + + + + + +