parent
b761caa1df
commit
57e48cd3d1
@ -0,0 +1,102 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contractclause;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import javax.servlet.http.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.CommonResult;
|
||||||
|
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contractclause.ContractClauseDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.contractclause.ContractClauseConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.service.contractclause.ContractClauseService;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 合同条款")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/xxjj/contract-clause")
|
||||||
|
@Validated
|
||||||
|
public class ContractClauseController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractClauseService contractClauseService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建合同条款")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-clause:create')")
|
||||||
|
public CommonResult<Long> createContractClause(@Valid @RequestBody ContractClauseCreateReqVO createReqVO) {
|
||||||
|
return success(contractClauseService.createContractClause(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新合同条款")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-clause:update')")
|
||||||
|
public CommonResult<Boolean> updateContractClause(@Valid @RequestBody ContractClauseUpdateReqVO updateReqVO) {
|
||||||
|
contractClauseService.updateContractClause(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除合同条款")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-clause:delete')")
|
||||||
|
public CommonResult<Boolean> deleteContractClause(@RequestParam("id") Long id) {
|
||||||
|
contractClauseService.deleteContractClause(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得合同条款")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-clause:query')")
|
||||||
|
public CommonResult<ContractClauseRespVO> getContractClause(@RequestParam("id") Long id) {
|
||||||
|
ContractClauseDO contractClause = contractClauseService.getContractClause(id);
|
||||||
|
return success(ContractClauseConvert.INSTANCE.convert(contractClause));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@Operation(summary = "获得合同条款列表")
|
||||||
|
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-clause:query')")
|
||||||
|
public CommonResult<List<ContractClauseRespVO>> getContractClauseList(@RequestParam("ids") Collection<Long> ids) {
|
||||||
|
List<ContractClauseDO> list = contractClauseService.getContractClauseList(ids);
|
||||||
|
return success(ContractClauseConvert.INSTANCE.convertList(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得合同条款分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-clause:query')")
|
||||||
|
public CommonResult<PageResult<ContractClauseRespVO>> getContractClausePage(@Valid ContractClausePageReqVO pageVO) {
|
||||||
|
PageResult<ContractClauseDO> pageResult = contractClauseService.getContractClausePage(pageVO);
|
||||||
|
return success(ContractClauseConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出合同条款 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-clause:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportContractClauseExcel(@Valid ContractClauseExportReqVO exportReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
List<ContractClauseDO> list = contractClauseService.getContractClauseList(exportReqVO);
|
||||||
|
// 导出 Excel
|
||||||
|
List<ContractClauseExcelVO> datas = ContractClauseConvert.INSTANCE.convertList02(list);
|
||||||
|
ExcelUtils.write(response, "合同条款.xls", "数据", ContractClauseExcelVO.class, datas);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同条款创建 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ContractClauseCreateReqVO extends ContractClauseBaseVO {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
|
||||||
|
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同条款 Excel VO
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ContractClauseExcelVO {
|
||||||
|
|
||||||
|
@ExcelProperty("编号")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ExcelProperty("条款标题")
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "条款类型 参考字典contract_clause_type", converter = DictConvert.class)
|
||||||
|
@DictFormat("contract_clause_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "状态 参考字典contract_clause_status", converter = DictConvert.class)
|
||||||
|
@DictFormat("contract_clause_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@ExcelProperty("条款内容")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
@ExcelProperty("权重值")
|
||||||
|
private Short weight;
|
||||||
|
|
||||||
|
@ExcelProperty("备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
@ExcelProperty("附件")
|
||||||
|
private String attachment;
|
||||||
|
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageParam;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同条款分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ContractClausePageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "条款标题")
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
@Schema(description = "条款类型 参考字典contract_clause_type", example = "1")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "状态 参考字典contract_clause_status", example = "2")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同条款 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ContractClauseRespVO extends ContractClauseBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7146")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同条款更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ContractClauseUpdateReqVO extends ContractClauseBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7146")
|
||||||
|
@NotNull(message = "编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contracttemplate;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import javax.servlet.http.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.CommonResult;
|
||||||
|
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contracttemplate.ContractTemplateDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.contracttemplate.ContractTemplateConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.service.contracttemplate.ContractTemplateService;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 合同模板")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/xxjj/contract-template")
|
||||||
|
@Validated
|
||||||
|
public class ContractTemplateController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractTemplateService contractTemplateService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建合同模板")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-template:create')")
|
||||||
|
public CommonResult<Long> createContractTemplate(@Valid @RequestBody ContractTemplateCreateReqVO createReqVO) {
|
||||||
|
return success(contractTemplateService.createContractTemplate(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新合同模板")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-template:update')")
|
||||||
|
public CommonResult<Boolean> updateContractTemplate(@Valid @RequestBody ContractTemplateUpdateReqVO updateReqVO) {
|
||||||
|
contractTemplateService.updateContractTemplate(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除合同模板")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-template:delete')")
|
||||||
|
public CommonResult<Boolean> deleteContractTemplate(@RequestParam("id") Long id) {
|
||||||
|
contractTemplateService.deleteContractTemplate(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得合同模板")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-template:query')")
|
||||||
|
public CommonResult<ContractTemplateRespVO> getContractTemplate(@RequestParam("id") Long id) {
|
||||||
|
ContractTemplateDO contractTemplate = contractTemplateService.getContractTemplate(id);
|
||||||
|
return success(ContractTemplateConvert.INSTANCE.convert(contractTemplate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@Operation(summary = "获得合同模板列表")
|
||||||
|
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-template:query')")
|
||||||
|
public CommonResult<List<ContractTemplateRespVO>> getContractTemplateList(@RequestParam("ids") Collection<Long> ids) {
|
||||||
|
List<ContractTemplateDO> list = contractTemplateService.getContractTemplateList(ids);
|
||||||
|
return success(ContractTemplateConvert.INSTANCE.convertList(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得合同模板分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-template:query')")
|
||||||
|
public CommonResult<PageResult<ContractTemplateRespVO>> getContractTemplatePage(@Valid ContractTemplatePageReqVO pageVO) {
|
||||||
|
PageResult<ContractTemplateDO> pageResult = contractTemplateService.getContractTemplatePage(pageVO);
|
||||||
|
return success(ContractTemplateConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出合同模板 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:contract-template:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportContractTemplateExcel(@Valid ContractTemplateExportReqVO exportReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
List<ContractTemplateDO> list = contractTemplateService.getContractTemplateList(exportReqVO);
|
||||||
|
// 导出 Excel
|
||||||
|
List<ContractTemplateExcelVO> datas = ContractTemplateConvert.INSTANCE.convertList02(list);
|
||||||
|
ExcelUtils.write(response, "合同模板.xls", "数据", ContractTemplateExcelVO.class, datas);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同模板创建 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ContractTemplateCreateReqVO extends ContractTemplateBaseVO {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
|
||||||
|
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同模板 Excel VO
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ContractTemplateExcelVO {
|
||||||
|
|
||||||
|
@ExcelProperty("编号")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ExcelProperty("模板名称")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "合同模板类型 参考字典contract_template_type", converter = DictConvert.class)
|
||||||
|
@DictFormat("contract_template_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "状态 参考字典contract_template_status", converter = DictConvert.class)
|
||||||
|
@DictFormat("contract_template_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@ExcelProperty("模板描述")
|
||||||
|
private String describe;
|
||||||
|
|
||||||
|
@ExcelProperty("配置项 json格式")
|
||||||
|
private String options;
|
||||||
|
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageParam;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同模板分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ContractTemplatePageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "模板名称", example = "李四")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "合同模板类型 参考字典contract_template_type", example = "1")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "状态 参考字典contract_template_status", example = "1")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同模板 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ContractTemplateRespVO extends ContractTemplateBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21453")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 合同模板更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class ContractTemplateUpdateReqVO extends ContractTemplateBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21453")
|
||||||
|
@NotNull(message = "编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.convert.contractclause;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contractclause.ContractClauseDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同条款 Convert
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ContractClauseConvert {
|
||||||
|
|
||||||
|
ContractClauseConvert INSTANCE = Mappers.getMapper(ContractClauseConvert.class);
|
||||||
|
|
||||||
|
ContractClauseDO convert(ContractClauseCreateReqVO bean);
|
||||||
|
|
||||||
|
ContractClauseDO convert(ContractClauseUpdateReqVO bean);
|
||||||
|
|
||||||
|
ContractClauseRespVO convert(ContractClauseDO bean);
|
||||||
|
|
||||||
|
List<ContractClauseRespVO> convertList(List<ContractClauseDO> list);
|
||||||
|
|
||||||
|
PageResult<ContractClauseRespVO> convertPage(PageResult<ContractClauseDO> page);
|
||||||
|
|
||||||
|
List<ContractClauseExcelVO> convertList02(List<ContractClauseDO> list);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.convert.contracttemplate;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contracttemplate.ContractTemplateDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同模板 Convert
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ContractTemplateConvert {
|
||||||
|
|
||||||
|
ContractTemplateConvert INSTANCE = Mappers.getMapper(ContractTemplateConvert.class);
|
||||||
|
|
||||||
|
ContractTemplateDO convert(ContractTemplateCreateReqVO bean);
|
||||||
|
|
||||||
|
ContractTemplateDO convert(ContractTemplateUpdateReqVO bean);
|
||||||
|
|
||||||
|
ContractTemplateRespVO convert(ContractTemplateDO bean);
|
||||||
|
|
||||||
|
List<ContractTemplateRespVO> convertList(List<ContractTemplateDO> list);
|
||||||
|
|
||||||
|
PageResult<ContractTemplateRespVO> convertPage(PageResult<ContractTemplateDO> page);
|
||||||
|
|
||||||
|
List<ContractTemplateExcelVO> convertList02(List<ContractTemplateDO> list);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.dataobject.contractclause;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同条款 DO
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@TableName("xxjj_contract_clause")
|
||||||
|
@KeySequence("xxjj_contract_clause_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ContractClauseDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 条款标题
|
||||||
|
*/
|
||||||
|
private String title;
|
||||||
|
/**
|
||||||
|
* 条款类型 参考字典contract_clause_type
|
||||||
|
*
|
||||||
|
* 枚举 {@link TODO contract_clause_type 对应的类}
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
/**
|
||||||
|
* 状态 参考字典contract_clause_status
|
||||||
|
*
|
||||||
|
* 枚举 {@link TODO contract_clause_status 对应的类}
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 条款内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
/**
|
||||||
|
* 权重值
|
||||||
|
*/
|
||||||
|
private Short weight;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
/**
|
||||||
|
* 附件
|
||||||
|
*/
|
||||||
|
private String attachment;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.dataobject.contracttemplate;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同模板 DO
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@TableName("xxjj_contract_template")
|
||||||
|
@KeySequence("xxjj_contract_template_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ContractTemplateDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 模板名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 合同模板类型 参考字典contract_template_type
|
||||||
|
*
|
||||||
|
* 枚举 {@link TODO contract_template_type 对应的类}
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
/**
|
||||||
|
* 状态 参考字典contract_template_status
|
||||||
|
*
|
||||||
|
* 枚举 {@link TODO contract_template_status 对应的类}
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 模板描述
|
||||||
|
*/
|
||||||
|
private String describe;
|
||||||
|
/**
|
||||||
|
* 配置项 json格式
|
||||||
|
*/
|
||||||
|
private String options;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.mysql.contractclause;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contractclause.ContractClauseDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同条款 Mapper
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ContractClauseMapper extends BaseMapperX<ContractClauseDO> {
|
||||||
|
|
||||||
|
default PageResult<ContractClauseDO> selectPage(ContractClausePageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<ContractClauseDO>()
|
||||||
|
.eqIfPresent(ContractClauseDO::getTitle, reqVO.getTitle())
|
||||||
|
.eqIfPresent(ContractClauseDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(ContractClauseDO::getStatus, reqVO.getStatus())
|
||||||
|
.betweenIfPresent(ContractClauseDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(ContractClauseDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<ContractClauseDO> selectList(ContractClauseExportReqVO reqVO) {
|
||||||
|
return selectList(new LambdaQueryWrapperX<ContractClauseDO>()
|
||||||
|
.eqIfPresent(ContractClauseDO::getTitle, reqVO.getTitle())
|
||||||
|
.eqIfPresent(ContractClauseDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(ContractClauseDO::getStatus, reqVO.getStatus())
|
||||||
|
.betweenIfPresent(ContractClauseDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(ContractClauseDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.mysql.contracttemplate;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contracttemplate.ContractTemplateDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同模板 Mapper
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ContractTemplateMapper extends BaseMapperX<ContractTemplateDO> {
|
||||||
|
|
||||||
|
default PageResult<ContractTemplateDO> selectPage(ContractTemplatePageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<ContractTemplateDO>()
|
||||||
|
.likeIfPresent(ContractTemplateDO::getName, reqVO.getName())
|
||||||
|
.eqIfPresent(ContractTemplateDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(ContractTemplateDO::getStatus, reqVO.getStatus())
|
||||||
|
.betweenIfPresent(ContractTemplateDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(ContractTemplateDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<ContractTemplateDO> selectList(ContractTemplateExportReqVO reqVO) {
|
||||||
|
return selectList(new LambdaQueryWrapperX<ContractTemplateDO>()
|
||||||
|
.likeIfPresent(ContractTemplateDO::getName, reqVO.getName())
|
||||||
|
.eqIfPresent(ContractTemplateDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(ContractTemplateDO::getStatus, reqVO.getStatus())
|
||||||
|
.betweenIfPresent(ContractTemplateDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(ContractTemplateDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.contractclause;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contractclause.ContractClauseDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同条款 Service 接口
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
public interface ContractClauseService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建合同条款
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createContractClause(@Valid ContractClauseCreateReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新合同条款
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateContractClause(@Valid ContractClauseUpdateReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除合同条款
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteContractClause(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同条款
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 合同条款
|
||||||
|
*/
|
||||||
|
ContractClauseDO getContractClause(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同条款列表
|
||||||
|
*
|
||||||
|
* @param ids 编号
|
||||||
|
* @return 合同条款列表
|
||||||
|
*/
|
||||||
|
List<ContractClauseDO> getContractClauseList(Collection<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同条款分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 合同条款分页
|
||||||
|
*/
|
||||||
|
PageResult<ContractClauseDO> getContractClausePage(ContractClausePageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同条款列表, 用于 Excel 导出
|
||||||
|
*
|
||||||
|
* @param exportReqVO 查询条件
|
||||||
|
* @return 合同条款列表
|
||||||
|
*/
|
||||||
|
List<ContractClauseDO> getContractClauseList(ContractClauseExportReqVO exportReqVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.contractclause;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contractclause.ContractClauseDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.contractclause.ContractClauseConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.contractclause.ContractClauseMapper;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同条款 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class ContractClauseServiceImpl implements ContractClauseService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractClauseMapper contractClauseMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createContractClause(ContractClauseCreateReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
ContractClauseDO contractClause = ContractClauseConvert.INSTANCE.convert(createReqVO);
|
||||||
|
contractClauseMapper.insert(contractClause);
|
||||||
|
// 返回
|
||||||
|
return contractClause.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateContractClause(ContractClauseUpdateReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateContractClauseExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
ContractClauseDO updateObj = ContractClauseConvert.INSTANCE.convert(updateReqVO);
|
||||||
|
contractClauseMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteContractClause(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validateContractClauseExists(id);
|
||||||
|
// 删除
|
||||||
|
contractClauseMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateContractClauseExists(Long id) {
|
||||||
|
if (contractClauseMapper.selectById(id) == null) {
|
||||||
|
throw exception(CONTRACT_CLAUSE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContractClauseDO getContractClause(Long id) {
|
||||||
|
return contractClauseMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ContractClauseDO> getContractClauseList(Collection<Long> ids) {
|
||||||
|
return contractClauseMapper.selectBatchIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<ContractClauseDO> getContractClausePage(ContractClausePageReqVO pageReqVO) {
|
||||||
|
return contractClauseMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ContractClauseDO> getContractClauseList(ContractClauseExportReqVO exportReqVO) {
|
||||||
|
return contractClauseMapper.selectList(exportReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.contracttemplate;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contracttemplate.ContractTemplateDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同模板 Service 接口
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
public interface ContractTemplateService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建合同模板
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createContractTemplate(@Valid ContractTemplateCreateReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新合同模板
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateContractTemplate(@Valid ContractTemplateUpdateReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除合同模板
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteContractTemplate(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同模板
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 合同模板
|
||||||
|
*/
|
||||||
|
ContractTemplateDO getContractTemplate(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同模板列表
|
||||||
|
*
|
||||||
|
* @param ids 编号
|
||||||
|
* @return 合同模板列表
|
||||||
|
*/
|
||||||
|
List<ContractTemplateDO> getContractTemplateList(Collection<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同模板分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 合同模板分页
|
||||||
|
*/
|
||||||
|
PageResult<ContractTemplateDO> getContractTemplatePage(ContractTemplatePageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得合同模板列表, 用于 Excel 导出
|
||||||
|
*
|
||||||
|
* @param exportReqVO 查询条件
|
||||||
|
* @return 合同模板列表
|
||||||
|
*/
|
||||||
|
List<ContractTemplateDO> getContractTemplateList(ContractTemplateExportReqVO exportReqVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.contracttemplate;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contracttemplate.ContractTemplateDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.contracttemplate.ContractTemplateConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.contracttemplate.ContractTemplateMapper;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同模板 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class ContractTemplateServiceImpl implements ContractTemplateService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractTemplateMapper contractTemplateMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createContractTemplate(ContractTemplateCreateReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
ContractTemplateDO contractTemplate = ContractTemplateConvert.INSTANCE.convert(createReqVO);
|
||||||
|
contractTemplateMapper.insert(contractTemplate);
|
||||||
|
// 返回
|
||||||
|
return contractTemplate.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateContractTemplate(ContractTemplateUpdateReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateContractTemplateExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
ContractTemplateDO updateObj = ContractTemplateConvert.INSTANCE.convert(updateReqVO);
|
||||||
|
contractTemplateMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteContractTemplate(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validateContractTemplateExists(id);
|
||||||
|
// 删除
|
||||||
|
contractTemplateMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateContractTemplateExists(Long id) {
|
||||||
|
if (contractTemplateMapper.selectById(id) == null) {
|
||||||
|
throw exception(CONTRACT_TEMPLATE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ContractTemplateDO getContractTemplate(Long id) {
|
||||||
|
return contractTemplateMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ContractTemplateDO> getContractTemplateList(Collection<Long> ids) {
|
||||||
|
return contractTemplateMapper.selectBatchIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<ContractTemplateDO> getContractTemplatePage(ContractTemplatePageReqVO pageReqVO) {
|
||||||
|
return contractTemplateMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ContractTemplateDO> getContractTemplateList(ContractTemplateExportReqVO exportReqVO) {
|
||||||
|
return contractTemplateMapper.selectList(exportReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,175 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.contractclause;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contractclause.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contractclause.ContractClauseDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.contractclause.ContractClauseMapper;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.hutool.core.util.RandomUtil.*;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ContractClauseServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Import(ContractClauseServiceImpl.class)
|
||||||
|
public class ContractClauseServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractClauseServiceImpl contractClauseService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractClauseMapper contractClauseMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateContractClause_success() {
|
||||||
|
// 准备参数
|
||||||
|
ContractClauseCreateReqVO reqVO = randomPojo(ContractClauseCreateReqVO.class);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long contractClauseId = contractClauseService.createContractClause(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(contractClauseId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
ContractClauseDO contractClause = contractClauseMapper.selectById(contractClauseId);
|
||||||
|
assertPojoEquals(reqVO, contractClause);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateContractClause_success() {
|
||||||
|
// mock 数据
|
||||||
|
ContractClauseDO dbContractClause = randomPojo(ContractClauseDO.class);
|
||||||
|
contractClauseMapper.insert(dbContractClause);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
ContractClauseUpdateReqVO reqVO = randomPojo(ContractClauseUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbContractClause.getId()); // 设置更新的 ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
contractClauseService.updateContractClause(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
ContractClauseDO contractClause = contractClauseMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, contractClause);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateContractClause_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
ContractClauseUpdateReqVO reqVO = randomPojo(ContractClauseUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> contractClauseService.updateContractClause(reqVO), CONTRACT_CLAUSE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteContractClause_success() {
|
||||||
|
// mock 数据
|
||||||
|
ContractClauseDO dbContractClause = randomPojo(ContractClauseDO.class);
|
||||||
|
contractClauseMapper.insert(dbContractClause);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbContractClause.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
contractClauseService.deleteContractClause(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(contractClauseMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteContractClause_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> contractClauseService.deleteContractClause(id), CONTRACT_CLAUSE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetContractClausePage() {
|
||||||
|
// mock 数据
|
||||||
|
ContractClauseDO dbContractClause = randomPojo(ContractClauseDO.class, o -> { // 等会查询到
|
||||||
|
o.setTitle(null);
|
||||||
|
o.setType(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
contractClauseMapper.insert(dbContractClause);
|
||||||
|
// 测试 title 不匹配
|
||||||
|
contractClauseMapper.insert(cloneIgnoreId(dbContractClause, o -> o.setTitle(null)));
|
||||||
|
// 测试 type 不匹配
|
||||||
|
contractClauseMapper.insert(cloneIgnoreId(dbContractClause, o -> o.setType(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
contractClauseMapper.insert(cloneIgnoreId(dbContractClause, o -> o.setStatus(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
contractClauseMapper.insert(cloneIgnoreId(dbContractClause, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
ContractClausePageReqVO reqVO = new ContractClausePageReqVO();
|
||||||
|
reqVO.setTitle(null);
|
||||||
|
reqVO.setType(null);
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<ContractClauseDO> pageResult = contractClauseService.getContractClausePage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbContractClause, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetContractClauseList() {
|
||||||
|
// mock 数据
|
||||||
|
ContractClauseDO dbContractClause = randomPojo(ContractClauseDO.class, o -> { // 等会查询到
|
||||||
|
o.setTitle(null);
|
||||||
|
o.setType(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
contractClauseMapper.insert(dbContractClause);
|
||||||
|
// 测试 title 不匹配
|
||||||
|
contractClauseMapper.insert(cloneIgnoreId(dbContractClause, o -> o.setTitle(null)));
|
||||||
|
// 测试 type 不匹配
|
||||||
|
contractClauseMapper.insert(cloneIgnoreId(dbContractClause, o -> o.setType(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
contractClauseMapper.insert(cloneIgnoreId(dbContractClause, o -> o.setStatus(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
contractClauseMapper.insert(cloneIgnoreId(dbContractClause, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
ContractClauseExportReqVO reqVO = new ContractClauseExportReqVO();
|
||||||
|
reqVO.setTitle(null);
|
||||||
|
reqVO.setType(null);
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<ContractClauseDO> list = contractClauseService.getContractClauseList(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, list.size());
|
||||||
|
assertPojoEquals(dbContractClause, list.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,175 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.contracttemplate;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.contracttemplate.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.contracttemplate.ContractTemplateDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.contracttemplate.ContractTemplateMapper;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.hutool.core.util.RandomUtil.*;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ContractTemplateServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Import(ContractTemplateServiceImpl.class)
|
||||||
|
public class ContractTemplateServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractTemplateServiceImpl contractTemplateService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ContractTemplateMapper contractTemplateMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateContractTemplate_success() {
|
||||||
|
// 准备参数
|
||||||
|
ContractTemplateCreateReqVO reqVO = randomPojo(ContractTemplateCreateReqVO.class);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long contractTemplateId = contractTemplateService.createContractTemplate(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(contractTemplateId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
ContractTemplateDO contractTemplate = contractTemplateMapper.selectById(contractTemplateId);
|
||||||
|
assertPojoEquals(reqVO, contractTemplate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateContractTemplate_success() {
|
||||||
|
// mock 数据
|
||||||
|
ContractTemplateDO dbContractTemplate = randomPojo(ContractTemplateDO.class);
|
||||||
|
contractTemplateMapper.insert(dbContractTemplate);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
ContractTemplateUpdateReqVO reqVO = randomPojo(ContractTemplateUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbContractTemplate.getId()); // 设置更新的 ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
contractTemplateService.updateContractTemplate(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
ContractTemplateDO contractTemplate = contractTemplateMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, contractTemplate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateContractTemplate_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
ContractTemplateUpdateReqVO reqVO = randomPojo(ContractTemplateUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> contractTemplateService.updateContractTemplate(reqVO), CONTRACT_TEMPLATE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteContractTemplate_success() {
|
||||||
|
// mock 数据
|
||||||
|
ContractTemplateDO dbContractTemplate = randomPojo(ContractTemplateDO.class);
|
||||||
|
contractTemplateMapper.insert(dbContractTemplate);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbContractTemplate.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
contractTemplateService.deleteContractTemplate(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(contractTemplateMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteContractTemplate_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> contractTemplateService.deleteContractTemplate(id), CONTRACT_TEMPLATE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetContractTemplatePage() {
|
||||||
|
// mock 数据
|
||||||
|
ContractTemplateDO dbContractTemplate = randomPojo(ContractTemplateDO.class, o -> { // 等会查询到
|
||||||
|
o.setName(null);
|
||||||
|
o.setType(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
contractTemplateMapper.insert(dbContractTemplate);
|
||||||
|
// 测试 name 不匹配
|
||||||
|
contractTemplateMapper.insert(cloneIgnoreId(dbContractTemplate, o -> o.setName(null)));
|
||||||
|
// 测试 type 不匹配
|
||||||
|
contractTemplateMapper.insert(cloneIgnoreId(dbContractTemplate, o -> o.setType(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
contractTemplateMapper.insert(cloneIgnoreId(dbContractTemplate, o -> o.setStatus(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
contractTemplateMapper.insert(cloneIgnoreId(dbContractTemplate, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
ContractTemplatePageReqVO reqVO = new ContractTemplatePageReqVO();
|
||||||
|
reqVO.setName(null);
|
||||||
|
reqVO.setType(null);
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<ContractTemplateDO> pageResult = contractTemplateService.getContractTemplatePage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbContractTemplate, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetContractTemplateList() {
|
||||||
|
// mock 数据
|
||||||
|
ContractTemplateDO dbContractTemplate = randomPojo(ContractTemplateDO.class, o -> { // 等会查询到
|
||||||
|
o.setName(null);
|
||||||
|
o.setType(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
contractTemplateMapper.insert(dbContractTemplate);
|
||||||
|
// 测试 name 不匹配
|
||||||
|
contractTemplateMapper.insert(cloneIgnoreId(dbContractTemplate, o -> o.setName(null)));
|
||||||
|
// 测试 type 不匹配
|
||||||
|
contractTemplateMapper.insert(cloneIgnoreId(dbContractTemplate, o -> o.setType(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
contractTemplateMapper.insert(cloneIgnoreId(dbContractTemplate, o -> o.setStatus(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
contractTemplateMapper.insert(cloneIgnoreId(dbContractTemplate, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
ContractTemplateExportReqVO reqVO = new ContractTemplateExportReqVO();
|
||||||
|
reqVO.setName(null);
|
||||||
|
reqVO.setType(null);
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<ContractTemplateDO> list = contractTemplateService.getContractTemplateList(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, list.size());
|
||||||
|
assertPojoEquals(dbContractTemplate, list.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ContractClauseVO {
|
||||||
|
id: number
|
||||||
|
title: string
|
||||||
|
type: string
|
||||||
|
status: string
|
||||||
|
content: string
|
||||||
|
weight: number
|
||||||
|
remark: string
|
||||||
|
attachment: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询合同条款列表
|
||||||
|
export const getContractClausePage = async (params) => {
|
||||||
|
return await request.get({ url: `/xxjj/contract-clause/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询合同条款详情
|
||||||
|
export const getContractClause = async (id: number) => {
|
||||||
|
return await request.get({ url: `/xxjj/contract-clause/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增合同条款
|
||||||
|
export const createContractClause = async (data: ContractClauseVO) => {
|
||||||
|
return await request.post({ url: `/xxjj/contract-clause/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改合同条款
|
||||||
|
export const updateContractClause = async (data: ContractClauseVO) => {
|
||||||
|
return await request.put({ url: `/xxjj/contract-clause/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除合同条款
|
||||||
|
export const deleteContractClause = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/xxjj/contract-clause/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出合同条款 Excel
|
||||||
|
export const exportContractClause = async (params) => {
|
||||||
|
return await request.download({ url: `/xxjj/contract-clause/export-excel`, params })
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export interface ContractTemplateVO {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
type: string
|
||||||
|
status: string
|
||||||
|
describe: string
|
||||||
|
options: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询合同模板列表
|
||||||
|
export const getContractTemplatePage = async (params) => {
|
||||||
|
return await request.get({ url: `/xxjj/contract-template/page`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询合同模板详情
|
||||||
|
export const getContractTemplate = async (id: number) => {
|
||||||
|
return await request.get({ url: `/xxjj/contract-template/get?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增合同模板
|
||||||
|
export const createContractTemplate = async (data: ContractTemplateVO) => {
|
||||||
|
return await request.post({ url: `/xxjj/contract-template/create`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改合同模板
|
||||||
|
export const updateContractTemplate = async (data: ContractTemplateVO) => {
|
||||||
|
return await request.put({ url: `/xxjj/contract-template/update`, data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除合同模板
|
||||||
|
export const deleteContractTemplate = async (id: number) => {
|
||||||
|
return await request.delete({ url: `/xxjj/contract-template/delete?id=` + id })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出合同模板 Excel
|
||||||
|
export const exportContractTemplate = async (params) => {
|
||||||
|
return await request.download({ url: `/xxjj/contract-template/export-excel`, params })
|
||||||
|
}
|
Loading…
Reference in new issue