Jelajahi Sumber

定时任务统计接口调整,以及前端前端数据统计接口

xucaiqin 2 tahun lalu
induk
melakukan
1f57bc4a42

+ 6 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementLogisticsMapper.java

@@ -109,6 +109,11 @@ public interface KwpSettlementLogisticsMapper extends BaseMapper<KwpSettlementLo
      */
     List<MoneyType> sumMoneyType(@Param("entId") Long entId, @Param("cur") List<LocalDateTime> cur, @Param("pre") List<LocalDateTime> pre, @Param("unitType") Integer unitType);
 
+    /**
+     * 物流结算定时任务归档数据查询
+     *
+     * @return
+     */
     List<KwpSettlementRecord> queryRecord();
 
     /**
@@ -118,5 +123,5 @@ public interface KwpSettlementLogisticsMapper extends BaseMapper<KwpSettlementLo
      * @param unitType
      * @return
      */
-    SettlementLogisticsDto selectDetail(@Param("id")Long id, @Param("unitType")Integer unitType);
+    SettlementLogisticsDto selectDetail(@Param("id") Long id, @Param("unitType") Integer unitType);
 }

+ 2 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/dao/KwpSettlementRecordMapper.java

@@ -2,6 +2,7 @@ package com.sckw.payment.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.payment.model.KwpSettlementRecord;
+import com.sckw.payment.model.vo.SettlementRecord;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -15,5 +16,5 @@ import java.util.List;
 public interface KwpSettlementRecordMapper extends BaseMapper<KwpSettlementRecord> {
     void insertBatch(@Param("list") List<KwpSettlementRecord> list);
 
-    void countByDay(@Param("time") List<String> time);
+    List<SettlementRecord> countByDay(@Param("time") List<String> time, @Param("entId")Long entId);
 }

+ 67 - 0
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/SettlementRecord.java

