Commit e3f89c2d2091a02708f83695ce900df2ae2703b1

Authored by 杨鸣坤
1 parent ee5ff8d4

楚江:合同框架

... ... @@ -56,4 +56,23 @@ create table if not exists base_data_product_variety (
56 56 update_by varchar(20) not null comment '更新人',
57 57 create_time datetime default now() comment '创建时间',
58 58 update_time datetime default now() comment '更新时间'
59   -);
\ No newline at end of file
  59 +);
  60 +
  61 +
  62 +-- 合同框架
  63 +create table if not exists `tbl_contract_framework` (
  64 + `id` varchar(32) primary key comment 'ID',
  65 + `code` varchar(20) not null comment '编号',
  66 + `customer_id` varchar(32) not null comment '客户id',
  67 + `company` varchar(50) not null comment '所属单位',
  68 + `has_framework_agreement` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否签订框架合同',
  69 + `material_type_id` varchar(32) NOT NULL COMMENT '品种id',
  70 + `validity_time` datetime comment '期限',
  71 + `create_by_id` varchar(32) not null comment '创建人ID',
  72 + `create_by` varchar(20) not null comment '创建人',
  73 + `update_by_id` varchar(32) not null comment '更新人ID',
  74 + `update_by` varchar(20) not null comment '更新人',
  75 + `create_time` datetime default now() comment '创建时间',
  76 + `update_time` datetime default now() comment '更新时间'
  77 + );
  78 +
... ...
  1 +package com.lframework.xingyun.sc.bo.contract;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import com.lframework.starter.common.constants.StringPool;
  5 +import com.lframework.starter.web.core.bo.BaseBo;
  6 +
  7 +import java.time.LocalDateTime;
  8 +
  9 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  10 +import com.lframework.xingyun.sc.entity.ContractFramework;
  11 +import io.swagger.annotations.ApiModelProperty;
  12 +
  13 +import lombok.Data;
  14 +
  15 +/**
  16 + * <p>
  17 + * 合同框架 QueryBo
  18 + * </p>
  19 + */
  20 +@Data
  21 +public class QueryContractFrameworkBo extends BaseBo<ContractFramework> {
  22 +
  23 + /**
  24 + * ID
  25 + */
  26 + @ApiModelProperty("ID")
  27 + private String id;
  28 +
  29 + /**
  30 + * 编号
  31 + */
  32 + @ApiModelProperty("编号")
  33 + private String code;
  34 +
  35 + /**
  36 + * 客户id
  37 + */
  38 + @ApiModelProperty("客户id")
  39 + private String customerId;
  40 +
  41 + /**
  42 + * 客户名称
  43 + */
  44 + @ApiModelProperty("客户名称")
  45 + private String customerName;
  46 +
  47 + /**
  48 + * 所属单位
  49 + */
  50 + @ApiModelProperty("所属单位")
  51 + private String company;
  52 +
  53 + /**
  54 + * 品种id
  55 + */
  56 + @ApiModelProperty("品种")
  57 + private String materialTypeId;
  58 +
  59 + /**
  60 + * 品种名称
  61 + */
  62 + @ApiModelProperty("品种名称")
  63 + private String materialTypeName;
  64 +
  65 + /**
  66 + * 期限
  67 + */
  68 + @ApiModelProperty("期限")
  69 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  70 + private LocalDateTime validityTime;
  71 +
  72 + /**
  73 + * 是否签订框架合同
  74 + */
  75 + @ApiModelProperty("是否签订框架合同")
  76 + private Boolean hasFrameworkAgreement;
  77 +
  78 + public QueryContractFrameworkBo() {
  79 +
  80 + }
  81 +
  82 + public QueryContractFrameworkBo(ContractFramework dto) {
  83 +
  84 + super(dto);
  85 + }
  86 +
  87 + @Override
  88 + public BaseBo<ContractFramework> convert(ContractFramework dto) {
  89 + return super.convert(dto);
  90 + }
  91 +
  92 + @Override
  93 + protected void afterInit(ContractFramework dto) {
  94 +
  95 + }
  96 +}
