feat(approval): 优化退货审批资产查询功能

- 新增handleStatus字段用于区分处理状态
- 添加searchStr字段支持模糊搜索审批单号、申请人或商品名称
- 修改查询条件前缀为ra以匹配新SQL
- 实现自定义分页查询方法selectApprovalAssetPage
- 添加分组条件确保审批单唯一性
This commit is contained in:
dzq 2025-06-17 09:39:48 +08:00
parent 25510f9f23
commit a7d0c891b9
3 changed files with 47 additions and 18 deletions

View File

@ -27,6 +27,13 @@ public interface ReturnApprovalMapper extends BaseMapper<ReturnApprovalEntity> {
Page<ReturnApprovalEntity> selectApprovalWithGoodsInfo(Page<ReturnApprovalEntity> page,
@Param(Constants.WRAPPER) Wrapper<ReturnApprovalEntity> queryWrapper);
@Select("SELECT ra.* " +
"FROM return_approval ra " +
"LEFT JOIN approval_goods ag ON ag.approval_id = ra.approval_id AND ag.deleted = 0 " +
"${ew.customSqlSegment}")
Page<ReturnApprovalEntity> selectApprovalAssetPage(Page<ReturnApprovalEntity> page,
@Param(Constants.WRAPPER) Wrapper<ReturnApprovalEntity> queryWrapper);
@Select("SELECT ra.*, sog.goods_name AS goodsName, sog.cover_img AS coverImg, " +
"so.mobile, so.userid, so.name, so.payment_method AS paymentMethod " +

View File

@ -51,6 +51,6 @@ public class ReturnApprovalServiceImpl extends ServiceImpl<ReturnApprovalMapper,
@Override
public Page<ReturnApprovalEntity> getApprovalAssetPage(AbstractPageQuery<ReturnApprovalEntity> query) {
return this.page(query.toPage(), query.toQueryWrapper());
return this.baseMapper.selectApprovalAssetPage(query.toPage(), query.toQueryWrapper());
}
}

View File

@ -16,6 +16,8 @@ public class SearchReturnApprovalAssetQuery<T> extends AbstractPageQuery<T> {
private Long orderId;
private Long goodsId;
private Integer status;
// 0:未处理 1:已处理
private Integer handleStatus;
private Long externalGoodsId;
private Long externalApprovalId;
private String code;
@ -33,31 +35,51 @@ public class SearchReturnApprovalAssetQuery<T> extends AbstractPageQuery<T> {
private Date endTime;
private String paymentMethod;
private Date approvalTime;
private String searchStr;
@Override
public QueryWrapper<T> addQueryCondition() {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
if (status == null && handleStatus!= null) {
if (handleStatus == 0) {
queryWrapper.eq("ra.status", 1);
} else if (handleStatus == 1) {
queryWrapper.ne("ra.status", 1);
}
}
if (StrUtil.isNotEmpty(searchStr)) {
if (searchStr.matches("\\d{6}")) {
queryWrapper.eq("ra.code", searchStr);
} else {
queryWrapper.like("ra.apply_user_name", searchStr)
.or()
.like("ag.goods_name", searchStr);
}
}
queryWrapper
.eq(approvalId != null, "approval_id", approvalId)
.eq(orderId != null, "order_id", orderId)
.eq(goodsId != null, "goods_id", goodsId)
.eq(status != null, "status", status)
.eq(externalGoodsId != null, "external_goods_id", externalGoodsId)
.eq(externalApprovalId != null, "external_approval_id", externalApprovalId)
.eq(StrUtil.isNotEmpty(code), "code", code)
.eq(codeCheck!= null, "code_check", codeCheck)
.eq(approvalType != null, "approval_type", approvalType)
.eq(StrUtil.isNotEmpty(corpid), "corpid", corpid)
.eq(StrUtil.isNotEmpty(applyUserid), "apply_userid", applyUserid)
.eq(StrUtil.isNotEmpty(applyUserName), "apply_user_name", applyUserName)
.eq(StrUtil.isNotEmpty(auditUserid), "audit_userid", auditUserid)
.like(StrUtil.isNotEmpty(returnRemark), "return_remark", returnRemark)
.like(StrUtil.isNotEmpty(auditRemark), "audit_remark", auditRemark)
.between(approvalTime != null, "approval_time",
.eq(approvalId != null, "ra.approval_id", approvalId)
.eq(orderId != null, "ra.order_id", orderId)
.eq(goodsId != null, "ra.goods_id", goodsId)
.eq(status != null, "ra.status", status)
.eq(externalGoodsId != null, "ra.external_goods_id", externalGoodsId)
.eq(externalApprovalId != null, "ra.external_approval_id", externalApprovalId)
.eq(StrUtil.isNotEmpty(code), "ra.code", code)
.eq(codeCheck!= null, "ra.code_check", codeCheck)
.eq(approvalType != null, "ra.approval_type", approvalType)
.eq(StrUtil.isNotEmpty(corpid), "ra.corpid", corpid)
.eq(StrUtil.isNotEmpty(applyUserid), "ra.apply_userid", applyUserid)
.eq(StrUtil.isNotEmpty(applyUserName), "ra.apply_user_name", applyUserName)
.eq(StrUtil.isNotEmpty(auditUserid), "ra.audit_userid", auditUserid)
.like(StrUtil.isNotEmpty(returnRemark), "ra.return_remark", returnRemark)
.like(StrUtil.isNotEmpty(auditRemark), "ra.audit_remark", auditRemark)
.between(approvalTime != null, "ra.approval_time",
approvalTime == null ? null : DateUtil.beginOfDay(approvalTime).toJdkDate(),
approvalTime == null ? null : DateUtil.endOfDay(approvalTime).toJdkDate())
.orderByDesc("create_time");
.groupBy("ra.approval_id")
.orderByDesc("ra.create_time");
this.timeRangeColumn = "create_time";