合同管理相关

This commit is contained in:
guojunyun
2025-09-21 21:01:15 +08:00
parent aa0135707d
commit f014ca7cf3
18 changed files with 1352 additions and 3 deletions

View File

@@ -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, "合同编号已存在");
} }

View File

@@ -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";
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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";
}

View File

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

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

Some files were not shown because too many files have changed in this diff Show More