Compare commits

..

4 Commits

Author SHA1 Message Date
ccongli 48f9bdca7c Merge branch 'contract'
1 year ago
ccongli 45a8e573e0 合同基础、详情信息业务开发v3
1 year ago
ccongli a5a703479a 合同基础、详情信息业务开发v2
1 year ago
ccongli c79db68acb 合同基础、详情信息业务开发v1
1 year ago

@ -0,0 +1,4 @@
/**
* System API API
*/
package com.yunxi.scm.module.xxjj.api;

@ -2,7 +2,13 @@ package com.yunxi.scm.module.xxjj.enums;
import com.yunxi.scm.framework.common.exception.ErrorCode;
/**
*
*
* 使 1-003-000-000
*/
public interface ErrorCodeConstants {
// ========== 物料行业 TODO 补充编号 ==========
ErrorCode MATERIAL_INDUSTRY_NOT_EXISTS = new ErrorCode(1002025002, "物料行业不存在");
// ========== 物料类型 TODO 补充编号 ==========
@ -19,7 +25,7 @@ public interface ErrorCodeConstants {
ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1002025008, "客户信息不存在");
// ========== 工单 TODO 补充编号 ==========
ErrorCode WORK_ORDER_NOT_EXISTS = new ErrorCode(1002025009, "工单不存在");
// ========== 供应商 TODO 补充编号 ==========
// ========== 供应商 TODO 补充编号 ==========
ErrorCode SUPPLIER_NOT_EXISTS = new ErrorCode(1002026010, "供应商不存在");
// ========== 业务线 TODO 补充编号 ==========
ErrorCode BUSINESS_LINE_NOT_EXISTS = new ErrorCode(1002025011, "业务线不存在");
@ -69,6 +75,22 @@ public interface ErrorCodeConstants {
ErrorCode ENTERPRISE_CONTRACT_NOT_EXISTS = new ErrorCode(1002004016, "企业合约不存在");
ErrorCode SUBJECT_BASIC_NOT_EXISTS = new ErrorCode(1002004017, "基础业务信息表(客户,供应商,服务商主体)不存在");
// ========== 主体跟进管理 TODO 补充编号 ==========
ErrorCode SUBJECT_FOLLOW_MANAGEMENT_NOT_EXISTS = new ErrorCode(1002004018, "主体跟进管理不存在");
/**
* 使 1-005-000-000
*/
// ========== 合同信息 500100001 ==========
ErrorCode CONTRACT_NOT_EXISTS = new ErrorCode(1005000001, "合同信息不存在");
// ========== 合同详情信息 500100001 ==========
ErrorCode CONTRACT_INFO_NOT_EXISTS = new ErrorCode(1005000002, "合同详情信息不存在");
}

@ -0,0 +1,102 @@
package com.yunxi.scm.module.xxjj.controller.admin.contract;
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.contract.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contract.ContractDO;
import com.yunxi.scm.module.xxjj.convert.contract.ContractConvert;
import com.yunxi.scm.module.xxjj.service.contract.ContractService;
@Tag(name = "管理后台 - 合同信息")
@RestController
@RequestMapping("/xxjj/contract")
@Validated
public class ContractController {
@Resource
private ContractService contractService;
@PostMapping("/create")
@Operation(summary = "创建合同信息")
@PreAuthorize("@ss.hasPermission('xxjj:contract:create')")
public CommonResult<Long> createContract(@Valid @RequestBody ContractCreateReqVO createReqVO) {
return success(contractService.createContract(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新合同信息")
@PreAuthorize("@ss.hasPermission('xxjj:contract:update')")
public CommonResult<Boolean> updateContract(@Valid @RequestBody ContractUpdateReqVO updateReqVO) {
contractService.updateContract(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除合同信息")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('xxjj:contract:delete')")
public CommonResult<Boolean> deleteContract(@RequestParam("id") Long id) {
contractService.deleteContract(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得合同信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:contract:query')")
public CommonResult<ContractRespVO> getContract(@RequestParam("id") Long id) {
ContractDO contract = contractService.getContract(id);
return success(ContractConvert.INSTANCE.convert(contract));
}
@GetMapping("/list")
@Operation(summary = "获得合同信息列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('xxjj:contract:query')")
public CommonResult<List<ContractRespVO>> getContractList(@RequestParam("ids") Collection<Long> ids) {
List<ContractDO> list = contractService.getContractList(ids);
return success(ContractConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得合同信息分页")
@PreAuthorize("@ss.hasPermission('xxjj:contract:query')")
public CommonResult<PageResult<ContractRespVO>> getContractPage(@Valid ContractPageReqVO pageVO) {
PageResult<ContractDO> pageResult = contractService.getContractPage(pageVO);
return success(ContractConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出合同信息 Excel")
@PreAuthorize("@ss.hasPermission('xxjj:contract:export')")
@OperateLog(type = EXPORT)
public void exportContractExcel(@Valid ContractExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ContractDO> list = contractService.getContractList(exportReqVO);
// 导出 Excel
List<ContractExcelVO> datas = ContractConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "合同信息.xls", "数据", ContractExcelVO.class, datas);
}
}

@ -0,0 +1,70 @@
package com.yunxi.scm.module.xxjj.controller.admin.contract.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class ContractBaseVO {
@Schema(description = "合同状态", example = "1")
private String contractStatus;
@Schema(description = "合同类型", example = "2")
private String contractType;
@Schema(description = "合同模板", example = "6806")
private Long contractTemplateId;
@Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "合同编号不能为空")
private Long contractNumber;
@Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotNull(message = "合同名称不能为空")
private String contractName;
@Schema(description = "供应商/客户名称id")
private Long subject;
@Schema(description = "部门id", example = "10183")
private Long deptId;
@Schema(description = "对方合同编号")
private String contractNo;
@Schema(description = "签订地点", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "签订地点不能为空")
private String contractSigned;
@Schema(description = "签订时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "签订时间不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime contractSignedTime;
@Schema(description = "关联业务线", requiredMode = Schema.RequiredMode.REQUIRED, example = "32066")
@NotNull(message = "关联业务线不能为空")
private Long businessId;
@Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "业务类型不能为空")
private String businessType;
@Schema(description = "申报时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "申报时间不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime declarationTime;
}

@ -0,0 +1,14 @@
package com.yunxi.scm.module.xxjj.controller.admin.contract.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 ContractCreateReqVO extends ContractBaseVO {
}

@ -0,0 +1,72 @@
package com.yunxi.scm.module.xxjj.controller.admin.contract.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
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 ContractExcelVO {
@ExcelProperty("编号")
private Long id;
@ExcelProperty(value = "合同状态", converter = DictConvert.class)
@DictFormat("contract_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String contractStatus;
@ExcelProperty(value = "合同类型", converter = DictConvert.class)
@DictFormat("contract_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String contractType;
@ExcelProperty("合同模板")
private Long contractTemplateId;
@ExcelProperty("合同编号")
private Long contractNumber;
@ExcelProperty("合同名称")
private String contractName;
@ExcelProperty("供应商/客户名称id")
private Long subject;
@ExcelProperty("部门id")
private Long deptId;
@ExcelProperty("对方合同编号")
private String contractNo;
@ExcelProperty("签订地点")
private String contractSigned;
@ExcelProperty("签订时间")
private LocalDateTime contractSignedTime;
@ExcelProperty("关联业务线")
private Long businessId;
@ExcelProperty(value = "业务类型", converter = DictConvert.class)
@DictFormat("contract_business_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String businessType;
@ExcelProperty("申报时间")
private LocalDateTime declarationTime;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,61 @@
package com.yunxi.scm.module.xxjj.controller.admin.contract.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 合同信息 Excel 导出 Request VO参数和 ContractPageReqVO 是一致的")
@Data
public class ContractExportReqVO {
@Schema(description = "合同状态", example = "1")
private String contractStatus;
@Schema(description = "合同类型", example = "2")
private String contractType;
@Schema(description = "合同模板", example = "6806")
private Long contractTemplateId;
@Schema(description = "合同编号")
private Long contractNumber;
@Schema(description = "合同名称", example = "王五")
private String contractName;
@Schema(description = "供应商/客户名称id")
private Long subject;
@Schema(description = "部门id", example = "10183")
private Long deptId;
@Schema(description = "对方合同编号")
private String contractNo;
@Schema(description = "签订地点")
private String contractSigned;
@Schema(description = "签订时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] contractSignedTime;
@Schema(description = "关联业务线", example = "32066")
private Long businessId;
@Schema(description = "业务类型", example = "2")
private String businessType;
@Schema(description = "申报时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] declarationTime;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,63 @@
package com.yunxi.scm.module.xxjj.controller.admin.contract.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 ContractPageReqVO extends PageParam {
@Schema(description = "合同状态", example = "1")
private String contractStatus;
@Schema(description = "合同类型", example = "2")
private String contractType;
@Schema(description = "合同模板", example = "6806")
private Long contractTemplateId;
@Schema(description = "合同编号")
private Long contractNumber;
@Schema(description = "合同名称", example = "王五")
private String contractName;
@Schema(description = "供应商/客户名称id")
private Long subject;
@Schema(description = "部门id", example = "10183")
private Long deptId;
@Schema(description = "对方合同编号")
private String contractNo;
@Schema(description = "签订地点")
private String contractSigned;
@Schema(description = "签订时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] contractSignedTime;
@Schema(description = "关联业务线", example = "32066")
private Long businessId;
@Schema(description = "业务类型", example = "2")
private String businessType;
@Schema(description = "申报时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] declarationTime;
@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.contract.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 ContractRespVO extends ContractBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "367")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.contract.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 ContractUpdateReqVO extends ContractBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "367")
@NotNull(message = "编号不能为空")
private Long id;
}

@ -0,0 +1,102 @@
package com.yunxi.scm.module.xxjj.controller.admin.contractinfo;
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.contractinfo.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contractinfo.ContractInfoDO;
import com.yunxi.scm.module.xxjj.convert.contractinfo.ContractInfoConvert;
import com.yunxi.scm.module.xxjj.service.contractinfo.ContractInfoService;
@Tag(name = "管理后台 - 合同信息")
@RestController
@RequestMapping("/xxjj/contract-info")
@Validated
public class ContractInfoController {
@Resource
private ContractInfoService contractInfoService;
@PostMapping("/create")
@Operation(summary = "创建合同信息")
@PreAuthorize("@ss.hasPermission('xxjj:contract-info:create')")
public CommonResult<Long> createContractInfo(@Valid @RequestBody ContractInfoCreateReqVO createReqVO) {
return success(contractInfoService.createContractInfo(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新合同信息")
@PreAuthorize("@ss.hasPermission('xxjj:contract-info:update')")
public CommonResult<Boolean> updateContractInfo(@Valid @RequestBody ContractInfoUpdateReqVO updateReqVO) {
contractInfoService.updateContractInfo(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除合同信息")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('xxjj:contract-info:delete')")
public CommonResult<Boolean> deleteContractInfo(@RequestParam("id") Long id) {
contractInfoService.deleteContractInfo(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得合同信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:contract-info:query')")
public CommonResult<ContractInfoRespVO> getContractInfo(@RequestParam("id") Long id) {
ContractInfoDO contractInfo = contractInfoService.getContractInfo(id);
return success(ContractInfoConvert.INSTANCE.convert(contractInfo));
}
@GetMapping("/list")
@Operation(summary = "获得合同信息列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('xxjj:contract-info:query')")
public CommonResult<List<ContractInfoRespVO>> getContractInfoList(@RequestParam("ids") Collection<Long> ids) {
List<ContractInfoDO> list = contractInfoService.getContractInfoList(ids);
return success(ContractInfoConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得合同信息分页")
@PreAuthorize("@ss.hasPermission('xxjj:contract-info:query')")
public CommonResult<PageResult<ContractInfoRespVO>> getContractInfoPage(@Valid ContractInfoPageReqVO pageVO) {
PageResult<ContractInfoDO> pageResult = contractInfoService.getContractInfoPage(pageVO);
return success(ContractInfoConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出合同信息 Excel")
@PreAuthorize("@ss.hasPermission('xxjj:contract-info:export')")
@OperateLog(type = EXPORT)
public void exportContractInfoExcel(@Valid ContractInfoExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<ContractInfoDO> list = contractInfoService.getContractInfoList(exportReqVO);
// 导出 Excel
List<ContractInfoExcelVO> datas = ContractInfoConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "合同信息.xls", "数据", ContractInfoExcelVO.class, datas);
}
}

@ -0,0 +1,113 @@
package com.yunxi.scm.module.xxjj.controller.admin.contractinfo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class ContractInfoBaseVO {
@Schema(description = "关联合同id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "关联合同id不能为空")
private Long contractInfo;
@Schema(description = "币种0人民币 1港币 2美元 3欧元 4加币 5日元 6台币", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "币种0人民币 1港币 2美元 3欧元 4加币 5日元 6台币不能为空")
private String currency;
@Schema(description = "采购模式0以销定采 1以采定销", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "采购模式0以销定采 1以采定销不能为空")
private String procurementModel;
@Schema(description = "定价模式0锁价模式 1后结算模式", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "定价模式0锁价模式 1后结算模式不能为空")
private String pricingModel;
@Schema(description = "合同期限", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "合同期限不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime contractPeriodTime;
@Schema(description = "交货时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime deliveryTime;
@Schema(description = "交货方式0快递上门 1送货上门 2上门提货", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "交货方式0快递上门 1送货上门 2上门提货不能为空")
private String deliveryModel;
@Schema(description = "交货地点", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "交货地点不能为空")
private String deliveryLocation;
@Schema(description = "配送方式0仓配 1直送 2直通 3", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "配送方式0仓配 1直送 2直通 3不能为空")
private String deliveryMethod;
@Schema(description = "运输方式0公路 1铁路 2轮船 3空运 4", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "运输方式0公路 1铁路 2轮船 3空运 4不能为空")
private String modeTransport;
@Schema(description = "费用承担主体0甲方 1乙方", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "费用承担主体0甲方 1乙方不能为空")
private String costBearingMian;
@Schema(description = "合计金额(人民币)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "合计金额(人民币)不能为空")
private BigDecimal totalAmount;
@Schema(description = "大写金额(人民币)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "大写金额(人民币)不能为空")
private String amountCapitalization;
@Schema(description = "合同要求")
private String contractRequirement;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "合同附件")
private String contractAppendices;
@Schema(description = "附属文件")
private String ancillaryDocuments;
@Schema(description = "合同标签")
private String contractLabel;
@Schema(description = "长协合同", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "长协合同不能为空")
private String contractAgreement;
@Schema(description = "安全协议", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "安全协议不能为空")
private String securityProtocol;
@Schema(description = "扩展字段", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "扩展字段不能为空")
private String extendedField;
@Schema(description = "是否招投标0是 1", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否招投标0是 1不能为空")
private String bidding;
@Schema(description = "备注2")
private String remark2;
@Schema(description = "备注3")
private String remark3;
}

@ -0,0 +1,14 @@
package com.yunxi.scm.module.xxjj.controller.admin.contractinfo.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 ContractInfoCreateReqVO extends ContractInfoBaseVO {
}

@ -0,0 +1,100 @@
package com.yunxi.scm.module.xxjj.controller.admin.contractinfo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* Excel VO
*
* @author
*/
@Data
public class ContractInfoExcelVO {
@ExcelProperty("编号")
private Long id;
@ExcelProperty("关联合同id")
private Long contractInfo;
@ExcelProperty("币种0人民币 1港币 2美元 3欧元 4加币 5日元 6台币")
private String currency;
@ExcelProperty("采购模式0以销定采 1以采定销")
private String procurementModel;
@ExcelProperty("定价模式0锁价模式 1后结算模式")
private String pricingModel;
@ExcelProperty("合同期限")
private LocalDateTime contractPeriodTime;
@ExcelProperty("交货时间")
private LocalDateTime deliveryTime;
@ExcelProperty("交货方式0快递上门 1送货上门 2上门提货")
private String deliveryModel;
@ExcelProperty("交货地点")
private String deliveryLocation;
@ExcelProperty("配送方式0仓配 1直送 2直通 3")
private String deliveryMethod;
@ExcelProperty("运输方式0公路 1铁路 2轮船 3空运 4")
private String modeTransport;
@ExcelProperty("费用承担主体0甲方 1乙方")
private String costBearingMian;
@ExcelProperty("合计金额(人民币)")
private BigDecimal totalAmount;
@ExcelProperty("大写金额(人民币)")
private String amountCapitalization;
@ExcelProperty("合同要求")
private String contractRequirement;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("合同附件")
private String contractAppendices;
@ExcelProperty("附属文件")
private String ancillaryDocuments;
@ExcelProperty("合同标签")
private String contractLabel;
@ExcelProperty("长协合同")
private String contractAgreement;
@ExcelProperty("安全协议")
private String securityProtocol;
@ExcelProperty("扩展字段")
private String extendedField;
@ExcelProperty("是否招投标0是 1")
private String bidding;
@ExcelProperty("备注2")
private String remark2;
@ExcelProperty("备注3")
private String remark3;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,96 @@
package com.yunxi.scm.module.xxjj.controller.admin.contractinfo.vo;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 合同信息 Excel 导出 Request VO参数和 ContractInfoPageReqVO 是一致的")
@Data
public class ContractInfoExportReqVO {
@Schema(description = "关联合同id")
private Long contractInfo;
@Schema(description = "币种0人民币 1港币 2美元 3欧元 4加币 5日元 6台币")
private String currency;
@Schema(description = "采购模式0以销定采 1以采定销")
private String procurementModel;
@Schema(description = "定价模式0锁价模式 1后结算模式")
private String pricingModel;
@Schema(description = "合同期限")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] contractPeriodTime;
@Schema(description = "交货时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] deliveryTime;
@Schema(description = "交货方式0快递上门 1送货上门 2上门提货")
private String deliveryModel;
@Schema(description = "交货地点")
private String deliveryLocation;
@Schema(description = "配送方式0仓配 1直送 2直通 3")
private String deliveryMethod;
@Schema(description = "运输方式0公路 1铁路 2轮船 3空运 4")
private String modeTransport;
@Schema(description = "费用承担主体0甲方 1乙方")
private String costBearingMian;
@Schema(description = "合计金额(人民币)")
private BigDecimal totalAmount;
@Schema(description = "大写金额(人民币)")
private String amountCapitalization;
@Schema(description = "合同要求")
private String contractRequirement;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "合同附件")
private String contractAppendices;
@Schema(description = "附属文件")
private String ancillaryDocuments;
@Schema(description = "合同标签")
private String contractLabel;
@Schema(description = "长协合同")
private String contractAgreement;
@Schema(description = "安全协议")
private String securityProtocol;
@Schema(description = "扩展字段")
private String extendedField;
@Schema(description = "是否招投标0是 1")
private String bidding;
@Schema(description = "备注2")
private String remark2;
@Schema(description = "备注3")
private String remark3;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,98 @@
package com.yunxi.scm.module.xxjj.controller.admin.contractinfo.vo;
import lombok.*;
import java.math.BigDecimal;
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 ContractInfoPageReqVO extends PageParam {
@Schema(description = "关联合同id")
private Long contractInfo;
@Schema(description = "币种0人民币 1港币 2美元 3欧元 4加币 5日元 6台币")
private String currency;
@Schema(description = "采购模式0以销定采 1以采定销")
private String procurementModel;
@Schema(description = "定价模式0锁价模式 1后结算模式")
private String pricingModel;
@Schema(description = "合同期限")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] contractPeriodTime;
@Schema(description = "交货时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] deliveryTime;
@Schema(description = "交货方式0快递上门 1送货上门 2上门提货")
private String deliveryModel;
@Schema(description = "交货地点")
private String deliveryLocation;
@Schema(description = "配送方式0仓配 1直送 2直通 3")
private String deliveryMethod;
@Schema(description = "运输方式0公路 1铁路 2轮船 3空运 4")
private String modeTransport;
@Schema(description = "费用承担主体0甲方 1乙方")
private String costBearingMian;
@Schema(description = "合计金额(人民币)")
private BigDecimal totalAmount;
@Schema(description = "大写金额(人民币)")
private String amountCapitalization;
@Schema(description = "合同要求")
private String contractRequirement;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "合同附件")
private String contractAppendices;
@Schema(description = "附属文件")
private String ancillaryDocuments;
@Schema(description = "合同标签")
private String contractLabel;
@Schema(description = "长协合同")
private String contractAgreement;
@Schema(description = "安全协议")
private String securityProtocol;
@Schema(description = "扩展字段")
private String extendedField;
@Schema(description = "是否招投标0是 1")
private String bidding;
@Schema(description = "备注2")
private String remark2;
@Schema(description = "备注3")
private String remark3;
@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.contractinfo.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 ContractInfoRespVO extends ContractInfoBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21063")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.contractinfo.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 ContractInfoUpdateReqVO extends ContractInfoBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21063")
@NotNull(message = "编号不能为空")
private Long id;
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.xxjj.convert.contract;
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.contract.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contract.ContractDO;
/**
* Convert
*
* @author
*/
@Mapper
public interface ContractConvert {
ContractConvert INSTANCE = Mappers.getMapper(ContractConvert.class);
ContractDO convert(ContractCreateReqVO bean);
ContractDO convert(ContractUpdateReqVO bean);
ContractRespVO convert(ContractDO bean);
List<ContractRespVO> convertList(List<ContractDO> list);
PageResult<ContractRespVO> convertPage(PageResult<ContractDO> page);
List<ContractExcelVO> convertList02(List<ContractDO> list);
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.xxjj.convert.contractinfo;
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.contractinfo.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contractinfo.ContractInfoDO;
/**
* Convert
*
* @author
*/
@Mapper
public interface ContractInfoConvert {
ContractInfoConvert INSTANCE = Mappers.getMapper(ContractInfoConvert.class);
ContractInfoDO convert(ContractInfoCreateReqVO bean);
ContractInfoDO convert(ContractInfoUpdateReqVO bean);
ContractInfoRespVO convert(ContractInfoDO bean);
List<ContractInfoRespVO> convertList(List<ContractInfoDO> list);
PageResult<ContractInfoRespVO> convertPage(PageResult<ContractInfoDO> page);
List<ContractInfoExcelVO> convertList02(List<ContractInfoDO> list);
}

@ -0,0 +1,91 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.contract;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
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")
@KeySequence("xxjj_contract_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ContractDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*
* {@link TODO contract_status }
*/
private String contractStatus;
/**
*
*
* {@link TODO contract_type }
*/
private String contractType;
/**
*
*/
private Long contractTemplateId;
/**
*
*/
private Long contractNumber;
/**
*
*/
private String contractName;
/**
* /id
*/
private Long subject;
/**
* id
*/
private Long deptId;
/**
*
*/
private String contractNo;
/**
*
*/
private String contractSigned;
/**
*
*/
private LocalDateTime contractSignedTime;
/**
* 线
*/
private Long businessId;
/**
*
*
* {@link TODO contract_business_type }
*/
private String businessType;
/**
*
*/
private LocalDateTime declarationTime;
}

@ -0,0 +1,130 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.contractinfo;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
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_info")
@KeySequence("xxjj_contract_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ContractInfoDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
* id
*/
private Long contractInfo;
/**
* 0 1 2 3 4 5 6
*/
private String currency;
/**
* 0 1
*/
private String procurementModel;
/**
* 0 1
*/
private String pricingModel;
/**
*
*/
private LocalDateTime contractPeriodTime;
/**
*
*/
private LocalDateTime deliveryTime;
/**
* 0 1 2
*/
private String deliveryModel;
/**
*
*/
private String deliveryLocation;
/**
* 0 1 2 3
*/
private String deliveryMethod;
/**
* 0 1 2 3 4
*/
private String modeTransport;
/**
* 0 1
*/
private String costBearingMian;
/**
*
*/
private BigDecimal totalAmount;
/**
*
*/
private String amountCapitalization;
/**
*
*/
private String contractRequirement;
/**
*
*/
private String remark;
/**
*
*/
private String contractAppendices;
/**
*
*/
private String ancillaryDocuments;
/**
*
*/
private String contractLabel;
/**
*
*/
private String contractAgreement;
/**
*
*/
private String securityProtocol;
/**
*
*/
private String extendedField;
/**
* 0 1
*/
private String bidding;
/**
* 2
*/
private String remark2;
/**
* 3
*/
private String remark3;
}

@ -0,0 +1,58 @@
package com.yunxi.scm.module.xxjj.dal.mysql.contract;
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.contract.ContractDO;
import org.apache.ibatis.annotations.Mapper;
import com.yunxi.scm.module.xxjj.controller.admin.contract.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface ContractMapper extends BaseMapperX<ContractDO> {
default PageResult<ContractDO> selectPage(ContractPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ContractDO>()
.eqIfPresent(ContractDO::getContractStatus, reqVO.getContractStatus())
.eqIfPresent(ContractDO::getContractType, reqVO.getContractType())
.eqIfPresent(ContractDO::getContractTemplateId, reqVO.getContractTemplateId())
.eqIfPresent(ContractDO::getContractNumber, reqVO.getContractNumber())
.likeIfPresent(ContractDO::getContractName, reqVO.getContractName())
.eqIfPresent(ContractDO::getSubject, reqVO.getSubject())
.eqIfPresent(ContractDO::getDeptId, reqVO.getDeptId())
.eqIfPresent(ContractDO::getContractNo, reqVO.getContractNo())
.eqIfPresent(ContractDO::getContractSigned, reqVO.getContractSigned())
.betweenIfPresent(ContractDO::getContractSignedTime, reqVO.getContractSignedTime())
.eqIfPresent(ContractDO::getBusinessId, reqVO.getBusinessId())
.eqIfPresent(ContractDO::getBusinessType, reqVO.getBusinessType())
.betweenIfPresent(ContractDO::getDeclarationTime, reqVO.getDeclarationTime())
.betweenIfPresent(ContractDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ContractDO::getId));
}
default List<ContractDO> selectList(ContractExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<ContractDO>()
.eqIfPresent(ContractDO::getContractStatus, reqVO.getContractStatus())
.eqIfPresent(ContractDO::getContractType, reqVO.getContractType())
.eqIfPresent(ContractDO::getContractTemplateId, reqVO.getContractTemplateId())
.eqIfPresent(ContractDO::getContractNumber, reqVO.getContractNumber())
.likeIfPresent(ContractDO::getContractName, reqVO.getContractName())
.eqIfPresent(ContractDO::getSubject, reqVO.getSubject())
.eqIfPresent(ContractDO::getDeptId, reqVO.getDeptId())
.eqIfPresent(ContractDO::getContractNo, reqVO.getContractNo())
.eqIfPresent(ContractDO::getContractSigned, reqVO.getContractSigned())
.betweenIfPresent(ContractDO::getContractSignedTime, reqVO.getContractSignedTime())
.eqIfPresent(ContractDO::getBusinessId, reqVO.getBusinessId())
.eqIfPresent(ContractDO::getBusinessType, reqVO.getBusinessType())
.betweenIfPresent(ContractDO::getDeclarationTime, reqVO.getDeclarationTime())
.betweenIfPresent(ContractDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ContractDO::getId));
}
}

@ -0,0 +1,80 @@
package com.yunxi.scm.module.xxjj.dal.mysql.contractinfo;
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.contractinfo.ContractInfoDO;
import org.apache.ibatis.annotations.Mapper;
import com.yunxi.scm.module.xxjj.controller.admin.contractinfo.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface ContractInfoMapper extends BaseMapperX<ContractInfoDO> {
default PageResult<ContractInfoDO> selectPage(ContractInfoPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ContractInfoDO>()
.eqIfPresent(ContractInfoDO::getContractInfo, reqVO.getContractInfo())
.eqIfPresent(ContractInfoDO::getCurrency, reqVO.getCurrency())
.eqIfPresent(ContractInfoDO::getProcurementModel, reqVO.getProcurementModel())
.eqIfPresent(ContractInfoDO::getPricingModel, reqVO.getPricingModel())
.betweenIfPresent(ContractInfoDO::getContractPeriodTime, reqVO.getContractPeriodTime())
.betweenIfPresent(ContractInfoDO::getDeliveryTime, reqVO.getDeliveryTime())
.eqIfPresent(ContractInfoDO::getDeliveryModel, reqVO.getDeliveryModel())
.eqIfPresent(ContractInfoDO::getDeliveryLocation, reqVO.getDeliveryLocation())
.eqIfPresent(ContractInfoDO::getDeliveryMethod, reqVO.getDeliveryMethod())
.eqIfPresent(ContractInfoDO::getModeTransport, reqVO.getModeTransport())
.eqIfPresent(ContractInfoDO::getCostBearingMian, reqVO.getCostBearingMian())
.eqIfPresent(ContractInfoDO::getTotalAmount, reqVO.getTotalAmount())
.eqIfPresent(ContractInfoDO::getAmountCapitalization, reqVO.getAmountCapitalization())
.eqIfPresent(ContractInfoDO::getContractRequirement, reqVO.getContractRequirement())
.eqIfPresent(ContractInfoDO::getRemark, reqVO.getRemark())
.eqIfPresent(ContractInfoDO::getContractAppendices, reqVO.getContractAppendices())
.eqIfPresent(ContractInfoDO::getAncillaryDocuments, reqVO.getAncillaryDocuments())
.eqIfPresent(ContractInfoDO::getContractLabel, reqVO.getContractLabel())
.eqIfPresent(ContractInfoDO::getContractAgreement, reqVO.getContractAgreement())
.eqIfPresent(ContractInfoDO::getSecurityProtocol, reqVO.getSecurityProtocol())
.eqIfPresent(ContractInfoDO::getExtendedField, reqVO.getExtendedField())
.eqIfPresent(ContractInfoDO::getBidding, reqVO.getBidding())
.eqIfPresent(ContractInfoDO::getRemark2, reqVO.getRemark2())
.eqIfPresent(ContractInfoDO::getRemark3, reqVO.getRemark3())
.betweenIfPresent(ContractInfoDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ContractInfoDO::getId));
}
default List<ContractInfoDO> selectList(ContractInfoExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<ContractInfoDO>()
.eqIfPresent(ContractInfoDO::getContractInfo, reqVO.getContractInfo())
.eqIfPresent(ContractInfoDO::getCurrency, reqVO.getCurrency())
.eqIfPresent(ContractInfoDO::getProcurementModel, reqVO.getProcurementModel())
.eqIfPresent(ContractInfoDO::getPricingModel, reqVO.getPricingModel())
.betweenIfPresent(ContractInfoDO::getContractPeriodTime, reqVO.getContractPeriodTime())
.betweenIfPresent(ContractInfoDO::getDeliveryTime, reqVO.getDeliveryTime())
.eqIfPresent(ContractInfoDO::getDeliveryModel, reqVO.getDeliveryModel())
.eqIfPresent(ContractInfoDO::getDeliveryLocation, reqVO.getDeliveryLocation())
.eqIfPresent(ContractInfoDO::getDeliveryMethod, reqVO.getDeliveryMethod())
.eqIfPresent(ContractInfoDO::getModeTransport, reqVO.getModeTransport())
.eqIfPresent(ContractInfoDO::getCostBearingMian, reqVO.getCostBearingMian())
.eqIfPresent(ContractInfoDO::getTotalAmount, reqVO.getTotalAmount())
.eqIfPresent(ContractInfoDO::getAmountCapitalization, reqVO.getAmountCapitalization())
.eqIfPresent(ContractInfoDO::getContractRequirement, reqVO.getContractRequirement())
.eqIfPresent(ContractInfoDO::getRemark, reqVO.getRemark())
.eqIfPresent(ContractInfoDO::getContractAppendices, reqVO.getContractAppendices())
.eqIfPresent(ContractInfoDO::getAncillaryDocuments, reqVO.getAncillaryDocuments())
.eqIfPresent(ContractInfoDO::getContractLabel, reqVO.getContractLabel())
.eqIfPresent(ContractInfoDO::getContractAgreement, reqVO.getContractAgreement())
.eqIfPresent(ContractInfoDO::getSecurityProtocol, reqVO.getSecurityProtocol())
.eqIfPresent(ContractInfoDO::getExtendedField, reqVO.getExtendedField())
.eqIfPresent(ContractInfoDO::getBidding, reqVO.getBidding())
.eqIfPresent(ContractInfoDO::getRemark2, reqVO.getRemark2())
.eqIfPresent(ContractInfoDO::getRemark3, reqVO.getRemark3())
.betweenIfPresent(ContractInfoDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ContractInfoDO::getId));
}
}

@ -1,6 +1,5 @@
package com.yunxi.scm.module.xxjj.service.businessline;
import com.yunxi.scm.module.xxjj.dal.dataobject.customer.CustomerDO;
import com.yunxi.scm.module.xxjj.dal.dataobject.warehouse.WarehouseDO;
import com.yunxi.scm.module.xxjj.dal.mysql.customer.CustomerMapper;
import com.yunxi.scm.module.xxjj.dal.mysql.warehouse.WarehouseMapper;

@ -0,0 +1,70 @@
package com.yunxi.scm.module.xxjj.service.contract;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.module.xxjj.controller.admin.contract.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contract.ContractDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
/**
* Service
*
* @author
*/
public interface ContractService {
/**
*
*
* @param createReqVO
* @return
*/
Long createContract(@Valid ContractCreateReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateContract(@Valid ContractUpdateReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteContract(Long id);
/**
*
*
* @param id
* @return
*/
ContractDO getContract(Long id);
/**
*
*
* @param ids
* @return
*/
List<ContractDO> getContractList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<ContractDO> getContractPage(ContractPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<ContractDO> getContractList(ContractExportReqVO exportReqVO);
}

@ -0,0 +1,82 @@
package com.yunxi.scm.module.xxjj.service.contract;
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.contract.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contract.ContractDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.convert.contract.ContractConvert;
import com.yunxi.scm.module.xxjj.dal.mysql.contract.ContractMapper;
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 ContractServiceImpl implements ContractService {
@Resource
private ContractMapper contractMapper;
@Override
public Long createContract(ContractCreateReqVO createReqVO) {
// 插入
ContractDO contract = ContractConvert.INSTANCE.convert(createReqVO);
contractMapper.insert(contract);
// 返回
return contract.getId();
}
@Override
public void updateContract(ContractUpdateReqVO updateReqVO) {
// 校验存在
validateContractExists(updateReqVO.getId());
// 更新
ContractDO updateObj = ContractConvert.INSTANCE.convert(updateReqVO);
contractMapper.updateById(updateObj);
}
@Override
public void deleteContract(Long id) {
// 校验存在
validateContractExists(id);
// 删除
contractMapper.deleteById(id);
}
private void validateContractExists(Long id) {
if (contractMapper.selectById(id) == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
}
@Override
public ContractDO getContract(Long id) {
return contractMapper.selectById(id);
}
@Override
public List<ContractDO> getContractList(Collection<Long> ids) {
return contractMapper.selectBatchIds(ids);
}
@Override
public PageResult<ContractDO> getContractPage(ContractPageReqVO pageReqVO) {
return contractMapper.selectPage(pageReqVO);
}
@Override
public List<ContractDO> getContractList(ContractExportReqVO exportReqVO) {
return contractMapper.selectList(exportReqVO);
}
}

@ -0,0 +1,70 @@
package com.yunxi.scm.module.xxjj.service.contractinfo;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.module.xxjj.controller.admin.contractinfo.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contractinfo.ContractInfoDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
/**
* Service
*
* @author
*/
public interface ContractInfoService {
/**
*
*
* @param createReqVO
* @return
*/
Long createContractInfo(@Valid ContractInfoCreateReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateContractInfo(@Valid ContractInfoUpdateReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteContractInfo(Long id);
/**
*
*
* @param id
* @return
*/
ContractInfoDO getContractInfo(Long id);
/**
*
*
* @param ids
* @return
*/
List<ContractInfoDO> getContractInfoList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<ContractInfoDO> getContractInfoPage(ContractInfoPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<ContractInfoDO> getContractInfoList(ContractInfoExportReqVO exportReqVO);
}

@ -0,0 +1,82 @@
package com.yunxi.scm.module.xxjj.service.contractinfo;
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.contractinfo.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contractinfo.ContractInfoDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.convert.contractinfo.ContractInfoConvert;
import com.yunxi.scm.module.xxjj.dal.mysql.contractinfo.ContractInfoMapper;
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 ContractInfoServiceImpl implements ContractInfoService {
@Resource
private ContractInfoMapper contractInfoMapper;
@Override
public Long createContractInfo(ContractInfoCreateReqVO createReqVO) {
// 插入
ContractInfoDO contractInfo = ContractInfoConvert.INSTANCE.convert(createReqVO);
contractInfoMapper.insert(contractInfo);
// 返回
return contractInfo.getId();
}
@Override
public void updateContractInfo(ContractInfoUpdateReqVO updateReqVO) {
// 校验存在
validateContractInfoExists(updateReqVO.getId());
// 更新
ContractInfoDO updateObj = ContractInfoConvert.INSTANCE.convert(updateReqVO);
contractInfoMapper.updateById(updateObj);
}
@Override
public void deleteContractInfo(Long id) {
// 校验存在
validateContractInfoExists(id);
// 删除
contractInfoMapper.deleteById(id);
}
private void validateContractInfoExists(Long id) {
if (contractInfoMapper.selectById(id) == null) {
throw exception(CONTRACT_INFO_NOT_EXISTS);
}
}
@Override
public ContractInfoDO getContractInfo(Long id) {
return contractInfoMapper.selectById(id);
}
@Override
public List<ContractInfoDO> getContractInfoList(Collection<Long> ids) {
return contractInfoMapper.selectBatchIds(ids);
}
@Override
public PageResult<ContractInfoDO> getContractInfoPage(ContractInfoPageReqVO pageReqVO) {
return contractInfoMapper.selectPage(pageReqVO);
}
@Override
public List<ContractInfoDO> getContractInfoList(ContractInfoExportReqVO exportReqVO) {
return contractInfoMapper.selectList(exportReqVO);
}
}

@ -13,7 +13,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.util.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.material.MaterialDO;
import com.yunxi.scm.module.xxjj.convert.material.MaterialConvert;

@ -1,6 +1,5 @@
package com.yunxi.scm.module.xxjj.service.materialcategory;
import com.yunxi.scm.framework.common.enums.CommonStatusEnum;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryCreateReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryListReqVO;
import com.yunxi.scm.module.xxjj.controller.admin.materialcategory.vo.MaterialCategoryUpdateReqVO;

@ -9,7 +9,7 @@ import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.materialtype.MaterialTypeDO;
import com.yunxi.scm.framework.common.pojo.PageResult;

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.xxjj.dal.mysql.contract.ContractMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yunxi.scm.module.xxjj.dal.mysql.contractinfo.ContractInfoMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.brandlibrary;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.brandlibrary.BrandLibraryDO;
import com.yunxi.scm.module.xxjj.dal.mysql.brandlibrary.BrandLibraryMapper;
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 BrandLibraryServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.businessline;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.businessline.BusinessLineDO;
import com.yunxi.scm.module.xxjj.dal.mysql.businessline.BusinessLineMapper;
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 BusinessLineServiceImpl}

@ -0,0 +1,255 @@
package com.yunxi.scm.module.xxjj.service.contract;
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.contract.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contract.ContractDO;
import com.yunxi.scm.module.xxjj.dal.mysql.contract.ContractMapper;
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 ContractServiceImpl}
*
* @author
*/
@Import(ContractServiceImpl.class)
public class ContractServiceImplTest extends BaseDbUnitTest {
@Resource
private ContractServiceImpl contractService;
@Resource
private ContractMapper contractMapper;
@Test
public void testCreateContract_success() {
// 准备参数
ContractCreateReqVO reqVO = randomPojo(ContractCreateReqVO.class);
// 调用
Long contractId = contractService.createContract(reqVO);
// 断言
assertNotNull(contractId);
// 校验记录的属性是否正确
ContractDO contract = contractMapper.selectById(contractId);
assertPojoEquals(reqVO, contract);
}
@Test
public void testUpdateContract_success() {
// mock 数据
ContractDO dbContract = randomPojo(ContractDO.class);
contractMapper.insert(dbContract);// @Sql: 先插入出一条存在的数据
// 准备参数
ContractUpdateReqVO reqVO = randomPojo(ContractUpdateReqVO.class, o -> {
o.setId(dbContract.getId()); // 设置更新的 ID
});
// 调用
contractService.updateContract(reqVO);
// 校验是否更新正确
ContractDO contract = contractMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, contract);
}
@Test
public void testUpdateContract_notExists() {
// 准备参数
ContractUpdateReqVO reqVO = randomPojo(ContractUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> contractService.updateContract(reqVO), CONTRACT_NOT_EXISTS);
}
@Test
public void testDeleteContract_success() {
// mock 数据
ContractDO dbContract = randomPojo(ContractDO.class);
contractMapper.insert(dbContract);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbContract.getId();
// 调用
contractService.deleteContract(id);
// 校验数据不存在了
assertNull(contractMapper.selectById(id));
}
@Test
public void testDeleteContract_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> contractService.deleteContract(id), CONTRACT_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetContractPage() {
// mock 数据
ContractDO dbContract = randomPojo(ContractDO.class, o -> { // 等会查询到
o.setContractStatus(null);
o.setContractType(null);
o.setContractTemplateId(null);
o.setContractNumber(null);
o.setContractName(null);
o.setSubject(null);
o.setDeptId(null);
o.setContractNo(null);
o.setContractSigned(null);
o.setContractSignedTime(null);
o.setBusinessId(null);
o.setBusinessType(null);
o.setDeclarationTime(null);
o.setCreateTime(null);
});
contractMapper.insert(dbContract);
// 测试 contractStatus 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractStatus(null)));
// 测试 contractType 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractType(null)));
// 测试 contractTemplateId 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractTemplateId(null)));
// 测试 contractNumber 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractNumber(null)));
// 测试 contractName 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractName(null)));
// 测试 subject 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setSubject(null)));
// 测试 deptId 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setDeptId(null)));
// 测试 contractNo 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractNo(null)));
// 测试 contractSigned 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractSigned(null)));
// 测试 contractSignedTime 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractSignedTime(null)));
// 测试 businessId 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setBusinessId(null)));
// 测试 businessType 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setBusinessType(null)));
// 测试 declarationTime 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setDeclarationTime(null)));
// 测试 createTime 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setCreateTime(null)));
// 准备参数
ContractPageReqVO reqVO = new ContractPageReqVO();
reqVO.setContractStatus(null);
reqVO.setContractType(null);
reqVO.setContractTemplateId(null);
reqVO.setContractNumber(null);
reqVO.setContractName(null);
reqVO.setSubject(null);
reqVO.setDeptId(null);
reqVO.setContractNo(null);
reqVO.setContractSigned(null);
reqVO.setContractSignedTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setBusinessId(null);
reqVO.setBusinessType(null);
reqVO.setDeclarationTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<ContractDO> pageResult = contractService.getContractPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbContract, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetContractList() {
// mock 数据
ContractDO dbContract = randomPojo(ContractDO.class, o -> { // 等会查询到
o.setContractStatus(null);
o.setContractType(null);
o.setContractTemplateId(null);
o.setContractNumber(null);
o.setContractName(null);
o.setSubject(null);
o.setDeptId(null);
o.setContractNo(null);
o.setContractSigned(null);
o.setContractSignedTime(null);
o.setBusinessId(null);
o.setBusinessType(null);
o.setDeclarationTime(null);
o.setCreateTime(null);
});
contractMapper.insert(dbContract);
// 测试 contractStatus 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractStatus(null)));
// 测试 contractType 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractType(null)));
// 测试 contractTemplateId 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractTemplateId(null)));
// 测试 contractNumber 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractNumber(null)));
// 测试 contractName 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractName(null)));
// 测试 subject 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setSubject(null)));
// 测试 deptId 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setDeptId(null)));
// 测试 contractNo 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractNo(null)));
// 测试 contractSigned 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractSigned(null)));
// 测试 contractSignedTime 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setContractSignedTime(null)));
// 测试 businessId 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setBusinessId(null)));
// 测试 businessType 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setBusinessType(null)));
// 测试 declarationTime 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setDeclarationTime(null)));
// 测试 createTime 不匹配
contractMapper.insert(cloneIgnoreId(dbContract, o -> o.setCreateTime(null)));
// 准备参数
ContractExportReqVO reqVO = new ContractExportReqVO();
reqVO.setContractStatus(null);
reqVO.setContractType(null);
reqVO.setContractTemplateId(null);
reqVO.setContractNumber(null);
reqVO.setContractName(null);
reqVO.setSubject(null);
reqVO.setDeptId(null);
reqVO.setContractNo(null);
reqVO.setContractSigned(null);
reqVO.setContractSignedTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setBusinessId(null);
reqVO.setBusinessType(null);
reqVO.setDeclarationTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
List<ContractDO> list = contractService.getContractList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbContract, list.get(0));
}
}

@ -0,0 +1,337 @@
package com.yunxi.scm.module.xxjj.service.contractinfo;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.contractinfo.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.contractinfo.ContractInfoDO;
import com.yunxi.scm.module.xxjj.dal.mysql.contractinfo.ContractInfoMapper;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import java.util.*;
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 org.junit.jupiter.api.Assertions.*;
/**
* {@link ContractInfoServiceImpl}
*
* @author
*/
@Import(ContractInfoServiceImpl.class)
public class ContractInfoServiceImplTest extends BaseDbUnitTest {
@Resource
private ContractInfoServiceImpl contractInfoService;
@Resource
private ContractInfoMapper contractInfoMapper;
@Test
public void testCreateContractInfo_success() {
// 准备参数
ContractInfoCreateReqVO reqVO = randomPojo(ContractInfoCreateReqVO.class);
// 调用
Long contractInfoId = contractInfoService.createContractInfo(reqVO);
// 断言
assertNotNull(contractInfoId);
// 校验记录的属性是否正确
ContractInfoDO contractInfo = contractInfoMapper.selectById(contractInfoId);
assertPojoEquals(reqVO, contractInfo);
}
@Test
public void testUpdateContractInfo_success() {
// mock 数据
ContractInfoDO dbContractInfo = randomPojo(ContractInfoDO.class);
contractInfoMapper.insert(dbContractInfo);// @Sql: 先插入出一条存在的数据
// 准备参数
ContractInfoUpdateReqVO reqVO = randomPojo(ContractInfoUpdateReqVO.class, o -> {
o.setId(dbContractInfo.getId()); // 设置更新的 ID
});
// 调用
contractInfoService.updateContractInfo(reqVO);
// 校验是否更新正确
ContractInfoDO contractInfo = contractInfoMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, contractInfo);
}
@Test
public void testUpdateContractInfo_notExists() {
// 准备参数
ContractInfoUpdateReqVO reqVO = randomPojo(ContractInfoUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> contractInfoService.updateContractInfo(reqVO), CONTRACT_INFO_NOT_EXISTS);
}
@Test
public void testDeleteContractInfo_success() {
// mock 数据
ContractInfoDO dbContractInfo = randomPojo(ContractInfoDO.class);
contractInfoMapper.insert(dbContractInfo);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbContractInfo.getId();
// 调用
contractInfoService.deleteContractInfo(id);
// 校验数据不存在了
assertNull(contractInfoMapper.selectById(id));
}
@Test
public void testDeleteContractInfo_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> contractInfoService.deleteContractInfo(id), CONTRACT_INFO_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetContractInfoPage() {
// mock 数据
ContractInfoDO dbContractInfo = randomPojo(ContractInfoDO.class, o -> { // 等会查询到
o.setContractInfo(null);
o.setCurrency(null);
o.setProcurementModel(null);
o.setPricingModel(null);
o.setContractPeriodTime(null);
o.setDeliveryTime(null);
o.setDeliveryModel(null);
o.setDeliveryLocation(null);
o.setDeliveryMethod(null);
o.setModeTransport(null);
o.setCostBearingMian(null);
o.setTotalAmount(null);
o.setAmountCapitalization(null);
o.setContractRequirement(null);
o.setRemark(null);
o.setContractAppendices(null);
o.setAncillaryDocuments(null);
o.setContractLabel(null);
o.setContractAgreement(null);
o.setSecurityProtocol(null);
o.setExtendedField(null);
o.setBidding(null);
o.setRemark2(null);
o.setRemark3(null);
o.setCreateTime(null);
});
contractInfoMapper.insert(dbContractInfo);
// 测试 contractInfo 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractInfo(null)));
// 测试 currency 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setCurrency(null)));
// 测试 procurementModel 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setProcurementModel(null)));
// 测试 pricingModel 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setPricingModel(null)));
// 测试 contractPeriodTime 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractPeriodTime(null)));
// 测试 deliveryTime 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setDeliveryTime(null)));
// 测试 deliveryModel 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setDeliveryModel(null)));
// 测试 deliveryLocation 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setDeliveryLocation(null)));
// 测试 deliveryMethod 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setDeliveryMethod(null)));
// 测试 modeTransport 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setModeTransport(null)));
// 测试 costBearingMian 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setCostBearingMian(null)));
// 测试 totalAmount 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setTotalAmount(null)));
// 测试 amountCapitalization 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setAmountCapitalization(null)));
// 测试 contractRequirement 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractRequirement(null)));
// 测试 remark 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setRemark(null)));
// 测试 contractAppendices 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractAppendices(null)));
// 测试 ancillaryDocuments 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setAncillaryDocuments(null)));
// 测试 contractLabel 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractLabel(null)));
// 测试 contractAgreement 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractAgreement(null)));
// 测试 securityProtocol 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setSecurityProtocol(null)));
// 测试 extendedField 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setExtendedField(null)));
// 测试 bidding 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setBidding(null)));
// 测试 remark2 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setRemark2(null)));
// 测试 remark3 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setRemark3(null)));
// 测试 createTime 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setCreateTime(null)));
// 准备参数
ContractInfoPageReqVO reqVO = new ContractInfoPageReqVO();
reqVO.setContractInfo(null);
reqVO.setCurrency(null);
reqVO.setProcurementModel(null);
reqVO.setPricingModel(null);
reqVO.setContractPeriodTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setDeliveryTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setDeliveryModel(null);
reqVO.setDeliveryLocation(null);
reqVO.setDeliveryMethod(null);
reqVO.setModeTransport(null);
reqVO.setCostBearingMian(null);
reqVO.setTotalAmount(null);
reqVO.setAmountCapitalization(null);
reqVO.setContractRequirement(null);
reqVO.setRemark(null);
reqVO.setContractAppendices(null);
reqVO.setAncillaryDocuments(null);
reqVO.setContractLabel(null);
reqVO.setContractAgreement(null);
reqVO.setSecurityProtocol(null);
reqVO.setExtendedField(null);
reqVO.setBidding(null);
reqVO.setRemark2(null);
reqVO.setRemark3(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<ContractInfoDO> pageResult = contractInfoService.getContractInfoPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbContractInfo, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetContractInfoList() {
// mock 数据
ContractInfoDO dbContractInfo = randomPojo(ContractInfoDO.class, o -> { // 等会查询到
o.setContractInfo(null);
o.setCurrency(null);
o.setProcurementModel(null);
o.setPricingModel(null);
o.setContractPeriodTime(null);
o.setDeliveryTime(null);
o.setDeliveryModel(null);
o.setDeliveryLocation(null);
o.setDeliveryMethod(null);
o.setModeTransport(null);
o.setCostBearingMian(null);
o.setTotalAmount(null);
o.setAmountCapitalization(null);
o.setContractRequirement(null);
o.setRemark(null);
o.setContractAppendices(null);
o.setAncillaryDocuments(null);
o.setContractLabel(null);
o.setContractAgreement(null);
o.setSecurityProtocol(null);
o.setExtendedField(null);
o.setBidding(null);
o.setRemark2(null);
o.setRemark3(null);
o.setCreateTime(null);
});
contractInfoMapper.insert(dbContractInfo);
// 测试 contractInfo 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractInfo(null)));
// 测试 currency 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setCurrency(null)));
// 测试 procurementModel 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setProcurementModel(null)));
// 测试 pricingModel 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setPricingModel(null)));
// 测试 contractPeriodTime 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractPeriodTime(null)));
// 测试 deliveryTime 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setDeliveryTime(null)));
// 测试 deliveryModel 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setDeliveryModel(null)));
// 测试 deliveryLocation 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setDeliveryLocation(null)));
// 测试 deliveryMethod 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setDeliveryMethod(null)));
// 测试 modeTransport 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setModeTransport(null)));
// 测试 costBearingMian 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setCostBearingMian(null)));
// 测试 totalAmount 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setTotalAmount(null)));
// 测试 amountCapitalization 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setAmountCapitalization(null)));
// 测试 contractRequirement 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractRequirement(null)));
// 测试 remark 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setRemark(null)));
// 测试 contractAppendices 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractAppendices(null)));
// 测试 ancillaryDocuments 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setAncillaryDocuments(null)));
// 测试 contractLabel 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractLabel(null)));
// 测试 contractAgreement 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setContractAgreement(null)));
// 测试 securityProtocol 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setSecurityProtocol(null)));
// 测试 extendedField 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setExtendedField(null)));
// 测试 bidding 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setBidding(null)));
// 测试 remark2 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setRemark2(null)));
// 测试 remark3 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setRemark3(null)));
// 测试 createTime 不匹配
contractInfoMapper.insert(cloneIgnoreId(dbContractInfo, o -> o.setCreateTime(null)));
// 准备参数
ContractInfoExportReqVO reqVO = new ContractInfoExportReqVO();
reqVO.setContractInfo(null);
reqVO.setCurrency(null);
reqVO.setProcurementModel(null);
reqVO.setPricingModel(null);
reqVO.setContractPeriodTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setDeliveryTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setDeliveryModel(null);
reqVO.setDeliveryLocation(null);
reqVO.setDeliveryMethod(null);
reqVO.setModeTransport(null);
reqVO.setCostBearingMian(null);
reqVO.setTotalAmount(null);
reqVO.setAmountCapitalization(null);
reqVO.setContractRequirement(null);
reqVO.setRemark(null);
reqVO.setContractAppendices(null);
reqVO.setAncillaryDocuments(null);
reqVO.setContractLabel(null);
reqVO.setContractAgreement(null);
reqVO.setSecurityProtocol(null);
reqVO.setExtendedField(null);
reqVO.setBidding(null);
reqVO.setRemark2(null);
reqVO.setRemark3(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
List<ContractInfoDO> list = contractInfoService.getContractInfoList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbContractInfo, list.get(0));
}
}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.customer;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.customer.CustomerDO;
import com.yunxi.scm.module.xxjj.dal.mysql.customer.CustomerMapper;
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 CustomerServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.enterprisecontract;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.enterprisecontract.EnterpriseCon
import com.yunxi.scm.module.xxjj.dal.mysql.enterprisecontract.EnterpriseContractMapper;
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 EnterpriseContractServiceImpl}

@ -13,7 +13,6 @@ import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.material.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
@ -24,7 +23,6 @@ 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.*;
/**

@ -13,7 +13,6 @@ import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.materialbrand.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
@ -24,7 +23,6 @@ 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.*;
/**

@ -13,7 +13,6 @@ import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.materialindustry.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
@ -24,7 +23,6 @@ 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.*;
/**

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.materialquality;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.materialquality.MaterialQualityD
import com.yunxi.scm.module.xxjj.dal.mysql.materialquality.MaterialQualityMapper;
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 MaterialQualityServiceImpl}

@ -13,7 +13,6 @@ import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.materialtype.vo.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
@ -24,7 +23,6 @@ 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.*;
/**

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.productionprocesses;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.productionprocesses.ProductionPr
import com.yunxi.scm.module.xxjj.dal.mysql.productionprocesses.ProductionProcessesMapper;
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 ProductionProcessesServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.qualityinspection;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspect
import com.yunxi.scm.module.xxjj.dal.mysql.qualityinspection.QualityInspectionMapper;
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 QualityInspectionServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.subjectbasic;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.subjectbasic.SubjectBasicDO;
import com.yunxi.scm.module.xxjj.dal.mysql.subjectbasic.SubjectBasicMapper;
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 SubjectBasicServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.supplier;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.supplier.SupplierDO;
import com.yunxi.scm.module.xxjj.dal.mysql.supplier.SupplierMapper;
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 SupplierServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.unitlibrary;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.unitlibrary.UnitLibraryDO;
import com.yunxi.scm.module.xxjj.dal.mysql.unitlibrary.UnitLibraryMapper;
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 UnitLibraryServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.warehouse;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.warehouse.WarehouseDO;
import com.yunxi.scm.module.xxjj.dal.mysql.warehouse.WarehouseMapper;
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 WarehouseServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.warehousearea;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.warehousearea.WarehouseAreaDO;
import com.yunxi.scm.module.xxjj.dal.mysql.warehousearea.WarehouseAreaMapper;
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 WarehouseAreaServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.warehousedaywarning;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.warehousedaywarning.WarehouseDay
import com.yunxi.scm.module.xxjj.dal.mysql.warehousedaywarning.WarehouseDayWarningMapper;
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 WarehouseDayWarningServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.warehousedetail;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.warehousedetail.WarehouseDetailD
import com.yunxi.scm.module.xxjj.dal.mysql.warehousedetail.WarehouseDetailMapper;
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 WarehouseDetailServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.warehouseout;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.warehouseout.WarehouseOutDO;
import com.yunxi.scm.module.xxjj.dal.mysql.warehouseout.WarehouseOutMapper;
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 WarehouseOutServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.warehousereceipt;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.warehousereceipt.WarehouseReceip
import com.yunxi.scm.module.xxjj.dal.mysql.warehousereceipt.WarehouseReceiptMapper;
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 WarehouseReceiptServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.warehousewarning;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,14 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.warehousewarning.WarehouseWarnin
import com.yunxi.scm.module.xxjj.dal.mysql.warehousewarning.WarehouseWarningMapper;
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 WarehouseWarningServiceImpl}

@ -2,7 +2,6 @@ package com.yunxi.scm.module.xxjj.service.workorder;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
@ -13,20 +12,15 @@ import com.yunxi.scm.module.xxjj.dal.dataobject.workorder.WorkOrderDO;
import com.yunxi.scm.module.xxjj.dal.mysql.workorder.WorkOrderMapper;
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 WorkOrderServiceImpl}

@ -0,0 +1,55 @@
spring:
main:
lazy-initialization: true # 开启懒加载,加快速度
banner-mode: off # 单元测试,禁用 Banner
--- #################### 数据库相关配置 ####################
spring:
# 数据源配置项
datasource:
name: ruoyi-vue-pro
url: jdbc:h2:mem:testdb;MODE=MYSQL;DATABASE_TO_UPPER=false;NON_KEYWORDS=value; # MODE 使用 MySQL 模式DATABASE_TO_UPPER 配置表和字段使用小写
driver-class-name: org.h2.Driver
username: sa
password:
druid:
async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度
initial-size: 1 # 单元测试,配置为 1提升启动速度
sql:
init:
schema-locations: classpath:/sql/create_tables.sql
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
host: 127.0.0.1 # 地址
port: 16379 # 端口(单元测试,使用 16379 端口)
database: 0 # 数据库索引
mybatis:
lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试
--- #################### 定时任务相关配置 ####################
--- #################### 配置中心相关配置 ####################
--- #################### 服务保障相关配置 ####################
# Lock4j 配置项(单元测试,禁用 Lock4j
# Resilience4j 配置项
--- #################### 监控相关配置 ####################
--- #################### 芋道相关配置 ####################
# 芋道配置项,设置当前项目所有自定义的配置
yunxi:
info:
base-package: com.yunxi.scm.module
captcha:
timeout: 5m
width: 160
height: 60
enable: true

@ -0,0 +1,4 @@
<configuration>
<!-- 引用 Spring Boot 的 logback 基础配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
</configuration>

@ -0,0 +1,3 @@
-- SQL yunxi-module-xxjj-biz test/resources/sql/clean.sql
DELETE FROM "xxjj_contract";
DELETE FROM "xxjj_contract_info";

@ -0,0 +1,59 @@
-- SQL yunxi-module-xxjj-biz test/resources/sql/create_tables.sql
CREATE TABLE IF NOT EXISTS "xxjj_contract" (
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"contract_status" varchar,
"contract_type" varchar,
"contract_template_id" bigint,
"contract_number" bigint NOT NULL,
"contract_name" varchar NOT NULL,
"subject" bigint,
"dept_id" bigint,
"contract_no" varchar,
"contract_signed" varchar NOT NULL,
"contract_signed_time" varchar NOT NULL,
"business_id" bigint NOT NULL,
"business_type" varchar NOT NULL,
"declaration_time" varchar NOT NULL,
"creator" varchar DEFAULT '',
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" varchar DEFAULT '',
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
"deleted" bit NOT NULL DEFAULT FALSE,
"tenant_id" bigint NOT NULL,
PRIMARY KEY ("id")
) COMMENT '';
CREATE TABLE IF NOT EXISTS "xxjj_contract_info" (
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"contract_info" bigint NOT NULL,
"currency" varchar NOT NULL,
"procurement_model" varchar NOT NULL,
"pricing_model" varchar NOT NULL,
"contract_period_time" varchar NOT NULL,
"delivery_time" varchar,
"delivery_model" varchar NOT NULL,
"delivery_location" varchar NOT NULL,
"delivery_method" varchar NOT NULL,
"mode_transport" varchar NOT NULL,
"cost_bearing_mian" varchar NOT NULL,
"total_amount" varchar NOT NULL,
"amount_capitalization" varchar NOT NULL,
"contract_requirement" varchar,
"remark" varchar,
"contract_appendices" varchar,
"ancillary_documents" varchar,
"contract_label" varchar,
"contract_agreement" varchar NOT NULL,
"security_protocol" varchar NOT NULL,
"extended_field" varchar NOT NULL,
"bidding" varchar NOT NULL,
"remark2" varchar,
"remark3" varchar,
"creator" varchar DEFAULT '',
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" varchar DEFAULT '',
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
"deleted" bit NOT NULL DEFAULT FALSE,
"tenant_id" bigint NOT NULL,
PRIMARY KEY ("id")
) COMMENT '';

@ -68,7 +68,7 @@ spring:
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
host: 127.0.0.1 # 地址
host: 222.71.165.188 # 地址
port: 6379 # 端口
database: 0 # 数据库索引
password: 'qweasd,.123' # 密码,建议生产环境开启

@ -3,7 +3,7 @@ spring:
name: yunxi-server
profiles:
active: local
active: dev
main:
allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。

Loading…
Cancel
Save