纪新园 1 год назад
Родитель
Сommit
135d992168
39 измененных файлов с 1143 добавлено и 574 удалено
  1. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjBrandDesc.java
  2. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjGoodsType.java
  3. 6 6
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjProductLaunch.java
  4. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShoppingCart.java
  5. 2 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java
  6. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/ProductLaunchImportCodeExcel.java
  7. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/excel/ProductLaunchImportExcel.java
  8. 7 2
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
  9. 7 2
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  10. 5 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/controller/BrandDescController.java
  11. 4 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsTypeController.java
  12. 5 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsTypeMapper.java
  13. 10 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsTypeMapper.xml
  14. 2 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/IGoodsTypeService.java
  15. 4 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsTypeServiceImpl.java
  16. 5 1
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/controller/OrderController.java
  17. 6 6
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderItemsMapper.xml
  18. 4 4
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/mapper/OrderMapper.xml
  19. 213 82
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java
  20. 32 30
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/controller/ProductLaunchController.java
  21. 4 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/IProductLaunchService.java
  22. 305 190
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/impl/ProductLaunchServiceImpl.java
  23. 61 59
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  24. 13 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/controller/ShoppingCartController.java
  25. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/IShoppingCartService.java
  26. 167 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java
  27. 7 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/controller/LargeScreenYcpApiController.java
  28. 2 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/ApiService.java
  29. 184 124
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/impl/ApiServiceImpl.java
  30. 31 49
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java
  31. 7 1
      blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java
  32. 1 1
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.java
  33. 1 1
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.xml
  34. 4 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java
  35. 3 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml
  36. 1 1
      blade-service/blade-system/src/main/java/org/springblade/system/service/IParamServiceService.java
  37. 2 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java
  38. 1 1
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceServiceImpl.java
  39. 5 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java

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

@@ -159,4 +159,10 @@ public class PjBrandDesc implements Serializable {
 
 	@TableField(exist = false)
 	private List<BrandFigure> brandFigureList;
+
+	/**
+	 * 是否是积分商品
+	 */
+	@ApiModelProperty(value = "是否是积分商品")
+	private String whetherIntegral;
 }

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

@@ -148,4 +148,10 @@ public class PjGoodsType implements Serializable {
 	 */
 	@ApiModelProperty(value = "所属公司名称")
 	private String salesCompanyName;
+
+	/**
+	 * 是否是积分商品
+	 */
+	@ApiModelProperty(value = "是否是积分商品")
+	private String whetherIntegral;
 }

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

