wlzboy
2026-03-19 c5ac97682e3b4ca748541ace97cb37a2295bd81e
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java
@@ -76,7 +76,7 @@
     */
    @Override
    public int syncLegacyTransferOrders(int daysAgo) {
        log.info("开始同步{}天前的旧系统转运单数据", daysAgo);
//        log.info("开始同步{}天前的旧系统转运单数据", daysAgo);
        
        try {
            // 参数验证
@@ -88,16 +88,17 @@
            // 计算日期范围
            Date startDate = DateUtils.addDays(new Date(), -daysAgo);
            String startDateStr = DateUtils.parseDateToStr("yyyy-MM-dd", startDate);
            String endDateStr = DateUtils.parseDateToStr("yyyy-MM-dd", new Date());
            
            // 从SQL Server查询转运单数据
            List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr);
            List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr, endDateStr);
            
            if (transferOrders == null || transferOrders.isEmpty()) {
                log.info("未查询到{}天前的转运单数据", daysAgo);
                return 0;
            }
            
            log.info("查询到{}条转运单数据,开始同步...", transferOrders.size());
//            log.info("查询到{}条转运单数据,开始同步...", transferOrders.size());
            
            int successCount = 0;
            int totalCount = transferOrders.size();
@@ -115,12 +116,12 @@
                        continue;
                    }
                    
                    log.debug("正在处理第{}/{}条转运单: ServiceOrdID={}, DispatchOrdID={}",
                             processedCount, totalCount, serviceOrdID, dispatchOrdID);
//                    log.debug("正在处理第{}/{}条转运单: ServiceOrdID={}, DispatchOrdID={}",
//                             processedCount, totalCount, serviceOrdID, dispatchOrdID);
                    
                    // 检查是否已同步
                    if (isTransferOrderSynced(serviceOrdID, dispatchOrdID)) {
                        log.debug("转运单已同步,跳过: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
//                        log.debug("转运单已同步,跳过: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
                        //进行更新操作
                        updateTransferOrder(serviceOrdID, dispatchOrdID, order);
                        continue;
@@ -145,7 +146,7 @@
                }
            }
            
            log.info("同步完成,共处理{}条转运单,成功同步{}条转运单数据", totalCount, successCount);
//            log.info("同步完成,共处理{}条转运单,成功同步{}条转运单数据", totalCount, successCount);
            return successCount;
            
        } catch (Exception e) {
@@ -345,13 +346,13 @@
            createTaskVo.setDeptId(deptId);
            int result = sysTaskService.insertTask(createTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
            Long taskId = sysTaskService.insertTask(createTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
            if (result > 0) {
//                log.info("转运单同步成功: ServiceOrdID={}, DispatchOrdID={}, 创建的任务ID={}", serviceOrdID, dispatchOrdID, result);
            if (taskId != null && taskId > 0) {
//                log.info("转运单同步成功: ServiceOrdID={}, DispatchOrdID={}, 创建的任务ID={}", serviceOrdID, dispatchOrdID, taskId);
                try {
                    notifyTransferOrderByWechat((long) result, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order);
                    notifyTransferOrderByWechat(taskId, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order);
                } catch (Exception e) {
                    log.error("转运单同步成功后发送微信通知失败: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID, e);
                }
@@ -504,11 +505,20 @@
                }
            }
            createTaskVo.setPatient(patientInfo);
            //1000公里,提取数字
            //1000公里,提取数字(支持小数)
            String ServiceOrdTraDistance=MapValueUtils.getStringValue(order, "ServiceOrdTraDistance");
            if(ServiceOrdTraDistance!=null){
                ServiceOrdTraDistance=ServiceOrdTraDistance.replaceAll("[^0-9]", "");
                createTaskVo.setDistance(new BigDecimal(ServiceOrdTraDistance));
                // 保留数字和小数点,移除其他字符
                ServiceOrdTraDistance=ServiceOrdTraDistance.replaceAll("[^0-9.]", "");
                // 处理多个小数点的情况,只保留第一个
                int firstDotIndex = ServiceOrdTraDistance.indexOf('.');
                if (firstDotIndex != -1) {
                    ServiceOrdTraDistance = ServiceOrdTraDistance.substring(0, firstDotIndex + 1)
                        + ServiceOrdTraDistance.substring(firstDotIndex + 1).replace(".", "");
                }
                if (!ServiceOrdTraDistance.isEmpty() && !ServiceOrdTraDistance.equals(".")) {
                    createTaskVo.setTransferDistance(new BigDecimal(ServiceOrdTraDistance));
                }
            }