From 8d04ade530ef1bafe4553f6b44b561ee0faf70c2 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 11 十二月 2025 17:15:00 +0800
Subject: [PATCH] yys 大修改

---
 src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java |   27 ++++
 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java               |    2 
 src/main/java/com/ruoyi/home/controller/HomeController.java                       |   17 ++
 src/main/java/com/ruoyi/home/dto/QualityStatisticsItem.java                       |    6 
 src/main/resources/mapper/account/AccountExpenseMapper.xml                        |    1 
 src/main/java/com/ruoyi/home/dto/QualityStatisticsDto.java                        |    4 
 src/main/resources/mapper/account/AccountIncomeMapper.xml                         |    1 
 src/main/java/com/ruoyi/home/service/HomeService.java                             |    5 
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java      |   30 ----
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java            |   28 ----
 src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java         |   29 ++++
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java                    |  165 +++++++++++++++++++++++++++
 12 files changed, 250 insertions(+), 65 deletions(-)

diff --git a/src/main/java/com/ruoyi/home/controller/HomeController.java b/src/main/java/com/ruoyi/home/controller/HomeController.java
index e944016..93d35fd 100644
--- a/src/main/java/com/ruoyi/home/controller/HomeController.java
+++ b/src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -20,6 +20,7 @@
 
 import java.text.ParseException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author :yys
@@ -58,6 +59,22 @@
         return AjaxResult.success(qualityStatisticsDto);
     }
 
+    @ApiOperation("鐢熶骇鍒嗘瀽")
+    @GetMapping("/productionStatistics")
+    @Log(title = "鐢熶骇鍒嗘瀽", businessType = BusinessType.OTHER)
+    public AjaxResult productionStatistics(QualityStatisticsDto req) {
+        Map<String, List<String>> qualityStatisticsDto = homeService.productionStatistics();
+        return AjaxResult.success(qualityStatisticsDto);
+    }
+
+    @GetMapping("/inventoryStatistics")
+    @Log(title = "浠撳偍鍒嗘瀽", businessType = BusinessType.OTHER)
+    @ApiOperation("浠撳偍鍒嗘瀽")
+    public AjaxResult inventoryStatistics(QualityStatisticsDto req) {
+        QualityStatisticsDto qualityStatisticsDto = homeService.inventoryStatistics();
+        return AjaxResult.success(qualityStatisticsDto);
+    }
+
     @GetMapping("/todos")
     @Log(title = "寰呭姙浜嬮」", businessType = BusinessType.OTHER)
     @ApiOperation("寰呭姙浜嬮」")
