Browse Source

2024年11月22日17:19:50

纪新园 1 year ago
parent
commit
958aab43f9
18 changed files with 697 additions and 464 deletions
  1. 11 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/update/entity/UpdateItem.java
  2. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrder.java
  3. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjProductLaunch.java
  4. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/ProductLaunchExportExcel.java
  5. 1 1
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/feign/IFinanceClient.java
  6. 3 3
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  7. 11 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/update/controller/UpdateController.java
  8. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/update/service/IUpdateService.java
  9. 99 14
      blade-service/blade-los/src/main/java/org/springblade/los/business/update/service/impl/UpdateServiceImpl.java
  10. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/check/controller/AuditProecessController.java
  11. 16 5
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  12. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  13. 34 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderItemsController.java
  14. 41 32
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  15. 34 15
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java
  16. 417 385
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  17. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java
  18. 7 7
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

+ 11 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/update/entity/UpdateItem.java

@@ -109,6 +109,11 @@ public class UpdateItem implements Serializable {
 	@ApiModelProperty(value = "字段值")
 	private String fieldValue;
 	/**
+	 * 字段值
+	 */
+	@ApiModelProperty(value = "字段值")
+	private String fieldValueName;
+	/**
 	 * 字段值类型
 	 */
 	@ApiModelProperty(value = "字段值类型")
@@ -130,6 +135,12 @@ public class UpdateItem implements Serializable {
 	private String fieldValueNew;
 
 	/**
+	 * 字段值新
+	 */
+	@ApiModelProperty(value = "字段值新")
+	private String fieldValueNewName;
+
+	/**
 	 * 租户
 	 */
 	@ApiModelProperty(value = "租户")

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

@@ -502,6 +502,12 @@ public class PjOrder implements Serializable {
 	private BigDecimal useAdvanceChargeAmount;
 
 	/**
+	 * 原使用预付款
+	 */
+	@ApiModelProperty(value = "原使用预付款")
+	private BigDecimal useAdvanceChargeAmountOld;
+
+	/**
 	 * 产生预付款
 	 */
 	@ApiModelProperty(value = "产生预付款")

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

@@ -331,4 +331,10 @@ public class PjProductLaunch implements Serializable {
 	 */
 	@TableField(exist = false)
 	private String goodsIds;
+
+	/**
+	 * 返利后单价
+	 */
+	@TableField(exist = false)
+	private String rebatePrice;
 }

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

@@ -91,6 +91,12 @@ public class ProductLaunchExportExcel implements Serializable {
 	private BigDecimal priceFour;
 
 	/**
+	 * 返利后单价
+	 */
+	@ExcelProperty(value = "返利后单价")
+	private String rebatePrice;
+
+	/**
 	 * 共享公司
 	 */
 	@ExcelProperty(value = "共享公司(英文逗号拼接)")

+ 1 - 1
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/feign/IFinanceClient.java

@@ -179,7 +179,7 @@ public interface IFinanceClient {
 	 * 查询账单详情(通过单据id)
 	 */
 	@GetMapping("/acc/selectByParentId")
-	Acc selectByParentId(@RequestParam("parentId") Long parentId);
+	Acc selectByParentId(@RequestParam("parentId") Long parentId, @RequestParam(value = "type", required = false) String type);
 
 	@PostMapping("/settlement/update")
 	void updateSettlement(@Valid @RequestBody Settlement settlement);

+ 3 - 3
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml

@@ -391,13 +391,13 @@
             and find_in_set (fee.fee_cn_name,#{acc.feeCnName})
         </if>
         <if test="acc.billNo != null and acc.billNo != ''">
-            and fee.bill_no like concat('%', #{acc.billNo}, '%')
+            and find_in_set(fee.bill_no,#{acc.billNo})
         </if>
         <if test="acc.accBillNo != null and acc.accBillNo != ''">
-            and fee.acc_bill_no like concat('%', #{acc.accBillNo}, '%')
+            and find_in_set(fee.acc_bill_no,#{acc.accBillNo})
         </if>
         <if test="acc.mblno != null and acc.mblno != ''">
-            and fee.mblno like concat('%', #{acc.mblno}, '%')
+            and find_in_set(fee.mblno,#{acc.mblno})
         </if>
         <if test="acc.hblno != null and acc.hblno != ''">
             and fee.hblno like concat('%', #{acc.hblno}, '%')

+ 11 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/update/controller/UpdateController.java

@@ -188,4 +188,15 @@ public class UpdateController extends BladeController {
 	}
 
 
+	/**
+	 * 获取原数据
+	 */
+	@GetMapping("/getDetail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入update")
+	public R getDetail(Update update) {
+		return R.data(updateService.getDetail(update));
+	}
+
+
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/update/service/IUpdateService.java

@@ -52,4 +52,6 @@ public interface IUpdateService extends IService<Update> {
 	R underReview(Long id);
 
 	void passCancel(Long id);
+
+	Object getDetail(Update update);
 }

+ 99 - 14
blade-service/blade-los/src/main/java/org/springblade/los/business/update/service/impl/UpdateServiceImpl.java

@@ -224,10 +224,10 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 	}
 
 	@Override
-	public Update checkUpdate(Update update) throws Exception{
+	public Update checkUpdate(Update update) throws Exception {
 		Update declare = baseMapper.selectById(update.getId());
 
-		Integer actId = 1113;
+		Integer actId = 1127;
 		String processType = "业务数据修改审批";
 		String checkType = "YW_UPDATE";
 		//审批数据
@@ -472,9 +472,10 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 	}
 
 	/**
-	 *  修改海运进出口中字段值
+	 * 修改海运进出口中字段值
+	 *
 	 * @param amendsList 海运进出口数据
-	 * @param item 修改数据
+	 * @param item       修改数据
 	 */
 	private Bills updateBills(Bills bills, List<Amends> amendsList, List<FeeCenter> feeCenterList, List<FinAccBills> finAccBillsList, UpdateItem item) throws Exception {
 		BCorps bCorps = null;
@@ -618,9 +619,10 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 	}
 
 	/**
-	 *  修改空运进出口中字段值
+	 * 修改空运进出口中字段值
+	 *
 	 * @param amendsList 空运进出口数据
-	 * @param item 修改数据
+	 * @param item       修改数据
 	 */
 	private AeaBills updateAeaBills(AeaBills aeaBills, List<Amends> amendsList, List<FeeCenter> feeCenterList, List<FinAccBills> finAccBillsList, UpdateItem item) throws Exception {
 		BCorps bCorps = null;
@@ -764,9 +766,10 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 	}
 
 	/**
-	 *  修改报关中字段值
+	 * 修改报关中字段值
+	 *
 	 * @param amendsList 报关数据
-	 * @param item 修改数据
+	 * @param item       修改数据
 	 */
 	private CustomsDeclaration updateCustomsDeclaration(CustomsDeclaration customsDeclaration, List<Amends> amendsList, List<FeeCenter> feeCenterList, List<FinAccBills> finAccBillsList, UpdateItem item) throws Exception {
 		BCorps bCorps = null;
@@ -910,9 +913,10 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 	}
 
 	/**
-	 *  修改Amends中字段值
+	 * 修改Amends中字段值
+	 *
 	 * @param amendsList Amends数据
-	 * @param item 修改数据
+	 * @param item       修改数据
 	 */
 	private List<Amends> updateAmends(List<Amends> amendsList, UpdateItem item, BCorps bCorps,
 									  BPorts bPorts, BCountrys bCountrys, BVessels bVessels, BPackages bPackages,
@@ -1017,10 +1021,12 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 		}
 		return amendsList;
 	}
+
 	/**
-	 *  修改费用明细中字段值
+	 * 修改费用明细中字段值
+	 *
 	 * @param feeCenterList 费用数据
-	 * @param item 修改数据
+	 * @param item          修改数据
 	 */
 	private List<FeeCenter> updateFeeCenter(List<FeeCenter> feeCenterList, UpdateItem item, BCorps bCorps,
 											BPorts bPorts, BCountrys bCountrys, BVessels bVessels, BPackages bPackages,
@@ -1127,9 +1133,10 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 	}
 
 	/**
-	 *  修改账单明细中字段值
+	 * 修改账单明细中字段值
+	 *
 	 * @param finAccBillsList 账单数据
-	 * @param item 修改数据
+	 * @param item            修改数据
 	 */
 	private List<FinAccBills> updateFinAccBills(List<FinAccBills> finAccBillsList, UpdateItem item, BCorps bCorps,
 												BPorts bPorts, BCountrys bCountrys, BVessels bVessels, BPackages bPackages,
@@ -1239,6 +1246,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表客户字段值
+	 *
 	 * @param bCorps    客户
 	 * @param mainField 赋值字段
 	 */
@@ -1284,6 +1292,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表港口字段值
+	 *
 	 * @param bCorps    港口
 	 * @param mainField 赋值字段
 	 */
@@ -1328,6 +1337,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表国家字段值
+	 *
 	 * @param bCorps    国家
 	 * @param mainField 赋值字段
 	 */
@@ -1372,6 +1382,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表船名字段值
+	 *
 	 * @param bCorps    船名
 	 * @param mainField 赋值字段
 	 */
@@ -1416,6 +1427,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表包装单位字段值
+	 *
 	 * @param bCorps    包装单位
 	 * @param mainField 赋值字段
 	 */
@@ -1460,6 +1472,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表计量单位字段值
+	 *
 	 * @param bCorps    计量单位
 	 * @param mainField 赋值字段
 	 */
@@ -1504,6 +1517,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表费用字段值
+	 *
 	 * @param bCorps    费用
 	 * @param mainField 赋值字段
 	 */
@@ -1548,6 +1562,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表集装箱箱型字段值
+	 *
 	 * @param bCorps    集装箱箱型
 	 * @param mainField 赋值字段
 	 */
@@ -1592,6 +1607,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表服务条款字段值
+	 *
 	 * @param bCorps    服务条款
 	 * @param mainField 赋值字段
 	 */
@@ -1636,6 +1652,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表贸易方式字段值
+	 *
 	 * @param bCorps    贸易方式
 	 * @param mainField 赋值字段
 	 */
@@ -1680,6 +1697,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表航线字段值
+	 *
 	 * @param bCorps    航线
 	 * @param mainField 赋值字段
 	 */
@@ -1724,6 +1742,7 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 
 	/**
 	 * 重新赋值主表货物字段值
+	 *
 	 * @param bCorps    货物
 	 * @param mainField 赋值字段
 	 */
@@ -1788,4 +1807,70 @@ public class UpdateServiceImpl extends ServiceImpl<UpdateMapper, Update> impleme
 		baseMapper.updateById(update);
 	}
 
+	@Override
+	public Object getDetail(Update update) {
+		//判断业务类型 获取对应类型业务数据
+		if ("SE".equals(update.getBusinessType()) || "SI".equals(update.getBusinessType())) {
+			LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<Bills>()
+				.eq(Bills::getBusinessType, update.getBusinessType())
+				.eq(Bills::getTenantId, AuthUtil.getTenantId())
+				.eq(Bills::getIsDeleted, 0);
+			if (ObjectUtils.isNull(update.getRetrievalType())) {
+				throw new RuntimeException("检索类型必填");
+			}
+			if ("1".equals(update.getRetrievalType())) {
+				lambdaQueryWrapper.eq(Bills::getBillNo, update.getRetrievalValue());
+			} else if ("2".equals(update.getRetrievalType())) {
+				lambdaQueryWrapper.eq(Bills::getMblno, update.getRetrievalValue());
+			}
+			lambdaQueryWrapper.last("limit 1");
+			Bills bills = billsService.getOne(lambdaQueryWrapper);
+			if (bills == null) {
+				throw new RuntimeException("未查到原单据信息");
+			}
+			return bills;
+		} else if ("AI".equals(update.getBusinessType()) || "AE".equals(update.getBusinessType())) {
+			LambdaQueryWrapper<AeaBills> lambdaQueryWrapper = new LambdaQueryWrapper<AeaBills>()
+				.eq(AeaBills::getBusinessType, update.getBusinessType())
+				.eq(AeaBills::getTenantId, AuthUtil.getTenantId())
+				.eq(AeaBills::getIsDeleted, 0);
+			if (ObjectUtils.isNull(update.getRetrievalType())) {
+				throw new RuntimeException("检索类型必填");
+			}
+			if ("1".equals(update.getRetrievalType())) {
+				lambdaQueryWrapper.eq(AeaBills::getBillNo, update.getRetrievalValue());
+			} else if ("2".equals(update.getRetrievalType())) {
+				lambdaQueryWrapper.eq(AeaBills::getMblno, update.getRetrievalValue());
+			}
+			lambdaQueryWrapper.last("limit 1");
+			AeaBills aeaBills = aeaBillsService.getOne(lambdaQueryWrapper);
+			if (aeaBills == null) {
+				throw new RuntimeException("未查到原单据信息");
+			}
+			return aeaBills;
+		} else if ("BGSE".equals(update.getBusinessType()) || "BGSI".equals(update.getBusinessType()) ||
+			"BGAI".equals(update.getBusinessType()) || "BGAE".equals(update.getBusinessType())) {
+			LambdaQueryWrapper<CustomsDeclaration> lambdaQueryWrapper = new LambdaQueryWrapper<CustomsDeclaration>()
+				.eq(CustomsDeclaration::getBusinessType, update.getBusinessType())
+				.eq(CustomsDeclaration::getTenantId, AuthUtil.getTenantId())
+				.eq(CustomsDeclaration::getIsDeleted, 0);
+			if (ObjectUtils.isNull(update.getRetrievalType())) {
+				throw new RuntimeException("检索类型必填");
+			}
+			if ("1".equals(update.getRetrievalType())) {
+				lambdaQueryWrapper.eq(CustomsDeclaration::getBillNo, update.getRetrievalValue());
+			} else if ("2".equals(update.getRetrievalType())) {
+				lambdaQueryWrapper.eq(CustomsDeclaration::getMblno, update.getRetrievalValue());
+			}
+			lambdaQueryWrapper.last("limit 1");
+			CustomsDeclaration customsDeclaration = customsDeclarationService.getOne(lambdaQueryWrapper);
+			if (customsDeclaration == null) {
+				throw new RuntimeException("未查到原单据信息");
+			}
+			return customsDeclaration;
+		} else {
+			return null;
+		}
+	}
+
 }

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/check/controller/AuditProecessController.java

@@ -84,6 +84,7 @@ public class AuditProecessController extends BladeController {
 		lambdaQueryWrapper.eq(StringUtils.isNotBlank(auditProecess.getAuditStatus()), LosAuditProecess::getAuditStatus, auditProecess.getAuditStatus());//审核状态
 		lambdaQueryWrapper.eq(auditProecess.getCorpId() != null, LosAuditProecess::getCorpId, auditProecess.getCorpId());//往来单位
 		lambdaQueryWrapper.like(StringUtils.isNotBlank(auditProecess.getBillNo()), LosAuditProecess::getBillNo, auditProecess.getBillNo());//业务编号
+		lambdaQueryWrapper.like(StringUtils.isNotBlank(auditProecess.getReferenceNumber()), LosAuditProecess::getReferenceNumber, auditProecess.getReferenceNumber());//参考号
 		lambdaQueryWrapper.eq(auditProecess.getSendUserId() != null, LosAuditProecess::getSendUserId, auditProecess.getSendUserId());//请核人id
 		lambdaQueryWrapper.ge(auditProecess.getApplybegintime() != null, LosAuditProecess::getSendTime, auditProecess.getApplybegintime());//请核时间
 		lambdaQueryWrapper.le(auditProecess.getApplyendtime() != null, LosAuditProecess::getSendTime, auditProecess.getApplyendtime());

+ 16 - 5
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -622,6 +622,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				BigDecimal amount = list.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 				BigDecimal amountD = new BigDecimal("0.00");
 				BigDecimal amountC = new BigDecimal("0.00");
+				BigDecimal amountCnyD = order.getOrderFeesList().stream().filter(e -> "CNY".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				BigDecimal amountUsdD = order.getOrderFeesList().stream().filter(e -> "USD".equals(e.getCurrency()) && 1 == e.getFeesType()).map(OrderFees::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if ("CNY".equals(order.getCurrency())) {
+					amountUsdD = amountUsdD.multiply(order.getExchangeRate());
+					amount = amount.add(amountCnyD).add(amountUsdD);
+				} else {
+					amountCnyD = amountCnyD.divide(order.getExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
+					amount = amount.add(amountCnyD).add(amountUsdD);
+				}
 				for (OrderFees item : order.getOrderFeesList()) {
 					if (1 == item.getFeesType()) {
 						amountD = amountD.add(item.getAmount().multiply(item.getExchangeRate()));
@@ -657,11 +666,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				// 毛利率
 				order.setGrossProfitRate(grossProfitRate);
 				if (order.getId() != null){
-					Acc acc = financeClient.selectByParentId(order.getId());
+					Acc acc = financeClient.selectByParentId(order.getId(),"收费");
 					if (acc != null){
-						BigDecimal amountItem = list.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-						acc.setAmount(amountItem.add(amountD));
-						acc.setPrice(amountItem.add(amountD));
+						acc.setAmount(amount);
+						acc.setPrice(amount);
 						acc.setSrcRefno(order.getOrderNo());
 						acc.setAccSysNo(order.getOrderNo());
 						financeClient.update(acc);
@@ -2065,7 +2073,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		/**===========================End撤销操作返利信息=============================*/
 
 		//删除账单明细
-		Acc acc = financeClient.selectByParentId(orderMessage.getId());
+		Acc acc = financeClient.selectByParentId(orderMessage.getId(),null);
 		if (ObjectUtil.isNotEmpty(acc)) {
 			financeClient.remove(acc.getId().toString());
 		}
@@ -8162,6 +8170,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				amount = amount.add(amountCnyD).add(amountUsdD);
 			}
 		}
+		else{
+			throw new RuntimeException("费用明细已生成账单");
+		}
 		price = amount;
 		Items items = new Items();
 		items.setBelongToCorpId(order.getBelongToCorpId());

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

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

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

@@ -30,13 +30,18 @@ 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.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
+import org.springblade.salesPart.order.mapper.OrderMapper;
 import org.springblade.salesPart.order.service.IOrderItemsService;
 import org.springblade.salesPart.vo.OrderItemsVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 配件销售采购明细控制器
@@ -52,6 +57,8 @@ public class OrderItemsController extends BladeController {
 
 	private final IOrderItemsService orderItemsService;
 
+	private final OrderMapper orderMapper;
+
 	/**
 	 * 详情
 	 */
@@ -139,6 +146,33 @@ public class OrderItemsController extends BladeController {
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "删除", notes = "传入ids")
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		List<Long> arr = Func.toLongList(ids);
+		List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
+		PjOrder order = new PjOrder();
+		if (!arr.isEmpty()) {
+			PjOrderItems orderItems = orderItemsService.getById(arr.get(0));
+			if (orderItems != null) {
+				pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+					.eq(PjOrderItems::getIsDeleted, 0)
+					.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+					.eq(PjOrderItems::getPid, orderItems.getPid()));
+				order = orderMapper.selectById(orderItems.getPid());
+			}
+		}
+		if (order != null && ("TKCG".equals(order.getBsType()) || "TKXS".equals(order.getBsType()))) {
+			order.setNumberRows(pjOrderItemsList.size() - arr.size());//行数
+			//总退货金额
+			order.setReturnsAmount(pjOrderItemsList.stream().filter(e -> !arr.contains(e.getId())).map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//总退货数量
+			order.setReturnsNumber(pjOrderItemsList.stream().filter(e -> !arr.contains(e.getId())).map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			order.setGoodsTotalNum(pjOrderItemsList.stream().filter(e -> !arr.contains(e.getId())).map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			order.setTotalMoney(pjOrderItemsList.stream().filter(e -> !arr.contains(e.getId())).map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			order.setCost(pjOrderItemsList.stream().filter(e -> !arr.contains(e.getId())).map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			order.setRebateCost(pjOrderItemsList.stream().filter(e -> !arr.contains(e.getId())).map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			order.setGrossProfit(pjOrderItemsList.stream().filter(e -> !arr.contains(e.getId())).map(PjOrderItems::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			order.setRebateGrossProfit(pjOrderItemsList.stream().filter(e -> !arr.contains(e.getId())).map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			orderMapper.updateById(order);
+		}
 
 		return R.status(orderItemsService.removeByIds(Func.toLongList(ids)));
 	}

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

@@ -2908,8 +2908,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						.setScale(2, RoundingMode.HALF_UP)));
 				BigDecimal fundingAmount = order.getFundingAmount();
 				order.setPrimaryFundingAmount(fundingAmount);
+				order.setFundingAmount(actualFundingAmount);
 				if (fundingAmount.compareTo(actualFundingAmount) > 0) {
+					order.setUseAdvanceChargeAmountOld(order.getUseAdvanceChargeAmount());
 					BigDecimal amount = fundingAmount.subtract(actualFundingAmount);
+					if (order.getUseAdvanceChargeAmount().compareTo(actualFundingAmount) > 0) {
+						BigDecimal subAmount = order.getUseAdvanceChargeAmount().subtract(actualFundingAmount);
+						order.setUseAdvanceChargeAmount(actualFundingAmount);
+						detail.setAdvancePaymentBalance(detail.getAdvancePaymentBalance().add(subAmount));
+						detail.setOutOverpaymen(detail.getOutOverpaymen().subtract(subAmount));
+					}
 					order.setProduceAdvanceChargeAmount(amount);
 					detail.setAdvancePaymentBalance(detail.getAdvancePaymentBalance().add(amount));
 					detail.setInOverpayment(detail.getInOverpayment().add(amount));
@@ -3011,37 +3019,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			order.setGoodsTotalNum(order.getPrimaryGoodsTotalNum());
 			order.setStatus(OrderTypeEnum.GOODSRECEIVED.getType());
 			order.setXcxStatus(OrderTypeEnum.GOODSRECEIVED.getType());
-			if (ObjectUtils.isNotNull(order.getProduceAdvanceChargeAmount()) &&
-				new BigDecimal("0.00").compareTo(order.getProduceAdvanceChargeAmount()) != 0) {
-				AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
-					.eq(AdvanceCharge::getIsDeleted, 0)
-					.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
-					.eq(AdvanceCharge::getCorpId, order.getFundingPartyId()));
-				if (advanceCharge != null) {
-					if (advanceCharge.getAdvancePaymentBalance().compareTo(order.getProduceAdvanceChargeAmount()) < 0) {
-						throw new RuntimeException("预付款余额:" + advanceCharge.getAdvancePaymentBalance() + "小于本次产生预付款:"
-							+ order.getProduceAdvanceChargeAmount());
-					}
-					advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().subtract(order.getProduceAdvanceChargeAmount()));
-					advanceCharge.setInOverpayment(advanceCharge.getInOverpayment().subtract(order.getProduceAdvanceChargeAmount()));
-					advanceChargeService.saveOrUpdate(advanceCharge);
-					AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
-					advanceChargeItem.setPid(advanceCharge.getId());
-					advanceChargeItem.setSrcPid(order.getId());
-					advanceChargeItem.setOrderNo(order.getSrcNo());
-					advanceChargeItem.setBillNo(order.getSrcNo());
-					advanceChargeItem.setOverpayment(new BigDecimal("0.00").subtract(order.getProduceAdvanceChargeAmount()));
-					advanceChargeItem.setOverpaymentType(1);
-					advanceChargeItem.setSrcOrderNo(order.getOrdNo());
-					advanceChargeItem.setIdentifier(0);
-					advanceChargeItem.setCreateUser(AuthUtil.getUserId());
-					advanceChargeItem.setCreateUserName(AuthUtil.getUserName());
-					advanceChargeItem.setCreateDept(advanceCharge.getCreateDept());
-					advanceChargeItemService.saveOrUpdate(advanceChargeItem);
-				} else {
-					throw new RuntimeException("未找到预付款信息");
-				}
-			}
 			String proportion = sysClient.getParamService("first.month.proportion");
 			PjpfFunding pjpfFunding = pjpfFundingService.getOne(new LambdaQueryWrapper<PjpfFunding>()
 				.eq(PjpfFunding::getTenantId, AuthUtil.getTenantId())
@@ -3061,7 +3038,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				BigDecimal primaryFundingAmount = order.getSalesAmount().multiply(
 					(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
 						.setScale(2, RoundingMode.HALF_UP)));
-				order.setPrimaryFundingAmount(actualFundingAmount);
+				order.setFundingAmount(primaryFundingAmount);
 				pjpfFunding.setPrimaryFundingAmount(pjpfFunding.getPrimaryFundingAmount().subtract(actualFundingAmount).add(primaryFundingAmount));
 				pjpfFunding.setSurplusFundingAmount(pjpfFunding.getSurplusFundingAmount().subtract(actualFundingAmount).add(primaryFundingAmount));
 				pjpfFunding.setBondAmount(pjpfFunding.getBondAmount().subtract(actualBondAmount).add(primaryBondAmount));
@@ -3094,6 +3071,38 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				item.setBondAmount(new BigDecimal("0.00").subtract(actualBondAmount));
 				item.setFundingAmount(new BigDecimal("0.00").subtract(actualFundingAmount));
 				pjpfFundingItemService.save(item);
+				if (ObjectUtils.isNotNull(order.getProduceAdvanceChargeAmount()) &&
+					new BigDecimal("0.00").compareTo(order.getProduceAdvanceChargeAmount()) != 0) {
+					AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
+						.eq(AdvanceCharge::getIsDeleted, 0)
+						.eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
+						.eq(AdvanceCharge::getCorpId, order.getFundingPartyId()));
+					if (advanceCharge != null) {
+						BigDecimal subAmount = order.getUseAdvanceChargeAmountOld().subtract(order.getUseAdvanceChargeAmount());
+						advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().subtract(order.getProduceAdvanceChargeAmount())
+							.subtract(subAmount));
+						advanceCharge.setInOverpayment(advanceCharge.getInOverpayment().subtract(order.getProduceAdvanceChargeAmount()));
+						advanceCharge.setOutOverpaymen(advanceCharge.getOutOverpaymen().add(subAmount));
+						advanceChargeService.saveOrUpdate(advanceCharge);
+						AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
+						advanceChargeItem.setPid(advanceCharge.getId());
+						advanceChargeItem.setSrcPid(order.getId());
+						advanceChargeItem.setOrderNo(order.getSrcNo());
+						advanceChargeItem.setBillNo(order.getSrcNo());
+						advanceChargeItem.setOverpayment(new BigDecimal("0.00").subtract(order.getProduceAdvanceChargeAmount()));
+						advanceChargeItem.setOverpaymentType(1);
+						advanceChargeItem.setSrcOrderNo(order.getOrdNo());
+						advanceChargeItem.setIdentifier(0);
+						advanceChargeItem.setCreateUser(AuthUtil.getUserId());
+						advanceChargeItem.setCreateUserName(AuthUtil.getUserName());
+						advanceChargeItem.setCreateDept(advanceCharge.getCreateDept());
+						advanceChargeItemService.saveOrUpdate(advanceChargeItem);
+						order.setProduceAdvanceChargeAmount(new BigDecimal("0.00"));
+						order.setUseAdvanceChargeAmount(order.getUseAdvanceChargeAmountOld());
+					} else {
+						throw new RuntimeException("未找到预付款信息");
+					}
+				}
 			} else {
 				throw new RuntimeException("未找到融资总账信息");
 			}

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

@@ -136,22 +136,22 @@ public class ProductLaunchController extends BladeController {
 				String[] chineseWords = productLaunch.getCname().split("[^一-龥]");
 				if (chineseWords.length > 0) {
 					String cname = productLaunch.getCname().substring(chineseWords[0].length());
-					if (ObjectUtils.isNotNull(cname)){
+					if (ObjectUtils.isNotNull(cname)) {
 						lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, cname)
-							.or().like(PjProductLaunch::getCnameInt, cname)
-							.or().like(PjProductLaunch::getBrandItem, cname)
-							.or().like(PjProductLaunch::getSpecificationAndModel, cname)
+								.or().like(PjProductLaunch::getCnameInt, cname)
+								.or().like(PjProductLaunch::getBrandItem, cname)
+								.or().like(PjProductLaunch::getSpecificationAndModel, cname)
 //							.or().like(PjProductLaunch::getBrandName, chineseWords[0])
 						);
-					lambdaQueryWrapper.like(PjProductLaunch::getBrandName, chineseWords[0]);
-					}else{
+						lambdaQueryWrapper.like(PjProductLaunch::getBrandName, chineseWords[0]);
+					} else {
 						lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, chineseWords[0])
-							.or().like(PjProductLaunch::getCnameInt, chineseWords[0])
-							.or().like(PjProductLaunch::getBrandItem, chineseWords[0])
-							.or().like(PjProductLaunch::getSpecificationAndModel, chineseWords[0])
+								.or().like(PjProductLaunch::getCnameInt, chineseWords[0])
+								.or().like(PjProductLaunch::getBrandItem, chineseWords[0])
+								.or().like(PjProductLaunch::getSpecificationAndModel, chineseWords[0])
 //							.or().like(PjProductLaunch::getBrandName, chineseWords[0])
 						);
-					lambdaQueryWrapper.like(PjProductLaunch::getBrandName, chineseWords[0]);
+						lambdaQueryWrapper.like(PjProductLaunch::getBrandName, chineseWords[0]);
 					}
 				} else {
 					lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, productLaunch.getCname())
@@ -459,6 +459,14 @@ public class ProductLaunchController extends BladeController {
 		List<PjProductLaunch> pjProductLaunchList = productLaunchService.list(lambdaQueryWrapper);
 		String deptId = pjProductLaunchList.stream().map(PjProductLaunch::getSharedCompany).filter(ObjectUtils::isNotNull).distinct().collect(Collectors.joining(","));
 		R<List<Dept>> deptList = iSysClient.selectByDeptIds(deptId);
+		List<PjStockDesc> stockDescList = new ArrayList<>();
+		if (!pjProductLaunchList.isEmpty()) {
+			List<Long> goodsIds = pjProductLaunchList.stream().map(PjProductLaunch::getGoodsId).distinct().collect(Collectors.toList());
+			stockDescList = stockDescMapper.selectList(new LambdaQueryWrapper<PjStockDesc>()
+				.eq(PjStockDesc::getIsDeleted, 0)
+				.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+				.in(PjStockDesc::getGoodsId, goodsIds));
+		}
 		for (PjProductLaunch item : pjProductLaunchList) {
 			PjGoodsDesc pjGoodsDesc = pjGoodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
 			if (pjGoodsDesc != null) {
@@ -471,6 +479,17 @@ public class ProductLaunchController extends BladeController {
 					.map(Dept::getFullName).collect(Collectors.joining(" | "));
 				item.setSharedCompany(deptName);
 			}
+			if (!stockDescList.isEmpty()) {
+				List<PjStockDesc> stockDescs = stockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
+				for (PjStockDesc desc : stockDescs) {
+					if (ObjectUtils.isNotNull(item.getRebatePrice())){
+						item.setRebatePrice(item.getRebatePrice() + desc.getRebatePrice() + ",");
+					}else{
+						item.setRebatePrice(desc.getRebatePrice() + ",");
+					}
+					item.setRebatePrice(item.getRebatePrice().substring(0,item.getRebatePrice().length()-1));
+				}
+			}
 		}
 		ExcelUtil.export(response, "导出产品上下架数据", "产品上下架数据表", BeanUtil.copyProperties(pjProductLaunchList, ProductLaunchExportExcel.class), ProductLaunchExportExcel.class);
 	}
@@ -558,14 +577,14 @@ public class ProductLaunchController extends BladeController {
 				String[] chineseWords = productLaunch.getCname().split("[^一-龥]");
 				if (chineseWords.length > 0) {
 					String cname = productLaunch.getCname().substring(chineseWords[0].length());
-					if (ObjectUtils.isNotNull(cname)){
+					if (ObjectUtils.isNotNull(cname)) {
 						lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, cname)
-							.or().like(PjProductLaunch::getCnameInt, cname)
-							.or().like(PjProductLaunch::getBrandItem, cname)
-							.or().like(PjProductLaunch::getSpecificationAndModel, cname)
+								.or().like(PjProductLaunch::getCnameInt, cname)
+								.or().like(PjProductLaunch::getBrandItem, cname)
+								.or().like(PjProductLaunch::getSpecificationAndModel, cname)
 //							.or().like(PjProductLaunch::getBrandName, chineseWords[0])
 						);
-					lambdaQueryWrapper.like(PjProductLaunch::getBrandName, chineseWords[0]);
+						lambdaQueryWrapper.like(PjProductLaunch::getBrandName, chineseWords[0]);
 					}/*else{
 						lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, chineseWords[0])
 							.or().like(PjProductLaunch::getCnameInt, chineseWords[0])

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

@@ -839,6 +839,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().subtract(item.getSendNum()));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getRebatePrice())));
 					stockOne.setVersion(stockOne.getVersion());
 					/*R res = iStockDescService.updateByIdNew(stockOne);
 					if (!res.isSuccess()) {
@@ -1383,61 +1384,63 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 							.reduce(BigDecimal.ZERO, BigDecimal::add);
 						items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().add(thisSendSum));
 						items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().add(thisSendAmount));
-						//重新计算所有未赎回融资采购,保证金,融资金额
-						if (!"1".equals(items.getWhetherRedeem())) {
-							Date currentDate = new Date();
-							Calendar calendar = Calendar.getInstance();
-							calendar.setTime(currentDate);
-							calendar.add(Calendar.DAY_OF_MONTH, -60);
-							Date thirtyDayAgo = calendar.getTime();
-							//计算本融资采购剩余金额
+						if (ObjectUtils.isNotNull(items.getSalesAmount()) && new BigDecimal("0.00").compareTo(items.getSalesAmount()) != 0){
+							//重新计算所有未赎回融资采购,保证金,融资金额
+							if (!"1".equals(items.getWhetherRedeem())) {
+								Date currentDate = new Date();
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(currentDate);
+								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());
-							//判断本融资采购单据是否超过两个月 未超过按第一个比例计算,否则按第二个比例计算
-							if (currentDate.compareTo(thirtyDayAgo) > 0) {
-								if (!shipItemsList.isEmpty()) {
-									for (PjShipItems shipItems1 : shipItemsList) {
-										if (ObjectUtils.isNotNull(financingBrand) && financingBrand.contains(shipItems1.getBrandName())) {
-											if (!itemIdList.isEmpty() && itemIdList.contains(shipItems1.getId())) {
-												shipItems1.setProportion(firstProportion);
+								List<Long> itemIdList = allList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getItemId).collect(Collectors.toList());
+								//判断本融资采购单据是否超过两个月 未超过按第一个比例计算,否则按第二个比例计算
+								if (currentDate.compareTo(thirtyDayAgo) > 0) {
+									if (!shipItemsList.isEmpty()) {
+										for (PjShipItems shipItems1 : shipItemsList) {
+											if (ObjectUtils.isNotNull(financingBrand) && financingBrand.contains(shipItems1.getBrandName())) {
+												if (!itemIdList.isEmpty() && itemIdList.contains(shipItems1.getId())) {
+													shipItems1.setProportion(firstProportion);
+												}
 											}
 										}
 									}
-								}
-								String[] arr = firstProportion.split(":");
-								//计算剩余金额的保证金
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								//计算剩余金额的融资金额
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().subtract(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
-							} else {
-								if (!shipItemsList.isEmpty()) {
-									for (PjShipItems shipItems1 : shipItemsList) {
-										if (!itemIdList.isEmpty() && itemIdList.contains(shipItems1.getId())) {
-											shipItems1.setProportion(secondProportion);
+									String[] arr = firstProportion.split(":");
+									//计算剩余金额的保证金
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									//计算剩余金额的融资金额
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().subtract(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								} else {
+									if (!shipItemsList.isEmpty()) {
+										for (PjShipItems shipItems1 : shipItemsList) {
+											if (!itemIdList.isEmpty() && itemIdList.contains(shipItems1.getId())) {
+												shipItems1.setProportion(secondProportion);
+											}
 										}
 									}
+									String[] arr = secondProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().subtract(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
 								}
-								String[] arr = secondProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().subtract(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
 							}
 						}
 						orderMapper.updateById(items);
@@ -1602,6 +1605,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().add(item.getSendNum()));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().add(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().add(item.getSendNum().multiply(stockOne.getRebatePrice())));
 					stockOne.setVersion(stockOne.getVersion());
 					pjStockDescArrayList.add(stockOne);
 					/*R res = iStockDescService.updateByIdNew(stockOne);
@@ -1976,110 +1980,112 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().subtract(thisSendSum));
 					items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().subtract(thisSendAmount));
-					if (orderIdsList.contains(items.getId())) {
-						if (!"1".equals(items.getWhetherRedeem())) {
-							Date currentDate = new Date();
-							Calendar calendar = Calendar.getInstance();
-							calendar.setTime(currentDate);
-							calendar.add(Calendar.DAY_OF_MONTH, -60);
-							Date thirtyDayAgo = calendar.getTime();
-							List<Long> itemIdList = financingShipItemDtoList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getItemId).collect(Collectors.toList());
-							List<PjShipItems> shipItems = new ArrayList<>();
-							if (!itemIdList.isEmpty()) {
-								shipItems = itemsList.stream().filter(e -> itemIdList.contains(e.getId())).collect(Collectors.toList());
-							}
-							if (currentDate.compareTo(thirtyDayAgo) > 0) {
-								String secondProportionOld = "";
-								if (!shipItems.isEmpty() && ObjectUtils.isNotNull(shipItems.get(0).getProportion())) {
-									secondProportionOld = shipItems.get(0).getProportion();
-								} else {
-									throw new RuntimeException("未找到出库融资比例");
+					if (ObjectUtils.isNotNull(items.getSalesAmount()) && new BigDecimal("0.00").compareTo(items.getSalesAmount()) != 0){
+						if (orderIdsList.contains(items.getId())) {
+							if (!"1".equals(items.getWhetherRedeem())) {
+								Date currentDate = new Date();
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(currentDate);
+								calendar.add(Calendar.DAY_OF_MONTH, -60);
+								Date thirtyDayAgo = calendar.getTime();
+								List<Long> itemIdList = financingShipItemDtoList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getItemId).collect(Collectors.toList());
+								List<PjShipItems> shipItems = new ArrayList<>();
+								if (!itemIdList.isEmpty()) {
+									shipItems = itemsList.stream().filter(e -> itemIdList.contains(e.getId())).collect(Collectors.toList());
 								}
-								String[] arr = secondProportionOld.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().add(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
-							} else {
-								String firstProportionOld = "";
-								if (!shipItems.isEmpty() && ObjectUtils.isNotNull(shipItems.get(0).getProportion())) {
-									firstProportionOld = shipItems.get(0).getProportion();
+								if (currentDate.compareTo(thirtyDayAgo) > 0) {
+									String secondProportionOld = "";
+									if (!shipItems.isEmpty() && ObjectUtils.isNotNull(shipItems.get(0).getProportion())) {
+										secondProportionOld = shipItems.get(0).getProportion();
+									} else {
+										throw new RuntimeException("未找到出库融资比例");
+									}
+									String[] arr = secondProportionOld.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().add(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
 								} else {
-									throw new RuntimeException("未找到出库融资比例");
+									String firstProportionOld = "";
+									if (!shipItems.isEmpty() && ObjectUtils.isNotNull(shipItems.get(0).getProportion())) {
+										firstProportionOld = shipItems.get(0).getProportion();
+									} else {
+										throw new RuntimeException("未找到出库融资比例");
+									}
+									String[] arr = firstProportionOld.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().add(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
 								}
-								String[] arr = firstProportionOld.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().add(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
 							}
-						}
-					} else {
-						if (!"1".equals(items.getWhetherRedeem())) {
-							Date currentDate = new Date();
-							Calendar calendar = Calendar.getInstance();
-							calendar.setTime(currentDate);
-							calendar.add(Calendar.DAY_OF_MONTH, -60);
-							Date thirtyDayAgo = calendar.getTime();
-							List<Long> itemIdList = financingShipItemDtoList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getId).collect(Collectors.toList());
-							List<PjShipItems> shipItems = new ArrayList<>();
-							if (!itemIdList.isEmpty()) {
-								shipItems = itemsList.stream().filter(e -> itemIdList.contains(e.getId())).collect(Collectors.toList());
-							}
-							if (currentDate.compareTo(thirtyDayAgo) > 0) {
-								if (!shipItems.isEmpty()) {
-									for (PjShipItems shipItems1 : itemsList) {
-										if (ObjectUtils.isNotNull(financingBrand) && financingBrand.contains(shipItems1.getBrandName())) {
-											shipItems1.setProportion(firstProportion);
+						} else {
+							if (!"1".equals(items.getWhetherRedeem())) {
+								Date currentDate = new Date();
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(currentDate);
+								calendar.add(Calendar.DAY_OF_MONTH, -60);
+								Date thirtyDayAgo = calendar.getTime();
+								List<Long> itemIdList = financingShipItemDtoList.stream().filter(e -> e.getPid().equals(items.getId())).map(FinancingShipItemDto::getId).collect(Collectors.toList());
+								List<PjShipItems> shipItems = new ArrayList<>();
+								if (!itemIdList.isEmpty()) {
+									shipItems = itemsList.stream().filter(e -> itemIdList.contains(e.getId())).collect(Collectors.toList());
+								}
+								if (currentDate.compareTo(thirtyDayAgo) > 0) {
+									if (!shipItems.isEmpty()) {
+										for (PjShipItems shipItems1 : itemsList) {
+											if (ObjectUtils.isNotNull(financingBrand) && financingBrand.contains(shipItems1.getBrandName())) {
+												shipItems1.setProportion(firstProportion);
+											}
 										}
 									}
-								}
-								String[] arr = firstProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().add(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
-							} else {
-								if (!shipItems.isEmpty()) {
-									for (PjShipItems shipItems1 : shipItems) {
-										if (ObjectUtils.isNotNull(financingBrand) && financingBrand.contains(shipItems1.getBrandName())) {
-											shipItems1.setProportion(secondProportion);
+									String[] arr = firstProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().add(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								} else {
+									if (!shipItems.isEmpty()) {
+										for (PjShipItems shipItems1 : shipItems) {
+											if (ObjectUtils.isNotNull(financingBrand) && financingBrand.contains(shipItems1.getBrandName())) {
+												shipItems1.setProportion(secondProportion);
+											}
 										}
 									}
+									String[] arr = secondProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().add(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
 								}
-								String[] arr = secondProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().add(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
 							}
 						}
 					}
@@ -2474,8 +2480,11 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockDesc.setStoreInventory(stockDesc.getBalanceQuantity());
 					stockDesc.setInventoryAmount(item.getSendNum().multiply(item.getPrice()));
 					stockDesc.setInventoryAmount(stockDesc.getInventoryAmount().add(stockOne.getInventoryAmount()));
+					stockDesc.setRebateInventoryAmount(item.getSendNum().multiply(item.getRebatePrice()));
+					stockDesc.setRebateInventoryAmount(stockDesc.getRebateInventoryAmount().add(stockOne.getRebateInventoryAmount()));
 					if (stockDesc.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
 						stockDesc.setInventoryCostPrice(stockDesc.getInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+						stockDesc.setRebatePrice(stockDesc.getRebateInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 					}
 					stockDesc.setVersion(stockOne.getVersion());
 					pjStockDescArrayListUpdate.add(stockDesc);
@@ -2643,79 +2652,80 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().subtract(thisSendSum));
 					items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().subtract(thisSendAmount));
-					if (orderIdsList.contains(items.getId())) {
-						if (!"1".equals(items.getWhetherRedeem())) {
-							Date currentDate = new Date();
-							Calendar calendar = Calendar.getInstance();
-							calendar.setTime(currentDate);
-							calendar.add(Calendar.DAY_OF_MONTH, -60);
-							Date thirtyDayAgo = calendar.getTime();
-							if (currentDate.compareTo(thirtyDayAgo) > 0) {
-								String[] arr = secondProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().add(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
-							} else {
-								String[] arr = firstProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().add(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+					if (ObjectUtils.isNotNull(items.getSalesAmount()) && new BigDecimal("0.00").compareTo(items.getSalesAmount()) != 0){
+						if (orderIdsList.contains(items.getId())) {
+							if (!"1".equals(items.getWhetherRedeem())) {
+								Date currentDate = new Date();
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(currentDate);
+								calendar.add(Calendar.DAY_OF_MONTH, -60);
+								Date thirtyDayAgo = calendar.getTime();
+								if (currentDate.compareTo(thirtyDayAgo) > 0) {
+									String[] arr = secondProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().add(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								} else {
+									String[] arr = firstProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().add(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								}
 							}
-						}
-						orderMapper.updateById(items);
-					} else {
-						if (!"1".equals(items.getWhetherRedeem())) {
-							Date currentDate = new Date();
-							Calendar calendar = Calendar.getInstance();
-							calendar.setTime(currentDate);
-							calendar.add(Calendar.DAY_OF_MONTH, -60);
-							Date thirtyDayAgo = calendar.getTime();
-							if (currentDate.compareTo(thirtyDayAgo) > 0) {
-								String[] arr = firstProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().add(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
-							} else {
-								String[] arr = secondProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().add(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+						} else {
+							if (!"1".equals(items.getWhetherRedeem())) {
+								Date currentDate = new Date();
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(currentDate);
+								calendar.add(Calendar.DAY_OF_MONTH, -60);
+								Date thirtyDayAgo = calendar.getTime();
+								if (currentDate.compareTo(thirtyDayAgo) > 0) {
+									String[] arr = firstProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().add(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								} else {
+									String[] arr = secondProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().add(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								}
 							}
 						}
-						orderMapper.updateById(items);
 					}
+					orderMapper.updateById(items);
 				}
 			}
 			pjpfFunding.setAvailableAmount(pjpfFunding.getAvailableAmount().subtract(availableAmountSum));
@@ -3322,42 +3332,44 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 							.reduce(BigDecimal.ZERO, BigDecimal::add);
 						items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().add(thisSendSum));
 						items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().add(thisSendAmount));
-						//重新计算所有未赎回融资采购,保证金,融资金额
-						if (!"1".equals(items.getWhetherRedeem())) {
-							Date currentDate = new Date();
-							Calendar calendar = Calendar.getInstance();
-							calendar.setTime(currentDate);
-							calendar.add(Calendar.DAY_OF_MONTH, -60);
-							Date thirtyDayAgo = calendar.getTime();
-							//判断本融资采购单据是否超过两个月 未超过按第一个比例计算,否则按第二个比例计算
-							if (currentDate.compareTo(thirtyDayAgo) > 0) {
-								String[] arr = firstProportion.split(":");
-								//计算剩余金额的保证金
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								//计算剩余金额的融资金额
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().subtract(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
-							} else {
-								String[] arr = secondProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().subtract(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+						if (ObjectUtils.isNotNull(items.getSalesAmount()) && new BigDecimal("0.00").compareTo(items.getSalesAmount()) != 0){
+							//重新计算所有未赎回融资采购,保证金,融资金额
+							if (!"1".equals(items.getWhetherRedeem())) {
+								Date currentDate = new Date();
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(currentDate);
+								calendar.add(Calendar.DAY_OF_MONTH, -60);
+								Date thirtyDayAgo = calendar.getTime();
+								//判断本融资采购单据是否超过两个月 未超过按第一个比例计算,否则按第二个比例计算
+								if (currentDate.compareTo(thirtyDayAgo) > 0) {
+									String[] arr = firstProportion.split(":");
+									//计算剩余金额的保证金
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									//计算剩余金额的融资金额
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().subtract(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								} else {
+									String[] arr = secondProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().subtract(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								}
 							}
 						}
 						orderMapper.updateById(items);
@@ -4088,9 +4100,11 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().subtract(item.getSendNum()));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(item.getSendNum().multiply(stockOne.getRebatePrice())));
 					stockOne.setVersion(stockOne.getVersion());
 					if (stockOne.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
 						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+						stockOne.setRebatePrice(stockOne.getRebateInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 					}
 					/*R res = iStockDescService.updateByIdNew(stockOne);
 					if (!res.isSuccess()) {
@@ -4360,42 +4374,44 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 							.reduce(BigDecimal.ZERO, BigDecimal::add);
 						items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().add(thisSendSum));
 						items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().add(thisSendAmount));
-						//重新计算所有未赎回融资采购,保证金,融资金额
-						if (!"1".equals(items.getWhetherRedeem())) {
-							Date currentDate = new Date();
-							Calendar calendar = Calendar.getInstance();
-							calendar.setTime(currentDate);
-							calendar.add(Calendar.DAY_OF_MONTH, -60);
-							Date thirtyDayAgo = calendar.getTime();
-							//判断本融资采购单据是否超过两个月 未超过按第一个比例计算,否则按第二个比例计算
-							if (currentDate.compareTo(thirtyDayAgo) > 0) {
-								String[] arr = firstProportion.split(":");
-								//计算剩余金额的保证金
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								//计算剩余金额的融资金额
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().subtract(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
-							} else {
-								String[] arr = secondProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().subtract(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+						if (ObjectUtils.isNotNull(items.getSalesAmount()) && new BigDecimal("0.00").compareTo(items.getSalesAmount()) != 0){
+							//重新计算所有未赎回融资采购,保证金,融资金额
+							if (!"1".equals(items.getWhetherRedeem())) {
+								Date currentDate = new Date();
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(currentDate);
+								calendar.add(Calendar.DAY_OF_MONTH, -60);
+								Date thirtyDayAgo = calendar.getTime();
+								//判断本融资采购单据是否超过两个月 未超过按第一个比例计算,否则按第二个比例计算
+								if (currentDate.compareTo(thirtyDayAgo) > 0) {
+									String[] arr = firstProportion.split(":");
+									//计算剩余金额的保证金
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									//计算剩余金额的融资金额
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().subtract(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								} else {
+									String[] arr = secondProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().subtract(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								}
 							}
 						}
 						orderMapper.updateById(items);
@@ -4516,9 +4532,11 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().add(item.getSendNum()));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().add(item.getSendNum().multiply(stockOne.getInventoryCostPrice())));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().add(item.getSendNum().multiply(stockOne.getRebatePrice())));
 					stockOne.setVersion(stockOne.getVersion());
 					if (stockOne.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
 						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+						stockOne.setRebatePrice(stockOne.getRebateInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 					}
 					pjStockDescArrayList.add(stockOne);
 					/*R res = iStockDescService.updateByIdNew(stockOne);
@@ -4679,38 +4697,40 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().subtract(thisSendSum));
 					items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().subtract(thisSendAmount));
-					if (!"1".equals(items.getWhetherRedeem())) {
-						Date currentDate = new Date();
-						Calendar calendar = Calendar.getInstance();
-						calendar.setTime(currentDate);
-						calendar.add(Calendar.DAY_OF_MONTH, -60);
-						Date thirtyDayAgo = calendar.getTime();
-						if (currentDate.compareTo(thirtyDayAgo) > 0) {
-							String[] arr = secondProportion.split(":");
-							BigDecimal bondAmount = thisSendAmount.multiply(
-								(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-									.setScale(2, RoundingMode.HALF_UP)));
-							BigDecimal fundingAmount = thisSendAmount.multiply(
-								(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-									.setScale(2, RoundingMode.HALF_UP)));
-							availableAmountSum = availableAmountSum.add(bondAmount);
-							items.setBondAmount(items.getBondAmount().add(bondAmount));
-							items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-							bondAmountSum = bondAmountSum.add(bondAmount);
-							fundingAmountSum = fundingAmountSum.add(fundingAmount);
-						} else {
-							String[] arr = firstProportion.split(":");
-							BigDecimal bondAmount = thisSendAmount.multiply(
-								(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-									.setScale(2, RoundingMode.HALF_UP)));
-							BigDecimal fundingAmount = thisSendAmount.multiply(
-								(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-									.setScale(2, RoundingMode.HALF_UP)));
-							availableAmountSum = availableAmountSum.add(bondAmount);
-							items.setBondAmount(items.getBondAmount().add(bondAmount));
-							items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-							bondAmountSum = bondAmountSum.add(bondAmount);
-							fundingAmountSum = fundingAmountSum.add(fundingAmount);
+					if (ObjectUtils.isNotNull(items.getSalesAmount()) && new BigDecimal("0.00").compareTo(items.getSalesAmount()) != 0){
+						if (!"1".equals(items.getWhetherRedeem())) {
+							Date currentDate = new Date();
+							Calendar calendar = Calendar.getInstance();
+							calendar.setTime(currentDate);
+							calendar.add(Calendar.DAY_OF_MONTH, -60);
+							Date thirtyDayAgo = calendar.getTime();
+							if (currentDate.compareTo(thirtyDayAgo) > 0) {
+								String[] arr = secondProportion.split(":");
+								BigDecimal bondAmount = thisSendAmount.multiply(
+									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+										.setScale(2, RoundingMode.HALF_UP)));
+								BigDecimal fundingAmount = thisSendAmount.multiply(
+									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+										.setScale(2, RoundingMode.HALF_UP)));
+								availableAmountSum = availableAmountSum.add(bondAmount);
+								items.setBondAmount(items.getBondAmount().add(bondAmount));
+								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+								bondAmountSum = bondAmountSum.add(bondAmount);
+								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+							} else {
+								String[] arr = firstProportion.split(":");
+								BigDecimal bondAmount = thisSendAmount.multiply(
+									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+										.setScale(2, RoundingMode.HALF_UP)));
+								BigDecimal fundingAmount = thisSendAmount.multiply(
+									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+										.setScale(2, RoundingMode.HALF_UP)));
+								availableAmountSum = availableAmountSum.add(bondAmount);
+								items.setBondAmount(items.getBondAmount().add(bondAmount));
+								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+								bondAmountSum = bondAmountSum.add(bondAmount);
+								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+							}
 						}
 					}
 					orderMapper.updateById(items);
@@ -5067,12 +5087,15 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockDesc.setBalanceQuantity(item.getSendNum());
 					stockDesc.setStoreInventory(item.getSendNum());
 					stockDesc.setInventoryAmount(item.getSendNum().multiply(item.getPrice()));
+					stockDesc.setRebateInventoryAmount(item.getSendNum().multiply(item.getRebatePrice()));
 					if (stockDesc.getBalanceQuantity().compareTo(new BigDecimal("0")) != 0) {
 //						BigDecimal amount = ObjectUtils.isNotNull(orderItems.getCostprie()) ? orderItems.getCostprie() : stockDesc.getInventoryAmount();
 						stockDesc.setInventoryCostPrice(stockDesc.getInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+						stockDesc.setRebatePrice(stockDesc.getRebateInventoryAmount().divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 //						stockDesc.setInventoryCostPrice(amount.divide(stockDesc.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 					} else {
 						stockDesc.setInventoryCostPrice(item.getPrice());
+						stockDesc.setRebatePrice(item.getRebatePrice());
 					}
 					pjStockDescArrayListSave.add(stockDesc);
 				} else {
@@ -5252,39 +5275,40 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().subtract(thisSendSum));
 					items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().subtract(thisSendAmount));
-
-					if (!"1".equals(items.getWhetherRedeem())) {
-						Date currentDate = new Date();
-						Calendar calendar = Calendar.getInstance();
-						calendar.setTime(currentDate);
-						calendar.add(Calendar.DAY_OF_MONTH, -60);
-						Date thirtyDayAgo = calendar.getTime();
-						if (currentDate.compareTo(thirtyDayAgo) > 0) {
-							String[] arr = firstProportion.split(":");
-							BigDecimal bondAmount = thisSendAmount.multiply(
-								(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-									.setScale(2, RoundingMode.HALF_UP)));
-							BigDecimal fundingAmount = thisSendAmount.multiply(
-								(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-									.setScale(2, RoundingMode.HALF_UP)));
-							availableAmountSum = availableAmountSum.add(bondAmount);
-							items.setBondAmount(items.getBondAmount().add(bondAmount));
-							items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-							bondAmountSum = bondAmountSum.add(bondAmount);
-							fundingAmountSum = fundingAmountSum.add(fundingAmount);
-						} else {
-							String[] arr = secondProportion.split(":");
-							BigDecimal bondAmount = thisSendAmount.multiply(
-								(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-									.setScale(2, RoundingMode.HALF_UP)));
-							BigDecimal fundingAmount = thisSendAmount.multiply(
-								(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-									.setScale(2, RoundingMode.HALF_UP)));
-							availableAmountSum = availableAmountSum.add(bondAmount);
-							items.setBondAmount(items.getBondAmount().add(bondAmount));
-							items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
-							bondAmountSum = bondAmountSum.add(bondAmount);
-							fundingAmountSum = fundingAmountSum.add(fundingAmount);
+					if (ObjectUtils.isNotNull(items.getSalesAmount()) && new BigDecimal("0.00").compareTo(items.getSalesAmount()) != 0){
+						if (!"1".equals(items.getWhetherRedeem())) {
+							Date currentDate = new Date();
+							Calendar calendar = Calendar.getInstance();
+							calendar.setTime(currentDate);
+							calendar.add(Calendar.DAY_OF_MONTH, -60);
+							Date thirtyDayAgo = calendar.getTime();
+							if (currentDate.compareTo(thirtyDayAgo) > 0) {
+								String[] arr = firstProportion.split(":");
+								BigDecimal bondAmount = thisSendAmount.multiply(
+									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+										.setScale(2, RoundingMode.HALF_UP)));
+								BigDecimal fundingAmount = thisSendAmount.multiply(
+									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+										.setScale(2, RoundingMode.HALF_UP)));
+								availableAmountSum = availableAmountSum.add(bondAmount);
+								items.setBondAmount(items.getBondAmount().add(bondAmount));
+								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+								bondAmountSum = bondAmountSum.add(bondAmount);
+								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+							} else {
+								String[] arr = secondProportion.split(":");
+								BigDecimal bondAmount = thisSendAmount.multiply(
+									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+										.setScale(2, RoundingMode.HALF_UP)));
+								BigDecimal fundingAmount = thisSendAmount.multiply(
+									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+										.setScale(2, RoundingMode.HALF_UP)));
+								availableAmountSum = availableAmountSum.add(bondAmount);
+								items.setBondAmount(items.getBondAmount().add(bondAmount));
+								items.setFundingAmount(items.getFundingAmount().add(fundingAmount));
+								bondAmountSum = bondAmountSum.add(bondAmount);
+								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+							}
 						}
 					}
 					orderMapper.updateById(items);
@@ -5387,11 +5411,17 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().subtract(item.getSendNum()));
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(stockOne.getInventoryAmount().subtract(item.getSendNum().multiply(item.getPrice())));
+					stockOne.setRebateInventoryAmount(stockOne.getRebateInventoryAmount().subtract(item.getSendNum().multiply(item.getRebatePrice())));
 					if (new BigDecimal("0.00").compareTo(stockOne.getInventoryAmount()) == 0 && new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
 						stockOne.setInventoryCostPrice(new BigDecimal("0.00"));
 					} else {
 						stockOne.setInventoryCostPrice(stockOne.getInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 					}
+					if (new BigDecimal("0.00").compareTo(stockOne.getRebateInventoryAmount()) == 0 && new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0) {
+						stockOne.setRebatePrice(new BigDecimal("0.00"));
+					} else {
+						stockOne.setRebatePrice(stockOne.getRebateInventoryAmount().divide(stockOne.getBalanceQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+					}
 					stockOne.setVersion(stockOne.getVersion());
 					/*R res = iStockDescService.updateByIdNew(stockOne);
 					if (!res.isSuccess()) {
@@ -5654,42 +5684,44 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 							.reduce(BigDecimal.ZERO, BigDecimal::add);
 						items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().add(thisSendSum));
 						items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().add(thisSendAmount));
-						//重新计算所有未赎回融资采购,保证金,融资金额
-						if (!"1".equals(items.getWhetherRedeem())) {
-							Date currentDate = new Date();
-							Calendar calendar = Calendar.getInstance();
-							calendar.setTime(currentDate);
-							calendar.add(Calendar.DAY_OF_MONTH, -60);
-							Date thirtyDayAgo = calendar.getTime();
-							//判断本融资采购单据是否超过两个月 未超过按第一个比例计算,否则按第二个比例计算
-							if (currentDate.compareTo(thirtyDayAgo) > 0) {
-								String[] arr = firstProportion.split(":");
-								//计算剩余金额的保证金
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								//计算剩余金额的融资金额
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().subtract(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
-							} else {
-								String[] arr = secondProportion.split(":");
-								BigDecimal bondAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								BigDecimal fundingAmount = thisSendAmount.multiply(
-									(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
-										.setScale(2, RoundingMode.HALF_UP)));
-								availableAmountSum = availableAmountSum.add(bondAmount);
-								items.setBondAmount(items.getBondAmount().subtract(bondAmount));
-								items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
-								bondAmountSum = bondAmountSum.add(bondAmount);
-								fundingAmountSum = fundingAmountSum.add(fundingAmount);
+						if (ObjectUtils.isNotNull(items.getSalesAmount()) && new BigDecimal("0.00").compareTo(items.getSalesAmount()) != 0){
+							//重新计算所有未赎回融资采购,保证金,融资金额
+							if (!"1".equals(items.getWhetherRedeem())) {
+								Date currentDate = new Date();
+								Calendar calendar = Calendar.getInstance();
+								calendar.setTime(currentDate);
+								calendar.add(Calendar.DAY_OF_MONTH, -60);
+								Date thirtyDayAgo = calendar.getTime();
+								//判断本融资采购单据是否超过两个月 未超过按第一个比例计算,否则按第二个比例计算
+								if (currentDate.compareTo(thirtyDayAgo) > 0) {
+									String[] arr = firstProportion.split(":");
+									//计算剩余金额的保证金
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									//计算剩余金额的融资金额
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().subtract(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								} else {
+									String[] arr = secondProportion.split(":");
+									BigDecimal bondAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[0]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									BigDecimal fundingAmount = thisSendAmount.multiply(
+										(new BigDecimal(arr[1]).divide(new BigDecimal("10"), MathContext.DECIMAL32)
+											.setScale(2, RoundingMode.HALF_UP)));
+									availableAmountSum = availableAmountSum.add(bondAmount);
+									items.setBondAmount(items.getBondAmount().subtract(bondAmount));
+									items.setFundingAmount(items.getFundingAmount().subtract(fundingAmount));
+									bondAmountSum = bondAmountSum.add(bondAmount);
+									fundingAmountSum = fundingAmountSum.add(fundingAmount);
+								}
 							}
 						}
 						orderMapper.updateById(items);

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

@@ -1320,7 +1320,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjpfFunding::getTenantId, AuthUtil.getTenantId())
 				.eq(PjpfFunding::getFundingPartyId, orderList.get(0).getFundingPartyId()));
 			if (funding != null) {
-				map.put("amount", funding.getAmount());
+				map.put("amount", funding.getAvailableAmount());
 				map.put("interest", funding.getInterest());
 			} else {
 				map.put("amount", "0.00");

+ 7 - 7
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

@@ -28,8 +28,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
-import org.springblade.box.tube.entity.TradingBox;
-import org.springblade.box.tube.entity.Transport;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.feign.ICorpsDescClient;
@@ -50,7 +48,6 @@ import org.springblade.finance.vo.AccVO;
 import org.springblade.finance.vojo.Acc;
 import org.springblade.finance.vojo.ExportAccDWTOut;
 import org.springblade.finance.vojo.ExportAccOut;
-import org.springblade.purchase.sales.vo.SalesDetailsVo;
 import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.feign.ITenantClient;
@@ -870,9 +867,9 @@ public class AccController extends BladeController {
 			ExcelUtil.export(response, "导出账单信息", "导出数据表", BeanUtil.copy(accList, ExportAccDWTOut.class), ExportAccDWTOut.class);
 		} else {
 			if (ObjectUtils.isNotNull(sysClient.getParamService("synchronous"))
-				&& "1".equals(sysClient.getParamService("synchronous"))){
+				&& "1".equals(sysClient.getParamService("synchronous"))) {
 				ExcelUtil.export(response, "导出账单信息", "导出数据表", BeanUtil.copy(accList, ExportAccDWTOut.class), ExportAccDWTOut.class);
-			}else{
+			} else {
 				ExcelUtil.export(response, "导出账单信息", "导出数据表", BeanUtil.copy(accList, ExportAccOut.class), ExportAccOut.class);
 			}
 		}
@@ -1032,11 +1029,14 @@ public class AccController extends BladeController {
 	@GetMapping("/selectByParentId")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "详情", notes = "传入acc")
-	public Acc selectByParentId(@RequestParam("parentId") Long parentId) {
+	public Acc selectByParentId(@RequestParam("parentId") Long parentId, @RequestParam(value = "type", required = false) String type) {
 		Acc acc = new Acc();
 		acc.setIsDeleted(0);
 		acc.setSrcParentId(parentId);
 		acc.setTenantId(SecureUtil.getTenantId());
+		if (ObjectUtils.isNotNull(type)){
+			acc.setBillType(type);
+		}
 		Acc detail = accService.getOne(Condition.getQueryWrapper(acc));
 		return detail;
 	}
@@ -1052,7 +1052,7 @@ public class AccController extends BladeController {
 		acc.setIsDeleted(0);
 		acc.setSrcParentId(parentId);
 		acc.setTenantId(SecureUtil.getTenantId());
-        return accService.list(Condition.getQueryWrapper(acc));
+		return accService.list(Condition.getQueryWrapper(acc));
 	}
 
 	/**