wlzboy
5 天以前 fe33646ee6e2d1e57f2b51812e94983a0e9efb04
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AdditionalFeeSyncServiceImpl.java
@@ -1,6 +1,5 @@
package com.ruoyi.system.service.impl;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -9,11 +8,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.domain.PaidMoneyAdd;
import com.ruoyi.system.domain.SysTask;
import com.ruoyi.system.domain.SysTaskAdditionalFee;
@@ -92,19 +87,13 @@
    }
    
    @Override
    public boolean syncAdditionalFeeToLegacy(Long feeId) {
    public boolean syncAdditionalFeeToLegacy(SysTaskAdditionalFee fee) {
        Long feeId= fee.getId();
        try {
            // 1. 查询新系统附加费用记录
            SysTaskAdditionalFee fee = additionalFeeMapper.selectByTaskId(null).stream()
                .filter(f -> f.getId().equals(feeId))
                .findFirst()
                .orElse(null);
            
            if (fee == null) {
                log.info("新系统附加费用记录不存在,feeId: {}", feeId);
                return false;
            }
         // 1. 检查是否已同步
            // 2. 如果已同步过,跳过
            if (fee.getPid() != null && fee.getPid() > 0) {
                log.info("附加费用已同步,feeId: {}, pid: {}", feeId, fee.getPid());
@@ -172,44 +161,47 @@
            return false;
        }
    }
    /**
     * 从旧系统同步附加费用
     * @param paidMoneyAdd 旧系统附加费用记录ID
     * @return
     */
    @Override
    public boolean syncAdditionalFeeFromLegacy(Long paidMoneyAddId) {
    public boolean syncAdditionalFeeFromLegacy(PaidMoneyAdd paidMoneyAdd) {
        try {
            // 1. 查询旧系统PaidMoney_Add记录
            PaidMoneyAdd paidMoneyAdd = paidMoneyAddMapper.selectById(paidMoneyAddId);
            if (paidMoneyAdd == null) {
                log.error("旧系统附加费用记录不存在,paidMoneyAddId: {}", paidMoneyAddId);
                return false;
            }
            Long paidMoneyAddId = paidMoneyAdd.getId();
            log.info("1.开始同步旧系统附加费用,paidMoneyAddId: {}", paidMoneyAddId);
            // 2. 检查是否已同步过
            SysTaskAdditionalFee existFee = additionalFeeMapper.selectByPid(paidMoneyAddId);
            if (existFee != null) {
                log.info("旧系统附加费用记录已同步,paidMoneyAddId: {}, feeId: {}", paidMoneyAddId, existFee.getId());
                return true;
            }
            log.info("2.开始同步旧系统附加费用,paidMoneyAddId: {}", paidMoneyAddId);
            
            // 3. 根据ServiceOrdID查询新系统任务
            if (paidMoneyAdd.getToServiceOrdID() == null) {
                log.warn("旧系统附加费用记录缺少ServiceOrdID,paidMoneyAddId: {},跳过同步", paidMoneyAddId);
                return false;
            }
            log.info("3.开始同步旧系统附加费用,paidMoneyAddId: {}, ServiceOrdID: {}", paidMoneyAddId, paidMoneyAdd.getToServiceOrdID());
            
            SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyServiceOrdId(paidMoneyAdd.getToServiceOrdID());
            if (emergency == null) {
                log.warn("未找到对应的转运任务,ServiceOrdID: {},跳过同步", paidMoneyAdd.getToServiceOrdID());
                log.warn("4.开始同步旧系统附加费用,未找到对应的转运任务,ServiceOrdID: {},跳过同步", paidMoneyAdd.getToServiceOrdID());
                return false;
            }
            log.info("4.开始同步旧系统附加费用,paidMoneyAddId: {}, ServiceOrdID: {}, DispatchOrdID: {}", paidMoneyAddId, paidMoneyAdd.getToServiceOrdID(), paidMoneyAdd.getToDispatchOrdID());
            // 4. 验证DispatchOrdID是否匹配
            if (paidMoneyAdd.getToDispatchOrdID() == null) {
                log.warn("旧系统附加费用记录缺少DispatchOrdID,paidMoneyAddId: {},跳过同步", paidMoneyAddId);
                return false;
            }
            log.info("5.开始同步旧系统附加费用,paidMoneyAddId: {}, ServiceOrdID: {}, DispatchOrdID: {}", paidMoneyAddId, paidMoneyAdd.getToServiceOrdID(), paidMoneyAdd.getToDispatchOrdID());
            if (!paidMoneyAdd.getToDispatchOrdID().equals(emergency.getLegacyDispatchOrdId())) {
                log.warn("转运任务DispatchOrdID不匹配,ServiceOrdID: {}, 附加费用DispatchOrdID: {} vs 任务DispatchOrdID: {},跳过同步",
                log.warn("5.转运任务DispatchOrdID不匹配,ServiceOrdID: {}, 附加费用DispatchOrdID: {} vs 任务DispatchOrdID: {},跳过同步",
                    paidMoneyAdd.getToServiceOrdID(), paidMoneyAdd.getToDispatchOrdID(), emergency.getLegacyDispatchOrdId());
                return false;
            }
@@ -228,19 +220,19 @@
            fee.setPid(paidMoneyAddId);
            fee.setSyncStatus(2); // 同步成功
            fee.setSyncTime(new Date());
            log.info("6.开始同步旧系统附加费用,paidMoneyAddId: {}, ServiceOrdID: {}, DispatchOrdID: {}, feeId: {}", paidMoneyAddId, paidMoneyAdd.getToServiceOrdID(), paidMoneyAdd.getToDispatchOrdID(), fee.getId());
            // 6. 插入新系统附加费用记录
            int result = additionalFeeMapper.insert(fee);
            if (result > 0) {
                log.info("旧系统附加费用记录同步到新系统成功,paidMoneyAddId: {}, feeId: {}", paidMoneyAddId, fee.getId());
                log.info("6.旧系统附加费用记录同步到新系统成功,paidMoneyAddId: {}, feeId: {}", paidMoneyAddId, fee.getId());
                return true;
            } else {
                log.error("插入新系统附加费用记录失败,paidMoneyAddId: {}", paidMoneyAddId);
                log.error("6.插入新系统附加费用记录失败,paidMoneyAddId: {}", paidMoneyAddId);
                return false;
            }
            
        } catch (Exception e) {
            log.error("同步旧系统附加费用记录到新系统异常,paidMoneyAddId: {}", paidMoneyAddId, e);
            log.error("8.同步旧系统附加费用记录到新系统异常,paidMoneyAddId: {}", paidMoneyAdd.getId(), e);
            return false;
        }
    }
@@ -256,7 +248,7 @@
            
            for (SysTaskAdditionalFee fee : unsyncedFees) {
                try {
                    if (syncAdditionalFeeToLegacy(fee.getId())) {
                    if (syncAdditionalFeeToLegacy(fee)) {
                        successCount++;
                    }
                    // 每条记录间隔1秒,避免过于频繁
@@ -290,7 +282,7 @@
            
            for (PaidMoneyAdd paidMoneyAdd : recentRecords) {
                try {
                    if (syncAdditionalFeeFromLegacy(paidMoneyAdd.getId())) {
                    if (syncAdditionalFeeFromLegacy(paidMoneyAdd)) {
                        successCount++;
                    }
                    // 每条记录间隔1秒,避免过于频繁