为急救转运任务添加了两个字段:
1. 单据类型:数据源来自SQL Server数据库的dictionary表,查询条件为vtitle='ServiceOrdAreaType' AND vType=1
2. 任务类型:数据源来自SQL Server数据库的dictionary表,查询条件为vtitle='ServiceOrderType' AND vType>=1
单据类型:sql SELECT vID, vtext FROM dictionary WHERE vtitle='ServiceOrdAreaType' AND vType=1 ORDER BY vOrder
任务类型:sql SELECT vID, vtext FROM dictionary WHERE vtitle='ServiceOrderType' AND vType>=1 ORDER BY vOrder
文件:sql/add_document_type_to_emergency.sql
```sql
ALTER TABLE sys_task_emergency
ADD COLUMN document_type_id VARCHAR(50) COMMENT '单据类型ID(对应SQL Server的dictionary表vID,vtitle=ServiceOrdAreaType)';
ALTER TABLE sys_task_emergency
ADD COLUMN task_type_id VARCHAR(50) COMMENT '任务类型ID(对应SQL Server的dictionary表vID,vtitle=ServiceOrderType)';
CREATE INDEX idx_document_type_id ON sys_task_emergency(document_type_id);
CREATE INDEX idx_task_type_id ON sys_task_emergency(task_type_id);
```
文件: SysTaskEmergency.java
- 新增字段:private String documentTypeId;(单据类型)
- 新增字段:private String taskTypeId;(任务类型)
- 新增getter/setter方法
文件: TaskCreateVO.java
- 新增字段:private String documentTypeId;(单据类型)
- 新增字段:private String taskTypeId;(任务类型)
- 新增getter/setter方法
文件: OrderClassDTO.java
- 新增字段:private String vID; (用于存储单据类型ID)
- 新增getter/setter方法
文件: OrderClassMapper.java
- 新增方法:List<OrderClassDTO> selectServiceOrdAreaTypes();
文件: OrderClassMapper.xmlxml <select id="selectServiceOrdAreaTypes" resultMap="OrderClassResult"> SELECT vID, vtext FROM dictionary WHERE vtitle = 'ServiceOrdAreaType' AND vType = 1 ORDER BY vOrder </select>
文件: SysTaskEmergencyMapper.xml
- 在resultMap中添加:<result property="documentTypeId" column="document_type_id" />
- 在insert、update、select语句中添加document_type_id字段
文件: IOrderClassDataService.java
- 新增方法:List<OrderClassDTO> getServiceOrdAreaTypes();(查询单据类型)
- 新增方法:List<OrderClassDTO> getServiceOrderTypes();(查询任务类型)
文件: OrderClassDataServiceImpl.java
```java
// 查询单据类型
@Override
public List getServiceOrdAreaTypes() {
log.info("开始从 SQL Server 查询单据类型数据...");
List list = orderClassMapper.selectServiceOrdAreaTypes();
log.info("成功查询到 {} 条单据类型数据", list != null ? list.size() : 0);
return list;
}
// 查询任务类型
@Override
public List getServiceOrderTypes() {
log.info("开始从 SQL Server 查询服务订单类型数据...");
List list = orderClassMapper.selectServiceOrderTypes();
log.info("成功查询到 {} 条服务订单类型数据", list != null ? list.size() : 0);
return list;
}
```
文件: SysTaskServiceImpl.java
- 修改saveEmergencyInfo方法,添加单据类型ID和任务类型ID的保存:java emergencyInfo.setDocumentTypeId(createVO.getDocumentTypeId()); emergencyInfo.setTaskTypeId(createVO.getTaskTypeId());
新增文件: SqlServerDictionaryController.java
```java
// 查询单据类型
@GetMapping("/serviceOrdAreaTypes")
public AjaxResult getServiceOrdAreaTypes() {
List list = orderClassDataService.getServiceOrdAreaTypes();
return AjaxResult.success("查询成功", list);
}
// 查询任务类型
@GetMapping("/serviceOrderTypes")
public AjaxResult getServiceOrderTypes() {
List list = orderClassDataService.getServiceOrderTypes();
return AjaxResult.success("查询成功", list);
}
```
新增文件: app/api/dictionary.js
```javascript
// 查询单据类型
export function getServiceOrdAreaTypes() {
return request({
url: '/sqlserver/dictionary/serviceOrdAreaTypes',
method: 'get'
})
}
// 查询任务类型
export function getServiceOrderTypes() {
return request({
url: '/sqlserver/dictionary/serviceOrderTypes',
method: 'get'
})
}
```
文件: app/pages/task/create-emergency.vue
数据模型:
```javascript
data() {
return {
selectedEmergencyTaskType: '', // 选中的任务类型文本
selectedEmergencyTaskTypeId: null, // 选中的任务类型ID
emergencyTaskTypes: [], // 任务类型列表
emergencyTaskTypeOptions: [], // 任务类型选项(用于picker显示)
selectedDocumentType: '', // 选中的单据类型文本
selectedDocumentTypeId: null, // 选中的单据类型ID
documentTypes: [], // 单据类型列表
documentTypeOptions: [], // 单据类型选项(用于picker显示)
}
}
```
加载方法:
```javascript
import { getServiceOrdAreaTypes, getServiceOrderTypes } from "@/api/dictionary"
// 加载任务类型
loadEmergencyTaskTypes() {
getServiceOrderTypes().then(response => {
const list = response.data || []
this.emergencyTaskTypes = list
this.emergencyTaskTypeOptions = list.map(item => ({
id: item.vID,
text: item.vtext
}))
}).catch(error => {
console.error('加载任务类型失败:', error)
this.emergencyTaskTypes = []
this.emergencyTaskTypeOptions = []
})
}
// 加载单据类型
loadDocumentTypes() {
getServiceOrdAreaTypes().then(response => {
const list = response.data || []
this.documentTypes = list
this.documentTypeOptions = list.map(item => ({
id: item.vID,
text: item.vtext
}))
}).catch(error => {
console.error('加载单据类型失败:', error)
this.documentTypes = []
this.documentTypeOptions = []
})
}
```
UI组件:
```vue
任务类型
<picker mode="selector" :range="emergencyTaskTypeOptions" range-key="text" @change="onEmergencyTaskTypeChange">
{{ selectedEmergencyTaskType || '请选择任务类型' }}
单据类型
<picker mode="selector" :range="documentTypeOptions" range-key="text" @change="onDocumentTypeChange">
{{ selectedDocumentType || '请选择单据类型' }}
```
选择处理:
```javascript
// 任务类型选择
onEmergencyTaskTypeChange(e) {
const index = e.detail.value
const selected = this.emergencyTaskTypeOptions[index]
this.selectedEmergencyTaskType = selected.text
this.selectedEmergencyTaskTypeId = selected.id
}
// 单据类型选择
onDocumentTypeChange(e) {
const index = e.detail.value
const selected = this.documentTypeOptions[index]
this.selectedDocumentType = selected.text
this.selectedDocumentTypeId = selected.id
}
```
提交数据:javascript buildSubmitData() { const submitData = { taskType: 'EMERGENCY_TRANSFER', vehicleIds: this.selectedVehicleId ? [this.selectedVehicleId] : [], assigneeIds: this.selectedStaff.map(staff => staff.userId), transferTime: this.taskForm.transferTime, documentTypeId: this.selectedDocumentTypeId, // 添加单据类型ID taskTypeId: this.selectedEmergencyTaskTypeId, // 添加任务类型ID patient: { ... }, hospitalOut: { ... }, hospitalIn: { ... }, transferDistance: ..., price: ... } return submitData }
前端选择任务类型/单据类型
↓
发送 taskTypeId/documentTypeId 到后端
↓
TaskCreateVO 接收参数
↓
SysTaskServiceImpl.saveEmergencyInfo() 处理
↓
SysTaskEmergency 实体保存
↓
SysTaskEmergencyMapper 插入数据库
↓
sys_task_emergency.task_type_id/document_type_id 字段存储
mysql -u root -p your_database < sql/add_document_type_to_emergency.sql
确保新增的Service和Controller被加载
# 测试查询单据类型接口
GET /sqlserver/dictionary/serviceOrdAreaTypes
vType = 1(精确匹配)vType >= 1(范围匹配)ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskEmergency.javaruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TaskCreateVO.javaruoyi-system/src/main/java/com/ruoyi/system/domain/OrderClassDTO.javaruoyi-system/src/main/java/com/ruoyi/system/mapper/OrderClassMapper.javaruoyi-system/src/main/java/com/ruoyi/system/service/IOrderClassDataService.javaruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderClassDataServiceImpl.javaruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.javaruoyi-system/src/main/resources/mapper/system/OrderClassMapper.xmlruoyi-system/src/main/resources/mapper/system/SysTaskEmergencyMapper.xmlruoyi-admin/src/main/java/com/ruoyi/web/controller/sqlserver/SqlServerDictionaryController.javaapp/api/dictionary.jsapp/pages/task/create-emergency.vuesql/add_document_type_to_emergency.sql