Browse Source

Sample marking Year、Sample marking Month需要再改下规则,优先获取打样实际完成日期,如果打样实际完成日期是空的,那就获取预计完成日期

2、Sample marking Year、Sample marking Month的筛选条件需要改下,改成选择开始日期-结束日期的形式
master
han\hanst 21 hours ago
parent
commit
1109ccadba
  1. 14
      src/main/java/com/xujie/sys/modules/sampletracking/data/ProofTrackingData.java
  2. 9
      src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java
  3. 18
      src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml

14
src/main/java/com/xujie/sys/modules/sampletracking/data/ProofTrackingData.java

@ -182,15 +182,25 @@ public class ProofTrackingData extends QueryPage {
*/ */
private String importance; private String importance;
/** /**
* 打样完成日期所在年口径为 actuality_delivery_date打样完成时回写
* Sample making Year优先取实际完成日期 actuality_delivery_date为空取预计完成日期 required_delivery_date
*/ */
@TableField(exist = false) @TableField(exist = false)
private Integer sampleMakingYear; private Integer sampleMakingYear;
/** /**
* 打样完成日期所在月口径与 sampleMakingYear 相同
* Sample making Month日期取值口径与 sampleMakingYear 相同
*/ */
@TableField(exist = false) @TableField(exist = false)
private Integer sampleMakingMonth; 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 = 打样完成日期 - 打样开始日期单位天 * Sample LT = 打样完成日期 - 打样开始日期单位天
*/ */

9
src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java

@ -97,6 +97,7 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic
@Override @Override
public PageUtils searchProofTracking(ProofTrackingData data) { public PageUtils searchProofTracking(ProofTrackingData data) {
validateSampleMakingDateRange(data);
normalizeSearchProofingStatusFilters(data); normalizeSearchProofingStatusFilters(data);
long page = data.getPage() <= 0 ? 1 : data.getPage(); long page = data.getPage() <= 0 ? 1 : data.getPage();
long limit = data.getLimit() <= 0 ? 20 : data.getLimit(); long limit = data.getLimit() <= 0 ? 20 : data.getLimit();
@ -124,6 +125,7 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic
if (data == null) { if (data == null) {
throw new RuntimeException("导出参数不能为空"); throw new RuntimeException("导出参数不能为空");
} }
validateSampleMakingDateRange(data);
normalizeSearchProofingStatusFilters(data); normalizeSearchProofingStatusFilters(data);
if (isBlank(data.getSite())) { if (isBlank(data.getSite())) {
throw new RuntimeException("工厂不能为空"); throw new RuntimeException("工厂不能为空");
@ -3031,6 +3033,13 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic
return "system"; 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) { private void normalizeSearchProofingStatusFilters(ProofTrackingData data) {
if (data == null) { if (data == null) {
return; return;

18
src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml

@ -22,9 +22,9 @@
t.proofing_number AS sampleQty, t.proofing_number AS sampleQty,
t.pm_inquery_time, t.pm_inquery_time,
t.importance, 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 CASE
WHEN t.actuality_delivery_date IS NULL OR t.plan_start_date IS NULL THEN NULL 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) ELSE DATEDIFF(DAY, t.plan_start_date, t.actuality_delivery_date)
@ -187,14 +187,12 @@
<if test="query.endDate != null"> <if test="query.endDate != null">
and #{query.endDate,jdbcType=DATE} >= t.plan_start_date and #{query.endDate,jdbcType=DATE} >= t.plan_start_date
</if> </if>
<if test="query.sampleMakingYear != null">
<!-- 无打样完成日期的记录不能按年/月命中,避免把未完成单据算进完成年/月。 -->
and t.actuality_delivery_date is not null
and YEAR(t.actuality_delivery_date) = #{query.sampleMakingYear}
<if test="query.sampleMakingDateStart != null">
and COALESCE(t.actuality_delivery_date, t.required_delivery_date) >= #{query.sampleMakingDateStart,jdbcType=DATE}
</if> </if>
<if test="query.sampleMakingMonth != null">
and t.actuality_delivery_date is not null
and MONTH(t.actuality_delivery_date) = #{query.sampleMakingMonth}
<if test="query.sampleMakingDateEnd != null">
<!-- 包含结束日期当天的所有时间,不遗漏带时分秒的实际完成记录。 -->
and COALESCE(t.actuality_delivery_date, t.required_delivery_date) &lt; DATEADD(DAY, 1, #{query.sampleMakingDateEnd,jdbcType=DATE})
</if> </if>
<if test="query.pmInqueryTimeStart != null"> <if test="query.pmInqueryTimeStart != null">
and t.pm_inquery_time >= #{query.pmInqueryTimeStart,jdbcType=DATE} and t.pm_inquery_time >= #{query.pmInqueryTimeStart,jdbcType=DATE}

Loading…
Cancel
Save