浏览代码

统计分析-销售人员提成列表和搜索显示导出

lichao 3 年之前
父节点
当前提交
022ec05ace

+ 4 - 0
blade-service-api/blade-purchase-sales-api/pom.xml

@@ -17,6 +17,10 @@
             <groupId>org.springblade</groupId>
             <artifactId>blade-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+        </dependency>
     </dependencies>
 
 

+ 7 - 6
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/SalesDetailsVo.java

@@ -1,8 +1,7 @@
 package org.springblade.purchase.sales.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -18,7 +17,7 @@ import java.util.Date;
 public class SalesDetailsVo implements Serializable {
 	private static final long serialVersionUID = 1L;
 	//租户id
-	private String tenandId;
+	private String tenantId;
 	//销售订单表主键
 	private Long orderId;
 	//销售订单物料明细主键
@@ -32,7 +31,7 @@ public class SalesDetailsVo implements Serializable {
 	//客户名称
 	private String corpName;
 	//时间
-	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
 	private Date careteTime;
 	//业务员
 	private String salesName;
@@ -43,7 +42,7 @@ public class SalesDetailsVo implements Serializable {
 	//花纹
 	private String brandItem;
 	//数量
-	private BigDecimal quantity;
+	private Long quantity;
 	//金额
 	private BigDecimal amount;
 	//单价
@@ -53,6 +52,9 @@ public class SalesDetailsVo implements Serializable {
 	//包装费
 	private BigDecimal feesAmount;
 	//特价金额
+	private BigDecimal specialPrice;
+	//订单号
+	private String orderNo;
 
 	//开始日期
 	private String beginCreateTime;
@@ -60,7 +62,6 @@ public class SalesDetailsVo implements Serializable {
 	private String endCreateTime;
 	//品牌
 	private String brand;
-
 	//尺寸
 	private String specs;
 

+ 2 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/DeliveryController.java

@@ -99,6 +99,8 @@ public class DeliveryController extends BladeController {
 		lambdaQueryWrapper.eq(Delivery::getTradeType,OrderTypeEnum.DOMESTIC.getType());
 		lambdaQueryWrapper.eq(delivery.getSalesCompany()!=null,Delivery::getSalesCompany,delivery.getSalesCompany());
 		lambdaQueryWrapper.like(StringUtils.isNotBlank(delivery.getPurchaseMode()),Delivery::getPurchaseMode,delivery.getPurchaseMode());
+		System.out.println("开始时间========================="+delivery.getCreateStartTime());
+		System.out.println("结束时间========================="+delivery.getCreateEndTime());
 		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getCreateStartTime()),Delivery::getCreateTime,delivery.getCreateStartTime());//制单日期开始
 		lambdaQueryWrapper.le(Func.isNotEmpty(delivery.getCreateEndTime()),Delivery::getCreateTime,delivery.getCreateEndTime());//制单日期结束
 		lambdaQueryWrapper.ge(Func.isNotEmpty(delivery.getBusinessStartDate()),Delivery::getBusinessDate,delivery.getBusinessStartDate());//发货日期开始

+ 55 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/SalesCommissionExcel.java

@@ -0,0 +1,55 @@
+package org.springblade.purchase.sales.excel;
+
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ *  统计分析 销售人员提成导出
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class SalesCommissionExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 品牌
+	 */
+	@ExcelProperty(value = "品牌")
+	private String brand;
+
+	/**
+	 * 业务员
+	 */
+	@ExcelProperty(value = "业务员")
+	private String salesName;
+
+	/**
+	 * 制单日期
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@ExcelProperty(value = "制单日期")
+	private Date careteTime;
+
+	/**
+	 * 尺寸
+	 */
+	@ExcelProperty(value = "尺寸")
+	private String specs;
+
+	/**
+	 * 数量
+	 */
+	@ExcelProperty(value = "数量")
+	private Long quantity;
+}

+ 10 - 2
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/SalesDetailsExcel.java

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.alibaba.excel.annotation.write.style.ContentRowHeight;
 import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -29,6 +30,7 @@ public class SalesDetailsExcel implements Serializable {
 	/**
 	 * 时间
 	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
 	@ExcelProperty(value = "时间")
 	private Date careteTime;
 
@@ -60,7 +62,7 @@ public class SalesDetailsExcel implements Serializable {
 	 * 数量
 	 */
 	@ExcelProperty(value = "数量")
-	private BigDecimal quantity;
+	private Long quantity;
 
 	/**
 	 * 金额
@@ -72,7 +74,7 @@ public class SalesDetailsExcel implements Serializable {
 	 * 单价
 	 */
 	@ExcelProperty(value = "单价")
-	private BigDecimal piace;
+	private BigDecimal prace;
 
 	/**
 	 * 回款额
@@ -89,4 +91,10 @@ public class SalesDetailsExcel implements Serializable {
 	/**
 	 * 特价金额
 	 */
+
+	/**
+	 * 包装费
+	 */
+	@ExcelProperty(value = "订单号")
+	private String orderNo;
 }

+ 23 - 13
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java

@@ -28,10 +28,7 @@ import org.springblade.finance.vojo.Acc;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderFees;
 import org.springblade.purchase.sales.entity.OrderItems;
-import org.springblade.purchase.sales.excel.EnquiryExcel;
-import org.springblade.purchase.sales.excel.ExportOrderExcel;
-import org.springblade.purchase.sales.excel.ProfitItemExcel;
-import org.springblade.purchase.sales.excel.SalesDetailsExcel;
+import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.service.*;
 import org.springblade.purchase.sales.vo.*;
 import org.springblade.system.user.entity.User;
@@ -657,7 +654,7 @@ public class ExportOrderController extends BladeController {
 	@ApiOperation(value = "统计分析 销售明细", notes = "统计分析 销售明细")
 	public R<IPage<SalesDetailsVo>> selBusinessOrder(SalesDetailsVo detailsVo, Query query)
 	{
-		detailsVo.setTenandId(SecureUtil.getTenantId());
+		detailsVo.setTenantId(SecureUtil.getTenantId());
 		IPage<SalesDetailsVo> pages = orderService.selBusinessOrder(Condition.getPage(query), detailsVo);
 		return R.data(pages);
 	}
@@ -665,13 +662,13 @@ public class ExportOrderController extends BladeController {
 	/**
 	 * 统计分析 销售明细导出
 	 */
-//	@GetMapping("/salesDetailsExport")
-//	@ApiOperation(value = "销售明细导出", notes = "销售明细导出")
-//	public void salesDetailsExport(SalesDetailsVo detailsVo, Query query, HttpServletResponse response){
-//		List<SalesDetailsExcel> enquiryExcels = new ArrayList<>();
-//		List<SalesDetailsVo> list = orderService.salesDetailsExport(detailsVo);;
-//		ExcelUtil.export(response, "销售明细", "销售明细", enquiryExcels, SalesDetailsExcel.class);
-//	}
+	@GetMapping("/salesDetailsExport")
+	@ApiOperation(value = "销售明细导出", notes = "销售明细导出")
+	public void salesDetailsExport(SalesDetailsVo detailsVo, Query query, HttpServletResponse response){
+		detailsVo.setTenantId(SecureUtil.getTenantId());
+		List<SalesDetailsExcel> list = orderService.salesDetailsExport(detailsVo);
+		ExcelUtil.export(response, "销售明细", "销售明细", list, SalesDetailsExcel.class);
+	}
 
 	/**
 	 * 统计分析 销售人员提成列表和检索条件查询
@@ -682,8 +679,21 @@ public class ExportOrderController extends BladeController {
 	@GetMapping("/salesCommission")
 	@ApiOperation(value = "销售人员提成", notes = "销售人员提成")
 	public R<IPage<SalesDetailsVo>> salesCommission(SalesDetailsVo detailsVo,Query query){
-		detailsVo.setTenandId(SecureUtil.getTenantId());
+		detailsVo.setTenantId(SecureUtil.getTenantId());
 		IPage<SalesDetailsVo> pages = orderService.salesCommission(Condition.getPage(query), detailsVo);
 		return R.data(pages);
 	}
+
+	/**
+	 * 统计分析 销售人员提成列表导出
+	 * @param detailsVo
+	 * @return
+	 */
+	@GetMapping("/salesCommissionExport")
+	@ApiOperation(value = "销售人员提成导出", notes = "销售人员提成导出")
+	public void salesCommissionExport(SalesDetailsVo detailsVo, HttpServletResponse response){
+		detailsVo.setTenantId(SecureUtil.getTenantId());
+		List<SalesCommissionExcel> list = orderService.salesCommissionList(detailsVo);
+		ExcelUtil.export(response, "销售人员提成", "销售人员提成", list, SalesCommissionExcel.class);
+	}
 }

+ 11 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java

@@ -22,6 +22,8 @@ import com.sun.javafx.collections.MappingChange;
 import com.trade.purchase.order.vo.OrderDTO;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.excel.SalesCommissionExcel;
+import org.springblade.purchase.sales.excel.SalesDetailsExcel;
 import org.springblade.purchase.sales.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -84,11 +86,20 @@ public interface OrderMapper extends BaseMapper<Order> {
 	List<SalesDetailsVo> selBusinessOrder(IPage<SalesDetailsVo> page,@Param("detailsVo") SalesDetailsVo detailsVo);
 
 	/**
+	 * 统计分析 销售明细导出
+	 */
+	List<SalesDetailsExcel> salesDetailsExport(@Param("detailsVo") SalesDetailsVo detailsVo);
+
+	/**
 	 * 统计分析 销售人员提成列表和检索条件查询
 	 */
 	List<SalesDetailsVo> salesCommission(IPage<SalesDetailsVo> page,@Param("detailsVo") SalesDetailsVo detailsVo);
 
 	/**
+	 * 统计分析 销售人员提成列表导出
+	 */
+	List<SalesCommissionExcel> salesCommissionList(@Param("detailsVo") SalesDetailsVo detailsVo);
+	/**
 	 * 首页获取销售趋势
 	 * @param tenantId 租户id
 	 * @param tradeType 贸易类型

+ 93 - 13
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml

@@ -538,22 +538,71 @@ ORDER BY
         BO.Corp_id AS corpid,
         BCD.cname AS corpName,
         BO.create_time AS careteTime,
-        BO.Sales_name AS salesName,
+        BO.charge_member AS salesName,
         BGD.id AS commodityId,
         BGD.code AS commodityCode,
         BGD.Typeno AS typeno,
         BGD.brand_item AS brandItem,
-        BOI.Actual_quantity AS quantity,
+        BOI.order_quantity AS quantity,
         Round(BOI.Amount, 2) AS amount,
-        BGD.Price AS price,
+        BOI.Price AS price,
         BO.Settlment_amount AS settlmentAmount,
         (CASE WHEN
             BO.package_remarks != '有包装'
         THEN
+            0.00
+        ELSE
             BOF.Amount
+        END) AS feesAmount,
+        BGD.Brand AS brand,
+        BO.order_no as orderNo
+        FROM business_order_items AS BOI
+        LEFT JOIN business_order BO ON BOI.pid = BO.id
+        LEFT JOIN basic_goods_desc BGD ON BOI.Item_id = BGD.id
+        LEFT JOIN business_order_fees BOF ON BOF.pid = BO.id
+        LEFT JOIN basic_corps_desc BCD ON BO.Corp_id = BCD.id
+        <where>
+            BOI.is_deleted = 0
+            AND BO.bill_type = 'XS'
+            AND BO.tenant_id = #{detailsVo.tenantId}
+            <if test="detailsVo.corpName != null and detailsVo.corpName != ''">
+                AND BCD.cname like concat('%', #{detailsVo.corpName}, '%')
+            </if>
+            <if test="detailsVo.brand != null and detailsVo.brand != ''">
+                AND BGD.Brand like concat('%', #{detailsVo.brand}, '%')
+            </if>
+            <if test="detailsVo.salesName != null and detailsVo.salesName != ''">
+                AND BO.Sales_name like concat('%', #{detailsVo.salesName}, '%')
+            </if>
+            <if test="detailsVo.beginCreateTime !=null and detailsVo.beginCreateTime != ''">
+                and BO.create_time &gt;= #{detailsVo.beginCreateTime}
+            </if>
+            <if test="detailsVo.endCreateTime !=null and detailsVo.endCreateTime != ''">
+                and BO.create_time &lt;= #{detailsVo.endCreateTime}
+            </if>
+        </where>
+        order by BO.create_time desc
+    </select>
+
+    <select id="salesDetailsExport" resultType="org.springblade.purchase.sales.excel.SalesDetailsExcel">
+        SELECT
+        BCD.cname AS corpName,
+        BO.create_time AS careteTime,
+        BO.charge_member AS salesName,
+        BGD.code AS commodityCode,
+        BGD.Typeno AS typeno,
+        BGD.brand_item AS brandItem,
+        BOI.order_quantity AS quantity,
+        Round(BOI.Amount, 2) AS amount,
+        BOI.Price AS price,
+        BO.Settlment_amount AS settlmentAmount,
+        (CASE WHEN
+        BO.package_remarks != '有包装'
+        THEN
+        BOF.Amount
         ELSE ''
         END) AS feesAmount,
-        BGD.Brand AS brand
+        BO.order_no as orderNo
         FROM business_order_items AS BOI
         LEFT JOIN business_order BO ON BOI.pid = BO.id
         LEFT JOIN basic_goods_desc BGD ON BOI.Item_id = BGD.id
@@ -561,7 +610,8 @@ ORDER BY
         LEFT JOIN basic_corps_desc BCD ON BO.Corp_id = BCD.id
         <where>
             BOI.is_deleted = 0
-            AND BO.tenant_id = #{detailsVo.tenandId}
+            AND BO.bill_type = 'XS'
+            AND BO.tenant_id = #{detailsVo.tenantId}
             <if test="detailsVo.corpName != null and detailsVo.corpName != ''">
                 AND BCD.cname like concat('%', #{detailsVo.corpName}, '%')
             </if>
@@ -586,22 +636,52 @@ ORDER BY
             bo.id as orderId,
             boi.id as itemsId,
             bgd.brand as brand,
-            bo.sales_name as salesName,
+            bo.saleman as salesName,
             bo.create_time as careteTime,
-            bgd.specs as specs,
-            boi.actual_quantity as quantity
-        FROM business_order bo
-        LEFT JOIN business_order_items boi on boi.pid = bo.id
+            bgd.size as specs,
+            boi.Actual_quantity as quantity
+        FROM business_delivery bo
+        LEFT JOIN business_delivery_items boi on boi.pid = bo.id
+        LEFT JOIN basic_goods_desc bgd on bgd.id = boi.item_id
+        <where>
+            bo.bill_type = 'FH'
+            AND bo.is_deleted = 0
+            AND bo.tenant_id = #{detailsVo.tenantId}
+            <if test="detailsVo.brand != null and detailsVo.brand != ''">
+                AND bgd.Brand like concat('%', #{detailsVo.brand}, '%')
+            </if>
+            <if test="detailsVo.salesName != null and detailsVo.salesName != ''">
+                AND bo.saleman like concat('%', #{detailsVo.salesName}, '%')
+            </if>
+            <if test="detailsVo.beginCreateTime !=null and detailsVo.beginCreateTime != ''">
+                and bo.create_time >= #{detailsVo.beginCreateTime}
+            </if>
+            <if test="detailsVo.endCreateTime !=null and detailsVo.endCreateTime != ''">
+                and bo.create_time &lt;= #{detailsVo.endCreateTime}
+            </if>
+        </where>
+        order by bo.create_time desc
+    </select>
+
+    <select id="salesCommissionList" resultType="org.springblade.purchase.sales.excel.SalesCommissionExcel">
+        SELECT
+        bgd.brand as brand,
+        bo.saleman as salesName,
+        bo.create_time as careteTime,
+        bgd.size as specs,
+        boi.Actual_quantity as quantity
+        FROM business_delivery bo
+        LEFT JOIN business_delivery_items boi on boi.pid = bo.id
         LEFT JOIN basic_goods_desc bgd on bgd.id = boi.item_id
         <where>
-            bo.bill_type = 'XS'
+            bo.bill_type = 'FH'
             AND bo.is_deleted = 0
-            AND bo.tenant_id = #{detailsVo.tenandId}
+            AND bo.tenant_id = #{detailsVo.tenantId}
             <if test="detailsVo.brand != null and detailsVo.brand != ''">
                 AND bgd.Brand like concat('%', #{detailsVo.brand}, '%')
             </if>
             <if test="detailsVo.salesName != null and detailsVo.salesName != ''">
-                AND bo.Sales_name like concat('%', #{detailsVo.salesName}, '%')
+                AND bo.saleman like concat('%', #{detailsVo.salesName}, '%')
             </if>
             <if test="detailsVo.beginCreateTime !=null and detailsVo.beginCreateTime != ''">
                 and bo.create_time >= #{detailsVo.beginCreateTime}

+ 8 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -22,6 +22,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.excel.SalesCommissionExcel;
+import org.springblade.purchase.sales.excel.SalesDetailsExcel;
 import org.springblade.purchase.sales.vo.*;
 
 import java.util.List;
@@ -168,11 +170,16 @@ public interface IOrderService extends IService<Order> {
 	/**
 	 * 统计分析 销售明细导出
 	 */
-	List<SalesDetailsVo> salesDetailsExport(SalesDetailsVo detailsVo);
+	List<SalesDetailsExcel> salesDetailsExport(SalesDetailsVo detailsVo);
 
 	/**
 	 * 统计分析 销售人员提成列表和检索条件查询
 	 */
 	IPage<SalesDetailsVo> salesCommission(IPage<SalesDetailsVo> page, SalesDetailsVo detailsVo);
 
+	/**
+	 *	统计分析 销售人员提成列表导出
+	 */
+	List<SalesCommissionExcel> salesCommissionList(SalesDetailsVo detailsVo);
+
 }

+ 15 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -48,6 +48,8 @@ import org.springblade.finance.feign.IFinanceClient;
 import org.springblade.finance.vojo.Items;
 import org.springblade.purchase.sales.entity.*;
 import org.springblade.purchase.sales.enums.OrderStatusEnum;
+import org.springblade.purchase.sales.excel.SalesCommissionExcel;
+import org.springblade.purchase.sales.excel.SalesDetailsExcel;
 import org.springblade.purchase.sales.mapper.OrderFeesMapper;
 import org.springblade.purchase.sales.mapper.OrderItemsMapper;
 import org.springblade.purchase.sales.mapper.OrderMapper;
@@ -1339,11 +1341,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return page.setRecords(baseMapper.selBusinessOrder(page, detailsVo));
 	}
 
-
+	/**
+	 * 统计分析 销售明细导出
+	 */
 	@Override
-	public List<SalesDetailsVo> salesDetailsExport(SalesDetailsVo detailsVo) {
-		List<SalesDetailsVo> list = baseMapper.selBusinessOrder(null, detailsVo);
-		return list;
+	public List<SalesDetailsExcel> salesDetailsExport(SalesDetailsVo detailsVo) {
+		return baseMapper.salesDetailsExport(detailsVo);
 	}
 
 	/**
@@ -1354,6 +1357,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return page.setRecords(baseMapper.salesCommission(page, detailsVo));
 	}
 
+	/**
+	 * 统计分析 销售人员提成列表导出
+	 */
+	@Override
+	public List<SalesCommissionExcel> salesCommissionList(SalesDetailsVo detailsVo) {
+		return baseMapper.salesCommissionList(detailsVo);
+	}
+
 
 	@Override
 	public MonthSales monthSales(OrderVO order) {