فهرست منبع

多多销售总览接口

liyuan 1 ماه پیش
والد
کامیت
06a4ecd1e7

+ 5 - 0
blade-common/src/main/java/org/springblade/common/enums/NumberEnum.java

@@ -62,6 +62,11 @@ public enum NumberEnum {
 	TEN(10),
 
 	/**
+	 * 12
+	 */
+	TWELVE(12),
+
+	/**
 	 * 15
 	 */
 	FIFTEEN(15),

+ 36 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/vo/DuoDuoColumnarRzVo.java

@@ -0,0 +1,36 @@
+package org.springblade.salesPart.vo;
+
+import lombok.Data;
+import org.springblade.common.enums.NumberEnum;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Rain
+ */
+@Data
+public class DuoDuoColumnarRzVo {
+
+
+	/**
+	 *
+	 */
+	private List<BigDecimal> number;
+
+	/**
+	 *
+	 */
+	private List<BigDecimal> amount;
+
+	/**
+	 *
+	 */
+	private List<BigDecimal> primaryFundingAmount;
+
+
+
+
+
+}

+ 54 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/vo/DuoDuoRealTimeOverviewVo.java

@@ -0,0 +1,54 @@
+package org.springblade.salesPart.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author Rain
+ */
+@Data
+public class DuoDuoRealTimeOverviewVo {
+
+	/**
+	 * 订单金额
+	 */
+	private BigDecimal totalMoney;
+
+	/**
+	 * 配额
+	 */
+	private BigDecimal fundingAmount;
+
+	/**
+	 * 保证金
+	 */
+	private BigDecimal bondAmount;
+
+	/**
+	 * 还款
+	 */
+	private BigDecimal repayment;
+
+	/**
+	 * 允许提货金额
+	 */
+	private BigDecimal amount;
+
+	/**
+	 * 资金占用
+	 */
+	private BigDecimal interest;
+
+
+	public void setAllZero(){
+		this.totalMoney = BigDecimal.ZERO;
+		this.fundingAmount = BigDecimal.ZERO;
+		this.bondAmount = BigDecimal.ZERO;
+		this.repayment = BigDecimal.ZERO;
+		this.amount = BigDecimal.ZERO;
+		this.interest = BigDecimal.ZERO;
+	}
+
+
+}

+ 24 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/duoduo/DuoDuoTenantVo.java

@@ -0,0 +1,24 @@
+package org.springblade.system.duoduo;
+
+import lombok.Data;
+
+/**
+ * 即配仓客户
+ * @author Rain
+ */
+@Data
+public class DuoDuoTenantVo {
+
+
+	/**
+	 * 客户编号
+	 */
+	private String customerCode;
+
+	/**
+	 * 客户名称
+	 */
+	private String  customerName;
+
+
+}

+ 21 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/controller/StatisticsController.java

@@ -9,10 +9,14 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.salesPart.dto.*;
+import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.statistics.service.IStatisticsService;
+import org.springblade.salesPart.vo.DuoDuoColumnarRzVo;
+import org.springblade.salesPart.vo.DuoDuoRealTimeOverviewVo;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -267,4 +271,21 @@ public class StatisticsController {
 		ExcelUtil.export(response, "统计积分明细", "统计积分明细", saleDetailDtoList, PointsDetailDto.class);
 	}
 
+	/**
+	 *  达沃特多多易车配 实时总览
+	 */
+	@GetMapping("/duoDuoRealTimeOverview")
+	public R<DuoDuoRealTimeOverviewVo> duoDuoRealTimeOverview(@RequestParam(value = "tenantId") String tenantId, @RequestParam("year") String year) {
+		return R.data(statisticsService.duoDuoRealTimeOverview(tenantId, year));
+	}
+
+
+	/**
+	 * 柱状统计
+	 */
+	@GetMapping("/duoDuoColumnarRz")
+	public R<DuoDuoColumnarRzVo> duoDuoColumnarRz(@RequestParam("tenantId") String tenantId, @RequestParam("year") String year) {
+		return R.data(statisticsService.duoDuoColumnarRz(tenantId, year));
+	}
+
 }

+ 21 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/IStatisticsService.java

@@ -22,6 +22,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.dto.*;
 import org.springblade.salesPart.entity.PjOrder;
 import org.springblade.salesPart.entity.PjOrderItems;
+import org.springblade.salesPart.vo.DuoDuoColumnarRzVo;
+import org.springblade.salesPart.vo.DuoDuoRealTimeOverviewVo;
 
 import java.util.List;
 import java.util.Map;
@@ -127,4 +129,23 @@ public interface IStatisticsService {
 	R pointsDetailSum(SaleDetail saleDetailDto);
 
 	List<PointsDetailDto> pointsDetailExport(SaleDetail saleDetailDto);
+
+
+	/**
+	 * 达沃特多多实时数据
+	 *
+	 * @param tenantId 租户id
+	 * @param year 年
+	 * @return 结果
+	 */
+	DuoDuoRealTimeOverviewVo duoDuoRealTimeOverview(String tenantId, String year);
+
+	/**
+	 * 达沃特多多柱状图
+	 *
+	 * @param tenantId 租户id
+	 * @param year 年
+	 * @return 结果
+	 */
+	DuoDuoColumnarRzVo duoDuoColumnarRz(String tenantId, String year);
 }

