lazhaoqian 3 years ago
parent
commit
df800881b7

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

@@ -127,4 +127,9 @@ public class OrderVO extends Order {
 	 */
 	@ApiModelProperty(value = "查询年")
 	private String annual;
+	/**
+	 * 货物id
+	 */
+	@ApiModelProperty(value = "货物id")
+	private Long itemId;
 }

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

@@ -738,7 +738,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 				//原仓库减去库存
 				stock.setOutQuantity(stock.getOutQuantity().add( deliveryItems.getActualQuantity()));//出库数量 加
 				stock.setSurplusRouteQuantity(stock.getSurplusRouteQuantity().subtract(deliveryItems.getActualQuantity()));//可用数量 减
-				stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));//结余数量
+				stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));//结余数量
 				R updateStock = stockGoodsClient.updateStock(stock);
 				if (!updateStock.isSuccess()){
 					throw new RuntimeException("更新库存总账失败");
@@ -750,7 +750,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 				}else {
 					serviceStock.setInQuantity(serviceStock.getInQuantity().add( deliveryItems.getActualQuantity()));//入库数量 加
 					serviceStock.setSurplusRouteQuantity(serviceStock.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
-					serviceStock.setBalanceQuantity(serviceStock.getInQuantity().subtract(serviceStock.getOutQuantity()));//结余数量
+					serviceStock.setBalanceQuantity(serviceStock.getInQuantity().add(serviceStock.getOutQuantity()));//结余数量 加
 					R stockMessage = stockGoodsClient.updateStock(serviceStock);
 					if (!stockMessage.isSuccess()){
 						throw new RuntimeException("更新库存总账失败");
@@ -769,7 +769,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 				//新仓库减去库存
 				stock.setInQuantity(stock.getInQuantity().subtract( deliveryItems.getActualQuantity()));//入库数量 减
 				stock.setSurplusRouteQuantity(stock.getSurplusRouteQuantity().subtract(deliveryItems.getActualQuantity()));//可用数量 减
-				stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));//结余数量
+				stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));//结余数量
 				R updateStock = stockGoodsClient.updateStock(stock);
 				if (!updateStock.isSuccess()){
 					throw new RuntimeException("更新库存总账失败");
@@ -781,7 +781,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 				}else {
 					serviceStock.setOutQuantity(serviceStock.getOutQuantity().subtract( deliveryItems.getActualQuantity()));//出库数量 减
 					serviceStock.setSurplusRouteQuantity(serviceStock.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
-					serviceStock.setBalanceQuantity(serviceStock.getInQuantity().subtract(serviceStock.getOutQuantity()));//结余数量
+					serviceStock.setBalanceQuantity(serviceStock.getInQuantity().add(serviceStock.getOutQuantity()));//结余数量 加
 					R stockMessage = stockGoodsClient.updateStock(serviceStock);
 					if (!stockMessage.isSuccess()){
 						throw new RuntimeException("更新库存总账失败");

+ 103 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/excel/orderItemStat.java

@@ -0,0 +1,103 @@
+package org.springblade.purchase.sales.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 经销商销售统计
+ */
+@Data
+public class orderItemStat implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 行号
+	 */
+	@ExcelProperty(value = "行号")
+	private Long rankNo;
+	/**
+	 *单据日期
+	 */
+	@ExcelProperty(value = "单据日期")
+	private Date businesDate;
+	/**
+	 *单位全名
+	 */
+	@ExcelProperty(value = "单位全名")
+	private String corpName;
+	/**
+	 *商品全名
+	 */
+	@ExcelProperty(value = "商品全名")
+	private String goodName;
+	/**
+	 *规格
+	 */
+	@ExcelProperty(value = "规格")
+	private String typeno;
+	/**
+	 *级别
+	 */
+	@ExcelProperty(value = "级别")
+	private String level;
+	/**
+	 *花纹
+	 */
+	@ExcelProperty(value = "花纹")
+	private String brandItem;
+	/**
+	 *批号
+	 */
+	@ExcelProperty(value = "批号")
+	private String lotNo;
+	/**
+	 *销售数量
+	 */
+	@ExcelProperty(value = "销售数量")
+	private BigDecimal orderQuantity;
+	/**
+	 *单价
+	 */
+	@ExcelProperty(value = "单价")
+	private BigDecimal price;
+	/**
+	 *金额
+	 */
+	@ExcelProperty(value = "金额")
+	private BigDecimal amount;
+	/**
+	 *仓库全名
+	 */
+	@ExcelProperty(value = "仓库全名")
+	private String storageName;
+	/**
+	 *摘要
+	 */
+	@ExcelProperty(value = "摘要")
+	private String remarks;
+	/**
+	 * 仓库id
+	 */
+	private Long storageId;
+	/**
+	 * 客户id
+	 */
+	private Long corpId;
+	/**
+	 * 商品id
+	 */
+	private Long itemId;
+	/**
+	 * 明细id
+	 */
+	private Long id;
+	/**
+	 * 主表id
+	 */
+	private Long pid;
+
+}

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

@@ -17,7 +17,9 @@
 package org.springblade.purchase.sales.mapper;
 
 import org.apache.ibatis.annotations.Param;
+import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
+import org.springblade.purchase.sales.excel.orderItemStat;
 import org.springblade.purchase.sales.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -153,5 +155,9 @@ public interface OrderItemsMapper extends BaseMapper<OrderItems> {
 	List<OrderSizeVo> orderSize(@Param("tradeType")String tradeType,
 								@Param("billType")String billType,
 								@Param("tenantId")String tenantId);
-
+	/**
+	 * 经销商销售统计
+	 * @return
+	 */
+	List<orderItemStat> orderItemStat(@Param("order")OrderVO order);
 }

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

@@ -346,4 +346,59 @@ WHERE
         </if>
         GROUP BY bt.size
     </select>
+    <select id="orderItemStat" resultType="org.springblade.purchase.sales.excel.orderItemStat">
+        SELECT
+	        @rank := @rank + 1 AS rankNo,
+	        CURRENT_DATE AS Systemtime,
+	        temp.*
+        FROM
+	    (
+	        SELECT
+		    bo.busines_date AS businesDate,
+		    bo.corp_id AS corpId,
+		    bi.item_id AS itemId,
+		    bi.order_quantity AS orderQuantity,
+		    bi.price AS price,
+		    bi.lot_no AS lotNo,
+		    bi.amount AS amount,
+		    bi.remarks AS remarks,
+		    bi.id AS id,
+		    bi.pid AS pid,
+		    bo.storage_id
+	        FROM
+		    business_order_items bi
+		    LEFT JOIN business_order bo ON bi.pid = bo.id
+	        WHERE
+		    bi.is_deleted = 0
+		    AND bo.is_deleted = 0
+            <if test="order.corpId!=null">
+                and bo.corp_id = #{order.corpId}
+            </if>
+            <if test="order.itemId!=null">
+                and bi.item_id = #{order.itemId}
+            </if>
+            <if test="order.storageId!=null">
+                and bo.storage_id = #{order.storageId}
+            </if>
+            <if test="order.orderNo!=null and order.orderNo != ''">
+                and bo.order_no like CONCAT(CONCAT('%', #{order.orderNo}), '%')
+            </if>
+            <if test="order.billType!=null and order.billType != ''">
+                and bo.bill_type = #{order.billType}
+            </if>
+            <if test="order.tradeType!=null and order.tradeType != ''">
+                and bo.trade_type = #{order.tradeType}
+            </if>
+            <if test="order.tenantId!=null and order.tenantId != ''">
+                and bo.tenant_id = #{order.tenantId}
+            </if>
+            <if test="order.orderStartDate!=null and order.orderStartDate != ''">
+                and bo.busines_date &gt;= #{order.orderStartDate}
+            </if>
+            <if test="order.orderEndDate!=null and order.orderEndDate != ''">
+                and bo.busines_date &lt;= #{order.orderEndDate}
+            </if>
+	    ) temp,
+	    ( SELECT @rank := 0 ) b
+    </select>
 </mapper>

+ 6 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderItemsService.java

@@ -21,6 +21,7 @@ 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.excel.orderItemStat;
 import org.springblade.purchase.sales.vo.*;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -148,5 +149,10 @@ public interface IOrderItemsService extends IService<OrderItems> {
 	 * @return
 	 */
 	List<OrderSizeVo> orderSize(Order order);
+	/**
+	 * 经销商销售统计
+	 * @return
+	 */
+	List<orderItemStat> orderItemStat(OrderVO order);
 
 }

+ 42 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderItemsServiceImpl.java

@@ -22,12 +22,15 @@ 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 jdk.nashorn.internal.ir.annotations.Ignore;
 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.entity.StorageDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
+import org.springblade.client.feign.IStorageClient;
 import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
@@ -38,6 +41,7 @@ import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.entity.OrderParts;
 import org.springblade.purchase.sales.excel.DealerOrderItem;
 import org.springblade.purchase.sales.excel.OrderItemsExcel;
+import org.springblade.purchase.sales.excel.orderItemStat;
 import org.springblade.purchase.sales.mapper.OrderItemsMapper;
 import org.springblade.purchase.sales.mapper.OrderPartsMapper;
 import org.springblade.purchase.sales.service.IOrderItemsService;
@@ -88,6 +92,7 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 	private final ISalesPolicyClient salesPolicyClient;
 	//获取客户信息
 	private final ICorpsDescClient corpsDescClient;
+	private IStorageClient iStorageClient;//库区信息
 
 	@Resource
 	private OrderPartsMapper orderPartsMapper;
@@ -476,4 +481,41 @@ public class OrderItemsServiceImpl extends ServiceImpl<OrderItemsMapper, OrderIt
 		return orderSizeVoList;
 	}
 
+	@Override
+	public List<orderItemStat> orderItemStat(OrderVO order) {
+		if (StringUtils.isBlank(order.getTenantId())){
+			order.setTenantId(SecureUtil.getTenantId());
+		}
+		List<orderItemStat> orderItemStatList = baseMapper.orderItemStat(order);
+		if (CollectionUtils.isNotEmpty(orderItemStatList)){
+			orderItemStatList.stream().forEach(e ->{
+				//获取商品信息
+				if (e.getItemId() != null){
+					R<GoodsDescVO> goodsMessage = goodsDescClient.selectGoodsMessage(e.getItemId());
+					if (goodsMessage.isSuccess() && goodsMessage.getData() != null){
+						e.setGoodName(goodsMessage.getData().getCname());//品名
+						e.setTypeno(goodsMessage.getData().getTypeno());//规格
+						e.setLevel(goodsMessage.getData().getLevel());//级别
+						e.setBrandItem(goodsMessage.getData().getBrandItem());//花纹
+					}
+				}
+				//获取仓库信息
+				if (e.getStorageId() != null){
+					StorageDesc storageDesc = iStorageClient.findById(e.getStorageId());
+					if (storageDesc != null){
+						e.setStorageName(storageDesc.getCname());
+					}
+				}
+				//获取客户信息
+				if (e.getCorpId() != null){
+					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(e.getCorpId());
+					if (corpMessage.isSuccess() && corpMessage.getData() != null){
+						e.setCorpName(corpMessage.getData().getCname());
+					}
+				}
+			});
+		}
+		return orderItemStatList;
+	}
+
 }