Browse Source

20230221 17:45

wangzhuo 2 years ago
parent
commit
6ada4a7930
18 changed files with 214 additions and 14 deletions
  1. 5 6
      blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/AnnualBudgetItem.java
  2. 9 1
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderDescClient.java
  3. 19 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/DatasetVO.java
  4. 5 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderStatisticsVo.java
  5. 6 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Acc.java
  6. 10 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/annualBudget/controller/AnnualBudgetItemController.java
  7. 6 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/annualBudget/service/IAnnualBudgetItemService.java
  8. 65 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/annualBudget/service/impl/AnnualBudgetItemServiceImpl.java
  9. 1 3
      blade-service/blade-client/src/main/java/org/springblade/client/goods/feign/GoodsDescClient.java
  10. 9 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java
  11. 9 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderItemsMapper.xml
  12. 5 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java
  13. 42 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  14. 5 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  15. 8 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  16. 1 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java
  17. 7 2
      blade-service/trade-finance/src/main/java/org/springblade/finance/mapper/AccMapper.xml
  18. 2 1
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderSaveImpl.java

+ 5 - 6
blade-service-api/blade-box-tube-api/src/main/java/org/springblade/box/tube/entity/AnnualBudgetItem.java

@@ -88,12 +88,6 @@ public class AnnualBudgetItem implements Serializable {
 	private Long corpId;
 
 	/**
-	 * 客户ids
-	 */
-	@TableField(exist = false)
-	private String corpIds;
-
-	/**
 	 * 年
 	 */
 	@ApiModelProperty(value = "年")
@@ -237,5 +231,10 @@ public class AnnualBudgetItem implements Serializable {
 	@ApiModelProperty(value = "预留品牌字段")
 	private BigDecimal brand10;
 
+	/**
+	 * 客户ids
+	 */
+	@TableField(exist = false)
+	private String corpIds;
 
 }

+ 9 - 1
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderDescClient.java

@@ -4,6 +4,7 @@ import org.springblade.common.constant.LauncherConstant;
 import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderFiles;
+import org.springblade.purchase.sales.vo.OrderStatisticsVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -34,6 +35,7 @@ public interface IOrderDescClient {
 	String PASS_CANCEL_TH=API_PREFIX+"/passCancelTH";
 	String PASS_CHECK_TH=API_PREFIX+"/passCheckTH";
 	String SHIPPING_ORDER=API_PREFIX+"/shippingOrder";
+	String GET_BY_ORDER_QUANTITY = API_PREFIX + "/getByOrderQuantity";
 
 	/**
 	 * 修改采购订单状态
@@ -74,7 +76,7 @@ public interface IOrderDescClient {
 
 	/**
 	 * 获取订单附件
-	 * @param pId
+	 * @param srcBillId
 	 * @return
 	 */
 	@GetMapping(GET_BY_ORDER_FILES)
@@ -97,4 +99,10 @@ public interface IOrderDescClient {
 	R passCheckTH(@RequestParam("id") Long id);
 	@PostMapping(SHIPPING_ORDER)
 	void shippingOrder(@RequestBody Order order);
+
+	/**
+	 * 年度预算报表获得订单数量和发货数量
+	 */
+	@GetMapping(GET_BY_ORDER_QUANTITY)
+	List<OrderStatisticsVo> getByOrderQuantity(@RequestParam("year") Integer year, @RequestParam("month") Integer month, @RequestParam("corpId") Long corpId);
 }

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

@@ -52,4 +52,23 @@ public class DatasetVO {
 	 */
 	private String priceType;
 
+	/**
+	 * 发货日期
+	 */
+	private Date receiptTime;
+
+	/**
+	 * 发货数量
+	 */
+	private BigDecimal actualQuantity;
+
+	/**
+	 * 发货日期开始
+	 */
+	private String beginReceiptTime;
+
+	/**
+	 * 发货日期结束
+	 */
+	private String endReceiptTime;
 }

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

@@ -179,4 +179,9 @@ public class OrderStatisticsVo implements Serializable {
 	 */
 	private String identification;
 
+	/**
+	 * 年度预算订单数量
+	 */
+	private BigDecimal orderQuantity;
+
 }

+ 6 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Acc.java

@@ -579,4 +579,10 @@ public class Acc implements Serializable {
 	 */
 	@TableField(exist = false)
 	private String  duiZhangStatus;
+
+	/**
+	 * 用户id
+	 */
+	@TableField(exist = false)
+	private Long userId;
 }

+ 10 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/annualBudget/controller/AnnualBudgetItemController.java

@@ -109,4 +109,14 @@ public class AnnualBudgetItemController extends BladeController {
 		return R.status(annualBudgetItemService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 年度预算报表
+	 */
+	@GetMapping("/annualBudgetProfit")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "修改", notes = "传入annualBudgetItem")
+	public R annualBudgetProfit(AnnualBudgetItem annualBudgetItem, Query query) {
+		return R.data(annualBudgetItemService.annualBudgetProfit(annualBudgetItem, query));
+	}
+
 }

+ 6 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/annualBudget/service/IAnnualBudgetItemService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.box.tube.entity.AnnualBudgetItem;
 import org.springblade.box.tube.vo.AnnualBudgetItemVO;
+import org.springblade.core.mp.support.Query;
 
 /**
  * 年度预算明细表 服务类
@@ -21,4 +22,9 @@ public interface IAnnualBudgetItemService extends IService<AnnualBudgetItem> {
 	 * @return
 	 */
 	IPage<AnnualBudgetItemVO> selectAnnualBudgetItemPage(IPage<AnnualBudgetItemVO> page, AnnualBudgetItemVO itemVO);
+
+	/**
+	 * 年度预算报表
+	 */
+	IPage<AnnualBudgetItem> annualBudgetProfit(AnnualBudgetItem annualBudgetItem, Query query);
 }

+ 65 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/annualBudget/service/impl/AnnualBudgetItemServiceImpl.java

@@ -1,5 +1,6 @@
 package org.springblade.box.tube.annualBudget.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
@@ -7,8 +8,17 @@ import org.springblade.box.tube.annualBudget.mapper.AnnualBudgetItemMapper;
 import org.springblade.box.tube.annualBudget.service.IAnnualBudgetItemService;
 import org.springblade.box.tube.entity.AnnualBudgetItem;
 import org.springblade.box.tube.vo.AnnualBudgetItemVO;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.purchase.sales.feign.IOrderDescClient;
+import org.springblade.purchase.sales.vo.OrderStatisticsVo;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * 年度预算明细表 服务实现类
  *
@@ -19,6 +29,8 @@ import org.springframework.stereotype.Service;
 @AllArgsConstructor
 public class AnnualBudgetItemServiceImpl extends ServiceImpl<AnnualBudgetItemMapper, AnnualBudgetItem> implements IAnnualBudgetItemService {
 
+	private final IOrderDescClient orderDescClient;//销售订单
+
 	/**
 	 * 自定义分页
 	 */
@@ -26,4 +38,57 @@ public class AnnualBudgetItemServiceImpl extends ServiceImpl<AnnualBudgetItemMap
 	public IPage<AnnualBudgetItemVO> selectAnnualBudgetItemPage(IPage<AnnualBudgetItemVO> page, AnnualBudgetItemVO itemVO) {
 		return page.setRecords(baseMapper.selectAnnualBudgetItemPage(page, itemVO));
 	}
+
+	/**
+	 * 年度预算报表
+	 */
+	@Override
+	public IPage<AnnualBudgetItem> annualBudgetProfit(AnnualBudgetItem annualBudgetItem, Query query) {
+		//根据检索条件查询出符合条件的年度预算明细
+		LambdaQueryWrapper<AnnualBudgetItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(AnnualBudgetItem::getTenantId, AuthUtil.getTenantId())
+			.eq(AnnualBudgetItem::getIsDeleted, 0)
+			.eq(ObjectUtil.isNotEmpty(annualBudgetItem.getCorpId()), AnnualBudgetItem::getCorpId, annualBudgetItem.getCorpId())
+			.eq(ObjectUtil.isNotEmpty(annualBudgetItem.getYear()), AnnualBudgetItem::getYear, annualBudgetItem.getYear())
+			.eq(ObjectUtil.isNotEmpty(annualBudgetItem.getMonth()), AnnualBudgetItem::getMonth, annualBudgetItem.getMonth());
+
+		IPage<AnnualBudgetItem> iPage = baseMapper.selectPage(Condition.getPage(query), lambdaQueryWrapper);
+
+		if (ObjectUtil.isNotEmpty(iPage.getRecords())){
+			//根据年月和客户查询订单数量和发货数量
+			iPage.getRecords().forEach(e -> {
+				List<OrderStatisticsVo> list = orderDescClient.getByOrderQuantity(e.getYear(), e.getMonth(), e.getCorpId());
+				if (ObjectUtil.isNotEmpty(list)){
+					list.forEach(o -> {
+						if ("KETER".equals(o.getBrand())){//欧记
+							e.setKeterOrdQuantity(o.getOrderQuantity());
+							e.setKeterDeliverQuantity(o.getActualQuantity());
+						}
+						if ("XCENTWAY".equals(o.getBrand())){//艾特路
+							e.setXcentwayOrdQuantity(o.getOrderQuantity());
+							e.setXcentwayDeliverQuantity(o.getActualQuantity());
+						}
+						if ("LUXXAN".equals(o.getBrand())){//路迈
+							e.setLuxxanOrdQuantity(o.getOrderQuantity());
+							e.setLuxxanDeliverQuantity(o.getActualQuantity());
+						}
+						if ("DRIVEMASTER".equals(o.getBrand())){//登马
+							e.setDrivemasterOrdQuantity(o.getOrderQuantity());
+							e.setDrivemasterDeliverQuantity(o.getActualQuantity());
+						}
+					});
+				}else {
+					e.setKeterOrdQuantity(BigDecimal.ZERO);
+					e.setKeterDeliverQuantity(BigDecimal.ZERO);
+					e.setXcentwayOrdQuantity(BigDecimal.ZERO);
+					e.setXcentwayDeliverQuantity(BigDecimal.ZERO);
+					e.setLuxxanOrdQuantity(BigDecimal.ZERO);
+					e.setLuxxanDeliverQuantity(BigDecimal.ZERO);
+					e.setDrivemasterOrdQuantity(BigDecimal.ZERO);
+					e.setDrivemasterDeliverQuantity(BigDecimal.ZERO);
+				}
+			});
+		}
+		return iPage;
+	}
 }

+ 1 - 3
blade-service/blade-client/src/main/java/org/springblade/client/goods/feign/GoodsDescClient.java

@@ -264,9 +264,7 @@ public class GoodsDescClient implements IGoodsDescClient {
 	@Override
 	public List<GoodsDesc> getGoodsIds(String cname) {
 		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
-
-		goodsDescLambdaQueryWrapper.like(!StringUtil.isBlank(cname), GoodsDesc::getCname, cname).
-			or().like(!StringUtil.isBlank(cname), GoodsDesc::getCnameInt, cname)
+		goodsDescLambdaQueryWrapper.like(GoodsDesc::getCname, cname).or().like(GoodsDesc::getCnameInt, cname)
 			.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(GoodsDesc::getIsDeleted, 0);
 

+ 9 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/feign/OrderDescClient.java

@@ -26,6 +26,7 @@ import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.service.IOrderFilesService;
 import org.springblade.purchase.sales.service.IOrderItemsService;
 import org.springblade.purchase.sales.service.IOrderService;
+import org.springblade.purchase.sales.vo.OrderStatisticsVo;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.stock.vo.StockGoodsVO;
 import org.springblade.system.cache.ParamCache;
@@ -403,5 +404,13 @@ public class OrderDescClient implements IOrderDescClient {
 		iOrderService.shippingOrder(order);
 	}
 
+	/**
+	 * 年度预算报表获得订单数量和发货数量
+	 */
+	@Override
+	public List<OrderStatisticsVo> getByOrderQuantity(Integer year, Integer month, Long corpId) {
+		return iOrderService.getByOrderQuantity(year, month, corpId);
+	}
+
 
 }

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

@@ -473,7 +473,9 @@ WHERE
                t2.create_time     as createTime,
                t1.package_remarks as packageRemarks,
                t1.tenant_id       as tenantId,
-               t2.price_type      as priceType
+               t2.price_type      as priceType,
+               t1.receipt_time    as receiptTime,
+               t2.actual_quantity as actualQuantity
         from business_order t1
                  left join business_order_items t2 on t1.id = t2.pid
                  left join basic_corps_desc t3 on t1.corp_id = t3.id
@@ -502,6 +504,12 @@ WHERE
             <if test="dataset.endCreateTime !=null and dataset.endCreateTime != ''">
                 and t2.create_time &lt;= #{dataset.endCreateTime}
             </if>
+            <if test="dataset.beginReceiptTime !=null and dataset.beginReceiptTime != ''">
+                and t1.receipt_time &gt;= #{dataset.beginReceiptTime}
+            </if>
+            <if test="dataset.endReceiptTime !=null and dataset.endReceiptTime != ''">
+                and t1.receipt_time &gt;= #{dataset.endReceiptTime}
+            </if>
         </where>
         order by t2.create_time desc
     </select>

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

@@ -343,6 +343,11 @@ public interface OrderMapper extends BaseMapper<Order> {
 	 */
 	List<TotalSummaryExcel> totalSummaryExport(@Param("totalSummaryVo") TotalSummaryVo totalSummaryVo, @Param("brand") String brand);
 
+	/**
+	 * 年度预算报表获得订单数量和发货数量
+	 */
+	List<OrderStatisticsVo> getByOrderQuantity(@Param("year") Integer year, @Param("month") Integer month, @Param("corpId") Long corpId);
+
 	int updateStockGoods(StockGoods stockGoods);
 
 	BigDecimal arrears(@Param("tenantId") String tenantId,

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

@@ -3252,6 +3252,47 @@ ORDER BY
         GROUP BY
         BGD.Brand
     </select>
+
+    <select id="getByOrderQuantity" resultType="org.springblade.purchase.sales.vo.OrderStatisticsVo">
+        SELECT
+            BGD.brand AS brand,
+            BOI.orderQuantity AS orderQuantity,
+            BOI.actualQuantity AS actualQuantity
+        FROM
+            business_order BO
+        LEFT JOIN (
+            SELECT
+                pid,
+                item_id,
+                IFNULL( SUM( order_quantity ), 0 ) AS orderQuantity,
+                IFNULL( SUM( actual_quantity ), 0 ) AS actualQuantity
+            FROM
+                business_order_items
+            WHERE
+                is_deleted = 0
+            GROUP BY
+                pid
+        ) BOI ON BOI.pid = BO.id
+        LEFT JOIN basic_goods_desc BGD ON BGD.id = BOI.item_id
+        <where>
+            BO.tenant_id = '681169'
+            AND BO.is_deleted = 0
+            AND BO.bill_type = 'XS'
+            AND BO.receipt_time IS NOT NULL
+            <if test="year != null and year != ''">
+                AND MONTH ( BO.receipt_time ) = #{year}
+            </if>
+            <if test="month != null and month != ''">
+                AND YEAR ( BO.receipt_time ) = #{month}
+            </if>
+            <if test="corpId !- null and corpId != ''">
+                AND YEAR ( BO.corp_id ) = #{corpId}
+            </if>
+        </where>
+        GROUP BY
+        BGD.brand
+    </select>
+
     <update id="updateOrderMessage" parameterType="org.springblade.purchase.sales.entity.Order">
         update  business_order
         <trim prefix="SET" suffixOverrides=",">
@@ -3491,6 +3532,7 @@ ORDER BY
             and DATE_FORMAT(busines_date,'%Y-%m-%d') &lt;= DATE_FORMAT(#{endDate},'%Y-%m-%d')
         </if>
     </select>
+
     <update id="updateStockGoods" parameterType="org.springblade.stock.entity.StockGoods">
         UPDATE business_stock_goods SET surplus_route_quantity = #{surplusRouteQuantity},locking_quantity = #{lockingQuantity} WHERE tenant_id = #{tenantId} AND id = #{id} AND is_deleted = 0
     </update>

+ 5 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -429,6 +429,11 @@ public interface IOrderService extends IService<Order> {
 	List<OrderStatisticsVo> totalSummaryItemExport(OrderStatisticsVo statisticsVo);
 
 	/**
+	 * 年度预算报表获得订单数量和发货数量
+	 */
+	List<OrderStatisticsVo> getByOrderQuantity(Integer year, Integer month, Long corpId);
+
+	/**
 	 * 计算国内费用
 	 */
 	Map<String,Object> calculationDomesticFees(Order order);

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

@@ -2335,6 +2335,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	}
 
 	/**
+	 * 年度预算报表获得订单数量和发货数量
+	 */
+	@Override
+	public List<OrderStatisticsVo> getByOrderQuantity(Integer year, Integer month, Long corpId) {
+		return baseMapper.getByOrderQuantity(year, month, corpId);
+	}
+
+	/**
 	 * 计算国内费用
 	 *
 	 * @param order

+ 1 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

@@ -688,6 +688,7 @@ public class AccController extends BladeController {
 	@ApiOperation(value = "收付款余额", notes = "传入acc")
 	public R<IPage<Acc>> selBillBalance(Acc acc, Query query) {
 		acc.setTenantId(AuthUtil.getTenantId());
+		acc.setUserId(AuthUtil.getUserId());
 		IPage<Acc> page = accService.selBillBalance(Condition.getPage(query), acc);
 		return R.data(page);
 	}

+ 7 - 2
blade-service/trade-finance/src/main/java/org/springblade/finance/mapper/AccMapper.xml

@@ -97,12 +97,14 @@
         LEFT JOIN (
             SELECT
                 FS.Corp_id AS corpId,
-                sum( FS.Amount ) AS settlementAmount,
-                sum( case_over_payment ) AS caseOverPayment
+                sum( FI.this_amount ) AS settlementAmount,
+                sum( FS.case_over_payment ) AS caseOverPayment
             FROM finance_settlement FS
+            LEFT JOIN finance_items FI ON FI.pid = FS.id
             <where>
                 FS.tenant_id = #{acc.tenantId}
                 AND FS.is_deleted = 0
+                AND FI.is_deleted = 0
                 AND FS.finance_status = '结算完成'
                 <if test='acc.billType != null and acc.billType != "" and acc.billType == "申请"'>
                     AND FS.bill_type = '付费'
@@ -127,6 +129,9 @@
             <if test="acc.corpId != null and acc.corpId != ''">
                 and FC.Corpid = #{acc.corpId}
             </if>
+            <if test="acc.userId != null and acc.userId != ''">
+                and BCD.admin_profiles like CONCAT(CONCAT('%', #{acc.userId}), '%')
+            </if>
         </where>
         GROUP BY FC.Corpid
     </select>

+ 2 - 1
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderSaveImpl.java

@@ -339,13 +339,14 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 				}
 				// 毛利率
 				order.setGrossProfitRate(grossProfitRate);
+				order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
 			} else {
 				// 毛利额
 				order.setGrossProfit(new BigDecimal(BigInteger.ZERO));
 				// 毛利率
 				order.setGrossProfitRate(new BigDecimal(BigInteger.ZERO));
 			}
-			order.setStorageQuantity(order.getOrderItemsList().stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));
+
 		}
 		order.setUpdateTime(new Date());
 		order.setUpdateUser(AuthUtil.getUserId());