Browse Source

2025年1月24日16:43:51

纪新园 11 months ago
parent
commit
58ddfaaae3
12 changed files with 564 additions and 121 deletions
  1. 21 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjOrderItems.java
  2. 93 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/InventoryFinancingExcel.java
  3. 53 17
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/InventoryController.java
  4. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  5. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/ShareSalesController.java
  6. 8 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml
  7. 3 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  8. 358 90
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  9. 8 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java
  10. 2 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  11. 7 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shopping/controller/ShoppingMallDetailController.java
  12. 8 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

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

@@ -263,6 +263,16 @@ public class PjOrderItems implements Serializable {
 	@ApiModelProperty(value = "参考库存")
 	private BigDecimal inventory;
 	/**
+	 * 参考库存-自有
+	 */
+	@ApiModelProperty(value = "参考库存-自有")
+	private BigDecimal inventoryHave;
+	/**
+	 * 参考库存-融资
+	 */
+	@ApiModelProperty(value = "参考库存-融资")
+	private BigDecimal inventoryFinancing;
+	/**
 	 * 盈亏数
 	 */
 	@ApiModelProperty(value = "盈亏数")
@@ -341,6 +351,17 @@ public class PjOrderItems implements Serializable {
 	private BigDecimal nextDayNum;
 
 	/**
+	 * 融资数量
+	 */
+	@ApiModelProperty(value = "融资数量")
+	private BigDecimal sendNumFinancing;
+	/**
+	 * 自有数量
+	 */
+	@ApiModelProperty(value = "自有数量")
+	private BigDecimal sendNumHave;
+
+	/**
 	 * 附件
 	 */
 	@TableField(exist = false)

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

@@ -0,0 +1,93 @@
+package org.springblade.salesPart.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 库存导出实体类
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class InventoryFinancingExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 商品名称
+	 */
+	@ExcelProperty(value = "商品名称")
+	private String cname;
+	/**
+	 * 商品编码
+	 */
+	@ExcelProperty(value = "商品编码")
+	private String code;
+	/**
+	 * 仓库/库区名称
+	 */
+	@ExcelProperty(value = "仓库")
+	private String storageName;
+	/**
+	 * 批次号
+	 */
+	@ExcelProperty(value = "批次")
+	private String dot;
+	/**
+	 * 结余数量
+	 */
+	@ExcelProperty(value = "库存数量")
+	private BigDecimal balanceQuantity;
+	/**
+	 * 结余数量-自有
+	 */
+	@ExcelProperty(value = "库存数量-自有")
+	private BigDecimal balanceQuantityHave;
+	/**
+	 * 结余数量-融资
+	 */
+	@ExcelProperty(value = "库存数量-融资")
+	private BigDecimal balanceQuantityFinancing;
+	/**
+	 * 盘点库存
+	 */
+	@ExcelProperty(value = "实际库存")
+	private BigDecimal profitLossNum;
+	/**
+	 * 盘点库存-自有
+	 */
+	@ExcelProperty(value = "实际库存-自有")
+	private BigDecimal profitLossNumHave;
+	/**
+	 * 盘点库存-融资
+	 */
+	@ExcelProperty(value = "实际库存-融资")
+	private BigDecimal profitLossNumFinancing;
+	/**
+	 * 品牌名称
+	 */
+	@ExcelProperty(value = "品牌")
+	private String brandName;
+	/**
+	 * 花纹
+	 */
+	@ExcelProperty(value = "花纹")
+	private String brandItem;
+	/**
+	 * 尺寸
+	 */
+	@ExcelProperty(value = "尺寸")
+	private String goodsSize;
+	/**
+	 * 商品IDS
+	 */
+	@ExcelProperty(value = "商品IDS")
+	private String goods;
+}

+ 53 - 17
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/InventoryController.java

@@ -20,11 +20,13 @@ import org.springblade.salesPart.entity.PjGoodsDesc;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
 import org.springblade.salesPart.excel.InventoryExportExcel;
+import org.springblade.salesPart.excel.InventoryFinancingExcel;
 import org.springblade.salesPart.excel.PjOrderExportExcelPD;
 import org.springblade.salesPart.excel.StockExportExcel;
 import org.springblade.salesPart.goods.service.IGoodsDescService;
 import org.springblade.salesPart.order.service.IOrderItemsService;
 import org.springblade.salesPart.order.service.IOrderService;
+import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
@@ -52,6 +54,8 @@ public class InventoryController {
 	//获取用户信息
 	private final IUserClient iUserClient;
 
+	private final ISysClient sysClient;
+
 	/**
 	 * 分页 配件销售
 	 */
@@ -187,12 +191,22 @@ public class InventoryController {
 	@ApiOperationSupport(order = 13)
 	@ApiOperation(value = "盘点明细导入", notes = "传入excel")
 	public R<List<PjOrderItems>> importItem(@RequestParam("file") MultipartFile file) {
-		//导入数据
-		List<InventoryExportExcel> excelList = ExcelUtil.read(file, InventoryExportExcel.class);
-		if (CollectionUtils.isEmpty(excelList)) {
-			throw new SecurityException("数据不能为空");
+		String status = sysClient.getParamService("whether.financing");
+		if ("1".equals(status)){
+			//导入数据
+			List<InventoryFinancingExcel> excelList = ExcelUtil.read(file, InventoryFinancingExcel.class);
+			if (CollectionUtils.isEmpty(excelList)) {
+				throw new SecurityException("数据不能为空");
+			}
+			return orderService.importItemFinancing(excelList);
+		}else{
+			//导入数据
+			List<InventoryExportExcel> excelList = ExcelUtil.read(file, InventoryExportExcel.class);
+			if (CollectionUtils.isEmpty(excelList)) {
+				throw new SecurityException("数据不能为空");
+			}
+			return orderService.importItem(excelList);
 		}
-		return orderService.importItem(excelList);
 	}
 
 	/**
@@ -216,23 +230,45 @@ public class InventoryController {
 			.eq(PjGoodsDesc::getIsDeleted, 0)
 			.in(PjGoodsDesc::getId, goodsId));
 		List<InventoryExportExcel> list = new ArrayList<>();
+		List<InventoryFinancingExcel> listFinancing = new ArrayList<>();
+		String status = sysClient.getParamService("whether.financing");
 		for (PjOrderItems items : orderItemsList) {
 			PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e-> e.getId().equals(items.getGoodsId())).findFirst().orElse(null);
 			if (goodsDesc != null){
-				InventoryExportExcel stockExportExcel = new InventoryExportExcel();
-				stockExportExcel.setCode(items.getGoodsNo());
-				stockExportExcel.setCname(items.getGoodsName());
-				stockExportExcel.setBrandItem(items.getPattern());
-				stockExportExcel.setBrandName(items.getBrandName());
-				stockExportExcel.setStorageName(pjOrder.getStorageName());
-				stockExportExcel.setBalanceQuantity(items.getInventory());
-				stockExportExcel.setDot(items.getDot());
-				stockExportExcel.setGoodsSize(goodsDesc.getGoodsSize());
-				stockExportExcel.setGoods(items.getGoodsId() + "");
-				list.add(stockExportExcel);
+				if ("1".equals(status)){
+					InventoryFinancingExcel stockExportExcel = new InventoryFinancingExcel();
+					stockExportExcel.setCode(items.getGoodsNo());
+					stockExportExcel.setCname(items.getGoodsName());
+					stockExportExcel.setBrandItem(items.getPattern());
+					stockExportExcel.setBrandName(items.getBrandName());
+					stockExportExcel.setStorageName(pjOrder.getStorageName());
+					stockExportExcel.setBalanceQuantity(items.getInventory());
+					stockExportExcel.setBalanceQuantityHave(items.getInventoryHave());
+					stockExportExcel.setBalanceQuantityFinancing(items.getInventoryFinancing());
+					stockExportExcel.setDot(items.getDot());
+					stockExportExcel.setGoodsSize(goodsDesc.getGoodsSize());
+					stockExportExcel.setGoods(items.getGoodsId() + "");
+					listFinancing.add(stockExportExcel);
+				}else{
+					InventoryExportExcel stockExportExcel = new InventoryExportExcel();
+					stockExportExcel.setCode(items.getGoodsNo());
+					stockExportExcel.setCname(items.getGoodsName());
+					stockExportExcel.setBrandItem(items.getPattern());
+					stockExportExcel.setBrandName(items.getBrandName());
+					stockExportExcel.setStorageName(pjOrder.getStorageName());
+					stockExportExcel.setBalanceQuantity(items.getInventory());
+					stockExportExcel.setDot(items.getDot());
+					stockExportExcel.setGoodsSize(goodsDesc.getGoodsSize());
+					stockExportExcel.setGoods(items.getGoodsId() + "");
+					list.add(stockExportExcel);
+				}
 			}
 		}
-		ExcelUtil.export(response, "盘点单", "盘点数据", list, InventoryExportExcel.class);
+		if ("1".equals(status)){
+			ExcelUtil.export(response, "盘点单", "盘点数据", listFinancing, InventoryFinancingExcel.class);
+		}else{
+			ExcelUtil.export(response, "盘点单", "盘点数据", list, InventoryExportExcel.class);
+		}
 	}
 
 	/**

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

@@ -114,7 +114,7 @@ public class OrderController extends BladeController {
 				PjOrder::getGoodsTotalShipAmount, PjOrder::getOutGoodsTotalShipNum, PjOrder::getOutGoodsTotalShipAmount,
 				PjOrder::getGoodsTotalShipNum, PjOrder::getSalesAmount, PjOrder::getRefno, PjOrder::getPrimaryGoodsTotalNum,
 				PjOrder::getPrimaryFundingAmount, PjOrder::getUseAdvanceChargeAmount, PjOrder::getProduceAdvanceChargeAmount,
-				PjOrder::getDeliveryBusinesDate)
+				PjOrder::getDeliveryBusinesDate,PjOrder::getSalesCompanyId)
 			.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
 			.eq(PjOrder::getIsDeleted, 0)
 			.eq(PjOrder::getBsType, order.getBsType())
@@ -129,6 +129,7 @@ public class OrderController extends BladeController {
 			.like(ObjectUtils.isNotEmpty(order.getCustomerName()), PjOrder::getCustomerName, order.getCustomerName())
 			.like(ObjectUtils.isNotEmpty(order.getSrcOrdNo()), PjOrder::getSrcOrdNo, order.getSrcOrdNo())//来源单号
 			.like(ObjectUtils.isNotEmpty(order.getOrdNo()), PjOrder::getOrdNo, order.getOrdNo())//来源单号
+			.like(ObjectUtils.isNotEmpty(order.getRefno()), PjOrder::getRefno, order.getRefno())//参考号
 			.like(ObjectUtils.isNotEmpty(order.getGoodsNameJoin()), PjOrder::getGoodsNameJoin, order.getGoodsNameJoin())//来源单号
 			.like(ObjectUtils.isNotEmpty(order.getBusinessSource()), PjOrder::getBusinessSource, order.getBusinessSource());//来源
 		if (order.getDueDateList() != null && order.getDueDateList().size() > 1) {//应结日期

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

@@ -321,6 +321,7 @@ public class ShareSalesController {
 		if (ObjectUtils.isNull(itemIds)) {
 			throw new RuntimeException("缺少必要参数");
 		}
+		
 		return orderService.revokeDistributeShareSales(itemIds);
 	}
 

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

@@ -106,6 +106,10 @@
             <if test="salesCompanyName != null">sales_company_name,</if>
             <if test="goodsNameJoin != null">goods_name_join,</if>
             <if test="shortcutJoin != null">shortcut_join,</if>
+            <if test="salerId != null">saler_id,</if>
+            <if test="salerName != null">saler_name,</if>
+            <if test="storageId != null">storage_id,</if>
+            <if test="storageName != null">storage_name,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -131,6 +135,10 @@
             <if test="salesCompanyName != null">#{salesCompanyName},</if>
             <if test="goodsNameJoin != null">#{goodsNameJoin},</if>
             <if test="shortcutJoin != null">#{shortcutJoin},</if>
+            <if test="salerId != null">#{salerId},</if>
+            <if test="salerName != null">#{salerName},</if>
+            <if test="storageId != null">#{storageId},</if>
+            <if test="storageName != null">#{storageName},</if>
         </trim>
     </insert>
     <update id="deleteByIds">

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

@@ -25,10 +25,7 @@ import org.springblade.salesPart.dto.SalespersonCustomer;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
 import org.springblade.salesPart.entity.PjProductLaunch;
-import org.springblade.salesPart.excel.InventoryExportExcel;
-import org.springblade.salesPart.excel.PjOrderStatisticsExcel;
-import org.springblade.salesPart.excel.ShipItemImportXSCodeExcel;
-import org.springblade.salesPart.excel.ShipItemImportXSExcel;
+import org.springblade.salesPart.excel.*;
 import org.springblade.salesPart.vo.OrderStatistics;
 import org.springblade.salesPart.vo.OrderVO;
 import org.springblade.salesPart.vo.PjOrderStatisticsWeb;
@@ -272,4 +269,6 @@ public interface IOrderService extends IService<PjOrder> {
 	R revokeDistributeShareSales(String itemIds);
 
 	PjOrder getShareSalesById(PjOrder order);
+
+	R<List<PjOrderItems>> importItemFinancing(List<InventoryFinancingExcel> excelList);
 }

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

@@ -61,10 +61,7 @@ import org.springblade.salesPart.dto.SaleDetail;
 import org.springblade.salesPart.dto.SalespersonCustomer;
 import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
-import org.springblade.salesPart.excel.InventoryExportExcel;
-import org.springblade.salesPart.excel.PjOrderStatisticsExcel;
-import org.springblade.salesPart.excel.ShipItemImportXSCodeExcel;
-import org.springblade.salesPart.excel.ShipItemImportXSExcel;
+import org.springblade.salesPart.excel.*;
 import org.springblade.salesPart.funding.dto.FinancingShipItemDto;
 import org.springblade.salesPart.funding.entity.PjpfFunding;
 import org.springblade.salesPart.funding.entity.PjpfFundingItem;
@@ -1197,6 +1194,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 				if (stockOne != null) {
 					stockOne.setBalanceQuantity(item.getSendNum());
+					stockOne.setBalanceQuantityHave(item.getSendNumHave());
+					stockOne.setBalanceQuantityFinancing(item.getSendNumFinancing());
 					stockOne.setStoreInventory(stockOne.getBalanceQuantity());
 					stockOne.setInventoryAmount(item.getSubTotalMoney());
 					stockOne.setRebateInventoryAmount(item.getSendNum().multiply(stockOne.getRebatePrice()));
@@ -4080,8 +4079,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			sharePutOnShelves.setUpdateUser(AuthUtil.getUserId());
 			sharePutOnShelves.setUpdateTime(new Date());
 			sharePutOnShelvesListNew.add(sharePutOnShelves);
-			item.setCostprie(sharePutOnShelves.getShareCost().multiply(item.getOutGoodsTotalShipNum()));
-			item.setCostpriePrice(sharePutOnShelves.getShareCost());
+			item.setCostprie(item.getCostprie().add(sharePutOnShelves.getShareCost().multiply(item.getOutGoodsTotalShipNum())));
+			BigDecimal sendNum = item.getSendNum().add(item.getOutGoodsTotalShipNum());
+			if (new BigDecimal("0.00").compareTo(item.getCostprie()) != 0 && new BigDecimal("0.00").compareTo(sendNum) != 0) {
+				item.setCostpriePrice(item.getCostprie().divide(sendNum, 2, RoundingMode.HALF_UP));
+			} else {
+				item.setCostpriePrice(sharePutOnShelves.getShareCost());
+			}
 			item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
 			ShareSalesItems shareSalesItems = new ShareSalesItems();
 			shareSalesItems.setPid(order.getId());
@@ -4119,6 +4123,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (!status) {
 			throw new RuntimeException("派发失败,请联系管理员");
 		}
+		List<PjOrderItems> orderItemsListNew = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+			.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+			.eq(PjOrderItems::getIsDeleted, 0)
+			.eq(PjOrderItems::getPid, order.getId()));
+		if (!orderItemsListNew.isEmpty()) {
+			BigDecimal sendNum = orderItemsListNew.stream().map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal goodsTotalShipAmount = orderItemsListNew.stream().map(PjOrderItems::getGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal goodsNum = orderItemsListNew.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+			pjOrder.setGoodsTotalShipNum(sendNum);
+			pjOrder.setGoodsTotalShipAmount(goodsTotalShipAmount);
+			if (goodsNum.compareTo(sendNum) == 0) {
+				pjOrder.setStatus("已派发");
+			} else {
+				pjOrder.setStatus("部分派发");
+			}
+			baseMapper.updateById(pjOrder);
+		}
 		return R.success("操作成功");
 	}
 
@@ -4153,6 +4174,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		sharePjOrder.setTenantId(dept.getTenantId());
 		sharePjOrder.setCustomerId(corpsDesc.getId());
 		sharePjOrder.setCustomerName(corpsDesc.getCname());
+		sharePjOrder.setSalerId(corpsDesc.getSalesmanId());
+		sharePjOrder.setSalerName(corpsDesc.getSalesmanName());
+		sharePjOrder.setStorageId(corpsDesc.getDeliveryWarehouseId());
+		sharePjOrder.setStorageName(corpsDesc.getDeliveryWarehouseName());
 		sharePjOrder.setBsType("XS");
 		sharePjOrder.setBillType(1);
 		// 获取系统编号
@@ -4272,6 +4297,59 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (count == 0) {
 			throw new RuntimeException("保存销售单失败,请联系管理员");
 		}
+		LocalDateTime now = LocalDateTime.now();
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String formatted = now.format(formatter);
+		//给角色为财务的人发送消息
+		R<String> clientDeptIds = sysClient.getRoleIds(dept.getTenantId(), "客服");
+		if (clientDeptIds.isSuccess() && StringUtils.isNotBlank(clientDeptIds.getData())) {
+			R<List<User>> userList = userClient.listUserByRoleId(clientDeptIds.getData(), dept.getTenantId(), dept.getId()+"");
+			if (userList.isSuccess() && CollectionUtils.isNotEmpty(userList.getData())) {
+				for (User datum : userList.getData()) {
+					//循环发送消息
+					Message sendMessage = new Message();
+					sendMessage.setParameter(sharePjOrder.getId() + "");
+					sendMessage.setUserName("外部用户");
+					sendMessage.setUserId(null);
+					sendMessage.setToUserId(datum.getId());
+					sendMessage.setToUserName(datum.getName());
+					sendMessage.setMessageType(1);
+					sendMessage.setTenantId(dept.getTenantId());
+					sendMessage.setCreateUser(null);
+					sendMessage.setCreateTime(new Date());
+					sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
+					sendMessage.setPageLabel("销售订单");
+					sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+					sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + sharePjOrder.getOrdNo() + "时间:" + formatted);
+					R save = messageClient.save(sendMessage);
+					System.out.println("发送结果:" + save);
+					if (!save.isSuccess()) {
+						throw new SecurityException("发送消息失败");
+					}
+				}
+			}
+		}
+		if (ObjectUtils.isNotNull(sharePjOrder.getSalerId())) {
+			Message sendMessage = new Message();
+			sendMessage.setParameter(sharePjOrder.getId() + "");
+			sendMessage.setUserName("外部用户");
+			sendMessage.setUserId(null);
+			sendMessage.setToUserId(sharePjOrder.getSalerId());
+			sendMessage.setToUserName(sharePjOrder.getSalerName());
+			sendMessage.setMessageType(1);
+			sendMessage.setTenantId(dept.getTenantId());
+			sendMessage.setCreateUser(null);
+			sendMessage.setCreateTime(new Date());
+			sendMessage.setUrl("/tirePartsMall/salesManagement/saleOrder/index");
+			sendMessage.setPageLabel("销售订单");
+			sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+			sendMessage.setMessageBody("您有新的外部销售订单请及时处理!单号:" + sharePjOrder.getOrdNo() + "时间:" + formatted);
+			R save = messageClient.save(sendMessage);
+			System.out.println("发送结果:" + save);
+			if (!save.isSuccess()) {
+				throw new SecurityException("发送消息失败");
+			}
+		}
 		return true;
 	}
 
@@ -4404,6 +4482,27 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (!sharePutOnShelvesListNew.isEmpty()) {
 			sharePutOnShelvesService.updateBatchById(sharePutOnShelvesListNew);
 		}
+		List<PjOrderItems> orderItemsListNew = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+			.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+			.eq(PjOrderItems::getIsDeleted, 0)
+			.eq(PjOrderItems::getPid, order.getId()));
+		if (!orderItemsListNew.isEmpty()) {
+			BigDecimal sendNum = orderItemsListNew.stream().map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal goodsTotalShipAmount = orderItemsListNew.stream().map(PjOrderItems::getGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal goodsNum = orderItemsListNew.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+			order.setGoodsTotalShipNum(sendNum);
+			order.setGoodsTotalShipAmount(goodsTotalShipAmount);
+			if (sendNum.compareTo(new BigDecimal("0.00")) == 0) {
+				order.setStatus("待确认");
+			} else {
+				if (goodsNum.compareTo(sendNum) == 0) {
+					order.setStatus("已派发");
+				} else {
+					order.setStatus("部分派发");
+				}
+			}
+			baseMapper.updateById(order);
+		}
 		return R.success("操作成功");
 	}
 
@@ -4460,6 +4559,54 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		return detail;
 	}
 
+	@Override
+	public R<List<PjOrderItems>> importItemFinancing(List<InventoryFinancingExcel> excelList) {
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("导入数据不能为空");
+		}
+		List<PjOrderItems> list = new ArrayList<>();
+		List<String> storage = excelList.stream().map(InventoryFinancingExcel::getStorageName).distinct().collect(Collectors.toList());
+		if (storage.size() > 1) {
+			throw new RuntimeException("导入数据存在多个库存数据,请修改");
+		}
+		for (int i = 0; i < excelList.size(); i++) {
+			//判断必填项是否为空
+			InventoryFinancingExcel itemExcel = excelList.get(i);
+			if (ObjectUtil.isEmpty(itemExcel.getProfitLossNum())) {
+				throw new SecurityException("第" + (i + 2) + "行,盘点库存为空");
+			}
+
+			PjOrderItems item = new PjOrderItems();
+			//查询商品信息
+			LambdaQueryWrapper<PjGoodsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjGoodsDesc::getIsDeleted, 0)
+				.eq(PjGoodsDesc::getCname, itemExcel.getCname());
+			PjGoodsDesc goodsDesc = goodsDescMapper.selectOne(lambdaQueryWrapper);
+			if (ObjectUtil.isNotEmpty(goodsDesc)) {
+				item.setGoodsId(goodsDesc.getId());
+				item.setGoodsName(goodsDesc.getCname());
+				item.setGoodsNo(goodsDesc.getCode());
+				item.setBrandId(goodsDesc.getBrandId());
+				item.setBrandName(goodsDesc.getBrandName());
+				item.setPropertyName(goodsDesc.getSpecificationAndModel());
+				item.setPattern(goodsDesc.getBrandItem());
+				item.setGoodsDescription(goodsDesc.getGoodsDescription());
+				item.setUnits(goodsDesc.getUnit());
+				item.setSendNum(itemExcel.getProfitLossNum());
+				item.setSendNumHave(itemExcel.getProfitLossNumHave());
+				item.setSendNumFinancing(itemExcel.getProfitLossNumFinancing());
+				item.setInventory(itemExcel.getBalanceQuantity());
+				item.setInventoryHave(itemExcel.getBalanceQuantityHave());
+				item.setInventoryFinancing(itemExcel.getBalanceQuantityFinancing());
+			} else {
+				throw new RuntimeException("第" + (i + 2) + "行,商品名称不存在");
+			}
+			list.add(item);
+		}
+		return R.data(list);
+	}
+
 	/**
 	 * 保存订单信息
 	 */
@@ -5773,6 +5920,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	public PjOrder checkOrder(PjOrder order) {
 		PjOrder declare = baseMapper.selectById(order.getId());
 		declare.setVersion(declare.getVersion() + 1);
+		List<PjOrder> pjOrderListNew = new ArrayList<>();
+		pjOrderListNew.add(declare);
 		List<PjOrder> pjOrderList = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
 			.eq(PjOrder::getSrcNo, declare.getOrdNo())
 			.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
@@ -5786,6 +5935,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				throw new RuntimeException("线下支付按钮无效");
 			}
 		}
+		List<PjOrder> pjOrderShareList = new ArrayList<>();
+		String status = sysClient.getParamService("whether.open.share");
+		if ("1".equals(status)) {
+			pjOrderShareList = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getSrcOrdNo, declare.getSrcOrdNo())
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getBsType, "GX"));
+		}
+
 		//审批数据
 		PjAuditProecessDTO auditProecessDTO = new PjAuditProecessDTO();
 		//获取审批级次
