Browse Source

2024年11月6日15:54:50

纪新园 1 year ago
parent
commit
4918131338

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

@@ -425,6 +425,16 @@ public class PjOrder implements Serializable {
 	@ApiModelProperty(value = "毛利")
 	private BigDecimal grossProfit;
 	/**
+	 * 返利后成本
+	 */
+	@ApiModelProperty(value = "返利后成本")
+	private BigDecimal rebateCost;
+	/**
+	 * 返利后毛利
+	 */
+	@ApiModelProperty(value = "返利后毛利")
+	private BigDecimal rebateGrossProfit;
+	/**
 	 * 盈亏数
 	 */
 	@ApiModelProperty(value = "盈亏数")

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

@@ -308,6 +308,16 @@ public class PjOrderItems implements Serializable {
 	 */
 	@ApiModelProperty(value = "返利后单价")
 	private BigDecimal rebatePrice;
+	/**
+	 * 返利后成本价
+	 */
+	@ApiModelProperty(value = "返利后成本价")
+	private BigDecimal rebateCostprie;
+	/**
+	 * 返利后利润
+	 */
+	@ApiModelProperty(value = "返利后利润")
+	private BigDecimal rebateProfit;
 
 	/**
 	 * 附件

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

@@ -220,6 +220,17 @@ public class PjShipItems implements Serializable {
 	@ApiModelProperty(value = "返利后单价")
 	private BigDecimal rebatePrice;
 
+	/**
+	 * 返利后成本价
+	 */
+	@ApiModelProperty(value = "返利后成本价")
+	private BigDecimal rebateCostprie;
+	/**
+	 * 返利后利润
+	 */
+	@ApiModelProperty(value = "返利后利润")
+	private BigDecimal rebateProfit;
+
 	@TableField(exist = false)
 	private List<ShipItemsRecord> recordList;
 

+ 18 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/aea/service/impl/AeaBillsServiceImpl.java

@@ -534,6 +534,24 @@ public class AeaBillsServiceImpl extends ServiceImpl<AeaBillsMapper, AeaBills> i
 		aeaBills.setGrossWeight(grossWeight);
 		aeaBills.setMeasurement(measurement);
 		this.saveOrUpdate(aeaBills);
+		if (ObjectUtils.isNotNull(aeaBills.getFilesList())) {
+			for (FilesCenter item : aeaBills.getFilesList()) {
+				item.setPid(aeaBills.getId());
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDeptName(deptName);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateTime(new Date());
+					item.setUpdateUserName(AuthUtil.getUserName());
+				}
+			}
+			filesCenterService.saveOrUpdateBatch(aeaBills.getFilesList());
+		}
 		/**-------------费用计算---------*/
 		return R.data(aeaBills);
 	}

+ 21 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -425,9 +425,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						V45 += item.getQuantity();
 					} else if (item.getCntrTypeCode().contains("48")) {
 						V48 += item.getQuantity();
-					} else if (item.getCntrTypeCode().contains("40") && (!item.getCntrTypeCode().contains("HQ")) && !item.getCntrTypeCode().contains("HC")) {
+					} else if (item.getCntrTypeCode().contains("40")) {
 						V40 += item.getQuantity();
-					} else if (item.getCntrTypeCode().contains("40") && (item.getCntrTypeCode().contains("HQ")) && item.getCntrTypeCode().contains("HC")) {
+					} else if (item.getCntrTypeCode().contains("40") && item.getCntrTypeCode().contains("HC")) {
 						V40HC += item.getQuantity();
 					} else {
 						other += item.getQuantity();
@@ -742,6 +742,25 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			seaBillsDetailService.saveOrUpdate(bills.getDetail());
 		}
 
+		if (ObjectUtils.isNotNull(bills.getFilesList())) {
+			for (FilesCenter item : bills.getFilesList()) {
+				item.setPid(bills.getId());
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDeptName(deptName);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateTime(new Date());
+					item.setUpdateUserName(AuthUtil.getUserName());
+				}
+			}
+			filesCenterService.saveOrUpdateBatch(bills.getFilesList());
+		}
+
 		LocalDateTime now = LocalDateTime.now();
 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 		String formatted = now.format(formatter);

