From 4075ead84e181129fd6256cfc9d8cb2986bf0298 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 6 Apr 2026 11:24:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(crm):=20=E6=96=B0=E5=A2=9E=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=9B=B8=E5=85=B3=E8=AE=A2=E5=8D=95=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加根据客户ID查询异议和财务信息的功能 - 添加根据客户ID查询发货单配卷的功能 - 实现客户订单关联数据的多层查询逻辑 - 集成CRM订单、异议、应收和发货单据的数据关联 - 提供完整的客户订单数据视图支持 --- .../controller/CrmOrderItemController.java | 14 ++++ .../klp/crm/service/ICrmOrderItemService.java | 10 +++ .../service/impl/CrmOrderItemServiceImpl.java | 73 +++++++++++++++++++ 3 files changed, 97 insertions(+) diff --git a/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java b/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java index 48bf4ab5..69e43426 100644 --- a/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java +++ b/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java @@ -118,4 +118,18 @@ public class CrmOrderItemController extends BaseController { @PathVariable Long contractId) { return R.ok(iCrmOrderItemService.queryCoilsByContractId(contractId)); } + + // 根据客户id查询该客户下属订单关联的异议和财务信息。 + @GetMapping("/customerFinance/{customerId}") + public R getCustomerFinance(@NotNull(message = "客户ID不能为空") + @PathVariable String customerId) { + return R.ok(iCrmOrderItemService.queryFinanceAndObjectionByCustomerId(customerId)); + } + + // 根据客户id查询发货单据中的配卷。 + @GetMapping("/coils/customer/{customerId}") + public R> getCoilsByCustomerId(@NotNull(message = "客户ID不能为空") + @PathVariable String customerId) { + return R.ok(iCrmOrderItemService.queryCoilsByCustomerId(customerId)); + } } diff --git a/klp-crm/src/main/java/com/klp/crm/service/ICrmOrderItemService.java b/klp-crm/src/main/java/com/klp/crm/service/ICrmOrderItemService.java index fd584fca..ae9a299c 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/ICrmOrderItemService.java +++ b/klp-crm/src/main/java/com/klp/crm/service/ICrmOrderItemService.java @@ -65,4 +65,14 @@ public interface ICrmOrderItemService { * 根据合同ID查询发货单配卷 */ List queryCoilsByContractId(Long contractId); + + /** + * 根据客户ID查询下属订单的异议和财务信息 + */ + CrmContractOrderFinanceVo queryFinanceAndObjectionByCustomerId(String customerId); + + /** + * 根据客户ID查询发货单配卷 + */ + List queryCoilsByCustomerId(String customerId); } 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 947e51ef..af8f5440 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 @@ -249,4 +249,77 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { coilBo.setCoilIds(coilIds); return iWmsMaterialCoilService.queryList(coilBo); } + + @Override + public CrmContractOrderFinanceVo queryFinanceAndObjectionByCustomerId(String customerId) { + CrmContractOrderFinanceVo result = new CrmContractOrderFinanceVo(); + + LambdaQueryWrapper orderWrapper = new LambdaQueryWrapper<>(); + orderWrapper.eq(CrmOrder::getCustomerId, customerId); + List orders = crmOrderMapper.selectList(orderWrapper); + + if (orders == null || orders.isEmpty()) { + return result; + } + + List orderIds = orders.stream() + .map(CrmOrder::getOrderId) + .collect(Collectors.toList()); + + LambdaQueryWrapper objectionWrapper = new LambdaQueryWrapper<>(); + objectionWrapper.in(CrmSalesObjection::getOrderId, orderIds); + List objectionList = crmSalesObjectionMapper.selectVoList(objectionWrapper); + result.setObjectionList(objectionList); + + LambdaQueryWrapper receivableWrapper = new LambdaQueryWrapper<>(); + receivableWrapper.in(WmsReceivable::getOrderId, orderIds); + List receivableList = wmsReceivableMapper.selectVoList(receivableWrapper); + result.setReceivableList(receivableList); + + return result; + } + + @Override + public List queryCoilsByCustomerId(String customerId) { + LambdaQueryWrapper orderWrapper = new LambdaQueryWrapper<>(); + orderWrapper.eq(CrmOrder::getCustomerId, customerId); + List orders = crmOrderMapper.selectList(orderWrapper); + + if (orders == null || orders.isEmpty()) { + return Collections.emptyList(); + } + + List orderIds = orders.stream() + .map(CrmOrder::getOrderId) + .collect(Collectors.toList()); + + LambdaQueryWrapper waybillWrapper = new LambdaQueryWrapper<>(); + waybillWrapper.in(WmsDeliveryWaybill::getOrderId, orderIds); + List waybills = wmsDeliveryWaybillMapper.selectList(waybillWrapper); + + if (waybills == null || waybills.isEmpty()) { + return Collections.emptyList(); + } + + List waybillIds = waybills.stream() + .map(WmsDeliveryWaybill::getWaybillId) + .collect(Collectors.toList()); + + LambdaQueryWrapper detailWrapper = new LambdaQueryWrapper<>(); + detailWrapper.in(WmsDeliveryWaybillDetail::getWaybillId, waybillIds); + List details = wmsDeliveryWaybillDetailMapper.selectList(detailWrapper); + + if (details == null || details.isEmpty()) { + return Collections.emptyList(); + } + + String coilIds = details.stream() + .map(WmsDeliveryWaybillDetail::getCoilId) + .map(String::valueOf) + .collect(Collectors.joining(",")); + + WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); + coilBo.setCoilIds(coilIds); + return iWmsMaterialCoilService.queryList(coilBo); + } }