Browse Source

2025年1月6日17:01:23

纪新园 1 year ago
parent
commit
80117c069e

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

@@ -110,5 +110,11 @@ public class SaleDetail {
 	@ExcelIgnore
 	private String businessSource;
 
+	/**
+	 * 返利单价计算
+	 */
+	@ExcelIgnore
+	private String whetherRebate;
+
 
 }

+ 38 - 26
blade-service/blade-los/src/main/java/org/springblade/los/app/service/impl/IndexServiceImpl.java

@@ -274,7 +274,7 @@ public class IndexServiceImpl implements IndexService {
 				} else {
 					lambdaQueryWrapper.eq(Bills::getCreateUser, AuthUtil.getUserId());
 				}
-				lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
+//				lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
 			}
 		}
 		List<Bills> billsList = billsMapper.selectList(lambdaQueryWrapper);
@@ -285,7 +285,7 @@ public class IndexServiceImpl implements IndexService {
 				LambdaQueryWrapper<BCorps> corpsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 				corpsLambdaQueryWrapper.eq(BCorps::getTenantId, AuthUtil.getTenantId())
 					.eq(BCorps::getIsDeleted, 0)
-					.eq(BCorps::getBranchId, branchId);
+					.eq(ObjectUtils.isNotNull(branchId),BCorps::getBranchId, branchId);
 				if ("1".equals(type)) {
 					corpsLambdaQueryWrapper.notIn(BCorps::getId, corpIds);
 				} else {
@@ -356,7 +356,7 @@ public class IndexServiceImpl implements IndexService {
 		List<BCorps> corpsList = corpsMapper.selectList(new LambdaQueryWrapper<BCorps>()
 			.eq(BCorps::getTenantId, AuthUtil.getTenantId())
 			.eq(BCorps::getIsDeleted, 0)
-			.in(!corpIdList.isEmpty(),BCorps::getId, corpIdList));
+			.in(!corpIdList.isEmpty(), BCorps::getId, corpIdList));
 		Map<String, Object> map = new HashMap<>();
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		List<ProfitCustomersSort> customersSortList = new ArrayList<>();
@@ -404,7 +404,13 @@ public class IndexServiceImpl implements IndexService {
 			.sorted(Comparator.comparing(ProfitCustomersSort::getAmount).reversed())
 			.collect(Collectors.toList());
 		BigDecimal total = new BigDecimal("0.00");
-		for (int i = 0; i < 5; i++) {
+		int count;
+		if (!sortList.isEmpty() && sortList.size() >= 4) {
+			count = 5;
+		}else{
+			count = sortList.size();
+		}
+		for (int i = 0; i < count; i++) {
 			Map<String, Object> map1 = new HashMap<>();
 			map1.put("name", sortList.get(i).getCorpName());
 			map1.put("value", sortList.get(i).getAmount());
@@ -449,7 +455,7 @@ public class IndexServiceImpl implements IndexService {
 		List<BCorps> corpsList = corpsMapper.selectList(new LambdaQueryWrapper<BCorps>()
 			.eq(BCorps::getTenantId, AuthUtil.getTenantId())
 			.eq(BCorps::getIsDeleted, 0)
-			.in(!corpIdList.isEmpty(),BCorps::getId, corpIdList));
+			.in(!corpIdList.isEmpty(), BCorps::getId, corpIdList));
 		Map<String, Object> map = new HashMap<>();
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		List<ProfitCustomersSort> customersSortList = new ArrayList<>();
@@ -469,7 +475,13 @@ public class IndexServiceImpl implements IndexService {
 			.sorted(Comparator.comparing(ProfitCustomersSort::getTeu).reversed())
 			.collect(Collectors.toList());
 		int teu = 0;
-		for (int i = 0; i < 5; i++) {
+		int count;
+		if (!sortList.isEmpty() && sortList.size() >= 4) {
+			count = 5;
+		}else{
+			count = sortList.size();
+		}
+		for (int i = 0; i < count; i++) {
 			Map<String, Object> map1 = new HashMap<>();
 			map1.put("name", sortList.get(i).getCorpName());
 			map1.put("value", sortList.get(i).getTeu());
@@ -541,7 +553,7 @@ public class IndexServiceImpl implements IndexService {
 			List<BCorps> corpsList = corpsMapper.selectList(new LambdaQueryWrapper<BCorps>()
 				.eq(BCorps::getTenantId, AuthUtil.getTenantId())
 				.eq(BCorps::getIsDeleted, 0)
-				.in(!corpIdList.isEmpty(),BCorps::getId, corpIdList));
+				.in(!corpIdList.isEmpty(), BCorps::getId, corpIdList));
 			List<ProfitCustomersSort> customersSortList = new ArrayList<>();
 			for (BCorps item : corpsList) {
 				ProfitCustomersSort detail = new ProfitCustomersSort();
@@ -619,7 +631,7 @@ public class IndexServiceImpl implements IndexService {
 			List<BCorps> corpsList = corpsMapper.selectList(new LambdaQueryWrapper<BCorps>()
 				.eq(BCorps::getTenantId, AuthUtil.getTenantId())
 				.eq(BCorps::getIsDeleted, 0)
-				.in(!corpIdList.isEmpty(),BCorps::getId, corpIdList));
+				.in(!corpIdList.isEmpty(), BCorps::getId, corpIdList));
 			List<ProfitCustomersSort> customersSortList = new ArrayList<>();
 			for (BCorps item : corpsList) {
 				ProfitCustomersSort detail = new ProfitCustomersSort();
@@ -678,27 +690,27 @@ public class IndexServiceImpl implements IndexService {
 			.ge(ObjectUtils.isNotNull(startDate), AeaBills::getBillDate, startDate)
 			.le(ObjectUtils.isNotNull(endDate), AeaBills::getBillDate, endDate));
 		List<ProfitCustomersSort> customersSortList = new ArrayList<>();
-			List<User> userList =  userClient.selectListByRole(AuthUtil.getTenantId());
-			for (User item : userList) {
-				ProfitCustomersSort detail = new ProfitCustomersSort();
-				detail.setCorpId(item.getId());
-				detail.setCorpName(item.getRealName());
-				int number = 0;
-				if (!billsList.isEmpty()) {
-					List<Bills> bills = billsList.stream().filter(e -> e.getSrcId().equals(item.getId())).collect(Collectors.toList());
-					if (!bills.isEmpty()) {
-						number = number + bills.size();
-					}
+		List<User> userList = userClient.selectListByRole(AuthUtil.getTenantId());
+		for (User item : userList) {
+			ProfitCustomersSort detail = new ProfitCustomersSort();
+			detail.setCorpId(item.getId());
+			detail.setCorpName(item.getRealName());
+			int number = 0;
+			if (!billsList.isEmpty()) {
+				List<Bills> bills = billsList.stream().filter(e -> e.getSrcId().equals(item.getId())).collect(Collectors.toList());
+				if (!bills.isEmpty()) {
+					number = number + bills.size();
 				}
-				if (!aeaBillsList.isEmpty()) {
-					List<AeaBills> bills = aeaBillsList.stream().filter(e -> e.getSrcId().equals(item.getId())).collect(Collectors.toList());
-					if (!bills.isEmpty()) {
-						number = number + bills.size();
-					}
+			}
+			if (!aeaBillsList.isEmpty()) {
+				List<AeaBills> bills = aeaBillsList.stream().filter(e -> e.getSrcId().equals(item.getId())).collect(Collectors.toList());
+				if (!bills.isEmpty()) {
+					number = number + bills.size();
 				}
-				detail.setNumber(number);
-				customersSortList.add(detail);
 			}
+			detail.setNumber(number);
+			customersSortList.add(detail);
+		}
 		//从大到小排序
 		List<ProfitCustomersSort> sortList = customersSortList.stream()
 			.sorted(Comparator.comparing(ProfitCustomersSort::getNumber).reversed())

+ 7 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/service/impl/BrandDescServiceImpl.java

@@ -19,6 +19,7 @@ package org.springblade.salesPart.brand.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
@@ -36,6 +37,7 @@ import org.springblade.salesPart.entity.PjBrandFiles;
 import org.springblade.salesPart.vo.BrandDescVO;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
+import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 
@@ -69,8 +71,11 @@ public class BrandDescServiceImpl extends ServiceImpl<BrandDescMapper, PjBrandDe
 		PjBrandDesc detail = baseMapper.selectById(brandDesc.getId());
 
 		if (ObjectUtil.isNotEmpty(detail.getCreateUser())) {
-			String userR = userClient.userInfoById(detail.getCreateUser()).getData().getRealName();
-			detail.setCreateUserName(userR);
+			R<User> res = userClient.userInfoById(detail.getCreateUser());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				String userR = res.getData().getRealName();
+				detail.setCreateUserName(userR);
+			}
 		}
 		//获取附件
 		detail.setBrandFilesList(brandFilesService.list(new QueryWrapper<PjBrandFiles>().eq("pid", detail.getId()).eq("is_deleted", 0)));

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

@@ -42,8 +42,6 @@ import org.springblade.pay.tonglianPayment.entity.Parameters;
 import org.springblade.pay.tonglianPayment.entity.WechatMark;
 import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
 import org.springblade.pay.tonglianPayment.fegin.ITongLianPaymentClient;
-import org.springblade.purchase.sales.entity.IntegralDetail;
-import org.springblade.purchase.sales.feign.IIntegralDetailClient;
 import org.springblade.salesPart.advancecharge.entity.AdvanceCharge;
 import org.springblade.salesPart.advancecharge.entity.AdvanceChargeItem;
 import org.springblade.salesPart.advancecharge.service.IAdvanceChargeItemService;
@@ -56,7 +54,6 @@ import org.springblade.salesPart.check.entity.PjAuditPathsLevels;
 import org.springblade.salesPart.check.service.IAuditPathsActsService;
 import org.springblade.salesPart.check.service.IAuditPathsLevelsService;
 import org.springblade.salesPart.check.service.IAuditProecessService;
-import org.springblade.salesPart.corps.mapper.CorpsAttnMapper;
 import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
 import org.springblade.salesPart.dto.FinancingProcurement;
 import org.springblade.salesPart.dto.SaleDetail;
@@ -4037,30 +4034,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							item.setRebatePrice(rebateInventoryCostPrice);
 						}
 						//计算成本
-						if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {//本地取库存账成本价
-							goodsName.append(goodsDesc.getCname()).append(",");
-							retrieval.append(goodsDesc.getCnameInt()).append(",");
-							item.setCostprie(item.getGoodsNum().multiply(inventoryCostPrice));
-							item.setCostpriePrice(inventoryCostPrice);
-							item.setRebateCostprie(item.getGoodsNum().multiply(rebateInventoryCostPrice));
-						} else {//共享仓取共享上架的共享成本
-							LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-							lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-								.eq(PjProductLaunch::getIsDeleted, 0)
-								.eq(PjProductLaunch::getGoodsId, item.getGoodsId())
-								.eq(PjProductLaunch::getBillType, "1")
-								.eq(PjProductLaunch::getUpAndDownShelves, "1")
-								.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
-								.eq(PjProductLaunch::getSourceCompanyId, order.getSharedCompanyId());
-							PjProductLaunch productLaunch = productLaunchService.getOne(lambdaQueryWrapper);
-							if (ObjectUtils.isNotNull(productLaunch)) {
-								item.setCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
-								item.setCostpriePrice(productLaunch.getShareCost());
-								item.setRebateCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
-							} else {
-								throw new RuntimeException("请维护共享商品成本价格");
-							}
-						}
+						goodsName.append(goodsDesc.getCname()).append(",");
+						retrieval.append(goodsDesc.getCnameInt()).append(",");
+						item.setCostprie(item.getGoodsNum().multiply(inventoryCostPrice));
+						item.setCostpriePrice(inventoryCostPrice);
+						item.setRebateCostprie(item.getGoodsNum().multiply(rebateInventoryCostPrice));
 						//计算毛利
 						item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
 						item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
@@ -4659,6 +4637,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 								throw new RuntimeException(res.getMsg());
 							}
 						}
+					}else{
+						throw new RuntimeException("商品:" + e.getGoodsName() + "未上架");
 					}
 				});
 			}

+ 6 - 11
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java

@@ -362,7 +362,7 @@ public class ProductLaunchController extends BladeController {
 		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return productLaunchService.importProductLaunch(excelList, false,whetherIntegral);
+		return productLaunchService.importProductLaunch(excelList, false, whetherIntegral);
 	}
 
 	/**
@@ -376,7 +376,7 @@ public class ProductLaunchController extends BladeController {
 		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return productLaunchService.importProductLaunchCode(excelList, false,whetherIntegral);
+		return productLaunchService.importProductLaunchCode(excelList, false, whetherIntegral);
 	}
 
 	/**
@@ -490,13 +490,8 @@ public class ProductLaunchController extends BladeController {
 			}
 			if (!stockDescList.isEmpty()) {
 				List<PjStockDesc> stockDescs = stockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
-				for (PjStockDesc desc : stockDescs) {
-					if (ObjectUtils.isNotNull(item.getRebatePrice())) {
-						item.setRebatePrice(item.getRebatePrice() + desc.getRebatePrice() + ",");
-					} else {
-						item.setRebatePrice(desc.getRebatePrice() + ",");
-					}
-					item.setRebatePrice(item.getRebatePrice().substring(0, item.getRebatePrice().length() - 1));
+				if (!stockDescs.isEmpty()) {
+					item.setRebatePrice(stockDescs.get(0).getRebatePrice() + "");
 				}
 			}
 		}
@@ -612,7 +607,7 @@ public class ProductLaunchController extends BladeController {
 		}
 		List<PjStockDesc> stockDescList = new ArrayList<>();
 		if ("1".equals(productLaunch.getWhetherIntegral())) {
-			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(productLaunch.getWhetherIntegral()),PjProductLaunch::getWhetherIntegral, productLaunch.getWhetherIntegral());
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(productLaunch.getWhetherIntegral()), PjProductLaunch::getWhetherIntegral, productLaunch.getWhetherIntegral());
 		} else {
 			String status = iSysClient.getParamService("whether.branch.management");
 			if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
@@ -627,7 +622,7 @@ public class ProductLaunchController extends BladeController {
 					}
 				}
 			}
-			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(productLaunch.getWhetherIntegral()),PjProductLaunch::getWhetherIntegral, productLaunch.getWhetherIntegral());
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(productLaunch.getWhetherIntegral()), PjProductLaunch::getWhetherIntegral, productLaunch.getWhetherIntegral());
 		}
 		String status = iSysClient.getParamService("whether.zero.inventory");
 		if (ObjectUtils.isNull(status) || "0".equals(status)) {

+ 0 - 30
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java

@@ -171,8 +171,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 			}
 			List<PjCorpsDesc> pjCorpsDescs = new ArrayList<>();
 			List<PjOrder> orderArrayList = new ArrayList<>();
-			List<PjOrder> orderIntegralList = new ArrayList<>();
-			List<PjOrder> orderRevokeIntegralList = new ArrayList<>();
 			BigDecimal thisAmount = new BigDecimal("0.00");
 			for (PjSettlementItems item : settlement.getSettlementItemsList()) {
 				item.setUpdateTime(new Date());
@@ -203,7 +201,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 					}
 					pjCorpsDescs.add(pjCorpsDesc);
 					pjOrder.setActualPaymentStatus(2);
-					orderIntegralList.add(pjOrder);
 				} else {
 					if ("XS".equals(item.getBusinesType()) || "CG".equals(item.getBusinesType())) {
 						if (ObjectUtils.isNotNull(pjOrder.getPaymentAmountTl())) {
@@ -220,9 +217,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 						thisAmount = thisAmount.add(item.getThisAmount());
 						if (pjOrder.getPaymentAmountTl().equals(pjOrder.getTotalMoney())) {
 							pjOrder.setActualPaymentStatus(2);
-							if ("XS".equals(item.getBusinesType())) {
-								orderIntegralList.add(pjOrder);
-							}
 						} else {
 							pjOrder.setActualPaymentStatus(3);
 						}
@@ -241,9 +235,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 						thisAmount = thisAmount.subtract(item.getThisRefundAmount());
 						if (pjOrder.getPaymentAmountTl().equals(pjOrder.getReturnsAmount())) {
 							pjOrder.setActualPaymentStatus(2);
-							if ("TKXS".equals(item.getBusinesType())) {
-								orderRevokeIntegralList.add(pjOrder);
-							}
 						} else {
 							pjOrder.setActualPaymentStatus(3);
 						}
@@ -278,12 +269,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 				}
 				accountManagementService.updateById(pjAccountManagement);
 			}
-			if (!orderIntegralList.isEmpty()) {
-				corpClient.updateIntegral(orderIntegralList);
-			}
-			if (!orderRevokeIntegralList.isEmpty()) {
-				corpClient.updateRevokeIntegral(orderIntegralList);
-			}
 		}
 		if ("d".equals(settlement.getDc())) {
 			settlement.setFinanceStatus(OrderTypeEnum.PAIDD.getType());
@@ -317,8 +302,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 			}
 			List<PjCorpsDesc> pjCorpsDescs = new ArrayList<>();
 			List<PjOrder> orderArrayList = new ArrayList<>();
-			List<PjOrder> orderIntegralList = new ArrayList<>();
-			List<PjOrder> orderRevokeIntegralList = new ArrayList<>();
 			BigDecimal thisAmount = new BigDecimal("0.00");
 			for (PjSettlementItems item : settlement.getSettlementItemsList()) {
 				item.setUpdateTime(new Date());
@@ -340,7 +323,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 					}
 					pjCorpsDescs.add(pjCorpsDesc);
 					pjOrder.setActualPaymentStatus(1);
-					orderRevokeIntegralList.add(pjOrder);
 				} else {
 					if ("XS".equals(item.getBusinesType()) || "CG".equals(item.getBusinesType())) {
 						if (ObjectUtils.isNotNull(pjOrder.getPaymentAmountTl())) {
@@ -354,9 +336,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 						} else {
 							pjOrder.setActualPaymentStatus(3);
 						}
-						if ("XS".equals(item.getBusinesType())) {
-							orderRevokeIntegralList.add(pjOrder);
-						}
 					} else if ("TKXS".equals(item.getBusinesType()) || "TKCG".equals(item.getBusinesType())) {
 						if (ObjectUtils.isNotNull(pjOrder.getPaymentAmountTl())) {
 							pjOrder.setPaymentAmountTl(pjOrder.getPaymentAmountTl().subtract(item.getThisRefundAmount()));
@@ -369,9 +348,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 						} else {
 							pjOrder.setActualPaymentStatus(3);
 						}
-						if ("TKXS".equals(item.getBusinesType())) {
-							orderIntegralList.add(pjOrder);
-						}
 					} else {
 						throw new RuntimeException("数据错误,请删除明细重新添加");
 					}
@@ -399,12 +375,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 				}
 				accountManagementService.updateById(pjAccountManagement);
 			}
-			if (!orderRevokeIntegralList.isEmpty()) {
-				corpClient.updateRevokeIntegral(orderRevokeIntegralList);
-			}
-			if (!orderIntegralList.isEmpty()) {
-				corpClient.updateIntegral(orderIntegralList);
-			}
 		}
 		if ("d".equals(settlement.getDc())) {
 			settlement.setFinanceStatus(OrderTypeEnum.WAITPAYMENTD.getType());

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

@@ -948,6 +948,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				orderMapper.updateById(order);
 			} else {
 				order.setStorageId(ship.getStorageId());
+				order.setStorageName(ship.getStorageName());
 				orderMapper.updateById(order);
 			}
 		}
@@ -1229,10 +1230,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				}
 			}
 		}*/
-		PjStorageDesc storageDesc = storageDescMapper.selectById(ship.getStorageId());
-		if (storageDesc == null) {
-			throw new RuntimeException("未找到仓库信息");
-		}
 		if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
 			String firstProportion = sysClient.getParamService("first.month.proportion");
 			String secondProportion = sysClient.getParamService("second.month.proportion");
@@ -1622,8 +1619,8 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().add(item.getSendNum()));
 					stockOne.setBalanceQuantityFinancing(stockOne.getBalanceQuantityFinancing().add(item.getSendNumFinancing()));
 					stockOne.setBalanceQuantityHave(stockOne.getBalanceQuantityHave().add(item.getSendNumHave()));
-					item.setSendNumHave(new BigDecimal("0"));
-					item.setSendNumFinancing(new BigDecimal("0"));
+//					item.setSendNumHave(new BigDecimal("0"));
+//					item.setSendNumFinancing(new BigDecimal("0"));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().add(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
 					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().add(item.getSendNum().multiply(stockOne.getRebatePrice())));
@@ -1925,11 +1922,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			item.setBondAmount(availableAmountSum.abs());
 			pjpfFundingItemService.save(item);
 		}*/
-		PjStorageDesc storageDesc = storageDescMapper.selectById(ship.getStorageId());
-		if (storageDesc == null) {
-			throw new RuntimeException("未找到仓库信息");
-		}
-		if (ObjectUtils.isNotNull(status) && "1".equals(status) && "1".equals(storageDesc.getWhetherFinancing())) {
+		if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
 			List<ShipItemsRecord> recordList = shipItemsRecordService.list(new LambdaQueryWrapper<ShipItemsRecord>()
 				.eq(ShipItemsRecord::getIsDeleted, 0)
 				.eq(ShipItemsRecord::getTenantId, AuthUtil.getTenantId())
@@ -1967,15 +1960,18 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.orderByAsc(PjOrder::getBusinesDate)
 			);
 			List<Long> ordIds = orderList.stream().map(PjOrder::getId).collect(Collectors.toList());
-			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.eq(PjOrderItems::getBizType, "RZCG")
-				.in(PjOrderItems::getPid, ordIds)
-				.in(PjOrderItems::getId, financingShipItemDtoList.stream().map(FinancingShipItemDto::getId).filter(Objects::nonNull)
-					.distinct().collect(Collectors.toList()))
-				.orderByAsc(PjOrderItems::getCreateTime)
-			);
+			List<PjOrderItems> orderItemsList = new ArrayList<>();
+			if (!ordIds.isEmpty()){
+				orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+					.eq(PjOrderItems::getIsDeleted, 0)
+					.eq(PjOrderItems::getBizType, "RZCG")
+					.in(PjOrderItems::getPid, ordIds)
+					.in(PjOrderItems::getId, financingShipItemDtoList.stream().map(FinancingShipItemDto::getId).filter(Objects::nonNull)
+						.distinct().collect(Collectors.toList()))
+					.orderByAsc(PjOrderItems::getCreateTime)
+				);
+			}
 			BigDecimal amount = new BigDecimal("0.00");
 			for (PjShipItems item : itemsList) {
 				if (new BigDecimal("0").compareTo(item.getSendNumFinancing()) != 0) {
@@ -2469,7 +2465,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				stockDesc.setSalesCompanyName(ship.getSalesCompanyName());
 				stockDesc.setGoodsTypeId(goodsDesc.getGoodsTypeId());
 				if (ObjectUtils.isNotNull(goodsDesc.getGoodsTypeId())) {
-
 					PjGoodsType goodsType = pjGoodsTypeList.stream().filter(e -> (e.getId() + "").equals(goodsDesc.getGoodsTypeId())).findFirst().orElse(null);
 					if (goodsType != null) {
 						stockDesc.setGoodsTypeName(goodsType.getCname());
@@ -3136,7 +3131,7 @@ 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));
@@ -3145,7 +3140,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						stockOne.setRebatePrice(new BigDecimal("0.00"));
 					} else {
 						stockOne.setRebatePrice(stockOne.getRebateInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-					}
+					}*/
 					stockOne.setVersion(stockOne.getVersion());
 					/*R res = iStockDescService.updateByIdNew(stockOne);
 					if (!res.isSuccess()) {
@@ -5229,7 +5224,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				stockDesc.setSalesCompanyName(ship.getSalesCompanyName());
 				stockDesc.setGoodsTypeId(goodsDesc.getGoodsTypeId());
 				if (ObjectUtils.isNotNull(goodsDesc.getGoodsTypeId())) {
-
 					PjGoodsType goodsType = pjGoodsTypeList.stream().filter(e -> (e.getId() + "").equals(goodsDesc.getGoodsTypeId())).findFirst().orElse(null);
 					if (goodsType != null) {
 						stockDesc.setGoodsTypeName(goodsType.getCname());
@@ -5275,15 +5269,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockDesc.setStoreInventory(item.getSendNum());
 					stockDesc.setInventoryAmount(item.getSendNum().multiply(item.getPrice()));
 					stockDesc.setRebateInventoryAmount(item.getSendNum().multiply(item.getRebatePrice()));
-					if (stockDesc.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
-//						BigDecimal amount = ObjectUtils.isNotNull(orderItems.getCostprie()) ? orderItems.getCostprie() : stockDesc.getInventoryAmount();
+					/*if (stockDesc.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
 						stockDesc.setInventoryCostPrice(stockDesc.getInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 						stockDesc.setRebatePrice(stockDesc.getRebateInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-//						stockDesc.setInventoryCostPrice(amount.divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 					} else {
 						stockDesc.setInventoryCostPrice(item.getPrice());
 						stockDesc.setRebatePrice(item.getRebatePrice());
-					}
+					}*/
 					pjStockDescArrayListSave.add(stockDesc);
 				} else {
 					stockDesc.setId(stockOne.getId());
@@ -5293,11 +5285,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockDesc.setBalanceQuantityHave(stockOne.getBalanceQuantityHave().add(item.getSendNum()));
 					stockDesc.setStoreInventory(stockDesc.getBalanceQuantity());
 					stockDesc.setInventoryAmount(stockOne.getInventoryAmount() == null ? new BigDecimal("0.00") : stockOne.getInventoryAmount().add(item.getCostprie()));
-					/*if (stockDesc.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
-//						BigDecimal amount = ObjectUtils.isNotNull(orderItems.getCostprie()) ? orderItems.getCostprie() : stockDesc.getInventoryAmount();
-						stockDesc.setInventoryCostPrice(stockDesc.getInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-//						stockDesc.setInventoryCostPrice(amount.divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
-					}*/
 					stockDesc.setVersion(stockOne.getVersion());
 					pjStockDescArrayListUpdate.add(stockDesc);
 				}
@@ -5387,6 +5374,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				orderMapper.updateById(order);
 			} else {
 				order.setStorageId(ship.getStorageId());
+				order.setDeliveryBusinesDate(new Date());
 				orderMapper.updateById(order);
 			}
 			OrderRecord orderRecord = new OrderRecordVO();

