diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendShipmentRelController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendShipmentRelController.java index 2f3fc8e..f821292 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendShipmentRelController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendShipmentRelController.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.asinkj.amz.domain.bo.BatchRelDTO; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.asinkj.common.idempotent.annotation.RepeatSubmit; @@ -103,4 +104,13 @@ public class BizSendShipmentRelController extends BaseController { @PathVariable Long[] ids) { return toAjax(bizSendShipmentRelService.deleteWithValidByIds(List.of(ids), true)); } + + + + @PostMapping("/createBatchRelations") + public R createBatchRelations( + @RequestBody BatchRelDTO dto) { + bizSendShipmentRelService.batchCreateRelations(dto); + return R.ok(); + } } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrder.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrder.java index a61f697..8860872 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrder.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrder.java @@ -28,6 +28,7 @@ public class BizSendOrder extends TenantEntity { /** * 主键ID */ + @TableId private Long id; /** diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendShipmentRel.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendShipmentRel.java index 37e1852..c362f92 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendShipmentRel.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendShipmentRel.java @@ -14,9 +14,9 @@ import java.io.Serial; * @date 2025-06-20 */ @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) @TableName("biz_send_shipment_rel") -public class BizSendShipmentRel extends BaseEntity { +public class BizSendShipmentRel { @Serial private static final long serialVersionUID = 1L; diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderShipmentRelation.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderShipmentRelation.java new file mode 100644 index 0000000..31d17b0 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderShipmentRelation.java @@ -0,0 +1,13 @@ +package org.asinkj.amz.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OrderShipmentRelation { + private Long sendOrderId; // 发货单ID + private Long shipmentId; // 货运计划ID +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderWithShipment.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderWithShipment.java new file mode 100644 index 0000000..b149b61 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderWithShipment.java @@ -0,0 +1,9 @@ +package org.asinkj.amz.domain; + +import lombok.Data; + +@Data +public class OrderWithShipment { + private Long shipmentPlanId; + private BizSendOrder order; +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderWithShipmentGroup.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderWithShipmentGroup.java new file mode 100644 index 0000000..77b4e02 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/OrderWithShipmentGroup.java @@ -0,0 +1,11 @@ +package org.asinkj.amz.domain; + +import lombok.Data; + +import java.util.List; + +@Data +public class OrderWithShipmentGroup { + private Long shipmentPlanId; + private List orders; +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderVo.java index 5352f43..c733cbc 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderVo.java @@ -6,6 +6,7 @@ import org.asinkj.amz.domain.BizLogisticsOrder; import org.asinkj.amz.domain.BizSendOrder; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import org.asinkj.amz.domain.BizShipmentPlan; import org.asinkj.common.excel.annotation.ExcelDictFormat; import org.asinkj.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; @@ -13,6 +14,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.util.List; /** @@ -126,5 +128,6 @@ public class BizSendOrderVo implements Serializable { private BizLogisticsOrder bizLogisticsOrder; + private List bizShipmentPlans; } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipmentPlanVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipmentPlanVo.java index 00634a9..41f643a 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipmentPlanVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipmentPlanVo.java @@ -220,6 +220,7 @@ public class BizShipmentPlanVo implements Serializable { private Long sendOrderId; private BizSendOrder sendOrder; + private List sendOrders; private List itemVoList; diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendOrderMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendOrderMapper.java index 6114e14..09f4cf5 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendOrderMapper.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendOrderMapper.java @@ -1,9 +1,16 @@ package org.asinkj.amz.mapper; +import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Param; import org.asinkj.amz.domain.BizSendOrder; +import org.asinkj.amz.domain.OrderWithShipment; import org.asinkj.amz.domain.vo.BizSendOrderVo; import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.Collection; +import java.util.List; +import java.util.Map; + /** * 供应商创建的发货单Mapper接口 * @@ -11,5 +18,7 @@ import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; * @date 2025-05-14 */ public interface BizSendOrderMapper extends BaseMapperPlus { - + List selectOrdersWithShipmentIds( + @Param("shipmentIds") Collection shipmentIds + ); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendShipmentRelMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendShipmentRelMapper.java index 187e89d..92efb6b 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendShipmentRelMapper.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendShipmentRelMapper.java @@ -1,10 +1,13 @@ package org.asinkj.amz.mapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.asinkj.amz.domain.BizSendShipmentRel; import org.asinkj.amz.domain.vo.BizSendShipmentRelVo; import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.List; + /** * 发货单与货运计划多对多关联Mapper接口 * @@ -13,5 +16,21 @@ import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; */ @Mapper public interface BizSendShipmentRelMapper extends BaseMapperPlus { + /** + * 批量插入关联关系(避免重复) + * @param relations 关联关系列表 + * @return 成功插入的记录数 + */ + int batchInsertRelations(@Param("relations") List relations); + /** + * 批量删除关联关系(多对多组合) + * @param sendOrderIds 发货单ID列表 + * @param shipmentIds 货运计划ID列表 + * @return 成功删除的记录数 + */ + int batchDeleteRelations( + @Param("sendOrderIds") List sendOrderIds, + @Param("shipmentIds") List shipmentIds + ); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizShipmentPlanMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizShipmentPlanMapper.java index 05d3ce1..43a983c 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizShipmentPlanMapper.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizShipmentPlanMapper.java @@ -4,11 +4,13 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.asinkj.amz.domain.BizShipmentPlan; import org.asinkj.amz.domain.BizShipmentPlanFileData; +import org.asinkj.amz.domain.OrderShipmentRelation; import org.asinkj.amz.domain.vo.BizShipmentPlanVo; import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; import java.util.Collection; import java.util.List; +import java.util.Set; /** * 货件计划Mapper接口 @@ -22,4 +24,9 @@ public interface BizShipmentPlanMapper extends BaseMapperPlus selectExistingShipmentIds(@Param("batchIds") Collection batchIds); void updateByFbaShipmentId(List bizShipmentPlanFileDataList); + + + List findOrderShipmentRelations(@Param("sendOrderIds") Collection sendOrderIds); + + List findByIds(@Param("ids") Collection ids); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendShipmentRelService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendShipmentRelService.java index aeb5088..bebabcf 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendShipmentRelService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendShipmentRelService.java @@ -1,10 +1,12 @@ package org.asinkj.amz.service; import org.asinkj.amz.domain.BizSendShipmentRel; +import org.asinkj.amz.domain.bo.BatchRelDTO; import org.asinkj.amz.domain.vo.BizSendShipmentRelVo; import org.asinkj.amz.domain.bo.BizSendShipmentRelBo; import org.asinkj.common.mybatis.core.page.TableDataInfo; import org.asinkj.common.mybatis.core.page.PageQuery; +import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; @@ -66,4 +68,7 @@ public interface IBizSendShipmentRelService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + @Transactional + void batchCreateRelations(BatchRelDTO dto); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizShipmentPlanService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizShipmentPlanService.java index 9a81067..ed46e15 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizShipmentPlanService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizShipmentPlanService.java @@ -12,6 +12,7 @@ import org.asinkj.common.mybatis.core.page.PageQuery; import java.io.InputStream; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 货件计划Service接口 @@ -38,6 +39,8 @@ public interface IBizShipmentPlanService { */ TableDataInfo queryPageList(BizShipmentPlanBo bo, PageQuery pageQuery); +// Map> getShipmentsByOrderIds(Collection sendOrderIds); + /** * 查询符合条件的货件计划列表 * diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderServiceImpl.java index c2f5dc9..62a3042 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderServiceImpl.java @@ -2,6 +2,7 @@ package org.asinkj.amz.service.impl; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.dubbo.config.annotation.DubboReference; import org.asinkj.amz.domain.*; @@ -9,6 +10,8 @@ import org.asinkj.amz.domain.bo.SysAmazonStoreBo; import org.asinkj.amz.domain.vo.SysAmazonStoreVo; import org.asinkj.amz.mapper.BizLogisticsOrderDetailMapper; import org.asinkj.amz.mapper.BizLogisticsOrderMapper; +import org.asinkj.amz.mapper.BizShipmentPlanMapper; +import org.asinkj.amz.service.IBizShipmentPlanService; import org.asinkj.amz.service.ISysAmazonStoreService; import org.asinkj.common.core.utils.MapstructUtils; import org.asinkj.common.core.utils.StringUtils; @@ -21,6 +24,7 @@ import lombok.RequiredArgsConstructor; import org.asinkj.common.satoken.utils.LoginHelper; import org.asinkj.system.api.RemoteUserService; import org.asinkj.system.api.domain.vo.RemoteUserVo; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.asinkj.amz.domain.bo.BizSendOrderBo; import org.asinkj.amz.domain.vo.BizSendOrderVo; @@ -28,10 +32,7 @@ import org.asinkj.amz.mapper.BizSendOrderMapper; import org.asinkj.amz.service.IBizSendOrderService; import javax.annotation.Resource; -import java.util.List; -import java.util.Map; -import java.util.Collection; -import java.util.Set; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -60,6 +61,10 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { @Resource private BizLogisticsOrderDetailMapper bizLogisticsOrderDetailMapper; + + @Resource + private BizShipmentPlanMapper bizShipmentPlanMapper; + /** * 查询供应商创建的发货单 * @@ -84,6 +89,8 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); List records = result.getRecords(); Set shipmentIds = records.stream().map(BizSendOrderVo::getShipmentId).collect(Collectors.toSet()); + Set ids = records.stream().map(BizSendOrderVo::getId).collect(Collectors.toSet()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(CollectionUtil.isNotEmpty(shipmentIds), BizLogisticsOrder::getFbaShipmentId, shipmentIds); List bizLogisticsOrders = bizLogisticsOrderMapper.selectList(lambdaQueryWrapper); @@ -100,6 +107,7 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { Map logisticsOrderMap = bizLogisticsOrders.stream().collect(Collectors.toMap(BizLogisticsOrder::getFbaShipmentId, Function.identity())); + Map> shipmentsByOrderIdsMap = getShipmentsByOrderIds(ids); List logicIds = records.stream().map(BizSendOrderVo::getLogisticsProviderId).distinct().toList(); Map remoteUserVoMap = remoteUserService.selectListByIds(logicIds).stream().collect(Collectors.toMap(RemoteUserVo::getUserId, Function.identity())); for (BizSendOrderVo record : records) { @@ -111,10 +119,43 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { if (bizLogisticsOrder != null) { record.setBizLogisticsOrder(bizLogisticsOrder); } + + List bizShipmentPlans = shipmentsByOrderIdsMap.get(record.getId()); + record.setBizShipmentPlans(bizShipmentPlans); } return TableDataInfo.build(result); } + + public Map> getShipmentsByOrderIds(Collection sendOrderIds) { + if (CollectionUtil.isEmpty(sendOrderIds)) { + return Collections.emptyMap(); + } + + List relations = bizShipmentPlanMapper.findOrderShipmentRelations(sendOrderIds); + + if (relations.isEmpty()) { + return Collections.emptyMap(); + } + + Set shipmentIds = relations.stream() + .map(OrderShipmentRelation::getShipmentId) + .collect(Collectors.toSet()); + + List shipments = bizShipmentPlanMapper.findByIds(shipmentIds); + Map shipmentMap = shipments.stream() + .collect(Collectors.toMap(BizShipmentPlan::getId, Function.identity())); + + return relations.stream() + .filter(relation -> shipmentMap.containsKey(relation.getShipmentId())) + .collect(Collectors.groupingBy( + OrderShipmentRelation::getSendOrderId, + Collectors.mapping( + relation -> shipmentMap.get(relation.getShipmentId()), + Collectors.toList()) + )); + } + /** * 查询符合条件的供应商创建的发货单列表 * @@ -140,7 +181,7 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { lqw.eq(StringUtils.isNotBlank(bo.getBoxDimensions()), BizSendOrder::getBoxDimensions, bo.getBoxDimensions()); lqw.eq(bo.getWeightPerBox() != null, BizSendOrder::getWeightPerBox, bo.getWeightPerBox()); lqw.like(StringUtils.isNotBlank(bo.getRealStoreName()), BizSendOrder::getRealStoreName, bo.getRealStoreName()); - lqw.eq(StringUtils.isNotBlank(bo.getSendStatus()), BizSendOrder::getSendStatus, bo.getSendStatus()); + lqw.in(StringUtils.isNotBlank(bo.getSendStatus()), BizSendOrder::getSendStatus, StrUtil.split(bo.getSendStatus(), ",")); if (StpUtil.hasRole("yunying")) { SysAmazonStoreBo sysAmazonStoreBo = new SysAmazonStoreBo(); sysAmazonStoreBo.setUserId(LoginHelper.getUserId()); diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendShipmentRelServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendShipmentRelServiceImpl.java index ee48394..491f170 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendShipmentRelServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendShipmentRelServiceImpl.java @@ -3,7 +3,6 @@ package org.asinkj.amz.service.impl; import lombok.extern.slf4j.Slf4j; import org.asinkj.amz.domain.bo.BatchRelDTO; import org.asinkj.common.core.utils.MapstructUtils; -import org.asinkj.common.core.utils.StringUtils; import org.asinkj.common.mybatis.core.page.TableDataInfo; import org.asinkj.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -16,6 +15,7 @@ import org.asinkj.amz.domain.vo.BizSendShipmentRelVo; import org.asinkj.amz.domain.BizSendShipmentRel; import org.asinkj.amz.mapper.BizSendShipmentRelMapper; import org.asinkj.amz.service.IBizSendShipmentRelService; +import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -173,4 +173,25 @@ public class BizSendShipmentRelServiceImpl implements IBizSendShipmentRelService return existingKeys; } + + + @Transactional + @Override + public void batchCreateRelations(BatchRelDTO dto) { + // 1. 参数校验 + validateInput(dto); + + // 2. 构建笛卡尔积关系列表(根据数据量选择策略) + List relations = buildCartesianRelations(dto); + + // 3. 批量插入 + if (!relations.isEmpty()) { + int inserted = baseMapper.batchInsertRelations(relations); + log.info("成功创建 {} 条发货单-货运计划关联关系", inserted); + } + } + + private void validateInput(BatchRelDTO dto) { + // todo + } } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipmentPlanServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipmentPlanServiceImpl.java index 102760e..fad68e6 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipmentPlanServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipmentPlanServiceImpl.java @@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.asinkj.common.satoken.utils.LoginHelper; import org.asinkj.resource.api.RemoteMessageService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.asinkj.amz.domain.bo.BizShipmentPlanBo; import org.springframework.transaction.annotation.Transactional; @@ -59,9 +60,12 @@ public class BizShipmentPlanServiceImpl implements IBizShipmentPlanService { @Resource private SysAmazonStoreMapper sysAmazonStoreMapper; - @Resource + @Autowired private IBizSendOrderService iSendOrderService; + @Resource + private BizSendOrderMapper bizSendOrderMapper; + @Resource private BizShipmentTrackingMapper bizShipmentTrackingMapper; @@ -110,16 +114,19 @@ public class BizShipmentPlanServiceImpl implements IBizShipmentPlanService { Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - Set senOrderIds = result.getRecords().stream().map(BizShipmentPlanVo::getSendOrderId).collect(Collectors.toSet()); - Map sendOrderMap = new HashMap<>(); - if (CollectionUtil.isNotEmpty(senOrderIds)) { - sendOrderMap = iSendOrderService.queryBySidList(senOrderIds).stream().collect(Collectors.toMap(BizSendOrder::getId, Function.identity())); - } +// Set senOrderIds = result.getRecords().stream().map(BizShipmentPlanVo::getSendOrderId).collect(Collectors.toSet()); +// Map sendOrderMap = new HashMap<>(); +// if (CollectionUtil.isNotEmpty(senOrderIds)) { +// sendOrderMap = iSendOrderService.queryBySidList(senOrderIds).stream().collect(Collectors.toMap(BizSendOrder::getId, Function.identity())); +// } Set shipmentIds = result.getRecords().stream().map(BizShipmentPlanVo::getShipmentId).collect(Collectors.toSet()); + Set ids = result.getRecords().stream().map(BizShipmentPlanVo::getId).collect(Collectors.toSet()); + Map> resultOrderMap = getOrdersGroupedByShipmentId(ids); + Set sids = result.getRecords().stream().map(BizShipmentPlanVo::getSid).collect(Collectors.toSet()); Map storeNameMap = new HashMap<>(); if (CollectionUtil.isNotEmpty(sids)) { @@ -143,11 +150,12 @@ public class BizShipmentPlanServiceImpl implements IBizShipmentPlanService { for (BizShipmentPlanVo bizShipmentPlanVo : result.getRecords()) { - BizSendOrder bizSendOrder = sendOrderMap.get(bizShipmentPlanVo.getSendOrderId()); - if (bizSendOrder != null) { - bizShipmentPlanVo.setSendOrder(sendOrderMap.get(bizShipmentPlanVo.getSendOrderId())); - } - +// BizSendOrder bizSendOrder = sendOrderMap.get(bizShipmentPlanVo.getSendOrderId()); +// if (bizSendOrder != null) { +// bizShipmentPlanVo.setSendOrder(sendOrderMap.get(bizShipmentPlanVo.getSendOrderId())); +// } + List bizSendOrders = resultOrderMap.get(bizShipmentPlanVo.getId()); + bizShipmentPlanVo.setSendOrders(bizSendOrders); Long count = collect.get(bizShipmentPlanVo.getShipmentId()); bizShipmentPlanVo.setBoxQuantity(count); bizShipmentPlanVo.setItemVoList(collect1.get(bizShipmentPlanVo.getShipmentId())); @@ -164,6 +172,29 @@ public class BizShipmentPlanServiceImpl implements IBizShipmentPlanService { return TableDataInfo.build(result); } + @Resource + private BizSendOrderMapper orderMapper; + + public Map> getOrdersGroupedByShipmentId(Collection shipmentIds) { + if (CollectionUtil.isEmpty(shipmentIds)) { + return Collections.emptyMap(); + } + + // 执行查询 + List relations = orderMapper.selectOrdersWithShipmentIds(shipmentIds); + + // 使用 Stream API 进行分组 + return relations.stream() + .collect(Collectors.groupingBy( + OrderWithShipment::getShipmentPlanId, + Collectors.mapping(OrderWithShipment::getOrder, Collectors.toList()) + )); + } + + + + + /** * 查询符合条件的货件计划列表 * diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendOrderMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendOrderMapper.xml index 69f108a..5caeb43 100644 --- a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendOrderMapper.xml +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendOrderMapper.xml @@ -4,4 +4,74 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendShipmentRelMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendShipmentRelMapper.xml index 8968292..4ab551a 100644 --- a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendShipmentRelMapper.xml +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendShipmentRelMapper.xml @@ -3,5 +3,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + INSERT INTO biz_send_shipment_rel (send_order_id, shipment_plan_id) + VALUES + + (#{rel.sendOrderId}, #{rel.shipmentPlanId}) + + ON CONFLICT (send_order_id, shipment_plan_id) DO NOTHING + + + DELETE FROM biz_send_shipment_rel + WHERE send_order_id IN + + #{id} + + AND shipment_plan_id IN + + #{id} + + diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizShipmentPlanMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizShipmentPlanMapper.xml index 001b2d4..6186e19 100644 --- a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizShipmentPlanMapper.xml +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizShipmentPlanMapper.xml @@ -33,4 +33,116 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +