From ce988c47396767191fb8ea6182121de68027b639 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Thu, 9 Apr 2026 13:30:29 +0800 Subject: [PATCH] =?UTF-8?q?2026-04-09=20=E6=96=B0=E5=A2=9E=E3=80=90Compone?= =?UTF-8?q?nt=20Where=20Used=E3=80=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompleteWhereUsedController.java | 30 +++++++++ .../part/dto/CompleteWhereUsedQueryDto.java | 23 +++++++ .../part/mapper/CompleteWhereUsedMapper.java | 16 +++++ .../service/CompleteWhereUsedService.java | 9 +++ .../impl/CompleteWhereUsedServiceImpl.java | 38 +++++++++++ .../modules/part/vo/CompleteWhereUsedVo.java | 43 ++++++++++++ .../mapper/part/CompleteWhereUsedMapper.xml | 67 +++++++++++++++++++ 7 files changed, 226 insertions(+) create mode 100644 src/main/java/com/spring/modules/part/controller/CompleteWhereUsedController.java create mode 100644 src/main/java/com/spring/modules/part/dto/CompleteWhereUsedQueryDto.java create mode 100644 src/main/java/com/spring/modules/part/mapper/CompleteWhereUsedMapper.java create mode 100644 src/main/java/com/spring/modules/part/service/CompleteWhereUsedService.java create mode 100644 src/main/java/com/spring/modules/part/service/impl/CompleteWhereUsedServiceImpl.java create mode 100644 src/main/java/com/spring/modules/part/vo/CompleteWhereUsedVo.java create mode 100644 src/main/resources/mapper/part/CompleteWhereUsedMapper.xml diff --git a/src/main/java/com/spring/modules/part/controller/CompleteWhereUsedController.java b/src/main/java/com/spring/modules/part/controller/CompleteWhereUsedController.java new file mode 100644 index 00000000..e971afdf --- /dev/null +++ b/src/main/java/com/spring/modules/part/controller/CompleteWhereUsedController.java @@ -0,0 +1,30 @@ +package com.spring.modules.part.controller; + +import com.spring.common.utils.PageUtils; +import com.spring.common.utils.R; +import com.spring.modules.part.dto.CompleteWhereUsedQueryDto; +import com.spring.modules.part.service.CompleteWhereUsedService; +import org.springframework.beans.factory.annotation.Autowired; +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.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +/** + * 完整反查:按子件或父件查询 BOM 组件引用关系 + */ +@RestController +@RequestMapping("plm/completeWhereUsed") +public class CompleteWhereUsedController { + + @Autowired + private CompleteWhereUsedService completeWhereUsedService; + + @PostMapping("/search") + @ResponseBody + public R search(@RequestBody CompleteWhereUsedQueryDto query) { + PageUtils page = completeWhereUsedService.completeWhereUsedSearch(query); + return R.ok().put("page", page); + } +} diff --git a/src/main/java/com/spring/modules/part/dto/CompleteWhereUsedQueryDto.java b/src/main/java/com/spring/modules/part/dto/CompleteWhereUsedQueryDto.java new file mode 100644 index 00000000..07649660 --- /dev/null +++ b/src/main/java/com/spring/modules/part/dto/CompleteWhereUsedQueryDto.java @@ -0,0 +1,23 @@ +package com.spring.modules.part.dto; + +import com.spring.common.utils.QueryPage; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 查询条件:完整反查(子件在哪些父件 BOM 中被引用) + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class CompleteWhereUsedQueryDto extends QueryPage { + + private String site; + /** 子件物料编码 */ + private String componentPart; + /** 子件描述 */ + private String componentPartDesc; + /** 子件零件类型 */ + private String componentPartType; + /** 子件零件状态 */ + private String componentPartStatus; +} diff --git a/src/main/java/com/spring/modules/part/mapper/CompleteWhereUsedMapper.java b/src/main/java/com/spring/modules/part/mapper/CompleteWhereUsedMapper.java new file mode 100644 index 00000000..3887e83a --- /dev/null +++ b/src/main/java/com/spring/modules/part/mapper/CompleteWhereUsedMapper.java @@ -0,0 +1,16 @@ +package com.spring.modules.part.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.spring.modules.part.dto.CompleteWhereUsedQueryDto; +import com.spring.modules.part.vo.CompleteWhereUsedVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface CompleteWhereUsedMapper { + + IPage completeWhereUsedSearch( + Page page, + @Param("query") CompleteWhereUsedQueryDto query); +} diff --git a/src/main/java/com/spring/modules/part/service/CompleteWhereUsedService.java b/src/main/java/com/spring/modules/part/service/CompleteWhereUsedService.java new file mode 100644 index 00000000..bef386d4 --- /dev/null +++ b/src/main/java/com/spring/modules/part/service/CompleteWhereUsedService.java @@ -0,0 +1,9 @@ +package com.spring.modules.part.service; + +import com.spring.common.utils.PageUtils; +import com.spring.modules.part.dto.CompleteWhereUsedQueryDto; + +public interface CompleteWhereUsedService { + + PageUtils completeWhereUsedSearch(CompleteWhereUsedQueryDto query); +} diff --git a/src/main/java/com/spring/modules/part/service/impl/CompleteWhereUsedServiceImpl.java b/src/main/java/com/spring/modules/part/service/impl/CompleteWhereUsedServiceImpl.java new file mode 100644 index 00000000..18e54e92 --- /dev/null +++ b/src/main/java/com/spring/modules/part/service/impl/CompleteWhereUsedServiceImpl.java @@ -0,0 +1,38 @@ +package com.spring.modules.part.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.spring.common.utils.PageUtils; +import com.spring.modules.part.dto.CompleteWhereUsedQueryDto; +import com.spring.modules.part.mapper.CompleteWhereUsedMapper; +import com.spring.modules.part.service.CompleteWhereUsedService; +import com.spring.modules.part.vo.CompleteWhereUsedVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class CompleteWhereUsedServiceImpl implements CompleteWhereUsedService { + + @Autowired + private CompleteWhereUsedMapper completeWhereUsedMapper; + + @Override + public PageUtils completeWhereUsedSearch(CompleteWhereUsedQueryDto query) { + if (query == null || StringUtils.isBlank(query.getSite())) { + throw new RuntimeException("工厂(site)不能为空"); + } + if (StringUtils.isAllBlank(query.getComponentPart(), query.getComponentPartDesc(), query.getComponentPartType(), query.getComponentPartStatus())) { + throw new RuntimeException("请至少填写一项查询条件"); + } + if (StringUtils.isNotBlank(query.getComponentPart())) { + query.setComponentPart(query.getComponentPart().trim()); + } + if (StringUtils.isNotBlank(query.getComponentPartDesc())) { + query.setComponentPartDesc(query.getComponentPartDesc().trim()); + } + IPage page = completeWhereUsedMapper.completeWhereUsedSearch( + new Page<>(query.getPage(), query.getLimit()), query); + return new PageUtils(page); + } +} diff --git a/src/main/java/com/spring/modules/part/vo/CompleteWhereUsedVo.java b/src/main/java/com/spring/modules/part/vo/CompleteWhereUsedVo.java new file mode 100644 index 00000000..85ed1322 --- /dev/null +++ b/src/main/java/com/spring/modules/part/vo/CompleteWhereUsedVo.java @@ -0,0 +1,43 @@ +package com.spring.modules.part.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 完整反查结果行,字段顺序与查询 SQL 列顺序一致。 + */ +@Data +public class CompleteWhereUsedVo { + + private String site; + private String parentPartNo; + private String parentPartDesc; + private String parentPartType; + private String parentPartStatus; + private String parentPartStatusDesc; + private Integer engChgLevel; + private String alternativeNo; + /** plm_bom_detail.status */ + private String bomDetailStatus; + private Integer lineItemNo; + private Integer lineSequence; + private String componentPart; + private String componentPartDesc; + private String componentPartType; + private String issueType; + private String componentPartStatus; + private String componentPartStatusDesc; + private String bomType; + private Date effPhaseInDate; + private Date effPhaseOutDate; + private BigDecimal qtyPerAssembly; + private BigDecimal componentScrap; + private BigDecimal shrinkageFactor; + private Integer operationNo; + private String issueToLoc; + private String noteText; + private String consumptionItem; + private String printUnit; +} diff --git a/src/main/resources/mapper/part/CompleteWhereUsedMapper.xml b/src/main/resources/mapper/part/CompleteWhereUsedMapper.xml new file mode 100644 index 00000000..d8e54a87 --- /dev/null +++ b/src/main/resources/mapper/part/CompleteWhereUsedMapper.xml @@ -0,0 +1,67 @@ + + + + + +