فهرست منبع

2025年2月6日17:07:32

纪新园 10 ماه پیش
والد
کامیت
e060beb33f

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

@@ -609,7 +609,6 @@ public class OrderController extends BladeController {
 		lambdaQueryWrapper.select(PjOrder::getSrcOrdNo);
 		lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
-			.eq(PjOrder::getBsType, "XS")
 			.apply("find_in_set(bs_type,'XS,GX')")
 			.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.eq(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus())//状态
@@ -629,7 +628,7 @@ public class OrderController extends BladeController {
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getBsType, "XS")
-				.in(PjOrder::getSrcOrdNo, pages.getRecords().stream().map(PjOrder::getSrcOrdNo)));
+				.in(PjOrder::getSrcOrdNo, pages.getRecords().stream().map(PjOrder::getSrcOrdNo).collect(Collectors.toList())));
 			if (!orderList.isEmpty()) {
 				ids.addAll(orderList.stream().map(PjOrder::getId).collect(Collectors.toList()));
 			}
@@ -637,7 +636,7 @@ public class OrderController extends BladeController {
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getBsType, "GX")
-				.in(PjOrder::getSrcOrdNo, pages.getRecords().stream().map(PjOrder::getSrcOrdNo)));
+				.in(PjOrder::getSrcOrdNo, pages.getRecords().stream().map(PjOrder::getSrcOrdNo).collect(Collectors.toList())));
 			if (!orderShareList.isEmpty()) {
 				ids.addAll(orderShareList.stream().map(PjOrder::getId).collect(Collectors.toList()));
 			}

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

