Explorar el Código

2025年1月14日18:26:39

纪新园 hace 1 año
padre
commit
f306bbc69f
Se han modificado 22 ficheros con 469 adiciones y 59 borrados
  1. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShip.java
  2. 1 1
      blade-service/blade-client/src/main/java/org/springblade/client/serial/mapper/SerialMapper.xml
  3. 6 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsStatisticsController.java
  4. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml
  5. 7 3
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsDescMapper.java
  6. 7 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsDescMapper.xml
  7. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  8. 2 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderStatisticsController.java
  9. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/ReturnsController.java
  10. 33 25
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/ShareSalesController.java
  11. 6 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.java
  12. 62 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  13. 6 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.java
  14. 66 7
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml
  15. 4 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderItemsService.java
  16. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/IOrderService.java
  17. 10 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderItemsServiceImpl.java
  18. 193 6
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  19. 1 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/mapper/ProductLaunchMapper.xml
  20. 1 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/serial/mapper/PjpfSerialMapper.xml
  21. 30 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java
  22. 21 9
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

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

@@ -288,6 +288,12 @@ public class PjShip implements Serializable {
 	@ApiModelProperty(value = "是否发货通知")
 	private String whetherShippingNotice;
 
+	/**
+	 * 是否到货
+	 */
+	@ApiModelProperty(value = "是否到货")
+	private String status;
+
 
 	/**
 	 * 创建人名称

+ 1 - 1
blade-service/blade-client/src/main/java/org/springblade/client/serial/mapper/SerialMapper.xml

@@ -55,7 +55,7 @@
         </trim>
         where id = #{id}
     </update>
-    <insert id="insertSerialMessage" parameterType="org.springblade.client.entity.Serial" useGeneratedKeys="true">
+    <insert id="insertSerialMessage" parameterType="org.springblade.client.entity.Serial" useGeneratedKeys="true" keyProperty="id">
         insert into basic_serial
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="billType != null">bill_type,</if>

+ 6 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsStatisticsController.java

@@ -68,7 +68,8 @@ public class CorpsStatisticsController {
 			}
 			lambdaQueryWrapper.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId());
 			lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) " +
-				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))" +
+				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				"OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))");
 			if (ObjectUtils.isNotNull(corpsDescDto1.getCreditLimit()) && ObjectUtils.isNotNull(corpsDescDto1.getUseCreditLimit())) {
 				corpsDescDto1.setCreditLimitBalance(corpsDescDto1.getCreditLimit().subtract(corpsDescDto1.getUseCreditLimit()));
@@ -124,7 +125,8 @@ public class CorpsStatisticsController {
 			}
 			lambdaQueryWrapper.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId());
 			lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) " +
-				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))" +
+				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				"OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))");
 			List<PjOrder> orderList = orderService.list(lambdaQueryWrapper);
 			if (ObjectUtils.isNotNull(orderList)) {
@@ -168,7 +170,8 @@ public class CorpsStatisticsController {
 				corpsDescDto1.setCreditLimitBalance(corpsDescDto1.getCreditLimit().subtract(corpsDescDto1.getUseCreditLimit()));
 			}
 			lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) " +
-				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))" +
+				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				"OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))");
 			List<PjOrder> orderList = orderService.list(lambdaQueryWrapper);
 			if (ObjectUtils.isNotNull(orderList)) {

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml

@@ -34,7 +34,7 @@
         <result column="longitude" property="longitude"/>
         <result column="dimension" property="dimension"/>
     </resultMap>
-    <insert id="insertCorps" parameterType="org.springblade.salesPart.entity.PjCorpsDesc" useGeneratedKeys="true">
+    <insert id="insertCorps" parameterType="org.springblade.salesPart.entity.PjCorpsDesc" useGeneratedKeys="true" keyProperty="id">
         insert into pjpf_corps_desc
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="cname != null">cname,</if>

+ 7 - 3
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsDescMapper.java

@@ -16,12 +16,13 @@
  */
 package org.springblade.salesPart.goods.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import feign.Param;
 import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.salesPart.entity.PjGoodsDesc;
 import org.springblade.salesPart.vo.GoodsDescVO;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+
 import java.util.List;
 
 /**
@@ -42,5 +43,8 @@ public interface GoodsDescMapper extends BaseMapper<PjGoodsDesc> {
 	List<GoodsDescVO> selectGoodsPage(IPage page, GoodsDescVO goods);
 
 	@TenantIgnore
-    List<PjGoodsDesc> selectListNotTenantId(@Param("tenantId") String tenantId, @Param("goodsIds")String goodsIds);
+	List<PjGoodsDesc> selectListNotTenantId(@Param("tenantId") String tenantId, @Param("goodsIds") String goodsIds);
+
+	@TenantIgnore
+	List<PjGoodsDesc> selectListGoods(@Param("goodsNo") String goodsNo, @Param("tenantId") String tenantId);
 }

+ 7 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsDescMapper.xml

@@ -48,5 +48,12 @@
           and tenant_id = #{tenantId}
           and find_in_set(id, #{goodsIds})
     </select>
+    <select id="selectListGoods" resultType="org.springblade.salesPart.entity.PjGoodsDesc">
+        select *
+        from pjpf_goods_desc
+        where is_deleted = 0
+          and tenant_id = #{tenantId}
+          and find_in_set(id, #{goodsNo})
+    </select>
 
 </mapper>

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

@@ -171,6 +171,7 @@ public class OrderController extends BladeController {
 			}
 			lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 				" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
 		}
 		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
@@ -310,6 +311,7 @@ public class OrderController extends BladeController {
 			}
 			lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 				" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
 		}
 		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
@@ -870,6 +872,7 @@ public class OrderController extends BladeController {
 		}
 		lambdaQueryWrapperXS.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 			" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+			" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 			" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
 		List<PjOrder> pjOrderListXS = orderService.list(lambdaQueryWrapperXS);
 		List<PjOrder> pjOrderListCG = orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getIsDeleted, 0)

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

@@ -93,7 +93,8 @@ public class OrderStatisticsController extends BladeController {
 			lambdaQueryWrapper.eq(PjOrder::getSalesCompanyId, AuthUtil.getDeptId());//公司
 		}
 		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) " +
-			"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))" +
+			"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+			"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 			"OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))");
 		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
 		IPage<PjOrder> pages = orderService.page(Condition.getPage(query), lambdaQueryWrapper);

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

@@ -117,6 +117,7 @@ public class ReturnsController {
 		}
 		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 			" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+			" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 			" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
 		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
 		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")) {
@@ -219,6 +220,7 @@ public class ReturnsController {
 		}
 		lambdaQueryWrapper.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 			" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+			" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 			" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))");
 		lambdaQueryWrapper.orderByDesc(PjOrder::getCreateTime);
 		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")) {

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

@@ -1,38 +1,18 @@
 package org.springblade.salesPart.order.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.common.annotation.RepeatSubmit;
-import org.springblade.core.excel.util.ExcelUtil;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
-import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.salesPart.entity.PjOrder;
-import org.springblade.salesPart.entity.PjOrderItems;
-import org.springblade.salesPart.excel.PjOrderExportExcelReturnsCG;
-import org.springblade.salesPart.excel.PjOrderExportExcelReturnsXS;
-import org.springblade.salesPart.order.service.IOrderItemsService;
 import org.springblade.salesPart.order.service.IOrderService;
-import org.springblade.system.user.entity.User;
-import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
 
 /**
  * @author :jixinyuan
@@ -76,7 +56,7 @@ public class ShareSalesController {
 	@RepeatSubmit
 	public R distributeShareSales(@Valid @RequestBody PjOrder order) {
 		if (order.getId() == null) {
-			throw new RuntimeException("来源信息错误");
+			throw new RuntimeException("缺少必要参数");
 		}
 		return orderService.distributeShareSales(order);
 	}
@@ -84,13 +64,41 @@ public class ShareSalesController {
 	/**
 	 * 撤销派发共享销售单
 	 */
-	@PostMapping("/revokeDistributeShareSales")
+	@GetMapping("/revokeDistributeShareSales")
 	@RepeatSubmit
-	public R revokeDistributeShareSales(@Valid @RequestBody PjOrder order) {
+	public R revokeDistributeShareSales(@RequestParam("itemIds") String itemIds) {
+		if (ObjectUtils.isNull(itemIds)) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		return orderService.revokeDistributeShareSales(itemIds);
+	}
+
+	/**
+	 * 确认发货
+	 */
+	@PostMapping("/confirmShipment")
+	@RepeatSubmit
+	public R confirmShipment(@Valid @RequestBody PjOrder order) {
 		if (order.getId() == null) {
-			throw new RuntimeException("来源信息错误");
+			throw new RuntimeException("缺少必要参数");
+		}
+		order.setStatus("已发货");
+		orderService.updateById(order);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 撤销发货
+	 */
+	@PostMapping("/revokeShipment")
+	@RepeatSubmit
+	public R revokeShipment(@Valid @RequestBody PjOrder order) {
+		if (order.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
 		}
-		return orderService.revokeDistributeShareSales(order);
+		order.setStatus("待发货");
+		orderService.updateById(order);
+		return R.success("操作成功");
 	}
 
 }

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

@@ -65,4 +65,10 @@ public interface OrderItemsMapper extends BaseMapper<PjOrderItems> {
 	List<PointsDetailDto> pointsDetailPage(@Param("page")IPage<PointsDetailDto> page, @Param("saleDetailDto")SaleDetail saleDetailDto);
 
 	List<PointsDetailDto> pointsDetailList(SaleDetail saleDetailDto);
+
+	@TenantIgnore
+	int insertOrderItems(PjOrderItems items);
+
+	@TenantIgnore
+	List<PjOrderItems> selectShareOrderItems(@Param("ids")String ids);
 }

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

@@ -36,6 +36,65 @@
         <result column="this_used_profit" property="thisUsedProfit"/>
         <result column="inventory" property="inventory"/>
     </resultMap>
+    <insert id="insertOrderItems" parameterType="org.springblade.salesPart.entity.PjOrderItems" useGeneratedKeys="true" keyProperty="id">
+        insert into pjpf_order
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="pid != null">pid,</if>
+            <if test="tenantId != null">tenant_id,</if>
+            <if test="createUser != null">create_user,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="goodsNo != null">goods_no,</if>
+            <if test="goodsName != null">goods_name,</if>
+            <if test="goodsId != null">goods_id,</if>
+            <if test="brandId != null">brand_id,</if>
+            <if test="brandName != null">brand_name,</if>
+            <if test="propertyName != null">property_name,</if>
+            <if test="pattern != null">pattern,</if>
+            <if test="goodsDescription != null">goods_description,</if>
+            <if test="units != null">units,</if>
+            <if test="dot != null">dot,</if>
+            <if test="salesCompanyId != null">sales_company_id,</if>
+            <if test="salesCompanyName != null">sales_company_name,</if>
+            <if test="url != null">url,</if>
+            <if test="billNo != null">bill_no,</if>
+            <if test="bsType != null">bs_type,</if>
+            <if test="goodsNum != null">goods_num,</if>
+            <if test="price != null">price,</if>
+            <if test="subTotalMoney != null">sub_total_money,</if>
+            <if test="totalAmount != null">total_amount,</if>
+            <if test="rebatePrice != null">rebate_price,</if>
+            <if test="rebateCostprie != null">rebate_costprie,</if>
+            <if test="rebateProfit != null">rebate_profit,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="pid != null">#{pid},</if>
+            <if test="tenantId != null">#{tenantId},</if>
+            <if test="createUser != null">#{createUser},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="goodsNo != null">#{goodsNo},</if>
+            <if test="goodsName != null">#{goodsName},</if>
+            <if test="goodsId != null">#{goodsId},</if>
+            <if test="brandId != null">#{brandId},</if>
+            <if test="brandName != null">#{brandName},</if>
+            <if test="propertyName != null">#{propertyName},</if>
+            <if test="pattern != null">#{pattern},</if>
+            <if test="goodsDescription != null">#{goodsDescription},</if>
+            <if test="units != null">#{units},</if>
+            <if test="dot != null">#{dot},</if>
+            <if test="salesCompanyId != null">#{salesCompanyId},</if>
+            <if test="salesCompanyName != null">#{salesCompanyName},</if>
+            <if test="url != null">#{url},</if>
+            <if test="billNo != null">#{billNo},</if>
+            <if test="bsType != null">#{bsType},</if>
+            <if test="goodsNum != null">#{goodsNum},</if>
+            <if test="price != null">#{price},</if>
+            <if test="subTotalMoney != null">#{subTotalMoney},</if>
+            <if test="totalAmount != null">#{totalAmount},</if>
+            <if test="rebatePrice != null">#{rebatePrice},</if>
+            <if test="rebateCostprie != null">#{rebateCostprie},</if>
+            <if test="rebateProfit != null">#{rebateProfit},</if>
+        </trim>
+    </insert>
 
 
     <select id="selectOrderItemsPage" resultMap="orderItemsResultMap">
@@ -771,6 +830,9 @@
         ORDER BY
         po.busines_date
     </select>
+    <select id="selectShareOrderItems" resultType="org.springblade.salesPart.entity.PjOrderItems">
+        select * from pjpf_order_items where is_deleted = 0 and find_in_set(pid , #{ids})
+    </select>
 
 
 </mapper>

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

@@ -113,4 +113,10 @@ public interface OrderMapper extends BaseMapper<PjOrder> {
 
 	@TenantIgnore
 	List<PjOrder> selectPjOrderList(@Param("tenantId") String tenantId, @Param("type") String type);
+
+	@TenantIgnore
+    int insertOrder(PjOrder sharePjOrder);
+
+	@TenantIgnore
+	List<PjOrder> selectShareOrder(@Param("ordNo")String ordNo, @Param("sharedCompanyName")String sharedCompanyName);
 }

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

@@ -80,7 +80,49 @@
         <result column="funding_amount" property="fundingAmount"/>
         <result column="bond_amount" property="bondAmount"/>
     </resultMap>
-
+    <insert id="insertOrder"  parameterType="org.springblade.salesPart.entity.PjOrder" useGeneratedKeys="true" keyProperty="id">
+        insert into pjpf_order
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="customerId != null">customer_id,</if>
+            <if test="customerName != null">customer_name,</if>
+            <if test="bsType != null">bs_type,</if>
+            <if test="billType != null">bill_type,</if>
+            <if test="ordNo != null">ord_no,</if>
+            <if test="srcOrdNo != null">src_ord_no,</if>
+            <if test="srcNo != null">src_no,</if>
+            <if test="businesDate != null">busines_date,</if>
+            <if test="businessSource != null">business_source,</if>
+            <if test="goodsTotalNum != null">goods_total_num,</if>
+            <if test="salesAmount != null">sales_amount,</if>
+            <if test="totalMoney != null">total_money,</if>
+            <if test="numberRows != null">number_rows,</if>
+            <if test="status != null">status,</if>
+            <if test="createUser != null">create_user,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="tenantId != null">tenant_id,</if>
+            <if test="remarks != null">remarks,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="customerId != null">#{customerId},</if>
+            <if test="customerName != null">#{customerName},</if>
+            <if test="bsType != null">#{bsType},</if>
+            <if test="billType != null">#{billType},</if>
+            <if test="ordNo != null">#{ordNo},</if>
+            <if test="srcOrdNo != null">#{srcOrdNo},</if>
+            <if test="srcNo != null">#{srcNo},</if>
+            <if test="businesDate != null">#{businesDate},</if>
+            <if test="businessSource != null">#{businessSource},</if>
+            <if test="goodsTotalNum != null">#{goodsTotalNum},</if>
+            <if test="salesAmount != null">#{salesAmount},</if>
+            <if test="totalMoney != null">#{totalMoney},</if>
+            <if test="numberRows != null">#{numberRows},</if>
+            <if test="status != null">#{status},</if>
+            <if test="createUser != null">#{createUser},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="tenantId != null">#{tenantId},</if>
+            <if test="remarks != null">#{remarks},</if>
+        </trim>
+    </insert>
 
     <select id="selectOrderPage" resultMap="orderResultMap">
         select *
@@ -175,7 +217,8 @@
             po.tenant_id = #{order.tenantId}
           AND po.is_deleted = 0
           and (( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) )
-                   OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))
+                   OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))
+                   OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))
         OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))
         <if test="order.businesDateList != null and order.businesDateList[0] != null and order.businesDateList[0]!= ''">
             and po.busines_date &gt;= #{order.businesDateList[0]}