+ 6 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -1398,6 +1398,9 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			map.put("amountDrLoc", boxNumberProfitExcelList.stream().map(BoxNumberProfitExcel::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountCrLoc", boxNumberProfitExcelList.stream().map(BoxNumberProfitExcel::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("amountProfitLoc", boxNumberProfitExcelList.stream().map(BoxNumberProfitExcel::getAmountProfitLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("quantity", boxNumberProfitExcelList.stream().map(BoxNumberProfitExcel::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("grossWeight", boxNumberProfitExcelList.stream().map(BoxNumberProfitExcel::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("measurement", boxNumberProfitExcelList.stream().map(BoxNumberProfitExcel::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		} else {
 			map.put("teu", 0);
 			map.put("quantityV20", 0);
@@ -1415,6 +1418,9 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 			map.put("amountDrLoc", new BigDecimal("0.00"));
 			map.put("amountCrLoc", new BigDecimal("0.00"));
 			map.put("amountProfitLoc", new BigDecimal("0.00"));
+			map.put("quantity", new BigDecimal("0.00"));
+			map.put("grossWeight", new BigDecimal("0.00"));
+			map.put("measurement", new BigDecimal("0.00"));
 		}
 		return R.data(map);
 	}

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java

@@ -112,7 +112,7 @@ public class OrderController extends BladeController {
 				PjOrder::getConfirmWarehouse, PjOrder::getWhetherRedeem, PjOrder::getFundingPartyId, PjOrder::getFundingPartyName,
 				PjOrder::getInterest, PjOrder::getFundingAmount, PjOrder::getBondAmount, PjOrder::getProportion,
 				PjOrder::getGoodsTotalShipAmount, PjOrder::getOutGoodsTotalShipNum, PjOrder::getOutGoodsTotalShipAmount,
-				PjOrder::getGoodsTotalShipNum,PjOrder::getSalesAmount,PjOrder::getRefno)
+				PjOrder::getGoodsTotalShipNum,PjOrder::getSalesAmount,PjOrder::getRefno,PjOrder::getPrimaryGoodsTotalNum,PjOrder::getPrimaryFundingAmount)
 			.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.eq(PjOrder::getBsType, order.getBsType())

+ 2 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml

@@ -729,7 +729,7 @@
     <select id="columnarRz" resultType="java.util.Map">
         SELECT
         IF(sum(po.goods_total_ship_num),sum(po.goods_total_ship_num),0.00) AS goodsTotalNum,
-        IF(sum(po.primary_funding_amount),sum(po.primary_funding_amount),0.00) AS primaryFundingAmount,
+        IF(sum(po.funding_amount),sum(po.funding_amount),0.00) AS primaryFundingAmount,
         IF(sum(po.goods_total_ship_amount),sum(po.goods_total_ship_amount),0.00) AS totalMoney
         FROM
         pjpf_order po
@@ -737,8 +737,8 @@
         po.tenant_id = #{tenantId}
         AND po.is_deleted = 0
         and po.bs_type = 'RZCG'
-        and po.confirm_warehouse = '1'
         and po.whether_redeem = '0'
+        AND FIND_IN_SET(po.status,'待收货,已收货')
         <if test="firstDay != null">
             and po.busines_date &gt;= #{firstDay}
         </if>

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

@@ -1606,6 +1606,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					BigDecimal costprie = item.getCostprie().divide(item.getGoodsNum(), 2, RoundingMode.HALF_UP);
 					item.setCostprie(item.getReturnsNumber().multiply(costprie));
 					item.setGrossProfit(item.getReturnsAmount().subtract(item.getCostprie()));