@@ -5814,27 +5973,36 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			if (CollectionUtils.isEmpty(auditPathsLevels)) {
 				throw new SecurityException("开启审批失败:未查询到审批信息");
 			}
-			auditProecessDTO.setOrderQuantity(declare.getGoodsTotalNum());
-			auditProecessDTO.setAmount(declare.getTotalMoney());
 			// 绑定审核类型
 			auditProecessDTO.setCheckType("PJTK");//代理订单
 			// 追加跳转路由url
 			auditProecessDTO.setUrl(order.getUrl());
 			auditProecessDTO.setPageStatus(order.getPageStatus());
 			auditProecessDTO.setPageLabel(order.getPageLabel());
-			auditProecessDTO.setOrderRemark(declare.getRemarks());//订单备注
 			auditProecessDTO.setPathsLevelsList(auditPathsLevels);
 			auditProecessDTO.setActId(1);
 			auditProecessDTO.setSrcBillId(declare.getId());//申请表id
 			auditProecessDTO.setBillId(declare.getId());//业务id
-			auditProecessDTO.setBillNo(declare.getOrdNo());//业务编号
+			auditProecessDTO.setBillTime(declare.getCreateTime());//业务日期
+			auditProecessDTO.setCorpId(declare.getCustomerId());
+			if ("1".equals(status) && !pjOrderShareList.isEmpty()) {
+				pjOrderListNew.addAll(pjOrderShareList);
+				auditProecessDTO.setOrderQuantity(pjOrderListNew.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+				auditProecessDTO.setAmount(pjOrderListNew.stream().map(PjOrder::getTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add));
+				auditProecessDTO.setGrossProfit(pjOrderListNew.stream().map(PjOrder::getGrossProfit).reduce(BigDecimal.ZERO, BigDecimal::add));
+				auditProecessDTO.setBillNo(declare.getSrcOrdNo());//业务编号
+				auditProecessDTO.setOrderRemark("共享销售退款");
+			} else {
+				auditProecessDTO.setOrderQuantity(declare.getGoodsTotalNum());
+				auditProecessDTO.setAmount(declare.getTotalMoney());
+				auditProecessDTO.setBillNo(declare.getOrdNo());//业务编号
+				auditProecessDTO.setGrossProfit(declare.getGrossProfit());
+				auditProecessDTO.setOrderRemark(declare.getRemarks());//订单备注
+			}
 			auditProecessDTO.setSendUserId(AuthUtil.getUserId());//请核人id
 			auditProecessDTO.setSendName(AuthUtil.getUserName());//请核人名称
 			auditProecessDTO.setSendTime(new Date());//请核时间
-			auditProecessDTO.setBillTime(declare.getCreateTime());//业务日期
 			auditProecessDTO.setTenantId(AuthUtil.getTenantId());//租户id
-			auditProecessDTO.setCorpId(declare.getCustomerId());
-			auditProecessDTO.setGrossProfit(declare.getGrossProfit());
 			auditProecessDTO.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
 			auditProecessDTO.setSalesCompanyName(declare.getSalesCompanyName());
 			R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
@@ -5842,12 +6010,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				throw new SecurityException("操作失败,请联系管理员");
 			}
 		}
