| | |
| | | package com.ruoyi.system.service.impl; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | 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; |
| | |
| | | } |
| | | |
| | | @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.error("新系统附加费用记录不存在,feeId: {}", feeId); |
| | | return false; |
| | | } |
| | | |
| | | |
| | | // 1. 检查是否已同步 |
| | | // 2. 如果已同步过,跳过 |
| | | if (fee.getPid() != null && fee.getPid() > 0) { |
| | | log.info("附加费用已同步,feeId: {}, pid: {}", feeId, fee.getPid()); |
| | |
| | | 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; |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | |
| | | for (SysTaskAdditionalFee fee : unsyncedFees) { |
| | | try { |
| | | if (syncAdditionalFeeToLegacy(fee.getId())) { |
| | | if (syncAdditionalFeeToLegacy(fee)) { |
| | | successCount++; |
| | | } |
| | | // 每条记录间隔1秒,避免过于频繁 |
| | |
| | | |
| | | for (PaidMoneyAdd paidMoneyAdd : recentRecords) { |
| | | try { |
| | | if (syncAdditionalFeeFromLegacy(paidMoneyAdd.getId())) { |
| | | if (syncAdditionalFeeFromLegacy(paidMoneyAdd)) { |
| | | successCount++; |
| | | } |
| | | // 每条记录间隔1秒,避免过于频繁 |