... ...
  1 +package com.lframework.xingyun.sc.controller.contract;
  2 +
  3 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  4 +import com.lframework.starter.web.core.annotations.security.HasPermission;
  5 +import com.lframework.starter.web.core.components.resp.InvokeResultBuilder;
  6 +import com.lframework.starter.web.core.controller.DefaultBaseController;
  7 +import com.lframework.starter.web.core.utils.PageResultUtil;
  8 +import com.lframework.starter.web.core.components.resp.PageResult;
  9 +import com.lframework.starter.web.core.components.resp.InvokeResult;
  10 +import com.lframework.xingyun.basedata.entity.Customer;
  11 +import com.lframework.xingyun.basedata.entity.ProductVariety;
  12 +import com.lframework.xingyun.basedata.service.customer.CustomerService;
  13 +import com.lframework.xingyun.basedata.service.product.ProductVarietyService;
  14 +import com.lframework.xingyun.sc.bo.contract.QueryContractFrameworkBo;
  15 +import com.lframework.xingyun.sc.entity.ContractFramework;
  16 +import com.lframework.xingyun.sc.service.contract.ContractFrameworkService;
  17 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractFrameworkVo;
  18 +import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractFrameworkVo;
  19 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractFrameworkVo;
  20 +import io.swagger.annotations.ApiImplicitParam;
  21 +import io.swagger.annotations.ApiOperation;
  22 +import com.lframework.starter.common.utils.CollectionUtil;
  23 +import io.swagger.annotations.Api;
  24 +import org.apache.commons.collections4.CollectionUtils;
  25 +import org.apache.commons.lang3.StringUtils;
  26 +import org.springframework.beans.factory.annotation.Autowired;
  27 +import org.springframework.validation.annotation.Validated;
  28 +import org.springframework.web.bind.annotation.*;
  29 +
  30 +import javax.validation.Valid;
  31 +import javax.validation.constraints.NotBlank;
  32 +import java.util.HashMap;
  33 +import java.util.List;
  34 +import java.util.Map;
  35 +import java.util.function.Function;
  36 +import java.util.stream.Collectors;
  37 +
  38 +/**
  39 + * 合同框架 Controller
  40 + */
  41 +@Api(tags = "合同框架")
  42 +@Validated
  43 +@RestController
  44 +@RequestMapping("/contract/contractFramework")
  45 +public class ContractFrameworkController extends DefaultBaseController {
  46 +
  47 + @Autowired
  48 + private ContractFrameworkService contractFrameworkService;
  49 + @Autowired
  50 + private ProductVarietyService productVarietyService;
  51 + @Autowired
  52 + private CustomerService customerService;
  53 +
  54 + /**
  55 + * 查询列表
  56 + */
  57 + @ApiOperation("查询列表")
  58 + @HasPermission({"contractFramework:contractFramework:query"})
  59 + @GetMapping("/query")
  60 + public InvokeResult<PageResult<QueryContractFrameworkBo>> query(@Valid QueryContractFrameworkVo vo) {
  61 +
  62 + PageResult<ContractFramework> pageResult = contractFrameworkService.query(getPageIndex(vo), getPageSize(vo), vo);
  63 +
  64 + List<ContractFramework> datas = pageResult.getDatas();
  65 + List<QueryContractFrameworkBo> results = null;
  66 +
  67 + if (!CollectionUtil.isEmpty(datas)) {
  68 + results = datas.stream().map(QueryContractFrameworkBo::new).collect(Collectors.toList());
  69 + }
  70 +
  71 + PageResult<QueryContractFrameworkBo> boPageResult = PageResultUtil.rebuild(pageResult, results);
  72 + if (CollectionUtils.isEmpty(boPageResult.getDatas())) {
  73 + return InvokeResultBuilder.success(boPageResult);
  74 + }
  75 +
  76 + results = boPageResult.getDatas();
  77 + List<String> materialTypeIdList = results.stream().map(QueryContractFrameworkBo::getMaterialTypeId).collect(Collectors.toList());
  78 + Map<String, ProductVariety> productVarietyMap = new HashMap<>(materialTypeIdList.size());
  79 + if (CollectionUtils.isNotEmpty(materialTypeIdList)) {
  80 + List<ProductVariety> productVarietyList = productVarietyService.listByIds(materialTypeIdList);
  81 + productVarietyMap.putAll(CollectionUtils.emptyIfNull(productVarietyList)
  82 + .stream()
  83 + .collect(Collectors.toMap(ProductVariety::getId, Function.identity())));
  84 + }
  85 +
  86 + List<String> customerIdList = results.stream().map(QueryContractFrameworkBo::getCustomerId).collect(Collectors.toList());
  87 + Map<String, Customer> customerMap = new HashMap<>(customerIdList.size());
  88 + if (CollectionUtils.isNotEmpty(customerIdList)) {
  89 + List<Customer> customerList = customerService.listByIds(customerIdList);
  90 + customerMap.putAll(CollectionUtils.emptyIfNull(customerList)
  91 + .stream()
  92 + .collect(Collectors.toMap(Customer::getId, Function.identity())));
  93 + }
  94 +
  95 + results.forEach(bo -> {
  96 + if (bo == null) return;
  97 +
  98 + if (StringUtils.isNotBlank(bo.getMaterialTypeId())) {
  99 + ProductVariety productVariety = productVarietyMap.get(bo.getMaterialTypeId());
  100 + bo.setMaterialTypeName(productVariety != null ? productVariety.getName() : "");
  101 + }
  102 +
  103 + if (StringUtils.isNotBlank(bo.getCustomerId())) {
  104 + Customer customer = customerMap.get(bo.getCustomerId());
  105 + bo.setCustomerName(customer != null ? customer.getName() : "");
  106 + }
  107 + });
  108 +
  109 + boPageResult.setDatas(results);
  110 + return InvokeResultBuilder.success(boPageResult);
  111 + }
  112 +
  113 + /**
  114 + * 新增
  115 + */
  116 + @ApiOperation("新增")
  117 + @HasPermission({"contractFramework:contractFramework:add"})
  118 + @PostMapping
  119 + public InvokeResult<String> create(@Valid CreateContractFrameworkVo vo) {
  120 + return InvokeResultBuilder.success(contractFrameworkService.create(vo));
  121 + }
  122 +
  123 + /**
  124 + * 根据ID查询
  125 + */
  126 + @ApiOperation("根据ID查询")
  127 + @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true)
  128 + @HasPermission({"contractFramework:contractFramework:query"})
  129 + @GetMapping
  130 + public InvokeResult<QueryContractFrameworkBo> get(@NotBlank(message = "id不能为空!") String id) {
  131 +
  132 + ContractFramework data = contractFrameworkService.findById(id);
  133 + if (data == null) {
  134 + throw new DefaultClientException("合同框架不存在!");
  135 + }
  136 +
  137 + QueryContractFrameworkBo result = new QueryContractFrameworkBo(data);
  138 + String materialTypeId = result.getMaterialTypeId();
  139 + ProductVariety productVariety = productVarietyService.findById(materialTypeId);
  140 + String customerId = result.getCustomerId();
  141 + Customer customer = customerService.findById(customerId);
  142 + result.setMaterialTypeName(productVariety != null ? productVariety.getName() : "");
  143 + result.setCustomerName(customer != null ? customer.getName() : "");
  144 +
  145 + return InvokeResultBuilder.success(result);
  146 + }
  147 +
  148 +
  149 + /**
  150 + * 修改
  151 + */
  152 + @ApiOperation("修改")
  153 + @HasPermission({"contractFramework:contractFramework:modify"})
  154 + @PutMapping
  155 + public InvokeResult<Void> update(@Valid UpdateContractFrameworkVo vo) {
  156 +
  157 + contractFrameworkService.update(vo);
  158 +
  159 + contractFrameworkService.cleanCacheByKey(vo.getId());
  160 +
  161 + return InvokeResultBuilder.success();
  162 + }
  163 +}