+ 55 - 9
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/impl/ApiServiceImpl.java

@@ -803,20 +803,38 @@ public class ApiServiceImpl implements ApiService {
 			List<TyreSaleSize> itemsList = saleSizeList.stream()
 				.sorted(Comparator.comparing(TyreSaleSize::getNumber).reversed())
 				.collect(Collectors.toList());
-			List<TyreSaleSize> sizeList = new ArrayList<>();
-			for (int i = 0; i <= 4; i++) {
-				sizeList.add(itemsList.get(i));
-			}
-			for (TyreSaleSize item : sizeList) {
+			Integer[] goodsSize = new Integer[]{15, 16, 17, 18, 19};
+			for (int i = 0; i < goodsSize.length; i++) {
 				Map<String, Object> map = new HashMap<>();
-				map.put("size", item.getSize());
-				map.put("number", item.getNumber());
+				int size = goodsSize[i];
+				if (goodsSize[i] == 15) {
+					map.put("size", goodsSize[i] + "寸-");
+					map.put("number", itemsList.stream().filter(e -> isNumeric(e.getSize()) && new BigDecimal(e.getSize()).compareTo(new BigDecimal(size + "")) <= 0)
+						.map(TyreSaleSize::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add));
+				} else if (goodsSize[i] == 19) {
+					map.put("size", goodsSize[i] + "寸+");
+					map.put("number", itemsList.stream().filter(e -> isNumeric(e.getSize()) && new BigDecimal(e.getSize()).compareTo(new BigDecimal(size + "")) >= 0)
+						.map(TyreSaleSize::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add));
+				} else {
+					map.put("size", goodsSize[i] + "寸");
+					map.put("number", itemsList.stream().filter(e -> isNumeric(e.getSize()) && e.getSize().equals(size + ""))
+						.map(TyreSaleSize::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add));
+				}
 				mapList.add(map);
 			}
 		}
 		return mapList;
 	}
 