@@ -477,7 +520,8 @@
           AND poi.tenant_id = #{tenantId}
           AND po.bs_type = 'XS'
           AND (( po.business_source = '外部销售' AND FIND_IN_SET( po.actual_payment_status, '2,3' ) )
-                   OR (po.business_source = '内部销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3' ))
+                   OR (po.business_source = '内部销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3,4' ))
+                   OR (po.business_source = '共享销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3,4' ))
             OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))
           AND po.status = '已发货'
           AND DATE_FORMAT(po.busines_date,'%Y-%m') &gt;= DATE_FORMAT(#{statusDate},'%Y-%m')
@@ -504,7 +548,8 @@
           AND poi.tenant_id = #{tenantId}
           AND po.bs_type = 'XS'
           AND (( po.business_source = '外部销售' AND FIND_IN_SET( po.actual_payment_status, '2,3' ) )
-            OR (po.business_source = '内部销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3' ))
+            OR (po.business_source = '内部销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3,4' ))
+            OR (po.business_source = '共享销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3,4' ))
             OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))
           AND po.status = '已发货'
           AND DATE_FORMAT(po.busines_date,'%Y-%m') &gt;= DATE_FORMAT(#{statusDate},'%Y-%m')
@@ -532,7 +577,8 @@
           AND poi.tenant_id = #{tenantId}
           AND po.bs_type = 'XS'
           AND (( po.business_source = '外部销售' AND FIND_IN_SET( po.actual_payment_status, '2,3' ) )
-            OR (po.business_source = '内部销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3' ))
+            OR (po.business_source = '内部销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3,4' ))
+            OR (po.business_source = '共享销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3,4' ))
             OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))
           AND po.status = '已发货'
           AND DATE_FORMAT(po.busines_date,'%Y-%m') &gt;= DATE_FORMAT(#{statusDate},'%Y-%m')
@@ -559,7 +605,8 @@
           AND poi.tenant_id = #{tenantId}
           AND po.bs_type = 'XS'
           AND (( po.business_source = '外部销售' AND FIND_IN_SET( po.actual_payment_status, '2,3' ) )
-            OR (po.business_source = '内部销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3' ))
+            OR (po.business_source = '内部销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3,4' ))
+            OR (po.business_source = '共享销售' AND FIND_IN_SET( po.actual_payment_status, '0,1,2,3,4' ))
         OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))
           AND po.status = '已发货'
           AND DATE_FORMAT(po.busines_date,'%Y-%m') &gt;= DATE_FORMAT(#{statusDate},'%Y-%m')
@@ -583,7 +630,8 @@
             AND find_in_set(sales_company_id,#{deptId})
         </if>
             AND (( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) )
-                OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))
+                OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))
+                OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))
                 OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))
             AND busines_date >= date_sub(CURDATE(), INTERVAL 6 MONTH)
     </select>
