Bläddra i källkod

2024年9月5日17:20:06

纪新园 1 år sedan
förälder
incheckning
1a069ab1bf
21 ändrade filer med 541 tillägg och 98 borttagningar
  1. 89 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/FinancingProcurement.java
  2. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/dto/SaleDetailDto.java
  3. 16 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  4. 1 1
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShip.java
  5. 5 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/ShipItemsRecord.java
  6. 3 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/funding/entity/PjpfFunding.java
  7. 22 22
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  8. 2 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  9. 14 8
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/funding/controller/PjpfBalanceResetController.java
  10. 24 7
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/funding/controller/PjpfFundingController.java
  11. 5 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  12. 9 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderStatisticsController.java
  13. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  14. 8 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.java
  15. 106 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml
  16. 7 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  17. 85 13
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  18. 35 33
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  19. 35 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/controller/StatisticsController.java
  20. 9 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/IStatisticsService.java
  21. 58 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

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

@@ -0,0 +1,89 @@
+package org.springblade.salesPart.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/3/12
+ */
+@Data
+public class FinancingProcurement {
+
+
+	/**
+	 * 订单编号
+	 */
+	@ExcelProperty(value = "订单编号")
+	private String ordNo;
+	/**
+	 * 订单金额
+	 */
+	@ExcelProperty(value = "订单金额")
+	private BigDecimal totalMoney;
+	/**
+	 * 天数
+	 */
+	@ExcelProperty(value = "天数")
+	private Integer day;
+	/**
+	 * 配资比例
+	 */
+	@ExcelProperty(value = "配资比例")
+	private String proportion;
+	/**
+	 * 融资金额
+	 */
+	@ExcelProperty(value = "融资金额")
+	private BigDecimal fundingAmount;
+	/**
+	 * 保证金
+	 */
+	@ExcelProperty(value = "保证金")
+	private BigDecimal bondAmount;
+	/**
+	 * 在库金额
+	 */
+	@ExcelProperty(value = "在库金额")
+	private BigDecimal surplusAmount;
+	/**
+	 * 在库数量
+	 */
+	@ExcelProperty(value = "在库数量")
+	private BigDecimal surplusNum;
+
+	/**
+	 * 是否赎回
+	 */
+	@ExcelProperty(value = "是否赎回")
+	private String whetherRedeem;
+
+
+	/**
+	 * 供应商
+	 */
+	@ExcelIgnore
+	private String customerName;
+
+	/**
+	 * 订单时间类型 0 两个月内 1 三个月 2 三个月以上  全部不传
+	 */
+	@ExcelIgnore
+	private String type;
+
+	/**
+	 * 租户
+	 */
+	@ExcelIgnore
+	private String tenantId;
+	/**
+	 * 所属公司id
+	 */
+	@ExcelIgnore
+	private String salesCompanyId;
+
+
+}

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

@@ -156,6 +156,12 @@ public class SaleDetailDto {
 	private String bsType;
 
 	/**
+	 * 业务来源
+	 */
+	@ExcelProperty(value = "业务来源")
+	private String businessSource;
+
+	/**
 	 * 退货状态
 	 */
 	@ExcelIgnore

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

@@ -561,6 +561,17 @@ public class PjOrder implements Serializable {
 	@TableField(exist = false)
 	private String amount;
 
+	/**
+	 * 剩余数量
+	 */
+	@TableField(exist = false)
+	private BigDecimal surplusShipNum;
+	/**
+	 * 剩余金额
+	 */
+	@TableField(exist = false)
+	private BigDecimal surplusShipAmount;
+
 	//跳转对应页面的路由
 	@TableField(exist = false)
 	private String url;
@@ -612,5 +623,10 @@ public class PjOrder implements Serializable {
 	 */
 	@TableField(exist = false)
 	private List<OrderRecord> orderRecordList;
+	/**
+	 * 采购出库记录
+	 */
+	@TableField(exist = false)
+	private List<ShipItemsRecord> shipItemsRecordList;
 
 }

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

@@ -246,7 +246,7 @@ public class PjShip implements Serializable {
 	 * 资金方
 	 */
 	@ApiModelProperty(value = "资金方")
-	private Integer fundingPartyName;
+	private String fundingPartyName;
 	/**
 	 * 配资比例
 	 */

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

@@ -70,6 +70,11 @@ public class ShipItemsRecord implements Serializable {
 	@ApiModelProperty(value = "出库金额")
 	private BigDecimal amount;
 	/**
+	 * 出库单号
+	 */
+	@ApiModelProperty(value = "出库单号")
+	private String billNo;
+	/**
 	 * 来源采购订单号
 	 */
 	@ApiModelProperty(value = "来源采购订单号")

+ 3 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/funding/entity/PjpfFunding.java

@@ -149,5 +149,8 @@ public class PjpfFunding implements Serializable {
 	@TableField(exist = false)
 	private List<PjpfFundingItem> fundingItemList;
 
+	@TableField(exist = false)
+	private Integer count;
+
 
 }

+ 22 - 22
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml

@@ -1715,10 +1715,10 @@ ORDER BY
             SUM(BO.debit_amount) AS amount,
             SUM(BOI.purchaseAmount) AS purchaseAmount,
             SUM(BO.this_used_profit) AS thisUsedProfit,
-            SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) AS grossProfit,
+            SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) AS grossProfit,
             SUM(BO.predict_ocean_freight) AS predictOceanFreight,
-            SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) - SUM( BO.predict_ocean_freight ) AS netGrossProfit,
-            FORMAT(( SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) ) / SUM( BO.debit_amount ) * 100,2) AS grossProfitRate
+            SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) - SUM( BO.predict_ocean_freight ) AS netGrossProfit,
+            FORMAT(( SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) ) / SUM( bdf.delivery_amount ) * 100,2) AS grossProfitRate
         FROM
             business_order BO
         LEFT JOIN (
@@ -1855,10 +1855,10 @@ ORDER BY
         SUM(BO.debit_amount) AS amount,
         SUM(BOI.purchaseAmount) AS purchaseAmount,
         SUM(BO.this_used_profit) AS thisUsedProfit,
-        SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) AS grossProfit,
+        SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) AS grossProfit,
         SUM(BO.predict_ocean_freight) AS predictOceanFreight,