+	public static boolean isNumeric(String str) {
+		try {
+			Integer.parseInt(str);
+			return true;
+		} catch (NumberFormatException e) {
+			return false;
+		}
+	}
+
 	@Override
 	public List<Map<String, Object>> tyreSaleSizeDetail(String tenantId) {
 		List<PjOrderItems> orderItemsList = orderItemsService.selectOrderItemsList(tenantId, "");
@@ -866,7 +884,35 @@ public class ApiServiceImpl implements ApiService {
 			List<TyreSaleSize> itemsList = saleSizeList.stream()
 				.sorted(Comparator.comparing(TyreSaleSize::getNumber).reversed())
 				.collect(Collectors.toList());
-			List<TyreSaleSize> sizeList = new ArrayList<>();
+			Integer[] goodsSize = new Integer[]{15, 16, 17, 18, 19};
+			for (int i = 0; i < goodsSize.length; i++) {
+				Map<String, Object> map = new HashMap<>();
+				int size = goodsSize[i];
+				BigDecimal number = new BigDecimal("0");
+				if (goodsSize[i] == 15) {
+					number = itemsList.stream().filter(e -> isNumeric(e.getSize()) && new BigDecimal(e.getSize()).compareTo(new BigDecimal(size + "")) <= 0)
+						.map(TyreSaleSize::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add);
+					map.put("size", goodsSize[i] + "寸-");
+				} else if (goodsSize[i] == 19) {
+					number = itemsList.stream().filter(e -> isNumeric(e.getSize()) && new BigDecimal(e.getSize()).compareTo(new BigDecimal(size + "")) >= 0)
+						.map(TyreSaleSize::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add);
+					map.put("size", goodsSize[i] + "寸+");
+				} else {
+					number = itemsList.stream().filter(e -> isNumeric(e.getSize()) && e.getSize().equals(size + ""))
+						.map(TyreSaleSize::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add);
+					map.put("size", goodsSize[i] + "寸");
+				}
+				map.put("number", number);
+				BigDecimal sumNumber = orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (new BigDecimal("0.00").compareTo(sumNumber) != 0) {
+					map.put("proportion", number.divide(sumNumber, 2, RoundingMode.HALF_UP)
+						.multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP) + "%");
+				} else {
+					map.put("proportion", "0%");
+				}
+				mapList.add(map);
+			}
+			/*List<TyreSaleSize> sizeList = new ArrayList<>();
 			for (int i = 0; i <= 4; i++) {
 				sizeList.add(itemsList.get(i));
 			}
@@ -882,7 +928,7 @@ public class ApiServiceImpl implements ApiService {
 					map.put("proportion", "0%");
 				}
 				mapList.add(map);
-			}
+			}*/
 		}
 		return mapList;
 	}

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

