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})