... ...
  1 +package com.lframework.xingyun.sc.entity;
  2 +
  3 +import com.baomidou.mybatisplus.annotation.TableName;
  4 +import com.lframework.starter.web.core.dto.BaseDto;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +import com.baomidou.mybatisplus.annotation.FieldFill;
  9 +import com.lframework.starter.web.core.entity.BaseEntity;
  10 +import com.baomidou.mybatisplus.annotation.TableField;
  11 +import lombok.Data;
  12 +
  13 +/**
  14 + * <p>
  15 + * 合同框架
  16 + * </p>
  17 + */
  18 +@Data
  19 +@TableName("tbl_contract_framework")
  20 +public class ContractFramework extends BaseEntity implements BaseDto {
  21 +
  22 + private static final long serialVersionUID = 1L;
  23 +
  24 + public static final String CACHE_NAME = "TblContractFramework";
  25 +
  26 + /**
  27 + * ID
  28 + */
  29 + private String id;
  30 +
  31 + /**
  32 + * 编号
  33 + */
  34 + private String code;
  35 +
  36 + /**
  37 + * 客户id
  38 + */
  39 + private String customerId;
  40 +
  41 + /**
  42 + * 所属单位
  43 + */
  44 + private String company;
  45 +
  46 + /**
  47 + * 是否签订框架合同
  48 + */
  49 + private Boolean hasFrameworkAgreement;
  50 +
  51 + /**
  52 + * 品种
  53 + */
  54 + private String materialTypeId;
  55 +
  56 + /**
  57 + * 期限
  58 + */
  59 + private LocalDateTime validityTime;
  60 +
  61 + /**
  62 + * 创建人ID
  63 + */
  64 + @TableField(fill = FieldFill.INSERT)
  65 + private String createById;
  66 +
  67 + /**
  68 + * 创建人
  69 + */
  70 + @TableField(fill = FieldFill.INSERT)
  71 + private String createBy;
  72 +
  73 + /**
  74 + * 更新人ID
  75 + */
  76 + @TableField(fill = FieldFill.INSERT_UPDATE)
  77 + private String updateById;
  78 +
  79 + /**
  80 + * 更新人
  81 + */
  82 + @TableField(fill = FieldFill.INSERT_UPDATE)
  83 + private String updateBy;
  84 +
  85 + /**
  86 + * 创建时间
  87 + */
  88 + @TableField(fill = FieldFill.INSERT)
  89 + private LocalDateTime createTime;
  90 +
  91 + /**
  92 + * 更新时间
  93 + */
  94 + @TableField(fill = FieldFill.INSERT_UPDATE)
  95 + private LocalDateTime updateTime;
  96 +
  97 +}
