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 22cdce90..2372a080 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 @@ -182,15 +182,25 @@ public class ProofTrackingData extends QueryPage { */ private String importance; /** - * 打样完成日期所在年。口径为 actuality_delivery_date(打样完成时回写)。 + * Sample making Year:优先取实际完成日期 actuality_delivery_date,为空取预计完成日期 required_delivery_date。 */ @TableField(exist = false) private Integer sampleMakingYear; /** - * 打样完成日期所在月。口径与 sampleMakingYear 相同。 + * Sample making Month:日期取值口径与 sampleMakingYear 相同。 */ @TableField(exist = false) private Integer sampleMakingMonth; + /** 查询专用:Sample making Date 起始日期(含当天),实际完成优先、预计完成兜底。 */ + @TableField(exist = false) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date sampleMakingDateStart; + /** 查询专用:Sample making Date 结束日期(含当天)。 */ + @TableField(exist = false) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date sampleMakingDateEnd; /** * Sample LT = 打样完成日期 - 打样开始日期,单位天。 */ 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 44e7baff..0e637064 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 @@ -97,6 +97,7 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic @Override public PageUtils searchProofTracking(ProofTrackingData data) { + validateSampleMakingDateRange(data); normalizeSearchProofingStatusFilters(data); long page = data.getPage() <= 0 ? 1 : data.getPage(); long limit = data.getLimit() <= 0 ? 20 : data.getLimit(); @@ -124,6 +125,7 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic if (data == null) { throw new RuntimeException("导出参数不能为空"); } + validateSampleMakingDateRange(data); normalizeSearchProofingStatusFilters(data); if (isBlank(data.getSite())) { throw new RuntimeException("工厂不能为空"); @@ -3031,6 +3033,13 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic return "system"; } + private void validateSampleMakingDateRange(ProofTrackingData data) { + if (data != null && data.getSampleMakingDateStart() != null && data.getSampleMakingDateEnd() != null + && data.getSampleMakingDateStart().after(data.getSampleMakingDateEnd())) { + throw new IllegalArgumentException("Sample making Date 开始日期不能晚于结束日期"); + } + } + private void normalizeSearchProofingStatusFilters(ProofTrackingData data) { if (data == null) { return; diff --git a/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml b/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml index 54ab7ac5..0d99aca6 100644 --- a/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml +++ b/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml @@ -22,9 +22,9 @@ t.proofing_number AS sampleQty, t.pm_inquery_time, t.importance, - -- 打样完成日期口径:actuality_delivery_date(DeliveryPackage 完成时回写),未完成则为空。 - CASE WHEN t.required_delivery_date IS NULL THEN NULL ELSE YEAR(t.required_delivery_date) END AS sampleMakingYear, - CASE WHEN t.required_delivery_date IS NULL THEN NULL ELSE MONTH(t.required_delivery_date) END AS sampleMakingMonth, + -- 实际完成日期优先;为空时使用预计完成日期,与 Sample making Date 筛选保持一致。 + YEAR(COALESCE(t.actuality_delivery_date, t.required_delivery_date)) AS sampleMakingYear, + MONTH(COALESCE(t.actuality_delivery_date, t.required_delivery_date)) AS sampleMakingMonth, CASE WHEN t.actuality_delivery_date IS NULL OR t.plan_start_date IS NULL THEN NULL ELSE DATEDIFF(DAY, t.plan_start_date, t.actuality_delivery_date) @@ -187,14 +187,12 @@ and #{query.endDate,jdbcType=DATE} >= t.plan_start_date - - - and t.actuality_delivery_date is not null - and YEAR(t.actuality_delivery_date) = #{query.sampleMakingYear} + + and COALESCE(t.actuality_delivery_date, t.required_delivery_date) >= #{query.sampleMakingDateStart,jdbcType=DATE} - - and t.actuality_delivery_date is not null - and MONTH(t.actuality_delivery_date) = #{query.sampleMakingMonth} + + + and COALESCE(t.actuality_delivery_date, t.required_delivery_date) < DATEADD(DAY, 1, #{query.sampleMakingDateEnd,jdbcType=DATE}) and t.pm_inquery_time >= #{query.pmInqueryTimeStart,jdbcType=DATE}