feat(crm): 新增客户相关订单数据查询接口

- 添加根据客户ID查询异议和财务信息的功能
- 添加根据客户ID查询发货单配卷的功能
- 实现客户订单关联数据的多层查询逻辑
- 集成CRM订单、异议、应收和发货单据的数据关联
- 提供完整的客户订单数据视图支持
This commit is contained in:
2026-04-06 11:24:44 +08:00
parent 031d7ba708
commit 4075ead84e
3 changed files with 97 additions and 0 deletions

View File

@@ -118,4 +118,18 @@ public class CrmOrderItemController extends BaseController {
@PathVariable Long contractId) {
return R.ok(iCrmOrderItemService.queryCoilsByContractId(contractId));
}
// 根据客户id查询该客户下属订单关联的异议和财务信息。
@GetMapping("/customerFinance/{customerId}")
public R<CrmContractOrderFinanceVo> getCustomerFinance(@NotNull(message = "客户ID不能为空")
@PathVariable String customerId) {
return R.ok(iCrmOrderItemService.queryFinanceAndObjectionByCustomerId(customerId));
}
// 根据客户id查询发货单据中的配卷。
@GetMapping("/coils/customer/{customerId}")
public R<List<WmsMaterialCoilVo>> getCoilsByCustomerId(@NotNull(message = "客户ID不能为空")
@PathVariable String customerId) {
return R.ok(iCrmOrderItemService.queryCoilsByCustomerId(customerId));
}
}

View File

@@ -65,4 +65,14 @@ public interface ICrmOrderItemService {
* 根据合同ID查询发货单配卷
*/
List<WmsMaterialCoilVo> queryCoilsByContractId(Long contractId);
/**
* 根据客户ID查询下属订单的异议和财务信息
*/
CrmContractOrderFinanceVo queryFinanceAndObjectionByCustomerId(String customerId);
/**
* 根据客户ID查询发货单配卷
*/
List<WmsMaterialCoilVo> queryCoilsByCustomerId(String customerId);
}

View File

@@ -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<CrmOrder> orderWrapper = new LambdaQueryWrapper<>();
orderWrapper.eq(CrmOrder::getCustomerId, customerId);
List<CrmOrder> orders = crmOrderMapper.selectList(orderWrapper);
if (orders == null || orders.isEmpty()) {
return result;
}
List<Long> orderIds = orders.stream()
.map(CrmOrder::getOrderId)
.collect(Collectors.toList());
LambdaQueryWrapper<CrmSalesObjection> objectionWrapper = new LambdaQueryWrapper<>();
objectionWrapper.in(CrmSalesObjection::getOrderId, orderIds);
List<CrmSalesObjectionVo> objectionList = crmSalesObjectionMapper.selectVoList(objectionWrapper);
result.setObjectionList(objectionList);
LambdaQueryWrapper<com.klp.domain.WmsReceivable> receivableWrapper = new LambdaQueryWrapper<>();
receivableWrapper.in(WmsReceivable::getOrderId, orderIds);
List<WmsReceivableVo> receivableList = wmsReceivableMapper.selectVoList(receivableWrapper);
result.setReceivableList(receivableList);
return result;
}
@Override
public List<WmsMaterialCoilVo> queryCoilsByCustomerId(String customerId) {
LambdaQueryWrapper<CrmOrder> orderWrapper = new LambdaQueryWrapper<>();
orderWrapper.eq(CrmOrder::getCustomerId, customerId);
List<CrmOrder> orders = crmOrderMapper.selectList(orderWrapper);
if (orders == null || orders.isEmpty()) {
return Collections.emptyList();
}
List<Long> orderIds = orders.stream()
.map(CrmOrder::getOrderId)
.collect(Collectors.toList());
LambdaQueryWrapper<WmsDeliveryWaybill> waybillWrapper = new LambdaQueryWrapper<>();
waybillWrapper.in(WmsDeliveryWaybill::getOrderId, orderIds);
List<WmsDeliveryWaybill> waybills = wmsDeliveryWaybillMapper.selectList(waybillWrapper);
if (waybills == null || waybills.isEmpty()) {
return Collections.emptyList();
}
List<Long> waybillIds = waybills.stream()
.map(WmsDeliveryWaybill::getWaybillId)
.collect(Collectors.toList());
LambdaQueryWrapper<WmsDeliveryWaybillDetail> detailWrapper = new LambdaQueryWrapper<>();
detailWrapper.in(WmsDeliveryWaybillDetail::getWaybillId, waybillIds);
List<WmsDeliveryWaybillDetail> 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);
}
}