-        SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) - SUM( BO.predict_ocean_freight ) AS netGrossProfit,
-        FORMAT(( SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) ) / SUM( BO.debit_amount ) * 100,2) AS grossProfitRate
+        SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) - SUM( BO.predict_ocean_freight ) AS netGrossProfit,
+        FORMAT(( SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) ) / SUM( bdf.delivery_amount ) * 100,2) AS grossProfitRate
         FROM
         business_order BO
         LEFT JOIN (
@@ -1925,12 +1925,12 @@ ORDER BY
             SUM( BOI.quantity ) AS quantity,
             SUM( BOI.purchaseAmount ) AS purchaseAmount,
             SUM( BO.this_used_profit ) AS thisUsedProfit,
-            SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) AS grossProfit,
+            SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) AS grossProfit,
             SUM( BO.predict_ocean_freight ) AS predictOceanFreight,
-            SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) - SUM( BO.predict_ocean_freight ) AS netGrossProfit,
+            SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) - SUM( BO.predict_ocean_freight ) AS netGrossProfit,
             cast(
                 FORMAT(
-                    ( sum( BO.debit_amount ) - sum( BOI.purchaseAmount ) ) / sum( BO.debit_amount ) * 100,2
+                    ( sum( bdf.delivery_amount ) - sum( BOI.purchaseAmount ) ) / sum( bdf.delivery_amount ) * 100,2
                 ) as DECIMAL ( 64, 10 )
             ) AS grossProfitRate
         FROM
@@ -2079,10 +2079,10 @@ ORDER BY
         SUM( BOI.quantity ) AS quantity,
         SUM( BOI.purchaseAmount ) AS purchaseAmount,
         SUM( BO.this_used_profit ) AS thisUsedProfit,
-        SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) AS grossProfit,
+        SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) AS grossProfit,
         SUM( BO.predict_ocean_freight ) AS predictOceanFreight,
-        SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount ) - SUM( BO.predict_ocean_freight ) AS netGrossProfit,
-        FORMAT((SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )) / SUM( BO.debit_amount ) * 100,2) AS grossProfitRate
+        SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount ) - SUM( BO.predict_ocean_freight ) AS netGrossProfit,
+        FORMAT((SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )) / SUM( bdf.delivery_amount ) * 100,2) AS grossProfitRate
         FROM
         business_order BO
         LEFT JOIN (
@@ -2147,12 +2147,12 @@ ORDER BY
             SUM( BOI.quantity ) AS quantity,
             SUM( BOI.purchaseAmount ) AS purchaseAmount,
             SUM( BO.this_used_profit ) AS thisUsedProfit,
-            FORMAT(( SUM( BO.debit_amount ) / SUM( BOI.quantity ) ),2) AS price,
-            FORMAT(((SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit ))) / SUM( BOI.quantity ),2) AS singleGrossProfit,
+            FORMAT(( SUM( bdf.delivery_amount ) / SUM( BOI.quantity ) ),2) AS price,
+            FORMAT(((SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit ))) / SUM( BOI.quantity ),2) AS singleGrossProfit,
             SUM( BO.predict_ocean_freight ) AS predictOceanFreight,
-            SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )  AS netGrossProfit,
-            (SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit )) AS grossProfit,
-            FORMAT(((SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit ))) / SUM( BO.debit_amount ) * 100,2) AS grossProfitRate
+            SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )  AS netGrossProfit,
+            (SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit )) AS grossProfit,
+            FORMAT(((SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit ))) / SUM( bdf.delivery_amount ) * 100,2) AS grossProfitRate
         FROM
             business_order BO
                 LEFT JOIN (
@@ -2279,12 +2279,12 @@ ORDER BY
         SUM( BOI.quantity ) AS quantity,
         SUM( BOI.purchaseAmount ) AS purchaseAmount,
         SUM( BO.this_used_profit ) AS thisUsedProfit,
-        FORMAT(( SUM( BO.debit_amount ) / SUM( BOI.quantity ) ),2) AS price,
-        FORMAT(((SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit ))) / SUM( BOI.quantity ),2) AS singleGrossProfit,
+        FORMAT(( SUM( bdf.delivery_amount ) / SUM( BOI.quantity ) ),2) AS price,
+        FORMAT(((SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit ))) / SUM( BOI.quantity ),2) AS singleGrossProfit,
         SUM( BO.predict_ocean_freight ) AS predictOceanFreight,
-        SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )  AS netGrossProfit,
-        (SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit )) AS grossProfit,
-        FORMAT(((SUM( BO.debit_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit ))) / SUM( BO.debit_amount ) * 100,2) AS grossProfitRate
+        SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )  AS netGrossProfit,
+        (SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit )) AS grossProfit,
+        FORMAT(((SUM( bdf.delivery_amount ) - SUM( BOI.purchaseAmount )) + (-SUM( BO.this_used_profit ))) / SUM( bdf.delivery_amount ) * 100,2) AS grossProfitRate
         FROM
         business_order BO
         LEFT JOIN (

+ 2 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -2052,6 +2052,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		orderMessage.setCreateFreightTime(null);
 		orderMessage.setOrderStatus(OrderStatusEnum.ENTERING.getType());
 		orderMessage.setChargebackStatus(3);
+		orderMessage.setSettlmentAmount(new BigDecimal("0.00"));
+		orderMessage.setBalanceAmount(orderMessage.getDebitAmount());
 		baseMapper.updateById(orderMessage);
 
 	}

+ 14 - 8
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/funding/controller/PjpfBalanceResetController.java

@@ -16,23 +16,25 @@
  */
 package org.springblade.salesPart.funding.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.salesPart.funding.entity.PjpfBalanceReset;
-import org.springblade.salesPart.funding.vo.PjpfBalanceResetVO;
 import org.springblade.salesPart.funding.service.IPjpfBalanceResetService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.salesPart.funding.vo.PjpfBalanceResetVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
 
 /**
  * 可用余额充值 控制器
@@ -66,7 +68,11 @@ public class PjpfBalanceResetController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入pjpfBalanceReset")
 	public R<IPage<PjpfBalanceReset>> list(PjpfBalanceReset pjpfBalanceReset, Query query) {
-		IPage<PjpfBalanceReset> pages = pjpfBalanceResetService.page(Condition.getPage(query), Condition.getQueryWrapper(pjpfBalanceReset));
+		LambdaQueryWrapper<PjpfBalanceReset> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjpfBalanceReset::getTenantId, AuthUtil.getTenantId())
+			.eq(PjpfBalanceReset::getIsDeleted, 0)
+			.orderByDesc(PjpfBalanceReset::getCreateTime);
+		IPage<PjpfBalanceReset> pages = pjpfBalanceResetService.page(Condition.getPage(query), lambdaQueryWrapper);
 		return R.data(pages);
 	}
 

+ 24 - 7
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/funding/controller/PjpfFundingController.java

@@ -16,23 +16,29 @@
  */
 package org.springblade.salesPart.funding.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.salesPart.funding.entity.PjpfFunding;