+					BigDecimal rebateCostprie = item.getRebateCostprie().divide(item.getGoodsNum(), 2, RoundingMode.HALF_UP);
+					item.setRebateCostprie(item.getReturnsNumber().multiply(rebateCostprie));
+					item.setRebateProfit(item.getReturnsAmount().subtract(item.getRebateCostprie()));
 					orderItemsService.saveOrUpdate(item);
 				}
 				if (goodsName.length() > 0) {
@@ -1622,7 +1625,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				order.setGoodsTotalNum(order.getOrderItemsList().stream().map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				order.setTotalMoney(order.getOrderItemsList().stream().map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				order.setCost(order.getOrderItemsList().stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				order.setRebateCost(order.getOrderItemsList().stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				order.setGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				order.setRebateGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				/*if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {//只有一条轮胎加5元运费
 					order.setTotalMoney(order.getReturnsAmount().add(new BigDecimal(5)));
 					order.setFreight(new BigDecimal(5));
@@ -1701,7 +1706,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					goodsName.append(goodsDesc.getCname()).append(",");
 					retrieval.append(goodsDesc.getCnameInt()).append(",");
 					item.setCostprie(item.getReturnsNumber().multiply(item.getPrice()));
+					item.setRebateCostprie(item.getReturnsNumber().multiply(item.getRebatePrice()));
 					item.setGrossProfit(item.getReturnsAmount().subtract(item.getCostprie()));
+					item.setRebateProfit(item.getReturnsAmount().subtract(item.getRebateCostprie()));
 					item.setBrandName(goodsDesc.getBrandName());
 				});
 				if (goodsName.length() > 0) {
@@ -1718,7 +1725,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				order.setGoodsTotalNum(order.getOrderItemsList().stream().map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				order.setTotalMoney(order.getOrderItemsList().stream().map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				order.setCost(order.getOrderItemsList().stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				order.setRebateCost(order.getOrderItemsList().stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				order.setGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				order.setRebateGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			} else {
 				order.setNumberRows(0);//行数
 				//总数量
@@ -2872,7 +2881,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				detail.setOutOverpaymen(new BigDecimal("0.00"));
 				detail.setAdvancePaymentBalance(new BigDecimal("0.00"));
 			} else {
-				detail.setId(advanceCharge.getId());
+				BeanUtil.copyProperties(advanceCharge, detail);
 				detail.setUpdateUser(AuthUtil.getUserId());
 				detail.setUpdateUserName(AuthUtil.getUserName());
 				detail.setUpdateTime(new Date());
@@ -2893,7 +2902,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				item.setCreateUserName(AuthUtil.getUserName());
 				item.setCreateDept(pjpfFunding.getCreateDept());
 				item.setCreateDeptName(pjpfFunding.getCreateDeptName());
-				item.setType("融资采购-融资入库");
+				item.setType("融资采购-确认到货");
 				item.setSrcId(order.getId());
 				item.setSrcNo(order.getOrdNo());
 				if (ObjectUtils.isNull(proportion)) {
@@ -3036,7 +3045,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				item.setCreateUserName(AuthUtil.getUserName());
 				item.setCreateDept(pjpfFunding.getCreateDept());
 				item.setCreateDeptName(pjpfFunding.getCreateDeptName());
-				item.setType("融资采购-撤销融资入库");
+				item.setType("融资采购-撤销确认到货");
 				item.setSrcId(order.getId());
 				item.setSrcNo(order.getOrdNo());
 				if (ObjectUtils.isNull(proportion)) {
@@ -3129,7 +3138,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		String financingBrand = sysClient.getParamService("financing.brand");
 		if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
 			PjOrder pjOrder = baseMapper.selectById(order.getId());
-			if (ObjectUtils.isNull(pjOrder.getStorageId())){
+			if (ObjectUtils.isNull(pjOrder.getStorageId())) {
 				throw new RuntimeException("请先维护发货仓库");
 			}
 			if (OrderTypeEnum.SCRW.getType().equals(pjOrder.getGenerateTask())) {
@@ -3576,6 +3585,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		String statu = sysClient.getParamService("whether.financing");
 		String financingBrand = sysClient.getParamService("financing.brand");
 		if (order.getBsType().equals(OrderTypeEnum.SALES.getType())) {//销售
+			if (ObjectUtils.isNotNull(statu) && "1".equals(statu)) {
+				if (ObjectUtils.isNull(order.getStorageId())) {
+					throw new RuntimeException("请先维护仓库");
+				}
+			}
 			if (order.getId() == null) {
 				if (ObjectUtils.isNull(order.getBillType())) {
 					if (ObjectUtils.isNotNull(order.getStorageId())) {
@@ -3683,6 +3697,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				for (PjOrderItems item : order.getOrderItemsList()) {
 					BigDecimal balanceQuantity = new BigDecimal("0.00");
 					BigDecimal inventoryAmount = new BigDecimal("0.00");
+					BigDecimal rebateInventoryAmount = new BigDecimal("0.00");
 					item.setSendNum(new BigDecimal("0.00"));
 					/*if (new BigDecimal("0.00").compareTo(item.getPrice()) == 0) {
 						throw new RuntimeException("商品:" + item.getGoodsName() + "单价为零");
@@ -3692,14 +3707,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							.reduce(BigDecimal.ZERO, BigDecimal::add);
 						inventoryAmount = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getInventoryAmount).filter(Objects::nonNull)
 							.reduce(BigDecimal.ZERO, BigDecimal::add);
+						rebateInventoryAmount = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getRebateInventoryAmount).filter(Objects::nonNull)
+							.reduce(BigDecimal.ZERO, BigDecimal::add);
 					}
 					BigDecimal inventoryCostPrice = new BigDecimal("0.00");
+					BigDecimal rebateInventoryCostPrice = new BigDecimal("0.00");
 					if (balanceQuantity.compareTo(new BigDecimal("0.00")) == 0 ||
 						inventoryAmount.compareTo(new BigDecimal("0.00")) == 0) {
 						inventoryCostPrice = new BigDecimal("0.00");
 					} else {
 						inventoryCostPrice = inventoryAmount.divide(balanceQuantity, 2, RoundingMode.HALF_UP);
 					}
+					if (balanceQuantity.compareTo(new BigDecimal("0.00")) == 0 ||
+						rebateInventoryAmount.compareTo(new BigDecimal("0.00")) == 0) {
+						rebateInventoryCostPrice = new BigDecimal("0.00");
+					} else {
+						rebateInventoryCostPrice = rebateInventoryAmount.divide(balanceQuantity, 2, RoundingMode.HALF_UP);
+						item.setRebatePrice(rebateInventoryCostPrice);
+					}
 					item.setBizType(order.getBsType());
 					item.setBillNo(order.getOrdNo());
 					if (item.getId() == null) {
@@ -3730,6 +3755,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						goodsName.append(goodsDesc.getCname()).append(",");
 						retrieval.append(goodsDesc.getCnameInt()).append(",");
 						item.setCostprie(item.getGoodsNum().multiply(inventoryCostPrice));
+						item.setRebateCostprie(item.getGoodsNum().multiply(rebateInventoryCostPrice));
 					} else {//共享仓取共享上架的共享成本
 						LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 						lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
@@ -3742,12 +3768,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						PjProductLaunch productLaunch = productLaunchService.getOne(lambdaQueryWrapper);
 						if (ObjectUtils.isNotNull(productLaunch)) {
 							item.setCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
+							item.setRebateCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
 						} else {
 							throw new RuntimeException("请维护共享商品成本价格");
 						}
 					}
 					//计算毛利
 					item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
+					item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
 					orderItemsService.saveOrUpdate(item);
 
 				}
@@ -3780,11 +3808,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					order.setTotalMoney(totalMoney.add(new BigDecimal(5)));
 					order.setFreight(new BigDecimal(5));
 				}
-
 				//毛利
 				order.setGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				//成本
 				order.setCost(order.getOrderItemsList().stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				order.setRebateGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//成本
+				order.setRebateCost(order.getOrderItemsList().stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			} else {
 				order.setNumberRows(0);//行数
 				//总数量
@@ -3863,6 +3893,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					//计算小计
 					item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
 					item.setGoodsTotalShipAmount((ObjectUtils.isNotNull(item.getSendNum()) ? item.getSendNum() : new BigDecimal("0.00")).multiply(item.getPrice()));
+					if (ObjectUtils.isNotNull(item.getRebatePrice()) && new BigDecimal("0.00").compareTo(item.getRebatePrice()) != 0) {
+						item.setRebateCostprie(item.getGoodsNum().multiply(item.getRebatePrice()));
+						item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
+					} else {
+						item.setRebatePrice(item.getPrice());
+						item.setRebateCostprie(item.getGoodsNum().multiply(item.getRebatePrice()));
+						item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
+					}
 					if (ObjectUtils.isNull(order.getStatus()) || "录入".equals(order.getStatus())) {
 						item.setPrimaryGoodsTotalNum(item.getGoodsNum());
 					}
@@ -3899,6 +3937,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				order.setOutGoodsTotalShipAmount(order.getOrderItemsList().stream().map(PjOrderItems::getOutGoodsTotalShipAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				order.setSalesAmount(totalMoney);
 				order.setTotalMoney(totalMoney);
+				order.setRebateGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//成本
+				order.setRebateCost(order.getOrderItemsList().stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+
 				if (goodsName.length() > 0) {
 					order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
 				}
@@ -3980,6 +4022,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					//计算小计
 					item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
 					item.setGoodsTotalShipAmount((ObjectUtils.isNotNull(item.getSendNum()) ? item.getSendNum() : new BigDecimal("0")).multiply(item.getPrice()));
+					if (ObjectUtils.isNotNull(item.getRebatePrice()) && new BigDecimal("0.00").compareTo(item.getRebatePrice()) != 0) {
+						item.setRebateCostprie(item.getGoodsNum().multiply(item.getRebatePrice()));
+						item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
+					} else {
+						item.setRebatePrice(item.getPrice());
+						item.setRebateCostprie(item.getGoodsNum().multiply(item.getRebatePrice()));
+						item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
+					}
 					if (ObjectUtils.isNull(order.getStatus()) || "录入".equals(order.getStatus())) {
 						item.setPrimaryGoodsTotalNum(item.getGoodsNum());
 					}
@@ -4016,6 +4066,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				order.setOutGoodsTotalShipAmount(order.getOrderItemsList().stream().map(PjOrderItems::getOutGoodsTotalShipAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				order.setSalesAmount(totalMoney);
 				order.setTotalMoney(totalMoney);
+				order.setRebateGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//成本
+				order.setRebateCost(order.getOrderItemsList().stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+
 				if (goodsName.length() > 0) {
 					order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
 				}

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

@@ -851,6 +851,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						orderItems.setCostprie(stockOne.getInventoryCostPrice().multiply(orderItems.getGoodsNum()));
 						orderItems.setGrossProfit(item.getSubTotalMoney().subtract(orderItems.getCostprie()));
 					}
+					if (ObjectUtils.isNull(orderItems.getRebateCostprie()) || new BigDecimal("0.00").compareTo(orderItems.getRebateCostprie()) == 0) {
+						orderItems.setRebateCostprie(stockOne.getRebatePrice().multiply(orderItems.getGoodsNum()));
+						orderItems.setRebateProfit(item.getSubTotalMoney().subtract(orderItems.getRebateCostprie()));
+					}
 					if (orderItems.getGoodsNum().compareTo(orderItems.getSendNum().add(item.getSendNum())) < 0) {
 						throw new RuntimeException(orderItems.getGoodsName() + "剩余应发货数量" + orderItems.getGoodsNum().subtract(orderItems.getSendNum()));
 					} else {
@@ -1247,6 +1251,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					if (stockOne1 == null) {
 						orderItems.setCostprie(new BigDecimal("0.00"));
 						orderItems.setGrossProfit(new BigDecimal("0.00"));
+						orderItems.setRebateCostprie(new BigDecimal("0.00"));
+						orderItems.setRebateProfit(new BigDecimal("0.00"));
 					}
 					orderItems.setSendNum(orderItems.getSendNum().subtract(item.getSendNum()));
 					pjOrderItemsList.add(orderItems);
@@ -2280,6 +2286,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				text.append("第").append(i + 2).append("行,数量为空").append("\n");
 				count = 1;
 			}
+			if (ObjectUtil.isEmpty(itemExcel.getPrice())) {
+				text.append("第").append(i + 2).append("行,单价为空").append("\n");
+				count = 1;
+			}
 			PjOrderItems item = new PjOrderItems();
 			BeanUtil.copy(itemExcel, item);
 			//查询商品信息
@@ -2303,11 +2313,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						count = 1;
 					}
 				}
+				item.setSubTotalMoney(item.getPrice().multiply(itemExcel.getGoodsNum()));
 				if (ObjectUtils.isNull(itemExcel.getRebatePrice()) || new BigDecimal("0.00").compareTo(itemExcel.getRebatePrice()) == 0) {
 					item.setRebatePrice(item.getPrice());
 				} else {
 					item.setRebatePrice(itemExcel.getRebatePrice());
 				}
+				item.setRebateCostprie(item.getGoodsNum().multiply(item.getRebatePrice()));
+				item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
 				item.setUnits(goodsDesc.getUnit());
 				item.setSendNum(new BigDecimal("0"));
 				if (count == 0) {
@@ -2533,12 +2546,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(item.getPrice())));
 					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(item.getSendNum().multiply(item.getRebatePrice())));
-					if (new BigDecimal("0.00").compareTo(stockOne.getInventoryAmount()) == 0 && new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
+					if (new BigDecimal("0.00").compareTo(stockOne.getInventoryAmount()) == 0 || new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
 						stockOne.setInventoryCostPrice(new BigDecimal("0.00"));
 					} else {
 						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 					}
-					if (new BigDecimal("0.00").compareTo(stockOne.getRebateInventoryAmount()) == 0 && new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
+					if (new BigDecimal("0.00").compareTo(stockOne.getRebateInventoryAmount()) == 0 || new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
 						stockOne.setRebatePrice(new BigDecimal("0.00"));
 					} else {
 						stockOne.setRebatePrice(stockOne.getRebateInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
@@ -3193,6 +3206,10 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				text.append("第").append(i + 2).append("行,数量为空").append("\n");
 				count = 1;
 			}
+			if (ObjectUtil.isEmpty(itemExcel.getPrice())) {
+				text.append("第").append(i + 2).append("行,单价为空").append("\n");
+				count = 1;
+			}
 			PjOrderItems item = new PjOrderItems();
 			BeanUtil.copy(itemExcel, item);
 			//查询商品信息
@@ -3216,11 +3233,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						count = 1;
 					}
 				}
+				item.setSubTotalMoney(item.getPrice().multiply(itemExcel.getGoodsNum()));
 				if (ObjectUtils.isNull(itemExcel.getRebatePrice()) || new BigDecimal("0.00").compareTo(itemExcel.getRebatePrice()) == 0) {
 					item.setRebatePrice(item.getPrice());
 				} else {
 					item.setRebatePrice(itemExcel.getRebatePrice());
 				}
+				item.setRebateCostprie(item.getGoodsNum().multiply(item.getRebatePrice()));
+				item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
 				item.setUnits(goodsDesc.getUnit());
 				item.setSendNum(new BigDecimal("0"));
 				if (count == 0) {

+ 13 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

@@ -1251,15 +1251,23 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		Map<String, Object> map = new HashMap<>();
 		if (!fundingList.isEmpty()) {
 			map.put("corpName", fundingList.get(0).getFundingPartyName());
-			map.put("surplusFundingAmount", fundingList.stream().map(PjpfFunding::getSurplusFundingAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+//			map.put("surplusFundingAmount", fundingList.stream().map(PjpfFunding::getSurplusFundingAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("bondAmount", fundingList.stream().map(PjpfFunding::getBondAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("availableAmount", fundingList.stream().map(PjpfFunding::getAvailableAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 			map.put("sumAmount", orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getTenantId, AuthUtil.getTenantId())
-					.eq(PjOrder::getIsDeleted, 0).eq(PjOrder::getBsType, "RZCG").eq(PjOrder::getWhetherRedeem, 0))
+					.eq(PjOrder::getIsDeleted, 0).eq(PjOrder::getBsType, "RZCG").eq(PjOrder::getWhetherRedeem, 0)
+					.apply("FIND_IN_SET(status,'待收货,已收货')"))
 				.stream().map(PjOrder::getGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
-			map.put("primaryFundingAmount", orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getTenantId, AuthUtil.getTenantId())
-					.eq(PjOrder::getIsDeleted, 0).eq(PjOrder::getBsType, "RZCG").eq(PjOrder::getWhetherRedeem, 0))
-				.stream().map(PjOrder::getPrimaryFundingAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			BigDecimal goodsTotalShipAmount = orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+					.eq(PjOrder::getIsDeleted, 0).eq(PjOrder::getBsType, "RZCG").eq(PjOrder::getWhetherRedeem, 0)
+					.apply("FIND_IN_SET(status,'待收货,已收货')"))
+				.stream().map(PjOrder::getGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal outGoodsTotalShipAmount = orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+					.eq(PjOrder::getIsDeleted, 0).eq(PjOrder::getBsType, "RZCG").eq(PjOrder::getWhetherRedeem, 0)
+					.apply("FIND_IN_SET(status,'待收货,已收货')"))
+				.stream().map(PjOrder::getOutGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			map.put("surplusFundingAmount", goodsTotalShipAmount.subtract(outGoodsTotalShipAmount));
+			map.put("primaryFundingAmount", fundingList.stream().map(PjpfFunding::getSurplusFundingAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 		} else {
 			map.put("corpName", "");
 			map.put("surplusFundingAmount", "0.00");