gobal_config_service.go 47KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012
  1. package service
  2. import (
  3. "XT_New/models"
  4. "fmt"
  5. "github.com/jinzhu/gorm"
  6. "time"
  7. )
  8. func CreateAutomaticReduceRecord(config *models.GobalConfig) (err error) {
  9. err = writeDb.Model(&models.GobalConfig{}).Create(config).Error
  10. return
  11. }
  12. func CreateDrugAutomaticReduceRecord(config *models.DrugStockConfig) (err error) {
  13. err = writeDb.Model(&models.DrugStockConfig{}).Create(config).Error
  14. return
  15. }
  16. func FindAutomaticReduceRecordByOrgId(org_id int64) (err error, config models.GobalConfig) {
  17. err = readDb.Model(&models.GobalConfig{}).Where("status = 1 AND org_id = ?", org_id).First(&config).Error
  18. return
  19. }
  20. func FindDrugStockAutomaticReduceRecordByOrgId(org_id int64) (err error, config models.DrugStockConfig) {
  21. err = readDb.Model(&models.DrugStockConfig{}).Where("status = 1 AND org_id = ?", org_id).First(&config).Error
  22. return
  23. }
  24. func UpdateAutomaticReduceRecord(config *models.GobalConfig) (err error) {
  25. err = writeDb.Save(config).Error
  26. return
  27. }
  28. func UpdateGobalConfig(user_org_id int64) error {
  29. config := models.GobalConfig{}
  30. err := XTWriteDB().Model(&config).Where("org_id = ? and status = 1").Updates(map[string]interface{}{"is_open": 2}).Error
  31. return err
  32. }
  33. func UpdateDrugStockAutomaticReduceRecord(config *models.DrugStockConfig) (err error) {
  34. err = writeDb.Save(config).Error
  35. return
  36. }
  37. func CreatePrintTemplateRecord(template *models.GobalTemplate) (err error) {
  38. err = writeDb.Model(&models.GobalTemplate{}).Create(template).Error
  39. return
  40. }
  41. func FindPrintTemplateByOrgId(org_id int64) (err error, template models.GobalTemplate) {
  42. err = readDb.Model(&models.GobalTemplate{}).Where("status = 1 AND org_id = ?", org_id).Find(&template).Error
  43. return
  44. }
  45. func UpdatePrintTemplate(template *models.GobalTemplate) (err error) {
  46. err = writeDb.Save(template).Error
  47. return
  48. }
  49. func CreateConfigData(config *models.DataUploadConfig) (err error) {
  50. err = writeDb.Create(config).Error
  51. return
  52. }
  53. func SaveConfigData(config *models.DataUploadConfig) (err error) {
  54. err = writeDb.Save(config).Error
  55. return
  56. }
  57. func GetConfigData(org_id int64, config_type int64) (config models.DataUploadConfig, err error) {
  58. err = readDb.Model(&models.DataUploadConfig{}).Where("status = 1 AND org_id = ? AND config_type = ?", org_id, config_type).First(&config).Error
  59. return
  60. }
  61. func GetDockingStatus(config_type int64, province int64, city int64) (config models.DockingStatus, err error) {
  62. err = readDb.Model(&models.DockingStatus{}).Where("status = 1 AND docking_type = ? AND province_id = ? AND city_id = ?", config_type, province, city).First(&config).Error
  63. return
  64. }
  65. func GetConfigDataById(id int64) (config models.DataUploadConfig, err error) {
  66. err = readDb.Model(&models.DataUploadConfig{}).Where("id = ?", id).First(&config).Error
  67. return
  68. }
  69. func FindDoctorAdviceRecordByOrgId(org_id int64) (err error, config models.DoctorAdviceConfig) {
  70. err = readDb.Model(&models.DoctorAdviceConfig{}).Where("status = 1 AND user_org_id = ?", org_id).Find(&config).Error
  71. return
  72. }
  73. func CreateDoctorAdviceRecord(config *models.DoctorAdviceConfig) (err error) {
  74. err = writeDb.Model(&models.DoctorAdviceConfig{}).Create(config).Error
  75. return
  76. }
  77. func UpdateDoctorAdviceRecord(config *models.DoctorAdviceConfig) (err error) {
  78. err = writeDb.Save(config).Error
  79. return
  80. }
  81. func UpdateFiledConfig(org_id int64) (err error) {
  82. err = writeDb.Model(&models.FiledConfig{}).Where("org_id = ? AND sys_module = 0", org_id).Updates(map[string]interface{}{"is_show": 1}).Error
  83. return
  84. }
  85. func FindAllHideFiledConfig(template_id int64) (err error, config []*models.FiledConfig) {
  86. err = readDb.Model(&models.FiledConfig{}).Where("sys_module = ? AND is_show = 2", template_id).Find(&config).Error
  87. return
  88. }
  89. func UpdateShowFieldConfig(org_id int64, fileds []string) (err error) {
  90. err = writeDb.Model(&models.FiledConfig{}).Where("org_id = ? AND filed_name in (?) AND sys_module = 0 ", org_id, fileds).Updates(map[string]interface{}{"is_show": 2}).Error
  91. return
  92. }
  93. func FindAllAdviceParentTemplate(org_id int64) (template []*models.DoctorAdviceParentTemplate) {
  94. readDb.Model(&models.DoctorAdviceParentTemplate{}).Preload("DoctorAdviceTemplate", func(db *gorm.DB) *gorm.DB {
  95. return db.Preload("SubDoctorAdviceTemplate", "status = 1 AND org_id = ?", org_id).Where("status = 1 AND parent_id = 0 AND org_id = ?", org_id)
  96. }).Where("status = 1 AND org_id = ? ", org_id).Find(&template)
  97. return
  98. }
  99. func CreateDoctorParentTemplate(template *models.DoctorAdviceParentTemplate) (err error) {
  100. err = writeDb.Create(&template).Error
  101. return
  102. }
  103. func FindAllAdviceTemplates(org_id int64, parent_template_id int64) (template []*models.DoctorAdviceTemplate, err error) {
  104. err = readDb.Model(&models.DoctorAdviceTemplate{}).Where("status = 1 AND org_id = ? AND template_id = ?", org_id, parent_template_id).Find(&template).Error
  105. return
  106. }
  107. func CreateDoctorTemplate(template *models.DoctorAdviceTemplate) (err error) {
  108. err = writeDb.Create(&template).Error
  109. return
  110. }
  111. func CreateSystemDialysisSolution(solution *models.SystemPrescription) (err error) {
  112. err = writeDb.Create(solution).Error
  113. return
  114. }
  115. func UpdateSystemDialysisSolution(solution *models.SystemPrescription) (err error) {
  116. err = writeDb.Save(solution).Error
  117. return
  118. }
  119. func FindSystemDialysisSolution(orgID int64, id int64) (solution models.SystemPrescription, err error) {
  120. err = readDb.Model(&models.SystemPrescription{}).Where("id = ? and status=1 and user_org_id=?", id, orgID).First(&solution).Error
  121. return
  122. }
  123. func FindAllSystemPrescription(orgID int64) (solution []*models.SystemPrescription, err error) {
  124. err = readDb.Model(&models.SystemPrescription{}).Where("status=1 and user_org_id=?", orgID).Find(&solution).Error
  125. return
  126. }
  127. func FindSystemDialysisPrescriptionByMode(orgID int64, id int64) (solution models.SystemPrescription, err error) {
  128. err = readDb.Model(&models.SystemPrescription{}).Where("mode_id = ? and status=1 and user_org_id=?", id, orgID).First(&solution).Error
  129. return
  130. }
  131. func CreateAdviceInitConfig(adviceInit *models.AdviceInit) (err error) {
  132. err = writeDb.Create(&adviceInit).Error
  133. return
  134. }
  135. func FindAdviceInitConfig(org_id int64) (adviceInit models.AdviceInit, err error) {
  136. err = readDb.Model(&models.AdviceInit{}).Where("user_org_id = ? AND status = 1 ", org_id).First(&adviceInit).Error
  137. return
  138. }
  139. func GetPrint(ids []int64, orgid int64, advicetype int64, stoptype int64) (doctor []*models.DoctorAdvice, err error) {
  140. db := XTReadDB().Model(&doctor).Where("status =1")
  141. if len(ids) == 1 {
  142. if orgid > 0 {
  143. db = db.Where("user_org_id = ?", orgid)
  144. }
  145. if advicetype > 0 {
  146. db = db.Where("advice_type = ?", advicetype)
  147. }
  148. if stoptype > 0 {
  149. db = db.Where("stop_state = ?", stoptype)
  150. }
  151. err = db.Where("groupno = ?", ids[0]).Find(&doctor).Error
  152. } else {
  153. if orgid > 0 {
  154. db = db.Where("user_org_id = ?", orgid)
  155. }
  156. if advicetype > 0 {
  157. db = db.Where("advice_type = ?", advicetype)
  158. }
  159. if stoptype > 0 {
  160. db = db.Where("stop_state = ?", stoptype)
  161. }
  162. err = db.Where("groupno IN(?)", ids).Find(&doctor).Error
  163. }
  164. return doctor, err
  165. }
  166. func GetExportLogByType(org_id int64, log_type int64) (log []*models.ExportLog, err error) {
  167. err = readDb.Model(&models.ExportLog{}).Where("user_org_id = ? AND status = 1 AND log_type = ?", org_id, log_type).
  168. Preload("ExportErrLog", "status = 1").Order("export_time desc").Find(&log).Error
  169. return
  170. }
  171. func FindXTHisRecordByOrgId(org_id int64) (err error, config models.XtHisConfig) {
  172. err = readDb.Model(&models.XtHisConfig{}).Where("status = 1 AND user_org_id = ?", org_id).Find(&config).Error
  173. return
  174. }
  175. func FindHisStockPriceRecordByOrgId(org_id int64) (err error, config models.HisStockPriceConfig) {
  176. err = readDb.Model(&models.HisStockPriceConfig{}).Where("status = 1 AND user_org_id = ?", org_id).Find(&config).Error
  177. return
  178. }
  179. func UpdateXTHisRecord(config *models.XtHisConfig) (err error) {
  180. err = writeDb.Save(config).Error
  181. return
  182. }
  183. func CreateXTHisRecord(config *models.XtHisConfig) (err error) {
  184. err = writeDb.Model(&models.XtHisConfig{}).Create(config).Error
  185. return
  186. }
  187. func CreateHisStockPriceRecord(config *models.HisStockPriceConfig) (err error) {
  188. err = writeDb.Model(&models.HisStockPriceConfig{}).Create(config).Error
  189. return
  190. }
  191. func UpdateHisStockPriceRecord(config *models.HisStockPriceConfig) (err error) {
  192. err = writeDb.Save(config).Error
  193. return
  194. }
  195. //TODO:项目开关
  196. func FindXTHisProjectByOrgId(org_id int64) (err error, config models.XtHisProjectConfig) {
  197. err = readDb.Model(&models.XtHisProjectConfig{}).Where("status = 1 AND user_org_id = ?", org_id).Find(&config).Error
  198. return
  199. }
  200. func FindXTHisProjectByOrgIdOne(org_id int64) (err error, config models.XtHisProjectConfig) {
  201. err = readDb.Model(&models.XtHisProjectConfig{}).Where("status = 1 AND user_org_id = ?", org_id).Find(&config).Error
  202. return
  203. }
  204. func UpdateXTHisProjectRecord(config *models.XtHisProjectConfig) (err error) {
  205. err = writeDb.Save(config).Error
  206. return
  207. }
  208. func CreateXTHisProjectRecord(config *models.XtHisProjectConfig) (err error) {
  209. err = writeDb.Model(&models.XtHisProjectConfig{}).Create(config).Error
  210. return
  211. }
  212. func GetExportHisOrderList(user_org_id int64, start_time int64, end_time int64, p_type int64) (order []*models.HisOrder, err error) {
  213. db := readDb.Model(&models.HisOrder{})
  214. if start_time != 0 {
  215. db = db.Where("his_order.settle_accounts_date>=?", start_time)
  216. }
  217. if end_time != 0 {
  218. db = db.Where("his_order.settle_accounts_date<=?", end_time)
  219. }
  220. if p_type > 0 {
  221. db = db.Where("his_order.status = 1 AND his_order.user_org_id = ? AND his_order.order_status = 2 AND p_type = ? ", user_org_id, p_type)
  222. } else {
  223. db = db.Where("his_order.status = 1 AND his_order.user_org_id = ? AND his_order.order_status = 2", user_org_id)
  224. }
  225. db = db.Preload("HisOrderInfo", "status = 1 AND user_org_id = ?", user_org_id).
  226. Preload("Patients", "status = 1 AND user_org_id = ?", user_org_id).
  227. Preload("HisPatient", "status = 1 AND user_org_id = ?", user_org_id).
  228. Preload("HisHospitalCheckRecord", "status = 1 AND user_org_id = ? AND in_hospital_status = 1 AND out_hospital_status = 1 ", user_org_id).
  229. Preload("HisPrescriptionInfo", func(db *gorm.DB) *gorm.DB {
  230. return db.Where("status = 1 AND user_org_id = ?", user_org_id).Preload("XtHisDepartment", "status = 1")
  231. })
  232. err = db.Order("setl_time asc").Find(&order).Error
  233. return
  234. }
  235. func GetDrugInOrderDetail(startime int64, endtime int64, orgid int64, orderType int64, manufacturerId int64, keyword string, page int64, limit int64, storehouse_id int64) (drugInfo []*models.BloodDrugWarehouseInfo, total int64, err error) {
  236. likeKey := "%" + keyword + "%"
  237. offset := (page - 1) * limit
  238. db := XTReadDB().Table("xt_drug_warehouse_info as x").Where("x.status = 1 and x.is_check = 1")
  239. dbOne := XTReadDB().Table("xt_base_drug as t").Where("t.status =1")
  240. dbTwo := XTReadDB().Table("xt_drug_warehouse as s").Where("s.status = 1")
  241. dbThree := UserReadDB().Table("sgj_user_admin_role as r").Where("r.status = 1")
  242. fmt.Print(dbOne, dbTwo, dbThree)
  243. if startime > 0 {
  244. db = db.Where("x.ctime >=?", startime)
  245. }
  246. if endtime > 0 {
  247. db = db.Where("x.ctime <=?", endtime)
  248. }
  249. if orgid > 0 {
  250. db = db.Where("x.org_id =?", orgid)
  251. }
  252. if storehouse_id > 0 {
  253. db = db.Where("x.storehouse_id = ?", storehouse_id)
  254. }
  255. if len(keyword) > 0 {
  256. db = db.Joins("left join sgj_xt.xt_drug_warehouse as o on o.id = x.warehousing_id left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = o.creater").Group("s.id")
  257. db = db.Where("x.warehousing_order like ? or t.drug_name like ? or r.user_name like ? ", likeKey, likeKey, likeKey)
  258. }
  259. if manufacturerId > 0 {
  260. err = db.Select("x.id,x.warehousing_id,x.drug_id,x.number,x.product_date,x.expiry_date,x.warehousing_count,x.price,x.total_price,x.dealer,t.manufacturer,x.remark,x.ctime,x.org_id,x.is_return,x.warehousing_order,x.type,x.retail_price,x.retail_total_price,x.storehouse_id,x.max_unit as count_unit,t.drug_type,t.drug_name,t.drug_spec,t.min_unit,t.dose,t.dose_unit,t.max_unit,t.min_number,s.creater").Joins("left join xt_base_drug as t on t.id = x.drug_id and t.org_id = ? and t.status =1", orgid).Where("t.manufacturer = ?", manufacturerId).Joins("left join xt_drug_warehouse as s on s.id = x.warehousing_id and s.org_id = ? and s.status =1", orgid).Order("x.id desc").Count(&total).Offset(offset).Limit(limit).Scan(&drugInfo).Error
  261. } else {
  262. err = db.Select("x.id,x.warehousing_id,x.drug_id,x.number,x.product_date,x.expiry_date,x.warehousing_count,x.price,x.total_price,x.dealer,t.manufacturer,x.remark,x.ctime,x.org_id,x.is_return,x.warehousing_order,x.type,x.retail_price,x.retail_total_price,x.storehouse_id,x.max_unit as count_unit,t.drug_type,t.drug_name,t.drug_spec,t.min_unit,t.dose,t.dose_unit,t.max_unit,t.min_number,s.creater").Joins("left join xt_base_drug as t on t.id = x.drug_id and t.org_id = ? and t.status =1", orgid).Joins("left join xt_drug_warehouse as s on s.id = x.warehousing_id and s.org_id = ? and s.status =1", orgid).Order("x.id desc").Count(&total).Offset(offset).Limit(limit).Scan(&drugInfo).Error
  263. }
  264. return drugInfo, total, err
  265. }
  266. func GetDrugReturnOrder(startime int64, endtime int64, orgid int64, orderType int64, manufacturerId int64, keyword string, limit int64, page int64) (returninfo []*models.BloodDrugSalesReturnInfo, total int64, err error) {
  267. likeKey := "%" + keyword + "%"
  268. offset := (page - 1) * limit
  269. db := XTReadDB().Table("xt_drug_sales_return_info as x").Where("x.status =1")
  270. dbOne := XTReadDB().Table("xt_base_drug as s").Where("s.status =1")
  271. dbTwo := XTReadDB().Table("xt_drug_sales_return as r").Where("r.status = 1")
  272. fmt.Print(dbOne, dbTwo)
  273. if startime > 0 {
  274. db = db.Where("x.ctime >= ?", startime)
  275. }
  276. if endtime > 0 {
  277. db = db.Where("x.ctime <=?", endtime)
  278. }
  279. if orgid > 0 {
  280. db = db.Where("x.org_id = ?", orgid)
  281. }
  282. if orderType > 0 {
  283. db = db.Where("x.type = ?", orderType)
  284. }
  285. if len(keyword) > 0 {
  286. db = db.Where("x.order_number like ? or s.drug_spec like ? or r.creater like ?", likeKey, likeKey, likeKey)
  287. }
  288. if manufacturerId > 0 {
  289. err = db.Select("x.id,x.drug_id,x.sales_return_id,x.count,x.price,x.total,x.product_date,x.expiry_date,x.ctime,x.org_id,x.order_number,x.type,x.dealer,x.manufacturer,x.retail_price,x.retail_total_price,x.number,s.drug_name,s.drug_spec,s.drug_type,s.min_unit,r.creater").Joins("left join xt_base_drug as s on s.id = x.drug_id and s.org_id = ? and s.status = 1", orgid).Joins("left join xt_drug_sales_return as r on r.id = x.sales_return_id and r.org_id = ? and r.status =1", orgid).Where("r.manufacturer = ?", manufacturerId).Order("x.ctime desc").Count(&total).Offset(offset).Limit(limit).Scan(&returninfo).Error
  290. } else {
  291. err = db.Select("x.id,x.drug_id,x.sales_return_id,x.count,x.price,x.total,x.product_date,x.expiry_date,x.ctime,x.org_id,x.order_number,x.type,x.dealer,x.manufacturer,x.retail_price,x.retail_total_price,x.number,s.drug_name,s.drug_spec,s.drug_type,s.min_unit,r.creater").Joins("left join xt_base_drug as s on s.id = x.drug_id and s.org_id = ? and s.status = 1", orgid).Joins("left join xt_drug_sales_return as r on r.id = x.sales_return_id and r.org_id = ? and r.status =1", orgid).Order("x.ctime desc").Count(&total).Offset(offset).Limit(limit).Scan(&returninfo).Error
  292. }
  293. return returninfo, total, err
  294. }
  295. func GetDrugOutOrder(startime int64, endtime int64, orgid int64, orderType int64, manufacturerId int64, keyword string, page int64, limit int64, storehouse_id int64) (outinfo []*models.BloodDrugWarehouseOutInfo, total int64, err error) {
  296. likeKey := "%" + keyword + "%"
  297. offset := (page - 1) * limit
  298. db := XTReadDB().Table("xt_drug_warehouse_out_info as x").Where("x.status =1 and x.is_check = 1")
  299. dbOne := XTReadDB().Table("xt_base_drug as b").Where("b.status =1")
  300. dbTwo := XTReadDB().Table("xt_drug_warehouse_out as t").Where("t.status = 1")
  301. fmt.Print(dbOne, dbTwo)
  302. if startime > 0 {
  303. db = db.Where("x.sys_record_time >=?", startime)
  304. }
  305. if endtime > 0 {
  306. db = db.Where("x.sys_record_time <=?", endtime)
  307. }
  308. if orgid > 0 {
  309. db = db.Where("x.org_id = ?", orgid)
  310. }
  311. if orderType > 0 {
  312. db = db.Where("x.type = ?", orderType)
  313. }
  314. if storehouse_id > 0 {
  315. db = db.Where("x.storehouse_id = ?", storehouse_id)
  316. }
  317. if len(keyword) > 0 {
  318. db = db.Joins("left join sgj_xt.xt_drug_warehouse_out as o on o.id = x.warehouse_out_id left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = o.creater").Group("x.id")
  319. db = db.Where("x.warehouse_out_order_number like ? or b.drug_name like ? or r.user_name like ?", likeKey, likeKey, likeKey)
  320. }
  321. if manufacturerId > 0 {
  322. err = db.Select("x.id,x.warehouse_out_id,x.drug_id,x.warehousing_out_target,x.count,x.count_unit,x.price,x.total_price,x.product_date,x.expiry_date,x.ctime,x.org_id,x.remark,x.is_cancel,x.warehouse_out_order_number,x.type,x.dealer,x.manufacturer,x.is_sys,x.sys_record_time,x.retail_price,x.retail_total_price,x.storehouse_id,b.drug_name,b.drug_spec,b.drug_type,b.min_unit,b.max_unit,b.min_number,b.dose,b.dose_unit,b.last_price,t.creater").Joins("left join xt_base_drug as b on b.id = x.drug_id and b.org_id = ? and b.status =1", orgid).Joins("left join xt_drug_warehouse_out as t on t.id = x.warehouse_out_id and t.org_id = ? and t.status =1", orgid).Where("t.manufacturer = ?", manufacturerId).Order("x.ctime desc").Count(&total).Offset(offset).Limit(limit).Scan(&outinfo).Error
  323. } else {
  324. err = db.Select("x.id,x.warehouse_out_id,x.drug_id,x.warehousing_out_target,x.count,x.count_unit,x.price,x.total_price,x.product_date,x.expiry_date,x.ctime,x.org_id,x.remark,x.is_cancel,x.warehouse_out_order_number,x.type,x.dealer,x.manufacturer,x.is_sys,x.sys_record_time,x.retail_price,x.retail_total_price,x.storehouse_id,b.drug_name,b.drug_spec,b.drug_type,b.min_unit,b.max_unit,b.min_number,b.dose,b.dose_unit,b.last_price,t.creater").Joins("left join xt_base_drug as b on b.id = x.drug_id and b.org_id = ? and b.status =1", orgid).Joins("left join xt_drug_warehouse_out as t on t.id = x.warehouse_out_id and t.org_id = ? and t.status =1", orgid).Order("x.ctime desc").Count(&total).Offset(offset).Limit(limit).Scan(&outinfo).Error
  325. }
  326. return outinfo, total, err
  327. }
  328. func GetDrugCancelOrderPrint(startime int64, endtime int64, orgid int64, orderType int64, manufacturerId int64, keyword string, storehouse_id int64) (info []*models.BloodDrugCancelStockInfo, err error) {
  329. likeKey := "%" + keyword + "%"
  330. db := XTReadDB().Table("xt_drug_cancel_stock_info as x").Where("x.status =1")
  331. dbOne := XTReadDB().Table("xt_base_drug as s").Where("s.status =1")
  332. dbTwo := XTReadDB().Table("xt_drug_cancel_stock as t").Where("t.status = 1")
  333. fmt.Print(dbOne, dbTwo)
  334. if startime > 0 {
  335. db = db.Where("x.ctime >= ?", startime)
  336. }
  337. if endtime > 0 {
  338. db = db.Where("x.ctime<=?", endtime)
  339. }
  340. if orgid > 0 {
  341. db = db.Where("x.org_id = ?", orgid)
  342. }
  343. if orderType > 0 {
  344. db = db.Where("x.type = ? ", orderType)
  345. }
  346. if len(keyword) > 0 {
  347. db = db.Where("x.order_number like ? or s.drug_spec like ? or t.creater like ?", likeKey, likeKey, likeKey)
  348. }
  349. if storehouse_id > 0 {
  350. db = db.Where("x.storehouse_id = ?", storehouse_id)
  351. }
  352. if manufacturerId > 0 {
  353. err = db.Select("x.id,x.max_unit as unit,x.drug_id,x.cancel_stock_id,x.count,x.price,x.total,x.product_date,x.expiry_date,x.ctime,x.org_id,x.order_number,x.type,x.dealer,x.manufacturer,x.retail_price,x.retail_total_price,x.number,x.storehouse_id,s.drug_name,s.drug_type,s.drug_spec,s.min_unit,t.creater,s.dose,s.dose_unit,s.min_number,s.max_unit").Joins("left join xt_base_drug as s on s.id = x.drug_id and s.org_id = ? and s.status = 1", orgid).Joins("left join xt_drug_cancel_stock as t on t.id = x.cancel_stock_id and t.org_id = ? and t.status =1", orgid).Where("t.manufacturer = ?", manufacturerId).Order("x.ctime desc").Group("x.drug_id").Scan(&info).Error
  354. } else {
  355. err = db.Select("x.id,x.max_unit as unit,x.drug_id,x.cancel_stock_id,x.count,x.price,x.total,x.product_date,x.expiry_date,x.ctime,x.org_id,x.order_number,x.type,x.dealer,x.manufacturer,x.retail_price,x.retail_total_price,x.number,x.storehouse_id,s.drug_name,s.drug_type,s.drug_spec,s.min_unit,t.creater,s.dose,s.dose_unit,s.min_number,s.max_unit").Joins("left join xt_base_drug as s on s.id = x.drug_id and s.org_id = ? and s.status = 1", orgid).Joins("left join xt_drug_cancel_stock as t on t.id = x.cancel_stock_id and t.org_id = ? and t.status =1", orgid).Order("x.ctime desc").Group("x.drug_id").Scan(&info).Error
  356. }
  357. return info, err
  358. }
  359. func GetDrugCancelOrder(startime int64, endtime int64, orgid int64, orderType int64, manufacturerId int64, keyword string, page int64, limit int64, storehouse_id int64) (cancel []*models.BloodDrugCancelStockInfo, total int64, err error) {
  360. likeKey := "%" + keyword + "%"
  361. offset := (page - 1) * limit
  362. db := XTReadDB().Table("xt_drug_cancel_stock_info as x").Where("x.status =1")
  363. dbOne := XTReadDB().Table("xt_base_drug as s").Where("s.status =1")
  364. dbTwo := XTReadDB().Table("xt_drug_cancel_stock as t").Where("t.status = 1")
  365. fmt.Print(dbOne, dbTwo)
  366. if startime > 0 {
  367. db = db.Where("x.ctime >= ?", startime)
  368. }
  369. if endtime > 0 {
  370. db = db.Where("x.ctime<=?", endtime)
  371. }
  372. if orgid > 0 {
  373. db = db.Where("x.org_id = ?", orgid)
  374. }
  375. if orderType > 0 {
  376. db = db.Where("x.type = ? ", orderType)
  377. }
  378. if storehouse_id > 0 {
  379. db = db.Where("x.storehouse_id = ?", storehouse_id)
  380. }
  381. if len(keyword) > 0 {
  382. db = db.Joins("left join sgj_xt.xt_drug_cancel_stock as o on o.id = x.cancel_stock_id left join sgj_users.sgj_user_admin_role as r on r.admin_user_id = o.creater").Group("o.id")
  383. db = db.Where("x.order_number like ? or s.drug_spec like ? or r.user_name like ? or s.drug_name like ?", likeKey, likeKey, likeKey, likeKey)
  384. }
  385. if manufacturerId > 0 {
  386. err = db.Select("x.id,x.max_unit as unit,x.drug_id,x.cancel_stock_id,x.count,x.price,x.total,x.product_date,x.expiry_date,x.ctime,x.org_id,x.order_number,x.type,x.dealer,x.manufacturer,x.retail_price,x.retail_total_price,x.number,x.storehouse_id,s.drug_name,s.drug_type,s.drug_spec,s.min_unit,t.creater,s.dose,s.dose_unit,s.min_number,s.max_unit").Joins("left join xt_base_drug as s on s.id = x.drug_id and s.org_id = ? and s.status = 1", orgid).Joins("left join xt_drug_cancel_stock as t on t.id = x.cancel_stock_id and t.org_id = ? and t.status =1", orgid).Where("t.manufacturer = ?", manufacturerId).Order("x.ctime desc").Count(&total).Offset(offset).Limit(limit).Scan(&cancel).Error
  387. } else {
  388. err = db.Select("x.id,x.max_unit as unit,x.drug_id,x.cancel_stock_id,x.count,x.price,x.total,x.product_date,x.expiry_date,x.ctime,x.org_id,x.order_number,x.type,x.dealer,x.manufacturer,x.retail_price,x.retail_total_price,x.number,x.storehouse_id,s.drug_name,s.drug_type,s.drug_spec,s.min_unit,t.creater,s.dose,s.dose_unit,s.min_number,s.max_unit").Joins("left join xt_base_drug as s on s.id = x.drug_id and s.org_id = ? and s.status = 1", orgid).Joins("left join xt_drug_cancel_stock as t on t.id = x.cancel_stock_id and t.org_id = ? and t.status =1", orgid).Order("x.ctime desc").Count(&total).Offset(offset).Limit(limit).Scan(&cancel).Error
  389. }
  390. return cancel, total, err
  391. }
  392. func FindPrintStockGoodInfoByType(types int, startTime int64, end_time int64, orgId int64) (list []*models.StockInfo, err error) {
  393. db := XTReadDB().Model(&models.StockInfo{})
  394. db = db.Where("xt_good_information.org_id = ? AND xt_good_information.status = 1", orgId)
  395. if types == 1 {
  396. db = db.Joins("JOIN xt_warehouse_info AS info ON info.good_id=xt_good_information.id AND info.status = 1 AND info.org_id = ?", orgId).Group("xt_good_information.id")
  397. db = db.Preload("QueryWarehousingInfo", func(db *gorm.DB) *gorm.DB {
  398. return db.Where("xt_warehouse_info.org_id = ? AND xt_warehouse_info.status = 1", orgId).Joins("JOIN xt_warehouse AS warehouse ON warehouse.id = xt_warehouse_info.warehousing_id AND warehouse.status = 1 AND warehouse.warehousing_time >=? AND warehouse.warehousing_time<= ? AND warehouse.org_id = ?", startTime, end_time, orgId)
  399. })
  400. } else if types == 2 {
  401. db = db.Joins("JOIN xt_sales_return_info AS info ON info.good_id=xt_good_information.id AND info.status = 1 AND info.org_id = ?", orgId).Group("xt_good_information.id")
  402. db = db.Preload("QuerySalesReturnInfo", func(db *gorm.DB) *gorm.DB {
  403. return db.Where("xt_sales_return_info.org_id = ? AND xt_sales_return_info.status = 1", orgId).Joins("JOIN xt_sales_return AS sales ON sales.id = xt_sales_return_info.sales_return_id AND sales.status = 1 AND sales.return_time >=? AND sales.return_time<= ? AND sales.org_id = ?", startTime, end_time, orgId)
  404. })
  405. } else if types == 3 {
  406. db = db.Joins("JOIN xt_warehouse_out_info AS info ON info.good_id=xt_good_information.id AND info.status = 1 AND info.org_id = ?", orgId).Group("xt_good_information.id")
  407. db = db.Preload("QueryWarehouseOutInfo", func(db *gorm.DB) *gorm.DB {
  408. return db.Where("xt_warehouse_out_info.org_id = ? AND xt_warehouse_out_info.status = 1", orgId).Joins("JOIN xt_warehouse_out ON xt_warehouse_out.id = xt_warehouse_out_info.warehouse_out_id AND xt_warehouse_out.status = 1 AND xt_warehouse_out.warehouse_out_time >=? AND xt_warehouse_out.warehouse_out_time<= ? AND xt_warehouse_out.org_id = ? ", startTime, end_time, orgId)
  409. })
  410. } else if types == 4 {
  411. db = db.Joins("JOIN xt_cancel_stock_info AS info ON info.good_id=xt_good_information.id AND info.status = 1 AND info.org_id = ?", orgId).Group("xt_good_information.id")
  412. db = db.Preload("QueryCancelStockInfo", func(db *gorm.DB) *gorm.DB {
  413. return db.Where("xt_cancel_stock_info.org_id = ? AND xt_cancel_stock_info.status = 1", orgId).Joins("JOIN xt_cancel_stock AS cancel ON cancel.id = xt_cancel_stock_info.cancel_stock_id AND cancel.status = 1 AND cancel.return_time >=? AND cancel.return_time<= ? AND cancel.org_id = ?", startTime, end_time, orgId)
  414. })
  415. }
  416. db = db.Preload("GoodsType", "org_id = ? AND status = 1", orgId)
  417. err = db.Order("ctime desc").Find(&list).Error
  418. return
  419. }
  420. func GetOutStockTotalCountTwo(startime int64, endtime int64, orgid int64) (autoMatic []*models.NewXtAutomaticReduceDetail, err error) {
  421. err = XTReadDB().Raw("SELECT good_id,SUM(b.count) as count FROM (SELECT DISTINCT x.patient_id,x.good_id,x.record_time,x.count FROM xt_automatic_reduce_detail as x WHERE x.org_id = ? and x.record_time >= ? and x.record_time<=? and `status` = 1) as b GROUP BY good_id", orgid, startime, endtime).Scan(&autoMatic).Error
  422. return autoMatic, err
  423. }
  424. func AddMonitorOpen(config *models.XtMonitorConfig) error {
  425. err := XTWriteDB().Create(&config).Error
  426. return err
  427. }
  428. func UpdateMonitorOpen(orgid int64, config *models.XtMonitorConfig) error {
  429. err := XTWriteDB().Model(&config).Where("user_org_id = ? and status = 1", orgid).Updates(map[string]interface{}{"is_open": config.IsOpen, "mtime": time.Now().Unix()}).Error
  430. return err
  431. }
  432. func GetMonitorConfig(orgid int64) (models.XtMonitorConfig, error) {
  433. config := models.XtMonitorConfig{}
  434. err := XTReadDB().Model(&config).Where("user_org_id = ? and status = 1", orgid).Find(&config).Error
  435. return config, err
  436. }
  437. func AddOrderConfig(config *models.XtOrderConfig) error {
  438. err := XTWriteDB().Create(&config).Error
  439. return err
  440. }
  441. func UpdateOrderConfig(orgid int64, config *models.XtOrderConfig) error {
  442. err := XTWriteDB().Model(&config).Where("user_org_id = ? and status = 1", orgid).Updates(map[string]interface{}{"is_open": config.IsOpen, "mtime": time.Now().Unix()}).Error
  443. return err
  444. }
  445. func GetOrderConfigById(orgid int64) (*models.XtOrderConfig, error) {
  446. config := models.XtOrderConfig{}
  447. err := XTReadDB().Model(&config).Where("user_org_id = ? and status = 1", orgid).Find(&config).Error
  448. if err == gorm.ErrRecordNotFound {
  449. return nil, err
  450. }
  451. if err != nil {
  452. return nil, err
  453. }
  454. return &config, nil
  455. }
  456. func GetOrderConfig(orgid int64) (models.XtOrderConfig, error) {
  457. config := models.XtOrderConfig{}
  458. err := XTReadDB().Where("user_org_id = ? and status = 1", orgid).Find(&config).Error
  459. return config, err
  460. }
  461. func GetMonitorConfigById(orgid int64) (*models.XtMonitorConfig, error) {
  462. config := models.XtMonitorConfig{}
  463. err := XTReadDB().Model(&config).Where("user_org_id = ? and status = 1", orgid).Find(&config).Error
  464. if err == gorm.ErrRecordNotFound {
  465. return nil, err
  466. }
  467. if err != nil {
  468. return nil, err
  469. }
  470. return &config, nil
  471. }
  472. func GetDrugAutoMaticList(orgid int64, warehouse_out_id int64, record_time int64, warehouse_out_order_number string) (auto []*models.VmDrugAutomaticReduceDetail, err error) {
  473. db := XTReadDB().Table("xt_drug_automatic_reduce_detail as x").Where("x.status = 1")
  474. err = db.Select("x.org_id,x.warehouse_out_id,x.record_time,x.drug_id,sum(x.count) as total").Where("x.org_id = ? and x.record_time = ? and x.status= 1 and x.warehouse_out_order_number = ?", orgid, record_time, warehouse_out_order_number).Group("x.drug_id").Scan(&auto).Error
  475. return auto, err
  476. }
  477. func GetAllBaseDrugList(orgid int64) (drug []*models.BaseDrugLib, err error) {
  478. err = XTReadDB().Model(&drug).Where("org_id = ? and status = 1", orgid).Find(&drug).Error
  479. return drug, err
  480. }
  481. func GetDrugWarehuseOrderInfo(orgid int64) (drug []*models.DrugWarehouseInfo, err error) {
  482. err = XTReadDB().Where("org_id = ? and status = 1", orgid).Group("drug_id").Find(&drug).Error
  483. return drug, err
  484. }
  485. func GetDrugStockList(page int64, limit int64, keyword string, drugcategory int64, startime int64, endtime int64, orgid int64) (list []*models.StDrugWarehouseInfo, total int64, err error) {
  486. offset := (page - 1) * limit
  487. db := XTReadDB().Table("xt_drug_warehouse_info as x").Where("x.status = 1")
  488. likeKey := "%" + keyword + "%"
  489. if orgid > 0 {
  490. db = db.Where("x.org_id = ?", orgid)
  491. }
  492. if startime > 0 {
  493. db = db.Where("x.ctime >=?", startime)
  494. }
  495. if endtime > 0 {
  496. db = db.Where("x.ctime<=?", endtime)
  497. }
  498. if drugcategory > 0 && len(keyword) == 0 {
  499. err = db.Select("x.id,x.warehousing_id,x.drug_id,x.number,x.product_date,x.expiry_date,x.warehousing_count,x.warehouseing_unit,x.stock_max_number,x.stock_min_number,x.price,x.total_price,x.dealer,x.remark,x.org_id,x.is_return,x.warehousing_order,x.type,x.retail_price,x.retail_total_price,x.batch_number,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,t.dose,t.dose_unit,t.last_price,t.manufacturer").Joins("left join xt_base_drug as t on t.id = x.drug_id and t.org_id =?", orgid).Where("t.drug_type = ?", drugcategory).Group("x.drug_id").Count(&total).Offset(offset).Limit(limit).Order("x.ctime desc").Scan(&list).Error
  500. return
  501. }
  502. if drugcategory <= 0 && len(keyword) == 0 {
  503. err = db.Select("x.id,x.warehousing_id,x.drug_id,x.number,x.product_date,x.expiry_date,x.warehousing_count,x.warehouseing_unit,x.stock_max_number,x.stock_min_number,x.price,x.total_price,x.dealer,x.remark,x.org_id,x.is_return,x.warehousing_order,x.type,x.retail_price,x.retail_total_price,x.batch_number,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,t.dose,t.dose_unit,t.last_price,t.manufacturer").Joins("left join xt_base_drug as t on t.id = x.drug_id and t.org_id = ?", orgid).Group("x.drug_id").Count(&total).Offset(offset).Limit(limit).Order("x.ctime desc").Scan(&list).Error
  504. return
  505. }
  506. if len(keyword) > 0 && drugcategory == 0 {
  507. err = db.Select("x.id,x.warehousing_id,x.drug_id,x.number,x.product_date,x.expiry_date,x.warehousing_count,x.warehouseing_unit,x.stock_max_number,x.stock_min_number,x.price,x.total_price,x.dealer,x.remark,x.org_id,x.is_return,x.warehousing_order,x.type,x.retail_price,x.retail_total_price,x.batch_number,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,t.dose,t.dose_unit,t.last_price,t.manufacturer").Joins("left join xt_base_drug as t on t.id = x.drug_id and t.org_id=?", orgid).Where("t.drug_name like ?", likeKey).Group("x.drug_id").Count(&total).Offset(offset).Limit(limit).Order("x.ctime desc").Scan(&list).Error
  508. return
  509. }
  510. if len(keyword) <= 0 && drugcategory == 0 {
  511. err = db.Select("x.id,x.warehousing_id,x.drug_id,x.number,x.product_date,x.expiry_date,x.warehousing_count,x.warehouseing_unit,x.stock_max_number,x.stock_min_number,x.price,x.total_price,x.dealer,x.remark,x.org_id,x.is_return,x.warehousing_order,x.type,x.retail_price,x.retail_total_price,x.batch_number,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,t.dose,t.dose_unit,t.last_price,t.manufacturer").Joins("left join xt_base_drug as t on t.id = x.drug_id and t.org_id = ?", orgid).Group("x.drug_id").Count(&total).Offset(offset).Limit(limit).Order("x.ctime desc").Scan(&list).Error
  512. return
  513. }
  514. if len(keyword) > 0 && drugcategory > 0 {
  515. err = db.Select("x.id,x.warehousing_id,x.drug_id,x.number,x.product_date,x.expiry_date,x.warehousing_count,x.warehouseing_unit,x.stock_max_number,x.stock_min_number,x.price,x.total_price,x.dealer,x.remark,x.org_id,x.is_return,x.warehousing_order,x.type,x.retail_price,x.retail_total_price,x.batch_number,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,t.dose,t.dose_unit,t.last_price,t.manufacturer").Joins("left join xt_base_drug as t on t.id = x.drug_id and t.org_id = ?", orgid).Where("t.drug_type = ? or t.drug_name like ?", drugcategory, likeKey).Group("x.drug_id").Count(&total).Offset(offset).Limit(limit).Order("x.ctime desc").Scan(&list).Error
  516. return
  517. }
  518. return list, total, err
  519. }
  520. func GetAllBaseDurgListCount(page int64, limit int64, keyword string, drugcategory int64, startime int64, endtime int64, orgid int64, storehouse_id int64, drug_id int64) (drug []*models.VmBaseDrug, total int64, err error) {
  521. offset := (page - 1) * limit
  522. db := XTReadDB().Table("xt_base_drug").Where("status = 1")
  523. likeKey := "%" + keyword + "%"
  524. if orgid > 0 {
  525. db = db.Where("org_id = ?", orgid)
  526. }
  527. if drugcategory > 0 {
  528. db = db.Where("drug_type = ?", drugcategory)
  529. }
  530. if len(keyword) > 0 {
  531. db = db.Where("drug_name like ?", likeKey)
  532. }
  533. if drug_id > 0 {
  534. db = db.Where("id = ?", drug_id)
  535. }
  536. err = db.Count(&total).Offset(offset).Limit(limit).Order("ctime desc").Preload("DrugWarehouseInfo", func(db *gorm.DB) *gorm.DB {
  537. if startime > 0 {
  538. db = db.Where("ctime>=?", startime)
  539. }
  540. if endtime > 0 {
  541. db = db.Where("ctime<=?", endtime)
  542. }
  543. if storehouse_id > 0 {
  544. db = db.Where("storehouse_id = ?", storehouse_id)
  545. }
  546. return db.Where("status = 1 and is_check = 1")
  547. }).Preload("DrugCancelStockInfo", func(db *gorm.DB) *gorm.DB {
  548. if startime > 0 {
  549. db = db.Where("ctime>=?", startime)
  550. }
  551. if endtime > 0 {
  552. db = db.Where("ctime<=?", endtime)
  553. }
  554. return db.Where("status = 1")
  555. }).Preload("DrugWarehouse", func(db *gorm.DB) *gorm.DB {
  556. if startime > 0 {
  557. db = db.Where("ctime>=?", startime)
  558. }
  559. if endtime > 0 {
  560. db = db.Where("ctime<=?", endtime)
  561. }
  562. if storehouse_id > 0 {
  563. db = db.Where("storehouse_id = ?", storehouse_id)
  564. }
  565. return db.Group("drug_id,storehouse_id").Where("status = 1")
  566. }).Preload("DrugWarehouseOutInfo", func(db *gorm.DB) *gorm.DB {
  567. if startime > 0 {
  568. db = db.Where("ctime>=?", startime)
  569. }
  570. if endtime > 0 {
  571. db = db.Where("ctime<=?", endtime)
  572. }
  573. return db.Where("status = 1")
  574. }).Find(&drug).Error
  575. return drug, total, err
  576. }
  577. func GetDrugStockFlow(drugid int64, startime int64, endtime int64, page int64, limit int64, orgid int64) (list []*models.StDrugWarehouseInfo, total int64, err error) {
  578. db := XTReadDB().Table("xt_drug_warehouse_info as x").Where("x.status = 1")
  579. table := XTReadDB().Table("xt_base_drug as t").Where("t.status =1 ")
  580. fmt.Println(table)
  581. offset := (page - 1) * limit
  582. if startime > 0 {
  583. db = db.Where("x.ctime >=?", startime)
  584. }
  585. if endtime > 0 {
  586. db = db.Where("x.ctime<=?", endtime)
  587. }
  588. if orgid > 0 {
  589. db = db.Where("x.org_id = ?", orgid)
  590. }
  591. if drugid > 0 {
  592. db = db.Where("x.drug_id = ?", drugid)
  593. }
  594. err = db.Joins("left join xt_base_drug as t on t.id = x.drug_id and t.status = 1 and t.org_id = ?", orgid).Select("x.id,x.warehousing_id,x.drug_id,x.number,x.product_date,x.expiry_date,x.warehousing_count,x.warehouseing_unit,x.max_unit,x.min_unit,x.stock_max_number,x.stock_min_number,x.price,x.total_price,x.dealer,x.remark,x.org_id,x.is_return,x.warehousing_order,x.type,x.retail_price,x.retail_total_price,x.batch_number,x.ctime,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,t.dose,t.dose_unit,t.last_price,t.manufacturer").Offset(offset).Count(&total).Order("x.ctime desc").Scan(&list).Error
  595. return list, total, err
  596. }
  597. func GetDrugStockOutFlow(drugid int64, startime int64, endtime int64, page int64, limit int64, orgid int64, stocktype int64) (list []*models.VmDrugWarehouseOutInfo, total int64, err error) {
  598. db := XTReadDB().Table("xt_drug_warehouse_out_info as x").Where("x.status = 1")
  599. table := XTReadDB().Table("xt_base_drug as t").Where("t.status = 1")
  600. fmt.Println(table)
  601. offset := (page - 1) * limit
  602. if startime > 0 {
  603. db = db.Where("x.ctime >=?", startime)
  604. }
  605. if endtime > 0 {
  606. db = db.Where("x.ctime<=?", endtime)
  607. }
  608. if orgid > 0 {
  609. db = db.Where("x.org_id = ?", orgid)
  610. }
  611. if drugid > 0 {
  612. db = db.Where("x.drug_id = ?", drugid)
  613. }
  614. if stocktype == 1 {
  615. db = db.Where("x.is_sys = 0")
  616. }
  617. if stocktype == 2 {
  618. db = db.Where("x.is_sys = 1")
  619. }
  620. err = db.Select("x.id,x.warehouse_out_id,x.drug_id,x.warehousing_out_target,x.count,x.price,x.total_price,x.product_date,x.expiry_date,x.org_id,x.remark,x.is_cancel,x.warehouse_out_order_number,x.type,x.dealer,x.manufacturer,x.is_sys,x.sys_record_time,x.retail_price,x.retail_total_price,x.warehouse_info_id,x.ctime,x.batch_number,x.count_unit,t.drug_name,t.drug_type,t.min_number,t.min_unit,t.max_unit").Joins("left join xt_base_drug as t on t.id = x.drug_id").Count(&total).Offset(offset).Limit(limit).Order("x.ctime desc").Scan(&list).Error
  621. return list, total, err
  622. }
  623. func GetBatchOrderDetail(drugid int64, orgid int64, page int64, limit int64, startime int64, endtime int64, start_first_time int64, end_first_time int64) (drug []*models.DrugWarehouseInfo, total int64, err error) {
  624. offset := (page - 1) * limit
  625. db := XTReadDB().Model(&drug).Where("status = 1 and is_check = 1")
  626. if drugid > 0 {
  627. db = db.Where("drug_id = ?", drugid)
  628. }
  629. if orgid > 0 {
  630. db = db.Where("org_id = ?", orgid)
  631. }
  632. if startime > 0 {
  633. db = db.Where("ctime >=?", startime)
  634. }
  635. if endtime > 0 {
  636. db = db.Where("ctime <=?", endtime)
  637. }
  638. if start_first_time > 0 {
  639. db = db.Where("expiry_date >=?", start_first_time)
  640. }
  641. if end_first_time > 0 {
  642. db = db.Where("expiry_date <=?", end_first_time)
  643. }
  644. err = db.Count(&total).Offset(offset).Limit(limit).Order("id desc").Find(&drug).Error
  645. return drug, total, err
  646. }
  647. func GetDrugCountList(startime int64, endtime int64, orgid int64) (info []*models.VmDrugWarehouseInfo, err error) {
  648. db := XTReadDB().Table("xt_drug_warehouse_info as x").Where("x.status = 1")
  649. if startime > 0 {
  650. db = db.Where("x.ctime >=?", startime)
  651. }
  652. if endtime > 0 {
  653. db = db.Where("x.ctime<=?", endtime)
  654. }
  655. if orgid > 0 {
  656. db = db.Where("x.org_id = ?", orgid)
  657. }
  658. err = db.Select("sum(x.warehousing_count) as count,x.drug_id").Group("x.drug_id").Scan(&info).Error
  659. return info, err
  660. }
  661. func GetMinCountList(startime int64, endtime int64, orgid int64) (info []*models.DrugWarehouseInfo, err error) {
  662. db := readDb2.Table("xt_drug_warehouse_info as x").Where("x.status = 1")
  663. if startime > 0 {
  664. db = db.Where("x.ctime >=?", startime)
  665. }
  666. if endtime > 0 {
  667. db = db.Where("x.ctime<=?", endtime)
  668. }
  669. if orgid > 0 {
  670. db = db.Where("x.org_id = ?", orgid)
  671. }
  672. err = db.Select("sum(x.warehousing_count) as warehousing_count,x.drug_id").Group("x.drug_id").Scan(&info).Error
  673. return info, err
  674. }
  675. func GetOutDrugCountList(startime int64, endtime int64, orgid int64) (info []*models.VmDrugWarehouseInfo, err error) {
  676. db := XTReadDB().Table("xt_drug_warehouse_out_info as x").Where("x.status = 1")
  677. if startime > 0 {
  678. db = db.Where("x.ctime >=?", startime)
  679. }
  680. if endtime > 0 {
  681. db = db.Where("x.ctime<=?", endtime)
  682. }
  683. if orgid > 0 {
  684. db = db.Where("x.org_id = ?", orgid)
  685. }
  686. err = db.Select("sum(x.count) as count,x.drug_id,x.count_unit").Group("x.drug_id").Find(&info).Error
  687. return info, err
  688. }
  689. func GetAutoDrugCountList(startime int64, endtime int64, orgid int64) (info []*models.DrugAutomaticReduceDetail, err error) {
  690. db := XTReadDB().Table("xt_drug_automatic_reduce_detail as x").Where("x.status = 1")
  691. if startime > 0 {
  692. db = db.Where("x.record_time >=?", startime)
  693. }
  694. if endtime > 0 {
  695. db = db.Where("x.record_time<=?", endtime)
  696. }
  697. if orgid > 0 {
  698. db = db.Where("x.org_id = ?", orgid)
  699. }
  700. err = db.Select("sum(x.count) as count,x.drug_id,x.count_unit").Find(&info).Error
  701. return info, err
  702. }
  703. func GetCancelDrugCountList(startime int64, endtime int64, orgid int64) (info []*models.DrugCancelStockInfo, err error) {
  704. db := XTReadDB().Table(" xt_drug_cancel_stock_info as x").Where("x.status = 1")
  705. if startime > 0 {
  706. db = db.Where("x.ctime >=?", startime)
  707. }
  708. if endtime > 0 {
  709. db = db.Where("x.ctime<=?", endtime)
  710. }
  711. if orgid > 0 {
  712. db = db.Where("x.org_id = ?", orgid)
  713. }
  714. err = db.Select("sum(x.count) as count,x.drug_id").Group("x.drug_id").Scan(&info).Error
  715. return info, err
  716. }
  717. func GetAllCountList(startime int64, endtime int64, orgid int64) (info []*models.DrugWarehouseInfo, err error) {
  718. db := XTReadDB().Table("xt_drug_warehouse_info as x").Where("x.status = 1")
  719. if startime > 0 {
  720. db = db.Where("x.ctime >=?", startime)
  721. }
  722. if endtime > 0 {
  723. db = db.Where("x.ctime<=?", endtime)
  724. }
  725. if orgid > 0 {
  726. db = db.Where("x.org_id = ?", orgid)
  727. }
  728. err = db.Find(&info).Error
  729. return info, err
  730. }
  731. func GetSingleOrderDetail(id int64, orgid int64) (info []*models.VmDrugWarehouseOutInfo, err error) {
  732. db := XTReadDB().Table("xt_drug_warehouse_out_info as x").Where("x.status = 1 and x.count>0")
  733. table := XTReadDB().Table("xt_base_drug as t").Where("t.status = 1")
  734. fmt.Println(table)
  735. if orgid > 0 {
  736. db = db.Where("x.org_id = ?", orgid)
  737. }
  738. if id > 0 {
  739. db = db.Where("x.warehouse_out_id in(?)", id)
  740. }
  741. err = db.Select("x.id,x.warehouse_out_id,x.drug_id,sum(x.count) as count,x.count_unit,x.price,x.product_date,x.expiry_date,x.remark,x.is_cancel,x.warehouse_out_order_number,x.type,x.dealer,t.manufacturer,x.is_sys,x.sys_record_time,x.retail_price as total_price,x.retail_total_price,x.storehouse_id,x.stock_count,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,x.number,x.batch_number,x.admin_user_id,t.dose,t.dose_unit,t.last_price,t.min_price,t.medical_insurance_number,t.retail_price ,x.warehouse_info_id").Joins("left join xt_base_drug as t on t.id = x.drug_id").Group("x.drug_id").Scan(&info).Error
  742. return info, err
  743. }
  744. func GetDrugWarehouseOutDetailSeventy(id int64, org_id int64) (info []*models.DrugWarehouseOutInfo, err error) {
  745. err = XTReadDB().Where("warehouse_out_id in(?) and org_id = ? and status =1", id, org_id).Find(&info).Error
  746. return info, err
  747. }
  748. func GetDrugWarehouseOutDetailNighty(id int64, org_id int64) (info []*models.DrugWarehouseOutInfoNight, err error) {
  749. err = XTReadDB().Where("warehouse_out_id in(?) and org_id = ? and status =1", id, org_id).Preload("Drug", "org_id = ? and status = 1", org_id).Find(&info).Error
  750. return info, err
  751. }
  752. func GetDrugStockFlowDetail(record_time int64, orgid int64) (drugflow []*models.XtDrugAutomaticReduceDetail, err error) {
  753. err = XTReadDB().Where("record_time = ? and org_id = ? and status = 1", record_time, orgid).Preload("XtBaseDrug", "status = 1").Find(&drugflow).Error
  754. return drugflow, err
  755. }
  756. func GetSingeOrderFlow(id int64, orgid int64) (outInfo []*models.VmDrugWarehouseOutInfo, err error) {
  757. db := XTReadDB().Table("xt_drug_warehouse_out_info as x").Where("x.status = 1")
  758. table := XTReadDB().Table("xt_base_drug as t").Where("t.status = 1")
  759. fmt.Println(table)
  760. if orgid > 0 {
  761. db = db.Where("x.org_id = ?", orgid)
  762. }
  763. if id > 0 {
  764. db = db.Where("x.warehouse_out_id in(?)", id)
  765. }
  766. err = db.Select("x.id,x.warehouse_out_id,x.drug_id,x.count,x.count_unit,x.price,x.total_price,x.product_date,x.expiry_date,x.remark,x.is_cancel,x.warehouse_out_order_number,x.type,x.dealer,x.manufacturer,x.is_sys,x.sys_record_time,x.retail_price,x.retail_total_price,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,t.retail_price,x.number,x.batch_number,t.dose,t.dose_unit,t.last_price,t.min_price").Joins("left join xt_base_drug as t on t.id = x.drug_id").Scan(&outInfo).Error
  767. return outInfo, err
  768. }
  769. func GetAllSingleDrugDetail(id int64, orgid int64) (outInfo []*models.VmDrugWarehouseOutInfo, err error) {
  770. db := XTReadDB().Table("xt_drug_warehouse_out_info as x").Where("x.status = 1")
  771. table := XTReadDB().Table("xt_base_drug as t").Where("t.status = 1")
  772. fmt.Println(table)
  773. if orgid > 0 {
  774. db = db.Where("x.org_id = ?", orgid)
  775. }
  776. if id > 0 {
  777. db = db.Where("x.warehouse_out_id = ?", id)
  778. }
  779. err = db.Select("x.id,x.warehouse_out_id,x.drug_id,x.count,x.count_unit,x.price,x.total_price,x.product_date,x.expiry_date,x.remark,x.is_cancel,x.warehouse_out_order_number,x.type,x.dealer,t.manufacturer,x.is_sys,x.sys_record_time,x.retail_price,x.retail_total_price,t.drug_name,t.drug_type,t.max_unit,t.min_unit,t.min_number,x.number,x.batch_number,t.dose,t.dose_unit,t.last_price,t.min_price").Joins("left join xt_base_drug as t on t.id = x.drug_id").Scan(&outInfo).Error
  780. return outInfo, err
  781. }
  782. func GetDrugFlowList(id int64, orgid int64) (stockflow []*models.DrugFlow, err error) {
  783. err = XTReadDB().Where("warehouse_out_id in(?) and user_org_id = ? and status = 1", id, orgid).Preload("BaseDrugLib", "org_id = ? and status = 1", orgid).Preload("DrugWarehouseInfoOne", "org_id = ? and status = 1", orgid).Find(&stockflow).Error
  784. return stockflow, err
  785. }
  786. func GetDrugFlowListGroupById(id int64, orgid int64) (drugFlow []*models.DrugFlowNight, err error) {
  787. err = XTReadDB().Where("warehouse_out_id in(?) and user_org_id = ? and status = 1", id, orgid).Group("warehousing_detail_id").Find(&drugFlow).Error
  788. return drugFlow, err
  789. }
  790. func GetDrugFlowListGroupByIdOne(id int64, orgid int64) (drugFlow []*models.DrugFlow, err error) {
  791. err = XTReadDB().Where("warehouse_out_id in(?) and user_org_id = ? and status = 1", id, orgid).Group("warehousing_detail_id").Find(&drugFlow).Error
  792. return drugFlow, err
  793. }
  794. func FindDrugStockUserDetailByIdThree(id int64, record_time int64, org_id int64) (user []*DrugAutomaticReduceDetail, err error, total int64) {
  795. db := readDb.Model(&user)
  796. db = db.Preload("Drug", "org_id = ? AND status = 1", org_id)
  797. db = db.Preload("Patients", "user_org_id = ? AND status = 1", org_id)
  798. db = db.Preload("DrugWarehouseOutInfo", "drug_id = ? and sys_record_time = ? and status = 1 and org_id = ?", id, record_time, org_id)
  799. db = db.Where("status = 1 AND org_id = ? AND drug_id = ? AND record_time =?", org_id, id, record_time)
  800. db = db.Count(&total)
  801. err = db.Find(&user).Error
  802. return user, err, total
  803. }
  804. func FindeDrugWarehouserInfo(ware_out_id int64, drug_id int64, orgid int64) (outInfo []*models.DrugWarehouseOutInfo, err error) {
  805. err = XTReadDB().Where("warehouse_out_id = ? and drug_id = ? and org_id = ? and status = 1", ware_out_id, drug_id, orgid).Find(&outInfo).Error
  806. return outInfo, err
  807. }
  808. func GetDrugFlowBatch(ware_out_id int64, drug_id int64, orgid int64) (flow []*models.DrugFlow, err error) {
  809. err = XTReadDB().Where("warehouse_out_id = ? and drug_id = ? and user_org_id = ? and status = 1", ware_out_id, drug_id, orgid).Find(&flow).Error
  810. return flow, err
  811. }
  812. func GetDrugWarehouseOutInfoFlow(drug_id int64, start_time int64, end_time int64, user_org_id int64) (info []*models.XtDrugWarehouseOutInfo, err error) {
  813. db := XTReadDB().Model(&info).Where("status = 1")
  814. if start_time > 0 {
  815. db = db.Where("sys_record_time >=?", start_time)
  816. }
  817. if end_time > 0 {
  818. db = db.Where("sys_record_time <=?", end_time)
  819. }
  820. if user_org_id > 0 {
  821. db = db.Where("user_org_id = ?", user_org_id)
  822. }
  823. err = db.Find(&info).Error
  824. return info, err
  825. }
  826. func GetAllBaseDrugListTwenty(orgid int64) (drug []*models.BaseDrugLibTwenty, err error) {
  827. err = XTReadDB().Model(&drug).Where("org_id = ? and status = 1 AND find_in_set('停用',drug_status) = 0", orgid).Find(&drug).Error
  828. return drug, err
  829. }