| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import javax.net.ssl.HttpsURLConnection; |
| | | import javax.net.ssl.SSLContext; |
| | | import javax.net.ssl.TrustManager; |
| | | import javax.net.ssl.X509TrustManager; |
| | | import java.security.cert.X509Certificate; |
| | | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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业务层处理 |
| | |
| | | |
| | | @Autowired |
| | | private ISysTaskEmergencyService sysTaskEmergencyService; |
| | | |
| | | @Autowired |
| | | private ITaskAttachmentSyncService taskAttachmentSyncService; |
| | | |
| | | @Autowired |
| | | private ISysTaskService sysTaskService; |
| | | |
| | | @Autowired |
| | | private ITaskAttachmentService taskAttachmentService; |
| | | |
| | | /** |
| | | * 同步急救转运任务到旧系统 |
| | |
| | | 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) |
| | | */ |
| | |
| | | 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); |
| | |
| | | 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 { |
| | |
| | | for (SysTaskEmergency emergency : pendingTasks) { |
| | | log.info("开始同步调度单,任务ID: {}", emergency.getTaskId()); |
| | | Long dispatchOrdId = syncDispatchOrderToLegacy(emergency.getTaskId()); |
| | | |
| | | if (dispatchOrdId != null && dispatchOrdId > 0) { |
| | | pageSuccessCount++; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 发送HTTP POST请求 |
| | | * 发送HTTP/HTTPS POST请求 |
| | | * 支持HTTPS自签名证书 |
| | | */ |
| | | private String sendHttpPost(String urlString, Map<String, String> params) throws Exception { |
| | | URL url = new URL(urlString); |
| | | HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
| | | |
| | | // 如果是HTTPS请求,配置SSL信任所有证书 |
| | | if (conn instanceof HttpsURLConnection) { |
| | | HttpsURLConnection httpsConn = (HttpsURLConnection) conn; |
| | | httpsConn.setSSLSocketFactory(createTrustAllSSLContext().getSocketFactory()); |
| | | httpsConn.setHostnameVerifier((hostname, session) -> true); // 信任所有主机名 |
| | | log.debug("配置HTTPS连接,信任所有SSL证书,URL: {}", urlString); |
| | | } |
| | | |
| | | try { |
| | | // 设置连接属性 |
| | |
| | | } |
| | | } else { |
| | | log.error("请求失败,请求URL {},参数 {}",urlString,postData); |
| | | |
| | | throw new Exception("HTTP请求失败,响应码: " + responseCode); |
| | | throw new Exception("HTTP/HTTPS请求失败,响应码: " + responseCode); |
| | | } |
| | | |
| | | } finally { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 创建信任所有SSL证书的SSLContext |
| | | * 用于支持自签名证书的HTTPS请求 |
| | | * |
| | | * 注意:此方法会信任所有SSL证书,包括自签名证书 |
| | | * 仅用于与旧系统的内部通信,生产环境建议使用正规CA证书 |
| | | */ |
| | | private SSLContext createTrustAllSSLContext() throws Exception { |
| | | // 创建信任所有证书的TrustManager |
| | | TrustManager[] trustAllCerts = new TrustManager[] { |
| | | new X509TrustManager() { |
| | | @Override |
| | | public X509Certificate[] getAcceptedIssuers() { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public void checkClientTrusted(X509Certificate[] certs, String authType) { |
| | | // 信任所有客户端证书 |
| | | } |
| | | |
| | | @Override |
| | | public void checkServerTrusted(X509Certificate[] certs, String authType) { |
| | | // 信任所有服务器证书 |
| | | } |
| | | } |
| | | }; |
| | | |
| | | // 安装信任所有证书的TrustManager |
| | | SSLContext sslContext = SSLContext.getInstance("TLS"); |
| | | sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); |
| | | return sslContext; |
| | | } |
| | | |
| | | /** |
| | | * 解析旧系统响应 |
| | | * 预期格式: "OK:ServiceOrdID" 或错误信息 |
| | | */ |