Browse Source

2025年1月23日17:23:32

纪新园 11 months ago
parent
commit
f767ed837d

+ 4 - 0
blade-service-api/blade-payment-api/src/main/java/org/springblade/pay/tonglianPayment/entity/WechatMark.java

@@ -132,5 +132,9 @@ public class WechatMark implements Serializable {
 	@ApiModelProperty(value = "所属公司名称")
 	private String salesCompanyName;
 
+	@TableField(exist = false)
+	private String param;
+
+
 
 }

+ 7 - 4
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java

@@ -3,10 +3,12 @@ package org.springblade.pay.tonglianPayment.controller;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.jetbrains.annotations.NotNull;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DigestUtil;
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
 import org.springblade.pay.tonglianPayment.service.IPaymentService;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
@@ -15,6 +17,8 @@ import springfox.documentation.annotations.ApiIgnore;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 
 /**
  * 通联支付 控制器
@@ -93,10 +97,9 @@ public class TongLianPaymentController extends BladeController {
 	 * MD5加密
 	 */
 	@ApiOperation(value = "MD5加密")
-	@GetMapping("/encryptionMD5")
-	public R encryptionMD5(@RequestParam(value = "param") String param) {
-		return R.data(DigestUtil.encrypt(param));
+	@PostMapping("/encryptionMD5")
+	public R encryptionMD5(@NotNull HttpServletRequest request) {
+		return R.data(DigestUtils.md5Hex(request.getHeader("param")));
 	}
 
-
 }

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

@@ -107,6 +107,9 @@ public class ShareSalesController {
 				lambdaQueryWrapper.eq(PjOrder::getCreateUser, AuthUtil.getUserId());
 			}
 		}
+		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
+			" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+			" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
 		IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
 		if (CollectionUtils.isNotEmpty(pages.getRecords())) {
 			List<Long> userIds = new ArrayList<>();

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

@@ -1447,6 +1447,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					item.setBizType(order.getBsType());
 					item.setBillNo(order.getOrdNo());
 					item.setPid(order.getId());
+					item.setRefundType("线下退款");
 					if (item.getId() == null) {
 						item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						item.setCreateTime(new Date());
@@ -1700,7 +1701,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						.map(PjOrderItems::getReturnsNumber).reduce(BigDecimal.ZERO, BigDecimal::add)));
 					item.setReturnsAmount(item.getReturnsAmount().add(pjOrderItemsList.stream().filter(e -> e.getSrcItemId().equals(item.getId()))
 						.map(PjOrderItems::getReturnsAmount).reduce(BigDecimal.ZERO, BigDecimal::add)));
-					item.setRefundType("线退款");
+					item.setRefundType("线退款");
 				}
 				orderItemsService.updateBatchById(pjOrderItems);
 			}
@@ -1796,11 +1797,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					item.setReturnsAmount(item.getReturnsAmount().subtract(pjOrderItemsList.stream().filter(e -> e.getSrcItemId().equals(item.getId()))
 						.map(PjOrderItems::getReturnsAmount).reduce(BigDecimal.ZERO, BigDecimal::add)));
 					if (new BigDecimal("0.00").compareTo(item.getReturnsNumber()) == 0) {
-						item.setRefundType("线退款");
+						item.setRefundType("线退款");
 					}
 				}
 				orderItemsService.updateBatchById(pjOrderItems);
 			}
+			orderItemsService.updateBatchById(pjOrderItems);
 		}
 		// 创建线程池
 		ExecutorService executor = Executors.newSingleThreadExecutor();
@@ -4052,35 +4054,35 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		PjOrder pjOrder = baseMapper.selectById(order.getId());
 		List<ShareSalesItems> shareSalesItemsList = new ArrayList<>();
 		List<SharePutOnShelves> sharePutOnShelvesList = new ArrayList<>();
-		if (ObjectUtils.isNull(pjOrder.getOldTrxId())) {
-			List<Long> goodsId = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsId).collect(Collectors.toList());
-			sharePutOnShelvesList = sharePutOnShelvesService.list(new LambdaQueryWrapper<SharePutOnShelves>()
-				.eq(SharePutOnShelves::getTenantId, AuthUtil.getTenantId())
-				.eq(SharePutOnShelves::getIsDeleted, 0)
-				.eq(SharePutOnShelves::getBillType, 1)
-				.eq(SharePutOnShelves::getShareStatus, "已确认")
-				.in(SharePutOnShelves::getGoodsId, goodsId)
-			);
-			if (sharePutOnShelvesList.isEmpty()) {
-				throw new RuntimeException("未找到共享上架商品明细");
-			}
+		List<String> goodsNo = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsNo).collect(Collectors.toList());
+		sharePutOnShelvesList = sharePutOnShelvesService.list(new LambdaQueryWrapper<SharePutOnShelves>()
+			.eq(SharePutOnShelves::getTenantId, AuthUtil.getTenantId())
+			.eq(SharePutOnShelves::getIsDeleted, 0)
+			.eq(SharePutOnShelves::getBillType, 1)
+			.eq(SharePutOnShelves::getShareStatus, "已确认")
+			.in(SharePutOnShelves::getGoodsCode, goodsNo)
+		);
+		if (sharePutOnShelvesList.isEmpty()) {
+			throw new RuntimeException("未找到共享上架商品明细");
 		}
 		List<SharePutOnShelves> sharePutOnShelvesListNew = new ArrayList<>();
