Browse Source

2025年1月20日17:08:40

纪新园 1 năm trước cách đây
mục cha
commit
51706e2835

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

@@ -524,6 +524,11 @@ public class PjOrder implements Serializable {
 	 */
 	@ApiModelProperty(value = "参考号")
 	private String refno;
+	/**
+	 * 退款类型
+	 */
+	@ApiModelProperty(value = "退款类型")
+	private String refundType;
 
 	/**
 	 * 返利金额

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

@@ -367,4 +367,9 @@ public class PjOrderItems implements Serializable {
 
 	@TableField(exist = false)
 	private String cnameInt;
+	/**
+	 * 退款类型
+	 */
+	@ApiModelProperty(value = "退款类型")
+	private String refundType;
 }

+ 17 - 1
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/feign/IPJOrderClient.java

@@ -1,7 +1,6 @@
 package org.springblade.salesPart.feign;
 
 import org.springblade.core.tool.api.R;
-import org.springblade.salesPart.entity.PjGoodsDesc;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -29,6 +28,8 @@ public interface IPJOrderClient {
 	String ORDER_PASS_CHECK = API_PREFIX + "/orderPassCheck";
 	String UPDATE_BY_SRCORGID = API_PREFIX + "/updateBySrcOrgId";
 
+	String UPDATE_SHARE_BY_SRCORGID = API_PREFIX + "/updateShareBySrcOrgId";
+
 	String PASS_CHECK_RW = API_PREFIX + "/passCheckRW";
 	String UNDER_REVIEW_RW = API_PREFIX + "/underReviewRW";
 	String PASS_CANCEL_RW = API_PREFIX + "/passCancelRW";
@@ -72,6 +73,7 @@ public interface IPJOrderClient {
 
 	/**
 	 * 审核驳回
+	 *
 	 * @param id
 	 * @return
 	 */
@@ -80,6 +82,7 @@ public interface IPJOrderClient {
 
 	/**
 	 * 审核通过
+	 *
 	 * @param id
 	 * @return
 	 */
@@ -88,6 +91,7 @@ public interface IPJOrderClient {
 
 	/**
 	 * 支付完成修改上架库存
+	 *
 	 * @param srcOrgId
 	 * @return
 	 */
@@ -95,7 +99,17 @@ public interface IPJOrderClient {
 	R updateBySrcOrgId(@RequestParam("srcOrgId") String srcOrgId);
 
 	/**
+	 * 支付完成修改上架库存 -共享
+	 *
+	 * @param srcOrgId
+	 * @return
+	 */
+	@PostMapping(UPDATE_SHARE_BY_SRCORGID)
+	R updateShareBySrcOrgId(@RequestParam("srcOrgId") String srcOrgId);
+
+	/**
 	 * 审核通过
+	 *
 	 * @param id
 	 * @return
 	 */
@@ -104,6 +118,7 @@ public interface IPJOrderClient {
 
 	/**
 	 * 审批中
+	 *
 	 * @param id
 	 * @return
 	 */
@@ -112,6 +127,7 @@ public interface IPJOrderClient {
 
 	/**
 	 * 审核驳回
+	 *
 	 * @param id
 	 * @return
 	 */

+ 24 - 35
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/controller/TongLianPaymentController.java

@@ -1,49 +1,20 @@
 package org.springblade.pay.tonglianPayment.controller;
 
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.jetbrains.annotations.NotNull;
-import org.springblade.client.entity.CorpsDesc;
-import org.springblade.client.entity.FeesDesc;
-import org.springblade.client.feign.ICorpsDescClient;
-import org.springblade.client.feign.IFeesDescClient;
-import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.tool.api.R;
-import org.springblade.finance.dto.ApplyDTO;
-import org.springblade.finance.feign.IFinanceClient;
-import org.springblade.finance.vojo.Settlement;
-import org.springblade.pay.tonglianPayment.entity.Parameters;
-import org.springblade.pay.tonglianPayment.entity.WechatMark;
-import org.springblade.pay.tonglianPayment.fegin.ITongLianPaymentClient;
-import org.springblade.pay.tonglianPayment.method.NotifyServlet;
+import org.springblade.core.tool.utils.DigestUtil;
 import org.springblade.pay.tonglianPayment.service.IPaymentService;
-import org.springblade.pay.tonglianPayment.service.IWechatMarkService;
-import org.springblade.pay.tonglianPayment.utils.AnalysisMapUtils;
-import org.springblade.pay.tonglianPayment.utils.SybConstants;
-import org.springblade.pay.tonglianPayment.utils.SybUtil;
 import org.springblade.purchase.sales.entity.Order;
-import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
-import org.springblade.purchase.sales.feign.IOrderItemsClient;
-import org.springblade.stock.entity.StockGoods;
-import org.springblade.stock.feign.IStockGoodsClient;
-import org.springblade.stock.vo.StockGoodsVO;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.OutputStream;
-import java.math.BigDecimal;
-import java.math.MathContext;
-import java.math.RoundingMode;
-import java.util.*;
 
 /**
  * 通联支付 控制器
@@ -78,7 +49,7 @@ public class TongLianPaymentController extends BladeController {
 	@ApiIgnore
 	@RequestMapping(value = "/notify", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
 	public void notify(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) {
-		paymentService.notifyMethod(request,response);
+		paymentService.notifyMethod(request, response);
 	}
 
 	/**
@@ -87,7 +58,7 @@ public class TongLianPaymentController extends BladeController {
 	@ApiIgnore
 	@RequestMapping(value = "/callbackNotify", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
 	public void callbackNotify(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) {
-		paymentService.callbackNnotifyMethod(request,response);
+		paymentService.callbackNnotifyMethod(request, response);
 	}
 
 	/**
@@ -96,7 +67,7 @@ public class TongLianPaymentController extends BladeController {
 	@ApiIgnore
 	@RequestMapping(value = "/steamProtectNotify", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
 	public void steamProtectNotify(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) {
-		paymentService.steamProtectNotify(request,response);
+		paymentService.steamProtectNotify(request, response);
 	}
 
 
@@ -106,7 +77,25 @@ public class TongLianPaymentController extends BladeController {
 	@ApiIgnore
 	@RequestMapping(value = "/cashierPaymentNotify", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
 	public void cashierPaymentNotify(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) {
-		paymentService.cashierPaymentNotify(request,response);
+		paymentService.cashierPaymentNotify(request, response);
+	}
+
+	/**
+	 * 微信订单回调接口 (配件-收银台) 共享
+	 */
+	@ApiIgnore
+	@RequestMapping(value = "/cashierPaymentShareNotify", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
+	public void cashierPaymentShareNotify(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) {
+		paymentService.cashierPaymentShareNotify(request, response);
+	}
+
+	/**
+	 * MD5加密
+	 */
+	@ApiOperation(value = "MD5加密")
+	@GetMapping("/encryptionMD5")
+	public R encryptionMD5(@RequestParam(value = "param") String param) {
+		return R.data(DigestUtil.encrypt(param));
 	}
 
 

+ 2 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/IPaymentService.java

@@ -26,4 +26,6 @@ public interface IPaymentService {
 	void steamProtectNotify(HttpServletRequest request, HttpServletResponse response);
 
     void cashierPaymentNotify(HttpServletRequest request, HttpServletResponse response);
+
+	void cashierPaymentShareNotify(HttpServletRequest request, HttpServletResponse response);
 }

+ 245 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -396,6 +396,251 @@ public class PaymentServiceImpl implements IPaymentService {
 		}
 	}
 
+	@Override
+	public void cashierPaymentShareNotify(HttpServletRequest request, HttpServletResponse response) {
+		try {
+			//通知传输的编码为GBK
+			request.setCharacterEncoding("UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		response.setCharacterEncoding("UTF-8");
+		TreeMap<String, String> params = NotifyServlet.getParams(request);
+
+		String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
+		// 创建线程池
+		ExecutorService executor = Executors.newSingleThreadExecutor();
+		// 启动任务并提交给线程池
+		executor.submit(() -> {
+			try {
+				cashierPaymentShare(request, response);
+			} catch (Exception e) {
+				System.out.println("支付成功,业务处理异常,时间:" + new Date());
+				System.out.println(e.getMessage());
+				// 关闭线程池
+				executor.shutdown();
+			} finally {
+				// 关闭线程池
+				executor.shutdown();
+			}
+		});
+		// 关闭线程池
+		executor.shutdown();
+		if (Objects.equals(trxstatus, "0000")) {
+			returnMethod(response, AnalysisMapUtils.setXML("SUCCESS", "OK"));
+		} else {
+			returnMethod(response, AnalysisMapUtils.setXML("error", "OK"));
+		}
+	}
+
+	private void cashierPaymentShare(HttpServletRequest request, HttpServletResponse response) {
+		try {
+			//通知传输的编码为GBK
+			request.setCharacterEncoding("UTF-8");
+			response.setCharacterEncoding("UTF-8");
+			TreeMap<String, String> params = NotifyServlet.getParams(request);
+			String appKey;
+			System.out.println("交易返回数据:" + params);
+			WechatMark wechatMark = new WechatMark();
+			Parameters parameters = new Parameters();
+			parameters.setAppId(AnalysisMapUtils.getString("appid", params));
+			parameters.setCusId(AnalysisMapUtils.getString("cusid", params));
+			Parameters parametersDetails = tongLianPaymentClient.getParametersDetails(parameters);
+			if (ObjectUtils.isNull(parametersDetails)) {
+				wechatMark.setRemark("未找到租户,异常支付");
+			}
+
+			if ("RSA".equals(params.get("signtype"))) {
+				appKey = parametersDetails.getSybRsaPublickey();
+			} else if ("SM2".equals(params.get("signtype"))) {
+				appKey = parametersDetails.getSybSmtlpubkey();
+			} else {
+				appKey = parametersDetails.getSybMdAppkey();
+			}
+			// 接受到推送通知,首先验签
+			boolean isSign = SybUtil.validSign(params, appKey, params.get("signtype"));
+
+			wechatMark.setCreateTime(new Date());
+			wechatMark.setType("支付");
+			if (isSign) {
+				System.out.println("签名验证成功");
+				String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
+				if (Objects.equals(trxstatus, "0000")) {
+					wechatMark.setSrcBillNo(AnalysisMapUtils.getString("cusorderid", params));
+					wechatMark.setSerialNumber(AnalysisMapUtils.getString("trxid", params));
+					wechatMark.setAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
+
+					//支付成功业务处理
+					PjOrder order = new PjOrder();
+					order.setSrcOrdNo(AnalysisMapUtils.getString("cusorderid", params));
+
+					if (ObjectUtils.isNotNull(parametersDetails)) {
+						wechatMark.setTenantId(parametersDetails.getTenantId());
+						order.setTenantId(parametersDetails.getTenantId());
+					} else {
+						wechatMark.setTenantId("000000");
+						order.setTenantId("000000");
+						wechatMark.setRemark("未找到租户,异常支付");
+					}
+
+					R<List<PjOrder>> re = ipjOrderClient.getByOrder(order);
+					if (re.isSuccess() && ObjectUtils.isNotNull(re.getData())) {
+						StringBuilder openIds = new StringBuilder();
+						BigDecimal amount = new BigDecimal("0.00");
+						for (PjOrder selectOrder : re.getData()) {
+							selectOrder.setActualPaymentStatus(2);
+							selectOrder.setPaymentDate(new Date());
+							selectOrder.setOldTrxId(AnalysisMapUtils.getString("trxid", params));
+							selectOrder.setChnltrxid(AnalysisMapUtils.getString("chnltrxid", params));
+							selectOrder.setPaymentAmountTl(selectOrder.getTotalMoney());
+							selectOrder.setStatus(OrderTypeEnum.XSDQR.getType());
+							selectOrder.setXcxStatus(OrderTypeEnum.XSDFH.getType());
+							wechatMark.setBillNo(selectOrder.getOrdNo());
+							wechatMark.setSalesCompanyId(selectOrder.getSalesCompanyId());
+							wechatMark.setSalesCompanyName(selectOrder.getSalesCompanyName());
+							amount = amount.add(selectOrder.getPaymentAmountTl());
+							ipjOrderClient.updateShareBySrcOrgId(selectOrder.getId() + "");
+							LocalDateTime now = LocalDateTime.now();
+							DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+							String formatted = now.format(formatter);
+							//给角色为财务的人发送消息
+							R<String> clientDeptIds = sysClient.getRoleIds(parametersDetails.getTenantId(), "客服");
+							if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+								R<List<User>> userList = userClient.listUserByRoleId(clientDeptIds.getData(), parametersDetails.getTenantId(), selectOrder.getSalesCompanyId() + "");
+								if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+									for (User datum : userList.getData()) {
+										if (ObjectUtils.isNotNull(datum.getOaOpenId())) {
+											openIds.append(datum.getOaOpenId()).append(",");
+										}
+										//循环发送消息
+										Message sendMessage = new Message();
+										sendMessage.setParameter(selectOrder.getId() + "");
+										sendMessage.setUserName("外部用户");
+										sendMessage.setUserId(null);
+										sendMessage.setToUserId(datum.getId());
+										sendMessage.setToUserName(datum.getName());
+										sendMessage.setMessageType(1);
+										sendMessage.setTenantId(parametersDetails.getTenantId());
+										sendMessage.setCreateUser(null);
+										sendMessage.setCreateTime(new Date());
+										sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
+										sendMessage.setPageLabel("销售订单");
+										sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+										sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + selectOrder.getOrdNo() + "时间:" + formatted);
+										R save = messageClient.save(sendMessage);
+										System.out.println("发送结果:" + save);
+										if (!save.isSuccess()) {
+											throw new SecurityException("发送消息失败");
+										}
+									}
+								}
+							}
+							if (ObjectUtils.isNotNull(selectOrder.getSalerId())) {
+								Message sendMessage = new Message();
+								sendMessage.setParameter(selectOrder.getId() + "");
+								sendMessage.setUserName("外部用户");
+								sendMessage.setUserId(null);
+								sendMessage.setToUserId(selectOrder.getSalerId());
+								sendMessage.setToUserName(selectOrder.getSalerName());
+								sendMessage.setMessageType(1);
+								sendMessage.setTenantId(parametersDetails.getTenantId());
+								sendMessage.setCreateUser(null);
+								sendMessage.setCreateTime(new Date());
+								sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
+								sendMessage.setPageLabel("销售订单");
+								sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+								sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + selectOrder.getOrdNo() + "时间:" + formatted);
+								R save = messageClient.save(sendMessage);
+								System.out.println("发送结果:" + save);
+								if (!save.isSuccess()) {
+									throw new SecurityException("发送消息失败");
+								}
+							}
+						}
+						ipjOrderClient.updateOrder(re.getData());
+						String status = sysClient.paramServiceValue( parametersDetails.getTenantId(),"whether.calculation.integral");
+						if ("1".equals(status)) {
+							R res = ipjCorpClient.updateIntegral(re.getData());
+							if (ObjectUtils.isNotNull(res) && res.isSuccess()) {
+								System.out.println("积分修改成功:" + res.getMsg());
+							} else {
+								System.out.println("积分修改失败调取接口异常");
+							}
+						}
+						SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
+						String date1 = format.format(new Date());
+
+						System.out.println("=========发送人openIds=========" + openIds);
+						if (ObjectUtils.isNotNull(openIds)) {
+							PjOrder pjOrder = re.getData().get(0);
+							pjOrder.setDate(date1);
+							pjOrder.setAmount(amount.toString());
+							R<List<WechatMessageConfigurationItem>> resItem = wechatClient.getTemplateType("2", re.getData().isEmpty() ? "" : re.getData().get(0).getTenantId());
+							if (resItem.isSuccess() && ObjectUtils.isNotNull(resItem.getData())) {
+								List<WxMpTemplateData> data = new ArrayList<>();
+								if (ObjectUtils.isNotNull(pjOrder.getSalerName()) && pjOrder.getSalerName().length() > 3) {
+									pjOrder.setSalerName(pjOrder.getSalerName().substring(0, 3));
+								}
+								for (WechatMessageConfigurationItem item : resItem.getData()) {
+									try {
+										// 根据方法名获取对应的Method对象
+										Method method = pjOrder.getClass().getMethod(item.getMethod());
+										// 调用get方法并打印结果
+										Object result = method.invoke(pjOrder);
+										System.out.println(result);
+										if (ObjectUtils.isNotNull(result)) {
+											data.add(new WxMpTemplateData(item.getDataValue(), result.toString()));
+										} else {
+											data.add(new WxMpTemplateData(item.getDataValue(), "无"));
+										}
+									} catch (Exception e) {
+										e.printStackTrace();
+									}
+								}
+								if (!data.isEmpty()) {
+									WxMpTemplateDto wxMpTemplateDto = new WxMpTemplateDto();
+									wxMpTemplateDto.setOpenid(openIds.substring(0, openIds.length() - 1));
+									wxMpTemplateDto.setTenantId(re.getData().isEmpty() ? "" : re.getData().get(0).getTenantId());
+									wxMpTemplateDto.setType("2");
+									wxMpTemplateDto.setData(data);
+									String rest = wechatClient.sendMessageNew(wxMpTemplateDto);
+									System.out.println("=========发送返回值=========" + rest);
+								}
+							}
+						}
+						wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
+						wechatMark.setStatus(1);
+					} else {
+						wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据信息,账单结算失败!");
+						wechatMark.setStatus(2);
+					}
+					if (re.isSuccess() && ObjectUtils.isNotNull(re.getData())) {
+						for (PjOrder selectOrder : re.getData()) {
+							wechatMark.setBillNo(selectOrder.getOrdNo());
+							wechatMarkService.save(wechatMark);
+						}
+					} else {
+						wechatMarkService.save(wechatMark);
+					}
+				} else {
+					//订单编号
+					wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付失败!" + "原因:" + AnalysisMapUtils.getString("errmsg", params));
+					wechatMark.setStatus(2);
+					wechatMarkService.save(wechatMark);
+				}
+			} else {
+				wechatMark.setCause("签名验证失败");
+				wechatMark.setStatus(2);
+				wechatMarkService.save(wechatMark);
+				throw new RuntimeException("签名验证失败");
+			}
+		} catch (
+			Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
 	private void logicMethodQB(HttpServletRequest request, HttpServletResponse response) {
 		try {
 			//通知传输的编码为GBK

+ 31 - 19
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/feign/PJOrderClient.java

@@ -7,7 +7,6 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.ObjectUtil;
-import org.springblade.salesPart.entity.PjGoodsDesc;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
 import org.springblade.salesPart.entity.PjProductLaunch;
@@ -15,12 +14,10 @@ import org.springblade.salesPart.feign.IPJOrderClient;
 import org.springblade.salesPart.order.service.IOrderItemsService;
 import org.springblade.salesPart.order.service.IOrderService;
 import org.springblade.salesPart.productLaunch.service.IProductLaunchService;
-import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import java.math.BigDecimal;
-import java.util.Date;
 import java.util.List;
 
 @NonDS
@@ -46,11 +43,11 @@ public class PJOrderClient implements IPJOrderClient {
 			.eq(PjOrder::getSrcOrdNo, order.getSrcOrdNo())
 			.eq(PjOrder::getActualPaymentStatus, 1)
 			.eq(PjOrder::getIsDeleted, 0);
-			if (ObjectUtils.isNotNull(AuthUtil.getTenantId())){
-				lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId());
-			}else{
-				lambdaQueryWrapper.eq(PjOrder::getTenantId, order.getTenantId());
-			}
+		if (ObjectUtils.isNotNull(AuthUtil.getTenantId())) {
+			lambdaQueryWrapper.eq(PjOrder::getTenantId, AuthUtil.getTenantId());
+		} else {
+			lambdaQueryWrapper.eq(PjOrder::getTenantId, order.getTenantId());
+		}
 		return R.data(orderService.list(lambdaQueryWrapper));
 	}
 
@@ -108,23 +105,14 @@ public class PJOrderClient implements IPJOrderClient {
 					e.setGoodsNum(BigDecimal.ZERO);
 				}
 			}
-
 			//修改共享仓的上架管理库存
 			LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
 			queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
 				.eq(PjProductLaunch::getIsDeleted, 0)
 				.eq(PjProductLaunch::getGoodsId, e.getGoodsId());
-
-			if (productLaunch.getBillType() == 0) {
-				queryWrapper.eq(PjProductLaunch::getSourceCompanyId, e.getSharedCompanyId())
-					.eq(PjProductLaunch::getBillType, 1);
-			} else {
-				queryWrapper.eq(PjProductLaunch::getSalesCompanyId, e.getSharedCompanyId())
-					.eq(PjProductLaunch::getBillType, 0);
-			}
-
+			queryWrapper.eq(PjProductLaunch::getSalesCompanyId, e.getSharedCompanyId())
+				.eq(PjProductLaunch::getBillType, 0);
 			List<PjProductLaunch> launchList = productLaunchService.list(queryWrapper);
-
 			if (ObjectUtil.isNotEmpty(launchList)) {
 				launchList.forEach(launch -> {
 					launch.setInventory(launch.getInventory().subtract(e.getGoodsNum()));
@@ -136,6 +124,30 @@ public class PJOrderClient implements IPJOrderClient {
 	}
 
 	@Override
+	public R updateShareBySrcOrgId(String srcOrgId) {
+		List<PjOrderItems> shoppingCartList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>().eq(PjOrderItems::getPid, srcOrgId));
+		shoppingCartList.forEach(e -> {
+			//修改上架管理库存
+			PjProductLaunch productLaunch = productLaunchService.getById(e.getProductLaunchId());
+			if (ObjectUtil.isNotEmpty(productLaunch)) {
+				if (ObjectUtil.isNotEmpty(e.getGoodsNum())) {
+					if (e.getGoodsNum().compareTo(BigDecimal.ZERO) > 0) {
+						if (productLaunch.getInventory().compareTo(e.getGoodsNum()) >= 0) {
+							productLaunch.setInventory(productLaunch.getInventory().subtract(e.getGoodsNum()));
+						} else {
+							productLaunch.setInventory(new BigDecimal("0.00"));
+						}
+						productLaunchService.updateById(productLaunch);
+					}
+				} else {
+					e.setGoodsNum(BigDecimal.ZERO);
+				}
+			}
+		});
+		return R.data(shoppingCartList);
+	}
+
+	@Override
 	public R passCheckRW(Long id) {
 		return orderService.passCheckRW(id);
 	}

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

@@ -1683,6 +1683,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			selectOne.setReturnsStatus("部分");
 		}
+		selectOne.setRefundType("线下退款");
 		selectOne.setReturnsNumber(selectOne.getReturnsNumber().add(pjOrder.getReturnsNumber()));
 		selectOne.setReturnsAmount(selectOne.getReturnsAmount().add(pjOrder.getReturnsAmount()));
 		baseMapper.updateById(selectOne);
@@ -1700,6 +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("线上退款");
 				}
 				orderItemsService.updateBatchById(pjOrderItems);
 			}
@@ -1776,6 +1778,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			selectOne.setReturnsStatus("部分");
 		}
+		if (new BigDecimal("0.00").compareTo(selectOne.getReturnsNumber()) == 0) {
+			selectOne.setRefundType("未退款");
+		}
 		baseMapper.updateById(selectOne);
 		List<PjOrderItems> pjOrderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
 			.eq(PjOrderItems::getPid, pjOrder.getId())
@@ -1791,6 +1796,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						.map(PjOrderItems::getReturnsNumber).reduce(BigDecimal.ZERO, BigDecimal::add)));
 					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("线上退款");
+					}
 				}
 				orderItemsService.updateBatchById(pjOrderItems);
 			}