-import org.springblade.salesPart.funding.vo.PjpfFundingVO;
+import org.springblade.salesPart.funding.entity.PjpfFundingItem;
+import org.springblade.salesPart.funding.service.IPjpfFundingItemService;
 import org.springblade.salesPart.funding.service.IPjpfFundingService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.salesPart.funding.vo.PjpfFundingVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 融资管理 控制器
@@ -48,6 +54,8 @@ public class PjpfFundingController extends BladeController {
 
 	private final IPjpfFundingService pjpfFundingService;
 
+	private final IPjpfFundingItemService pjpfFundingItemService;
+
 	/**
 	 * 详情
 	 */
@@ -67,6 +75,15 @@ public class PjpfFundingController extends BladeController {
 	@ApiOperation(value = "分页", notes = "传入pjpfFunding")
 	public R<IPage<PjpfFunding>> list(PjpfFunding pjpfFunding, Query query) {
 		IPage<PjpfFunding> pages = pjpfFundingService.page(Condition.getPage(query), Condition.getQueryWrapper(pjpfFunding));
+		List<Long> idList = pages.getRecords().stream().map(PjpfFunding::getId).collect(Collectors.toList());
+		List<PjpfFundingItem> fundingItemList = pjpfFundingItemService.list(new LambdaQueryWrapper<PjpfFundingItem>()
+			.eq(PjpfFundingItem::getTenantId, AuthUtil.getTenantId())
+			.eq(PjpfFundingItem::getIsDeleted, 0)
+			.in(PjpfFundingItem::getPid, idList));
+		for (PjpfFunding item : pages.getRecords()) {
+			List<PjpfFundingItem> fundingItems = fundingItemList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+			item.setCount(fundingItems.size());
+		}
 		return R.data(pages);
 	}
 

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

@@ -110,7 +110,9 @@ public class OrderController extends BladeController {
 				PjOrder::getBusinesDate, PjOrder::getPaymentDate, PjOrder::getCreateUser, PjOrder::getCreateTime,
 				PjOrder::getUpdateUser, PjOrder::getUpdateTime, PjOrder::getReturnsNumber, PjOrder::getReturnsAmount,
 				PjOrder::getConfirmWarehouse, PjOrder::getWhetherRedeem, PjOrder::getFundingPartyId, PjOrder::getFundingPartyName,
-				PjOrder::getInterest, PjOrder::getFundingAmount, PjOrder::getBondAmount)
+				PjOrder::getInterest, PjOrder::getFundingAmount, PjOrder::getBondAmount, PjOrder::getProportion,
+				PjOrder::getGoodsTotalShipAmount, PjOrder::getOutGoodsTotalShipNum, PjOrder::getOutGoodsTotalShipAmount,
+				PjOrder::getGoodsTotalShipNum,PjOrder::getSalesAmount)
 			.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.eq(PjOrder::getBsType, order.getBsType())
@@ -166,7 +168,6 @@ public class OrderController extends BladeController {
 		StringBuilder createUserIds = new StringBuilder();//创建人id拼接
 		for (PjOrder items : pages.getRecords()) {
 			if (ObjectUtil.isNotEmpty(items.getUpdateUser())) {
-
 				updateUserIds.append(items.getUpdateUser()).append(",");
 			}
 			if (ObjectUtil.isNotEmpty(items.getCreateUser())) {
@@ -207,6 +208,8 @@ public class OrderController extends BladeController {
 					item.setItem(count + "");
 					item.setNumberRows((int) count);
 				}
+				item.setSurplusShipNum(item.getGoodsTotalShipNum().subtract(item.getOutGoodsTotalShipNum()));
+				item.setSurplusShipAmount(item.getGoodsTotalShipAmount().subtract(item.getOutGoodsTotalShipAmount()));
 			});
 		}
 

+ 9 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderStatisticsController.java

@@ -128,4 +128,13 @@ public class OrderStatisticsController extends BladeController {
 		return R.data(map);
 	}
 
+	/**
+	 * 柱状统计
+	 */
+	@GetMapping("/columnarRz")
+	public R<Map<String,List<BigDecimal>>> columnarRz(PjOrder order) {
+		Map<String,List<BigDecimal>> map = orderService.columnarRz(order);
+		return R.data(map);
+	}
+
 }

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

@@ -45,6 +45,7 @@
         SELECT
         po.customer_name AS customerName,
         bu.real_name AS salerName,
+        po.business_source AS businessSource,
         psd.cname AS storageName,
         poi.goods_no AS code,
         po.ord_no AS ordNo,
@@ -244,6 +245,7 @@
         SELECT
         po.customer_name AS customerName,
         bu.real_name AS salerName,
+        po.business_source AS businessSource,
         psd.cname AS storageName,
         poi.goods_no AS code,
         po.ord_no AS ordNo,

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

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.core.tenant.annotation.TenantIgnore;
+import org.springblade.salesPart.dto.FinancingProcurement;
 import org.springblade.salesPart.dto.SaleDetail;
 import org.springblade.salesPart.dto.SaleDetailDto;
 import org.springblade.salesPart.dto.SalespersonCustomer;
@@ -97,4 +98,11 @@ public interface OrderMapper extends BaseMapper<PjOrder> {
 
 	@TenantIgnore
     List<PjOrder> selectListAll(@Param("param")String param);
+
+	Map<String, BigDecimal> columnarRz(@Param("firstDay") LocalDate firstDay, @Param("lastDay") LocalDate lastDay,
+									   @Param("tenantId") String tenantId, @Param("salesCompanyId") Long salesCompanyId);
+
+	List<FinancingProcurement> financingProcurement(@Param("page")IPage<FinancingProcurement> page, @Param("sale")FinancingProcurement financingProcurement);
+
+	List<FinancingProcurement> financingProcurementList(@Param("sale")FinancingProcurement financingProcurement);
 }

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

@@ -726,5 +726,111 @@
           and goods_total_ship_amount != out_goods_total_ship_amount
         and tenant_id = #{param}
     </select>