@@ -6092,9 +6092,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			auditProecessDTO.setCorpId(declare.getCustomerId());
 			if ("1".equals(status) && !pjOrderShareList.isEmpty()) {
 				pjOrderListNew.addAll(pjOrderShareList);
-				auditProecessDTO.setOrderQuantity(pjOrderListNew.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
-				auditProecessDTO.setAmount(pjOrderListNew.stream().map(PjOrder::getTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add));
-				auditProecessDTO.setGrossProfit(pjOrderListNew.stream().map(PjOrder::getGrossProfit).reduce(BigDecimal.ZERO, BigDecimal::add));
+				auditProecessDTO.setOrderQuantity(pjOrderListNew.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				auditProecessDTO.setAmount(pjOrderListNew.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				auditProecessDTO.setGrossProfit(pjOrderListNew.stream().map(PjOrder::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				auditProecessDTO.setBillNo(declare.getSrcOrdNo());//业务编号
 				auditProecessDTO.setOrderRemark("共享销售退款");
 			} else {
@@ -6149,7 +6149,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getBsType, "GX"));
 			if (!orderShareList.isEmpty()) {
-				orderListNew.addAll(orderShareList);
+				List<Long> ids = orderListNew.stream().map(PjOrder::getId).collect(Collectors.toList());
+				for (PjOrder item : orderShareList) {
+					if (!ids.contains(item.getId())) {
+						orderListNew.add(item);
+					}
+				}
 			}
 		}
 		List<Long> goodsIds = new ArrayList<>();
@@ -6253,8 +6258,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					pjShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					pjShip.setCreateUser(AuthUtil.getUserId());
 					pjShip.setCreateTime(new Date());
-					pjShip.setGoodsTotalNum(orderListNew.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
-					pjShip.setGoodsTotalShipAmount(orderListNew.stream().map(PjOrder::getGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+					pjShip.setGoodsTotalNum(orderListNew.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					pjShip.setGoodsTotalShipAmount(orderListNew.stream().map(PjOrder::getGoodsTotalShipAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 					shipMapper.insert(pjShip);
 					String status = sysClient.getParamService("whether.financing");
 					if (ObjectUtil.isNotEmpty(list)) {
@@ -6297,9 +6302,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							shipItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 							List<PjOrderItems> orderItemsList1 = list.stream().filter(i -> i.getGoodsNo().equals(e.getGoodsNo())).collect(Collectors.toList());
 							if (!orderItemsList1.isEmpty()) {
-								shipItems.setSendNum(orderItemsList1.stream().map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO, BigDecimal::add));
-								shipItems.setGoodsNum(orderItemsList1.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add));
-								shipItems.setCostprie(orderItemsList1.stream().map(PjOrderItems::getCostprie).reduce(BigDecimal.ZERO, BigDecimal::add));
+								shipItems.setSendNum(orderItemsList1.stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+								shipItems.setGoodsNum(orderItemsList1.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+								shipItems.setCostprie(orderItemsList1.stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 								if (shipItems.getCostprie().compareTo(new BigDecimal("0.00")) != 0 &&
 									shipItems.getGoodsNum().compareTo(new BigDecimal("0.00")) != 0) {
 									shipItems.setPrice(shipItems.getCostprie().divide(shipItems.getGoodsNum(), 2, RoundingMode.HALF_UP));
@@ -6417,7 +6422,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					order.setStatus("待确认");
 					order.setXcxStatus("待确认");
 				} else {
-					BigDecimal amount = orderListNew.stream().map(PjOrder::getPaymentAmountTl).reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal amount = orderListNew.stream().map(PjOrder::getPaymentAmountTl).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 					R<Map<String, String>> r = payService.refund(order.getId(), amount, order.getOrdNo(), order.getSrcOrdNo(), order.getOldTrxId());
 					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 						Map<String, String> map = r.getData();

+ 6 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/controller/SharePutOnShelvesController.java

@@ -237,7 +237,7 @@ public class SharePutOnShelvesController extends BladeController {
 			.eq(ObjectUtils.isNotNull(sharePutOnShelves.getShareStatus()), SharePutOnShelves::getShareStatus, sharePutOnShelves.getShareStatus())
 		;
 		List<SharePutOnShelves> sharePutOnShelvesList = sharePutOnShelvesService.list(lambdaQueryWrapper);
-		ExcelUtil.export(response, "共享上架数据", "数据表", BeanUtil.copy(sharePutOnShelvesList, SharePutOnShelvesDataExcel.class), SharePutOnShelvesDataExcel.class);
+		ExcelUtil.export(response, "共享管理数据", "数据表", BeanUtil.copy(sharePutOnShelvesList, SharePutOnShelvesDataExcel.class), SharePutOnShelvesDataExcel.class);
 	}
 
 	/**
@@ -249,18 +249,18 @@ public class SharePutOnShelvesController extends BladeController {
 	}
 
 	/**
-	 * 导出共享商品模板  Excel
+	 * 共享管理-导出共享商品模板  Excel
 	 */
 	@GetMapping("/exportShareProductLaunch")
 	@ApiOperationSupport(order = 10)
 	@ApiOperation(value = "导出模板")
 	public void exportShareProductLaunch(HttpServletResponse response) {
 		List<SharePutOnShelvesImportExcel> list = new ArrayList<>();
-		ExcelUtil.export(response, "导入模板-共享上架", "导入数据表", list, SharePutOnShelvesImportExcel.class);
+		ExcelUtil.export(response, "导入模板-共享管理", "导入数据表", list, SharePutOnShelvesImportExcel.class);
 	}
 
 	/**
-	 * 共享商品导入共享上架  Excel
+	 * 共享管理-导入共享上架  Excel
 	 */
 	@PostMapping("/importShareProductLaunch")
 	@ApiOperationSupport(order = 9)
@@ -274,7 +274,7 @@ public class SharePutOnShelvesController extends BladeController {
 	}
 
 	/**
-	 * 导出次日达共享数据
+	 * 导出次日达共享数据模板
 	 */
 	@GetMapping("/exportShareTheNextDayData")
 	@ApiOperationSupport(order = 10)
@@ -311,6 +311,7 @@ public class SharePutOnShelvesController extends BladeController {
 			shareTheNextDayDataExcel.setPriceThree(item.getPriceThree());
 			shareTheNextDayDataExcel.setPriceFour(item.getPriceFour());
 			shareTheNextDayDataExcel.setSrcSalesCompanyName(item.getSrcSalesCompanyName());
+			shareTheNextDayDataExcel.setSrcSalesCompanyId(item.getSrcSalesCompanyId()+"");
 			shareTheNextDayDataExcel.setSrcId(item.getId() + "");
 			shareTheNextDayDataExcelList.add(shareTheNextDayDataExcel);
 		}

+ 6 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/service/impl/SharePutOnShelvesServiceImpl.java

@@ -656,7 +656,7 @@ public class SharePutOnShelvesServiceImpl extends ServiceImpl<SharePutOnShelvesM
 				sharePutOnShelves.setSalesCompanyId(item.getSalesCompanyId());
 				sharePutOnShelves.setSalesCompanyName(item.getSalesCompanyName());
 				sharePutOnShelves.setInventory(item.getInventory());
-				sharePutOnShelves.setShareCost(item.getShareCost());
+				sharePutOnShelves.setShareCost(excel.getShareCost());
 				sharePutOnShelves.setPriceOne(item.getPriceOne());
 				sharePutOnShelves.setPriceTwo(item.getPriceTwo());
 				sharePutOnShelves.setPriceThree(item.getPriceThree());
@@ -785,13 +785,15 @@ public class SharePutOnShelvesServiceImpl extends ServiceImpl<SharePutOnShelvesM
 				shelves.setPriceFour(item.getPriceFour());
 				shelves.setId(Long.parseLong(item.getSrcId()));
 				shelves.setShareStatus("已确认");
+				shelves.setGoodsCode(item.getGoodsCode());
+				shelves.setBrandName(item.getBrandName());
 				sharePutOnShelvesList.add(shelves);
 			} else {
 				throw new RuntimeException("商品:" + item.getGoodsName() + "未查到上架数据");
 			}
 		}
 		String goodsCode = excelList.stream().map(ShareTheNextDayDataExcel::getGoodsCode).distinct().collect(Collectors.joining(","));
-		String brandName = excelList.stream().map(ShareTheNextDayDataExcel::getGoodsName).distinct().collect(Collectors.joining(","));
+		String brandName = excelList.stream().map(ShareTheNextDayDataExcel::getBrandName).distinct().collect(Collectors.joining(","));
 		String ids = excelList.stream().map(ShareTheNextDayDataExcel::getSrcId).distinct().collect(Collectors.joining(","));
 		List<SharePutOnShelves> sharePutOnShelvesListOld = baseMapper.selectList(new LambdaQueryWrapper<SharePutOnShelves>()
 			.eq(SharePutOnShelves::getTenantId, AuthUtil.getTenantId())
@@ -899,7 +901,7 @@ public class SharePutOnShelvesServiceImpl extends ServiceImpl<SharePutOnShelvesM
 			item.setUpdateTime(new Date());
 			item.setUpdateUser(AuthUtil.getUserId());
 			if (!brandDescList.isEmpty()) {
-				PjBrandDesc brandDesc = brandDescList.stream().filter(e -> e.getCname().equals(item.getSrcBrandName())).findFirst().orElse(null);
+				PjBrandDesc brandDesc = brandDescList.stream().filter(e -> e.getCname().equals(item.getBrandName())).findFirst().orElse(null);
 				if (brandDesc != null) {
 					item.setBrandId(brandDesc.getId());
 					item.setBrandName(brandDesc.getCname());
@@ -910,7 +912,7 @@ public class SharePutOnShelvesServiceImpl extends ServiceImpl<SharePutOnShelvesM
 				throw new RuntimeException("品牌:" + item.getSrcBrandName() + "数据错误,请联系管理员");
 			}
 			if (!goodsDescList.isEmpty()) {
-				PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getCode().equals(item.getSrcGoodsCode())).findFirst().orElse(null);
+				PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getCode().equals(item.getGoodsCode())).findFirst().orElse(null);
 				if (goodsDesc != null) {
 					item.setGoodsId(goodsDesc.getId());
 					item.setGoodsCode(goodsDesc.getCode());

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shopping/controller/ShoppingMallDetailController.java

@@ -372,6 +372,7 @@ public class ShoppingMallDetailController extends BladeController {
 									List<PjProductLaunchFiles> filesList = new ArrayList<>();
 									PjProductLaunchFiles files = new PjProductLaunchFiles();
 									files.setUrl(item.getUrl());
+									files.setVersion("0");
 									filesList.add(files);
 									item.setFilesList(filesList);
 								}
@@ -408,6 +409,7 @@ public class ShoppingMallDetailController extends BladeController {
 								List<PjProductLaunchFiles> filesList = new ArrayList<>();
 								PjProductLaunchFiles files = new PjProductLaunchFiles();
 								files.setUrl(item.getUrl());
+								files.setVersion("0");
 								filesList.add(files);
 								item.setFilesList(filesList);
 							}

+ 15 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shopping/service/impl/ShoppingMallDetailServiceImpl.java

@@ -40,6 +40,7 @@ import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -125,6 +126,13 @@ public class ShoppingMallDetailServiceImpl extends ServiceImpl<ShoppingMallDetai
 							if (!pjBarndFilesList1.isEmpty()) {
 								detail.setFilesList(BeanUtil.copy(pjBarndFilesList1, PjProductLaunchFiles.class));
 							}
+						}else {
+							List<PjProductLaunchFiles> filesList = new ArrayList<>();
+							PjProductLaunchFiles files = new PjProductLaunchFiles();
+							files.setUrl(detail.getUrl());
+							files.setVersion("0");
+							filesList.add(files);
+							detail.setFilesList(filesList);
 						}
 					}
 				}
@@ -155,6 +163,13 @@ public class ShoppingMallDetailServiceImpl extends ServiceImpl<ShoppingMallDetai
 						if (!pjBarndFilesList1.isEmpty()) {
 							detail.setFilesList(BeanUtil.copy(pjBarndFilesList1, PjProductLaunchFiles.class));
 						}
+					}else {
+						List<PjProductLaunchFiles> filesList = new ArrayList<>();
+						PjProductLaunchFiles files = new PjProductLaunchFiles();
+						files.setUrl(detail.getUrl());
+						files.setVersion("0");
+						filesList.add(files);
+						detail.setFilesList(filesList);
 					}
 				}
 			}

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

@@ -570,10 +570,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.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())
-				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
-				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  <= '" + saleDetailDto.getDateEnd()+"'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart() + "'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  <= '" + saleDetailDto.getDateEnd() + "'")
 			);
-			if(pjOrderList.isEmpty()){
+			if (pjOrderList.isEmpty()) {
 				return R.data(new Page<>());
 			}
 			List<Long> pids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
@@ -589,7 +589,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
 				if (!saleDetailDtoList1.isEmpty()) {
 					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())
-						 && !"线下退款".equals(e.getRefundType())).map(PjOrderItems::getReturnsAmount)
+							&& !"线下退款".equals(e.getRefundType())).map(PjOrderItems::getReturnsAmount)
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
 					amount = amount.abs();
@@ -685,7 +685,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 					.in(PjOrderItems::getPid, pids));
 			}
-			for (PjOrder item : pjOrderList) {
+			/*for (PjOrder item : pjOrderList) {
 				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoList.stream()
 					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
 				if (!saleDetailDtoList1.isEmpty()) {
@@ -742,6 +742,78 @@ public class StatisticsServiceImpl implements IStatisticsService {
 						items.setSurplusAmount(items.getSubTotalMoney().subtract(items.getOutGoodsTotalShipAmount()));
 					}
 				}
+			}*/
+			for (PjOrder item : pjOrderList) {
+				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoList.stream()
+					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
+				if (!saleDetailDtoList1.isEmpty()) {
+					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())
+							&& !"线下退款".equals(e.getRefundType())).map(PjOrderItems::getReturnsAmount)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
+					amount = amount.abs();
+					for (SaleDetailDto items : saleDetailDtoList1) {
+						items.setRemarks(item.getRemarks());
+						if (!pjOrderItemsList.isEmpty()) {
+							PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
+							if (orderItems != null) {
+								items.setItemRemarks(orderItems.getRemarks());
+								items.setGoodsNum(orderItems.getGoodsNum());
+								items.setPrice(orderItems.getPrice());
+								items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+								items.setSubTotalMoney(items.getSubTotalMoney().add(item.getFreight()));
+								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());
+								items.setCostpriePrice(orderItems.getCostpriePrice());
+							}
+						}
+						if ("已取消".equals(items.getStatus())) {
+							items.setBalanceAmount(new BigDecimal("0.00"));
+							items.setGoodsNum(new BigDecimal("0.00"));
+							items.setProfit(new BigDecimal("0.00"));
+							items.setSubTotalMoney(new BigDecimal("0.00"));
+							items.setFreight(new BigDecimal("0.00"));
+							items.setCostprie(new BigDecimal("0.00"));
+						} else {
+							if ("TKXS".equals(item.getBsType()) || "TKCG".equals(item.getBsType())) {
+								if (amount.compareTo(items.getSubTotalMoney().abs()) >= 0) {
+									items.setBalanceAmount(new BigDecimal("0.00"));
+									amount = amount.subtract(items.getSubTotalMoney().abs());
+								} else {
+									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.getReturnsNumber()));
+								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getReturnsAmount()).subtract(item.getFreight()));
+								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
+								BigDecimal costprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+								BigDecimal profit = items.getSubTotalMoney().abs().subtract(costprie);
+								items.setProfit(new BigDecimal("0.00").subtract(profit));
+								items.setCostprie(new BigDecimal("0.00").subtract(costprie));
+							} else {
+								if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
+									items.setBalanceAmount(new BigDecimal("0.00"));
+									amount = amount.subtract(items.getSubTotalMoney());
+								} else {
+									items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
+									amount = new BigDecimal("0.00");
+								}
+							}
+						}
+						items.setSurplusNum(items.getGoodsNum().subtract(items.getOutGoodsTotalShipNum()));
+						items.setSurplusAmount(items.getSubTotalMoney().subtract(items.getOutGoodsTotalShipAmount()));
+					}
+				}
 			}
 			BigDecimal goodsNumCancel = saleDetailDtoList.stream().filter(e -> "已取消".equals(e.getStatus()))
 				.map(SaleDetailDto::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
@@ -898,8 +970,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.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())
-				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
-				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  <= '" + saleDetailDto.getDateEnd()+"'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart() + "'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  <= '" + saleDetailDto.getDateEnd() + "'")
 			);
 			List<Long> pids = pjOrderList.stream().map(PjOrder::getId).collect(Collectors.toList());
 			List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