@@ -5938,6 +5946,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						list.forEach(item -> {
 							item.setReturnsNumber(item.getGoodsNum());
 							item.setReturnsAmount(item.getTotalAmount());
+							item.setRefundType("线上退款");
 							if (item.getId() == null) {
 								item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 								item.setCreateTime(new Date());
@@ -6057,6 +6066,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			order.setReturnsStatus("全退");
 			order.setReturnsNumber(order.getGoodsTotalNum());
 			order.setReturnsAmount(order.getPaymentAmountTl());
+			order.setRefundType("线上退款");
 		}
 		order.setCheckStatus("审核完成");
 		baseMapper.updateById(order);

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

@@ -94,10 +94,15 @@ public class PayServiceImpl implements PayService {
 			paymentDTO.setRemark("备注");
 			paymentDTO.setAcct(r.getData().getOpenId());
 			paymentDTO.setValidtime(parameters.getValidtime());
-			if ("1".equals(count)) {
-				paymentDTO.setNotify_url(parameters.getNotifyUrl() + "/api/blade-pay/tongLianPayment/cashierPaymentNotify");
-			} else {
-				paymentDTO.setNotify_url(parameters.getNotifyUrl() + "/api/blade-pay/tongLianPayment/callbackNotify");
+			String openShare = sysClient.getParamServiceNew("whether.open.share");
+			if ("1".equals(openShare)){
+				paymentDTO.setNotify_url(parameters.getNotifyUrl() + "/api/blade-pay/tongLianPayment/cashierPaymentShareNotify");
+			}else{
+				if ("1".equals(count)) {
+					paymentDTO.setNotify_url(parameters.getNotifyUrl() + "/api/blade-pay/tongLianPayment/cashierPaymentNotify");
+				} else {
+					paymentDTO.setNotify_url(parameters.getNotifyUrl() + "/api/blade-pay/tongLianPayment/callbackNotify");
+				}
 			}
 			paymentDTO.setLimit_pay("no_credit");//不传这个参数 支付报错
 			paymentDTO.setIdno("");

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

@@ -991,12 +991,9 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 	public R generateOrderShare(String address, List<PjShoppingCart> list, String payType) {
 		StringBuilder ids = new StringBuilder();
 		StringBuilder goodsName = new StringBuilder();
-		StringBuilder shortcutJoin = new StringBuilder();
 		BigDecimal amount = new BigDecimal("0.00");
-
 		//从集合中取出商品生成销售单
 		if (ObjectUtil.isNotEmpty(list)) {
-
 			PjCorpsDesc corpsDesc = null;
 			//根据当前登录人获得客户
 			PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
@@ -1008,278 +1005,620 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 			} else {
 				throw new RuntimeException("未查到用户信息");
 			}
-
-			PjCorpsDesc finalCorpsDesc = corpsDesc;
-
-			// 获取系统编号
-			String billNo = serialService.getBillNo("WB", "WB", "WB");
-			if (ObjectUtils.isNull(billNo)) {
-				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-				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();
-			if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
-				order.setOrdNo(SrcOrdNo);
-			} else {
-				order.setOrdNo(SrcOrdNo + "-" + 1);
-			}
-			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(finalCorpsDesc.getId());
-			order.setCustomerName(finalCorpsDesc.getCname());
-			if (ObjectUtils.isNotNull(finalCorpsDesc.getSalesmanId())) {
-				order.setSalerId(finalCorpsDesc.getSalesmanId());
-				order.setSalerName(finalCorpsDesc.getSalesmanName());
+			String count = sysClient.getParamServiceNew("cashier.payment");
+			String paymentType;
+			if ("1".equals(corpsDesc.getIfLimitAmount())) {
+				BigDecimal totalMoney = list.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+					return x.add(y.getGoodsNum().multiply(y.getPrice()));
+				}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
+				if (corpsDesc.getLimitAmount().compareTo(totalMoney) >= 0) {
+					paymentType = "2";
+				} else {
+					if ("1".equals(count)) {
+						paymentType = "1";
+					} else {
+						paymentType = "0";
+					}
+				}
 			} 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 ("1".equals(count)) {
+					paymentType = "1";
+				} else {
+					paymentType = "0";
 				}
 			}
-			if (ObjectUtils.isNotNull(finalCorpsDesc.getDeliveryWarehouseId())) {
-				order.setStorageId(finalCorpsDesc.getDeliveryWarehouseId());
-				order.setStorageName(finalCorpsDesc.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("库存不足");
+			if ("2".equals(paymentType)){
+				return generateOrderLimitShare(address, list, payType, corpsDesc, corpsAttn);
+			}else{
+                // 获取系统编号
+				String billNo = serialService.getBillNo("WB", "WB", "WB");
+				if (ObjectUtils.isNull(billNo)) {
+					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+					throw new RuntimeException("生成系统编号失败");
 				}
-				PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
-				if (ObjectUtils.isNotNull(goodsDesc)) {
-					shortcutJoin.append(goodsDesc.getCnameInt()).append(",");
+				billNo = billNo + AuthUtil.getTenantId();
+				// 获取系统编号
+				String SrcOrdNo = serialService.getBillNo("XS", "XS", "XS");
+				if (ObjectUtils.isNull(SrcOrdNo)) {
+					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+					throw new RuntimeException("生成系统编号失败");
 				}
-				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());
-					}
-					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);
+				List<PjOrder> pjOrderList = new ArrayList<>();
+				List<PjOrderItems> orderItemsList = new ArrayList<>();
+				List<PjOrderItems> orderItemsListShare = new ArrayList<>();
+				//保存销售主表信息-本地销售单
+				PjOrder order = new PjOrder();
+				if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
+					order.setOrdNo(SrcOrdNo);
 				} 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());
+					order.setOrdNo(SrcOrdNo + "-" + 1);
+				}
+				order.setBusinesDate(new Date());
+				order.setSrcOrdNo(billNo);
+				order.setCreateUser(AuthUtil.getUserId());
 
-					//保存共享销售明细信息
-					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.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)) {
-						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);
-					}
+				//处理部门
+				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()));
 				}