... ...
  1 +package com.lframework.xingyun.sc.impl.contract;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.github.pagehelper.PageInfo;
  6 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  7 +import com.lframework.starter.common.utils.Assert;
  8 +import com.lframework.starter.common.utils.ObjectUtil;
  9 +import com.lframework.starter.web.core.annotations.oplog.OpLog;
  10 +import com.lframework.starter.web.core.components.resp.PageResult;
  11 +import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
  12 +import com.lframework.starter.web.core.utils.IdUtil;
  13 +import com.lframework.starter.web.core.utils.OpLogUtil;
  14 +import com.lframework.starter.web.core.utils.PageHelperUtil;
  15 +import com.lframework.starter.web.core.utils.PageResultUtil;
  16 +import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
  17 +import com.lframework.xingyun.sc.entity.ContractFramework;
  18 +import com.lframework.xingyun.sc.mappers.ContractFrameworkMapper;
  19 +import com.lframework.xingyun.sc.service.contract.ContractFrameworkService;
  20 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractFrameworkVo;
  21 +import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractFrameworkVo;
  22 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractFrameworkVo;
  23 +import org.springframework.cache.annotation.CacheEvict;
  24 +import org.springframework.cache.annotation.Cacheable;
  25 +import org.springframework.stereotype.Service;
  26 +import org.springframework.transaction.annotation.Transactional;
  27 +
  28 +import java.io.Serializable;
  29 +import java.util.List;
  30 +
  31 +@Service
  32 +public class ContractFrameworkServiceImpl extends BaseMpServiceImpl<ContractFrameworkMapper, ContractFramework> implements ContractFrameworkService {
  33 +
  34 + @Override
  35 + public PageResult<ContractFramework> query(Integer pageIndex, Integer pageSize, QueryContractFrameworkVo vo) {
  36 +
  37 + Assert.greaterThanZero(pageIndex);
  38 + Assert.greaterThanZero(pageSize);
  39 +
  40 + PageHelperUtil.startPage(pageIndex, pageSize);
  41 + List<ContractFramework> datas = this.query(vo);
  42 +
  43 + return PageResultUtil.convert(new PageInfo<>(datas));
  44 + }
  45 +
  46 + @Override
  47 + public List<ContractFramework> query(QueryContractFrameworkVo vo) {
  48 +
  49 + return getBaseMapper().query(vo);
  50 + }
  51 +
  52 + @Cacheable(value = ContractFramework.CACHE_NAME, key = "@cacheVariables.tenantId() + #id", unless = "#result == null")
  53 + @Override
  54 + public ContractFramework findById(String id) {
  55 +
  56 + return getBaseMapper().selectById(id);
  57 + }
  58 +
  59 + @OpLog(type = OtherOpLogType.class, name = "更新合同框架,ID:{}", params = {"#id"})
  60 + @Transactional(rollbackFor = Exception.class)
  61 + @Override
  62 + public void update(UpdateContractFrameworkVo vo) {
  63 + ContractFramework data = getBaseMapper().selectById(vo.getId());
  64 + if (ObjectUtil.isNull(data)) {
  65 + throw new DefaultClientException("合同框架不存在!");
  66 + }
  67 +
  68 + LambdaUpdateWrapper<ContractFramework> updateWrapper = Wrappers.lambdaUpdate(ContractFramework.class)
  69 + .set(ContractFramework::getCode, vo.getCode())
  70 + .set(ContractFramework::getCustomerId, vo.getCustomerId())
  71 + .set(ContractFramework::getCompany, vo.getCompany())
  72 + .set(ContractFramework::getHasFrameworkAgreement, vo.getHasFrameworkAgreement())
  73 + .set(ContractFramework::getValidityTime, vo.getValidityTime())
  74 + .set(ContractFramework::getMaterialTypeId, vo.getMaterialTypeId())
  75 + .eq(ContractFramework::getId, vo.getId());
  76 +
  77 + getBaseMapper().update(updateWrapper);
  78 +
  79 + OpLogUtil.setVariable("id", data.getId());
  80 + OpLogUtil.setExtra(vo);
  81 + }
  82 +
  83 + @OpLog(type = OtherOpLogType.class, name = "新增合同框架,ID:{}", params = {"#id"})
  84 + @Transactional(rollbackFor = Exception.class)
  85 + @Override
  86 + public String create(CreateContractFrameworkVo vo) {
  87 +
  88 + ContractFramework data = new ContractFramework();
  89 + data.setId(IdUtil.getId());
  90 + data.setCode(vo.getCode());
  91 + data.setCustomerId(vo.getCustomerId());
  92 + data.setCompany(vo.getCompany());
  93 + data.setHasFrameworkAgreement(vo.getHasFrameworkAgreement());
  94 + data.setValidityTime(vo.getValidityTime());
  95 + data.setMaterialTypeId(vo.getMaterialTypeId());
  96 +
  97 + getBaseMapper().insert(data);
  98 +
  99 + OpLogUtil.setVariable("id", data.getId());
  100 + OpLogUtil.setExtra(vo);
  101 +
  102 + return data.getId();
  103 + }
  104 +
  105 + @CacheEvict(value = ContractFramework.CACHE_NAME, key = "@cacheVariables.tenantId() + #key")
  106 + @Override
  107 + public void cleanCacheByKey(Serializable key) {
  108 +
  109 + }
  110 +}