@@ -890,4 +938,15 @@
             AND DATEDIFF(CURDATE(), busines_date) &lt;= 90
         </if>
     </select>
+    <select id="selectShareOrder" resultType="org.springblade.salesPart.entity.PjOrder">
+        SELECT
+            *
+        FROM
+            pjpf_order
+        WHERE
+            is_deleted = '0'
+          AND bs_type = 'XS'
+        and src_no = #{ordNo}
+        and sales_company_name = #{sharedCompanyName}
+    </select>
 </mapper>

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

@@ -62,4 +62,8 @@ public interface IOrderItemsService extends IService<PjOrderItems> {
 	IPage<PointsDetailDto> pointsDetailPage(SaleDetail saleDetailDto, IPage<PointsDetailDto> page);
 
 	List<PointsDetailDto> pointsDetailList(SaleDetail saleDetailDto);
+
+	int insertOrderItems(PjOrderItems items);
+
+	List<PjOrderItems> selectShareOrderItems(String ids);
 }

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

@@ -269,5 +269,5 @@ public interface IOrderService extends IService<PjOrder> {
 
 	R distributeShareSales(PjOrder order);
 
-	R revokeDistributeShareSales(PjOrder order);
+	R revokeDistributeShareSales(String itemIds);
 }

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

@@ -120,5 +120,15 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, PjOrder
 		return baseMapper.pointsDetailList(saleDetailDto);
 	}
 
