查询标签数据源接口-包裹数据格式修改

This commit is contained in:
liuzhaotian
2025-04-11 15:52:20 +08:00
parent b4a6826574
commit ca0a5f9b40
4 changed files with 132 additions and 35 deletions
@@ -1,13 +1,19 @@
package com.cf.imes.module.executor.controller.admin.order.vo.order;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Schema(description = "标签对应的订单包裹数据源信息")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LabelOrderPackData {
@@ -15,16 +21,30 @@ public class LabelOrderPackData {
private Long orderNo;
@Schema(description = "包裹号-包裹编号")
private List<String> packageNo;
// @Schema(description = "包裹号-包裹编号")
// private List<String> packageNo;
//
//
// @Schema(description = "包裹ID")
// private List<Long> packageId;
@Schema(description = "包裹ID")
private List<Long> packageId;
@Schema(description = "包裹列表")
private List<PackageInfo> packageInfos;
@Schema(description = "包裹数量")
private Integer packNum;
@Data
public static class PackageInfo {
@Schema(description = "包裹号")
private String packageNo;
@Schema(description = "包裹ID")
private Long packageId;
}
}
@@ -99,14 +99,18 @@ public interface OrderPackageMapper extends BaseMapperX<OrderPackageDO> {
default List<OrderPackageDO> selectPartPack(List<Long> orderIds, Long organId) {
List<LabelOrderPackData> selectPartPack(@Param("orderIds") List<Long> orderIds,@Param("organId") Long organId,@Param("type") Integer type ,@Param("status") Integer status);
default List<OrderPackageDO> selectPackListByIds(List<Long> packIds, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderPackageDO>()
.eq(OrderPackageDO::getOrganId,organId)
.eq(OrderPackageDO::getDeleted,false)
.inIfPresent(OrderPackageDO::getOrderId, orderIds)
.eqIfPresent(OrderPackageDO::getType, OrderPackageTypeEnum.PARTS.getType())
.select(OrderPackageDO::getId,OrderPackageDO::getOrderId));
.inIfPresent(OrderPackageDO::getId, packIds)
.eqIfPresent(OrderPackageDO::getStatus,OrderPackageStatusEnum.PACKAGED.getStatus())
.select(OrderPackageDO::getId,OrderPackageDO::getOrderId,OrderPackageDO::getPackageNo));
}
}
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.enums.DeletedCodeEnum;
import com.cf.imes.framework.common.enums.OrderPackageStatusEnum;
import com.cf.imes.framework.common.enums.OrderPackageTypeEnum;
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
@@ -1522,32 +1523,15 @@ public class OrderServiceImpl implements OrderService {
});
if(CollUtil.isNotEmpty(packIds)) {
// 包裹信息
List<LabelOrderPackData> labelOrderPackData = orderPackageMapper.selectLabelOrderPackData(packIds, organId);
if(CollUtil.isNotEmpty(packIds)) {
labelOrderPackData.forEach(f -> f.setPackNum(f.getPackageId().size()));
// 查询是否有 配件 类型包裹
List<OrderPackageDO> partPackList = orderPackageMapper.selectPartPack(orderIds, getUserOrganId());
if(CollUtil.isNotEmpty(partPackList)){
labelOrderPackData.forEach(f->{
f.setPackNum( f.getPackNum() + partPackList.stream().filter(p->p.getOrderId().equals(f.getOrderNo())).toList().size());
});
getLabelOrderPackData(packIds,organId,orderIds,labelOrderPlateData,orderAllData);
}
List<OrderPackageDO> packageDOS = orderPackageMapper.selectBatchIds(packIds);
labelOrderPlateData.forEach(f->f.setPackageSerialNo(packageDOS.stream().filter(o->o.getId().equals(f.getPackageNo())).findFirst().orElse(new OrderPackageDO()).getPackageNo()));
orderAllData.setPackDataList(labelOrderPackData);
}
// 补充缺少的小板信息
labelOrderPlateData.forEach(f->{
f.setOrderDate(labelOrderData.stream().filter(o->o.getOrderNo().equals(f.getOrderId())).findFirst().orElse(new LabelOrderData()).getOrderDate());
@@ -1566,4 +1550,60 @@ public class OrderServiceImpl implements OrderService {
}
// 获取包裹信息
private void getLabelOrderPackData(List<Long> packIds,
Long organId,
List<Long> orderIds,
List<LabelOrderPlateData> labelOrderPlateData,
OrderAllData orderAllData){
// 板材包裹信息
List<LabelOrderPackData> labelOrderPackData = orderPackageMapper.selectLabelOrderPackData(packIds, organId);
labelOrderPackData.forEach(f -> f.setPackNum(f.getPackageInfos().size()));
// 查询是否有 配件 类型包裹
List<LabelOrderPackData> partPackList = orderPackageMapper.selectPartPack(orderIds, getUserOrganId(), OrderPackageTypeEnum.PARTS.getType(),OrderPackageStatusEnum.PACKAGED.getStatus());
if(CollUtil.isNotEmpty(partPackList)){
partPackList.forEach(f->f.setPackNum(f.getPackageInfos().size()));
// 板材包裹为空时,且配件包裹不为空,需要加入配件包裹的信息
if(CollUtil.isEmpty(labelOrderPackData)){
partPackList.forEach(f->labelOrderPackData.add(LabelOrderPackData.builder().orderNo(f.getOrderNo()).build()));
}
// 添加缺少的配件包裹信息
labelOrderPackData.forEach(f-> {
Integer packNum = partPackList.stream()
.filter(p -> f.getOrderNo().equals(p.getOrderNo()))
.mapToInt(p -> p.getPackNum() != null ? p.getPackNum() : 0)
.sum();
f.setPackNum( Optional.ofNullable(f.getPackNum()).orElse(0) + packNum);
f.setPackageInfos(Optional.ofNullable(f.getPackageInfos()).orElse(new ArrayList<>()));
f.getPackageInfos().addAll(partPackList.stream()
.filter(p->p.getOrderNo().equals(f.getOrderNo()))
.map(LabelOrderPackData::getPackageInfos)
.findAny().orElse(new ArrayList<>()));
});
}
List<OrderPackageDO> packageDOS = orderPackageMapper.selectPackListByIds(packIds,getUserOrganId());
labelOrderPlateData.forEach(f->f.setPackageSerialNo(packageDOS.stream().filter(o->o.getId().equals(f.getPackageNo())).findFirst().orElse(new OrderPackageDO()).getPackageNo()));
orderAllData.setPackDataList(labelOrderPackData);
}
}
@@ -158,8 +158,13 @@
<result property="orderNo" column="orderNo"/>
<collection property="packageNo" ofType="java.lang.String" column="packageNo"/>
<collection property="packageId" ofType="java.lang.Long" column="packageId"/>
<collection
property="packageInfos"
ofType="com.cf.imes.module.executor.controller.admin.order.vo.order.LabelOrderPackData$PackageInfo">
<result property="packageNo" column="packageNo"/>
<result property="packageId" column="packageId"/>
</collection>
</resultMap>
@@ -171,9 +176,9 @@
select distinct
order_id as orderNo,
package_no as packageNo,
id as packageId,
package_no as packageNo
order_id as orderNo
from order_package
@@ -183,6 +188,34 @@
<foreach item="packIds" collection="packIds" open="(" separator="," close=")">
#{packIds}
</foreach>
and status = 1
</select>
<select id="selectPartPack"
parameterType="java.lang.Long"
resultMap="OrderPackDataMap">
select distinct
package_no as packageNo,
id as packageId,
order_id as orderNo
from order_package
where organ_id = #{organId}
and deleted = false
and order_id in
<foreach item="orderIds" collection="orderIds" open="(" separator="," close=")">
#{orderIds}
</foreach>
and type = #{type}
and status = #{status}
</select>