+		List<PjOrderItems> orderItemsList = new ArrayList<>();
 		for (PjOrderItems item : order.getOrderItemsList()) {
-			if (ObjectUtils.isNull(pjOrder.getOldTrxId())) {
-				SharePutOnShelves sharePutOnShelves = sharePutOnShelvesList.stream()
-					.filter(e -> e.getGoodsId().equals(item.getGoodsId())).findFirst().orElse(null);
-				if (sharePutOnShelves == null) {
-					throw new RuntimeException("商品:" + item.getGoodsName() + "为在共享上架查到");
-				}
-				if (item.getOutGoodsTotalShipNum().compareTo(sharePutOnShelves.getInventory()) > 0) {
-					throw new RuntimeException("本次派发数量:大于共享剩余库存");
-				}
-				sharePutOnShelves.setInventory(sharePutOnShelves.getInventory().subtract(item.getOutGoodsTotalShipNum()));
-				sharePutOnShelves.setUpdateUser(AuthUtil.getUserId());
-				sharePutOnShelves.setUpdateTime(new Date());
-				sharePutOnShelvesListNew.add(sharePutOnShelves);
+			SharePutOnShelves sharePutOnShelves = sharePutOnShelvesList.stream()
+				.filter(e -> e.getGoodsCode().equals(item.getGoodsNo())).findFirst().orElse(null);
+			if (sharePutOnShelves == null) {
+				throw new RuntimeException("商品:" + item.getGoodsName() + "为在共享上架查到");
+			}
+			if (item.getOutGoodsTotalShipNum().compareTo(sharePutOnShelves.getInventory()) > 0) {
+				throw new RuntimeException("本次派发数量:大于共享剩余库存");
 			}
+			sharePutOnShelves.setInventory(sharePutOnShelves.getInventory().subtract(item.getOutGoodsTotalShipNum()));
+			sharePutOnShelves.setUpdateUser(AuthUtil.getUserId());
+			sharePutOnShelves.setUpdateTime(new Date());
+			sharePutOnShelvesListNew.add(sharePutOnShelves);
+			item.setCostprie(sharePutOnShelves.getShareCost().multiply(item.getOutGoodsTotalShipNum()));
+			item.setCostpriePrice(sharePutOnShelves.getShareCost());
+			item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
 			ShareSalesItems shareSalesItems = new ShareSalesItems();
 			shareSalesItems.setPid(order.getId());
 			shareSalesItems.setSrcPid(item.getId());
@@ -4102,19 +4104,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			shareSalesItemsList.add(shareSalesItems);
 			item.setSendNum(item.getSendNum().add(item.getOutGoodsTotalShipNum()));
 			item.setGoodsTotalShipAmount(item.getOutGoodsTotalShipNum().multiply(item.getPrice()));
+			orderItemsList.add(item);
 		}
 		if (!shareSalesItemsList.isEmpty()) {
 			shareSalesItemsService.saveBatch(shareSalesItemsList);
 		}
-		if (!order.getOrderItemsList().isEmpty()) {
-			orderItemsService.updateBatchById(order.getOrderItemsList());
+		if (!orderItemsList.isEmpty()) {
+			orderItemsService.updateBatchById(orderItemsList);
 		}
-		if (ObjectUtils.isNull(pjOrder.getOldTrxId())) {
-			if (!sharePutOnShelvesListNew.isEmpty()) {
-				sharePutOnShelvesService.updateBatchById(sharePutOnShelvesListNew);
-			}
+		if (!sharePutOnShelvesListNew.isEmpty()) {
+			sharePutOnShelvesService.updateBatchById(sharePutOnShelvesListNew);
 		}
-		boolean status = generateSharePjOrder(order.getSharedCompanyId(), order.getOrderItemsList(), pjOrder.getTenantId() + "-" + pjOrder.getOrdNo());
+		boolean status = generateSharePjOrder(order.getSharedCompanyId(), orderItemsList, pjOrder.getTenantId() + "-" + pjOrder.getOrdNo());
 		if (!status) {
 			throw new RuntimeException("派发失败,请联系管理员");
 		}
@@ -4312,14 +4313,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (shareOrderItemsList.isEmpty()) {
 			throw new RuntimeException("未查到对应派发销售单据明细信息");
 		}
-		List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).collect(Collectors.toList());
+		List<String> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsNo).collect(Collectors.toList());
 		String goodsNo = orderItemsList.stream().map(PjOrderItems::getGoodsNo).distinct().collect(Collectors.joining(","));
 		List<SharePutOnShelves> sharePutOnShelvesList = sharePutOnShelvesService.list(new LambdaQueryWrapper<SharePutOnShelves>()
 			.eq(SharePutOnShelves::getTenantId, AuthUtil.getTenantId())
 			.eq(SharePutOnShelves::getIsDeleted, 0)
 			.eq(SharePutOnShelves::getBillType, 1)
 			.eq(SharePutOnShelves::getShareStatus, "已确认")
-			.in(SharePutOnShelves::getGoodsId, goodsId)
+			.in(SharePutOnShelves::getGoodsCode, goodsId)
 		);
 		if (sharePutOnShelvesList.isEmpty()) {
 			throw new RuntimeException("未找到共享上架商品明细");
@@ -4338,12 +4339,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		for (PjOrderItems item : orderItemsList) {
 			item.setSendNum(new BigDecimal("0.00"));
 			item.setOutGoodsTotalShipNum(new BigDecimal("0.00"));
+			item.setCostprie(new BigDecimal("0.00"));
+			item.setCostpriePrice(new BigDecimal("0.00"));
+			item.setGrossProfit(new BigDecimal("0.00"));
 			item.setUpdateUser(AuthUtil.getUserId());
 			item.setUpdateTime(new Date());
 		}
 		for (ShareSalesItems item : shareSalesItemsList) {
 			SharePutOnShelves sharePutOnShelves = sharePutOnShelvesList.stream()
-				.filter(e -> e.getGoodsId().equals(item.getGoodsId())).findFirst().orElse(null);
+				.filter(e -> e.getGoodsCode().equals(item.getGoodsCode())).findFirst().orElse(null);
 			if (sharePutOnShelves == null) {
 				throw new RuntimeException("商品:" + item.getGoodsName() + "为在共享上架查到");
 			}
@@ -4680,7 +4684,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
 				order.setSalesAmount(totalMoney);
 				order.setTotalMoney(totalMoney);
-				if (!"JF".equals(order.getBsType())) {
+				if (!"JF".equals(order.getBsType()) && 1 != order.getBillType()) {
 					if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {//只有一条轮胎加5元运费
 						String freight = sysClient.getParamService("freight");
 						if (ObjectUtils.isNotNull(freight)) {
@@ -5204,7 +5208,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			corpsDescMapper.updateById(pjCorpsDesc);
 		}*/
 		//内部销售修改上架管理的库存
-		if (pjOrder.getBusinessSource().equals(OrderTypeEnum.WEB.getType())) {
+		if (pjOrder.getBusinessSource().equals(OrderTypeEnum.WEB.getType()) && 0 == pjOrder.getBillType()) {
 			LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
@@ -5226,7 +5230,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
 				queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
 					.eq(PjProductLaunch::getIsDeleted, 0)
-					.and(i -> i.eq(PjProductLaunch::getSalesCompanyId, pjOrder.getSalesCompanyId()).or().in(PjProductLaunch::getSourceCompanyId, pjOrder.getSalesCompanyId()))
 					.in(PjProductLaunch::getGoodsId, goodsId);
 				List<PjProductLaunch> launchList = productLaunchService.list(queryWrapper);
 				itemsList.forEach(e -> {
@@ -5539,7 +5542,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		}*/
 
 		//内部销售修改上架管理的库存
-		if (pjOrder.getBusinessSource().equals(OrderTypeEnum.WEB.getType())) {
+		if (pjOrder.getBusinessSource().equals(OrderTypeEnum.WEB.getType()) && 0 == pjOrder.getBillType()) {
 			LambdaQueryWrapper<PjOrderItems> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 			itemsLambdaQueryWrapper.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
@@ -5550,7 +5553,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
 				queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
 					.eq(PjProductLaunch::getIsDeleted, 0)
-					.and(i -> i.eq(PjProductLaunch::getSalesCompanyId, pjOrder.getSalesCompanyId()).or().in(PjProductLaunch::getSourceCompanyId, pjOrder.getSalesCompanyId()))
 					.in(PjProductLaunch::getGoodsId, goodsId);
 				List<PjProductLaunch> launchList = productLaunchService.list(queryWrapper);
 				itemsList.forEach(e -> {

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/mapper/SharePutOnShelvesMapper.java

@@ -49,4 +49,7 @@ public interface SharePutOnShelvesMapper extends BaseMapper<SharePutOnShelves> {
 
 	@TenantIgnore
 	int updateSharePutOnShelves(SharePutOnShelves item);
+
+	@TenantIgnore
+	List<SharePutOnShelves> selectShare(@Param("ids")String ids);
 }

+ 5 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/share/mapper/SharePutOnShelvesMapper.xml

@@ -79,5 +79,10 @@
             and tenant_id = #{tenantId}
         </if>
     </select>
+    <select id="selectShare" resultType="org.springblade.salesPart.share.entity.SharePutOnShelves">
+        select * from pjpf_share_put_on_shelves
+        where is_deleted = 0
+          and find_in_set(src_shared_id, #{ids})
+    </select>
 
 </mapper>

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

@@ -351,7 +351,17 @@ public class SharePutOnShelvesServiceImpl extends ServiceImpl<SharePutOnShelvesM
 			item.setShareStatus("暂存");
 		}
 		this.updateBatchById(sharePutOnShelvesList);
-		baseMapper.deleteBySharedId(ids);
+		List<SharePutOnShelves> sharePutOnShelves = baseMapper.selectShare(ids);
+		if (!sharePutOnShelves.isEmpty()) {
+			List<String> goodsNameList = sharePutOnShelves.stream().filter(e -> e.getShareStatus().equals("已确认")).map(SharePutOnShelves::getGoodsName).collect(Collectors.toList());
+			if (!goodsNameList.isEmpty()) {
+				throw new RuntimeException("商品:" + String.join(",", goodsNameList) + "已上架,撤销失败");
+			} else {
+				baseMapper.deleteBySharedId(ids);
+			}
+		} else {
+			throw new RuntimeException("未查到上架商品");
+		}
 		return R.success("操作成功");
 	}
 

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

@@ -945,270 +945,275 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		}
 		//融资流程
 		if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
-			String firstProportion = sysClient.getParamService("first.month.proportion");
-			String secondProportion = sysClient.getParamService("second.month.proportion");
-			PjpfFunding pjpfFunding = pjpfFundingService.getOne(new LambdaQueryWrapper<PjpfFunding>()
-				.eq(PjpfFunding::getTenantId, AuthUtil.getTenantId())
-				.eq(PjpfFunding::getIsDeleted, 0));
-			if (pjpfFunding == null) {
-				throw new RuntimeException("未找到融资总账");
-			}
-			Date date = new Date();
-			Calendar calendarDate = Calendar.getInstance();
-			calendarDate.setTime(date);
-			calendarDate.add(Calendar.DAY_OF_MONTH, -90);
-			Date dateTime = calendarDate.getTime();
-			//获取融资采购单主表数据
-			List<PjOrder> orderList = orderMapper.selectList(new LambdaQueryWrapper<PjOrder>()
-				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
-				.eq(PjOrder::getIsDeleted, 0)
-				.eq(PjOrder::getWhetherFinancing, "1")
-				.eq(PjOrder::getBsType, "RZCG")
-				.ge(PjOrder::getBusinesDate, dateTime)
-				.apply("goods_total_ship_num > out_goods_total_ship_num")
-				.orderByAsc(PjOrder::getBusinesDate)
-			);
-			List<Long> ordIds = orderList.stream().map(PjOrder::getId).collect(Collectors.toList());
-			List<Long> goodsList = shipItemsList.stream().map(PjShipItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
-			//获取融资采购单明细数据
-			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
-				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
-				.eq(PjOrderItems::getIsDeleted, 0)
-				.eq(PjOrderItems::getBizType, "RZCG")
-				.in(PjOrderItems::getGoodsId, goodsList)
-				.in(PjOrderItems::getPid, ordIds)
-				.apply("send_num > out_goods_total_ship_num")
-				.orderByAsc(PjOrderItems::getCreateTime)
-			);
-			BigDecimal amountSum = new BigDecimal("0.00");
-			for (PjShipItems item : shipItemsList) {
-				if (new BigDecimal("0").compareTo(item.getSendNumFinancing()) != 0) {
-					BigDecimal costprie = item.getSendNumFinancing().multiply(item.getCostpriePrice());
-					amountSum = amountSum.add(costprie);
-				}
-			}
-			if (amountSum.compareTo(new BigDecimal("0")) != 0) {
-				if (!orderItemsList.isEmpty()) {
-					List<PjOrder> orders = orderList.stream().filter(e -> e.getWhetherRedeem().equals("0")).distinct().collect(Collectors.toList());
-					if (!orders.isEmpty()) {
+			if (!shipItemsList.isEmpty()) {
+				BigDecimal sendNumFinancing = shipItemsList.stream().map(PjShipItems::getSendNumFinancing).reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (new BigDecimal("0.00").compareTo(sendNumFinancing) != 0) {
+					String firstProportion = sysClient.getParamService("first.month.proportion");
+					String secondProportion = sysClient.getParamService("second.month.proportion");
+					PjpfFunding pjpfFunding = pjpfFundingService.getOne(new LambdaQueryWrapper<PjpfFunding>()
+						.eq(PjpfFunding::getTenantId, AuthUtil.getTenantId())
+						.eq(PjpfFunding::getIsDeleted, 0));
+					if (pjpfFunding == null) {
+						throw new RuntimeException("未找到融资总账");
+					}
+					Date date = new Date();
+					Calendar calendarDate = Calendar.getInstance();
+					calendarDate.setTime(date);
+					calendarDate.add(Calendar.DAY_OF_MONTH, -90);
+					Date dateTime = calendarDate.getTime();
+					//获取融资采购单主表数据
+					List<PjOrder> orderList = orderMapper.selectList(new LambdaQueryWrapper<PjOrder>()
+						.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+						.eq(PjOrder::getIsDeleted, 0)
+						.eq(PjOrder::getWhetherFinancing, "1")
+						.eq(PjOrder::getBsType, "RZCG")
+						.ge(PjOrder::getBusinesDate, dateTime)
+						.apply("goods_total_ship_num > out_goods_total_ship_num")
+						.orderByAsc(PjOrder::getBusinesDate)
+					);
+					List<Long> ordIds = orderList.stream().map(PjOrder::getId).collect(Collectors.toList());
+					List<Long> goodsList = shipItemsList.stream().map(PjShipItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+					//获取融资采购单明细数据
+					List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+						.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+						.eq(PjOrderItems::getIsDeleted, 0)
+						.eq(PjOrderItems::getBizType, "RZCG")
+						.in(PjOrderItems::getGoodsId, goodsList)
+						.in(PjOrderItems::getPid, ordIds)
+						.apply("send_num > out_goods_total_ship_num")
+						.orderByAsc(PjOrderItems::getCreateTime)
+					);
+					BigDecimal amountSum = new BigDecimal("0.00");
+					for (PjShipItems item : shipItemsList) {
+						if (new BigDecimal("0").compareTo(item.getSendNumFinancing()) != 0) {
+							BigDecimal costprie = item.getSendNumFinancing().multiply(item.getCostpriePrice());
+							amountSum = amountSum.add(costprie);
+						}
+					}
+					if (amountSum.compareTo(new BigDecimal("0")) != 0) {
+						if (!orderItemsList.isEmpty()) {
+							List<PjOrder> orders = orderList.stream().filter(e -> e.getWhetherRedeem().equals("0")).distinct().collect(Collectors.toList());
+							if (!orders.isEmpty()) {
 						/*if (pjpfFunding.getBondAmount().compareTo(pjpfFunding.getPaidAlreadyBondAmount()) > 0) {
 							throw new RuntimeException("已缴保证金不足,出库失败");
 						}*/
-						if (pjpfFunding.getAvailableAmount().subtract(pjpfFunding.getInterest()).compareTo(amountSum) < 0) {
-							throw new RuntimeException("剩余可用资金:" + pjpfFunding.getAvailableAmount().subtract(pjpfFunding.getInterest()) + "小于本次出库金额:" + amountSum + ",出库失败");
+								if (pjpfFunding.getAvailableAmount().subtract(pjpfFunding.getInterest()).compareTo(amountSum) < 0) {
+									throw new RuntimeException("剩余可用资金:" + pjpfFunding.getAvailableAmount().subtract(pjpfFunding.getInterest()) + "小于本次出库金额:" + amountSum + ",出库失败");
+								}
+								pjpfFunding.setAvailableAmount(pjpfFunding.getAvailableAmount().subtract(amountSum));
+							}
 						}
-						pjpfFunding.setAvailableAmount(pjpfFunding.getAvailableAmount().subtract(amountSum));
-					}
-				}
-				List<FinancingShipItemDto> allList = new ArrayList<>();
-				List<ShipItemsRecord> recordList = new ArrayList<>();
-				//本次发货对应采购明细
-				List<PjOrderItems> orderItemList1 = new ArrayList<>();
-				//出库明细循环
-				for (PjShipItems shipItems : shipItemsList) {
-					if (ObjectUtils.isNull(shipItems.getCostprie()) || shipItems.getCostprie().compareTo(new BigDecimal("0.00")) == 0) {
-						throw new RuntimeException("获取数据失败,请重新生成出库工单");
-					}
-					BigDecimal number = shipItems.getSendNumFinancing();
-					//获取出库明细商品对应融资采购商品明细
-					List<PjOrderItems> orderItemList = orderItemsList.stream().filter(e -> e.getGoodsId().equals(shipItems.getGoodsId())).collect(Collectors.toList());
-					List<FinancingShipItemDto> mapList = new ArrayList<>();
-					if (number.compareTo(new BigDecimal("0.00")) > 0) {
-						//采购商品明细循环
-						for (PjOrderItems orderItems1 : orderItemList) {
-							if (orderItems1.getGoodsId().equals(shipItems.getGoodsId())) {
-								if (number.compareTo(new BigDecimal("0.00")) > 0) {
-									//记录出库明细对应融资采购单据
-									ShipItemsRecord shipItemsRecord = new ShipItemsRecord();
-									shipItemsRecord.setBillNo(ship.getBillno());
-									shipItemsRecord.setPid(shipItems.getPid());
-									shipItemsRecord.setItemId(shipItems.getId());
-									shipItemsRecord.setSrcId(orderItems1.getPid());
-									shipItemsRecord.setSrcItemId(orderItems1.getId());
-									shipItemsRecord.setSrcOrd(orderItems1.getBillNo());
-									shipItemsRecord.setCreateUser(AuthUtil.getUserId());
-									shipItemsRecord.setCreateUserName(AuthUtil.getUserName());
-									shipItemsRecord.setCreateTime(new Date());
-									//记录具体出库数量,来源融资采购明细
-									FinancingShipItemDto financingShipItemDto = new FinancingShipItemDto();
-									financingShipItemDto.setId(orderItems1.getId());
-									financingShipItemDto.setPid(orderItems1.getPid());
-									financingShipItemDto.setItemId(shipItems.getId());
-									BigDecimal subNum = orderItems1.getSendNum().subtract(orderItems1.getOutGoodsTotalShipNum());
-									//剩余数量 = 入库数量-已出数量
-									//修改明细出库数量
-									if (new BigDecimal("0.00").compareTo(subNum) != 0) {
-										if (number.compareTo(subNum) > 0) {
-											financingShipItemDto.setNum(subNum);
-											financingShipItemDto.setAmount(subNum.multiply(orderItems1.getPrice()));
-											shipItemsRecord.setNum(subNum);
-											shipItemsRecord.setAmount(subNum.multiply(orderItems1.getPrice()));
-											//本次出库数量大于剩余数量  融资采购明细出库数量=入库数量
-											orderItems1.setOutGoodsTotalShipNum(orderItems1.getSendNum());
-											orderItems1.setThisOutGoodsTotalShipNum(subNum);
-											orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
-											orderItems1.setThisOutGoodsTotalShipAmount(subNum.multiply(orderItems1.getPrice()));
-											number = number.subtract(subNum);
-										} else if (number.compareTo(subNum) == 0) {
-											financingShipItemDto.setNum(subNum);
-											financingShipItemDto.setAmount(subNum.multiply(orderItems1.getPrice()));
-											shipItemsRecord.setNum(subNum);
-											shipItemsRecord.setAmount(subNum.multiply(orderItems1.getPrice()));
-											//本次出库数量等于剩余数量  融资采购明细出库数量=入库数量
-											orderItems1.setOutGoodsTotalShipNum(orderItems1.getSendNum());
-											orderItems1.setThisOutGoodsTotalShipNum(subNum);
-											orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
-											orderItems1.setThisOutGoodsTotalShipAmount(subNum.multiply(orderItems1.getPrice()));
-											number = new BigDecimal("0.00");
-										} else {
-											financingShipItemDto.setNum(number);
-											financingShipItemDto.setAmount(number.multiply(orderItems1.getPrice()));
-											shipItemsRecord.setNum(number);
-											shipItemsRecord.setAmount(number.multiply(orderItems1.getPrice()));
-											//本次出库数量小于剩余数量  融资采购明细出库数量=入库数量-本次出库数量
-											orderItems1.setOutGoodsTotalShipNum(orderItems1.getOutGoodsTotalShipNum().add(number));
-											orderItems1.setThisOutGoodsTotalShipNum(number);
-											orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
-											orderItems1.setThisOutGoodsTotalShipAmount(number.multiply(orderItems1.getPrice()));
-											number = new BigDecimal("0.00");
+						List<FinancingShipItemDto> allList = new ArrayList<>();
+						List<ShipItemsRecord> recordList = new ArrayList<>();
+						//本次发货对应采购明细
+						List<PjOrderItems> orderItemList1 = new ArrayList<>();
+						//出库明细循环
+						for (PjShipItems shipItems : shipItemsList) {
+							if (ObjectUtils.isNull(shipItems.getCostprie()) || shipItems.getCostprie().compareTo(new BigDecimal("0.00")) == 0) {
+								throw new RuntimeException("获取数据失败,请重新生成出库工单");
+							}
+							BigDecimal number = shipItems.getSendNumFinancing();
+							//获取出库明细商品对应融资采购商品明细
+							List<PjOrderItems> orderItemList = orderItemsList.stream().filter(e -> e.getGoodsId().equals(shipItems.getGoodsId())).collect(Collectors.toList());
+							List<FinancingShipItemDto> mapList = new ArrayList<>();
+							if (number.compareTo(new BigDecimal("0.00")) > 0) {
+								//采购商品明细循环
+								for (PjOrderItems orderItems1 : orderItemList) {
+									if (orderItems1.getGoodsId().equals(shipItems.getGoodsId())) {
+										if (number.compareTo(new BigDecimal("0.00")) > 0) {
+											//记录出库明细对应融资采购单据
+											ShipItemsRecord shipItemsRecord = new ShipItemsRecord();
+											shipItemsRecord.setBillNo(ship.getBillno());
+											shipItemsRecord.setPid(shipItems.getPid());
+											shipItemsRecord.setItemId(shipItems.getId());
+											shipItemsRecord.setSrcId(orderItems1.getPid());
+											shipItemsRecord.setSrcItemId(orderItems1.getId());
+											shipItemsRecord.setSrcOrd(orderItems1.getBillNo());
+											shipItemsRecord.setCreateUser(AuthUtil.getUserId());
+											shipItemsRecord.setCreateUserName(AuthUtil.getUserName());
+											shipItemsRecord.setCreateTime(new Date());
+											//记录具体出库数量,来源融资采购明细
+											FinancingShipItemDto financingShipItemDto = new FinancingShipItemDto();
+											financingShipItemDto.setId(orderItems1.getId());
+											financingShipItemDto.setPid(orderItems1.getPid());
+											financingShipItemDto.setItemId(shipItems.getId());
+											BigDecimal subNum = orderItems1.getSendNum().subtract(orderItems1.getOutGoodsTotalShipNum());
+											//剩余数量 = 入库数量-已出数量
+											//修改明细出库数量
+											if (new BigDecimal("0.00").compareTo(subNum) != 0) {
+												if (number.compareTo(subNum) > 0) {
+													financingShipItemDto.setNum(subNum);
+													financingShipItemDto.setAmount(subNum.multiply(orderItems1.getPrice()));
+													shipItemsRecord.setNum(subNum);
+													shipItemsRecord.setAmount(subNum.multiply(orderItems1.getPrice()));
+													//本次出库数量大于剩余数量  融资采购明细出库数量=入库数量
+													orderItems1.setOutGoodsTotalShipNum(orderItems1.getSendNum());
+													orderItems1.setThisOutGoodsTotalShipNum(subNum);
+													orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
+													orderItems1.setThisOutGoodsTotalShipAmount(subNum.multiply(orderItems1.getPrice()));
+													number = number.subtract(subNum);
+												} else if (number.compareTo(subNum) == 0) {
+													financingShipItemDto.setNum(subNum);
+													financingShipItemDto.setAmount(subNum.multiply(orderItems1.getPrice()));
+													shipItemsRecord.setNum(subNum);
+													shipItemsRecord.setAmount(subNum.multiply(orderItems1.getPrice()));
+													//本次出库数量等于剩余数量  融资采购明细出库数量=入库数量
+													orderItems1.setOutGoodsTotalShipNum(orderItems1.getSendNum());
+													orderItems1.setThisOutGoodsTotalShipNum(subNum);
+													orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
+													orderItems1.setThisOutGoodsTotalShipAmount(subNum.multiply(orderItems1.getPrice()));
+													number = new BigDecimal("0.00");
+												} else {
+													financingShipItemDto.setNum(number);
+													financingShipItemDto.setAmount(number.multiply(orderItems1.getPrice()));
+													shipItemsRecord.setNum(number);
+													shipItemsRecord.setAmount(number.multiply(orderItems1.getPrice()));
+													//本次出库数量小于剩余数量  融资采购明细出库数量=入库数量-本次出库数量
+													orderItems1.setOutGoodsTotalShipNum(orderItems1.getOutGoodsTotalShipNum().add(number));
+													orderItems1.setThisOutGoodsTotalShipNum(number);
+													orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
+													orderItems1.setThisOutGoodsTotalShipAmount(number.multiply(orderItems1.getPrice()));
+													number = new BigDecimal("0.00");
+												}
+												mapList.add(financingShipItemDto);
+												recordList.add(shipItemsRecord);
+											}
 										}
-										mapList.add(financingShipItemDto);
-										recordList.add(shipItemsRecord);
 									}
+									orderItemList1.add(orderItems1);
 								}
 							}
-							orderItemList1.add(orderItems1);
+							if (!mapList.isEmpty()) {
+								ObjectMapper mapper = new ObjectMapper();
+								try {
+									String jsonString = mapper.writeValueAsString(mapList);
+									shipItems.setSrcFinancing(jsonString);
+								} catch (Exception e) {
+									System.err.println(e.getMessage());
+									throw new RuntimeException(e);
+								}
+								allList.addAll(mapList);
+							}
 						}
-					}
-					if (!mapList.isEmpty()) {
-						ObjectMapper mapper = new ObjectMapper();
-						try {
-							String jsonString = mapper.writeValueAsString(mapList);
-							shipItems.setSrcFinancing(jsonString);
-						} catch (Exception e) {
-							System.err.println(e.getMessage());
-							throw new RuntimeException(e);
+						if (!recordList.isEmpty()) {
+							shipItemsRecordService.saveBatch(recordList);
 						}
-						allList.addAll(mapList);
-					}
-				}
-				if (!recordList.isEmpty()) {
-					shipItemsRecordService.saveBatch(recordList);
-				}
-				orderItemsService.updateBatchById(orderItemList1);
-				if (!orderItemList1.isEmpty()) {
-					//本次保证金
-					BigDecimal bondAmountSum = new BigDecimal("0.00");
-					//本次融资金额
-					BigDecimal fundingAmountSum = new BigDecimal("0.00");
-					//保证金释放金额
-					BigDecimal availableAmountSum = new BigDecimal("0.00");
-					for (PjOrder items : orderList) {
-						List<PjOrderItems> pjOrderItems = orderItemList1.stream().filter(e -> items.getId().equals(e.getPid()))
-							.collect(Collectors.toList());
-						//重新合计融资采购已出数量,金额
-						if (!pjOrderItems.isEmpty()) {
-							//本次发货数量
-							BigDecimal thisSendSum = pjOrderItems.stream().map(PjOrderItems::getThisOutGoodsTotalShipNum)
-								.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-							//本次发货金额
-							BigDecimal thisSendAmount = pjOrderItems.stream().map(PjOrderItems::getThisOutGoodsTotalShipAmount)
-								.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-							items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().add(thisSendSum));
-							items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().add(thisSendAmount));
-							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();
-									//计算本融资采购剩余金额
+						orderItemsService.updateBatchById(orderItemList1);
+						if (!orderItemList1.isEmpty()) {
+							//本次保证金
+							BigDecimal bondAmountSum = new BigDecimal("0.00");
+							//本次融资金额
+							BigDecimal fundingAmountSum = new BigDecimal("0.00");
+							//保证金释放金额
+							BigDecimal availableAmountSum = new BigDecimal("0.00");
+							for (PjOrder items : orderList) {
+								List<PjOrderItems> pjOrderItems = orderItemList1.stream().filter(e -> items.getId().equals(e.getPid()))
+									.collect(Collectors.toList());
+								//重新合计融资采购已出数量,金额
+								if (!pjOrderItems.isEmpty()) {
+									//本次发货数量
+									BigDecimal thisSendSum = pjOrderItems.stream().map(PjOrderItems::getThisOutGoodsTotalShipNum)
+										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+									//本次发货金额
+									BigDecimal thisSendAmount = pjOrderItems.stream().map(PjOrderItems::getThisOutGoodsTotalShipAmount)
+										.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+									items.setOutGoodsTotalShipNum(items.getOutGoodsTotalShipNum().add(thisSendSum));
+									items.setOutGoodsTotalShipAmount(items.getOutGoodsTotalShipAmount().add(thisSendAmount));
+									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 (!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 (!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);
+								}
+							}
+							//可用金额 = 原可用金额 + 本次释放金额
+							pjpfFunding.setAvailableAmount(pjpfFunding.getAvailableAmount().add(availableAmountSum));
+							pjpfFunding.setSurplusFundingAmount(pjpfFunding.getSurplusFundingAmount().subtract(fundingAmountSum));
+							pjpfFunding.setPaidAlreadyBondAmount(pjpfFunding.getPaidAlreadyBondAmount().subtract(bondAmountSum));
+							pjpfFunding.setBondAmount(pjpfFunding.getBondAmount().subtract(bondAmountSum));
+							//总金额 = 保证金 + 在库融资金额
+							pjpfFunding.setAmount(pjpfFunding.getAmount().subtract(amountSum));
+							//融资金额 = 原融资金额 + (本次出库金额-本次释放金额)
+							pjpfFunding.setFundingAmount(pjpfFunding.getFundingAmount().add(fundingAmountSum));
+							pjpfFunding.setProportion(pjpfFunding.getBondAmount().divide(pjpfFunding.getAmount(), MathContext.DECIMAL32)
+								.setScale(2, RoundingMode.HALF_UP));
+							pjpfFundingService.updateById(pjpfFunding);
+							//融资管理明细记录
+							PjpfFundingItem item = new PjpfFundingItem();
+							item.setPid(pjpfFunding.getId());
+							item.setTenantId(AuthUtil.getTenantId());
+							item.setCreateTime(new Date());
+							item.setCreateUser(AuthUtil.getUserId());
+							item.setCreateUserName(AuthUtil.getUserName());
+							item.setCreateDept(pjpfFunding.getCreateDept());
+							item.setCreateDeptName(pjpfFunding.getCreateDeptName());
+							item.setType("融资出库");
+							item.setSrcId(ship.getId());
+							item.setSrcNo(ship.getBillno());
+							item.setAmount(amountSum);
+							item.setFundingAmount(fundingAmountSum);
+							item.setBondAmount(bondAmountSum);
+							pjpfFundingItemService.save(item);
+							for (PjShipItems shipItems : shipItemsList) {
+								List<PjOrderItems> orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(shipItems.getSrcItemId())).collect(Collectors.toList());
+								for (PjOrderItems items : orderItems) {
+									items.setProportion(shipItems.getProportion());
+									items.setSrcFinancing(shipItems.getSrcFinancing());
 								}
 							}
-							orderMapper.updateById(items);
-						}
-					}
-					//可用金额 = 原可用金额 + 本次释放金额
-					pjpfFunding.setAvailableAmount(pjpfFunding.getAvailableAmount().add(availableAmountSum));
-					pjpfFunding.setSurplusFundingAmount(pjpfFunding.getSurplusFundingAmount().subtract(fundingAmountSum));
-					pjpfFunding.setPaidAlreadyBondAmount(pjpfFunding.getPaidAlreadyBondAmount().subtract(bondAmountSum));
-					pjpfFunding.setBondAmount(pjpfFunding.getBondAmount().subtract(bondAmountSum));
-					//总金额 = 保证金 + 在库融资金额
-					pjpfFunding.setAmount(pjpfFunding.getAmount().subtract(amountSum));
-					//融资金额 = 原融资金额 + (本次出库金额-本次释放金额)
-					pjpfFunding.setFundingAmount(pjpfFunding.getFundingAmount().add(fundingAmountSum));
-					pjpfFunding.setProportion(pjpfFunding.getBondAmount().divide(pjpfFunding.getAmount(), MathContext.DECIMAL32)
-						.setScale(2, RoundingMode.HALF_UP));
-					pjpfFundingService.updateById(pjpfFunding);
-					//融资管理明细记录
-					PjpfFundingItem item = new PjpfFundingItem();
-					item.setPid(pjpfFunding.getId());
-					item.setTenantId(AuthUtil.getTenantId());
-					item.setCreateTime(new Date());
-					item.setCreateUser(AuthUtil.getUserId());
-					item.setCreateUserName(AuthUtil.getUserName());
-					item.setCreateDept(pjpfFunding.getCreateDept());
-					item.setCreateDeptName(pjpfFunding.getCreateDeptName());
-					item.setType("融资出库");
-					item.setSrcId(ship.getId());
-					item.setSrcNo(ship.getBillno());
-					item.setAmount(amountSum);
-					item.setFundingAmount(fundingAmountSum);
-					item.setBondAmount(bondAmountSum);
-					pjpfFundingItemService.save(item);
-					for (PjShipItems shipItems : shipItemsList) {
-						List<PjOrderItems> orderItems = pjOrderItemsList.stream().filter(e -> e.getId().equals(shipItems.getSrcItemId())).collect(Collectors.toList());
-						for (PjOrderItems items : orderItems) {
-							items.setProportion(shipItems.getProportion());
-							items.setSrcFinancing(shipItems.getSrcFinancing());
 						}
 					}
 				}
@@ -2783,6 +2788,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		List<PjOrderItems> pjOrderItemsList = new ArrayList<>();
 		if (CollectionUtils.isNotEmpty(ship.getShipItemsList())) {
 			List<Long> goodIds = ship.getShipItemsList().stream().map(PjShipItems::getGoodsId).distinct().collect(Collectors.toList());
+
 			List<PjGoodsDesc> pjGoodsDescList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
 				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
 				.eq(PjGoodsDesc::getIsDeleted, 0)
@@ -2804,6 +2810,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				.eq(PjOrderItems::getIsDeleted, 0)
 				.in(PjOrderItems::getId, srcItemIds));
 			List<PjStockDesc> pjStockDescArrayList = new ArrayList<>();
+			List<PjStockDesc> pjStockDescArrayDelete = new ArrayList<>();
 			List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
 				.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
 				.eq(PjOrderItems::getIsDeleted, 0)
@@ -2877,7 +2884,14 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					if (!res.isSuccess()) {
 						throw new RuntimeException(res.getMsg());
 					}*/
-					pjStockDescArrayList.add(stockOne);
+					if (new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantity()) == 0
+						&& new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantityFinancing()) == 0
+						&& new BigDecimal("0.00").compareTo(stockOne.getBalanceQuantityHave()) == 0
+						&& 1 == stockOne.getVersion()) {
+						pjStockDescArrayDelete.add(stockOne);
+					} else {
+						pjStockDescArrayList.add(stockOne);
+					}
 				} else {
 					throw new RuntimeException("未查到库存数据");
 				}
@@ -2887,7 +2901,12 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				throw new RuntimeException("商品:" + msg1 + "正在盘点中,操作失败");
 			}
 			shipItemsService.saveOrUpdateBatch(shipItemsList);
-			iStockDescService.updateBatchByIdNew(pjStockDescArrayList);
+			if (!pjStockDescArrayList.isEmpty()) {
+				iStockDescService.updateBatchByIdNew(pjStockDescArrayList);
+			}
+			if (!pjStockDescArrayDelete.isEmpty()) {
+				iStockDescService.removeByIds(pjStockDescArrayDelete.stream().map(PjStockDesc::getId).collect(Collectors.toList()));
+			}
 			List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
 			//查询所有上架商品
 			LambdaQueryWrapper<PjProductLaunch> productLaunchQueryWrapper = new LambdaQueryWrapper<>();

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

@@ -425,8 +425,7 @@ public class ShoppingMallDetailController extends BladeController {
 	 */
 	@GetMapping("/listShareV1")
 	@ApiOperationSupport(order = 2)
-	public R<List<Map<String, Object>>> listShareV1(PjStockDesc stockDesc) {
-		List<Map<String, Object>> mapList = new ArrayList<>();
+	public R<Map<String, Object>> listShareV1(PjStockDesc stockDesc) {
 		PjCorpsDesc corpsDesc = null;
 		//根据当前登录人获得客户
 		PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
@@ -450,11 +449,11 @@ public class ShoppingMallDetailController extends BladeController {
 		lambdaQueryWrapper.orderByAsc(ShoppingMallDetail::getCnameInt);
 		lambdaQueryWrapper.orderByDesc(ShoppingMallDetail::getInventory);
 		ShoppingMallDetail shoppingMallDetail = shoppingMallDetailService.getOne(lambdaQueryWrapper);
+		Map<String, Object> map = new HashMap<>();
 		if (shoppingMallDetail != null) {
-			Map<String, Object> map = new HashMap<>();
-			map.put("storageName", shoppingMallDetail.getSalesCompanyName());
 			map.put("storeInventory", shoppingMallDetail.getInventory());
-			mapList.add(map);
+		} else {
+			map.put("storeInventory", "0");
 		}
 		List<SharePutOnShelves> sharePutOnShelvesList = sharePutOnShelvesService.list(new LambdaQueryWrapper<SharePutOnShelves>()
 			.eq(SharePutOnShelves::getTenantId, AuthUtil.getTenantId())
@@ -462,13 +461,12 @@ public class ShoppingMallDetailController extends BladeController {
 			.eq(SharePutOnShelves::getBillType, 1)
 			.eq(SharePutOnShelves::getShareStatus, "已确认")
 			.eq(SharePutOnShelves::getGoodsCode, stockDesc.getCode()));
-		for (SharePutOnShelves item : sharePutOnShelvesList) {
-			Map<String, Object> map = new HashMap<>();
-			map.put("storageName", item.getSrcSalesCompanyName());
-			map.put("storeInventory", item.getInventory());
-			mapList.add(map);
+		if (!sharePutOnShelvesList.isEmpty()) {
+			map.put("storeInventoryShare", sharePutOnShelvesList.stream().map(SharePutOnShelves::getInventory).reduce(BigDecimal.ZERO, BigDecimal::add));
+		} else {
+			map.put("storeInventoryShare", "0");
 		}
-		return R.data(mapList);
+		return R.data(map);
 	}
 
 

+ 162 - 121
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

@@ -41,6 +41,7 @@ import org.springblade.salesPart.order.service.IPjIntegralDetailService;
 import org.springblade.salesPart.payMethod.PayService;
 import org.springblade.salesPart.productLaunch.mapper.ProductLaunchMapper;
 import org.springblade.salesPart.serial.service.IPjpfSerialService;
+import org.springblade.salesPart.share.mapper.SharePutOnShelvesMapper;
 import org.springblade.salesPart.shoppingCart.mapper.ShoppingCartMapper;
 import org.springblade.salesPart.shoppingCart.service.IShoppingCartService;
 import org.springblade.salesPart.vo.ShoppingCartVO;
@@ -85,6 +86,8 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 
 	private final IPjIntegralDetailService integralDetailService;
 
+	private final SharePutOnShelvesMapper sharePutOnShelvesMapper;
+
 
 	/**
 	 * 保存修改购物车信息
@@ -254,6 +257,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 							orderItems.setBizType(order.getBsType());
 							orderItems.setInventory(e.getInventory());
 							orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+							orderItems.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 							orderItems.setUrl(ObjectUtils.isNotNull(e.getFilesList()) && !e.getFilesList().isEmpty() ? e.getFilesList().get(0).getUrl() : "");
 							orderItems.setGoodsName(e.getGoodsName());
 							orderItemsMapper.insert(orderItems);
@@ -467,6 +471,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 							orderItems.setBizType(order.getBsType());
 							orderItems.setInventory(e.getInventory());
 							orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+							orderItems.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 							orderItems.setUrl(ObjectUtils.isNotNull(e.getFilesList()) && !e.getFilesList().isEmpty() ? e.getFilesList().get(0).getUrl() : "");
 							orderItems.setGoodsName(e.getGoodsName());
 							orderItemsMapper.insert(orderItems);
@@ -657,6 +662,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 							orderItems.setBizType(order.getBsType());
 							orderItems.setInventory(e.getInventory());
 							orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+							orderItems.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 							orderItems.setUrl(ObjectUtils.isNotNull(e.getFilesList()) && !e.getFilesList().isEmpty() ? e.getFilesList().get(0).getUrl() : "");
 							orderItems.setGoodsName(e.getGoodsName());
 							orderItemsMapper.insert(orderItems);
@@ -909,6 +915,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 							orderItems.setBizType(order.getBsType());
 							orderItems.setInventory(e.getInventory());
 							orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+							orderItems.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
 							orderItems.setUrl(ObjectUtils.isNotNull(e.getFilesList()) && !e.getFilesList().isEmpty() ? e.getFilesList().get(0).getUrl() : "");
 							orderItems.setGoodsName(e.getGoodsName());
 							orderItemsMapper.insert(orderItems);
@@ -994,6 +1001,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 		BigDecimal amount = new BigDecimal("0.00");
 		//从集合中取出商品生成销售单
 		if (ObjectUtil.isNotEmpty(list)) {
+			BigDecimal num = list.stream().map(PjShoppingCart::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
 			PjCorpsDesc corpsDesc = null;
 			//根据当前登录人获得客户
 			PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
@@ -1030,6 +1038,15 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 			if ("2".equals(paymentType)) {
 				return generateOrderLimitShare(address, list, payType, corpsDesc, corpsAttn);
 			} else {
+				//处理部门
+				int index = AuthUtil.getDeptId().indexOf(",");
+				Long deptId = null;
+				if (index > -1) {
+					deptId = Long.valueOf(AuthUtil.getDeptId().substring(0, index));
+				} else {
+					deptId = (Long.valueOf(AuthUtil.getDeptId()));
+				}
+				String freight = sysClient.getParamServiceDWT("freight", corpsDesc.getTenantId());
 				// 获取系统编号
 				String billNo = serialService.getBillNo("WB", "WB", "WB");
 				if (ObjectUtils.isNull(billNo)) {
@@ -1037,69 +1054,9 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					throw new RuntimeException("生成系统编号失败");
 				}
 				billNo = billNo + AuthUtil.getTenantId();
-				// 获取系统编号
-				String SrcOrdNo = serialService.getBillNo("XS", "XS", "XS");
-				if (ObjectUtils.isNull(SrcOrdNo)) {
-					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-					throw new RuntimeException("生成系统编号失败");
-				}
 				List<PjOrder> pjOrderList = new ArrayList<>();
 				List<PjOrderItems> orderItemsList = new ArrayList<>();
 				List<PjOrderItems> orderItemsListShare = new ArrayList<>();
-				//保存销售主表信息-本地销售单
-				PjOrder order = new PjOrder();
-				order.setOrdNo(SrcOrdNo);
-				order.setBusinesDate(new Date());
-				order.setSrcOrdNo(billNo);
-				order.setCreateUser(AuthUtil.getUserId());
-				//处理部门
-				int index = AuthUtil.getDeptId().indexOf(",");
-				Long deptId = null;
-				if (index > -1) {
-					deptId = Long.valueOf(AuthUtil.getDeptId().substring(0, index));
-				} else {
-					deptId = (Long.valueOf(AuthUtil.getDeptId()));
-				}
-				//根据客户账期计算应结日期
-				if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
-					Date now = new Date(); // 获取当前时间
-					long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
-					Date afterSevenDays = new Date(now.getTime() + sevenDays);
-					order.setDueDate(afterSevenDays);
-				} else {
-					order.setDueDate(new Date());
-				}
-				order.setCreateTime(new Date());
-				order.setCreateDept(deptId);
-				order.setTenantId(AuthUtil.getTenantId());
-				order.setCustomerId(corpsDesc.getId());
-				order.setCustomerName(corpsDesc.getCname());
-				if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
-					order.setSalerId(corpsDesc.getSalesmanId());
-					order.setSalerName(corpsDesc.getSalesmanName());
-				} else {
-					R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
-					if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
-						order.setSalerId(res.getData().get(0).getId());
-						order.setSalerName(res.getData().get(0).getAccount());
-					}
-				}
-				if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
-					order.setStorageId(corpsDesc.getDeliveryWarehouseId());
-					order.setStorageName(corpsDesc.getDeliveryWarehouseName());
-				}
-				order.setSalesCompanyId(deptId);
-				order.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
-				order.setRecAddress(address);
-				order.setContacts(corpsAttn.getCname());
-				order.setPhone(corpsAttn.getTel());
-				order.setBsType(OrderTypeEnum.SALES.getType());
-				order.setBusinessSource(OrderTypeEnum.XCX.getType());
-				order.setReceivableType("网络支付");
-				order.setBillType(0);
-				orderService.save(order);
-				pjOrderList.add(order);
-				ids.append(order.getId()).append(",");
 				for (PjShoppingCart item : list) {
 					if (item.getInventory().compareTo(item.getGoodsNum()) < 0) {
 						throw new RuntimeException("库存不足");
@@ -1107,47 +1064,75 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
 					goodsName.append(goodsDesc.getCname()).append(",");
 					PjProductLaunch productLaunch = productLaunchMapper.selectById(item.getProductLaunchId());
-					if (ObjectUtils.isNotNull(productLaunch) && productLaunch.getInventory().compareTo(item.getGoodsNum()) >= 0) {
-						//保存销售明细信息
-						PjOrderItems orderItems = new PjOrderItems();
-						BeanUtils.copyProperties(item, orderItems);
-						if (ObjectUtils.isNotNull(goodsDesc)) {
-							orderItems.setCnameInt(goodsDesc.getCnameInt());
+					if (ObjectUtils.isNotNull(productLaunch)) {
+						if (productLaunch.getInventory().compareTo(item.getGoodsNum()) >= 0) {
+							//保存销售明细信息
+							PjOrderItems orderItems = new PjOrderItems();
+							BeanUtils.copyProperties(item, orderItems);
+							if (ObjectUtils.isNotNull(goodsDesc)) {
+								orderItems.setCnameInt(goodsDesc.getCnameInt());
+							}
+							orderItems.setId(null);
+							orderItems.setSendNum(new BigDecimal("0.00"));
+							orderItems.setCreateUser(AuthUtil.getUserId());
+							orderItems.setCreateTime(new Date());
+							orderItems.setTenantId(AuthUtil.getTenantId());
+							orderItems.setInventory(item.getInventory());
+							orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+							orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
+							orderItems.setGoodsName(item.getGoodsName());
+							orderItemsList.add(orderItems);
+						} else {
+							//保存销售明细信息
+							PjOrderItems orderItems = new PjOrderItems();
+							BeanUtils.copyProperties(item, orderItems);
+							if (ObjectUtils.isNotNull(goodsDesc)) {
+								orderItems.setCnameInt(goodsDesc.getCnameInt());
+							}
+							orderItems.setId(null);
+							orderItems.setSendNum(new BigDecimal("0.00"));
+							orderItems.setCreateUser(AuthUtil.getUserId());
+							orderItems.setCreateTime(new Date());
+							orderItems.setTenantId(AuthUtil.getTenantId());
+							orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
+							orderItems.setGoodsName(item.getGoodsName());
+
+							//保存共享销售明细信息
+							PjOrderItems orderItemsShare = new PjOrderItems();
+							BeanUtils.copyProperties(item, orderItemsShare);
+							if (ObjectUtils.isNotNull(goodsDesc)) {
+								orderItemsShare.setCnameInt(goodsDesc.getCnameInt());
+							}
+							orderItemsShare.setId(null);
+							orderItemsShare.setSendNum(new BigDecimal("0.00"));
+							orderItemsShare.setCreateUser(AuthUtil.getUserId());
+							orderItemsShare.setCreateTime(new Date());
+							orderItemsShare.setTenantId(AuthUtil.getTenantId());
+							orderItemsShare.setBizType("GX");
+							orderItemsShare.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
+							orderItemsShare.setGoodsName(item.getGoodsName());
+
+							if (new BigDecimal("0.00").compareTo(productLaunch.getInventory()) != 0) {
+								orderItems.setInventory(productLaunch.getInventory());
+								orderItems.setGoodsNum(productLaunch.getInventory());
+								orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+								orderItems.setSubTotalMoney(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+								orderItems.setNextDayNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
+								orderItemsList.add(orderItems);
+								orderItemsShare.setInventory(item.getInventory());
+								orderItemsShare.setGoodsNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
+								orderItemsShare.setTotalAmount(item.getGoodsNum().multiply(orderItems.getPrice()));
+								orderItemsShare.setSubTotalMoney(item.getGoodsNum().multiply(orderItems.getPrice()));
+								orderItemsListShare.add(orderItemsShare);
+							} else {
+								orderItemsShare.setInventory(item.getInventory());
+								orderItemsShare.setGoodsNum(item.getGoodsNum());
+								orderItemsShare.setTotalAmount(item.getGoodsNum().multiply(orderItems.getPrice()));
+								orderItemsShare.setSubTotalMoney(item.getGoodsNum().multiply(orderItems.getPrice()));
+								orderItemsListShare.add(orderItemsShare);
+							}
 						}
-						orderItems.setId(null);
-						orderItems.setSendNum(new BigDecimal("0.00"));
-						orderItems.setCreateUser(AuthUtil.getUserId());
-						orderItems.setCreateDept(order.getCreateDept());
-						orderItems.setCreateTime(new Date());
-						orderItems.setPid(order.getId());
-						orderItems.setTenantId(AuthUtil.getTenantId());
-						orderItems.setBillNo(order.getOrdNo());
-						orderItems.setBizType(order.getBsType());
-						orderItems.setInventory(item.getInventory());
-						orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
-						orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
-						orderItems.setGoodsName(item.getGoodsName());
-						orderItemsMapper.insert(orderItems);
-						orderItemsList.add(orderItems);
 					} else {
-						//保存销售明细信息
-						PjOrderItems orderItems = new PjOrderItems();
-						BeanUtils.copyProperties(item, orderItems);
-						if (ObjectUtils.isNotNull(goodsDesc)) {
-							orderItems.setCnameInt(goodsDesc.getCnameInt());
-						}
-						orderItems.setId(null);
-						orderItems.setSendNum(new BigDecimal("0.00"));
-						orderItems.setCreateUser(AuthUtil.getUserId());
-						orderItems.setCreateDept(order.getCreateDept());
-						orderItems.setCreateTime(new Date());
-						orderItems.setPid(order.getId());
-						orderItems.setTenantId(AuthUtil.getTenantId());
-						orderItems.setBillNo(order.getOrdNo());
-						orderItems.setBizType(order.getBsType());
-						orderItems.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
-						orderItems.setGoodsName(item.getGoodsName());
-
 						//保存共享销售明细信息
 						PjOrderItems orderItemsShare = new PjOrderItems();
 						BeanUtils.copyProperties(item, orderItemsShare);
@@ -1157,31 +1142,16 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 						orderItemsShare.setId(null);
 						orderItemsShare.setSendNum(new BigDecimal("0.00"));
 						orderItemsShare.setCreateUser(AuthUtil.getUserId());
-						orderItemsShare.setCreateDept(order.getCreateDept());
 						orderItemsShare.setCreateTime(new Date());
 						orderItemsShare.setTenantId(AuthUtil.getTenantId());
-						orderItemsShare.setBillNo(order.getOrdNo());
 						orderItemsShare.setBizType("GX");
 						orderItemsShare.setUrl(ObjectUtils.isNotNull(item.getFilesList()) && !item.getFilesList().isEmpty() ? item.getFilesList().get(0).getUrl() : "");
 						orderItemsShare.setGoodsName(item.getGoodsName());
-
-						if (ObjectUtils.isNotNull(productLaunch) && new BigDecimal("0.00").compareTo(productLaunch.getInventory()) != 0) {
-							orderItems.setInventory(productLaunch.getInventory());
-							orderItems.setGoodsNum(productLaunch.getInventory());
-							orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
-							orderItems.setNextDayNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
-							orderItemsMapper.insert(orderItems);
-							orderItemsList.add(orderItems);
-							orderItemsShare.setInventory(item.getInventory());
-							orderItemsShare.setGoodsNum(item.getGoodsNum().subtract(productLaunch.getInventory()));
-							orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
-							orderItemsListShare.add(orderItemsShare);
-						} else {
-							orderItemsShare.setInventory(item.getInventory());
-							orderItemsShare.setGoodsNum(item.getGoodsNum());
-							orderItemsShare.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
-							orderItemsListShare.add(orderItemsShare);
-						}
+						orderItemsShare.setInventory(item.getInventory());
+						orderItemsShare.setGoodsNum(item.getGoodsNum());
+						orderItemsShare.setTotalAmount(item.getGoodsNum().multiply(item.getPrice()));
+						orderItemsShare.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
+						orderItemsListShare.add(orderItemsShare);
 					}
 					//生成完毕删除购物车
 					item.setIsDeleted(1);
@@ -1246,6 +1216,17 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
 					orderShare.setSalesAmount(totalMoney);
 					orderShare.setTotalMoney(totalMoney);
+					if (num.compareTo(new BigDecimal(1)) <= 0) {
+						if (ObjectUtils.isNotNull(freight)) {
+							try {
+								BigDecimal freightAmount = new BigDecimal(freight);
+								orderShare.setTotalMoney(totalMoney.add(freightAmount));
+								orderShare.setFreight(freightAmount);
+							} catch (Exception ignored) {
+								orderShare.setFreight(new BigDecimal(0));
+							}
+						}
+					}
 					orderShare.setGoodsNameJoin(orderItemsListShare.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
 					orderShare.setShortcutJoin(orderItemsListShare.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
 					orderShare.setPayType(payType);
@@ -1254,11 +1235,72 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					ids.append(orderShare.getId()).append(",");
 					for (PjOrderItems item : orderItemsListShare) {
 						item.setPid(orderShare.getId());
+						item.setCreateDept(orderShare.getCreateDept());
+						item.setBillNo(orderShare.getOrdNo());
 						orderItemsMapper.insert(item);
 					}
 					amount = amount.add(orderShare.getTotalMoney());
 				}
 				if (!orderItemsList.isEmpty()) {
+					//保存销售主表信息-本地销售单
+					PjOrder order = new PjOrder();
+					// 获取系统编号
+					String SrcOrdNo = serialService.getBillNo("XS", "XS", "XS");
+					if (ObjectUtils.isNull(SrcOrdNo)) {
+						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+						throw new RuntimeException("生成系统编号失败");
+					}
+					order.setOrdNo(SrcOrdNo);
+					order.setBusinesDate(new Date());
+					order.setSrcOrdNo(billNo);
+					order.setCreateUser(AuthUtil.getUserId());
+					//根据客户账期计算应结日期
+					if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
+						Date now = new Date(); // 获取当前时间
+						long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
+						Date afterSevenDays = new Date(now.getTime() + sevenDays);
+						order.setDueDate(afterSevenDays);
+					} else {
+						order.setDueDate(new Date());
+					}
+					order.setCreateTime(new Date());
+					order.setCreateDept(deptId);
+					order.setTenantId(AuthUtil.getTenantId());
+					order.setCustomerId(corpsDesc.getId());
+					order.setCustomerName(corpsDesc.getCname());
+					if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
+						order.setSalerId(corpsDesc.getSalesmanId());
+						order.setSalerName(corpsDesc.getSalesmanName());
+					} else {
+						R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
+						if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
+							order.setSalerId(res.getData().get(0).getId());
+							order.setSalerName(res.getData().get(0).getAccount());
+						}
+					}
+					if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
+						order.setStorageId(corpsDesc.getDeliveryWarehouseId());
+						order.setStorageName(corpsDesc.getDeliveryWarehouseName());
+					}
+					order.setSalesCompanyId(deptId);
+					order.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
+					order.setRecAddress(address);
+					order.setContacts(corpsAttn.getCname());
+					order.setPhone(corpsAttn.getTel());
+					order.setBsType(OrderTypeEnum.SALES.getType());
+					order.setBusinessSource(OrderTypeEnum.XCX.getType());
+					order.setReceivableType("网络支付");
+					order.setBillType(0);
+					orderService.save(order);
+					pjOrderList.add(order);
+					ids.append(order.getId()).append(",");
+					for (PjOrderItems item : orderItemsList) {
+						item.setCreateDept(order.getCreateDept());
+						item.setPid(order.getId());
+						item.setBillNo(order.getOrdNo());
+						item.setBizType(order.getBsType());
+						orderItemsMapper.insert(item);
+					}
 					BigDecimal totalMoney = BigDecimal.ZERO;
 					order.setNumberRows(orderItemsList.size());//行数
 					//明细总数量
@@ -1269,8 +1311,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
 					order.setSalesAmount(totalMoney);
 					order.setTotalMoney(totalMoney);
-					if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {
-						String freight = sysClient.getParamServiceDWT("freight", corpsDesc.getTenantId());
+					if (num.compareTo(new BigDecimal(1)) <= 0) {
 						if (ObjectUtils.isNotNull(freight)) {
 							try {
 								BigDecimal freightAmount = new BigDecimal(freight);

+ 0 - 71
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/stock/controller/StockDescController.java

@@ -996,75 +996,4 @@ public class StockDescController extends BladeController {
 		}
 		return R.data(pages);
 	}
-
-	/**
-	 * 小程序商品详情专用
-	 */
-	/*@GetMapping("/listV1")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "分页", notes = "传入stockDesc")
-	public R<List<Map<String, Object>>> listV1(PjStockDesc stockDesc) {
-		List<Map<String, Object>> mapList = new ArrayList<>();
-		PjCorpsDesc corpsDesc = null;
-		//根据当前登录人获得客户
-		PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
-		if (ObjectUtil.isNotEmpty(corpsAttn)) {
-			corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
-			if (ObjectUtil.isEmpty(corpsDesc)) {
-				throw new RuntimeException("未查到用户信息");
-			}
-		} else {
-			throw new RuntimeException("未查到用户信息");
-		}
-		LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
-			.eq(PjStockDesc::getIsDeleted, 0)
-			.eq(PjStockDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
-			.eq(ObjectUtil.isNotEmpty(stockDesc.getCode()), PjStockDesc::getCode, stockDesc.getCode())
-			.eq(ObjectUtil.isNotEmpty(stockDesc.getTypeno()), PjStockDesc::getTypeno, stockDesc.getTypeno())
-			.eq(ObjectUtil.isNotEmpty(stockDesc.getBrandId()), PjStockDesc::getBrandId, stockDesc.getBrandId())
-			.eq(ObjectUtil.isNotEmpty(stockDesc.getBrandName()), PjStockDesc::getBrandName, stockDesc.getBrandName())
-			.eq(ObjectUtil.isNotEmpty(stockDesc.getGoodsTypeId()), PjStockDesc::getGoodsTypeId, stockDesc.getGoodsTypeId())
-			.eq(ObjectUtil.isNotEmpty(stockDesc.getDot()), PjStockDesc::getDot, stockDesc.getDot())
-			.orderByDesc(PjStockDesc::getBalanceQuantity);
-		String status = iSysClient.getParamService("whether.zero.inventory");
-		if (ObjectUtils.isNull(status) || "0".equals(status)) {
-			lambdaQueryWrapper.gt(PjStockDesc::getBalanceQuantity, 0);
-		}
-		String management = iSysClient.getParamService("whether.branch.management");
-		if (ObjectUtils.isNotNull(management) && "1".equals(management)) {
-			if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
-				lambdaQueryWrapper.eq(PjStockDesc::getStorageId, corpsDesc.getDeliveryWarehouseId());
-			} else {
-				lambdaQueryWrapper.eq(ObjectUtil.isNotEmpty(stockDesc.getStorageId()), PjStockDesc::getStorageId, stockDesc.getStorageId())
-					.eq(ObjectUtil.isNotEmpty(stockDesc.getStorageName()), PjStockDesc::getStorageName, stockDesc.getStorageName());
-			}
-		} else {
-			lambdaQueryWrapper.eq(ObjectUtil.isNotEmpty(stockDesc.getStorageId()), PjStockDesc::getStorageId, stockDesc.getStorageId())
-				.eq(ObjectUtil.isNotEmpty(stockDesc.getStorageName()), PjStockDesc::getStorageName, stockDesc.getStorageName());
-		}
-		if (ObjectUtil.isNotEmpty(stockDesc.getCname())) {
-			PjGoodsDesc pjGoodsDescs = goodsDescService.getOne(new LambdaQueryWrapper<PjGoodsDesc>()
-				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
-				.eq(PjGoodsDesc::getIsDeleted, 0)
-				.eq(PjGoodsDesc::getCname, stockDesc.getCname()));
-			if (pjGoodsDescs != null) {
-				lambdaQueryWrapper.eq(PjStockDesc::getCname, stockDesc.getCname());
-			} else {
-				lambdaQueryWrapper.eq(PjStockDesc::getCname, stockDesc.getCname());
-			}
-		}
-		lambdaQueryWrapper.orderByDesc(PjStockDesc::getBalanceQuantity);
-		List<PjStockDesc> list = stockDescService.list( lambdaQueryWrapper);
-		if (!list.isEmpty()) {
-			for (PjStockDesc item : list) {
-				Map<String, Object> map = new HashMap<>();
-				map.put("storageName", item.getStorageName());
-				map.put("storeInventory", item.getBalanceQuantity());
-				mapList.add(map);
-			}
-		}
-		return R.data(mapList);
-	}*/
-
 }