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 @@ + + + + + +