|
|
@@ -184,8 +184,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
});
|
|
|
shipItemsService.saveOrUpdateBatch(shipItemsList);
|
|
|
ship.setNumberRows(shipVO.getShipItemsList().size());
|
|
|
-
|
|
|
- ship.setGoodsTotalNum(shipVO.getShipItemsList().stream().map(PjShipItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
ship.setSendTotalNum(shipVO.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
}
|
|
|
baseMapper.updateById(ship);
|
|
|
@@ -225,7 +223,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
if (ObjectUtils.isNull(ship.getStorageId())) {
|
|
|
throw new RuntimeException("请先选择仓库");
|
|
|
}
|
|
|
- ship.setGoodsTotalNum(shipVO.getShipItemsList().stream().map(PjShipItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
ship.setSendTotalNum(shipVO.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
ship.setStatusName(OrderTypeEnum.OURTBOUND.getType());
|
|
|
if (ship.getId() == null) {
|
|
|
@@ -252,6 +249,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
List<TireStockDesc> pjStockDescArrayList = new ArrayList<>();
|
|
|
if (CollectionUtils.isNotEmpty(shipVO.getShipItemsList())) {
|
|
|
if ("内部销售".equals(ship.getBsType())) {
|
|
|
+ // 保存订单明细
|
|
|
+ List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
|
|
|
+ List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
+ .eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjOrderItems::getIsDeleted, 0)
|
|
|
+ .eq(PjOrderItems::getPid, ship.getOrdId()));
|
|
|
List<Long> goodIds = shipVO.getShipItemsList().stream().map(PjShipItems::getGoodsId).distinct().collect(Collectors.toList());
|
|
|
LambdaQueryWrapper<PjGoodsDesc> lambdaQueryWrapperGoods = new LambdaQueryWrapper<PjGoodsDesc>()
|
|
|
.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -304,6 +307,35 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(inventoryAmount));
|
|
|
stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(rebateInventoryAmount));
|
|
|
stockOne.setVersion(stockOne.getVersion());
|
|
|
+ PjOrderItems orderItems = orderItemsList.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
|
|
|
+ if (orderItems != null) {
|
|
|
+ if (orderItems.getGoodsNum().compareTo(orderItems.getSendNum().add(item.getSendNum())) < 0) {
|
|
|
+ throw new RuntimeException(orderItems.getGoodsName() + "剩余应发货数量" + orderItems.getGoodsNum().subtract(orderItems.getSendNum()));
|
|
|
+ } else {
|
|
|
+ orderItems.setSendNum(orderItems.getSendNum().add(item.getSendNum()));
|
|
|
+ }
|
|
|
+ orderItems.setGoodsTotalShipAmount(orderItems.getSendNum().multiply(orderItems.getPrice()));
|
|
|
+ if (ObjectUtils.isNull(orderItems.getCostprie()) || new BigDecimal("0.00").compareTo(orderItems.getCostprie()) == 0) {
|
|
|
+ orderItems.setCostpriePrice(stockOne.getInventoryCostPrice());
|
|
|
+ orderItems.setCostprie(stockOne.getInventoryCostPrice().multiply(orderItems.getGoodsNum()));
|
|
|
+ orderItems.setGrossProfit(orderItems.getSubTotalMoney().subtract(orderItems.getCostprie()));
|
|
|
+ orderItems.setProfit(orderItems.getSubTotalMoney().subtract(orderItems.getCostprie()));
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNull(orderItems.getRebateCostprie()) || new BigDecimal("0.00").compareTo(orderItems.getRebateCostprie()) == 0) {
|
|
|
+ orderItems.setRebatePrice(stockOne.getRebatePrice());
|
|
|
+ orderItems.setRebateCostprie(stockOne.getRebatePrice().multiply(orderItems.getGoodsNum()));
|
|
|
+ orderItems.setRebateProfit(orderItems.getSubTotalMoney().subtract(orderItems.getRebateCostprie()));
|
|
|
+ }
|
|
|
+ pjOrderItemsList.add(orderItems);
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("数据异常请联系管理员");
|
|
|
+ }
|
|
|
+ item.setCostprie(item.getSendNum().multiply(stockOne.getInventoryCostPrice()));
|
|
|
+ item.setCostpriePrice(stockOne.getInventoryCostPrice());
|
|
|
+ item.setProfit(item.getSubTotalMoney().subtract(orderItems.getCostprie()));
|
|
|
+ item.setRebateCostprie(item.getSendNum().multiply(stockOne.getRebatePrice()));
|
|
|
+ item.setRebatePrice(stockOne.getRebatePrice());
|
|
|
+ item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
|
|
|
} else {
|
|
|
msg.append(goodsDesc.getCname()).append(",");
|
|
|
}
|
|
|
@@ -316,6 +348,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
if (!res.isSuccess()) {
|
|
|
throw new RuntimeException(res.getMsg());
|
|
|
}
|
|
|
+ orderItemsService.updateBatchById(pjOrderItemsList);
|
|
|
+ shipItemsService.updateBatchById(shipVO.getShipItemsList());
|
|
|
ship.setNumberRows(shipVO.getShipItemsList().size());
|
|
|
PjOrder order = orderMapper.selectById(ship.getOrdId());
|
|
|
if (ObjectUtil.isNotEmpty(order)) {
|
|
|
@@ -323,13 +357,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
throw new RuntimeException("单据已收货或申请售后中,操作失败");
|
|
|
}
|
|
|
//数量和
|
|
|
- BigDecimal goodsNum = shipVO.getShipItemsList().stream().map(PjShipItems::getGoodsNum).filter(Objects::nonNull)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal goodsNum = order.getGoodsTotalNum();
|
|
|
//发货数量和
|
|
|
- BigDecimal sendNum = shipVO.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull)
|
|
|
+ BigDecimal sendNum = pjOrderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
order.setVersion(order.getVersion() + 1);
|
|
|
- if (goodsNum.compareTo(sendNum) == 0) {//数量等于发货数量修改销售订单状态
|
|
|
+ order.setOutGoodsTotalShipNum(order.getOutGoodsTotalShipNum().add(sendNum));
|
|
|
+ if (goodsNum.compareTo(order.getOutGoodsTotalShipNum()) == 0) {//数量等于发货数量修改销售订单状态
|
|
|
order.setDeliveryBusinesDate(new Date());
|
|
|
order.setStatus(OrderTypeEnum.SHIPED.getType());
|
|
|
orderMapper.updateById(order);
|
|
|
@@ -381,6 +415,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
stockLambdaQueryWrapperTireStock.eq(TireStockDesc::getCreateDept, AuthUtil.getDeptId());
|
|
|
}
|
|
|
List<TireStockDesc> pjStockDescList = iStockDescService.list(stockLambdaQueryWrapperTireStock);
|
|
|
+ // 保存订单明细
|
|
|
+ List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
|
|
|
+ List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
+ .eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjOrderItems::getIsDeleted, 0)
|
|
|
+ .eq(PjOrderItems::getPid, ship.getOrdId()));
|
|
|
for (PjShipItems item : shipVO.getShipItemsList()) {
|
|
|
//获得商品
|
|
|
PjGoodsDesc goodsDesc = pjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
|
|
|
@@ -410,11 +450,20 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
} else {
|
|
|
throw new RuntimeException("未查到库存账");
|
|
|
}
|
|
|
+ PjOrderItems orderItems = orderItemsList.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
|
|
|
+ if (orderItems != null) {
|
|
|
+ orderItems.setSendNum(orderItems.getSendNum().subtract(item.getSendNum()));
|
|
|
+ orderItems.setGoodsTotalShipAmount(orderItems.getSendNum().multiply(orderItems.getPrice()));
|
|
|
+ pjOrderItemsList.add(orderItems);
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("数据异常请联系管理员");
|
|
|
+ }
|
|
|
}
|
|
|
R res = iStockDescService.updateBatchByIdNew(pjStockDescArrayList);
|
|
|
if (!res.isSuccess()) {
|
|
|
throw new RuntimeException(res.getMsg());
|
|
|
}
|
|
|
+ orderItemsService.updateBatchById(pjOrderItemsList);
|
|
|
ship.setNumberRows(shipVO.getShipItemsList().size());
|
|
|
PjOrder order = orderMapper.selectById(ship.getOrdId());
|
|
|
if (ObjectUtil.isNotEmpty(order)) {
|
|
|
@@ -431,6 +480,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
order.setDeliveryBusinesDate(null);
|
|
|
order.setStatus(OrderTypeEnum.GENERATED.getType());
|
|
|
order.setVersion(order.getVersion() + 1);
|
|
|
+ order.setOutGoodsTotalShipNum(order.getOutGoodsTotalShipNum().subtract(pjOrderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add)));
|
|
|
orderMapper.updateById(order);
|
|
|
} else {
|
|
|
throw new RuntimeException("数据异常请联系管理员");
|
|
|
@@ -2750,46 +2801,16 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
ship.setNumberRows(shipDTO.getShipItemsList().size());
|
|
|
ship.setGoodsTotalNum(shipDTO.getShipItemsList().get(0).getGoodsNum());
|
|
|
ship.setSendTotalNum(shipDTO.getShipItemsList().stream().map(PjShipItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
- // 保存订单明细
|
|
|
- List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
|
|
|
- List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
- .eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(PjOrderItems::getIsDeleted, 0)
|
|
|
- .eq(PjOrderItems::getPid, shipDTO.getOrdId()));
|
|
|
- for (PjShipItems item : shipDTO.getShipItemsList()) {
|
|
|
- PjOrderItems orderItems = orderItemsList.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
|
|
|
- if (orderItems != null) {
|
|
|
- if (orderItems.getGoodsNum().compareTo(orderItems.getSendNum().add(item.getSendNum())) < 0) {
|
|
|
- throw new RuntimeException(orderItems.getGoodsName() + "剩余应发货数量" + orderItems.getGoodsNum().subtract(orderItems.getSendNum()));
|
|
|
- } else {
|
|
|
- orderItems.setSendNum(orderItems.getSendNum().add(item.getSendNum()));
|
|
|
- }
|
|
|
- orderItems.setGoodsTotalShipAmount(orderItems.getSendNum().multiply(orderItems.getPrice()));
|
|
|
- pjOrderItemsList.add(orderItems);
|
|
|
- } else {
|
|
|
- throw new RuntimeException("数据异常请联系管理员");
|
|
|
- }
|
|
|
- }
|
|
|
- orderItemsService.updateBatchById(pjOrderItemsList);
|
|
|
PjOrder order = orderMapper.selectById(ship.getOrdId());
|
|
|
if (ObjectUtil.isNotEmpty(order)) {
|
|
|
- if (!orderItemsList.isEmpty()) {
|
|
|
- if ("已收货".equals(order.getStatus()) || "申请退货".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
|
|
|
- throw new RuntimeException("单据已收货或申请售后中,操作失败");
|
|
|
- }
|
|
|
- //发货数量和
|
|
|
- BigDecimal sendNum = orderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal goodsTotalShipAmount = orderItemsList.stream().map(PjOrderItems::getGoodsTotalShipAmount)
|
|
|
- .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- order.setGoodsTotalShipAmount(goodsTotalShipAmount);
|
|
|
- order.setGoodsTotalShipNum(sendNum);
|
|
|
- order.setVersion(order.getVersion() + 1);
|
|
|
- order.setStatus(OrderTypeEnum.GENERATED.getType());
|
|
|
- order.setStorageId(ship.getStorageId());
|
|
|
- order.setStorageName(ship.getStorageName());
|
|
|
- orderMapper.updateById(order);
|
|
|
+ if ("已收货".equals(order.getStatus()) || "申请退货".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
|
|
|
+ throw new RuntimeException("单据已收货或申请售后中,操作失败");
|
|
|
}
|
|
|
+ order.setVersion(order.getVersion() + 1);
|
|
|
+ order.setStatus(OrderTypeEnum.GENERATED.getType());
|
|
|
+ order.setStorageId(ship.getStorageId());
|
|
|
+ order.setStorageName(ship.getStorageName());
|
|
|
+ orderMapper.updateById(order);
|
|
|
}
|
|
|
}
|
|
|
baseMapper.updateById(ship);
|
|
|
@@ -2805,44 +2826,21 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
|
|
|
if (ship == null) {
|
|
|
throw new RuntimeException("未查到出库单据");
|
|
|
}
|
|
|
+ if ("已出库".equals(ship.getStatusName())) {
|
|
|
+ throw new RuntimeException("工单已出库");
|
|
|
+ }
|
|
|
List<PjShipItems> shipItemsList = shipItemsService.list(new LambdaQueryWrapper<PjShipItems>()
|
|
|
.eq(PjShipItems::getIsDeleted, 0)
|
|
|
.eq(PjShipItems::getPid, id));
|
|
|
if (!shipItemsList.isEmpty()) {
|
|
|
- // 保存订单明细
|
|
|
- List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
|
|
|
- List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
|
|
|
- .eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(PjOrderItems::getIsDeleted, 0)
|
|
|
- .eq(PjOrderItems::getPid, ship.getOrdId()));
|
|
|
- for (PjShipItems item : shipItemsList) {
|
|
|
- PjOrderItems orderItems = orderItemsList.stream().filter(e -> e.getId().equals(item.getSrcItemId())).findFirst().orElse(null);
|
|
|
- if (orderItems != null) {
|
|
|
- orderItems.setSendNum(orderItems.getSendNum().subtract(item.getSendNum()));
|
|
|
- orderItems.setGoodsTotalShipAmount(orderItems.getSendNum().multiply(orderItems.getPrice()));
|
|
|
- pjOrderItemsList.add(orderItems);
|
|
|
- } else {
|
|
|
- throw new RuntimeException("数据异常请联系管理员");
|
|
|
- }
|
|
|
- }
|
|
|
- orderItemsService.updateBatchById(pjOrderItemsList);
|
|
|
PjOrder order = orderMapper.selectById(ship.getOrdId());
|
|
|
if (ObjectUtil.isNotEmpty(order)) {
|
|
|
- if (!pjOrderItemsList.isEmpty()) {
|
|
|
- if ("已收货".equals(order.getStatus()) || "申请退货".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
|
|
|
- throw new RuntimeException("单据已收货或申请售后中,操作失败");
|
|
|
- }
|
|
|
- //发货数量和
|
|
|
- BigDecimal sendNum = pjOrderItemsList.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- BigDecimal goodsTotalShipAmount = pjOrderItemsList.stream().map(PjOrderItems::getGoodsTotalShipAmount)
|
|
|
- .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- order.setGoodsTotalShipAmount(goodsTotalShipAmount);
|
|
|
- order.setGoodsTotalShipNum(sendNum);
|
|
|
- order.setVersion(order.getVersion() + 1);
|
|
|
- order.setStatus("待发货");
|
|
|
- orderMapper.updateById(order);
|
|
|
+ if ("已收货".equals(order.getStatus()) || "申请退货".equals(order.getStatus()) || "已取消".equals(order.getStatus())) {
|
|
|
+ throw new RuntimeException("单据已收货或申请售后中,操作失败");
|
|
|
}
|
|
|
+ order.setVersion(order.getVersion() + 1);
|
|
|
+ order.setStatus("待发货");
|
|
|
+ orderMapper.updateById(order);
|
|
|
}
|
|
|
shipItemsService.removeByIds(shipItemsList.stream().map(PjShipItems::getId).collect(Collectors.toList()));
|
|
|
}
|