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); + } }