diff --git a/src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java b/src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java index 7be2c0e5..0868fd76 100644 --- a/src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java +++ b/src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java @@ -41,6 +41,8 @@ public interface ChangeManagementMapper extends BaseMapper{ List changeDetailSearch(ChangeRequestDetailVo data); + List listChangeDetailPartNo(@Param("site") String site, @Param("changeNos") List changeNos); + ChangeCostImpactVo costImpactSearch(ChangeRequestEntity data); void costImpactSave(ChangeCostImpactEntity data); diff --git a/src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java b/src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java index 9363a610..77cfc584 100644 --- a/src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java +++ b/src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java @@ -314,9 +314,52 @@ public class ChangeManagementServiceImpl extends ServiceImpl resultList = this.changeManagementMapper.changeRecordSearch(new Page(data.getPage(), data.getLimit()), data); + fillIfsPartNo(resultList.getRecords(), data.getSite()); return new PageUtils(resultList); } + /** + * 主列表 IFS料号:与基本信息页签 changeDetailSearch 的 a.part_no 一致,按变更单英文分号拼接。 + * 不放进列表 SQL,避免子查询里的 ORDER BY 被 SQL Server 分页当成整句的第一个 ORDER BY。 + */ + private void fillIfsPartNo(List records, String site) { + if (records == null || records.isEmpty()) { + return; + } + String querySite = StringUtils.isNotBlank(site) ? site : records.get(0).getSite(); + if (StringUtils.isBlank(querySite)) { + return; + } + List changeNos = records.stream() + .map(ChangeRequestVo::getChangeNo) + .filter(StringUtils::isNotBlank) + .distinct() + .collect(Collectors.toList()); + if (changeNos.isEmpty()) { + return; + } + Map ifsMap = new HashMap<>(); + int batchSize = 500; + for (int i = 0; i < changeNos.size(); i += batchSize) { + List batch = changeNos.subList(i, Math.min(i + batchSize, changeNos.size())); + List details = changeManagementMapper.listChangeDetailPartNo(querySite, batch); + if (details == null) { + continue; + } + for (ChangeRequestDetailEntity detail : details) { + String partNo = StringUtils.trimToEmpty(detail.getPartNo()); + if (partNo.isEmpty() || StringUtils.isBlank(detail.getChangeNo())) { + continue; + } + ifsMap.computeIfAbsent(detail.getChangeNo(), key -> new StringBuilder()).append(';').append(partNo); + } + } + for (ChangeRequestVo record : records) { + StringBuilder builder = ifsMap.get(record.getChangeNo()); + record.setIfsPartNo(builder == null ? "" : builder.substring(1)); + } + } + /** * 变更单详情的列表 */ @@ -2441,6 +2484,7 @@ public class ChangeManagementServiceImpl extends ServiceImpl resultList = changeManagementMapper.changeRecordSearchAny(new Page(data.getNo(), data.getSize()), params); + fillIfsPartNo(resultList.getRecords(), data.getSite()); return new PageUtils(resultList); } diff --git a/src/main/java/com/spring/modules/change/vo/ChangeRequestVo.java b/src/main/java/com/spring/modules/change/vo/ChangeRequestVo.java index a1257d1f..137e1bbe 100644 --- a/src/main/java/com/spring/modules/change/vo/ChangeRequestVo.java +++ b/src/main/java/com/spring/modules/change/vo/ChangeRequestVo.java @@ -80,6 +80,11 @@ public class ChangeRequestVo extends ChangeRequestEntity { */ private String partNo; + /** + * 基本信息页签中的IFS物料编码,英文分号拼接 + */ + private String ifsPartNo; + /** * 为 true 时按当前节点取字段权限,不合并其它节点 */ diff --git a/src/main/resources/mapper/change/ChangeManagementMapper.xml b/src/main/resources/mapper/change/ChangeManagementMapper.xml index 4dd60a57..4c5ba074 100644 --- a/src/main/resources/mapper/change/ChangeManagementMapper.xml +++ b/src/main/resources/mapper/change/ChangeManagementMapper.xml @@ -283,6 +283,23 @@ where a.site = #{site} and a.change_no = #{changeNo} + + +