@@ -0,0 +1,67 @@
+package com.sckw.payment.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * 结算统计
+ *
+ * @author xucaiqin
+ * @date 2023-09-13 18:48:30
+ */
+@Data
+public class SettlementRecord {
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+    /**
+     * 总应收金额
+     */
+    private BigDecimal totalReceiveMoney;
+
+    /**
+     * 待收金额
+     */
+    private BigDecimal exactMoney;
+
+    /**
+     * 已收金额(累加金额)
+     */
+    private BigDecimal receivedMoney;
+
+    /**
+     * 逾期待收金额
+     */
+    private BigDecimal overdueExactMoney;
+
+    /**
+     * 总应付金额
+     */
+    private BigDecimal totalPayMoney;
+
+    /**
+     * 待付金额
+     */
+    private BigDecimal unpaidMoney;
+
+    /**
+     * 已付金额(累加金额)
+     */
+    private BigDecimal paidMoney;
+
+    /**
+     * 逾期待付金额
+     */
+    private BigDecimal overduePaidMoney;
+
+    /**
+     * 创建日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createTime;
+}

+ 5 - 4
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementRecordService.java

@@ -1,11 +1,13 @@
 package com.sckw.payment.service;
 
 import com.sckw.payment.dao.KwpSettlementRecordMapper;
-import com.sckw.payment.model.vo.req.FinanceCount;
+import com.sckw.payment.model.vo.SettlementRecord;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 归档记录
  *
@@ -19,8 +21,7 @@ public class KwpSettlementRecordService {
     private final KwpSettlementRecordMapper kwpSettlementRecordMapper;
 
 
-    public String financeCount(FinanceCount financeCount) {
-        kwpSettlementRecordMapper.countByDay(financeCount);
-        return null;
+    public List<SettlementRecord> financeCount(List<String> financeCount, Long entId) {
+        return kwpSettlementRecordMapper.countByDay(financeCount,entId);
     }
 }

+ 38 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WorkbenchService.java

@@ -1,10 +1,17 @@
 package com.sckw.payment.service;
 
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.payment.model.vo.req.FinanceCount;
+import com.sckw.payment.utils.DateTimeUtil;
+import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 工作台
  *
@@ -16,8 +23,37 @@ import org.springframework.stereotype.Service;
 @RequiredArgsConstructor
 public class WorkbenchService {
 
+    @Resource
+    private KwpSettlementRecordService kwpSettlementRecordService;
+
+    public Object financeCount(FinanceCount financeCount) {
+        //周期维度 1-天 2-周 3-月
+        Integer circle = financeCount.getCircle();
+        List<String> time = new ArrayList<>();
 
-    public String financeCount(FinanceCount financeCount) {
-        return null;
+        //时间参数为空,按照默认维度统计
+        if (StringUtils.isBlank(financeCount.getStartTime()) && StringUtils.isBlank(financeCount.getEndTime())) {
+            //按照周期维度生成时间段
+            if (circle == 1) {
+                //从今天倒推15天
+                time.add(DateTimeUtil.getComputeDaysStr(-14));
+                time.add(DateTimeUtil.getComputeDaysStr(0));
+            } else if (circle == 3) {
+                //从当月倒推12月
+                time.add(DateTimeUtil.getComputeMonthStartDayStr(-12));
+                time.add(DateTimeUtil.getComputeMonthEndDayStr(0));
+            }
+        } else {
+            //按照给定的时间参数进行统计
+            if (circle == 1) {
+                time.add(financeCount.getStartTime());
+                time.add(financeCount.getEndTime());
+            } else if (circle == 3) {
+                time.add(DateTimeUtil.getComputeMonthStartDayStr(financeCount.getStartTime()));
+                time.add(DateTimeUtil.getComputeMonthEndDayStr(financeCount.getEndTime()));
+            }
+        }
+        Long entId = LoginUserHolder.getEntId();
+        return kwpSettlementRecordService.financeCount(time,entId);
     }
 }

+ 2 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/task/FinanceTask.java

@@ -49,8 +49,8 @@ public class FinanceTask {
                     kwpSettlementRecord.setOrderType(2);
                     kwpSettlementRecord.setCreateTime(now);
                 }
-                kwpSettlementRecordMapper.insertBatch(moneyArchivedDto);
                 log.info("贸易归档:{}", JSONObject.toJSONString(moneyArchivedDto));
+                kwpSettlementRecordMapper.insertBatch(moneyArchivedDto);
             }
             if (!CollectionUtils.isEmpty(kwpSettlementRecords)) {
                 for (KwpSettlementRecord kwpSettlementRecord : kwpSettlementRecords) {
@@ -58,8 +58,8 @@ public class FinanceTask {
                     kwpSettlementRecord.setOrderType(1);
                     kwpSettlementRecord.setCreateTime(now);
                 }
-                kwpSettlementRecordMapper.insertBatch(kwpSettlementRecords);
                 log.info("物流归档:{}", JSONObject.toJSONString(kwpSettlementRecords));
+                kwpSettlementRecordMapper.insertBatch(kwpSettlementRecords);
             }
         } catch (Exception ex) {
             log.error("结算记录归档异常:{}", ex, ex);

+ 59 - 12
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/utils/DateTimeUtil.java

@@ -5,6 +5,7 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
 
 /**
  * @description: 时间工具类
@@ -20,6 +21,13 @@ public class DateTimeUtil {
     public static final DateTimeFormatter YYYY_MM_DD = DateTimeFormatter.ofPattern(YMD);
     public static final DateTimeFormatter HH_MM_SS = DateTimeFormatter.ofPattern(HMS);
 
+    public static LocalDateTime parse(String date) {
+        return LocalDateTime.parse(date, YYYY_MM_DD_HH_MM_SS);
+    }
+
+    public static LocalDate parseYMD(String date) {
+        return LocalDate.parse(date, YYYY_MM_DD);
+    }
     /*格式化*/
 
     /**
@@ -60,14 +68,6 @@ public class DateTimeUtil {
         return formatYMD(getComputeMonth(months));
     }
 
-    public static String getComputeMonthStartDay(long months) {
-        return formatYMD(getComputeMonth(months));
-    }
-
-    public static String getComputeMonthEndDay(long months) {
-        return formatYMD(getComputeMonth(months));
-    }
-
     /**
      * 从给定的日期计算月数差
      *
@@ -90,9 +90,32 @@ public class DateTimeUtil {
         return localDateTime.plusMonths(months);
     }
 
+    /**
+     * 从当前日期计算月数差,并取当月的第一天
+     *
+     * @param months 加或减的月数
+     * @return LocalDateTime,时间最小值
+     */
+    public static LocalDate getComputeMonthStartDay(long months) {
+        return getComputeMonth(months).with(TemporalAdjusters.firstDayOfMonth());
+    }
 
     /**
-     * 从当前日期计算月数差
+     * 获取传入日期的当月第一天
+     *
+     * @param date 日期(不能包含时分秒)
+     * @return
+     */
+    public static String getComputeMonthStartDayStr(String date) {
+        return formatYMD(parseYMD(date).with(TemporalAdjusters.firstDayOfMonth()));
+    }
+
+    public static String getComputeMonthStartDayStr(long months) {
+        return formatYMD(getComputeMonth(months).with(TemporalAdjusters.firstDayOfMonth()));
+    }
+
+    /**
+     * 从当前日期计算月数差,时间取最小值 00:00:00
      *
      * @param months 加或减的月数
      * @param offset 偏移的天数 ±1
@@ -103,7 +126,7 @@ public class DateTimeUtil {
     }
 
     /**
-     * 从当前日期计算月数差
+     * 从当前日期计算月数差,时间取最大值 23:59:59
      *
      * @param months 加或减的月数
      * @param offset 偏移的天数 ±1
@@ -112,6 +135,30 @@ public class DateTimeUtil {
     public static LocalDateTime getComputeMonthEnd(long months, long offset) {
         return LocalDateTime.of(getComputeMonth(months), LocalTime.MAX).plusDays(offset);
     }
+
+    /**
+     * 获取传入日期的当月最后一天
+     *
+     * @param date
+     * @return
+     */
+    public static String getComputeMonthEndDayStr(String date) {
+        return formatYMD(parseYMD(date).with(TemporalAdjusters.lastDayOfMonth()));
+    }
+
+    public static String getComputeMonthEndDayStr(long months) {
+        return formatYMD(getComputeMonth(months).with(TemporalAdjusters.lastDayOfMonth()));
+    }
+
+    /**
+     * 从当前日期计算月数差,并取当月的最后一天
+     *
+     * @param months 加或减的月数
+     * @return LocalDateTime,时间最小值
+     */
+    public static LocalDate getComputeMonthEndDay(long months) {
+        return getComputeMonth(months).with(TemporalAdjusters.lastDayOfMonth());
+    }
     /*天差计算*/
 
     /**
@@ -197,7 +244,7 @@ public class DateTimeUtil {
 
     public static void main(String[] args) {
 
-        System.out.println(getComputeDaysStr(0));
-        System.out.println(getComputeMonthStart(1, 0));
+        System.out.println(parse("2023-12-11"));
+        System.out.println(getComputeMonthEndDayStr(0));
     }
 }

+ 1 - 1
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementLogisticsMapper.xml

@@ -544,7 +544,7 @@
                             ksl.total_price - ksl.actual_price, 0.0)
                    )                                                                overduePaidMoney
         FROM kwp_settlement_logistics ksl
-                 LEFT JOIN kwp_ledger_logistics_unit kllu ON ksl.l_ledger_id = kllu.l_ledger_id
+                 inner JOIN kwp_ledger_logistics_unit kllu ON ksl.l_ledger_id = kllu.l_ledger_id
             AND kllu.del_flag = 0
         WHERE ksl.del_flag = 0
         GROUP BY kllu.top_ent_id

+ 77 - 46
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementRecordMapper.xml

@@ -1,52 +1,83 @@
 <?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">
 <mapper namespace="com.sckw.payment.dao.KwpSettlementRecordMapper">
-  <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpSettlementRecord">
-    <!--@mbg.generated-->
-    <!--@Table kwp_settlement_record-->
-    <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="ent_id" jdbcType="BIGINT" property="entId" />
-    <result column="total_receive_money" jdbcType="DECIMAL" property="totalReceiveMoney" />
-    <result column="exact_money" jdbcType="DECIMAL" property="exactMoney" />
-    <result column="received_money" jdbcType="DECIMAL" property="receivedMoney" />
-    <result column="overdue_exact_money" jdbcType="DECIMAL" property="overdueExactMoney" />
-    <result column="total_pay_money" jdbcType="DECIMAL" property="totalPayMoney" />
-    <result column="unpaid_money" jdbcType="DECIMAL" property="unpaidMoney" />
-    <result column="paid_money" jdbcType="DECIMAL" property="paidMoney" />
-    <result column="overdue_paid_money" jdbcType="DECIMAL" property="overduePaidMoney" />
-    <result column="create_time" jdbcType="DATE" property="createTime" />
-    <result column="order_type" jdbcType="INTEGER" property="orderType" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    <!--@mbg.generated-->
-    id, ent_id, total_receive_money, exact_money, received_money, overdue_exact_money, 
-    total_pay_money, unpaid_money, paid_money, overdue_paid_money, create_time, order_type
-  </sql>
+    <resultMap id="BaseResultMap" type="com.sckw.payment.model.KwpSettlementRecord">
+        <!--@mbg.generated-->
+        <!--@Table kwp_settlement_record-->
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="ent_id" jdbcType="BIGINT" property="entId"/>
+        <result column="total_receive_money" jdbcType="DECIMAL" property="totalReceiveMoney"/>
+        <result column="exact_money" jdbcType="DECIMAL" property="exactMoney"/>
+        <result column="received_money" jdbcType="DECIMAL" property="receivedMoney"/>
+        <result column="overdue_exact_money" jdbcType="DECIMAL" property="overdueExactMoney"/>
+        <result column="total_pay_money" jdbcType="DECIMAL" property="totalPayMoney"/>
+        <result column="unpaid_money" jdbcType="DECIMAL" property="unpaidMoney"/>
+        <result column="paid_money" jdbcType="DECIMAL" property="paidMoney"/>
+        <result column="overdue_paid_money" jdbcType="DECIMAL" property="overduePaidMoney"/>
+        <result column="create_time" jdbcType="DATE" property="createTime"/>
+        <result column="order_type" jdbcType="INTEGER" property="orderType"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <!--@mbg.generated-->
+        id,
+        ent_id,
+        total_receive_money,
+        exact_money,
+        received_money,
+        overdue_exact_money,
+        total_pay_money,
+        unpaid_money,
+        paid_money,
+        overdue_paid_money,
+        create_time,
+        order_type
+    </sql>
 
-  <insert id="insertBatch">
-      insert into kwp_settlement_record
-      <trim prefix="(" suffix=")" suffixOverrides=",">
-          id, ent_id, total_receive_money, exact_money, received_money, overdue_exact_money,
-          total_pay_money, unpaid_money, paid_money, overdue_paid_money, create_time, order_type
-      </trim>
-      values
-      <foreach collection="list" item="item" separator=",">
-          <trim prefix="(" suffix=")" suffixOverrides=",">
-              #{item.id,jdbcType=BIGINT},
-              #{item.entId,jdbcType=BIGINT},
-              #{item.totalReceiveMoney,jdbcType=DECIMAL},
-              #{item.exactMoney,jdbcType=DECIMAL},
-              #{item.receivedMoney,jdbcType=DECIMAL},
-              #{item.overdueExactMoney,jdbcType=DECIMAL},
-              #{item.totalPayMoney,jdbcType=DECIMAL},
-              #{item.unpaidMoney,jdbcType=DECIMAL},
-              #{item.paidMoney,jdbcType=DECIMAL},
-              #{item.overduePaidMoney,jdbcType=DECIMAL},
-              #{item.createTime,jdbcType=TIMESTAMP},
-              #{item.orderType,jdbcType=INTEGER}
-          </trim>
-      </foreach>
-  </insert>
-    <select id="countByDay">
+    <insert id="insertBatch">
+        insert into kwp_settlement_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            id, ent_id, total_receive_money, exact_money, received_money, overdue_exact_money,
+            total_pay_money, unpaid_money, paid_money, overdue_paid_money, create_time, order_type
+        </trim>
+        values
+        <foreach collection="list" item="item" separator=",">
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                #{item.id,jdbcType=BIGINT},
+                #{item.entId,jdbcType=BIGINT},
+                #{item.totalReceiveMoney,jdbcType=DECIMAL},
+                #{item.exactMoney,jdbcType=DECIMAL},
+                #{item.receivedMoney,jdbcType=DECIMAL},
+                #{item.overdueExactMoney,jdbcType=DECIMAL},
+                #{item.totalPayMoney,jdbcType=DECIMAL},
+                #{item.unpaidMoney,jdbcType=DECIMAL},
+                #{item.paidMoney,jdbcType=DECIMAL},
+                #{item.overduePaidMoney,jdbcType=DECIMAL},
+                #{item.createTime,jdbcType=TIMESTAMP},
+                #{item.orderType,jdbcType=INTEGER}
+            </trim>
+        </foreach>
+    </insert>
+    <select id="countByDay" resultType="com.sckw.payment.model.vo.SettlementRecord">
+        select sum(ksr.total_pay_money)     totalPayMoney,
+               sum(ksr.exact_money)         exactMoney,
+               sum(ksr.received_money)      receivedMoney,
+               sum(ksr.overdue_exact_money) overdueExactMoney,
+               sum(ksr.total_pay_money)     totalPayMoney,
+               sum(ksr.unpaid_money)        unpaidMoney,
+               sum(ksr.paid_money)          paidMoney,
+               sum(ksr.overdue_paid_money)  overduePaidMoney
+        from kwp_settlement_record ksr
+        <where>
+            <if test="entId != null">
+                and ksr.ent_id = #{entId,jdbcType=BIGINT}
+            </if>
+            <if test="time != null and time.size() != 0">
+                and ksr.create_time between
+                <foreach collection="time" open=" " separator="and" close=" " item="item">
+                    #{item,jdbcType=TIMESTAMP}
+                </foreach>
+            </if>
+        </where>
+        group by ksr.create_time
     </select>
 </mapper>

+ 1 - 1
sckw-modules/sckw-payment/src/main/resources/mapper/KwpSettlementTradeMapper.xml

@@ -493,7 +493,7 @@
                             kst.total_price - kst.actual_price, 0.0)
                    )                                                                overduePaidMoney
         FROM `kwp_settlement_trade` kst
-                 LEFT JOIN kwp_ledger_trade_unit kltu ON kst.t_ledger_id = kltu.t_ledger_id
+                 inner JOIN kwp_ledger_trade_unit kltu ON kst.t_ledger_id = kltu.t_ledger_id
             AND kltu.del_flag = 0
         WHERE kst.del_flag = 0
         GROUP BY kltu.top_ent_id