diff --git a/src/main/java/com/ruoyi/home/dto/QualityStatisticsDto.java b/src/main/java/com/ruoyi/home/dto/QualityStatisticsDto.java
index 970449a..5b4441b 100644
--- a/src/main/java/com/ruoyi/home/dto/QualityStatisticsDto.java
+++ b/src/main/java/com/ruoyi/home/dto/QualityStatisticsDto.java
@@ -15,10 +15,10 @@
 @ApiModel
 public class QualityStatisticsDto {
 
-    @ApiModelProperty(value = "鍘熸潗鏂欏凡妫�娴嬫暟")
+    @ApiModelProperty(value = "鍘熸潗鏂欏凡妫�娴嬫暟,鍏ュ簱鏁伴噺")
     private BigDecimal supplierNum;
 
-    @ApiModelProperty(value = "鍑哄巶宸叉娴嬫暟")
+    @ApiModelProperty(value = "鍑哄巶宸叉娴嬫暟锛屽嚭搴撴暟閲�")
     private BigDecimal factoryNum;
 
     @ApiModelProperty(value = "杩囩▼宸叉娴嬫暟")
diff --git a/src/main/java/com/ruoyi/home/dto/QualityStatisticsItem.java b/src/main/java/com/ruoyi/home/dto/QualityStatisticsItem.java
index 38ca74a..e1b3f07 100644
--- a/src/main/java/com/ruoyi/home/dto/QualityStatisticsItem.java
+++ b/src/main/java/com/ruoyi/home/dto/QualityStatisticsItem.java
@@ -14,13 +14,13 @@
 @ApiModel
 public class QualityStatisticsItem {
 
-    @ApiModelProperty(value = "鍘熸潗鏂欎笉鍚堟牸鏁�")
+    @ApiModelProperty(value = "鍘熸潗鏂欏悎鏍兼暟锛屽叆搴�")
     private BigDecimal supplierNum;
 
-    @ApiModelProperty(value = "鍑哄巶涓嶅悎鏍兼暟")
+    @ApiModelProperty(value = "鍑哄巶鍚堟牸鏁帮紝鍑哄簱")
     private BigDecimal factoryNum;
 
-    @ApiModelProperty(value = "杩囩▼涓嶅悎鏍兼暟")
+    @ApiModelProperty(value = "杩囩▼鍚堟牸鏁�")
     private BigDecimal processNum;
 
     private String date;
diff --git a/src/main/java/com/ruoyi/home/service/HomeService.java b/src/main/java/com/ruoyi/home/service/HomeService.java
index e57ba23..e91ecd1 100644
--- a/src/main/java/com/ruoyi/home/service/HomeService.java
+++ b/src/main/java/com/ruoyi/home/service/HomeService.java
@@ -5,6 +5,7 @@
 
 import java.text.ParseException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author :yys
@@ -25,4 +26,8 @@
     StatisticsReceivablePayableDto statisticsReceivablePayable(Integer type);
 
     QualityProductQualifiedRateDto qualityProductQualifiedRate();
+
+    QualityStatisticsDto inventoryStatistics();
+
+    Map<String, List<String>> productionStatistics();
 }
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index dd3505a..5c23bba 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -1,6 +1,9 @@
 package com.ruoyi.home.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.account.pojo.AccountExpense;
+import com.ruoyi.account.pojo.AccountIncome;
 import com.ruoyi.approve.mapper.ApproveProcessMapper;
 import com.ruoyi.approve.pojo.ApproveProcess;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -14,6 +17,8 @@
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
+import com.ruoyi.production.mapper.SalesLedgerWorkMapper;
+import com.ruoyi.production.pojo.SalesLedgerWork;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.mapper.SysDeptMapper;
 import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
@@ -84,6 +89,9 @@
 
     @Autowired
     private SysDeptMapper sysDeptMapper;
+
+    @Autowired
+    private SalesLedgerWorkMapper salesLedgerWorkMapper;;
 
     @Override
     public HomeBusinessDto business() {
@@ -495,4 +503,161 @@
 
         return qualityProductQualifiedRateDto;
     }
+
+    @Override
+    public QualityStatisticsDto inventoryStatistics() {
+        // 鑾峰彇杩戝洓涓湀鏁版嵁锛堝線鍓嶆帹涓変釜鏈堬紝鍏�4涓畬鏁存湀浠斤級
+        LocalDate today = LocalDate.now();
+        // 瀹氫箟鏃ユ湡鏍煎紡鍖栧櫒锛堢敤浜庢樉绀衡�滃勾鏈堚�濇牸寮忥級
+        DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
+
+        QualityStatisticsDto qualityStatisticsDto = new QualityStatisticsDto();
+        List<QualityStatisticsItem> qualityStatisticsItems = new ArrayList<>();
+
+        BigDecimal supplierNum = new BigDecimal(0); //鍏ュ簱鏁伴噺
+        BigDecimal factoryNum = new BigDecimal(0); //鍑哄簱鏁伴噺
+        // 寰幆4娆★紝鍒嗗埆缁熻杩�4涓湀鐨勬暟鎹紙褰撳墠鏈堛�佸墠1涓湀銆佸墠2涓湀銆佸墠3涓湀锛�
+        for (int i = 3; i >= 0; i--) {
+            // 璁$畻褰撳墠寰幆瀵瑰簲鐨勬湀浠斤紙i=0锛氬綋鍓嶆湀锛宨=1锛氬墠1涓湀锛屼互姝ょ被鎺級
+            LocalDate currentMonth = today.minusMonths(i);
+            // 褰撴湀鐨勫紑濮嬫棩鏈燂紙姣忔湀1鍙凤級
+            LocalDate monthStart = currentMonth.withDayOfMonth(1);
+            // 褰撴湀鐨勭粨鏉熸棩鏈燂紙姣忔湀鏈�鍚庝竴澶╋級
+            LocalDate monthEnd = currentMonth.withDayOfMonth(currentMonth.lengthOfMonth());
+
+            // 鍏ュ簱鏁伴噺
+            // 鏋勫缓褰撴湀鐨勬煡璇㈡潯浠讹紙濡傛灉鎯充竴娆℃�ф煡鍏�4涓湀鏁版嵁鍐嶅唴瀛樼瓫閫夛紝鍙紭鍖栦负鍏堟煡鍏ㄥ啀寰幆绛涢�夛級
+            LambdaQueryWrapper<ProcurementRecordStorage> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.ge(ProcurementRecordStorage::getCreateTime, monthStart)
+                    .le(ProcurementRecordStorage::getCreateTime, monthEnd); // 绛涢�夊綋鏈堟暟鎹�
+            List<ProcurementRecordStorage> monthInspects = procurementRecordStorageMapper.selectList(queryWrapper);
+            // 鍑哄簱鏁伴噺
+            LambdaQueryWrapper<ProcurementRecordOut> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.ge(ProcurementRecordOut::getCreateTime, monthStart)
+                    .le(ProcurementRecordOut::getCreateTime, monthEnd);
+            List<ProcurementRecordOut> monthInspects1 = procurementRecordOutMapper.selectList(queryWrapper1);
+            BigDecimal reduce = monthInspects.stream()
+                    .map(ProcurementRecordStorage::getInboundNum)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            supplierNum = supplierNum.add(reduce);
+            BigDecimal reduce1 = monthInspects1.stream()
+                    .map(ProcurementRecordOut::getInboundNum)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            factoryNum= factoryNum.add(reduce1);
+
+            // 鏋勫缓褰撴湀缁熻椤�
+            QualityStatisticsItem item = new QualityStatisticsItem();
+            item.setDate(monthStart.format(monthFormatter)); // 鏃ユ湡鏄剧ず涓衡�滃勾鏈堚�濓紙濡� 2025-10锛�
+
+            // 1. 渚涘簲鍟嗘楠岋紙绫诲瀷0锛�- 鍚堟牸鏁伴噺
+            BigDecimal supplierQualified = monthInspects.stream()
+                    .map(ProcurementRecordStorage::getInboundNum)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            item.setSupplierNum(supplierQualified);
+
+            // 3. 宸ュ巶妫�楠岋紙绫诲瀷2锛�- 鍚堟牸鏁伴噺
+            BigDecimal factoryQualified = monthInspects1.stream()
+                    .map(ProcurementRecordOut::getInboundNum)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            item.setFactoryNum(factoryQualified);
+
+            qualityStatisticsItems.add(item);
+        }
+        // 缁熻杩�4涓湀鎬绘暟鎹紙鎵�鏈夋湀浠芥眹鎬伙級
+        qualityStatisticsDto.setSupplierNum(supplierNum);
+        qualityStatisticsDto.setFactoryNum(factoryNum);
+        qualityStatisticsDto.setItem(qualityStatisticsItems);
+
+        return qualityStatisticsDto;
+    }
+
+    @Override
+    public Map<String, List<String>> productionStatistics() {
+        // 鑾峰彇鏈�杩戝洓涓湀锛堝綋鍓嶆湀 + 鍓�3涓湀锛夌殑鏃堕棿鑼冨洿
+        LocalDate today = LocalDate.now();
+        DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM"); // 骞存湀鏍煎紡鍖栧櫒
+        Map<String, List<String>> result = new HashMap<>();
+        List<String> months = new ArrayList<>(); // 瀛樺偍骞存湀锛堝 2025-12銆�2025-11锛�
+        List<String> totalIncomeList = new ArrayList<>(); // 姣忔湀鎬绘敹鍏�
+        List<String> totalExpenseList = new ArrayList<>(); // 姣忔湀鎬绘敮鍑�
+        List<String> netIncomeList = new ArrayList<>(); // 姣忔湀鍑�鏀跺叆锛堟敹鍏�-鏀嚭锛�
+
+        // 姝ラ1锛氳绠楄繎4涓湀鐨勫勾鏈堝垪琛紙褰撳墠鏈堛�佸墠1鏈堛�佸墠2鏈堛�佸墠3鏈堬級
+        List<String> targetMonths = new ArrayList<>();
+        for (int i = 0; i < 4; i++) {
+            LocalDate currentMonth = today.minusMonths(i);
+            String monthStr = currentMonth.format(monthFormatter);
+            targetMonths.add(monthStr);
+        }
+        // 鍙嶈浆鍒楄〃锛岀‘淇濋『搴忎负銆屽墠3鏈� 鈫� 褰撳墠鏈堛�嶏紙鍙�夛紝鎸夐渶姹傝皟鏁撮『搴忥級
+        Collections.reverse(targetMonths);
+
+        // 姝ラ2锛氫竴娆℃�ф煡璇㈣繎4涓湀鎵�鏈夋敹鍏ユ暟鎹紝鎸夆�滃勾鏈堚�濆垎缁勬眹鎬�
+        LocalDate fourMonthsAgo = today.minusMonths(3).withDayOfMonth(1); // 杩�4涓湀璧峰鏃ワ紙鍓�3鏈�1鍙凤級
+        LocalDate currentMonthEnd = today.withDayOfMonth(today.lengthOfMonth()); // 褰撳墠鏈堢粨鏉熸棩
+        ZoneId zoneId = ZoneId.of("Asia/Shanghai");
+        // 鏌ヨ杩�4涓湀鎵�鏈夋敹鍏�
+        List<SalesLedgerWork> allIncomes = salesLedgerWorkMapper.selectList(
+                Wrappers.<SalesLedgerWork>lambdaQuery()
+                        .ge(SalesLedgerWork::getSchedulingDate, fourMonthsAgo.toString()) // 澶т簬绛変簬璧峰鏃�
+                        .le(SalesLedgerWork::getSchedulingDate, currentMonthEnd.toString()) // 灏忎簬绛変簬缁撴潫鏃�
+        );
+
+        // 寰呯敓浜�
+        Map<String, BigDecimal> monthlyIncomeMap = allIncomes.stream()
+                .filter(income -> income.getSchedulingNum() != null && income.getStatus().equals(1)) // 杩囨护绌洪噾棰�
+                .collect(Collectors.groupingBy(
+                        income -> {
+                            // 灏嗚緭鍏ユ椂闂达紙瀛楃涓诧級杞崲涓篖ocalDate锛屽啀鏍煎紡鍖栦负骞存湀
+                            return income.getSchedulingDate().format(monthFormatter);
+                        },
+                        Collectors.reducing(BigDecimal.ZERO, SalesLedgerWork::getSchedulingNum, BigDecimal::add)
+                ));
+
+        // 鐢熶骇涓�
+        Map<String, BigDecimal> monthlyExpenseMap = allIncomes.stream()
+                .filter(income -> income.getSchedulingNum() != null && income.getStatus().equals(2)) // 杩囨护绌洪噾棰�
+                .collect(Collectors.groupingBy(
+                        income -> {
+                            // 灏嗚緭鍏ユ椂闂达紙瀛楃涓诧級杞崲涓篖ocalDate锛屽啀鏍煎紡鍖栦负骞存湀
+                            return income.getSchedulingDate().format(monthFormatter);
+                        },
+                        Collectors.reducing(BigDecimal.ZERO, SalesLedgerWork::getSchedulingNum, BigDecimal::add)
+                ));
+
+        // 宸叉姤宸�
+        Map<String, BigDecimal> successIncomeMap = allIncomes.stream()
+                .filter(income -> income.getSchedulingNum() != null && income.getStatus().equals(3)) // 杩囨护绌洪噾棰�
+                .collect(Collectors.groupingBy(
+                        income -> {
+                            // 灏嗚緭鍏ユ椂闂达紙瀛楃涓诧級杞崲涓篖ocalDate锛屽啀鏍煎紡鍖栦负骞存湀
+                            return income.getSchedulingDate().format(monthFormatter);
+                        },
+                        Collectors.reducing(BigDecimal.ZERO, SalesLedgerWork::getSchedulingNum, BigDecimal::add)
+                ));
+
+        // 姝ラ4锛氬惊鐜�4涓洰鏍囨湀浠斤紝濉厖缁熻鏁版嵁锛堟棤鏁版嵁鏃堕粯璁や负0锛�
+        for (String month : targetMonths) {
+            // 寰呯敓浜�
+            BigDecimal totalIncome = monthlyIncomeMap.getOrDefault(month, BigDecimal.ZERO);
+            // 鐢熶骇涓�
+            BigDecimal totalExpense = monthlyExpenseMap.getOrDefault(month, BigDecimal.ZERO);
+            // 宸叉姤宸�
+            BigDecimal netIncome =  successIncomeMap.getOrDefault(month, BigDecimal.ZERO);
+
+            // 濉厖鍒楄〃
+            months.add(month);
+            totalIncomeList.add(totalIncome.toString());
+            totalExpenseList.add(totalExpense.toString());
+            netIncomeList.add(netIncome.toString());
+        }
+
+        // 缁勮缁撴灉
+        result.put("days", months); // 骞存湀锛堝 ["2025-09", "2025-10", "2025-11", "2025-12"]锛�
+        result.put("totalIncome", totalIncomeList); // 寰呯敓浜�
+        result.put("totalExpense", totalExpenseList); // 鐢熶骇涓�
+        result.put("netIncome", netIncomeList); // 宸叉姤宸�
+
+        return result;
+    }
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
index 30e838f..8e677b3 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
@@ -6,6 +6,8 @@
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.pojo.AccountExpense;
+import com.ruoyi.account.service.AccountExpenseService;
 import com.ruoyi.basic.mapper.SupplierManageMapper;
 import com.ruoyi.basic.pojo.SupplierManage;
 import com.ruoyi.common.utils.DateUtils;
@@ -26,6 +28,7 @@
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
@@ -57,6 +60,8 @@
     private TicketRegistrationMapper ticketRegistrationMapper;
 
     private ProductRecordMapper productRecordMapper;
+
+    private AccountExpenseService accountExpenseService;
 
     /**
      * 鏌ヨ浠樻鐧昏
@@ -95,6 +100,7 @@
      * @return 缁撴灉
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int insertPaymentRegistration(PaymentRegistration paymentRegistration) {
         PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(paymentRegistration.getPurchaseLedgerId());
         SalesLedger salesLedger = salesLedgerMapper.selectOne(new QueryWrapper<SalesLedger>().
@@ -127,6 +133,19 @@
         paymentRegistration.setRegistrantId(loginUser.getUserId());
         paymentRegistration.setCreateTime(DateUtils.getNowDate());
         paymentRegistration.setUpdateTime(DateUtils.getNowDate());
+
+        // 2. 澶勭悊璐︽埛鏀跺叆
+        AccountExpense accountExpense = new AccountExpense();
+        accountExpense.setExpenseDate(purchaseLedger.getEntryDate());
+        accountExpense.setExpenseType("0");
+        accountExpense.setSupplierName(purchaseLedger.getSupplierName());
+        accountExpense.setExpenseMoney(paymentRegistration.getCurrentPaymentAmount());
+        accountExpense.setExpenseDescribed("浠樻鐧昏锛�" + tr.getInvoiceNumber());
+        accountExpense.setExpenseMethod("0");
+        accountExpense.setInvoiceNumber(tr.getInvoiceNumber());
+        accountExpense.setInputTime(new Date());
+        accountExpense.setInputUser(loginUser.getNickName());
+        accountExpenseService.save(accountExpense);
         return paymentRegistrationMapper.insert(paymentRegistration);
     }
 
@@ -149,7 +168,13 @@
         if (total.add(paymentRegistration.getCurrentPaymentAmount()).compareTo(ticketRegistration.getInvoiceAmount()) > 0) {
             throw new RuntimeException("浠樻閲戦瓒呭嚭鍙戠エ閲戦");
         }
-
+        List<AccountExpense> accountExpenseDBs = accountExpenseService.getByInvoiceNumberList(ticketRegistration.getInvoiceNumber());
+        if (!CollectionUtils.isEmpty(accountExpenseDBs)) {
+            accountExpenseDBs.forEach(accountExpenseDB -> {
+                accountExpenseDB.setExpenseMoney(paymentRegistration.getCurrentPaymentAmount());
+                accountExpenseService.updateById(accountExpenseDB);
+            });
+        }
         paymentRegistration.setUpdateTime(DateUtils.getNowDate());
         return paymentRegistrationMapper.updateById(paymentRegistration);
     }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 8ddfe13..53143cb 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -132,41 +132,13 @@
         purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
         purchaseLedger.setRecorderName(sysUser.getNickName());
         purchaseLedger.setPhoneNumber(sysUser.getPhonenumber());
-        // 2. 澶勭悊璐︽埛鏀跺叆
-        AccountExpense accountExpense = new AccountExpense();
-        accountExpense.setExpenseDate(purchaseLedger.getEntryDate());
-        accountExpense.setExpenseType("0");
-        accountExpense.setSupplierName(purchaseLedger.getSupplierName());
-        accountExpense.setExpenseMoney(purchaseLedger.getContractAmount());
-        accountExpense.setExpenseDescribed("閲囪喘鍚堝悓锛�" + purchaseLedger.getPurchaseContractNumber());
-        accountExpense.setExpenseMethod("0");
-        accountExpense.setInvoiceNumber(purchaseLedger.getPurchaseContractNumber());
-        accountExpense.setInputTime(new Date());
-        accountExpense.setInputUser(loginUser.getNickName());
-
 
         // 3. 鏂板鎴栨洿鏂颁富琛�
         if (purchaseLedger.getId() == null) {
             purchaseLedgerMapper.insert(purchaseLedger);
-//            accountIncomeService.save(accountIncome);
-            accountExpenseService.save(accountExpense);
+
         } else {
             purchaseLedgerMapper.updateById(purchaseLedger);
-            PurchaseLedger purchaseLedgerDB = purchaseLedgerMapper.selectById(purchaseLedger.getId());
-            List<AccountExpense> accountExpenseDBs = accountExpenseService.getByInvoiceNumberList(purchaseLedger.getPurchaseContractNumber());
-            if (!CollectionUtils.isEmpty(accountExpenseDBs)) {
-                accountExpenseDBs.forEach(accountExpenseDB -> {
-                   accountExpenseDB.setExpenseDate(purchaseLedgerDB.getEntryDate());
-                   accountExpenseDB.setExpenseType("0");
-                   accountExpenseDB.setSupplierName(purchaseLedgerDB.getSupplierName());
-                   accountExpenseDB.setExpenseMoney(purchaseLedgerDB.getContractAmount());
-                   accountExpenseDB.setExpenseDescribed("閲囪喘鍚堝悓锛�" + purchaseLedgerDB.getPurchaseContractNumber());
-                   accountExpenseDB.setExpenseMethod("0");
-                   accountExpenseDB.setInvoiceNumber(purchaseLedgerDB.getPurchaseContractNumber());
-                   accountExpenseService.updateById(accountExpenseDB);
-               });
-            }
-
         }
 
         // 4. 澶勭悊瀛愯〃鏁版嵁
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index 083feea..f58556f 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -122,7 +122,7 @@
     /**
      * 鏂板淇敼閿�鍞彴璐�
      */
-    @Log(title = "閿�鍞彴璐�", businessType = BusinessType.INSERT)
+    @Log(title = "鏂板淇敼閿�鍞彴璐�", businessType = BusinessType.INSERT)
     @PostMapping("/addOrUpdateSalesLedger")
     public AjaxResult add(@RequestBody SalesLedgerDto salesLedgerDto) {
         return toAjax(salesLedgerService.addOrUpdateSalesLedger(salesLedgerDto));
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
index ae93c3b..0cde135 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -4,6 +4,9 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.pojo.AccountIncome;
+import com.ruoyi.account.service.AccountIncomeService;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.sales.dto.CustomerInteractionDto;
@@ -19,6 +22,7 @@
 import com.ruoyi.sales.service.ReceiptPaymentService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.ObjectUtils;
 
@@ -39,6 +43,8 @@
     private SalesLedgerMapper salesLedgerMapper;
     @Autowired
     private InvoiceLedgerMapper invoiceLedgerMapper;
+    @Autowired
+    private AccountIncomeService accountIncomeService;
 
     /**
      * 鍥炴鐧昏鏂板
@@ -46,6 +52,7 @@
      * @return
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int receiptPaymentSaveOrUpdate(ReceiptPayment receiptPayment) {
         ReceiptPayment byId = receiptPayment;
         if (!ObjectUtils.isEmpty(receiptPayment.getId())){
@@ -64,10 +71,28 @@
             throw new RuntimeException("鏈鍥炴閲戦涓嶈兘澶т簬寰呭洖娆鹃噾棰�");
         }
         if(null==receiptPayment.getId()){
-
+            AccountIncome accountIncome = new AccountIncome();
+            accountIncome.setIncomeDate(DateUtils.toDate(receiptPayment.getReceiptPaymentDate()));
+            accountIncome.setIncomeType("0");
+            accountIncome.setCustomerName(receiptPaymentDto1.getCustomerName());
+            accountIncome.setIncomeMoney(receiptPayment.getReceiptPaymentAmount());
+            accountIncome.setIncomeMethod("0");
+            accountIncome.setInputTime(new Date());
+            accountIncome.setInputUser(receiptPayment.getRegistrant());
+            accountIncome.setIncomeDescribed("鍥炴鐧昏锛�" + invoiceLedger.getInvoiceNo());
+            accountIncome.setInvoiceNumber(invoiceLedger.getInvoiceNo());
+            accountIncomeService.save(accountIncome);
             return receiptPaymentMapper.insert(receiptPayment);
         }else {
-
+            AccountIncome salesLedgerDB = accountIncomeService.getByInvoiceNumber(invoiceLedger.getInvoiceNo());
+            List<AccountIncome> accountIncomeDBs = accountIncomeService.getByInvoiceNumberList(salesLedgerDB.getInvoiceNumber());
+            if (!org.springframework.util.CollectionUtils.isEmpty(accountIncomeDBs)) {
+                accountIncomeDBs.forEach(accountIncomeDB -> {
+                    accountIncomeDB.setIncomeMoney(receiptPayment.getReceiptPaymentAmount());
+                    accountIncomeDB.setInputUser(receiptPayment.getRegistrant());
+                    accountIncomeService.updateById(accountIncomeDB);
+                });
+            }
             return receiptPaymentMapper.updateById(receiptPayment);
         }
     }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index cdf83d4..616f840 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -379,41 +379,15 @@
             SalesLedger salesLedger = convertToEntity(salesLedgerDto);
             salesLedger.setCustomerName(customer.getCustomerName());
             salesLedger.setTenantId(customer.getTenantId());
-
-            AccountIncome accountIncome = new AccountIncome();
-            accountIncome.setIncomeDate(salesLedger.getEntryDate());
-            accountIncome.setIncomeType("0");
-            accountIncome.setCustomerName(customer.getCustomerName());
-            accountIncome.setIncomeMoney(salesLedger.getContractAmount());
-            accountIncome.setIncomeMethod("0");
-            accountIncome.setInputTime(new Date());
-            accountIncome.setInputUser(salesLedger.getEntryPerson());
             // 3. 鏂板鎴栨洿鏂颁富琛�
             if (salesLedger.getId() == null) {
                 String contractNo = generateSalesContractNo();
                 salesLedger.setSalesContractNo(contractNo);
                 salesLedgerMapper.insert(salesLedger);
-                accountIncome.setIncomeDescribed("閿�鍞悎鍚岋細" + salesLedger.getSalesContractNo());
-                accountIncome.setInvoiceNumber(salesLedger.getSalesContractNo());
-                accountIncomeService.save(accountIncome);
+
             } else {
                 salesLedgerMapper.updateById(salesLedger);
-                SalesLedger salesLedgerDB = salesLedgerMapper.selectById(salesLedger.getId());
-                List<AccountIncome> accountIncomeDBs = accountIncomeService.getByInvoiceNumberList(salesLedger.getSalesContractNo());
-                if (!org.springframework.util.CollectionUtils.isEmpty(accountIncomeDBs)) {
-                    accountIncomeDBs.forEach(accountIncomeDB -> {
-                        accountIncomeDB.setCustomerName(salesLedgerDB.getCustomerName());
-                        accountIncomeDB.setIncomeMoney(salesLedgerDB.getContractAmount());
-                        accountIncomeDB.setIncomeDescribed("閿�鍞悎鍚岋細" + salesLedgerDB.getSalesContractNo());
-                        accountIncomeDB.setInvoiceNumber(salesLedgerDB.getSalesContractNo());
-                        accountIncomeDB.setInputTime(new Date());
-                        accountIncomeDB.setInputUser(salesLedgerDB.getEntryPerson());
-                        accountIncomeService.updateById(accountIncomeDB);
-                    });
-                }
-
             }
-
             // 4. 澶勭悊瀛愯〃鏁版嵁
             List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
             if (productList != null && !productList.isEmpty()) {
diff --git a/src/main/resources/mapper/account/AccountExpenseMapper.xml b/src/main/resources/mapper/account/AccountExpenseMapper.xml
index fff6020..2b7a063 100644
--- a/src/main/resources/mapper/account/AccountExpenseMapper.xml
+++ b/src/main/resources/mapper/account/AccountExpenseMapper.xml
@@ -19,6 +19,7 @@
         <if test="accountExpense.expenseMethod != null and accountExpense.expenseMethod != '' ">
             AND expense_method = #{accountExpense.expenseMethod}
         </if>
+        order by expense_date desc
     </select>
     <select id="accountExpenseExport" resultType="com.ruoyi.account.pojo.AccountExpense">
         SELECT
diff --git a/src/main/resources/mapper/account/AccountIncomeMapper.xml b/src/main/resources/mapper/account/AccountIncomeMapper.xml
index 1cb49b9..b387347 100644
--- a/src/main/resources/mapper/account/AccountIncomeMapper.xml
+++ b/src/main/resources/mapper/account/AccountIncomeMapper.xml
@@ -20,6 +20,7 @@
         <if test="accountIncome.incomeMethod != null and accountIncome.incomeMethod != '' ">
             AND income_method = #{accountIncome.incomeMethod}
         </if>
+        order by income_date desc
     </select>
     <select id="accountIncomeExport" resultType="com.ruoyi.account.pojo.AccountIncome">
         SELECT

--
Gitblit v1.9.3