@@ -909,7 +981,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 					.in(PjOrderItems::getPid, pids));
 			}
-			for (PjOrder item : pjOrderList) {
+			/*for (PjOrder item : pjOrderList) {
 				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoIPage.stream()
 					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
 				if (!saleDetailDtoList1.isEmpty()) {
@@ -981,7 +1053,80 @@ public class StatisticsServiceImpl implements IStatisticsService {
 						saleDetailDtoList2.add(items);
 					}
 				}
+			}*/
+			for (PjOrder item : pjOrderList) {
+				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoIPage.stream()
+					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
+				if (!saleDetailDtoList1.isEmpty()) {
+					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())
+							&& !"线下退款".equals(e.getRefundType())).map(PjOrderItems::getReturnsAmount)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
+					amount = amount.abs();
+					for (SaleDetailDto items : saleDetailDtoList1) {
+						items.setRemarks(item.getRemarks());
+						if (!pjOrderItemsList.isEmpty()) {
+							PjOrderItems orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(items.getItemId())).findFirst().orElse(null);
+							if (orderItems != null) {
+								items.setItemRemarks(orderItems.getRemarks());
+								items.setGoodsNum(orderItems.getGoodsNum());
+								items.setPrice(orderItems.getPrice());
+								items.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+								items.setSubTotalMoney(items.getSubTotalMoney().add(item.getFreight()));
+								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());
+								items.setCostpriePrice(orderItems.getCostpriePrice());
+							}
+						}
+						if ("已取消".equals(items.getStatus())) {
+							items.setBalanceAmount(new BigDecimal("0.00"));
+							items.setGoodsNum(new BigDecimal("0.00"));
+							items.setProfit(new BigDecimal("0.00"));
+							items.setSubTotalMoney(new BigDecimal("0.00"));
+							items.setFreight(new BigDecimal("0.00"));
+							items.setCostprie(new BigDecimal("0.00"));
+						} else {
+							if ("TKXS".equals(item.getBsType()) || "TKCG".equals(item.getBsType())) {
+								if (amount.compareTo(items.getSubTotalMoney().abs()) >= 0) {
+									items.setBalanceAmount(new BigDecimal("0.00"));
+									amount = amount.subtract(items.getSubTotalMoney().abs());
+								} else {
+									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.getReturnsNumber()));
+								items.setSubTotalMoney(new BigDecimal("0.00").subtract(items.getReturnsAmount()).subtract(item.getFreight()));
+								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
+								BigDecimal costprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
+								BigDecimal profit = items.getSubTotalMoney().abs().subtract(costprie);
+								items.setProfit(new BigDecimal("0.00").subtract(profit));
+								items.setCostprie(new BigDecimal("0.00").subtract(costprie));
+							} else {
+								if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
+									items.setBalanceAmount(new BigDecimal("0.00"));
+									amount = amount.subtract(items.getSubTotalMoney());
+								} else {
+									items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
+									amount = new BigDecimal("0.00");
+								}
+							}
+						}
+						items.setSurplusNum(items.getGoodsNum().subtract(items.getOutGoodsTotalShipNum()));
+						items.setSurplusAmount(items.getSubTotalMoney().subtract(items.getOutGoodsTotalShipAmount()));
+					}
+				}
 			}
