| | |
| | | |
| | | 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.MapValueUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.*; |
| | | import com.ruoyi.system.domain.SysTaskEmergency; |
| | | import com.ruoyi.system.domain.VehicleInfo; |
| | | import com.ruoyi.system.domain.enums.TaskStatus; |
| | |
| | | */ |
| | | @Override |
| | | public int syncLegacyTransferOrders(int daysAgo) { |
| | | log.info("开始同步{}天前的旧系统转运单数据", daysAgo); |
| | | // log.info("开始同步{}天前的旧系统转运单数据", daysAgo); |
| | | |
| | | try { |
| | | // 参数验证 |
| | |
| | | // 计算日期范围 |
| | | 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); |
| | | |
| | | if (transferOrders == null || transferOrders.isEmpty()) { |
| | | log.info("未查询到{}天前的转运单数据", daysAgo); |
| | | return 0; |
| | | } |
| | | |
| | | log.info("查询到{}条转运单数据,开始同步...", transferOrders.size()); |
| | | |
| | | // Keyset游标分页从 SQL Server 拉取转运单数据,每页 10 条,走主键索引彻底规避超时 |
| | | final int PAGE_SIZE = 5; |
| | | long lastId = 0L; // 游标:记录上一页最后一条的 ServiceOrdID,首次传 0 |
| | | int successCount = 0; |
| | | int totalCount = transferOrders.size(); |
| | | int processedCount = 0; |
| | | |
| | | for (Map<String, Object> order : transferOrders) { |
| | | processedCount++; |
| | | try { |
| | | String serviceOrdID = MapValueUtils.getStringValue(order, "ServiceOrdID"); |
| | | String dispatchOrdID = MapValueUtils.getStringValue(order, "DispatchOrdID"); |
| | | |
| | | // 检查参数有效性 |
| | | if (StringUtils.isEmpty(serviceOrdID)) { |
| | | log.warn("第{}条数据服务单ID为空,跳过处理", processedCount); |
| | | continue; |
| | | } |
| | | |
| | | log.debug("正在处理第{}/{}条转运单: ServiceOrdID={}, DispatchOrdID={}", |
| | | processedCount, totalCount, serviceOrdID, dispatchOrdID); |
| | | |
| | | // 检查是否已同步 |
| | | if (isTransferOrderSynced(serviceOrdID, dispatchOrdID)) { |
| | | log.debug("转运单已同步,跳过: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | //进行更新操作 |
| | | updateTransferOrder(serviceOrdID, dispatchOrdID, order); |
| | | continue; |
| | | } |
| | | |
| | | // 同步单个转运单 |
| | | boolean success = syncSingleTransferOrder(serviceOrdID, dispatchOrdID, order); |
| | | if (success) { |
| | | successCount++; |
| | | } |
| | | |
| | | // 控制同步频率,避免请求过快 |
| | | Thread.sleep(100); |
| | | } catch (InterruptedException ie) { |
| | | log.warn("同步任务被中断"); |
| | | Thread.currentThread().interrupt(); |
| | | |
| | | while (true) { |
| | | List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr, endDateStr, lastId, PAGE_SIZE); |
| | | |
| | | if (transferOrders == null || transferOrders.isEmpty()) { |
| | | break; |
| | | } catch (Exception e) { |
| | | log.error("同步单个转运单失败: ServiceOrdID={}, DispatchOrdID={}", |
| | | MapValueUtils.getStringValue(order, "ServiceOrdID"), |
| | | MapValueUtils.getStringValue(order, "DispatchOrdID"), e); |
| | | } |
| | | |
| | | int totalCount = transferOrders.size(); |
| | | int processedCount = 0; |
| | | |
| | | for (Map<String, Object> order : transferOrders) { |
| | | processedCount++; |
| | | try { |
| | | Long serviceOrdID = MapValueUtils.getLongValue(order, "ServiceOrdID"); |
| | | Long dispatchOrdID = MapValueUtils.getLongValue(order, "DispatchOrdID"); |
| | | |
| | | // 检查参数有效性 |
| | | if (serviceOrdID == null || serviceOrdID <= 0) { |
| | | log.warn("第{}条数据服务单ID为空,跳过处理", processedCount); |
| | | continue; |
| | | } |
| | | |
| | | // log.debug("正在处理第{}/{}条转运单: ServiceOrdID={}, DispatchOrdID={}", |
| | | // processedCount, totalCount, serviceOrdID, dispatchOrdID); |
| | | |
| | | // 检查是否已同步 |
| | | if (isTransferOrderSynced(serviceOrdID, dispatchOrdID)) { |
| | | // log.debug("转运单已同步,跳过: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | //进行更新操作 |
| | | updateTransferOrder(serviceOrdID, dispatchOrdID, order); |
| | | continue; |
| | | } |
| | | |
| | | // 同步单个转运单 |
| | | boolean success = syncSingleTransferOrder(serviceOrdID, dispatchOrdID, order); |
| | | if (success) { |
| | | successCount++; |
| | | } |
| | | |
| | | // 控制同步频率,避免请求过快 |
| | | Thread.sleep(100); |
| | | } catch (InterruptedException ie) { |
| | | log.warn("同步任务被中断"); |
| | | Thread.currentThread().interrupt(); |
| | | break; |
| | | } catch (Exception e) { |
| | | log.error("同步单个转运单失败: ServiceOrdID={}, DispatchOrdID={}", |
| | | MapValueUtils.getStringValue(order, "ServiceOrdID"), |
| | | MapValueUtils.getStringValue(order, "DispatchOrdID"), e); |
| | | } |
| | | } |
| | | |
| | | // 更新游标为本页最后一条的 ServiceOrdID |
| | | Map<String, Object> lastOrder = transferOrders.get(transferOrders.size() - 1); |
| | | Long lastServiceOrdID = MapValueUtils.getLongValue(lastOrder, "ServiceOrdID"); |
| | | if (lastServiceOrdID != null && lastServiceOrdID > 0) { |
| | | lastId = lastServiceOrdID; |
| | | } else { |
| | | break; |
| | | } |
| | | |
| | | // 本页未满一页,说明已无更多数据 |
| | | if (totalCount < PAGE_SIZE) { |
| | | break; |
| | | } |
| | | } |
| | | |
| | | log.info("同步完成,共处理{}条转运单,成功同步{}条转运单数据", totalCount, successCount); |
| | | |
| | | // log.info("同步完成,成功同步{}条转运单数据", successCount); |
| | | return successCount; |
| | | |
| | | } catch (Exception e) { |
| | |
| | | * @return 是否同步成功 |
| | | */ |
| | | @Override |
| | | public boolean syncSingleTransferOrder(String serviceOrdID, String dispatchOrdID) { |
| | | log.info("开始同步单个转运单: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | public boolean syncSingleTransferOrder(Long serviceOrdID, Long dispatchOrdID) { |
| | | // log.info("开始同步单个转运单: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | |
| | | try { |
| | | // 检查参数有效性 |
| | | if (StringUtils.isEmpty(serviceOrdID)) { |
| | | if (serviceOrdID == null || serviceOrdID <= 0) { |
| | | log.error("服务单ID不能为空"); |
| | | return false; |
| | | } |
| | | // 直接查询指定的转运单信息 |
| | | Long serviceOrdIdLong = null; |
| | | Long dispatchOrdIdLong = null; |
| | | |
| | | |
| | | |
| | | try { |
| | | serviceOrdIdLong = Long.valueOf(serviceOrdID); |
| | | } catch (NumberFormatException e) { |
| | | log.error("服务单ID不是有效数字: {}", serviceOrdID); |
| | | return false; |
| | | } |
| | | |
| | | if (StringUtils.isNotEmpty(dispatchOrdID)) { |
| | | try { |
| | | dispatchOrdIdLong = Long.valueOf(dispatchOrdID); |
| | | } catch (NumberFormatException e) { |
| | | log.warn("调度单ID不是有效数字: {}", dispatchOrdID); |
| | | } |
| | | } |
| | | |
| | | List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrdersByIDs(serviceOrdIdLong, dispatchOrdIdLong); |
| | | List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrdersByIDs(serviceOrdID, dispatchOrdID); |
| | | |
| | | Map<String, Object> order = transferOrders.get(0); |
| | | |
| | | // 检查是否已同步 |
| | | if (isTransferOrderSynced(serviceOrdID, dispatchOrdID)) { |
| | | log.info("转运单已同步,跳过: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | // log.info("转运单已同步,跳过: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | updateTransferOrder(serviceOrdID, dispatchOrdID, order); |
| | | return true; |
| | | } |
| | |
| | | * @param order |
| | | * @return |
| | | */ |
| | | private boolean updateTransferOrder(String serviceOrdID, String dispatchOrdID, Map<String, Object> order){ |
| | | log.info("开始同步单个转运单: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | private boolean updateTransferOrder(Long serviceOrdID, Long dispatchOrdID, Map<String, Object> order){ |
| | | // log.info("开始同步单个转运单: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | String sysTaskCode=""; |
| | | try { |
| | | SysTaskEmergency emergency=sysTaskEmergencyMapper.selectByLegacyServiceOrdId(Long.parseLong(serviceOrdID)); |
| | | SysTaskEmergency emergency=sysTaskEmergencyMapper.selectByLegacyServiceOrdId(serviceOrdID); |
| | | if(emergency.getNeedResync().equals(1)){ |
| | | log.info("新系统需要同步到旧系统那里,所以不要同步旧数据到新系统,serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | return false; |
| | |
| | | } |
| | | 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); |
| | | |
| | | // log.info("开始保存转运任务,serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | |
| | | int result = sysTaskService.updateTask(updateTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time); |
| | | |
| | | if (result > 0) { |
| | | log.info("转运单同步成功: ServiceOrdID={}, DispatchOrdID={}, 创建的任务ID={}", serviceOrdID, dispatchOrdID, result); |
| | | // log.info("转运单同步成功: ServiceOrdID={}, DispatchOrdID={}, 创建的任务ID={}", serviceOrdID, dispatchOrdID, result); |
| | | |
| | | try { |
| | | notifyTransferOrderByWechat((long) result, serviceOrdID, dispatchOrdID, serviceOrdNo, ServiceOrd_CC_Time, dept, order); |
| | |
| | | * @param order 转运单详细信息 |
| | | * @return 是否同步成功 |
| | | */ |
| | | private boolean syncSingleTransferOrder(String serviceOrdID, String dispatchOrdID, Map<String, Object> order) { |
| | | log.info("开始同步单个转运单: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | private boolean syncSingleTransferOrder(Long serviceOrdID, Long dispatchOrdID, Map<String, Object> order) { |
| | | // log.info("开始同步单个转运单: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | String sysTaskCode=""; |
| | | try { |
| | | // 构造TaskCreateVO对象 |
| | |
| | | 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); |
| | | 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); |
| | | } |
| | |
| | | * @return 是否已同步 |
| | | */ |
| | | @Override |
| | | public boolean isTransferOrderSynced(String serviceOrdID, String dispatchOrdID) { |
| | | public boolean isTransferOrderSynced(Long serviceOrdID, Long dispatchOrdID) { |
| | | try { |
| | | // 检查参数有效性 |
| | | if (StringUtils.isEmpty(serviceOrdID)) { |
| | | if (LongUtil.isEmpty(serviceOrdID)) { |
| | | log.warn("服务单ID不能为空"); |
| | | return false; |
| | | } |
| | |
| | | // 条件:legacy_service_ord_id = serviceOrdID 或 legacy_dispatch_ord_id = dispatchOrdID |
| | | |
| | | try { |
| | | SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyServiceOrdId(Long.valueOf(serviceOrdID)); |
| | | SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyServiceOrdId(serviceOrdID); |
| | | if (emergency != null) { |
| | | return true; |
| | | } |
| | |
| | | log.warn("服务单ID不是有效数字: {}", serviceOrdID); |
| | | } |
| | | |
| | | if (StringUtils.isNotEmpty(dispatchOrdID)) { |
| | | if (LongUtil.isNotEmpty(dispatchOrdID)) { |
| | | try { |
| | | SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyDispatchOrdId(Long.valueOf(dispatchOrdID)); |
| | | SysTaskEmergency emergency = sysTaskEmergencyMapper.selectByLegacyDispatchOrdId(dispatchOrdID); |
| | | if (emergency != null) { |
| | | return true; |
| | | } |
| | |
| | | * @return TaskCreateVO对象 |
| | | */ |
| | | @Override |
| | | public TaskCreateVO buildCreateTaskVo(String serviceOrdID, String dispatchOrdID, Map<String, Object> order) { |
| | | public TaskCreateVO buildCreateTaskVo(Long serviceOrdID, Long dispatchOrdID, Map<String, Object> order) { |
| | | // log.info("构造TaskCreateVO: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID); |
| | | |
| | | try { |
| | |
| | | return null; |
| | | } |
| | | |
| | | if (StringUtils.isEmpty(serviceOrdID)) { |
| | | if (LongUtil.isEmpty(serviceOrdID)) { |
| | | log.error("服务单ID不能为空"); |
| | | return null; |
| | | } |
| | |
| | | createTaskVo.setTaskType("EMERGENCY_TRANSFER"); // 急救转运任务 |
| | | |
| | | // 设置单据类型和任务类型ID(从旧系统字段映射) |
| | | |
| | | if (StringUtils.isNotEmpty(serviceOrdClass)) { |
| | | createTaskVo.setDocumentTypeId(serviceOrdClass); |
| | | String ServiceOrdAreaType = MapValueUtils.getStringValue(order, "ServiceOrdAreaType"); |
| | | if (StringUtils.isNotEmpty(ServiceOrdAreaType)) { |
| | | createTaskVo.setDocumentTypeId(ServiceOrdAreaType); |
| | | } |
| | | |
| | | String serviceOrdType = MapValueUtils.getStringValue(order, "ServiceOrdType"); |
| | |
| | | createTaskVo.setTaskTypeId(serviceOrdType); |
| | | } |
| | | |
| | | // 设置区域类型 |
| | | String serviceOrdAreaType = MapValueUtils.getStringValue(order, "ServiceOrdAreaType"); |
| | | |
| | | |
| | | String serviceOrdVIP = MapValueUtils.getStringValue(order, "ServiceOrdVIP"); |
| | | if(serviceOrdVIP!=null){ |
| | | createTaskVo.setServiceOrdVIP(serviceOrdVIP); |
| | | }else{ |
| | | createTaskVo.setServiceOrdVIP("0"); |
| | | } |
| | | |
| | | Integer FromHQ_is = MapValueUtils.getIntegerValue(order, "FromHQ_is"); |
| | | if(IntegerUtil.isNotEmpty(FromHQ_is)){ |
| | | createTaskVo.setFromHQ2_is("1"); |
| | | }else{ |
| | | createTaskVo.setFromHQ2_is("0"); |
| | | } |
| | | |
| | | // 设置用户ID |
| | | Long serviceOrdUserID = MapValueUtils.getLongValue(order, "ServiceOrdUserID"); |
| | |
| | | } |
| | | } |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | createTaskVo.setPrice(MapValueUtils.getBigDecimalValue(order, "ServiceOrdTraTxnPrice")); |
| | | // 距离信息需要从其他字段计算或获取 |
| | | |
| | | if(dispatchOrdID!=null) { |
| | | if(LongUtil.isNotEmpty(dispatchOrdID)) { |
| | | // 设置执行人信息 |
| | | List<TaskCreateVO.AssigneeInfo> assignees = queryAssignees(dispatchOrdID); |
| | | createTaskVo.setAssignees(assignees); |
| | |
| | | String carLicense = legacyTransferSyncMapper.selectCarLicenseByCarID(carID); |
| | | if (StringUtils.isNotEmpty(carLicense)) { |
| | | // 根据车牌号查询新系统中的车辆ID |
| | | log.info("转运任务,ServiceOrdID:{},车辆车牌:{}",serviceOrdID,carLicense); |
| | | // log.info("转运任务,ServiceOrdID:{},车辆车牌:{}",serviceOrdID,carLicense); |
| | | // log.debug("车辆车牌号: {}", carLicense); |
| | | |
| | | // 首先尝试通过VehicleInfoMapper查询车辆信息 |
| | |
| | | List<Long> vehicleIds = new ArrayList<>(); |
| | | vehicleIds.add(vehicleInfo.getVehicleId()); |
| | | createTaskVo.setVehicleIds(vehicleIds); |
| | | log.debug("转运任务,ServiceOrdID:{} 通过车牌号找到车辆信息: vehicle_id={}, vehicle_no={}",serviceOrdID, vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo()); |
| | | // log.debug("转运任务,ServiceOrdID:{} 通过车牌号找到车辆信息: vehicle_id={}, vehicle_no={}",serviceOrdID, vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo()); |
| | | } else { |
| | | log.warn("转运任务,ServiceOrdID:{} 未找到对应的车辆信息: car_id={}, vehicle_no={}",serviceOrdID, carID, carLicense); |
| | | } |
| | |
| | | List<Long> vehicleIds = new ArrayList<>(); |
| | | vehicleIds.add(vehicleInfo.getVehicleId()); |
| | | createTaskVo.setVehicleIds(vehicleIds); |
| | | log.debug("通过车牌号找到车辆信息: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo()); |
| | | // log.debug("通过车牌号找到车辆信息: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo()); |
| | | } else { |
| | | log.warn("未找到对应的车辆信息: vehicle_no={}", carLicense); |
| | | } |
| | |
| | | * @param dispatchOrdID 调度单ID |
| | | * @return 执行人信息列表 |
| | | */ |
| | | private List<TaskCreateVO.AssigneeInfo> queryAssignees(String dispatchOrdID) { |
| | | private List<TaskCreateVO.AssigneeInfo> queryAssignees(Long dispatchOrdID) { |
| | | long startTime = System.currentTimeMillis(); |
| | | try { |
| | | // 检查参数有效性 |
| | | if (StringUtils.isEmpty(dispatchOrdID)) { |
| | | 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) |
| | |
| | | } |
| | | } |
| | | |
| | | 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; |
| | |
| | | * @param serviceOrdID 服务单ID |
| | | * @return 病情ID列表 |
| | | */ |
| | | private String queryDiseaseIds(String serviceOrdID) { |
| | | private String queryDiseaseIds(Long serviceOrdID) { |
| | | try { |
| | | // 检查参数有效性 |
| | | if (StringUtils.isEmpty(serviceOrdID)) { |
| | | if (LongUtil.isEmpty(serviceOrdID) ) { |
| | | log.warn("服务单ID不能为空"); |
| | | return null; |
| | | } |
| | |
| | | return String.join(",", diseaseIds); |
| | | } |
| | | |
| | | log.info("查询到病情信息,服务单ID: {}, 病情数量: {}", serviceOrdID, diseaseIds != null ? diseaseIds.size() : 0); |
| | | // log.info("查询到病情信息,服务单ID: {}, 病情数量: {}", serviceOrdID, diseaseIds != null ? diseaseIds.size() : 0); |
| | | return null; |
| | | } catch (Exception e) { |
| | | log.error("查询病情信息异常,服务单ID: {}", serviceOrdID, e); |
| | |
| | | |
| | | |
| | | private void notifyTransferOrderByWechat(Long taskId, |
| | | String serviceOrdID, |
| | | String dispatchOrdID, |
| | | Long serviceOrdID, |
| | | Long dispatchOrdID, |
| | | String serviceOrdNo, |
| | | Date serviceOrdCcTime, |
| | | SysDept dept, |
| | |
| | | // 获取通知接收人列表 |
| | | List<SysUser> receivers = getWechatNotifyUsers(dispatchOrdID, dept); |
| | | if (receivers == null || receivers.isEmpty()) { |
| | | log.info("旧系统同步转运单无可用微信接收人,taskId={}", taskId); |
| | | // log.info("旧系统同步转运单无可用微信接收人,taskId={}", taskId); |
| | | return; |
| | | } |
| | | |
| | |
| | | |
| | | // 调用统一的微信通知服务 |
| | | int successCount = wechatTaskNotifyService.sendTaskNotifyMessage(taskId, userIds); |
| | | log.info("旧系统同步转运单微信通知发送完成,taskId={}, 成功={}", taskId, successCount); |
| | | // log.info("旧系统同步转运单微信通知发送完成,taskId={}, 成功={}", taskId, successCount); |
| | | } catch (Exception e) { |
| | | log.error("notifyTransferOrderByWechat发生异常, serviceOrdID={}, dispatchOrdID={}", serviceOrdID, dispatchOrdID, e); |
| | | } |
| | | } |
| | | |
| | | private List<SysUser> getWechatNotifyUsers(String dispatchOrdID, SysDept dept) { |
| | | private List<SysUser> getWechatNotifyUsers(Long dispatchOrdID, SysDept dept) { |
| | | try { |
| | | List<SysUser> result = new ArrayList<>(); |
| | | |