1、保存
注意@Id注解,标识此条数据在es里的唯一性,多次保存的话会触发update操作:
package xxxxxx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ToString
@ApiModel(description = "订单主表")
@Document(indexName = "hq-borrow-order#{esConfigBean.esConfig}", type = "BorrowOrderEsVo")
public class BorrowOrderEsVo {
private static final long serialVersionUID = -3915666721968467471L;
@Id
@ApiModelProperty(name = "orderNo",value = "借用订单编号")
private String orderNo;
//借用订单编号
@ApiModelProperty(name = "legalPersonCode",value = "法人code")
private String legalPersonCode;
//法人名称
@ApiModelProperty(name = "legalPersonName",value = "法人名称")
private String legalPersonName;
//如服务站编码
@ApiModelProperty(name = "contacts",value = "联系人")
private String contacts;
//组织编码
@ApiModelProperty(name = "organizationCode",value = "组织编码")
private String organizationCode;
//组织名称
@ApiModelProperty(name = "organizationName",value = "组织名称")
private String organizationName;
@ApiModelProperty(name = "organizationNo",value = "6位服务站编码")
private String organizationNo;
//订单类型
@ApiModelProperty(name = "orderType",value = "订单类型")
private Integer orderType;
//1笔记本2台式机
@ApiModelProperty(name = "productLine",value = "产品线1笔记本2台式机")
private String productLine;
@ApiModelProperty(name = "productLineName",value = "产品线a1笔记本2台式机")
private String productLineName;
@ApiModelProperty(notes = "运作产线ID")
private Long chargeLine;//运作产线ID
@ApiModelProperty(notes = "运作产线名称")
private String chargeLineName;//运作产线名称
//币别
@ApiModelProperty(name = "moneyType",value = "币别")
private String moneyType;
//是否运输0是 1否
@ApiModelProperty(name = "isTransport",value = "是否运输0是 1否")
private Integer isTransport;
//收货地址
@ApiModelProperty(name = "receivingAddress",value = "收货地址")
private String receivingAddress;
//地区
@ApiModelProperty(name = "region",value = "地区")
private String region;
//国家
@ApiModelProperty(name = "countryCode",value = "国家")
private String countryCode;
//省
@ApiModelProperty(name = "province",value = "省")
private String province;
//市
@ApiModelProperty(name = "city",value = "市")
private String city;
//区
@ApiModelProperty(name = "area",value = "区")
private String area;
//总数量
@ApiModelProperty(name = "totalCount",value = "总数量")
private Integer totalCount;
//总金额
@ApiModelProperty(name = "totalAmount",value = "总金额")
private BigDecimal totalAmount;
//订单状态 10已保存 20已提交 30已审批 50已否决
@ApiModelProperty(name = "orderState",value = "订单状态 10已保存 20已提交 25已审核 30已审批 40 已取消 50已关闭")
private Integer orderState;
//10 本部订单 20 服务站订单
@ApiModelProperty(name = "orderFlag",value = "10 本部订单 20 服务站订单")
private Integer orderFlag;
//抛送状态 10待抛 20抛失败 30已抛
@ApiModelProperty(name = "pullState",value = "抛送状态 10待抛 20抛失败 30已抛")
private String pullState;
//B2B订单B2C订单
@ApiModelProperty(name = "b2BOrB2C",value = "B2B订单B2C订单")
private Integer b2BOrB2C;
@ApiModelProperty(name = "specialFlag",value = "是否时特殊订单 1是 0 否")
private Integer specialFlag;
//特殊原因编号
@ApiModelProperty(name = "specialNo",value = "特殊原因编号")
private String specialNo;
//特殊原因名称
@ApiModelProperty(name = "specialReason",value = "特殊原因名称")
private String specialReason;
//特殊原因说明
@ApiModelProperty(name = "specialMemo",value = "特殊原因说明")
private String specialMemo;
//备注
@ApiModelProperty(name = "memo",value = "备注")
private String memo;
//删除标识0正常 1删除
@ApiModelProperty(name = "deleteFlag",value = "删除标识0正常 1删除")
private Integer deleteFlag;
//创建人
@ApiModelProperty(name = "createBy",value = "创建人")
private String createBy;
//创建时间
@ApiModelProperty(name = "createTime",value = "创建时间")
private Date createTime;
@ApiModelProperty(name = "submitTime",value = "提交时间")
private Date submitTime;
//修改人
@ApiModelProperty(name = "updateBy",value = "修改人")
private String updateBy;
//修改时间
@ApiModelProperty(name = "updateTime",value = "修改时间")
private Date updateTime;
//借用人员
@ApiModelProperty(name = "borrower",value = "借用人员")
private String borrower;
// 借用目的码表
@ApiModelProperty(name = "purposeBorrowing",value = " 借用目的码表")
private Integer purposeBorrowing;
//收货人
@ApiModelProperty(name = "consignee",value = "收货人")
private String consignee;
//成本中心
@ApiModelProperty(name = "costCenter",value = "成本中心")
private String costCenter;
//借用周期
@ApiModelProperty(name = "borrowCycle",value = "借用周期")
private Long borrowCycle;
//附件url
@ApiModelProperty(name = "annexUrl",value = "附件url")
private String annexUrl;
@ApiModelProperty(name = "annexName",value = "附件名称")
private String annexName;
@ApiModelProperty(name = "soid",value = "服务工单编号")
private String soid;
@ApiModelProperty(name = "orginType", value = "库存来源")
private String orginType;
@ApiModelProperty(name = "orderSource",value = "订单来源 0 是站端 ,1 是本部")
private String orderSource;
@ApiModelProperty(name = "productSN",value = "主机编号")
private String productSN;
@ApiModelProperty(name = "runCount",value = "执行数量")
private String runCount;
}
ES持久化层代码如下:
package xxxxx;
import xxxx,。。。。。。
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
@Service
public interface BorrowOrderEsRepository extends ElasticsearchRepository<BorrowOrderEsVo, String> {
List<BorrowOrderEsVo> findByOrderNoIn(List<String> orderNos);
static QueryBuilder searchBuilder(QueryBorrowOrderRequestVo queryBorrowOrderRequestVo) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
if (StringUtils.isNotEmpty(queryBorrowOrderRequestVo.getLegalPersonCode())) {
boolQueryBuilder.must(QueryBuilders.termQuery("legalPersonCode", queryBorrowOrderRequestVo.getLegalPersonCode().toLowerCase()));
} else if(!CollectionUtils.isEmpty(queryBorrowOrderRequestVo.getLegalPersonCodes())) {
boolQueryBuilder.must(QueryBuilders.termsQuery("legalPersonCode", queryBorrowOrderRequestVo.getLegalPersonCodes()));
}
if (StringUtils.isNotBlank(queryBorrowOrderRequestVo.getOrderNo()) &&!"".equals(queryBorrowOrderRequestVo.getOrderNo())) {
boolQueryBuilder.must(QueryBuilders.termQuery("orderNo", queryBorrowOrderRequestVo.getOrderNo().toLowerCase()));
}
if(StringUtils.isNotBlank(queryBorrowOrderRequestVo.getOrderType()) &&!"".equals(queryBorrowOrderRequestVo.getOrderType()) ){
boolQueryBuilder.must(QueryBuilders.termsQuery("orderType", queryBorrowOrderRequestVo.getOrderType().toLowerCase()));
}
if (Objects.nonNull(queryBorrowOrderRequestVo.getOrderState()) &&!"".equals(queryBorrowOrderRequestVo.getOrderState())) {
boolQueryBuilder.must(QueryBuilders.termQuery("orderState", queryBorrowOrderRequestVo.getOrderState()));
}
if (Objects.nonNull(queryBorrowOrderRequestVo.getIsTransport()) &&!"".equals(queryBorrowOrderRequestVo.getIsTransport())) {
//是否运输
boolQueryBuilder.must(QueryBuilders.termQuery("isTransport", queryBorrowOrderRequestVo.getIsTransport()));
}
if (Objects.nonNull(queryBorrowOrderRequestVo.getIsSpecialOrder()) &&!"".equals(queryBorrowOrderRequestVo.getIsSpecialOrder())) {
//是否运输
boolQueryBuilder.must(QueryBuilders.termQuery("specialFlag", queryBorrowOrderRequestVo.getIsSpecialOrder()));
}
if (!CollectionUtils.isEmpty(queryBorrowOrderRequestVo.getOrganizationCodes())) {
boolQueryBuilder.must(QueryBuilders.termsQuery("organizationCode", queryBorrowOrderRequestVo.getOrganizationCodes()));
} else if (StringUtils.isNotBlank(queryBorrowOrderRequestVo.getOrganizationCode())) {
boolQueryBuilder.must(QueryBuilders.termQuery("organizationCode", queryBorrowOrderRequestVo.getOrganizationCode().toLowerCase()));
}
if (StringUtils.isNotBlank(queryBorrowOrderRequestVo.getOrganizationName()) &&!"".equals(queryBorrowOrderRequestVo.getOrganizationName())) {
boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("organizationName", queryBorrowOrderRequestVo.getOrganizationName()));
}
if (Objects.nonNull(queryBorrowOrderRequestVo.getBeginCreatedTime()) &&!"".equals(queryBorrowOrderRequestVo.getBeginCreatedTime())) {
boolQueryBuilder.must(QueryBuilders.rangeQuery("createTime").gt(DateUtils.getStartDateTime(DateUtils.getDate(queryBorrowOrderRequestVo.getBeginCreatedTime())).getTime()));
}
if (Objects.nonNull(queryBorrowOrderRequestVo.getEndCreatedTime()) &&!"".equals(queryBorrowOrderRequestVo.getEndCreatedTime())) {
boolQueryBuilder.must(QueryBuilders.rangeQuery("createTime").lt(DateUtils.getLastDateTime(DateUtils.getDate(queryBorrowOrderRequestVo.getEndCreatedTime())).getTime()));
}
if (queryBorrowOrderRequestVo.getChargeLine() != null) {
boolQueryBuilder.should(QueryBuilders.termQuery("chargeLine", queryBorrowOrderRequestVo.getChargeLine()));
boolQueryBuilder.should(QueryBuilders.termQuery("chargeLineName", queryBorrowOrderRequestVo.getChargeLineName()));
boolQueryBuilder.minimumNumberShouldMatch(1);
}
return boolQueryBuilder;
}
default Page<BorrowOrderEsVo> queryPage(QueryBorrowOrderRequestVo queryBorrowOrderRequestVo) {
return this.search(searchBuilder(queryBorrowOrderRequestVo),
queryBorrowOrderRequestVo.pageable(SortTools.basicSort(Sort.Direction.DESC, "createTime")));
}
}
调用保存数据到es
…
borrowOrderEsRepository.save(borrowOrderEsVo);
2、分页查询
分页查询入参对象:
package xxx
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
@ToString
@ApiModel(description = "订单主表条件查询入参")
public class QueryBorrowOrderRequestVo extends EsPageVO {
private static final long serialVersionUID = -3915666721968467471L;
//法人code
@ApiModelProperty(name = "legalPersonCode",value = "法人code")
private String legalPersonCode;
//法人名称
@ApiModelProperty(name = "legalPersonName",value = "法人名称")
private String legalPersonName;
//借用订单编号
@ApiModelProperty(name = "orderNo",value = "借用订单编号")
private String orderNo;
//订单类型
@ApiModelProperty(name = "orderType",value = "订单类型")
private String orderType;
//订单状态 10已保存 20已提交 30已审批 50已否决
@ApiModelProperty(name = "orderState",value = "订单状态 10已保存 20已提交 30已审批 50已否决")
private Integer orderState;
//是否运输0是 1否
@ApiModelProperty(name = "isTransport",value = "是否运输1是 0否")
private Integer isTransport;
//组织编码
@ApiModelProperty(name = "organizationCode",value = "组织编码")
private String organizationCode;
@ApiModelProperty(name = "organizationCode",value = "子站集合")
private List<String> organizationCodes;
//如服务站名称
@ApiModelProperty(name = "organizationName",value = "组织名称")
private String organizationName;
@ApiModelProperty(name = "beginCreatedTime",value = "制单日期开始")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date beginCreatedTime;
@ApiModelProperty(name = "endCreatedTime",value = "制单日期结束")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endCreatedTime;
@ApiModelProperty(name = "isSpecialOrder",value = "是否时特殊订单 1是 0 否")
private String isSpecialOrder;
private List<String> legalPersonCodes;
@ApiModelProperty(name = "chargeLine",value = "运作产线")
private Long chargeLine;
@ApiModelProperty(name = "chargeLineName",value = "运作产线名字")
private String chargeLineName;
}
业务逻辑层调用分页查询代码:
Page<BorrowOrderEsVo> borrowOrderEsVos = borrowOrderEsRepository.queryPage(queryBorrowOrderRequestVo);
List<BorrowOrderEsVo> content = borrowOrderEsVos.getContent();//es里分页查询出来的对象