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;
/**
* 打样完成日期所在年口径为 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 = 打样完成日期 - 打样开始日期单位天
*/

9
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;

18
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 @@
<if test="query.endDate != null">
and #{query.endDate,jdbcType=DATE} >= t.plan_start_date
</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 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 test="query.pmInqueryTimeStart != null">
and t.pm_inquery_time >= #{query.pmInqueryTimeStart,jdbcType=DATE}

Loading…
Cancel
Save