|
|
@@ -24,15 +24,19 @@ import org.springblade.client.feign.ISerialClient;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.utils.BeanUtil;
|
|
|
+import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
|
|
|
import org.springblade.salesPart.entity.*;
|
|
|
import org.springblade.salesPart.enums.OrderTypeEnum;
|
|
|
+import org.springblade.salesPart.goods.mapper.GoodsDescMapper;
|
|
|
import org.springblade.salesPart.order.mapper.OrderItemsMapper;
|
|
|
import org.springblade.salesPart.order.mapper.OrderMapper;
|
|
|
import org.springblade.salesPart.order.service.IOrderService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springblade.salesPart.payment.mapper.PaymentMapper;
|
|
|
+import org.springblade.salesPart.productLaunch.mapper.ProductLaunchMapper;
|
|
|
import org.springblade.salesPart.ship.mapper.ShipMapper;
|
|
|
+import org.springblade.salesPart.stock.mapper.StockDescMapper;
|
|
|
import org.springblade.salesPart.storage.mapper.StorageDescMapper;
|
|
|
import org.springblade.salesPart.vo.OrderVO;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -63,6 +67,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
private final CorpsDescMapper corpsDescMapper;
|
|
|
private final StorageDescMapper storageDescMapper;
|
|
|
private final PaymentMapper paymentMapper;
|
|
|
+ private final StockDescMapper stockDescMapper;
|
|
|
+ private final ProductLaunchMapper productLaunchMapper;
|
|
|
+ private final GoodsDescMapper goodsDescMapper;
|
|
|
|
|
|
/**
|
|
|
* 获取销售订单详情
|
|
|
@@ -165,13 +172,63 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
item.setPid(order.getId());
|
|
|
orderItemsMapper.updateById(item);
|
|
|
}
|
|
|
+
|
|
|
+ //计算小计
|
|
|
+ item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
|
|
|
+
|
|
|
+ //计算成本
|
|
|
+ if (order.getSharedCompanyId().equals(Long.valueOf(AuthUtil.getDeptId()))){//本地取库存账成本价
|
|
|
+
|
|
|
+ //获得商品
|
|
|
+ PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
|
|
|
+ if (ObjectUtil.isEmpty(goodsDesc)){
|
|
|
+ throw new RuntimeException("商品数据异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjStockDesc::getIsDeleted, 0)
|
|
|
+ .eq(PjStockDesc::getGoodsId, item.getGoodsId())
|
|
|
+ .eq(PjStockDesc::getStorageId, order.getStorageId());
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(goodsDesc.getWhether()) && goodsDesc.getWhether().equals("1")){//是否管理批次号
|
|
|
+ lambdaQueryWrapper.eq(PjStockDesc::getDot, item.getDot());
|
|
|
+ }else {
|
|
|
+ lambdaQueryWrapper.isNull(PjStockDesc::getDot);
|
|
|
+ }
|
|
|
+
|
|
|
+ PjStockDesc stockDesc = stockDescMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ if (ObjectUtil.isNotEmpty(stockDesc)){
|
|
|
+ item.setCostprie(item.getGoodsNum().multiply(stockDesc.getInventoryCostPrice()));
|
|
|
+ }else {
|
|
|
+ throw new RuntimeException("未查询到库存账信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ }else {//共享仓取共享上架的共享成本
|
|
|
+ LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(PjProductLaunch::getIsDeleted, 0)
|
|
|
+ .eq(PjProductLaunch::getGoodsId, item.getGoodsId())
|
|
|
+ .eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
|
|
|
+ .eq(PjProductLaunch::getSourceCompanyId, order.getSharedCompanyId());
|
|
|
+ PjProductLaunch productLaunch = productLaunchMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ item.setCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
|
|
|
+ }
|
|
|
+
|
|
|
+ //计算毛利
|
|
|
+ item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
|
|
|
+
|
|
|
+ orderItemsMapper.updateById(item);
|
|
|
+
|
|
|
});
|
|
|
|
|
|
BigDecimal totalMoney = BigDecimal.ZERO;
|
|
|
order.setNumberRows(order.getOrderItemsList().size());//行数
|
|
|
- //明细总数量
|
|
|
+ //总数量
|
|
|
order.setGoodsTotalNum(order.getOrderItemsList().stream().filter(e ->e.getGoodsNum() != null).map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
- //明细总金额
|
|
|
+ //总已发数量
|
|
|
+ order.setGoodsTotalShipNum(order.getOrderItemsList().stream().filter(e ->e.getSendNum() != null).map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ //总金额
|
|
|
totalMoney = order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
|
|
|
return x.add(y.getGoodsNum().multiply(y.getPrice()));
|
|
|
},BigDecimal::add).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
@@ -183,6 +240,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
order.setFreight(new BigDecimal(5));
|
|
|
}
|
|
|
order.setTotalMoney(totalMoney);
|
|
|
+
|
|
|
+ //毛利
|
|
|
+ order.setGrossProfit(order.getOrderItemsList().stream().filter(e ->e.getGrossProfit() != null).map(PjOrderItems::getGrossProfit).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
+ //成本
|
|
|
+ order.setCost(order.getOrderItemsList().stream().filter(e ->e.getCostprie() != null).map(PjOrderItems::getCostprie).reduce(BigDecimal.ZERO,BigDecimal::add));
|
|
|
}
|
|
|
}else if (order.getBsType().equals(OrderTypeEnum.PURCHASE.getType())){//采购
|
|
|
if (order.getId() == null){
|
|
|
@@ -272,6 +334,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
|
|
|
pjShip.setCreateTime(new Date());
|
|
|
pjShip.setSalesCompanyId(pjOrder.getSharedCompanyId());
|
|
|
pjShip.setSalesCompanyName(pjOrder.getSharedCompanyName());
|
|
|
+ pjShip.setSourceCompanyId(pjOrder.getSalesCompanyId());
|
|
|
+ pjShip.setSourceCompanyName(pjOrder.getSalesCompanyName());
|
|
|
shipMapper.insert(pjShip);
|
|
|
|
|
|
//修改销售状态为待发货
|