feat(crm): 订单ID数据类型优化及配卷查询功能扩展
- 将CrmOrder、CrmOrderItem及其相关BO、VO类中的orderId和itemId字段从String类型改为Long类型 - 修改selectOrderItemsByOrderIds方法参数类型为List<Long> - 在CrmOrderItemController中新增根据订单ID和合同ID查询配卷的接口 - 实现queryCoilsByOrderId和queryCoilsByContractId服务方法 - 移除WmsMaterialCoilServiceImpl中冗余的嵌套对象构建逻辑 - 更新销售报表中订单ID的类型转换和分组逻辑以适配Long类型
This commit is contained in:
@@ -21,6 +21,7 @@ import com.klp.crm.domain.vo.CrmOrderItemVo;
|
|||||||
import com.klp.crm.domain.vo.CrmContractOrderFinanceVo;
|
import com.klp.crm.domain.vo.CrmContractOrderFinanceVo;
|
||||||
import com.klp.crm.domain.bo.CrmOrderItemBo;
|
import com.klp.crm.domain.bo.CrmOrderItemBo;
|
||||||
import com.klp.crm.service.ICrmOrderItemService;
|
import com.klp.crm.service.ICrmOrderItemService;
|
||||||
|
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
import com.klp.common.core.page.TableDataInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -98,9 +99,23 @@ public class CrmOrderItemController extends BaseController {
|
|||||||
return toAjax(iCrmOrderItemService.deleteWithValidByIds(Arrays.asList(itemIds), true));
|
return toAjax(iCrmOrderItemService.deleteWithValidByIds(Arrays.asList(itemIds), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据合同id查询该合同下属订单关联的异议和财务信息。。
|
||||||
@GetMapping("/contractFinance/{contractId}")
|
@GetMapping("/contractFinance/{contractId}")
|
||||||
public R<CrmContractOrderFinanceVo> getContractFinance(@NotNull(message = "合同ID不能为空")
|
public R<CrmContractOrderFinanceVo> getContractFinance(@NotNull(message = "合同ID不能为空")
|
||||||
@PathVariable Long contractId) {
|
@PathVariable Long contractId) {
|
||||||
return R.ok(iCrmOrderItemService.queryFinanceAndObjectionByContractId(contractId));
|
return R.ok(iCrmOrderItemService.queryFinanceAndObjectionByContractId(contractId));
|
||||||
}
|
}
|
||||||
|
// 根据订单id查询发货单据中的配卷。
|
||||||
|
@GetMapping("/coils/order/{orderId}")
|
||||||
|
public R<List<WmsMaterialCoilVo>> getCoilsByOrderId(@NotNull(message = "订单ID不能为空")
|
||||||
|
@PathVariable Long orderId) {
|
||||||
|
return R.ok(iCrmOrderItemService.queryCoilsByOrderId(orderId));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据合同id查询发货单据中的配卷。
|
||||||
|
@GetMapping("/coils/contract/{contractId}")
|
||||||
|
public R<List<WmsMaterialCoilVo>> getCoilsByContractId(@NotNull(message = "合同ID不能为空")
|
||||||
|
@PathVariable Long contractId) {
|
||||||
|
return R.ok(iCrmOrderItemService.queryCoilsByContractId(contractId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class CrmOrder extends BaseEntity {
|
|||||||
* 订单ID(主键)
|
* 订单ID(主键)
|
||||||
*/
|
*/
|
||||||
@TableId(value = "order_id")
|
@TableId(value = "order_id")
|
||||||
private String orderId;
|
private Long orderId;
|
||||||
/**
|
/**
|
||||||
* 订单编号
|
* 订单编号
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -24,11 +24,11 @@ public class CrmOrderItem extends BaseEntity {
|
|||||||
* 正式订单明细ID(主键)
|
* 正式订单明细ID(主键)
|
||||||
*/
|
*/
|
||||||
@TableId(value = "item_id")
|
@TableId(value = "item_id")
|
||||||
private String itemId;
|
private Long itemId;
|
||||||
/**
|
/**
|
||||||
* 关联正式订单ID(外键)
|
* 关联正式订单ID(外键)
|
||||||
*/
|
*/
|
||||||
private String orderId;
|
private Long orderId;
|
||||||
/**
|
/**
|
||||||
* 产品类型
|
* 产品类型
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class CrmOrderBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 订单ID(主键)
|
* 订单ID(主键)
|
||||||
*/
|
*/
|
||||||
private String orderId;
|
private Long orderId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单编号
|
* 订单编号
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ public class CrmOrderItemBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 正式订单明细ID(主键)
|
* 正式订单明细ID(主键)
|
||||||
*/
|
*/
|
||||||
private String itemId;
|
private Long itemId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关联正式订单ID(外键)
|
* 关联正式订单ID(外键)
|
||||||
*/
|
*/
|
||||||
private String orderId;
|
private Long orderId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品类型
|
* 产品类型
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ public class CrmOrderItemVo {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "正式订单明细ID", converter = ExcelDictConvert.class)
|
@ExcelProperty(value = "正式订单明细ID", converter = ExcelDictConvert.class)
|
||||||
@ExcelDictFormat(readConverterExp = "主=键")
|
@ExcelDictFormat(readConverterExp = "主=键")
|
||||||
private String itemId;
|
private Long itemId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关联正式订单ID(外键)
|
* 关联正式订单ID(外键)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "关联正式订单ID", converter = ExcelDictConvert.class)
|
@ExcelProperty(value = "关联正式订单ID", converter = ExcelDictConvert.class)
|
||||||
@ExcelDictFormat(readConverterExp = "外=键")
|
@ExcelDictFormat(readConverterExp = "外=键")
|
||||||
private String orderId;
|
private Long orderId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品类型
|
* 产品类型
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class CrmOrderVo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "订单ID", converter = ExcelDictConvert.class)
|
@ExcelProperty(value = "订单ID", converter = ExcelDictConvert.class)
|
||||||
@ExcelDictFormat(readConverterExp = "主=键")
|
@ExcelDictFormat(readConverterExp = "主=键")
|
||||||
private String orderId;
|
private Long orderId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单编号
|
* 订单编号
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ public class CrmSalesReportVo {
|
|||||||
/**
|
/**
|
||||||
* 订单ID
|
* 订单ID
|
||||||
*/
|
*/
|
||||||
private String orderId;
|
private Long orderId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单编号
|
* 订单编号
|
||||||
|
|||||||
@@ -21,5 +21,5 @@ public interface CrmOrderItemMapper extends BaseMapperPlus<CrmOrderItemMapper, C
|
|||||||
* @param orderIds 订单ID列表
|
* @param orderIds 订单ID列表
|
||||||
* @return 订单明细列表
|
* @return 订单明细列表
|
||||||
*/
|
*/
|
||||||
List<CrmOrderItem> selectOrderItemsByOrderIds(@Param("orderIds") List<String> orderIds);
|
List<CrmOrderItem> selectOrderItemsByOrderIds(@Param("orderIds") List<Long> orderIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import java.util.Collection;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.klp.crm.domain.vo.CrmContractOrderFinanceVo;
|
import com.klp.crm.domain.vo.CrmContractOrderFinanceVo;
|
||||||
|
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 正式订单明细Service接口
|
* 正式订单明细Service接口
|
||||||
@@ -53,4 +55,14 @@ public interface ICrmOrderItemService {
|
|||||||
* 根据合同ID查询下属订单的异议和财务信息
|
* 根据合同ID查询下属订单的异议和财务信息
|
||||||
*/
|
*/
|
||||||
CrmContractOrderFinanceVo queryFinanceAndObjectionByContractId(Long contractId);
|
CrmContractOrderFinanceVo queryFinanceAndObjectionByContractId(Long contractId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据订单ID查询发货单配卷
|
||||||
|
*/
|
||||||
|
List<WmsMaterialCoilVo> queryCoilsByOrderId(Long orderId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据合同ID查询发货单配卷
|
||||||
|
*/
|
||||||
|
List<WmsMaterialCoilVo> queryCoilsByContractId(Long contractId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.klp.common.utils.StringUtils;
|
import com.klp.common.utils.StringUtils;
|
||||||
import com.klp.crm.domain.CrmSalesObjection;
|
import com.klp.crm.domain.CrmSalesObjection;
|
||||||
|
import com.klp.domain.WmsReceivable;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.klp.crm.domain.bo.CrmOrderItemBo;
|
import com.klp.crm.domain.bo.CrmOrderItemBo;
|
||||||
@@ -15,18 +16,23 @@ import com.klp.crm.domain.vo.CrmOrderItemVo;
|
|||||||
import com.klp.crm.domain.vo.CrmContractOrderFinanceVo;
|
import com.klp.crm.domain.vo.CrmContractOrderFinanceVo;
|
||||||
import com.klp.crm.domain.vo.CrmSalesObjectionVo;
|
import com.klp.crm.domain.vo.CrmSalesObjectionVo;
|
||||||
import com.klp.domain.vo.WmsReceivableVo;
|
import com.klp.domain.vo.WmsReceivableVo;
|
||||||
|
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||||
|
import com.klp.domain.bo.WmsMaterialCoilBo;
|
||||||
import com.klp.crm.domain.CrmOrderItem;
|
import com.klp.crm.domain.CrmOrderItem;
|
||||||
import com.klp.crm.domain.CrmOrder;
|
import com.klp.crm.domain.CrmOrder;
|
||||||
|
import com.klp.domain.WmsDeliveryWaybill;
|
||||||
|
import com.klp.domain.WmsDeliveryWaybillDetail;
|
||||||
import com.klp.crm.mapper.CrmOrderItemMapper;
|
import com.klp.crm.mapper.CrmOrderItemMapper;
|
||||||
import com.klp.crm.mapper.CrmOrderMapper;
|
import com.klp.crm.mapper.CrmOrderMapper;
|
||||||
import com.klp.crm.mapper.CrmSalesObjectionMapper;
|
import com.klp.crm.mapper.CrmSalesObjectionMapper;
|
||||||
import com.klp.crm.service.ICrmOrderItemService;
|
import com.klp.crm.service.ICrmOrderItemService;
|
||||||
import com.klp.mapper.WmsReceivableMapper;
|
import com.klp.mapper.WmsReceivableMapper;
|
||||||
|
import com.klp.mapper.WmsDeliveryWaybillMapper;
|
||||||
|
import com.klp.mapper.WmsDeliveryWaybillDetailMapper;
|
||||||
|
import com.klp.service.IWmsMaterialCoilService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,12 +49,15 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService {
|
|||||||
private final CrmOrderMapper crmOrderMapper;
|
private final CrmOrderMapper crmOrderMapper;
|
||||||
private final CrmSalesObjectionMapper crmSalesObjectionMapper;
|
private final CrmSalesObjectionMapper crmSalesObjectionMapper;
|
||||||
private final WmsReceivableMapper wmsReceivableMapper;
|
private final WmsReceivableMapper wmsReceivableMapper;
|
||||||
|
private final WmsDeliveryWaybillMapper wmsDeliveryWaybillMapper;
|
||||||
|
private final WmsDeliveryWaybillDetailMapper wmsDeliveryWaybillDetailMapper;
|
||||||
|
private final IWmsMaterialCoilService iWmsMaterialCoilService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询正式订单明细
|
* 查询正式订单明细
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public CrmOrderItemVo queryById(String itemId){
|
public CrmOrderItemVo queryById(String itemId) {
|
||||||
return baseMapper.selectVoById(itemId);
|
return baseMapper.selectVoById(itemId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +83,7 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService {
|
|||||||
private LambdaQueryWrapper<CrmOrderItem> buildQueryWrapper(CrmOrderItemBo bo) {
|
private LambdaQueryWrapper<CrmOrderItem> buildQueryWrapper(CrmOrderItemBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<CrmOrderItem> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<CrmOrderItem> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getOrderId()), CrmOrderItem::getOrderId, bo.getOrderId());
|
lqw.eq(bo.getOrderId() != null, CrmOrderItem::getOrderId, bo.getOrderId());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getProductType()), CrmOrderItem::getProductType, bo.getProductType());
|
lqw.eq(StringUtils.isNotBlank(bo.getProductType()), CrmOrderItem::getProductType, bo.getProductType());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getRawMaterialSpec()), CrmOrderItem::getRawMaterialSpec, bo.getRawMaterialSpec());
|
lqw.eq(StringUtils.isNotBlank(bo.getRawMaterialSpec()), CrmOrderItem::getRawMaterialSpec, bo.getRawMaterialSpec());
|
||||||
lqw.eq(bo.getProductNum() != null, CrmOrderItem::getProductNum, bo.getProductNum());
|
lqw.eq(bo.getProductNum() != null, CrmOrderItem::getProductNum, bo.getProductNum());
|
||||||
@@ -121,7 +130,7 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService {
|
|||||||
/**
|
/**
|
||||||
* 保存前的数据校验
|
* 保存前的数据校验
|
||||||
*/
|
*/
|
||||||
private void validEntityBeforeSave(CrmOrderItem entity){
|
private void validEntityBeforeSave(CrmOrderItem entity) {
|
||||||
//TODO 做一些数据校验,如唯一约束
|
//TODO 做一些数据校验,如唯一约束
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +139,7 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
|
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
|
||||||
if(isValid){
|
if (isValid) {
|
||||||
//TODO 做一些业务上的校验,判断是否需要校验
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
}
|
}
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
return baseMapper.deleteBatchIds(ids) > 0;
|
||||||
@@ -148,9 +157,9 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> orderIds = orders.stream()
|
List<Long> orderIds = orders.stream()
|
||||||
.map(CrmOrder::getOrderId)
|
.map(CrmOrder::getOrderId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
LambdaQueryWrapper<CrmSalesObjection> objectionWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<CrmSalesObjection> objectionWrapper = new LambdaQueryWrapper<>();
|
||||||
objectionWrapper.in(CrmSalesObjection::getOrderId, orderIds);
|
objectionWrapper.in(CrmSalesObjection::getOrderId, orderIds);
|
||||||
@@ -158,12 +167,86 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService {
|
|||||||
result.setObjectionList(objectionList);
|
result.setObjectionList(objectionList);
|
||||||
|
|
||||||
LambdaQueryWrapper<com.klp.domain.WmsReceivable> receivableWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<com.klp.domain.WmsReceivable> receivableWrapper = new LambdaQueryWrapper<>();
|
||||||
receivableWrapper.in(com.klp.domain.WmsReceivable::getOrderId, orderIds.stream()
|
receivableWrapper.in(WmsReceivable::getOrderId, orderIds);
|
||||||
.map(Long::parseLong)
|
|
||||||
.collect(Collectors.toList()));
|
|
||||||
List<WmsReceivableVo> receivableList = wmsReceivableMapper.selectVoList(receivableWrapper);
|
List<WmsReceivableVo> receivableList = wmsReceivableMapper.selectVoList(receivableWrapper);
|
||||||
result.setReceivableList(receivableList);
|
result.setReceivableList(receivableList);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WmsMaterialCoilVo> queryCoilsByOrderId(Long orderId) {
|
||||||
|
LambdaQueryWrapper<WmsDeliveryWaybill> waybillWrapper = new LambdaQueryWrapper<>();
|
||||||
|
waybillWrapper.eq(WmsDeliveryWaybill::getOrderId, orderId);
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WmsMaterialCoilVo> queryCoilsByContractId(Long contractId) {
|
||||||
|
LambdaQueryWrapper<CrmOrder> orderWrapper = new LambdaQueryWrapper<>();
|
||||||
|
orderWrapper.eq(CrmOrder::getContractId, contractId);
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class CrmSalesReportServiceImpl implements ICrmSalesReportService {
|
|||||||
List<CrmSalesReportVo.OrderDetail> orderDetails = baseMapper.selectOrderDetailList(bo);
|
List<CrmSalesReportVo.OrderDetail> orderDetails = baseMapper.selectOrderDetailList(bo);
|
||||||
if (StringUtils.isNotNull(orderDetails) && !orderDetails.isEmpty()) {
|
if (StringUtils.isNotNull(orderDetails) && !orderDetails.isEmpty()) {
|
||||||
// 提取所有订单ID
|
// 提取所有订单ID
|
||||||
List<String> orderIds = orderDetails.stream()
|
List<Long> orderIds = orderDetails.stream()
|
||||||
.map(CrmSalesReportVo.OrderDetail::getOrderId)
|
.map(CrmSalesReportVo.OrderDetail::getOrderId)
|
||||||
.filter(StringUtils::isNotNull)
|
.filter(StringUtils::isNotNull)
|
||||||
.distinct()
|
.distinct()
|
||||||
@@ -70,7 +70,7 @@ public class CrmSalesReportServiceImpl implements ICrmSalesReportService {
|
|||||||
List<CrmOrderItem> orderItems = crmOrderItemMapper.selectOrderItemsByOrderIds(orderIds);
|
List<CrmOrderItem> orderItems = crmOrderItemMapper.selectOrderItemsByOrderIds(orderIds);
|
||||||
|
|
||||||
// 将明细按订单ID分组
|
// 将明细按订单ID分组
|
||||||
Map<String, List<CrmOrderItem>> orderItemMap = orderItems.stream()
|
Map<Long, List<CrmOrderItem>> orderItemMap = orderItems.stream()
|
||||||
.collect(Collectors.groupingBy(CrmOrderItem::getOrderId));
|
.collect(Collectors.groupingBy(CrmOrderItem::getOrderId));
|
||||||
|
|
||||||
// 为每个订单设置对应的明细列表
|
// 为每个订单设置对应的明细列表
|
||||||
|
|||||||
@@ -964,12 +964,6 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
public List<WmsMaterialCoilVo> queryList(WmsMaterialCoilBo bo) {
|
public List<WmsMaterialCoilVo> queryList(WmsMaterialCoilBo bo) {
|
||||||
QueryWrapper<WmsMaterialCoil> lqw = buildQueryWrapperPlus(bo);
|
QueryWrapper<WmsMaterialCoil> lqw = buildQueryWrapperPlus(bo);
|
||||||
List<WmsMaterialCoilVo> list = baseMapper.selectVoListWithDynamicJoin(lqw);
|
List<WmsMaterialCoilVo> list = baseMapper.selectVoListWithDynamicJoin(lqw);
|
||||||
|
|
||||||
// 从联查结果中构建产品和原材料对象(避免单独查询)
|
|
||||||
for (WmsMaterialCoilVo vo : list) {
|
|
||||||
buildItemObjectFromJoin(vo);
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -989,13 +983,6 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
return one == null ? null : one.getQualityStatus();
|
return one == null ? null : one.getQualityStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 联查场景下数据已经是扁平字段,无需再构建 rawMaterial/product 嵌套对象。
|
|
||||||
*/
|
|
||||||
private void buildItemObjectFromJoin(WmsMaterialCoilVo vo) {
|
|
||||||
// no-op
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增钢卷物料表
|
* 新增钢卷物料表
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user