-		declare.setOriginalStatus(declare.getStatus());
-		declare.setStatus("退款请核");
-		declare.setXcxStatus("退款请核");
-		declare.setCheckStatus("审核请核");
-		baseMapper.updateById(declare);
-
+		for (PjOrder item : pjOrderListNew) {
+			item.setOriginalStatus(declare.getStatus());
+			item.setStatus("退款请核");
+			item.setXcxStatus("退款请核");
+			item.setCheckStatus("审核请核");
+		}
+		if (!pjOrderListNew.isEmpty()) {
+			this.updateBatchById(pjOrderListNew);
+		}
+//		baseMapper.updateById(declare);
 		return declare;
 	}
 
@@ -5857,13 +6029,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R passCheck(Long id) {
+		List<PjOrder> orderListNew = new ArrayList<>();
 		PjOrder order = baseMapper.selectById(id);
 		if (order == null) {
 			throw new SecurityException("审批通过失败");
 		}
 		order.setVersion(order.getVersion() + 1);
+		orderListNew.add(order);
+		String shareStatus = sysClient.getParamService("whether.open.share");
+		if ("1".equals(shareStatus)) {
+			List<PjOrder> orderShareList = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getSrcOrdNo, order.getSrcOrdNo())
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getBsType, "GX"));
+			if (!orderShareList.isEmpty()) {
+				orderListNew.addAll(orderShareList);
+			}
+		}
 		List<Long> goodsIds = new ArrayList<>();
