Sfoglia il codice sorgente

达沃特大屏接口

lazhaoqian 3 anni fa
parent
commit
3a3cb3ad37
20 ha cambiato i file con 768 aggiunte e 29 eliminazioni
  1. 9 1
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsDescClient.java
  2. 28 0
      blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/vo/ShipmentsVo.java
  3. 0 1
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java
  4. 28 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/BrandSalesVo.java
  5. 29 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/ChargeMemberVo.java
  6. 34 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderDateVo.java
  7. 28 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderSizeVo.java
  8. 28 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/TopCorpVo.java
  9. 0 1
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java
  10. 9 0
      blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java
  11. 51 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/bigScreen/DeliverBigScreenController.java
  12. 14 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryItemsMapper.java
  13. 37 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryItemsMapper.xml
  14. 9 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/IDeliveryItemsService.java
  15. 7 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java
  16. 111 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/bigScreen/OrderDateController.java
  17. 57 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderItemsMapper.java
  18. 132 23
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderItemsMapper.xml
  19. 37 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderItemsService.java
  20. 120 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java

+ 9 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/ICorpsDescClient.java

@@ -36,7 +36,7 @@ public interface ICorpsDescClient {
 	String GET_COUNT = API_PREFIX + "/count";
 	String LIST_USERID_BY_CORP = API_PREFIX + "/getFleetId";
 	String GET_GOOD_TYPE_MESSAGE = API_PREFIX + "getGoodTypeMessage";
-
+	String GET_CORPS_TYPE = API_PREFIX + "/getCorpsType";
 
 
 	@PostMapping(CORPS_UPDATE)
@@ -120,4 +120,12 @@ public interface ICorpsDescClient {
 	@GetMapping(LIST_USERID_BY_CORP)
 	List<Long> listUserIdCorpId(@RequestParam("corpId") Long corpId);
 
+	/**
+	 * 获取对应类别的客户
+	 * @param corpType 客户类型
+	 * @return
+	 */
+	@GetMapping(GET_CORPS_TYPE)
+	List<CorpsDesc> getCorpsType(@RequestParam("corpType") String corpType);
+
 }

+ 28 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/vo/ShipmentsVo.java

@@ -0,0 +1,28 @@
+package org.springblade.deliver.goods.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 大屏 日发货量统计
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@Data
+public class ShipmentsVo implements Serializable {
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 发货日期
+	 */
+	@ApiModelProperty(value = "发货日期")
+	private String mark;
+	/**
+	 * 发货量
+	 */
+	@ApiModelProperty(value = "发货量")
+	private BigDecimal deliveryNumber;
+}

+ 0 - 1
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderItems.java

@@ -451,7 +451,6 @@ public class OrderItems implements Serializable {
 	 * 尺寸
 	 */
 	@ApiModelProperty(value = "尺寸")
-	@TableField(exist = false)
 	private String size;
 	/**
 	 * 批次号

+ 28 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/BrandSalesVo.java

@@ -0,0 +1,28 @@
+package org.springblade.purchase.sales.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 销售数据大屏在售品牌销量占比
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@Data
+public class BrandSalesVo implements Serializable {
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 所属公司中文名
+	 */
+	@ApiModelProperty(value = "所属公司中文名")
+	private String belongToCorpName;
+	/**
+	 * 占比
+	 */
+	@ApiModelProperty(value = "占比")
+	private BigDecimal orderNumber;
+}

+ 29 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/ChargeMemberVo.java

@@ -0,0 +1,29 @@
+package org.springblade.purchase.sales.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 销售数据大屏top 10 业务员
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@Data
+public class ChargeMemberVo implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 业务员
+	 */
+	@ApiModelProperty(value = "业务员")
+	private String chargeMember;
+	/**
+	 * 数量
+	 */
+	@ApiModelProperty(value = "数量")
+	private BigDecimal orderNumber;
+}

+ 34 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderDateVo.java

@@ -0,0 +1,34 @@
+package org.springblade.purchase.sales.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 销售数据大屏在售品牌信息
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@Data
+public class OrderDateVo implements Serializable {
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 所属公司中文名
+	 */
+	@ApiModelProperty(value = "所属公司中文名")
+	private String belongToCorpName;
+	/**
+	 * 所属公司id
+	 */
+	@ApiModelProperty(value = "所属公司id")
+	private Long belongToCorpId;
+	/**
+	 * 数量
+	 */
+	@ApiModelProperty(value = "数量")
+	private BigDecimal orderNumber;
+
+}

