medicine_img.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package models
  2. import (
  3. db "Medical_ERP/common/initialize"
  4. model2 "Medical_ERP/common/model"
  5. "Medical_ERP/utils"
  6. "github.com/beego/beego/v2/core/logs"
  7. "strings"
  8. )
  9. type MedicineImg struct {
  10. model2.Model
  11. Product string `json:"product" gorm:"size:512;"` // 药品名称
  12. Enterprise string `json:"enterprise" gorm:"size:512;"` // 生产企业
  13. Spec string `json:"spec" gorm:"size:512;"` // 规格
  14. Unit string `json:"unit" gorm:"size:512;"` // 单位 非必填
  15. DosageForm string `json:"dosageForm" gorm:"size:512;"` // 剂型 非必填
  16. ApprovalNumber string `json:"approvalNumber" gorm:"size:128;"` // 批准文号
  17. QualificationNumber string `json:"qualificationNumber" gorm:"size:128;"` // 批签发合格编号
  18. ProductionDate string `json:"productionDate" gorm:"size:128;"` // 生产日期
  19. ExpiryDate string `json:"expiryDate" gorm:"size:128;"` // 失效日期
  20. BatchNumber string `json:"batchNumber" gorm:"size:128;"` // 批号
  21. Qrcode string `json:"qrcode" gorm:"size:256;"` // 追溯码
  22. Img string `json:"img" gorm:"type:longtext"` // 图片 001.jpg,002.jpg,003.jpg
  23. ImgUrl string `json:"imgUrl" gorm:"-"`
  24. SrcList []string `json:"crcList" gorm:"-"`
  25. model2.ControlBy
  26. model2.ModelTime
  27. }
  28. func (e *MedicineImg) TableName() string {
  29. return "medicine_img"
  30. }
  31. func (e *MedicineImg) GetId() interface{} {
  32. return e.Id
  33. }
  34. func SyncMedicineInfoToMedicineImg() {
  35. // 删除表内字段
  36. var tableName []string
  37. err := db.DB.Raw("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME LIKE 'medicine_info_%';").
  38. Scan(&tableName).Error
  39. if err != nil {
  40. logs.Error("db error: %s", err)
  41. }
  42. tx := db.DB.Begin()
  43. for _, v := range tableName {
  44. var info []MedicineInfo
  45. err = tx.Table(v).
  46. Preload("Product").
  47. Preload("Enterprise").
  48. Preload("Spec").
  49. Preload("Unit").
  50. Preload("DosageForm").
  51. Find(&info).
  52. Error
  53. if err != nil {
  54. tx.Rollback()
  55. logs.Error("修改表结构失败: %s", err.Error())
  56. break
  57. }
  58. deptId := strings.Trim(v, "medicine_info_")
  59. for _, i := range info {
  60. img := MedicineImg{
  61. Product: i.Product.Name,
  62. Enterprise: i.Enterprise.Name,
  63. Spec: i.Spec.Name,
  64. Unit: i.Unit.Name,
  65. DosageForm: i.DosageForm.Name,
  66. BatchNumber: i.BatchNumber,
  67. ControlBy: model2.ControlBy{
  68. DeptId: utils.ToInt(deptId),
  69. },
  70. }
  71. err = tx.Model(MedicineImg{}).Create(&img).Error
  72. if err != nil {
  73. tx.Rollback()
  74. logs.Error("修改表结构失败: %s", err.Error())
  75. break
  76. }
  77. }
  78. }
  79. tx.Commit()
  80. }