-				//生成完毕删除购物车
-				item.setIsDeleted(1);
-				baseMapper.updateById(item);
-			}
-			if (!orderItemsListShare.isEmpty()) {
-				//保存销售主表信息-共享销售单
-				PjOrder orderShare = new PjOrder();
-				orderShare.setOrdNo(SrcOrdNo + "-" + 2);
-				orderShare.setBusinesDate(new Date());
-				orderShare.setSrcOrdNo(billNo);
-				orderShare.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);
-					orderShare.setDueDate(afterSevenDays);
+					order.setDueDate(afterSevenDays);
 				} else {
-					orderShare.setDueDate(new Date());
+					order.setDueDate(new Date());
 				}
-				orderShare.setCreateTime(new Date());
-				orderShare.setCreateDept(deptId);
-				orderShare.setTenantId(AuthUtil.getTenantId());
-				orderShare.setCustomerId(finalCorpsDesc.getId());
-				orderShare.setCustomerName(finalCorpsDesc.getCname());
-				if (ObjectUtils.isNotNull(finalCorpsDesc.getSalesmanId())) {
-					orderShare.setSalerId(finalCorpsDesc.getSalesmanId());
-					orderShare.setSalerName(finalCorpsDesc.getSalesmanName());
+				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()) {
-						orderShare.setSalerId(res.getData().get(0).getId());
-						orderShare.setSalerName(res.getData().get(0).getAccount());
+						order.setSalerId(res.getData().get(0).getId());
+						order.setSalerName(res.getData().get(0).getAccount());
 					}
 				}