@@ -567,32 +567,47 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
-				.apply("find_in_set(ord_no,'" + billNo + "')"));
+				.apply("find_in_set(ord_no,'" + billNo + "')")
+				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
+				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
+				.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
+				.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd())
+			);
 			List<Long> pids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
-			List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.in(PjOrderItems::getPid, pids));
+			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
+			if (!pids.isEmpty()) {
+				pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+					.eq(PjOrderItems::getIsDeleted, 0)
+					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+					.in(PjOrderItems::getPid, pids));
+			}
 			for (PjOrder item : pjOrderList) {
 				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoIPage.getRecords().stream()
 					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
 				if (!saleDetailDtoList1.isEmpty()) {
-					BigDecimal amount = item.getPaymentAmountTl();
+					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())).map(PjOrderItems::getReturnsAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
+					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
 					amount = amount.abs();
 					for (SaleDetailDto items : saleDetailDtoList1) {
-						PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
-						if (orderItems != null) {
-							items.setGoodsNum(orderItems.getGoodsNum());
-							items.setPrice(orderItems.getPrice());
-							items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
-							items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getCostpriePrice()));
-							items.setProfit(items.getSubTotalMoney().subtract(items.getCostprie()));
-							items.setReturnsNumber(orderItems.getReturnsNumber());
-							items.setReturnsAmount(orderItems.getReturnsAmount());
-							items.setOutGoodsTotalShipNum(orderItems.getOutGoodsTotalShipNum());
-							items.setOutGoodsTotalShipAmount(orderItems.getOutGoodsTotalShipAmount());
-							items.setPrimaryGoodsTotalNum(orderItems.getPrimaryGoodsTotalNum());
-							items.setPrimaryGoodsTotalMoney(orderItems.getPrimaryGoodsTotalAmount());
+						if (!pjOrderItemsList.isEmpty()) {
+							PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
+							if (orderItems != null) {
+								items.setGoodsNum(orderItems.getGoodsNum());
+								items.setPrice(orderItems.getPrice());
+								items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+								if ("1".equals(saleDetailDto.getWhetherRebate())){
+									items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getRebatePrice()));
+								}else{
+									items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getCostpriePrice()));
+								}
+								items.setProfit(items.getSubTotalMoney().subtract(items.getCostprie()));
+								items.setReturnsNumber(orderItems.getReturnsNumber());
+								items.setReturnsAmount(orderItems.getReturnsAmount());
+								items.setOutGoodsTotalShipNum(orderItems.getOutGoodsTotalShipNum());
+								items.setOutGoodsTotalShipAmount(orderItems.getOutGoodsTotalShipAmount());
+								items.setPrimaryGoodsTotalNum(orderItems.getPrimaryGoodsTotalNum());
+								items.setPrimaryGoodsTotalMoney(orderItems.getPrimaryGoodsTotalAmount());
+							}
 						}
 						if ("已取消".equals(items.getStatus())) {
 							items.setBalanceAmount(new BigDecimal("0.00"));
@@ -610,9 +625,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 									items.setBalanceAmount(new BigDecimal("0.00").subtract(items.getSubTotalMoney().abs().subtract(amount)));
 									amount = new BigDecimal("0.00");
 								}
