diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/persistence/contract/PlatformContract.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/persistence/contract/PlatformContract.java index 7335495..7cf40f6 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/persistence/contract/PlatformContract.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/persistence/contract/PlatformContract.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import java.time.LocalDate; import java.time.OffsetDateTime; @TableName("platform_contract") @@ -25,6 +26,15 @@ public class PlatformContract { private String status; + @TableField("signing_date") + private LocalDate signingDate; + + @TableField("effective_date") + private LocalDate effectiveDate; + + @TableField("end_date") + private LocalDate endDate; + @TableField("created_at") private OffsetDateTime createdAt; @@ -79,6 +89,30 @@ public class PlatformContract { this.status = status; } + public LocalDate getSigningDate() { + return signingDate; + } + + public void setSigningDate(LocalDate signingDate) { + this.signingDate = signingDate; + } + + public LocalDate getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(LocalDate effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public LocalDate getEndDate() { + return endDate; + } + + public void setEndDate(LocalDate endDate) { + this.endDate = endDate; + } + public OffsetDateTime getCreatedAt() { return createdAt; } diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/service/ContractService.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/service/ContractService.java index a2dbab1..88c9f2b 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/service/ContractService.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/service/ContractService.java @@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.web.server.ResponseStatusException; +import java.time.LocalDate; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.util.LinkedHashMap; @@ -68,6 +69,9 @@ public class ContractService { c.setProjectId(request.getProjectId()); c.setTitle(blankToNull(request.getTitle())); c.setRemarks(blankToNull(request.getRemarks())); + if (request.getSigningDate() != null) c.setSigningDate(LocalDate.parse(request.getSigningDate())); + if (request.getEffectiveDate() != null) c.setEffectiveDate(LocalDate.parse(request.getEffectiveDate())); + if (request.getEndDate() != null) c.setEndDate(LocalDate.parse(request.getEndDate())); c.setStatus(ContractStatus.DRAFT.name()); c.setCreatedAt(now); c.setUpdatedAt(now); @@ -122,6 +126,9 @@ public class ContractService { if (request.getRemarks() != null) { c.setRemarks(blankToNull(request.getRemarks())); } + if (request.getSigningDate() != null) c.setSigningDate(LocalDate.parse(request.getSigningDate())); + if (request.getEffectiveDate() != null) c.setEffectiveDate(LocalDate.parse(request.getEffectiveDate())); + if (request.getEndDate() != null) c.setEndDate(LocalDate.parse(request.getEndDate())); c.setUpdatedAt(OffsetDateTime.now(ZoneOffset.UTC)); contractMapper.updateById(c); auditService.record( @@ -321,6 +328,9 @@ public class ContractService { m.put("projectId", c.getProjectId()); m.put("title", c.getTitle()); m.put("remarks", c.getRemarks()); + m.put("signingDate", c.getSigningDate()); + m.put("effectiveDate", c.getEffectiveDate()); + m.put("endDate", c.getEndDate()); m.put("status", c.getStatus()); return m; } @@ -354,6 +364,9 @@ public class ContractService { r.setTitle(c.getTitle()); r.setRemarks(c.getRemarks()); r.setStatus(c.getStatus()); + r.setSigningDate(c.getSigningDate() != null ? c.getSigningDate().toString() : null); + r.setEffectiveDate(c.getEffectiveDate() != null ? c.getEffectiveDate().toString() : null); + r.setEndDate(c.getEndDate() != null ? c.getEndDate().toString() : null); r.setCreatedAt(c.getCreatedAt()); r.setUpdatedAt(c.getUpdatedAt()); return r; diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractCreateRequest.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractCreateRequest.java index 11e584a..2df7e85 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractCreateRequest.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractCreateRequest.java @@ -15,6 +15,12 @@ public class ContractCreateRequest { @Size(max = 4000) private String remarks; + private String signingDate; + + private String effectiveDate; + + private String endDate; + public Long getCustomerId() { return customerId; } @@ -46,4 +52,28 @@ public class ContractCreateRequest { public void setRemarks(String remarks) { this.remarks = remarks; } + + public String getSigningDate() { + return signingDate; + } + + public void setSigningDate(String signingDate) { + this.signingDate = signingDate; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } } diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractResponse.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractResponse.java index e07cccd..59b5c28 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractResponse.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractResponse.java @@ -13,6 +13,9 @@ public class ContractResponse { private String title; private String remarks; private String status; + private String signingDate; + private String effectiveDate; + private String endDate; private OffsetDateTime createdAt; private OffsetDateTime updatedAt; /** 仅详情接口填充;列表分页省略该字段。 */ @@ -67,6 +70,30 @@ public class ContractResponse { this.status = status; } + public String getSigningDate() { + return signingDate; + } + + public void setSigningDate(String signingDate) { + this.signingDate = signingDate; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + public OffsetDateTime getCreatedAt() { return createdAt; } diff --git a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractUpdateRequest.java b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractUpdateRequest.java index aa347b9..0f0e544 100644 --- a/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractUpdateRequest.java +++ b/services/delivery-platform-api/src/main/java/cn/craftlabs/platform/api/web/dto/ContractUpdateRequest.java @@ -10,6 +10,12 @@ public class ContractUpdateRequest { @Size(max = 4000) private String remarks; + private String signingDate; + + private String effectiveDate; + + private String endDate; + public String getTitle() { return title; } @@ -25,4 +31,28 @@ public class ContractUpdateRequest { public void setRemarks(String remarks) { this.remarks = remarks; } + + public String getSigningDate() { + return signingDate; + } + + public void setSigningDate(String signingDate) { + this.signingDate = signingDate; + } + + public String getEffectiveDate() { + return effectiveDate; + } + + public void setEffectiveDate(String effectiveDate) { + this.effectiveDate = effectiveDate; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } } diff --git a/services/delivery-platform-api/src/main/resources/db/migration/V18__contract_date_fields.sql b/services/delivery-platform-api/src/main/resources/db/migration/V18__contract_date_fields.sql new file mode 100644 index 0000000..f56428b --- /dev/null +++ b/services/delivery-platform-api/src/main/resources/db/migration/V18__contract_date_fields.sql @@ -0,0 +1,4 @@ +ALTER TABLE platform_contract + ADD COLUMN signing_date DATE, + ADD COLUMN effective_date DATE, + ADD COLUMN end_date DATE; diff --git a/web/delivery-platform-ui/src/views/ContractDetailView.vue b/web/delivery-platform-ui/src/views/ContractDetailView.vue index 1510c98..06ff4d4 100644 --- a/web/delivery-platform-ui/src/views/ContractDetailView.vue +++ b/web/delivery-platform-ui/src/views/ContractDetailView.vue @@ -10,7 +10,7 @@
- 保存 + 保存
@@ -39,6 +39,7 @@
状态操作: 合同明细
- 添加明细 + 添加明细
@@ -60,8 +61,8 @@ @@ -75,7 +76,7 @@ :on-change="handleFileChange" :accept="'.pdf,.doc,.docx,.xls,.xlsx,.zip'" > - 上传附件 + 上传附件 diff --git a/web/delivery-platform-ui/src/views/ContractWizardView.vue b/web/delivery-platform-ui/src/views/ContractWizardView.vue index 6767fb3..096c8df 100644 --- a/web/delivery-platform-ui/src/views/ContractWizardView.vue +++ b/web/delivery-platform-ui/src/views/ContractWizardView.vue @@ -108,7 +108,7 @@