From c6040880b0da8834dbcb92d6def7d4dd0cd6c40e Mon Sep 17 00:00:00 2001
From: cuida <xiaocuijustsoso@163.com>
Date: 星期三, 29 四月 2026 16:57:50 +0800
Subject: [PATCH] feat:合同,合同标的物,收款基础代码

---
 platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java                                 |    1 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractPaymentScheduleService.java          |    8 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java   |   16 +
 platformx-business-finance-biz/src/main/resources/mapper/ContractSubjectMatterMapper.xml                                          |   40 ++++
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractSubjectMatterMapper.java              |   11 +
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractPaymentScheduleController.java    |  119 +++++++++++++
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java      |  119 +++++++++++++
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java            |    8 
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractPaymentScheduleMapper.java            |   11 +
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleServiceImpl.java |   16 +
 platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java                   |  117 +++++++++++-
 platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml                                        |   31 +++
 12 files changed, 485 insertions(+), 12 deletions(-)

diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
index 0b27ee2..3b77c3a 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
@@ -111,7 +111,6 @@
      */
     @Transient
     @TableField(exist = false)
-    @Schema(description = "瀹℃壒浜哄鍚嶏紙涓存椂瀛楁锛�")
     private String approverName;
 
     /**
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
index dc4df91..ecef49e 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
@@ -1,24 +1,119 @@
 package com.by4cloud.platformx.business.controller;
 
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.business.entity.Contract;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
 import com.by4cloud.platformx.business.service.ContractService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
 import org.springframework.http.HttpHeaders;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
- * @author cd
- * @description
- * @date 2026/4/29 14:05
- **/
+ * 鍚堝悓绠$悊
+ *
+ * @author platformx
+ * @date 2026-04-29 16:46:26
+ */
 @RestController
 @RequiredArgsConstructor
 @RequestMapping("/contract" )
-@Tag(description = "contract" , name = "鍚堝悓琛ㄧ鐞�" )
+@Tag(description = "contract" , name = "鍚堝悓绠$悊绠$悊" )
 @SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
 public class ContractController {
 
-    private final ContractService contractService;
-}
+    private final  ContractService contractService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param contract 鍚堝悓绠$悊
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('business_contract_view')" )
+    public R getContractPage(@ParameterObject Page page, @ParameterObject Contract contract) {
+        LambdaQueryWrapper<Contract> wrapper = Wrappers.lambdaQuery();
+        return R.ok(contractService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ鍚堝悓绠$悊
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('business_contract_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(contractService.getById(id));
+    }
+
+    /**
+     * 鏂板鍚堝悓绠$悊
+     * @param contract 鍚堝悓绠$悊
+     * @return R
+     */
+    @Operation(summary = "鏂板鍚堝悓绠$悊" , description = "鏂板鍚堝悓绠$悊" )
+    @SysLog("鏂板鍚堝悓绠$悊" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('business_contract_add')" )
+    public R save(@RequestBody Contract contract) {
+        return R.ok(contractService.save(contract));
+    }
+
+    /**
+     * 淇敼鍚堝悓绠$悊
+     * @param contract 鍚堝悓绠$悊
+     * @return R
+     */
+    @Operation(summary = "淇敼鍚堝悓绠$悊" , description = "淇敼鍚堝悓绠$悊" )
+    @SysLog("淇敼鍚堝悓绠$悊" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('business_contract_edit')" )
+    public R updateById(@RequestBody Contract contract) {
+        return R.ok(contractService.updateById(contract));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎鍚堝悓绠$悊
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎鍚堝悓绠$悊" , description = "閫氳繃id鍒犻櫎鍚堝悓绠$悊" )
+    @SysLog("閫氳繃id鍒犻櫎鍚堝悓绠$悊" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('business_contract_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(contractService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param contract 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('business_contract_export')" )
+    public List<Contract> export(Contract contract,Long[] ids) {
+        return contractService.list(Wrappers.lambdaQuery(contract).in(ArrayUtil.isNotEmpty(ids), Contract::getId, ids));
+    }
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractPaymentScheduleController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractPaymentScheduleController.java
new file mode 100644
index 0000000..3d5c547
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractPaymentScheduleController.java
@@ -0,0 +1,119 @@
+package com.by4cloud.platformx.business.controller;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.business.entity.ContractPaymentSchedule;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.business.service.ContractPaymentScheduleService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+ *
+ * @author platformx
+ * @date 2026-04-29 16:37:26
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/contractPaymentSchedule" )
+@Tag(description = "contractPaymentSchedule" , name = "鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛ㄧ鐞�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ContractPaymentScheduleController {
+
+    private final  ContractPaymentScheduleService contractPaymentScheduleService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param contractPaymentSchedule 鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('business_contractPaymentSchedule_view')" )
+    public R getContractPaymentSchedulePage(@ParameterObject Page page, @ParameterObject ContractPaymentSchedule contractPaymentSchedule) {
+        LambdaQueryWrapper<ContractPaymentSchedule> wrapper = Wrappers.lambdaQuery();
+        return R.ok(contractPaymentScheduleService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('business_contractPaymentSchedule_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(contractPaymentScheduleService.getById(id));
+    }
+
+    /**
+     * 鏂板鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+     * @param contractPaymentSchedule 鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+     * @return R
+     */
+    @Operation(summary = "鏂板鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" , description = "鏂板鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" )
+    @SysLog("鏂板鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('business_contractPaymentSchedule_add')" )
+    public R save(@RequestBody ContractPaymentSchedule contractPaymentSchedule) {
+        return R.ok(contractPaymentScheduleService.save(contractPaymentSchedule));
+    }
+
+    /**
+     * 淇敼鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+     * @param contractPaymentSchedule 鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+     * @return R
+     */
+    @Operation(summary = "淇敼鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" , description = "淇敼鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" )
+    @SysLog("淇敼鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('business_contractPaymentSchedule_edit')" )
+    public R updateById(@RequestBody ContractPaymentSchedule contractPaymentSchedule) {
+        return R.ok(contractPaymentScheduleService.updateById(contractPaymentSchedule));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" , description = "閫氳繃id鍒犻櫎鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" )
+    @SysLog("閫氳繃id鍒犻櫎鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('business_contractPaymentSchedule_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(contractPaymentScheduleService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param contractPaymentSchedule 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('business_contractPaymentSchedule_export')" )
+    public List<ContractPaymentSchedule> export(ContractPaymentSchedule contractPaymentSchedule,Long[] ids) {
+        return contractPaymentScheduleService.list(Wrappers.lambdaQuery(contractPaymentSchedule).in(ArrayUtil.isNotEmpty(ids), ContractPaymentSchedule::getId, ids));
+    }
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java
new file mode 100644
index 0000000..eee3ada
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java
@@ -0,0 +1,119 @@
+package com.by4cloud.platformx.business.controller;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.business.service.ContractSubjectMatterService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+ *
+ * @author platformx
+ * @date 2026-04-29 16:39:29
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/contractSubjectMatter" )
+@Tag(description = "contractSubjectMatter" , name = "鍚堝悓鏍囩殑鐗╂槑缁嗚〃绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ContractSubjectMatterController {
+
+    private final  ContractSubjectMatterService contractSubjectMatterService;
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param page 鍒嗛〉瀵硅薄
+     * @param contractSubjectMatter 鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+     * @return
+     */
+    @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+    @GetMapping("/page" )
+    @PreAuthorize("@pms.hasPermission('business_contractSubjectMatter_view')" )
+    public R getContractSubjectMatterPage(@ParameterObject Page page, @ParameterObject ContractSubjectMatter contractSubjectMatter) {
+        LambdaQueryWrapper<ContractSubjectMatter> wrapper = Wrappers.lambdaQuery();
+        return R.ok(contractSubjectMatterService.page(page, wrapper));
+    }
+
+
+    /**
+     * 閫氳繃id鏌ヨ鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+     * @param id id
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+    @GetMapping("/{id}" )
+    @PreAuthorize("@pms.hasPermission('business_contractSubjectMatter_view')" )
+    public R getById(@PathVariable("id" ) Long id) {
+        return R.ok(contractSubjectMatterService.getById(id));
+    }
+
+    /**
+     * 鏂板鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+     * @param contractSubjectMatter 鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+     * @return R
+     */
+    @Operation(summary = "鏂板鍚堝悓鏍囩殑鐗╂槑缁嗚〃" , description = "鏂板鍚堝悓鏍囩殑鐗╂槑缁嗚〃" )
+    @SysLog("鏂板鍚堝悓鏍囩殑鐗╂槑缁嗚〃" )
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('business_contractSubjectMatter_add')" )
+    public R save(@RequestBody ContractSubjectMatter contractSubjectMatter) {
+        return R.ok(contractSubjectMatterService.save(contractSubjectMatter));
+    }
+
+    /**
+     * 淇敼鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+     * @param contractSubjectMatter 鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+     * @return R
+     */
+    @Operation(summary = "淇敼鍚堝悓鏍囩殑鐗╂槑缁嗚〃" , description = "淇敼鍚堝悓鏍囩殑鐗╂槑缁嗚〃" )
+    @SysLog("淇敼鍚堝悓鏍囩殑鐗╂槑缁嗚〃" )
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('business_contractSubjectMatter_edit')" )
+    public R updateById(@RequestBody ContractSubjectMatter contractSubjectMatter) {
+        return R.ok(contractSubjectMatterService.updateById(contractSubjectMatter));
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+     * @param ids id鍒楄〃
+     * @return R
+     */
+    @Operation(summary = "閫氳繃id鍒犻櫎鍚堝悓鏍囩殑鐗╂槑缁嗚〃" , description = "閫氳繃id鍒犻櫎鍚堝悓鏍囩殑鐗╂槑缁嗚〃" )
+    @SysLog("閫氳繃id鍒犻櫎鍚堝悓鏍囩殑鐗╂槑缁嗚〃" )
+    @DeleteMapping
+    @PreAuthorize("@pms.hasPermission('business_contractSubjectMatter_del')" )
+    public R removeById(@RequestBody Long[] ids) {
+        return R.ok(contractSubjectMatterService.removeBatchByIds(CollUtil.toList(ids)));
+    }
+
+
+    /**
+     * 瀵煎嚭excel 琛ㄦ牸
+     * @param contractSubjectMatter 鏌ヨ鏉′欢
+   	 * @param ids 瀵煎嚭鎸囧畾ID
+     * @return excel 鏂囦欢娴�
+     */
+    @ResponseExcel
+    @GetMapping("/export")
+    @PreAuthorize("@pms.hasPermission('business_contractSubjectMatter_export')" )
+    public List<ContractSubjectMatter> export(ContractSubjectMatter contractSubjectMatter,Long[] ids) {
+        return contractSubjectMatterService.list(Wrappers.lambdaQuery(contractSubjectMatter).in(ArrayUtil.isNotEmpty(ids), ContractSubjectMatter::getId, ids));
+    }
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractPaymentScheduleMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractPaymentScheduleMapper.java
new file mode 100644
index 0000000..4d4e8e8
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractPaymentScheduleMapper.java
@@ -0,0 +1,11 @@
+package com.by4cloud.platformx.business.mapper;
+
+import com.by4cloud.platformx.business.entity.ContractPaymentSchedule;
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ContractPaymentScheduleMapper extends PlatformxBaseMapper<ContractPaymentSchedule> {
+
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractSubjectMatterMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractSubjectMatterMapper.java
new file mode 100644
index 0000000..2902ba0
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractSubjectMatterMapper.java
@@ -0,0 +1,11 @@
+package com.by4cloud.platformx.business.mapper;
+
+import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ContractSubjectMatterMapper extends PlatformxBaseMapper<ContractSubjectMatter> {
+
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractPaymentScheduleService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractPaymentScheduleService.java
new file mode 100644
index 0000000..ed60b7e
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractPaymentScheduleService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.business.entity.ContractPaymentSchedule;
+
+public interface ContractPaymentScheduleService extends IService<ContractPaymentSchedule> {
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java
new file mode 100644
index 0000000..2e7709a
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
+
+public interface ContractSubjectMatterService extends IService<ContractSubjectMatter> {
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleServiceImpl.java
new file mode 100644
index 0000000..f237c1b
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleServiceImpl.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.business.entity.ContractPaymentSchedule;
+import com.by4cloud.platformx.business.mapper.ContractPaymentScheduleMapper;
+import com.by4cloud.platformx.business.service.ContractPaymentScheduleService;
+import org.springframework.stereotype.Service;
+/**
+ * 鍚堝悓鏀舵璁″垝/灞ョ害鑺傜偣琛�
+ *
+ * @author platformx
+ * @date 2026-04-29 16:37:26
+ */
+@Service
+public class ContractPaymentScheduleServiceImpl extends ServiceImpl<ContractPaymentScheduleMapper, ContractPaymentSchedule> implements ContractPaymentScheduleService {
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java
new file mode 100644
index 0000000..43c9c85
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
+import com.by4cloud.platformx.business.mapper.ContractSubjectMatterMapper;
+import com.by4cloud.platformx.business.service.ContractSubjectMatterService;
+import org.springframework.stereotype.Service;
+/**
+ * 鍚堝悓鏍囩殑鐗╂槑缁嗚〃
+ *
+ * @author platformx
+ * @date 2026-04-29 16:39:29
+ */
+@Service
+public class ContractSubjectMatterServiceImpl extends ServiceImpl<ContractSubjectMatterMapper, ContractSubjectMatter> implements ContractSubjectMatterService {
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml
new file mode 100644
index 0000000..64c9b87
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractPaymentScheduleMapper.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.by4cloud.platformx.business.mapper.ContractPaymentScheduleMapper">
+
+  <resultMap id="contractPaymentScheduleMap" type="com.by4cloud.platformx.business.entity.ContractPaymentSchedule">
+        <id property="id" column="id"/>
+        <result property="compId" column="comp_id"/>
+        <result property="actualAmount" column="actual_amount"/>
+        <result property="agreedDays" column="agreed_days"/>
+        <result property="calculationBasis" column="calculation_basis"/>
+        <result property="contractId" column="contract_id"/>
+        <result property="contractName" column="contract_name"/>
+        <result property="effectiveDate" column="effective_date"/>
+        <result property="fulfillmentStatus" column="fulfillment_status"/>
+        <result property="paymentRatio" column="payment_ratio"/>
+        <result property="paymentStatus" column="payment_status"/>
+        <result property="plannedAmount" column="planned_amount"/>
+        <result property="plannedPaymentDate" column="planned_payment_date"/>
+        <result property="remark" column="remark"/>
+        <result property="stageName" column="stage_name"/>
+        <result property="stageOrder" column="stage_order"/>
+        <result property="subjectMatterId" column="subject_matter_id"/>
+        <result property="subjectMatterName" column="subject_matter_name"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="delFlag" column="del_flag"/>
+  </resultMap>
+</mapper>
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractSubjectMatterMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractSubjectMatterMapper.xml
new file mode 100644
index 0000000..b0a7b2e
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractSubjectMatterMapper.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.by4cloud.platformx.business.mapper.ContractSubjectMatterMapper">
+
+  <resultMap id="contractSubjectMatterMap" type="com.by4cloud.platformx.business.entity.ContractSubjectMatter">
+        <id property="id" column="id"/>
+        <result property="compId" column="comp_id"/>
+        <result property="acceptTime" column="accept_time"/>
+        <result property="actualDeliveryDate" column="actual_delivery_date"/>
+        <result property="attachmentUrl" column="attachment_url"/>
+        <result property="brand" column="brand"/>
+        <result property="category" column="category"/>
+        <result property="contractId" column="contract_id"/>
+        <result property="contractName" column="contract_name"/>
+        <result property="deliveryPlace" column="delivery_place"/>
+        <result property="deliveryStatus" column="delivery_status"/>
+        <result property="description" column="description"/>
+        <result property="isAccepted" column="is_accepted"/>
+        <result property="materialCode" column="material_code"/>
+        <result property="materialInternalName" column="material_internal_name"/>
+        <result property="materialName" column="material_name"/>
+        <result property="plannedDeliveryDate" column="planned_delivery_date"/>
+        <result property="quantity" column="quantity"/>
+        <result property="sortOrder" column="sort_order"/>
+        <result property="specification" column="specification"/>
+        <result property="taxAmount" column="tax_amount"/>
+        <result property="taxRate" column="tax_rate"/>
+        <result property="totalAmount" column="total_amount"/>
+        <result property="totalAmountExcludingTax" column="total_amount_excluding_tax"/>
+        <result property="unit" column="unit"/>
+        <result property="unitPrice" column="unit_price"/>
+        <result property="warrantyPeriod" column="warranty_period"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="delFlag" column="del_flag"/>
+  </resultMap>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.1