... ...
  1 +package com.lframework.xingyun.sc.mappers;
  2 +
  3 +import java.util.List;
  4 +
  5 +import com.lframework.starter.web.core.mapper.BaseMapper;
  6 +import com.lframework.xingyun.sc.entity.ContractFramework;
  7 +import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractFrameworkVo;
  8 +import org.apache.ibatis.annotations.Param;
  9 +
  10 +/**
  11 + * <p>
  12 + * 合同框架 Mapper 接口
  13 + * </p>
  14 + */
  15 +public interface ContractFrameworkMapper extends BaseMapper<ContractFramework> {
  16 +
  17 + /**
  18 + * 查询列表
  19 + *
  20 + * @param vo
  21 + * @return
  22 + */
  23 + List<ContractFramework> query(@Param("vo") QueryContractFrameworkVo vo);
  24 +}
... ...
  1 +package com.lframework.xingyun.sc.service.contract;
  2 +
  3 +import com.lframework.starter.web.core.components.resp.PageResult;
  4 +import com.lframework.starter.web.core.service.BaseMpService;
  5 +import com.lframework.xingyun.sc.entity.ContractFramework;
  6 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractFrameworkVo;
  7 +import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractFrameworkVo;
  8 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractFrameworkVo;
  9 +
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * 合同框架 Service
  14 + */
  15 +public interface ContractFrameworkService extends BaseMpService<ContractFramework> {
  16 +
  17 + /**
  18 + * 查询列表
  19 + *
  20 + * @return
  21 + */
  22 + PageResult<ContractFramework> query(Integer pageIndex, Integer pageSize, QueryContractFrameworkVo vo);
  23 +
  24 + /**
  25 + * 查询列表
  26 + *
  27 + * @param vo
  28 + * @return
  29 + */
  30 + List<ContractFramework> query(QueryContractFrameworkVo vo);
  31 +
  32 + /**
  33 + * 根据ID查询
  34 + *
  35 + * @param id
  36 + * @return
  37 + */
  38 + ContractFramework findById(String id);
  39 +
  40 + /**
  41 + * 修改
  42 + * @param vo
  43 + */
  44 + void update(UpdateContractFrameworkVo vo);
  45 +
  46 + /**
  47 + * 创建
  48 + * @param vo
  49 + * @return
  50 + */
  51 + String create(CreateContractFrameworkVo vo);
  52 +
  53 +}