-		if ("XS".equals(order.getBsType()) || "TKXS".equals(order.getBsType())) {
+		if ("XS".equals(order.getBsType()) || "TKXS".equals(order.getBsType()) || "GX".equals(order.getBsType())) {
 			PjCorpsDesc corpsDesc = corpsDescMapper.selectById(order.getCustomerId());
 			if (corpsDesc == null) {
 				throw new RuntimeException("未查到客户信息");
@@ -5879,9 +6064,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					user = r.getData();
 				}
 			}
+			List<Long> orderList = orderListNew.stream().map(PjOrder::getId).collect(Collectors.toList());
 			//根据主表id获得明细数据
 			List<PjOrderItems> list = orderItemsService.list(new QueryWrapper<PjOrderItems>()
-				.eq("pid", order.getId())
+				.in("pid", orderList)
 				.eq("is_deleted", 0)
 				.eq("tenant_id", AuthUtil.getTenantId()));
 			goodsIds = list.stream().map(PjOrderItems::getGoodsId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
@@ -5926,13 +6112,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			corpsDescMapper.updateById(corpsDesc);
 			if (!"TKXS".equals(order.getBsType())) {
 				if (OrderTypeEnum.SHIPED.getType().equals(order.getOriginalStatus())
-					|| OrderTypeEnum.RECEIVEDGOODS.getType().equals(order.getOriginalStatus())) {//已发货
+					|| OrderTypeEnum.RECEIVEDGOODS.getType().equals(order.getOriginalStatus())
+					|| "部分派发".equals(order.getOriginalStatus()) || "已派发".equals(order.getOriginalStatus())) {//已发货
 					if ("已取消".equals(order.getStatus())) {
 						throw new SecurityException("订单已审批通过请勿重复审批");
 					}
-					order.setStatus("已取消");
-					order.setXcxStatus("已取消");
-					List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getOrdNo, order.getOrdNo()).eq(PjShip::getStatusName, "待出库"));
+					for (PjOrder item : orderListNew) {
+						item.setStatus("已取消");
+						item.setXcxStatus("已取消");
+					}
+					List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getSrcOrdNo, order.getSrcOrdNo()).eq(PjShip::getStatusName, "待出库"));
 					if (!shipList.isEmpty()) {
 						List<Long> ids = shipList.stream().map(PjShip::getId).collect(Collectors.toList());
 						shipMapper.deleteBatchIds(ids);
@@ -5959,20 +6148,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					pjShip.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					pjShip.setCreateUser(AuthUtil.getUserId());
 					pjShip.setCreateTime(new Date());
+					pjShip.setGoodsTotalNum(orderListNew.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add));
+					pjShip.setGoodsTotalShipAmount(orderListNew.stream().map(PjOrder::getGoodsTotalShipAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 					shipMapper.insert(pjShip);
 					String status = sysClient.getParamService("whether.financing");
 					if (ObjectUtil.isNotEmpty(list)) {
 						List<PjShipItems> shipItemsList = new ArrayList<>();
+						List<PjOrderItems> orderItemsList = list.stream().filter(distinctByKey(PjOrderItems::getGoodsNo))
+							.collect(Collectors.toList());
 						for (PjOrderItems e : list) {
 							e.setReturnsNumber(e.getGoodsNum());
 							e.setReturnsAmount(e.getTotalAmount());
-							if (ObjectUtils.isNull(e.getSendNum()) || e.getSendNum().compareTo(new BigDecimal("0.00")) == 0) {
+							/*if (ObjectUtils.isNull(e.getSendNum()) || e.getSendNum().compareTo(new BigDecimal("0.00")) == 0) {
 								continue;
 							} else {
 								//根据销售明细创建入库工单明细
 								PjShipItems shipItems = new PjShipItems();
 								BeanUtil.copyProperties(e, shipItems);
-
 								shipItems.setId(null);
 								shipItems.setPid(pjShip.getId());
 								shipItems.setSrcItemId(e.getId());
@@ -5986,7 +6178,34 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 								}
 								shipItemsService.save(shipItems);
 								shipItemsList.add(shipItems);
+							}*/
+						}
+						for (PjOrderItems e : orderItemsList) {
+							//根据销售明细创建入库工单明细
+							PjShipItems shipItems = new PjShipItems();
+							BeanUtil.copyProperties(e, shipItems);
+							shipItems.setId(null);
+							shipItems.setPid(pjShip.getId());
+							shipItems.setSrcItemId(e.getId());
+							shipItems.setCreateTime(new Date());
+							shipItems.setCreateUser(AuthUtil.getUserId());
+							shipItems.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+							List<PjOrderItems> orderItemsList1 = list.stream().filter(i -> i.getGoodsNo().equals(e.getGoodsNo())).collect(Collectors.toList());
+							if (!orderItemsList1.isEmpty()) {
+								shipItems.setSendNum(orderItemsList1.stream().map(PjOrderItems::getSendNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+								shipItems.setGoodsNum(orderItemsList1.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+								shipItems.setCostprie(orderItemsList1.stream().map(PjOrderItems::getCostprie).reduce(BigDecimal.ZERO,BigDecimal::add));
+								if (shipItems.getCostprie().compareTo(new BigDecimal("0.00")) != 0 &&
+									shipItems.getGoodsNum().compareTo(new BigDecimal("0.00")) != 0){
+									shipItems.setPrice(shipItems.getCostprie().divide(shipItems.getGoodsNum(),2,RoundingMode.HALF_UP));
+									shipItems.setSubTotalMoney(shipItems.getGoodsNum().multiply(shipItems.getPrice()));
+								}
+							}else{
+								throw new SecurityException("未找到对应商品明细信息,请联系管理员");
 							}
+							shipItems.setTenantId(AuthUtil.getTenantId());
+							shipItemsService.save(shipItems);
+							shipItemsList.add(shipItems);
 						}
 						if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
 							if (!shipItemsList.isEmpty()) {
@@ -6012,18 +6231,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 							}
 						}
 					}
-
 					//生成历史记录
 					saveHistory(order.getId(), "已退款");
-
 				} else {//未发货
 					if ("已取消".equals(order.getStatus()) && OrderTypeEnum.WEB.getType().equals(order.getBusinessSource())) {
 						throw new SecurityException("订单已审批通过请勿重复审批");
 					} else if ("已退款".equals(order.getStatus()) && OrderTypeEnum.XCX.getType().equals(order.getBusinessSource())) {
 						throw new SecurityException("订单已审批通过请勿重复审批");
 					}
-
-					List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getOrdNo, order.getOrdNo()));
+					List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>().eq(PjShip::getSrcOrdNo, order.getSrcOrdNo()));
 					if (!shipList.isEmpty()) {
 						List<Long> ids = shipList.stream().map(PjShip::getId).collect(Collectors.toList());
 						shipMapper.deleteBatchIds(ids);
@@ -6047,30 +6263,30 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 								item.setPid(order.getId());
 								orderItemsService.updateById(item);
 							}
-
-							//获得商品
-							PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
-							if (ObjectUtil.isEmpty(goodsDesc)) {
-								throw new RuntimeException("商品数据异常");
-							}
-
-							//查询所有上架商品
-							LambdaQueryWrapper<PjProductLaunch> productLaunchQueryWrapper = new LambdaQueryWrapper<>();
-							productLaunchQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-								.eq(PjProductLaunch::getIsDeleted, 0)
-								.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
-								.and(i -> i.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId()).or().in(PjProductLaunch::getSourceCompanyId, order.getSalesCompanyId()))
-								.eq(PjProductLaunch::getGoodsId, goodsDesc.getId());
-							List<PjProductLaunch> productLaunch = productLaunchService.list(productLaunchQueryWrapper);
-							//修改上架数量
-							if (ObjectUtil.isNotEmpty(productLaunch)) {
-								productLaunch.forEach(e -> {
-									e.setInventory(e.getInventory().add(item.getGoodsNum()));
-									R res = productLaunchService.updateByIdNew(e);
-									if (!res.isSuccess()) {
-										throw new RuntimeException(res.getMsg());
-									}
-								});
+							if (!"GX".equals(item.getBizType())) {
+								//获得商品
+								PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
+								if (ObjectUtil.isEmpty(goodsDesc)) {
+									throw new RuntimeException("商品数据异常");
+								}
+								//查询所有上架商品
+								LambdaQueryWrapper<PjProductLaunch> productLaunchQueryWrapper = new LambdaQueryWrapper<>();
+								productLaunchQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+									.eq(PjProductLaunch::getIsDeleted, 0)
+									.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
+									.and(i -> i.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId()).or().in(PjProductLaunch::getSourceCompanyId, order.getSalesCompanyId()))
+									.eq(PjProductLaunch::getGoodsId, goodsDesc.getId());
+								List<PjProductLaunch> productLaunch = productLaunchService.list(productLaunchQueryWrapper);
+								//修改上架数量
+								if (ObjectUtil.isNotEmpty(productLaunch)) {
+									productLaunch.forEach(e -> {
+										e.setInventory(e.getInventory().add(item.getGoodsNum()));
+										R res = productLaunchService.updateByIdNew(e);
+										if (!res.isSuccess()) {
+											throw new RuntimeException(res.getMsg());
+										}
+									});
+								}
 							}
 						});
 					}
