diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsCoaReviewController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsCoaReviewController.java index 4abc07c6..80e5ca46 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsCoaReviewController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsCoaReviewController.java @@ -86,23 +86,13 @@ public class QmsCoaReviewController extends BaseController { } /** - * 分页查询-供应商 - * 供应商查看自己创建的审核记录 - * 支持供应商编号/名称、采购单号、物料编码过滤 + * 分页查询(自动识别身份) + * 供应商:查看自己创建的审核记录 + * 内部用户(SQE):查看负责的供应商物料的审核记录 */ - @PostMapping("searchForSupplier") - public ApiResult> searchForSupplier(@Valid @RequestBody QmsCoaReviewSearchQO qo) { - return ApiResult.success(coaReviewService.searchForSupplier(qo)); - } - - /** - * 分页查询-SQE - * SQE查看待审核的记录(基于task.user_id) - * 支持供应商编号/名称、采购单号、物料编码过滤 - */ - @PostMapping("searchForSqe") - public ApiResult> searchForSqe(@Valid @RequestBody QmsCoaReviewSearchQO qo) { - return ApiResult.success(coaReviewService.searchForSqe(qo)); + @PostMapping("search") + public ApiResult> search(@Valid @RequestBody QmsCoaReviewSearchQO qo) { + return ApiResult.success(coaReviewService.search(qo)); } /** diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsCoaTaskController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsCoaTaskController.java index 2a1430d1..505cba43 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsCoaTaskController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsCoaTaskController.java @@ -3,9 +3,11 @@ 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.QmsCoaTaskAddQO; +import com.nflg.wms.common.pojo.qo.QmsCoaTaskMaterialSearchQO; import com.nflg.wms.common.pojo.qo.QmsCoaTaskSearchQO; import com.nflg.wms.common.pojo.qo.QmsCoaTaskUpdateQO; import com.nflg.wms.common.pojo.vo.QmsCoaTaskDetailVO; +import com.nflg.wms.common.pojo.vo.QmsCoaTaskMaterialVO; import com.nflg.wms.common.pojo.vo.QmsCoaTaskVO; import com.nflg.wms.repository.service.IQmsCoaTaskService; import com.nflg.wms.starter.BaseController; @@ -61,7 +63,7 @@ public class QmsCoaTaskController extends BaseController { } /** - * 直接发布COA通知任务(状态直接变为1,并填入发送时间) + * 直接发布COA通知任务(状态直接变为1(已发送),并填入发送时间) */ @Transactional @PostMapping("publish") @@ -71,7 +73,7 @@ public class QmsCoaTaskController extends BaseController { } /** - * 批量发送(状态改为1,填入发送时间) + * 批量发送(状态改为1(已发送),填入发送时间) * * @param ids 任务ID列表 */ @@ -91,6 +93,16 @@ public class QmsCoaTaskController extends BaseController { return ApiResult.success(coaTaskService.search(qo)); } + /** + * 分页查询当前登录供应商关联的物料列表 + * 物料类别、物料编号精确查询,物料描述模糊查询,均可选 + * 返回:物料编号、图号、物料描述、物料类别 + */ + @PostMapping("materialSearch") + public ApiResult> materialSearch(@Valid @RequestBody QmsCoaTaskMaterialSearchQO qo) { + return ApiResult.success(coaTaskService.searchMaterial(qo)); + } + /** * 按ID查详情 * 返回:供应商名称、物料编号、物料描述、图纸版本号、报告要求、报告模板 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsCoaReviewAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsCoaReviewAddQO.java index 298a5baa..15de52a6 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsCoaReviewAddQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsCoaReviewAddQO.java @@ -1,7 +1,6 @@ package com.nflg.wms.common.pojo.qo; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; import lombok.Data; /** @@ -11,13 +10,7 @@ import lombok.Data; public class QmsCoaReviewAddQO { /** - * 任务ID(关联 qms_coa_task.id,必传) - */ - @NotNull(message = "任务ID不能为空") - private Long taskId; - - /** - * 物料编码(必传,用于与任务中的物料进行校验) + * 物料编码(必传,用于匹配任务) */ @NotBlank(message = "物料编码不能为空") private String materialNo; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsCoaTaskMaterialSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsCoaTaskMaterialSearchQO.java new file mode 100644 index 00000000..61b17a53 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsCoaTaskMaterialSearchQO.java @@ -0,0 +1,39 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.Min; +import lombok.Data; + +/** + * 查询当前登录供应商关联的物料列表参数 + * 物料类别、物料编号为精确查询,物料描述为模糊查询,均可选 + */ +@Data +public class QmsCoaTaskMaterialSearchQO { + + /** + * 物料类别(精确,可选) + */ + private String materialCategoryCode; + + /** + * 物料编号(精确,可选) + */ + private String materialNo; + + /** + * 物料描述(模糊,可选) + */ + private String materialDesc; + + /** + * 当前页码,默认第1页 + */ + @Min(value = 1, message = "页码不能小于1") + private Integer page = 1; + + /** + * 每页条数,默认20 + */ + @Min(value = 1, message = "每页条数不能小于1") + private Integer pageSize = 20; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsCoaTaskMaterialVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsCoaTaskMaterialVO.java new file mode 100644 index 00000000..1cca263d --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsCoaTaskMaterialVO.java @@ -0,0 +1,40 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +/** + * 供应商关联物料列表 VO + */ +@Data +public class QmsCoaTaskMaterialVO { + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 物料图号 + */ + private String drawingNo; + + /** + * 图号版本号 + */ + private String drawingNoVer; + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 物料类别编码 + */ + private String materialCategoryCode; + + /** + * 物料类别全路径名称 + */ + private String materialCategoryCodePathName; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsCoaTaskVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsCoaTaskVO.java index c40c6a5e..4ed47309 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsCoaTaskVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsCoaTaskVO.java @@ -39,7 +39,7 @@ public class QmsCoaTaskVO { private String materialNo; /** - * COA任务状态:0=待发送,1=待上传,2=已上传 + * COA任务状态:0=待发送,1=已发送 */ private Integer status; diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsCoaTask.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsCoaTask.java index bcd4ea1f..a028af9b 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsCoaTask.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsCoaTask.java @@ -48,7 +48,7 @@ public class QmsCoaTask implements Serializable { private Long userId; /** - * COA任务状态:0=待发送,1=待上传,2=已上传 + * COA任务状态:0=待发送,1=已发送 */ private Integer status; diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsCoaReviewService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsCoaReviewService.java index 54384cfb..41b5a0fc 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsCoaReviewService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsCoaReviewService.java @@ -44,6 +44,13 @@ public interface IQmsCoaReviewService extends IService { */ void audit(QmsCoaReviewAuditQO qo); + /** + * 分页查询(自动识别身份) + * 供应商:查看自己创建的审核记录 + * 内部用户(SQE):查看负责供应商物料的审核记录(基于task.user_id) + */ + PageData search(QmsCoaReviewSearchQO qo); + /** * 分页查询-供应商(供应商查看自己创建的审核记录) */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsCoaTaskService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsCoaTaskService.java index 784c0b9f..e9d0a4b7 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsCoaTaskService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsCoaTaskService.java @@ -1,12 +1,14 @@ package com.nflg.wms.repository.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.qo.QmsCoaTaskAddQO; +import com.nflg.wms.common.pojo.qo.QmsCoaTaskMaterialSearchQO; import com.nflg.wms.common.pojo.qo.QmsCoaTaskSearchQO; import com.nflg.wms.common.pojo.qo.QmsCoaTaskUpdateQO; import com.nflg.wms.common.pojo.vo.QmsCoaTaskDetailVO; +import com.nflg.wms.common.pojo.vo.QmsCoaTaskMaterialVO; import com.nflg.wms.common.pojo.vo.QmsCoaTaskVO; -import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.repository.entity.QmsCoaTask; import java.util.List; @@ -46,6 +48,13 @@ public interface IQmsCoaTaskService extends IService { */ PageData search(QmsCoaTaskSearchQO qo); + /** + * 分页查询当前登录供应商关联的物料列表 + * 物料类别、物料编号精确查询,物料描述模糊查询,均可选 + * 通过当前登录用户找到对应供应商,过滤出该供应商在 coa_task 中绑定的物料 + */ + PageData searchMaterial(QmsCoaTaskMaterialSearchQO qo); + /** * 按ID查详情 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaReviewServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaReviewServiceImpl.java index a81725ed..688bef2c 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaReviewServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaReviewServiceImpl.java @@ -5,6 +5,7 @@ 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.constant.STATE; +import com.nflg.wms.common.constant.UserType; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.qo.QmsCoaReviewAddQO; @@ -61,25 +62,8 @@ public class QmsCoaReviewServiceImpl extends ServiceImpl search(QmsCoaReviewSearchQO qo) { + UserType userType = UserUtil.getType(); + if (UserType.Supplier.equals(userType)) { + return searchForSupplier(qo); + } else { + return searchForSqe(qo); + } + } + /** * 供应商分页查询:供应商查看自己创建的审核记录 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaTaskServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaTaskServiceImpl.java index 39873c40..172529e3 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaTaskServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaTaskServiceImpl.java @@ -8,9 +8,11 @@ import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.qo.QmsCoaTaskAddQO; +import com.nflg.wms.common.pojo.qo.QmsCoaTaskMaterialSearchQO; import com.nflg.wms.common.pojo.qo.QmsCoaTaskSearchQO; import com.nflg.wms.common.pojo.qo.QmsCoaTaskUpdateQO; import com.nflg.wms.common.pojo.vo.QmsCoaTaskDetailVO; +import com.nflg.wms.common.pojo.vo.QmsCoaTaskMaterialVO; import com.nflg.wms.common.pojo.vo.QmsCoaTaskVO; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.repository.entity.QmsCoaTask; @@ -63,6 +65,16 @@ public class QmsCoaTaskServiceImpl extends ServiceImpl searchMaterial(QmsCoaTaskMaterialSearchQO qo) { + Long currentUserId = UserUtil.getUserId(); + + // 通过当前登录用户找到对应供应商 + UserSupplier supplier = userSupplierService.lambdaQuery() + .eq(UserSupplier::getUserId, currentUserId) + .last("LIMIT 1") + .one(); + if (Objects.isNull(supplier)) { + throw new NflgException(STATE.BusinessError, "当前账号未关联供应商"); + } + + // 查询该供应商在 coa_task 中绑定的物料ID集合 + List tasks = lambdaQuery() + .eq(QmsCoaTask::getSupplierId, supplier.getId()) + .ne(QmsCoaTask::getDeleted, true) + .list(); + if (tasks.isEmpty()) { + return emptyPage(qo.getPage(), qo.getPageSize()); + } + Set materialIds = tasks.stream() + .map(QmsCoaTask::getMaterialId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 构建物料查询条件 + var query = qcMaterialService.lambdaQuery() + .in(QmsQcMaterial::getId, materialIds) + .eq(StrUtil.isNotBlank(qo.getMaterialCategoryCode()), QmsQcMaterial::getMaterialCategoryCode, qo.getMaterialCategoryCode()) + .eq(StrUtil.isNotBlank(qo.getMaterialNo()), QmsQcMaterial::getMaterialNo, qo.getMaterialNo()) + .like(StrUtil.isNotBlank(qo.getMaterialDesc()), QmsQcMaterial::getMaterialDesc, qo.getMaterialDesc()) + .orderByAsc(QmsQcMaterial::getMaterialNo); + + IPage page = query.page(new Page<>(qo.getPage(), qo.getPageSize())); + + List vos = page.getRecords().stream().map(m -> { + QmsCoaTaskMaterialVO vo = new QmsCoaTaskMaterialVO(); + vo.setMaterialNo(m.getMaterialNo()); + vo.setDrawingNo(m.getDrawingNo()); + vo.setDrawingNoVer(m.getDrawingNoVer()); + vo.setMaterialDesc(m.getMaterialDesc()); + vo.setMaterialCategoryCode(m.getMaterialCategoryCode()); + vo.setMaterialCategoryCodePathName(m.getMaterialCategoryCodePathName()); + return vo; + }).collect(Collectors.toList()); + + return buildPageData(page, vos); + } }