-								items.setGoodsNum(new BigDecimal("0.00").subtract(items.getGoodsNum()));
+								items.setGoodsNum(new BigDecimal("0.00").subtract(items.getReturnsNumber()));
 								items.setProfit(new BigDecimal("0.00").subtract(items.getProfit()));
-								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getSubTotalMoney()));
+								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getReturnsAmount()));
 								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
 								items.setCostprie(new BigDecimal("0.00").subtract(items.getCostprie()));
 							} else {
@@ -645,37 +660,54 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
-				.apply("find_in_set(ord_no,'" + billNo + "')"));
+				.apply("find_in_set(ord_no,'" + billNo + "')")
+				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
+				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
+				.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
+				.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd())
+			);
 			List<Long> pids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
-			List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.in(PjOrderItems::getPid, pids));
+			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
+			if (!pids.isEmpty()) {
+				pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+					.eq(PjOrderItems::getIsDeleted, 0)
+					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+					.in(PjOrderItems::getPid, pids));
+			}
 			for (PjOrder item : pjOrderList) {
 				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoList.stream()
 					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
 				if (!saleDetailDtoList1.isEmpty()) {
-					BigDecimal amount = item.getPaymentAmountTl();
+					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())).map(PjOrderItems::getReturnsAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
+					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
 					amount = amount.abs();
 					for (SaleDetailDto items : saleDetailDtoList1) {
-						PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
-						if (orderItems != null) {
-							items.setGoodsNum(orderItems.getGoodsNum());
-							items.setPrice(orderItems.getPrice());
-							items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
-							items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getCostpriePrice()));
-							items.setProfit(items.getSubTotalMoney().subtract(items.getCostprie()));
-							items.setReturnsNumber(orderItems.getReturnsNumber());
-							items.setReturnsAmount(orderItems.getReturnsAmount());
-							items.setOutGoodsTotalShipNum(orderItems.getOutGoodsTotalShipNum());
-							items.setOutGoodsTotalShipAmount(orderItems.getOutGoodsTotalShipAmount());
-							items.setPrimaryGoodsTotalNum(orderItems.getPrimaryGoodsTotalNum());
-							items.setPrimaryGoodsTotalMoney(orderItems.getPrimaryGoodsTotalAmount());
+						if (!pjOrderItemsList.isEmpty()) {
+							PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
+							if (orderItems != null) {
+								items.setGoodsNum(orderItems.getGoodsNum());
+								items.setPrice(orderItems.getPrice());
+								items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+								if ("1".equals(saleDetailDto.getWhetherRebate())){
+									items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getRebatePrice()));
+								}else{
+									items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getCostpriePrice()));
+								}
+								items.setProfit(items.getSubTotalMoney().subtract(items.getCostprie()));
+								items.setReturnsNumber(orderItems.getReturnsNumber());
+								items.setReturnsAmount(orderItems.getReturnsAmount());
+								items.setOutGoodsTotalShipNum(orderItems.getOutGoodsTotalShipNum());
+								items.setOutGoodsTotalShipAmount(orderItems.getOutGoodsTotalShipAmount());
+								items.setPrimaryGoodsTotalNum(orderItems.getPrimaryGoodsTotalNum());
+								items.setPrimaryGoodsTotalMoney(orderItems.getPrimaryGoodsTotalAmount());
+							}
 						}
 						if ("已取消".equals(items.getStatus())) {
 							items.setBalanceAmount(new BigDecimal("0.00"));
 						} else {
 							if ("TKXS".equals(item.getBsType())) {
+								items.setGoodsNum(new BigDecimal("0.00").subtract(items.getReturnsNumber()));
+								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getReturnsAmount()));
 //								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
 								if (amount.compareTo(items.getSubTotalMoney().abs()) >= 0) {
 									items.setBalanceAmount(new BigDecimal("0.00"));
@@ -700,69 +732,69 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				}
 			}
 			BigDecimal goodsNumCancel = saleDetailDtoList.stream().filter(e -> "已取消".equals(e.getStatus()))