+	@Override
+	public int insertOrderItems(PjOrderItems items) {
+		return baseMapper.insertOrderItems(items);
+	}
+
+	@Override
+	public List<PjOrderItems> selectShareOrderItems(String ids) {
+		return baseMapper.selectShareOrderItems(ids);
+	}
+
 
 }

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

@@ -83,7 +83,9 @@ import org.springblade.salesPart.productLaunch.service.IProductLaunchService;
 import org.springblade.salesPart.serial.service.IPjpfSerialService;
 import org.springblade.salesPart.settlement.mapper.SettlementMapper;
 import org.springblade.salesPart.settlement.service.ISettlementItemsService;
+import org.springblade.salesPart.share.entity.SharePutOnShelves;
 import org.springblade.salesPart.share.entity.ShareSalesItems;
+import org.springblade.salesPart.share.service.ISharePutOnShelvesService;
 import org.springblade.salesPart.share.service.IShareSalesItemsService;
 import org.springblade.salesPart.ship.mapper.ShipMapper;
 import org.springblade.salesPart.ship.service.IShipItemsRecordService;
@@ -190,6 +192,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 
 	private final IShareSalesItemsService shareSalesItemsService;
 
+	private final ISharePutOnShelvesService sharePutOnShelvesService;
+
 	/**
 	 * 获取销售订单详情
 	 *
@@ -701,7 +705,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			.eq(PjOrder::getBsType, "XS")
 			.eq(PjOrder::getBusinesDate, dateS)
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) " +
-				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))" +
+				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				"OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))"));
 		if (!orderList.isEmpty()) {
 			return R.data(orderList.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
@@ -4052,7 +4057,36 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		}
 		baseMapper.updateById(pjOrder);
 		List<ShareSalesItems> shareSalesItemsList = new ArrayList<>();
+		List<SharePutOnShelves> sharePutOnShelvesList = new ArrayList<>();
+		if (ObjectUtils.isNull(pjOrder.getOldTrxId())) {
+			List<Long> goodsId = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsId).collect(Collectors.toList());
+			sharePutOnShelvesList = sharePutOnShelvesService.list(new LambdaQueryWrapper<SharePutOnShelves>()
+				.eq(SharePutOnShelves::getTenantId, AuthUtil.getTenantId())
+				.eq(SharePutOnShelves::getIsDeleted, 0)
+				.eq(SharePutOnShelves::getBillType, 1)
+				.eq(SharePutOnShelves::getShareStatus, "已确认")
+				.in(SharePutOnShelves::getGoodsId, goodsId)
+			);
+			if (sharePutOnShelvesList.isEmpty()) {
+				throw new RuntimeException("未找到共享上架商品明细");
+			}
+		}
+		List<SharePutOnShelves> sharePutOnShelvesListNew = new ArrayList<>();
 		for (PjOrderItems item : order.getOrderItemsList()) {
+			if (ObjectUtils.isNull(pjOrder.getOldTrxId())) {
+				SharePutOnShelves sharePutOnShelves = sharePutOnShelvesList.stream()
+					.filter(e -> e.getGoodsId().equals(item.getGoodsId())).findFirst().orElse(null);
+				if (sharePutOnShelves == null) {
+					throw new RuntimeException("商品:" + item.getGoodsName() + "为在共享上架查到");
+				}
+				if (item.getOutGoodsTotalShipNum().compareTo(sharePutOnShelves.getInventory()) > 0) {
+					throw new RuntimeException("本次派发数量:大于共享剩余库存");
+				}
+				sharePutOnShelves.setInventory(sharePutOnShelves.getInventory().subtract(item.getOutGoodsTotalShipNum()));
+				sharePutOnShelves.setUpdateUser(AuthUtil.getUserId());
+				sharePutOnShelves.setUpdateTime(new Date());
+				sharePutOnShelvesListNew.add(sharePutOnShelves);
+			}
 			ShareSalesItems shareSalesItems = new ShareSalesItems();
 			shareSalesItems.setPid(order.getId());
 			shareSalesItems.setSrcPid(item.getId());
@@ -4071,10 +4105,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			shareSalesItems.setSharedCompanyName(order.getSharedCompanyName());
 			shareSalesItems.setSharedStatus("已派发");
 			shareSalesItemsList.add(shareSalesItems);
-
 			item.setSendNum(item.getSendNum().add(item.getOutGoodsTotalShipNum()));
 			item.setGoodsTotalShipAmount(item.getOutGoodsTotalShipNum().multiply(item.getPrice()));
-
 		}
 		if (!shareSalesItemsList.isEmpty()) {
 			shareSalesItemsService.saveBatch(shareSalesItemsList);
@@ -4082,11 +4114,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		if (!order.getOrderItemsList().isEmpty()) {
 			orderItemsService.saveBatch(order.getOrderItemsList());
 		}
+		if (ObjectUtils.isNull(pjOrder.getOldTrxId())) {
+			if (!sharePutOnShelvesListNew.isEmpty()) {
+				sharePutOnShelvesService.updateBatchById(sharePutOnShelvesListNew);
+			}
+		}
 		boolean status = generateSharePjOrder(order.getSharedCompanyId(), order.getOrderItemsList(), pjOrder.getTenantId() + "-" + pjOrder.getOrdNo());
 		if (!status) {
 			throw new RuntimeException("派发失败,请联系管理员");
 		}
-		return null;
+		return R.success("操作成功");
 	}
 
 	private boolean generateSharePjOrder(String sharedCompanyId, List<PjOrderItems> orderItemsList, String srcOrdNo) {
@@ -4118,13 +4155,163 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 		}
 		sharePjOrder.setOrdNo(billNo);
 		sharePjOrder.setSrcOrdNo(billNo);
+		sharePjOrder.setBusinesDate(new Date());
+		sharePjOrder.setCreateUser(AuthUtil.getUserId());
+		sharePjOrder.setCreateTime(new Date());
+		sharePjOrder.setSrcNo(srcOrdNo);
+		sharePjOrder.setSalesCompanyId(dept.getId());
+		sharePjOrder.setSalesCompanyName(dept.getDeptName());
+		sharePjOrder.setBusinessSource("共享销售");
+		sharePjOrder.setStatus("待确认");
+		R<Dept> res = sysClient.getDept(Long.parseLong(AuthUtil.getDeptId()));
+		if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+			sharePjOrder.setRemarks("来源" + res.getData().getDeptName() + "销售单");
+		}
+		String goodsNo = orderItemsList.stream().map(PjOrderItems::getGoodsNo).distinct().collect(Collectors.joining(","));
+		List<PjGoodsDesc> goodsDescList = goodsDescMapper.selectListGoods(goodsNo, dept.getTenantId());
+		if (!goodsDescList.isEmpty()) {
+			throw new RuntimeException("未查到对应商品信息");
+		}
+		List<PjOrderItems> itemsList = new ArrayList<>();
+		for (PjOrderItems items : orderItemsList) {
+			PjOrderItems orderItems = new PjOrderItems();
+			orderItems.setTenantId(dept.getTenantId());
+			orderItems.setCreateUser(AuthUtil.getUserId());
+			orderItems.setCreateTime(new Date());
+			PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getCode().equals(items.getGoodsNo())).findFirst().orElse(null);
+			if (goodsDesc != null) {
+				orderItems.setGoodsNo(goodsDesc.getCode());
+				orderItems.setGoodsName(goodsDesc.getCname());
+				orderItems.setGoodsId(goodsDesc.getId());
+				orderItems.setBrandId(goodsDesc.getBrandId());
+				orderItems.setBrandName(goodsDesc.getBrandName());
+				orderItems.setPropertyName(goodsDesc.getSpecificationAndModel());
+				orderItems.setPattern(goodsDesc.getBrandItem());
+				orderItems.setGoodsDescription(goodsDesc.getGoodsDescription());
+				orderItems.setUnits(goodsDesc.getUnit());
+			} else {
+				throw new RuntimeException("商品:" + goodsDesc.getCname() + "未查到");
+			}
+			orderItems.setDot(items.getDot());
+			orderItems.setSalesCompanyId(dept.getId());
+			orderItems.setSalesCompanyName(dept.getDeptName());
+			orderItems.setUrl(items.getUrl());
+			orderItems.setBillNo(billNo);
+			orderItems.setBsType("XS");
+			orderItems.setGoodsNum(items.getOutGoodsTotalShipNum());
+			orderItems.setPrice(items.getCostpriePrice());
+			orderItems.setSubTotalMoney(items.getOutGoodsTotalShipNum().multiply(items.getCostpriePrice()));
+			orderItems.setTotalAmount(orderItems.getSubTotalMoney());
+			orderItems.setRebatePrice(items.getCostpriePrice());
+			orderItems.setRebateCostprie(orderItems.getSubTotalMoney());
+			orderItems.setRebateProfit(new BigDecimal("0.00"));
+			itemsList.add(orderItems);
+		}
+		BigDecimal amount = itemsList.stream().map(PjOrderItems::getSubTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+		BigDecimal goodsNum = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+		sharePjOrder.setGoodsTotalNum(goodsNum);
+		sharePjOrder.setSalesAmount(amount);
+		sharePjOrder.setTotalMoney(amount);
+		sharePjOrder.setNumberRows(itemsList.size());
+		int count = baseMapper.insertOrder(sharePjOrder);
+		if (count == 0) {
+			throw new RuntimeException("保存销售单失败,请联系管理员");
+		}
+		for (PjOrderItems items : itemsList) {
+			items.setPid(sharePjOrder.getId());
+			int counts = orderItemsService.insertOrderItems(items);
+			if (counts == 0) {
+				throw new RuntimeException("保存销售单明细失败,请联系管理员");
+			}
+		}
 		return true;
 	}
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public R revokeDistributeShareSales(PjOrder order) {
-		return null;
+	public R revokeDistributeShareSales(String itemIds) {
+		List<PjOrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<PjOrderItems>()
+			.eq(PjOrderItems::getTenantId, AuthUtil.getTenantId())
+			.eq(PjOrderItems::getIsDeleted, 0)
+			.apply("find_in_set(id ,'" + itemIds + "')"));
+		if (orderItemsList.isEmpty()) {
+			throw new RuntimeException("未查到对应明细信息");
+		}
+		PjOrder order = baseMapper.selectById(orderItemsList.get(0).getPid());
+		if (order == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		if ("已发货".equals(order.getStatus())) {
+			throw new RuntimeException("单据已发货,撤销失败");
+		}
+		List<ShareSalesItems> shareSalesItemsList = shareSalesItemsService.list(new LambdaQueryWrapper<ShareSalesItems>()
+			.eq(ShareSalesItems::getTenantId, AuthUtil.getTenantId())
+			.eq(ShareSalesItems::getIsDeleted, 0)
+			.eq(ShareSalesItems::getPid, order.getId())
+			.apply("find_in_set(sec_pid , '" + itemIds + "')"));
+		if (shareSalesItemsList.isEmpty()) {
+			throw new RuntimeException("未查到对应派发明细信息");
+		}
+		shareSalesItemsService.removeByIds(shareSalesItemsList.stream().map(ShareSalesItems::getId).collect(Collectors.toList()));
+		String sharedCompanyName = shareSalesItemsList.stream().map(ShareSalesItems::getSharedCompanyName).distinct().collect(Collectors.joining(","));
+		List<PjOrder> shareOrderList = baseMapper.selectShareOrder(order.getOrdNo(), sharedCompanyName);
+		if (shareOrderList.isEmpty()) {
+			throw new RuntimeException("未查到对应派发销售单据信息");
+		}
+		StringBuilder ids = new StringBuilder();
+		for (PjOrder item : shareOrderList) {
+			ids.append(item.getId()).append(",");
+		}
+		List<PjOrderItems> shareOrderItemsList = orderItemsService.selectShareOrderItems(ids.substring(0, ids.length() - 1));
+		if (shareOrderItemsList.isEmpty()) {
+			throw new RuntimeException("未查到对应派发销售单据明细信息");
+		}
+		List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).collect(Collectors.toList());
+		List<SharePutOnShelves> sharePutOnShelvesList = sharePutOnShelvesService.list(new LambdaQueryWrapper<SharePutOnShelves>()
+			.eq(SharePutOnShelves::getTenantId, AuthUtil.getTenantId())
+			.eq(SharePutOnShelves::getIsDeleted, 0)
+			.eq(SharePutOnShelves::getBillType, 1)
+			.eq(SharePutOnShelves::getShareStatus, "已确认")
+			.in(SharePutOnShelves::getGoodsId, goodsId)
+		);
+		if (sharePutOnShelvesList.isEmpty()) {
+			throw new RuntimeException("未找到共享上架商品明细");
+		}
+		List<SharePutOnShelves> sharePutOnShelvesListNew = new ArrayList<>();
+		List<Long> shareOrderItemsListNew = new ArrayList<>();
+		List<Long> shareOrderListNew = new ArrayList<>();
+		for (PjOrderItems item : orderItemsList) {
+			item.setSendNum(new BigDecimal("0.00"));
+			item.setOutGoodsTotalShipNum(new BigDecimal("0.00"));
+			item.setUpdateUser(AuthUtil.getUserId());
+			item.setUpdateTime(new Date());
+			SharePutOnShelves sharePutOnShelves = sharePutOnShelvesList.stream()
+				.filter(e -> e.getGoodsId().equals(item.getGoodsId())).findFirst().orElse(null);
+			if (sharePutOnShelves == null) {
+				throw new RuntimeException("商品:" + item.getGoodsName() + "为在共享上架查到");
+			}
+			sharePutOnShelves.setInventory(sharePutOnShelves.getInventory().add(item.getGoodsNum()));
+			sharePutOnShelves.setUpdateUser(AuthUtil.getUserId());
+			sharePutOnShelves.setUpdateTime(new Date());
+			sharePutOnShelvesListNew.add(sharePutOnShelves);
+			PjOrderItems orderItems = shareOrderItemsList.stream().filter(e -> e.getGoodsNo().equals(item.getGoodsNo())).findFirst().orElse(null);
+			if (orderItems != null) {
+				shareOrderItemsListNew.add(orderItems.getId());
+				shareOrderListNew.add(orderItems.getPid());
+			}
+		}
+		orderItemsService.updateBatchById(orderItemsList);
+		if (!shareOrderItemsListNew.isEmpty()) {
+			orderItemsService.removeByIds(shareOrderItemsListNew);
+		}
+		if (!shareOrderListNew.isEmpty()) {
+			List<Long> shareOrderIds = shareOrderListNew.stream().distinct().collect(Collectors.toList());
+			this.removeByIds(shareOrderIds);
+		}
+		if (!sharePutOnShelvesListNew.isEmpty()) {
+			sharePutOnShelvesService.updateBatchById(sharePutOnShelvesListNew);
+		}
+		return R.success("操作成功");
 	}
 
 	/**

+ 1 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/mapper/ProductLaunchMapper.xml

@@ -90,6 +90,7 @@
           AND ps.tenant_id = #{order.tenantId}
         and (( ps.business_source = '外部销售' AND FIND_IN_SET( ps.status, '待确认,待发货,已发货,已收货' ) )
         OR (ps.business_source = '内部销售' AND FIND_IN_SET( ps.status, '待发货,已发货,已收货' ))
+        OR (ps.business_source = '共享销售' AND FIND_IN_SET( ps.status, '待发货,已发货,已收货' ))
         OR (ps.business_source = '额度支付' AND FIND_IN_SET( ps.status, '待确认,待发货,已发货,已收货' )))
         <if test="order.goodsId!=null">
             and psi.goods_id = #{order.goodsId}

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/serial/mapper/PjpfSerialMapper.xml

@@ -60,7 +60,7 @@
         set serial = #{serial.serial},version = #{serial.version}
         where id = #{serial.id} and version = #{serial.versionOld}
     </update>
-    <insert id="insertSerialMessage" parameterType="org.springblade.salesPart.serial.entity.PjpfSerial" useGeneratedKeys="true">
+    <insert id="insertSerialMessage" parameterType="org.springblade.salesPart.serial.entity.PjpfSerial" useGeneratedKeys="true" keyProperty="id">
         insert into basic_serial
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="billType != null">bill_type,</if>

+ 30 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/controller/ShipController.java

@@ -99,7 +99,8 @@ public class ShipController extends BladeController {
 				PjShip::getCustomerName,PjShip::getBsType,PjShip::getStorageName,PjShip::getStockClerkName,PjShip::getStockClerkId,PjShip::getSendTotalNum,
 				PjShip::getGoodsTotalNum,PjShip::getStatusName,PjShip::getBusinesDate,PjShip::getCreateUser,PjShip::getCreateTime,
 				PjShip::getUpdateUser,PjShip::getUpdateTime,PjShip::getSalesCompanyName,PjShip::getRecAddress,PjShip::getPhone,
-				PjShip::getContacts,PjShip::getRemarks,PjShip::getCallInStorageName,PjShip::getStorageId,PjShip::getCallInStorageId)
+				PjShip::getContacts,PjShip::getRemarks,PjShip::getCallInStorageName,PjShip::getStorageId,PjShip::getCallInStorageId,
+				PjShip::getStatus)
 			.eq(PjShip::getTenantId, AuthUtil.getTenantId())
 			.eq(PjShip::getIsDeleted, 0)
 			.eq(PjShip::getSalesCompanyId, AuthUtil.getDeptId())//公司
@@ -491,4 +492,32 @@ public class ShipController extends BladeController {
 		return shipService.shippingNotice(ship);
 	}
 
+	/**
+	 * 确认到货
+	 */
+	@PostMapping("/confirmShipment")
+	@RepeatSubmit
+	public R confirmShipment(@Valid @RequestBody PjShip ship) {
+		if (ship.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		ship.setStatus("是");
+		shipService.updateById(ship);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 撤销到货
+	 */
+	@PostMapping("/revokeShipment")
+	@RepeatSubmit
+	public R revokeShipment(@Valid @RequestBody PjShip ship) {
+		if (ship.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		ship.setStatus("否");
+		shipService.updateById(ship);
+		return R.success("操作成功");
+	}
+
 }

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

@@ -102,6 +102,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.eq(PjOrder::getBsType, "XS")
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) " +
 				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 			.apply("FIND_IN_SET( status, '已发货,已收货' ) and busines_date = CURDATE()"));
 		if (!pjOrderListD.isEmpty()) {
@@ -135,6 +136,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.eq(PjOrder::getBsType, "XS")
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) " +
 				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 			.apply("FIND_IN_SET( status, '已发货,已收货' ) and DATE_FORMAT(busines_date, '%Y-%m') = DATE_FORMAT(CURRENT_DATE(), '%Y-%m')"));
 		if (!pjOrderListM.isEmpty()) {
@@ -186,6 +188,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.apply("find_in_set(status,'录入,待确认')")
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) " +
 				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 			.ge(!quer.getDateList().isEmpty(), PjOrder::getBusinesDate, quer.getDateList().get(0))
 			.le(!quer.getDateList().isEmpty(), PjOrder::getBusinesDate, quer.getDateList().get(1)));