+ 28 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderSizeVo.java

@@ -0,0 +1,28 @@
+package org.springblade.purchase.sales.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 销售数据大屏在售尺寸占比
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@Data
+public class OrderSizeVo implements Serializable {
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 尺寸
+	 */
+	@ApiModelProperty(value = "尺寸")
+	private String size;
+	/**
+	 * 占比
+	 */
+	@ApiModelProperty(value = "占比")
+	private BigDecimal orderNumber;
+}

+ 28 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/TopCorpVo.java

@@ -0,0 +1,28 @@
+package org.springblade.purchase.sales.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 销售数据大屏top 10 代理商
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@Data
+public class TopCorpVo implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 代理商中文名
+	 */
+	@ApiModelProperty(value = "代理商中文名")
+	private String corpName;
+	/**
+	 * 代理商id
+	 */
+	@ApiModelProperty(value = "代理商id")
+	private Long corpId;
+}

+ 0 - 1
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderItems.java

@@ -417,7 +417,6 @@ public class OrderItems extends OrderBase {
 	 * 尺寸
 	 */
 	@ApiModelProperty(value = "尺寸")
-	@TableField(exist = false)
 	private String size;
 	/**
 	 * 英文名称

+ 9 - 0
blade-service/blade-client/src/main/java/org/springblade/client/corps/feign/CorpsDescClient.java

@@ -155,6 +155,15 @@ public class CorpsDescClient implements ICorpsDescClient {
 	}
 
 	@Override
+	public List<CorpsDesc> getCorpsType(String corpType) {
+		LambdaQueryWrapper<CorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(CorpsDesc::getIsDeleted,0);
+		lambdaQueryWrapper.eq(CorpsDesc::getCorpType,corpType);
+		lambdaQueryWrapper.eq(CorpsDesc::getTenantId,SecureUtil.getTenantId());
+		return service.list(lambdaQueryWrapper);
+	}
+
+	@Override
 	public List<Long> getGoodTypeMessage(Long goodTypeId) {
 		return goodsTypeService.goodTypeIdList(goodTypeId.toString());
 	}

+ 51 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/bigScreen/DeliverBigScreenController.java

@@ -0,0 +1,51 @@
+package org.springblade.deliver.goods.bigScreen;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.trade.purchase.order.enums.OrderTypeEnum;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.deliver.goods.service.IDeliveryItemsService;
+import org.springblade.deliver.goods.service.IDeliveryService;
+import org.springblade.deliver.goods.vo.DeliveryVO;
+import org.springblade.deliver.goods.vo.ShipmentsVo;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 达沃特 大屏 发货数据
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/deliveryBigScreen")
+@Api(value = "达沃特数字大屏获取发货信息", tags = "达沃特数字大屏获取发货信息")
+public class DeliverBigScreenController extends BladeController {
+	private final IDeliveryService deliveryService;
+	private final IDeliveryItemsService deliveryItemsService;
+
+	/**
+	 * 达沃特数字大屏获取当月每天发货数量
+	 */
+	@GetMapping("/dailyShipmentStatistics")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "达沃特数字大屏获取当月每天发货数量", notes = "传入delivery")
+	public R<List<ShipmentsVo>> dailyShipmentStatistics(DeliveryVO delivery) {
+		delivery.setTenantId(SecureUtil.getTenantId());
+		delivery.setBillType(OrderTypeEnum.RECEIPT.getType());
+		delivery.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return R.data(deliveryItemsService.dailyShipmentStatistics(delivery));
+	}
+
+}

+ 14 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryItemsMapper.java

@@ -16,11 +16,14 @@
  */
 package org.springblade.deliver.goods.mapper;
 
+import com.baomidou.mybatisplus.annotation.SqlParser;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.vo.DeliveryItemsVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.deliver.goods.vo.ShipmentsVo;
+import org.springblade.purchase.sales.vo.ChargeMemberVo;
 import org.springframework.web.bind.annotation.PostMapping;
 
 import java.util.List;
@@ -59,5 +62,16 @@ public interface DeliveryItemsMapper extends BaseMapper<DeliveryItems> {
 								   @Param("deliveryStatus") String deliveryStatus,
 								   @Param("contractNumber") String contractNumber,
 								   @Param("tradeType")String tradeType);