-				.map(SaleDetailDto::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 			BigDecimal subTotalMoneyCancel = saleDetailDtoList.stream().filter(e -> "已取消".equals(e.getStatus()))
-				.map(SaleDetailDto::getSubTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 			BigDecimal costprieCancel = saleDetailDtoList.stream().filter(e -> "已取消".equals(e.getStatus()))
-				.map(SaleDetailDto::getCostprie).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 			BigDecimal profitCancel = saleDetailDtoList.stream().filter(e -> "已取消".equals(e.getStatus()))
-				.map(SaleDetailDto::getProfit).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 			BigDecimal freightCancel = pjOrderList.stream().filter(e -> "已取消".equals(e.getStatus()))
-				.map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(PjOrder::getFreight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 
 			BigDecimal goodsNumActual = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal subTotalMoneyActual = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getSubTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal costprieActual = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getCostprie).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal profitActual = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getProfit).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal freight = pjOrderList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(PjOrder::getFreight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal outGoodsTotalShipNum = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getOutGoodsTotalShipNum).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getOutGoodsTotalShipNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal outGoodsTotalShipAmount = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getOutGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getOutGoodsTotalShipAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal primaryGoodsTotalNum = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getPrimaryGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getPrimaryGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal primaryGoodsTotalMoney = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getPrimaryGoodsTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getPrimaryGoodsTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal surplusNum = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getSurplusNum).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getSurplusNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 			BigDecimal surplusAmount = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getSurplusAmount).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getSurplusAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP);
 
 			BigDecimal freightReturns = pjOrderList.stream().filter(e -> "已完成".equals(e.getStatus()))
-				.map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(PjOrder::getFreight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 			BigDecimal goodsNumReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 			BigDecimal subTotalMoneyReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getSubTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 			BigDecimal costprieReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getCostprie).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 			BigDecimal profitReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getProfit).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.map(SaleDetailDto::getProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 				.setScale(0, RoundingMode.HALF_UP).abs();
 
 			if ("TKXS".equals(saleDetailDto.getBsType()) || "TKCG".equals(saleDetailDto.getBsType())) {
@@ -851,32 +883,47 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
-				.apply("find_in_set(ord_no,'" + billNo + "')"));
+				.apply("find_in_set(ord_no,'" + billNo + "')")
+				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
+				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
+				.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
+				.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd())
+			);
 			List<Long> pids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
-			List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.in(PjOrderItems::getPid, pids));
+			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
+			if (!pids.isEmpty()) {
+				pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+					.eq(PjOrderItems::getIsDeleted, 0)
+					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+					.in(PjOrderItems::getPid, pids));
+			}
 			for (PjOrder item : pjOrderList) {
 				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoIPage.stream()
 					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
 				if (!saleDetailDtoList1.isEmpty()) {
-					BigDecimal amount = item.getPaymentAmountTl();
+					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())).map(PjOrderItems::getReturnsAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
+					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
 					amount = amount.abs();
 					for (SaleDetailDto items : saleDetailDtoList1) {
-						PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
-						if (orderItems != null) {
-							items.setGoodsNum(orderItems.getGoodsNum());
-							items.setPrice(orderItems.getPrice());
-							items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
-							items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getCostpriePrice()));
-							items.setProfit(items.getSubTotalMoney().subtract(items.getCostprie()));
-							items.setReturnsNumber(orderItems.getReturnsNumber());
-							items.setReturnsAmount(orderItems.getReturnsAmount());
-							items.setOutGoodsTotalShipNum(orderItems.getOutGoodsTotalShipNum());
-							items.setOutGoodsTotalShipAmount(orderItems.getOutGoodsTotalShipAmount());
-							items.setPrimaryGoodsTotalNum(orderItems.getPrimaryGoodsTotalNum());
-							items.setPrimaryGoodsTotalMoney(orderItems.getPrimaryGoodsTotalAmount());
+						if (!pjOrderItemsList.isEmpty()) {
+							PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
+							if (orderItems != null) {
+								items.setGoodsNum(orderItems.getGoodsNum());
+								items.setPrice(orderItems.getPrice());
+								items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+								if ("1".equals(saleDetailDto.getWhetherRebate())){
+									items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getRebatePrice()));
+								}else{
+									items.setCostprie(orderItems.getGoodsNum().multiply(orderItems.getCostpriePrice()));
+								}
+								items.setProfit(items.getSubTotalMoney().subtract(items.getCostprie()));
+								items.setReturnsNumber(orderItems.getReturnsNumber());
+								items.setReturnsAmount(orderItems.getReturnsAmount());
+								items.setOutGoodsTotalShipNum(orderItems.getOutGoodsTotalShipNum());
+								items.setOutGoodsTotalShipAmount(orderItems.getOutGoodsTotalShipAmount());
+								items.setPrimaryGoodsTotalNum(orderItems.getPrimaryGoodsTotalNum());
+								items.setPrimaryGoodsTotalMoney(orderItems.getPrimaryGoodsTotalAmount());
+							}
 						}
 						if ("已取消".equals(items.getStatus())) {
 							items.setBalanceAmount(new BigDecimal("0.00"));
@@ -894,9 +941,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 									items.setBalanceAmount(new BigDecimal("0.00").subtract(items.getSubTotalMoney().abs().subtract(amount)));
 									amount = new BigDecimal("0.00");
 								}
