列表查询

This commit is contained in:
haomingming
2026-01-06 14:32:43 +08:00
parent ed72e480f1
commit 542a8f71ad
3 changed files with 63 additions and 19 deletions
+42 -7
View File
@@ -130,13 +130,26 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct
return db.Omit("open_id", "union_id", "wx_session_key")
})
// 医生姓名
// 医生姓名 - 同时查询原医生和抄方医生
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("transfer_doctor_id IN (?)", transferDoctorSubQuery))
// 使用 OR 条件:原医生匹配 OR 抄方医生匹配
query = query.Where(gorm.Expr("doctor_id IN (?)", originalDoctorSubQuery)).
Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery))
}
// 处方
@@ -190,6 +203,11 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct
query = query.Where("order_product_id IN (?)", subQuery)
}
// 处方编号
if req.PrescriptionCode != "" {
query = query.Where("prescription_code = ?", req.PrescriptionCode)
}
// 订单编号
if req.OrderProductNo != "" {
query = query.Where("order_product_no = ?", req.OrderProductNo)
@@ -320,7 +338,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct
query = query.Where("consignee_tel LIKE ?", "%"+req.ConsigneeTel+"%")
}
// 手机号-医生/患者
// 手机号-医生/患者 - 同时查询原医生和抄方医生
if req.Mobile != "" {
// 患者
patientUserSubQuery := global.Db.Model(&model.User{}).
@@ -331,16 +349,33 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct
Select("patient_id").
Where(gorm.Expr("user_id IN (?)", patientUserSubQuery))
// 医生
// 原医生
doctorUserSubQuery := global.Db.Model(&model.User{}).
Select("user_id").
Where("mobile = ?", req.Mobile)
doctorSubQuery := global.Db.Model(&model.UserDoctor{}).
originalDoctorSubQuery := global.Db.Model(&model.UserDoctor{}).
Select("doctor_id").
Where(gorm.Expr("user_id IN (?)", doctorUserSubQuery))
query = query.Where("patient_id IN (?)", patientSubQuery).Or("doctor_id IN (?)", doctorSubQuery)
// 抄方医生
transferDoctorUserSubQuery := global.Db.Model(&model.User{}).
Select("user_id").
Where("mobile = ?", req.Mobile)
transferDoctorSubQuery := global.Db.Model(&model.UserDoctor{}).
Select("doctor_id").
Where(gorm.Expr("user_id IN (?)", transferDoctorUserSubQuery))
// 查询抄方医生对应的问诊订单ID
inquirySubQuery := global.Db.Model(&model.OrderInquiry{}).
Select("order_inquiry_id").
Where(gorm.Expr("transfer_doctor_id IN (?)", transferDoctorSubQuery))
// 使用 OR 条件:患者匹配 OR 原医生匹配 OR 抄方医生匹配
query = query.Where("patient_id IN (?)", patientSubQuery).
Or("doctor_id IN (?)", originalDoctorSubQuery).
Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery))
}
// 排序