+	/**
+	 * 达沃特数字大屏获取当月每天发货数量
+	 * @param tradeType 贸易类型
+	 * @param billType  订单类型
+	 * @param tenantId  租户id
+	 * @return
+	 */
+	@SqlParser(filter=true)
+	List<ShipmentsVo> dailyShipmentStatistics(@Param("tradeType")String tradeType,
+											  @Param("billType")String billType,
+											  @Param("tenantId")String tenantId);
 
 }

+ 37 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/mapper/DeliveryItemsMapper.xml

@@ -73,4 +73,41 @@
 	        AND item.contract_number =  #{contractNumber}
 	        AND bd.trade_type = #{tradeType}
     </select>
+    <select id="dailyShipmentStatistics" resultType="org.springblade.deliver.goods.vo.ShipmentsVo">
+        SELECT
+        m.mark AS mark,
+        IFNULL(n.orderNumber,0) AS deliveryNumber
+        FROM
+        (
+        SELECT
+        DAY(date_add(DATE_ADD(curdate(), INTERVAL - DAY(curdate()) + 2 DAY), INTERVAL (cast( help_topic_id AS signed INTEGER ) - 1 ) DAY )) mark
+        from mysql.help_topic
+        where help_topic_id  &lt; day(last_day(curdate()))
+        order by help_topic_id
+        )m
+        LEFT JOIN
+        (
+        SELECT
+        DAY(bd.business_date) AS mark,
+        IFNULL( SUM( bt.quantity ), 0 ) AS orderNumber
+        FROM
+        business_delivery	bd
+        LEFT JOIN ( SELECT pid, IFNULL( SUM( actual_quantity ), 0 ) AS quantity FROM business_delivery_items WHERE is_deleted = 0 AND good_type = 0 GROUP BY pid ) bt ON bt.pid = bd.id
+        WHERE bd.is_deleted = 0
+        AND bd.delivery_status = '已收货'
+        <if test="tenantId!=null and tenantId != ''">
+            AND bd.tenant_id = #{tenantId}
+        </if>
+        <if test="billType!=null and billType != ''">
+            AND bd.bill_type = #{billType}
+        </if>
+        <if test="tradeType!=null and tradeType != ''">
+            AND bd.trade_type = #{tradeType}
+        </if>
+        AND MONTH(bd.business_date) = MONTH(NOW())
+        GROUP BY DAY(bd.business_date)
+        )n
+        ON m.mark = n.mark
+        ORDER BY m.mark
+    </select>
 </mapper>

+ 9 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/IDeliveryItemsService.java

@@ -20,6 +20,10 @@ import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.vo.DeliveryItemsVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.deliver.goods.vo.DeliveryVO;
+import org.springblade.deliver.goods.vo.ShipmentsVo;
+
+import java.util.List;
 
 /**
  * 发货明细 服务类
@@ -42,5 +46,10 @@ public interface IDeliveryItemsService extends IService<DeliveryItems> {
 	 * @param id
 	 */
 	public void updateByPid(Long id);
+	/**
+	 * 达沃特数字大屏获取当月每天发货数量
+	 * @return
+	 */
+	List<ShipmentsVo> dailyShipmentStatistics(DeliveryVO delivery);
 
 }

+ 7 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -33,6 +33,8 @@ import org.springblade.deliver.goods.vo.DeliveryItemsVO;
 import org.springblade.deliver.goods.mapper.DeliveryItemsMapper;
 import org.springblade.deliver.goods.service.IDeliveryItemsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.deliver.goods.vo.DeliveryVO;
+import org.springblade.deliver.goods.vo.ShipmentsVo;
 import org.springblade.finance.feign.IFinanceClient;
 import org.springblade.mocha.entity.BusinessOverpaymentItem;
 import org.springblade.mocha.entity.BusinessPointsItem;
@@ -605,6 +607,11 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		baseMapper.updateByPid(id);
 	}
 
