Jelajahi Sumber

销售利润列表和导出

lichao 3 tahun lalu
induk
melakukan
581edc9d71
18 mengubah file dengan 441 tambahan dan 84 penghapusan
  1. 35 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/SalesDetailsVo.java
  2. 9 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java
  3. 1 1
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  4. 1 1
      blade-service/blade-land/src/main/java/org/springblade/land/mapper/OrderMapper.xml
  5. 9 5
      blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java
  6. 1 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/PurchaseExcel.java
  7. 133 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/SalesProfitExcel.java
  8. 13 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/export/ExportOrderController.java
  9. 6 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java
  10. 161 7
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  11. 7 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  12. 8 4
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  13. 1 1
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java
  14. 3 56
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java
  15. 2 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.java
  16. 33 1
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml
  17. 9 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IOrderService.java
  18. 9 0
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

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

@@ -57,6 +57,41 @@ public class SalesDetailsVo implements Serializable {
 	private BigDecimal specialPrice;
 	//订单号
 	private String orderNo;
+	//返利使用额
+	private BigDecimal thisUsedProfit;
+
+	//费用总金额
+	private BigDecimal totalAmount;
+
+	//销售毛利
+	private BigDecimal grossProfit;
+
+	//销售毛利率
+	private BigDecimal grossProfitRate;
+
+	//采购金额
+	private BigDecimal purchaseAmount;
+
+	//特价条数
+	private BigDecimal specialOfferQuantity;
+
+	//特价总金额
+	private BigDecimal specialOfferAmount;
+
+	//非特价条数
+	private BigDecimal nonSpecialOfferQuantity;
+
+	//非特价总金额
+	private BigDecimal nonSpecialOfferAmount;
+
+	//17寸以上数量
+	private BigDecimal seventeenQuantity;
+
+	//17寸以上金额
+	private BigDecimal seventeenAmount;
+
+	//省份
+	private String province;
 
 	//开始日期
 	private String beginCreateTime;

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

@@ -783,4 +783,13 @@ public class Order extends OrderBase {
 	private String pageStatus;
 	@TableField(exist = false)
 	private String pageLabel;
+
+	@TableField(exist = false)
+	private Date requiredArrivalStartDate;
+	@TableField(exist = false)
+	private Date requiredArrivalEndDate;
+	@TableField(exist = false)
+	private Date createStartTime;
+	@TableField(exist = false)
+	private Date createEndTime;
 }

+ 1 - 1
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -781,7 +781,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		if (select.getDeliveryStatus() == null || !DeliveryStatusEnum.REVOCATION.getType().equals(select.getDeliveryStatus())) {
 			throw new SecurityException("此单据已撤回或者不存在,禁止重复操作");
 		}
-		if (select.getDeliveryStatus() != null && DeliveryStatusEnum.REVOCATION.getType().equals(select.getDeliveryStatus())){
+		if (select.getDeliveryStatus() != null && DeliveryStatusEnum.REVOCATION.getType().equals(select.getDeliveryStatus()) && "681169".equals(AuthUtil.getTenantId())){
 			throw new SecurityException("此单据已生成凭证,禁止撤销");
 		}
 

+ 1 - 1
blade-service/blade-land/src/main/java/org/springblade/land/mapper/OrderMapper.xml

@@ -108,7 +108,7 @@
         <where>
             t1.tenant_id = #{acct.tenantId}
             and t1.is_deleted = 0
-            <if test="acct.shippingMode != '散货'">and t2.kind = '2'</if>
+            and t2.kind = '2'
             <if test="acct.corpName != null and acct.corpName != ''">and t3.cname like concat('%', #{acct.corpName}, '%')</if>
             <if test="acct.salesmanName != null and acct.salesmanName != ''">and t5.name like concat('%', #{acct.salesmanName}, '%')</if>
             <if test="acct.corpShortName != null and acct.corpShortName != ''">and t3.short_name like concat('%', #{acct.corpShortName}, '%')</if>

+ 9 - 5
blade-service/blade-land/src/main/java/org/springblade/land/service/impl/OrderServiceImpl.java

@@ -604,6 +604,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				item.setPlateNo(order.getPlateNo());
 				item.setTel(order.getDriverTel());
 				item.setLandAmountD(order.getFreightPay());
+				item.setLandAmountC(order.getFreightCollect());
 				orderItemMapper.insert(item);
 			}else {
 				item.setTenantId(AuthUtil.getTenantId());
@@ -614,6 +615,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				item.setPlateNo(order.getPlateNo());
 				item.setTel(order.getDriverTel());
 				item.setLandAmountD(order.getFreightPay());
+				item.setLandAmountC(order.getFreightCollect());
 				orderItemMapper.updateById(item);
 			}
 		}
@@ -1180,13 +1182,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	private void calculateAcct(List<OrderAcctVO> acctList) {
 		acctList.forEach(acct -> {
+			LambdaQueryWrapper<OrderFee> orderFeeLambda = new LambdaQueryWrapper<>();
+			orderFeeLambda.eq(OrderFee::getIsDeleted, 0);
+
 			if (!ObjectUtil.isEmpty(acct.getShippingMode()) && acct.getShippingMode().equals("散货")){
-				acct.setItemId(acct.getOrderId());
+				orderFeeLambda.eq(OrderFee::getOrderId, acct.getOrderId());
+			}else {
+				orderFeeLambda.eq(OrderFee::getItemId, acct.getItemId());
 			}
-			List<OrderFee> feeList = orderFeeMapper.selectList(new LambdaQueryWrapper<OrderFee>()
-				.eq(OrderFee::getItemId, acct.getItemId())
-				.eq(OrderFee::getIsDeleted, 0)
-			);
+			List<OrderFee> feeList = orderFeeMapper.selectList(orderFeeLambda);
 
 			StringBuilder extraAmountItemD = new StringBuilder();
 			StringBuilder extraAmountItemC = new StringBuilder();

+ 1 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/PurchaseExcel.java

@@ -20,6 +20,7 @@ import java.util.Date;
 @HeadRowHeight(20)
 @ContentRowHeight(18)
 public class PurchaseExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
 
 	/**
 	 *  采购单号

+ 133 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/SalesProfitExcel.java

@@ -0,0 +1,133 @@
+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.math.BigDecimal;
+import java.util.Date;
+
+/**
+ *  统计分析 包装费用导出
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class SalesProfitExcel implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 *  订单号
+	 */
+	@ExcelProperty(value = "销售订单号")
+	private String orderNo;
+
+	/**
+	 *  客户名称
+	 */
+	@ExcelProperty(value = "客户名称")
+	private String corpName;
+
+	/**
+	 *  省份
+	 */
+	@ExcelProperty(value = "省份")
+	private String province;
+
+	/**
+	 * 日期
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@ExcelProperty(value = "日期")
+	private Date careteTime;
+
+	/**
+	 *  业务员
+	 */
+	@ExcelProperty(value = "业务员")
+	private String salesName;
+
+	/**
+	 *  发货数量
+	 */
+	@ExcelProperty(value = "发货数量")
+	private Long quantity;
+
+	/**
+	 *  销售金额
+	 */
+	@ExcelProperty(value = "销售金额")
+	private BigDecimal amount;
+
+	/**
+	 *  特价条数
+	 */
+	@ExcelProperty(value = "特价条数")
+	private BigDecimal specialOfferQuantity;
+
+	/**
+	 *  特价总金额
+	 */
+	@ExcelProperty(value = "特价总金额")
+	private BigDecimal specialOfferAmount;
+
+	/**
+	 *  非特价条数
+	 */
+	@ExcelProperty(value = "非特价条数")
+	private BigDecimal nonSpecialOfferQuantity;
+
+	/**
+	 *  非特价总金额
+	 */
+	@ExcelProperty(value = "非特价总金额")
+	private BigDecimal nonSpecialOfferAmount;
+
+	/**
+	 *  17寸以上数量
+	 */
+	@ExcelProperty(value = "17寸以上数量")
+	private BigDecimal seventeenQuantity;
+
+	/**
+	 *  17寸以上金额
+	 */
+	@ExcelProperty(value = "17寸以上金额")
+	private BigDecimal seventeenAmount;
+
+	/**
+	 *  采购金额
+	 */
+	@ExcelProperty(value = "采购金额")
+	private BigDecimal purchaseAmount;
+
+	/**
+	 *  返利使用额
+	 */
+	@ExcelProperty(value = "返利使用额")
+	private BigDecimal thisUsedProfit;
+
+	/**
+	 *  费用总金额
+	 */
+	@ExcelProperty(value = "费用总金额")
+	private BigDecimal totalAmount;
+
+	/**
+	 *  销售毛利
+	 */
+	@ExcelProperty(value = "销售毛利")
+	private BigDecimal grossProfit;
+
+	/**
+	 *  销售毛利率
+	 */
+	@ExcelProperty(value = "销售毛利率")
+	private BigDecimal grossProfitRate;
+}

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

@@ -763,4 +763,17 @@ public class ExportOrderController extends BladeController {
 		IPage<SalesDetailsVo> pages = orderService.selSalesProfit(Condition.getPage(query), detailsVo);
 		return R.data(pages);
 	}
+
+	/**
+	 * 统计分析 销售利润列表导出
+	 * @param detailsVo
+	 * @return
+	 */
+	@GetMapping("/selPurchaseExport")
+	@ApiOperation(value = "销售利润导出", notes = "销售利润导出")
+	public void selSalesProfitExport(SalesDetailsVo detailsVo, HttpServletResponse response){
+		detailsVo.setTenantId(SecureUtil.getTenantId());
+		List<SalesProfitExcel> list = orderService.selSalesProfitExport(detailsVo);
+		ExcelUtil.export(response, "销售利润", "品牌采购", list, SalesProfitExcel.class);
+	}
 }

+ 6 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java

@@ -22,10 +22,7 @@ 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.PackingFeeExcel;
-import org.springblade.purchase.sales.excel.PurchaseExcel;
-import org.springblade.purchase.sales.excel.SalesCommissionExcel;
-import org.springblade.purchase.sales.excel.SalesDetailsExcel;
+import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -128,6 +125,11 @@ public interface OrderMapper extends BaseMapper<Order> {
 	List<SalesDetailsVo> selSalesProfit(IPage<SalesDetailsVo> page,@Param("detailsVo") SalesDetailsVo detailsVo);
 
 	/**
+	 * 统计分析 品牌采购对账列表导出
+	 */
+	List<SalesProfitExcel> selSalesProfitExport(@Param("detailsVo") SalesDetailsVo detailsVo);
+
+	/**
 	 * 首页获取销售趋势
 	 * @param tenantId 租户id
 	 * @param tradeType 贸易类型

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

@@ -852,16 +852,163 @@ ORDER BY
     </select>
     <select id="selSalesProfit" resultType="org.springblade.purchase.sales.vo.SalesDetailsVo">
         SELECT
-        BO.id AS orderId,
-        BO.order_no as orderNo,
-        BGD.Brand AS brand,
+            BO.id AS orderId,
+            BO.order_no AS orderNo,
+            BGD.Brand AS brand,
+            BCD.cname AS corpName,
+            BO.create_time AS careteTime,
+            BO.charge_member AS salesName,
+            BO.this_used_profit AS thisUsedProfit,
+            BO.gross_profit AS grossProfit,
+            BO.gross_profit_rate AS grossProfitRate,
+            BOI.quantity AS quantity,
+            BOI.amount AS amount,
+            BOI.purchaseAmount AS purchaseAmount,
+            BOI2.seventeenQuantity AS seventeenQuantity,
+            BOI2.seventeenAmount AS seventeenAmount,
+            BOI3.nonSpecialOfferQuantity AS nonSpecialOfferQuantity,
+            BOI3.nonSpecialOfferAmount AS nonSpecialOfferAmount,
+            BOI4.specialOfferQuantity AS specialOfferQuantity,
+            BOI4.specialOfferAmount AS specialOfferAmount,
+            (BOI.amount + BO.other_amount) AS totalAmount
+            FROM
+            business_order AS BO
+            LEFT JOIN (
+            SELECT
+            pid,
+            item_id,
+            IFNULL( SUM( amount ), 0 ) AS amount,
+            IFNULL( SUM( actual_quantity ), 0 ) AS quantity,
+            IFNULL( SUM( purchase_amount ), 0 ) AS purchaseAmount
+            FROM
+            business_order_items
+            GROUP BY
+            pid
+            ) BOI ON BOI.pid = BO.id
+            LEFT JOIN (
+            SELECT
+            pid,
+            IFNULL( SUM( order_quantity ), 0 ) AS seventeenQuantity,
+            IFNULL( SUM( amount ), 0 ) AS seventeenAmount
+            FROM
+            business_order_items
+            WHERE size >= 17
+            GROUP BY
+            pid
+            ) BOI2 ON BOI2.pid = BO.id
+            LEFT JOIN (
+            SELECT
+            pid,
+            IFNULL( SUM( order_quantity ), 0 ) AS nonSpecialOfferQuantity,
+            IFNULL( SUM( amount ), 0 ) AS nonSpecialOfferAmount
+            FROM
+            business_order_items
+            WHERE price_type IS NULL OR trim(price_type)=''
+            GROUP BY
+            pid
+            ) BOI3 ON BOI3.pid = BO.id
+            LEFT JOIN (
+            SELECT
+            pid,
+            IFNULL( SUM( order_quantity ), 0 ) AS specialOfferQuantity,
+            IFNULL( SUM( amount ), 0 ) AS specialOfferAmount
+            FROM
+            business_order_items
+            WHERE trim(price_type) != ''
+            GROUP BY
+            pid
+            ) BOI4 ON BOI4.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.brand != null and detailsVo.brand != ''">
+                AND BGD.Brand like concat('%', #{detailsVo.brand}, '%')
+            </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>
+            <if test="detailsVo.salesName != null and detailsVo.salesName != ''">
+                AND BGD.charge_member like concat('%', #{detailsVo.salesName}, '%')
+            </if>
+            <if test="detailsVo.corpid != null and detailsVo.corpid != ''">
+                AND BO.corp_id like concat('%', #{detailsVo.corpid}, '%')
+            </if>
+        </where>
+        order by BO.create_time desc
+    </select>
+    <select id="selSalesProfitExport" resultType="org.springblade.purchase.sales.excel.SalesProfitExcel">
+        SELECT
+        BO.order_no AS orderNo,
         BCD.cname AS corpName,
         BO.create_time AS careteTime,
         BO.charge_member AS salesName,
-        BO.create_time AS careteTime,
-        BOI.order_quantity AS quantity
-        FROM business_order_items AS BOI
-        LEFT JOIN business_order BO ON BOI.pid = BO.id
+        BO.this_used_profit AS thisUsedProfit,
+        BO.gross_profit AS grossProfit,
+        BO.gross_profit_rate AS grossProfitRate,
+        BOI.quantity AS quantity,
+        BOI.amount AS amount,
+        BOI.purchaseAmount AS purchaseAmount,
+        BOI2.seventeenQuantity AS seventeenQuantity,
+        BOI2.seventeenAmount AS seventeenAmount,
+        BOI3.nonSpecialOfferQuantity AS nonSpecialOfferQuantity,
+        BOI3.nonSpecialOfferAmount AS nonSpecialOfferAmount,
+        BOI4.specialOfferQuantity AS specialOfferQuantity,
+        BOI4.specialOfferAmount AS specialOfferAmount,
+        (BOI.amount + BO.other_amount) AS totalAmount
+        FROM
+        business_order AS BO
+        LEFT JOIN (
+        SELECT
+        pid,
+        item_id,
+        IFNULL( SUM( amount ), 0 ) AS amount,
+        IFNULL( SUM( actual_quantity ), 0 ) AS quantity,
+        IFNULL( SUM( purchase_amount ), 0 ) AS purchaseAmount
+        FROM
+        business_order_items
+        GROUP BY
+        pid
+        ) BOI ON BOI.pid = BO.id
+        LEFT JOIN (
+        SELECT
+        pid,
+        IFNULL( SUM( order_quantity ), 0 ) AS seventeenQuantity,
+        IFNULL( SUM( amount ), 0 ) AS seventeenAmount
+        FROM
+        business_order_items
+        WHERE size >= 17
+        GROUP BY
+        pid
+        ) BOI2 ON BOI2.pid = BO.id
+        LEFT JOIN (
+        SELECT
+        pid,
+        IFNULL( SUM( order_quantity ), 0 ) AS nonSpecialOfferQuantity,
+        IFNULL( SUM( amount ), 0 ) AS nonSpecialOfferAmount
+        FROM
+        business_order_items
+        WHERE price_type IS NULL OR trim(price_type)=''
+        GROUP BY
+        pid
+        ) BOI3 ON BOI3.pid = BO.id
+        LEFT JOIN (
+        SELECT
+        pid,
+        IFNULL( SUM( order_quantity ), 0 ) AS specialOfferQuantity,
+        IFNULL( SUM( amount ), 0 ) AS specialOfferAmount
+        FROM
+        business_order_items
+        WHERE trim(price_type) != ''
+        GROUP BY
+        pid
+        ) BOI4 ON BOI4.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
@@ -878,9 +1025,16 @@ ORDER BY
             <if test="detailsVo.endCreateTime !=null and detailsVo.endCreateTime != ''">
                 and BO.create_time &lt;= #{detailsVo.endCreateTime}
             </if>
+            <if test="detailsVo.salesName != null and detailsVo.salesName != ''">
+                AND BGD.charge_member like concat('%', #{detailsVo.salesName}, '%')
+            </if>
+            <if test="detailsVo.corpid != null and detailsVo.corpid != ''">
+                AND BO.corp_id like concat('%', #{detailsVo.corpid}, '%')
+            </if>
         </where>
         order by BO.create_time desc
     </select>
+
     <update id="updateOrderMessage" parameterType="org.springblade.purchase.sales.entity.Order">
         update  business_order
         <trim prefix="SET" suffixOverrides=",">

+ 7 - 4
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -22,10 +22,7 @@ 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.PackingFeeExcel;
-import org.springblade.purchase.sales.excel.PurchaseExcel;
-import org.springblade.purchase.sales.excel.SalesCommissionExcel;
-import org.springblade.purchase.sales.excel.SalesDetailsExcel;
+import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.vo.*;
 
 import java.util.List;
@@ -209,4 +206,10 @@ public interface IOrderService extends IService<Order> {
 	 */
 	IPage<SalesDetailsVo> selSalesProfit(IPage<SalesDetailsVo> page, SalesDetailsVo detailsVo);
 
+	/**
+	 * 统计分析 销售利润导出
+	 */
+	List<SalesProfitExcel> selSalesProfitExport(SalesDetailsVo detailsVo );
+
+
 }

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

@@ -48,10 +48,7 @@ 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.PackingFeeExcel;
-import org.springblade.purchase.sales.excel.PurchaseExcel;
-import org.springblade.purchase.sales.excel.SalesCommissionExcel;
-import org.springblade.purchase.sales.excel.SalesDetailsExcel;
+import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.mapper.OrderFeesMapper;
 import org.springblade.purchase.sales.mapper.OrderItemsMapper;
 import org.springblade.purchase.sales.mapper.OrderMapper;
@@ -1407,6 +1404,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return page.setRecords(baseMapper.selSalesProfit(page, detailsVo));
 	}
 
+	/**
+	 * 统计分析 销售利润列表导出
+	 */
+	@Override
+	public List<SalesProfitExcel> selSalesProfitExport(SalesDetailsVo detailsVo) {
+		return baseMapper.selSalesProfitExport(detailsVo);
+	}
 
 	@Override
 	public MonthSales monthSales(OrderVO order) {

+ 1 - 1
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -161,7 +161,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		if ("待结算".equals(settlement.getFinanceStatus())) {
 			throw new SecurityException("此结算单未结算 或者 已经撤销,禁止重复操作");
 		}
-		if ("结算完成".equals(settlement.getFinanceStatus())){
+		if ("结算完成".equals(settlement.getFinanceStatus()) && "681169".equals(AuthUtil.getTenantId())){
 			throw new SecurityException("此结算单已生成凭证,禁止撤销");
 		}
 

+ 3 - 56
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

@@ -34,6 +34,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
@@ -405,19 +406,9 @@ public class PurchaseOrderController extends BladeController {
 		}
 		queryWrapper.orderByDesc("create_time");
 		List<Order> records = orderService.list(queryWrapper);
-		List<PurchaseOrderExcel> list = new ArrayList<>();
 		if(CollectionUtils.isNotEmpty(records))
 		{
 			records.forEach(e->{
-				if(e.getBelongToCorpId()!=null)
-				{
-					R<CorpsDesc> corpMessage3 = corpsDescClient.getCorpMessage(e.getBelongToCorpId());
-					if(corpMessage3.getData()!=null)
-					{
-						e.setBelongToCorpName(corpMessage3.getData().getCname());
-					}
-				}
-
 				//制单人名字
 				if(e.getCreateUser()!=null)
 				{
@@ -428,16 +419,6 @@ public class PurchaseOrderController extends BladeController {
 					}
 				}
 
-				//修改制单人名字
-				if(e.getUpdateUser()!=null)
-				{
-					R<User> userR = userClient.userInfoById(e.getUpdateUser());
-					if(userR.isSuccess())
-					{
-						e.setUpdateUserName(userR.getData().getRealName());
-					}
-				}
-
 				//获取供应商中文名
 				if (e.getCorpId() != null){
 					R<CorpsDesc> corpMessage1 = corpsDescClient.getCorpMessage(e.getCorpId());
@@ -447,14 +428,6 @@ public class PurchaseOrderController extends BladeController {
 					}
 
 				}
-				//获取采购商中文名
-				if (e.getPurchaserId() != null){
-					R<CorpsDesc> corpMessage2 = corpsDescClient.getCorpMessage(e.getPurchaserId());
-					if(corpMessage2.getData()!=null)
-					{
-						e.setStrPurchaserName(corpMessage2.getData().getCname());
-					}
-				}
 
 				List<OrderItems> orderItemsList = orderItemsService.list(new LambdaQueryWrapper<OrderItems>().eq(OrderItems::getIsDeleted, 0).eq(OrderItems::getPid, e.getId()));
 				if(CollectionUtils.isNotEmpty(orderItemsList))
@@ -471,40 +444,14 @@ public class PurchaseOrderController extends BladeController {
 						.reduce(BigDecimal.ZERO, BigDecimal::add);
 					e.setActualQuantity(actualQuantity);
 
-					//已收重量
-					BigDecimal actualWeight = orderItemsList.stream().map(OrderItems::getActualWeight)
-						.filter(Objects::nonNull)
-						.reduce(BigDecimal.ZERO, BigDecimal::add);
-					e.setActualWeight(actualWeight);
-
-					orderItemsList.forEach(item -> {
-						//商品信息
-						R<GoodsDescVO> goodsDesc = goodsDescClient.selectGoodsMessage(item.getItemId());
-						if(goodsDesc.isSuccess() && ObjectUtil.isNotEmpty(goodsDesc.getData()))
-						{
-							item.setGoodsName(goodsDesc.getData().getCname());
-						}
-					});
 				}
 
 				e.setItemsList(orderItemsList);
-				PurchaseOrderExcel purchaseOrderExcel = new PurchaseOrderExcel();
-				purchaseOrderExcel.setOrderNo(e.getOrderNo());//采购单号
-				purchaseOrderExcel.setStrCorpName(e.getStrCorpName());//供应商
-				purchaseOrderExcel.setOrderQuantity(e.getOrderQuantity());//订单数量
-				purchaseOrderExcel.setActualQuantity(e.getActualQuantity());//收货数量
-				purchaseOrderExcel.setOrderAmount(e.getOrderAmount());//采购金额
-				purchaseOrderExcel.setPackageRemarks(e.getPackageRemarks());//包装要求
-				purchaseOrderExcel.setBanksAccountName(e.getBanksAccountName());//公司户头
-				purchaseOrderExcel.setMorderNo(e.getMorderNo());//来源单号
-				purchaseOrderExcel.setCreateUserName(e.getCreateUserName());//制单人
-				purchaseOrderExcel.setDebitAmount(e.getDebitAmount());//应付金额
-				purchaseOrderExcel.setSettlmentAmount(e.getSettlmentAmount());//已付金额
-
-				list.add(purchaseOrderExcel);
 			});
 		}
 
+		List<PurchaseOrderExcel> list = BeanUtil.copy(records, PurchaseOrderExcel.class);
+
 		ExcelUtil.export(response, "采购订单", "采购订单", list, PurchaseOrderExcel.class);
 	}
 

+ 2 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.java

@@ -2,6 +2,7 @@ package com.trade.purchase.order.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.trade.purchase.excel.PurchaseOrderExcel;
 import org.apache.ibatis.annotations.Param;
 import com.trade.purchase.order.entity.Order;
 import com.trade.purchase.order.vo.OrderVO;
@@ -25,4 +26,5 @@ public interface OrderMapper extends BaseMapper<Order> {
 	 */
 	List<OrderVO> selectOrderPage(IPage page, @Param("Order") OrderVO order);
 
+	List<PurchaseOrderExcel> selOrderListExport(Order order);
 }

+ 33 - 1
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/mapper/OrderMapper.xml

@@ -316,5 +316,37 @@
         </if>
         order by id
     </select>
-
+    <select id="selOrderListExport" resultType="com.trade.purchase.excel.PurchaseOrderExcel">
+        select
+            BO.id,
+            BO.order_no as orderNo,
+            BCD.cname as strCorpName,
+            SUM(BOI.order_quantity) as orderQuantity,
+            SUM(BOI.actual_quantity) as actualQuantity,
+            BO.order_amount as orderAmount,
+            BO.package_remarks as packageRemarks,
+            BO.banks_account_name as banksAccountName,
+            BO.morder_no as morderNo,
+            BU.real_name as createUserName,
+            BO.debit_amount as debitAmount,
+            BO.settlment_amount as settlmentAmount
+        from business_order BO
+        left join basic_corps_desc BCD on BCD.id = BO.corp_id
+        left join business_order_items BOI ON BOI.pid = BO.id
+        left join blade_user BU ON BU.id = BO.create_user
+        <where>
+            BO.tenant_id =  #{order.tenantId}
+            AND BO.is_deleted = '0'
+            <if test="order.orderNo != null and order.orderNo != ''">and BO.order_no like concat('%', #{order.orderNo}, '%')</if>
+            <if test="order.corpId != null and order.corpId != ''">and BO.corp_id = #{order.corpId}</if>
+            <if test="order.paymentType != null and order.paymentType != ''">and BO.payment_type = #{order.paymentType}</if>
+            <if test="order.packageRemarks != null and order.packageRemarks != ''">and BO.package_remarks like concat('%', #{order.packageRemarks}, '%')</if>
+            <if test="order.banksAccountName != null and order.banksAccountName != ''">and BO.banks_account_name like concat('%', #{order.banksAccountName}, '%')</if>
+            <if test="order.createUser != null and order.createUser != ''">and BO.create_user = #{order.createUser}</if>
+            <if test="order.requiredArrivalStartDate != null and order.requiredArrivalStartDate != ''">and BO.required_arrival_date &gt;= #{order.requiredArrivalStartDate}</if>
+            <if test="order.requiredArrivalEndDate != null and order.requiredArrivalEndDate != ''">and BO.required_arrival_date &lt;= #{order.requiredArrivalEndDate}</if>
+            <if test="order.createStartTime != null and order.createStartTime != ''">and BO.create_time &gt;= #{order.createStartTime}</if>
+            <if test="order.createEndTime != null and order.createEndTime != ''">and BO.create_time &lt;= #{order.createEndTime}</if>
+        </where>
+    </select>
 </mapper>

+ 9 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/IOrderService.java

@@ -2,6 +2,7 @@ package com.trade.purchase.order.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.trade.purchase.excel.PurchaseOrderExcel;
 import com.trade.purchase.order.dto.OrderSubmitDto;
 import com.trade.purchase.order.entity.Order;
 import com.trade.purchase.order.vo.OrderDTO;
@@ -10,6 +11,8 @@ import lombok.Synchronized;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.core.tool.api.R;
 
+import java.util.List;
+
 /**
  * 销售或采购订单表 服务类
  *
@@ -122,4 +125,10 @@ public interface IOrderService extends IService<Order> {
 	 * @return
 	 */
 	R dealerSubmit(Order order);
+
+
+	/**
+	 * 销售或采购订单表导出
+	 */
+	List<PurchaseOrderExcel> selOrderExport(Order order);
 }

+ 9 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.trade.purchase.excel.PurchaseOrderExcel;
 import com.trade.purchase.exception.OrderException;
 import com.trade.purchase.order.assemble.mapstruct.OrderItemMapstructMapper;
 import com.trade.purchase.order.assemble.mapstruct.OrderMapstructMapper;
@@ -689,6 +690,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		return R.success("操作成功");
 	}
 
+	/**
+	 * 销售或采购订单表导出
+	 */
+	@Override
+	public List<PurchaseOrderExcel> selOrderExport(Order order) {
+		return orderMapper.selOrderListExport(order);
+	}
+
 	@Override
 	public R<OrderSubmitDto> savePurchase(OrderSubmitDto submitDto) {
 		//获取系统编号