... ...
  1 +package com.lframework.xingyun.sc.vo.contract.createVo;
  2 +
  3 +import javax.validation.constraints.NotBlank;
  4 +
  5 +import java.time.LocalDateTime;
  6 +
  7 +import com.lframework.starter.web.core.vo.BaseVo;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +import io.swagger.annotations.ApiModelProperty;
  12 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  13 +import org.hibernate.validator.constraints.Length;
  14 +
  15 +import java.io.Serializable;
  16 +
  17 +import lombok.Data;
  18 +
  19 +@Data
  20 +public class CreateContractFrameworkVo implements BaseVo, Serializable {
  21 +
  22 + private static final long serialVersionUID = 1L;
  23 +
  24 + /**
  25 + * 编号
  26 + */
  27 + @ApiModelProperty(value = "编号", required = true)
  28 + @NotBlank(message = "请输入编号!")
  29 + @Length(message = "编号最多允许20个字符!")
  30 + private String code;
  31 +
  32 + /**
  33 + * 客户id
  34 + */
  35 + @ApiModelProperty(value = "客户id", required = true)
  36 + @NotBlank(message = "请输入客户id!")
  37 + @Length(message = "客户id最多允许32个字符!")
  38 + private String customerId;
  39 +
  40 + /**
  41 + * 所属单位
  42 + */
  43 + @ApiModelProperty(value = "所属单位", required = true)
  44 + @NotBlank(message = "请输入所属单位!")
  45 + @Length(message = "所属单位最多允许50个字符!")
  46 + private String company;
  47 +
  48 + /**
  49 + * 是否签订框架合同
  50 + */
  51 + @ApiModelProperty(value = "是否签订框架合同", required = true)
  52 + @NotNull(message = "请输入是否签订框架合同!")
  53 + @TypeMismatch(message = "是否签订框架合同格式有误!")
  54 + private Boolean hasFrameworkAgreement;
  55 +
  56 + /**
  57 + * 期限
  58 + */
  59 + @ApiModelProperty(value = "期限", required = true)
  60 + @NotNull(message = "请输入期限!")
  61 + @TypeMismatch(message = "期限格式有误!")
  62 + private LocalDateTime validityTime;
  63 +
  64 + /**
  65 + * 品种id
  66 + */
  67 + @ApiModelProperty(value = "品种id", required = true)
  68 + @NotBlank(message = "请输入品种id!")
  69 + @Length(message = "品种id最多允许32个字符!")
  70 + private String materialTypeId;
  71 +
  72 +}
  73 +