+	@Override
+	public List<ShipmentsVo> dailyShipmentStatistics(DeliveryVO delivery) {
+		return baseMapper.dailyShipmentStatistics(delivery.getTradeType(),delivery.getBillType(),delivery.getTenantId());
+	}
+
 	/**
 	 * 修改客户积分信息
 	 * @param delivery 发货主表信息

+ 111 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/bigScreen/OrderDateController.java

@@ -0,0 +1,111 @@
+package org.springblade.purchase.sales.bigScreen;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.trade.purchase.order.enums.OrderTypeEnum;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.service.IOrderItemsService;
+import org.springblade.purchase.sales.service.IOrderService;
+import org.springblade.purchase.sales.vo.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 国内销售数字大屏
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/orderData")
+@Api(value = "国内销售数字大屏", tags = "国内销售数字大屏")
+public class OrderDateController extends BladeController {
+	private final IOrderService orderService;
+	private final IOrderItemsService orderItemsService;
+
+	/**
+	 * 大屏在售品牌
+	 */
+	@GetMapping("/orderNumber")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "大屏在售品牌", notes = "传入order")
+	public R<List<OrderDateVo>> orderNumber(Order order) {
+		order.setTenantId(SecureUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.SALES.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return R.data(orderItemsService.orderData(order));
+	}
+	/**
+	 * 大屏在售品牌销量占比
+	 */
+	@GetMapping("/brandSales")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "大屏品牌销量占比", notes = "传入order")
+	public R<List<BrandSalesVo>> brandSales(Order order) {
+		order.setTenantId(SecureUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.SALES.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return R.data(orderItemsService.brandSales(order));
+	}
+	/**
+	 * 大屏当月销量
+	 */
+	@GetMapping("/orderMonthNUmber")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "大屏当月销量", notes = "传入order")
+	public R<BigDecimal> orderMonthNUmber(Order order) {
+		order.setTenantId(SecureUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.SALES.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return R.data(orderItemsService.orderMonthNUmber(order));
+	}
+	/**
+	 * 达沃特数字大屏获取代理商销量前十
+	 */
+	@GetMapping("/topCorp")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "达沃特数字大屏获取代理商销量前十", notes = "传入order")
+	public R<List<TopCorpVo>> topCorp(Order order) {
+		order.setTenantId(SecureUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.SALES.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return R.data(orderItemsService.topCorp(order));
+	}
+	/**
+	 * 达沃特数字大屏获取业务员销量前十
+	 */
+	@GetMapping("/chargeMember")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "达沃特数字大屏获取业务员销量前十", notes = "传入order")
+	public R<List<ChargeMemberVo>> chargeMember(Order order) {
+		order.setTenantId(SecureUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.SALES.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return R.data(orderItemsService.chargeMember(order));
+	}
+	/**
+	 * 达沃特数字大屏获取尺寸占比
+	 */
+	@GetMapping("/orderSize")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "达沃特数字大屏获取尺寸占比", notes = "传入order")
+	public R<List<OrderSizeVo>> orderSize(Order order) {
+		order.setTenantId(SecureUtil.getTenantId());
+		order.setBillType(OrderTypeEnum.SALES.getType());
+		order.setTradeType(OrderTypeEnum.DOMESTIC.getType());
+		return R.data(orderItemsService.orderSize(order));
+	}
+}

+ 57 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderItemsMapper.java

@@ -18,9 +18,11 @@ package org.springblade.purchase.sales.mapper;
 
 import org.apache.ibatis.annotations.Param;
 import org.springblade.purchase.sales.entity.OrderItems;
-import org.springblade.purchase.sales.vo.OrderItemsVO;
+import org.springblade.purchase.sales.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -98,4 +100,58 @@ public interface OrderItemsMapper extends BaseMapper<OrderItems> {
 										   @Param("tradeType")String tradeType,
 										   @Param("tenantId")String tenantId);
 
+	/**
+	 * 达沃特数字大屏获取品牌销售量
+	 * @param tradeType 贸易类型
+	 * @param billType  订单类型
+	 * @param tenantId  租户id
+	 * @return
+	 */
+	List<OrderDateVo> orderData(@Param("tradeType")String tradeType,
+								@Param("billType")String billType,
+								@Param("tenantId")String tenantId);
+
+	/**
+	 * 获取当月销售数量
+	 * @param tradeType  贸易类型
+	 * @param billType   订单类型
+	 * @param tenantId   租户id
+	 * @return
+	 */
+	BigDecimal orderMonthNUmber(@Param("tradeType")String tradeType,
+								@Param("billType")String billType,
+								@Param("tenantId")String tenantId);
+	/**
+	 * 达沃特数字大屏获取代理商销量前十
+	 * @param tradeType 贸易类型
+	 * @param billType  订单类型
+	 * @param tenantId  租户id
+	 * @return
+	 */
+	List<TopCorpVo> topCorp(@Param("tradeType")String tradeType,
+							@Param("billType")String billType,
+							@Param("tenantId")String tenantId);
+
+	/**
+	 * 达沃特数字大屏获取业务员销量前十
+	 * @param tradeType 贸易类型
+	 * @param billType  订单类型
+	 * @param tenantId  租户id
+	 * @return
+	 */
+	List<ChargeMemberVo> chargeMember(@Param("tradeType")String tradeType,
+									  @Param("billType")String billType,
+									  @Param("tenantId")String tenantId);
+
+	/**
+	 * 达沃特数字大屏获取尺寸占比
+	 * @param tradeType 贸易类型
+	 * @param billType  订单类型
+	 * @param tenantId  租户id
+	 * @return
+	 */
+	List<OrderSizeVo> orderSize(@Param("tradeType")String tradeType,
+								@Param("billType")String billType,
+								@Param("tenantId")String tenantId);
+
 }