@@ -6081,23 +6297,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			}
 			corpsDesc.setLimitAmount(corpsDesc.getLimitAmount().add(order.getTotalMoney()));
 			corpsDescMapper.updateById(corpsDesc);
-
 			if (ObjectUtils.isNull(order.getOldTrxId())) {
 				if ("TKXS".equals(order.getBsType())) {
 					order.setStatus("待确认");
 					order.setXcxStatus("待确认");
 				} else {
-					order.setStatus("已取消");
-					order.setXcxStatus("已取消");
+					for (PjOrder item : orderListNew) {
+						item.setStatus("已取消");
+						item.setXcxStatus("已取消");
+					}
 				}
 			} else {
 				if ("TKXS".equals(order.getBsType())) {
 					order.setStatus("待确认");
 					order.setXcxStatus("待确认");
 				} else {
-					order.setStatus("已取消");
-					order.setXcxStatus("已取消");
-					R<Map<String, String>> r = payService.refund(order.getId(), order.getPaymentAmountTl(), order.getOrdNo(), order.getSrcOrdNo(), order.getOldTrxId());
+					BigDecimal amount = orderListNew.stream().map(PjOrder::getPaymentAmountTl).reduce(BigDecimal.ZERO, BigDecimal::add);
+					R<Map<String, String>> r = payService.refund(order.getId(), amount, order.getOrdNo(), order.getSrcOrdNo(), order.getOldTrxId());
 					if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 						Map<String, String> map = r.getData();
 						String returnCode = map.get("retcode");
@@ -6117,12 +6333,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 								throw new RuntimeException("退款失败!原因:金额错误,当前可退货金额为:0.00");
 							}
 						}
