瀏覽代碼

20230522 08:34

wangzhuo 2 年之前
父節點
當前提交
2af6d109a2

+ 1 - 1
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java

@@ -227,7 +227,7 @@ public class PjOrder implements Serializable {
 	 * 已发数量
 	 */
 		@ApiModelProperty(value = "已发数量")
-		private String goodsTotalShipNum;
+		private BigDecimal goodsTotalShipNum;
 	/**
 	 * 应结日期
 	 */

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjProductLaunch.java

@@ -275,4 +275,10 @@ public class PjProductLaunch implements Serializable {
 	 */
 	@ApiModelProperty(value = "自修补")
 	private String selfRecovery;
+
+	/**
+	 * 共享成本
+	 */
+	@ApiModelProperty(value = "共享成本")
+	private BigDecimal shareCost;
 }

+ 12 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShip.java

@@ -234,4 +234,16 @@ public class PjShip implements Serializable {
 	 */
 	@ApiModelProperty(value = "库管员名称")
 	private String stockClerkName;
+
+	/**
+	 * 来源公司id
+	 */
+	@ApiModelProperty(value = "来源公司id")
+	private Long sourceCompanyId;
+
+	/**
+	 * 来源公司名称
+	 */
+	@ApiModelProperty(value = "来源公司名称")
+	private String sourceCompanyName;
 }

+ 66 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -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);
 
 		//修改销售状态为待发货

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -366,7 +366,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
 					stockDescMapper.updateById(stockOne);
 				}else {
-					throw new RuntimeException("库存数据异常");
+					throw new RuntimeException("未查到库存账");
 				}
 
 			});

+ 18 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

@@ -19,6 +19,7 @@ package org.springblade.salesPart.shoppingCart.service.impl;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -226,6 +227,22 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 								}
 							}
 
+							//修改共享仓的上架管理库存
+							LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
+							queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+								.eq(PjProductLaunch::getIsDeleted, 0)
+								.eq(PjProductLaunch::getBillType, 0)
+								.eq(PjProductLaunch::getSalesCompanyId, e.getSharedCompanyId())
+								.eq(PjProductLaunch::getGoodsId, e.getGoodsId());
+							List<PjProductLaunch> launchList = productLaunchMapper.selectList(queryWrapper);
+
+							if (ObjectUtil.isNotEmpty(launchList)){
+								launchList.forEach(launch -> {
+									launch.setInventory(launch.getInventory().subtract(e.getGoodsNum()));
+									productLaunchMapper.updateById(launch);
+								});
+							}
+
 						});
 						BigDecimal totalMoney = BigDecimal.ZERO;
 						order.setNumberRows(shoppingCartList.size());//行数
@@ -240,7 +257,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 						order.setSalesAmount(totalMoney);
 						order.setTotalMoney(totalMoney);
 
-						if (shoppingCartList.size() == 1) {//只有一条明细加5元运费
+						if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {//只有一条明细加5元运费
 							order.setTotalMoney(totalMoney.add(new BigDecimal(5)));
 							order.setFreight(new BigDecimal(5));
 						}