-								items.setGoodsNum(new BigDecimal("0.00").subtract(items.getGoodsNum()));
+								items.setGoodsNum(new BigDecimal("0.00").subtract(items.getReturnsNumber()));
+								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getReturnsAmount()));
 								items.setProfit(new BigDecimal("0.00").subtract(items.getProfit()));
-								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getSubTotalMoney()));
 								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
 								items.setCostprie(new BigDecimal("0.00").subtract(items.getCostprie()));
 							} else {
@@ -932,7 +979,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.apply(" find_in_set(bs_type,'XS,TKXS')")
-			.apply(" find_in_set(status,'已发货,已取消,已完成')")
+			.apply(" find_in_set(status,'已发货,已取消,已完成,已收货')")
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getCustomerName()), PjOrder::getCustomerName, saleDetailDto.getCustomerName())
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getSalerName()), PjOrder::getSalerName, saleDetailDto.getSalerName())
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
@@ -961,7 +1008,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.apply(" find_in_set(bs_type,'XS,TKXS')")
-				.apply(" find_in_set(status,'已发货,已取消,已完成')")
+				.apply(" find_in_set(status,'已发货,已取消,已完成,已收货')")
 				.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
@@ -1010,14 +1057,24 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					BigDecimal salesProfit = new BigDecimal("0");
 					for (PjOrderItems items : itemsList) {
 						BigDecimal subAmount = items.getGoodsNum().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getGoodsNum().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.add(subAmount);
 						salesQuantity = salesQuantity.add(items.getGoodsNum());
 						salesProfit = salesProfit.add(subAmount.subtract(subCostprie));
 					}
 					for (PjOrderItems items : itemsListR) {
 						BigDecimal subAmount = items.getGoodsNum().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getGoodsNum().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.subtract(subAmount);
 						salesQuantity = salesQuantity.subtract(items.getGoodsNum());
 						returnAmount = returnAmount.add(subAmount);
@@ -1026,7 +1083,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					}
 					for (PjOrderItems items : itemsListTK) {
 						BigDecimal subAmount = items.getReturnsNumber().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getReturnsNumber().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.subtract(subAmount);
 						salesQuantity = salesQuantity.subtract(items.getReturnsNumber());
 						returnAmount = returnAmount.add(subAmount);
@@ -1070,7 +1132,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.apply(" find_in_set(bs_type,'XS,TKXS')")
-			.apply(" find_in_set(status,'已发货,已取消,已完成')")
+			.apply(" find_in_set(status,'已发货,已取消,已完成,已收货')")
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getCustomerName()), PjOrder::getCustomerName, saleDetailDto.getCustomerName())
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getSalerName()), PjOrder::getSalerName, saleDetailDto.getSalerName())
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
@@ -1097,7 +1159,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.apply(" find_in_set(bs_type,'XS,TKXS')")
-				.apply(" find_in_set(status,'已发货,已取消,已完成')")
+				.apply(" find_in_set(status,'已发货,已取消,已完成,已收货')")
 				.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
@@ -1139,14 +1201,24 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					List<PjOrderItems> itemsListTK = pjOrderItemsList.stream().filter(e -> idListTK.contains(e.getPid())).collect(Collectors.toList());
 					for (PjOrderItems items : itemsList) {
 						BigDecimal subAmount = items.getGoodsNum().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getGoodsNum().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.add(subAmount);
 						salesQuantity = salesQuantity.add(items.getGoodsNum());
 						salesProfit = salesProfit.add(subAmount.subtract(subCostprie));
 					}
 					for (PjOrderItems items : itemsListR) {
 						BigDecimal subAmount = items.getGoodsNum().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getGoodsNum().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.subtract(subAmount);
 						salesQuantity = salesQuantity.subtract(items.getGoodsNum());
 						returnAmount = returnAmount.add(subAmount);
@@ -1155,7 +1227,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					}
 					for (PjOrderItems items : itemsListTK) {
 						BigDecimal subAmount = items.getReturnsNumber().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getReturnsNumber().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.subtract(subAmount);
 						salesQuantity = salesQuantity.subtract(items.getReturnsNumber());
 						returnAmount = returnAmount.add(subAmount);
@@ -1187,7 +1264,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.apply(" find_in_set(bs_type,'XS,TKXS')")
-			.apply(" find_in_set(status,'已发货,已取消,已完成')")
+			.apply(" find_in_set(status,'已发货,已取消,已完成,已收货')")
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getCustomerName()), PjOrder::getCustomerName, saleDetailDto.getCustomerName())
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getSalerName()), PjOrder::getSalerName, saleDetailDto.getSalerName())
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
@@ -1215,7 +1292,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.apply(" find_in_set(bs_type,'XS,TKXS')")
-				.apply(" find_in_set(status,'已发货,已取消,已完成')")
+				.apply(" find_in_set(status,'已发货,已取消,已完成,已收货')")
 				.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