-						order.setPaymentAmountTl(new BigDecimal("0.00"));
-
+						for (PjOrder item : orderListNew) {
+							item.setStatus("已取消");
+							item.setXcxStatus("已取消");
+							item.setPaymentAmountTl(new BigDecimal("0.00"));
+							order.setActualPaymentStatus(4);
+						}
 					} else {
 						throw new RuntimeException("退款失败!服务器错误");
 					}
-					order.setActualPaymentStatus(4);
 					PjIntegralDetail integralDetail = new PjIntegralDetail();
 					integralDetail.setCreateTime(new Date());
 					integralDetail.setCreateUserName(AuthUtil.getUserName());
@@ -6132,7 +6351,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					integralDetail.setSrcNo(order.getOrdNo());
 					integralDetail.setCorpId(order.getCustomerId());
 					integralDetail.setCorpName(order.getCustomerName());
-					integralDetail.setIntegral(order.getTotalMoney());
+					integralDetail.setIntegral(amount);
 					integralDetail.setGoodsName(order.getGoodsNameJoin());
 					StringBuilder goodsId = new StringBuilder();
 					for (Long item : goodsIds) {
@@ -6147,16 +6366,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		} else {
 			order.setStatus("待确认");
 		}
-		if ("XS".equals(order.getBsType())) {
-			order.setStatus("已取消");
-			order.setXcxStatus("已取消");
-			order.setReturnsStatus("全退");
-			order.setReturnsNumber(order.getGoodsTotalNum());
-			order.setReturnsAmount(order.getPaymentAmountTl());
-			order.setRefundType("线上退款");
+		if ("XS".equals(order.getBsType()) || "GX".equals(order.getBsType())) {
+			for (PjOrder item : orderListNew) {
+				item.setStatus("已取消");
+				item.setXcxStatus("已取消");
+				item.setReturnsStatus("全退");
+				item.setReturnsNumber(item.getGoodsTotalNum());
+				item.setReturnsAmount(item.getPaymentAmountTl());
+				item.setRefundType("线上退款");
+				item.setCheckStatus("审核完成");
+			}
+			this.updateBatchById(orderListNew);
+		} else {
+			order.setCheckStatus("审核完成");
+			baseMapper.updateById(order);
 		}
-		order.setCheckStatus("审核完成");
-		baseMapper.updateById(order);
 		return R.success("操作成功");
 	}
 
