纪新园 1 год назад
Родитель
Сommit
2dcdcc7a7a

+ 6 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/packages/entity/BPackages.java

@@ -155,5 +155,11 @@ public class BPackages implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 是否危险品包装
+	 */
+	@ApiModelProperty(value = "是否危险品包装")
+	private String whetherDg;
+
 
 }

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/packages/controller/BPackagesController.java

@@ -101,6 +101,7 @@ public class BPackagesController extends BladeController {
 			.like(ObjectUtils.isNotNull(bPackages.getStandardCode()), BPackages::getStandardCode, bPackages.getStandardCode())
 			.like(ObjectUtils.isNotNull(bPackages.getCnName()), BPackages::getCnName, bPackages.getCnName())
 			.like(ObjectUtils.isNotNull(bPackages.getEnName()), BPackages::getEnName, bPackages.getEnName())
+			.eq(ObjectUtils.isNotNull(bPackages.getWhetherDg()), BPackages::getWhetherDg, bPackages.getWhetherDg())
 			.like(ObjectUtils.isNotNull(bPackages.getStatus()), BPackages::getStatus, bPackages.getStatus());
 		String status = sysClient.getParamServiceNew("basic.data.sort");
 		if ("name".equals(status)) {

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.java

@@ -56,4 +56,8 @@ public interface OrderItemsMapper extends BaseMapper<PjOrderItems> {
 
 	@TenantIgnore
 	List<PjOrderItems> selectOrderItemsList(@Param("tenantId")String tenantId, @Param("type")String type);
+
+	List<PjOrderItems> saleDetailV1(@Param("page")IPage<PjOrderItems> page, @Param("saleDetailDto") SaleDetail saleDetailDto);
+
+	List<PjOrderItems> saleDetailListV1(SaleDetail saleDetail);
 }

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

@@ -243,7 +243,7 @@
             or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
         </if>
         <if test='saleDetailDto.isContain !=null and saleDetailDto.isContain !="" and saleDetailDto.isContain == "0"'>
-            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已退款,售后中,已收货'))
+            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已收货'))
             or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
         </if>
         <if test='saleDetailDto.isContain ==null or saleDetailDto.isContain ==""'>
@@ -456,7 +456,7 @@
               or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
         </if>
         <if test='isContain !=null and isContain !="" and isContain == "0"'>
-            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已退款,售后中,已收货'))
+            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已收货'))
             or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
         </if>
         <if test='isContain ==null or isContain ==""'>
@@ -492,6 +492,7 @@
         AND po.bs_type = 'XS'
         AND poi.tenant_id = #{tenantId}
         AND po.tenant_id = #{tenantId}
+        AND FIND_IN_SET(po.`status`,'待确认,待发货,已发货,退款请核,已取消,已退款,售后中,已收货')
         <if test='type !=null and type != "" and type == "1"'>
             AND DATE(po.busines_date) = CURDATE()
         </if>
@@ -505,6 +506,157 @@
             AND DATEDIFF(CURDATE(), po.busines_date) &lt;= 90
         </if>
     </select>
+    <select id="saleDetailV1" resultType="org.springblade.salesPart.entity.PjOrderItems">
+        SELECT
+        poi.*
+        FROM
+        `pjpf_order_items` poi
+        LEFT JOIN pjpf_goods_desc pgd ON poi.goods_id = pgd.id
+        LEFT JOIN pjpf_order po ON poi.pid = po.id
+        LEFT JOIN blade_user bu ON po.saler_id = bu.id
+        LEFT JOIN pjpf_storage_desc psd on  po.storage_id = psd.id
+        WHERE
+        poi.is_deleted = '0'
+        AND po.is_deleted = '0'
+        AND find_in_set(po.bs_type,#{saleDetailDto.bsType})
+        AND poi.tenant_id = #{saleDetailDto.tenantId}
+        AND po.tenant_id = #{saleDetailDto.tenantId}
+        <if test="saleDetailDto.salesCompanyId !=null and saleDetailDto.salesCompanyId != ''">
+            and find_in_set(po.sales_company_id,#{saleDetailDto.salesCompanyId})
+        </if>
+        <if test="saleDetailDto.storageId !=null and saleDetailDto.storageId != ''">
+            and po.storage_id=#{saleDetailDto.storageId}
+        </if>
+        <if test="saleDetailDto.businessSource !=null and saleDetailDto.businessSource != ''">
+            and po.business_source=#{saleDetailDto.businessSource}
+        </if>
+        <if test="saleDetailDto.customerName !=null and saleDetailDto.customerName != ''">
+            and po.customer_name like concat('%', #{saleDetailDto.customerName}, '%')
+        </if>
+        <if test="saleDetailDto.code !=null and saleDetailDto.code != ''">
+            and poi.goods_no like concat('%', #{saleDetailDto.code}, '%')
+        </if>
+        <if test="saleDetailDto.brandName !=null and saleDetailDto.brandName != ''">
+            and poi.brand_name like concat('%', #{saleDetailDto.brandName}, '%')
+        </if>
+        <if test="saleDetailDto.salerName !=null and saleDetailDto.salerName != ''">
+            and po.saler_name like concat('%', #{saleDetailDto.salerName}, '%')
+        </if>
+        <if test="saleDetailDto.ordNo !=null and saleDetailDto.ordNo != ''">
+            and po.ord_no like concat('%', #{saleDetailDto.ordNo}, '%')
+        </if>
+        <if test="saleDetailDto.goodsName !=null and saleDetailDto.goodsName != ''">
+            and (poi.goods_name like concat('%', #{saleDetailDto.goodsName}, '%') or pgd.cname_int like concat('%', #{saleDetailDto.goodsName}, '%'))
+        </if>
+        <if test="saleDetailDto.actualPaymentStatus !=null and saleDetailDto.actualPaymentStatus != ''">
+            and po.actual_payment_status =#{saleDetailDto.actualPaymentStatus}
+        </if>
+        <if test="saleDetailDto.businesDateStart !=null and saleDetailDto.businesDateStart !=''">
+            and DATE_FORMAT(po.busines_date,'%Y-%m-%d') &gt;= #{saleDetailDto.businesDateStart}
+        </if>
+        <if test="saleDetailDto.businesDateEnd !=null and saleDetailDto.businesDateEnd !=''">
+            and DATE_FORMAT(po.busines_date,'%Y-%m-%d') &lt;= #{saleDetailDto.businesDateEnd}
+        </if>
+        <if test="saleDetailDto.dateStart !=null and saleDetailDto.dateStart !=''">
+            and DATE_FORMAT(po.delivery_busines_date,'%Y-%m-%d') &gt;= #{saleDetailDto.dateStart}
+        </if>
+        <if test="saleDetailDto.dateEnd !=null and saleDetailDto.dateEnd !=''">
+            and DATE_FORMAT(po.delivery_busines_date,'%Y-%m-%d') &lt;= #{saleDetailDto.dateEnd}
+        </if>
+        <if test='saleDetailDto.bsType !=null and saleDetailDto.bsType !="" and saleDetailDto.bsType == "XS"'>
+            and not FIND_IN_SET(po.`status`,'退款请核,已取消,已退款,售后中')
+        </if>
+        <if test='saleDetailDto.isContain !=null and saleDetailDto.isContain !="" and saleDetailDto.isContain == "1"'>
+            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'待确认,待发货,已发货,退款请核,已取消,已退款,售后中,已收货'))
+            or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
+        </if>
+        <if test='saleDetailDto.isContain !=null and saleDetailDto.isContain !="" and saleDetailDto.isContain == "0"'>
+            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已收货'))
+            or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
+        </if>
+        <if test='saleDetailDto.isContain ==null or saleDetailDto.isContain ==""'>
+            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已退款,售后中,已收货'))
+            or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
+        </if>
+        ORDER BY
+        po.busines_date desc,
+        po.ord_no desc
+    </select>
+    <select id="saleDetailListV1" resultType="org.springblade.salesPart.entity.PjOrderItems">
+        SELECT
+        poi.*
+        FROM
+        `pjpf_order_items` poi
+        LEFT JOIN pjpf_goods_desc pgd ON poi.goods_id = pgd.id
+        LEFT JOIN pjpf_order po ON poi.pid = po.id
+        LEFT JOIN pjpf_storage_desc psd on  po.storage_id = psd.id
+        LEFT JOIN blade_user bu ON po.saler_id = bu.id
+        WHERE
+        poi.is_deleted = '0'
+        AND po.is_deleted = '0'
+        AND find_in_set(po.bs_type,#{bsType})
+        AND poi.tenant_id = #{tenantId}
+        AND po.tenant_id = #{tenantId}
+        <if test="salesCompanyId !=null and salesCompanyId != ''">
+            and find_in_set(po.sales_company_id,#{salesCompanyId})
+        </if>
+        <if test="storageId !=null and storageId != ''">
+            and po.storage_id=#{storageId}
+        </if>
+        <if test="customerName !=null and customerName != ''">
+            and po.customer_name like concat('%', #{customerName}, '%')
+        </if>
+        <if test="businessSource !=null and businessSource != ''">
+            and po.business_source=#{businessSource}
+        </if>
+        <if test="code !=null and code != ''">
+            and poi.goods_no like concat('%', #{code}, '%')
+        </if>
+        <if test="brandName !=null and brandName != ''">
+            and poi.brand_name like concat('%', #{brandName}, '%')
+        </if>
+        <if test="salerName !=null and salerName != ''">
+            and po.saler_name like concat('%', #{salerName}, '%')
+        </if>
+        <if test="ordNo !=null and ordNo != ''">
+            and po.ord_no like concat('%', #{ordNo}, '%')
+        </if>
+        <if test="goodsName !=null and goodsName != ''">
+            and (poi.goods_name like concat('%', #{goodsName}, '%') or pgd.cname_int like concat('%', #{goodsName}, '%'))
+        </if>
+        <if test="actualPaymentStatus !=null and actualPaymentStatus != ''">
+            and po.actual_payment_status =#{actualPaymentStatus}
+        </if>
+        <if test="businesDateStart !=null and businesDateStart !=''">
+            and DATE_FORMAT(po.busines_date,'%Y-%m-%d') &gt;= #{businesDateStart}
+        </if>
+        <if test="businesDateEnd !=null and businesDateEnd !=''">
+            and DATE_FORMAT(po.busines_date,'%Y-%m-%d') &lt;= #{businesDateEnd}
+        </if>
+        <if test="dateStart !=null and dateStart !=''">
+            and DATE_FORMAT(po.delivery_busines_date,'%Y-%m-%d') &gt;= #{dateStart}
+        </if>
+        <if test="dateEnd !=null and dateEnd !=''">
+            and DATE_FORMAT(po.delivery_busines_date,'%Y-%m-%d') &lt;= #{dateEnd}
+        </if>
+        <if test='bsType !=null and bsType !="" and bsType == "XS"'>
+            and not FIND_IN_SET(po.`status`,'退款请核,已取消,已退款,售后中')
+        </if>
+        <if test='isContain !=null and isContain !="" and isContain == "1"'>
+            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'待确认,待发货,已发货,退款请核,已取消,已退款,售后中,已收货'))
+            or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
+        </if>
+        <if test='isContain !=null and isContain !="" and isContain == "0"'>
+            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已收货'))
+            or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
+        </if>
+        <if test='isContain ==null or isContain ==""'>
+            and ( (FIND_IN_SET(po.bs_type,'XS,CG,RZCG') and FIND_IN_SET(po.`status`,'已发货,退款请核,已取消,已退款,售后中,已收货'))
+            or (FIND_IN_SET(po.bs_type,'TKXS,TKCG') and FIND_IN_SET(po.`status`,'已完成')) )
+        </if>
+        ORDER BY
+        po.busines_date
+    </select>
 
 
 </mapper>

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

@@ -617,7 +617,7 @@
         AND poi.tenant_id = #{sale.tenantId}
         AND po.tenant_id = #{sale.tenantId}
         AND po.bs_type = 'XS'
-          and find_in_set(po.status,'已发货,已收货,已取消,已退款,售后中,退款请核')
+          and find_in_set(po.status,'已发货,已收货,已取消')
         <if test="sale.salesCompanyId !=null and sale.salesCompanyId != ''">
             and find_in_set(po.sales_company_id,#{sale.salesCompanyId})
         </if>
@@ -688,7 +688,7 @@
         AND poi.tenant_id = #{sale.tenantId}
         AND po.tenant_id = #{sale.tenantId}
         and find_in_set(po.bs_type,'XS')
-        and find_in_set(po.status,'已发货,已收货,已取消,已退款,售后中,退款请核')
+        and find_in_set(po.status,'已发货,已收货,已取消')
         <if test="sale.salesCompanyId !=null and sale.salesCompanyId != ''">
             and find_in_set(po.sales_company_id,#{sale.salesCompanyId})
         </if>
@@ -876,6 +876,7 @@
             is_deleted = '0'
           AND bs_type = 'XS'
           AND tenant_id = #{tenantId}
+        and FIND_IN_SET(po.`status`,'待确认,待发货,已发货,退款请核,已取消,已退款,售后中,已收货')
         <if test='type !=null and type != "" and type == "1"'>
             AND DATE(busines_date) = CURDATE()
         </if>

+ 4 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderItemsService.java

@@ -53,4 +53,8 @@ public interface IOrderItemsService extends IService<PjOrderItems> {
     List<PjOrderItems> getListByTenant(String tenantId, String year);
 
     List<PjOrderItems> selectOrderItemsList(String tenantId, String type);
+
+	IPage<PjOrderItems> saleDetailV1(SaleDetail saleDetailDto, IPage<PjOrderItems> page);
+
+	List<PjOrderItems> saleDetailListV1(SaleDetail saleDetailDto);
 }

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

@@ -99,5 +99,15 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, PjOrder
 		return baseMapper.selectOrderItemsList(tenantId,type);
 	}
 
+	@Override
+	public IPage<PjOrderItems> saleDetailV1(SaleDetail saleDetailDto, IPage<PjOrderItems> page) {
+		return page.setRecords(baseMapper.saleDetailV1(page, saleDetailDto));
+	}
+
+	@Override
+	public List<PjOrderItems> saleDetailListV1(SaleDetail saleDetailDto) {
+		return baseMapper.saleDetailListV1(saleDetailDto);
+	}
+
 
 }

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

@@ -53,7 +53,7 @@ public class ApiServiceImpl implements ApiService {
 		if (!tenantId.isEmpty()) {
 			List<PjOrder> orderList = orderService.getTotalYear(String.join(",", tenantId), year);
 			if (!orderList.isEmpty()) {
-				BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 				map.put("amount", amount);
 			} else {
 				map.put("amount", new BigDecimal("0.00"));
@@ -72,9 +72,9 @@ public class ApiServiceImpl implements ApiService {
 		if (!tenantId.isEmpty()) {
 			List<PjOrder> orderList = orderService.getTotalMonth(String.join(",", tenantId), year, month);
 			if (!orderList.isEmpty()) {
-				BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 				map.put("amount", amount);
-				BigDecimal number = orderList.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal number = orderList.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 				map.put("number", number);
 			} else {
 				map.put("amount", new BigDecimal("0.00"));
@@ -93,7 +93,7 @@ public class ApiServiceImpl implements ApiService {
 			BigDecimal numberSum = new BigDecimal("0");
 			List<PjOrderItems> orderItemsList = orderItemsService.getListByTenant(String.join(",", tenantId), year);
 			if (!orderItemsList.isEmpty()) {
-				numberSum = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				numberSum = orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			}
 			List<BrandSort> brandSortList = new ArrayList<>();
 			for (PjBrandDesc item : brandDescList) {
@@ -103,7 +103,7 @@ public class ApiServiceImpl implements ApiService {
 					List<PjOrderItems> itemsList = orderItemsList.stream().filter(e -> e.getBrandName().equals(item.getCname()))
 						.collect(Collectors.toList());
 					if (!itemsList.isEmpty()) {
-						BigDecimal number = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal number = itemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 						brandSort.setNumber(number);
 						if (numberSum.compareTo(new BigDecimal("0")) != 0 && number.compareTo(new BigDecimal("0")) != 0) {
 							brandSort.setProportion("占比" + number.divide(numberSum, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")) + "%");
@@ -149,7 +149,7 @@ public class ApiServiceImpl implements ApiService {
 					List<PjOrder> orders = orderList.stream().filter(e -> e.getStockClerkName().equals(item.getCname()))
 						.collect(Collectors.toList());
 					if (!orders.isEmpty()) {
-						BigDecimal number = orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal number = orders.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 						warehouseSort.setNumber(number);
 					} else {
 						warehouseSort.setNumber(new BigDecimal("0"));
@@ -180,8 +180,10 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
+			BigDecimal salesAmount = orderList.stream().map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal returnsAmount = orderList.stream().map(PjOrder::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			map.put("name", "");
-			map.put("value", orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("value", salesAmount.subtract(returnsAmount));
 		} else {
 			map.put("name", "");
 			map.put("value", 0.00);
@@ -196,8 +198,10 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
+			BigDecimal salesAmount = orderList.stream().map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal returnsAmount = orderList.stream().map(PjOrder::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			map.put("name", "");
-			map.put("value", orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("value", salesAmount.subtract(returnsAmount));
 		} else {
 			map.put("name", "");
 			map.put("value", 0.00);
@@ -212,8 +216,10 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
+			BigDecimal salesAmount = orderList.stream().map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal returnsAmount = orderList.stream().map(PjOrder::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			map.put("name", "");
-			map.put("value", orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("value", salesAmount.subtract(returnsAmount));
 		} else {
 			map.put("name", "");
 			map.put("value", 0.00);
@@ -245,7 +251,7 @@ public class ApiServiceImpl implements ApiService {
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
 			map.put("name", "");
-			map.put("value", orderList.stream().map(PjOrder::getCustomerId).distinct().count());
+			map.put("value", orderList.stream().map(PjOrder::getCustomerId).filter(Objects::nonNull).distinct().count());
 		} else {
 			map.put("name", "");
 			map.put("value", 0);
@@ -261,7 +267,7 @@ public class ApiServiceImpl implements ApiService {
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
 			map.put("name", "");
-			map.put("value", orderList.stream().map(PjOrder::getCustomerId).distinct().count());
+			map.put("value", orderList.stream().map(PjOrder::getCustomerId).filter(Objects::nonNull).distinct().count());
 		} else {
 			map.put("name", "");
 			map.put("value", 0);
@@ -276,10 +282,28 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
-			BigDecimal amount = orderList.stream().map(PjOrder::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal goodsNum = orderList.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			map.put("name", "");
-			map.put("value", amount.divide(goodsNum, 2, RoundingMode.HALF_UP));
+			List<Long> idList = orderList.stream().map(PjOrder::getId).filter(Objects::nonNull).collect(Collectors.toList());
+			List<PjOrderItems> orderItemsList = orderItemsService.selectOrderItemsList(tenantId, "2");
+			List<PjOrderItems> itemsList = new ArrayList<>();
+			if (!orderItemsList.isEmpty()) {
+				itemsList = orderItemsList.stream().filter(e -> idList.contains(e.getPid())).collect(Collectors.toList());
+			}
+			if (!itemsList.isEmpty()) {
+				BigDecimal amount = new BigDecimal("0.00");
+				BigDecimal goodsNum = new BigDecimal("0.00");
+				for (PjOrderItems items : itemsList) {
+					BigDecimal remainingNum = items.getGoodsNum().subtract(items.getReturnsNumber());
+					BigDecimal subTotalMoney = remainingNum.multiply(items.getPrice());
+					BigDecimal costprie = remainingNum.multiply(items.getCostpriePrice());
+					goodsNum = goodsNum.add(remainingNum);
+					amount = amount.add(subTotalMoney.subtract(costprie));
+				}
+				map.put("name", "");
+				map.put("value", amount.divide(goodsNum, 2, RoundingMode.HALF_UP));
+			} else {
+				map.put("name", "");
+				map.put("value", 0);
+			}
 		} else {
 			map.put("name", "");
 			map.put("value", 0);
@@ -365,9 +389,26 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
-			BigDecimal amount = orderList.stream().map(PjOrder::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			map.put("name", "");
-			map.put("value", amount);
+			List<Long> idList = orderList.stream().map(PjOrder::getId).filter(Objects::nonNull).collect(Collectors.toList());
+			List<PjOrderItems> orderItemsList = orderItemsService.selectOrderItemsList(tenantId, "2");
+			List<PjOrderItems> itemsList = new ArrayList<>();
+			if (!orderItemsList.isEmpty()) {
+				itemsList = orderItemsList.stream().filter(e -> idList.contains(e.getPid())).collect(Collectors.toList());
+			}
+			if (!itemsList.isEmpty()) {
+				BigDecimal grossProfit = new BigDecimal("0.00");
+				for (PjOrderItems items : itemsList) {
+					BigDecimal remainingNum = items.getGoodsNum().subtract(items.getReturnsNumber());
+					BigDecimal subTotalMoney = remainingNum.multiply(items.getPrice());
+					BigDecimal costprie = remainingNum.multiply(items.getCostpriePrice());
+					grossProfit = grossProfit.add(subTotalMoney.subtract(costprie));
+				}
+				map.put("name", "");
+				map.put("value", grossProfit);
+			} else {
+				map.put("name", "");
+				map.put("value", 0);
+			}
 		} else {
 			map.put("name", "");
 			map.put("value", 0);
@@ -426,7 +467,9 @@ public class ApiServiceImpl implements ApiService {
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
 			map.put("name", "");
-			BigDecimal complete = orderList.stream().map(PjOrder::getTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal salesAmount = orderList.stream().map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal returnsAmount = orderList.stream().map(PjOrder::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal complete = salesAmount.subtract(returnsAmount);
 			if (new BigDecimal("0.00").compareTo(complete) != 0) {
 				map.put("value", complete.divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
 			} else {
@@ -449,7 +492,9 @@ public class ApiServiceImpl implements ApiService {
 		if (!orderList.isEmpty()) {
 			if (ObjectUtils.isNotNull(data)) {
 				BigDecimal total = new BigDecimal(data);
-				BigDecimal complete = orderList.stream().map(PjOrder::getTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal salesAmount = orderList.stream().map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal returnsAmount = orderList.stream().map(PjOrder::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal complete = salesAmount.subtract(returnsAmount);
 				map.put("aims", total);
 				if (new BigDecimal("0.00").compareTo(complete) != 0) {
 					map.put("actual", complete.divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP));
@@ -490,8 +535,10 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
+			BigDecimal goodsTotalNum = orderList.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal returnsNumber = orderList.stream().map(PjOrder::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			map.put("name", "");
-			map.put("value", orderList.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("value", goodsTotalNum.subtract(returnsNumber));
 		} else {
 			map.put("name", "");
 			map.put("value", 0);
@@ -509,7 +556,9 @@ public class ApiServiceImpl implements ApiService {
 		if (!orderList.isEmpty()) {
 			if (ObjectUtils.isNotNull(data)) {
 				BigDecimal total = new BigDecimal(data);
-				BigDecimal complete = orderList.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal goodsTotalNum = orderList.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal returnsNumber = orderList.stream().map(PjOrder::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal complete = goodsTotalNum.subtract(returnsNumber);
 				map.put("aims", total);
 				map.put("actual", complete);
 			} else {
@@ -547,7 +596,7 @@ public class ApiServiceImpl implements ApiService {
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
 			map.put("name", "");
-			map.put("value", orderList.stream().map(PjOrder::getCustomerId).distinct().count());
+			map.put("value", orderList.stream().map(PjOrder::getCustomerId).filter(Objects::nonNull).distinct().count());
 		} else {
 			map.put("name", "");
 			map.put("value", 0);
@@ -565,7 +614,7 @@ public class ApiServiceImpl implements ApiService {
 		if (!orderList.isEmpty()) {
 			if (ObjectUtils.isNotNull(data)) {
 				BigDecimal total = new BigDecimal(data);
-				BigDecimal complete = new BigDecimal(orderList.stream().map(PjOrder::getCustomerId).distinct().count());
+				BigDecimal complete = new BigDecimal(orderList.stream().map(PjOrder::getCustomerId).filter(Objects::nonNull).distinct().count());
 				map.put("aims", total);
 				map.put("actual", complete);
 			} else {
@@ -624,7 +673,7 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
-			BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 			map.put("name", "");
 			map.put("value", amount.divide(new BigDecimal(orderList.size()), 2, RoundingMode.HALF_UP));
 		} else {
@@ -644,7 +693,7 @@ public class ApiServiceImpl implements ApiService {
 			SimpleDateFormat formatter = new SimpleDateFormat("dd");
 			for (PjOrder item : orderList) {
 				MonthlySalesTrend detail = new MonthlySalesTrend();
-				detail.setAmount(item.getSalesAmount());
+				detail.setAmount(item.getSalesAmount().subtract(item.getReturnsAmount()));
 				String formattedDate = formatter.format(item.getBusinesDate());
 				detail.setDate(Integer.parseInt(formattedDate));
 				list.add(detail);
@@ -652,7 +701,7 @@ public class ApiServiceImpl implements ApiService {
 			List<MonthlySalesTrend> salesTrendList = list.stream()
 				.sorted(Comparator.comparing(MonthlySalesTrend::getDate))
 				.collect(Collectors.toList());
-			List<Integer> day = salesTrendList.stream().map(MonthlySalesTrend::getDate).distinct().collect(Collectors.toList());
+			List<Integer> day = salesTrendList.stream().map(MonthlySalesTrend::getDate).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			for (Integer item : day) {
 				Map<String, Object> map = new HashMap<>();
 				map.put("x", item + "");
@@ -671,7 +720,7 @@ public class ApiServiceImpl implements ApiService {
 		List<PjOrder> orderList = orderService.selectPjOrderList(tenantId, "2");
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		if (!orderList.isEmpty()) {
-			List<String> corpIdList = orderList.stream().map(PjOrder::getCustomerName).distinct().collect(Collectors.toList());
+			List<String> corpIdList = orderList.stream().map(PjOrder::getCustomerName).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			List<TyreSaleCorp> saleCorpList = new ArrayList<>();
 			for (String item : corpIdList) {
 				TyreSaleCorp corp = new TyreSaleCorp();
@@ -691,7 +740,7 @@ public class ApiServiceImpl implements ApiService {
 				Map<String, Object> map = new HashMap<>();
 				map.put("name", item.getCorpName());
 				map.put("number", item.getNumber());
-				BigDecimal sumNumber = orderList.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal sumNumber = orderList.stream().map(PjOrder::getGoodsTotalNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 				if (new BigDecimal("0.00").compareTo(sumNumber) != 0) {
 					map.put("proportion", item.getNumber().divide(sumNumber, 2, RoundingMode.HALF_UP)
 						.multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP) + "%");
@@ -711,7 +760,7 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		if (!orderItemsList.isEmpty()) {
 			List<TyreSaleSize> saleSizeList = new ArrayList<>();
-			List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+			List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			StringBuilder goodsIds = new StringBuilder();
 			for (Long item : goodsId) {
 				goodsIds.append(item).append(",");
@@ -723,6 +772,9 @@ public class ApiServiceImpl implements ApiService {
 			for (Long items : goodsId) {
 				BigDecimal goodsNum = orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getGoodsNum)
 					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal returnsNumber = orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getReturnsNumber)
+					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				goodsNum = goodsNum.subtract(returnsNumber);
 				if (!saleSizeList.isEmpty()) {
 					if (!goodsDescList.isEmpty()) {
 						PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(items)).findFirst().orElse(null);
@@ -771,7 +823,7 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		if (!orderItemsList.isEmpty()) {
 			List<TyreSaleSize> saleSizeList = new ArrayList<>();
-			List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+			List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			StringBuilder goodsIds = new StringBuilder();
 			for (Long item : goodsId) {
 				goodsIds.append(item).append(",");
@@ -783,6 +835,9 @@ public class ApiServiceImpl implements ApiService {
 			for (Long items : goodsId) {
 				BigDecimal goodsNum = orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getGoodsNum)
 					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal returnsNumber = orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getReturnsNumber)
+					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				goodsNum = goodsNum.subtract(returnsNumber);
 				if (!saleSizeList.isEmpty()) {
 					if (!goodsDescList.isEmpty()) {
 						PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(items)).findFirst().orElse(null);
@@ -819,7 +874,7 @@ public class ApiServiceImpl implements ApiService {
 				Map<String, Object> map = new HashMap<>();
 				map.put("size", item.getSize());
 				map.put("number", item.getNumber());
-				BigDecimal sumNumber = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				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", item.getNumber().divide(sumNumber, 2, RoundingMode.HALF_UP)
 						.multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP) + "%");
@@ -838,12 +893,15 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		if (!orderItemsList.isEmpty()) {
 			List<TyreSaleBrand> saleBrandList = new ArrayList<>();
-			List<String> brandsList = orderItemsList.stream().map(PjOrderItems::getBrandName).distinct().collect(Collectors.toList());
+			List<String> brandsList = orderItemsList.stream().map(PjOrderItems::getBrandName).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			for (String items : brandsList) {
 				TyreSaleBrand detail = new TyreSaleBrand();
 				detail.setBrand(items);
-				detail.setNumber(orderItemsList.stream().filter(e -> e.getBrandName().equals(items)).map(PjOrderItems::getGoodsNum)
-					.reduce(BigDecimal.ZERO, BigDecimal::add));
+				BigDecimal goodsNum = orderItemsList.stream().filter(e -> e.getBrandName().equals(items)).map(PjOrderItems::getGoodsNum)
+					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal returnsNumber = orderItemsList.stream().filter(e -> e.getBrandName().equals(items)).map(PjOrderItems::getReturnsNumber)
+					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				detail.setNumber(goodsNum.subtract(returnsNumber));
 				saleBrandList.add(detail);
 			}
 			List<TyreSaleBrand> itemsList = saleBrandList.stream()
@@ -869,12 +927,15 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		if (!orderItemsList.isEmpty()) {
 			List<TyreSaleBrand> saleBrandList = new ArrayList<>();
-			List<String> brandsList = orderItemsList.stream().map(PjOrderItems::getBrandName).distinct().collect(Collectors.toList());
+			List<String> brandsList = orderItemsList.stream().map(PjOrderItems::getBrandName).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 			for (String items : brandsList) {
 				TyreSaleBrand detail = new TyreSaleBrand();
 				detail.setBrand(items);
-				detail.setNumber(orderItemsList.stream().filter(e -> e.getBrandName().equals(items)).map(PjOrderItems::getGoodsNum)
-					.reduce(BigDecimal.ZERO, BigDecimal::add));
+				BigDecimal goodsNum = orderItemsList.stream().filter(e -> e.getBrandName().equals(items)).map(PjOrderItems::getGoodsNum)
+					.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal returnsNumber = orderItemsList.stream().filter(e -> e.getBrandName().equals(items)).map(PjOrderItems::getReturnsNumber)
+					.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+				detail.setNumber(goodsNum.subtract(returnsNumber));
 				saleBrandList.add(detail);
 			}
 			List<TyreSaleBrand> itemsList = saleBrandList.stream()
@@ -888,7 +949,7 @@ public class ApiServiceImpl implements ApiService {
 				Map<String, Object> map = new HashMap<>();
 				map.put("brand", item.getBrand());
 				map.put("number", item.getNumber());
-				BigDecimal sumNumber = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				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", item.getNumber().divide(sumNumber, 2, RoundingMode.HALF_UP)
 						.multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP) + "%");

+ 2 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/IStatisticsService.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.dto.*;
+import org.springblade.salesPart.entity.PjOrderItems;
 
 import java.util.List;
 import java.util.Map;
@@ -78,7 +79,7 @@ public interface IStatisticsService {
 	 * @param saleDetailDto
 	 * @return
 	 */
-	R<IPage<SaleDetailDto>> saleDetail(SaleDetail saleDetailDto, IPage<SaleDetailDto> page);
+	R<IPage<SaleDetailDto>> saleDetail(SaleDetail saleDetailDto, IPage<PjOrderItems> page);
 
 	/**
 	 * 统计销售明细 合计

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

@@ -46,6 +46,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -558,69 +559,120 @@ public class StatisticsServiceImpl implements IStatisticsService {
 	}
 
 	@Override
-	public R<IPage<SaleDetailDto>> saleDetail(SaleDetail saleDetailDto, IPage<SaleDetailDto> page) {
+	public R<IPage<SaleDetailDto>> saleDetail(SaleDetail saleDetailDto, IPage<PjOrderItems> page) {
 		saleDetailDto.setTenantId(AuthUtil.getTenantId());
 		saleDetailDto.setSalesCompanyId(AuthUtil.getDeptId());
-		IPage<SaleDetailDto> saleDetailDtoIPage = orderItemsService.saleDetail(saleDetailDto, page);
-//		tireMallStatisticsService.saleDetail(saleDetailDto, page);
-		if (!saleDetailDtoIPage.getRecords().isEmpty()) {
-			String billNo = saleDetailDtoIPage.getRecords().stream().map(SaleDetailDto::getOrdNo).distinct().collect(Collectors.joining(","));
+//		IPage<SaleDetailDto> saleDetailDtoIPage = orderItemsService.saleDetail(saleDetailDto, page);
+		IPage<PjOrderItems> orderItemsIPage = orderItemsService.saleDetailV1(saleDetailDto, page);
+		List<SaleDetailDto> saleDetailDtoList = new ArrayList<>();
+		if (!orderItemsIPage.getRecords().isEmpty()) {
+			List<Long> pidList = orderItemsIPage.getRecords().stream().map(PjOrderItems::getPid).distinct().collect(Collectors.toList());
 			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
-				.apply("find_in_set(ord_no,'" + billNo + "')"));
+				.in(PjOrder::getId, pidList));
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 			for (PjOrder item : pjOrderList) {
-				List<SaleDetailDto> saleDetailDtoList = saleDetailDtoIPage.getRecords().stream()
-					.filter(e -> e.getOrdNo().equals(item.getOrdNo()) && !"全退".equals(e.getReturnsStatus())).collect(Collectors.toList());
-				if (!saleDetailDtoList.isEmpty()) {
+				List<PjOrderItems> itemsList = orderItemsIPage.getRecords().stream()
+					.filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				if (!itemsList.isEmpty()) {
 					BigDecimal amount = item.getPaymentAmountTl();
-					BigDecimal number = saleDetailDtoList.stream().map(SaleDetailDto::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal number = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
 					number = number.abs();
 					amount = amount.abs();
-					for (SaleDetailDto items : saleDetailDtoList) {
+					for (PjOrderItems items : itemsList) {
+						SaleDetailDto detail = new SaleDetailDto();
+						detail.setCustomerName(item.getCustomerName());
+						detail.setSalerName(item.getSalerName());
+						detail.setStorageName(item.getStorageName());
+						detail.setOrdNo(item.getOrdNo());
+						detail.setBrandName(items.getBrandName());
+						detail.setGoodsName(items.getGoodsName());
+						detail.setCode(items.getGoodsNo());
+						detail.setPropertyName(items.getPropertyName());
+						detail.setPattern(items.getPattern());
+						detail.setPrice(items.getPrice());
+						detail.setStatus(item.getStatus());
+						detail.setPid(item.getId());
+						detail.setGoodsId(items.getGoodsId() + "");
+						detail.setBusinessSource(item.getBusinessSource());
+						if ("XS".equals(item.getBsType())) {
+							detail.setBsType("销售");
+						} else if ("TKXS".equals(item.getBsType())) {
+							detail.setBsType("销售售后");
+						} else if ("CG".equals(item.getBsType())) {
+							detail.setBsType("采购");
+						} else if ("TKCG".equals(item.getBsType())) {
+							detail.setBsType("采购售后");
+						} else if ("RZCG".equals(item.getBsType())) {
+							detail.setBsType("融资采购");
+						}
+						if (ObjectUtils.isNotNull(item.getBusinesDate())) {
+							detail.setBusinesDate(sdf.format(item.getBusinesDate()));
+						}
+						if (ObjectUtils.isNotNull(item.getDeliveryBusinesDate())) {
+							detail.setDeliveryBusinesDate(sdf.format(item.getDeliveryBusinesDate()));
+						}
+						if (1 == item.getActualPaymentStatus()) {
+							detail.setActualPaymentStatus("待付款");
+						} else if (2 == item.getActualPaymentStatus()) {
+							detail.setActualPaymentStatus("已付款");
+						} else if (3 == item.getActualPaymentStatus()) {
+							detail.setActualPaymentStatus("尾款");
+						} else if (4 == item.getActualPaymentStatus()) {
+							detail.setActualPaymentStatus("已退款");
+						}
+						detail.setGoodsNum(items.getGoodsNum());
+						detail.setSubTotalMoney(items.getSubTotalMoney());
+						detail.setCostprie(items.getCostprie());
+						detail.setProfit(items.getGrossProfit());
+						detail.setReturnsNumber(items.getReturnsNumber());
+						detail.setReturnsAmount(items.getReturnsAmount());
+						detail.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum());
+						detail.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount());
+						detail.setPrimaryGoodsTotalNum(items.getPrimaryGoodsTotalNum());
+						detail.setPrimaryGoodsTotalMoney(items.getPrimaryGoodsTotalAmount());
+						detail.setSurplusNum(items.getGoodsNum().subtract(items.getOutGoodsTotalShipNum()));
+						detail.setSurplusAmount(items.getSubTotalMoney().subtract(items.getOutGoodsTotalShipAmount()));
+						detail.setReturnsStatus(item.getReturnsStatus());
+						if (itemsList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0) {
+							detail.setFreight(item.getFreight());
+						} else {
+							detail.setFreight(new BigDecimal("0.00"));
+						}
 						if ("已取消".equals(items.getStatus())) {
-							items.setBalanceAmount(new BigDecimal("0.00"));
-							items.setFreight(new BigDecimal("0.00"));
+							detail.setBalanceAmount(new BigDecimal("0.00"));
 						} else {
 							if ("TKXS".equals(item.getBsType())) {
-								if (saleDetailDtoList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0 &&
-									new BigDecimal("0.00").compareTo(items.getFreight()) != 0) {
-									items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("-5.00")));
-								}
-								items.setFreight(new BigDecimal("0.00").subtract(items.getFreight()));
 								if (amount.compareTo(items.getSubTotalMoney().abs()) >= 0) {
-									items.setBalanceAmount(new BigDecimal("0.00"));
+									detail.setBalanceAmount(new BigDecimal("0.00"));
 									amount = amount.subtract(items.getSubTotalMoney().abs());
 								} else {
-									items.setBalanceAmount(new BigDecimal("0.00").subtract(items.getSubTotalMoney().abs().subtract(amount)));
+									detail.setBalanceAmount(new BigDecimal("0.00").subtract(items.getSubTotalMoney().abs().subtract(amount)));
 									amount = new BigDecimal("0.00");
 								}
 							} else {
-								if ("XS".equals(item.getBsType())) {
-									if (saleDetailDtoList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0) {
-										items.setSubTotalMoney(items.getSubTotalMoney().add(new BigDecimal("5.00")));
-									}
-									if ("全退".equals(items.getReturnsStatus())) {
-										items.setGoodsNum(new BigDecimal("0.00"));
-										items.setFreight(new BigDecimal("0.00"));
-									}
-								}
 								if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
-									items.setBalanceAmount(new BigDecimal("0.00"));
+									detail.setBalanceAmount(new BigDecimal("0.00"));
 									amount = amount.subtract(items.getSubTotalMoney());
 								} else {
-									items.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
+									detail.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
 									amount = new BigDecimal("0.00");
 								}
 							}
 						}
-						items.setSurplusNum(items.getGoodsNum().subtract(items.getOutGoodsTotalShipNum()));
-						items.setSurplusAmount(items.getSubTotalMoney().subtract(items.getOutGoodsTotalShipAmount()));
+						saleDetailDtoList.add(detail);
 					}
 				}
 			}
 		}
+		IPage<SaleDetailDto> saleDetailDtoIPage = new Page<>();
+		saleDetailDtoIPage.setRecords(saleDetailDtoList);
+		saleDetailDtoIPage.setSize(orderItemsIPage.getSize());
+		saleDetailDtoIPage.setTotal(orderItemsIPage.getTotal());
+		saleDetailDtoIPage.setPages(orderItemsIPage.getPages());
+		saleDetailDtoIPage.setCurrent(orderItemsIPage.getCurrent());
 		return R.data(saleDetailDtoIPage);
 	}
 
@@ -629,146 +681,114 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		saleDetailDto.setTenantId(AuthUtil.getTenantId());
 		saleDetailDto.setSalesCompanyId(AuthUtil.getDeptId());
 		Map<String, Object> map = new HashMap<>();
-		List<SaleDetailDto> saleDetailDtoList = orderItemsService.saleDetailList(saleDetailDto);
-		if (!saleDetailDtoList.isEmpty()) {
-			for (SaleDetailDto items : saleDetailDtoList) {
-				items.setPrimaryGoodsTotalMoney(items.getPrimaryGoodsTotalNum().multiply(items.getPrice()));
-				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).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)
-				.setScale(0, RoundingMode.HALF_UP).abs();
-			BigDecimal costprieCancel = saleDetailDtoList.stream().filter(e -> "已取消".equals(e.getStatus()))
-				.map(SaleDetailDto::getCostprie).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)
-				.setScale(0, RoundingMode.HALF_UP).abs();
-			BigDecimal freightCancel = saleDetailDtoList.stream().filter(e -> "已取消".equals(e.getStatus()))
-				.map(SaleDetailDto::getFreight).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)
-				.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)
-				.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)
-				.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)
-				.setScale(0, RoundingMode.HALF_UP);
-			BigDecimal freight = saleDetailDtoList.stream().filter(e -> !"已取消".equals(e.getStatus()) && !"已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getFreight).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)
-				.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)
-				.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)
-				.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)
-				.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)
-				.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)
-				.setScale(0, RoundingMode.HALF_UP);
+//		List<SaleDetailDto> saleDetailDtoList = orderItemsService.saleDetailList(saleDetailDto);
+		List<PjOrderItems> orderItemsList = orderItemsService.saleDetailListV1(saleDetailDto);
 
-			BigDecimal freightReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getFreight).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)
-				.setScale(0, RoundingMode.HALF_UP).abs();
-			BigDecimal subTotalMoneyReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getSubTotalMoney).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)
-				.setScale(0, RoundingMode.HALF_UP).abs();
-			BigDecimal profitReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()))
-				.map(SaleDetailDto::getProfit).reduce(BigDecimal.ZERO, BigDecimal::add)
-				.setScale(0, RoundingMode.HALF_UP).abs();
+		BigDecimal goodsSum = new BigDecimal("0.00");
+		BigDecimal amount = new BigDecimal("0.00");
+		BigDecimal costprie = new BigDecimal("0.00");
+		BigDecimal profit = new BigDecimal("0.00");
+		BigDecimal freight = new BigDecimal("0.00");
 
-			if ("TKXS".equals(saleDetailDto.getBsType()) || "TKCG".equals(saleDetailDto.getBsType())) {
-				map.put("goodsSum", new BigDecimal("0"));
-				map.put("amount", new BigDecimal("0"));
-				map.put("costprie", new BigDecimal("0"));
-				map.put("profit", new BigDecimal("0"));
-				map.put("freight", freightCancel.add(freightReturns));
-				map.put("goodsSumCancellation", goodsNumCancel.add(goodsNumReturns));
-				map.put("amountCancellation", subTotalMoneyCancel.add(subTotalMoneyReturns));
-				map.put("costprieCancellation", costprieCancel.add(costprieReturns));
-				map.put("profitCancellation", profitCancel.add(profitReturns));
-				map.put("outGoodsTotalShipNum", new BigDecimal("0"));
-				map.put("outGoodsTotalShipAmount", new BigDecimal("0"));
-				map.put("primaryGoodsTotalNum", new BigDecimal("0"));
-				map.put("primaryGoodsTotalMoney", new BigDecimal("0"));
-				map.put("surplusNum", new BigDecimal("0"));
-				map.put("surplusAmount", new BigDecimal("0"));
-			} else if ("XS".equals(saleDetailDto.getBsType()) || "CG".equals(saleDetailDto.getBsType())
-				|| "RZCG".equals(saleDetailDto.getBsType())) {
-				map.put("goodsSum", goodsNumActual);
-				map.put("amount", subTotalMoneyActual);
-				map.put("costprie", costprieActual);
-				map.put("profit", profitActual);
-				map.put("freight", freight);
-				map.put("goodsSumCancellation", "0");
-				map.put("amountCancellation", "0.00");
-				map.put("costprieCancellation", "0.00");
-				map.put("profitCancellation", "0.00");
-				map.put("outGoodsTotalShipNum", outGoodsTotalShipNum);
-				map.put("outGoodsTotalShipAmount", outGoodsTotalShipAmount);
-				map.put("primaryGoodsTotalNum", primaryGoodsTotalNum);
-				map.put("primaryGoodsTotalMoney", primaryGoodsTotalMoney);
-				map.put("surplusNum", surplusNum);
-				map.put("surplusAmount", surplusAmount);
-			} else {
-				map.put("goodsSum", goodsNumActual.abs().add(goodsNumCancel));
-				map.put("amount", subTotalMoneyActual.abs().add(subTotalMoneyCancel));
-				map.put("costprie", costprieActual.abs().add(costprieCancel));
-				map.put("profit", profitActual.abs().add(profitCancel));
-				map.put("freight", freight.abs().subtract(freightCancel).subtract(freightReturns));
-				map.put("goodsSumCancellation", goodsNumCancel.add(goodsNumReturns));
-				map.put("amountCancellation", subTotalMoneyCancel.add(subTotalMoneyReturns));
-				map.put("costprieCancellation", costprieCancel.add(costprieReturns));
-				map.put("profitCancellation", profitCancel.add(profitReturns));
-				map.put("outGoodsTotalShipNum", outGoodsTotalShipNum);
-				map.put("outGoodsTotalShipAmount", outGoodsTotalShipAmount);
-				map.put("primaryGoodsTotalNum", primaryGoodsTotalNum);
-				map.put("primaryGoodsTotalMoney", primaryGoodsTotalMoney);
-				map.put("surplusNum", surplusNum);
-				map.put("surplusAmount", surplusAmount);
+		BigDecimal goodsSumCancellation = new BigDecimal("0.00");
+		BigDecimal amountCancellation = new BigDecimal("0.00");
+		BigDecimal costprieCancellation = new BigDecimal("0.00");
+		BigDecimal profitCancellation = new BigDecimal("0.00");
+		BigDecimal outGoodsTotalShipNum = new BigDecimal("0.00");
+		BigDecimal outGoodsTotalShipAmount = new BigDecimal("0.00");
+		BigDecimal primaryGoodsTotalNum = new BigDecimal("0.00");
+		BigDecimal primaryGoodsTotalMoney = new BigDecimal("0.00");
+		BigDecimal surplusNum = new BigDecimal("0.00");
+		BigDecimal surplusAmount = new BigDecimal("0.00");
+		if (!orderItemsList.isEmpty()) {
+			List<Long> pidList = orderItemsList.stream().map(PjOrderItems::getPid).distinct().collect(Collectors.toList());
+			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
+				.in(PjOrder::getId, pidList));
+			for (PjOrder item : pjOrderList) {
+				List<PjOrderItems> itemsList = orderItemsList.stream()
+					.filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				BigDecimal number = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (!itemsList.isEmpty()) {
+					for (PjOrderItems items : itemsList) {
+						if (itemsList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0) {
+							freight = freight.add(item.getFreight());
+						} else {
+							freight = freight.add(new BigDecimal("0.00"));
+						}
+						goodsSum = goodsSum.add(items.getGoodsNum().subtract(items.getReturnsNumber()));
+						amount = amount.add(items.getSubTotalMoney().subtract(items.getReturnsAmount()));
+						BigDecimal subNum = items.getGoodsNum().subtract(items.getReturnsNumber());
+						BigDecimal subTotalMoney = items.getSubTotalMoney().subtract(items.getReturnsAmount());
+						BigDecimal subCostprie = subNum.multiply(items.getCostpriePrice());
+						costprie = costprie.add(subCostprie);
+						profit = profit.add(subTotalMoney.subtract(subCostprie));
+						goodsSumCancellation = goodsSumCancellation.add(items.getReturnsNumber());
+						amountCancellation = amountCancellation.add(items.getReturnsAmount());
+						BigDecimal subCostprieCancellation = items.getReturnsNumber().multiply(items.getCostpriePrice());
+						costprieCancellation = costprieCancellation.add(subCostprieCancellation);
+						profitCancellation = profitCancellation.add(items.getReturnsAmount().subtract(subCostprieCancellation));
+						outGoodsTotalShipNum = outGoodsTotalShipNum.add(items.getOutGoodsTotalShipNum());
+						outGoodsTotalShipAmount = outGoodsTotalShipAmount.add(items.getOutGoodsTotalShipAmount());
+						primaryGoodsTotalNum = primaryGoodsTotalNum.add(items.getPrimaryGoodsTotalNum());
+						primaryGoodsTotalMoney = primaryGoodsTotalMoney.add(items.getPrimaryGoodsTotalAmount());
+						surplusNum = surplusNum.add(items.getGoodsNum().subtract(items.getOutGoodsTotalShipNum()));
+						surplusAmount = surplusAmount.add(items.getSubTotalMoney().subtract(items.getOutGoodsTotalShipAmount()));
+					}
+				}
 			}
-		} else {
-			map.put("goodsSum", "0");
-			map.put("amount", "0.00");
-			map.put("costprie", "0.00");
-			map.put("profit", "0.00");
+		}
+		if ("TKXS".equals(saleDetailDto.getBsType()) || "TKCG".equals(saleDetailDto.getBsType())) {
+			map.put("goodsSum", new BigDecimal("0"));
+			map.put("amount", new BigDecimal("0"));
+			map.put("costprie", new BigDecimal("0"));
+			map.put("profit", new BigDecimal("0"));
+			map.put("freight", freight);
+			map.put("goodsSumCancellation", goodsSumCancellation);
+			map.put("amountCancellation", amountCancellation);
+			map.put("costprieCancellation", costprieCancellation);
+			map.put("profitCancellation", profitCancellation);
+			map.put("outGoodsTotalShipNum", new BigDecimal("0"));
+			map.put("outGoodsTotalShipAmount", new BigDecimal("0"));
+			map.put("primaryGoodsTotalNum", new BigDecimal("0"));
+			map.put("primaryGoodsTotalMoney", new BigDecimal("0"));
+			map.put("surplusNum", new BigDecimal("0"));
+			map.put("surplusAmount", new BigDecimal("0"));
+		} else if ("XS".equals(saleDetailDto.getBsType()) || "CG".equals(saleDetailDto.getBsType())
+			|| "RZCG".equals(saleDetailDto.getBsType())) {
+			map.put("goodsSum", goodsSum);
+			map.put("amount", amount);
+			map.put("costprie", costprie);
+			map.put("profit", profit);
+			map.put("freight", freight);
 			map.put("goodsSumCancellation", "0");
 			map.put("amountCancellation", "0.00");
 			map.put("costprieCancellation", "0.00");
 			map.put("profitCancellation", "0.00");
-			map.put("freight", "0.00");
-			map.put("outGoodsTotalShipNum", "0.00");
-			map.put("outGoodsTotalShipAmount", "0.00");
-			map.put("primaryGoodsTotalNum", "0.00");
-			map.put("primaryGoodsTotalMoney", "0.00");
-			map.put("surplusNum", "0.00");
-			map.put("surplusAmount", "0.00");
-
+			map.put("outGoodsTotalShipNum", outGoodsTotalShipNum);
+			map.put("outGoodsTotalShipAmount", outGoodsTotalShipAmount);
+			map.put("primaryGoodsTotalNum", primaryGoodsTotalNum);
+			map.put("primaryGoodsTotalMoney", primaryGoodsTotalMoney);
+			map.put("surplusNum", surplusNum);
+			map.put("surplusAmount", surplusAmount);
+		} else {
+			map.put("goodsSum", goodsSum);
+			map.put("amount", amount);
+			map.put("costprie", costprie);
+			map.put("profit", profit);
+			map.put("freight", freight);
+			map.put("goodsSumCancellation", goodsSumCancellation);
+			map.put("amountCancellation", amountCancellation);
+			map.put("costprieCancellation", costprieCancellation);
+			map.put("profitCancellation", profitCancellation);
+			map.put("outGoodsTotalShipNum", outGoodsTotalShipNum);
+			map.put("outGoodsTotalShipAmount", outGoodsTotalShipAmount);
+			map.put("primaryGoodsTotalNum", primaryGoodsTotalNum);
+			map.put("primaryGoodsTotalMoney", primaryGoodsTotalMoney);
+			map.put("surplusNum", surplusNum);
+			map.put("surplusAmount", surplusAmount);
 		}
 		return R.data(map);
 	}
@@ -777,7 +797,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 	public List<SaleDetailDto> saleDetailExport(SaleDetail saleDetailDto) {
 		saleDetailDto.setTenantId(AuthUtil.getTenantId());
 		saleDetailDto.setSalesCompanyId(AuthUtil.getDeptId());
-		List<SaleDetailDto> saleDetailDtoIPage = orderItemsService.saleDetailList(saleDetailDto);
+		/*List<SaleDetailDto> saleDetailDtoIPage = orderItemsService.saleDetailList(saleDetailDto);
 		if (!saleDetailDtoIPage.isEmpty()) {
 			String billNo = saleDetailDtoIPage.stream().map(SaleDetailDto::getOrdNo).distinct().collect(Collectors.joining(","));
 			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
@@ -835,7 +855,112 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				}
 			}
 		}
-		return saleDetailDtoIPage;
+		return saleDetailDtoIPage;*/
+		List<PjOrderItems> orderItemsList = orderItemsService.saleDetailListV1(saleDetailDto);
+		List<SaleDetailDto> saleDetailDtoList = new ArrayList<>();
+		if (!orderItemsList.isEmpty()) {
+			List<Long> pidList = orderItemsList.stream().map(PjOrderItems::getPid).distinct().collect(Collectors.toList());
+			List<PjOrder> pjOrderList = orderService.list(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId())
+				.in(PjOrder::getId, pidList));
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			for (PjOrder item : pjOrderList) {
+				List<PjOrderItems> itemsList = orderItemsList.stream()
+					.filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				if (!itemsList.isEmpty()) {
+					BigDecimal amount = item.getPaymentAmountTl();
+					BigDecimal number = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+					number = number.abs();
+					amount = amount.abs();
+					for (PjOrderItems items : itemsList) {
+						SaleDetailDto detail = new SaleDetailDto();
+						detail.setCustomerName(item.getCustomerName());
+						detail.setSalerName(item.getSalerName());
+						detail.setStorageName(item.getStorageName());
+						detail.setOrdNo(item.getOrdNo());
+						detail.setBrandName(items.getBrandName());
+						detail.setGoodsName(items.getGoodsName());
+						detail.setCode(items.getGoodsNo());
+						detail.setPropertyName(items.getPropertyName());
+						detail.setPattern(items.getPattern());
+						detail.setPrice(items.getPrice());
+						detail.setStatus(item.getStatus());
+						detail.setPid(item.getId());
+						detail.setGoodsId(items.getGoodsId() + "");
+						detail.setBusinessSource(item.getBusinessSource());
+						if ("XS".equals(item.getBsType())) {
+							detail.setBsType("销售");
+						} else if ("TKXS".equals(item.getBsType())) {
+							detail.setBsType("销售售后");
+						} else if ("CG".equals(item.getBsType())) {
+							detail.setBsType("采购");
+						} else if ("TKCG".equals(item.getBsType())) {
+							detail.setBsType("采购售后");
+						} else if ("RZCG".equals(item.getBsType())) {
+							detail.setBsType("融资采购");
+						}
+						if (ObjectUtils.isNotNull(item.getBusinesDate())) {
+							detail.setBusinesDate(sdf.format(item.getBusinesDate()));
+						}
+						if (ObjectUtils.isNotNull(item.getDeliveryBusinesDate())) {
+							detail.setDeliveryBusinesDate(sdf.format(item.getDeliveryBusinesDate()));
+						}
+						if (1 == item.getActualPaymentStatus()) {
+							detail.setActualPaymentStatus("待付款");
+						} else if (2 == item.getActualPaymentStatus()) {
+							detail.setActualPaymentStatus("已付款");
+						} else if (3 == item.getActualPaymentStatus()) {
+							detail.setActualPaymentStatus("尾款");
+						} else if (4 == item.getActualPaymentStatus()) {
+							detail.setActualPaymentStatus("已退款");
+						}
+						detail.setGoodsNum(items.getGoodsNum());
+						detail.setSubTotalMoney(items.getSubTotalMoney());
+						detail.setCostprie(items.getCostprie());
+						detail.setProfit(items.getGrossProfit());
+						detail.setReturnsNumber(items.getReturnsNumber());
+						detail.setReturnsAmount(items.getReturnsAmount());
+						detail.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum());
+						detail.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount());
+						detail.setPrimaryGoodsTotalNum(items.getPrimaryGoodsTotalNum());
+						detail.setPrimaryGoodsTotalMoney(items.getPrimaryGoodsTotalAmount());
+						detail.setSurplusNum(items.getGoodsNum().subtract(items.getOutGoodsTotalShipNum()));
+						detail.setSurplusAmount(items.getSubTotalMoney().subtract(items.getOutGoodsTotalShipAmount()));
+						detail.setReturnsStatus(item.getReturnsStatus());
+						if (itemsList.size() == 1 && number.compareTo(new BigDecimal(1)) <= 0) {
+							detail.setFreight(item.getFreight());
+						} else {
+							detail.setFreight(new BigDecimal("0.00"));
+						}
+						if ("已取消".equals(items.getStatus())) {
+							detail.setBalanceAmount(new BigDecimal("0.00"));
+						} else {
+							if ("TKXS".equals(item.getBsType())) {
+								if (amount.compareTo(items.getSubTotalMoney().abs()) >= 0) {
+									detail.setBalanceAmount(new BigDecimal("0.00"));
+									amount = amount.subtract(items.getSubTotalMoney().abs());
+								} else {
+									detail.setBalanceAmount(new BigDecimal("0.00").subtract(items.getSubTotalMoney().abs().subtract(amount)));
+									amount = new BigDecimal("0.00");
+								}
+							} else {
+								if (amount.compareTo(items.getSubTotalMoney()) >= 0) {
+									detail.setBalanceAmount(new BigDecimal("0.00"));
+									amount = amount.subtract(items.getSubTotalMoney());
+								} else {
+									detail.setBalanceAmount(items.getSubTotalMoney().subtract(amount));
+									amount = new BigDecimal("0.00");
+								}
+							}
+						}
+						saleDetailDtoList.add(detail);
+					}
+				}
+			}
+		}
+		return saleDetailDtoList;
 	}
 
 	@Override
@@ -849,7 +974,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getBsType, "XS")
-				.apply("find_in_set(status,'已发货,已收货,已取消,已退款,售后中,退款请核')")
+				.apply("find_in_set(status,'已发货,已收货,已取消')")
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
 				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId());
@@ -883,14 +1008,14 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					List<Long> ordersCorpS = new ArrayList<>();
 					if (ObjectUtils.isNotNull(saleDetailDto.getSalerName())) {
 						ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					} else {
 						ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					}
 					if (!ordersCorpR.isEmpty()) {
 						List<Long> finalOrdersCorpR = ordersCorpR;
@@ -916,10 +1041,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 						List<PjOrderItems> itemsList = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid())).collect(Collectors.toList());
 						BigDecimal costprie = new BigDecimal("0.00");
 						for (PjOrderItems items : itemsList) {
-							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0){
+							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0) {
 								BigDecimal returnCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
 								costprie = costprie.add(items.getCostprie().subtract(returnCostprie));
-							}else{
+							} else {
 								costprie = costprie.add(items.getCostprie());
 							}
 						}
@@ -930,14 +1055,14 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					List<Long> ordersSalerS = new ArrayList<>();
 					if (ObjectUtils.isNotNull(saleDetailDto.getCustomerName())) {
 						ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId()) && e.getCustomerName().equals(saleDetailDto.getCustomerName())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId()) && e.getCustomerName().equals(saleDetailDto.getCustomerName())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					} else {
 						ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					}
 					if (!ordersSalerR.isEmpty()) {
 						List<Long> finalOrdersSalerR = ordersSalerR;
@@ -964,10 +1089,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 						List<PjOrderItems> itemsList = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid())).collect(Collectors.toList());
 						BigDecimal costprie = new BigDecimal("0.00");
 						for (PjOrderItems items : itemsList) {
-							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0){
+							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0) {
 								BigDecimal returnCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
 								costprie = costprie.add(items.getCostprie().subtract(returnCostprie));
-							}else{
+							} else {
 								costprie = costprie.add(items.getCostprie());
 							}
 						}
@@ -991,7 +1116,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getBsType, "XS")
-				.apply("find_in_set(status,'已发货,已收货,已取消,已退款,售后中,退款请核')")
+				.apply("find_in_set(status,'已发货,已收货,已取消')")
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
 				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId());
@@ -1035,14 +1160,14 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					List<Long> ordersCorpS = new ArrayList<>();
 					if (ObjectUtils.isNotNull(saleDetailDto.getSalerName())) {
 						ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					} else {
 						ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					}
 					if (!ordersCorpR.isEmpty()) {
 						List<Long> finalOrdersCorpR = ordersCorpR;
@@ -1069,10 +1194,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 						List<PjOrderItems> itemsList = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid())).collect(Collectors.toList());
 						BigDecimal costprie = new BigDecimal("0.00");
 						for (PjOrderItems items : itemsList) {
-							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0){
+							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0) {
 								BigDecimal returnCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
 								costprie = costprie.add(items.getCostprie().subtract(returnCostprie));
-							}else{
+							} else {
 								costprie = costprie.add(items.getCostprie());
 							}
 						}
@@ -1083,14 +1208,14 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					List<Long> ordersSalerS = new ArrayList<>();
 					if (ObjectUtils.isNotNull(saleDetailDto.getCustomerName())) {
 						ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId()) && e.getCustomerName().equals(saleDetailDto.getCustomerName())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId()) && e.getCustomerName().equals(saleDetailDto.getCustomerName())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					} else {
 						ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					}
 					if (!ordersSalerR.isEmpty()) {
 						List<Long> finalOrdersSalerR = ordersSalerR;
@@ -1117,10 +1242,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 						List<PjOrderItems> itemsList = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid())).collect(Collectors.toList());
 						BigDecimal costprie = new BigDecimal("0.00");
 						for (PjOrderItems items : itemsList) {
-							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0){
+							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0) {
 								BigDecimal returnCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
 								costprie = costprie.add(items.getCostprie().subtract(returnCostprie));
-							}else{
+							} else {
 								costprie = costprie.add(items.getCostprie());
 							}
 						}
@@ -1158,7 +1283,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getBsType, "XS")
-				.apply("find_in_set(status,'已发货,已收货,已取消,已退款,售后中,退款请核')")
+				.apply("find_in_set(status,'已发货,已收货,已取消')")
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
 				.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId());
@@ -1192,14 +1317,14 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					List<Long> ordersCorpS = new ArrayList<>();
 					if (ObjectUtils.isNotNull(saleDetailDto.getSalerName())) {
 						ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId()) && e.getSalerName().equals(saleDetailDto.getSalerName())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					} else {
 						ordersCorpR = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersCorpS = orderList.stream().filter(e -> e.getCustomerId().equals(item.getId())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					}
 					if (!ordersCorpR.isEmpty()) {
 						List<Long> finalOrdersCorpR = ordersCorpR;
@@ -1226,10 +1351,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 						List<PjOrderItems> itemsList = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid())).collect(Collectors.toList());
 						BigDecimal costprie = new BigDecimal("0.00");
 						for (PjOrderItems items : itemsList) {
-							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0){
+							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0) {
 								BigDecimal returnCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
 								costprie = costprie.add(items.getCostprie().subtract(returnCostprie));
-							}else{
+							} else {
 								costprie = costprie.add(items.getCostprie());
 							}
 						}
@@ -1240,14 +1365,14 @@ public class StatisticsServiceImpl implements IStatisticsService {
 					List<Long> ordersSalerS = new ArrayList<>();
 					if (ObjectUtils.isNotNull(saleDetailDto.getCustomerName())) {
 						ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId()) && e.getCustomerName().equals(saleDetailDto.getCustomerName())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId()) && e.getCustomerName().equals(saleDetailDto.getCustomerName())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					} else {
 						ordersSalerR = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
-							&& "已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& "已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 						ordersSalerS = orderList.stream().filter(e -> e.getSalerId().equals(item.getId())
-							&& !"已取消,已退款,售后中,退款请核".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
+							&& !"已取消".contains(e.getStatus())).map(PjOrder::getId).collect(Collectors.toList());
 					}
 					if (!ordersSalerR.isEmpty()) {
 						List<Long> finalOrdersSalerR = ordersSalerR;
@@ -1274,10 +1399,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 						List<PjOrderItems> itemsList = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid())).collect(Collectors.toList());
 						BigDecimal costprie = new BigDecimal("0.00");
 						for (PjOrderItems items : itemsList) {
-							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0){
+							if (new BigDecimal("0").compareTo(items.getReturnsNumber()) != 0) {
 								BigDecimal returnCostprie = items.getReturnsNumber().multiply(items.getCostpriePrice());
 								costprie = costprie.add(items.getCostprie().subtract(returnCostprie));
-							}else{
+							} else {
 								costprie = costprie.add(items.getCostprie());
 							}
 						}