-				if (ObjectUtils.isNotNull(finalCorpsDesc.getDeliveryWarehouseId())) {
-					orderShare.setStorageId(finalCorpsDesc.getDeliveryWarehouseId());
-					orderShare.setStorageName(finalCorpsDesc.getDeliveryWarehouseName());
+				if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
+					order.setStorageId(corpsDesc.getDeliveryWarehouseId());
+					order.setStorageName(corpsDesc.getDeliveryWarehouseName());
 				}
-				orderShare.setSalesCompanyId(deptId);
-				orderShare.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
-				orderShare.setRecAddress(address);
-				orderShare.setContacts(corpsAttn.getCname());
-				orderShare.setPhone(corpsAttn.getTel());
-				orderShare.setBsType(OrderTypeEnum.SALES.getType());
-				orderShare.setBusinessSource("共享销售");
-				orderShare.setReceivableType("网络支付");
-				orderShare.setBillType(1);
-				BigDecimal totalMoney = BigDecimal.ZERO;
-				orderShare.setNumberRows(orderItemsListShare.size());//行数
-				//明细总数量
-				orderShare.setGoodsTotalNum(orderItemsListShare.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				//明细总金额
-				totalMoney = orderItemsListShare.stream().reduce(BigDecimal.ZERO, (x, y) -> {
-					return x.add(y.getGoodsNum().multiply(y.getPrice()));
-				}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-				orderShare.setSalesAmount(totalMoney);
-				orderShare.setTotalMoney(totalMoney);
-				orderShare.setGoodsNameJoin(orderItemsListShare.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
-				orderShare.setShortcutJoin(orderItemsListShare.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
-				orderShare.setPayType(payType);
-				orderService.save(orderShare);
-				pjOrderList.add(orderShare);
-				ids.append(orderShare.getId()).append(",");
-				for (PjOrderItems item : orderItemsListShare) {
-					item.setPid(orderShare.getId());
-					orderItemsMapper.insert(item);
+				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("库存不足");
+					}
+					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());
+						}
+						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);
+						if (ObjectUtils.isNotNull(goodsDesc)) {
+							orderItemsShare.setCnameInt(goodsDesc.getCnameInt());
+						}
+						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);
+						}
+					}
+					//生成完毕删除购物车
+					item.setIsDeleted(1);
+					baseMapper.updateById(item);
 				}