@@ -1264,14 +1341,24 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					BigDecimal salesProfit = new BigDecimal("0");
 					for (PjOrderItems items : itemsList) {
 						BigDecimal subAmount = items.getGoodsNum().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getGoodsNum().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.add(subAmount);
 						salesQuantity = salesQuantity.add(items.getGoodsNum());
 						salesProfit = salesProfit.add(subAmount.subtract(subCostprie));
 					}
 					for (PjOrderItems items : itemsListR) {
 						BigDecimal subAmount = items.getGoodsNum().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getGoodsNum().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getGoodsNum().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.subtract(subAmount);
 						salesQuantity = salesQuantity.subtract(items.getGoodsNum());
 						returnAmount = returnAmount.add(subAmount);
@@ -1280,7 +1367,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					}
 					for (PjOrderItems items : itemsListTK) {
 						BigDecimal subAmount = items.getReturnsNumber().multiply(items.getPrice());
-						BigDecimal subCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+						BigDecimal subCostprie;
+						if ("1".equals(saleDetailDto.getWhetherRebate())){
+							subCostprie = items.getReturnsNumber().multiply(items.getRebatePrice());
+						}else{
+							subCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+						}
 						salesAmount = salesAmount.subtract(subAmount);
 						salesQuantity = salesQuantity.subtract(items.getReturnsNumber());
 						returnAmount = returnAmount.add(subAmount);
@@ -1311,67 +1403,33 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			map.put("totalMoney", totalMoney);
 			map.put("fundingAmount", fundingAmount);
 			map.put("bondAmount", totalMoney.subtract(fundingAmount));
-			PjpfFunding funding = pjpfFundingService.getOne(new LambdaQueryWrapper<PjpfFunding>()
-				.eq(PjpfFunding::getIsDeleted, 0)
-				.eq(PjpfFunding::getTenantId, AuthUtil.getTenantId())
-				.last("limit 1"));
-			if (funding != null) {
-				map.put("amount", funding.getAvailableAmount());
-				map.put("interest", funding.getInterest());
-			} else {
-				map.put("amount", "0.00");
-				map.put("interest", "0.00");
-			}
-			List<PjpfBalanceReset> balanceResetList = pjpfBalanceResetService.list(new LambdaQueryWrapper<PjpfBalanceReset>()
-				.eq(PjpfBalanceReset::getIsDeleted, 0)
-				.eq(PjpfBalanceReset::getTenantId, AuthUtil.getTenantId())
-				.eq(PjpfBalanceReset::getStatus, 1)
-				.apply("DATE_FORMAT(confirming_person_date,'%Y') = '" + date + "'")
-			);
-			if (!balanceResetList.isEmpty()) {
-				map.put("repayment", balanceResetList.stream().map(PjpfBalanceReset::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
-			} else {
-				map.put("repayment", "0.00");
-			}
 		} else {
 			map.put("totalMoney", "0.00");
 			map.put("fundingAmount", "0.00");
 			map.put("bondAmount", "0.00");
-			map.put("amount", "0.00");
-			map.put("interest", "0.00");
+		}
+		List<PjpfBalanceReset> balanceResetList = pjpfBalanceResetService.list(new LambdaQueryWrapper<PjpfBalanceReset>()
+			.eq(PjpfBalanceReset::getIsDeleted, 0)
+			.eq(PjpfBalanceReset::getTenantId, AuthUtil.getTenantId())
+			.eq(PjpfBalanceReset::getStatus, 1)
+			.apply("DATE_FORMAT(confirming_person_date,'%Y') = '" + date + "'")
+		);
+		if (!balanceResetList.isEmpty()) {
+			map.put("repayment", balanceResetList.stream().map(PjpfBalanceReset::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+		} else {
 			map.put("repayment", "0.00");
 		}
-
-		/*List<PjpfFunding> fundingList = pjpfFundingService.list(new LambdaQueryWrapper<PjpfFunding>()
+		PjpfFunding funding = pjpfFundingService.getOne(new LambdaQueryWrapper<PjpfFunding>()
+			.eq(PjpfFunding::getIsDeleted, 0)
 			.eq(PjpfFunding::getTenantId, AuthUtil.getTenantId())
-			.eq(PjpfFunding::getIsDeleted, 0));
-		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("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)
-					.apply("FIND_IN_SET(status,'待收货,已收货')"))
-				.stream().map(PjOrder::getGoodsTotalShipAmount).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));
+			.last("limit 1"));
+		if (funding != null) {
+			map.put("amount", funding.getAvailableAmount());
+			map.put("interest", funding.getInterest());
 		} else {
-			map.put("corpName", "");
-			map.put("surplusFundingAmount", "0.00");
-			map.put("bondAmount", "0.00");
-			map.put("availableAmount", "0.00");
-			map.put("sumAmount", "0.00");
-			map.put("primaryFundingAmount", "0.00");
-		}*/
+			map.put("amount", "0.00");
+			map.put("interest", "0.00");
+		}
 		return R.data(map);
 	}
 

+ 37 - 37
blade-service/blade-sales-part/src/main/resources/log/logback-dev.xml

@@ -58,56 +58,56 @@
     </if>
 
     <!-- 日志输出级别 -->
-    <root level="info">
+    <root level="ERROR">
         <appender-ref ref="STDOUT"/>
         <appender-ref ref="${STDOUT_APPENDER}"/>
     </root>
 
-    <logger name="net.sf.ehcache" level="info"/>
-    <logger name="druid.sql" level="info"/>
+    <logger name="net.sf.ehcache" level="ERROR"/>
+    <logger name="druid.sql" level="ERROR"/>
 
 
     <!-- MyBatis log configure -->
-    <logger name="com.apache.ibatis" level="info"/>
-    <logger name="org.mybatis.spring" level="info"/>
-    <logger name="java.sql.Connection" level="info"/>
-    <logger name="java.sql.Statement" level="info"/>
-    <logger name="java.sql.PreparedStatement" level="info"/>
+    <logger name="com.apache.ibatis" level="ERROR"/>
+    <logger name="org.mybatis.spring" level="ERROR"/>
+    <logger name="java.sql.Connection" level="ERROR"/>
+    <logger name="java.sql.Statement" level="ERROR"/>
+    <logger name="java.sql.PreparedStatement" level="ERROR"/>
 
     <!-- 减少部分debug日志 -->
-    <logger name="druid.sql" level="info"/>
-    <logger name="org.apache.shiro" level="info"/>
-    <logger name="org.mybatis.spring" level="info"/>
-    <logger name="org.springframework" level="info"/>
-    <logger name="org.springframework.context" level="info"/>
-    <logger name="org.springframework.beans" level="info"/>
-    <logger name="com.baomidou.mybatisplus" level="info"/>
-    <logger name="org.apache.ibatis.io" level="info"/>
-    <logger name="org.apache.velocity" level="info"/>
-    <logger name="org.eclipse.jetty" level="info"/>
-    <logger name="io.undertow" level="info"/>
-    <logger name="org.xnio.nio" level="info"/>
-    <logger name="org.thymeleaf" level="info"/>
-    <logger name="springfox.documentation" level="info"/>
-    <logger name="org.hibernate.validator" level="info"/>
-    <logger name="com.netflix.loadbalancer" level="info"/>
-    <logger name="com.netflix.hystrix" level="info"/>
-    <logger name="com.netflix.zuul" level="info"/>
-    <logger name="de.codecentric" level="info"/>
-    <!-- cache info -->
-    <logger name="net.sf.ehcache" level="info"/>
-    <logger name="org.springframework.cache" level="info"/>
+    <logger name="druid.sql" level="ERROR"/>
+    <logger name="org.apache.shiro" level="ERROR"/>
+    <logger name="org.mybatis.spring" level="ERROR"/>
+    <logger name="org.springframework" level="ERROR"/>
+    <logger name="org.springframework.context" level="ERROR"/>
+    <logger name="org.springframework.beans" level="ERROR"/>
+    <logger name="com.baomidou.mybatisplus" level="ERROR"/>
+    <logger name="org.apache.ibatis.io" level="ERROR"/>
+    <logger name="org.apache.velocity" level="ERROR"/>
+    <logger name="org.eclipse.jetty" level="ERROR"/>
+    <logger name="io.undertow" level="ERROR"/>
+    <logger name="org.xnio.nio" level="ERROR"/>
+    <logger name="org.thymeleaf" level="ERROR"/>
+    <logger name="springfox.documentation" level="ERROR"/>
+    <logger name="org.hibernate.validator" level="ERROR"/>
+    <logger name="com.netflix.loadbalancer" level="ERROR"/>
+    <logger name="com.netflix.hystrix" level="ERROR"/>
+    <logger name="com.netflix.zuul" level="ERROR"/>
+    <logger name="de.codecentric" level="ERROR"/>
+    <!-- cache ERROR -->
+    <logger name="net.sf.ehcache" level="ERROR"/>
+    <logger name="org.springframework.cache" level="ERROR"/>
     <!-- cloud -->
-    <logger name="org.apache.http" level="info"/>
-    <logger name="com.netflix.discovery" level="info"/>
-    <logger name="com.netflix.eureka" level="info"/>
+    <logger name="org.apache.http" level="ERROR"/>
+    <logger name="com.netflix.discovery" level="ERROR"/>
+    <logger name="com.netflix.eureka" level="ERROR"/>
     <!-- 业务日志 -->
-    <Logger name="org.springblade" level="info"/>
-    <Logger name="org.springblade.core.tenant" level="info"/>
-    <Logger name="org.springblade.core.version" level="info"/>
+    <Logger name="org.springblade" level="ERROR"/>
+    <Logger name="org.springblade.core.tenant" level="ERROR"/>
+    <Logger name="org.springblade.core.version" level="ERROR"/>
 
     <!-- 减少nacos日志 -->
-    <logger name="com.alibaba.nacos" level="info"/>
+    <logger name="com.alibaba.nacos" level="ERROR"/>
 
 
 </configuration>