|
@@ -344,17 +344,79 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
|
|
Set<Long> createDeptIds = records.stream().map(OrderMainVo::getCreateDept).collect(Collectors.toSet());
|
|
Set<Long> createDeptIds = records.stream().map(OrderMainVo::getCreateDept).collect(Collectors.toSet());
|
|
|
Set<Long> orderIds = records.stream().map(OrderMainVo::getParentOrderId).filter(Objects::nonNull).collect(Collectors.toSet());
|
|
Set<Long> orderIds = records.stream().map(OrderMainVo::getParentOrderId).filter(Objects::nonNull).collect(Collectors.toSet());
|
|
|
Set<String> dataSources = records.stream().map(OrderMainVo::getDataSource).filter(Objects::nonNull).collect(Collectors.toSet());
|
|
Set<String> dataSources = records.stream().map(OrderMainVo::getDataSource).filter(Objects::nonNull).collect(Collectors.toSet());
|
|
|
|
|
+ // 批量查询分配记录
|
|
|
|
|
+ Set<Long> recordIds = records.stream().map(OrderMainVo::getId).collect(Collectors.toSet());
|
|
|
|
|
+ List<OrderAssignment> assignments = orderAssignmentService.list(
|
|
|
|
|
+ new LambdaQueryWrapper<OrderAssignment>()
|
|
|
|
|
+ .in(OrderAssignment::getChildOrderId, recordIds)
|
|
|
|
|
+ );
|
|
|
|
|
+ Map<Long, OrderAssignment> assignmentMap = assignments.stream()
|
|
|
|
|
+ .collect(Collectors.toMap(OrderAssignment::getChildOrderId, Function.identity(), (a, b) -> a));
|
|
|
|
|
+ // 收集分配对象ID(按类型分组)
|
|
|
|
|
+ Set<Long> customerAssigneeIds = new HashSet<>();
|
|
|
|
|
+ Set<Long> supplierAssigneeIds = new HashSet<>();
|
|
|
|
|
+ Set<Long> partnerAssigneeIds = new HashSet<>();
|
|
|
|
|
+ for (OrderMainVo order : records) {
|
|
|
|
|
+ OrderAssignment assignment = assignmentMap.get(order.getId());
|
|
|
|
|
+ if (ObjectUtils.isNotEmpty(assignment)) {
|
|
|
|
|
+ String type = assignment.getAssigneeType();
|
|
|
|
|
+ if (AssigneeTypeConstants.CUSTOMER.getCode().equals(type) || AssigneeTypeConstants.MKT.getCode().equals(type)) {
|
|
|
|
|
+ customerAssigneeIds.add(assignment.getAssigneeId());
|
|
|
|
|
+ } else if (AssigneeTypeConstants.SUPPLIER.getCode().equals(type)) {
|
|
|
|
|
+ supplierAssigneeIds.add(assignment.getAssigneeId());
|
|
|
|
|
+ } else if (AssigneeTypeConstants.PARTNER.getCode().equals(type)) {
|
|
|
|
|
+ partnerAssigneeIds.add(assignment.getAssigneeId());
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if (order.getAssigneeId() != null && StringUtils.isNotBlank(order.getAssigneeType())) {
|
|
|
|
|
+ String type = order.getAssigneeType();
|
|
|
|
|
+ if (AssigneeTypeConstants.CUSTOMER.getCode().equals(type) || AssigneeTypeConstants.MKT.getCode().equals(type)) {
|
|
|
|
|
+ customerAssigneeIds.add(order.getAssigneeId());
|
|
|
|
|
+ } else if (AssigneeTypeConstants.SUPPLIER.getCode().equals(type)) {
|
|
|
|
|
+ supplierAssigneeIds.add(order.getAssigneeId());
|
|
|
|
|
+ } else if (AssigneeTypeConstants.PARTNER.getCode().equals(type)) {
|
|
|
|
|
+ partnerAssigneeIds.add(order.getAssigneeId());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
Map<Long, String> UserMap = remoteUserService.selectUserNamesByIds(createUserIds.stream().toList());
|
|
Map<Long, String> UserMap = remoteUserService.selectUserNamesByIds(createUserIds.stream().toList());
|
|
|
Map<Long, String> deptMap = remoteDeptService.selectDeptNameByIds(createDeptIds);
|
|
Map<Long, String> deptMap = remoteDeptService.selectDeptNameByIds(createDeptIds);
|
|
|
Map<Long, String> customerMap = remoteCustomerService.selectCustomerNameByIds(customerIds);
|
|
Map<Long, String> customerMap = remoteCustomerService.selectCustomerNameByIds(customerIds);
|
|
|
Map<String, String> dataSourceMap = remoteExternalItemService.selectItemNameByItemKeys(dataSources);
|
|
Map<String, String> dataSourceMap = remoteExternalItemService.selectItemNameByItemKeys(dataSources);
|
|
|
Map<Long, String> orderNoMap = selectOrderNoByIds(orderIds);
|
|
Map<Long, String> orderNoMap = selectOrderNoByIds(orderIds);
|
|
|
|
|
+ Map<Long, String> customerAssigneeNameMap = customerAssigneeIds.isEmpty() ? Collections.emptyMap()
|
|
|
|
|
+ : remoteCustomerService.selectCustomerNameByIds(customerAssigneeIds);
|
|
|
|
|
+ Map<Long, String> supplierAssigneeNameMap = supplierAssigneeIds.isEmpty() ? Collections.emptyMap()
|
|
|
|
|
+ : remoteSupplierInfoService.selectSupplierNameByIds(supplierAssigneeIds);
|
|
|
|
|
+ Map<Long, String> partnerAssigneeNameMap = partnerAssigneeIds.isEmpty() ? Collections.emptyMap()
|
|
|
|
|
+ : remotePartnerInfoService.selectPartnerNameByIds(partnerAssigneeIds);
|
|
|
records.forEach(orderMainVo -> {
|
|
records.forEach(orderMainVo -> {
|
|
|
orderMainVo.setProjectOrderNo(orderNoMap.get(orderMainVo.getParentOrderId()));
|
|
orderMainVo.setProjectOrderNo(orderNoMap.get(orderMainVo.getParentOrderId()));
|
|
|
orderMainVo.setCreateName(UserMap.get(orderMainVo.getCreateBy()));
|
|
orderMainVo.setCreateName(UserMap.get(orderMainVo.getCreateBy()));
|
|
|
orderMainVo.setCreateDeptName(deptMap.get(orderMainVo.getCreateDept()));
|
|
orderMainVo.setCreateDeptName(deptMap.get(orderMainVo.getCreateDept()));
|
|
|
orderMainVo.setCustomerName(customerMap.get(orderMainVo.getCustomerId()));
|
|
orderMainVo.setCustomerName(customerMap.get(orderMainVo.getCustomerId()));
|
|
|
orderMainVo.setDataSourceStr(dataSourceMap.get(orderMainVo.getDataSource()));
|
|
orderMainVo.setDataSourceStr(dataSourceMap.get(orderMainVo.getDataSource()));
|
|
|
|
|
+ // 设置分配对象名称
|
|
|
|
|
+ OrderAssignment assignment = assignmentMap.get(orderMainVo.getId());
|
|
|
|
|
+ if (ObjectUtils.isNotEmpty(assignment)) {
|
|
|
|
|
+ orderMainVo.setAssigneeRemark(assignment.getRemark());
|
|
|
|
|
+ String type = assignment.getAssigneeType();
|
|
|
|
|
+ if (AssigneeTypeConstants.CUSTOMER.getCode().equals(type) || AssigneeTypeConstants.MKT.getCode().equals(type)) {
|
|
|
|
|
+ orderMainVo.setAssigneeName(customerAssigneeNameMap.get(assignment.getAssigneeId()));
|
|
|
|
|
+ } else if (AssigneeTypeConstants.SUPPLIER.getCode().equals(type)) {
|
|
|
|
|
+ orderMainVo.setAssigneeName(supplierAssigneeNameMap.get(assignment.getAssigneeId()));
|
|
|
|
|
+ } else if (AssigneeTypeConstants.PARTNER.getCode().equals(type)) {
|
|
|
|
|
+ orderMainVo.setAssigneeName(partnerAssigneeNameMap.get(assignment.getAssigneeId()));
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if (orderMainVo.getAssigneeId() != null && StringUtils.isNotBlank(orderMainVo.getAssigneeType())) {
|
|
|
|
|
+ String type = orderMainVo.getAssigneeType();
|
|
|
|
|
+ if (AssigneeTypeConstants.CUSTOMER.getCode().equals(type) || AssigneeTypeConstants.MKT.getCode().equals(type)) {
|
|
|
|
|
+ orderMainVo.setAssigneeName(customerAssigneeNameMap.get(orderMainVo.getAssigneeId()));
|
|
|
|
|
+ } else if (AssigneeTypeConstants.SUPPLIER.getCode().equals(type)) {
|
|
|
|
|
+ orderMainVo.setAssigneeName(supplierAssigneeNameMap.get(orderMainVo.getAssigneeId()));
|
|
|
|
|
+ } else if (AssigneeTypeConstants.PARTNER.getCode().equals(type)) {
|
|
|
|
|
+ orderMainVo.setAssigneeName(partnerAssigneeNameMap.get(orderMainVo.getAssigneeId()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
return TableDataInfo.build(result);
|
|
return TableDataInfo.build(result);
|
|
@@ -434,8 +496,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
|
|
if (StringUtils.isNotBlank(bo.getAssigneeType())) {
|
|
if (StringUtils.isNotBlank(bo.getAssigneeType())) {
|
|
|
lqw.and(wrapper -> wrapper
|
|
lqw.and(wrapper -> wrapper
|
|
|
.eq(OrderMain::getAssigneeType, bo.getAssigneeType())
|
|
.eq(OrderMain::getAssigneeType, bo.getAssigneeType())
|
|
|
- .or()
|
|
|
|
|
- .isNotNull(OrderMain::getDataSource)
|
|
|
|
|
|
|
+// .or()
|
|
|
|
|
+// .isNotNull(OrderMain::getDataSource)
|
|
|
);
|
|
);
|
|
|
} else {
|
|
} else {
|
|
|
// 如果没有指定 assigneeType,只查询 dataSource 不为空的订单
|
|
// 如果没有指定 assigneeType,只查询 dataSource 不为空的订单
|
|
@@ -472,6 +534,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getPaymentStatus()), OrderMain::getPaymentStatus, bo.getPaymentStatus());
|
|
lqw.eq(StringUtils.isNotBlank(bo.getPaymentStatus()), OrderMain::getPaymentStatus, bo.getPaymentStatus());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getOrderSource()), OrderMain::getOrderSource, bo.getOrderSource());
|
|
lqw.eq(StringUtils.isNotBlank(bo.getOrderSource()), OrderMain::getOrderSource, bo.getOrderSource());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), OrderMain::getOrderStatus, bo.getOrderStatus());
|
|
lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), OrderMain::getOrderStatus, bo.getOrderStatus());
|
|
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getAssignmentStatus()), OrderMain::getAssignmentStatus, bo.getAssignmentStatus());
|
|
|
lqw.eq(bo.getOrderTime() != null, OrderMain::getOrderTime, bo.getOrderTime());
|
|
lqw.eq(bo.getOrderTime() != null, OrderMain::getOrderTime, bo.getOrderTime());
|
|
|
lqw.eq(bo.getConfirmTime() != null, OrderMain::getConfirmTime, bo.getConfirmTime());
|
|
lqw.eq(bo.getConfirmTime() != null, OrderMain::getConfirmTime, bo.getConfirmTime());
|
|
|
lqw.eq(bo.getShippingTime() != null, OrderMain::getShippingTime, bo.getShippingTime());
|
|
lqw.eq(bo.getShippingTime() != null, OrderMain::getShippingTime, bo.getShippingTime());
|
|
@@ -2022,8 +2085,18 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
|
|
treeVo.setRemark(orderMainVo.getRemark());
|
|
treeVo.setRemark(orderMainVo.getRemark());
|
|
|
treeVo.setDataSource(orderMainVo.getDataSource());
|
|
treeVo.setDataSource(orderMainVo.getDataSource());
|
|
|
|
|
|
|
|
- // 查询并设置分配对象名称
|
|
|
|
|
- if (orderMainVo.getAssigneeId() != null && StringUtils.isNotBlank(orderMainVo.getAssigneeType())) {
|
|
|
|
|
|
|
+ // 查询并设置分配对象名称(优先从 order_assignment 表获取子订单的分配人)
|
|
|
|
|
+ OrderAssignment orderAssignment = orderAssignmentService.getOne(
|
|
|
|
|
+ new LambdaQueryWrapper<OrderAssignment>()
|
|
|
|
|
+ .eq(OrderAssignment::getChildOrderId, orderMainVo.getId())
|
|
|
|
|
+ .last("Limit 1")
|
|
|
|
|
+ );
|
|
|
|
|
+ if (ObjectUtils.isNotEmpty(orderAssignment)) {
|
|
|
|
|
+ treeVo.setAssigneeType(orderAssignment.getAssigneeType());
|
|
|
|
|
+ treeVo.setAssigneeId(orderAssignment.getAssigneeId());
|
|
|
|
|
+ String assigneeName = getAssigneeName(orderAssignment.getAssigneeId(), orderAssignment.getAssigneeType());
|
|
|
|
|
+ treeVo.setAssigneeName(assigneeName);
|
|
|
|
|
+ } else if (orderMainVo.getAssigneeId() != null && StringUtils.isNotBlank(orderMainVo.getAssigneeType())) {
|
|
|
String assigneeName = getAssigneeName(orderMainVo.getAssigneeId(), orderMainVo.getAssigneeType());
|
|
String assigneeName = getAssigneeName(orderMainVo.getAssigneeId(), orderMainVo.getAssigneeType());
|
|
|
treeVo.setAssigneeName(assigneeName);
|
|
treeVo.setAssigneeName(assigneeName);
|
|
|
}
|
|
}
|
|
@@ -2032,6 +2105,30 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
|
|
List<OrderProductSimpleVo> productList = queryOrderProductsSimple(orderMainVo.getId());
|
|
List<OrderProductSimpleVo> productList = queryOrderProductsSimple(orderMainVo.getId());
|
|
|
treeVo.setProductList(productList);
|
|
treeVo.setProductList(productList);
|
|
|
|
|
|
|
|
|
|
+ // 查询该订单的包裹/发货单列表
|
|
|
|
|
+ List<OrderDeliverVo> deliverList = orderDeliverMapper.selectVoList(
|
|
|
|
|
+ new LambdaQueryWrapper<OrderDeliver>()
|
|
|
|
|
+ .eq(OrderDeliver::getOrderId, orderMainVo.getId())
|
|
|
|
|
+ .orderByAsc(OrderDeliver::getId)
|
|
|
|
|
+ );
|
|
|
|
|
+ // 查询每个包裹的商品
|
|
|
|
|
+ if (CollUtil.isNotEmpty(deliverList)) {
|
|
|
|
|
+ List<Long> deliverIds = deliverList.stream()
|
|
|
|
|
+ .map(OrderDeliverVo::getId)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ List<OrderDeliverProductVo> allDeliverProducts = orderDeliverProductMapper.selectVoList(
|
|
|
|
|
+ new LambdaQueryWrapper<OrderDeliverProduct>()
|
|
|
|
|
+ .in(OrderDeliverProduct::getDeliverId, deliverIds)
|
|
|
|
|
+ .orderByAsc(OrderDeliverProduct::getId)
|
|
|
|
|
+ );
|
|
|
|
|
+ Map<Long, List<OrderDeliverProductVo>> productMap = allDeliverProducts.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(OrderDeliverProductVo::getDeliverId));
|
|
|
|
|
+ deliverList.forEach(deliver ->
|
|
|
|
|
+ deliver.setDeliverProductList(productMap.getOrDefault(deliver.getId(), Collections.emptyList()))
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+ treeVo.setOrderDeliverList(deliverList);
|
|
|
|
|
+
|
|
|
return treeVo;
|
|
return treeVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2086,7 +2183,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
- if (AssigneeTypeConstants.CUSTOMER.getCode().equals(assigneeType)) {
|
|
|
|
|
|
|
+ if (AssigneeTypeConstants.CUSTOMER.getCode().equals(assigneeType) || AssigneeTypeConstants.MKT.getCode().equals(assigneeType)) {
|
|
|
Map<Long, String> customerMap = remoteCustomerService.selectCustomerNameByIds(Collections.singleton(assigneeId));
|
|
Map<Long, String> customerMap = remoteCustomerService.selectCustomerNameByIds(Collections.singleton(assigneeId));
|
|
|
return customerMap.get(assigneeId);
|
|
return customerMap.get(assigneeId);
|
|
|
} else if (AssigneeTypeConstants.SUPPLIER.getCode().equals(assigneeType)) {
|
|
} else if (AssigneeTypeConstants.SUPPLIER.getCode().equals(assigneeType)) {
|