@@ -325,6 +328,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.eq(PjOrder::getBsType, "XS")
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) " +
 				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 			.apply("status = '已发货' and busines_date = CURDATE()"));
 		if (!pjOrderList.isEmpty()) {
@@ -358,6 +362,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.le(PjOrder::getBusinesDate, endDate)
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) " +
 				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 			.apply("status = '已发货'"));
 		List<Map<String, Object>> list = new ArrayList<>();
@@ -407,6 +412,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.le(PjOrder::getBusinesDate, endDate)
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) " +
 				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 			.apply("status = '已发货'"));
 		List<Map<String, Object>> list = new ArrayList<>();
@@ -455,7 +461,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.ge(PjOrder::getBusinesDate, statusDate)
 			.le(PjOrder::getBusinesDate, endDate)
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3' ) ) " +
-				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' ))" +
+				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				"OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3' )))")
 			.apply("status = '已发货'"));
 		List<Map<String, Object>> mapList = new ArrayList<>();
@@ -512,6 +519,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.le(PjOrder::getBusinesDate, endDate)
 			.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) ) " +
 				"OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+				"OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 				"OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 			.apply("status = '已发货'"));
 		//销售
@@ -1001,8 +1009,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
 			.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 			.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
-			.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
-			.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd());
+			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
+			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'");
 		if ("2".equals(saleDetailDto.getBsType())) {
 			lambdaQueryWrapper.isNotNull(PjOrder::getSalerId);
 			lambdaQueryWrapper.groupBy(PjOrder::getSalerName);
@@ -1028,8 +1036,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
-				.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
-				.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd());
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'");
 			if ("2".equals(saleDetailDto.getBsType())) {
 				orderLambdaQueryWrapper.apply("find_in_set(saler_name,'" + name + "')");
 			} else {
@@ -1291,8 +1299,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
 			.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 			.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
-			.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
-			.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd());
+			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
+			.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'");
 		if ("2".equals(saleDetailDto.getBsType())) {
 			lambdaQueryWrapper.isNotNull(PjOrder::getSalerId);
 			lambdaQueryWrapper.groupBy(PjOrder::getSalerName);
@@ -1317,8 +1325,8 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(ObjectUtils.isNotNull(saleDetailDto.getStorageId()), PjOrder::getStorageId, saleDetailDto.getStorageId())
 				.ge(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateStart()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateStart())
 				.le(ObjectUtils.isNotNull(saleDetailDto.getBusinesDateEnd()), PjOrder::getBusinesDate, saleDetailDto.getBusinesDateEnd())
-				.ge(ObjectUtils.isNotNull(saleDetailDto.getDateStart()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateStart())
-				.le(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()), PjOrder::getDeliveryBusinesDate, saleDetailDto.getDateEnd());
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateStart()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateStart()+"'")
+				.apply(ObjectUtils.isNotNull(saleDetailDto.getDateEnd()),"DATE_FORMAT( delivery_busines_date, '%Y-%m-%d' )  >= '" + saleDetailDto.getDateEnd()+"'");
 			if ("2".equals(saleDetailDto.getBsType())) {
 				orderLambdaQueryWrapper.apply("find_in_set(saler_name,'" + name + "')");
 			} else {
@@ -1511,6 +1519,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getBsType, "XS")
 				.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 					" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+					" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 					" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 				.eq(ObjectUtils.isNotNull(corpBuySingular.getBusinessSource()), PjOrder::getBusinessSource, corpBuySingular.getBusinessSource())
 				.like(ObjectUtils.isNotNull(corpBuySingular.getSalerName()), PjOrder::getSalerName, corpBuySingular.getSalerName())