@@ -6164,16 +6388,30 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 	 * 审核中
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R underReview(Long id) {
 		PjOrder order = baseMapper.selectById(id);
 		if (order == null) {
 			throw new SecurityException("审批通过失败");
 		}
-
-		order.setCheckStatus("审批中");
-		order.setXcxStatus("审批中");
-		baseMapper.updateById(order);
-
+		List<PjOrder> pjOrderShareList = new ArrayList<>();
+		pjOrderShareList.add(order);
+		String status = sysClient.getParamService("whether.open.share");
+		if ("1".equals(status)) {
+			List<PjOrder> pjOrderShare = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getSrcOrdNo, order.getSrcOrdNo())
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getBsType, "GX"));
+			if (!pjOrderShare.isEmpty()) {
+				pjOrderShareList.addAll(pjOrderShare);
+			}
+		}
+		for (PjOrder item : pjOrderShareList) {
+			item.setCheckStatus("审批中");
+			item.setXcxStatus("审批中");
+		}
+		this.updateBatchById(pjOrderShareList);
 		return R.success("操作成功");
 	}
 
@@ -6187,9 +6425,25 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (order == null) {
 			throw new SecurityException("审批驳回失败");
 		}
-		if ("XS".equals(order.getBsType()) || "TKXS".equals(order.getBsType())) {
-			order.setStatus(order.getOriginalStatus());
-			order.setCheckStatus("审批驳回");
+		if ("XS".equals(order.getBsType()) || "TKXS".equals(order.getBsType()) || "GX".equals(order.getBsType())) {
+			List<PjOrder> pjOrderShareList = new ArrayList<>();
+			pjOrderShareList.add(order);
+			String status = sysClient.getParamService("whether.open.share");
+			if ("1".equals(status)) {
+				List<PjOrder> pjOrderShare = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
+					.eq(PjOrder::getSrcOrdNo, order.getSrcOrdNo())
+					.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+					.eq(PjOrder::getIsDeleted, 0)
+					.eq(PjOrder::getBsType, "GX"));
+				if (!pjOrderShare.isEmpty()) {
+					pjOrderShareList.addAll(pjOrderShare);
+				}
+			}
+			for (PjOrder item : pjOrderShareList) {
+				item.setStatus(order.getOriginalStatus());
+				item.setCheckStatus("审批驳回");
+			}
+			this.updateBatchById(pjOrderShareList);
 		} else {
 			if ("RZCG".equals(order.getBsType())) {
 				if (ObjectUtils.isNotNull(order.getUseAdvanceChargeAmount()) &&
@@ -6221,9 +6475,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				}
 			}
 			order.setStatus("录入");
+			baseMapper.updateById(order);
 		}