-				amount = amount.add(orderShare.getTotalMoney());
-			} else {
-				BigDecimal totalMoney = BigDecimal.ZERO;
-				order.setNumberRows(orderItemsList.size());//行数
-				//明细总数量
-				order.setGoodsTotalNum(orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				//明细总金额
-				totalMoney = orderItemsList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
-					return x.add(y.getGoodsNum().multiply(y.getPrice()));
-				}, 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", finalCorpsDesc.getTenantId());
-					if (ObjectUtils.isNotNull(freight)) {
-						try {
-							BigDecimal freightAmount = new BigDecimal(freight);
-							order.setTotalMoney(totalMoney.add(freightAmount));
-							order.setFreight(freightAmount);
-						} catch (Exception ignored) {
-							order.setFreight(new BigDecimal(0));
+				if (!orderItemsListShare.isEmpty()) {
+					//保存销售主表信息-共享销售单
+					PjOrder orderShare = new PjOrder();
+					orderShare.setOrdNo(SrcOrdNo + "-" + 2);
+					orderShare.setBusinesDate(new Date());
+					orderShare.setSrcOrdNo(billNo);
+					orderShare.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);
+						orderShare.setDueDate(afterSevenDays);
+					} else {
+						orderShare.setDueDate(new Date());
+					}
+					orderShare.setCreateTime(new Date());
+					orderShare.setCreateDept(deptId);
+					orderShare.setTenantId(AuthUtil.getTenantId());
+					orderShare.setCustomerId(corpsDesc.getId());
+					orderShare.setCustomerName(corpsDesc.getCname());
+					if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
+						orderShare.setSalerId(corpsDesc.getSalesmanId());
+						orderShare.setSalerName(corpsDesc.getSalesmanName());
+					} else {
+						R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
+						if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
+							orderShare.setSalerId(res.getData().get(0).getId());
+							orderShare.setSalerName(res.getData().get(0).getAccount());
 						}
 					}
