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 cccb233e..015adc10 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
@@ -160,6 +160,51 @@ public class ProofTrackingData extends QueryPage {
private String engineer;
private String priorityLevel;
private Integer proofingNumber;
+ /**
+ * 列表展示/筛选:打样单数量。不单独落库,来源于 proofing_number。
+ */
+ @TableField(exist = false)
+ private Integer sampleQty;
+ /**
+ * PM inquery time:新增打样时由用户选择。仅此字段需要在打样跟踪表落库。
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date pmInqueryTime;
+ /**
+ * 打样完成日期所在年。口径为 actuality_delivery_date(打样完成时回写)。
+ */
+ @TableField(exist = false)
+ private Integer sampleMakingYear;
+ /**
+ * 打样完成日期所在月。口径与 sampleMakingYear 相同。
+ */
+ @TableField(exist = false)
+ private Integer sampleMakingMonth;
+ /**
+ * Sample LT = 打样完成日期 - 打样开始日期,单位天。
+ */
+ @TableField(exist = false)
+ private Integer sampleLt;
+ /**
+ * Sample LT(Inquery)= 打样完成日期 - PM inquery time,单位天。
+ */
+ @TableField(exist = false)
+ private Integer sampleLtInquery;
+ /**
+ * 查询专用:PM inquery time 起始日期。
+ */
+ @TableField(exist = false)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date pmInqueryTimeStart;
+ /**
+ * 查询专用:PM inquery time 截止日期。
+ */
+ @TableField(exist = false)
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date pmInqueryTimeEnd;
private String comments;
private String remark;
@TableField(exist = false)
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 7a3f4a4f..3ae88b00 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
@@ -425,6 +425,8 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic
return resolveRoleDisplayValue(getBeanPropertyValue(rowData, "projectManagerName"), rowData.getProjectManager());
case "pic":
return resolveRoleDisplayValue(getBeanPropertyValue(rowData, "projectOwnerName"), rowData.getPic());
+ case "sampleMakingMonth":
+ return formatSampleMakingMonth(getBeanPropertyValue(rowData, "sampleMakingMonth"));
default:
return getExportDisplayValue(getBeanPropertyValue(rowData, columnProp));
}
@@ -678,6 +680,22 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic
return isBlank(text) ? "" : text;
}
+ private String formatSampleMakingMonth(Object value) {
+ if (value == null) {
+ return "";
+ }
+ String text = String.valueOf(value).trim();
+ if (isBlank(text)) {
+ return "";
+ }
+ try {
+ int month = Integer.parseInt(text);
+ return month < 10 ? "0" + month : String.valueOf(month);
+ } catch (NumberFormatException e) {
+ return text;
+ }
+ }
+
private String toDateString(Object value) {
if (value == null) {
return "";
@@ -895,6 +913,8 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic
if (data.getRequiredDeliveryDate() != null) {
trackingData.setRequiredDeliveryDate(data.getRequiredDeliveryDate());
}
+ // PM inquery time 仅由用户录入,不从试验单或其他日期推导。
+ trackingData.setPmInqueryTime(data.getPmInqueryTime());
trackingData.setProofingId(trackingData.getTrackingId());
if (trackingData.getProofingId() == null) {
@@ -937,6 +957,7 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic
updateTracking.setProofingNumber(trackingData.getProofingNumber());
updateTracking.setPlanStartDate(trackingData.getPlanStartDate());
updateTracking.setRequiredDeliveryDate(trackingData.getRequiredDeliveryDate());
+ updateTracking.setPmInqueryTime(trackingData.getPmInqueryTime());
updateTracking.setProjectPhase(trackingData.getProjectPhase());
updateTracking.setProofingStatus(trackingData.getProofingStatus());
updateTracking.setUpdateBy(operateUser);
@@ -1111,6 +1132,8 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic
updateData.setPlanStartDate(data.getPlanStartDate() == null ? oldData.getPlanStartDate() : data.getPlanStartDate());
updateData.setRequiredDeliveryDate(data.getRequiredDeliveryDate() == null ? oldData.getRequiredDeliveryDate() : data.getRequiredDeliveryDate());
updateData.setBaseline(data.getBaseline() == null ? oldData.getBaseline() : data.getBaseline());
+ // 允许用户清空 PM inquery time,因此不以旧值兜底。
+ updateData.setPmInqueryTime(data.getPmInqueryTime());
updateData.setTracker(isBlank(data.getTracker()) ? oldData.getTracker() : data.getTracker().trim());
updateData.setEngineer(isBlank(data.getEngineer()) ? oldData.getEngineer() : data.getEngineer().trim());
updateData.setPriorityLevel(isBlank(data.getPriorityLevel()) ? oldData.getPriorityLevel() : data.getPriorityLevel().trim());
diff --git a/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml b/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml
index 576dc99d..354a788a 100644
--- a/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml
+++ b/src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml
@@ -19,6 +19,19 @@
t.engineer,
t.priority_level,
t.proofing_number,
+ t.proofing_number AS sampleQty,
+ t.pm_inquery_time,
+ -- 打样完成日期口径:actuality_delivery_date(DeliveryPackage 完成时回写),未完成则为空。
+ CASE WHEN t.actuality_delivery_date IS NULL THEN NULL ELSE YEAR(t.actuality_delivery_date) END AS sampleMakingYear,
+ CASE WHEN t.actuality_delivery_date IS NULL THEN NULL ELSE MONTH(t.actuality_delivery_date) END 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)
+ END AS sampleLt,
+ CASE
+ WHEN t.actuality_delivery_date IS NULL OR t.pm_inquery_time IS NULL THEN NULL
+ ELSE DATEDIFF(DAY, t.pm_inquery_time, t.actuality_delivery_date)
+ END AS sampleLtInquery,
t.plan_start_date,
t.required_delivery_date,
t.baseline,
@@ -167,6 +180,21 @@
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 t.actuality_delivery_date is not null
+ and MONTH(t.actuality_delivery_date) = #{query.sampleMakingMonth}
+
+
+ and t.pm_inquery_time >= #{query.pmInqueryTimeStart,jdbcType=DATE}
+
+
+ and #{query.pmInqueryTimeEnd,jdbcType=DATE} >= t.pm_inquery_time
+
order by t.create_date desc
@@ -224,6 +252,7 @@
required_delivery_date,
baseline,
actuality_delivery_date,
+ pm_inquery_time,
comments,
remark,
create_date,
@@ -424,11 +453,11 @@
INSERT INTO plm_proofing_information_tracking
(id, site, project_id, project_part_id, proofing_id, proofing_no, proofing_status, project_phase, project_category,
tracker, engineer, priority_level, proofing_number, plan_start_date, required_delivery_date, baseline, actuality_delivery_date,
- comments, remark, create_date, create_by, update_date, update_by)
+ pm_inquery_time, comments, remark, create_date, create_by, update_date, update_by)
VALUES
(#{trackingId}, #{site}, #{projectId}, #{projectPartId}, #{proofingId}, #{proofingNo}, #{proofingStatus}, #{projectPhase}, #{projectCategory},
#{tracker}, #{engineer}, #{priorityLevel}, #{proofingNumber}, #{planStartDate,jdbcType=DATE}, #{requiredDeliveryDate,jdbcType=DATE}, #{baseline,jdbcType=DATE}, #{actualityDeliveryDate,jdbcType=DATE},
- #{comments}, #{remark}, GETDATE(), #{createBy}, GETDATE(), #{updateBy})
+ #{pmInqueryTime,jdbcType=DATE}, #{comments}, #{remark}, GETDATE(), #{createBy}, GETDATE(), #{updateBy})