feat(order): 添加订单置顶功能并优化排序规则
- 在CrmOrder实体类中新增isTop字段用于标识是否置顶 - 在CrmOrderBo业务对象中添加isTop属性支持查询过滤 - 在CrmOrderVo视图对象中添加isTop属性并配置Excel导出 - 更新MyBatis映射文件添加isTop字段的数据库映射关系 - 修改订单查询服务实现支持按置顶状态进行查询过滤 - 重构排序逻辑将原有的订单类型+创建时间排序改为置顶优先+状态+创建时间排序 - 新排序规则:置顶订单优先显示、已生效状态次之、最后按创建时间倒序排列
This commit is contained in:
@@ -226,4 +226,9 @@ public class CrmOrder extends BaseEntity {
|
|||||||
@TableLogic
|
@TableLogic
|
||||||
private Long delFlag;
|
private Long delFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否置顶 0-否 1-是
|
||||||
|
*/
|
||||||
|
private Integer isTop;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -235,6 +235,11 @@ public class CrmOrderBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String annexFiles;
|
private String annexFiles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否置顶 0-否 1-是
|
||||||
|
*/
|
||||||
|
private Integer isTop;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关键字搜索
|
* 关键字搜索
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -279,6 +279,12 @@ public class CrmOrderVo extends BaseEntity {
|
|||||||
@ExcelProperty(value = "附件")
|
@ExcelProperty(value = "附件")
|
||||||
private String annexFiles;
|
private String annexFiles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否置顶 0-否 1-是
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "是否置顶")
|
||||||
|
private Integer isTop;
|
||||||
|
|
||||||
|
|
||||||
// @ExcelProperty(value = "客户编号")
|
// @ExcelProperty(value = "客户编号")
|
||||||
private String customerCode;
|
private String customerCode;
|
||||||
|
|||||||
@@ -208,11 +208,16 @@ public class CrmOrderServiceImpl implements ICrmOrderService {
|
|||||||
qw.eq(bo.getStatus() != null, "co.status", bo.getStatus());
|
qw.eq(bo.getStatus() != null, "co.status", bo.getStatus());
|
||||||
qw.eq(bo.getContractId() != null, "co.contract_id", bo.getContractId());
|
qw.eq(bo.getContractId() != null, "co.contract_id", bo.getContractId());
|
||||||
qw.like(StringUtils.isNotBlank(bo.getAnnexFiles()), "co.annex_files", bo.getAnnexFiles());
|
qw.like(StringUtils.isNotBlank(bo.getAnnexFiles()), "co.annex_files", bo.getAnnexFiles());
|
||||||
|
qw.eq(bo.getIsTop() != null, "co.is_top", bo.getIsTop());
|
||||||
//逻辑删除
|
//逻辑删除
|
||||||
qw.eq("co.del_flag", 0);
|
qw.eq("co.del_flag", 0);
|
||||||
//根据orderType排序预订单是0 正是订单是1 0排在前面 1排在后面 升序
|
//排序规则:
|
||||||
qw.orderByAsc("co.order_type");
|
// 1. 置顶优先 (is_top=1 排在前面)
|
||||||
qw.orderByDesc("co.create_time");
|
// 2. 状态为1(已生效)的排在前面
|
||||||
|
// 3. 创建时间倒序
|
||||||
|
qw.orderByDesc("co.is_top")
|
||||||
|
.orderByDesc("CASE WHEN co.status = 1 THEN 1 ELSE 0 END")
|
||||||
|
.orderByDesc("co.create_time");
|
||||||
return qw;
|
return qw;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,6 +273,14 @@ public class CrmOrderServiceImpl implements ICrmOrderService {
|
|||||||
lqw.eq(bo.getStatus() != null, CrmOrder::getStatus, bo.getStatus());
|
lqw.eq(bo.getStatus() != null, CrmOrder::getStatus, bo.getStatus());
|
||||||
lqw.eq(bo.getContractId() != null, CrmOrder::getContractId, bo.getContractId());
|
lqw.eq(bo.getContractId() != null, CrmOrder::getContractId, bo.getContractId());
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getAnnexFiles()), CrmOrder::getAnnexFiles, bo.getAnnexFiles());
|
lqw.like(StringUtils.isNotBlank(bo.getAnnexFiles()), CrmOrder::getAnnexFiles, bo.getAnnexFiles());
|
||||||
|
lqw.eq(bo.getIsTop() != null, CrmOrder::getIsTop, bo.getIsTop());
|
||||||
|
//逻辑删除
|
||||||
|
lqw.eq(CrmOrder::getDelFlag, 0);
|
||||||
|
//排序规则:
|
||||||
|
// 1. 置顶优先 (is_top=1 排在前面)
|
||||||
|
// 2. 状态为1(已生效)的排在前面
|
||||||
|
// 3. 创建时间倒序
|
||||||
|
lqw.last("ORDER BY is_top DESC, CASE WHEN status = 1 THEN 1 ELSE 0 END DESC, create_time DESC");
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="updateBy" column="update_by"/>
|
<result property="updateBy" column="update_by"/>
|
||||||
<result property="updateTime" column="update_time"/>
|
<result property="updateTime" column="update_time"/>
|
||||||
<result property="delFlag" column="del_flag"/>
|
<result property="delFlag" column="del_flag"/>
|
||||||
|
<result property="isTop" column="is_top"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<select id="selectVoPagePlus" resultType="com.klp.crm.domain.vo.CrmOrderVo">
|
<select id="selectVoPagePlus" resultType="com.klp.crm.domain.vo.CrmOrderVo">
|
||||||
SELECT
|
SELECT
|
||||||
@@ -97,6 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
co.status,
|
co.status,
|
||||||
co.contract_id AS contractId,
|
co.contract_id AS contractId,
|
||||||
co.annex_files AS annexFiles,
|
co.annex_files AS annexFiles,
|
||||||
|
co.is_top AS isTop,
|
||||||
co.create_by AS createBy,
|
co.create_by AS createBy,
|
||||||
co.create_time AS createTime,
|
co.create_time AS createTime,
|
||||||
co.update_by AS updateBy,
|
co.update_by AS updateBy,
|
||||||
@@ -156,6 +158,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
co.status,
|
co.status,
|
||||||
co.contract_id AS contractId,
|
co.contract_id AS contractId,
|
||||||
co.annex_files AS annexFiles,
|
co.annex_files AS annexFiles,
|
||||||
|
co.is_top AS isTop,
|
||||||
co.create_by AS createBy,
|
co.create_by AS createBy,
|
||||||
co.create_time AS createTime,
|
co.create_time AS createTime,
|
||||||
co.update_by AS updateBy,
|
co.update_by AS updateBy,
|
||||||
|
|||||||
Reference in New Issue
Block a user