+					if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
+						orderShare.setStorageId(corpsDesc.getDeliveryWarehouseId());
+						orderShare.setStorageName(corpsDesc.getDeliveryWarehouseName());
+					}
+					orderShare.setSalesCompanyId(deptId);
+					orderShare.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
+					orderShare.setRecAddress(address);
+					orderShare.setContacts(corpsAttn.getCname());
+					orderShare.setPhone(corpsAttn.getTel());
+					orderShare.setBsType(OrderTypeEnum.SALES.getType());
+					orderShare.setBusinessSource("共享销售");
+					orderShare.setReceivableType("网络支付");
+					orderShare.setBillType(1);
+					BigDecimal totalMoney = BigDecimal.ZERO;
+					orderShare.setNumberRows(orderItemsListShare.size());//行数
+					//明细总数量
+					orderShare.setGoodsTotalNum(orderItemsListShare.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					//明细总金额
+					totalMoney = orderItemsListShare.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+						return x.add(y.getGoodsNum().multiply(y.getPrice()));
+					}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
+					orderShare.setSalesAmount(totalMoney);
+					orderShare.setTotalMoney(totalMoney);
+					orderShare.setGoodsNameJoin(orderItemsListShare.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
+					orderShare.setShortcutJoin(orderItemsListShare.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
+					orderShare.setPayType(payType);
+					orderService.save(orderShare);
+					pjOrderList.add(orderShare);
+					ids.append(orderShare.getId()).append(",");
+					for (PjOrderItems item : orderItemsListShare) {
+						item.setPid(orderShare.getId());
+						orderItemsMapper.insert(item);
+					}
+					amount = amount.add(orderShare.getTotalMoney());
 				}
-				order.setGoodsNameJoin(orderItemsList.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
-				order.setShortcutJoin(orderItemsList.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
-				order.setPayType(payType);
-				pjOrderList.add(order);
-				amount = amount.add(order.getTotalMoney());
-			}
-			R<Map<Object, Object>> r = payService.payPrepay(ids.substring(0, ids.length() - 1), amount, billNo, 0, goodsName.substring(0, goodsName.length() - 1), payType);
-			if ("W01".equals(payType) || "A01".equals(payType) || "U01".equals(payType) || "S01".equals(payType)) {
-				for (PjOrder item : pjOrderList) {
-					item.setPayUrl(r.getData().get("url").toString());
+				if (!orderItemsList.isEmpty()){
+					BigDecimal totalMoney = BigDecimal.ZERO;
+					order.setNumberRows(orderItemsList.size());//行数
+					//明细总数量
+					order.setGoodsTotalNum(orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					//明细总金额
+					totalMoney = orderItemsList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+						return x.add(y.getGoodsNum().multiply(y.getPrice()));
+					}, 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 (ObjectUtils.isNotNull(freight)) {
+							try {
+								BigDecimal freightAmount = new BigDecimal(freight);
+								order.setTotalMoney(totalMoney.add(freightAmount));
+								order.setFreight(freightAmount);
+							} catch (Exception ignored) {
+								order.setFreight(new BigDecimal(0));
+							}
+						}
+					}
+					order.setGoodsNameJoin(orderItemsList.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
+					order.setShortcutJoin(orderItemsList.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
+					order.setPayType(payType);
+					pjOrderList.add(order);
+					amount = amount.add(order.getTotalMoney());
 				}
+				R<Map<Object, Object>> r = payService.payPrepay(ids.substring(0, ids.length() - 1), amount, billNo, 0, goodsName.substring(0, goodsName.length() - 1), payType);
+				if ("1".equals(paymentType)){
+					if (ObjectUtils.isNotNull(r.getData().get("url"))){
+						for (PjOrder item : pjOrderList) {
+							item.setPayUrl(r.getData().get("url").toString());
+						}
+					}
+					r.getData().put("type","1");
+				}else{
+					r.getData().put("type","0");
+				}
+				orderService.updateBatchById(pjOrderList);
+				return r;
 			}
-			orderService.updateBatchById(pjOrderList);
-			return r;
 		} else {
 			throw new RuntimeException("请选择需要结算的商品");
 		}
 	}
 
+	public R generateOrderLimitShare(String address, List<PjShoppingCart> list, String payType, PjCorpsDesc corpsDesc, PjCorpsAttn corpsAttn) {
+		// 获取系统编号
+		String billNo = serialService.getBillNo("WB", "WB", "WB");
+		if (ObjectUtils.isNull(billNo)) {
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			throw new RuntimeException("生成系统编号失败");
+		}
+		// 获取系统编号
+		String SrcOrdNo = serialService.getBillNo("XS", "XS", "XS");
+		if (ObjectUtils.isNull(SrcOrdNo)) {
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			throw new RuntimeException("生成系统编号失败");
+		}
+		R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
+		List<PjOrder> pjOrderList = new ArrayList<>();
+		List<PjOrderItems> orderItemsList = new ArrayList<>();
+		List<PjOrderItems> orderItemsListShare = new ArrayList<>();
+		//保存销售主表信息-本地销售单
+		PjOrder order = new PjOrder();
+		if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
+			order.setOrdNo(SrcOrdNo);
+		} else {
+			order.setOrdNo(SrcOrdNo + "-" + 1);
+		}
+		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 {
+			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("额度支付");
+		order.setReceivableType("网络支付");
+		order.setBillType(0);
+		orderService.save(order);
+		pjOrderList.add(order);
+		for (PjShoppingCart item : list) {
+			if (item.getInventory().compareTo(item.getGoodsNum()) < 0) {
+				throw new RuntimeException("库存不足");
+			}
+			PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
+			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());
+				}
+				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);
+				if (ObjectUtils.isNotNull(goodsDesc)) {
+					orderItemsShare.setCnameInt(goodsDesc.getCnameInt());
+				}
+				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)) {
+					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);
+				}
+			}
+			//生成完毕删除购物车
+			item.setIsDeleted(1);
+			baseMapper.updateById(item);
+		}
+		if (!orderItemsListShare.isEmpty()) {
+			//保存销售主表信息-共享销售单
+			PjOrder orderShare = new PjOrder();
+			orderShare.setOrdNo(SrcOrdNo + "-" + 2);
+			orderShare.setBusinesDate(new Date());
+			orderShare.setSrcOrdNo(billNo);
+			orderShare.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);
+				orderShare.setDueDate(afterSevenDays);
+			} else {
+				orderShare.setDueDate(new Date());
+			}
+			orderShare.setCreateTime(new Date());
+			orderShare.setCreateDept(deptId);
+			orderShare.setTenantId(AuthUtil.getTenantId());
+			orderShare.setCustomerId(corpsDesc.getId());
+			orderShare.setCustomerName(corpsDesc.getCname());
+			if (ObjectUtils.isNotNull(corpsDesc.getSalesmanId())) {
+				orderShare.setSalerId(corpsDesc.getSalesmanId());
+				orderShare.setSalerName(corpsDesc.getSalesmanName());
+			} else {
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
+					orderShare.setSalerId(res.getData().get(0).getId());
+					orderShare.setSalerName(res.getData().get(0).getAccount());
+				}
+			}
+			if (ObjectUtils.isNotNull(corpsDesc.getDeliveryWarehouseId())) {
+				orderShare.setStorageId(corpsDesc.getDeliveryWarehouseId());
+				orderShare.setStorageName(corpsDesc.getDeliveryWarehouseName());
+			}
+			orderShare.setSalesCompanyId(deptId);
+			orderShare.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
+			orderShare.setRecAddress(address);
+			orderShare.setContacts(corpsAttn.getCname());
+			orderShare.setPhone(corpsAttn.getTel());
+			orderShare.setBsType(OrderTypeEnum.SALES.getType());
+			orderShare.setBusinessSource("共享销售");
+			orderShare.setReceivableType("网络支付");
+			orderShare.setBillType(1);
+			BigDecimal totalMoney = BigDecimal.ZERO;
+			orderShare.setNumberRows(orderItemsListShare.size());//行数
+			//明细总数量
+			orderShare.setGoodsTotalNum(orderItemsListShare.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+			//明细总金额
+			totalMoney = orderItemsListShare.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+				return x.add(y.getGoodsNum().multiply(y.getPrice()));
+			}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
+			orderShare.setSalesAmount(totalMoney);
+			orderShare.setTotalMoney(totalMoney);
+			orderShare.setGoodsNameJoin(orderItemsListShare.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
+			orderShare.setShortcutJoin(orderItemsListShare.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
+			corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(totalMoney));
+			pjOrderList.add(orderShare);
+			orderService.save(orderShare);
+			pjOrderList.add(orderShare);
+			for (PjOrderItems item : orderItemsListShare) {
+				item.setPid(orderShare.getId());
+				orderItemsMapper.insert(item);
+			}
+		}
+		BigDecimal totalMoney = BigDecimal.ZERO;
+		order.setNumberRows(orderItemsList.size());//行数
+		//明细总数量
+		order.setGoodsTotalNum(orderItemsList.stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+		//明细总金额
+		totalMoney = orderItemsList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+			return x.add(y.getGoodsNum().multiply(y.getPrice()));
+		}, 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 (ObjectUtils.isNotNull(freight)) {
+				try {
+					BigDecimal freightAmount = new BigDecimal(freight);
+					order.setTotalMoney(totalMoney.add(freightAmount));
+					order.setFreight(freightAmount);
+				} catch (Exception ignored) {
+					order.setFreight(new BigDecimal(0));
+				}
+			}
+		}
+		order.setGoodsNameJoin(orderItemsList.stream().map(PjOrderItems::getGoodsName).collect(Collectors.joining(",")));
+		order.setShortcutJoin(orderItemsList.stream().map(PjOrderItems::getCnameInt).collect(Collectors.joining(",")));
+		order.setPaymentDate(new Date());
+		order.setActualPaymentStatus(1);
+		order.setPaymentAmountTl(totalMoney);
+		order.setStatus(OrderTypeEnum.XSDQR.getType());
+		order.setXcxStatus(OrderTypeEnum.XSDFH.getType());
+		corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().subtract(totalMoney));
+		pjOrderList.add(order);
+		orderService.updateBatchById(pjOrderList);
+		corpsDescService.updateById(corpsDesc);
+		for (PjOrder item : pjOrderList) {
+			LocalDateTime now = LocalDateTime.now();
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+			String formatted = now.format(formatter);
+			//给角色为财务的人发送消息
+			R<String> clientDeptIds = sysClient.getRoleIds(AuthUtil.getTenantId(), "客服");
+			if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+				R<List<User>> userList = userClient.listUserByRoleId(clientDeptIds.getData(), AuthUtil.getTenantId(), item.getSalesCompanyId() + "");
+				if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+					for (User datum : userList.getData()) {
+						//循环发送消息
+						Message sendMessage = new Message();
+						sendMessage.setParameter(item.getId() + "");
+						sendMessage.setUserName("外部用户");
+						sendMessage.setUserId(null);
+						sendMessage.setToUserId(datum.getId());
+						sendMessage.setToUserName(datum.getName());
+						sendMessage.setMessageType(1);
+						sendMessage.setTenantId(AuthUtil.getTenantId());
+						sendMessage.setCreateUser(null);
+						sendMessage.setCreateTime(new Date());
+						sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
+						sendMessage.setPageLabel("销售订单");
+						sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+						sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + item.getOrdNo() + "时间:" + formatted);
+						R save = messageClient.save(sendMessage);
+						System.out.println("发送结果:" + save);
+						if (!save.isSuccess()) {
+							throw new SecurityException("发送消息失败");
+						}
+					}
+				}
+			}
+			if (ObjectUtils.isNotNull(item.getSalerId())) {
+				Message sendMessage = new Message();
+				sendMessage.setParameter(item.getId() + "");
+				sendMessage.setUserName("外部用户");
+				sendMessage.setUserId(null);
+				sendMessage.setToUserId(item.getSalerId());
+				sendMessage.setToUserName(item.getSalerName());
+				sendMessage.setMessageType(1);
+				sendMessage.setTenantId(AuthUtil.getTenantId());
+				sendMessage.setCreateUser(null);
+				sendMessage.setCreateTime(new Date());
+				sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
+				sendMessage.setPageLabel("销售订单");
+				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+				sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + item.getOrdNo() + "时间:" + formatted);
+				R save = messageClient.save(sendMessage);
+				System.out.println("发送结果:" + save);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+		}
+		Map<String,Object> map = new HashMap<>();
+		map.put("type","2");
+		return R.data(map);
+	}
+
 }

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

@@ -596,7 +596,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoIPage.getRecords().stream()
 					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
 				if (!saleDetailDtoList1.isEmpty()) {
-					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())).map(PjOrderItems::getReturnsAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())
+						 && !"线下退款".equals(e.getRefundType())).map(PjOrderItems::getReturnsAmount)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
 					amount = amount.abs();
 					for (SaleDetailDto items : saleDetailDtoList1) {
@@ -919,7 +921,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				List<SaleDetailDto> saleDetailDtoList1 = saleDetailDtoIPage.stream()
 					.filter(e -> e.getOrdNo().equals(item.getOrdNo())).collect(Collectors.toList());
 				if (!saleDetailDtoList1.isEmpty()) {
-					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())).map(PjOrderItems::getReturnsAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> e.getPid().equals(item.getId())
+							&& !"线下退款".equals(e.getRefundType())).map(PjOrderItems::getReturnsAmount)
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					BigDecimal amount = item.getPaymentAmountTl().subtract(returnsAmount);
 					amount = amount.abs();
 					for (SaleDetailDto items : saleDetailDtoList1) {