From 1109ccadba6a623bfd88694cbdf5c59dab552d58 Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Sun, 20 Sep 2026 09:54:43 +0800 Subject: [PATCH] =?UTF-8?q?Sample=20marking=20Year=E3=80=81Sample=20markin?= =?UTF-8?q?g=20Month=E9=9C=80=E8=A6=81=E5=86=8D=E6=94=B9=E4=B8=8B=E8=A7=84?= =?UTF-8?q?=E5=88=99=EF=BC=8C=E4=BC=98=E5=85=88=E8=8E=B7=E5=8F=96=E6=89=93?= =?UTF-8?q?=E6=A0=B7=E5=AE=9E=E9=99=85=E5=AE=8C=E6=88=90=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=89=93=E6=A0=B7=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=97=A5=E6=9C=9F=E6=98=AF=E7=A9=BA=E7=9A=84?= =?UTF-8?q?=EF=BC=8C=E9=82=A3=E5=B0=B1=E8=8E=B7=E5=8F=96=E9=A2=84=E8=AE=A1?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=97=A5=E6=9C=9F=202=E3=80=81Sample=20marki?= =?UTF-8?q?ng=20Year=E3=80=81Sample=20marking=20Month=E7=9A=84=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E6=9D=A1=E4=BB=B6=E9=9C=80=E8=A6=81=E6=94=B9=E4=B8=8B?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E6=88=90=E9=80=89=E6=8B=A9=E5=BC=80=E5=A7=8B?= =?UTF-8?q?=E6=97=A5=E6=9C=9F-=E7=BB=93=E6=9D=9F=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E7=9A=84=E5=BD=A2=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sampletracking/data/ProofTrackingData.java | 14 ++++++++++++-- .../impl/SampleProofTrackingServiceImpl.java | 9 +++++++++ .../SampleProofTrackingMapper.xml | 18 ++++++++---------- 3 files changed, 29 insertions(+), 12 deletions(-) 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}