-		baseMapper.updateById(order);
-
 		return R.success("操作成功");
 	}
 
@@ -6295,13 +6548,28 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (!financeProcess.isSuccess()) {
 			throw new SecurityException("操作失败,请联系管理员");
 		}
-		if ("XS".equals(declare.getBsType())) {
-			declare.setStatus(declare.getOriginalStatus());
-		} else {
-			declare.setStatus("录入");
+		List<PjOrder> pjOrderShareList = new ArrayList<>();
+		pjOrderShareList.add(declare);
+		String status = sysClient.getParamService("whether.open.share");
+		if ("1".equals(status)) {
+			List<PjOrder> pjOrderShare = baseMapper.selectList(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getSrcOrdNo, declare.getSrcOrdNo())
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getBsType, "GX"));
+			if (!pjOrderShare.isEmpty()) {
+				pjOrderShareList.addAll(pjOrderShare);
+			}
 		}
-		declare.setCheckStatus("审核撤销");
-		baseMapper.updateById(declare);
+		for (PjOrder item : pjOrderShareList) {
+			if ("XS".equals(item.getBsType())) {
+				item.setStatus(item.getOriginalStatus());
+			} else {
+				item.setStatus("录入");
+			}
+			item.setCheckStatus("审核撤销");
+		}
+		this.updateBatchById(pjOrderShareList);
 		return declare;
 	}
 

+ 8 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java

@@ -563,6 +563,10 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 				}
 			}
 		}
+		PjGoodsDesc goodsDesc = goodsDescMapper.selectById(detail.getGoodsId());
+		if (goodsDesc != null){
+			detail.setCode(goodsDesc.getCode());
+		}
 		PjCorpsDesc corpsDesc = null;
 		//根据当前登录人获得客户
 		PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
@@ -603,8 +607,9 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 			}
 		}
 		map.put("type", detail.getBillType());
-
-		if (detail.getBillType() == 0) {//本地
+		map.put("thisLocality", detail);
+		map.put("offsite", null);
+		/*if (detail.getBillType() == 0) {
 			//查询是否有共享
 			LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
 			queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
@@ -639,7 +644,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		} else {
 			map.put("thisLocality", null);
 			map.put("offsite", detail);
-		}
+		}*/
 
 		return map;
 	}

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

@@ -4036,13 +4036,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().subtract(item.getSendNum()));
 					if ("1".equals(ship.getWhetherFinancing())) {
 						if (stockOne.getBalanceQuantityFinancing().compareTo(item.getSendNum()) < 0) {
-							throw new RuntimeException("融资库存不足");
+							throw new RuntimeException("商品:" + goodsDesc.getCname() + "融资库存不足");
 						}
 						stockOne.setBalanceQuantityFinancing(stockOne.getBalanceQuantityFinancing().subtract(item.getSendNum()));
 						item.setSendNumFinancing(item.getSendNum());
 					} else {
 						if (stockOne.getBalanceQuantityHave().compareTo(item.getSendNum()) < 0) {
-							throw new RuntimeException("库存不足");
+							throw new RuntimeException("商品:" + goodsDesc.getCname() + "库存不足");
 						}
 						stockOne.setBalanceQuantityHave(stockOne.getBalanceQuantityHave().subtract(item.getSendNum()));
 						item.setSendNumHave(item.getSendNum());

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

@@ -426,6 +426,12 @@ public class ShoppingMallDetailController extends BladeController {
 	@GetMapping("/listShareV1")
 	@ApiOperationSupport(order = 2)
 	public R<Map<String, Object>> listShareV1(PjStockDesc stockDesc) {
+		Map<String, Object> map = new HashMap<>();
+		if (ObjectUtils.isNull(stockDesc.getCode())){
+			map.put("storeInventory", "0");
+			map.put("storeInventoryShare", "0");
+			return R.data(map);
+		}
 		PjCorpsDesc corpsDesc = null;
 		//根据当前登录人获得客户
 		PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
@@ -449,7 +455,7 @@ 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.put("storeInventory", shoppingMallDetail.getInventory());
 		} else {

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

@@ -1216,7 +1216,7 @@ 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 (num.compareTo(new BigDecimal(1)) == 0) {
 						if (ObjectUtils.isNotNull(freight)) {
 							try {
 								BigDecimal freightAmount = new BigDecimal(freight);
@@ -1290,7 +1290,11 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					order.setBsType(OrderTypeEnum.SALES.getType());
 					order.setBusinessSource(OrderTypeEnum.XCX.getType());
 					order.setReceivableType("网络支付");
-					order.setBillType(0);
+					if (!orderItemsListShare.isEmpty()) {
+						order.setBillType(1);
+					}else{
+						order.setBillType(0);
+					}
 					orderService.save(order);
 					pjOrderList.add(order);
 					ids.append(order.getId()).append(",");
@@ -1311,7 +1315,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
 					order.setSalesAmount(totalMoney);
 					order.setTotalMoney(totalMoney);
-					if (num.compareTo(new BigDecimal(1)) <= 0) {
+					if (num.compareTo(new BigDecimal(1)) == 0) {
 						if (ObjectUtils.isNotNull(freight)) {
 							try {
 								BigDecimal freightAmount = new BigDecimal(freight);
@@ -1354,6 +1358,7 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 			throw new RuntimeException("生成系统编号失败");
 		}
+		BigDecimal num = list.stream().map(PjShoppingCart::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
 		// 获取系统编号
 		String SrcOrdNo = serialService.getBillNo("XS", "XS", "XS");
 		if (ObjectUtils.isNull(SrcOrdNo)) {