wlzboy
1 天以前 08f95b2f159b56fa3bd4f4b348855989de8aa456
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java
@@ -3,6 +3,7 @@
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.LongUtil;
import com.ruoyi.common.utils.MapValueUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysTaskEmergency;
@@ -257,8 +258,14 @@
            }
            SysDept dept=sysDeptService.selectDeptByServiceClass(serviceOrdClass);
            Long deptId=dept==null?null:dept.getDeptId();
            if(deptId==null){
                log.error("创建任务时,获取部门信息失败,serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
                return false;
            }
            createTaskVo.setDeptId(deptId);
            TaskUpdateVO updateTaskVo = new TaskUpdateVO();
            BeanUtils.copyProperties(createTaskVo, updateTaskVo);
//            log.info("开始保存转运任务,serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
            int result = sysTaskService.updateTask(updateTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
@@ -334,6 +341,11 @@
            String createUserName= sysUser.getUserName();
            SysDept dept=sysDeptService.selectDeptByServiceClass(serviceOrdClass);
            Long deptId=dept==null?null:dept.getDeptId();
            if(deptId==null){
                log.error("创建任务时,获取部门信息失败,serviceOrdID={}, DispatchOrdID={} ServiceOrdClass:{}", serviceOrdID, dispatchOrdID, serviceOrdClass);
                return false;
            }
            createTaskVo.setDeptId(deptId);
            int result = sysTaskService.insertTask(createTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
@@ -370,7 +382,7 @@
    public boolean isTransferOrderSynced(Long serviceOrdID, Long dispatchOrdID) {
        try {
            // 检查参数有效性
            if (serviceOrdID == null || serviceOrdID<=0) {
            if (LongUtil.isEmpty(serviceOrdID)) {
                log.warn("服务单ID不能为空");
                return false;
            }
@@ -387,7 +399,7 @@
                log.warn("服务单ID不是有效数字: {}", serviceOrdID);
            }
            
            if (dispatchOrdID>0) {
            if (LongUtil.isNotEmpty(dispatchOrdID)) {
                try {
                    SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyDispatchOrdId(dispatchOrdID);
                    if (emergency != null) {
@@ -435,7 +447,7 @@
                return null;
            }
            
            if (serviceOrdID==null || serviceOrdID<=0) {
            if (LongUtil.isEmpty(serviceOrdID)) {
                log.error("服务单ID不能为空");
                return null;
            }
@@ -561,7 +573,7 @@
            createTaskVo.setPrice(MapValueUtils.getBigDecimalValue(order, "ServiceOrdTraTxnPrice"));
            // 距离信息需要从其他字段计算或获取
            if(dispatchOrdID!=null) {
            if(LongUtil.isNotEmpty(dispatchOrdID)) {
                // 设置执行人信息
                List<TaskCreateVO.AssigneeInfo> assignees = queryAssignees(dispatchOrdID);
                createTaskVo.setAssignees(assignees);
@@ -718,22 +730,16 @@
        long startTime = System.currentTimeMillis();
        try {
            // 检查参数有效性
            if (dispatchOrdID==null || dispatchOrdID <= 0) {
            if (LongUtil.isEmpty(dispatchOrdID)) {
                log.warn("调度单ID不能为空");
                return new ArrayList<>();
            }
            
            // 将String转换为Long,避免数据库类型不匹配导致的性能问题
            Long dispatchOrdIdLong;
            try {
                dispatchOrdIdLong = Long.valueOf(dispatchOrdID);
            } catch (NumberFormatException e) {
                log.error("调度单ID格式不正确: {}", dispatchOrdID, e);
                return new ArrayList<>();
            }
            
            // 从SQL Server查询执行人信息(使用Long类型,匹配BIGINT字段)
            List<Map<String, Object>> assigneeList = legacyTransferSyncMapper.selectAssigneesByDispatchOrdID(dispatchOrdIdLong);
            List<Map<String, Object>> assigneeList = legacyTransferSyncMapper.selectAssigneesByDispatchOrdID(dispatchOrdID);
            long queryTime = System.currentTimeMillis() - startTime;
            
            // 记录慢查询(超过500ms)
@@ -782,7 +788,7 @@
                }
            }
            
            log.debug("查询到{}个执行人,调度单ID: {}, 耗时: {}ms", assignees.size(), dispatchOrdID, System.currentTimeMillis() - startTime);
//            log.debug("查询到{}个执行人,调度单ID: {}, 耗时: {}ms", assignees.size(), dispatchOrdID, System.currentTimeMillis() - startTime);
            return assignees;
        } catch (Exception e) {
            long totalTime = System.currentTimeMillis() - startTime;
@@ -800,7 +806,7 @@
    private String queryDiseaseIds(Long serviceOrdID) {
        try {
            // 检查参数有效性
            if (serviceOrdID==null || serviceOrdID <= 0) {
            if (LongUtil.isEmpty(serviceOrdID) ) {
                log.warn("服务单ID不能为空");
                return null;
            }