合同管理相关
This commit is contained in:
@@ -11,7 +11,8 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
|
|||||||
*/
|
*/
|
||||||
public interface ErrorCodeConstants {
|
public interface ErrorCodeConstants {
|
||||||
|
|
||||||
// ========== 示例模块 1-001-000-000 ==========
|
// ========== 合同模块 1-027-000-000 ==========
|
||||||
ErrorCode EXAMPLE_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode CONTRACT_NUM_TRANSFINITE = new ErrorCode(1_027_000_000, "系统合同编号超限,最大合同编号:999999");
|
||||||
|
ErrorCode CONTRACT_NAME_EXISTS = new ErrorCode(1_027_000_001, "合同名已存在");
|
||||||
|
ErrorCode CONTRACT_PAPER_NUMBER_EXISTS = new ErrorCode(1_027_000_002, "合同编号已存在");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.enums.contract;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同字典类型常量
|
||||||
|
*
|
||||||
|
* @author ZT
|
||||||
|
*/
|
||||||
|
public class ContractDictTypeConstants {
|
||||||
|
|
||||||
|
// 合同状态
|
||||||
|
public static String BSE_CTRT_STS = "BSE_CTRT_STS";
|
||||||
|
// 合同类型(字典名:业务类型)
|
||||||
|
public static String BSN_TP = "BSN_TP";
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.enums.contract;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同状态枚举
|
||||||
|
*/
|
||||||
|
public enum ContractStatusEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同状态-草稿
|
||||||
|
*/
|
||||||
|
DRAFT("草稿","DRAFT","可以删除"),
|
||||||
|
/**
|
||||||
|
* 合同状态-正在审核
|
||||||
|
*/
|
||||||
|
UNDER_REVIEW("正在审核","UNDER_REVIEW","不允许任何操作"),
|
||||||
|
/**
|
||||||
|
* 合同状态-执行中
|
||||||
|
*/
|
||||||
|
IN_PROGRESS("执行中","IN_PROGRESS","可以终止、归档"),
|
||||||
|
/**
|
||||||
|
* 合同状态-已驳回
|
||||||
|
*/
|
||||||
|
REJECTED("已驳回","REJECTED","可以删除"),
|
||||||
|
/**
|
||||||
|
* 合同状态-已终止
|
||||||
|
*/
|
||||||
|
TERMINATED("已终止","TERMINATED","只允许归档"),
|
||||||
|
/**
|
||||||
|
* 合同状态-已归档
|
||||||
|
*/
|
||||||
|
ARCHIVED("已归档","ARCHIVED","不允许任何操作"),
|
||||||
|
/**
|
||||||
|
* 合同状态-已删除
|
||||||
|
*/
|
||||||
|
DELETED("已删除","DELETED","不允许任何操作");
|
||||||
|
|
||||||
|
ContractStatusEnum(String label, String code, String remark) {
|
||||||
|
this.label = label;
|
||||||
|
this.code = code;
|
||||||
|
this.remark = remark;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 字典标签
|
||||||
|
*/
|
||||||
|
private final String label;
|
||||||
|
/**
|
||||||
|
* 字典编码
|
||||||
|
*/
|
||||||
|
private final String code;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private final String remark;
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRemark() {
|
||||||
|
return remark;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.enums.contract;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同类型枚举
|
||||||
|
*/
|
||||||
|
public enum ContractTypeEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购
|
||||||
|
*/
|
||||||
|
PRCH("采购","PRCH",null),
|
||||||
|
/**
|
||||||
|
* 销售
|
||||||
|
*/
|
||||||
|
SALE("销售","SALE",null),
|
||||||
|
/**
|
||||||
|
* 委托加工
|
||||||
|
*/
|
||||||
|
ENTT("委托加工","ENTT",null),
|
||||||
|
/**
|
||||||
|
* 来料加工
|
||||||
|
*/
|
||||||
|
MKE("来料加工","MKE",null);
|
||||||
|
|
||||||
|
ContractTypeEnum(String label, String code, String remark) {
|
||||||
|
this.label = label;
|
||||||
|
this.code = code;
|
||||||
|
this.remark = remark;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 字典标签
|
||||||
|
*/
|
||||||
|
private final String label;
|
||||||
|
/**
|
||||||
|
* 字典编码
|
||||||
|
*/
|
||||||
|
private final String code;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private final String remark;
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRemark() {
|
||||||
|
return remark;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.enums.contract;
|
||||||
|
|
||||||
|
public class DateConstants {
|
||||||
|
|
||||||
|
// 日期格式
|
||||||
|
public static final String DATE_FORMAT_YEAR_MONTH_DAY_8_BIT = "yyyyMMdd";
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.controller.admin.contract;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.business.interceptor.BusinessControllerMarker;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractRespVO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractMainDO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.service.contract.ContractService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Tag(name = "管理后台 - 合同管理")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/base/contract-order/contract")
|
||||||
|
@Validated
|
||||||
|
public class ContractController implements BusinessControllerMarker {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractService contractService;
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得合同分页列表")
|
||||||
|
@PreAuthorize("@ss.hasPermission('base:contract-main:query')")
|
||||||
|
public CommonResult<PageResult<ContractRespVO>> getContractPage(@Valid ContractPageReqVO pageReqVO) {
|
||||||
|
PageResult<ContractMainDO> pageResult = contractService.getContractPage(pageReqVO);
|
||||||
|
return success(BeanUtils.toBean(pageResult, ContractRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "新增合同")
|
||||||
|
@PreAuthorize("@ss.hasPermission('system:contract-main:create')")
|
||||||
|
public CommonResult<Long> createContract(@Valid @RequestBody ContractSaveReqVO reqVO) {
|
||||||
|
Long id = contractService.createContract(reqVO);
|
||||||
|
return success(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同明细新增/修改 Request VO")
|
||||||
|
@Data
|
||||||
|
public class ContractDetailSaveReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "32609")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "合同主信息主键", example = "13595")
|
||||||
|
private Long contractMainId;
|
||||||
|
|
||||||
|
@Schema(description = "物料名称", example = "张三")
|
||||||
|
private String materialName;
|
||||||
|
|
||||||
|
@Schema(description = "物料编码")
|
||||||
|
private String materialNumber;
|
||||||
|
|
||||||
|
@Schema(description = "数量")
|
||||||
|
private BigDecimal quantity;
|
||||||
|
|
||||||
|
@Schema(description = "计量单位")
|
||||||
|
private String unit;
|
||||||
|
|
||||||
|
@Schema(description = "含税单价", example = "28579")
|
||||||
|
private BigDecimal inTaxUnitPrice;
|
||||||
|
|
||||||
|
@Schema(description = "金属元素缩写")
|
||||||
|
private String elementAbbreviation;
|
||||||
|
|
||||||
|
@Schema(description = "金属元素名称", example = "赵六")
|
||||||
|
private String elementName;
|
||||||
|
|
||||||
|
@Schema(description = "金属元素编码")
|
||||||
|
private String elementNumber;
|
||||||
|
|
||||||
|
// 交货计划
|
||||||
|
private List<ContractPlanSaveReqVO> plans;
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同信息分页 Request VO")
|
||||||
|
@Data
|
||||||
|
public class ContractPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿")
|
||||||
|
private String contractName;
|
||||||
|
|
||||||
|
@Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一")
|
||||||
|
private String contractPaperNumber;
|
||||||
|
|
||||||
|
@Schema(description = "甲方公司名称", example = "王五")
|
||||||
|
private String purchaseCompanyName;
|
||||||
|
|
||||||
|
@Schema(description = "乙方公司名称", example = "王五")
|
||||||
|
private String salesCompanyName;
|
||||||
|
|
||||||
|
@Schema(description = "收支性质;与ERP(SZXZ)对应")
|
||||||
|
private String direction;
|
||||||
|
|
||||||
|
@Schema(description = "签署日期;与ERP(HTQDRQ)对应")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] signDate;
|
||||||
|
|
||||||
|
@Schema(description = "本币金额;与ERP(HTBWBZJE)对应")
|
||||||
|
private BigDecimal basicAmount;
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 交货计划条款新增/修改 Request VO")
|
||||||
|
@Data
|
||||||
|
public class ContractPlanSaveReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27474")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "合同明细主键", example = "32763")
|
||||||
|
private Long contractDetailId;
|
||||||
|
|
||||||
|
@Schema(description = "交货年份", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private Long contractDeliveryYear;
|
||||||
|
|
||||||
|
@Schema(description = "交货月份")
|
||||||
|
private Long contractPlanDeliveryMonth;
|
||||||
|
|
||||||
|
@Schema(description = "计划交货数量", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private BigDecimal contractPlanDeliveryQuantity;
|
||||||
|
|
||||||
|
@Schema(description = "交货开始日期", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private LocalDateTime contractDeliveryStartDate;
|
||||||
|
|
||||||
|
@Schema(description = "交货结束日期", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private LocalDateTime contractDeliveryEndDate;
|
||||||
|
}
|
||||||
@@ -0,0 +1,215 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同信息 Response VO")
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
public class ContractRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2090")
|
||||||
|
@ExcelProperty("主键")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "模板实例主键", example = "10196")
|
||||||
|
@ExcelProperty("模板实例主键")
|
||||||
|
private Long instanceId;
|
||||||
|
|
||||||
|
@Schema(description = "系统合同编号;自动生成,校验唯一")
|
||||||
|
@ExcelProperty("系统合同编号;自动生成,校验唯一")
|
||||||
|
private String systemContractNumber;
|
||||||
|
|
||||||
|
@Schema(description = "状态", example = "1")
|
||||||
|
@ExcelProperty("状态")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿")
|
||||||
|
@ExcelProperty("合同名称;与ERP(HTMC)对应,校验唯一")
|
||||||
|
private String contractName;
|
||||||
|
|
||||||
|
@Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一")
|
||||||
|
@ExcelProperty("合同编号;与ERP(HTBH)对应,校验唯一")
|
||||||
|
private String contractPaperNumber;
|
||||||
|
|
||||||
|
@Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应")
|
||||||
|
@ExcelProperty("是否虚拟合同;与ERP(SFXNHT)对应")
|
||||||
|
private String contractVirtual;
|
||||||
|
|
||||||
|
@Schema(description = "是否先款后货")
|
||||||
|
@ExcelProperty("是否先款后货")
|
||||||
|
private String hasPayable;
|
||||||
|
|
||||||
|
@Schema(description = "收支性质;与ERP(SZXZ)对应")
|
||||||
|
@ExcelProperty("收支性质;与ERP(SZXZ)对应")
|
||||||
|
private String direction;
|
||||||
|
|
||||||
|
@Schema(description = "合同类型", example = "1")
|
||||||
|
@ExcelProperty("合同类型")
|
||||||
|
private String contractType;
|
||||||
|
|
||||||
|
@Schema(description = "签署日期;与ERP(HTQDRQ)对应")
|
||||||
|
@ExcelProperty("签署日期;与ERP(HTQDRQ)对应")
|
||||||
|
private LocalDateTime signDate;
|
||||||
|
|
||||||
|
@Schema(description = "开始日期;与ERP(HTQSRQ)对应")
|
||||||
|
@ExcelProperty("开始日期;与ERP(HTQSRQ)对应")
|
||||||
|
private LocalDateTime startDate;
|
||||||
|
|
||||||
|
@Schema(description = "结束日期;与ERP(HTZZRQ)对应")
|
||||||
|
@ExcelProperty("结束日期;与ERP(HTZZRQ)对应")
|
||||||
|
private LocalDateTime endDate;
|
||||||
|
|
||||||
|
@Schema(description = "签署地")
|
||||||
|
@ExcelProperty("签署地")
|
||||||
|
private String signPlace;
|
||||||
|
|
||||||
|
@Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。")
|
||||||
|
@ExcelProperty("甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。")
|
||||||
|
private String purchaseCompanyNumber;
|
||||||
|
|
||||||
|
@Schema(description = "甲方公司名称", example = "王五")
|
||||||
|
@ExcelProperty("甲方公司名称")
|
||||||
|
private String purchaseCompanyName;
|
||||||
|
|
||||||
|
@Schema(description = "甲方地址")
|
||||||
|
@ExcelProperty("甲方地址")
|
||||||
|
private String purchaseAddress;
|
||||||
|
|
||||||
|
@Schema(description = "甲方法定代表人")
|
||||||
|
@ExcelProperty("甲方法定代表人")
|
||||||
|
private String purchaseLeader;
|
||||||
|
|
||||||
|
@Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。")
|
||||||
|
@ExcelProperty("乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。")
|
||||||
|
private String salesCompanyNumber;
|
||||||
|
|
||||||
|
@Schema(description = "乙方公司名称", example = "王五")
|
||||||
|
@ExcelProperty("乙方公司名称")
|
||||||
|
private String salesCompanyName;
|
||||||
|
|
||||||
|
@Schema(description = "乙方地址")
|
||||||
|
@ExcelProperty("乙方地址")
|
||||||
|
private String salesAddress;
|
||||||
|
|
||||||
|
@Schema(description = "乙方企业负责人")
|
||||||
|
@ExcelProperty("乙方企业负责人")
|
||||||
|
private String salesPurchaseLeader;
|
||||||
|
|
||||||
|
@Schema(description = "币种;与ERP(BZBH)对应")
|
||||||
|
@ExcelProperty("币种;与ERP(BZBH)对应")
|
||||||
|
private String currency;
|
||||||
|
|
||||||
|
@Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
|
||||||
|
@ExcelProperty("原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
|
||||||
|
private BigDecimal cooAmount;
|
||||||
|
|
||||||
|
@Schema(description = "本币金额;与ERP(HTBWBZJE)对应")
|
||||||
|
@ExcelProperty("本币金额;与ERP(HTBWBZJE)对应")
|
||||||
|
private BigDecimal basicAmount;
|
||||||
|
|
||||||
|
@Schema(description = "是否有履约保证金;为是,则保证金必填。")
|
||||||
|
@ExcelProperty("是否有履约保证金;为是,则保证金必填。")
|
||||||
|
private String hasDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
|
||||||
|
@ExcelProperty("原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
|
||||||
|
private BigDecimal cooAmountDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应")
|
||||||
|
@ExcelProperty("本币履约保证金;与ERP(LYBZJBGQBWB)对应")
|
||||||
|
private BigDecimal basicAmountDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "是否有预付款;与ERP(SFYYFK)对应")
|
||||||
|
@ExcelProperty("是否有预付款;与ERP(SFYYFK)对应")
|
||||||
|
private String hasPrepayment;
|
||||||
|
|
||||||
|
@Schema(description = "预付款比例;与ERP(YFKBL)对应")
|
||||||
|
@ExcelProperty("预付款比例;与ERP(YFKBL)对应")
|
||||||
|
private BigDecimal prepaymentRatio;
|
||||||
|
|
||||||
|
@Schema(description = "预付款金额;与ERP(YFKJE)对应")
|
||||||
|
@ExcelProperty("预付款金额;与ERP(YFKJE)对应")
|
||||||
|
private BigDecimal prepaymentAmount;
|
||||||
|
|
||||||
|
@Schema(description = "是否有质保金;与ERP(SFHZBJ)对应")
|
||||||
|
@ExcelProperty("是否有质保金;与ERP(SFHZBJ)对应")
|
||||||
|
private String hasQualityAmount;
|
||||||
|
|
||||||
|
@Schema(description = "质保金比例;与ERP(ZBJBL)对应")
|
||||||
|
@ExcelProperty("质保金比例;与ERP(ZBJBL)对应")
|
||||||
|
private BigDecimal qualityRatio;
|
||||||
|
|
||||||
|
@Schema(description = "质保金金额;与ERP(BZJJE)对应")
|
||||||
|
@ExcelProperty("质保金金额;与ERP(BZJJE)对应")
|
||||||
|
private BigDecimal qualityAmount;
|
||||||
|
|
||||||
|
@Schema(description = "补充协议类型;变更协议/增加条款", example = "1")
|
||||||
|
@ExcelProperty("补充协议类型;变更协议/增加条款")
|
||||||
|
private String replenishAgreementType;
|
||||||
|
|
||||||
|
@Schema(description = "备注;与ERP(BZXX)对应")
|
||||||
|
@ExcelProperty("备注;与ERP(BZXX)对应")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
@Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息")
|
||||||
|
@ExcelProperty("施工类型编号;与ERP(HTLXBH)对应,拓展信息")
|
||||||
|
private String constructionTypeNumber;
|
||||||
|
|
||||||
|
@Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "张三")
|
||||||
|
@ExcelProperty("施工类型名称;与ERP(HTLXMC)对应,拓展信息")
|
||||||
|
private String constructionTypeName;
|
||||||
|
|
||||||
|
@Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息")
|
||||||
|
@ExcelProperty("代理方;与ERP(ZLIFNR)对应,拓展信息")
|
||||||
|
private String zlifnr;
|
||||||
|
|
||||||
|
@Schema(description = "类别;与ERP(HTLB)对应,拓展信息")
|
||||||
|
@ExcelProperty("类别;与ERP(HTLB)对应,拓展信息")
|
||||||
|
private String category;
|
||||||
|
|
||||||
|
@Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息")
|
||||||
|
@ExcelProperty("原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息")
|
||||||
|
private BigDecimal changeCooAmount;
|
||||||
|
|
||||||
|
@Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息")
|
||||||
|
@ExcelProperty("本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息")
|
||||||
|
private BigDecimal changeBasicAmount;
|
||||||
|
|
||||||
|
@Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息")
|
||||||
|
@ExcelProperty("原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息")
|
||||||
|
private BigDecimal changeCooAmountDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息")
|
||||||
|
@ExcelProperty("本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息")
|
||||||
|
private BigDecimal changeBasicAmountDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息")
|
||||||
|
@ExcelProperty("是否框架合同;与ERP(SFKJHT)对应,拓展信息")
|
||||||
|
private String isFramework;
|
||||||
|
|
||||||
|
@Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息")
|
||||||
|
@ExcelProperty("境内/境外;与ERP(JNJW)对应,拓展信息")
|
||||||
|
private String jnjw;
|
||||||
|
|
||||||
|
@Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
|
||||||
|
@ExcelProperty("建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
|
||||||
|
private String architectureServicePlace;
|
||||||
|
|
||||||
|
@Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
|
||||||
|
@ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
|
||||||
|
private BigDecimal payeeConditionAmount;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@Schema(description = "步骤")
|
||||||
|
@ExcelProperty("步骤")
|
||||||
|
private Integer step;
|
||||||
|
}
|
||||||
@@ -0,0 +1,230 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同信息新增/修改 Request VO")
|
||||||
|
@Data
|
||||||
|
public class ContractSaveReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键")
|
||||||
|
@ExcelProperty("主键")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@NotNull(message = "步骤不能为空")
|
||||||
|
@Schema(description = "步骤", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@ExcelProperty("步骤")
|
||||||
|
private Integer step;
|
||||||
|
|
||||||
|
// 合同基本信息
|
||||||
|
@Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。")
|
||||||
|
@ExcelProperty("甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。")
|
||||||
|
private String purchaseCompanyNumber;
|
||||||
|
|
||||||
|
@Schema(description = "甲方公司名称", example = "王五")
|
||||||
|
@ExcelProperty("甲方公司名称")
|
||||||
|
private String purchaseCompanyName;
|
||||||
|
|
||||||
|
@Schema(description = "甲方地址")
|
||||||
|
@ExcelProperty("甲方地址")
|
||||||
|
private String purchaseAddress;
|
||||||
|
|
||||||
|
@Schema(description = "甲方法定代表人")
|
||||||
|
@ExcelProperty("甲方法定代表人")
|
||||||
|
private String purchaseLeader;
|
||||||
|
|
||||||
|
@Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。")
|
||||||
|
@ExcelProperty("乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。")
|
||||||
|
private String salesCompanyNumber;
|
||||||
|
|
||||||
|
@Schema(description = "乙方公司名称", example = "王五")
|
||||||
|
@ExcelProperty("乙方公司名称")
|
||||||
|
private String salesCompanyName;
|
||||||
|
|
||||||
|
@Schema(description = "乙方地址")
|
||||||
|
@ExcelProperty("乙方地址")
|
||||||
|
private String salesAddress;
|
||||||
|
|
||||||
|
@Schema(description = "乙方企业负责人")
|
||||||
|
@ExcelProperty("乙方企业负责人")
|
||||||
|
private String salesPurchaseLeader;
|
||||||
|
|
||||||
|
@NotBlank(message = "合同名称不能为空")
|
||||||
|
@Size(max = 90, message = "合同名称长度不能超过90个字符")
|
||||||
|
@Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿")
|
||||||
|
@ExcelProperty("合同名称;与ERP(HTMC)对应,校验唯一")
|
||||||
|
private String contractName;
|
||||||
|
|
||||||
|
@Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一")
|
||||||
|
@ExcelProperty("合同编号;与ERP(HTBH)对应,校验唯一")
|
||||||
|
private String contractPaperNumber;
|
||||||
|
|
||||||
|
@NotBlank(message = "合同类型不能为空")
|
||||||
|
@Schema(description = "合同类型", example = "PRCH")
|
||||||
|
@ExcelProperty("合同类型")
|
||||||
|
private String contractType;
|
||||||
|
|
||||||
|
@Schema(description = "收支性质;与ERP(SZXZ)对应")
|
||||||
|
@ExcelProperty("收支性质;与ERP(SZXZ)对应")
|
||||||
|
private String direction;
|
||||||
|
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
@JsonFormat(timezone = TIME_ZONE_DEFAULT, pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
@Schema(description = "签署日期;与ERP(HTQDRQ)对应")
|
||||||
|
@ExcelProperty("签署日期;与ERP(HTQDRQ)对应")
|
||||||
|
private LocalDateTime signDate;
|
||||||
|
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
@JsonFormat(timezone = TIME_ZONE_DEFAULT, pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
@Schema(description = "开始日期;与ERP(HTQSRQ)对应")
|
||||||
|
@ExcelProperty("开始日期;与ERP(HTQSRQ)对应")
|
||||||
|
private LocalDateTime startDate;
|
||||||
|
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
@JsonFormat(timezone = TIME_ZONE_DEFAULT, pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
@Schema(description = "结束日期;与ERP(HTZZRQ)对应")
|
||||||
|
@ExcelProperty("结束日期;与ERP(HTZZRQ)对应")
|
||||||
|
private LocalDateTime endDate;
|
||||||
|
|
||||||
|
@Schema(description = "签署地")
|
||||||
|
@ExcelProperty("签署地")
|
||||||
|
private String signPlace;
|
||||||
|
|
||||||
|
// 金额信息
|
||||||
|
@Schema(description = "币种;与ERP(BZBH)对应")
|
||||||
|
@ExcelProperty("币种;与ERP(BZBH)对应")
|
||||||
|
private String currency;
|
||||||
|
|
||||||
|
@Schema(description = "本币金额;与ERP(HTBWBZJE)对应")
|
||||||
|
@ExcelProperty("本币金额;与ERP(HTBWBZJE)对应")
|
||||||
|
private BigDecimal basicAmount;
|
||||||
|
|
||||||
|
@Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
|
||||||
|
@ExcelProperty("原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
|
||||||
|
private BigDecimal cooAmount;
|
||||||
|
|
||||||
|
@Schema(description = "是否有履约保证金;为是,则保证金必填。")
|
||||||
|
@ExcelProperty("是否有履约保证金;为是,则保证金必填。")
|
||||||
|
private String hasDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
|
||||||
|
@ExcelProperty("原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
|
||||||
|
private BigDecimal cooAmountDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息")
|
||||||
|
@ExcelProperty("本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息")
|
||||||
|
private BigDecimal changeBasicAmountDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "是否有预付款;与ERP(SFYYFK)对应")
|
||||||
|
@ExcelProperty("是否有预付款;与ERP(SFYYFK)对应")
|
||||||
|
private String hasPrepayment;
|
||||||
|
|
||||||
|
@Schema(description = "预付款比例;与ERP(YFKBL)对应")
|
||||||
|
@ExcelProperty("预付款比例;与ERP(YFKBL)对应")
|
||||||
|
private BigDecimal prepaymentRatio;
|
||||||
|
|
||||||
|
@Schema(description = "预付款金额;与ERP(YFKJE)对应")
|
||||||
|
@ExcelProperty("预付款金额;与ERP(YFKJE)对应")
|
||||||
|
private BigDecimal prepaymentAmount;
|
||||||
|
|
||||||
|
@Schema(description = "是否有质保金;与ERP(SFHZBJ)对应")
|
||||||
|
@ExcelProperty("是否有质保金;与ERP(SFHZBJ)对应")
|
||||||
|
private String hasQualityAmount;
|
||||||
|
|
||||||
|
@Schema(description = "质保金比例;与ERP(ZBJBL)对应")
|
||||||
|
@ExcelProperty("质保金比例;与ERP(ZBJBL)对应")
|
||||||
|
private BigDecimal qualityRatio;
|
||||||
|
|
||||||
|
@Schema(description = "质保金金额;与ERP(BZJJE)对应")
|
||||||
|
@ExcelProperty("质保金金额;与ERP(BZJJE)对应")
|
||||||
|
private BigDecimal qualityAmount;
|
||||||
|
|
||||||
|
@Schema(description = "是否先款后货")
|
||||||
|
@ExcelProperty("是否先款后货")
|
||||||
|
private String hasPayable;
|
||||||
|
|
||||||
|
@Schema(description = "备注;与ERP(BZXX)对应")
|
||||||
|
@ExcelProperty("备注;与ERP(BZXX)对应")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
// 物料信息
|
||||||
|
private List<ContractDetailSaveReqVO> detail;
|
||||||
|
|
||||||
|
// 扩展信息
|
||||||
|
@Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息")
|
||||||
|
@ExcelProperty("原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息")
|
||||||
|
private BigDecimal changeCooAmount;
|
||||||
|
|
||||||
|
@Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息")
|
||||||
|
@ExcelProperty("本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息")
|
||||||
|
private BigDecimal changeBasicAmount;
|
||||||
|
|
||||||
|
@Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息")
|
||||||
|
@ExcelProperty("原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息")
|
||||||
|
private BigDecimal changeCooAmountDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应")
|
||||||
|
@ExcelProperty("本币履约保证金;与ERP(LYBZJBGQBWB)对应")
|
||||||
|
private BigDecimal basicAmountDeposit;
|
||||||
|
|
||||||
|
@Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息")
|
||||||
|
@ExcelProperty("是否框架合同;与ERP(SFKJHT)对应,拓展信息")
|
||||||
|
private String isFramework;
|
||||||
|
|
||||||
|
@Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息")
|
||||||
|
@ExcelProperty("境内/境外;与ERP(JNJW)对应,拓展信息")
|
||||||
|
private String jnjw;
|
||||||
|
|
||||||
|
@Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息")
|
||||||
|
@ExcelProperty("施工类型编号;与ERP(HTLXBH)对应,拓展信息")
|
||||||
|
private String constructionTypeNumber;
|
||||||
|
|
||||||
|
@Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "张三")
|
||||||
|
@ExcelProperty("施工类型名称;与ERP(HTLXMC)对应,拓展信息")
|
||||||
|
private String constructionTypeName;
|
||||||
|
|
||||||
|
@Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息")
|
||||||
|
@ExcelProperty("代理方;与ERP(ZLIFNR)对应,拓展信息")
|
||||||
|
private String zlifnr;
|
||||||
|
|
||||||
|
@Schema(description = "类别;与ERP(HTLB)对应,拓展信息")
|
||||||
|
@ExcelProperty("类别;与ERP(HTLB)对应,拓展信息")
|
||||||
|
private String category;
|
||||||
|
|
||||||
|
// 模板部分查询
|
||||||
|
@Schema(description = "模板实例主键", example = "10196")
|
||||||
|
@ExcelProperty("模板实例主键")
|
||||||
|
private Long instanceId;
|
||||||
|
// 合同动态表单
|
||||||
|
// 合同动态条款
|
||||||
|
|
||||||
|
// TODO 未确认字段
|
||||||
|
@Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应")
|
||||||
|
@ExcelProperty("是否虚拟合同;与ERP(SFXNHT)对应")
|
||||||
|
private String contractVirtual;
|
||||||
|
|
||||||
|
@Schema(description = "补充协议类型;变更协议/增加条款", example = "1")
|
||||||
|
@ExcelProperty("补充协议类型;变更协议/增加条款")
|
||||||
|
private String replenishAgreementType;
|
||||||
|
|
||||||
|
@Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
|
||||||
|
@ExcelProperty("建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
|
||||||
|
private String architectureServicePlace;
|
||||||
|
|
||||||
|
@Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
|
||||||
|
@ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填")
|
||||||
|
private BigDecimal payeeConditionAmount;
|
||||||
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.dal.dataobject.contract;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.*;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同明细 DO
|
||||||
|
*
|
||||||
|
* @author 后台管理
|
||||||
|
*/
|
||||||
|
@TableName("bse_ctrt_dtl")
|
||||||
|
@KeySequence("bse_ctrt_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
/**
|
||||||
|
* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
|
||||||
|
*/
|
||||||
|
public class ContractDetailDO extends BusinessBaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 合同主信息主键
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_MAIN_ID")
|
||||||
|
private Long contractMainId;
|
||||||
|
/**
|
||||||
|
* 物料名称
|
||||||
|
*/
|
||||||
|
@TableField("MTRL_NAME")
|
||||||
|
private String materialName;
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
@TableField("MTRL_NUM")
|
||||||
|
private String materialNumber;
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
@TableField("QTY")
|
||||||
|
private BigDecimal quantity;
|
||||||
|
/**
|
||||||
|
* 计量单位
|
||||||
|
*/
|
||||||
|
@TableField("UNT")
|
||||||
|
private String unit;
|
||||||
|
/**
|
||||||
|
* 含税单价
|
||||||
|
*/
|
||||||
|
@TableField("IN_TAX_UPRC")
|
||||||
|
private BigDecimal inTaxUnitPrice;
|
||||||
|
/**
|
||||||
|
* 金属元素缩写
|
||||||
|
*/
|
||||||
|
@TableField("ELEM_ABBR")
|
||||||
|
private String elementAbbreviation;
|
||||||
|
/**
|
||||||
|
* 金属元素名称
|
||||||
|
*/
|
||||||
|
@TableField("ELEM_NAME")
|
||||||
|
private String elementName;
|
||||||
|
/**
|
||||||
|
* 金属元素编码
|
||||||
|
*/
|
||||||
|
@TableField("ELEM_NUM")
|
||||||
|
private String elementNumber;
|
||||||
|
}
|
||||||
@@ -0,0 +1,273 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.dal.dataobject.contract;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同主信息 DO
|
||||||
|
*
|
||||||
|
* @author 后台管理
|
||||||
|
*/
|
||||||
|
@TableName("bse_ctrt_main")
|
||||||
|
@KeySequence("bse_ctrt_main_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
/**
|
||||||
|
* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
|
||||||
|
*/
|
||||||
|
public class ContractMainDO extends BusinessBaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 模板实例主键
|
||||||
|
*/
|
||||||
|
@TableField("INSC_ID")
|
||||||
|
private Long instanceId;
|
||||||
|
/**
|
||||||
|
* 系统合同编号;自动生成,校验唯一
|
||||||
|
*/
|
||||||
|
@TableField("SYS_CTRT_NUM")
|
||||||
|
private String systemContractNumber;
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
@TableField("STS")
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 合同名称;与ERP(HTMC)对应,校验唯一
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_NAME")
|
||||||
|
private String contractName;
|
||||||
|
/**
|
||||||
|
* 合同编号;与ERP(HTBH)对应,校验唯一
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_PPR_NUM")
|
||||||
|
private String contractPaperNumber;
|
||||||
|
/**
|
||||||
|
* 是否虚拟合同;与ERP(SFXNHT)对应
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_VRTL")
|
||||||
|
private String contractVirtual;
|
||||||
|
/**
|
||||||
|
* 是否先款后货
|
||||||
|
*/
|
||||||
|
@TableField("HS_PYBL")
|
||||||
|
private String hasPayable;
|
||||||
|
/**
|
||||||
|
* 收支性质;与ERP(SZXZ)对应
|
||||||
|
*/
|
||||||
|
@TableField("DRCT")
|
||||||
|
private String direction;
|
||||||
|
/**
|
||||||
|
* 合同类型
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_TP")
|
||||||
|
private String contractType;
|
||||||
|
/**
|
||||||
|
* 签署日期;与ERP(HTQDRQ)对应
|
||||||
|
*/
|
||||||
|
@TableField("SGN_DT")
|
||||||
|
private LocalDateTime signDate;
|
||||||
|
/**
|
||||||
|
* 开始日期;与ERP(HTQSRQ)对应
|
||||||
|
*/
|
||||||
|
@TableField("STRT_DT")
|
||||||
|
private LocalDateTime startDate;
|
||||||
|
/**
|
||||||
|
* 结束日期;与ERP(HTZZRQ)对应
|
||||||
|
*/
|
||||||
|
@TableField("END_DT")
|
||||||
|
private LocalDateTime endDate;
|
||||||
|
/**
|
||||||
|
* 签署地
|
||||||
|
*/
|
||||||
|
@TableField("SGN_PLCE")
|
||||||
|
private String signPlace;
|
||||||
|
/**
|
||||||
|
* 甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。
|
||||||
|
*/
|
||||||
|
@TableField("PRCH_CPN_NUM")
|
||||||
|
private String purchaseCompanyNumber;
|
||||||
|
/**
|
||||||
|
* 甲方公司名称
|
||||||
|
*/
|
||||||
|
@TableField("PRCH_CPN_NAME")
|
||||||
|
private String purchaseCompanyName;
|
||||||
|
/**
|
||||||
|
* 甲方地址
|
||||||
|
*/
|
||||||
|
@TableField("PRCH_ADR")
|
||||||
|
private String purchaseAddress;
|
||||||
|
/**
|
||||||
|
* 甲方法定代表人
|
||||||
|
*/
|
||||||
|
@TableField("PRCH_LDR")
|
||||||
|
private String purchaseLeader;
|
||||||
|
/**
|
||||||
|
* 乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。
|
||||||
|
*/
|
||||||
|
@TableField("SALE_CPN_NUM")
|
||||||
|
private String salesCompanyNumber;
|
||||||
|
/**
|
||||||
|
* 乙方公司名称
|
||||||
|
*/
|
||||||
|
@TableField("SALE_CPN_NAME")
|
||||||
|
private String salesCompanyName;
|
||||||
|
/**
|
||||||
|
* 乙方地址
|
||||||
|
*/
|
||||||
|
@TableField("SALE_ADR")
|
||||||
|
private String salesAddress;
|
||||||
|
/**
|
||||||
|
* 乙方企业负责人
|
||||||
|
*/
|
||||||
|
@TableField("SALE_PRCH_LDR")
|
||||||
|
private String salesPurchaseLeader;
|
||||||
|
/**
|
||||||
|
* 币种;与ERP(BZBH)对应
|
||||||
|
*/
|
||||||
|
@TableField("CUR")
|
||||||
|
private String currency;
|
||||||
|
/**
|
||||||
|
* 原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额
|
||||||
|
*/
|
||||||
|
@TableField("COO_AMT")
|
||||||
|
private BigDecimal cooAmount;
|
||||||
|
/**
|
||||||
|
* 本币金额;与ERP(HTBWBZJE)对应
|
||||||
|
*/
|
||||||
|
@TableField("BSC_AMT")
|
||||||
|
private BigDecimal basicAmount;
|
||||||
|
/**
|
||||||
|
* 是否有履约保证金;为是,则保证金必填。
|
||||||
|
*/
|
||||||
|
@TableField("HS_DPST")
|
||||||
|
private String hasDeposit;
|
||||||
|
/**
|
||||||
|
* 原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额
|
||||||
|
*/
|
||||||
|
@TableField("COO_AMT_DPST")
|
||||||
|
private BigDecimal cooAmountDeposit;
|
||||||
|
/**
|
||||||
|
* 本币履约保证金;与ERP(LYBZJBGQBWB)对应
|
||||||
|
*/
|
||||||
|
@TableField("BSC_AMT_DPST")
|
||||||
|
private BigDecimal basicAmountDeposit;
|
||||||
|
/**
|
||||||
|
* 是否有预付款;与ERP(SFYYFK)对应
|
||||||
|
*/
|
||||||
|
@TableField("HS_PPYM")
|
||||||
|
private String hasPrepayment;
|
||||||
|
/**
|
||||||
|
* 预付款比例;与ERP(YFKBL)对应
|
||||||
|
*/
|
||||||
|
@TableField("PPYM_RTIO")
|
||||||
|
private BigDecimal prepaymentRatio;
|
||||||
|
/**
|
||||||
|
* 预付款金额;与ERP(YFKJE)对应
|
||||||
|
*/
|
||||||
|
@TableField("PPYM_AMT")
|
||||||
|
private BigDecimal prepaymentAmount;
|
||||||
|
/**
|
||||||
|
* 是否有质保金;与ERP(SFHZBJ)对应
|
||||||
|
*/
|
||||||
|
@TableField("HS_QLT_AMT")
|
||||||
|
private String hasQualityAmount;
|
||||||
|
/**
|
||||||
|
* 质保金比例;与ERP(ZBJBL)对应
|
||||||
|
*/
|
||||||
|
@TableField("QLT_RTIO")
|
||||||
|
private BigDecimal qualityRatio;
|
||||||
|
/**
|
||||||
|
* 质保金金额;与ERP(BZJJE)对应
|
||||||
|
*/
|
||||||
|
@TableField("QLT_AMT")
|
||||||
|
private BigDecimal qualityAmount;
|
||||||
|
/**
|
||||||
|
* 补充协议类型;变更协议/增加条款
|
||||||
|
*/
|
||||||
|
@TableField("RPL_AGR_TP")
|
||||||
|
private String replenishAgreementType;
|
||||||
|
/**
|
||||||
|
* 备注;与ERP(BZXX)对应
|
||||||
|
*/
|
||||||
|
@TableField("RMK")
|
||||||
|
private String remark;
|
||||||
|
/**
|
||||||
|
* 施工类型编号;与ERP(HTLXBH)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("CON_TP_NUM")
|
||||||
|
private String constructionTypeNumber;
|
||||||
|
/**
|
||||||
|
* 施工类型名称;与ERP(HTLXMC)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("CON_TP_NAME")
|
||||||
|
private String constructionTypeName;
|
||||||
|
/**
|
||||||
|
* 代理方;与ERP(ZLIFNR)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("ZLIFNR")
|
||||||
|
private String zlifnr;
|
||||||
|
/**
|
||||||
|
* 类别;与ERP(HTLB)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("CTGR")
|
||||||
|
private String category;
|
||||||
|
/**
|
||||||
|
* 原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("CHG_COO_AMT")
|
||||||
|
private BigDecimal changeCooAmount;
|
||||||
|
/**
|
||||||
|
* 本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("CHG_BSC_AMT")
|
||||||
|
private BigDecimal changeBasicAmount;
|
||||||
|
/**
|
||||||
|
* 原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("CHG_COO_AMT_DPST")
|
||||||
|
private BigDecimal changeCooAmountDeposit;
|
||||||
|
/**
|
||||||
|
* 本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("CHG_BSC_AMT_DPST")
|
||||||
|
private BigDecimal changeBasicAmountDeposit;
|
||||||
|
/**
|
||||||
|
* 是否框架合同;与ERP(SFKJHT)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("IS_FMWK")
|
||||||
|
private String isFramework;
|
||||||
|
/**
|
||||||
|
* 境内/境外;与ERP(JNJW)对应,拓展信息
|
||||||
|
*/
|
||||||
|
@TableField("JNJW")
|
||||||
|
private String jnjw;
|
||||||
|
/**
|
||||||
|
* 建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填
|
||||||
|
*/
|
||||||
|
@TableField("ARCH_SVC_PLCE")
|
||||||
|
private String architectureServicePlace;
|
||||||
|
/**
|
||||||
|
* 达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填
|
||||||
|
*/
|
||||||
|
@TableField("PYEE_CND_AMT")
|
||||||
|
private BigDecimal payeeConditionAmount;
|
||||||
|
/**
|
||||||
|
* 步骤
|
||||||
|
*/
|
||||||
|
@TableField("STP")
|
||||||
|
private Integer step;
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.dal.dataobject.contract;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BusinessBaseDO;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.*;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 交货计划条款 DO
|
||||||
|
*
|
||||||
|
* @author 后台管理
|
||||||
|
*/
|
||||||
|
@TableName("bse_ctrt_pln")
|
||||||
|
@KeySequence("bse_ctrt_pln_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
/**
|
||||||
|
* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO
|
||||||
|
*/
|
||||||
|
public class ContractPlanDO extends BusinessBaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 合同明细主键
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_DTL_ID")
|
||||||
|
private Long contractDetailId;
|
||||||
|
/**
|
||||||
|
* 交货年份
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_DLVY_YR")
|
||||||
|
private Long contractDeliveryYear;
|
||||||
|
/**
|
||||||
|
* 交货月份
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_PLN_DLVY_MNT")
|
||||||
|
private Long contractPlanDeliveryMonth;
|
||||||
|
/**
|
||||||
|
* 计划交货数量
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_PLN_DLVY_QTY")
|
||||||
|
private BigDecimal contractPlanDeliveryQuantity;
|
||||||
|
/**
|
||||||
|
* 交货开始日期
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_DLVY_STRT_DT")
|
||||||
|
private LocalDateTime contractDeliveryStartDate;
|
||||||
|
/**
|
||||||
|
* 交货结束日期
|
||||||
|
*/
|
||||||
|
@TableField("CTRT_DLVY_END_DT")
|
||||||
|
private LocalDateTime contractDeliveryEndDate;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.dal.mysql.contract;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractDetailDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同明细 Mapper
|
||||||
|
*
|
||||||
|
* @author 后台管理
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ContractDetailMapper extends BaseMapperX<ContractDetailDO> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.dal.mysql.contract;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractMainDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同主信息 Mapper
|
||||||
|
*
|
||||||
|
* @author 后台管理
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ContractMainMapper extends BaseMapperX<ContractMainDO> {
|
||||||
|
default PageResult<ContractMainDO> selectContractPage(ContractPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<ContractMainDO>()
|
||||||
|
.likeIfPresent(ContractMainDO::getContractName, reqVO.getContractName())
|
||||||
|
.eqIfPresent(ContractMainDO::getContractPaperNumber, reqVO.getContractPaperNumber())
|
||||||
|
.eqIfPresent(ContractMainDO::getDirection, reqVO.getDirection())
|
||||||
|
.betweenIfPresent(ContractMainDO::getSignDate, reqVO.getSignDate())
|
||||||
|
.likeIfPresent(ContractMainDO::getPurchaseCompanyName, reqVO.getPurchaseCompanyName())
|
||||||
|
.eqIfPresent(ContractMainDO::getBasicAmount, reqVO.getBasicAmount())
|
||||||
|
.orderByDesc(ContractMainDO::getCreateTime));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.service.contract;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractMainDO;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后台合同编制 Service 接口
|
||||||
|
*
|
||||||
|
* @author ZT
|
||||||
|
*/
|
||||||
|
public interface ContractService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同分页列表
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页条件
|
||||||
|
* @return 分页列表
|
||||||
|
*/
|
||||||
|
PageResult<ContractMainDO> getContractPage(@Valid ContractPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增合同
|
||||||
|
*
|
||||||
|
* @param reqVO 用户信息
|
||||||
|
* @return 合同ID
|
||||||
|
*/
|
||||||
|
Long createContract(@Valid ContractSaveReqVO reqVO);
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
package cn.iocoder.yudao.module.contractorder.service.contract;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.framework.tenant.core.context.CompanyContextHolder;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.controller.admin.contract.vo.preparaton.ContractSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.dal.dataobject.contract.ContractMainDO;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.dal.mysql.contract.ContractMainMapper;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.enums.contract.ContractStatusEnum;
|
||||||
|
import cn.iocoder.yudao.module.contractorder.enums.contract.DateConstants;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.contractorder.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后台合同编制 Service 实现类
|
||||||
|
*
|
||||||
|
* @author ZT
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class ContractServiceImpl implements ContractService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractMainMapper contractMainMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<ContractMainDO> getContractPage(ContractPageReqVO pageReqVO) {
|
||||||
|
return contractMainMapper.selectContractPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createContract(ContractSaveReqVO reqVO) {
|
||||||
|
|
||||||
|
// 校验合同名称是否存在
|
||||||
|
ContractMainDO contract = contractMainMapper.selectOne("CTRT_NAME", reqVO.getContractName());
|
||||||
|
if (contract != null) {
|
||||||
|
throw exception(CONTRACT_NAME_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isNotEmpty(reqVO.getContractPaperNumber())) {
|
||||||
|
// 校验合同编号是否存在
|
||||||
|
contract = contractMainMapper.selectOne("CTRT_PPR_NUM", reqVO.getContractPaperNumber());
|
||||||
|
if (contract != null) {
|
||||||
|
throw exception(CONTRACT_PAPER_NUMBER_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 合同主信息
|
||||||
|
ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class);
|
||||||
|
// 合同状态保存为草稿
|
||||||
|
contractMainDO.setStatus(ContractStatusEnum.DRAFT.getCode());
|
||||||
|
// 生成系统合同编号
|
||||||
|
contractMainDO.setSystemContractNumber(generateSystemContractNumber(reqVO.getContractType()));
|
||||||
|
|
||||||
|
// 保存合同主信息
|
||||||
|
contractMainMapper.insert(contractMainDO);
|
||||||
|
|
||||||
|
System.out.println(contractMainDO);
|
||||||
|
return contractMainDO.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成系统合同编号
|
||||||
|
*
|
||||||
|
* 单据号生成规则说明
|
||||||
|
* 单据名称(拼音)-类型-公司编码-年月日-六位编号
|
||||||
|
* 如请款单: QKD-ZGQK-3000-20250915-00001
|
||||||
|
*
|
||||||
|
* @param contractType 合同类型
|
||||||
|
*
|
||||||
|
* @return 系统合同编号
|
||||||
|
*/
|
||||||
|
private String generateSystemContractNumber(String contractType) {
|
||||||
|
|
||||||
|
// 单据名称(拼音)
|
||||||
|
String documentName = "XTHT";
|
||||||
|
// 公司编码
|
||||||
|
String companyId = CompanyContextHolder.getCompanyId().toString();
|
||||||
|
// 年月日
|
||||||
|
String yearMounth8Bit = LocalDate.now()
|
||||||
|
.format(DateTimeFormatter.ofPattern(DateConstants.DATE_FORMAT_YEAR_MONTH_DAY_8_BIT));
|
||||||
|
// 查询最大编号
|
||||||
|
String numPrefix = documentName+"-"+contractType+"-"+companyId+"-"+yearMounth8Bit;
|
||||||
|
QueryWrapper<ContractMainDO> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.likeRight("SYS_CTRT_NUM", numPrefix);
|
||||||
|
queryWrapper.orderByDesc("SYS_CTRT_NUM");
|
||||||
|
queryWrapper.last("limit 1");
|
||||||
|
ContractMainDO contract = contractMainMapper.selectOne(queryWrapper);
|
||||||
|
// 获取最大的6位编号+1作为生成的编号
|
||||||
|
String num = null;
|
||||||
|
if (contract == null) {
|
||||||
|
num = "000001";
|
||||||
|
} else {
|
||||||
|
String[] systemContractNumberSplit = contract.getSystemContractNumber().split("-");
|
||||||
|
int numInt = Integer.parseInt(systemContractNumberSplit[systemContractNumberSplit.length - 1]) + 1;
|
||||||
|
if (numInt > 999999) {
|
||||||
|
throw exception(CONTRACT_NUM_TRANSFINITE);
|
||||||
|
}
|
||||||
|
num = String.format("%06d", numInt);
|
||||||
|
}
|
||||||
|
return numPrefix + "-" + num;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user