+ 69 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

@@ -23,10 +23,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.springblade.common.enums.BsTypeEnum;
 import org.springblade.common.enums.CommonEnum;
+import org.springblade.common.enums.NumberEnum;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.salesPart.corps.service.ICorpsDescService;
@@ -49,6 +51,8 @@ import org.springblade.salesPart.ship.service.IShipService;
 import org.springblade.salesPart.statistics.service.IStatisticsService;
 import org.springblade.salesPart.tireMallStatistics.service.ITireMallStatisticsService;
 import org.springblade.salesPart.vo.AppStatisticsVo;
+import org.springblade.salesPart.vo.DuoDuoColumnarRzVo;
+import org.springblade.salesPart.vo.DuoDuoRealTimeOverviewVo;
 import org.springblade.salesPart.vo.StatisticsVo;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -2069,4 +2073,69 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		saleDetailDto.setTenantId(AuthUtil.getTenantId());
 		return orderItemsService.pointsDetailList(saleDetailDto);
 	}
+
+	@Override
+	@TenantIgnore
+	public DuoDuoRealTimeOverviewVo duoDuoRealTimeOverview(String tenantId, String year) {
+		DuoDuoRealTimeOverviewVo duoDuoRealTimeOverviewVo = new DuoDuoRealTimeOverviewVo();
+		duoDuoRealTimeOverviewVo.setAllZero();
+		List<PjOrder> orderList = orderService.list(new LambdaQueryWrapper<PjOrder>().eq(PjOrder::getTenantId, tenantId)
+			.eq(PjOrder::getIsDeleted, NumberEnum.Zero.number).eq(PjOrder::getBsType, BsTypeEnum.FINANCING_PROCUREMENT.info)
+			.eq(PjOrder::getWhetherRedeem, NumberEnum.Zero.number).apply("status != '录入' and DATE_FORMAT(busines_date,'%Y') = '" + year + "'"));
+		if (!CollectionUtils.isEmpty(orderList)) {
+			BigDecimal totalMoney = orderList.stream().map(PjOrder::getTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+			BigDecimal fundingAmount = orderList.stream().map(PjOrder::getPrimaryFundingAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			duoDuoRealTimeOverviewVo.setTotalMoney(totalMoney);
+			duoDuoRealTimeOverviewVo.setFundingAmount(fundingAmount);
+			duoDuoRealTimeOverviewVo.setBondAmount(totalMoney.subtract(fundingAmount));
+		}
+		List<PjpfBalanceReset> balanceResetList = pjpfBalanceResetService.list(new LambdaQueryWrapper<PjpfBalanceReset>()
+			.eq(PjpfBalanceReset::getIsDeleted, NumberEnum.Zero.number)
+			.eq(PjpfBalanceReset::getTenantId, tenantId)
+			.eq(PjpfBalanceReset::getStatus, NumberEnum.ONE.number)
+			.apply("DATE_FORMAT(confirming_person_date,'%Y') = '" + year + "'"));
+		if (!CollectionUtils.isEmpty(balanceResetList)) {
+			duoDuoRealTimeOverviewVo.setRepayment(balanceResetList.stream().map(PjpfBalanceReset::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+		}
+		PjpfFunding funding = pjpfFundingService.getOne(new LambdaQueryWrapper<PjpfFunding>()
+			.eq(PjpfFunding::getIsDeleted, NumberEnum.Zero.number)
+			.eq(PjpfFunding::getTenantId, tenantId)
+			.last("limit 1"));
+		if (!org.springframework.util.ObjectUtils.isEmpty(funding)) {
+			duoDuoRealTimeOverviewVo.setAmount(funding.getAvailableAmount());
+			duoDuoRealTimeOverviewVo.setInterest(funding.getInterest());
+		}
+		return duoDuoRealTimeOverviewVo;
+	}
+
+	@Override
+	@TenantIgnore
+	public DuoDuoColumnarRzVo duoDuoColumnarRz(String tenantId, String selectedYear) {
+		DuoDuoColumnarRzVo duoDuoColumnarRzVo = new DuoDuoColumnarRzVo();
+		List<BigDecimal> number = new ArrayList<>();
+		List<BigDecimal> amount = new ArrayList<>();
+		List<BigDecimal> primaryFundingAmount = new ArrayList<>();
+		// 获取当前年份
+		LocalDate selectedDate = LocalDate.of(Integer.parseInt(selectedYear), 12 ,31);
+		LocalDate now = LocalDate.now();
+		int year = selectedDate.getYear();
+		int nowMonth = selectedDate.getYear() == now.getYear() ? now.getMonthValue() : 12;
+		YearMonth yearMonth;
+		// 遍历每个月份
+		for (int month = NumberEnum.ONE.number; month <= nowMonth; month++) {
+			// 构建对应年份和月份的日期
+			yearMonth = YearMonth.of(year, month);
+			// 获取该月份的第一天和最后一天
+			LocalDate firstDay = yearMonth.atDay(NumberEnum.ONE.number);
+			LocalDate lastDay = yearMonth.atEndOfMonth();
+			Map<String, BigDecimal> sum = orderMapper.columnarRz(firstDay, lastDay, tenantId, null);
+			number.add(Objects.isNull(sum.get("goodsTotalNum")) ? FinalMap.ZERO_POINT_ZERO : sum.get("goodsTotalNum"));
+			amount.add(Objects.isNull(sum.get("totalMoney")) ? FinalMap.ZERO_POINT_ZERO : sum.get("totalMoney"));
+			primaryFundingAmount.add(Objects.isNull(sum.get("primaryFundingAmount")) ? FinalMap.ZERO_POINT_ZERO : sum.get("primaryFundingAmount"));
+		}
+		duoDuoColumnarRzVo.setNumber(number);
+		duoDuoColumnarRzVo.setAmount(amount);
+		duoDuoColumnarRzVo.setPrimaryFundingAmount(primaryFundingAmount);
+		return duoDuoColumnarRzVo;
+	}
 }

+ 6 - 0
blade-service/blade-system/src/main/java/org/springblade/system/controller/TenantController.java

@@ -34,6 +34,7 @@ import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.system.duoduo.DuoDuoTenantVo;
 import org.springblade.system.entity.Tenant;
 import org.springblade.system.service.ITenantService;
 import org.springframework.web.bind.annotation.*;
@@ -205,5 +206,10 @@ public class TenantController extends BladeController {
 		return tenantService.copyData(tenantId, tenantIdCopy, type);
 	}
 
+	@GetMapping("/getFundingCustomerList")
+	public R<List<DuoDuoTenantVo>> getFundingCustomerList(){
+		return R.data(tenantService.getFundingCustomerList());
+	}
+
 
 }

+ 8 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.core.tenant.annotation.TenantIgnore;
+import org.springblade.system.duoduo.DuoDuoTenantVo;
 import org.springblade.system.entity.Tenant;
 
 import java.util.List;
@@ -42,4 +43,11 @@ public interface TenantMapper extends BaseMapper<Tenant> {
 
 	@TenantIgnore
     List<Tenant> getTenantList(@Param("tenantId") String tenantId);
+
+	/**
+	 * 获取即配仓客户
+	 *
+	 * @return 结果
+	 */
+	List<DuoDuoTenantVo> getFundingCustomerList();
 }

+ 11 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/TenantMapper.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--suppress ALL -->
 <mapper namespace="org.springblade.system.mapper.TenantMapper">
 
     <!-- 通用查询映射结果 -->
@@ -34,4 +35,14 @@
         select * from blade_tenant where is_deleted = 0 and find_in_set(tenant_id, #{tenantId})
     </select>
 
+    <select id="getFundingCustomerList" resultType="org.springblade.system.duoduo.DuoDuoTenantVo">
+        SELECT
+            bt.tenant_id as customerCode,
+            bt.tenant_name as customerName
+        FROM
+            blade_param_service bps
+                INNER JOIN blade_tenant bt ON bps.tenant_id = bt.tenant_id
+        WHERE bps.param_key = 'whether.financing' and bps.param_value = 1
+    </select>
+
 </mapper>

+ 8 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java

@@ -19,6 +19,7 @@ package org.springblade.system.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.tool.api.R;
+import org.springblade.system.duoduo.DuoDuoTenantVo;
 import org.springblade.system.entity.Tenant;
 
 import java.util.Date;
@@ -77,4 +78,11 @@ public interface ITenantService extends BaseService<Tenant> {
     R copyData(String tenantId, String tenantIdCopy, String type);
 
     List<Tenant> getTenantList(String tenantId);
+
+	/**
+	 * 获取所有即配仓客户
+	 *
+	 * @return 结果
+	 */
+    List<DuoDuoTenantVo> getFundingCustomerList();
 }

+ 9 - 4
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java

@@ -26,6 +26,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.TenantId;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.jackson.JsonUtil;
@@ -42,6 +43,7 @@ import org.springblade.los.check.entity.LosAuditPathsActs;
 import org.springblade.los.feign.ILosClient;
 import org.springblade.resource.feign.IOssClient;
 import org.springblade.system.cache.ParamCache;
+import org.springblade.system.duoduo.DuoDuoTenantVo;
 import org.springblade.system.entity.*;
 import org.springblade.system.mapper.TenantMapper;
 import org.springblade.system.service.*;
@@ -51,10 +53,7 @@ import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static org.springblade.common.constant.TenantConstant.*;
@@ -383,6 +382,12 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
 		return baseMapper.getTenantList(tenantId);
 	}
 
+	@Override
+	@TenantIgnore
+	public List<DuoDuoTenantVo> getFundingCustomerList() {
+		return baseMapper.getFundingCustomerList();
+	}
+
 	private void recursionLosAuditPathsActs(String tenantId, String tenantIdCopy, Long oldParentId, Long newParentId, Dept dept) {
 		LosAuditPathsActs losAuditPathsActs = new LosAuditPathsActs();
 		losAuditPathsActs.setTenantId(tenantId);