+
 		}
 		return saleDetailDtoList2;
 	}
@@ -1005,8 +1150,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.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())
-			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
-			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'");
+			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart() + "'")
+			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd() + "'");
 		if ("2".equals(saleDetailDto.getBsType())) {
 			lambdaQueryWrapper.isNotNull(PjOrder::getSalerId);
 			lambdaQueryWrapper.groupBy(PjOrder::getSalerName);
@@ -1032,8 +1177,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.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())
-				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
-				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'");
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart() + "'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd() + "'");
 			if ("2".equals(saleDetailDto.getBsType())) {
 				orderLambdaQueryWrapper.apply("find_in_set(saler_name,'" + name + "')");
 			} else {
@@ -1061,9 +1206,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					orders = orderList.stream().filter(e -> e.getCustomerName().equals(item.getCustomerName())).collect(Collectors.toList());
 				}
 				if (!orders.isEmpty()) {
-					detail.setFreight(orders.stream().filter(e -> "XS".equals(e.getBsType())&&
-						"!已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add));
-					BigDecimal freightR1 = orders.stream().filter(e -> "XS".equals(e.getBsType())&&
+					detail.setFreight(orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
+						!"已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add));
+					BigDecimal freightR1 = orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
 						"已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add);
 					List<Long> idList = orders.stream().filter(e -> "XS".equals(e.getBsType())).map(PjOrder::getId).collect(Collectors.toList());
 					List<Long> idListR = orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
@@ -1122,9 +1267,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					}
 					detail.setSalesQuantity(salesQuantity);
 					detail.setReturnQuantity(new BigDecimal("0").subtract(returnQuantity));
-					detail.setSalesAmount(salesAmount.add(detail.getFreight()).subtract(freightR));
-					detail.setReturnAmount(new BigDecimal("0").subtract(returnAmount).subtract(freightR).subtract(freightR1));
-					detail.setSalesProfit(salesProfit.add(detail.getFreight()).subtract(freightR));
+					detail.setSalesAmount(salesAmount.add(detail.getFreight()));
+					detail.setReturnAmount(new BigDecimal("0").subtract(returnAmount));
+					detail.setSalesProfit(salesProfit);
 					salespersonCustomerList.add(detail);
 				}
 			}
@@ -1217,9 +1362,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					orders = orderList.stream().filter(e -> e.getCustomerName().equals(item.getCustomerName())).collect(Collectors.toList());
 				}
 				if (!orders.isEmpty()) {
-					freight = freight.add(orders.stream().filter(e -> "XS".equals(e.getBsType())&&
-						"!已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add));
-					freightR1 = freightR1.add(orders.stream().filter(e -> "XS".equals(e.getBsType())&&
+					freight = freight.add(orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
+						!"已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add));
+					freightR1 = freightR1.add(orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
 						"已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add));
 					List<Long> idList = orders.stream().filter(e -> "XS".equals(e.getBsType())).map(PjOrder::getId).collect(Collectors.toList());
 					List<Long> idListR = orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
@@ -1274,12 +1419,12 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				}
 			}
 		}
-		map.put("salesAmount", salesAmount.add(freight).subtract(freightR));
+		map.put("salesAmount", salesAmount.setScale(0, RoundingMode.HALF_UP));
 		map.put("salesQuantity", salesQuantity);
-		map.put("returnAmount", returnAmount.add(freightR).add(freightR1));
+		map.put("returnAmount", returnAmount.setScale(0, RoundingMode.HALF_UP));
 		map.put("returnQuantity", returnQuantity);
-		map.put("salesProfit", salesProfit.add(freight).subtract(freightR));
-		map.put("freight", freight);
+		map.put("salesProfit", salesProfit.setScale(0, RoundingMode.HALF_UP));
+		map.put("freight", freight.setScale(0, RoundingMode.HALF_UP));
 		return R.data(map);
 	}
 
@@ -1302,8 +1447,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.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())
-			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
-			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'");
+			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart() + "'")
+			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd() + "'");
 		if ("2".equals(saleDetailDto.getBsType())) {
 			lambdaQueryWrapper.isNotNull(PjOrder::getSalerId);
 			lambdaQueryWrapper.groupBy(PjOrder::getSalerName);
@@ -1328,8 +1473,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.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())
-				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
-				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'");
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart() + "'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), "DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd() + "'");
 			if ("2".equals(saleDetailDto.getBsType())) {
 				orderLambdaQueryWrapper.apply("find_in_set(saler_name,'" + name + "')");
 			} else {
@@ -1357,9 +1502,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					orders = orderList.stream().filter(e -> e.getCustomerName().equals(item.getCustomerName())).collect(Collectors.toList());
 				}
 				if (!orders.isEmpty()) {
-					detail.setFreight(orders.stream().filter(e -> "XS".equals(e.getBsType())&&
-						"!已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add));
-					BigDecimal freightR1 = orders.stream().filter(e -> "XS".equals(e.getBsType())&&
+					detail.setFreight(orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
+						!"已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add));
+					BigDecimal freightR1 = orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
 						"已取消".equals(e.getStatus())).map(PjOrder::getFreight).reduce(BigDecimal.ZERO, BigDecimal::add);
 					List<Long> idList = orders.stream().filter(e -> "XS".equals(e.getBsType())).map(PjOrder::getId).collect(Collectors.toList());
 					List<Long> idListR = orders.stream().filter(e -> "XS".equals(e.getBsType()) &&
@@ -1418,9 +1563,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					}
 					detail.setSalesQuantity(salesQuantity);
 					detail.setReturnQuantity(new BigDecimal("0").subtract(returnQuantity));
-					detail.setSalesAmount(salesAmount.add(detail.getFreight()).subtract(freightR));
-					detail.setReturnAmount(new BigDecimal("0").subtract(returnAmount).subtract(freightR).subtract(freightR1));
-					detail.setSalesProfit(salesProfit.add(detail.getFreight()).subtract(freightR));
+					detail.setSalesAmount(salesAmount);
+					detail.setReturnAmount(new BigDecimal("0").subtract(returnAmount));
+					detail.setSalesProfit(salesProfit);
 					salespersonCustomerList.add(detail);
 				}
 			}