... ...
  1 +package com.lframework.xingyun.sc.vo.contract.queryVo;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import com.lframework.starter.common.constants.StringPool;
  5 +import lombok.Data;
  6 +import com.lframework.starter.web.core.vo.PageVo;
  7 +
  8 +import java.time.LocalDateTime;
  9 +
  10 +import com.lframework.starter.web.core.vo.BaseVo;
  11 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  12 +import io.swagger.annotations.ApiModelProperty;
  13 +
  14 +import java.io.Serializable;
  15 +
  16 +@Data
  17 +public class QueryContractFrameworkVo extends PageVo implements BaseVo, Serializable {
  18 +
  19 + private static final long serialVersionUID = 1L;
  20 +
  21 + /**
  22 + * 编号
  23 + */
  24 + @ApiModelProperty("编号")
  25 + private String code;
  26 +
  27 + /**
  28 + * 客户id
  29 + */
  30 + @ApiModelProperty("客户id")
  31 + private String customerId;
  32 +
  33 + /**
  34 + * 所属单位
  35 + */
  36 + @ApiModelProperty("所属单位")
  37 + private String company;
  38 +
  39 + /**
  40 + * 是否签订框架合同
  41 + */
  42 + @ApiModelProperty("是否签订框架合同")
  43 + @TypeMismatch(message = "是否签订框架合同格式有误!")
  44 + private Boolean hasFrameworkAgreement;
  45 +
  46 + /**
  47 + * 品种
  48 + */
  49 + @ApiModelProperty("品种")
  50 + private String materialTypeId;
  51 +
  52 + /**
  53 + * 品种名称
  54 + */
  55 + @ApiModelProperty("品种名称")
  56 + private String materialTypeName;
  57 +
  58 + /**
  59 + * 期限
  60 + */
  61 + @ApiModelProperty("期限")
  62 + @TypeMismatch(message = "期限格式有误!")
  63 + private LocalDateTime validityTime;
  64 +
  65 + /**
  66 + * 期限(查询)
  67 + */
  68 + @ApiModelProperty("期限查询开始时间")
  69 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  70 + private LocalDateTime validityTimeStart;
  71 +
  72 + @ApiModelProperty("期限查询结束时间")
  73 + @JsonFormat(pattern = StringPool.DATE_TIME_PATTERN)
  74 + private LocalDateTime validityTimeEnd;
  75 +}
