diff --git a/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxOrderCheckInfo/BoxOrderCheckInfoService.java b/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxOrderCheckInfo/BoxOrderCheckInfoService.java index c113326a8f9f3b9a75ca5069a8a30be806e20e3c..f69fe3f428b62ae3e0afdf0970eddd614a36eeb9 100644 --- a/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxOrderCheckInfo/BoxOrderCheckInfoService.java +++ b/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxOrderCheckInfo/BoxOrderCheckInfoService.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.service.IService; import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO; +import cn.iocoder.yudao.module.order.dal.dataobject.order.OrderDO; import cn.iocoder.yudao.module.shipment.dal.dataobject.boxOrderCheckInfo.BoxOrderCheckInfoDO; import cn.iocoder.yudao.module.shipment.dto.OrderCheckInfoDto; import cn.iocoder.yudao.module.shipment.vo.box.BoxOrderSearchVO; @@ -83,4 +84,6 @@ public interface BoxOrderCheckInfoService extends IService<BoxOrderCheckInfoDO> void batchRemove(BoxOrderCheckInfoRemoveReqVO removeReqVO); void orderTally(Collection<Long> orderIdList, Long shipmentId); + + List<String> getOrderTagList(OrderDO orderDO) ; } diff --git a/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxOrderCheckInfo/BoxOrderCheckInfoServiceImpl.java b/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxOrderCheckInfo/BoxOrderCheckInfoServiceImpl.java index 8d9a5c5a0f6cccbc1171d9687db8162c9b411b33..25b0a3d1af3268fdd16aa7ebc3dcae130f6e052e 100644 --- a/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxOrderCheckInfo/BoxOrderCheckInfoServiceImpl.java +++ b/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxOrderCheckInfo/BoxOrderCheckInfoServiceImpl.java @@ -182,7 +182,7 @@ public class BoxOrderCheckInfoServiceImpl extends AbstractService<BoxOrderCheckI List<BoxPkgOrderDO> boxPkgOrderDOS = boxPkgOrderService.selectList(BoxPkgOrderDO::getPkgId, createReqVO.getPkgId()); orderIdList = boxPkgOrderDOS.stream().map(BoxPkgOrderDO::getOrderId).collect(Collectors.toSet()); if(orderIdList.isEmpty() || CollectionUtil.isEmpty(orderIdList)){ - throw exception(ErrorCodeConstants.ORDER_IS_NOT_PRE_INSTALLED); + throw exception(ORDER_CASE_NUM_NOT_EXIST); } orderDOList = orderQueryService.getOrderList(orderIdList); boolean isParentOrder = false; @@ -686,7 +686,7 @@ public class BoxOrderCheckInfoServiceImpl extends AbstractService<BoxOrderCheckI return orderList.get(0); } - private List<String> getOrderTagList(OrderDO orderDO) { + public List<String> getOrderTagList(OrderDO orderDO) { //从OrderLabel里é¢æŸ¥æ‰¾è®¢å•çš„ç®±å· Long orderId = orderDO.getOrderId(); OrderLabelQueryVO queryVO = new OrderLabelQueryVO(); diff --git a/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxPkgOrder/BoxPkgOrderServiceImpl.java b/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxPkgOrder/BoxPkgOrderServiceImpl.java index c117fcb9cac28c6f411de8ad71221804f19b9fc1..f373f4bed4727ba86962f739dae196372bc7d612 100644 --- a/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxPkgOrder/BoxPkgOrderServiceImpl.java +++ b/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/service/boxPkgOrder/BoxPkgOrderServiceImpl.java @@ -15,14 +15,19 @@ import cn.iocoder.yudao.module.shipment.convert.BoxPkgOrderConvert; import cn.iocoder.yudao.module.shipment.dal.dataobject.BoxDO; import cn.iocoder.yudao.module.shipment.dal.dataobject.BoxMergePkgDO; import cn.iocoder.yudao.module.shipment.dal.dataobject.BoxPkgOrderDO; +import cn.iocoder.yudao.module.shipment.dal.dataobject.BoxPreloadGoodsDO; import cn.iocoder.yudao.module.shipment.dal.dataobject.boxOrderCheckInfo.BoxOrderCheckInfoDO; import cn.iocoder.yudao.module.shipment.dal.mysql.BoxPkgOrderMapper; +import cn.iocoder.yudao.module.shipment.dal.mysql.BoxPreloadGoodsMapper; +import cn.iocoder.yudao.module.shipment.dal.mysql.boxOrderCheckInfo.BoxOrderCheckInfoMapper; import cn.iocoder.yudao.module.shipment.enums.AirShipmentStatusEnum; import cn.iocoder.yudao.module.shipment.enums.MergePkgStatusEnum; import cn.iocoder.yudao.module.shipment.enums.OrderShipmentLog; import cn.iocoder.yudao.module.shipment.service.box.BoxService; import cn.iocoder.yudao.module.shipment.service.boxMergePkg.BoxMergePkgService; import cn.iocoder.yudao.module.shipment.service.boxOrderCheckInfo.BoxOrderCheckInfoService; +import cn.iocoder.yudao.module.shipment.service.boxPreloadGoods.BoxPreloadGoodsService; +import cn.iocoder.yudao.module.shipment.vo.boxOrderCheckInfo.BoxOrderCheckInfoCreateReqVO; import cn.iocoder.yudao.module.shipment.vo.boxPkgOrder.BoxPkgOrderCreateReqVO; import cn.iocoder.yudao.module.shipment.vo.boxPkgOrder.BoxPkgOrderQueryVO; import cn.iocoder.yudao.module.shipment.vo.boxPkgOrder.BoxPkgOrderScanCodeVO; @@ -40,8 +45,7 @@ import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.order.enums.ErrorCodeConstants.ORDER_IS_PRE_INSTALLED; -import static cn.iocoder.yudao.module.shipment.enums.ErrorCodeConstants.BOX_PKG_ORDER_NOT_EXISTS; -import static cn.iocoder.yudao.module.shipment.enums.ErrorCodeConstants.MERGE_PKG_IS_FINISH; +import static cn.iocoder.yudao.module.shipment.enums.ErrorCodeConstants.*; /** * åˆåŒ…è®¢å• Service 实现类 @@ -73,6 +77,12 @@ public class BoxPkgOrderServiceImpl extends AbstractService<BoxPkgOrderMapper, B private OrderService orderService ; + @Resource + private BoxPreloadGoodsMapper boxPreloadGoodsMapper ; + + @Resource + private BoxOrderCheckInfoMapper boxOrderCheckInfoMapper; + @Override @Transactional(rollbackFor = Exception.class) public String createBoxPkgOrder(BoxPkgOrderCreateReqVO createReqVO) { @@ -88,35 +98,184 @@ public class BoxPkgOrderServiceImpl extends AbstractService<BoxPkgOrderMapper, B String orderNumCode = createReqVO.getOrderNo(); int position = orderNumCode.lastIndexOf("-"); + + if(position >= 0) { + String orderNumber = orderNumCode.substring(0, position); - Long orderId = orderService.getOrderIdByOrderNo(orderNumber); - vo.setOrderId(orderId); - BoxMergePkgDO boxMergePkgDO = boxMergePkgService.selectOne(new LambdaQueryWrapperX<BoxMergePkgDO>().eq(BoxMergePkgDO::getPkgNum,createReqVO.getPkgNum())); - vo.setPkgId(boxMergePkgDO.getId()) ; - BoxPkgOrderDO pkgOrderDO = boxPkgOrderMapper.selectOne(new LambdaQueryWrapperX<BoxPkgOrderDO>().eq(BoxPkgOrderDO::getOrderId,orderId).eq(BoxPkgOrderDO::getPkgId,boxMergePkgDO.getId())); - if(pkgOrderDO!=null){ - throw exception(ORDER_IS_PRE_INSTALLED); + + if(orderNumCode.contains("A") && orderNumCode.startsWith("A")){ + return this.scanCodeByOrderNo(orderNumCode,vo,createReqVO); } - if(vo.getOrderId()!=null && vo.getPkgId()!=null){//订å•å’ŒåŒ…裹id ä¸ä¸ºç©ºï¼Œè°ƒç”¨è£…箱方法 - this.create(vo); + + BoxMergePkgDO boxMergePkgDO = boxMergePkgService.selectOne(new LambdaQueryWrapper<BoxMergePkgDO>() + .eq(BoxMergePkgDO::getShipmentId, createReqVO.getShipmentId()) + .eq(BoxMergePkgDO::getPkgNum, orderNumber)); + if(boxMergePkgDO!=null){ + List<BoxPreloadGoodsDO> goodsDOS = boxPreloadGoodsMapper.selectList(new LambdaQueryWrapperX<BoxPreloadGoodsDO>().eq(BoxPreloadGoodsDO::getShipmentId,createReqVO.getShipmentId()).eq(BoxPreloadGoodsDO::getDeleted,0)); + if (CollectionUtil.isNotEmpty(goodsDOS)) { + List<Long> orderIds = goodsDOS.stream().map(BoxPreloadGoodsDO::getOrderId).collect(Collectors.toList()); + List<OrderDO> orderDOS = orderService.selectList(OrderDO::getOrderId, orderIds); + if(CollectionUtil.isNotEmpty(orderDOS)){ + orderDOS.forEach(order->{ + BoxPkgOrderCreateReqVO boxPkgOrderCreateReqVO = new BoxPkgOrderCreateReqVO(); + boxPkgOrderCreateReqVO.setOrderId(order.getOrderId()); + boxPkgOrderCreateReqVO.setPkgId(boxMergePkgDO.getId()); + this.create(boxPkgOrderCreateReqVO); + + Long orderId = order.getOrderId(); + //åˆ é™¤ä»¥è£…æŸœçš„ç¼–å· +// boxOrderCheckInfoMapper.delete(new LambdaQueryWrapper<BoxOrderCheckInfoDO>() +// .eq(BoxOrderCheckInfoDO::getOrderId, orderId) +// .eq(boxMergePkgDO.getId() != null && boxMergePkgDO.getId().longValue() > 0L,BoxOrderCheckInfoDO::getPkgId,boxMergePkgDO.getId()) +// .eq(BoxOrderCheckInfoDO::getShipmentId, createReqVO.getShipmentId()) +// .eq(BoxOrderCheckInfoDO::getType,1) +// ); + + //找到这个订å•æ‰€æœ‰éœ€è¦è£…æŸœçš„ç¼–å· + List<String> tagList = boxOrderCheckInfoService.getOrderTagList(order); + List<BoxOrderCheckInfoDO> boxOrderCheckInfoDOS = new ArrayList<>(); + for (int i = 0; i < tagList.size(); i++) { + String tag = tagList.get(i); + BoxOrderCheckInfoDO boxOrderCheckInfoDO = new BoxOrderCheckInfoDO(); + boxOrderCheckInfoDO.setOrderId(orderId); + boxOrderCheckInfoDO.setPkgId(boxMergePkgDO.getId()); + boxOrderCheckInfoDO.setOrderNumCode(tag); + boxOrderCheckInfoDO.setShipmentId(createReqVO.getShipmentId()); + boxOrderCheckInfoDO.setType(1); + boxOrderCheckInfoDO.setDeleted(false); + boxOrderCheckInfoDOS.add(boxOrderCheckInfoDO); + } + boxOrderCheckInfoService.saveBatch(boxOrderCheckInfoDOS); + + }); + + } + } + }else{ + throw exception(ORDER_CASE_NUM_NOT_EXIST); } + +// Long orderId = orderService.getOrderIdByOrderNo(orderNumber); +// vo.setOrderId(orderId); +// BoxMergePkgDO boxMergePkgDO = boxMergePkgService.selectOne(new LambdaQueryWrapperX<BoxMergePkgDO>().eq(BoxMergePkgDO::getPkgNum,createReqVO.getPkgNum())); +// vo.setPkgId(boxMergePkgDO.getId()) ; +// BoxPkgOrderDO pkgOrderDO = boxPkgOrderMapper.selectOne(new LambdaQueryWrapperX<BoxPkgOrderDO>().eq(BoxPkgOrderDO::getOrderId,orderId).eq(BoxPkgOrderDO::getPkgId,boxMergePkgDO.getId())); +// if(pkgOrderDO!=null){ +// throw exception(ORDER_IS_PRE_INSTALLED); +// } +// if(vo.getOrderId()!=null && vo.getPkgId()!=null){//订å•å’ŒåŒ…裹id ä¸ä¸ºç©ºï¼Œè°ƒç”¨è£…箱方法 +// this.create(vo); +// } }else if(!createReqVO.getOrderNo().contains("-")){ - Long orderId = orderService.getOrderIdByOrderNo(createReqVO.getOrderNo()); + BoxMergePkgDO boxMergePkgDO = boxMergePkgService.selectOne(new LambdaQueryWrapper<BoxMergePkgDO>() + .eq(BoxMergePkgDO::getShipmentId, createReqVO.getShipmentId()) + .eq(BoxMergePkgDO::getPkgNum, orderNumCode)); + if(boxMergePkgDO!=null){ + List<BoxPreloadGoodsDO> goodsDOS = boxPreloadGoodsMapper.selectList(new LambdaQueryWrapperX<BoxPreloadGoodsDO>().eq(BoxPreloadGoodsDO::getShipmentId,createReqVO.getShipmentId()).eq(BoxPreloadGoodsDO::getDeleted,0)); + if (CollectionUtil.isNotEmpty(goodsDOS)) { + List<Long> orderIds = goodsDOS.stream().map(BoxPreloadGoodsDO::getOrderId).collect(Collectors.toList()); + List<OrderDO> orderDOS = orderService.selectList(OrderDO::getOrderId, orderIds); + if(CollectionUtil.isNotEmpty(orderDOS)){ + orderDOS.forEach(order->{ + BoxPkgOrderCreateReqVO boxPkgOrderCreateReqVO = new BoxPkgOrderCreateReqVO(); + boxPkgOrderCreateReqVO.setOrderId(order.getOrderId()); + boxPkgOrderCreateReqVO.setPkgId(boxMergePkgDO.getId()); + this.create(boxPkgOrderCreateReqVO); + + Long orderId = order.getOrderId(); + //åˆ é™¤ä»¥è£…æŸœçš„ç¼–å· +// boxOrderCheckInfoMapper.delete(new LambdaQueryWrapper<BoxOrderCheckInfoDO>() +// .eq(BoxOrderCheckInfoDO::getOrderId, orderId) +// .eq(boxMergePkgDO.getId() != null && boxMergePkgDO.getId().longValue() > 0L,BoxOrderCheckInfoDO::getPkgId,boxMergePkgDO.getId()) +// .eq(BoxOrderCheckInfoDO::getShipmentId, createReqVO.getShipmentId()) +// .eq(BoxOrderCheckInfoDO::getType,1) +// ); + + //找到这个订å•æ‰€æœ‰éœ€è¦è£…æŸœçš„ç¼–å· + List<String> tagList = boxOrderCheckInfoService.getOrderTagList(order); + List<BoxOrderCheckInfoDO> boxOrderCheckInfoDOS = new ArrayList<>(); + for (int i = 0; i < tagList.size(); i++) { + String tag = tagList.get(i); + BoxOrderCheckInfoDO boxOrderCheckInfoDO = new BoxOrderCheckInfoDO(); + boxOrderCheckInfoDO.setOrderId(orderId); + boxOrderCheckInfoDO.setPkgId(boxMergePkgDO.getId()); + boxOrderCheckInfoDO.setOrderNumCode(tag); + boxOrderCheckInfoDO.setShipmentId(createReqVO.getShipmentId()); + boxOrderCheckInfoDO.setType(1); + boxOrderCheckInfoDO.setDeleted(false); + boxOrderCheckInfoDOS.add(boxOrderCheckInfoDO); + } + boxOrderCheckInfoService.saveBatch(boxOrderCheckInfoDOS); + }); + + } + } + }else { + throw exception(ORDER_CASE_NUM_NOT_EXIST); + } + + } + + // 返回 + return "success"; + } + + private String scanCodeByOrderNo(String orderNumCode ,BoxPkgOrderCreateReqVO vo, BoxPkgOrderScanCodeVO createReqVO){ + int position = orderNumCode.lastIndexOf("-"); + String orderNumber = orderNumCode.substring(0, position); + Long orderId = orderService.getOrderIdByOrderNo(orderNumber); + if(Objects.isNull(orderId)){ + throw exception(ORDER_NOT_IN_BOX); + } + OrderDO order = orderService.getById(orderId); vo.setOrderId(orderId); BoxMergePkgDO boxMergePkgDO = boxMergePkgService.selectOne(new LambdaQueryWrapperX<BoxMergePkgDO>().eq(BoxMergePkgDO::getPkgNum,createReqVO.getPkgNum())); vo.setPkgId(boxMergePkgDO.getId()) ; - BoxPkgOrderDO pkgOrderDO = boxPkgOrderMapper.selectOne(new LambdaQueryWrapperX<BoxPkgOrderDO>().eq(BoxPkgOrderDO::getOrderId,orderId).eq(BoxPkgOrderDO::getPkgId,boxMergePkgDO.getId())); - if(pkgOrderDO!=null){ + List<BoxPkgOrderDO> pkgOrderDO = boxPkgOrderMapper.selectList(new LambdaQueryWrapperX<BoxPkgOrderDO>().eq(BoxPkgOrderDO::getOrderId,orderId).eq(BoxPkgOrderDO::getPkgId,boxMergePkgDO.getId())); + if(CollectionUtil.isNotEmpty(pkgOrderDO)){ throw exception(ORDER_IS_PRE_INSTALLED); } if(vo.getOrderId()!=null && vo.getPkgId()!=null){//订å•å’ŒåŒ…裹id ä¸ä¸ºç©ºï¼Œè°ƒç”¨è£…箱方法 this.create(vo); - } - } - // 返回 - return "success"; + //åˆ é™¤ä»¥è£…æŸœçš„ç¼–å· +// boxOrderCheckInfoMapper.delete(new LambdaQueryWrapper<BoxOrderCheckInfoDO>() +// .eq(BoxOrderCheckInfoDO::getOrderId, orderId) +// .eq(boxMergePkgDO.getId() != null && boxMergePkgDO.getId().longValue() > 0L,BoxOrderCheckInfoDO::getPkgId,boxMergePkgDO.getId()) +// .eq(BoxOrderCheckInfoDO::getShipmentId, createReqVO.getShipmentId()) +// .eq(BoxOrderCheckInfoDO::getType,1) +// ); + + //找到这个订å•æ‰€æœ‰éœ€è¦è£…æŸœçš„ç¼–å· + List<String> tagList = boxOrderCheckInfoService.getOrderTagList(order); + List<BoxOrderCheckInfoDO> boxOrderCheckInfoDOS = new ArrayList<>(); + if(tagList.contains(orderNumCode) ){ + String tag = orderNumCode ; + BoxOrderCheckInfoDO boxOrderCheckInfoDO = new BoxOrderCheckInfoDO(); + boxOrderCheckInfoDO.setOrderId(orderId); + boxOrderCheckInfoDO.setPkgId(boxMergePkgDO.getId()); + boxOrderCheckInfoDO.setOrderNumCode(tag); + boxOrderCheckInfoDO.setShipmentId(createReqVO.getShipmentId()); + boxOrderCheckInfoDO.setType(1); + boxOrderCheckInfoDO.setDeleted(false); + boxOrderCheckInfoDOS.add(boxOrderCheckInfoDO); + } + +// for (int i = 0; i < tagList.size(); i++) { +// String tag = tagList.get(i); +// BoxOrderCheckInfoDO boxOrderCheckInfoDO = new BoxOrderCheckInfoDO(); +// boxOrderCheckInfoDO.setOrderId(orderId); +// boxOrderCheckInfoDO.setPkgId(boxMergePkgDO.getId()); +// boxOrderCheckInfoDO.setOrderNumCode(tag); +// boxOrderCheckInfoDO.setShipmentId(createReqVO.getShipmentId()); +// boxOrderCheckInfoDO.setType(1); +// boxOrderCheckInfoDO.setDeleted(false); +// boxOrderCheckInfoDOS.add(boxOrderCheckInfoDO); +// } + boxOrderCheckInfoService.saveBatch(boxOrderCheckInfoDOS); + } + return "success" ; } diff --git a/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/vo/boxPkgOrder/BoxPkgOrderScanCodeVO.java b/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/vo/boxPkgOrder/BoxPkgOrderScanCodeVO.java index 920db800501a92d69373ef4b0d559153ef3783f8..47507147ab7af649432242ebbe84ea7da8ad7871 100644 --- a/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/vo/boxPkgOrder/BoxPkgOrderScanCodeVO.java +++ b/yudao-module-shipment/yudao-module-shipment-core/src/main/java/cn/iocoder/yudao/module/shipment/vo/boxPkgOrder/BoxPkgOrderScanCodeVO.java @@ -19,4 +19,10 @@ public class BoxPkgOrderScanCodeVO { @ApiModelProperty("åˆå®ç®±ç¼–å·") private String pkgNum ; + + /** + * 出货id + */ + @ApiModelProperty("出货id") + private Long shipmentId; }