From fad1ab81b55c7f4adea674ae617fb7db46ba8239 Mon Sep 17 00:00:00 2001 From: pve-win10 Date: Mon, 21 Jul 2025 21:20:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=90=8C=E6=A8=A1=E5=9D=97=EF=BC=8C?= =?UTF-8?q?=E7=BC=BA=E5=86=85=E5=AE=B9=EF=BC=8C=E5=85=88=E4=B8=8A=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../znpt/domain/entity/ContractEntity.java | 110 ++++++++++++++++++ .../entity/ContractSettlementEntity.java | 105 +++++++++++++++++ .../znpt/domain/vo/ContractImportReq.java | 77 ++++++++++++ .../dite/znpt/domain/vo/ContractListReq.java | 76 ++++++++++++ .../com/dite/znpt/domain/vo/ContractReq.java | 80 +++++++++++++ .../com/dite/znpt/domain/vo/ContractResp.java | 39 +++++++ .../vo/ContractSettlementImportReq.java | 74 ++++++++++++ .../domain/vo/ContractSettlementListReq.java | 73 ++++++++++++ .../znpt/domain/vo/ContractSettlementReq.java | 79 +++++++++++++ .../domain/vo/ContractSettlementResp.java | 20 ++++ .../com/dite/znpt/mapper/ContractMapper.java | 19 +++ .../znpt/mapper/ContractSettlementMapper.java | 19 +++ .../dite/znpt/service/ContractService.java | 65 +++++++++++ .../service/ContractSettlementService.java | 47 ++++++++ .../service/impl/ContractServiceImpl.java | 103 ++++++++++++++++ .../impl/ContractSettlementServiceImpl.java | 76 ++++++++++++ .../main/resources/mapper/ContractMapper.xml | 74 ++++++++++++ .../mapper/ContractSettlementMapper.xml | 69 +++++++++++ .../web/controller/ContractController.java | 85 ++++++++++++++ .../ContractSettlementController.java | 42 +++++++ 20 files changed, 1332 insertions(+) create mode 100644 core/src/main/java/com/dite/znpt/domain/entity/ContractEntity.java create mode 100644 core/src/main/java/com/dite/znpt/domain/entity/ContractSettlementEntity.java create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ContractImportReq.java create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ContractListReq.java create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ContractReq.java create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ContractResp.java create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementImportReq.java create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementListReq.java create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementReq.java create mode 100644 core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementResp.java create mode 100644 core/src/main/java/com/dite/znpt/mapper/ContractMapper.java create mode 100644 core/src/main/java/com/dite/znpt/mapper/ContractSettlementMapper.java create mode 100644 core/src/main/java/com/dite/znpt/service/ContractService.java create mode 100644 core/src/main/java/com/dite/znpt/service/ContractSettlementService.java create mode 100644 core/src/main/java/com/dite/znpt/service/impl/ContractServiceImpl.java create mode 100644 core/src/main/java/com/dite/znpt/service/impl/ContractSettlementServiceImpl.java create mode 100644 core/src/main/resources/mapper/ContractMapper.xml create mode 100644 core/src/main/resources/mapper/ContractSettlementMapper.xml create mode 100644 web/src/main/java/com/dite/znpt/web/controller/ContractController.java create mode 100644 web/src/main/java/com/dite/znpt/web/controller/ContractSettlementController.java diff --git a/core/src/main/java/com/dite/znpt/domain/entity/ContractEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/ContractEntity.java new file mode 100644 index 0000000..3f1627d --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/entity/ContractEntity.java @@ -0,0 +1,110 @@ +package com.dite.znpt.domain.entity; + +import java.math.BigDecimal; +import java.util.Date; +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import com.dite.znpt.domain.AuditableEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * @author huise23 + * @date 2025/07/21 21:13 + * @Description: 合同表实体类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("contract") +@ApiModel(value="ContractEntity对象", description="合同表") +public class ContractEntity extends AuditableEntity implements Serializable { + + @Serial + private static final long serialVersionUID = 782007452634989148L; + + @ExcelProperty("合同id") + @ApiModelProperty("合同id") + @TableId(value = "contract_id", type = IdType.ASSIGN_ID) + private String contractId; + + @ExcelProperty("客户名称") + @ApiModelProperty("客户名称") + @TableField("customer") + private String customer; + + @ExcelProperty("合同编号") + @ApiModelProperty("合同编号") + @TableField("code") + private String code; + + @ExcelProperty("项目id") + @ApiModelProperty("项目id") + @TableField("project_id") + private String projectId; + + @ExcelProperty("业务员id") + @ApiModelProperty("业务员id") + @TableField("salesperson_id") + private String salespersonId; + + @ExcelProperty("部门id") + @ApiModelProperty("部门id") + @TableField("department_id") + private String departmentId; + + @ExcelProperty("签订日期") + @ApiModelProperty("签订日期") + @TableField("sign_date") + private Date signDate; + + @ExcelProperty("期限") + @ApiModelProperty("期限") + @TableField("duration") + private String duration; + + @ExcelProperty("类型") + @ApiModelProperty("类型") + @TableField("type") + private String type; + + @ExcelProperty("产品或服务") + @ApiModelProperty("产品或服务") + @TableField("product_service") + private String productService; + + @ExcelProperty("付款日期/交付日期") + @ApiModelProperty("付款日期/交付日期") + @TableField("payment_date") + private Date paymentDate; + + @ExcelProperty("付款地址/交付地址") + @ApiModelProperty("付款地址/交付地址") + @TableField("payment_address") + private String paymentAddress; + + @ExcelProperty("金额") + @ApiModelProperty("金额") + @TableField("amount") + private BigDecimal amount; + + @ExcelProperty("收款账号") + @ApiModelProperty("收款账号") + @TableField("account_number") + private String accountNumber; + + @ExcelProperty("备注") + @ApiModelProperty("备注") + @TableField("notes") + private String notes; + + @ExcelProperty("合同状态") + @ApiModelProperty("合同状态") + @TableField("contract_status") + private String contractStatus; +} + diff --git a/core/src/main/java/com/dite/znpt/domain/entity/ContractSettlementEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/ContractSettlementEntity.java new file mode 100644 index 0000000..bd93291 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/entity/ContractSettlementEntity.java @@ -0,0 +1,105 @@ +package com.dite.znpt.domain.entity; + +import java.math.BigDecimal; +import java.util.Date; +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import com.dite.znpt.domain.AuditableEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * @author huise23 + * @date 2025/07/21 21:13 + * @Description: 合同结算表实体类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("contract_settlement") +@ApiModel(value="ContractSettlementEntity对象", description="合同结算表") +public class ContractSettlementEntity extends AuditableEntity implements Serializable { + + @Serial + private static final long serialVersionUID = -59751771276704650L; + + @ExcelProperty("合同结算id") + @ApiModelProperty("合同结算id") + @TableId(value = "settlement_id", type = IdType.ASSIGN_ID) + private String settlementId; + + @ExcelProperty("合同id") + @ApiModelProperty("合同id") + @TableField("contract_id") + private String contractId; + + @ExcelProperty("客户/供应商名称") + @ApiModelProperty("客户/供应商名称") + @TableField("customer") + private String customer; + + @ExcelProperty("合同结算编号") + @ApiModelProperty("合同结算编号") + @TableField("code") + private String code; + + @ExcelProperty("项目id") + @ApiModelProperty("项目id") + @TableField("project_id") + private String projectId; + + @ExcelProperty("业务员id") + @ApiModelProperty("业务员id") + @TableField("salesperson_id") + private String salespersonId; + + @ExcelProperty("部门id") + @ApiModelProperty("部门id") + @TableField("department_id") + private String departmentId; + + @ExcelProperty("账期") + @ApiModelProperty("账期") + @TableField("payment_period") + private Date paymentPeriod; + + @ExcelProperty("日期") + @ApiModelProperty("日期") + @TableField("payment_date") + private Date paymentDate; + + @ExcelProperty("期限") + @ApiModelProperty("期限") + @TableField("duration") + private String duration; + + @ExcelProperty("产品或服务") + @ApiModelProperty("产品或服务") + @TableField("product_service") + private String productService; + + @ExcelProperty("金额") + @ApiModelProperty("金额") + @TableField("amount") + private BigDecimal amount; + + @ExcelProperty("收款账号") + @ApiModelProperty("收款账号") + @TableField("account_number") + private String accountNumber; + + @ExcelProperty("备注") + @ApiModelProperty("备注") + @TableField("notes") + private String notes; + + @ExcelProperty("合同结算状态") + @ApiModelProperty("合同结算状态") + @TableField("settlement_status") + private String settlementStatus; +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ContractImportReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ContractImportReq.java new file mode 100644 index 0000000..e24ee4f --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ContractImportReq.java @@ -0,0 +1,77 @@ +package com.dite.znpt.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.alibaba.excel.annotation.ExcelProperty; + +import com.dite.znpt.util.ValidationGroup; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +/** + * @author huise23 + * @date 2025/07/21 21:13 + * @Description: 合同表导入请求类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="Contract导入请求对象", description="合同表") +public class ContractImportReq implements Serializable { + + @Serial + private static final long serialVersionUID = 416194686656143643L; + + + @ExcelProperty(value = "客户名称") + private String customer; + + @ExcelProperty(value = "合同编号") + private String code; + + @ExcelProperty(value = "项目名称") + private String projectName; + + @ExcelProperty(value = "业务员名称") + private String salespersonName; + + @ExcelProperty(value = "部门名称") + private String departmentName; + + @ExcelProperty(value = "签订日期") + private Date signDate; + + @ExcelProperty(value = "期限") + private String duration; + + @ExcelProperty(value = "类型") + private String type; + + @ExcelProperty(value = "产品或服务") + private String productService; + + @ExcelProperty(value = "付款日期/交付日期") + private Date paymentDate; + + @ExcelProperty(value = "付款地址/交付地址") + private String paymentAddress; + + @ExcelProperty(value = "金额") + private BigDecimal amount; + + @ExcelProperty(value = "收款账号") + private String accountNumber; + + @ExcelProperty(value = "备注") + private String notes; + + @ExcelProperty(value = "合同状态") + private String contractStatus; +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ContractListReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ContractListReq.java new file mode 100644 index 0000000..9eb3e7a --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ContractListReq.java @@ -0,0 +1,76 @@ +package com.dite.znpt.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import java.io.Serial; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author huise23 + * @date 2025/07/21 21:13 + * @Description: 合同请求实体 + */ +@Data +@ApiModel("合同列表请求实体") +public class ContractListReq implements Serializable { + + @Serial + private static final long serialVersionUID = 188906332887614727L; + + @ApiModelProperty("查询关键字") + private String keyword; + + @ApiModelProperty("合同Id") + private String contractId; + + @ApiModelProperty("客户名称") + private String customer; + + @ApiModelProperty("合同编号") + private String code; + + @ApiModelProperty("项目id") + private String projectId; + + @ApiModelProperty("业务员id") + private String salespersonId; + + @ApiModelProperty("部门id") + private String departmentId; + + @ApiModelProperty("签订日期") + private Date signDate; + + @ApiModelProperty("期限") + private String duration; + + @ApiModelProperty("类型") + private String type; + + @ApiModelProperty("产品或服务") + private String productService; + + @ApiModelProperty("付款日期/交付日期") + private Date paymentDate; + + @ApiModelProperty("付款地址/交付地址") + private String paymentAddress; + + @ApiModelProperty("金额") + private BigDecimal amount; + + @ApiModelProperty("收款账号") + private String accountNumber; + + @ApiModelProperty("备注") + private String notes; + + @ApiModelProperty("合同状态") + private String contractStatus; + +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ContractReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ContractReq.java new file mode 100644 index 0000000..ace5f90 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ContractReq.java @@ -0,0 +1,80 @@ +package com.dite.znpt.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.alibaba.excel.annotation.ExcelProperty; + +import com.dite.znpt.util.ValidationGroup; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +/** + * @author huise23 + * @date 2025/07/21 21:13 + * @Description: 合同表请求类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="Contract请求对象", description="合同表") +public class ContractReq implements Serializable { + + @Serial + private static final long serialVersionUID = -42338861509205617L; + + @ApiModelProperty("合同id") + private String contractId; + + @ApiModelProperty("客户名称") + private String customer; + + @ApiModelProperty("合同编号") + private String code; + + @ApiModelProperty("项目id") + private String projectId; + + @ApiModelProperty("业务员id") + private String salespersonId; + + @ApiModelProperty("部门id") + private String departmentId; + + @ApiModelProperty("签订日期") + private Date signDate; + + @ApiModelProperty("期限") + private String duration; + + @ApiModelProperty("类型") + private String type; + + @ApiModelProperty("产品或服务") + private String productService; + + @ApiModelProperty("付款日期/交付日期") + private Date paymentDate; + + @ApiModelProperty("付款地址/交付地址") + private String paymentAddress; + + @ApiModelProperty("金额") + private BigDecimal amount; + + @ApiModelProperty("收款账号") + private String accountNumber; + + @ApiModelProperty("备注") + private String notes; + + @ApiModelProperty("合同状态") + private String contractStatus; +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ContractResp.java b/core/src/main/java/com/dite/znpt/domain/vo/ContractResp.java new file mode 100644 index 0000000..f21e2ca --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ContractResp.java @@ -0,0 +1,39 @@ +package com.dite.znpt.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.dite.znpt.domain.entity.ContractEntity; + +/** + * @author huise23 + * @date 2025/07/21 20:29 + * @Description: 合同响应实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("合同响应实体") +public class ContractResp extends ContractEntity { + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("业务员姓名") + private String salespersonName; + + @ApiModelProperty("部门名称") + private String salespersonDeptName; + + @ApiModelProperty("已结算金额") + private BigDecimal settlementAmount; + + @ApiModelProperty("已收款金额") + private BigDecimal receivedAmount; +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementImportReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementImportReq.java new file mode 100644 index 0000000..6c51ead --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementImportReq.java @@ -0,0 +1,74 @@ +package com.dite.znpt.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.alibaba.excel.annotation.ExcelProperty; + +import com.dite.znpt.util.ValidationGroup; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +/** + * @author huise23 + * @date 2025/07/21 21:13 + * @Description: 合同结算表导入请求类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ContractSettlement导入请求对象", description="合同结算表") +public class ContractSettlementImportReq implements Serializable { + + @Serial + private static final long serialVersionUID = 148613402074177824L; + + + @ExcelProperty(value = "合同名称(不能为空,长度32以内)") + private String contractName; + + @ExcelProperty(value = "客户/供应商名称") + private String customer; + + @ExcelProperty(value = "合同结算编号") + private String code; + + @ExcelProperty(value = "项目名称") + private String projectName; + + @ExcelProperty(value = "业务员名称") + private String salespersonName; + + @ExcelProperty(value = "部门名称") + private String departmentName; + + @ExcelProperty(value = "账期") + private Date paymentPeriod; + + @ExcelProperty(value = "日期") + private Date paymentDate; + + @ExcelProperty(value = "期限") + private String duration; + + @ExcelProperty(value = "产品或服务") + private String productService; + + @ExcelProperty(value = "金额") + private BigDecimal amount; + + @ExcelProperty(value = "收款账号") + private String accountNumber; + + @ExcelProperty(value = "备注") + private String notes; + + @ExcelProperty(value = "合同结算状态") + private String settlementStatus; +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementListReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementListReq.java new file mode 100644 index 0000000..063b96d --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementListReq.java @@ -0,0 +1,73 @@ +package com.dite.znpt.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import java.io.Serial; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author huise23 + * @date 2025/07/21 21:13 + * @Description: 合同结算请求实体 + */ +@Data +@ApiModel("合同结算列表请求实体") +public class ContractSettlementListReq implements Serializable { + + @Serial + private static final long serialVersionUID = -36243842073737072L; + + @ApiModelProperty("查询关键字") + private String keyword; + + @ApiModelProperty("合同结算Id") + private String settlementId; + + @ApiModelProperty("合同id") + private String contractId; + + @ApiModelProperty("客户/供应商名称") + private String customer; + + @ApiModelProperty("合同结算编号") + private String code; + + @ApiModelProperty("项目id") + private String projectId; + + @ApiModelProperty("业务员id") + private String salespersonId; + + @ApiModelProperty("部门id") + private String departmentId; + + @ApiModelProperty("账期") + private Date paymentPeriod; + + @ApiModelProperty("日期") + private Date paymentDate; + + @ApiModelProperty("期限") + private String duration; + + @ApiModelProperty("产品或服务") + private String productService; + + @ApiModelProperty("金额") + private BigDecimal amount; + + @ApiModelProperty("收款账号") + private String accountNumber; + + @ApiModelProperty("备注") + private String notes; + + @ApiModelProperty("合同结算状态") + private String settlementStatus; + +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementReq.java b/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementReq.java new file mode 100644 index 0000000..440482a --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementReq.java @@ -0,0 +1,79 @@ +package com.dite.znpt.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import java.io.Serial; +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.alibaba.excel.annotation.ExcelProperty; + +import com.dite.znpt.util.ValidationGroup; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +/** + * @author huise23 + * @date 2025/07/21 21:13 + * @Description: 合同结算表请求类 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ContractSettlement请求对象", description="合同结算表") +public class ContractSettlementReq implements Serializable { + + @Serial + private static final long serialVersionUID = -44768849127704946L; + + @ApiModelProperty("合同结算id") + private String settlementId; + + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "合同id不能为空") + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 32, message = "合同id长度不能超过32字符") + @ApiModelProperty("合同id") + private String contractId; + + @ApiModelProperty("客户/供应商名称") + private String customer; + + @ApiModelProperty("合同结算编号") + private String code; + + @ApiModelProperty("项目id") + private String projectId; + + @ApiModelProperty("业务员id") + private String salespersonId; + + @ApiModelProperty("部门id") + private String departmentId; + + @ApiModelProperty("账期") + private Date paymentPeriod; + + @ApiModelProperty("日期") + private Date paymentDate; + + @ApiModelProperty("期限") + private String duration; + + @ApiModelProperty("产品或服务") + private String productService; + + @ApiModelProperty("金额") + private BigDecimal amount; + + @ApiModelProperty("收款账号") + private String accountNumber; + + @ApiModelProperty("备注") + private String notes; + + @ApiModelProperty("合同结算状态") + private String settlementStatus; +} + diff --git a/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementResp.java b/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementResp.java new file mode 100644 index 0000000..fbd1f36 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/ContractSettlementResp.java @@ -0,0 +1,20 @@ +package com.dite.znpt.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.dite.znpt.domain.entity.ContractSettlementEntity; + +/** + * @author huise23 + * @date 2025/07/21 21:10 + * @Description: 合同结算响应实体 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("合同结算响应实体") +public class ContractSettlementResp extends ContractSettlementEntity { +} + diff --git a/core/src/main/java/com/dite/znpt/mapper/ContractMapper.java b/core/src/main/java/com/dite/znpt/mapper/ContractMapper.java new file mode 100644 index 0000000..dd7e123 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/mapper/ContractMapper.java @@ -0,0 +1,19 @@ +package com.dite.znpt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dite.znpt.domain.entity.ContractEntity; +import com.dite.znpt.domain.vo.ContractListReq; +import com.dite.znpt.domain.vo.ContractResp; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/21 20:29 + * @Description: 合同表数据库访问层 + */ +public interface ContractMapper extends BaseMapper { + List queryBySelective(ContractListReq contractReq); +} + diff --git a/core/src/main/java/com/dite/znpt/mapper/ContractSettlementMapper.java b/core/src/main/java/com/dite/znpt/mapper/ContractSettlementMapper.java new file mode 100644 index 0000000..d114d52 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/mapper/ContractSettlementMapper.java @@ -0,0 +1,19 @@ +package com.dite.znpt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dite.znpt.domain.entity.ContractSettlementEntity; +import com.dite.znpt.domain.vo.ContractSettlementListReq; +import com.dite.znpt.domain.vo.ContractSettlementResp; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/21 21:10 + * @Description: 合同结算表数据库访问层 + */ +public interface ContractSettlementMapper extends BaseMapper { + List queryBySelective(ContractSettlementListReq contractSettlementReq); +} + diff --git a/core/src/main/java/com/dite/znpt/service/ContractService.java b/core/src/main/java/com/dite/znpt/service/ContractService.java new file mode 100644 index 0000000..25c5464 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/ContractService.java @@ -0,0 +1,65 @@ +package com.dite.znpt.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dite.znpt.domain.entity.ContractEntity; +import com.dite.znpt.domain.vo.ContractListReq; +import com.dite.znpt.domain.vo.ContractResp; +import com.dite.znpt.domain.vo.ContractReq; + +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/21 20:29 + * @Description: 合同表服务接口 + */ +public interface ContractService extends IService { + + /** + * 功能描述:查询合同列表 + * + * @param contractReq 合同 + * @return {@link List }<{@link ContractResp }> + * @author huise23 + * @date 2025/07/21 20:29 + **/ + List selectList(ContractListReq contractReq); + + /** + * 功能描述:查询单条合同 + * + * @param contractId 合同Id + * @return {@link ContractResp } + * @author huise23 + * @date 2025/07/21 20:29 + **/ + ContractResp selectById(String contractId); + + /** + * 功能描述:新增合同 + * + * @param contractReq 合同 + * @author huise23 + * @date 2025/07/21 20:29 + **/ + void saveData(ContractReq contractReq); + + /** + * 功能描述:更新合同 + * + * @param contractReq 合同 + * @author huise23 + * @date 2025/07/21 20:29 + **/ + void updateData(ContractReq contractReq); + + /** + * 功能描述:删除合同 + * + * @param contractId 合同Id + * @author huise23 + * @date 2025/07/21 20:29 + **/ + void deleteById(String contractId); +} + diff --git a/core/src/main/java/com/dite/znpt/service/ContractSettlementService.java b/core/src/main/java/com/dite/znpt/service/ContractSettlementService.java new file mode 100644 index 0000000..80fd55c --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/ContractSettlementService.java @@ -0,0 +1,47 @@ +package com.dite.znpt.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dite.znpt.domain.entity.ContractSettlementEntity; +import com.dite.znpt.domain.vo.ContractSettlementListReq; +import com.dite.znpt.domain.vo.ContractSettlementResp; +import com.dite.znpt.domain.vo.ContractSettlementReq; + +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/21 21:10 + * @Description: 合同结算表服务接口 + */ +public interface ContractSettlementService extends IService { + + /** + * 功能描述:查询合同结算列表 + * + * @param contractSettlementReq 合同结算 + * @return {@link List }<{@link ContractSettlementResp }> + * @author huise23 + * @date 2025/07/21 21:10 + **/ + List selectList(ContractSettlementListReq contractSettlementReq); + + /** + * 功能描述:查询单条合同结算 + * + * @param settlementId 合同结算Id + * @return {@link ContractSettlementResp } + * @author huise23 + * @date 2025/07/21 21:10 + **/ + ContractSettlementResp selectById(String settlementId); + + /** + * 功能描述:新增合同结算 + * + * @param contractSettlementReq 合同结算 + * @author huise23 + * @date 2025/07/21 21:10 + **/ + void saveData(ContractSettlementReq contractSettlementReq); +} + diff --git a/core/src/main/java/com/dite/znpt/service/impl/ContractServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/ContractServiceImpl.java new file mode 100644 index 0000000..2f830c9 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/impl/ContractServiceImpl.java @@ -0,0 +1,103 @@ +package com.dite.znpt.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.domain.entity.ContractEntity; +import com.dite.znpt.domain.vo.ContractListReq; +import com.dite.znpt.domain.vo.ContractResp; +import com.dite.znpt.domain.vo.ContractReq; +import com.dite.znpt.service.ContractService; +import com.dite.znpt.mapper.ContractMapper; +import org.springframework.stereotype.Service; +import cn.hutool.core.collection.CollUtil; +import lombok.RequiredArgsConstructor; +import com.dite.znpt.util.PageUtil; + +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/21 20:29 + * @Description: 合同表服务实现类 + */ +@Service +@RequiredArgsConstructor +public class ContractServiceImpl extends ServiceImpl implements ContractService { + + /** + * 功能描述:查询合同列表 + * + * @param contractReq 合同信息 + * @return {@link List }<{@link ContractResp }> + * @author huise23 + * @date 2025/07/21 20:29 + **/ + @Override + public List selectList(ContractListReq contractReq) { + PageUtil.startPage(); + List contractList= this.baseMapper.queryBySelective(contractReq); + contractList.forEach(resp -> { + + }); + return contractList; + } + + /** + * 功能描述:查询单条合同 + * + * @param contractId 合同Id + * @return {@link ContractResp } + * @author huise23 + * @date 2025/07/21 20:29 + **/ + @Override + public ContractResp selectById(String contractId) { + ContractListReq contractReq = new ContractListReq(); + contractReq.setContractId(contractId); + + List list = selectList(contractReq); + return CollUtil.isNotEmpty(list) ? CollUtil.getFirst(list) : new ContractResp(); + } + + /** + * 功能描述:新增合同 + * + * @param contractReq 合同 + * @author huise23 + * @date 2025/07/21 20:29 + **/ + @Override + public void saveData(ContractReq contractReq) { +// todo 校验 + ContractEntity entity = BeanUtil.copyProperties(contractReq, ContractEntity.class); + save(entity); + } + + /** + * 功能描述:更新合同 + * + * @param contractReq 合同 + * @author huise23 + * @date 2025/07/21 20:29 + **/ + @Override + public void updateData(ContractReq contractReq) { +// todo 校验 + ContractEntity entity = BeanUtil.copyProperties(contractReq, ContractEntity.class); + updateById(entity); + } + + /** + * 功能描述:删除合同 + * + * @param contractId 合同Id + * @author huise23 + * @date 2025/07/21 20:29 + **/ + @Override + public void deleteById(String contractId) { +// todo 校验 + removeById(contractId); + } + +} diff --git a/core/src/main/java/com/dite/znpt/service/impl/ContractSettlementServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/ContractSettlementServiceImpl.java new file mode 100644 index 0000000..6d44287 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/impl/ContractSettlementServiceImpl.java @@ -0,0 +1,76 @@ +package com.dite.znpt.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.domain.entity.ContractSettlementEntity; +import com.dite.znpt.domain.vo.ContractSettlementListReq; +import com.dite.znpt.domain.vo.ContractSettlementResp; +import com.dite.znpt.domain.vo.ContractSettlementReq; +import com.dite.znpt.service.ContractSettlementService; +import com.dite.znpt.mapper.ContractSettlementMapper; +import org.springframework.stereotype.Service; +import cn.hutool.core.collection.CollUtil; +import lombok.RequiredArgsConstructor; +import com.dite.znpt.util.PageUtil; + +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/21 21:10 + * @Description: 合同结算表服务实现类 + */ +@Service +@RequiredArgsConstructor +public class ContractSettlementServiceImpl extends ServiceImpl implements ContractSettlementService { + + /** + * 功能描述:查询合同结算列表 + * + * @param contractSettlementReq 合同结算信息 + * @return {@link List }<{@link ContractSettlementResp }> + * @author huise23 + * @date 2025/07/21 21:10 + **/ + @Override + public List selectList(ContractSettlementListReq contractSettlementReq) { + PageUtil.startPage(); + List contractSettlementList= this.baseMapper.queryBySelective(contractSettlementReq); + contractSettlementList.forEach(resp -> { + + }); + return contractSettlementList; + } + + /** + * 功能描述:查询单条合同结算 + * + * @param settlementId 合同结算Id + * @return {@link ContractSettlementResp } + * @author huise23 + * @date 2025/07/21 21:10 + **/ + @Override + public ContractSettlementResp selectById(String settlementId) { + ContractSettlementListReq contractSettlementReq = new ContractSettlementListReq(); + contractSettlementReq.setSettlementId(settlementId); + + List list = selectList(contractSettlementReq); + return CollUtil.isNotEmpty(list) ? CollUtil.getFirst(list) : new ContractSettlementResp(); + } + + /** + * 功能描述:新增合同结算 + * + * @param contractSettlementReq 合同结算 + * @author huise23 + * @date 2025/07/21 21:10 + **/ + @Override + public void saveData(ContractSettlementReq contractSettlementReq) { +// todo 校验 + ContractSettlementEntity entity = BeanUtil.copyProperties(contractSettlementReq, ContractSettlementEntity.class); + save(entity); + } + +} diff --git a/core/src/main/resources/mapper/ContractMapper.xml b/core/src/main/resources/mapper/ContractMapper.xml new file mode 100644 index 0000000..182e078 --- /dev/null +++ b/core/src/main/resources/mapper/ContractMapper.xml @@ -0,0 +1,74 @@ + + + + + + a.contract_id, a.customer, a.code, a.project_id, + a.salesperson_id, a.department_id, a.sign_date, a.duration, + a.type, a.product_service, a.payment_date, a.payment_address, + a.amount, a.account_number, a.notes, a.contract_status, + a.create_time, a.create_by, a.update_time, a.update_by + + + + + diff --git a/core/src/main/resources/mapper/ContractSettlementMapper.xml b/core/src/main/resources/mapper/ContractSettlementMapper.xml new file mode 100644 index 0000000..36761c6 --- /dev/null +++ b/core/src/main/resources/mapper/ContractSettlementMapper.xml @@ -0,0 +1,69 @@ + + + + + + a.settlement_id, a.contract_id, a.customer, a.code, + a.project_id, a.salesperson_id, a.department_id, a.payment_period, + a.payment_date, a.duration, a.product_service, a.amount, + a.account_number, a.notes, a.settlement_status, a.create_time, + a.create_by, a.update_time, a.update_by + + + + + diff --git a/web/src/main/java/com/dite/znpt/web/controller/ContractController.java b/web/src/main/java/com/dite/znpt/web/controller/ContractController.java new file mode 100644 index 0000000..d62a82a --- /dev/null +++ b/web/src/main/java/com/dite/znpt/web/controller/ContractController.java @@ -0,0 +1,85 @@ +package com.dite.znpt.web.controller; + + +import com.dite.znpt.constant.Constants; +import com.dite.znpt.domain.PageResult; +import com.dite.znpt.domain.Result; +import com.dite.znpt.domain.entity.ContractEntity; +import com.dite.znpt.domain.vo.ContractListReq; +import com.dite.znpt.domain.vo.ContractReq; +import com.dite.znpt.domain.vo.ContractResp; +import com.dite.znpt.service.ContractService; +import com.pig4cloud.plugin.excel.annotation.RequestExcel; +import com.pig4cloud.plugin.excel.annotation.ResponseExcel; +import com.pig4cloud.plugin.excel.vo.ErrorMessage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/21 20:29 + */ +@Api(tags = "合同") +@RestController +@RequestMapping("/contract") +public class ContractController { + @Resource + private ContractService contractService; + + @ApiOperation(value = "获取合同列表", httpMethod = "GET") + @GetMapping("/list") + public PageResult list(ContractListReq contractReq) { + return PageResult.ok(contractService.selectList(contractReq)); + } + + @ApiOperation(value = "根据合同Id获取详细信息", httpMethod = "GET") + @GetMapping("/{contractId}") + public Result getInfo(@PathVariable String contractId) { + return Result.ok(contractService.selectById(contractId)); + } + + @ApiOperation(value = "新增合同", httpMethod = "POST") + @PostMapping + public Result add(@RequestBody ContractReq contractReq) { + contractService.saveData(contractReq); + return Result.ok(); + } + + @ApiOperation(value = "修改合同", httpMethod = "PUT") + @PutMapping + public Result edit(@RequestBody ContractReq contractReq) { + contractService.updateData(contractReq); + return Result.ok(); + } + + @ApiOperation(value = "删除合同", httpMethod = "DELETE") + @DeleteMapping("/{contractId}") + public Result remove(@PathVariable String contractId) { + contractService.deleteById(contractId); + return Result.ok(); + } + + @ApiOperation(value = "导出合同", httpMethod = "GET") + @GetMapping("/export") + @ResponseExcel(name = "合同") + public List export(ContractListReq contractReq) { + return contractService.selectList(contractReq); + } + + @ApiOperation(value = "导入合同", httpMethod = "POST") + @PostMapping("/import") + public Result importData(@RequestExcel List dataList, BindingResult bindingResult) { + // JSR 303 校验通用校验获取失败的数据 + List errorMessageList = (List) bindingResult.getTarget(); + if (errorMessageList != null && !errorMessageList.isEmpty()) { + return Result.error(Constants.SERVICE_EXCEPTION, "导入失败"); + } + return Result.okM("导入"+dataList.size()+"条数据"); + } +} + diff --git a/web/src/main/java/com/dite/znpt/web/controller/ContractSettlementController.java b/web/src/main/java/com/dite/znpt/web/controller/ContractSettlementController.java new file mode 100644 index 0000000..854895f --- /dev/null +++ b/web/src/main/java/com/dite/znpt/web/controller/ContractSettlementController.java @@ -0,0 +1,42 @@ +package com.dite.znpt.web.controller; + + +import com.dite.znpt.constant.Constants; +import com.dite.znpt.domain.PageResult; +import com.dite.znpt.domain.Result; +import com.dite.znpt.domain.entity.ContractSettlementEntity; +import com.dite.znpt.domain.vo.ContractSettlementListReq; +import com.dite.znpt.domain.vo.ContractSettlementReq; +import com.dite.znpt.domain.vo.ContractSettlementResp; +import com.dite.znpt.service.ContractSettlementService; +import com.pig4cloud.plugin.excel.annotation.RequestExcel; +import com.pig4cloud.plugin.excel.annotation.ResponseExcel; +import com.pig4cloud.plugin.excel.vo.ErrorMessage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author huise23 + * @date 2025/07/21 21:11 + */ +@Api(tags = "合同结算") +@RestController +@RequestMapping("/contract-settlement") +public class ContractSettlementController { + @Resource + private ContractSettlementService contractSettlementService; + + @ApiOperation(value = "新增合同结算", httpMethod = "POST") + @PostMapping + public Result add(@RequestBody ContractSettlementReq contractSettlementReq) { + contractSettlementService.saveData(contractSettlementReq); + return Result.ok(); + } + +} +