+    <select id="columnarRz" resultType="java.util.Map">
+        SELECT
+        IF(sum(po.goods_total_ship_num),sum(po.goods_total_ship_num),0.00) AS goodsTotalNum,
+        IF(sum(po.goods_total_ship_amount),sum(po.goods_total_ship_amount),0.00) AS totalMoney
+        FROM
+        pjpf_order po
+        WHERE
+        po.tenant_id = #{tenantId}
+        AND po.is_deleted = 0
+        and po.bs_type = 'RZCG'
+        and po.confirm_warehouse = '1'
+        and po.whether_redeem = '0'
+        <if test="firstDay != null">
+            and po.busines_date &gt;= #{firstDay}
+        </if>
+        <if test="lastDay != null">
+            and po.busines_date &lt;= #{lastDay}
+        </if>
+        <if test="salesCompanyId!=null">
+            and po.sales_company_id = #{salesCompanyId}
+        </if>
+    </select>
+    <select id="financingProcurement" resultType="org.springblade.salesPart.dto.FinancingProcurement">
+        SELECT
+            ord_no AS ordNo,
+            total_money AS totalMoney,
+            proportion AS proportion,
+            bond_amount AS bondAmount,
+            funding_amount AS fundingAmount,
+            goods_total_ship_num - out_goods_total_ship_num AS surplusNum,
+            goods_total_ship_amount - out_goods_total_ship_amount AS surplusAmount,
+            CASE
+                whether_redeem
+                WHEN '0' THEN
+                    '否'
+                WHEN '1' THEN
+                    '是' ELSE ''
+                END AS whetherRedeem,
+            DATEDIFF( CURDATE(), busines_date ) AS DAY
+        FROM
+            `pjpf_order`
+        WHERE
+            tenant_id = #{sale.tenantId}
+          AND is_deleted = '0'
+          AND bs_type = 'RZCG'
+        <if test="sale.customerName !=null and sale.customerName != ''">
+            and customer_name like concat('%', #{sale.customerName}, '%')
+        </if>
+        <if test="sale.whetherRedeem !=null and sale.whetherRedeem != ''">
+            and whether_redeem = #{sale.whetherRedeem}
+        </if>
+        <if test="sale.ordNo !=null and sale.ordNo != ''">
+            and ord_no like concat('%', #{sale.ordNo}, '%')
+        </if>
+        <if test="sale.type !=null and sale.customerName != '' and sale.type == '0'">
+            and DATEDIFF( CURDATE(), busines_date ) &lt;= 60
+        </if>
+        <if test="sale.type !=null and sale.customerName != '' and sale.type == '1'">
+            and DATEDIFF( CURDATE(), busines_date ) &gt; 60 and DATEDIFF( CURDATE(), busines_date )   &lt;= 90
+        </if>
+        <if test="sale.type !=null and sale.customerName != '' and sale.type == '2'">
+            and DATEDIFF( CURDATE(), busines_date ) &gt; 90
+        </if>
+    </select>
+    <select id="financingProcurementList" resultType="org.springblade.salesPart.dto.FinancingProcurement">
+        SELECT
+        ord_no AS ordNo,
+        total_money AS totalMoney,
+        proportion AS proportion,
+        bond_amount AS bondAmount,
+        funding_amount AS fundingAmount,
+        goods_total_ship_num - out_goods_total_ship_num AS surplusNum,
+        goods_total_ship_amount - out_goods_total_ship_amount AS surplusAmount,
+        CASE
+        whether_redeem
+        WHEN '0' THEN
+        '否'
+        WHEN '1' THEN
+        '是' ELSE ''
+        END AS whetherRedeem,
+        DATEDIFF( CURDATE(), busines_date ) AS DAY
+        FROM
+        `pjpf_order`
+        WHERE
+        tenant_id = #{sale.tenantId}
+        AND is_deleted = '0'
+        AND bs_type = 'RZCG'
+        <if test="sale.customerName !=null and sale.customerName != ''">
+            and customer_name like concat('%', #{sale.customerName}, '%')
+        </if>
+        <if test="sale.whetherRedeem !=null and sale.whetherRedeem != ''">
+            and whether_redeem = #{sale.whetherRedeem}
+        </if>
+        <if test="sale.ordNo !=null and sale.ordNo != ''">
+            and ord_no like concat('%', #{sale.ordNo}, '%')
+        </if>
+        <if test="sale.type !=null and sale.customerName != '' and sale.type == '0'">
+            and DATEDIFF( CURDATE(), busines_date ) &lt;= 60
+        </if>
+        <if test="sale.type !=null and sale.customerName != '' and sale.type == '1'">
+            and DATEDIFF( CURDATE(), busines_date ) &gt; 60 and DATEDIFF( CURDATE(), busines_date )   &lt;= 90
+        </if>
+        <if test="sale.type !=null and sale.customerName != '' and sale.type == '2'">
+            and DATEDIFF( CURDATE(), busines_date ) &gt; 90
+        </if>
+    </select>
 
 </mapper>

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

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import feign.Param;
 import org.springblade.core.tool.api.R;
+import org.springblade.salesPart.dto.FinancingProcurement;
 import org.springblade.salesPart.dto.SaleDetail;
 import org.springblade.salesPart.dto.SaleDetailDto;
 import org.springblade.salesPart.dto.SalespersonCustomer;
@@ -254,4 +255,10 @@ public interface IOrderService extends IService<PjOrder> {
 	R passCancelRW(Long id);
 
 	String updateOrderProportionJobHandler(String param);
+
+	Map<String, List<BigDecimal>> columnarRz(PjOrder order);
+
+	IPage<FinancingProcurement> financingProcurement(FinancingProcurement financingProcurement, IPage<FinancingProcurement> page);
+
+	List<FinancingProcurement> financingProcurementList(FinancingProcurement financingProcurement);
 }

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

@@ -48,11 +48,15 @@ import org.springblade.salesPart.check.service.IAuditPathsLevelsService;
 import org.springblade.salesPart.check.service.IAuditProecessService;
 import org.springblade.salesPart.corps.mapper.CorpsAttnMapper;
 import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
+import org.springblade.salesPart.dto.FinancingProcurement;
 import org.springblade.salesPart.dto.SaleDetail;
 import org.springblade.salesPart.dto.SalespersonCustomer;
 import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
-import org.springblade.salesPart.excel.*;
+import org.springblade.salesPart.excel.InventoryExportExcel;
+import org.springblade.salesPart.excel.PjOrderStatisticsExcel;
+import org.springblade.salesPart.excel.ShipItemImportXSCodeExcel;
+import org.springblade.salesPart.excel.ShipItemImportXSExcel;
 import org.springblade.salesPart.funding.dto.FinancingShipItemDto;
 import org.springblade.salesPart.funding.entity.PjpfFunding;
 import org.springblade.salesPart.funding.entity.PjpfFundingItem;
@@ -72,6 +76,7 @@ import org.springblade.salesPart.serial.service.IPjpfSerialService;
 import org.springblade.salesPart.settlement.mapper.SettlementMapper;
 import org.springblade.salesPart.settlement.service.ISettlementItemsService;
 import org.springblade.salesPart.ship.mapper.ShipMapper;
+import org.springblade.salesPart.ship.service.IShipItemsRecordService;
 import org.springblade.salesPart.ship.service.IShipItemsService;
 import org.springblade.salesPart.stock.service.IStockDescService;
 import org.springblade.salesPart.storage.mapper.StorageDescMapper;
@@ -165,6 +170,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 
 	private final IPjpfFundingService pjpfFundingService;
 
+	private final IShipItemsRecordService shipItemsRecordService;
+
 	/**
 	 * 获取销售订单详情
 	 *
@@ -256,8 +263,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				item.setBizTypeName("");
 			}
 		}
-
 		detail.setOutboundRecordsList(pjShipList);
+
+		List<ShipItemsRecord> shipItemsRecordList = shipItemsRecordService.list(new LambdaQueryWrapper<ShipItemsRecord>()
+			.eq(ShipItemsRecord::getTenantId, AuthUtil.getTenantId())
+			.eq(ShipItemsRecord::getIsDeleted, 0)
+			.eq(ShipItemsRecord::getSrcId, detail.getId()));
+		detail.setShipItemsRecordList(shipItemsRecordList.isEmpty() ? new ArrayList<>() : shipItemsRecordList);
 		return detail;
 	}
 
@@ -1318,6 +1330,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			}
 			orderItemsService.updateBatchById(order.getOrderItemsList());
 		}
+		order.setUpdateTime(new Date());
+		order.setUpdateUser(AuthUtil.getUserId());
+		order.setUpdateUserName(AuthUtil.getUserName());
 		baseMapper.updateById(order);
 		return R.data(order);
 	}
@@ -2990,12 +3005,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				.eq(PjOrderItems::getPid, pjOrder.getId());
 			List<PjOrderItems> itemsList = orderItemsService.list(itemsLambdaQueryWrapper);
 			List<Long> goodsIds = itemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
-			long itemsListRZCG = orderItemsService.count(new LambdaQueryWrapper<PjOrderItems>()
+			List<PjOrderItems> itemsListRZCG = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
 				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.in(PjOrderItems::getGoodsId, goodsIds)
 				.eq(PjOrderItems::getBizType, "RZCG"));
-			if (itemsListRZCG > 0) {
+			List<Long> idList = itemsListRZCG.stream().map(PjOrderItems::getPid).distinct().collect(Collectors.toList());
+			List<PjOrder> orderList = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.in(PjOrder::getId, idList));
+			if (!itemsListRZCG.isEmpty()) {
 				if ("审核提交".equals(order.getTaskWhetherAdopt())) {
 					throw new RuntimeException("任务已提交审核");
 				} else if ("审核中".equals(order.getTaskWhetherAdopt())) {
@@ -3009,13 +3029,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				if (pjpfFunding == null) {
 					throw new RuntimeException("未找到融资总账");
 				}
-				if (pjpfFunding.getBondAmount().compareTo(pjpfFunding.getPaidAlreadyBondAmount()) > 0) {
-					throw new RuntimeException("已缴保证金不足,生成任务失败");
-				}
-				BigDecimal amount = itemsList.stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull)
-					.reduce(BigDecimal.ZERO, BigDecimal::add);
-				if (pjpfFunding.getAvailableAmount().compareTo(amount) < 0) {
-					throw new RuntimeException("剩余可用资金:" + pjpfFunding.getAvailableAmount() + "小于本次出库金额:" + amount + ",生成任务失败");
+				List<PjOrder> orders = orderList.stream().filter(e -> e.getWhetherRedeem().equals("0")).distinct().collect(Collectors.toList());
+				if (!orders.isEmpty()){
+					if (pjpfFunding.getBondAmount().compareTo(pjpfFunding.getPaidAlreadyBondAmount()) > 0) {
+						throw new RuntimeException("已缴保证金不足,生成任务失败");
+					}
+					BigDecimal amount = itemsList.stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+					if (pjpfFunding.getAvailableAmount().compareTo(amount) < 0) {
+						throw new RuntimeException("剩余可用资金:" + pjpfFunding.getAvailableAmount() + "小于本次出库金额:" + amount + ",生成任务失败");
+					}
 				}
 				return R.data("该订单明细商品存在融资货物,是否提交出库任务审批?");
 			} else {
@@ -3345,6 +3368,53 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		return "修改成功";
 	}
 
+	@Override
+	public Map<String, List<BigDecimal>> columnarRz(PjOrder order) {
+		Map<String, List<BigDecimal>> map = new HashMap<>(16);
+		List<BigDecimal> number = new ArrayList<>();
+		List<BigDecimal> amount = new ArrayList<>();
+		// 获取当前年份
+		int year = LocalDate.now().getYear();
+		if (ObjectUtils.isNotNull(order)) {
+			year = order.getYear();
+		} else {
+			year = LocalDate.now().getYear();
+		}
+
+		// 遍历每个月份
+		for (int month = 1; month <= 12; month++) {
+			// 构建对应年份和月份的日期
+			YearMonth yearMonth = YearMonth.of(year, month);
+
+			// 获取该月份的第一天和最后一天
+			LocalDate firstDay = yearMonth.atDay(1);
+			LocalDate lastDay = yearMonth.atEndOfMonth();
+			Map<String, BigDecimal> sum = new HashMap<>();
+			sum = baseMapper.columnarRz(firstDay, lastDay, AuthUtil.getTenantId(), Long.parseLong(AuthUtil.getDeptId()));
+			if (ObjectUtils.isNotNull(sum)) {
+				number.add(sum.get("goodsTotalNum"));
+				amount.add(sum.get("totalMoney"));
+			} else {
+				number.add(new BigDecimal("0.00"));
+				amount.add(new BigDecimal("0.00"));
+			}
+
+		}
+		map.put("number", number);
+		map.put("amount", amount);
+		return map;
+	}
+
+	@Override
+	public IPage<FinancingProcurement> financingProcurement(FinancingProcurement financingProcurement, IPage<FinancingProcurement> page) {
+		return page.setRecords(baseMapper.financingProcurement(page, financingProcurement));
+	}
+
+	@Override
+	public List<FinancingProcurement> financingProcurementList(FinancingProcurement financingProcurement) {
+		return baseMapper.financingProcurementList(financingProcurement);
+	}
+
 	/**
 	 * 保存订单信息
 	 */
@@ -3455,7 +3525,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				if (goodsId.size() != goodsNames.size()) {
 					throw new RuntimeException("明细数据存在改名并重名商品,请联系管理员处理");
 				}
-				if (ObjectUtils.isNotNull(statu) && "1".equals(statu)) {
+				/*if (ObjectUtils.isNotNull(statu) && "1".equals(statu)) {
 					List<PjOrderItems> itemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
 						.eq(PjOrderItems::getIsDeleted, 0)
 						.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
@@ -3467,7 +3537,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							throw new RuntimeException("订单明细同时存在融资与非融资商品,保存失败");
 						}
 					}
-				}
+				}*/
 				for (PjOrderItems item : order.getOrderItemsList()) {
 					BigDecimal balanceQuantity = new BigDecimal("0.00");
 					BigDecimal inventoryAmount = new BigDecimal("0.00");
@@ -4220,6 +4290,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		pjShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 		pjShip.setCreateUser(AuthUtil.getUserId());
 		pjShip.setCreateTime(new Date());
+		pjShip.setFundingPartyId(pjOrder.getFundingPartyId());
+		pjShip.setFundingPartyName(pjOrder.getFundingPartyName());
 		shipMapper.insert(pjShip);
 		pjOrder.setVersion(pjOrder.getVersion() + 1);
 		//修改采购状态

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

@@ -926,14 +926,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			Date date = new Date();
 			Calendar calendarDate = Calendar.getInstance();
 			calendarDate.setTime(date);
-			calendarDate.add(Calendar.DAY_OF_MONTH, -60);
+			calendarDate.add(Calendar.DAY_OF_MONTH, -90);
 			Date dateTime = calendarDate.getTime();
 			List<PjOrder> orderList = orderMapper.selectList(new LambdaQueryWrapper<PjOrder>()
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getWhetherFinancing, "1")
 				.eq(PjOrder::getBsType, "RZCG")
-				.eq(PjOrder::getFundingPartyId, pjpfFunding.getFundingPartyId())
 				.ge(PjOrder::getBusinesDate, dateTime)
 				.apply("goods_total_ship_num > out_goods_total_ship_num")
 				.orderByAsc(PjOrder::getBusinesDate)
@@ -951,28 +950,31 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.orderByAsc(PjOrderItems::getCreateTime)
 			);
 			if (!orderItemsList.isEmpty()) {
-				if (pjpfFunding.getBondAmount().compareTo(pjpfFunding.getPaidAlreadyBondAmount()) > 0) {
-					throw new RuntimeException("已缴保证金不足,出库失败");
-				}
-				BigDecimal amount = shipItemsList.stream().map(PjShipItems::getCostprie)
-					.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-				if (pjpfFunding.getAvailableAmount().compareTo(amount) < 0) {
-					throw new RuntimeException("剩余可用资金:" + pjpfFunding.getAvailableAmount() + "小于本次出库金额:" + amount + ",出库失败");
+				List<PjOrder> orders = orderList.stream().filter(e -> e.getWhetherRedeem().equals("0")).distinct().collect(Collectors.toList());
+				if (!orders.isEmpty()){
+					if (pjpfFunding.getBondAmount().compareTo(pjpfFunding.getPaidAlreadyBondAmount()) > 0) {
+						throw new RuntimeException("已缴保证金不足,出库失败");
+					}
+					BigDecimal amount = shipItemsList.stream().map(PjShipItems::getCostprie)
+						.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+					if (pjpfFunding.getAvailableAmount().compareTo(amount) < 0) {
+						throw new RuntimeException("剩余可用资金:" + pjpfFunding.getAvailableAmount() + "小于本次出库金额:" + amount + ",出库失败");
+					}
+					pjpfFunding.setAvailableAmount(pjpfFunding.getAvailableAmount().subtract(amount));
+					PjpfFundingItem item = new PjpfFundingItem();
+					item.setPid(pjpfFunding.getId());
+					item.setTenantId(AuthUtil.getTenantId());
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					item.setCreateDept(pjpfFunding.getCreateDept());
+					item.setCreateDeptName(pjpfFunding.getCreateDeptName());
+					item.setType("融资出库");
+					item.setSrcId(ship.getId());
+					item.setSrcNo(ship.getBillno());
+					item.setAmount(amount);
+					pjpfFundingItemService.save(item);
 				}
-				pjpfFunding.setAvailableAmount(pjpfFunding.getAvailableAmount().subtract(amount));
-				PjpfFundingItem item = new PjpfFundingItem();
-				item.setPid(pjpfFunding.getId());
-				item.setTenantId(AuthUtil.getTenantId());
-				item.setCreateTime(new Date());
-				item.setCreateUser(AuthUtil.getUserId());
-				item.setCreateUserName(AuthUtil.getUserName());
-				item.setCreateDept(pjpfFunding.getCreateDept());
-				item.setCreateDeptName(pjpfFunding.getCreateDeptName());
-				item.setType("融资出库");
-				item.setSrcId(ship.getId());
-				item.setSrcNo(ship.getBillno());
-				item.setAmount(amount);
-				pjpfFundingItemService.save(item);
 			}
 			List<FinancingShipItemDto> allList = new ArrayList<>();
 			List<ShipItemsRecord> recordList = new ArrayList<>();
@@ -983,6 +985,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				for (PjOrderItems orderItems1 : orderItemList) {
 					if (number.compareTo(new BigDecimal("0.00")) > 0) {
 						ShipItemsRecord shipItemsRecord = new ShipItemsRecord();
+						shipItemsRecord.setBillNo(ship.getBillno());
 						shipItemsRecord.setPid(shipItems.getPid());
 						shipItemsRecord.setItemId(shipItems.getId());
 						shipItemsRecord.setSrcId(orderItems1.getPid());
@@ -1057,7 +1060,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						Date currentDate = new Date();
 						Calendar calendar = Calendar.getInstance();
 						calendar.setTime(currentDate);
-						calendar.add(Calendar.DAY_OF_MONTH, -30);
+						calendar.add(Calendar.DAY_OF_MONTH, -60);
 						Date thirtyDayAgo = calendar.getTime();
 						BigDecimal subAmount = items.getGoodsTotalShipAmount().subtract(items.getOutGoodsTotalShipAmount());
 						List<Long> itemIdList = allList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getItemId).collect(Collectors.toList());
@@ -1342,7 +1345,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			List<PjOrder> orderList = orderMapper.selectList(new LambdaQueryWrapper<PjOrder>()
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
-				.eq(PjOrder::getFundingPartyId, pjpfFunding.getFundingPartyId())
 				.eq(PjOrder::getWhetherFinancing, "1")
 				.eq(PjOrder::getBsType, "RZCG")
 			);
@@ -1397,7 +1399,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						Date currentDate = new Date();
 						Calendar calendar = Calendar.getInstance();
 						calendar.setTime(currentDate);
-						calendar.add(Calendar.DAY_OF_MONTH, -30);
+						calendar.add(Calendar.DAY_OF_MONTH, -60);
 						Date thirtyDayAgo = calendar.getTime();
 
 						BigDecimal subAmount = items.getGoodsTotalShipAmount().subtract(items.getOutGoodsTotalShipAmount());
@@ -1461,7 +1463,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						Date currentDate = new Date();
 						Calendar calendar = Calendar.getInstance();
 						calendar.setTime(currentDate);
-						calendar.add(Calendar.DAY_OF_MONTH, -30);
+						calendar.add(Calendar.DAY_OF_MONTH, -60);
 						Date thirtyDayAgo = calendar.getTime();
 						BigDecimal subAmount = items.getGoodsTotalShipAmount().subtract(items.getOutGoodsTotalShipAmount());
 						List<Long> itemIdList = financingShipItemDtoList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getId).collect(Collectors.toList());
@@ -2021,7 +2023,6 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			List<PjOrder> orderList = orderMapper.selectList(new LambdaQueryWrapper<PjOrder>()
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
-				.eq(PjOrder::getFundingPartyId, pjpfFunding.getFundingPartyId())
 				.eq(PjOrder::getWhetherFinancing, "1")
 				.eq(PjOrder::getBsType, "RZCG")
 			);
@@ -2076,7 +2077,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						Date currentDate = new Date();
 						Calendar calendar = Calendar.getInstance();
 						calendar.setTime(currentDate);
-						calendar.add(Calendar.DAY_OF_MONTH, -30);
+						calendar.add(Calendar.DAY_OF_MONTH, -60);
 						Date thirtyDayAgo = calendar.getTime();
 
 						BigDecimal subAmount = items.getGoodsTotalShipAmount().subtract(items.getOutGoodsTotalShipAmount());
@@ -2140,7 +2141,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						Date currentDate = new Date();
 						Calendar calendar = Calendar.getInstance();
 						calendar.setTime(currentDate);
-						calendar.add(Calendar.DAY_OF_MONTH, -30);
+						calendar.add(Calendar.DAY_OF_MONTH, -60);
 						Date thirtyDayAgo = calendar.getTime();
 						BigDecimal subAmount = items.getGoodsTotalShipAmount().subtract(items.getOutGoodsTotalShipAmount());
 						List<Long> itemIdList = financingShipItemDtoList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getId).collect(Collectors.toList());
@@ -2606,14 +2607,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			Date date = new Date();
 			Calendar calendarDate = Calendar.getInstance();
 			calendarDate.setTime(date);
-			calendarDate.add(Calendar.DAY_OF_MONTH, -60);
+			calendarDate.add(Calendar.DAY_OF_MONTH, -90);
 			Date dateTime = calendarDate.getTime();
 			List<PjOrder> orderList = orderMapper.selectList(new LambdaQueryWrapper<PjOrder>()
 				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrder::getIsDeleted, 0)
 				.eq(PjOrder::getWhetherFinancing, "1")
 				.eq(PjOrder::getBsType, "RZCG")
-				.eq(PjOrder::getFundingPartyId, pjpfFunding.getFundingPartyId())
 				.ge(PjOrder::getBusinesDate, dateTime)
 				.apply("goods_total_ship_num > out_goods_total_ship_num")
 				.orderByAsc(PjOrder::getBusinesDate)
@@ -2663,6 +2663,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				for (PjOrderItems orderItems1 : orderItemList) {
 					if (number1.compareTo(new BigDecimal("0.00")) > 0) {
 						ShipItemsRecord shipItemsRecord = new ShipItemsRecord();
+						shipItemsRecord.setBillNo(ship.getBillno());
 						shipItemsRecord.setPid(shipItems.getPid());
 						shipItemsRecord.setItemId(shipItems.getId());
 						shipItemsRecord.setSrcId(orderItems1.getPid());
@@ -2737,7 +2738,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						Date currentDate = new Date();
 						Calendar calendar = Calendar.getInstance();
 						calendar.setTime(currentDate);
-						calendar.add(Calendar.DAY_OF_MONTH, -30);
+						calendar.add(Calendar.DAY_OF_MONTH, -60);
 						Date thirtyDayAgo = calendar.getTime();
 						BigDecimal subAmount = items.getGoodsTotalShipAmount().subtract(items.getOutGoodsTotalShipAmount());
 						List<Long> itemIdList = allList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getId).collect(Collectors.toList());
@@ -3639,6 +3640,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				for (PjOrderItems orderItems1 : orderItemList) {
 					if (number1.compareTo(new BigDecimal("0.00")) > 0) {
 						ShipItemsRecord shipItemsRecord = new ShipItemsRecord();
+						shipItemsRecord.setBillNo(ship.getBillno());
 						shipItemsRecord.setPid(shipItems.getPid());
 						shipItemsRecord.setItemId(shipItems.getId());
 						shipItemsRecord.setSrcId(orderItems1.getPid());

+ 35 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/controller/StatisticsController.java

@@ -7,10 +7,7 @@ import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
-import org.springblade.salesPart.dto.SaleDetail;
-import org.springblade.salesPart.dto.SaleDetailDto;
-import org.springblade.salesPart.dto.SalespersonCustomer;
-import org.springblade.salesPart.dto.StayDoOrder;
+import org.springblade.salesPart.dto.*;
 import org.springblade.salesPart.statistics.service.IStatisticsService;
 import org.springframework.web.bind.annotation.*;
 
@@ -146,4 +143,38 @@ public class StatisticsController {
 			ExcelUtil.export(response, "销售分析明细", "销售分析明细", saleDetailDtoList, SalespersonCustomer.class);
 	}
 
+
+	/**
+	 * 实时总览
+	 */
+	@GetMapping("/realTimeOverview")
+	public R<Map<String, Object>> realTimeOverview() {
+		return statisticsService.realTimeOverview();
+	}
+
+	/**
+	 * 融资采购统计
+	 */
+	@GetMapping("/financingProcurement")
+	public R<IPage<FinancingProcurement>> salespersonCustomerDetail(FinancingProcurement financingProcurement, Query query) {
+		return statisticsService.financingProcurement(financingProcurement, Condition.getPage(query));
+	}
+
+	/**
+	 * 融资采购统计合计
+	 */
+	@GetMapping("/financingProcurementSum")
+	public R financingProcurementSum(FinancingProcurement financingProcurement) {
+		return statisticsService.financingProcurementSum(financingProcurement);
+	}
+
+	/**
+	 * 融资采购统计导出
+	 */
+	@GetMapping("/financingProcurementExport")
+	public void financingProcurementExport(FinancingProcurement financingProcurement, HttpServletResponse response) {
+		List<FinancingProcurement> financingProcurementList = statisticsService.financingProcurementExport(financingProcurement);
+		ExcelUtil.export(response, "融资采购统计", "融资采购统计", financingProcurementList, FinancingProcurement.class);
+	}
+
 }

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

@@ -18,10 +18,7 @@ package org.springblade.salesPart.statistics.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.tool.api.R;
-import org.springblade.salesPart.dto.SaleDetail;
-import org.springblade.salesPart.dto.SaleDetailDto;
-import org.springblade.salesPart.dto.SalespersonCustomer;
-import org.springblade.salesPart.dto.StayDoOrder;
+import org.springblade.salesPart.dto.*;
 
 import java.util.List;
 import java.util.Map;
@@ -99,4 +96,12 @@ public interface IStatisticsService {
 	R salespersonCustomerSum(SaleDetail saleDetailDto);
 
 	List<SalespersonCustomer> salespersonCustomerExport(SaleDetail saleDetailDto);
+
+	R<Map<String, Object>> realTimeOverview();
+
+	R<IPage<FinancingProcurement>> financingProcurement(FinancingProcurement financingProcurement, IPage<FinancingProcurement> page);
+
+	R financingProcurementSum(FinancingProcurement financingProcurement);
+
+	List<FinancingProcurement> financingProcurementExport(FinancingProcurement financingProcurement);
 }

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

@@ -22,13 +22,12 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.salesPart.dto.SaleDetail;
-import org.springblade.salesPart.dto.SaleDetailDto;
-import org.springblade.salesPart.dto.SalespersonCustomer;
-import org.springblade.salesPart.dto.StayDoOrder;
+import org.springblade.salesPart.dto.*;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
 import org.springblade.salesPart.entity.PjShip;
+import org.springblade.salesPart.funding.entity.PjpfFunding;
+import org.springblade.salesPart.funding.service.IPjpfFundingService;
 import org.springblade.salesPart.order.service.IOrderItemsService;
 import org.springblade.salesPart.order.service.IOrderService;
 import org.springblade.salesPart.ship.service.IShipService;
@@ -57,6 +56,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 
 	private final IShipService shipService;
 
+	private final IPjpfFundingService pjpfFundingService;
+
 	@Override
 	public R<Map<String, Object>> amountStatistics() {
 		Map<String, Object> map = new HashMap<>();
@@ -1234,4 +1235,57 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		}
 		return customerIPage;
 	}
+
+	@Override
+	public R<Map<String, Object>> realTimeOverview() {
+		List<PjpfFunding> fundingList = pjpfFundingService.list(new LambdaQueryWrapper<PjpfFunding>()
+			.eq(PjpfFunding::getTenantId, AuthUtil.getTenantId())
+			.eq(PjpfFunding::getIsDeleted, 0));
+		Map<String, Object> map = new HashMap<>();
+		map.put("corpName", fundingList.get(0).getFundingPartyName());
+		map.put("surplusFundingAmount", fundingList.stream().map(PjpfFunding::getSurplusFundingAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+		map.put("bondAmount", fundingList.stream().map(PjpfFunding::getBondAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+		map.put("availableAmount", fundingList.stream().map(PjpfFunding::getAvailableAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+		map.put("sumAmount", orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0).eq(PjOrder::getBsType, "RZCG").eq(PjOrder::getWhetherRedeem, 1))
+			.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+		return R.data(map);
+	}
+
+	@Override
+	public R<IPage<FinancingProcurement>> financingProcurement(FinancingProcurement financingProcurement, IPage<FinancingProcurement> page) {
+		financingProcurement.setTenantId(AuthUtil.getTenantId());
+		financingProcurement.setSalesCompanyId(AuthUtil.getDeptId());
+		IPage<FinancingProcurement> customerIPage = orderService.financingProcurement(financingProcurement, page);
+		return R.data(customerIPage);
+	}
+
+	@Override
+	public R financingProcurementSum(FinancingProcurement financingProcurement) {
+		financingProcurement.setTenantId(AuthUtil.getTenantId());
+		financingProcurement.setSalesCompanyId(AuthUtil.getDeptId());
+		List<FinancingProcurement> financingProcurementList = orderService.financingProcurementList(financingProcurement);
+		Map<String, BigDecimal> map = new HashMap<>();
+		if (!financingProcurementList.isEmpty()) {
+			map.put("totalMoney", financingProcurementList.stream().map(FinancingProcurement::getTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("fundingAmount", financingProcurementList.stream().map(FinancingProcurement::getFundingAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("bondAmount", financingProcurementList.stream().map(FinancingProcurement::getBondAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("surplusAmount", financingProcurementList.stream().map(FinancingProcurement::getSurplusAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("surplusNum", financingProcurementList.stream().map(FinancingProcurement::getSurplusNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+		} else {
+			map.put("totalMoney", new BigDecimal("0"));
+			map.put("fundingAmount", new BigDecimal("0"));
+			map.put("bondAmount", new BigDecimal("0"));
+			map.put("surplusAmount", new BigDecimal("0"));
+			map.put("surplusNum", new BigDecimal("0"));
+		}
+		return R.data(map);
+	}
+
+	@Override
+	public List<FinancingProcurement> financingProcurementExport(FinancingProcurement financingProcurement) {
+		financingProcurement.setTenantId(AuthUtil.getTenantId());
+		financingProcurement.setSalesCompanyId(AuthUtil.getDeptId());
+		return orderService.financingProcurementList(financingProcurement);
+	}
 }