From 4133c7e26b65342bc8ff9359acb8b892d1ee97cd Mon Sep 17 00:00:00 2001 From: haomingming Date: Thu, 25 Dec 2025 14:47:38 +0800 Subject: [PATCH 01/57] =?UTF-8?q?=E5=8C=BB=E7=94=9F=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=8E=A5=E5=8F=97=E6=8A=84=E6=96=B9=20?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dto/UserDoctor.go | 13 ++++++++++--- api/model/userDoctor.go | 4 +++- api/requests/userDoctor.go | 2 ++ api/service/userDoctor.go | 6 ++++++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/api/dto/UserDoctor.go b/api/dto/UserDoctor.go index e647aa0..22fcb1e 100644 --- a/api/dto/UserDoctor.go +++ b/api/dto/UserDoctor.go @@ -37,6 +37,7 @@ type UserDoctorDto struct { IsPlatformDeepCooperation int `json:"is_platform_deep_cooperation"` // 是否平台深度合作医生(0:否 1:是) IsEnterpriseDeepCooperation int `json:"is_enterprise_deep_cooperation"` // 是否企业深度合作医生(0:否 1:是) IsSysDiagnoCooperation int `json:"is_sys_diagno_cooperation"` // 是否先思达合作医生(0:否 1:是) + IsTransferPrescription int `json:"is_transfer_prescription"` // 是否接受抄方(0:否 1:是) QrCode string `json:"qr_code"` // 分享二维码 BeGoodAt string `json:"be_good_at"` // 擅长 BriefIntroduction string `json:"brief_introduction"` // 医生简介 @@ -77,6 +78,7 @@ type UserDoctorPendingDto struct { IsPlatformDeepCooperation int `json:"is_platform_deep_cooperation"` // 是否平台深度合作医生(0:否 1:是) IsEnterpriseDeepCooperation int `json:"is_enterprise_deep_cooperation"` // 是否企业深度合作医生(0:否 1:是) IsSysDiagnoCooperation int `json:"is_sys_diagno_cooperation"` // 是否先思达合作医生(0:否 1:是) + IsTransferPrescription int `json:"is_transfer_prescription"` // 是否接受抄方(0:否 1:是) IsRecommend int `json:"is_recommend"` // 是否首页推荐(0:否 1:是) CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 @@ -143,8 +145,10 @@ func GetUserDoctorDto(m *model.UserDoctor) *UserDoctorDto { PraiseRate: m.PraiseRate, AvgResponseTime: m.AvgResponseTime, NumberOfFans: m.NumberOfFans, - IsPlatformDeepCooperation: m.IsPlatformDeepCooperation, - IsSysDiagnoCooperation: m.IsSysDiagnoCooperation, + IsPlatformDeepCooperation: m.IsPlatformDeepCooperation, + IsEnterpriseDeepCooperation: m.IsEnterpriseDeepCooperation, + IsSysDiagnoCooperation: m.IsSysDiagnoCooperation, + IsTransferPrescription: m.IsTransferPrescription, QrCode: utils.AddOssDomain(m.QrCode), BeGoodAt: m.BeGoodAt, BriefIntroduction: m.BriefIntroduction, @@ -182,7 +186,9 @@ func GetUserDoctorListDto(m []*model.UserDoctor) []*UserDoctorDto { PraiseRate: v.PraiseRate, AvgResponseTime: v.AvgResponseTime, NumberOfFans: v.NumberOfFans, - IsPlatformDeepCooperation: v.IsPlatformDeepCooperation, + IsPlatformDeepCooperation: v.IsPlatformDeepCooperation, + IsEnterpriseDeepCooperation: v.IsEnterpriseDeepCooperation, + IsTransferPrescription: v.IsTransferPrescription, CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } @@ -241,6 +247,7 @@ func GetUserDoctorPendingDto(m *model.UserDoctor) *UserDoctorPendingDto { IsPlatformDeepCooperation: m.IsPlatformDeepCooperation, IsEnterpriseDeepCooperation: m.IsEnterpriseDeepCooperation, IsSysDiagnoCooperation: m.IsSysDiagnoCooperation, + IsTransferPrescription: m.IsTransferPrescription, IsRecommend: m.IsRecommend, CreatedAt: m.CreatedAt, UpdatedAt: m.UpdatedAt, diff --git a/api/model/userDoctor.go b/api/model/userDoctor.go index fbfe763..287af04 100644 --- a/api/model/userDoctor.go +++ b/api/model/userDoctor.go @@ -1,9 +1,10 @@ package model import ( - "gorm.io/gorm" "hospital-admin-api/global" "time" + + "gorm.io/gorm" ) // UserDoctor 用户-医生表 @@ -42,6 +43,7 @@ type UserDoctor struct { IsPlatformDeepCooperation int `gorm:"column:is_platform_deep_cooperation;type:tinyint(1);default:0;comment:是否平台深度合作医生(0:否 1:是)" json:"is_platform_deep_cooperation"` IsEnterpriseDeepCooperation int `gorm:"column:is_enterprise_deep_cooperation;type:tinyint(1);default:0;comment:是否企业深度合作医生(0:否 1:是)" json:"is_enterprise_deep_cooperation"` IsSysDiagnoCooperation int `gorm:"column:is_sys_diagno_cooperation;type:tinyint(1);default:0;comment:是否先思达合作医生(0:否 1:是)" json:"is_sys_diagno_cooperation"` + IsTransferPrescription int `gorm:"column:is_transfer_prescription;type:tinyint(1);default:0;comment:是否接受抄方(0:否 1:是)" json:"is_transfer_prescription"` QrCode string `gorm:"column:qr_code;type:varchar(255);comment:分享二维码" json:"qr_code"` BeGoodAt string `gorm:"column:be_good_at;type:text;comment:擅长" json:"be_good_at"` BriefIntroduction string `gorm:"column:brief_introduction;type:text;comment:医生简介" json:"brief_introduction"` diff --git a/api/requests/userDoctor.go b/api/requests/userDoctor.go index 3d06635..23f7117 100644 --- a/api/requests/userDoctor.go +++ b/api/requests/userDoctor.go @@ -48,6 +48,7 @@ type PutUserDoctor struct { HospitalId string `json:"hospital_id" form:"hospital_id" validate:"required" label:"所属医院id"` IsPlatformDeepCooperation int `json:"is_platform_deep_cooperation" form:"is_platform_deep_cooperation" label:"平台深度合作医生"` // 是否平台深度合作医生(0:否 1:是) IsSysDiagnoCooperation int `json:"is_sys_diagno_cooperation" form:"is_sys_diagno_cooperation" label:"是否先思达合作医生)"` // 是否先思达合作医生(0:否 1:是) + IsTransferPrescription int `json:"is_transfer_prescription" form:"is_transfer_prescription" label:"是否接受抄方"` // 是否接受抄方(0:否 1:是) BeGoodAt string `json:"be_good_at" form:"be_good_at" validate:"required" label:"擅长"` BriefIntroduction string `json:"brief_introduction" form:"brief_introduction" validate:"required" label:"医生简介"` LicenseCert []string `json:"license_cert" form:"license_cert" label:"医师执业证"` @@ -78,6 +79,7 @@ type AddUserDoctor struct { HospitalId string `json:"hospital_id" form:"hospital_id" validate:"required" label:"所属医院id"` IsPlatformDeepCooperation int `json:"is_platform_deep_cooperation" form:"is_platform_deep_cooperation" label:"平台深度合作医生"` // 是否平台深度合作医生(0:否 1:是) IsSysDiagnoCooperation int `json:"is_sys_diagno_cooperation" form:"is_sys_diagno_cooperation" label:"是否先思达合作医生)"` // 是否先思达合作医生(0:否 1:是) + IsTransferPrescription int `json:"is_transfer_prescription" form:"is_transfer_prescription" label:"是否接受抄方"` // 是否接受抄方(0:否 1:是) BeGoodAt string `json:"be_good_at" form:"be_good_at" validate:"required" label:"擅长"` BriefIntroduction string `json:"brief_introduction" form:"brief_introduction" validate:"required" label:"医生简介"` LicenseCert []string `json:"license_cert" form:"license_cert" validate:"required" label:"医师执业证"` diff --git a/api/service/userDoctor.go b/api/service/userDoctor.go index 78ef529..f16f5c3 100644 --- a/api/service/userDoctor.go +++ b/api/service/userDoctor.go @@ -175,6 +175,11 @@ func (r *UserDoctorService) PutUserDoctor(doctorId int64, req requests.PutUserDo userDoctorData["is_sys_diagno_cooperation"] = req.IsSysDiagnoCooperation } + // 处理是否接受抄方 + if userDoctor.IsTransferPrescription != req.IsTransferPrescription { + userDoctorData["is_transfer_prescription"] = req.IsTransferPrescription + } + // 是否推荐 if userDoctor.IsRecommend != req.IsRecommend { userDoctorData["is_recommend"] = req.IsRecommend @@ -970,6 +975,7 @@ func (r *UserDoctorService) AddUserDoctor(userId string, req requests.AddUserDoc HospitalID: hospitalId, IsPlatformDeepCooperation: req.IsPlatformDeepCooperation, IsSysDiagnoCooperation: req.IsSysDiagnoCooperation, + IsTransferPrescription: req.IsTransferPrescription, BeGoodAt: req.BeGoodAt, BriefIntroduction: req.BriefIntroduction, } From a04a499a430f3b5092c93900c7c0087290fbbce5 Mon Sep 17 00:00:00 2001 From: haomingming Date: Fri, 26 Dec 2025 16:47:36 +0800 Subject: [PATCH 02/57] =?UTF-8?q?=E6=8A=84=E6=96=B9=20=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dao/orderPrescription.go | 12 +++++++++++- api/dto/OrderInquiry.go | 16 ++++++++++++++++ api/dto/OrderPrescription.go | 28 ++++++++++++++++++++++++++++ api/model/orderInquiry.go | 9 ++++++--- 4 files changed, 61 insertions(+), 4 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 601ae84..72e1182 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -2,12 +2,13 @@ package dao import ( "errors" - "gorm.io/gorm" "hospital-admin-api/api/model" "hospital-admin-api/api/requests" "hospital-admin-api/global" "strings" "time" + + "gorm.io/gorm" ) type OrderPrescriptionDao struct { @@ -100,6 +101,15 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionPageSearch(req requests.GetOr // 处方关联疾病表 query = query.Preload("OrderPrescriptionIcd") + // 处方关联问诊表(抄方用) + query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { + return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Omit("open_id", "union_id", "wx_session_key") + }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Omit("open_id", "union_id", "wx_session_key") + }) + }) + // 患者家庭成员表 query = query.Preload("PatientFamily") diff --git a/api/dto/OrderInquiry.go b/api/dto/OrderInquiry.go index 0e2bcb5..9162046 100644 --- a/api/dto/OrderInquiry.go +++ b/api/dto/OrderInquiry.go @@ -11,6 +11,7 @@ type OrderInquiryDto struct { UserId string `json:"user_id"` // 用户id-患者 PatientId string `json:"patient_id"` // 患者id DoctorId string `json:"doctor_id"` // 医生id(未分配时为null) + TransferDoctorId string `json:"transfer_doctor_id"` // 接受抄方的医生id FamilyId string `json:"family_id"` // 家庭成员id(就诊用户) InquiryType int `json:"inquiry_type"` // 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测) InquiryMode int `json:"inquiry_mode"` // 订单问诊方式(1:图文 2:视频 3:语音 4:电话 5:会员) @@ -61,11 +62,17 @@ func GetOrderInquiryDto(m *model.OrderInquiry) *OrderInquiryDto { doctorId = fmt.Sprintf("%v", m.DoctorId) } + var transferDoctorId string + if m.TransferDoctorId != 0 { + transferDoctorId = fmt.Sprintf("%v", m.TransferDoctorId) + } + return &OrderInquiryDto{ OrderInquiryId: fmt.Sprintf("%d", m.OrderInquiryId), OrderId: fmt.Sprintf("%d", m.OrderId), UserId: fmt.Sprintf("%d", m.UserId), DoctorId: doctorId, + TransferDoctorId: transferDoctorId, PatientId: fmt.Sprintf("%d", m.PatientId), FamilyId: fmt.Sprintf("%d", m.FamilyId), InquiryType: m.InquiryType, @@ -113,6 +120,7 @@ func GetOrderInquiryListDto(m []*model.OrderInquiry) []*OrderInquiryDto { UserId: fmt.Sprintf("%d", v.UserId), PatientId: fmt.Sprintf("%d", v.PatientId), DoctorId: fmt.Sprintf("%d", v.DoctorId), + TransferDoctorId: fmt.Sprintf("%d", v.TransferDoctorId), FamilyId: fmt.Sprintf("%d", v.FamilyId), InquiryType: v.InquiryType, InquiryMode: v.InquiryMode, @@ -172,6 +180,7 @@ func GetOrderInquiryRecordListDto(m []*model.OrderInquiry) []*OrderInquiryDto { UserId: fmt.Sprintf("%d", v.UserId), PatientId: fmt.Sprintf("%d", v.PatientId), DoctorId: fmt.Sprintf("%d", v.DoctorId), + TransferDoctorId: fmt.Sprintf("%d", v.TransferDoctorId), FamilyId: fmt.Sprintf("%d", v.FamilyId), InquiryType: v.InquiryType, InquiryMode: v.InquiryMode, @@ -228,6 +237,7 @@ func GetOrderInquiryForAccountListDto(m []*model.OrderInquiry) []*OrderInquiryDt UserId: fmt.Sprintf("%d", v.UserId), PatientId: fmt.Sprintf("%d", v.PatientId), DoctorId: fmt.Sprintf("%d", v.DoctorId), + TransferDoctorId: fmt.Sprintf("%d", v.TransferDoctorId), FamilyId: fmt.Sprintf("%d", v.FamilyId), InquiryType: v.InquiryType, InquiryMode: v.InquiryMode, @@ -279,11 +289,17 @@ func GetOrderInquiryRecordDto(m *model.OrderInquiry) *OrderInquiryDto { doctorId = fmt.Sprintf("%v", m.DoctorId) } + var transferDoctorId string + if m.TransferDoctorId != 0 { + transferDoctorId = fmt.Sprintf("%v", m.TransferDoctorId) + } + return &OrderInquiryDto{ OrderInquiryId: fmt.Sprintf("%d", m.OrderInquiryId), OrderId: fmt.Sprintf("%d", m.OrderId), UserId: fmt.Sprintf("%d", m.UserId), DoctorId: doctorId, + TransferDoctorId: transferDoctorId, PatientId: fmt.Sprintf("%d", m.PatientId), FamilyId: fmt.Sprintf("%d", m.FamilyId), InquiryType: m.InquiryType, diff --git a/api/dto/OrderPrescription.go b/api/dto/OrderPrescription.go index d707913..173eb77 100644 --- a/api/dto/OrderPrescription.go +++ b/api/dto/OrderPrescription.go @@ -37,6 +37,8 @@ type OrderPrescriptionDto struct { OrderPrescriptionIcd string `json:"order_prescription_icd"` // 处方诊断疾病 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 OrderPrescriptionProduct []*OrderPrescriptionProductDto `json:"order_prescription_product"` // 处方商品 + UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生 + TransferUserDoctor *UserDoctorDto `json:"transfer_user_doctor"` // 接受抄方的医生 CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 } @@ -125,6 +127,16 @@ func GetOrderPrescriptionListDto(m []*model.OrderPrescription) []*OrderPrescript response = response.LoadOrderPrescriptionIcdString(v.OrderPrescriptionIcd) } + // 加载原始医生信息 + if v.OrderInquiry != nil && v.OrderInquiry.UserDoctor != nil { + response = response.LoadUserDoctor(v.OrderInquiry.UserDoctor) + } + + // 加载接受抄方的医生信息 + if v.OrderInquiry != nil && v.OrderInquiry.TransferUserDoctor != nil { + response = response.LoadTransferUserDoctor(v.OrderInquiry.TransferUserDoctor) + } + // 将转换后的结构体添加到新切片中 responses[i] = response } @@ -205,3 +217,19 @@ func (r *OrderPrescriptionDto) LoadOrderProductId(m *model.OrderProduct) *OrderP } return r } + +// LoadUserDoctor 加载原始医生信息 +func (r *OrderPrescriptionDto) LoadUserDoctor(m *model.UserDoctor) *OrderPrescriptionDto { + if m != nil { + r.UserDoctor = GetUserDoctorDto(m) + } + return r +} + +// LoadTransferUserDoctor 加载接受抄方的医生信息 +func (r *OrderPrescriptionDto) LoadTransferUserDoctor(m *model.UserDoctor) *OrderPrescriptionDto { + if m != nil { + r.TransferUserDoctor = GetUserDoctorDto(m) + } + return r +} diff --git a/api/model/orderInquiry.go b/api/model/orderInquiry.go index 5d4f45f..a6c1461 100644 --- a/api/model/orderInquiry.go +++ b/api/model/orderInquiry.go @@ -1,9 +1,10 @@ package model import ( - "gorm.io/gorm" "hospital-admin-api/global" "time" + + "gorm.io/gorm" ) // OrderInquiry 订单-问诊表 @@ -13,6 +14,7 @@ type OrderInquiry struct { UserId int64 `gorm:"column:user_id;type:bigint(19);comment:用户id-患者;NOT NULL" json:"user_id"` PatientId int64 `gorm:"column:patient_id;type:bigint(19);comment:患者id;NOT NULL" json:"patient_id"` DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);comment:医生id(未分配时为null)" json:"doctor_id"` + TransferDoctorId int64 `gorm:"column:transfer_doctor_id;type:bigint(19);comment:接受抄方的医生id" json:"transfer_doctor_id"` FamilyId int64 `gorm:"column:family_id;type:bigint(19);comment:家庭成员id(就诊用户);NOT NULL" json:"family_id"` InquiryType int `gorm:"column:inquiry_type;type:tinyint(1);comment:订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测);NOT NULL" json:"inquiry_type"` InquiryMode int `gorm:"column:inquiry_mode;type:tinyint(1);comment:订单问诊方式(1:图文 2:视频 3:语音 4:电话 5:会员);NOT NULL" json:"inquiry_mode"` @@ -41,8 +43,9 @@ type OrderInquiry struct { PatientNameMask string `gorm:"column:patient_name_mask;type:varchar(255);comment:患者姓名-就诊人(掩码)" json:"patient_name_mask"` PatientSex int `gorm:"column:patient_sex;type:tinyint(1);default:0;comment:患者性别-就诊人(0:未知 1:男 2:女)" json:"patient_sex"` PatientAge int `gorm:"column:patient_age;type:int(1);comment:患者年龄-就诊人" json:"patient_age"` - UserDoctor *UserDoctor `gorm:"foreignKey:DoctorId;references:doctor_id" json:"user_doctor"` // 医生 - User *User `gorm:"foreignKey:UserId;references:user_id" json:"user"` // 患者 + UserDoctor *UserDoctor `gorm:"foreignKey:DoctorId;references:doctor_id" json:"user_doctor"` // 医生 + TransferUserDoctor *UserDoctor `gorm:"foreignKey:TransferDoctorId;references:doctor_id" json:"transfer_user_doctor"` // 接受抄方的医生 + User *User `gorm:"foreignKey:UserId;references:user_id" json:"user"` // 患者 Model } From f8e208077a625a900030e447ce7364bdd9c4777d Mon Sep 17 00:00:00 2001 From: haomingming Date: Fri, 26 Dec 2025 17:05:21 +0800 Subject: [PATCH 03/57] 12 --- api/dao/orderPrescription.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 72e1182..de589e6 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -104,9 +104,9 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionPageSearch(req requests.GetOr // 处方关联问诊表(抄方用) query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { - return db.Omit("open_id", "union_id", "wx_session_key") + return db.Select("user_id", "user_name", "doctor_id") }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { - return db.Omit("open_id", "union_id", "wx_session_key") + return db.Select("user_id", "user_name", "doctor_id") }) }) From 83a54826b669520dc182ff5291ec3ad7988f324d Mon Sep 17 00:00:00 2001 From: haomingming Date: Fri, 26 Dec 2025 17:17:04 +0800 Subject: [PATCH 04/57] 243 --- api/dao/orderPrescription.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index de589e6..9eef7b1 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -16,7 +16,18 @@ type OrderPrescriptionDao struct { // GetById 获取处方-处方id func (r *OrderPrescriptionDao) GetById(orderPrescriptionId int64) (m *model.OrderPrescription, err error) { - err = global.Db.First(&m, orderPrescriptionId).Error + query := global.Db.Model(&model.OrderPrescription{}) + + // 处方关联问诊表(抄方用) + query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { + return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }) + }) + + err = query.First(&m, orderPrescriptionId).Error if err != nil { return nil, err } From 0f8693f1c84586fc5bd244c7d52d35409ab9e717 Mon Sep 17 00:00:00 2001 From: haomingming Date: Fri, 26 Dec 2025 17:20:40 +0800 Subject: [PATCH 05/57] =?UTF-8?q?=E5=88=86=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/orderPrescription.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/api/service/orderPrescription.go b/api/service/orderPrescription.go index 2e7a061..7a0bba2 100644 --- a/api/service/orderPrescription.go +++ b/api/service/orderPrescription.go @@ -82,5 +82,15 @@ func (r *OrderPrescriptionService) GetOrderPrescription(OrderPrescriptionId int6 // 加载药品订单id g.LoadOrderProductId(orderProduct) + // 加载原始医生信息 + if orderPrescription.OrderInquiry != nil && orderPrescription.OrderInquiry.UserDoctor != nil { + g.LoadUserDoctor(orderPrescription.OrderInquiry.UserDoctor) + } + + // 加载接受抄方的医生信息 + if orderPrescription.OrderInquiry != nil && orderPrescription.OrderInquiry.TransferUserDoctor != nil { + g.LoadTransferUserDoctor(orderPrescription.OrderInquiry.TransferUserDoctor) + } + return g, nil } From c1cb96c01eead1f6bc3ac81814e6ed7a23199978 Mon Sep 17 00:00:00 2001 From: haomingming Date: Fri, 26 Dec 2025 17:28:11 +0800 Subject: [PATCH 06/57] wer --- api/dao/orderProduct.go | 23 +++++++++++++++++++++-- api/dto/OrderProduct.go | 29 ++++++++++++++++++++++++++++- api/service/orderProduct.go | 10 ++++++++++ 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index be4fdf5..bdea1ac 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -25,7 +25,21 @@ func (r *OrderProductDao) GetOrderProductById(orderProductId int64) (m *model.Or // GetOrderProductPreloadById 获取药品订单数据-加载全部关联-药品订单id func (r *OrderProductDao) GetOrderProductPreloadById(orderProductId int64) (m *model.OrderProduct, err error) { - err = global.Db.Preload(clause.Associations).First(&m, orderProductId).Error + query := global.Db.Model(&model.OrderProduct{}) + + // 预加载所有关联 + query = query.Preload(clause.Associations) + + // 处方关联问诊表(抄方用) + query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { + return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }) + }) + + err = query.First(&m, orderProductId).Error if err != nil { return nil, err } @@ -132,7 +146,12 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct // 问诊订单 query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { - return db.Select("order_inquiry_id", "patient_name_mask", "patient_sex", "patient_age") + return db.Select("order_inquiry_id", "patient_name_mask", "patient_sex", "patient_age"). + Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }) }) // 患者名称 diff --git a/api/dto/OrderProduct.go b/api/dto/OrderProduct.go index 203bcd3..d57cf23 100644 --- a/api/dto/OrderProduct.go +++ b/api/dto/OrderProduct.go @@ -55,7 +55,8 @@ type OrderProductDto struct { OrderProductRefund *OrderProductRefundDto `json:"order_product_refund"` // 退款数据 OrderProductItem []*OrderProductItemDto `json:"order_product_item"` // 商品数据 OrderProductLogistics *OrderProductLogisticsDto `json:"order_product_logistics"` // 物流数据 - UserDoctor *UserDoctorDto `json:"user_doctor"` // 医生数据 + UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生 + TransferUserDoctor *UserDoctorDto `json:"transfer_user_doctor"` // 接受抄方的医生 OrderPrescription *OrderPrescriptionDto `json:"order_prescription"` // 处方数据 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 OrderProductCoupon *OrderProductCouponDto `json:"order_product_coupon"` // 优惠卷 @@ -179,6 +180,16 @@ func GetOrderProductListDto(m []*model.OrderProduct) []*OrderProductDto { response = response.LoadOrderInquiryAttr(v.OrderInquiry) } + // 加载原始医生信息 + if v.OrderInquiry != nil && v.OrderInquiry.UserDoctor != nil { + response = response.LoadUserDoctor(v.OrderInquiry.UserDoctor) + } + + // 加载接受抄方的医生信息 + if v.OrderInquiry != nil && v.OrderInquiry.TransferUserDoctor != nil { + response = response.LoadTransferUserDoctor(v.OrderInquiry.TransferUserDoctor) + } + // 加载处方编号 if v.OrderPrescription != nil { response = response.LoadOrderPrescriptionCode(v.OrderPrescription) @@ -205,6 +216,22 @@ func (r *OrderProductDto) LoadDoctorName(m *model.UserDoctor) *OrderProductDto { return r } +// LoadUserDoctor 加载原始医生信息 +func (r *OrderProductDto) LoadUserDoctor(m *model.UserDoctor) *OrderProductDto { + if m != nil { + r.UserDoctor = GetUserDoctorDto(m) + } + return r +} + +// LoadTransferUserDoctor 加载接受抄方的医生信息 +func (r *OrderProductDto) LoadTransferUserDoctor(m *model.UserDoctor) *OrderProductDto { + if m != nil { + r.TransferUserDoctor = GetUserDoctorDto(m) + } + return r +} + // LoadOrderInquiryAttr 加载问诊属性 func (r *OrderProductDto) LoadOrderInquiryAttr(m *model.OrderInquiry) *OrderProductDto { if m != nil { diff --git a/api/service/orderProduct.go b/api/service/orderProduct.go index 278318d..1871fa6 100644 --- a/api/service/orderProduct.go +++ b/api/service/orderProduct.go @@ -68,6 +68,16 @@ func (r *OrderProductService) GetOrderProduct(orderProductId int64) (g *dto.Orde // 加载医生数据 g.UserDoctor = userDoctor + // 加载原始医生信息 + if orderProduct.OrderInquiry != nil && orderProduct.OrderInquiry.UserDoctor != nil { + g.LoadUserDoctor(orderProduct.OrderInquiry.UserDoctor) + } + + // 加载接受抄方的医生信息 + if orderProduct.OrderInquiry != nil && orderProduct.OrderInquiry.TransferUserDoctor != nil { + g.LoadTransferUserDoctor(orderProduct.OrderInquiry.TransferUserDoctor) + } + // 加载问诊病例 g.LoadOrderInquiryCase(orderInquiryCase) From 1ad8ffab1e64c1f6e957789c4380692f2ff43fd0 Mon Sep 17 00:00:00 2001 From: haomingming Date: Fri, 26 Dec 2025 17:32:12 +0800 Subject: [PATCH 07/57] sfwe --- api/dao/orderProduct.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index bdea1ac..b4e6aa6 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -146,12 +146,11 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct // 问诊订单 query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { - return db.Select("order_inquiry_id", "patient_name_mask", "patient_sex", "patient_age"). - Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { - return db.Select("user_id", "user_name", "doctor_id") - }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { - return db.Select("user_id", "user_name", "doctor_id") - }) + return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }) }) // 患者名称 From f787ac00612f46f8818799334842f3993d67e1cd Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 10:46:23 +0800 Subject: [PATCH 08/57] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dto/OrderProduct.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/dto/OrderProduct.go b/api/dto/OrderProduct.go index d57cf23..ee5601b 100644 --- a/api/dto/OrderProduct.go +++ b/api/dto/OrderProduct.go @@ -55,8 +55,8 @@ type OrderProductDto struct { OrderProductRefund *OrderProductRefundDto `json:"order_product_refund"` // 退款数据 OrderProductItem []*OrderProductItemDto `json:"order_product_item"` // 商品数据 OrderProductLogistics *OrderProductLogisticsDto `json:"order_product_logistics"` // 物流数据 - UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生 - TransferUserDoctor *UserDoctorDto `json:"transfer_user_doctor"` // 接受抄方的医生 + UserDoctor *UserDoctorDto `json:"inquiry_doctor"` // 原始医生(问诊医生信息) + TransferUserDoctor *UserDoctorDto `json:"prescription_doctor"` // 接受抄方的医生(处方医生信息) OrderPrescription *OrderPrescriptionDto `json:"order_prescription"` // 处方数据 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 OrderProductCoupon *OrderProductCouponDto `json:"order_product_coupon"` // 优惠卷 From 406d91a81afc44a9123876d7570bd6e5baed3c65 Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 11:42:23 +0800 Subject: [PATCH 09/57] e --- api/dto/OrderProduct.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/api/dto/OrderProduct.go b/api/dto/OrderProduct.go index ee5601b..931037f 100644 --- a/api/dto/OrderProduct.go +++ b/api/dto/OrderProduct.go @@ -13,6 +13,7 @@ type OrderProductDto struct { OrderPrescriptionId string `json:"order_prescription_id"` // 订单-处方id;NOT NULL OrderId string `json:"order_id"` // 订单id DoctorId string `json:"doctor_id"` // 医生id + TransferDoctorId string `json:"transfer_doctor_id"` // 接受抄方的医生id PatientId string `json:"patient_id"` // 患者id FamilyId string `json:"family_id"` // 家庭成员id(就诊用户) OrderProductNo string `json:"order_product_no"` // 订单编号 @@ -55,7 +56,7 @@ type OrderProductDto struct { OrderProductRefund *OrderProductRefundDto `json:"order_product_refund"` // 退款数据 OrderProductItem []*OrderProductItemDto `json:"order_product_item"` // 商品数据 OrderProductLogistics *OrderProductLogisticsDto `json:"order_product_logistics"` // 物流数据 - UserDoctor *UserDoctorDto `json:"inquiry_doctor"` // 原始医生(问诊医生信息) + UserDoctor *UserDoctorDto `json:"inquiry_doctor"` // 原始医生(问诊医生信息) TransferUserDoctor *UserDoctorDto `json:"prescription_doctor"` // 接受抄方的医生(处方医生信息) OrderPrescription *OrderPrescriptionDto `json:"order_prescription"` // 处方数据 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 @@ -216,7 +217,7 @@ func (r *OrderProductDto) LoadDoctorName(m *model.UserDoctor) *OrderProductDto { return r } -// LoadUserDoctor 加载原始医生信息 +// LoadUserDoctor 加载问诊医生信息 func (r *OrderProductDto) LoadUserDoctor(m *model.UserDoctor) *OrderProductDto { if m != nil { r.UserDoctor = GetUserDoctorDto(m) @@ -238,6 +239,7 @@ func (r *OrderProductDto) LoadOrderInquiryAttr(m *model.OrderInquiry) *OrderProd r.PatientNameMask = m.PatientNameMask r.PatientSex = m.PatientSex r.PatientAge = m.PatientAge + r.TransferDoctorId = string(m.TransferDoctorId) } return r } From 4edbca5f67efc6a94332a698cb53b40c75d3c17b Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 11:55:19 +0800 Subject: [PATCH 10/57] 89 --- api/dao/orderProduct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index b4e6aa6..a972414 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -150,7 +150,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct return db.Select("user_id", "user_name", "doctor_id") }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { return db.Select("user_id", "user_name", "doctor_id") - }) + }).Select("transfer_doctor_id") }) // 患者名称 From ba7fb4ae8c30610443cffed9b977984ca2b8d3bc Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 13:21:49 +0800 Subject: [PATCH 11/57] q --- api/dao/orderProduct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index a972414..b4e6aa6 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -150,7 +150,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct return db.Select("user_id", "user_name", "doctor_id") }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { return db.Select("user_id", "user_name", "doctor_id") - }).Select("transfer_doctor_id") + }) }) // 患者名称 From a4df927d7dbd32813cad203973d5ab46f8ddc6d9 Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 13:27:42 +0800 Subject: [PATCH 12/57] 3 --- api/dto/OrderProduct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/dto/OrderProduct.go b/api/dto/OrderProduct.go index 931037f..53b60bc 100644 --- a/api/dto/OrderProduct.go +++ b/api/dto/OrderProduct.go @@ -57,7 +57,7 @@ type OrderProductDto struct { OrderProductItem []*OrderProductItemDto `json:"order_product_item"` // 商品数据 OrderProductLogistics *OrderProductLogisticsDto `json:"order_product_logistics"` // 物流数据 UserDoctor *UserDoctorDto `json:"inquiry_doctor"` // 原始医生(问诊医生信息) - TransferUserDoctor *UserDoctorDto `json:"prescription_doctor"` // 接受抄方的医生(处方医生信息) + TransferUserDoctor *UserDoctorDto `json:"transfer_prescription_doctor"` // 接受抄方的医生(抄方处方医生信息) OrderPrescription *OrderPrescriptionDto `json:"order_prescription"` // 处方数据 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 OrderProductCoupon *OrderProductCouponDto `json:"order_product_coupon"` // 优惠卷 From 0a0f85321ad20d7f7e4c18200b8e66abbc6aa989 Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 13:31:03 +0800 Subject: [PATCH 13/57] wqe --- api/dto/OrderPrescription.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/dto/OrderPrescription.go b/api/dto/OrderPrescription.go index 173eb77..ede5962 100644 --- a/api/dto/OrderPrescription.go +++ b/api/dto/OrderPrescription.go @@ -37,8 +37,8 @@ type OrderPrescriptionDto struct { OrderPrescriptionIcd string `json:"order_prescription_icd"` // 处方诊断疾病 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 OrderPrescriptionProduct []*OrderPrescriptionProductDto `json:"order_prescription_product"` // 处方商品 - UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生 - TransferUserDoctor *UserDoctorDto `json:"transfer_user_doctor"` // 接受抄方的医生 + UserDoctor *UserDoctorDto `json:"inquiry_doctor"` // 原始医生(问诊医生信息) + TransferUserDoctor *UserDoctorDto `json:"transfer_prescription_doctor"` // 接受抄方的医生(抄方处方医生信息) CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 } From 9ee32f80ed430b2673acee4383f5ec4596803368 Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 14:54:40 +0800 Subject: [PATCH 14/57] =?UTF-8?q?=E6=8A=84=E6=96=B9=20=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/orderPrescription.go | 44 ++++++- api/dao/orderPrescription.go | 173 ++++++++++++++++++++++++++++ api/router/router.go | 6 +- 3 files changed, 221 insertions(+), 2 deletions(-) diff --git a/api/controller/orderPrescription.go b/api/controller/orderPrescription.go index 4cb151b..626d796 100644 --- a/api/controller/orderPrescription.go +++ b/api/controller/orderPrescription.go @@ -1,7 +1,6 @@ package controller import ( - "github.com/gin-gonic/gin" "hospital-admin-api/api/dao" "hospital-admin-api/api/dto" "hospital-admin-api/api/requests" @@ -10,6 +9,8 @@ import ( "hospital-admin-api/global" "hospital-admin-api/utils" "strconv" + + "github.com/gin-gonic/gin" ) type OrderPrescription struct{} @@ -55,6 +56,47 @@ func (r *OrderPrescription) GetOrderPrescriptionPage(c *gin.Context) { responses.OkWithData(result, c) } +// GetOrderPrescriptionTransferPage 获取抄方的处方列表-分页 +func (r *OrderPrescription) GetOrderPrescriptionTransferPage(c *gin.Context) { + orderPrescriptionRequest := requests.OrderPrescriptionRequest{} + req := orderPrescriptionRequest.GetOrderPrescriptionPage + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + if req.Page == 0 { + req.Page = 1 + } + + if req.PageSize == 0 { + req.PageSize = 20 + } + + orderPrescriptionDao := dao.OrderPrescriptionDao{} + orderPrescription, total, err := orderPrescriptionDao.GetOrderPrescriptionTransferPageSearch(req, req.Page, req.PageSize) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 处理返回值 + GetOrderPrescriptionPage := dto.GetOrderPrescriptionListDto(orderPrescription) + + result := make(map[string]interface{}) + result["page"] = req.Page + result["page_size"] = req.PageSize + result["total"] = total + result["data"] = GetOrderPrescriptionPage + responses.OkWithData(result, c) +} + // GetOrderPrescription 处方详情 func (r *OrderPrescription) GetOrderPrescription(c *gin.Context) { id := c.Param("order_prescription_id") diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 9eef7b1..e9cefc2 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -254,6 +254,179 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionPageSearch(req requests.GetOr return m, totalRecords, nil } +// GetOrderPrescriptionTransferPageSearch 获取抄方的处方列表-分页 +func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req requests.GetOrderPrescriptionPage, page, pageSize int) (m []*model.OrderPrescription, total int64, err error) { + var totalRecords int64 + prescriptionTable := (&model.OrderPrescription{}).TableName() + inquiryTable := (&model.OrderInquiry{}).TableName() + + // 构建查询条件 + query := global.Db.Model(&model.OrderPrescription{}) + + // 关联问诊表,只查询TransferDoctorId不等于null的记录 + query = query.Joins("INNER JOIN "+inquiryTable+" ON "+prescriptionTable+".order_inquiry_id = "+inquiryTable+".order_inquiry_id"). + Where(inquiryTable+".transfer_doctor_id IS NOT NULL") + + // 患者表 + query = query.Preload("UserPatient", func(db *gorm.DB) *gorm.DB { + return db.Omit("open_id", "union_id", "wx_session_key") + }) + + // 用户表 + query = query.Preload("UserPatient.User", func(db *gorm.DB) *gorm.DB { + return db.Omit("user_password", "salt") + }) + + // 药师表 + query = query.Preload("UserPharmacist", func(db *gorm.DB) *gorm.DB { + return db.Omit("open_id", "union_id", "wx_session_key") + }) + + // 处方关联疾病表 + query = query.Preload("OrderPrescriptionIcd") + + // 处方关联问诊表(抄方用) + query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { + return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }) + }) + + // 患者家庭成员表 + query = query.Preload("PatientFamily") + + // 处方编号 + if req.PrescriptionCode != "" { + query = query.Where(prescriptionTable+".prescription_code = ?", req.PrescriptionCode) + } + + // 医生名称 + if req.DoctorName != "" { + query = query.Where(prescriptionTable+".doctor_name LIKE ?", "%"+req.DoctorName+"%") + } + + // 患者姓名-就诊人 + if req.PatientName != "" { + query = query.Where(prescriptionTable+".patient_name LIKE ?", "%"+req.PatientName+"%") + } + + // 手机号-医生/患者/就诊人 + if req.Mobile != "" { + // 就诊人 + patientFamilySubQuery := global.Db.Model(&model.PatientFamily{}). + Select("family_id"). + Where("mobile = ?", req.Mobile) + + // 患者 + patientUserSubQuery := global.Db.Model(&model.User{}). + Select("user_id"). + Where("mobile = ?", req.Mobile) + + patientSubQuery := global.Db.Model(&model.UserPatient{}). + 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{}). + Select("doctor_id"). + Where(gorm.Expr("user_id IN (?)", doctorUserSubQuery)) + + query = query.Where(prescriptionTable+".patient_id IN (?)", patientSubQuery).Or(prescriptionTable+".doctor_id IN (?)", doctorSubQuery).Or(prescriptionTable+".family_id IN (?)", patientFamilySubQuery) + } + + // 处方状态 + if req.PrescriptionStatus != nil { + query = query.Where(prescriptionTable+".prescription_status = ?", req.PrescriptionStatus) + } + + // 药师审核状态 + if req.PharmacistAuditStatus != nil { + query = query.Where(prescriptionTable+".pharmacist_audit_status = ?", req.PharmacistAuditStatus) + } + + // 问诊订单编号 + if req.InquiryNo != "" { + subQuery := global.Db.Model(&model.OrderInquiry{}). + Select("order_inquiry_id"). + Where("inquiry_no = ?", req.InquiryNo) + query = query.Where(prescriptionTable+".order_inquiry_id IN (?)", subQuery) + } + + // 药品订单编号 + if req.OrderProductNo != "" { + subQuery := global.Db.Model(&model.OrderInquiry{}). + Select("order_prescription_id"). + Where("order_product_no = ?", req.OrderProductNo) + query = query.Where(prescriptionTable+".order_prescription_id IN (?)", subQuery) + } + + // 药师审核时间 + if req.PharmacistVerifyTime != "" { + pharmacistVerifyTime := strings.Split(req.PharmacistVerifyTime, "&") + if len(pharmacistVerifyTime) == 2 { + startTime, _ := time.Parse("2006-01-02", pharmacistVerifyTime[0]) + endTime, _ := time.Parse("2006-01-02", pharmacistVerifyTime[1]) + + if startTime == endTime { + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) + } + + query = query.Where(prescriptionTable+".pharmacist_verify_time BETWEEN ? AND ?", startTime, endTime) + } + } + + // 医生开具处方时间 + if req.DoctorCreatedTime != "" { + doctorCreatedTime := strings.Split(req.DoctorCreatedTime, "&") + if len(doctorCreatedTime) == 2 { + startTime, _ := time.Parse("2006-01-02", doctorCreatedTime[0]) + endTime, _ := time.Parse("2006-01-02", doctorCreatedTime[1]) + + if startTime == endTime { + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) + } + + query = query.Where(prescriptionTable+".doctor_created_time BETWEEN ? AND ?", startTime, endTime) + } + } + + // 处方过期时间 + if req.ExpiredTime != "" { + expiredTime := strings.Split(req.ExpiredTime, "&") + if len(expiredTime) == 2 { + startTime, _ := time.Parse("2006-01-02", expiredTime[0]) + endTime, _ := time.Parse("2006-01-02", expiredTime[1]) + + if startTime == endTime { + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) + } + + query = query.Where(prescriptionTable+".expired_time BETWEEN ? AND ?", startTime, endTime) + } + } + + // 排序 + query = query.Order(prescriptionTable + ".created_at desc") + + // 查询总数量 + if err := query.Count(&totalRecords).Error; err != nil { + return nil, 0, err + } + + err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error + if err != nil { + return nil, 0, err + } + + return m, totalRecords, nil +} + // GetOrderPrescriptionExportListSearch 获取处方列表-导出 func (r *OrderPrescriptionDao) GetOrderPrescriptionExportListSearch(req requests.OrderPrescriptionExportList) (m []*model.OrderPrescription, err error) { // 构建查询条件 diff --git a/api/router/router.go b/api/router/router.go index ff2aa68..9d73af4 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -2,13 +2,14 @@ package router import ( "fmt" - "github.com/gin-gonic/gin" "hospital-admin-api/api/controller" "hospital-admin-api/api/exception" "hospital-admin-api/api/middlewares" "hospital-admin-api/config" "hospital-admin-api/consts" "net/http" + + "github.com/gin-gonic/gin" ) // Init 初始化路由 @@ -529,6 +530,9 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 获取处方列表-分页 prescriptionGroup.GET("", api.OrderPrescription.GetOrderPrescriptionPage) + // 获取抄方的处方列表-分页 + prescriptionGroup.GET("/transfer", api.OrderPrescription.GetOrderPrescriptionTransferPage) + // 处方详情 prescriptionGroup.GET("/:order_prescription_id", api.OrderPrescription.GetOrderPrescription) } From 88d138f2c0ce72ede5e2d514fac418b2bb06c2d3 Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 16:25:20 +0800 Subject: [PATCH 15/57] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20user=5Fdoctor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dto/OrderPrescription.go | 2 +- api/dto/OrderProduct.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/dto/OrderPrescription.go b/api/dto/OrderPrescription.go index ede5962..fc80902 100644 --- a/api/dto/OrderPrescription.go +++ b/api/dto/OrderPrescription.go @@ -37,7 +37,7 @@ type OrderPrescriptionDto struct { OrderPrescriptionIcd string `json:"order_prescription_icd"` // 处方诊断疾病 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 OrderPrescriptionProduct []*OrderPrescriptionProductDto `json:"order_prescription_product"` // 处方商品 - UserDoctor *UserDoctorDto `json:"inquiry_doctor"` // 原始医生(问诊医生信息) + UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生(问诊医生信息) TransferUserDoctor *UserDoctorDto `json:"transfer_prescription_doctor"` // 接受抄方的医生(抄方处方医生信息) CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 diff --git a/api/dto/OrderProduct.go b/api/dto/OrderProduct.go index 53b60bc..417cbfb 100644 --- a/api/dto/OrderProduct.go +++ b/api/dto/OrderProduct.go @@ -56,7 +56,7 @@ type OrderProductDto struct { OrderProductRefund *OrderProductRefundDto `json:"order_product_refund"` // 退款数据 OrderProductItem []*OrderProductItemDto `json:"order_product_item"` // 商品数据 OrderProductLogistics *OrderProductLogisticsDto `json:"order_product_logistics"` // 物流数据 - UserDoctor *UserDoctorDto `json:"inquiry_doctor"` // 原始医生(问诊医生信息) + UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生(问诊医生信息) TransferUserDoctor *UserDoctorDto `json:"transfer_prescription_doctor"` // 接受抄方的医生(抄方处方医生信息) OrderPrescription *OrderPrescriptionDto `json:"order_prescription"` // 处方数据 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 From daa4ff7bff2996bd111c941c023b7ab676c57d44 Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 16:35:10 +0800 Subject: [PATCH 16/57] rizhi --- api/controller/orderProduct.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/api/controller/orderProduct.go b/api/controller/orderProduct.go index 61d8f1e..49281c6 100644 --- a/api/controller/orderProduct.go +++ b/api/controller/orderProduct.go @@ -1,7 +1,6 @@ package controller import ( - "github.com/gin-gonic/gin" "hospital-admin-api/api/dao" "hospital-admin-api/api/dto" "hospital-admin-api/api/requests" @@ -10,6 +9,9 @@ import ( "hospital-admin-api/global" "hospital-admin-api/utils" "strconv" + + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" ) type OrderProduct struct{} @@ -40,6 +42,14 @@ func (r *OrderProduct) GetOrderProductPage(c *gin.Context) { orderProductDao := dao.OrderProductDao{} orderProduct, total, err := orderProductDao.GetOrderProductPageSearch(req, req.Page, req.PageSize) + // 记录orderProduct数据到日志 + global.Logger.WithFields(logrus.Fields{ + "orderProduct": orderProduct, + "total": total, + "page": req.Page, + "pageSize": req.PageSize, + }).Info("获取药品订单列表数据") + if err != nil { responses.FailWithMessage(err.Error(), c) return From deef662a317ecf4cb79e1061288cc429ad3ab259 Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 16:40:20 +0800 Subject: [PATCH 17/57] 23 --- api/controller/orderProduct.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api/controller/orderProduct.go b/api/controller/orderProduct.go index 49281c6..c284bce 100644 --- a/api/controller/orderProduct.go +++ b/api/controller/orderProduct.go @@ -44,11 +44,11 @@ func (r *OrderProduct) GetOrderProductPage(c *gin.Context) { // 记录orderProduct数据到日志 global.Logger.WithFields(logrus.Fields{ - "orderProduct": orderProduct, - "total": total, - "page": req.Page, - "pageSize": req.PageSize, + "total": total, + "page": req.Page, + "pageSize": req.PageSize, }).Info("获取药品订单列表数据") + utils.LogJsonInfo("orderProduct数据详情", orderProduct) if err != nil { responses.FailWithMessage(err.Error(), c) From bdd3990fa6acb3b970b70d53e498392949fb954b Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 17:04:01 +0800 Subject: [PATCH 18/57] 23 --- api/dto/OrderProduct.go | 11 ++++++----- api/service/orderProduct.go | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/api/dto/OrderProduct.go b/api/dto/OrderProduct.go index 417cbfb..08d6cfb 100644 --- a/api/dto/OrderProduct.go +++ b/api/dto/OrderProduct.go @@ -56,7 +56,8 @@ type OrderProductDto struct { OrderProductRefund *OrderProductRefundDto `json:"order_product_refund"` // 退款数据 OrderProductItem []*OrderProductItemDto `json:"order_product_item"` // 商品数据 OrderProductLogistics *OrderProductLogisticsDto `json:"order_product_logistics"` // 物流数据 - UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生(问诊医生信息) + UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生 + InquiryDoctor *UserDoctorDto `json:"inquiry_doctor"` // 问诊医生信息 TransferUserDoctor *UserDoctorDto `json:"transfer_prescription_doctor"` // 接受抄方的医生(抄方处方医生信息) OrderPrescription *OrderPrescriptionDto `json:"order_prescription"` // 处方数据 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 @@ -181,9 +182,9 @@ func GetOrderProductListDto(m []*model.OrderProduct) []*OrderProductDto { response = response.LoadOrderInquiryAttr(v.OrderInquiry) } - // 加载原始医生信息 + // 加载原问诊医生信息 if v.OrderInquiry != nil && v.OrderInquiry.UserDoctor != nil { - response = response.LoadUserDoctor(v.OrderInquiry.UserDoctor) + response = response.LoadInquiryDoctor(v.OrderInquiry.UserDoctor) } // 加载接受抄方的医生信息 @@ -218,9 +219,9 @@ func (r *OrderProductDto) LoadDoctorName(m *model.UserDoctor) *OrderProductDto { } // LoadUserDoctor 加载问诊医生信息 -func (r *OrderProductDto) LoadUserDoctor(m *model.UserDoctor) *OrderProductDto { +func (r *OrderProductDto) LoadInquiryDoctor(m *model.UserDoctor) *OrderProductDto { if m != nil { - r.UserDoctor = GetUserDoctorDto(m) + r.InquiryDoctor = GetUserDoctorDto(m) } return r } diff --git a/api/service/orderProduct.go b/api/service/orderProduct.go index 1871fa6..09d4a7f 100644 --- a/api/service/orderProduct.go +++ b/api/service/orderProduct.go @@ -70,7 +70,7 @@ func (r *OrderProductService) GetOrderProduct(orderProductId int64) (g *dto.Orde // 加载原始医生信息 if orderProduct.OrderInquiry != nil && orderProduct.OrderInquiry.UserDoctor != nil { - g.LoadUserDoctor(orderProduct.OrderInquiry.UserDoctor) + g.LoadInquiryDoctor(orderProduct.OrderInquiry.UserDoctor) } // 加载接受抄方的医生信息 From 7a51cec28bbb405c5bef3c1397218b400c8da02c Mon Sep 17 00:00:00 2001 From: haomingming Date: Mon, 29 Dec 2025 17:10:42 +0800 Subject: [PATCH 19/57] 34 --- api/dto/OrderPrescription.go | 13 +++++++------ api/service/orderPrescription.go | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/api/dto/OrderPrescription.go b/api/dto/OrderPrescription.go index fc80902..52e5c85 100644 --- a/api/dto/OrderPrescription.go +++ b/api/dto/OrderPrescription.go @@ -37,7 +37,8 @@ type OrderPrescriptionDto struct { OrderPrescriptionIcd string `json:"order_prescription_icd"` // 处方诊断疾病 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 OrderPrescriptionProduct []*OrderPrescriptionProductDto `json:"order_prescription_product"` // 处方商品 - UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生(问诊医生信息) + UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生 + InquiryDoctor *UserDoctorDto `json:"inquiry_doctor"` // 问诊医生信息 TransferUserDoctor *UserDoctorDto `json:"transfer_prescription_doctor"` // 接受抄方的医生(抄方处方医生信息) CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 @@ -127,9 +128,9 @@ func GetOrderPrescriptionListDto(m []*model.OrderPrescription) []*OrderPrescript response = response.LoadOrderPrescriptionIcdString(v.OrderPrescriptionIcd) } - // 加载原始医生信息 + // 加载问诊医生信息 if v.OrderInquiry != nil && v.OrderInquiry.UserDoctor != nil { - response = response.LoadUserDoctor(v.OrderInquiry.UserDoctor) + response = response.LoadInquiryDoctor(v.OrderInquiry.UserDoctor) } // 加载接受抄方的医生信息 @@ -218,10 +219,10 @@ func (r *OrderPrescriptionDto) LoadOrderProductId(m *model.OrderProduct) *OrderP return r } -// LoadUserDoctor 加载原始医生信息 -func (r *OrderPrescriptionDto) LoadUserDoctor(m *model.UserDoctor) *OrderPrescriptionDto { +// LoadUserDoctor 加载问诊医生信息 +func (r *OrderPrescriptionDto) LoadInquiryDoctor(m *model.UserDoctor) *OrderPrescriptionDto { if m != nil { - r.UserDoctor = GetUserDoctorDto(m) + r.InquiryDoctor = GetUserDoctorDto(m) } return r } diff --git a/api/service/orderPrescription.go b/api/service/orderPrescription.go index 7a0bba2..1448114 100644 --- a/api/service/orderPrescription.go +++ b/api/service/orderPrescription.go @@ -84,7 +84,7 @@ func (r *OrderPrescriptionService) GetOrderPrescription(OrderPrescriptionId int6 // 加载原始医生信息 if orderPrescription.OrderInquiry != nil && orderPrescription.OrderInquiry.UserDoctor != nil { - g.LoadUserDoctor(orderPrescription.OrderInquiry.UserDoctor) + g.LoadInquiryDoctor(orderPrescription.OrderInquiry.UserDoctor) } // 加载接受抄方的医生信息 From beb791a4ce372c1c45c158471ae2b515491ab2b4 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 09:33:14 +0800 Subject: [PATCH 20/57] =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/export.go | 48 ++++++++++ api/dao/orderPrescription.go | 178 +++++++++++++++++++++++++++++++++++ api/router/router.go | 15 ++- 3 files changed, 238 insertions(+), 3 deletions(-) diff --git a/api/controller/export.go b/api/controller/export.go index 9a115da..1a4c558 100644 --- a/api/controller/export.go +++ b/api/controller/export.go @@ -499,6 +499,54 @@ func (r *Export) OrderProduct(c *gin.Context) { responses.OkWithData(ossAddress, c) } +// OrderPrescription 抄方的处方 +func (r *Export) OrderTransferPrescription(c *gin.Context) { + orderPrescriptionRequest := requests.OrderPrescriptionRequest{} + req := orderPrescriptionRequest.OrderPrescriptionExportList + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + // 获取数据 + orderPrescriptionDao := dao.OrderPrescriptionDao{} + orderPrescriptions, err := orderPrescriptionDao.GetOrderTransferPrescriptionExportListSearch(req) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 业务处理 + exportService := service.ExportService{} + ossAddress, err := exportService.OrderPrescription(orderPrescriptions) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 获取当前登陆用户id + userId := c.GetInt64("UserId") + if userId != 0 { + // 记录日志 + logExport := &model.LogExport{ + AdminUserId: userId, + ExportModule: "处方", + ExportFile: utils.RemoveOssDomain(ossAddress), + } + + logExportDao := dao.LogExportDao{} + _, _ = logExportDao.AddLogExportUnTransaction(logExport) + } + + responses.OkWithData(ossAddress, c) +} + // OrderPrescription 处方 func (r *Export) OrderPrescription(c *gin.Context) { orderPrescriptionRequest := requests.OrderPrescriptionRequest{} diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index e9cefc2..4cf4474 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -427,6 +427,184 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques return m, totalRecords, nil } + +// GetOrderPrescriptionExportListSearch 获取抄方的处方列表-导出 +func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req requests.OrderPrescriptionExportList) (m []*model.OrderPrescription, err error) { + + prescriptionTable := (&model.OrderPrescription{}).TableName() + inquiryTable := (&model.OrderInquiry{}).TableName() + + // 构建查询条件 + query := global.Db.Model(&model.OrderPrescription{}) + + // 关联问诊表,只查询TransferDoctorId不等于null的记录 + query = query.Joins("INNER JOIN "+inquiryTable+" ON "+prescriptionTable+".order_inquiry_id = "+inquiryTable+".order_inquiry_id"). + Where(inquiryTable+".transfer_doctor_id IS NOT NULL") + + // 患者表 + query = query.Preload("UserPatient", func(db *gorm.DB) *gorm.DB { + return db.Omit("open_id", "union_id", "wx_session_key") + }) + + // 用户表 + query = query.Preload("UserPatient.User", func(db *gorm.DB) *gorm.DB { + return db.Omit("user_password", "salt") + }) + + // 医生表 + query = query.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Omit("open_id", "union_id", "wx_session_key") + }) + + // 药师表 + query = query.Preload("UserPharmacist", func(db *gorm.DB) *gorm.DB { + return db.Omit("open_id", "union_id", "wx_session_key") + }) + + // 处方关联疾病表 + query = query.Preload("OrderPrescriptionIcd") + + // 患者家庭成员表 + query = query.Preload("PatientFamily") + + // 当前搜索数据 + if req.Type == 1 { + // 处方编号 + if req.PrescriptionCode != "" { + query = query.Where("prescription_code = ?", req.PrescriptionCode) + } + + // 医生名称 + if req.DoctorName != "" { + query = query.Where("doctor_name LIKE ?", "%"+req.DoctorName+"%") + } + + // 患者姓名-就诊人 + if req.PatientName != "" { + query = query.Where("patient_name LIKE ?", "%"+req.PatientName+"%") + } + + // 手机号-医生/患者/就诊人 + if req.Mobile != "" { + // 就诊人 + patientFamilySubQuery := global.Db.Model(&model.PatientFamily{}). + Select("family_id"). + Where("mobile = ?", req.Mobile) + + // 患者 + patientUserSubQuery := global.Db.Model(&model.User{}). + Select("user_id"). + Where("mobile = ?", req.Mobile) + + patientSubQuery := global.Db.Model(&model.UserPatient{}). + 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{}). + Select("doctor_id"). + Where(gorm.Expr("user_id IN (?)", doctorUserSubQuery)) + + query = query.Where("patient_id IN (?)", patientSubQuery).Or("doctor_id IN (?)", doctorSubQuery).Or("family_id IN (?)", patientFamilySubQuery) + } + + // 处方状态 + if req.PrescriptionStatus != nil { + query = query.Where("prescription_status = ?", req.PrescriptionStatus) + } + + // 药师审核状态 + if req.PharmacistAuditStatus != nil { + query = query.Where("pharmacist_audit_status = ?", req.PharmacistAuditStatus) + } + + // 问诊订单编号 + if req.InquiryNo != "" { + subQuery := global.Db.Model(&model.OrderInquiry{}). + Select("order_inquiry_id"). + Where("inquiry_no = ?", req.InquiryNo) + query = query.Where("order_inquiry_id IN (?)", subQuery) + } + + // 药品订单编号 + if req.OrderProductNo != "" { + subQuery := global.Db.Model(&model.OrderInquiry{}). + Select("order_prescription_id"). + Where("order_product_no = ?", req.OrderProductNo) + query = query.Where("order_prescription_id IN (?)", subQuery) + } + + // 药师审核时间 + if req.PharmacistVerifyTime != "" { + pharmacistVerifyTime := strings.Split(req.PharmacistVerifyTime, "&") + if len(pharmacistVerifyTime) == 2 { + startTime, _ := time.Parse("2006-01-02", pharmacistVerifyTime[0]) + endTime, _ := time.Parse("2006-01-02", pharmacistVerifyTime[1]) + + if startTime == endTime { + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) + } + + query = query.Where("pharmacist_verify_time BETWEEN ? AND ?", startTime, endTime) + } + } + + // 医生开具处方时间 + if req.DoctorCreatedTime != "" { + doctorCreatedTime := strings.Split(req.DoctorCreatedTime, "&") + if len(doctorCreatedTime) == 2 { + startTime, _ := time.Parse("2006-01-02", doctorCreatedTime[0]) + endTime, _ := time.Parse("2006-01-02", doctorCreatedTime[1]) + + if startTime == endTime { + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) + } + + query = query.Where("doctor_created_time BETWEEN ? AND ?", startTime, endTime) + } + } + + // 处方过期时间 + if req.ExpiredTime != "" { + expiredTime := strings.Split(req.ExpiredTime, "&") + if len(expiredTime) == 2 { + startTime, _ := time.Parse("2006-01-02", expiredTime[0]) + endTime, _ := time.Parse("2006-01-02", expiredTime[1]) + + if startTime == endTime { + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) + } + + query = query.Where("expired_time BETWEEN ? AND ?", startTime, endTime) + } + } + } + + // 当前选中数据 + if req.Type == 2 { + if req.Id == "" { + return nil, errors.New("未提供需导出数据编号") + } + + id := strings.Split(req.Id, ",") + query = query.Where("order_prescription_id IN (?)", id) + } + + // 排序 + query = query.Order("created_at desc") + + err = query.Find(&m).Error + if err != nil { + return nil, err + } + + return m, nil +} + // GetOrderPrescriptionExportListSearch 获取处方列表-导出 func (r *OrderPrescriptionDao) GetOrderPrescriptionExportListSearch(req requests.OrderPrescriptionExportList) (m []*model.OrderPrescription, err error) { // 构建查询条件 diff --git a/api/router/router.go b/api/router/router.go index 9d73af4..6150df0 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -530,11 +530,17 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 获取处方列表-分页 prescriptionGroup.GET("", api.OrderPrescription.GetOrderPrescriptionPage) - // 获取抄方的处方列表-分页 - prescriptionGroup.GET("/transfer", api.OrderPrescription.GetOrderPrescriptionTransferPage) - // 处方详情 prescriptionGroup.GET("/:order_prescription_id", api.OrderPrescription.GetOrderPrescription) + + prescriptionTransferGroup := adminGroup.Group("/transfer") + { + // 获取抄方的处方列表-分页 + prescriptionTransferGroup.GET("", api.OrderPrescription.GetOrderPrescriptionTransferPage) + + // 抄方的处方详情 + prescriptionTransferGroup.GET("/:order_prescription_id", api.OrderPrescription.GetOrderPrescription) + } } // 问诊管理 @@ -751,6 +757,9 @@ func privateRouter(r *gin.Engine, api controller.Api) { { // 处方 prescriptionGroup.POST("", api.Export.OrderPrescription) + + // 抄方的处方 + prescriptionGroup.POST("/transfer", api.Export.OrderTransferPrescription) } // 药品 From da819de61b8114dac5c47baa6657bf2c457f90b0 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 11:08:08 +0800 Subject: [PATCH 21/57] =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dao/doctorInquiryConfig.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/api/dao/doctorInquiryConfig.go b/api/dao/doctorInquiryConfig.go index 1898cdc..ec872e7 100644 --- a/api/dao/doctorInquiryConfig.go +++ b/api/dao/doctorInquiryConfig.go @@ -1,10 +1,11 @@ package dao import ( - "gorm.io/gorm" "hospital-admin-api/api/model" "hospital-admin-api/api/requests" "hospital-admin-api/global" + + "gorm.io/gorm" ) type DoctorInquiryConfigDao struct { @@ -39,7 +40,8 @@ func (r *DoctorInquiryConfigDao) DeleteDoctorInquiryConfig(tx *gorm.DB, maps int // EditDoctorInquiryConfigById 修改医生问诊配置-问诊配置id func (r *DoctorInquiryConfigDao) EditDoctorInquiryConfigById(tx *gorm.DB, inquiryConfigId int64, data interface{}) error { - err := tx.Model(&model.DoctorInquiryConfig{}).Where("inquiry_config_id = ?", inquiryConfigId).Updates(data).Error + // 使用Debug()打印执行的SQL + err := tx.Debug().Model(&model.DoctorInquiryConfig{}).Where("inquiry_config_id = ?", inquiryConfigId).Updates(data).Error if err != nil { return err } From 8ebd97e153ea56f9c47ba4b68b71d69ca9e38c09 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 11:13:02 +0800 Subject: [PATCH 22/57] =?UTF-8?q?=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/InquiryConfig.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 5b8519c..7f4a784 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -312,6 +312,15 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 doctorInquiryConfigData["inquiry_price"] = req.InquiryPrice } + fmt.Println(doctorInquiryConfigData) + fmt.Println(doctorInquiryConfig.InquiryConfigId) + fmt.Println(doctorInquiryConfig.DoctorId) + fmt.Println(doctorInquiryConfig.InquiryType) + fmt.Println(doctorInquiryConfig.InquiryMode) + fmt.Println(doctorInquiryConfig.IsEnable) + fmt.Println(doctorInquiryConfig.LastEnableMethod) + fmt.Println(doctorInquiryConfig.WorkNumDay) + fmt.Println(doctorInquiryConfig.InquiryPrice) if len(doctorInquiryConfigData) > 0 { err = doctorInquiryConfigDao.EditDoctorInquiryConfigById(tx, doctorInquiryConfig.InquiryConfigId, doctorInquiryConfigData) if err != nil { From a10fb588860c5d2751e1e911846e3d14d754725e Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 11:21:51 +0800 Subject: [PATCH 23/57] =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/InquiryConfig.go | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 7f4a784..334dc9f 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -3,15 +3,19 @@ package service import ( "errors" "fmt" - "gorm.io/gorm" "hospital-admin-api/api/dao" "hospital-admin-api/api/dto" "hospital-admin-api/api/model" "hospital-admin-api/api/requests" "hospital-admin-api/global" + "hospital-admin-api/utils" "strconv" "strings" "time" + + "gorm.io/gorm" + + "github.com/sirupsen/logrus" ) // InquiryConfigService 问诊配置 @@ -312,15 +316,19 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 doctorInquiryConfigData["inquiry_price"] = req.InquiryPrice } - fmt.Println(doctorInquiryConfigData) - fmt.Println(doctorInquiryConfig.InquiryConfigId) - fmt.Println(doctorInquiryConfig.DoctorId) - fmt.Println(doctorInquiryConfig.InquiryType) - fmt.Println(doctorInquiryConfig.InquiryMode) - fmt.Println(doctorInquiryConfig.IsEnable) - fmt.Println(doctorInquiryConfig.LastEnableMethod) - fmt.Println(doctorInquiryConfig.WorkNumDay) - fmt.Println(doctorInquiryConfig.InquiryPrice) + // 记录医生问诊配置数据到日志 + global.Logger.WithFields(logrus.Fields{ + "inquiry_config_id": doctorInquiryConfig.InquiryConfigId, + "doctor_id": doctorInquiryConfig.DoctorId, + "inquiry_type": doctorInquiryConfig.InquiryType, + "inquiry_mode": doctorInquiryConfig.InquiryMode, + "is_enable": doctorInquiryConfig.IsEnable, + "last_enable_method": doctorInquiryConfig.LastEnableMethod, + "work_num_day": doctorInquiryConfig.WorkNumDay, + "inquiry_price": doctorInquiryConfig.InquiryPrice, + }).Info("医生问诊配置信息") + utils.LogJsonInfo("医生问诊配置更新数据", doctorInquiryConfigData) + if len(doctorInquiryConfigData) > 0 { err = doctorInquiryConfigDao.EditDoctorInquiryConfigById(tx, doctorInquiryConfig.InquiryConfigId, doctorInquiryConfigData) if err != nil { From d94aa4465495075b9b7b09f5236ee290f4355bf7 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 11:27:10 +0800 Subject: [PATCH 24/57] =?UTF-8?q?=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/InquiryConfig.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 334dc9f..ac367b7 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -327,7 +327,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 "work_num_day": doctorInquiryConfig.WorkNumDay, "inquiry_price": doctorInquiryConfig.InquiryPrice, }).Info("医生问诊配置信息") - utils.LogJsonInfo("医生问诊配置更新数据", doctorInquiryConfigData) + utils.LogJsonErr("医生问诊配置更新数据", doctorInquiryConfigData) if len(doctorInquiryConfigData) > 0 { err = doctorInquiryConfigDao.EditDoctorInquiryConfigById(tx, doctorInquiryConfig.InquiryConfigId, doctorInquiryConfigData) From 9070e69a665f3e1703c3dbae5970c701668bea60 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 11:30:34 +0800 Subject: [PATCH 25/57] 12 --- api/dao/doctorInquiryConfig.go | 2 +- api/service/InquiryConfig.go | 13 ------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/api/dao/doctorInquiryConfig.go b/api/dao/doctorInquiryConfig.go index ec872e7..69413be 100644 --- a/api/dao/doctorInquiryConfig.go +++ b/api/dao/doctorInquiryConfig.go @@ -41,7 +41,7 @@ func (r *DoctorInquiryConfigDao) DeleteDoctorInquiryConfig(tx *gorm.DB, maps int // EditDoctorInquiryConfigById 修改医生问诊配置-问诊配置id func (r *DoctorInquiryConfigDao) EditDoctorInquiryConfigById(tx *gorm.DB, inquiryConfigId int64, data interface{}) error { // 使用Debug()打印执行的SQL - err := tx.Debug().Model(&model.DoctorInquiryConfig{}).Where("inquiry_config_id = ?", inquiryConfigId).Updates(data).Error + err := tx.Model(&model.DoctorInquiryConfig{}).Where("inquiry_config_id = ?", inquiryConfigId).Updates(data).Error if err != nil { return err } diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index ac367b7..b9c0eca 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -316,19 +316,6 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 doctorInquiryConfigData["inquiry_price"] = req.InquiryPrice } - // 记录医生问诊配置数据到日志 - global.Logger.WithFields(logrus.Fields{ - "inquiry_config_id": doctorInquiryConfig.InquiryConfigId, - "doctor_id": doctorInquiryConfig.DoctorId, - "inquiry_type": doctorInquiryConfig.InquiryType, - "inquiry_mode": doctorInquiryConfig.InquiryMode, - "is_enable": doctorInquiryConfig.IsEnable, - "last_enable_method": doctorInquiryConfig.LastEnableMethod, - "work_num_day": doctorInquiryConfig.WorkNumDay, - "inquiry_price": doctorInquiryConfig.InquiryPrice, - }).Info("医生问诊配置信息") - utils.LogJsonErr("医生问诊配置更新数据", doctorInquiryConfigData) - if len(doctorInquiryConfigData) > 0 { err = doctorInquiryConfigDao.EditDoctorInquiryConfigById(tx, doctorInquiryConfig.InquiryConfigId, doctorInquiryConfigData) if err != nil { From 1c29997b9a5bb7c78b092a1a180eb421c27a04b0 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 14:17:25 +0800 Subject: [PATCH 26/57] rw --- api/service/InquiryConfig.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index b9c0eca..504ecda 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -14,8 +14,6 @@ import ( "time" "gorm.io/gorm" - - "github.com/sirupsen/logrus" ) // InquiryConfigService 问诊配置 @@ -218,6 +216,8 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New(err.Error()) } + utils.LogJsonInfo("234", doctorInquiryConfig); + // 获取医生数据 userDoctorDao := dao.UserDoctorDao{} userDoctor, err := userDoctorDao.GetUserDoctorById(doctorInquiryConfig.DoctorId) @@ -291,6 +291,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } } + utils.LogJsonInfo("123", doctorInquiryConfig); // 开始事务 tx := global.Db.Begin() defer func() { From 86ef37905356ef9785d4b8f27e2839753aaa0524 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 14:21:53 +0800 Subject: [PATCH 27/57] f --- api/service/InquiryConfig.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 504ecda..d81b62c 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -249,11 +249,14 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("系统问诊配置错误") } + utils.LogJsonInfo("AAA", doctorInquiryConfig); + // 验证问诊数量 if req.WorkNumDay > systemInquiryConfig.MaxWorkNumDay { return false, errors.New("超出每日最大接诊数量") } + utils.LogJsonInfo("AAA1", doctorInquiryConfig); // 验证问诊价格-在线问诊 if doctorInquiryConfig.InquiryType == 1 { if req.InquiryPrice > systemInquiryConfig.MaxInquiryPrice || req.InquiryPrice < systemInquiryConfig.MinInquiryPrice { @@ -261,6 +264,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } } + utils.LogJsonInfo("AAA2", doctorInquiryConfig); // 验证问诊价格-快速问诊/问诊购药 if doctorInquiryConfig.InquiryType == 2 || doctorInquiryConfig.InquiryType == 4 { inquiryPrice := strconv.FormatFloat(req.InquiryPrice, 'f', -1, 64) @@ -268,7 +272,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("问诊价格填写错误") } } - + utils.LogJsonInfo("AAA3", doctorInquiryConfig); // 验证问诊价格-公益问诊 if doctorInquiryConfig.InquiryType == 3 { inquiryPrice := strconv.FormatFloat(req.InquiryPrice, 'f', -1, 64) @@ -276,21 +280,21 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("问诊价格填写错误") } } - + utils.LogJsonInfo("AAA4", doctorInquiryConfig); // 验证医生坐班时间 if doctorInquiryConfig.InquiryType == 2 || doctorInquiryConfig.InquiryType == 4 { if userDoctor.IsPlatformDeepCooperation == 1 && len(req.DoctorInquiryTime) <= 0 { return false, errors.New("请填写坐班时间") } } - + utils.LogJsonInfo("AAA5", doctorInquiryConfig); // 验证医生服务设置-疑难会诊 if doctorInquiryConfig.InquiryType == 1 && doctorInquiryConfig.InquiryMode == 6 { if req.DoctorInquiryConfigService == nil { return false, errors.New("请填写疑难会诊服务设置") } } - + utils.LogJsonInfo("AAA6", doctorInquiryConfig); utils.LogJsonInfo("123", doctorInquiryConfig); // 开始事务 tx := global.Db.Begin() From 7b2ef6e239f6f70e20d2099e6a1e626b67f04345 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 14:24:25 +0800 Subject: [PATCH 28/57] afji --- api/service/InquiryConfig.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index d81b62c..66ee989 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -303,7 +303,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 tx.Rollback() } }() - + utils.LogJsonInfo("AAA61", doctorInquiryConfig); // 修改医生问诊配置 doctorInquiryConfigData := make(map[string]interface{}) if req.IsEnable != doctorInquiryConfig.IsEnable { @@ -312,15 +312,15 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 doctorInquiryConfigData["last_enable_method"] = 2 } } - + utils.LogJsonInfo("AAA62", doctorInquiryConfig); if req.WorkNumDay != doctorInquiryConfig.WorkNumDay { doctorInquiryConfigData["work_num_day"] = req.WorkNumDay } - + utils.LogJsonInfo("AAA63", doctorInquiryConfig); if req.InquiryPrice != *doctorInquiryConfig.InquiryPrice { doctorInquiryConfigData["inquiry_price"] = req.InquiryPrice } - + utils.LogJsonInfo("AAA64", doctorInquiryConfig); if len(doctorInquiryConfigData) > 0 { err = doctorInquiryConfigDao.EditDoctorInquiryConfigById(tx, doctorInquiryConfig.InquiryConfigId, doctorInquiryConfigData) if err != nil { @@ -328,10 +328,12 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("修改失败") } } - + utils.LogJsonInfo("AAA65", doctorInquiryConfig); // 处理医生问诊时间 if req.InquiryType == 2 || req.InquiryType == 4 { + utils.LogJsonInfo("AAA6E", doctorInquiryConfig); if userDoctor.IsPlatformDeepCooperation == 1 && len(req.DoctorInquiryTime) > 0 { + utils.LogJsonInfo("AAA6W", doctorInquiryConfig); // 获取医生问诊时间-获取一条即可,用以区分添加/删除 doctorInquiryTimeDao := dao.DoctorInquiryTimeDao{} @@ -381,9 +383,10 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } } } - + utils.LogJsonInfo("AAA6", doctorInquiryConfig); // 修改医生服务设置-疑难会诊 if doctorInquiryConfig.InquiryType == 1 && doctorInquiryConfig.InquiryMode == 6 { + utils.LogJsonInfo("AAA6Q", doctorInquiryConfig); // 获取医生服务设置-疑难会诊 doctorInquiryConfigServiceDao := dao.DoctorInquiryConfigServiceDao{} @@ -417,9 +420,9 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("修改失败") } } - + utils.LogJsonInfo("AAA6A", doctorInquiryConfig); } - + utils.LogJsonInfo("AAA6B", doctorInquiryConfig); tx.Commit() return true, nil } From 33372af1fc40da47f06763e0ca69e30c59ad5b54 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 14:32:31 +0800 Subject: [PATCH 29/57] we --- api/service/InquiryConfig.go | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 66ee989..4966361 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -216,8 +216,6 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New(err.Error()) } - utils.LogJsonInfo("234", doctorInquiryConfig); - // 获取医生数据 userDoctorDao := dao.UserDoctorDao{} userDoctor, err := userDoctorDao.GetUserDoctorById(doctorInquiryConfig.DoctorId) @@ -249,14 +247,11 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("系统问诊配置错误") } - utils.LogJsonInfo("AAA", doctorInquiryConfig); - // 验证问诊数量 if req.WorkNumDay > systemInquiryConfig.MaxWorkNumDay { return false, errors.New("超出每日最大接诊数量") } - utils.LogJsonInfo("AAA1", doctorInquiryConfig); // 验证问诊价格-在线问诊 if doctorInquiryConfig.InquiryType == 1 { if req.InquiryPrice > systemInquiryConfig.MaxInquiryPrice || req.InquiryPrice < systemInquiryConfig.MinInquiryPrice { @@ -264,7 +259,6 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } } - utils.LogJsonInfo("AAA2", doctorInquiryConfig); // 验证问诊价格-快速问诊/问诊购药 if doctorInquiryConfig.InquiryType == 2 || doctorInquiryConfig.InquiryType == 4 { inquiryPrice := strconv.FormatFloat(req.InquiryPrice, 'f', -1, 64) @@ -272,7 +266,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("问诊价格填写错误") } } - utils.LogJsonInfo("AAA3", doctorInquiryConfig); + // 验证问诊价格-公益问诊 if doctorInquiryConfig.InquiryType == 3 { inquiryPrice := strconv.FormatFloat(req.InquiryPrice, 'f', -1, 64) @@ -280,22 +274,21 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("问诊价格填写错误") } } - utils.LogJsonInfo("AAA4", doctorInquiryConfig); + // 验证医生坐班时间 if doctorInquiryConfig.InquiryType == 2 || doctorInquiryConfig.InquiryType == 4 { if userDoctor.IsPlatformDeepCooperation == 1 && len(req.DoctorInquiryTime) <= 0 { return false, errors.New("请填写坐班时间") } } - utils.LogJsonInfo("AAA5", doctorInquiryConfig); + // 验证医生服务设置-疑难会诊 if doctorInquiryConfig.InquiryType == 1 && doctorInquiryConfig.InquiryMode == 6 { if req.DoctorInquiryConfigService == nil { return false, errors.New("请填写疑难会诊服务设置") } } - utils.LogJsonInfo("AAA6", doctorInquiryConfig); - utils.LogJsonInfo("123", doctorInquiryConfig); + // 开始事务 tx := global.Db.Begin() defer func() { @@ -303,7 +296,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 tx.Rollback() } }() - utils.LogJsonInfo("AAA61", doctorInquiryConfig); + // 修改医生问诊配置 doctorInquiryConfigData := make(map[string]interface{}) if req.IsEnable != doctorInquiryConfig.IsEnable { @@ -312,15 +305,15 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 doctorInquiryConfigData["last_enable_method"] = 2 } } - utils.LogJsonInfo("AAA62", doctorInquiryConfig); + if req.WorkNumDay != doctorInquiryConfig.WorkNumDay { doctorInquiryConfigData["work_num_day"] = req.WorkNumDay } - utils.LogJsonInfo("AAA63", doctorInquiryConfig); + if req.InquiryPrice != *doctorInquiryConfig.InquiryPrice { doctorInquiryConfigData["inquiry_price"] = req.InquiryPrice } - utils.LogJsonInfo("AAA64", doctorInquiryConfig); + if len(doctorInquiryConfigData) > 0 { err = doctorInquiryConfigDao.EditDoctorInquiryConfigById(tx, doctorInquiryConfig.InquiryConfigId, doctorInquiryConfigData) if err != nil { @@ -328,12 +321,10 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("修改失败") } } - utils.LogJsonInfo("AAA65", doctorInquiryConfig); + // 处理医生问诊时间 if req.InquiryType == 2 || req.InquiryType == 4 { - utils.LogJsonInfo("AAA6E", doctorInquiryConfig); if userDoctor.IsPlatformDeepCooperation == 1 && len(req.DoctorInquiryTime) > 0 { - utils.LogJsonInfo("AAA6W", doctorInquiryConfig); // 获取医生问诊时间-获取一条即可,用以区分添加/删除 doctorInquiryTimeDao := dao.DoctorInquiryTimeDao{} @@ -383,10 +374,8 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } } } - utils.LogJsonInfo("AAA6", doctorInquiryConfig); // 修改医生服务设置-疑难会诊 if doctorInquiryConfig.InquiryType == 1 && doctorInquiryConfig.InquiryMode == 6 { - utils.LogJsonInfo("AAA6Q", doctorInquiryConfig); // 获取医生服务设置-疑难会诊 doctorInquiryConfigServiceDao := dao.DoctorInquiryConfigServiceDao{} @@ -420,9 +409,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 return false, errors.New("修改失败") } } - utils.LogJsonInfo("AAA6A", doctorInquiryConfig); } - utils.LogJsonInfo("AAA6B", doctorInquiryConfig); tx.Commit() return true, nil } From f5d9cf462ebd0507166200c518b595c8130e47da Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 14:35:40 +0800 Subject: [PATCH 30/57] 123 --- api/service/InquiryConfig.go | 1 - 1 file changed, 1 deletion(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 4966361..e65b044 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -8,7 +8,6 @@ import ( "hospital-admin-api/api/model" "hospital-admin-api/api/requests" "hospital-admin-api/global" - "hospital-admin-api/utils" "strconv" "strings" "time" From 0ee06842c6411897868c8509c54c9978c1d59a2d Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 14:42:38 +0800 Subject: [PATCH 31/57] 2 --- api/router/router.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/router/router.go b/api/router/router.go index 6150df0..ae43c68 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -533,7 +533,7 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 处方详情 prescriptionGroup.GET("/:order_prescription_id", api.OrderPrescription.GetOrderPrescription) - prescriptionTransferGroup := adminGroup.Group("/transfer") + prescriptionTransferGroup := prescriptionGroup.Group("/transfer") { // 获取抄方的处方列表-分页 prescriptionTransferGroup.GET("", api.OrderPrescription.GetOrderPrescriptionTransferPage) From 773e3bdc430fbfe7e5bf34bb75ef76a247807e29 Mon Sep 17 00:00:00 2001 From: haomingming Date: Wed, 31 Dec 2025 15:11:18 +0800 Subject: [PATCH 32/57] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=8A=A0=E8=A7=92?= =?UTF-8?q?=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dto/Admin.go | 1 + api/service/admin.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/api/dto/Admin.go b/api/dto/Admin.go index abe7eaf..fad8bac 100644 --- a/api/dto/Admin.go +++ b/api/dto/Admin.go @@ -8,6 +8,7 @@ type Login struct { NickName string `json:"nick_name"` // 昵称 Avatar string `json:"avatar"` // 头像 Token string `json:"token"` // 用户名 + RoleName string `json:"role_name"` // 角色名 } // GetLoginFullAvatar 返回带有指定字符串的头像路径 diff --git a/api/service/admin.go b/api/service/admin.go index c51ca63..a230c2c 100644 --- a/api/service/admin.go +++ b/api/service/admin.go @@ -42,6 +42,9 @@ func (b *AdminService) Login(LoginRequest requests.Login) (*dto.Login, error) { return nil, errors.New("您的账号已被禁用,请联系管理员处理") } + roleDao := dao.AdminRoleDao{} + adminRole, err := roleDao.GetAdminRoleFirstById(adminUser.RoleID) + token := &utils.Token{ UserId: strconv.FormatInt(adminUser.UserID, 10), RoleId: strconv.FormatInt(adminUser.RoleID, 10), @@ -60,6 +63,7 @@ func (b *AdminService) Login(LoginRequest requests.Login) (*dto.Login, error) { NickName: adminUser.NickName, Avatar: adminUser.Avatar, Token: jwt, + RoleName: adminRole.RoleName, } result.GetLoginFullAvatar() From 49fc42221857c76f6d5778e525e8930da9950b2d Mon Sep 17 00:00:00 2001 From: haomingming Date: Sun, 4 Jan 2026 09:37:44 +0800 Subject: [PATCH 33/57] =?UTF-8?q?=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extend/prescription/prescription.go | 74 +++++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 9 deletions(-) diff --git a/extend/prescription/prescription.go b/extend/prescription/prescription.go index 4a2b1a1..415bc91 100644 --- a/extend/prescription/prescription.go +++ b/extend/prescription/prescription.go @@ -127,6 +127,35 @@ type reportPreResponse struct { ResultDesc string `json:"resultDesc"` // 描述 } +// UnmarshalJSON 自定义反序列化,处理 resultCode 可能是数字或字符串的情况 +func (r *reportPreResponse) UnmarshalJSON(data []byte) error { + // 使用临时结构体来处理可能的不同类型 + var temp struct { + ResultCode interface{} `json:"resultCode"` + ResultDesc string `json:"resultDesc"` + } + + if err := json.Unmarshal(data, &temp); err != nil { + return err + } + + // 处理 ResultCode,可能是数字或字符串 + switch v := temp.ResultCode.(type) { + case float64: + // 如果是数字,转换为字符串 + r.ResultCode = fmt.Sprintf("%.0f", v) + case int: + r.ResultCode = fmt.Sprintf("%d", v) + case string: + r.ResultCode = v + default: + r.ResultCode = fmt.Sprintf("%v", v) + } + + r.ResultDesc = temp.ResultDesc + return nil +} + // 获取商品库存返回数据 type getProdStockResponse struct { ResultCode string `json:"resultCode"` // 操作编码 @@ -289,20 +318,25 @@ func NoticePreOrderCancel(orderNo string) (bool, error) { func (r ReportPreRequest) ReportPre() (bool, error) { jsonData, err := json.Marshal(r) if err != nil { + utils.LogJsonErr("上报处方平台-序列化请求参数失败", err) return false, err } - utils.LogJsonInfo("上报处方平台:", jsonData) - // 准备请求体 requestBody := bytes.NewBuffer(jsonData) // 设置请求 URL url := config.C.Pre.PrePlatAppUrl + "v1/preOrder/receivePreOrder" + // 打印请求信息 + utils.LogJsonInfo("上报处方平台-请求URL", url) + utils.LogJsonInfo("上报处方平台-请求参数", r) + utils.LogJsonInfo("上报处方平台-请求体", requestBody.String()) + // 创建 POST 请求 req, err := http.NewRequest("POST", url, requestBody) if err != nil { + utils.LogJsonErr("上报处方平台-创建请求失败", err) return false, err } @@ -311,8 +345,10 @@ func (r ReportPreRequest) ReportPre() (bool, error) { token, _ := global.Redis.Get(context.Background(), "prescription_token").Result() if token == "" { + utils.LogJsonInfo("上报处方平台-缓存中无token,重新获取", nil) token, err = GetToken() if err != nil { + utils.LogJsonErr("上报处方平台-获取token失败", err) return false, err } } @@ -323,6 +359,7 @@ func (r ReportPreRequest) ReportPre() (bool, error) { client := &http.Client{} resp, err := client.Do(req) if err != nil { + utils.LogJsonErr("上报处方平台-发送请求失败", err) return false, err } @@ -330,24 +367,43 @@ func (r ReportPreRequest) ReportPre() (bool, error) { _ = Body.Close() }(resp.Body) - // 检查响应状态码 - if resp.StatusCode != 200 { - return false, errors.New("返回数据错误") - } - - var response reportPreResponse - err = json.NewDecoder(resp.Body).Decode(&response) + // 读取响应体原始内容(用于日志) + responseBodyBytes, err := io.ReadAll(resp.Body) if err != nil { + utils.LogJsonErr("上报处方平台-读取响应体失败", err) return false, err } + // 打印响应状态码和原始响应内容 + utils.LogJsonInfo("上报处方平台-响应状态码", fmt.Sprintf("statusCode: %d", resp.StatusCode)) + utils.LogJsonInfo("上报处方平台-响应体原始内容", string(responseBodyBytes)) + + // 检查响应状态码 + if resp.StatusCode != 200 { + utils.LogJsonErr("上报处方平台-响应状态码错误", fmt.Sprintf("statusCode: %d, responseBody: %s", resp.StatusCode, string(responseBodyBytes))) + return false, errors.New("返回数据错误") + } + + // 解析响应数据 + var response reportPreResponse + err = json.Unmarshal(responseBodyBytes, &response) + if err != nil { + utils.LogJsonErr("上报处方平台-解析响应数据失败", fmt.Sprintf("error: %v, responseBody: %s", err, string(responseBodyBytes))) + return false, err + } + + // 打印解析后的响应数据 + utils.LogJsonInfo("上报处方平台-解析后的响应数据", response) + if response.ResultCode != "1000" { + utils.LogJsonErr("上报处方平台-业务处理失败", response) if response.ResultDesc != "" { return false, errors.New(response.ResultDesc) } return false, errors.New("上报处方平台失败") } + utils.LogJsonInfo("上报处方平台-成功", response) return true, nil } From 75c1575830dc9c342af4ba1bb1276a95a3a97984 Mon Sep 17 00:00:00 2001 From: haomingming Date: Sun, 4 Jan 2026 15:52:07 +0800 Subject: [PATCH 34/57] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/orderProduct.go | 8 -------- api/dto/OrderProduct.go | 21 +++++++++++++++++++++ api/service/orderProduct.go | 5 +++++ 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/api/controller/orderProduct.go b/api/controller/orderProduct.go index c284bce..b22d532 100644 --- a/api/controller/orderProduct.go +++ b/api/controller/orderProduct.go @@ -42,14 +42,6 @@ func (r *OrderProduct) GetOrderProductPage(c *gin.Context) { orderProductDao := dao.OrderProductDao{} orderProduct, total, err := orderProductDao.GetOrderProductPageSearch(req, req.Page, req.PageSize) - // 记录orderProduct数据到日志 - global.Logger.WithFields(logrus.Fields{ - "total": total, - "page": req.Page, - "pageSize": req.PageSize, - }).Info("获取药品订单列表数据") - utils.LogJsonInfo("orderProduct数据详情", orderProduct) - if err != nil { responses.FailWithMessage(err.Error(), c) return diff --git a/api/dto/OrderProduct.go b/api/dto/OrderProduct.go index 08d6cfb..23ecd97 100644 --- a/api/dto/OrderProduct.go +++ b/api/dto/OrderProduct.go @@ -59,6 +59,7 @@ type OrderProductDto struct { UserDoctor *UserDoctorDto `json:"user_doctor"` // 原始医生 InquiryDoctor *UserDoctorDto `json:"inquiry_doctor"` // 问诊医生信息 TransferUserDoctor *UserDoctorDto `json:"transfer_prescription_doctor"` // 接受抄方的医生(抄方处方医生信息) + IsTransferOrder int `json:"is_transfer_order"` // 是否为抄方订单 OrderPrescription *OrderPrescriptionDto `json:"order_prescription"` // 处方数据 OrderInquiryCase *OrderInquiryCaseDto `json:"order_inquiry_case"` // 问诊病例 OrderProductCoupon *OrderProductCouponDto `json:"order_product_coupon"` // 优惠卷 @@ -187,6 +188,11 @@ func GetOrderProductListDto(m []*model.OrderProduct) []*OrderProductDto { response = response.LoadInquiryDoctor(v.OrderInquiry.UserDoctor) } + //加载问诊类型 + if v.OrderInquiry != nil && v.OrderInquiry.UserDoctor != nil && v.OrderInquiry.TransferUserDoctor != nil { + response = response.LoadIsTransferOrder(v.OrderInquiry.UserDoctor, v.OrderInquiry.TransferUserDoctor) + } + // 加载接受抄方的医生信息 if v.OrderInquiry != nil && v.OrderInquiry.TransferUserDoctor != nil { response = response.LoadTransferUserDoctor(v.OrderInquiry.TransferUserDoctor) @@ -218,6 +224,7 @@ func (r *OrderProductDto) LoadDoctorName(m *model.UserDoctor) *OrderProductDto { return r } + // LoadUserDoctor 加载问诊医生信息 func (r *OrderProductDto) LoadInquiryDoctor(m *model.UserDoctor) *OrderProductDto { if m != nil { @@ -226,6 +233,20 @@ func (r *OrderProductDto) LoadInquiryDoctor(m *model.UserDoctor) *OrderProductDt return r } +// LoadUserDoctor 加载问诊类型 +func (r *OrderProductDto) LoadIsTransferOrder(m *model.UserDoctor, n *model.UserDoctor) *OrderProductDto { + if m != nil && n != nil { + if(int(m.DoctorId) == int(n.DoctorId)){ + r.IsTransferOrder = 1 + }else{ + r.IsTransferOrder = 0 + } + }else{ + r.IsTransferOrder = 0 + } + return r +} + // LoadTransferUserDoctor 加载接受抄方的医生信息 func (r *OrderProductDto) LoadTransferUserDoctor(m *model.UserDoctor) *OrderProductDto { if m != nil { diff --git a/api/service/orderProduct.go b/api/service/orderProduct.go index 09d4a7f..3d9c303 100644 --- a/api/service/orderProduct.go +++ b/api/service/orderProduct.go @@ -81,6 +81,11 @@ func (r *OrderProductService) GetOrderProduct(orderProductId int64) (g *dto.Orde // 加载问诊病例 g.LoadOrderInquiryCase(orderInquiryCase) + // 加载问诊类型 + if orderProduct.OrderInquiry != nil && orderProduct.OrderInquiry.UserDoctor != nil && orderProduct.OrderInquiry.TransferUserDoctor != nil{ + g.LoadIsTransferOrder(orderProduct.OrderInquiry.UserDoctor, orderProduct.OrderInquiry.TransferUserDoctor) + } + // 加载处方数据 g.LoadOrderPrescription(orderPrescription) From e3111beda803369d3ea90f036db01f7f13255f0e Mon Sep 17 00:00:00 2001 From: haomingming Date: Sun, 4 Jan 2026 15:53:47 +0800 Subject: [PATCH 35/57] 1 --- api/controller/orderProduct.go | 1 - 1 file changed, 1 deletion(-) diff --git a/api/controller/orderProduct.go b/api/controller/orderProduct.go index b22d532..0b3cfed 100644 --- a/api/controller/orderProduct.go +++ b/api/controller/orderProduct.go @@ -11,7 +11,6 @@ import ( "strconv" "github.com/gin-gonic/gin" - "github.com/sirupsen/logrus" ) type OrderProduct struct{} From 18a2ce1dde16ec9e250f6bae653f44bbec0d01fb Mon Sep 17 00:00:00 2001 From: haomingming Date: Sun, 4 Jan 2026 15:57:30 +0800 Subject: [PATCH 36/57] d --- api/dto/OrderProduct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/dto/OrderProduct.go b/api/dto/OrderProduct.go index 23ecd97..5a5c951 100644 --- a/api/dto/OrderProduct.go +++ b/api/dto/OrderProduct.go @@ -236,7 +236,7 @@ func (r *OrderProductDto) LoadInquiryDoctor(m *model.UserDoctor) *OrderProductDt // LoadUserDoctor 加载问诊类型 func (r *OrderProductDto) LoadIsTransferOrder(m *model.UserDoctor, n *model.UserDoctor) *OrderProductDto { if m != nil && n != nil { - if(int(m.DoctorId) == int(n.DoctorId)){ + if(int(m.DoctorId) != int(n.DoctorId)){ r.IsTransferOrder = 1 }else{ r.IsTransferOrder = 0 From ed72e480f1665d27fdd2d15b92a44cbd4e057a79 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 13:44:03 +0800 Subject: [PATCH 37/57] 3 --- api/controller/userDoctor.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/controller/userDoctor.go b/api/controller/userDoctor.go index d246660..d5590f0 100644 --- a/api/controller/userDoctor.go +++ b/api/controller/userDoctor.go @@ -49,7 +49,8 @@ func (r *UserDoctor) GetUserDoctorPage(c *gin.Context) { if systemConfig.IsAnnualReview == 1 { // 后台用户id adminUserId := c.GetInt64("UserId") - if adminUserId == 1845704393354121216 { + // 正式lixiumei user_id 测试 lixiumei user_id + if adminUserId == 1845704393354121216 || adminUserId == 1732273543535661056 { status := 1 req.GetUserDoctorPage.MultiPointStatus = &status } From 542a8f71ad43f3edaa8da5f0dd12f7cb3737a8ef Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 14:32:43 +0800 Subject: [PATCH 38/57] =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dao/orderPrescription.go | 31 ++++++++++++++--------- api/dao/orderProduct.go | 49 ++++++++++++++++++++++++++++++------ api/requests/orderProduct.go | 2 ++ 3 files changed, 63 insertions(+), 19 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 4cf4474..81df4d1 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -187,7 +187,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionPageSearch(req requests.GetOr // 药品订单编号 if req.OrderProductNo != "" { - subQuery := global.Db.Model(&model.OrderInquiry{}). + subQuery := global.Db.Model(&model.OrderProduct{}). Select("order_prescription_id"). Where("order_product_no = ?", req.OrderProductNo) query = query.Where("order_prescription_id IN (?)", subQuery) @@ -259,6 +259,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques var totalRecords int64 prescriptionTable := (&model.OrderPrescription{}).TableName() inquiryTable := (&model.OrderInquiry{}).TableName() + doctorTable := (&model.UserDoctor{}).TableName() // 构建查询条件 query := global.Db.Model(&model.OrderPrescription{}) @@ -267,6 +268,9 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques query = query.Joins("INNER JOIN "+inquiryTable+" ON "+prescriptionTable+".order_inquiry_id = "+inquiryTable+".order_inquiry_id"). Where(inquiryTable+".transfer_doctor_id IS NOT NULL") + // 关联抄方医生表 + query = query.Joins("LEFT JOIN " + doctorTable + " ON " + inquiryTable + ".transfer_doctor_id = " + doctorTable + ".doctor_id") + // 患者表 query = query.Preload("UserPatient", func(db *gorm.DB) *gorm.DB { return db.Omit("open_id", "union_id", "wx_session_key") @@ -302,9 +306,9 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques query = query.Where(prescriptionTable+".prescription_code = ?", req.PrescriptionCode) } - // 医生名称 + // 医生名称 - 查询抄方医生名称 if req.DoctorName != "" { - query = query.Where(prescriptionTable+".doctor_name LIKE ?", "%"+req.DoctorName+"%") + query = query.Where(doctorTable+".user_name LIKE ?", "%"+req.DoctorName+"%") } // 患者姓名-就诊人 @@ -312,7 +316,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques query = query.Where(prescriptionTable+".patient_name LIKE ?", "%"+req.PatientName+"%") } - // 手机号-医生/患者/就诊人 + // 手机号-医生/患者/就诊人(医生部分改为抄方医生) if req.Mobile != "" { // 就诊人 patientFamilySubQuery := global.Db.Model(&model.PatientFamily{}). @@ -328,16 +332,19 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques Select("patient_id"). Where(gorm.Expr("user_id IN (?)", patientUserSubQuery)) - // 医生 - doctorUserSubQuery := global.Db.Model(&model.User{}). + // 抄方医生:通过手机号找到 user_id -> doctor_id(抄方医生) + transferDoctorUserSubQuery := global.Db.Model(&model.User{}). Select("user_id"). Where("mobile = ?", req.Mobile) - doctorSubQuery := global.Db.Model(&model.UserDoctor{}). + transferDoctorSubQuery := global.Db.Model(&model.UserDoctor{}). Select("doctor_id"). - Where(gorm.Expr("user_id IN (?)", doctorUserSubQuery)) + Where(gorm.Expr("user_id IN (?)", transferDoctorUserSubQuery)) - query = query.Where(prescriptionTable+".patient_id IN (?)", patientSubQuery).Or(prescriptionTable+".doctor_id IN (?)", doctorSubQuery).Or(prescriptionTable+".family_id IN (?)", patientFamilySubQuery) + // 使用 OR 条件:患者匹配 OR 抄方医生匹配 OR 就诊人匹配 + query = query.Where(prescriptionTable+".patient_id IN (?)", patientSubQuery). + Or(inquiryTable+".transfer_doctor_id IN (?)", transferDoctorSubQuery). + Or(prescriptionTable+".family_id IN (?)", patientFamilySubQuery) } // 处方状态 @@ -360,7 +367,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques // 药品订单编号 if req.OrderProductNo != "" { - subQuery := global.Db.Model(&model.OrderInquiry{}). + subQuery := global.Db.Model(&model.OrderProduct{}). Select("order_prescription_id"). Where("order_product_no = ?", req.OrderProductNo) query = query.Where(prescriptionTable+".order_prescription_id IN (?)", subQuery) @@ -532,7 +539,7 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req // 药品订单编号 if req.OrderProductNo != "" { - subQuery := global.Db.Model(&model.OrderInquiry{}). + subQuery := global.Db.Model(&model.OrderProduct{}). Select("order_prescription_id"). Where("order_product_no = ?", req.OrderProductNo) query = query.Where("order_prescription_id IN (?)", subQuery) @@ -701,7 +708,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionExportListSearch(req requests // 药品订单编号 if req.OrderProductNo != "" { - subQuery := global.Db.Model(&model.OrderInquiry{}). + subQuery := global.Db.Model(&model.OrderProduct{}). Select("order_prescription_id"). Where("order_product_no = ?", req.OrderProductNo) query = query.Where("order_prescription_id IN (?)", subQuery) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index b4e6aa6..7fb6350 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -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)) } // 排序 diff --git a/api/requests/orderProduct.go b/api/requests/orderProduct.go index 272fb75..a784e72 100644 --- a/api/requests/orderProduct.go +++ b/api/requests/orderProduct.go @@ -33,6 +33,8 @@ type GetOrderProductPage struct { Mobile string `json:"mobile" form:"mobile" label:"手机号-医生/患者"` ProductName string `json:"product_name" form:"product_name" label:"药品名称"` CommonName string `json:"common_name" form:"common_name" label:"药品通用名"` + PrescriptionCode string `json:"prescription_code" form:"prescription_code" label:"处方编号"` + } // CancelOrderProduct 取消药品订单 From efc60d12445f3cbf7382ae2430181fe363e3629c Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 14:45:17 +0800 Subject: [PATCH 39/57] 12 --- api/dao/orderProduct.go | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index 7fb6350..c408bf0 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -2,13 +2,14 @@ package dao import ( "errors" - "gorm.io/gorm" - "gorm.io/gorm/clause" "hospital-admin-api/api/model" "hospital-admin-api/api/requests" "hospital-admin-api/global" "strings" "time" + + "gorm.io/gorm" + "gorm.io/gorm/clause" ) type OrderProductDao struct { @@ -148,8 +149,11 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct 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)) + // 使用闭包函数确保 OR 条件正确分组 + query = query.Where(func(db *gorm.DB) *gorm.DB { + return db.Where(gorm.Expr("doctor_id IN (?)", originalDoctorSubQuery)). + Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) + }) } // 处方 @@ -206,8 +210,8 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct // 处方编号 if req.PrescriptionCode != "" { query = query.Where("prescription_code = ?", req.PrescriptionCode) - } - + } + // 订单编号 if req.OrderProductNo != "" { query = query.Where("order_product_no = ?", req.OrderProductNo) @@ -373,9 +377,12 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct 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)) + // 使用闭包函数确保 OR 条件正确分组 + query = query.Where(func(db *gorm.DB) *gorm.DB { + return db.Where("patient_id IN (?)", patientSubQuery). + Or("doctor_id IN (?)", originalDoctorSubQuery). + Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) + }) } // 排序 From 89dad42646dffe76acf2d30f7b325269c533fae4 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 14:48:58 +0800 Subject: [PATCH 40/57] 3 --- api/dao/orderPrescription.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 81df4d1..e45c315 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -260,6 +260,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques prescriptionTable := (&model.OrderPrescription{}).TableName() inquiryTable := (&model.OrderInquiry{}).TableName() doctorTable := (&model.UserDoctor{}).TableName() + userTable := (&model.User{}).TableName() // 新增 // 构建查询条件 query := global.Db.Model(&model.OrderPrescription{}) @@ -308,7 +309,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques // 医生名称 - 查询抄方医生名称 if req.DoctorName != "" { - query = query.Where(doctorTable+".user_name LIKE ?", "%"+req.DoctorName+"%") + query = query.Where(userTable+".user_name LIKE ?", "%"+req.DoctorName+"%") } // 患者姓名-就诊人 From 7fc14a3642fc27e4224af35f863dfba3f45c1ac1 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 14:51:28 +0800 Subject: [PATCH 41/57] 4 --- api/dao/orderProduct.go | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index c408bf0..2f54130 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -149,11 +149,12 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct Where(gorm.Expr("transfer_doctor_id IN (?)", transferDoctorSubQuery)) // 使用 OR 条件:原医生匹配 OR 抄方医生匹配 - // 使用闭包函数确保 OR 条件正确分组 - query = query.Where(func(db *gorm.DB) *gorm.DB { - return db.Where(gorm.Expr("doctor_id IN (?)", originalDoctorSubQuery)). - Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) - }) + // 通过嵌套 Where 子查询把 OR 条件包在一组括号里,避免影响其它条件 + orCond := global.Db. + Where(gorm.Expr("doctor_id IN (?)", originalDoctorSubQuery)). + Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) + + query = query.Where(orCond) } // 处方 @@ -377,12 +378,13 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct Where(gorm.Expr("transfer_doctor_id IN (?)", transferDoctorSubQuery)) // 使用 OR 条件:患者匹配 OR 原医生匹配 OR 抄方医生匹配 - // 使用闭包函数确保 OR 条件正确分组 - query = query.Where(func(db *gorm.DB) *gorm.DB { - return db.Where("patient_id IN (?)", patientSubQuery). - Or("doctor_id IN (?)", originalDoctorSubQuery). - Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) - }) + // 通过嵌套 Where 子查询把 OR 条件包在一组括号里,避免影响其它条件 + orCond := global.Db. + Where("patient_id IN (?)", patientSubQuery). + Or("doctor_id IN (?)", originalDoctorSubQuery). + Or(gorm.Expr("order_inquiry_id IN (?)", inquirySubQuery)) + + query = query.Where(orCond) } // 排序 From b4501255128c2e92ac34bdcb65e637ef02260182 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 14:53:24 +0800 Subject: [PATCH 42/57] 5 --- api/dao/orderPrescription.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index e45c315..5d536c0 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -260,18 +260,21 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques prescriptionTable := (&model.OrderPrescription{}).TableName() inquiryTable := (&model.OrderInquiry{}).TableName() doctorTable := (&model.UserDoctor{}).TableName() - userTable := (&model.User{}).TableName() // 新增 + userTable := (&model.User{}).TableName() // 构建查询条件 query := global.Db.Model(&model.OrderPrescription{}) // 关联问诊表,只查询TransferDoctorId不等于null的记录 - query = query.Joins("INNER JOIN "+inquiryTable+" ON "+prescriptionTable+".order_inquiry_id = "+inquiryTable+".order_inquiry_id"). - Where(inquiryTable+".transfer_doctor_id IS NOT NULL") + query = query.Joins("INNER JOIN " + inquiryTable + " ON " + prescriptionTable + ".order_inquiry_id = " + inquiryTable + ".order_inquiry_id"). + Where(inquiryTable + ".transfer_doctor_id IS NOT NULL") // 关联抄方医生表 query = query.Joins("LEFT JOIN " + doctorTable + " ON " + inquiryTable + ".transfer_doctor_id = " + doctorTable + ".doctor_id") + // 关联抄方医生对应的用户表(用于按用户姓名查询) + query = query.Joins("LEFT JOIN " + userTable + " ON " + doctorTable + ".user_id = " + userTable + ".user_id") + // 患者表 query = query.Preload("UserPatient", func(db *gorm.DB) *gorm.DB { return db.Omit("open_id", "union_id", "wx_session_key") @@ -435,19 +438,18 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques return m, totalRecords, nil } - // GetOrderPrescriptionExportListSearch 获取抄方的处方列表-导出 func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req requests.OrderPrescriptionExportList) (m []*model.OrderPrescription, err error) { - + prescriptionTable := (&model.OrderPrescription{}).TableName() inquiryTable := (&model.OrderInquiry{}).TableName() - + // 构建查询条件 query := global.Db.Model(&model.OrderPrescription{}) - + // 关联问诊表,只查询TransferDoctorId不等于null的记录 - query = query.Joins("INNER JOIN "+inquiryTable+" ON "+prescriptionTable+".order_inquiry_id = "+inquiryTable+".order_inquiry_id"). - Where(inquiryTable+".transfer_doctor_id IS NOT NULL") + query = query.Joins("INNER JOIN " + inquiryTable + " ON " + prescriptionTable + ".order_inquiry_id = " + inquiryTable + ".order_inquiry_id"). + Where(inquiryTable + ".transfer_doctor_id IS NOT NULL") // 患者表 query = query.Preload("UserPatient", func(db *gorm.DB) *gorm.DB { From 916b788b1b17ea38988e865daf8e41a566f2417c Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 15:01:47 +0800 Subject: [PATCH 43/57] 6 --- api/dao/orderPrescription.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 5d536c0..09871d8 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -270,7 +270,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques Where(inquiryTable + ".transfer_doctor_id IS NOT NULL") // 关联抄方医生表 - query = query.Joins("LEFT JOIN " + doctorTable + " ON " + inquiryTable + ".transfer_doctor_id = " + doctorTable + ".doctor_id") + query = query.Joins("LEFT JOIN " + doctorTable + " ON " + inquiryTable + ".doctor_id = " + doctorTable + ".doctor_id") // 关联抄方医生对应的用户表(用于按用户姓名查询) query = query.Joins("LEFT JOIN " + userTable + " ON " + doctorTable + ".user_id = " + userTable + ".user_id") From 198f37fa42a32793dac1ce13067b6aba8dd441f4 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 15:04:37 +0800 Subject: [PATCH 44/57] 7 --- api/dao/orderPrescription.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 09871d8..a769970 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -347,7 +347,7 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques // 使用 OR 条件:患者匹配 OR 抄方医生匹配 OR 就诊人匹配 query = query.Where(prescriptionTable+".patient_id IN (?)", patientSubQuery). - Or(inquiryTable+".transfer_doctor_id IN (?)", transferDoctorSubQuery). + Or(inquiryTable+".doctor_id IN (?)", transferDoctorSubQuery). Or(prescriptionTable+".family_id IN (?)", patientFamilySubQuery) } From 5b5997f2e2d77a2e50bb899ad703f3589c728757 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 15:15:59 +0800 Subject: [PATCH 45/57] 8 --- api/dao/orderProduct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index 2f54130..5cb1270 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -146,7 +146,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct // 查询抄方医生对应的问诊订单ID inquirySubQuery := global.Db.Model(&model.OrderInquiry{}). Select("order_inquiry_id"). - Where(gorm.Expr("transfer_doctor_id IN (?)", transferDoctorSubQuery)) + Where(gorm.Expr("doctor_id IN (?)", transferDoctorSubQuery)) // 使用 OR 条件:原医生匹配 OR 抄方医生匹配 // 通过嵌套 Where 子查询把 OR 条件包在一组括号里,避免影响其它条件 From 226b1069979db08ad681052ca77a326beef8d28f Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 15:18:22 +0800 Subject: [PATCH 46/57] 9 --- api/dao/orderProduct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index 5cb1270..1569540 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -375,7 +375,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct // 查询抄方医生对应的问诊订单ID inquirySubQuery := global.Db.Model(&model.OrderInquiry{}). Select("order_inquiry_id"). - Where(gorm.Expr("transfer_doctor_id IN (?)", transferDoctorSubQuery)) + Where(gorm.Expr("doctor_id IN (?)", transferDoctorSubQuery)) // 使用 OR 条件:患者匹配 OR 原医生匹配 OR 抄方医生匹配 // 通过嵌套 Where 子查询把 OR 条件包在一组括号里,避免影响其它条件 From ffbc1c83c29ea344203d2a47476472d6482a004f Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 15:33:38 +0800 Subject: [PATCH 47/57] 11 --- api/dao/orderProduct.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index 1569540..d9e1586 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -210,7 +210,12 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct // 处方编号 if req.PrescriptionCode != "" { - query = query.Where("prescription_code = ?", req.PrescriptionCode) + // 处方编号存在于处方表中,这里通过处方表查询出对应的处方ID,再反查商品订单 + subQuery := global.Db.Model(&model.OrderPrescription{}). + Select("order_prescription_id"). + Where("prescription_code = ?", req.PrescriptionCode) + + query = query.Where("order_prescription_id IN (?)", subQuery) } // 订单编号 From 92781a362472e8e5b80259b373bfdab172e83fef Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 16:34:24 +0800 Subject: [PATCH 48/57] 12 --- api/dao/orderPrescription.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index a769970..566cbdf 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -345,10 +345,11 @@ func (r *OrderPrescriptionDao) GetOrderPrescriptionTransferPageSearch(req reques Select("doctor_id"). Where(gorm.Expr("user_id IN (?)", transferDoctorUserSubQuery)) - // 使用 OR 条件:患者匹配 OR 抄方医生匹配 OR 就诊人匹配 - query = query.Where(prescriptionTable+".patient_id IN (?)", patientSubQuery). - Or(inquiryTable+".doctor_id IN (?)", transferDoctorSubQuery). - Or(prescriptionTable+".family_id IN (?)", patientFamilySubQuery) + // 使用 OR 条件:患者匹配 OR 抄方医生匹配 OR 就诊人匹配(整体加括号) + query = query.Where( + gorm.Expr("("+prescriptionTable+".patient_id IN (?) OR "+inquiryTable+".doctor_id IN (?) OR "+prescriptionTable+".family_id IN (?))", + patientSubQuery, transferDoctorSubQuery, patientFamilySubQuery), + ) } // 处方状态 From 32734e14f128878ceea517a8f90320b8da5a81cf Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 16:58:46 +0800 Subject: [PATCH 49/57] 12 --- api/dao/orderProduct.go | 11 ++++++++++- api/service/export.go | 8 ++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index d9e1586..30cc0be 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -426,11 +426,20 @@ func (r *OrderProductDao) GetOrderProductExportListSearch(req requests.OrderProd return db.Select("order_prescription_id", "prescription_code") }) + // 问诊订单 + // query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { + // return db.Select("order_inquiry_id", "patient_name", "patient_name_mask", "patient_sex", "patient_age") + // }) // 问诊订单 query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { - return db.Select("order_inquiry_id", "patient_name", "patient_name_mask", "patient_sex", "patient_age") + return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }) }) + // 患者 query = query.Preload("UserPatient.User", func(db *gorm.DB) *gorm.DB { return db.Select("user_id", "user_name", "mobile") diff --git a/api/service/export.go b/api/service/export.go index 93a8878..c33175e 100644 --- a/api/service/export.go +++ b/api/service/export.go @@ -1571,13 +1571,13 @@ func (r *ExportService) OrderProduct(d []*model.OrderProduct) (string, error) { ConsigneeTel: v.ConsigneeTel, } - if v.UserDoctor != nil { + if v.OrderInquiry != nil && v.OrderInquiry.UserDoctor != nil { // 医生姓名 - data.DoctorName = v.UserDoctor.UserName + data.DoctorName = v.OrderInquiry.UserDoctor.UserName - if v.UserDoctor.User != nil { + if v.OrderInquiry != nil && v.OrderInquiry.UserDoctor != nil && v.UserDoctor.User != nil { // 医生电话 - data.DoctorMobile = v.UserDoctor.User.Mobile + data.DoctorMobile = v.OrderInquiry.UserDoctor.User.Mobile } } From 8cd209598312fad51078fe3b6f5423d1c53e559e Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 17:02:32 +0800 Subject: [PATCH 50/57] 13 --- api/service/export.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/service/export.go b/api/service/export.go index c33175e..d8506c9 100644 --- a/api/service/export.go +++ b/api/service/export.go @@ -1575,8 +1575,8 @@ func (r *ExportService) OrderProduct(d []*model.OrderProduct) (string, error) { // 医生姓名 data.DoctorName = v.OrderInquiry.UserDoctor.UserName - if v.OrderInquiry != nil && v.OrderInquiry.UserDoctor != nil && v.UserDoctor.User != nil { - // 医生电话 + // 医生电话 + if v.OrderInquiry.UserDoctor.User != nil { data.DoctorMobile = v.OrderInquiry.UserDoctor.User.Mobile } } From c786568d99d52e738340bd98ecc088b3a61efeec Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 17:06:51 +0800 Subject: [PATCH 51/57] 13 --- api/dao/orderProduct.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index 30cc0be..1372abd 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -432,10 +432,10 @@ func (r *OrderProductDao) GetOrderProductExportListSearch(req requests.OrderProd // }) // 问诊订单 query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { - return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { - return db.Select("user_id", "user_name", "doctor_id") - }).Preload("TransferUserDoctor", func(db *gorm.DB) *gorm.DB { - return db.Select("user_id", "user_name", "doctor_id") + return db.Preload("UserDoctor.User", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "mobile") + }).Preload("TransferUserDoctor.User", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "mobile") }) }) From e840e9938867628bbfbb82df72b423290ec21e43 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 17:09:55 +0800 Subject: [PATCH 52/57] 14 --- api/dao/orderProduct.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) 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) } // 患者姓名-就诊人 From 7a7b51382bb0c156f53763d5a544f8e941ee5eae Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 17:14:02 +0800 Subject: [PATCH 53/57] 15 --- api/dao/orderPrescription.go | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 566cbdf..b21be29 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -444,6 +444,8 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req prescriptionTable := (&model.OrderPrescription{}).TableName() inquiryTable := (&model.OrderInquiry{}).TableName() + userTable := (&model.User{}).TableName() + // 构建查询条件 query := global.Db.Model(&model.OrderPrescription{}) @@ -485,9 +487,13 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req query = query.Where("prescription_code = ?", req.PrescriptionCode) } - // 医生名称 + // // 医生名称 + // if req.DoctorName != "" { + // query = query.Where("doctor_name LIKE ?", "%"+req.DoctorName+"%") + // } + // 医生名称 - 查询抄方医生名称 if req.DoctorName != "" { - query = query.Where("doctor_name LIKE ?", "%"+req.DoctorName+"%") + query = query.Where(userTable+".user_name LIKE ?", "%"+req.DoctorName+"%") } // 患者姓名-就诊人 @@ -495,7 +501,7 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req query = query.Where("patient_name LIKE ?", "%"+req.PatientName+"%") } - // 手机号-医生/患者/就诊人 + // 手机号-医生/患者/就诊人(医生部分改为抄方医生) if req.Mobile != "" { // 就诊人 patientFamilySubQuery := global.Db.Model(&model.PatientFamily{}). @@ -511,16 +517,20 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req Select("patient_id"). Where(gorm.Expr("user_id IN (?)", patientUserSubQuery)) - // 医生 - doctorUserSubQuery := global.Db.Model(&model.User{}). + // 抄方医生:通过手机号找到 user_id -> doctor_id(抄方医生) + transferDoctorUserSubQuery := global.Db.Model(&model.User{}). Select("user_id"). Where("mobile = ?", req.Mobile) - doctorSubQuery := global.Db.Model(&model.UserDoctor{}). + transferDoctorSubQuery := global.Db.Model(&model.UserDoctor{}). Select("doctor_id"). - Where(gorm.Expr("user_id IN (?)", doctorUserSubQuery)) + Where(gorm.Expr("user_id IN (?)", transferDoctorUserSubQuery)) - query = query.Where("patient_id IN (?)", patientSubQuery).Or("doctor_id IN (?)", doctorSubQuery).Or("family_id IN (?)", patientFamilySubQuery) + // 使用 OR 条件:患者匹配 OR 抄方医生匹配 OR 就诊人匹配(整体加括号) + query = query.Where( + gorm.Expr("("+prescriptionTable+".patient_id IN (?) OR "+inquiryTable+".doctor_id IN (?) OR "+prescriptionTable+".family_id IN (?))", + patientSubQuery, transferDoctorSubQuery, patientFamilySubQuery), + ) } // 处方状态 From ffff3ee5f34c54f0048588e7855782cbdaf75879 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 17:20:14 +0800 Subject: [PATCH 54/57] 16 --- api/dao/orderPrescription.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index b21be29..160fbfc 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -444,14 +444,15 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req prescriptionTable := (&model.OrderPrescription{}).TableName() inquiryTable := (&model.OrderInquiry{}).TableName() - userTable := (&model.User{}).TableName() - + userDoctorTable := (&model.UserDoctor{}).TableName() // 构建查询条件 query := global.Db.Model(&model.OrderPrescription{}) // 关联问诊表,只查询TransferDoctorId不等于null的记录 - query = query.Joins("INNER JOIN " + inquiryTable + " ON " + prescriptionTable + ".order_inquiry_id = " + inquiryTable + ".order_inquiry_id"). + query = query. + Joins("INNER JOIN " + inquiryTable + " ON " + prescriptionTable + ".order_inquiry_id = " + inquiryTable + ".order_inquiry_id"). + Joins("INNER JOIN " + userDoctorTable + " ON " + inquiryTable + ".transfer_doctor_id = " + userDoctorTable + ".doctor_id"). Where(inquiryTable + ".transfer_doctor_id IS NOT NULL") // 患者表 @@ -491,9 +492,9 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req // if req.DoctorName != "" { // query = query.Where("doctor_name LIKE ?", "%"+req.DoctorName+"%") // } - // 医生名称 - 查询抄方医生名称 + // 医生名称 - 查询抄方医生名称(来自 gdxz_user_doctor.user_name) if req.DoctorName != "" { - query = query.Where(userTable+".user_name LIKE ?", "%"+req.DoctorName+"%") + query = query.Where(userDoctorTable+".user_name LIKE ?", "%"+req.DoctorName+"%") } // 患者姓名-就诊人 From 9937ef8e0c652583e92b2d31a65713741a9b2fad Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 17:22:44 +0800 Subject: [PATCH 55/57] 17 --- api/dao/orderPrescription.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 160fbfc..8cfc0c3 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -444,17 +444,19 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req prescriptionTable := (&model.OrderPrescription{}).TableName() inquiryTable := (&model.OrderInquiry{}).TableName() - userDoctorTable := (&model.UserDoctor{}).TableName() + userTable := (&model.User{}).TableName() + doctorTable := (&model.UserDoctor{}).TableName() // 构建查询条件 query := global.Db.Model(&model.OrderPrescription{}) // 关联问诊表,只查询TransferDoctorId不等于null的记录 - query = query. - Joins("INNER JOIN " + inquiryTable + " ON " + prescriptionTable + ".order_inquiry_id = " + inquiryTable + ".order_inquiry_id"). - Joins("INNER JOIN " + userDoctorTable + " ON " + inquiryTable + ".transfer_doctor_id = " + userDoctorTable + ".doctor_id"). + query = query.Joins("INNER JOIN " + inquiryTable + " ON " + prescriptionTable + ".order_inquiry_id = " + inquiryTable + ".order_inquiry_id"). Where(inquiryTable + ".transfer_doctor_id IS NOT NULL") + // 关联抄方医生表 + query = query.Joins("LEFT JOIN " + doctorTable + " ON " + inquiryTable + ".doctor_id = " + doctorTable + ".doctor_id") + // 患者表 query = query.Preload("UserPatient", func(db *gorm.DB) *gorm.DB { return db.Omit("open_id", "union_id", "wx_session_key") @@ -492,9 +494,9 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req // if req.DoctorName != "" { // query = query.Where("doctor_name LIKE ?", "%"+req.DoctorName+"%") // } - // 医生名称 - 查询抄方医生名称(来自 gdxz_user_doctor.user_name) + // 医生名称 - 查询抄方医生名称 if req.DoctorName != "" { - query = query.Where(userDoctorTable+".user_name LIKE ?", "%"+req.DoctorName+"%") + query = query.Where(userTable+".user_name LIKE ?", "%"+req.DoctorName+"%") } // 患者姓名-就诊人 From fce126bbbd95892329b222ac85484587d0f294cd Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 17:24:05 +0800 Subject: [PATCH 56/57] 18 --- api/dao/orderPrescription.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 8cfc0c3..6c2c3a0 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -457,6 +457,9 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req // 关联抄方医生表 query = query.Joins("LEFT JOIN " + doctorTable + " ON " + inquiryTable + ".doctor_id = " + doctorTable + ".doctor_id") + // 关联抄方医生对应的用户表(用于按用户姓名查询) + query = query.Joins("LEFT JOIN " + userTable + " ON " + doctorTable + ".user_id = " + userTable + ".user_id") + // 患者表 query = query.Preload("UserPatient", func(db *gorm.DB) *gorm.DB { return db.Omit("open_id", "union_id", "wx_session_key") From 6a9688b34f87149aa6ae81a2f2e7678374e23e93 Mon Sep 17 00:00:00 2001 From: haomingming Date: Tue, 6 Jan 2026 17:27:49 +0800 Subject: [PATCH 57/57] 19 --- api/dao/orderPrescription.go | 9 ++++++++- api/service/export.go | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/api/dao/orderPrescription.go b/api/dao/orderPrescription.go index 6c2c3a0..ad68600 100644 --- a/api/dao/orderPrescription.go +++ b/api/dao/orderPrescription.go @@ -459,7 +459,7 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req // 关联抄方医生对应的用户表(用于按用户姓名查询) query = query.Joins("LEFT JOIN " + userTable + " ON " + doctorTable + ".user_id = " + userTable + ".user_id") - + // 患者表 query = query.Preload("UserPatient", func(db *gorm.DB) *gorm.DB { return db.Omit("open_id", "union_id", "wx_session_key") @@ -483,6 +483,13 @@ func (r *OrderPrescriptionDao) GetOrderTransferPrescriptionExportListSearch(req // 处方关联疾病表 query = query.Preload("OrderPrescriptionIcd") + // 处方关联问诊表(抄方用) + query = query.Preload("OrderInquiry", func(db *gorm.DB) *gorm.DB { + return db.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB { + return db.Select("user_id", "user_name", "doctor_id") + }) + }) + // 患者家庭成员表 query = query.Preload("PatientFamily") diff --git a/api/service/export.go b/api/service/export.go index d8506c9..b5f7d56 100644 --- a/api/service/export.go +++ b/api/service/export.go @@ -1830,9 +1830,9 @@ func (r *ExportService) OrderPrescription(d []*model.OrderPrescription) (string, DoctorAdvice: v.DoctorAdvice, } - if v.UserDoctor != nil { + if v.OrderInquiry !=nil && v.OrderInquiry.UserDoctor != nil { // 医生姓名 - data.DoctorName = v.UserDoctor.UserName + data.DoctorName = v.OrderInquiry.UserDoctor.UserName } if v.UserPharmacist != nil {