+ 132 - 23
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderItemsMapper.xml

@@ -93,14 +93,14 @@
         LEFT JOIN basic_goods_desc bg ON item.item_id = bg.id
         LEFT JOIN basic_corps_desc bc ON od.corp_id = bc.id
         WHERE
-	        item.is_deleted = 0
-	        and od.is_deleted = 0
-            and item.tenant_id = #{tenantId}
+        item.is_deleted = 0
+        and od.is_deleted = 0
+        and item.tenant_id = #{tenantId}
         <if test="corpId!=null">
             and od.corp_id = #{corpId}
         </if>
         <if test="orderNo!=null and orderNo != ''">
-            and od.order_no like concat(concat('%',  #{orderNo}),'%')
+            and od.order_no like concat(concat('%', #{orderNo}),'%')
         </if>
         <if test="billType!=null and billType != ''">
             and od.bill_type = #{billType}
@@ -216,25 +216,134 @@ WHERE
 	And a.tenant_id = #{tenantId}
     </select>
     <select id="historyPrice" resultType="map">
-    SELECT
-	a.busines_date AS businesDate,
-    IFNULL(b.price,0)AS price,
-	b.remarks AS remarks
-FROM
-	business_order a,
-	business_order_items b
-WHERE
-	b.pid = a.id
-	AND a.is_deleted = 0
-	AND b.is_deleted = 0
-	AND a.bill_type = #{billType}
-	AND b.item_id = #{itemId}
-	AND a.trade_type = #{tradeType}
-	And a.tenant_id = #{tenantId}
-	ORDER BY a.busines_date DESC,b.create_time DESC
-	<if test="typeId != null">
-        LIMIT 1
-    </if>
+        SELECT
+        a.busines_date AS businesDate,
+        IFNULL(b.price,0)AS price,
+        b.remarks AS remarks
+        FROM
+        business_order a,
+        business_order_items b
+        WHERE
+        b.pid = a.id
+        AND a.is_deleted = 0
+        AND b.is_deleted = 0
+        AND a.bill_type = #{billType}
+        AND b.item_id = #{itemId}
+        AND a.trade_type = #{tradeType}
+        And a.tenant_id = #{tenantId}
+        ORDER BY a.busines_date DESC,b.create_time DESC
+        <if test="typeId != null">
+            LIMIT 1
+        </if>
 
     </select>
+    <select id="orderData" resultType="org.springblade.purchase.sales.vo.OrderDateVo">
+        SELECT
+        bo.belong_to_corp_id AS belongToCorpId,
+        IFNULL( SUM( bt.quantity ), 0 ) AS orderNumber
+        FROM
+        business_order bo
+        LEFT JOIN ( SELECT pid, IFNULL( SUM( order_quantity ), 0 ) AS quantity FROM business_order_items WHERE is_deleted = 0 AND good_type = 0 GROUP BY pid ) bt ON bt.pid = bo.id
+        WHERE bo.is_deleted = 0
+	        AND bo.`status` = 3
+            <if test="tenantId!=null and tenantId != ''">
+            AND bo.tenant_id = #{tenantId}
+            </if>
+            <if test="billType!=null and billType != ''">
+            AND bo.bill_type = #{billType}
+            </if>
+            <if test="tradeType!=null and tradeType != ''">
+            AND bo.trade_type = #{tradeType}
+            </if>
+	        GROUP BY bo.belong_to_corp_id
+    </select>
+    <select id="orderMonthNUmber" resultType="BigDecimal">
+        SELECT
+        IFNULL( SUM( bt.order_quantity ), 0 ) AS orderNumber
+        FROM
+        business_order_items bt
+        LEFT JOIN business_order bo
+        ON bt.pid = bo.id
+        WHERE bo.is_deleted = 0
+        AND bt.is_deleted = 0
+        AND bo.`status` = 3
+        AND bt.good_type = 0
+        AND MONTH(bo.busines_date) = MONTH(NOW())
+        <if test="tenantId!=null and tenantId != ''">
+            AND bo.tenant_id = #{tenantId}
+        </if>
+        <if test="billType!=null and billType != ''">
+            AND bo.bill_type = #{billType}
+        </if>
+        <if test="tradeType!=null and tradeType != ''">
+            AND bo.trade_type = #{tradeType}
+        </if>
+    </select>
+    <select id="topCorp" resultType="org.springblade.purchase.sales.vo.TopCorpVo">
+        SELECT
+        bo.corp_id AS corpId,
+        IFNULL( SUM( bt.quantity ), 0 ) AS orderNumber
+        FROM
+        business_order bo
+        LEFT JOIN ( SELECT pid, IFNULL( SUM( order_quantity ), 0 ) AS quantity FROM business_order_items WHERE is_deleted = 0 AND good_type = 0 GROUP BY pid ) bt ON bt.pid = bo.id
+        WHERE bo.is_deleted = 0
+        AND bo.`status` = 3
+        <if test="tenantId!=null and tenantId != ''">
+            AND bo.tenant_id = #{tenantId}
+        </if>
+        <if test="billType!=null and billType != ''">
+            AND bo.bill_type = #{billType}
+        </if>
+        <if test="tradeType!=null and tradeType != ''">
+            AND bo.trade_type = #{tradeType}
+        </if>
+        GROUP BY bo.corp_id
+        ORDER BY IFNULL( SUM( bt.quantity ), 0 ) DESC
+        LIMIT 10
+    </select>
+    <select id="chargeMember" resultType="org.springblade.purchase.sales.vo.ChargeMemberVo">
+        SELECT
+        bo.charge_member AS chargeMember,
+        IFNULL( SUM( bt.quantity ), 0 ) AS orderNumber
+        FROM
+        business_order bo
+        LEFT JOIN ( SELECT pid, IFNULL( SUM( order_quantity ), 0 ) AS quantity FROM business_order_items WHERE is_deleted = 0 AND good_type = 0 GROUP BY pid ) bt ON bt.pid = bo.id
+        WHERE bo.is_deleted = 0
+        AND bo.`status` = 3
+        <if test="tenantId!=null and tenantId != ''">
+            AND bo.tenant_id = #{tenantId}
+        </if>
+        <if test="billType!=null and billType != ''">
+            AND bo.bill_type = #{billType}
+        </if>
+        <if test="tradeType!=null and tradeType != ''">
+            AND bo.trade_type = #{tradeType}
+        </if>
+        GROUP BY bo.charge_member
+        ORDER BY IFNULL( SUM( bt.quantity ), 0 ) DESC
+        LIMIT 10
+    </select>
+    <select id="orderSize" resultType="org.springblade.purchase.sales.vo.OrderSizeVo">
+        SELECT
+        bt.size AS size,
+        IFNULL( SUM( bt.order_quantity ), 0 ) AS orderNumber
+        FROM
+        business_order_items bt
+        LEFT JOIN business_order bo ON bt.pid = bo.id
+        WHERE
+        bo.is_deleted = 0
+        AND bt.is_deleted = 0
+        AND bo.`status` = 3
+        AND bt.good_type = 0
+        <if test="tenantId!=null and tenantId != ''">
+            AND bo.tenant_id = #{tenantId}
+        </if>
+        <if test="billType!=null and billType != ''">
+            AND bo.bill_type = #{billType}
+        </if>
+        <if test="tradeType!=null and tradeType != ''">
+            AND bo.trade_type = #{tradeType}
+        </if>
+        GROUP BY bt.size
+    </select>
 </mapper>

+ 37 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderItemsService.java

@@ -21,10 +21,11 @@ import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.excel.DealerOrderItem;
 import org.springblade.purchase.sales.excel.OrderItemsExcel;
-import org.springblade.purchase.sales.vo.OrderItemsVO;
+import org.springblade.purchase.sales.vo.*;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -113,4 +114,39 @@ public interface IOrderItemsService extends IService<OrderItems> {
 	 */
 	List<Map<String,Object>> historyPrice(Long itemId,Long typeId,String billType,String tradeType);
 
+	/**
+	 * 达沃特数字大屏在售品牌
+	 * @param order
+	 * @return
+	 */
+	List<OrderDateVo> orderData(Order order);
+	/**
+	 * 达沃特数字大屏 品牌销量占比
+	 * @param order
+	 * @return
+	 */
+	List<BrandSalesVo> brandSales(Order order);
+
+	/**
+	 * 达沃特数字大屏 当月销量
+	 * @param order
+	 * @return
+	 */
+	BigDecimal orderMonthNUmber(Order order);
+	/**
+	 * 达沃特数字大屏获取代理商销量前十
+	 * @return
+	 */
+	List<TopCorpVo> topCorp(Order order);
+	/**
+	 * 达沃特数字大屏获取业务员销量前十
+	 * @return
+	 */
+	List<ChargeMemberVo> chargeMember(Order order);
+	/**
+	 * 达沃特数字大屏获取尺寸占比
+	 * @return
+	 */
+	List<OrderSizeVo> orderSize(Order order);
+
 }

+ 120 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java

@@ -19,11 +19,14 @@ package org.springblade.purchase.sales.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.trade.purchase.order.enums.OrderTypeEnum;
 import lombok.AllArgsConstructor;
+import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.entity.GoodsType;
+import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
 import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.SecureUtil;
@@ -38,7 +41,7 @@ import org.springblade.purchase.sales.excel.OrderItemsExcel;
 import org.springblade.purchase.sales.mapper.OrderItemsMapper;
 import org.springblade.purchase.sales.mapper.OrderPartsMapper;
 import org.springblade.purchase.sales.service.IOrderItemsService;
-import org.springblade.purchase.sales.vo.OrderItemsVO;
+import org.springblade.purchase.sales.vo.*;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.system.user.entity.User;
@@ -83,6 +86,8 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 	private final IUserClient iUserClient;
 
 	private final ISalesPolicyClient salesPolicyClient;
+	//获取客户信息
+	private final ICorpsDescClient corpsDescClient;
 
 	@Resource
 	private OrderPartsMapper orderPartsMapper;
@@ -358,4 +363,118 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 		return baseMapper.historyPrice(itemId,typeId,billType,tradeType,SecureUtil.getTenantId());
 	}
 
+	@Override
+	public List<OrderDateVo> orderData(Order order) {
+		if (StringUtils.isBlank(order.getTenantId())){
+			order.setTenantId(SecureUtil.getTenantId());
+		}
+		List<OrderDateVo> list = new ArrayList<>();
+		//根据所属公司分类获取其对应的销量
+		List<OrderDateVo> orderDateVoList = baseMapper.orderData(order.getTradeType(), order.getBillType(), order.getTenantId());
+		//获取所属公司
+		List<CorpsDesc> corpsType = corpsDescClient.getCorpsType("GS");
+		if (CollectionUtils.isNotEmpty(corpsType) && CollectionUtils.isNotEmpty(orderDateVoList)){
+			for (CorpsDesc corpsDesc : corpsType) {
+				OrderDateVo orderDateVo = new OrderDateVo();
+				orderDateVo.setBelongToCorpName(corpsDesc.getCname());
+				orderDateVo.setOrderNumber(orderDateVoList.stream().filter(e -> e.getBelongToCorpId().longValue()==corpsDesc.getId().longValue()).map(OrderDateVo::getOrderNumber).reduce(BigDecimal.ZERO, BigDecimal::add));
+				list.add(orderDateVo);
+			}
+		}else if (CollectionUtils.isNotEmpty(corpsType) && CollectionUtils.isEmpty(orderDateVoList)){
+			for (CorpsDesc corpsDesc : corpsType) {
+				OrderDateVo orderDateVo = new OrderDateVo();
+				orderDateVo.setBelongToCorpName(corpsDesc.getCname());
+				orderDateVo.setOrderNumber(BigDecimal.ZERO);
+				list.add(orderDateVo);
+			}
+		}
+		return list;
+	}
+
+	@Override
+	public List<BrandSalesVo> brandSales(Order order) {
+		if (StringUtils.isBlank(order.getTenantId())){
+			order.setTenantId(SecureUtil.getTenantId());
+		}
+		List<BrandSalesVo> list = new ArrayList<>();
+		//根据所属公司分类获取其对应的销量
+		List<OrderDateVo> orderDateVoList = baseMapper.orderData(order.getTradeType(), order.getBillType(), order.getTenantId());
+		//获取所属公司
+		List<CorpsDesc> corpsType = corpsDescClient.getCorpsType("GS");
+		if (CollectionUtils.isNotEmpty(corpsType) && CollectionUtils.isNotEmpty(orderDateVoList)){
+			//获取总销量
+			BigDecimal decimal = orderDateVoList.stream().map(OrderDateVo::getOrderNumber).reduce(BigDecimal.ZERO, BigDecimal::add);
+			for (CorpsDesc corpsDesc : corpsType) {
+				BrandSalesVo brandSalesVo = new BrandSalesVo();
+				brandSalesVo.setBelongToCorpName(corpsDesc.getCname());
+				if (decimal.compareTo(BigDecimal.ZERO) >0 ){
+					brandSalesVo.setOrderNumber(orderDateVoList.stream().filter(e -> e.getBelongToCorpId().longValue()==corpsDesc.getId().longValue())
+						.map(OrderDateVo::getOrderNumber).reduce(BigDecimal.ZERO, BigDecimal::add).divide(decimal, 5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+				}else {
+					brandSalesVo.setOrderNumber(BigDecimal.ZERO);
+				}
+				list.add(brandSalesVo);
+			}
+		}else if (CollectionUtils.isNotEmpty(corpsType) && CollectionUtils.isEmpty(orderDateVoList)){
+			for (CorpsDesc corpsDesc : corpsType) {
+				BrandSalesVo brandSalesVo = new BrandSalesVo();
+				brandSalesVo.setBelongToCorpName(corpsDesc.getCname());
+				brandSalesVo.setOrderNumber(BigDecimal.ZERO);
+				list.add(brandSalesVo);
+			}
+		}
+		return list;
+	}
+
+	@Override
+	public BigDecimal orderMonthNUmber(Order order) {
+		if (StringUtils.isBlank(order.getTenantId())){
+			order.setTenantId(SecureUtil.getTenantId());
+		}
+		return baseMapper.orderMonthNUmber(order.getTradeType(), order.getBillType(), order.getTenantId());
+	}
+
+	@Override
+	public List<TopCorpVo> topCorp(Order order) {
+		if (StringUtils.isBlank(order.getTenantId())){
+			order.setTenantId(SecureUtil.getTenantId());
+		}
+		List<TopCorpVo> corpVoList = baseMapper.topCorp(order.getTradeType(), order.getBillType(), order.getTenantId());
+		if (CollectionUtils.isNotEmpty(corpVoList)){
+			for (TopCorpVo topCorpVo : corpVoList) {
+				if (topCorpVo.getCorpId() !=null){
+					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(topCorpVo.getCorpId());
+					if (corpMessage.isSuccess() && corpMessage.getData() !=null){
+						topCorpVo.setCorpName(corpMessage.getData().getCname());
+					}
+				}
+			}
+		}
+		return corpVoList;
+	}
+
+	@Override
+	public List<ChargeMemberVo> chargeMember(Order order) {
+		if (StringUtils.isBlank(order.getTenantId())){
+			order.setTenantId(SecureUtil.getTenantId());
+		}
+		return baseMapper.chargeMember(order.getTradeType(), order.getBillType(), order.getTenantId());
+	}
+
+	@Override
+	public List<OrderSizeVo> orderSize(Order order) {
+		if (StringUtils.isBlank(order.getTenantId())){
+			order.setTenantId(SecureUtil.getTenantId());
+		}
+		List<OrderSizeVo> orderSizeVoList = baseMapper.orderSize(order.getTradeType(), order.getBillType(), order.getTenantId());
+		if (CollectionUtils.isNotEmpty(orderSizeVoList)){
+			//获取总销量
+			BigDecimal decimal = orderSizeVoList.stream().map(OrderSizeVo::getOrderNumber).reduce(BigDecimal.ZERO, BigDecimal::add);
+			for (OrderSizeVo orderSizeVo : orderSizeVoList) {
+				orderSizeVo.setOrderNumber(orderSizeVo.getOrderNumber().divide(decimal, 5, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
+			}
+		}
+		return orderSizeVoList;
+	}
+
 }