wlzboy
2025-11-08 cdcc529ce5fb9aa0dd1dea5bb2a620fc09b7d25c
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java
@@ -12,6 +12,9 @@
import java.util.List;
import java.util.Map;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.*;
import com.ruoyi.system.task.ITaskAttachmentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,11 +25,6 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.system.domain.SysTask;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.domain.SysTaskVehicle;
import com.ruoyi.system.domain.SysTaskAssignee;
import com.ruoyi.system.domain.VehicleInfo;
import com.ruoyi.system.domain.vo.TaskCreateVO;
import com.ruoyi.system.mapper.SysTaskMapper;
import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
@@ -35,10 +33,7 @@
import com.ruoyi.system.mapper.VehicleInfoMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysDeptMapper;
import com.ruoyi.system.service.ILegacySystemSyncService;
import com.ruoyi.system.utils.TaskStatusConverter;
import com.ruoyi.system.service.IDispatchOrdService;
import com.ruoyi.system.service.ISysTaskEmergencyService;
/**
 * 旧系统同步Service业务层处理
@@ -77,6 +72,15 @@
    
    @Autowired
    private ISysTaskEmergencyService sysTaskEmergencyService;
    @Autowired
    private ITaskAttachmentSyncService taskAttachmentSyncService;
    @Autowired
    private ISysTaskService sysTaskService;
    @Autowired
    private ITaskAttachmentService taskAttachmentService;
    
    /**
     * 同步急救转运任务到旧系统
@@ -265,7 +269,27 @@
            return false;
        }
    }
    /**
     * 同步任务附件到旧系统
     * @param taskAttachments
     * @param serviceOrdId
     * @param dispatchOrdId
     * @param oaUserID
     */
    public void syncAttachmentToLegacy(List<SysTaskAttachment> taskAttachments, Long serviceOrdId,Long dispatchOrdId,Integer oaUserID) {
        taskAttachments.forEach((taskAttachment)->{
            Long imageDataId=  taskAttachmentSyncService.syncAttachmentToImageData(taskAttachment,serviceOrdId,dispatchOrdId,oaUserID);
            if (imageDataId != null && imageDataId > 0) {
                taskAttachment.setSyncedToImageData(1);
                taskAttachment.setSyncTime(new Date());
                taskAttachment.setImageDataId(imageDataId);
                taskAttachmentService.updateAttachment(taskAttachment);
            }
        });
    }
    /**
     * 同步调度单到旧系统(admin_save_24.asp)
     */
@@ -303,16 +327,23 @@
                log.info("调度单已同步过,任务ID: {}, DispatchOrdID: {}", taskId, emergency.getLegacyDispatchOrdId());
                return emergency.getLegacyDispatchOrdId();
            }
            Long serviceOrdId=emergency.getLegacyServiceOrdId();
            // 必须先同步服务单
            if (emergency.getLegacyServiceOrdId() == null || emergency.getLegacyServiceOrdId() <= 0) {
            if (serviceOrdId == null || serviceOrdId <= 0) {
                log.warn("服务单未同步,无法同步调度单,任务ID: {}", taskId);
                return null;
            }
            // 更新同步状态为同步中
            emergency.setDispatchSyncStatus(1);
            sysTaskEmergencyService.updateSysTaskEmergency(emergency);
            SysUser u=sysUserMapper.selectUserById(task.getCreatorId());
            Integer oaUserID= u.getOaUserId();
            
            // 构建请求参数
            Map<String, String> params = buildDispatchOrderParams(task, emergency);
@@ -330,7 +361,13 @@
                emergency.setDispatchSyncTime(new Date());
                emergency.setDispatchSyncErrorMsg(null);
                sysTaskEmergencyService.updateSysTaskEmergency(emergency);
                List<SysTaskAttachment> taskAttachments= sysTaskService.getAttachmentsByTaskId(taskId);
                if (taskAttachments != null && !taskAttachments.isEmpty()) {
                    //同步附件
                   this.syncAttachmentToLegacy(taskAttachments,serviceOrdId,dispatchOrdId,oaUserID);
                }
                log.info("调度单同步成功,任务ID: {}, DispatchOrdID: {}", taskId, dispatchOrdId);
                return dispatchOrdId;
            } else {
@@ -383,7 +420,7 @@
            while (true) {
                // 分页查询已同步服务单但未同步调度单的任务
                List<SysTaskEmergency> pendingTasks = sysTaskEmergencyService.selectPendingDispatchSyncTasks(offset, pageSize);
                log.info("查询到未同步调度单的任务数量: {}", pendingTasks.size());
                if (pendingTasks == null || pendingTasks.isEmpty()) {
                    log.info("没有更多需要同步调度单的任务,offset: {}", offset);
                    break; // 没有更多数据,退出循环
@@ -393,7 +430,9 @@
                
                int pageSuccessCount = 0;
                for (SysTaskEmergency emergency : pendingTasks) {
                    log.info("开始同步调度单,任务ID: {}", emergency.getTaskId());
                    Long dispatchOrdId = syncDispatchOrderToLegacy(emergency.getTaskId());
                    if (dispatchOrdId != null && dispatchOrdId > 0) {
                        pageSuccessCount++;
                    }