From 4a5b9544a4d04757406c881d337178091f9a005e Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Thu, 14 May 2026 11:40:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E8=AE=A2=E5=8D=95=E9=A1=B9?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=B8=AD=E5=A2=9E=E5=8A=A0=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CrmOrderBo 中新增 orderIds 字段用于批量查询 - 在 CrmOrderItemServiceImpl 中注入 ICrmOrderService 并实现订单信息关联查询 - 在 CrmOrderItemVo 中新增 orderInfo 字段存储订单详情 - 扩展 CrmOrderMapper 接口增加 selectVoPagePlus 批量查询方法 - 修改 CrmOrderServiceImpl 查询逻辑支持按订单ID列表过滤 - 在订单项分页查询时批量获取并关联订单基本信息 --- .../com/klp/crm/domain/bo/CrmOrderBo.java | 4 ++ .../com/klp/crm/domain/vo/CrmOrderItemVo.java | 5 ++ .../com/klp/crm/mapper/CrmOrderMapper.java | 3 + .../service/impl/CrmOrderItemServiceImpl.java | 22 +++++++ .../crm/service/impl/CrmOrderServiceImpl.java | 63 ++----------------- 5 files changed, 40 insertions(+), 57 deletions(-) diff --git a/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java b/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java index 5d337096..12080ca4 100644 --- a/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java +++ b/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java @@ -7,6 +7,8 @@ import javax.validation.constraints.*; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; @@ -245,5 +247,7 @@ public class CrmOrderBo extends BaseEntity { */ private String keyword; + private List orderIds; + } diff --git a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemVo.java b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemVo.java index c4ba476b..eded264e 100644 --- a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemVo.java +++ b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderItemVo.java @@ -173,4 +173,9 @@ public class CrmOrderItemVo { @ExcelProperty(value = "用途") private String purpose; + /** + * 订单信息 + */ + private CrmOrderVo orderInfo; + } diff --git a/klp-crm/src/main/java/com/klp/crm/mapper/CrmOrderMapper.java b/klp-crm/src/main/java/com/klp/crm/mapper/CrmOrderMapper.java index 55c54d89..c846b057 100644 --- a/klp-crm/src/main/java/com/klp/crm/mapper/CrmOrderMapper.java +++ b/klp-crm/src/main/java/com/klp/crm/mapper/CrmOrderMapper.java @@ -7,6 +7,8 @@ import com.klp.crm.domain.vo.CrmOrderVo; import com.klp.common.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 正式订单主Mapper接口 * @@ -16,6 +18,7 @@ import org.apache.ibatis.annotations.Param; public interface CrmOrderMapper extends BaseMapperPlus { Page selectVoPagePlus(Page build,@Param("ew") QueryWrapper lqw); + List selectVoPagePlus(@Param("ew") QueryWrapper qw); CrmOrderVo selectVoById(@Param("orderId") String orderId); } diff --git a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java index 206c4dac..426cb201 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java +++ b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java @@ -8,6 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.klp.common.utils.StringUtils; import com.klp.crm.domain.CrmSalesObjection; +import com.klp.crm.domain.bo.CrmOrderBo; +import com.klp.crm.domain.vo.CrmOrderVo; +import com.klp.crm.service.ICrmOrderService; import com.klp.domain.WmsMaterialCoil; import com.klp.domain.WmsReceivable; import com.klp.domain.vo.WmsDeliveryWaybillVo; @@ -49,6 +52,7 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { private final CrmOrderItemMapper baseMapper; private final CrmOrderMapper crmOrderMapper; + private final ICrmOrderService crmOrderService; private final CrmSalesObjectionMapper crmSalesObjectionMapper; private final WmsReceivableMapper wmsReceivableMapper; private final WmsDeliveryWaybillMapper wmsDeliveryWaybillMapper; @@ -70,6 +74,24 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { public TableDataInfo queryPageList(CrmOrderItemBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + List records = result.getRecords(); + if (records != null && !records.isEmpty()) { + List orderIds = records.stream() + .map(CrmOrderItemVo::getOrderId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + if (!orderIds.isEmpty()) { + CrmOrderBo crmOrder = new CrmOrderBo(); + crmOrder.setOrderIds(orderIds); + List orderList = crmOrderService.queryList(crmOrder); + Map orderMap = orderList.stream() + .collect(Collectors.toMap(CrmOrderVo::getOrderId, o -> o, (a, b) -> a)); + for (CrmOrderItemVo item : records) { + item.setOrderInfo(orderMap.get(item.getOrderId())); + } + } + } return TableDataInfo.build(result); } diff --git a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java index 8b0858a1..ede36ad8 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java +++ b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java @@ -238,11 +238,14 @@ public class CrmOrderServiceImpl implements ICrmOrderService { qw.eq(bo.getContractId() != null, "co.contract_id", bo.getContractId()); qw.like(StringUtils.isNotBlank(bo.getAnnexFiles()), "co.annex_files", bo.getAnnexFiles()); qw.eq(bo.getIsTop() != null, "co.is_top", bo.getIsTop()); + if(bo.getOrderIds() !=null){ + qw.in(!bo.getOrderIds().isEmpty(), "co.order_id", bo.getOrderIds()); + } //逻辑删除 qw.eq("co.del_flag", 0); //排序规则: // 1. 置顶优先 (is_top=1 排在前面) - // 2. 状态为1(已生效)的排在前面 + // 2. 状态为1(已生效)的排在前面 // 3. 创建时间倒序 qw.orderByDesc("co.is_top") .orderByDesc("CASE WHEN co.status = 1 THEN 1 ELSE 0 END") @@ -255,62 +258,8 @@ public class CrmOrderServiceImpl implements ICrmOrderService { */ @Override public List queryList(CrmOrderBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(CrmOrderBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(StringUtils.isNotBlank(bo.getOrderCode()), CrmOrder::getOrderCode, bo.getOrderCode()); - lqw.eq(bo.getOrderType() != null, CrmOrder::getOrderType, bo.getOrderType()); - lqw.eq(StringUtils.isNotBlank(bo.getCustomerId()), CrmOrder::getCustomerId, bo.getCustomerId()); - lqw.eq(bo.getOrderAmount() != null, CrmOrder::getOrderAmount, bo.getOrderAmount()); - lqw.eq(StringUtils.isNotBlank(bo.getSalesman()), CrmOrder::getSalesman, bo.getSalesman()); - lqw.eq(bo.getDeliveryDate() != null, CrmOrder::getDeliveryDate, bo.getDeliveryDate()); - lqw.eq(bo.getPreOrderStatus() != null, CrmOrder::getPreOrderStatus, bo.getPreOrderStatus()); - lqw.eq(StringUtils.isNotBlank(bo.getAuditUser()), CrmOrder::getAuditUser, bo.getAuditUser()); - lqw.eq(bo.getAuditTime() != null, CrmOrder::getAuditTime, bo.getAuditTime()); - lqw.eq(bo.getOrderStatus() != null, CrmOrder::getOrderStatus, bo.getOrderStatus()); - lqw.eq(bo.getFinanceStatus() != null, CrmOrder::getFinanceStatus, bo.getFinanceStatus()); - lqw.eq(bo.getUnpaidAmount() != null, CrmOrder::getUnpaidAmount, bo.getUnpaidAmount()); - lqw.like(StringUtils.isNotBlank(bo.getContractCode()), CrmOrder::getContractCode, bo.getContractCode()); - lqw.like(StringUtils.isNotBlank(bo.getContractName()), CrmOrder::getContractName, bo.getContractName()); - lqw.like(StringUtils.isNotBlank(bo.getSupplier()), CrmOrder::getSupplier, bo.getSupplier()); - lqw.like(StringUtils.isNotBlank(bo.getCustomer()), CrmOrder::getCustomer, bo.getCustomer()); - lqw.eq(bo.getSignTime() != null, CrmOrder::getSignTime, bo.getSignTime()); - lqw.like(StringUtils.isNotBlank(bo.getSignLocation()), CrmOrder::getSignLocation, bo.getSignLocation()); - lqw.eq(StringUtils.isNotBlank(bo.getProductContent()), CrmOrder::getProductContent, bo.getProductContent()); - lqw.eq(StringUtils.isNotBlank(bo.getContractContent()), CrmOrder::getContractContent, bo.getContractContent()); - lqw.like(StringUtils.isNotBlank(bo.getSupplierAddress()), CrmOrder::getSupplierAddress, bo.getSupplierAddress()); - lqw.like(StringUtils.isNotBlank(bo.getSupplierPhone()), CrmOrder::getSupplierPhone, bo.getSupplierPhone()); - lqw.like(StringUtils.isNotBlank(bo.getSupplierBank()), CrmOrder::getSupplierBank, bo.getSupplierBank()); - lqw.like(StringUtils.isNotBlank(bo.getSupplierAccount()), CrmOrder::getSupplierAccount, bo.getSupplierAccount()); - lqw.like(StringUtils.isNotBlank(bo.getSupplierTaxNo()), CrmOrder::getSupplierTaxNo, bo.getSupplierTaxNo()); - lqw.like(StringUtils.isNotBlank(bo.getCustomerAddress()), CrmOrder::getCustomerAddress, bo.getCustomerAddress()); - lqw.like(StringUtils.isNotBlank(bo.getCustomerPhone()), CrmOrder::getCustomerPhone, bo.getCustomerPhone()); - lqw.like(StringUtils.isNotBlank(bo.getCustomerBank()), CrmOrder::getCustomerBank, bo.getCustomerBank()); - lqw.like(StringUtils.isNotBlank(bo.getCustomerAccount()), CrmOrder::getCustomerAccount, bo.getCustomerAccount()); - lqw.like(StringUtils.isNotBlank(bo.getCustomerTaxNo()), CrmOrder::getCustomerTaxNo, bo.getCustomerTaxNo()); - lqw.like(StringUtils.isNotBlank(bo.getTechAnnex()), CrmOrder::getTechAnnex, bo.getTechAnnex()); - lqw.like(StringUtils.isNotBlank(bo.getBusinessAnnex()), CrmOrder::getBusinessAnnex, bo.getBusinessAnnex()); - lqw.like(StringUtils.isNotBlank(bo.getProductionSchedule()), CrmOrder::getProductionSchedule, bo.getProductionSchedule()); - lqw.like(StringUtils.isNotBlank(bo.getUnitPriceRemark()), CrmOrder::getUnitPriceRemark, bo.getUnitPriceRemark()); - lqw.eq(bo.getDepositPayable() != null, CrmOrder::getDepositPayable, bo.getDepositPayable()); - lqw.eq(bo.getDepositPaid() != null, CrmOrder::getDepositPaid, bo.getDepositPaid()); - lqw.eq(bo.getDepositRatio() != null, CrmOrder::getDepositRatio, bo.getDepositRatio()); - lqw.eq(bo.getStatus() != null, CrmOrder::getStatus, bo.getStatus()); - lqw.eq(bo.getContractId() != null, CrmOrder::getContractId, bo.getContractId()); - 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; + QueryWrapper lqw = buildQueryWrapperPlus(bo); + return baseMapper.selectVoPagePlus(lqw); } /**