... ...
  1 +package com.lframework.xingyun.sc.vo.contract.updateVo;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import javax.validation.constraints.NotBlank;
  6 +import java.time.LocalDateTime;
  7 +
  8 +import com.lframework.starter.web.core.vo.BaseVo;
  9 +
  10 +import javax.validation.constraints.NotNull;
  11 +
  12 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  13 +import io.swagger.annotations.ApiModelProperty;
  14 +import org.hibernate.validator.constraints.Length;
  15 +
  16 +import java.io.Serializable;
  17 +
  18 +@Data
  19 +public class UpdateContractFrameworkVo implements BaseVo, Serializable {
  20 +
  21 + private static final long serialVersionUID = 1L;
  22 +
  23 + /**
  24 + * ID
  25 + */
  26 + @ApiModelProperty(value = "ID", required = true)
  27 + @NotBlank(message = "id不能为空!")
  28 + private String id;
  29 +
  30 + /**
  31 + * 编号
  32 + */
  33 + @ApiModelProperty(value = "编号", required = true)
  34 + @NotBlank(message = "请输入编号!")
  35 + @Length(message = "编号最多允许20个字符!")
  36 + private String code;
  37 +
  38 + /**
  39 + * 客户id
  40 + */
  41 + @ApiModelProperty(value = "客户id", required = true)
  42 + @NotBlank(message = "请输入客户id!")
  43 + @Length(message = "客户id最多允许32个字符!")
  44 + private String customerId;
  45 +
  46 + /**
  47 + * 所属单位
  48 + */
  49 + @ApiModelProperty(value = "所属单位", required = true)
  50 + @NotBlank(message = "请输入所属单位!")
  51 + @Length(message = "所属单位最多允许50个字符!")
  52 + private String company;
  53 +
  54 + /**
  55 + * 是否签订框架合同
  56 + */
  57 + @ApiModelProperty(value = "是否签订框架合同", required = true)
  58 + @NotNull(message = "请输入是否签订框架合同!")
  59 + private Boolean hasFrameworkAgreement;
  60 +
  61 + /**
  62 + * 期限
  63 + */
  64 + @ApiModelProperty(value = "期限", required = true)
  65 + @TypeMismatch(message = "期限格式有误!")
  66 + @NotNull(message = "请输入期限!")
  67 + private LocalDateTime validityTime;
  68 +
  69 + /**
  70 + * 品种id
  71 + */
  72 + @ApiModelProperty(value = "品种id", required = true)
  73 + @NotBlank(message = "请输入品种id!")
  74 + @Length(message = "品种id最多允许32个字符!")
  75 + private String materialTypeId;
  76 +
  77 +}
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.lframework.xingyun.sc.mappers.ContractFrameworkMapper">
  4 +
  5 + <resultMap id="ContractFramework" type="com.lframework.xingyun.sc.entity.ContractFramework">
  6 + <id column="id" property="id"/>
  7 + <result column="code" property="code"/>
  8 + <result column="customer_id" property="customerId"/>
  9 + <result column="company" property="company"/>
  10 + <result column="has_framework_agreement" property="hasFrameworkAgreement"/>
  11 + <result column="material_type_id" property="materialTypeId"/>
  12 + <result column="validity_time" property="validityTime"/>
  13 + <result column="create_by_id" property="createById"/>
  14 + <result column="create_by" property="createBy"/>
  15 + <result column="update_by_id" property="updateById"/>
  16 + <result column="update_by" property="updateBy"/>
  17 + <result column="create_time" property="createTime"/>
  18 + <result column="update_time" property="updateTime"/>
  19 + </resultMap>
  20 +
  21 + <sql id="ContractFramework_sql">
  22 + SELECT
  23 + tb.id,
  24 + tb.code,
  25 + tb.customer_id,
  26 + tb.company,
  27 + tb.has_framework_agreement,
  28 + tb.material_type_id,
  29 + tb.validity_time,
  30 + tb.create_by_id,
  31 + tb.create_by,
  32 + tb.update_by_id,
  33 + tb.update_by,
  34 + tb.create_time,
  35 + tb.update_time
  36 + FROM tbl_contract_framework AS tb
  37 + </sql>
  38 +
  39 + <select id="query" resultMap="ContractFramework">
  40 + <include refid="ContractFramework_sql"/>
  41 + <where>
  42 + <if test="vo.code != null and vo.code != ''">
  43 + AND tb.code like CONCAT('%', #{vo.code}, '%')
  44 + </if>
  45 + <if test="vo.customerId != null and vo.customerId != ''">
  46 + AND tb.customer_id = #{vo.customerId}
  47 + </if>
  48 + <if test="vo.company != null and vo.company != ''">
  49 + AND tb.company = #{vo.company}
  50 + </if>
  51 + <if test="vo.hasFrameworkAgreement != null">
  52 + AND tb.has_framework_agreement = #{vo.hasFrameworkAgreement}
  53 + </if>
  54 + <if test="vo.materialTypeId != null and vo.materialTypeId != ''">
  55 + AND tb.material_type_id = #{materialTypeId}
  56 + </if>
  57 + <if test="vo.validityTime != null">
  58 + AND tb.validity_time = #{vo.validityTime}
  59 + </if>
  60 + <if test="vo.validityTimeStart != null">
  61 + AND tb.validity_time &gt;= #{vo.validityTimeStart}
  62 + </if>
  63 + <if test="vo.validityTimeEnd != null">
  64 + AND tb.validity_time &lt;= #{vo.validityTimeEnd}
  65 + </if>
  66 + </where>
  67 + </select>
  68 +</mapper>
... ...