@@ -309,12 +309,6 @@ public class PjProductLaunch implements Serializable {
 	private Integer version;
 
 	/**
-	 * 是否是积分商品
-	 */
-	@TableField(exist = false)
-	private String whetherIntegral;
-
-	/**
 	 * 库存是否为零
 	 */
 	@TableField(exist = false)
@@ -337,4 +331,10 @@ public class PjProductLaunch implements Serializable {
 	 */
 	@TableField(exist = false)
 	private String rebatePrice;
+
+	/**
+	 * 是否是积分商品
+	 */
+	@ApiModelProperty(value = "是否是积分商品")
+	private String whetherIntegral;
 }

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

@@ -295,4 +295,10 @@ public class PjShoppingCart implements Serializable {
 	@TableField(exist = false)
 	private String payType;
 
+	/**
+	 * 是否是积分商品
+	 */
+	@ApiModelProperty(value = "是否是积分商品")
+	private String whetherIntegral;
+
 }

+ 2 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/enums/OrderTypeEnum.java

@@ -27,6 +27,8 @@ public enum OrderTypeEnum {
 	SALES("XS"),
 	TKSALES("TKXS"),
 
+	POINTS("JF"),
+
 	/**
 	 * 销售录入状态
 	 */

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

@@ -54,6 +54,12 @@ public class ProductLaunchImportCodeExcel implements Serializable {
 	private BigDecimal priceFour;
 
 	/**
+	 * 库存
+	 */
+	@ExcelProperty(value = "库存")
+	private BigDecimal inventory;
+
+	/**
 	 * 共享公司
 	 */
 	@ExcelProperty(value = "共享公司(英文逗号拼接)")

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

@@ -55,6 +55,12 @@ public class ProductLaunchImportExcel implements Serializable {
 	private BigDecimal priceFour;
 
 	/**
+	 * 库存
+	 */
+	@ExcelProperty(value = "库存")
+	private BigDecimal inventory;
+
+	/**
 	 * 共享公司
 	 */
 	@ExcelProperty(value = "共享公司(英文逗号拼接)")

+ 7 - 2
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java

@@ -78,6 +78,8 @@ public interface ISysClient {
 	String GET_TENANT_IDS = API_PREFIX + "/getTenantIds";
 	String PARAM_SERVICE_VALUE = API_PREFIX + "/paramServiceValue";
 
+	String GET_TENANT_LIST = API_PREFIX + "/getTenantList";
+
 
 	/**
 	 * 通过租户id获取全部租户别名
@@ -386,8 +388,11 @@ public interface ISysClient {
 	R<List<Dept>> getDeptList(@RequestParam(value = "ids", required = false) String ids, @RequestParam(value = "name", required = false) String name);
 
 	@GetMapping(GET_TENANT_IDS)
-	String getTenantIds(@RequestParam("paramKey") String paramKey);
+	List<String> getTenantIds(@RequestParam("paramKey") String paramKey);
 
 	@GetMapping(PARAM_SERVICE_VALUE)
-	String paramServiceValue(@RequestParam(value = "tenantId",required = false) String tenantId,@RequestParam(value = "paramKey",required = false) String paramKey);
+	String paramServiceValue(@RequestParam(value = "tenantId", required = false) String tenantId, @RequestParam(value = "paramKey", required = false) String paramKey);
+
+	@GetMapping(GET_TENANT_LIST)
+	List<Tenant> getTenantList(@RequestParam(value = "tenantId", required = false) String tenantId);
 }

+ 7 - 2
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java

@@ -206,8 +206,8 @@ public class ISysClientFallback implements ISysClient {
 	}
 
 	@Override
-	public String getTenantIds(String paramKey) {
-		return "";
+	public List<String>  getTenantIds(String paramKey) {
+		return null;
 	}
 
 	@Override
@@ -215,4 +215,9 @@ public class ISysClientFallback implements ISysClient {
 		return "";
 	}
 
+	@Override
+	public List<Tenant> getTenantList(String tenantId) {
+		return null;
+	}
+
 }

+ 5 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/controller/BrandDescController.java

@@ -92,6 +92,7 @@ public class BrandDescController extends BladeController {
 			.eq(PjBrandDesc::getIsDeleted, 0)
 			.eq(ObjectUtils.isNotNull(brandDesc.getEnableOrNot()), PjBrandDesc::getEnableOrNot, brandDesc.getEnableOrNot())//状态
 			.eq(ObjectUtils.isNotNull(brandDesc.getCreateUser()), PjBrandDesc::getCreateUser, brandDesc.getCreateUser())
+			.eq(ObjectUtils.isNotNull(brandDesc.getWhetherIntegral()), PjBrandDesc::getWhetherIntegral, brandDesc.getWhetherIntegral())
 			.eq(ObjectUtils.isNotNull(brandDesc.getType()), PjBrandDesc::getType, brandDesc.getType())
 			.like(ObjectUtils.isNotEmpty(brandDesc.getCname()), PjBrandDesc::getCname, brandDesc.getCname());
 		if (brandDesc.getCreateTimeList() != null && brandDesc.getCreateTimeList().size() > 1) {//业务日期
@@ -244,6 +245,7 @@ public class BrandDescController extends BladeController {
 			.eq(PjBrandDesc::getIsDeleted, 0)
 			.eq(PjBrandDesc::getType, brandDesc.getType())
 			.eq(PjBrandDesc::getEnableOrNot, brandDesc.getEnableOrNot())
+			.eq(ObjectUtils.isNotNull(brandDesc.getWhetherIntegral()), PjBrandDesc::getWhetherIntegral, brandDesc.getWhetherIntegral())
 			.like(ObjectUtils.isNotEmpty(brandDesc.getCname()), PjBrandDesc::getCname, brandDesc.getCname())
 			.orderByDesc(PjBrandDesc::getSort);
 		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")) {
@@ -272,6 +274,7 @@ public class BrandDescController extends BladeController {
 		lambdaQueryWrapper.eq(PjBrandDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjBrandDesc::getIsDeleted, 0)
 			.eq(PjBrandDesc::getType, brandDesc.getType())
+			.eq(ObjectUtils.isNotNull(brandDesc.getWhetherIntegral()), PjBrandDesc::getWhetherIntegral, brandDesc.getWhetherIntegral())
 			.like(ObjectUtils.isNotEmpty(brandDesc.getCname()), PjBrandDesc::getCname, brandDesc.getCname())
 			.orderByDesc(PjBrandDesc::getSort);
 		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")) {
@@ -309,6 +312,7 @@ public class BrandDescController extends BladeController {
 			.eq(PjBrandDesc::getIsDeleted, 0)
 			.eq(PjBrandDesc::getType, "PP")
 			.eq(PjBrandDesc::getEnableOrNot, 1)
+			.eq(ObjectUtils.isNotNull(brandDesc.getWhetherIntegral()), PjBrandDesc::getWhetherIntegral, brandDesc.getWhetherIntegral())
 			.like(ObjectUtils.isNotEmpty(brandDesc.getCname()), PjBrandDesc::getCname, brandDesc.getCname())
 			.orderByDesc(PjBrandDesc::getSort);
 		if (ObjectUtils.isNotNull(corpsDesc.getBrandId())) {
@@ -349,6 +353,7 @@ public class BrandDescController extends BladeController {
 			.eq(PjBrandDesc::getIsDeleted, 0)
 			.eq(PjBrandDesc::getType, "PP")
 			.eq(PjBrandDesc::getEnableOrNot, 1)
+			.eq(ObjectUtils.isNotNull(brandDesc.getWhetherIntegral()), PjBrandDesc::getWhetherIntegral, brandDesc.getWhetherIntegral())
 			.like(ObjectUtils.isNotEmpty(brandDesc.getCname()), PjBrandDesc::getCname, brandDesc.getCname())
 			.orderByDesc(PjBrandDesc::getSort);
 		if (ObjectUtils.isNotNull(corpsDesc.getBrandId())) {

+ 4 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsTypeController.java

@@ -192,8 +192,8 @@ public class GoodsTypeController extends BladeController {
 	@GetMapping("/tree")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "树形结构", notes = "树形结构")
-	public R<List<GoodsTypeVO>> tree(String tenantId, BladeUser bladeUser) {
-		List<GoodsTypeVO> tree = goodsTypeService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), GoodsTypeEnum.GOODS.getType());
+	public R<List<GoodsTypeVO>> tree(String tenantId, BladeUser bladeUser,String whetherIntegral) {
+		List<GoodsTypeVO> tree = goodsTypeService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), GoodsTypeEnum.GOODS.getType(),whetherIntegral);
 		return R.data(tree);
 	}
 
@@ -203,8 +203,8 @@ public class GoodsTypeController extends BladeController {
 	@GetMapping("/lazy-tree")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "懒加载树形结构", notes = "树形结构")
-	public R<List<GoodsTypeVO>> lazyTree(String tenantId, Long parentId, BladeUser bladeUser) {
-		List<GoodsTypeVO> tree = goodsTypeService.lazyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId, GoodsTypeEnum.GOODS.getType());
+	public R<List<GoodsTypeVO>> lazyTree(String tenantId, Long parentId, BladeUser bladeUser,String whetherIntegral) {
+		List<GoodsTypeVO> tree = goodsTypeService.lazyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId, GoodsTypeEnum.GOODS.getType(),whetherIntegral);
 		return R.data(tree);
 	}
 

+ 5 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/mapper/GoodsTypeMapper.java

@@ -52,7 +52,8 @@ public interface GoodsTypeMapper extends BaseMapper<PjGoodsType> {
 	 */
 	List<GoodsTypeVO> tree(@Param("tenantId") String tenantId,
 						   @Param("type") Long type,
-						   @Param("salesCompanyId") Long salesCompanyId);
+						   @Param("salesCompanyId") Long salesCompanyId
+		,@Param("whetherIntegral")String whetherIntegral);
 	/**
 	 * 懒加载
 	 * @param tenantId
@@ -60,7 +61,9 @@ public interface GoodsTypeMapper extends BaseMapper<PjGoodsType> {
 	 * @param type
 	 * @return
 	 */
-	List<GoodsTypeVO> lazyTree(@Param("tenantId") String tenantId, @Param("parentId") Long parentId, @Param("type") Long type,@Param("dept") String dept);
+	List<GoodsTypeVO> lazyTree(@Param("tenantId") String tenantId, @Param("parentId") Long parentId,
+							   @Param("type") Long type,@Param("dept") String dept
+		,@Param("whetherIntegral")String whetherIntegral);
 
 	/**
 	 * 获取商品类别名称

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

@@ -19,6 +19,7 @@
         <result column="update_time" property="updateTime"/>
         <result column="status" property="status"/>
         <result column="is_deleted" property="isDeleted"/>
+        <result column="whether_integral" property="whetherIntegral"/>
     </resultMap>
     <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
         <id column="id" property="id"/>
@@ -111,6 +112,9 @@ WHERE
         <if test="GoodsType.type!=null">
             and dept.type = #{GoodsType.type}
         </if>
+        <if test="GoodsType.whetherIntegral!=null">
+            and dept.whether_integral = #{GoodsType.whetherIntegral}
+        </if>
         order by dept.sort
     </select>
     <select id="tree" resultMap="treeNodeResultMap">
@@ -131,6 +135,9 @@ WHERE
         <if test="salesCompanyId!=null">
             and sales_company_id = #{salesCompanyId}
         </if>
+        <if test="whetherIntegral!=null">
+            and whether_integral = #{whetherIntegral}
+        </if>
         and type = #{type}
         ORDER BY sort
     </select>
@@ -160,6 +167,9 @@ WHERE
         <if test="dept!=null and dept!=''">
             and dept.sales_company_id = #{dept}
         </if>
+        <if test="whetherIntegral!=null">
+            and dept.whether_integral = #{whetherIntegral}
+        </if>
         AND type = #{type}
         ORDER BY dept.sort
     </select>

+ 2 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/IGoodsTypeService.java

@@ -47,7 +47,7 @@ public interface IGoodsTypeService extends IService<PjGoodsType> {
 	 * @param type
 	 * @return
 	 */
-	List<GoodsTypeVO> tree(String tenantId, Long type);
+	List<GoodsTypeVO> tree(String tenantId, Long type,String whetherIntegral);
 
 	/**
 	 * 保存或修改商品类别
@@ -73,7 +73,7 @@ public interface IGoodsTypeService extends IService<PjGoodsType> {
 	 * @param type
 	 * @return
 	 */
-	List<GoodsTypeVO> lazyTree(String tenantId, Long id, Long type);
+	List<GoodsTypeVO> lazyTree(String tenantId, Long id, Long type,String whetherIntegral);
 
 	/**
 	 * 验证商品类别名称唯一性

+ 4 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/service/impl/GoodsTypeServiceImpl.java

@@ -83,11 +83,11 @@ public class GoodsTypeServiceImpl extends ServiceImpl<GoodsTypeMapper, PjGoodsTy
 	}
 
 	@Override
-	public List<GoodsTypeVO> tree(String tenantId, Long type) {
+	public List<GoodsTypeVO> tree(String tenantId, Long type,String whetherIntegral) {
 		if (StringUtils.isBlank(tenantId)) {
 			tenantId = SecureUtil.getTenantId();
 		}
-			return ForestNodeMerger.merge(baseMapper.tree(tenantId, type,Long.parseLong(AuthUtil.getDeptId())));
+			return ForestNodeMerger.merge(baseMapper.tree(tenantId, type,Long.parseLong(AuthUtil.getDeptId()), whetherIntegral));
 
 	}
 
@@ -131,11 +131,11 @@ public class GoodsTypeServiceImpl extends ServiceImpl<GoodsTypeMapper, PjGoodsTy
 	}
 
 	@Override
-	public List<GoodsTypeVO> lazyTree(String tenantId, Long parentId, Long type) {
+	public List<GoodsTypeVO> lazyTree(String tenantId, Long parentId, Long type,String whetherIntegral) {
 		if (StringUtils.isBlank(tenantId)) {
 			tenantId = SecureUtil.getTenantId();
 		}
-		return baseMapper.lazyTree(tenantId, parentId, type,AuthUtil.getDeptId());
+		return baseMapper.lazyTree(tenantId, parentId, type,AuthUtil.getDeptId(), whetherIntegral);
 	}
 
 	/**

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

@@ -150,7 +150,11 @@ public class OrderController extends BladeController {
 			lambdaQueryWrapper.ne(ObjectUtils.isNotEmpty(order.getActualPaymentStatus()), PjOrder::getActualPaymentStatus, order.getActualPaymentStatus());//来源单号
 		}
 		if (ObjectUtils.isNull(order.getNotComplete())) {
-			lambdaQueryWrapper.apply("not find_in_set(status,'已发货,已收货,已取消')");
+			if(ObjectUtils.isNotEmpty(order.getStatus())){
+				lambdaQueryWrapper.apply( "find_in_set(status,'" + order.getStatus() + "')");
+			}else{
+				lambdaQueryWrapper.apply("not find_in_set(status,'已发货,已收货,已取消')");
+			}
 		} else {
 			lambdaQueryWrapper.apply(ObjectUtils.isNotEmpty(order.getStatus()), "find_in_set(status,'" + order.getStatus() + "')");
 		}

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

@@ -482,7 +482,7 @@
     </select>
     <select id="selectOrderItemsList" resultType="org.springblade.salesPart.entity.PjOrderItems">
         SELECT
-        *
+        poi.*
         FROM
         pjpf_order_items poi
         left join pjpf_order po on poi.pid = po.id
@@ -491,17 +491,17 @@
         AND po.is_deleted = '0'
         AND po.bs_type = 'XS'
         AND poi.tenant_id = #{tenantId}
-        AND po..tenant_id = #{tenantId}
-        <if test="type !=null and type != '' and type == '1'">
+        AND po.tenant_id = #{tenantId}
+        <if test='type !=null and type != "" and type == "1"'>
             AND DATE(po.busines_date) = CURDATE()
         </if>
-        <if test="type !=null and type != '' and type == '2'">
+        <if test='type !=null and type != "" and type == "2"'>
             AND DATE_FORMAT(po.busines_date, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m');
         </if>
-        <if test="type !=null and type != '' and type == '3'">
+        <if test='type !=null and type != "" and type == "3"'>
             AND YEAR(po.busines_date) = YEAR(CURDATE())
         </if>
-        <if test="type !=null and type != '' and type == '4'">
+        <if test='type !=null and type != "" and type == "4"'>
             AND DATEDIFF(CURDATE(), po.busines_date) &lt;= 90
         </if>
     </select>

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

@@ -876,16 +876,16 @@
             is_deleted = '0'
           AND bs_type = 'XS'
           AND tenant_id = #{tenantId}
-        <if test="type !=null and type != '' and type == '1'">
+        <if test='type !=null and type != "" and type == "1"'>
             AND DATE(busines_date) = CURDATE()
         </if>
-        <if test="type !=null and type != '' and type == '2'">
+        <if test='type !=null and type != "" and type == "2"'>
             AND DATE_FORMAT(busines_date, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m');
         </if>
-        <if test="type !=null and type != '' and type == '3'">
+        <if test='type !=null and type != "" and type == "3"'>
             AND YEAR(busines_date) = YEAR(CURDATE())
         </if>
-        <if test="type !=null and type != '' and type == '4'">
+        <if test='type !=null and type != "" and type == "4"'>
             AND DATEDIFF(CURDATE(), busines_date) &lt;= 90
         </if>
     </select>

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

@@ -3958,18 +3958,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				/*if (goodsId.size() != order.getOrderItemsList().size()) {
 					throw new RuntimeException("明细存在重复商品,请修改明细数据");
 				}*/
-				LambdaQueryWrapper<PjStockDesc> stockLambdaQueryWrapper = new LambdaQueryWrapper<>();
-				stockLambdaQueryWrapper.eq(ObjectUtils.isNotNull(order.getStorageId()), PjStockDesc::getStorageId, order.getStorageId())
-					.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
-					.eq(PjStockDesc::getIsDeleted, 0)
-					.in(PjStockDesc::getGoodsId, goodsId);
-				List<PjStockDesc> pjStockDescList = stockDescService.list(stockLambdaQueryWrapper);
-				if (ObjectUtils.isNotNull(order.getStorageId())) {
-					if (goodsId.size() != pjStockDescList.size()) {
-						List<PjStockDesc> difference = pjStockDescList.stream().filter(e -> !goodsId.contains(e.getGoodsId())).collect(Collectors.toList());
-						if (!difference.isEmpty()) {
-							String name = difference.stream().map(PjStockDesc::getCname).collect(Collectors.joining(","));
-							throw new RuntimeException(name + "未查到库存,请修改");
+				List<PjStockDesc> pjStockDescList = new ArrayList<>();
+				if (!"JF".equals(order.getBsType())) {
+					LambdaQueryWrapper<PjStockDesc> stockLambdaQueryWrapper = new LambdaQueryWrapper<>();
+					stockLambdaQueryWrapper.eq(ObjectUtils.isNotNull(order.getStorageId()), PjStockDesc::getStorageId, order.getStorageId())
+						.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+						.eq(PjStockDesc::getIsDeleted, 0)
+						.in(PjStockDesc::getGoodsId, goodsId);
+					pjStockDescList = stockDescService.list(stockLambdaQueryWrapper);
+					if (ObjectUtils.isNotNull(order.getStorageId())) {
+						if (goodsId.size() != pjStockDescList.size()) {
+							List<PjStockDesc> difference = pjStockDescList.stream().filter(e -> !goodsId.contains(e.getGoodsId())).collect(Collectors.toList());
+							if (!difference.isEmpty()) {
+								String name = difference.stream().map(PjStockDesc::getCname).collect(Collectors.joining(","));
+								throw new RuntimeException(name + "未查到库存,请修改");
+							}
 						}
 					}
 				}
@@ -4004,29 +4007,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					/*if (new BigDecimal("0.00").compareTo(item.getPrice()) == 0) {
 						throw new RuntimeException("商品:" + item.getGoodsName() + "单价为零");
 					}*/
-					if (!pjStockDescList.isEmpty()) {
-						balanceQuantity = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						inventoryAmount = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getInventoryAmount).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						rebateInventoryAmount = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getRebateInventoryAmount).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-					}
-					BigDecimal inventoryCostPrice = new BigDecimal("0.00");
-					BigDecimal rebateInventoryCostPrice = new BigDecimal("0.00");
-					if (balanceQuantity.compareTo(new BigDecimal("0.00")) == 0 ||
-						inventoryAmount.compareTo(new BigDecimal("0.00")) == 0) {
-						inventoryCostPrice = new BigDecimal("0.00");
-					} else {
-						inventoryCostPrice = inventoryAmount.divide(balanceQuantity, 2, RoundingMode.HALF_UP);
-					}
-					if (balanceQuantity.compareTo(new BigDecimal("0.00")) == 0 ||
-						rebateInventoryAmount.compareTo(new BigDecimal("0.00")) == 0) {
-						rebateInventoryCostPrice = new BigDecimal("0.00");
-					} else {
-						rebateInventoryCostPrice = rebateInventoryAmount.divide(balanceQuantity, 2, RoundingMode.HALF_UP);
-						item.setRebatePrice(rebateInventoryCostPrice);
-					}
 					item.setBizType(order.getBsType());
 					item.setBillNo(order.getOrdNo());
 					if (item.getId() == null) {
@@ -4052,36 +4032,60 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 						throw new RuntimeException("商品数据异常");
 					}
 					item.setBrandName(goodsDesc.getBrandName());
-					//计算成本
-					if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {//本地取库存账成本价
-						goodsName.append(goodsDesc.getCname()).append(",");
-						retrieval.append(goodsDesc.getCnameInt()).append(",");
-						item.setCostprie(item.getGoodsNum().multiply(inventoryCostPrice));
-						item.setCostpriePrice(inventoryCostPrice);
-						item.setRebateCostprie(item.getGoodsNum().multiply(rebateInventoryCostPrice));
-					} else {//共享仓取共享上架的共享成本
-						LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-						lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-							.eq(PjProductLaunch::getIsDeleted, 0)
-							.eq(PjProductLaunch::getGoodsId, item.getGoodsId())
-							.eq(PjProductLaunch::getBillType, "1")
-							.eq(PjProductLaunch::getUpAndDownShelves, "1")
-							.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
-							.eq(PjProductLaunch::getSourceCompanyId, order.getSharedCompanyId());
-						PjProductLaunch productLaunch = productLaunchService.getOne(lambdaQueryWrapper);
-						if (ObjectUtils.isNotNull(productLaunch)) {
-							item.setCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
-							item.setCostpriePrice(productLaunch.getShareCost());
-							item.setRebateCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
+					if (!"JF".equals(order.getBsType())) {
+						if (!pjStockDescList.isEmpty()) {
+							balanceQuantity = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull)
+								.reduce(BigDecimal.ZERO, BigDecimal::add);
+							inventoryAmount = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getInventoryAmount).filter(Objects::nonNull)
+								.reduce(BigDecimal.ZERO, BigDecimal::add);
+							rebateInventoryAmount = pjStockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getRebateInventoryAmount).filter(Objects::nonNull)
+								.reduce(BigDecimal.ZERO, BigDecimal::add);
+						}
+						BigDecimal inventoryCostPrice = new BigDecimal("0.00");
+						BigDecimal rebateInventoryCostPrice = new BigDecimal("0.00");
+						if (balanceQuantity.compareTo(new BigDecimal("0.00")) == 0 ||
+							inventoryAmount.compareTo(new BigDecimal("0.00")) == 0) {
+							inventoryCostPrice = new BigDecimal("0.00");
+						} else {
+							inventoryCostPrice = inventoryAmount.divide(balanceQuantity, 2, RoundingMode.HALF_UP);
+						}
+						if (balanceQuantity.compareTo(new BigDecimal("0.00")) == 0 ||
+							rebateInventoryAmount.compareTo(new BigDecimal("0.00")) == 0) {
+							rebateInventoryCostPrice = new BigDecimal("0.00");
 						} else {
-							throw new RuntimeException("请维护共享商品成本价格");
+							rebateInventoryCostPrice = rebateInventoryAmount.divide(balanceQuantity, 2, RoundingMode.HALF_UP);
+							item.setRebatePrice(rebateInventoryCostPrice);
 						}
+						//计算成本
+						if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {//本地取库存账成本价
+							goodsName.append(goodsDesc.getCname()).append(",");
+							retrieval.append(goodsDesc.getCnameInt()).append(",");
+							item.setCostprie(item.getGoodsNum().multiply(inventoryCostPrice));
+							item.setCostpriePrice(inventoryCostPrice);
+							item.setRebateCostprie(item.getGoodsNum().multiply(rebateInventoryCostPrice));
+						} else {//共享仓取共享上架的共享成本
+							LambdaQueryWrapper<PjProductLaunch> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+							lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+								.eq(PjProductLaunch::getIsDeleted, 0)
+								.eq(PjProductLaunch::getGoodsId, item.getGoodsId())
+								.eq(PjProductLaunch::getBillType, "1")
+								.eq(PjProductLaunch::getUpAndDownShelves, "1")
+								.eq(PjProductLaunch::getSalesCompanyId, order.getSalesCompanyId())
+								.eq(PjProductLaunch::getSourceCompanyId, order.getSharedCompanyId());
+							PjProductLaunch productLaunch = productLaunchService.getOne(lambdaQueryWrapper);
+							if (ObjectUtils.isNotNull(productLaunch)) {
+								item.setCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
+								item.setCostpriePrice(productLaunch.getShareCost());
+								item.setRebateCostprie(item.getGoodsNum().multiply(productLaunch.getShareCost()));
+							} else {
+								throw new RuntimeException("请维护共享商品成本价格");
+							}
+						}
+						//计算毛利
+						item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
+						item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
 					}
-					//计算毛利
-					item.setGrossProfit(item.getSubTotalMoney().subtract(item.getCostprie()));
-					item.setRebateProfit(item.getSubTotalMoney().subtract(item.getRebateCostprie()));
 					orderItemsService.saveOrUpdate(item);
-
 				}
 				if (goodsName.length() > 0) {
 					order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
@@ -4104,32 +4108,32 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				totalMoney = order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
 					return x.add(y.getGoodsNum().multiply(y.getPrice()));
 				}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
-
 				order.setSalesAmount(totalMoney);
 				order.setTotalMoney(totalMoney);
-
-				if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {//只有一条轮胎加5元运费
-					String freight = sysClient.getParamService("freight");
-					if (ObjectUtils.isNotNull(freight)) {
-						try {
-							BigDecimal freightAmount = new BigDecimal(freight);
-							order.setTotalMoney(totalMoney.add(freightAmount));
-							order.setFreight(freightAmount);
-						} catch (Exception ignored) {
-							order.setFreight(new BigDecimal(0));
+				if (!"JF".equals(order.getBsType())) {
+					if (order.getGoodsTotalNum().compareTo(new BigDecimal(1)) == 0) {//只有一条轮胎加5元运费
+						String freight = sysClient.getParamService("freight");
+						if (ObjectUtils.isNotNull(freight)) {
+							try {
+								BigDecimal freightAmount = new BigDecimal(freight);
+								order.setTotalMoney(totalMoney.add(freightAmount));
+								order.setFreight(freightAmount);
+							} catch (Exception ignored) {
+								order.setFreight(new BigDecimal(0));
+							}
 						}
+					} else {
+						order.setFreight(new BigDecimal(0));
 					}
+					//毛利
+					order.setGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					//成本
+					order.setCost(order.getOrderItemsList().stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					order.setRebateGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					//成本
+					order.setRebateCost(order.getOrderItemsList().stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 
-				} else {
-					order.setFreight(new BigDecimal(0));
 				}
-				//毛利
-				order.setGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getGrossProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				//成本
-				order.setCost(order.getOrderItemsList().stream().map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				order.setRebateGrossProfit(order.getOrderItemsList().stream().map(PjOrderItems::getRebateProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-				//成本
-				order.setRebateCost(order.getOrderItemsList().stream().map(PjOrderItems::getRebateCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			} else {
 				order.setNumberRows(0);//行数
 				//总数量
@@ -4433,9 +4437,136 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 			}
 			order.setActualPaymentStatus(3);
 			order.setPaymentAmountTl(order.getTotalMoney());
+		}else if (order.getBsType().equals(OrderTypeEnum.POINTS.getType())) {//积分
+			if (order.getId() == null) {
+				if (ObjectUtils.isNull(order.getBillType())) {
+					if (ObjectUtils.isNotNull(order.getStorageId())) {
+						order.setBillType(0);
+						//仓库名称
+						order.setStorageName(storageDescMapper.selectById(order.getStorageId()).getCname());
+					} else {
+						order.setBillType(1);
+					}
+				}
+
+				order.setOrdNo(billNo);
+				order.setSrcOrdNo(billNo);
+				order.setCreateTime(new Date());
+				order.setCreateUser(AuthUtil.getUserId());
+				order.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				order.setTenantId(AuthUtil.getTenantId());
+				order.setStatus(OrderTypeEnum.XSLR.getType());
+				order.setBusinessSource(OrderTypeEnum.WEB.getType());
+				order.setActualPaymentStatus(1);
+
+				//根据客户账期计算应结日期
+				if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod()) && ObjectUtils.isNotNull(order.getBusinesDate())) {
+					Date now = order.getBusinesDate();
+					long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
+					Date afterSevenDays = new Date(now.getTime() + sevenDays);
+					order.setDueDate(afterSevenDays);
+				} else {
+					order.setDueDate(new Date());
+				}
+				baseMapper.insert(order);
+			} else {
+				PjOrder orderVersion = baseMapper.selectById(order.getId());
+				if (orderVersion != null && !orderVersion.getVersion().equals(order.getVersion())) {
+					throw new RuntimeException("订单数据已被修改,请返回列表重新操作!");
+				}
+				order.setVersion(order.getVersion() + 1);
+				order.setUpdateUser(AuthUtil.getUserId());
+				order.setUpdateTime(new Date());
+				baseMapper.updateById(order);
+			}
+
+			// 保存订单明细
+			if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
+				//所属公司
+				R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
+				if (ObjectUtil.isNotEmpty(dept)) {
+					order.setSalesCompanyId(dept.getData().getId());
+					order.setSalesCompanyName(dept.getData().getFullName());
+					if (ObjectUtils.isNotNull(order.getBillType()) && 1 != order.getBillType()) {
+						order.setSharedCompanyId(dept.getData().getId());
+						order.setSharedCompanyName(dept.getData().getFullName());
+					} else {
+						order.setSharedCompanyId(order.getSharedCompanyId());
+						order.setSharedCompanyName(order.getSharedCompanyName());
+					}
+				} else {
+					throw new SecurityException("未维护所属公司");
+				}
+				StringBuilder goodsName = new StringBuilder();
+				StringBuilder retrieval = new StringBuilder();
+				List<Long> goodsId = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+				List<String> goodsNames = order.getOrderItemsList().stream().map(PjOrderItems::getGoodsName).distinct().collect(Collectors.toList());
+				for (PjOrderItems item : order.getOrderItemsList()) {
+					item.setBillKey(item.getGoodsId() + item.getDot());
+				}
+				List<PjOrderItems> reducelList = order.getOrderItemsList().stream().filter(distinctByKey(PjOrderItems::getBillKey)).collect(Collectors.toList());
+				if (reducelList.size() != order.getOrderItemsList().size()) {
+					throw new RuntimeException("明细数据存在重复商品,请先处理后再保存");
+				}
+				if (goodsId.size() != goodsNames.size()) {
+					throw new RuntimeException("明细数据存在改名并重名商品,请联系管理员处理");
+				}
+				for (PjOrderItems item : order.getOrderItemsList()) {
+					item.setBizType(order.getBsType());
+					item.setBillNo(order.getOrdNo());
+					if (item.getId() == null) {
+						item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+						item.setCreateTime(new Date());
+						item.setCreateUser(AuthUtil.getUserId());
+						item.setPid(order.getId());
+						item.setTenantId(AuthUtil.getTenantId());
+					} else {
+						item.setUpdateTime(new Date());
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setPid(order.getId());
+					}
+					//计算小计
+					item.setSubTotalMoney(item.getGoodsNum().multiply(item.getPrice()));
+					//获得商品
+					PjGoodsDesc goodsDesc = goodsDescMapper.selectById(item.getGoodsId());
+					if (ObjectUtil.isEmpty(goodsDesc)) {
+						throw new RuntimeException("商品数据异常");
+					}
+					item.setBrandName(goodsDesc.getBrandName());
+				}
+				orderItemsService.saveOrUpdateBatch(order.getOrderItemsList());
+				if (goodsName.length() > 0) {
+					order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
+				}
+				if (retrieval.length() > 0) {
+					order.setShortcutJoin(retrieval.substring(0, retrieval.length() - 1));
+				}
+				BigDecimal totalMoney = BigDecimal.ZERO;
+				order.setNumberRows(order.getOrderItemsList().size());//行数
+				//总数量
+				order.setGoodsTotalNum(order.getOrderItemsList().stream().map(PjOrderItems::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				if (ObjectUtils.isNull(order.getStatus()) || "录入".equals(order.getStatus())) {
+					order.setPrimaryGoodsTotalNum(order.getGoodsTotalNum());
+				}
+				//总已发数量
+				order.setGoodsTotalShipNum(order.getOrderItemsList().stream().map(PjOrderItems::getSendNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//实际金额
+				order.setGoodsTotalShipAmount(order.getOrderItemsList().stream().map(PjOrderItems::getGoodsTotalShipAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				//总金额
+				totalMoney = order.getOrderItemsList().stream().reduce(BigDecimal.ZERO, (x, y) -> {
+					return x.add(y.getGoodsNum().multiply(y.getPrice()));
+				}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
+				order.setSalesAmount(totalMoney);
+				order.setTotalMoney(totalMoney);
+			} else {
+				order.setNumberRows(0);//行数
+				//总数量
+				order.setGoodsTotalNum(new BigDecimal("0"));
+				order.setSalesAmount(new BigDecimal("0.00"));
+				order.setTotalMoney(new BigDecimal("0.00"));
+			}
 		}
 		baseMapper.updateById(order);
-
 		return R.data(order);
 	}
 

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

@@ -110,6 +110,7 @@ public class ProductLaunchController extends BladeController {
 		lambdaQueryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
 			.eq(PjProductLaunch::getIsDeleted, 0)
 			.eq(ObjectUtils.isNotNull(productLaunch.getBrandId()), PjProductLaunch::getBrandId, productLaunch.getBrandId())
+			.eq(ObjectUtils.isNotNull(productLaunch.getWhetherIntegral()), PjProductLaunch::getWhetherIntegral, productLaunch.getWhetherIntegral())
 			.like(ObjectUtils.isNotNull(productLaunch.getBrandItem()), PjProductLaunch::getBrandItem, productLaunch.getBrandItem())
 			.eq(ObjectUtils.isNotNull(productLaunch.getBillType()), PjProductLaunch::getBillType, productLaunch.getBillType())
 		;
@@ -171,7 +172,7 @@ public class ProductLaunchController extends BladeController {
 		} else {
 			lambdaQueryWrapper.apply(ObjectUtil.isNotEmpty(productLaunch.getSharedCompany()), "find_in_set('" + productLaunch.getSharedCompany() + "',shared_company)");//共享公司
 		}
-		if ("1".equals(productLaunch.getWhetherIntegral())) {
+		/*if ("1".equals(productLaunch.getWhetherIntegral())) {
 			List<PjGoodsDesc> pjGoodsDescList = goodsDescService.list(new LambdaQueryWrapper<PjGoodsDesc>()
 				.eq(PjGoodsDesc::getWhetherIntegral, "1")
 				.eq(PjGoodsDesc::getIsDeleted, 0)
@@ -180,7 +181,7 @@ public class ProductLaunchController extends BladeController {
 				List<Long> goodsId = pjGoodsDescList.stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
 				lambdaQueryWrapper.in(PjProductLaunch::getGoodsId, goodsId);
 			}
-		}
+		}*/
 		IPage<PjProductLaunch> pages = productLaunchService.page(Condition.getPage(query), lambdaQueryWrapper);
 		String deptId = pages.getRecords().stream().map(PjProductLaunch::getSharedCompany).filter(ObjectUtils::isNotNull).distinct().collect(Collectors.joining(","));
 		R<List<Dept>> deptList = iSysClient.selectByDeptIds(deptId);
@@ -356,12 +357,12 @@ public class ProductLaunchController extends BladeController {
 	@PostMapping("/import-productLaunch")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "导入产品上架信息", notes = "传入excel")
-	public R importProductLaunch(MultipartFile file) {
+	public R importProductLaunch(MultipartFile file, String whetherIntegral) {
 		List<ProductLaunchImportExcel> excelList = ExcelUtil.read(file, ProductLaunchImportExcel.class);
 		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return productLaunchService.importProductLaunch(excelList, false);
+		return productLaunchService.importProductLaunch(excelList, false,whetherIntegral);
 	}
 
 	/**
@@ -370,12 +371,12 @@ public class ProductLaunchController extends BladeController {
 	@PostMapping("/import-productLaunch-code")
 	@ApiOperationSupport(order = 9)
 	@ApiOperation(value = "导入产品上架信息", notes = "传入excel")
-	public R importProductLaunchCode(MultipartFile file) {
+	public R importProductLaunchCode(MultipartFile file, String whetherIntegral) {
 		List<ProductLaunchImportCodeExcel> excelList = ExcelUtil.read(file, ProductLaunchImportCodeExcel.class);
 		if (CollectionUtils.isEmpty(excelList)) {
 			throw new SecurityException("数据不能为空");
 		}
-		return productLaunchService.importProductLaunchCode(excelList, false);
+		return productLaunchService.importProductLaunchCode(excelList, false,whetherIntegral);
 	}
 
 	/**
@@ -392,6 +393,19 @@ public class ProductLaunchController extends BladeController {
 	}
 
 	/**
+	 * 导入产品上架-积分
+	 */
+	@PostMapping("/productLaunchPoints")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导入产品上架信息", notes = "传入list")
+	public R productLaunchPoints(@RequestBody List<PjProductLaunch> list) {
+		if (CollectionUtils.isEmpty(list)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return productLaunchService.productLaunchPoints(list);
+	}
+
+	/**
 	 * 导出模板
 	 */
 	@GetMapping("/export-productLaunch")
@@ -450,13 +464,7 @@ public class ProductLaunchController extends BladeController {
 		List<PjGoodsDesc> pjGoodsDescList = goodsDescService.list(new LambdaQueryWrapper<PjGoodsDesc>()
 			.eq(PjGoodsDesc::getIsDeleted, 0)
 			.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId()));
-		if ("1".equals(productLaunch.getWhetherIntegral())) {
-			List<PjGoodsDesc> pjGoodsDescs = pjGoodsDescList.stream().filter(e -> e.getWhetherIntegral().equals("1")).collect(Collectors.toList());
-			if (!pjGoodsDescs.isEmpty()) {
-				List<Long> goodsId = pjGoodsDescs.stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
-				lambdaQueryWrapper.in(PjProductLaunch::getGoodsId, goodsId);
-			}
-		}
+		lambdaQueryWrapper.in(ObjectUtils.isNotNull(productLaunch.getWhetherIntegral()), PjProductLaunch::getWhetherIntegral, productLaunch.getWhetherIntegral());
 		List<PjProductLaunch> pjProductLaunchList = productLaunchService.list(lambdaQueryWrapper);
 		String deptId = pjProductLaunchList.stream().map(PjProductLaunch::getSharedCompany).filter(ObjectUtils::isNotNull).distinct().collect(Collectors.joining(","));
 		R<List<Dept>> deptList = iSysClient.selectByDeptIds(deptId);
@@ -483,12 +491,12 @@ public class ProductLaunchController extends BladeController {
 			if (!stockDescList.isEmpty()) {
 				List<PjStockDesc> stockDescs = stockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
 				for (PjStockDesc desc : stockDescs) {
-					if (ObjectUtils.isNotNull(item.getRebatePrice())){
+					if (ObjectUtils.isNotNull(item.getRebatePrice())) {
 						item.setRebatePrice(item.getRebatePrice() + desc.getRebatePrice() + ",");
-					}else{
+					} else {
 						item.setRebatePrice(desc.getRebatePrice() + ",");
 					}
-					item.setRebatePrice(item.getRebatePrice().substring(0,item.getRebatePrice().length()-1));
+					item.setRebatePrice(item.getRebatePrice().substring(0, item.getRebatePrice().length() - 1));
 				}
 			}
 		}
@@ -580,12 +588,12 @@ public class ProductLaunchController extends BladeController {
 					String cname = productLaunch.getCname().substring(chineseWords[0].length());
 					if (ObjectUtils.isNotNull(cname)) {
 						lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, cname)
-								.or().like(PjProductLaunch::getCnameInt, cname)
-								.or().like(PjProductLaunch::getBrandItem, cname)
-								.or().like(PjProductLaunch::getSpecificationAndModel, cname)
+							.or().like(PjProductLaunch::getCnameInt, cname)
+							.or().like(PjProductLaunch::getBrandItem, cname)
+							.or().like(PjProductLaunch::getSpecificationAndModel, cname)
 						);
 						lambdaQueryWrapper.like(PjProductLaunch::getBrandName, chineseWords[0]);
-					}else{
+					} else {
 						lambdaQueryWrapper.and(i -> i.like(PjProductLaunch::getCname, productLaunch.getCname())
 							.or().like(PjProductLaunch::getCnameInt, productLaunch.getCname())
 							.or().like(PjProductLaunch::getBrandItem, productLaunch.getCname())
@@ -604,14 +612,7 @@ public class ProductLaunchController extends BladeController {
 		}
 		List<PjStockDesc> stockDescList = new ArrayList<>();
 		if ("1".equals(productLaunch.getWhetherIntegral())) {
-			List<PjGoodsDesc> pjGoodsDescList = goodsDescService.list(new LambdaQueryWrapper<PjGoodsDesc>()
-				.eq(PjGoodsDesc::getWhetherIntegral, "1")
-				.eq(PjGoodsDesc::getIsDeleted, 0)
-				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId()));
-			if (!pjGoodsDescList.isEmpty()) {
-				List<Long> goodsId = pjGoodsDescList.stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
-				lambdaQueryWrapper.in(PjProductLaunch::getGoodsId, goodsId);
-			}
+			lambdaQueryWrapper.eq(PjProductLaunch::getWhetherIntegral, productLaunch.getWhetherIntegral());
 		} else {
 			String status = iSysClient.getParamService("whether.branch.management");
 			if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
@@ -652,8 +653,8 @@ public class ProductLaunchController extends BladeController {
 					.in("pid", brandIds).eq("is_deleted", 0));
 			}
 			for (PjProductLaunch item : pages.getRecords()) {
-				if (!stockDescList.isEmpty()){
-					item.setInventory(stockDescList.stream().filter(e-> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getBalanceQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
+				if (!stockDescList.isEmpty()) {
+					item.setInventory(stockDescList.stream().filter(e -> e.getGoodsId().equals(item.getGoodsId())).map(PjStockDesc::getBalanceQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
 				}
 				if (!pjProductLaunchFilesList.isEmpty()) {
 					List<PjProductLaunchFiles> list = pjProductLaunchFilesList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
@@ -786,6 +787,7 @@ public class ProductLaunchController extends BladeController {
 			.eq(PjProductLaunch::getIsDeleted, 0)
 			.eq(PjProductLaunch::getUpAndDownShelves, 1)
 			.eq(PjProductLaunch::getSalesCompanyId, AuthUtil.getDeptId())//公司
+			.eq(ObjectUtils.isNotNull(productLaunch.getWhetherIntegral()), PjProductLaunch::getWhetherIntegral, productLaunch.getWhetherIntegral())
 			.ne(PjProductLaunch::getWhetherShare, 1)
 			.orderByAsc(PjProductLaunch::getBillType);
 

+ 4 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/productLaunch/service/IProductLaunchService.java

@@ -71,7 +71,7 @@ public interface IProductLaunchService extends IService<PjProductLaunch> {
 	 * @param
 	 * @return
 	 */
-	R importProductLaunch(List<ProductLaunchImportExcel> data, Boolean isCovered);
+	R importProductLaunch(List<ProductLaunchImportExcel> data, Boolean isCovered, String whetherIntegral);
 
 	/**
 	 * 批量操作上下架
@@ -109,7 +109,9 @@ public interface IProductLaunchService extends IService<PjProductLaunch> {
 
     R updateBatchById(List<PjProductLaunch> productLaunch);
 
-	R importProductLaunchCode(List<ProductLaunchImportCodeExcel> excelList, boolean b);
+	R importProductLaunchCode(List<ProductLaunchImportCodeExcel> excelList, boolean b, String whetherIntegral);
 
     List<PjShipStockDetails> productLaunchDetails(PjShipStockDetails pjShipStockDetails);
+
+	R productLaunchPoints(List<PjProductLaunch> list);
 }

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

@@ -243,8 +243,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-
-	public R importProductLaunch(List<ProductLaunchImportExcel> data, Boolean isCovered) {
+	public R importProductLaunch(List<ProductLaunchImportExcel> data, Boolean isCovered, String whetherIntegral) {
 		if (CollectionUtils.isEmpty(data)) {
 			throw new SecurityException("导入数据不能为空");
 		}
@@ -252,25 +251,29 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		List<PjProductLaunch> launchList = new ArrayList<>();
 		List<PjProductLaunch> pjProductLaunchList1 = new ArrayList<>();
 		List<String> goodsNames = data.stream().map(ProductLaunchImportExcel::getCname).collect(Collectors.toList());
-		List<PjGoodsDesc> pjGoodsDescsList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
+		LambdaQueryWrapper<PjGoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<PjGoodsDesc>()
 			.eq(PjGoodsDesc::getIsDeleted, 0)
 			.eq(PjGoodsDesc::getEnableOrNot, 1)
-			.in(PjGoodsDesc::getCname, goodsNames));
+			.in(PjGoodsDesc::getCname, goodsNames);
+		if ("1".equals(whetherIntegral)) {
+			goodsDescLambdaQueryWrapper.eq(PjGoodsDesc::getWhetherIntegral, whetherIntegral);
+		}
+		List<PjGoodsDesc> pjGoodsDescsList = goodsDescMapper.selectList(goodsDescLambdaQueryWrapper);
 		List<PjGoodsFiles> pjGoodsFilesList = new ArrayList<>();
 		List<PjStockDesc> pjStockDescList = new ArrayList<>();
 		if (!pjGoodsDescsList.isEmpty()) {
 			List<Long> goodsId = pjGoodsDescsList.stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
 			pjGoodsFilesList = goodsFilesMapper.selectList(new LambdaQueryWrapper<PjGoodsFiles>()
 				.in(PjGoodsFiles::getPid, goodsId));
-			//.eq(PjGoodsFiles::getMainImage, 0)
-			//获得库存
-			LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-			lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
-				.eq(PjStockDesc::getIsDeleted, 0)
-				.eq(PjStockDesc::getSalesCompanyId, AuthUtil.getDeptId())
-				.in(PjStockDesc::getGoodsId, goodsId);
-
-			pjStockDescList = stockDescService.list(lambdaQueryWrapper);
+			if (!"1".equals(whetherIntegral)) {
+				//获得库存
+				LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+					.eq(PjStockDesc::getIsDeleted, 0)
+					.eq(PjStockDesc::getSalesCompanyId, AuthUtil.getDeptId())
+					.in(PjStockDesc::getGoodsId, goodsId);
+				pjStockDescList = stockDescService.list(lambdaQueryWrapper);
+			}
 		}
 		String status = iSysClient.getParamServiceNew("zero.inventory.grounding");
 		List<Dept> deptList = new ArrayList<>();
@@ -280,20 +283,15 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		}
 		LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-			.eq(PjProductLaunch::getIsDeleted, 0);
+			.eq(PjProductLaunch::getIsDeleted, 0)
+			.eq(PjProductLaunch::getWhetherIntegral, 0);
 		List<PjProductLaunch> productLaunchList = baseMapper.selectList(queryWrapper);
 		for (ProductLaunchImportExcel e : data) {
 			PjProductLaunch productLaunch = new PjProductLaunch();
 			BeanUtils.copyProperties(e, productLaunch);
-
 			//获得商品信息
 			PjGoodsDesc pjGoodsDesc = pjGoodsDescsList.stream()
 				.filter(i -> i.getCname().equals(productLaunch.getCname())).findFirst().orElse(null);
-		/*	PjGoodsDesc pjGoodsDesc = goodsDescMapper.selectOne(new LambdaQueryWrapper<PjGoodsDesc>()
-				.eq(PjGoodsDesc::getIsDeleted, 0)
-				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
-				.eq(PjGoodsDesc::getCname, e.getCname()));
-*/
 			if (pjGoodsDesc != null) {
 				//商品id
 				productLaunch.setGoodsId(pjGoodsDesc.getId());
@@ -307,27 +305,31 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 				productLaunch.setCnameInt(pjGoodsDesc.getCnameInt());
 				productLaunch.setSpecificationAndModel(pjGoodsDesc.getSpecificationAndModel());
 				productLaunch.setDetailsText(pjGoodsDesc.getGoodsDescription());
-				List<PjStockDesc> stockDescList = pjStockDescList.stream().filter(i -> i.getGoodsId().equals(pjGoodsDesc.getId())).collect(Collectors.toList());
-				if ("1".equals(status)) {
-					if (!stockDescList.isEmpty()) {
-						productLaunch.setInventory(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				if (!"1".equals(whetherIntegral)) {
+					List<PjStockDesc> stockDescList = pjStockDescList.stream().filter(i -> i.getGoodsId().equals(pjGoodsDesc.getId())).collect(Collectors.toList());
+					if ("1".equals(status)) {
+						if (!stockDescList.isEmpty()) {
+							productLaunch.setInventory(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						} else {
+							productLaunch.setInventory(BigDecimal.ZERO);
+						}
 					} else {
-						productLaunch.setInventory(BigDecimal.ZERO);
-					}
-				} else {
-					if (!stockDescList.isEmpty()) {
-						if (new BigDecimal("0.00").compareTo(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)) == 0) {
+						if (!stockDescList.isEmpty()) {
+							if (new BigDecimal("0.00").compareTo(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)) == 0) {
+								throw new RuntimeException("商品" + e.getCname() + "库存为零,请处理后重新导入");
+							}
+							productLaunch.setInventory(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						} else {
 							throw new RuntimeException("商品" + e.getCname() + "库存为零,请处理后重新导入");
 						}
-						productLaunch.setInventory(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-					} else {
-						throw new RuntimeException("商品" + e.getCname() + "库存为零,请处理后重新导入");
 					}
+				} else {
+					productLaunch.setInventory(e.getInventory());
+					productLaunch.setWhetherIntegral(whetherIntegral);
 				}
 			} else {
 				throw new RuntimeException("商品" + e.getCname() + "名称错误或商品不存在");
 			}
-
 			//获得所属公司
 			if (StringUtil.isNotBlank(e.getSalesCompanyName())) {
 				Dept dept = deptList.stream().filter(item -> item.getFullName().equals(productLaunch.getSalesCompanyName()))
@@ -364,72 +366,74 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 //				baseMapper.updateById(productLaunch);
 			}
 			//获得共享公司
-			if (StringUtil.isNotBlank(e.getSharedCompany())) {
-				List<Dept> dept = deptList.stream().filter(item -> productLaunch.getSharedCompany().contains(item.getId() + "")).collect(Collectors.toList());
-				productLaunch.setSharedCompany("");
-				for (Dept item : dept) {
-					productLaunch.setSharedCompany(productLaunch.getSharedCompany() + "," + item.getId());
-					PjProductLaunch launch = new PjProductLaunch();
-					BeanUtils.copyProperties(productLaunch, launch);
-					PjProductLaunch selOne = productLaunchList.stream().filter(i -> i.getBillType().equals(1) &&
-						i.getGoodsId().equals(productLaunch.getGoodsId()) && i.getSalesCompanyId().equals(item.getId()) &&
-						i.getSourceCompanyId().equals(productLaunch.getSalesCompanyId())).findFirst().orElse(null);
-					if (ObjectUtil.isEmpty(selOne)) {
-						launch.setId(null);
-						launch.setBillType(1);
-						launch.setWhetherShare(0);
-						launch.setUpAndDownShelves(0);
-						launch.setCreateUser(AuthUtil.getUserId());
-						launch.setCreateTime(new Date());
-						launch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-						launch.setSourceId(productLaunch.getId());
-						launch.setSourceCompanyId(productLaunch.getSalesCompanyId());
-						launch.setSourceCompanyName(productLaunch.getSalesCompanyName());
-						launch.setTenantId(AuthUtil.getTenantId());
-						launch.setSharedCompany(null);
-						launch.setSalesCompanyId(item.getId());
-						launch.setSalesCompanyName(item.getFullName());
-						launch.setVersion(0);
+			if (!"1".equals(whetherIntegral)) {
+				if (StringUtil.isNotBlank(e.getSharedCompany())) {
+					List<Dept> dept = deptList.stream().filter(item -> productLaunch.getSharedCompany().contains(item.getId() + "")).collect(Collectors.toList());
+					productLaunch.setSharedCompany("");
+					for (Dept item : dept) {
+						productLaunch.setSharedCompany(productLaunch.getSharedCompany() + "," + item.getId());
+						PjProductLaunch launch = new PjProductLaunch();
+						BeanUtils.copyProperties(productLaunch, launch);
+						PjProductLaunch selOne = productLaunchList.stream().filter(i -> i.getBillType().equals(1) &&
+							i.getGoodsId().equals(productLaunch.getGoodsId()) && i.getSalesCompanyId().equals(item.getId()) &&
+							i.getSourceCompanyId().equals(productLaunch.getSalesCompanyId())).findFirst().orElse(null);
+						if (ObjectUtil.isEmpty(selOne)) {
+							launch.setId(null);
+							launch.setBillType(1);
+							launch.setWhetherShare(0);
+							launch.setUpAndDownShelves(0);
+							launch.setCreateUser(AuthUtil.getUserId());
+							launch.setCreateTime(new Date());
+							launch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+							launch.setSourceId(productLaunch.getId());
+							launch.setSourceCompanyId(productLaunch.getSalesCompanyId());
+							launch.setSourceCompanyName(productLaunch.getSalesCompanyName());
+							launch.setTenantId(AuthUtil.getTenantId());
+							launch.setSharedCompany(null);
+							launch.setSalesCompanyId(item.getId());
+							launch.setSalesCompanyName(item.getFullName());
+							launch.setVersion(0);
 //						baseMapper.insert(launch);
-						launchList.add(launch);
-					} else {
-						selOne.setInventory(productLaunch.getInventory());
-						selOne.setPriceOne(productLaunch.getPriceOne());
-						selOne.setPriceTwo(productLaunch.getPriceTwo());
-						selOne.setPriceThree(productLaunch.getPriceThree());
-						selOne.setPriceFour(productLaunch.getPriceFour());
-						selOne.setBrandItem(productLaunch.getBrandItem());
-						selOne.setPlaceProduction(productLaunch.getPlaceProduction());
-						selOne.setExplosionProof(productLaunch.getExplosionProof());
-						selOne.setOriginalFactory(productLaunch.getOriginalFactory());
-						selOne.setSelfRecovery(productLaunch.getSelfRecovery());
-						selOne.setUpdateTime(new Date());
-						selOne.setUpdateUser(AuthUtil.getUserId());
-						selOne.setWhetherShare(0);
-						selOne.setUpAndDownShelves(0);
-						selOne.setSharedCompany(null);
-						selOne.setVersion(selOne.getVersion());
+							launchList.add(launch);
+						} else {
+							selOne.setInventory(productLaunch.getInventory());
+							selOne.setPriceOne(productLaunch.getPriceOne());
+							selOne.setPriceTwo(productLaunch.getPriceTwo());
+							selOne.setPriceThree(productLaunch.getPriceThree());
+							selOne.setPriceFour(productLaunch.getPriceFour());
+							selOne.setBrandItem(productLaunch.getBrandItem());
+							selOne.setPlaceProduction(productLaunch.getPlaceProduction());
+							selOne.setExplosionProof(productLaunch.getExplosionProof());
+							selOne.setOriginalFactory(productLaunch.getOriginalFactory());
+							selOne.setSelfRecovery(productLaunch.getSelfRecovery());
+							selOne.setUpdateTime(new Date());
+							selOne.setUpdateUser(AuthUtil.getUserId());
+							selOne.setWhetherShare(0);
+							selOne.setUpAndDownShelves(0);
+							selOne.setSharedCompany(null);
+							selOne.setVersion(selOne.getVersion());
 //						baseMapper.updateById(selOne);
-						launchList.add(selOne);
+							launchList.add(selOne);
+						}
 					}
-				}
-				if (ObjectUtils.isNotNull(productLaunch.getSharedCompany()) && productLaunch.getSharedCompany().length() > 1) {
-					productLaunch.setSharedCompany(productLaunch.getSharedCompany().substring(1));
-				}
-				List<PjProductLaunch> list = productLaunchList.stream().filter(item -> item.getBillType().equals(1) &&
-						item.getGoodsId().equals(productLaunch.getGoodsId()) && item.getSourceCompanyId().equals(productLaunch.getSalesCompanyId()))
-					.collect(Collectors.toList());
-				if (ObjectUtil.isNotEmpty(list)) {
-					list.forEach(i -> {
-						i.setWhetherShare(1);
-						i.setPriceOne(productLaunch.getPriceOne());
-						i.setPriceTwo(productLaunch.getPriceTwo());
-						i.setPriceThree(productLaunch.getPriceThree());
-						i.setPriceFour(productLaunch.getPriceFour());
-						i.setVersion(i.getVersion());
-						pjProductLaunchList1.add(i);
+					if (ObjectUtils.isNotNull(productLaunch.getSharedCompany()) && productLaunch.getSharedCompany().length() > 1) {
+						productLaunch.setSharedCompany(productLaunch.getSharedCompany().substring(1));
+					}
+					List<PjProductLaunch> list = productLaunchList.stream().filter(item -> item.getBillType().equals(1) &&
+							item.getGoodsId().equals(productLaunch.getGoodsId()) && item.getSourceCompanyId().equals(productLaunch.getSalesCompanyId()))
+						.collect(Collectors.toList());
+					if (ObjectUtil.isNotEmpty(list)) {
+						list.forEach(i -> {
+							i.setWhetherShare(1);
+							i.setPriceOne(productLaunch.getPriceOne());
+							i.setPriceTwo(productLaunch.getPriceTwo());
+							i.setPriceThree(productLaunch.getPriceThree());
+							i.setPriceFour(productLaunch.getPriceFour());
+							i.setVersion(i.getVersion());
+							pjProductLaunchList1.add(i);
 //						baseMapper.updateById(i);
-					});
+						});
+					}
 				}
 			}
 			pjProductLaunchList.add(productLaunch);
@@ -751,7 +755,6 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-
 	public R productLaunch(List<PjProductLaunch> list) {
 		List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
 		List<PjProductLaunch> launchList = new ArrayList<>();
@@ -785,7 +788,9 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		}
 		LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-			.eq(PjProductLaunch::getIsDeleted, 0);
+			.eq(PjProductLaunch::getIsDeleted, 0)
+			.eq(PjProductLaunch::getWhetherIntegral, 0)
+		;
 		List<PjProductLaunch> productLaunchList = baseMapper.selectList(queryWrapper);
 		for (PjProductLaunch productLaunch : list) {
 			//获得商品信息
@@ -972,8 +977,7 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-
-	public R importProductLaunchCode(List<ProductLaunchImportCodeExcel> data, boolean b) {
+	public R importProductLaunchCode(List<ProductLaunchImportCodeExcel> data, boolean b, String whetherIntegral) {
 		if (CollectionUtils.isEmpty(data)) {
 			throw new SecurityException("导入数据不能为空");
 		}
@@ -981,25 +985,29 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		List<PjProductLaunch> launchList = new ArrayList<>();
 		List<PjProductLaunch> pjProductLaunchList1 = new ArrayList<>();
 		List<String> goodsNames = data.stream().map(ProductLaunchImportCodeExcel::getCode).collect(Collectors.toList());
-		List<PjGoodsDesc> pjGoodsDescsList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
+		LambdaQueryWrapper<PjGoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<PjGoodsDesc>()
 			.eq(PjGoodsDesc::getIsDeleted, 0)
 			.eq(PjGoodsDesc::getEnableOrNot, 1)
-			.in(PjGoodsDesc::getCode, goodsNames));
+			.in(PjGoodsDesc::getCode, goodsNames);
+		if ("1".equals(whetherIntegral)) {
+			goodsDescLambdaQueryWrapper.eq(PjGoodsDesc::getWhetherIntegral, whetherIntegral);
+		}
+		List<PjGoodsDesc> pjGoodsDescsList = goodsDescMapper.selectList(goodsDescLambdaQueryWrapper);
 		List<PjGoodsFiles> pjGoodsFilesList = new ArrayList<>();
 		List<PjStockDesc> pjStockDescList = new ArrayList<>();
 		if (!pjGoodsDescsList.isEmpty()) {
 			List<Long> goodsId = pjGoodsDescsList.stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
 			pjGoodsFilesList = goodsFilesMapper.selectList(new LambdaQueryWrapper<PjGoodsFiles>()
 				.in(PjGoodsFiles::getPid, goodsId));
-			//.eq(PjGoodsFiles::getMainImage, 0)
 			//获得库存
-			LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-			lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
-				.eq(PjStockDesc::getIsDeleted, 0)
-				.eq(PjStockDesc::getSalesCompanyId, AuthUtil.getDeptId())
-				.in(PjStockDesc::getGoodsId, goodsId);
-
-			pjStockDescList = stockDescService.list(lambdaQueryWrapper);
+			if (!"1".equals(whetherIntegral)) {
+				LambdaQueryWrapper<PjStockDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(PjStockDesc::getTenantId, AuthUtil.getTenantId())
+					.eq(PjStockDesc::getIsDeleted, 0)
+					.eq(PjStockDesc::getSalesCompanyId, AuthUtil.getDeptId())
+					.in(PjStockDesc::getGoodsId, goodsId);
+				pjStockDescList = stockDescService.list(lambdaQueryWrapper);
+			}
 		}
 		String status = iSysClient.getParamServiceNew("zero.inventory.grounding");
 		List<Dept> deptList = new ArrayList<>();
@@ -1009,20 +1017,15 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		}
 		LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
-			.eq(PjProductLaunch::getIsDeleted, 0);
+			.eq(PjProductLaunch::getIsDeleted, 0)
+			.eq(PjProductLaunch::getWhetherIntegral, 0);
 		List<PjProductLaunch> productLaunchList = baseMapper.selectList(queryWrapper);
 		for (ProductLaunchImportCodeExcel e : data) {
 			PjProductLaunch productLaunch = new PjProductLaunch();
 			BeanUtils.copyProperties(e, productLaunch);
-
 			//获得商品信息
 			PjGoodsDesc pjGoodsDesc = pjGoodsDescsList.stream()
 				.filter(i -> i.getCode().equals(e.getCode())).findFirst().orElse(null);
-		/*	PjGoodsDesc pjGoodsDesc = goodsDescMapper.selectOne(new LambdaQueryWrapper<PjGoodsDesc>()
-				.eq(PjGoodsDesc::getIsDeleted, 0)
-				.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
-				.eq(PjGoodsDesc::getCname, e.getCname()));
-*/
 			if (pjGoodsDesc != null) {
 				//商品id
 				productLaunch.setGoodsId(pjGoodsDesc.getId());
@@ -1037,22 +1040,27 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 				productLaunch.setCnameInt(pjGoodsDesc.getCnameInt());
 				productLaunch.setSpecificationAndModel(pjGoodsDesc.getSpecificationAndModel());
 				productLaunch.setDetailsText(pjGoodsDesc.getGoodsDescription());
-				List<PjStockDesc> stockDescList = pjStockDescList.stream().filter(i -> i.getGoodsId().equals(pjGoodsDesc.getId())).collect(Collectors.toList());
-				if ("1".equals(status)) {
-					if (!stockDescList.isEmpty()) {
-						productLaunch.setInventory(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				if (!"1".equals(whetherIntegral)) {
+					List<PjStockDesc> stockDescList = pjStockDescList.stream().filter(i -> i.getGoodsId().equals(pjGoodsDesc.getId())).collect(Collectors.toList());
+					if ("1".equals(status)) {
+						if (!stockDescList.isEmpty()) {
+							productLaunch.setInventory(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						} else {
+							productLaunch.setInventory(BigDecimal.ZERO);
+						}
 					} else {
-						productLaunch.setInventory(BigDecimal.ZERO);
-					}
-				} else {
-					if (!stockDescList.isEmpty()) {
-						if (new BigDecimal("0.00").compareTo(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)) == 0) {
+						if (!stockDescList.isEmpty()) {
+							if (new BigDecimal("0.00").compareTo(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)) == 0) {
+								throw new RuntimeException("商品" + e.getCode() + "库存为零,请处理后重新导入");
+							}
+							productLaunch.setInventory(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+						} else {
 							throw new RuntimeException("商品" + e.getCode() + "库存为零,请处理后重新导入");
 						}
-						productLaunch.setInventory(stockDescList.stream().map(PjStockDesc::getBalanceQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-					} else {
-						throw new RuntimeException("商品" + e.getCode() + "库存为零,请处理后重新导入");
 					}
+				} else {
+					productLaunch.setInventory(e.getInventory());
+					productLaunch.setWhetherIntegral(whetherIntegral);
 				}
 			} else {
 				throw new RuntimeException("商品" + e.getCode() + "编码错误或商品不存在");
@@ -1094,72 +1102,74 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 //				baseMapper.updateById(productLaunch);
 			}
 			//获得共享公司
-			if (StringUtil.isNotBlank(e.getSharedCompany())) {
-				List<Dept> dept = deptList.stream().filter(item -> productLaunch.getSharedCompany().contains(item.getId() + "")).collect(Collectors.toList());
-				productLaunch.setSharedCompany("");
-				for (Dept item : dept) {
-					productLaunch.setSharedCompany(productLaunch.getSharedCompany() + "," + item.getId());
-					PjProductLaunch launch = new PjProductLaunch();
-					BeanUtils.copyProperties(productLaunch, launch);
-					PjProductLaunch selOne = productLaunchList.stream().filter(i -> i.getBillType().equals(1) &&
-						i.getGoodsId().equals(productLaunch.getGoodsId()) && i.getSalesCompanyId().equals(item.getId()) &&
-						i.getSourceCompanyId().equals(productLaunch.getSalesCompanyId())).findFirst().orElse(null);
-					if (ObjectUtil.isEmpty(selOne)) {
-						launch.setId(null);
-						launch.setBillType(1);
-						launch.setWhetherShare(0);
-						launch.setUpAndDownShelves(0);
-						launch.setCreateUser(AuthUtil.getUserId());
-						launch.setCreateTime(new Date());
-						launch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-						launch.setSourceId(productLaunch.getId());
-						launch.setSourceCompanyId(productLaunch.getSalesCompanyId());
-						launch.setSourceCompanyName(productLaunch.getSalesCompanyName());
-						launch.setTenantId(AuthUtil.getTenantId());
-						launch.setSharedCompany(null);
-						launch.setSalesCompanyId(item.getId());
-						launch.setSalesCompanyName(item.getFullName());
-						launch.setVersion(0);
+			if (!"1".equals(whetherIntegral)) {
+				if (StringUtil.isNotBlank(e.getSharedCompany())) {
+					List<Dept> dept = deptList.stream().filter(item -> productLaunch.getSharedCompany().contains(item.getId() + "")).collect(Collectors.toList());
+					productLaunch.setSharedCompany("");
+					for (Dept item : dept) {
+						productLaunch.setSharedCompany(productLaunch.getSharedCompany() + "," + item.getId());
+						PjProductLaunch launch = new PjProductLaunch();
+						BeanUtils.copyProperties(productLaunch, launch);
+						PjProductLaunch selOne = productLaunchList.stream().filter(i -> i.getBillType().equals(1) &&
+							i.getGoodsId().equals(productLaunch.getGoodsId()) && i.getSalesCompanyId().equals(item.getId()) &&
+							i.getSourceCompanyId().equals(productLaunch.getSalesCompanyId())).findFirst().orElse(null);
+						if (ObjectUtil.isEmpty(selOne)) {
+							launch.setId(null);
+							launch.setBillType(1);
+							launch.setWhetherShare(0);
+							launch.setUpAndDownShelves(0);
+							launch.setCreateUser(AuthUtil.getUserId());
+							launch.setCreateTime(new Date());
+							launch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+							launch.setSourceId(productLaunch.getId());
+							launch.setSourceCompanyId(productLaunch.getSalesCompanyId());
+							launch.setSourceCompanyName(productLaunch.getSalesCompanyName());
+							launch.setTenantId(AuthUtil.getTenantId());
+							launch.setSharedCompany(null);
+							launch.setSalesCompanyId(item.getId());
+							launch.setSalesCompanyName(item.getFullName());
+							launch.setVersion(0);
 //						baseMapper.insert(launch);
-						launchList.add(launch);
-					} else {
-						selOne.setInventory(productLaunch.getInventory());
-						selOne.setPriceOne(productLaunch.getPriceOne());
-						selOne.setPriceTwo(productLaunch.getPriceTwo());
-						selOne.setPriceThree(productLaunch.getPriceThree());
-						selOne.setPriceFour(productLaunch.getPriceFour());
-						selOne.setBrandItem(productLaunch.getBrandItem());
-						selOne.setPlaceProduction(productLaunch.getPlaceProduction());
-						selOne.setExplosionProof(productLaunch.getExplosionProof());
-						selOne.setOriginalFactory(productLaunch.getOriginalFactory());
-						selOne.setSelfRecovery(productLaunch.getSelfRecovery());
-						selOne.setUpdateTime(new Date());
-						selOne.setUpdateUser(AuthUtil.getUserId());
-						selOne.setWhetherShare(0);
-						selOne.setUpAndDownShelves(0);
-						selOne.setSharedCompany(null);
-						selOne.setVersion(selOne.getVersion());
+							launchList.add(launch);
+						} else {
+							selOne.setInventory(productLaunch.getInventory());
+							selOne.setPriceOne(productLaunch.getPriceOne());
+							selOne.setPriceTwo(productLaunch.getPriceTwo());
+							selOne.setPriceThree(productLaunch.getPriceThree());
+							selOne.setPriceFour(productLaunch.getPriceFour());
+							selOne.setBrandItem(productLaunch.getBrandItem());
+							selOne.setPlaceProduction(productLaunch.getPlaceProduction());
+							selOne.setExplosionProof(productLaunch.getExplosionProof());
+							selOne.setOriginalFactory(productLaunch.getOriginalFactory());
+							selOne.setSelfRecovery(productLaunch.getSelfRecovery());
+							selOne.setUpdateTime(new Date());
+							selOne.setUpdateUser(AuthUtil.getUserId());
+							selOne.setWhetherShare(0);
+							selOne.setUpAndDownShelves(0);
+							selOne.setSharedCompany(null);
+							selOne.setVersion(selOne.getVersion());
 //						baseMapper.updateById(selOne);
-						launchList.add(selOne);
+							launchList.add(selOne);
+						}
 					}
-				}
-				if (ObjectUtils.isNotNull(productLaunch.getSharedCompany()) && productLaunch.getSharedCompany().length() > 1) {
-					productLaunch.setSharedCompany(productLaunch.getSharedCompany().substring(1, productLaunch.getSharedCompany().length()));
-				}
-				List<PjProductLaunch> list = productLaunchList.stream().filter(item -> item.getBillType().equals(1) &&
-						item.getGoodsId().equals(productLaunch.getGoodsId()) && item.getSourceCompanyId().equals(productLaunch.getSalesCompanyId()))
-					.collect(Collectors.toList());
-				if (ObjectUtil.isNotEmpty(list)) {
-					list.forEach(i -> {
-						i.setWhetherShare(1);
-						i.setPriceOne(productLaunch.getPriceOne());
-						i.setPriceTwo(productLaunch.getPriceTwo());
-						i.setPriceThree(productLaunch.getPriceThree());
-						i.setPriceFour(productLaunch.getPriceFour());
-						i.setVersion(i.getVersion());
-						pjProductLaunchList1.add(i);
+					if (ObjectUtils.isNotNull(productLaunch.getSharedCompany()) && productLaunch.getSharedCompany().length() > 1) {
+						productLaunch.setSharedCompany(productLaunch.getSharedCompany().substring(1, productLaunch.getSharedCompany().length()));
+					}
+					List<PjProductLaunch> list = productLaunchList.stream().filter(item -> item.getBillType().equals(1) &&
+							item.getGoodsId().equals(productLaunch.getGoodsId()) && item.getSourceCompanyId().equals(productLaunch.getSalesCompanyId()))
+						.collect(Collectors.toList());
+					if (ObjectUtil.isNotEmpty(list)) {
+						list.forEach(i -> {
+							i.setWhetherShare(1);
+							i.setPriceOne(productLaunch.getPriceOne());
+							i.setPriceTwo(productLaunch.getPriceTwo());
+							i.setPriceThree(productLaunch.getPriceThree());
+							i.setPriceFour(productLaunch.getPriceFour());
+							i.setVersion(i.getVersion());
+							pjProductLaunchList1.add(i);
 //						baseMapper.updateById(i);
-					});
+						});
+					}
 				}
 			}
 			pjProductLaunchList.add(productLaunch);
@@ -1194,4 +1204,109 @@ public class ProductLaunchServiceImpl extends ServiceImpl<ProductLaunchMapper, P
 		return baseMapper.productLaunchDetails(pjShipStockDetails);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R productLaunchPoints(List<PjProductLaunch> list) {
+		List<PjProductLaunch> pjProductLaunchList = new ArrayList<>();
+		List<String> goodsNames = list.stream().map(PjProductLaunch::getCname).collect(Collectors.toList());
+		List<PjGoodsDesc> pjGoodsDescsList = goodsDescMapper.selectList(new LambdaQueryWrapper<PjGoodsDesc>()
+			.eq(PjGoodsDesc::getIsDeleted, 0)
+			.eq(PjGoodsDesc::getEnableOrNot, 1)
+			.eq(PjGoodsDesc::getWhetherIntegral, 1)
+			.in(PjGoodsDesc::getCname, goodsNames));
+		List<PjGoodsFiles> pjGoodsFilesList = new ArrayList<>();
+		if (!pjGoodsDescsList.isEmpty()) {
+			List<Long> goodsId = pjGoodsDescsList.stream().map(PjGoodsDesc::getId).collect(Collectors.toList());
+			pjGoodsFilesList = goodsFilesMapper.selectList(new LambdaQueryWrapper<PjGoodsFiles>()
+				.in(PjGoodsFiles::getPid, goodsId));
+			//获得库存
+		}
+		List<Dept> deptList = new ArrayList<>();
+		R<List<Dept>> resDept = iSysClient.getDeptListIByName(AuthUtil.getTenantId(), null);
+		if (resDept.isSuccess()) {
+			deptList = resDept.getData();
+		}
+		LambdaQueryWrapper<PjProductLaunch> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(PjProductLaunch::getTenantId, AuthUtil.getTenantId())
+			.eq(PjProductLaunch::getIsDeleted, 0)
+			.eq(PjProductLaunch::getWhetherIntegral, 1)
+		;
+		List<PjProductLaunch> productLaunchList = baseMapper.selectList(queryWrapper);
+		for (PjProductLaunch productLaunch : list) {
+			//获得商品信息
+			PjGoodsDesc pjGoodsDesc = pjGoodsDescsList.stream()
+				.filter(e -> e.getCname().equals(productLaunch.getCname())).findFirst().orElse(null);
+			if (pjGoodsDesc != null) {
+				//商品id
+				productLaunch.setGoodsId(pjGoodsDesc.getId());
+				productLaunch.setBrandId(pjGoodsDesc.getBrandId());
+				productLaunch.setBrandName(pjGoodsDesc.getBrandName());
+				productLaunch.setBrandItem(pjGoodsDesc.getBrandItem());
+				productLaunch.setPlaceProduction(pjGoodsDesc.getPlaceProduction());
+				productLaunch.setExplosionProof(pjGoodsDesc.getExplosionProof());
+				productLaunch.setOriginalFactory(pjGoodsDesc.getOriginalFactory());
+				productLaunch.setSelfRecovery(pjGoodsDesc.getSelfRecovery());
+				productLaunch.setCnameInt(pjGoodsDesc.getCnameInt());
+				productLaunch.setDetailsText(pjGoodsDesc.getGoodsDescription());
+				productLaunch.setSpecificationAndModel(pjGoodsDesc.getSpecificationAndModel());
+				productLaunch.setWhetherIntegral("1");
+			} else {
+				throw new RuntimeException("商品" + productLaunch.getCname() + "名称错误或商品不存在");
+			}
+			//获得所属公司
+			if (StringUtil.isNotBlank(productLaunch.getSalesCompanyName())) {
+				Dept dept = deptList.stream().filter(e -> e.getFullName().equals(productLaunch.getSalesCompanyName()))
+					.findFirst().orElse(null);
+				if (dept != null) {
+					productLaunch.setSalesCompanyId(dept.getId());
+					productLaunch.setSalesCompanyName(dept.getFullName());
+				} else {
+					throw new SecurityException("请输入正确的所属公司");
+				}
+			}
+			productLaunch.setBillType(0);
+			productLaunch.setPriceOne(productLaunch.getPriceOne());
+			productLaunch.setPriceTwo(productLaunch.getPriceTwo());
+			productLaunch.setPriceThree(productLaunch.getPriceThree());
+			productLaunch.setPriceFour(productLaunch.getPriceFour());
+			// 如果名称相等 就认为重复
+			PjProductLaunch one = productLaunchList.stream().filter(e -> e.getCname().equals(productLaunch.getCname())
+				&& e.getSalesCompanyId().equals(productLaunch.getSalesCompanyId()) && e.getBillType().equals(0)).findFirst().orElse(null);
+			if (one == null) {
+				productLaunch.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+				productLaunch.setCreateTime(new Date());
+				productLaunch.setCreateUser(AuthUtil.getUserId());
+				productLaunch.setTenantId(AuthUtil.getTenantId());
+				productLaunch.setUpAndDownShelves(1);
+			} else {
+				productLaunch.setId(one.getId());
+				productLaunch.setUpdateUser(AuthUtil.getUserId());
+				productLaunch.setUpdateTime(new Date());
+				productLaunch.setSharedCompany(one.getSharedCompany());
+			}
+			pjProductLaunchList.add(productLaunch);
+		}
+		this.saveOrUpdateBatch(pjProductLaunchList);
+		List<PjProductLaunchFiles> filesList = new ArrayList<>();
+		for (PjProductLaunch item : pjProductLaunchList) {
+			List<PjGoodsFiles> pjGoodsFilesList1 = pjGoodsFilesList.stream()
+				.filter(e -> e.getPid().equals(item.getGoodsId())).collect(Collectors.toList());
+			if (!pjGoodsFilesList1.isEmpty()) {
+				for (PjGoodsFiles file : pjGoodsFilesList1) {
+					PjProductLaunchFiles files = new PjProductLaunchFiles();
+					BeanUtil.copyProperties(file, files);
+					files.setPid(item.getId());
+					if (0 == file.getMainImage()) {
+						files.setVersion("0");
+					} else {
+						files.setVersion("1");
+					}
+					filesList.add(files);
+				}
+			}
+		}
+		productLaunchFilesService.saveOrUpdateBatch(filesList);
+		return R.success("ok");
+	}
+
 }

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

@@ -831,7 +831,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 				if (stockOne != null) {
 					if (stockOne.getBalanceQuantity().compareTo(item.getSendNum()) < 0) {
 						msg += goodsDesc.getCname() + ",";
-					}else{
+					} else {
 						stockOne.setBalanceQuantity(stockOne.getBalanceQuantity().subtract(item.getSendNum()));
 						if (ObjectUtils.isNotNull(status) && "1".equals(status)) {
 							BigDecimal sendNum = item.getSendNum();
@@ -848,7 +848,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 								stockOne.setBalanceQuantityHave(new BigDecimal("0"));
 								stockOne.setBalanceQuantityFinancing(stockOne.getBalanceQuantityFinancing().subtract(sendNum));
 							}
-						}else{
+						} else {
 							if (stockOne.getBalanceQuantityHave().compareTo(item.getSendNum()) < 0) {
 								throw new RuntimeException("商品:" + goodsDesc.getCname() + "库存不足,出库失败");
 							}
@@ -1276,7 +1276,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					amountSum = amountSum.add(costprie);
 				}
 			}
-			if (amountSum.compareTo(new BigDecimal("0")) != 0){
+			if (amountSum.compareTo(new BigDecimal("0")) != 0) {
 				if (!orderItemsList.isEmpty()) {
 					List<PjOrder> orders = orderList.stream().filter(e -> e.getWhetherRedeem().equals("0")).distinct().collect(Collectors.toList());
 					if (!orders.isEmpty()) {
@@ -1306,62 +1306,64 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 						//采购商品明细循环
 						for (PjOrderItems orderItems1 : orderItemList) {
 							if (orderItems1.getGoodsId().equals(shipItems.getGoodsId())) {
-								//记录出库明细对应融资采购单据
-								ShipItemsRecord shipItemsRecord = new ShipItemsRecord();
-								shipItemsRecord.setBillNo(ship.getBillno());
-								shipItemsRecord.setPid(shipItems.getPid());
-								shipItemsRecord.setItemId(shipItems.getId());
-								shipItemsRecord.setSrcId(orderItems1.getPid());
-								shipItemsRecord.setSrcItemId(orderItems1.getId());
-								shipItemsRecord.setSrcOrd(orderItems1.getBillNo());
-								shipItemsRecord.setCreateUser(AuthUtil.getUserId());
-								shipItemsRecord.setCreateUserName(AuthUtil.getUserName());
-								shipItemsRecord.setCreateTime(new Date());
-								//记录具体出库数量,来源融资采购明细
-								FinancingShipItemDto financingShipItemDto = new FinancingShipItemDto();
-								financingShipItemDto.setId(orderItems1.getId());
-								financingShipItemDto.setPid(orderItems1.getPid());
-								financingShipItemDto.setItemId(shipItems.getId());
-								BigDecimal subNum = orderItems1.getSendNum().subtract(orderItems1.getOutGoodsTotalShipNum());
-								//剩余数量 = 入库数量-已出数量
-								//修改明细出库数量
-								if (new BigDecimal("0.00").compareTo(subNum) != 0) {
-									if (number.compareTo(subNum) > 0) {
-										financingShipItemDto.setNum(subNum);
-										financingShipItemDto.setAmount(subNum.multiply(orderItems1.getPrice()));
-										shipItemsRecord.setNum(subNum);
-										shipItemsRecord.setAmount(subNum.multiply(orderItems1.getPrice()));
-										//本次出库数量大于剩余数量  融资采购明细出库数量=入库数量
-										orderItems1.setOutGoodsTotalShipNum(orderItems1.getSendNum());
-										orderItems1.setThisOutGoodsTotalShipNum(subNum);
-										orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
-										orderItems1.setThisOutGoodsTotalShipAmount(subNum.multiply(orderItems1.getPrice()));
-										number = number.subtract(subNum);
-									} else if (number.compareTo(subNum) == 0) {
-										financingShipItemDto.setNum(subNum);
-										financingShipItemDto.setAmount(subNum.multiply(orderItems1.getPrice()));
-										shipItemsRecord.setNum(subNum);
-										shipItemsRecord.setAmount(subNum.multiply(orderItems1.getPrice()));
-										//本次出库数量等于剩余数量  融资采购明细出库数量=入库数量
-										orderItems1.setOutGoodsTotalShipNum(orderItems1.getSendNum());
-										orderItems1.setThisOutGoodsTotalShipNum(subNum);
-										orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
-										orderItems1.setThisOutGoodsTotalShipAmount(subNum.multiply(orderItems1.getPrice()));
-										number = new BigDecimal("0.00");
-									} else {
-										financingShipItemDto.setNum(number);
-										financingShipItemDto.setAmount(number.multiply(orderItems1.getPrice()));
-										shipItemsRecord.setNum(number);
-										shipItemsRecord.setAmount(number.multiply(orderItems1.getPrice()));
-										//本次出库数量小于剩余数量  融资采购明细出库数量=入库数量-本次出库数量
-										orderItems1.setOutGoodsTotalShipNum(orderItems1.getOutGoodsTotalShipNum().add(number));
-										orderItems1.setThisOutGoodsTotalShipNum(number);
-										orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
-										orderItems1.setThisOutGoodsTotalShipAmount(number.multiply(orderItems1.getPrice()));
-										number = new BigDecimal("0.00");
+								if (number.compareTo(new BigDecimal("0.00")) > 0) {
+									//记录出库明细对应融资采购单据
+									ShipItemsRecord shipItemsRecord = new ShipItemsRecord();
+									shipItemsRecord.setBillNo(ship.getBillno());
+									shipItemsRecord.setPid(shipItems.getPid());
+									shipItemsRecord.setItemId(shipItems.getId());
+									shipItemsRecord.setSrcId(orderItems1.getPid());
+									shipItemsRecord.setSrcItemId(orderItems1.getId());
+									shipItemsRecord.setSrcOrd(orderItems1.getBillNo());
+									shipItemsRecord.setCreateUser(AuthUtil.getUserId());
+									shipItemsRecord.setCreateUserName(AuthUtil.getUserName());
+									shipItemsRecord.setCreateTime(new Date());
+									//记录具体出库数量,来源融资采购明细
+									FinancingShipItemDto financingShipItemDto = new FinancingShipItemDto();
+									financingShipItemDto.setId(orderItems1.getId());
+									financingShipItemDto.setPid(orderItems1.getPid());
+									financingShipItemDto.setItemId(shipItems.getId());
+									BigDecimal subNum = orderItems1.getSendNum().subtract(orderItems1.getOutGoodsTotalShipNum());
+									//剩余数量 = 入库数量-已出数量
+									//修改明细出库数量
+									if (new BigDecimal("0.00").compareTo(subNum) != 0) {
+										if (number.compareTo(subNum) > 0) {
+											financingShipItemDto.setNum(subNum);
+											financingShipItemDto.setAmount(subNum.multiply(orderItems1.getPrice()));
+											shipItemsRecord.setNum(subNum);
+											shipItemsRecord.setAmount(subNum.multiply(orderItems1.getPrice()));
+											//本次出库数量大于剩余数量  融资采购明细出库数量=入库数量
+											orderItems1.setOutGoodsTotalShipNum(orderItems1.getSendNum());
+											orderItems1.setThisOutGoodsTotalShipNum(subNum);
+											orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
+											orderItems1.setThisOutGoodsTotalShipAmount(subNum.multiply(orderItems1.getPrice()));
+											number = number.subtract(subNum);
+										} else if (number.compareTo(subNum) == 0) {
+											financingShipItemDto.setNum(subNum);
+											financingShipItemDto.setAmount(subNum.multiply(orderItems1.getPrice()));
+											shipItemsRecord.setNum(subNum);
+											shipItemsRecord.setAmount(subNum.multiply(orderItems1.getPrice()));
+											//本次出库数量等于剩余数量  融资采购明细出库数量=入库数量
+											orderItems1.setOutGoodsTotalShipNum(orderItems1.getSendNum());
+											orderItems1.setThisOutGoodsTotalShipNum(subNum);
+											orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
+											orderItems1.setThisOutGoodsTotalShipAmount(subNum.multiply(orderItems1.getPrice()));
+											number = new BigDecimal("0.00");
+										} else {
+											financingShipItemDto.setNum(number);
+											financingShipItemDto.setAmount(number.multiply(orderItems1.getPrice()));
+											shipItemsRecord.setNum(number);
+											shipItemsRecord.setAmount(number.multiply(orderItems1.getPrice()));
+											//本次出库数量小于剩余数量  融资采购明细出库数量=入库数量-本次出库数量
+											orderItems1.setOutGoodsTotalShipNum(orderItems1.getOutGoodsTotalShipNum().add(number));
+											orderItems1.setThisOutGoodsTotalShipNum(number);
+											orderItems1.setOutGoodsTotalShipAmount(orderItems1.getOutGoodsTotalShipNum().multiply(orderItems1.getPrice()));
+											orderItems1.setThisOutGoodsTotalShipAmount(number.multiply(orderItems1.getPrice()));
+											number = new BigDecimal("0.00");
+										}
+										mapList.add(financingShipItemDto);
+										recordList.add(shipItemsRecord);
 									}
-									mapList.add(financingShipItemDto);
-									recordList.add(shipItemsRecord);
 								}
 							}
 							orderItemList1.add(orderItems1);
@@ -1981,7 +1983,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 					amount = amount.add(costprie);
 				}
 			}
-			if (amount.compareTo(new BigDecimal("0.00")) != 0){
+			if (amount.compareTo(new BigDecimal("0.00")) != 0) {
 				for (PjOrderItems items : orderItemsList) {
 					FinancingShipItemDto pjOrderItems = financingShipItemDtoList.stream().filter(e -> e.getId().equals(items.getId())).findFirst().orElse(null);
 					if (pjOrderItems != null) {

+ 13 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/controller/ShoppingCartController.java

@@ -20,6 +20,7 @@ import com.alibaba.cloud.commons.lang.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -32,6 +33,7 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.salesPart.entity.PjProductLaunch;
 import org.springblade.salesPart.entity.PjProductLaunchFiles;
 import org.springblade.salesPart.entity.PjShoppingCart;
 import org.springblade.salesPart.productLaunch.service.IProductLaunchFilesService;
@@ -81,6 +83,7 @@ public class ShoppingCartController extends BladeController {
 		lambdaQueryWrapper.eq(PjShoppingCart::getTenantId, AuthUtil.getTenantId())
 			.eq(PjShoppingCart::getIsDeleted, 0)
 			.eq(PjShoppingCart::getSalesCompanyId, AuthUtil.getDeptId())//公司
+			.eq(ObjectUtils.isNotNull(shoppingCart.getWhetherIntegral()), PjShoppingCart::getWhetherIntegral, shoppingCart.getWhetherIntegral())
 			.eq(PjShoppingCart::getCreateUser, AuthUtil.getUserId());
 		List<PjShoppingCart> list = shoppingCartService.list(lambdaQueryWrapper);
 
@@ -196,6 +199,16 @@ public class ShoppingCartController extends BladeController {
 	}
 
 	/**
+	 * 购物车生成销售单-积分
+	 */
+	@PostMapping("/generateOrderPoints")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "购物车生成销售单", notes = "传入shoppingCart")
+	public R generateOrderPoints(@RequestBody PjShoppingCart pjShoppingCart) {
+		return shoppingCartService.generateOrderPoints(pjShoppingCart.getAddress(), pjShoppingCart.getList(), pjShoppingCart.getPayType());
+	}
+
+	/**
 	 * 修改数量
 	 */
 	@GetMapping("/updateNumber")

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/IShoppingCartService.java

@@ -64,4 +64,6 @@ public interface IShoppingCartService extends IService<PjShoppingCart> {
 	R activityGenerateOrder(String address, List<Map<String, Object>> list, String payType);
 
 	R generateOrderLimit(String address, List<Map<String, Object>> list, String payType);
+
+	R generateOrderPoints(String address, List<Map<String, Object>> list, String payType);
 }

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

@@ -792,4 +792,171 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 		}
 	}
 
+	@Override
+	public R generateOrderPoints(String address, List<Map<String, Object>> list, String payType) {
+		StringBuilder goodsName = new StringBuilder();
+		StringBuilder shortcutJoin = new StringBuilder();
+		BigDecimal amount = new BigDecimal("0.00");
+		//从集合中取出商品生成销售单
+		if (ObjectUtil.isNotEmpty(list)) {
+			PjCorpsDesc corpsDesc = null;
+			//根据当前登录人获得客户
+			PjCorpsAttn corpsAttn = corpsAttnService.getAttn(AuthUtil.getUserId());
+			if (ObjectUtil.isNotEmpty(corpsAttn)) {
+				corpsDesc = corpsDescService.getCorpsDesc(corpsAttn.getPid());
+				if (ObjectUtil.isEmpty(corpsDesc)) {
+					throw new RuntimeException("未查到用户信息");
+				}
+			} else {
+				throw new RuntimeException("未查到用户信息");
+			}
+			PjCorpsDesc finalCorpsDesc = corpsDesc;
+			// 获取系统编号
+			String billNo = serialService.getBillNo("WB", "WB", "WB");
+			if (ObjectUtils.isNull(billNo)) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				throw new RuntimeException("生成系统编号失败");
+			}
+			billNo = billNo + AuthUtil.getTenantId();
+			int i = 1;
+			// 获取系统编号
+			String SrcOrdNo = serialService.getBillNo("JF", "JF", "JF");
+			if (ObjectUtils.isNull(SrcOrdNo)) {
+				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+				throw new RuntimeException("生成系统编号失败");
+			}
+			List<PjOrder> pjOrderList = new ArrayList<>();
+			for (Map<String, Object> map : list) {
+				String k = (String) map.get("name");
+				if (StringUtil.isNotBlank(k)) {
+					String jsonStr = JSON.toJSONString(map.get("list"));
+					JSONArray objects = JSONArray.parseArray(jsonStr);
+					List<PjShoppingCart> shoppingCartList = objects.toJavaList(PjShoppingCart.class);
+					//保存销售主表信息
+					PjOrder order = new PjOrder();
+					if (list.size() == 1) {//如果只有一个公司,订单编号和主编号一致
+						order.setOrdNo(SrcOrdNo);
+					} else {
+						order.setOrdNo(SrcOrdNo + "-" + i);
+					}
+					order.setBusinesDate(new Date());
+					order.setSrcOrdNo(billNo);
+					order.setCreateUser(AuthUtil.getUserId());
+					//处理部门
+					int index = AuthUtil.getDeptId().indexOf(",");
+					Long deptId = null;
+					if (index > -1) {
+						deptId = Long.valueOf(AuthUtil.getDeptId().substring(0, index));
+					} else {
+						deptId = (Long.valueOf(AuthUtil.getDeptId()));
+					}
+					//根据客户账期计算应结日期
+					if (ObjectUtil.isNotEmpty(corpsDesc.getAccountPeriod())) {
+						Date now = new Date(); // 获取当前时间
+						long sevenDays = corpsDesc.getAccountPeriod() * 24 * 60 * 60 * 1000L;
+						Date afterSevenDays = new Date(now.getTime() + sevenDays);
+						order.setDueDate(afterSevenDays);
+					} else {
+						order.setDueDate(new Date());
+					}
+					order.setCreateTime(new Date());
+					order.setCreateDept(deptId);
+					order.setTenantId(AuthUtil.getTenantId());
+					order.setCustomerId(finalCorpsDesc.getId());
+					order.setCustomerName(finalCorpsDesc.getCname());
+					if (ObjectUtils.isNotNull(finalCorpsDesc.getSalesmanId())) {
+						order.setSalerId(finalCorpsDesc.getSalesmanId());
+						order.setSalerName(finalCorpsDesc.getSalesmanName());
+					} else {
+						R<List<User>> res = userSearchClient.getWarehouseKeeper("业务员", AuthUtil.getDeptId());
+						if (res.isSuccess() && ObjectUtils.isNotNull(res.getData()) && !res.getData().isEmpty()) {
+							order.setSalerId(res.getData().get(0).getId());
+							order.setSalerName(res.getData().get(0).getAccount());
+						}
+					}
+					if (ObjectUtils.isNotNull(finalCorpsDesc.getDeliveryWarehouseId())) {
+						order.setStorageId(finalCorpsDesc.getDeliveryWarehouseId());
+						order.setStorageName(finalCorpsDesc.getDeliveryWarehouseName());
+					}
+					order.setSalesCompanyId(deptId);
+					order.setSalesCompanyName(sysClient.getDeptName(deptId).getData());
+					order.setRecAddress(address);
+					order.setContacts(corpsAttn.getCname());
+					order.setPhone(corpsAttn.getTel());
+					order.setBsType(OrderTypeEnum.SALES.getType());
+					order.setBusinessSource(OrderTypeEnum.XCX.getType());
+					order.setReceivableType("网络支付");
+					orderService.save(order);
+					//保存销售明细信息
+					if (ObjectUtil.isNotEmpty(shoppingCartList)) {
+						shoppingCartList.forEach(e -> {
+							PjOrderItems orderItems = new PjOrderItems();
+							BeanUtils.copyProperties(e, orderItems);
+							if (e.getInventory().compareTo(orderItems.getGoodsNum()) < 0) {
+								throw new RuntimeException("库存不足");
+							}
+							orderItems.setId(null);
+							orderItems.setSendNum(new BigDecimal("0.00"));
+							orderItems.setCreateUser(AuthUtil.getUserId());
+							orderItems.setCreateDept(order.getCreateDept());
+							orderItems.setCreateTime(new Date());
+							orderItems.setPid(order.getId());
+							orderItems.setTenantId(AuthUtil.getTenantId());
+							orderItems.setBillNo(order.getOrdNo());
+							orderItems.setBizType(order.getBsType());
+							orderItems.setInventory(e.getInventory());
+							orderItems.setTotalAmount(orderItems.getGoodsNum().multiply(orderItems.getPrice()));
+							orderItems.setUrl(ObjectUtils.isNotNull(e.getFilesList()) && !e.getFilesList().isEmpty() ? e.getFilesList().get(0).getUrl() : "");
+							orderItems.setGoodsName(e.getGoodsName());
+							orderItemsMapper.insert(orderItems);
+							PjGoodsDesc goodsDesc = goodsDescMapper.selectById(orderItems.getGoodsId());
+							if (ObjectUtils.isNotNull(goodsDesc)) {
+								shortcutJoin.append(goodsDesc.getCnameInt()).append(",");
+							}
+							goodsName.append(orderItems.getGoodsName()).append(",");
+
+							//生成完毕删除购物车
+							e.setIsDeleted(1);
+							baseMapper.updateById(e);
+							PjProductLaunch productLaunch = productLaunchMapper.selectById(e.getProductLaunchId());
+							if (ObjectUtils.isNotNull(productLaunch)) {
+								if (productLaunch.getInventory().compareTo(orderItems.getGoodsNum()) < 0) {
+									throw new RuntimeException("商品:" + orderItems.getGoodsName() + "库存不足");
+								}
+							}
+						});
+						BigDecimal totalMoney = BigDecimal.ZERO;
+						order.setNumberRows(shoppingCartList.size());//行数
+						//明细总数量
+						order.setGoodsTotalNum(shoppingCartList.stream().map(PjShoppingCart::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+
+						//明细总金额
+						totalMoney = shoppingCartList.stream().reduce(BigDecimal.ZERO, (x, y) -> {
+							return x.add(y.getGoodsNum().multiply(y.getPrice()));
+						}, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
+
+						order.setSalesAmount(totalMoney);
+						order.setTotalMoney(totalMoney);
+						amount = amount.add(order.getTotalMoney());
+						order.setSharedCompanyId(shoppingCartList.get(0).getSharedCompanyId());
+						order.setSharedCompanyName(shoppingCartList.get(0).getSharedCompanyName());
+					}
+					if (goodsName.length() > 0) {
+						order.setGoodsNameJoin(goodsName.substring(0, goodsName.length() - 1));
+					}
+					if (shortcutJoin.length() > 0) {
+						order.setShortcutJoin(shortcutJoin.substring(0, shortcutJoin.length() - 1));
+					}
+					order.setPayType(payType);
+					pjOrderList.add(order);
+				}
+				i++;
+			}
+			orderService.updateBatchById(pjOrderList);
+			return R.data("兑换成功");
+		} else {
+			throw new RuntimeException("请选择需要结算的商品");
+		}
+	}
+
 }

+ 7 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/controller/LargeScreenYcpApiController.java

@@ -23,6 +23,13 @@ public class LargeScreenYcpApiController extends BladeController {
 
 	private final ApiService apiService;
 
+	/**
+	 * 获取分仓信息
+	 */
+	@GetMapping("/compartmentList")
+	public List<Map<String, Object>> compartmentList() {
+		return apiService.compartmentList();
+	}
 
 	/**
 	 * 当日成交量

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/ApiService.java

@@ -82,4 +82,6 @@ public interface ApiService {
 	List<Map<String, Object>> tyreBrandSalesVolumeDetail(String tenantId);
 
 	List<Map<String, Object>> corpMap(String tenantId);
+
+	List<Map<String, Object>> compartmentList();
 }

+ 184 - 124
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/smartLargeScreenApi/service/impl/ApiServiceImpl.java

@@ -12,11 +12,13 @@ import org.springblade.salesPart.smartLargeScreenApi.dto.*;
 import org.springblade.salesPart.smartLargeScreenApi.service.ApiService;
 import org.springblade.salesPart.stock.service.IStockDescService;
 import org.springblade.salesPart.storage.service.IStorageDescService;
+import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -46,121 +48,129 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public Map<String, Object> getTotalYear(String year) {
-		String tenantId = sysClient.getTenantIds("whether.financing");
-		List<PjOrder> orderList = orderService.getTotalYear(tenantId, year);
+		List<String> tenantId = sysClient.getTenantIds("whether.financing");
 		Map<String, Object> map = new HashMap<>();
-		if (!orderList.isEmpty()) {
-			BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-			map.put("amount", amount);
-		} else {
-			map.put("amount", new BigDecimal("0.00"));
+		if (!tenantId.isEmpty()) {
+			List<PjOrder> orderList = orderService.getTotalYear(String.join(",", tenantId), year);
+			if (!orderList.isEmpty()) {
+				BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				map.put("amount", amount);
+			} else {
+				map.put("amount", new BigDecimal("0.00"));
+			}
 		}
 		return map;
 	}
 
 	@Override
 	public Map<String, Object> getTotalMonth(String year, String month) {
-		String tenantId = sysClient.getTenantIds("whether.financing");
+		List<String> tenantId = sysClient.getTenantIds("whether.financing");
 		if (month.length() == 1) {
 			month = "0" + month;
 		}
-		List<PjOrder> orderList = orderService.getTotalMonth(tenantId, year, month);
 		Map<String, Object> map = new HashMap<>();
-		if (!orderList.isEmpty()) {
-			BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-			map.put("amount", amount);
-			BigDecimal number = orderList.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
-			map.put("number", number);
-		} else {
-			map.put("amount", new BigDecimal("0.00"));
-			map.put("number", new BigDecimal("0"));
+		if (!tenantId.isEmpty()) {
+			List<PjOrder> orderList = orderService.getTotalMonth(String.join(",", tenantId), year, month);
+			if (!orderList.isEmpty()) {
+				BigDecimal amount = orderList.stream().map(PjOrder::getSalesAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				map.put("amount", amount);
+				BigDecimal number = orderList.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+				map.put("number", number);
+			} else {
+				map.put("amount", new BigDecimal("0.00"));
+				map.put("number", new BigDecimal("0"));
+			}
 		}
 		return map;
 	}
 
 	@Override
 	public List<Map<String, Object>> getBrandSort(String year) {
-		String tenantId = sysClient.getTenantIds("whether.financing");
-		List<PjBrandDesc> brandDescList = brandDescService.getTenants(tenantId);
-		BigDecimal numberSum = new BigDecimal("0");
-		List<PjOrderItems> orderItemsList = orderItemsService.getListByTenant(tenantId, year);
-		if (!orderItemsList.isEmpty()) {
-			numberSum = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
-		}
-		List<BrandSort> brandSortList = new ArrayList<>();
-		for (PjBrandDesc item : brandDescList) {
-			BrandSort brandSort = new BrandSort();
-			brandSort.setBrandName(item.getCname() + ":");
+		List<String> tenantId = sysClient.getTenantIds("whether.financing");
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		if (!tenantId.isEmpty()) {
+			List<PjBrandDesc> brandDescList = brandDescService.getTenants(String.join(",", tenantId));
+			BigDecimal numberSum = new BigDecimal("0");
+			List<PjOrderItems> orderItemsList = orderItemsService.getListByTenant(String.join(",", tenantId), year);
 			if (!orderItemsList.isEmpty()) {
-				List<PjOrderItems> itemsList = orderItemsList.stream().filter(e -> e.getBrandName().equals(item.getCname()))
-					.collect(Collectors.toList());
-				if (!itemsList.isEmpty()) {
-					BigDecimal number = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
-					brandSort.setNumber(number);
-					if (numberSum.compareTo(new BigDecimal("0")) != 0 && number.compareTo(new BigDecimal("0")) != 0) {
-						brandSort.setProportion("占比" + number.divide(numberSum, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")) + "%");
+				numberSum = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+			}
+			List<BrandSort> brandSortList = new ArrayList<>();
+			for (PjBrandDesc item : brandDescList) {
+				BrandSort brandSort = new BrandSort();
+				brandSort.setBrandName(item.getCname() + ":");
+				if (!orderItemsList.isEmpty()) {
+					List<PjOrderItems> itemsList = orderItemsList.stream().filter(e -> e.getBrandName().equals(item.getCname()))
+						.collect(Collectors.toList());
+					if (!itemsList.isEmpty()) {
+						BigDecimal number = itemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+						brandSort.setNumber(number);
+						if (numberSum.compareTo(new BigDecimal("0")) != 0 && number.compareTo(new BigDecimal("0")) != 0) {
+							brandSort.setProportion("占比" + number.divide(numberSum, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")) + "%");
+						} else {
+							brandSort.setProportion("占比0%");
+						}
 					} else {
+						brandSort.setNumber(new BigDecimal("0"));
 						brandSort.setProportion("占比0%");
 					}
 				} else {
 					brandSort.setNumber(new BigDecimal("0"));
 					brandSort.setProportion("占比0%");
 				}
-			} else {
-				brandSort.setNumber(new BigDecimal("0"));
-				brandSort.setProportion("占比0%");
+				brandSortList.add(brandSort);
+			}
+			List<BrandSort> sortList = brandSortList.stream()
+				.sorted(Comparator.comparing(BrandSort::getNumber).reversed())
+				.collect(Collectors.toList());
+			for (BrandSort item : sortList) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("name", item.getBrandName());
+				map.put("value", item.getNumber());
+				map.put("proportion", item.getProportion());
+				mapList.add(map);
 			}
-			brandSortList.add(brandSort);
-		}
-		List<BrandSort> sortList = brandSortList.stream()
-			.sorted(Comparator.comparing(BrandSort::getNumber).reversed())
-			.collect(Collectors.toList());
-		List<Map<String, Object>> mapList = new ArrayList<>();
-		for (BrandSort item : sortList) {
-			Map<String, Object> map = new HashMap<>();
-			map.put("name", item.getBrandName());
-			map.put("value", item.getNumber());
-			map.put("proportion", item.getProportion());
-			mapList.add(map);
 		}
 		return mapList;
 	}
 
 	@Override
 	public Map<String, Object> getWarehouseSort(String year) {
-		String tenantId = sysClient.getTenantIds("whether.financing");
-		List<PjStorageDesc> storageDescList = storageDescService.getTenants(tenantId);
-		List<PjOrder> orderList = orderService.getTotalYear(tenantId, year);
-		List<WarehouseSort> warehouseSortList = new ArrayList<>();
-		for (PjStorageDesc item : storageDescList) {
-			WarehouseSort warehouseSort = new WarehouseSort();
-			warehouseSort.setWarehouseName(item.getCname());
-			if (!orderList.isEmpty()) {
-				List<PjOrder> orders = orderList.stream().filter(e -> e.getStockClerkName().equals(item.getCname()))
-					.collect(Collectors.toList());
-				if (!orders.isEmpty()) {
-					BigDecimal number = orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
-					warehouseSort.setNumber(number);
+		List<String> tenantId = sysClient.getTenantIds("whether.financing");
+		Map<String, Object> map = new HashMap<>();
+		if (!tenantId.isEmpty()) {
+			List<PjStorageDesc> storageDescList = storageDescService.getTenants(String.join(",", tenantId));
+			List<PjOrder> orderList = orderService.getTotalYear(String.join(",", tenantId), year);
+			List<WarehouseSort> warehouseSortList = new ArrayList<>();
+			for (PjStorageDesc item : storageDescList) {
+				WarehouseSort warehouseSort = new WarehouseSort();
+				warehouseSort.setWarehouseName(item.getCname());
+				if (!orderList.isEmpty()) {
+					List<PjOrder> orders = orderList.stream().filter(e -> e.getStockClerkName().equals(item.getCname()))
+						.collect(Collectors.toList());
+					if (!orders.isEmpty()) {
+						BigDecimal number = orders.stream().map(PjOrder::getGoodsTotalNum).reduce(BigDecimal.ZERO, BigDecimal::add);
+						warehouseSort.setNumber(number);
+					} else {
+						warehouseSort.setNumber(new BigDecimal("0"));
+					}
 				} else {
 					warehouseSort.setNumber(new BigDecimal("0"));
 				}
-			} else {
-				warehouseSort.setNumber(new BigDecimal("0"));
+				warehouseSortList.add(warehouseSort);
 			}
-			warehouseSortList.add(warehouseSort);
+			List<WarehouseSort> sortList = warehouseSortList.stream()
+				.sorted(Comparator.comparing(WarehouseSort::getNumber).reversed())
+				.collect(Collectors.toList());
+			List<String> name = new ArrayList<>();
+			List<BigDecimal> value = new ArrayList<>();
+			for (WarehouseSort item : sortList) {
+				name.add(item.getWarehouseName());
+				value.add(item.getNumber());
+			}
+			map.put("name", name);
+			map.put("value", value);
 		}
-		List<WarehouseSort> sortList = warehouseSortList.stream()
-			.sorted(Comparator.comparing(WarehouseSort::getNumber).reversed())
-			.collect(Collectors.toList());
-		Map<String, Object> map = new HashMap<>();
-		List<String> name = new ArrayList<>();
-		List<BigDecimal> value = new ArrayList<>();
-		for (WarehouseSort item : sortList) {
-			name.add(item.getWarehouseName());
-			value.add(item.getNumber());
-		}
-		map.put("name", name);
-		map.put("value", value);
 		return map;
 	}
 
@@ -317,7 +327,7 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
-			List<PjOrder> orders = orderList.stream()
+			List<PjOrder> orders = orderList.stream().filter(e -> ObjectUtils.isNotNull(e.getGrossProfit()))
 				.sorted(Comparator.comparing(PjOrder::getGrossProfit).reversed())
 				.collect(Collectors.toList());
 			map.put("name", "");
@@ -336,7 +346,7 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		Map<String, Object> map = new HashMap<>();
 		if (!orderList.isEmpty()) {
-			List<PjOrder> orders = orderList.stream()
+			List<PjOrder> orders = orderList.stream().filter(e -> ObjectUtils.isNotNull(e.getGrossProfit()))
 				.sorted(Comparator.comparing(PjOrder::getGrossProfit))
 				.collect(Collectors.toList());
 			map.put("name", "");
@@ -622,12 +632,12 @@ public class ApiServiceImpl implements ApiService {
 		List<Map<String, Object>> mapList = new ArrayList<>();
 		if (!orderList.isEmpty()) {
 			List<MonthlySalesTrend> list = new ArrayList<>();
-			Calendar calendar = Calendar.getInstance();
+			SimpleDateFormat formatter = new SimpleDateFormat("dd");
 			for (PjOrder item : orderList) {
 				MonthlySalesTrend detail = new MonthlySalesTrend();
 				detail.setAmount(item.getSalesAmount());
-				calendar.setTime(item.getBusinesDate());
-				detail.setDate(calendar.get(Calendar.DAY_OF_MONTH));
+				String formattedDate = formatter.format(item.getBusinesDate());
+				detail.setDate(Integer.parseInt(formattedDate));
 				list.add(detail);
 			}
 			List<MonthlySalesTrend> salesTrendList = list.stream()
@@ -662,7 +672,7 @@ public class ApiServiceImpl implements ApiService {
 				saleCorpList.add(corp);
 			}
 			List<TyreSaleCorp> itemsList = saleCorpList.stream()
-				.sorted(Comparator.comparing(TyreSaleCorp::getNumber))
+				.sorted(Comparator.comparing(TyreSaleCorp::getNumber).reversed())
 				.collect(Collectors.toList());
 			List<TyreSaleCorp> corpList = new ArrayList<>();
 			for (int i = 0; i <= 4; i++) {
@@ -692,35 +702,52 @@ public class ApiServiceImpl implements ApiService {
 		if (!orderItemsList.isEmpty()) {
 			List<TyreSaleSize> saleSizeList = new ArrayList<>();
 			List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+			StringBuilder goodsIds = new StringBuilder();
+			for (Long item : goodsId) {
+				goodsIds.append(item).append(",");
+			}
+			if (ObjectUtils.isNotNull(goodsIds.toString())) {
+				goodsIds = new StringBuilder(goodsIds.substring(0, goodsIds.length() - 1));
+			}
+			List<PjGoodsDesc> goodsDescList = goodsDescService.selectGoodsList(tenantId, goodsIds.toString());
 			for (Long items : goodsId) {
-				TyreSaleSize detail = new TyreSaleSize();
-				detail.setGoodsId(items);
-				detail.setNumber(orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getGoodsNum)
-					.reduce(BigDecimal.ZERO, BigDecimal::add));
-				saleSizeList.add(detail);
+				BigDecimal goodsNum = orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getGoodsNum)
+					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (!saleSizeList.isEmpty()) {
+					if (!goodsDescList.isEmpty()) {
+						PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(items)).findFirst().orElse(null);
+						if (goodsDesc != null) {
+							TyreSaleSize detail = saleSizeList.stream().filter(e -> e.getSize().equals(goodsDesc.getGoodsSize())).findFirst().orElse(null);
+							if (detail != null) {
+								detail.setNumber(detail.getNumber().add(goodsNum));
+							} else {
+								detail = new TyreSaleSize();
+								detail.setSize(goodsDesc.getGoodsSize());
+								detail.setNumber(goodsNum);
+								saleSizeList.add(detail);
+							}
+						}
+					}
+				} else {
+					PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(items)).findFirst().orElse(null);
+					if (goodsDesc != null) {
+						TyreSaleSize detail = new TyreSaleSize();
+						detail.setSize(goodsDesc.getGoodsSize());
+						detail.setNumber(goodsNum);
+						saleSizeList.add(detail);
+					}
+				}
 			}
 			List<TyreSaleSize> itemsList = saleSizeList.stream()
-				.sorted(Comparator.comparing(TyreSaleSize::getNumber))
+				.sorted(Comparator.comparing(TyreSaleSize::getNumber).reversed())
 				.collect(Collectors.toList());
 			List<TyreSaleSize> sizeList = new ArrayList<>();
-			StringBuilder goodsIds = new StringBuilder();
 			for (int i = 0; i <= 4; i++) {
-				goodsIds.append(itemsList.get(i).getGoodsId()).append(",");
 				sizeList.add(itemsList.get(i));
 			}
-			List<PjGoodsDesc> goodsDescList = goodsDescService.selectGoodsList(tenantId, goodsIds.toString());
 			for (TyreSaleSize item : sizeList) {
 				Map<String, Object> map = new HashMap<>();
-				if (!goodsDescList.isEmpty()) {
-					PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
-					if (goodsDesc != null) {
-						map.put("size", goodsDesc.getGoodsSize());
-					} else {
-						map.put("size", "");
-					}
-				} else {
-					map.put("size", "");
-				}
+				map.put("size", item.getSize());
 				map.put("number", item.getNumber());
 				mapList.add(map);
 			}
@@ -735,35 +762,52 @@ public class ApiServiceImpl implements ApiService {
 		if (!orderItemsList.isEmpty()) {
 			List<TyreSaleSize> saleSizeList = new ArrayList<>();
 			List<Long> goodsId = orderItemsList.stream().map(PjOrderItems::getGoodsId).distinct().collect(Collectors.toList());
+			StringBuilder goodsIds = new StringBuilder();
+			for (Long item : goodsId) {
+				goodsIds.append(item).append(",");
+			}
+			if (ObjectUtils.isNotNull(goodsIds.toString())) {
+				goodsIds = new StringBuilder(goodsIds.substring(0, goodsIds.length() - 1));
+			}
+			List<PjGoodsDesc> goodsDescList = goodsDescService.selectGoodsList(tenantId, goodsIds.toString());
 			for (Long items : goodsId) {
-				TyreSaleSize detail = new TyreSaleSize();
-				detail.setGoodsId(items);
-				detail.setNumber(orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getGoodsNum)
-					.reduce(BigDecimal.ZERO, BigDecimal::add));
-				saleSizeList.add(detail);
+				BigDecimal goodsNum = orderItemsList.stream().filter(e -> e.getGoodsId().equals(items)).map(PjOrderItems::getGoodsNum)
+					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (!saleSizeList.isEmpty()) {
+					if (!goodsDescList.isEmpty()) {
+						PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(items)).findFirst().orElse(null);
+						if (goodsDesc != null) {
+							TyreSaleSize detail = saleSizeList.stream().filter(e -> e.getSize().equals(goodsDesc.getGoodsSize())).findFirst().orElse(null);
+							if (detail != null) {
+								detail.setNumber(detail.getNumber().add(goodsNum));
+							} else {
+								detail = new TyreSaleSize();
+								detail.setSize(goodsDesc.getGoodsSize());
+								detail.setNumber(goodsNum);
+								saleSizeList.add(detail);
+							}
+						}
+					}
+				} else {
+					PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(items)).findFirst().orElse(null);
+					if (goodsDesc != null) {
+						TyreSaleSize detail = new TyreSaleSize();
+						detail.setSize(goodsDesc.getGoodsSize());
+						detail.setNumber(goodsNum);
+						saleSizeList.add(detail);
+					}
+				}
 			}
 			List<TyreSaleSize> itemsList = saleSizeList.stream()
-				.sorted(Comparator.comparing(TyreSaleSize::getNumber))
+				.sorted(Comparator.comparing(TyreSaleSize::getNumber).reversed())
 				.collect(Collectors.toList());
 			List<TyreSaleSize> sizeList = new ArrayList<>();
-			StringBuilder goodsIds = new StringBuilder();
 			for (int i = 0; i <= 4; i++) {
-				goodsIds.append(itemsList.get(i).getGoodsId()).append(",");
 				sizeList.add(itemsList.get(i));
 			}
-			List<PjGoodsDesc> goodsDescList = goodsDescService.selectGoodsList(tenantId, goodsIds.toString());
 			for (TyreSaleSize item : sizeList) {
 				Map<String, Object> map = new HashMap<>();
-				if (!goodsDescList.isEmpty()) {
-					PjGoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(item.getGoodsId())).findFirst().orElse(null);
-					if (goodsDesc != null) {
-						map.put("size", goodsDesc.getGoodsSize());
-					} else {
-						map.put("size", "");
-					}
-				} else {
-					map.put("size", "");
-				}
+				map.put("size", item.getSize());
 				map.put("number", item.getNumber());
 				BigDecimal sumNumber = orderItemsList.stream().map(PjOrderItems::getGoodsNum).reduce(BigDecimal.ZERO, BigDecimal::add);
 				if (new BigDecimal("0.00").compareTo(sumNumber) != 0) {
@@ -792,7 +836,7 @@ public class ApiServiceImpl implements ApiService {
 				saleBrandList.add(detail);
 			}
 			List<TyreSaleBrand> itemsList = saleBrandList.stream()
-				.sorted(Comparator.comparing(TyreSaleBrand::getNumber))
+				.sorted(Comparator.comparing(TyreSaleBrand::getNumber).reversed())
 				.collect(Collectors.toList());
 			List<TyreSaleBrand> brandList = new ArrayList<>();
 			for (int i = 0; i <= 4; i++) {
@@ -823,7 +867,7 @@ public class ApiServiceImpl implements ApiService {
 				saleBrandList.add(detail);
 			}
 			List<TyreSaleBrand> itemsList = saleBrandList.stream()
-				.sorted(Comparator.comparing(TyreSaleBrand::getNumber))
+				.sorted(Comparator.comparing(TyreSaleBrand::getNumber).reversed())
 				.collect(Collectors.toList());
 			List<TyreSaleBrand> brandList = new ArrayList<>();
 			for (int i = 0; i <= 4; i++) {
@@ -862,4 +906,20 @@ public class ApiServiceImpl implements ApiService {
 		}
 		return mapList;
 	}
+
+	@Override
+	public List<Map<String, Object>> compartmentList() {
+		List<String> tenantId = sysClient.getTenantIds("whether.library");
+		List<Map<String, Object>> mapList = new ArrayList<>();
+		if (!tenantId.isEmpty()) {
+			List<Tenant> tenantList = sysClient.getTenantList(String.join(",", tenantId));
+			for (Tenant item : tenantList) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("name", item.getTenantName());
+				map.put("value", item.getTenantId());
+				mapList.add(map);
+			}
+		}
+		return mapList;
+	}
 }

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

@@ -905,9 +905,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
 							.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-						item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
-						item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
-						item.setSalesAmount(subTotalMoney);
+						item.setReturnAmount(item.getReturnAmount().subtract(new BigDecimal("0.00").subtract(returnsAmount)));
+						item.setReturnQuantity(item.getReturnQuantity().subtract(new BigDecimal("0").subtract(returnsNumber)));
+						item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
 						item.setSalesQuantity(goodsNum.subtract(returnsNumber));
 						BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
 							.map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -916,13 +916,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.collect(Collectors.toList());
 						BigDecimal returnCostprie = new BigDecimal("0.00");
 						for (PjOrderItems items : orderItemsList) {
-							if (ObjectUtils.isNotNull(items.getCostprie())) {
-								BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
-								returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(price)));
-							}
+							returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(items.getCostpriePrice())));
 						}
 						costprie = costprie.subtract(returnCostprie);
-						item.setSalesProfit(subTotalMoney.subtract(returnsAmount).subtract(costprie));
+						item.setSalesProfit(item.getSalesAmount().subtract(costprie));
 					}
 				} else {
 					List<Long> ordersSalerR = new ArrayList<>();
@@ -956,9 +953,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
 							.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-						item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
-						item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
-						item.setSalesAmount(subTotalMoney);
+						item.setReturnAmount(item.getReturnAmount().subtract(new BigDecimal("0.00").subtract(returnsAmount)));
+						item.setReturnQuantity(item.getReturnQuantity().subtract(new BigDecimal("0").subtract(returnsNumber)));
+						item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
 						item.setSalesQuantity(goodsNum.subtract(returnsNumber));
 						BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid())
 								&& new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0)
@@ -968,13 +965,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.collect(Collectors.toList());
 						BigDecimal returnCostprie = new BigDecimal("0.00");
 						for (PjOrderItems items : orderItemsList) {
-							if (ObjectUtils.isNotNull(items.getCostprie())) {
-								BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
-								returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(price)));
-							}
+							returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(items.getCostpriePrice())));
 						}
 						costprie = costprie.subtract(returnCostprie);
-						item.setSalesProfit(subTotalMoney.subtract(returnsAmount).subtract(costprie));
+						item.setSalesProfit(item.getSalesAmount().subtract(costprie));
 					}
 				}
 			}
@@ -1065,9 +1059,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
 						BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
 							.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
-						item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0").subtract(returnsAmount)));
-						item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
-						item.setSalesAmount(subTotalMoney);
+						item.setReturnAmount(item.getReturnAmount().subtract(new BigDecimal("0").subtract(returnsAmount)));
+						item.setReturnQuantity(item.getReturnQuantity().subtract(new BigDecimal("0").subtract(returnsNumber)));
+						item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
 						item.setSalesQuantity(goodsNum.subtract(returnsNumber));
 						BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
 							.map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -1076,13 +1070,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.collect(Collectors.toList());
 						BigDecimal returnCostprie = new BigDecimal("0.00");
 						for (PjOrderItems items : orderItemsList) {
-							if (ObjectUtils.isNotNull(items.getCostprie())) {
-								BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
-								returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(price)));
-							}
+							returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(items.getCostpriePrice())));
 						}
 						costprie = costprie.subtract(returnCostprie);
-						item.setSalesProfit(subTotalMoney.subtract(returnsAmount).subtract(costprie));
+						item.setSalesProfit(item.getSalesAmount().subtract(costprie));
 					}
 				} else {
 					List<Long> ordersSalerR = new ArrayList<>();
@@ -1116,9 +1107,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
 						BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
 							.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
-						item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0").subtract(returnsAmount)));
-						item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
-						item.setSalesAmount(subTotalMoney);
+						item.setReturnAmount(item.getReturnAmount().subtract(new BigDecimal("0").subtract(returnsAmount)));
+						item.setReturnQuantity(item.getReturnQuantity().subtract(new BigDecimal("0").subtract(returnsNumber)));
+						item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
 						item.setSalesQuantity(goodsNum.subtract(returnsNumber));
 						BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()) &&
 								new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0)
@@ -1128,13 +1119,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.collect(Collectors.toList());
 						BigDecimal returnCostprie = new BigDecimal("0.00");
 						for (PjOrderItems items : orderItemsList) {
-							if (ObjectUtils.isNotNull(items.getCostprie())) {
-								BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
-								returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(price)));
-							}
+							returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(items.getCostpriePrice())));
 						}
 						costprie = costprie.subtract(returnCostprie);
-						item.setSalesProfit(subTotalMoney.subtract(returnsAmount).subtract(costprie));
+						item.setSalesProfit(item.getSalesAmount().subtract(costprie));
 					}
 				}
 			}
@@ -1229,9 +1217,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
 							.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-						item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
-						item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
-						item.setSalesAmount(subTotalMoney);
+						item.setReturnAmount(item.getReturnAmount().subtract(new BigDecimal("0.00").subtract(returnsAmount)));
+						item.setReturnQuantity(item.getReturnQuantity().subtract(new BigDecimal("0").subtract(returnsNumber)));
+						item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
 						item.setSalesQuantity(goodsNum.subtract(returnsNumber));
 						BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersCorpS.contains(e.getPid()))
 							.map(PjOrderItems::getCostprie).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -1240,13 +1228,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.collect(Collectors.toList());
 						BigDecimal returnCostprie = new BigDecimal("0.00");
 						for (PjOrderItems items : orderItemsList) {
-							if (ObjectUtils.isNotNull(items.getCostprie())) {
-								BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
-								returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(price)));
-							}
+							returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(items.getCostpriePrice())));
 						}
 						costprie = costprie.subtract(returnCostprie);
-						item.setSalesProfit(subTotalMoney.subtract(returnsAmount).subtract(costprie));
+						item.setSalesProfit(item.getSalesAmount().subtract(costprie));
 					}
 				} else {
 					List<Long> ordersSalerR = new ArrayList<>();
@@ -1280,9 +1265,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.map(PjOrderItems::getReturnsNumber).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 						BigDecimal returnsAmount = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid()))
 							.map(PjOrderItems::getReturnsAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-						item.setReturnAmount(item.getReturnAmount().add(new BigDecimal("0.00").subtract(returnsAmount)));
-						item.setReturnQuantity(item.getReturnQuantity().add(new BigDecimal("0").subtract(returnsNumber)));
-						item.setSalesAmount(subTotalMoney);
+						item.setReturnAmount(item.getReturnAmount().subtract(new BigDecimal("0.00").subtract(returnsAmount)));
+						item.setReturnQuantity(item.getReturnQuantity().subtract(new BigDecimal("0").subtract(returnsNumber)));
+						item.setSalesAmount(subTotalMoney.subtract(returnsAmount));
 						item.setSalesQuantity(goodsNum.subtract(returnsNumber));
 						BigDecimal costprie = pjOrderItemsList.stream().filter(e -> finalOrdersSalerS.contains(e.getPid())
 								&& new BigDecimal("0").compareTo(e.getReturnsNumber()) == 0)
@@ -1292,13 +1277,10 @@ public class StatisticsServiceImpl implements IStatisticsService {
 							.collect(Collectors.toList());
 						BigDecimal returnCostprie = new BigDecimal("0.00");
 						for (PjOrderItems items : orderItemsList) {
-							if (ObjectUtils.isNotNull(items.getCostprie())) {
-								BigDecimal price = items.getCostprie().divide(items.getGoodsNum(), MathContext.DECIMAL32);
-								returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(price)));
-							}
+							returnCostprie = returnCostprie.add(items.getSubTotalMoney().subtract(items.getReturnsNumber().multiply(items.getCostpriePrice())));
 						}
 						costprie = costprie.subtract(returnCostprie);
-						item.setSalesProfit(subTotalMoney.subtract(returnsAmount).subtract(costprie));
+						item.setSalesProfit(item.getSalesAmount().subtract(costprie));
 					}
 				}
 			}
@@ -1691,6 +1673,6 @@ public class StatisticsServiceImpl implements IStatisticsService {
 	public List<SaleFinancingDetailDto> saleFinancingDetailExport(SaleFinancingDetail saleDetailDto) {
 		saleDetailDto.setTenantId(AuthUtil.getTenantId());
 		saleDetailDto.setSalesCompanyId(AuthUtil.getDeptId());
-        return shipItemsService.saleFinancingList(saleDetailDto);
+		return shipItemsService.saleFinancingList(saleDetailDto);
 	}
 }

+ 7 - 1
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@@ -278,7 +278,7 @@ public class SysClient implements ISysClient {
 
 	@Override
 	@GetMapping(GET_TENANT_IDS)
-	public String getTenantIds(String paramKey) {
+	public List<String>  getTenantIds(String paramKey) {
 		return paramServiceService.getTenants(paramKey);
 	}
 
@@ -289,6 +289,12 @@ public class SysClient implements ISysClient {
 	}
 
 	@Override
+	@GetMapping(GET_TENANT_LIST)
+	public List<Tenant> getTenantList(String tenantId) {
+		return tenantService.getTenantList(tenantId);
+	}
+
+	@Override
 	@GetMapping(TENANT_ID)
 	public R<Tenant> getTenant(String tenantId) {
 		return R.data(tenantService.getByTenantId(tenantId));

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.java

@@ -46,7 +46,7 @@ public interface ParamServiceMapper extends BaseMapper<ParamService> {
     List<ParamService> selectParamService(@Param("tenantId") String tenantId, @Param("salesCompanyId")String salesCompanyId);
 
 	@TenantIgnore
-	String getTenants(@Param("paramKey") String paramKey);
+	List<String>  getTenants(@Param("paramKey") String paramKey);
 
 	@TenantIgnore
 	String getParamServiceShippingFee(@Param("tenantId")String tenantId, @Param("paramKey") String paramKey);

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/mapper/ParamServiceMapper.xml

@@ -26,7 +26,7 @@
         select * from blade_param_service where is_deleted = 0 and tenant_id = #{param1} and sales_company_id = #{salesCompanyId}
     </select>
     <select id="getTenants" resultType="java.lang.String">
-        select GROUP_CONCAT(tenant_id SEPARATOR  ', ') from blade_param_service where is_deleted = 0 and param_key = #{paramKey} and param_value = '1'
+        select tenant_id from blade_param_service where is_deleted = 0 and param_key = #{paramKey} and param_value = '1'
     </select>
     <select id="getParamServiceShippingFee" resultType="java.lang.String">
         select param_value from blade_param_service where is_deleted = 0 and param_key = #{paramKey} and tenant_id = #{tenantId}

+ 4 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java

@@ -18,6 +18,8 @@ package org.springblade.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.system.entity.Tenant;
 
 import java.util.List;
@@ -38,4 +40,6 @@ public interface TenantMapper extends BaseMapper<Tenant> {
 	 */
 	List<Tenant> selectTenantPage(IPage page, Tenant tenant);
 
+	@TenantIgnore
+    List<Tenant> getTenantList(@Param("tenantId") String tenantId);
 }

+ 3 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml

@@ -30,5 +30,8 @@
     <select id="selectTenantPage" resultMap="tenantResultMap">
         select * from blade_tenant where is_deleted = 0
     </select>
+    <select id="getTenantList" resultType="org.springblade.system.entity.Tenant">
+        select * from blade_tenant where is_deleted = 0 and find_in_set(tenant_id, #{tenantId})
+    </select>
 
 </mapper>

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/service/IParamServiceService.java

@@ -47,7 +47,7 @@ public interface IParamServiceService extends IService<ParamService> {
 
     List<ParamService> selectParamService(String tenantId, String salesCompanyId);
 
-    String getTenants(String paramKey);
+	List<String>  getTenants(String paramKey);
 
 	String getParamServiceShippingFee(String tenantId, String paramKey);
 }

+ 2 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java

@@ -75,4 +75,6 @@ public interface ITenantService extends BaseService<Tenant> {
 	boolean setting(Integer accountNumber, Date expireTime, String ids);
 
     R copyData(String tenantId, String tenantIdCopy, String type);
+
+    List<Tenant> getTenantList(String tenantId);
 }

+ 1 - 1
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ParamServiceServiceImpl.java

@@ -83,7 +83,7 @@ public class ParamServiceServiceImpl extends ServiceImpl<ParamServiceMapper, Par
 	}
 
 	@Override
-	public String getTenants(String paramKey) {
+	public List<String>  getTenants(String paramKey) {
 		return baseMapper.getTenants(paramKey);
 	}
 

+ 5 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java

@@ -369,6 +369,11 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
 		return R.data("操作成功");
 	}
 
+	@Override
+	public List<Tenant> getTenantList(String tenantId) {
+		return baseMapper.getTenantList(tenantId);
+	}
+
 	private void recursionLosAuditPathsActs(String tenantId, String tenantIdCopy, Long oldParentId, Long newParentId, Dept dept) {
 		LosAuditPathsActs losAuditPathsActs = new LosAuditPathsActs();
 		losAuditPathsActs.setTenantId(tenantId);