@@ -1568,6 +1577,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getBsType, "XS")
 				.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 					" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+					" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 					" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 				.eq(ObjectUtils.isNotNull(corpBuySingular.getBusinessSource()), PjOrder::getBusinessSource, corpBuySingular.getBusinessSource())
 				.like(ObjectUtils.isNotNull(corpBuySingular.getSalerName()), PjOrder::getSalerName, corpBuySingular.getSalerName())
@@ -1625,6 +1635,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getBsType, "XS")
 				.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 					" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+					" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 					" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 				.eq(ObjectUtils.isNotNull(corpBuySingular.getBusinessSource()), PjOrder::getBusinessSource, corpBuySingular.getBusinessSource())
 				.like(ObjectUtils.isNotNull(corpBuySingular.getSalerName()), PjOrder::getSalerName, corpBuySingular.getSalerName())
@@ -1677,6 +1688,7 @@ public class StatisticsServiceImpl implements IStatisticsService {
 				.eq(PjOrder::getBsType, "XS")
 				.apply("(( business_source = '外部销售' AND FIND_IN_SET( actual_payment_status, '2,3,4' ) )" +
 					" OR (business_source = '内部销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
+					" OR (business_source = '共享销售' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' ))" +
 					" OR (business_source = '额度支付' AND FIND_IN_SET( actual_payment_status, '0,1,2,3,4' )))")
 				.eq(ObjectUtils.isNotNull(corpBuySingular.getBusinessSource()), PjOrder::getBusinessSource, corpBuySingular.getBusinessSource())
 				.like(ObjectUtils.isNotNull(corpBuySingular.getSalerName()), PjOrder::getSalerName, corpBuySingular.getSalerName())