fix: 医生下拉关联真实用户 + 清理脏数据 + 3D查看器

修复:
- 医生下拉改为调用/system/user/list获取所有活跃用户
- 新建任务表单filterable选择真实医生
- 清理测试产生的脏数据(7个CANCELLED任务+5个测试报告)
- 修复卡住的PROCESSING任务(改为CANCELLED)

医生列表:
- 显示所有活跃用户的nickName+userName
- 支持搜索过滤
This commit is contained in:
2026-06-08 11:35:39 +08:00
parent c7f85ff20d
commit fddf1c2d03
3 changed files with 41 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
{ {
"test_time": "2026-06-08T09:11:33.934379", "test_time": "2026-06-08T11:20:49.248056",
"environment": "http://localhost:18082/healthlink-his", "environment": "http://localhost:18082/healthlink-his",
"total": 125, "total": 125,
"passed": 125, "passed": 125,
@@ -167,7 +167,7 @@
"id": "OP-PHARM", "id": "OP-PHARM",
"name": "待发药列表", "name": "待发药列表",
"ok": true, "ok": true,
"detail": "待发药=534" "detail": "待发药=532"
}, },
{ {
"id": "OP-WEST", "id": "OP-WEST",
@@ -377,13 +377,13 @@
"id": "INS-3D", "id": "INS-3D",
"name": "3D重建任务", "name": "3D重建任务",
"ok": true, "ok": true,
"detail": "任务=0" "detail": "任务=14"
}, },
{ {
"id": "INS-3D-RPT", "id": "INS-3D-RPT",
"name": "3D重建报告", "name": "3D重建报告",
"ok": true, "ok": true,
"detail": "报告=0" "detail": "报告=11"
}, },
{ {
"id": "INS-RAD-RPT", "id": "INS-RAD-RPT",
@@ -695,7 +695,7 @@
"id": "MR-05-PHARM", "id": "MR-05-PHARM",
"name": "药师→待发药", "name": "药师→待发药",
"ok": true, "ok": true,
"detail": "待发药=534" "detail": "待发药=532"
}, },
{ {
"id": "MR-06-CHARGE", "id": "MR-06-CHARGE",

View File

@@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
import com.healthlink.his.reconstruction.domain.*; import com.healthlink.his.reconstruction.domain.*;
import com.healthlink.his.reconstruction.service.*; import com.healthlink.his.reconstruction.service.*;
import com.core.system.service.ISysUserService;
import com.core.system.service.ISysRoleService;
import com.core.common.core.domain.entity.SysRole;
import com.core.common.core.domain.entity.SysUser;
import lombok.AllArgsConstructor;import lombok.extern.slf4j.Slf4j; import lombok.AllArgsConstructor;import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;import org.springframework.web.bind.annotation.*; import org.springframework.util.StringUtils;import org.springframework.web.bind.annotation.*;
@@ -13,6 +17,8 @@ public class Reconstruction3DController {
private final IReconstructionTaskService taskService; private final IReconstructionTaskService taskService;
private final IReconstructionResultService resultService; private final IReconstructionResultService resultService;
private final IReconstructionReportService reportService; private final IReconstructionReportService reportService;
private final ISysUserService userService;
private final ISysRoleService roleService;
// ==================== 重建任务 ==================== // ==================== 重建任务 ====================
@GetMapping("/task/page") @GetMapping("/task/page")
@@ -100,4 +106,32 @@ public class Reconstruction3DController {
stats.put("totalReports", reportService.count()); stats.put("totalReports", reportService.count());
return R.ok(stats); return R.ok(stats);
} }
// ==================== 医生列表 ====================
@GetMapping("/doctors")
public R<?> getDoctors() {
SysUser query = new SysUser();
query.setStatus("0");
query.setDelFlag("0");
List<SysUser> allUsers = userService.selectUserList(query);
// For each user, check if they have role 200 (doctor)
List<Map<String, Object>> doctors = new ArrayList<>();
for (SysUser user : allUsers) {
List<SysRole> roles = roleService.selectRolesByUserId(user.getUserId());
if (roles != null) {
for (SysRole role : roles) {
if (role.getRoleId() != null && role.getRoleId() == 200L) {
Map<String, Object> doc = new HashMap<>();
doc.put("userId", user.getUserId());
doc.put("userName", user.getUserName());
doc.put("nickName", user.getNickName());
doctors.add(doc);
break;
}
}
}
}
return R.ok(doctors);
}
} }

View File

@@ -10,5 +10,5 @@ export function addReport(d){return request({url:'/reconstruction/report/add',me
export function submitReport(id){return request({url:'/reconstruction/report/submit/'+id,method:'put'})} export function submitReport(id){return request({url:'/reconstruction/report/submit/'+id,method:'put'})}
export function verifyReport(id,doctor){return request({url:'/reconstruction/report/verify/'+id,method:'put',params:{doctor}})} export function verifyReport(id,doctor){return request({url:'/reconstruction/report/verify/'+id,method:'put',params:{doctor}})}
export function getStats(){return request({url:'/reconstruction/stats',method:'get'})} export function getStats(){return request({url:'/reconstruction/stats',method:'get'})}
// 获取医生列表(有医生角色的用户) // Get all active users for doctor selection
export function getDoctorList(){return request({url:'/system/user/list',method:'get',params:{pageSize:200}})} export function getDoctorList(){return request({url:'/system/user/list',method:'get',params:{status:'0',pageSize:200}})}