# 旧系统同步参数映射表 ## 参数传递说明 调用旧系统ASP接口 `admin_save_19.gds` 时,需要传递以下所有参数。 --- ## 核心参数 | 参数名 | 新系统来源 | 说明 | 示例值 | |--------|-----------|------|--------| | **adminID** | `creator.oaUserId` | 创建任务的用户对应的OA系统用户ID | `1001` | > **重要**: `adminID` 通过任务创建人ID (`creator_id`) 查询用户表 (`sys_user`),获取该用户的 `oa_user_id` 字段值 > **逻辑**: > 1. 从任务主表获取 `creator_id` > 2. 根据 `creator_id` 查询 `sys_user` 表 > 3. 获取该用户的 `oa_user_id` 字段 > 4. 将 `oa_user_id` 作为 `adminID` 传递给旧系统 --- ## 完整参数映射表 ### 1. 单据基础信息 | 旧系统参数 | 新系统字段 | 固定值/映射逻辑 | 必填 | |-----------|-----------|----------------|------| | ServiceOrdClass | - | 固定值 `"JJ"` (急救) | ✅ | | ServiceOrdAreaType | `dept.serviceOrderClass` | **任务所属分公司的服务单编码**
默认值: `"1"` | ✅ | | ServiceOrdType | - | 固定值 `"1"` | ✅ | | ServiceOrdState | - | 固定值 `"2"` (正式单) | ✅ | | ServiceOrdStartDate | `task.createTime` | 格式: yyyy-MM-dd | ✅ | | ServiceOrdApptDate | `task.plannedStartTime` | 格式: yyyy-MM-dd HH:mm:ss | ❌ | ### 2. 联系人信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | ServiceOrdCoName | `emergency.patientContact` | 患者联系人姓名 | ✅ | | ServiceOrdCoPhone | `emergency.patientPhone` | 联系人电话 | ✅ | | ServiceOrdCoTies | - | 空字符串 (联系人与患者关系) | ❌ | ### 3. 患者信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | ServiceOrdPtName | `emergency.patientName` | 患者姓名 | ✅ | | ServiceOrdPtAge | - | 空字符串 (年龄) | ❌ | | ServiceOrdPtKG | - | 空字符串 (体重) | ❌ | | ServiceOrdPtSex | `emergency.patientGender` | 0→"男", 1→"女" | ❌ | | ServiceOrdPtNat | - | 空字符串 (国籍) | ❌ | | ServiceOrdPtIDCard | `emergency.patientIdCard` | 患者身份证 | ❌ | ### 4. 转出医院信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | ServiceOrdPtOutHosp | `emergency.hospitalOutName` | 转出医院名称 | ✅ | | ServiceOrdPtOutHospID | - | 固定值 `"0"` (新医院自动创建) | ❌ | | ServiceOrdPtServices | `emergency.hospitalOutDepartment` | 转出科室 | ✅ | | ServiceOrdPtServicesID | - | 固定值 `"0"` | ❌ | ### 5. 转入医院信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | ServiceOrdPtInHosp | `emergency.hospitalInName` | 转入医院名称 | ✅ | | ServiceOrdPtInHospID | - | 固定值 `"0"` (新医院自动创建) | ❌ | | ServiceOrdPtInServices | `emergency.hospitalInDepartment` | 转入科室 | ✅ | | ServiceOrdPtInServicesID | - | 固定值 `"0"` | ❌ | ### 6. 病情信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | ServiceOrdPtDiagnosis | - | 空字符串 (诊断) | ❌ | | ServiceOrdPtCondition | `emergency.patientCondition` | 病情描述 | ❌ | | ServiceOrdTaskRemarks | `task.taskDescription` | 医护司备注 | ❌ | | ServiceOrdPtDoctor | - | 空字符串 (患者医生) | ❌ | | ServiceOrdPtDoctorPhone | - | 空字符串 (医生电话) | ❌ | ### 7. 地址和坐标信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | province | - | 空字符串 (出发地省份) | ❌ | | city | - | 空字符串 (出发地城市) | ❌ | | ServiceOrdTraStreet | `task.departureAddress` 或 `emergency.hospitalOutAddress` | 出发地地址 | ✅ | | ServiceOrdTraStreetCoo | - | 空字符串 (出发地坐标) | ❌ | | ServiceOrdTraEnd | `task.destinationAddress` 或 `emergency.hospitalInAddress` | 目的地地址 | ✅ | | ServiceOrdTraEndCoo | - | 空字符串 (目的地坐标) | ❌ | | ServiceOrdTraVia | - | 空字符串 (途经地) | ❌ | ### 8. 距离和价格信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | ServiceOrdViaDistance | - | 固定值 `"0"` (中途距离) | ❌ | | ServiceOrdTraDistance | `emergency.transferDistance` | 转运距离(公里) | ✅ | | ServiceOrdTraDuration | - | 空字符串 (预计行程时间) | ❌ | | ServiceOrdTraUnitPrice | - | 固定值 `"0"` (单价/公里) | ❌ | | ServiceOrdTraOfferPrice | `emergency.transferPrice` | 标准报价 | ❌ | | ServiceOrdTraTxnPrice | `emergency.transferPrice` | 成交价 | ✅ | | ServiceOrdTraPrePayment | - | 固定值 `"0"` (需预付款) | ❌ | | SettlementPrice | - | 固定值 `"0"` (结算价) | ❌ | | ServiceOrdTraPriceReason | - | 空字符串 (差价原因) | ❌ | ### 9. 电话记录信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | Phone | `emergency.patientPhone` | 来电电话 | ❌ | | TEL_Time | 当前时间 | 格式: yyyy-MM-dd HH:mm:ss | ❌ | | TEL_Remarks | - | 固定值 `"新系统同步"` | ❌ | ### 10. 转运方式和客服信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | TransferModeID | - | 空字符串 (转运方式) | ❌ | | ServiceOrdVIP | - | 固定值 `"0"` (非VIP) | ❌ | | ServiceOrd_CC_ID | - | 空字符串 (客服人员ID) | ❌ | | ServiceOrd_Sale_ID | - | 空字符串 (销售人员ID) | ❌ | | ServiceOrdIntroducer | - | 空字符串 (介绍人) | ❌ | | ServiceOrd_work_ID | - | 空字符串 (企微客服ID) | ❌ | | ServiceOrd_work_IDs | - | 空字符串 (其他企微客服ID) | ❌ | | ServiceOrd_work_is | - | 固定值 `"0"` (非企微成交) | ❌ | | CommissionScenarioID | - | 固定值 `"0"` (绩效方案) | ❌ | ### 11. 操作和来源信息 | 旧系统参数 | 新系统字段 | 映射逻辑 | 必填 | |-----------|-----------|---------|------| | ServiceOrdOperationRemarks | - | 固定值 `"新系统同步创建"` | ❌ | | ServiceOrdEstimatedOrderDate | - | 空字符串 (预计派单时间) | ❌ | | ServiceOrdSource | - | 固定值 `"10"` (订单来源=新系统) | ✅ | | OrderLevel | - | 固定值 `"2"` (查看等级) | ❌ | | ServiceOrdDepartureType | - | 固定值 `"1"` (预约类型) | ❌ | | ConditionLevel | - | 固定值 `"0"` (病重级别) | ❌ | | DirectionType | - | 固定值 `"0"` (转运去向) | ❌ | | ServiceOrd_m | - | 固定值 `"0"` (来源入口) | ❌ | | FromHQ2_is | - | 固定值 `"0"` (非总部推送) | ❌ | | OrderPrice_Auto | - | 固定值 `"0"` (自动报价参考值) | ❌ | --- ## 参数统计 - **总参数数量**: 66个 - **必填参数**: 11个 - **新系统映射**: 15个 - **固定值**: 28个 - **空字符串**: 23个 --- ## 关键参数说明 ### adminID - **来源**: `sys_user.oa_user_id` (通过 `sys_task.creator_id` 查询获取) - **查询逻辑**: 1. 从任务表获取 `creator_id` 2. 查询 `sys_user` 表: `SELECT oa_user_id FROM sys_user WHERE user_id = creator_id` 3. 获取 `oa_user_id` 的值 - **用途**: 标识在旧系统中创建该订单的管理员(使用OA系统的用户ID) - **类型**: 数字字符串 - **示例**: `"1001"` - **注意**: 如果用户未配置OA_UserID,则传递空字符串 ### ServiceOrdAreaType - **来源**: `sys_dept.service_order_class` (通过 `sys_task.dept_id` 查询获取) - **查询逻辑**: 1. 从任务表获取 `dept_id` (归属部门ID) 2. 查询 `sys_dept` 表: `SELECT service_order_class FROM sys_dept WHERE dept_id = dept_id` 3. 获取 `service_order_class` 的值 - **用途**: 标识服务单执行区域(分公司的服务单编码) - **默认值**: `"1"` (当任务未关联部门或部门未配置编码时) - **类型**: 字符串 - **示例**: `"JA"` (中山), `"GZ"` (广州), `"ZJ"` (湛江) - **注意**: - 确保创建任务时设置了正确的归属部门 - 确保分公司配置了服务单编码(可通过部门同步自动获取) ### ServiceOrdSource = "10" - **含义**: 标识订单来源为新系统 - **用途**: 在旧系统中区分订单来源 ### ServiceOrdState = "2" - **含义**: 正式单 - **说明**: 新系统同步的订单直接创建为正式单,跳过咨询单阶段 --- ## 性别映射规则 ```javascript 新系统 emergency.patientGender → 旧系统 ServiceOrdPtSex "0" → "男" "1" → "女" 其他 → "" ``` --- ## 日期时间格式 | 字段 | 格式 | 示例 | |------|------|------| | ServiceOrdStartDate | yyyy-MM-dd | 2025-01-20 | | ServiceOrdApptDate | yyyy-MM-dd HH:mm:ss | 2025-01-20 14:30:00 | | TEL_Time | yyyy-MM-dd HH:mm:ss | 2025-01-20 14:30:00 | --- ## 数据优先级 当多个字段可提供同一数据时,优先级如下: **出发地地址**: 1. `task.departureAddress` 2. `emergency.hospitalOutAddress` **目的地地址**: 1. `task.destinationAddress` 2. `emergency.hospitalInAddress` --- ## 代码实现位置 **文件**: `LegacySystemSyncServiceImpl.java` **方法**: `buildSyncParams(SysTask task, SysTaskEmergency emergency)` **行号**: 约210-305行 --- ## HTTP请求示例 ### 请求方法 ``` POST http://legacy-system.com/admin_save_19.gds Content-Type: application/x-www-form-urlencoded;charset=UTF-8 ``` ### 请求体示例 (部分参数) ``` adminID=123& ServiceOrdClass=JJ& ServiceOrdAreaType=1& ServiceOrdType=1& ServiceOrdState=2& ServiceOrdCoName=%E5%BC%A0%E4%B8%89& ServiceOrdCoPhone=13800138000& ServiceOrdPtName=%E6%9D%8E%E5%9B%9B& ServiceOrdPtOutHosp=%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2& ServiceOrdPtInHosp=%E4%B8%AD%E5%BF%83%E5%8C%BB%E9%99%A2& ServiceOrdSource=10 ``` ### 成功响应 ``` OK:1016003256 ``` ### 失败响应示例 ``` data not complete data error ServiceOrdCoPhone,ServiceOrdPtName, repeat submit ``` --- ## 验证清单 在同步前,确保以下必填参数有值: - [ ] adminID (创建人ID) - [ ] ServiceOrdCoName (联系人姓名) - [ ] ServiceOrdCoPhone (联系人电话) - [ ] ServiceOrdPtName (患者姓名) - [ ] ServiceOrdPtOutHosp (转出医院) - [ ] ServiceOrdPtServices (转出科室) - [ ] ServiceOrdPtInHosp (转入医院) - [ ] ServiceOrdPtInServices (转入科室) - [ ] ServiceOrdTraStreet (出发地) - [ ] ServiceOrdTraEnd (目的地) - [ ] ServiceOrdTraDistance (距离) - [ ] ServiceOrdTraTxnPrice (成交价) --- ## 更新记录 | 日期 | 版本 | 更新内容 | |------|------|----------| | 2025-10-19 | v1.2 | 优化 ServiceOrdAreaType 参数,使用任务所属分公司的服务单编码 | | 2025-01-20 | v1.1 | 添加 adminID 参数映射 | | 2025-01-20 | v1.0 | 初始版本 |