diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index 1372abd..0e7ffc6 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -453,13 +453,30 @@ func (r *OrderProductDao) GetOrderProductExportListSearch(req requests.OrderProd // 当前搜索数据 if req.Type == 1 { - // 医生姓名 + // 医生姓名 - 同时查询原医生和抄方医生 if req.DoctorName != "" { - subQuery := global.Db.Model(&model.UserDoctor{}). + // 原医生查询条件 + originalDoctorSubQuery := global.Db.Model(&model.UserDoctor{}). Select("doctor_id"). Where("user_name LIKE ?", "%"+req.DoctorName+"%") - query = query.Where(gorm.Expr("doctor_id IN (?)", subQuery)) + // 抄方医生查询条件 + transferDoctorSubQuery := global.Db.Model(&model.UserDoctor{}). + Select("doctor_id"). + Where("user_name LIKE ?", "%"+req.DoctorName+"%") + + // 查询抄方医生对应的问诊订单ID + inquirySubQuery := global.Db.Model(&model.OrderInquiry{}). + Select("order_inquiry_id"). + Where(gorm.Expr("doctor_id IN (?)", transferDoctorSubQuery)) + + // 使用 OR 条件:原医生匹配 OR 抄方医生匹配 + // 通过嵌套 Where 子查询把 OR 条件包在一组括号里,避免影响其它条件 + orCond := global.Db. + Where(gorm.Expr("doctor_id IN (?)", originalDoctorSubQuery)). + Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) + + query = query.Where(orCond) } // 患者姓名-就诊人