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}