diff --git a/src/main/java/com/xujie/sys/modules/sampletracking/data/ProofTrackingData.java b/src/main/java/com/xujie/sys/modules/sampletracking/data/ProofTrackingData.java index c4a4da36..cccb233e 100644 --- a/src/main/java/com/xujie/sys/modules/sampletracking/data/ProofTrackingData.java +++ b/src/main/java/com/xujie/sys/modules/sampletracking/data/ProofTrackingData.java @@ -139,6 +139,11 @@ public class ProofTrackingData extends QueryPage { private String proofingNo; private String proofingStatus; + /** + * 查询专用:打样状态多选。不落库,避免覆盖单条记录的 proofingStatus。 + */ + @TableField(exist = false) + private List proofingStatusList; @TableField(exist = false) private String projectPartSyncFlag; @TableField(exist = false) diff --git a/src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java b/src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java index 54260f21..652f6b3f 100644 --- a/src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java @@ -81,6 +81,7 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic @Override public PageUtils searchProofTracking(ProofTrackingData data) { + normalizeSearchProofingStatusFilters(data); long page = data.getPage() <= 0 ? 1 : data.getPage(); long limit = data.getLimit() <= 0 ? 20 : data.getLimit(); IPage result = @@ -107,6 +108,7 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic if (data == null) { throw new RuntimeException("导出参数不能为空"); } + normalizeSearchProofingStatusFilters(data); if (isBlank(data.getSite())) { throw new RuntimeException("工厂不能为空"); } @@ -2759,6 +2761,37 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic return "system"; } + private void normalizeSearchProofingStatusFilters(ProofTrackingData data) { + if (data == null) { + return; + } + if (!isBlank(data.getProofingStatus())) { + data.setProofingStatus(data.getProofingStatus().trim()); + } else { + data.setProofingStatus(null); + } + List sourceStatusList = data.getProofingStatusList(); + if (sourceStatusList == null || sourceStatusList.isEmpty()) { + data.setProofingStatusList(null); + return; + } + List normalizedStatusList = new ArrayList<>(); + Set usedStatusSet = new LinkedHashSet<>(); + for (String oneStatus : sourceStatusList) { + if (isBlank(oneStatus)) { + continue; + } + String normalizedStatus = oneStatus.trim(); + String statusKey = normalizedStatus.toLowerCase(); + if (usedStatusSet.contains(statusKey)) { + continue; + } + usedStatusSet.add(statusKey); + normalizedStatusList.add(normalizedStatus); + } + data.setProofingStatusList(normalizedStatusList.isEmpty() ? null : normalizedStatusList); + } + private boolean isBlank(String value) { return value == null || value.trim().isEmpty(); } diff --git a/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml b/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml index ed3c8e3c..a7ae45ee 100644 --- a/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml +++ b/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml @@ -109,7 +109,13 @@ and UPPER(t.proofing_no) like '%' + UPPER(#{query.proofingNo}) + '%' - + + and t.proofing_status in + + #{status} + + + and t.proofing_status = #{query.proofingStatus}