zxfqwert 3 ngày trước cách đây
mục cha
commit
b79a265bc7

+ 7 - 1
jd-logistics-modules/jd-logistics-job/pom.xml

@@ -70,7 +70,13 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common-swagger</artifactId>
         </dependency>
-        
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>jd-logistics-modules-system</artifactId>
+            <version>3.6.6</version>
+            <scope>compile</scope>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 33 - 1
jd-logistics-modules/jd-logistics-job/src/main/java/com/ruoyi/job/task/FinancialMonthSummaryTask.java

@@ -1,7 +1,16 @@
 package com.ruoyi.job.task;
 
+
+import com.ruoyi.logistics.domain.RptFinancialMonthSummary;
+import com.ruoyi.logistics.service.IRptFinancialMonthSummaryService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
 /**
  * 月度汇总定时任务
  *
@@ -10,10 +19,33 @@ import org.springframework.stereotype.Component;
 @Component("financialMonthSummaryTask")
 public class FinancialMonthSummaryTask {
 
+    private static final Logger logger = LoggerFactory.getLogger(FinancialMonthSummaryTask.class);
+
+    @Autowired
+    IRptFinancialMonthSummaryService iRptFinancialMonthSummaryService;
+
+    /**
+     * 每个月月初 执行生成上个月的月度账单
+     * @author zxf
+     */
     public void doTask() {
-        System.out.println("月度汇总定时任务");
+        logger.info("月度汇总上单定时任务开始");
+        LocalDate today = LocalDate.now();
+        LocalDate lastMonth = today.minusMonths(1);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM");
+        // 格式化上个月日期为字符串
+        String formattedDate = lastMonth.format(formatter);
+        RptFinancialMonthSummary rptFinancialMonthSummary= new RptFinancialMonthSummary();
+        rptFinancialMonthSummary.setSummaryMonth(formattedDate);
+        iRptFinancialMonthSummaryService.insertRptFinancialMonthSummary(rptFinancialMonthSummary);
     }
 
+
+    /**
+     * 每次调账时  都会重新生成该供应商的月度账单
+     *  这里的定时任务  作为方便测试
+     * @author zxf
+     */
     public void doTask(Integer deptName, String month) {
         System.out.println("月度汇总定时任务,部门ID:" + deptName + ", 月份:" + month);
     }

+ 6 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/RptFinancialMonthSummaryMapper.java

@@ -1,6 +1,8 @@
 package com.ruoyi.logistics.mapper;
 
 import java.util.List;
+import java.util.Map;
+
 import com.ruoyi.logistics.domain.RptFinancialMonthSummary;
 
 /**
@@ -58,4 +60,8 @@ public interface RptFinancialMonthSummaryMapper
      * @return 结果
      */
     public int deleteRptFinancialMonthSummaryBySummaryIds(Long[] summaryIds);
+
+    List<Map<String, Object>> selectMonthSummaryList(Map param);
+
+    int insertBachRptFinancialMonthSummary(List<Map<String, Object>> monthSummaryList);
 }

+ 5 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IRptFinancialMonthSummaryService.java

@@ -1,7 +1,11 @@
 package com.ruoyi.logistics.service;
 
 import java.util.List;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.logistics.domain.RptFinancialMonthSummary;
+import com.ruoyi.system.api.factory.RemoteFileFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
 
 /**
  * 财务月度汇总Service接口
@@ -9,6 +13,7 @@ import com.ruoyi.logistics.domain.RptFinancialMonthSummary;
  * @author RuiJing
  * @date 2026-01-29
  */
+
 public interface IRptFinancialMonthSummaryService 
 {
     /**

+ 20 - 5
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/RptFinancialMonthSummaryServiceImpl.java

@@ -1,6 +1,11 @@
 package com.ruoyi.logistics.service.impl;
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
 import com.ruoyi.common.core.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -46,15 +51,25 @@ public class RptFinancialMonthSummaryServiceImpl implements IRptFinancialMonthSu
 
     /**
      * 新增财务月度汇总
-     * 
-     * @param rptFinancialMonthSummary 财务月度汇总
-     * @return 结果
+     * 1.定时任务执行所有供应商生成财务月度汇总    传值汇总月份
+     * 2.每次调整流水后需要对供应商进行重新生成汇总覆盖   传值部门id
+     *  部门Id和 账单月份必传其一  分别代表以上两种情况
      */
     @Override
     public int insertRptFinancialMonthSummary(RptFinancialMonthSummary rptFinancialMonthSummary)
     {
-        rptFinancialMonthSummary.setCreateTime(DateUtils.getNowDate());
-        return rptFinancialMonthSummaryMapper.insertRptFinancialMonthSummary(rptFinancialMonthSummary);
+        LocalDate today = LocalDate.now();
+        LocalDate lastMonth = today.minusMonths(1);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM");
+        // 格式化上个月日期为字符串
+        String formattedDate = lastMonth.format(formatter);
+        //按照传值条件查询统计账单情况
+        Map param = new HashMap<>();
+        param.put("deptId",rptFinancialMonthSummary.getDeptId());
+        param.put("monthCode",rptFinancialMonthSummary.getSummaryMonth()!=null?rptFinancialMonthSummary.getSummaryMonth():formattedDate);
+        List<Map<String,Object>> monthSummaryList=rptFinancialMonthSummaryMapper.selectMonthSummaryList(param);
+        return rptFinancialMonthSummaryMapper.insertBachRptFinancialMonthSummary(monthSummaryList);
+
     }
 
     /**

+ 29 - 0
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/RptFinancialMonthSummaryMapper.xml

@@ -122,4 +122,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{summaryId}
         </foreach>
     </delete>
+
+
+
+
+    <select id="selectMonthSummaryList"  parameterType="java.util.List">
+        SELECT
+            ${monthCode} monthCode,
+            a.dept_id,
+            count( DISTINCT a.external_waybill_no ) order_num,
+            sum(
+                    ifnull( rate_amount, adjust_amount )) amont
+        FROM
+            ( SELECT * FROM biz_waybill_order WHERE order_status = 6 AND DATE_FORMAT( sign_time, '%Y.%m' )= #{monthCode}  and dept_id#{deptId}) a
+                INNER JOIN biz_waybill_cost_details b ON a.external_waybill_no = b.external_waybill_no
+        WHERE
+            1 = 1
+        GROUP BY
+            a.dept_id
+    </select>
+
+    <insert id="insertBachRptFinancialMonthSummary" parameterType="java.util.List">
+        INSERT INTO rpt_financial_month_summary (summary_month, payable_amount, transaction_count,dept_id) VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.monthCode}, #{item.amont}, #{item.order_num},, #{item.dept_id})
+        </foreach>
+        ON DUPLICATE KEY UPDATE
+        payable_amount = VALUES(amont),
+        update_time = VALUES(now())
+    </insert>
 </mapper>