Browse Source

FUNC:图片管理,生成内部条码

zoie 1 năm trước cách đây
mục cha
commit
e4ecfaa6e5

+ 3 - 2
common/initialize/db.go

@@ -92,8 +92,9 @@ func init() {
 	)
 
 	DB, Err = gorm.Open(mysql.Open(dataSource), &gorm.Config{
-		Logger:               newLogger,
-		DisableAutomaticPing: true,
+		DisableForeignKeyConstraintWhenMigrating: true,
+		Logger:                                   newLogger,
+		DisableAutomaticPing:                     true,
 	})
 
 	if Err != nil {

+ 14 - 13
conf/app.conf

@@ -6,19 +6,19 @@ copyrequestbody = true
 EnableDocs = true
 
 # 数据库配置(Mysql)
-mysqlUrlPort = "192.168.11.77:3306"
-mysqlDB = "medical_erp"
-mysqlUser = "medical_erp"
-mysqlPass= "XMzTDthD4By3ArjG"
-mysqlMaxConns = 100
-MysqlMaxOpen = 200
-# 数据库配置(Mysql)
-# mysqlUrlPort = "127.0.0.1:40306"
-# mysqlDB = "godown"
-# mysqlUser = "godown"
-# mysqlPass= "wCHDXHL35kZGSD8r"
+# mysqlUrlPort = "192.168.11.77:3306"
+# mysqlDB = "medical_erp"
+# mysqlUser = "medical_erp"
+# mysqlPass= "XMzTDthD4By3ArjG"
 # mysqlMaxConns = 100
 # MysqlMaxOpen = 200
+# 数据库配置(Mysql)
+mysqlUrlPort = "127.0.0.1:40306"
+mysqlDB = "godown"
+mysqlUser = "godown"
+mysqlPass= "wCHDXHL35kZGSD8r"
+mysqlMaxConns = 100
+MysqlMaxOpen = 200
 
 # 日志配置
 # 0-控制台输出 1-文件输出 2-文件和控制台输出
@@ -35,8 +35,8 @@ slow_threshold = 200
 maxlines = 10000
 
 #redis
-Redis_address = "192.168.11.77:6379"
-# Redis_address = "127.0.0.1:43379"
+# Redis_address = "192.168.11.77:6379"
+Redis_address = "127.0.0.1:43379"
 Redis_password = ""
 Redis_dbNum = "3"
 
@@ -68,4 +68,5 @@ Qiniu_SecretKey = "KFhkYxTAJ2ZPN3ZS3euTsfWk8-C92rKgkhAMkDRN"
 Qiniu_BUCKET = "godownoss"
 Qiniu_Url = "https://godownoss.coldbaozhida.com/"
 
+# 宝智达溯码平台
 BZD_pcodeUrl = "https://pcode.baozhida.cn/api/"

+ 14 - 15
conf/app2.conf → conf/app1.conf

@@ -6,19 +6,19 @@ copyrequestbody = true
 EnableDocs = true
 
 # 数据库配置(Mysql)
-# mysqlUrlPort = "192.168.11.77:3306"
-# mysqlDB = "medical_erp"
-# mysqlUser = "medical_erp"
-# mysqlPass= "XMzTDthD4By3ArjG"
-# mysqlMaxConns = 100
-# MysqlMaxOpen = 200
-# 数据库配置(Mysql)
-mysqlUrlPort = "127.0.0.1:40306"
-mysqlDB = "godown"
-mysqlUser = "godown"
-mysqlPass= "wCHDXHL35kZGSD8r"
+mysqlUrlPort = "192.168.11.77:3306"
+mysqlDB = "medical_erp"
+mysqlUser = "medical_erp"
+mysqlPass= "XMzTDthD4By3ArjG"
 mysqlMaxConns = 100
 MysqlMaxOpen = 200
+# 数据库配置(Mysql)
+# mysqlUrlPort = "127.0.0.1:40306"
+# mysqlDB = "godown"
+# mysqlUser = "godown"
+# mysqlPass= "wCHDXHL35kZGSD8r"
+# mysqlMaxConns = 100
+# MysqlMaxOpen = 200
 
 # 日志配置
 # 0-控制台输出 1-文件输出 2-文件和控制台输出
@@ -35,8 +35,8 @@ slow_threshold = 200
 maxlines = 10000
 
 #redis
-# Redis_address = "192.168.11.77:6379"
-Redis_address = "127.0.0.1:43379"
+Redis_address = "192.168.11.77:6379"
+# Redis_address = "127.0.0.1:43379"
 Redis_password = ""
 Redis_dbNum = "3"
 
@@ -49,7 +49,7 @@ FilterNotEnterDeptURL = "/api/medicine-template/init"
 
 # 统一身份认证
 # OAuth_baseUrl = "http://192.168.11.77:8100"
-OAuth_baseUrl = "http://127.0.0.1:8000"
+OAuth_baseUrl = "http://127.0.0.1:6400"
 # 服务发现服务信息
 Service_number = "q9YeglML"
 Service_authCode = "3EDJRaagFTVVo2Ilo80nHJfLVN1O1234"
@@ -68,5 +68,4 @@ Qiniu_SecretKey = "KFhkYxTAJ2ZPN3ZS3euTsfWk8-C92rKgkhAMkDRN"
 Qiniu_BUCKET = "godownoss"
 Qiniu_Url = "https://godownoss.coldbaozhida.com/"
 
-# 宝智达溯码平台
 BZD_pcodeUrl = "https://pcode.baozhida.cn/api/"

+ 1 - 1
conf/conf.go

@@ -14,6 +14,6 @@ var OAuthBaseUrl, _ = beego.AppConfig.String("OAuth_baseUrl")
 var Qiniu_AccessKey, _ = beego.AppConfig.String("Qiniu_AccessKey")
 var Qiniu_SecretKey, _ = beego.AppConfig.String("Qiniu_SecretKey")
 var Qiniu_BUCKET, _ = beego.AppConfig.String("Qiniu_BUCKET")
-var OssQiniu = "https://coldoss.coldbaozhida.com"
+var Qiniu_Url, _ = beego.AppConfig.String("Qiniu_Url")
 
 var BZD_pcodeUrl, _ = beego.AppConfig.String("BZD_pcodeUrl")

+ 8 - 0
controllers/medicine_img.go

@@ -8,6 +8,7 @@ import (
 	"Medical_ERP/services"
 	context2 "github.com/beego/beego/v2/adapter/context"
 	"gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth/beegouser"
+	"strings"
 )
 
 type MedicineImgController struct {
@@ -43,6 +44,13 @@ func (c MedicineImgController) List() {
 		c.Error(global.BadRequest, err, err.Error())
 		return
 	}
+	for i := 0; i < len(list); i++ {
+		arr := strings.Split(strings.Trim(list[i].Img, ","), ",")
+		if len(arr) > 0 {
+			list[i].ImgUrl = arr[0]
+		}
+		list[i].SrcList = arr
+	}
 
 	c.PageOK(list, int(count), reqData.GetPageIndex(), reqData.GetPageSize(), "查询成功")
 }

+ 7 - 7
controllers/stock_template.go

@@ -1767,7 +1767,8 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco
 		// 获取药品信息图片
 		img, err := imgSvc.Get(deptId, rootId, product, enterprise, spec, batchNumber)
 		if err == nil && img.Img != "" {
-			imgList = append(temp, img.Img)
+			fmt.Println("==============", img.Img)
+			imgList = append(imgList, img.Img)
 		}
 	}
 	if len(list) < 11 {
@@ -2010,11 +2011,10 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco
 	pdf.SetCharSpacing(0.5)
 	txt := "填表说明:本表供疫苗配送企业、疾病预防控制机构、接种单位疫苗运输时填写;出入库单号为单位编码+年月日+2位流水号;运输超过6小时需记录途中温度,间隔不超过6小时;使用无自动温度显示的冰排保冷设备时,只在启运和达到时填写冰排状态(冻结、冰水混合物、完全融化)。"
 	pdf.MultiCell(&gopdf.Rect{W: 555, H: 50}, txt)
-	imgList = append(imgList,
-		"https://bzdcdn.baozhida.cn/2024-02-18/9be06bd0aa654c4c80fa7ce858db73be.png,https://bzdcdn.baozhida.cn/2024-02-19/85219d304dc44d0ea4ce7f29bbc2c89e.jpg",
-		"https://pic17.997788.com/_pic_search/00/21/61/03/21610311.jpg",
-		"https://file2.renrendoc.com/fileroot_temp3/2021-8/16/599ee5c5-2f8a-4648-ba9b-cf0a663d7e89/599ee5c5-2f8a-4648-ba9b-cf0a663d7e891.gif",
-	)
+	//imgList = append(imgList,
+	//	"https://godownoss.coldbaozhida.com/UpImage/17115067977062dc7f-0354-4e70-aefe-3423338b44be.jpg",
+	//	"https://godownoss.coldbaozhida.com/UpImage/17115068019adbd486-993e-48c5-8155-c2c30265638a.jpg",
+	//)
 	for _, v := range imgList {
 		urlList := strings.Split(strings.Trim(v, ","), ",")
 		for _, url := range urlList {
@@ -2028,7 +2028,7 @@ func (c StockTemplateController) TransportRecordPdf(reqData models.TransportReco
 			imgWidth := float64(imgH.Bounds().Dx())
 			imgHeight := float64(imgH.Bounds().Dy())
 			W, H := imgWidth, imgHeight
-			if imgWidth > imgHeight && imgWidth > 555 {
+			if imgWidth >= imgHeight && imgWidth > 555 {
 				W = 555
 				H = 555 * float64(imgHeight) / float64(imgWidth)
 			}

+ 1 - 1
controllers/upload.go

@@ -28,7 +28,7 @@ func (c *UpFileController) ConfigUpFileToken() {
 		Scope:        conf.Qiniu_BUCKET,
 		InsertOnly:   1,    // 仅能以新增模式上传文件。
 		Expires:      7200, //示例2小时有效期
-		ReturnBody:   `{"key":"` + conf.OssQiniu + `/$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)"}`,
+		ReturnBody:   `{"key":"` + conf.Qiniu_Url + `/$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)"}`,
 		ForceSaveKey: true,
 		SaveKey:      "UpImage/" + Tokey + "." + T_suffix,
 		FsizeLimit:   1024 * 1024 * 100,

+ 3 - 1
main.go

@@ -49,7 +49,9 @@ func main() {
 
 	go InitServiceDiscovery()
 
-	//models.BatchAlterMedicineTemplateTable()
+	//models.BatchAlterMedicineTemplateTable() // 批量修改表结构
+
+	//models.SyncMedicineInfoToMedicineImg()
 
 	fmt.Println(pkg.Green("Server run at:"))
 	fmt.Printf("-  Local:   http://127.0.0.1:%d/ \r\n", conf.Httpport)

+ 16 - 12
models/medicine_Info.go

@@ -4,16 +4,20 @@ import model2 "Medical_ERP/common/model"
 
 type MedicineInfo struct {
 	model2.Model
-	ProductID           int    `json:"productId" gorm:"size:4;"`             // 药品名称id
-	EnterpriseID        int    `json:"enterpriseId" gorm:"size:4;"`          // 生产企业id
-	SpecID              int    `json:"specId" gorm:"size:4;"`                // 规格id
-	UnitID              int    `json:"unitId" gorm:"size:4;"`                // 单位id 非必填
-	DosageFormID        int    `json:"dosageFormId" gorm:"size:4;"`          // 剂型id 非必填
-	ApprovalNumber      string `json:"approvalNumber" gorm:"size:128;"`      // 批准文号
-	QualificationNumber string `json:"qualificationNumber" gorm:"size:128;"` // 批签发合格编号
-	ProductionDate      string `json:"productionDate" gorm:"size:128;"`      // 生产日期
-	ExpiryDate          string `json:"expiryDate" gorm:"size:128;"`          // 失效日期
-	BatchNumber         string `json:"batchNumber" gorm:"size:128;"`         // 批号
-	model2.ControlBy
-	model2.ModelTime
+	ProductID           int        `json:"productId" gorm:"size:4;"`             // 药品名称id
+	EnterpriseID        int        `json:"enterpriseId" gorm:"size:4;"`          // 生产企业id
+	SpecID              int        `json:"specId" gorm:"size:4;"`                // 规格id
+	UnitID              int        `json:"unitId" gorm:"size:4;"`                // 单位id 非必填
+	DosageFormID        int        `json:"dosageFormId" gorm:"size:4;"`          // 剂型id 非必填
+	ApprovalNumber      string     `json:"approvalNumber" gorm:"size:128;"`      // 批准文号
+	QualificationNumber string     `json:"qualificationNumber" gorm:"size:128;"` // 批签发合格编号
+	ProductionDate      string     `json:"productionDate" gorm:"size:128;"`      // 生产日期
+	ExpiryDate          string     `json:"expiryDate" gorm:"size:128;"`          // 失效日期
+	BatchNumber         string     `json:"batchNumber" gorm:"size:128;"`         // 批号
+	Qrcode              string     `json:"qrcode" gorm:"size:256;"`              // 追溯码
+	Product             Product    `json:"product" gorm:"->;foreignkey:ProductID;references:Id"`
+	Enterprise          Enterprise `json:"enterprise" gorm:"->;foreignkey:EnterpriseID;references:Id"`
+	Spec                Spec       `json:"spec" gorm:"->;foreignkey:SpecID;references:Id"`
+	Unit                Unit       `json:"unit" gorm:"->;foreignkey:UnitID;references:Id"`
+	DosageForm          DosageForm `json:"dosageForm" gorm:"->;foreignkey:DosageFormID;references:Id"`
 }

+ 73 - 13
models/medicine_img.go

@@ -1,21 +1,29 @@
 package models
 
-import model2 "Medical_ERP/common/model"
+import (
+	db "Medical_ERP/common/initialize"
+	model2 "Medical_ERP/common/model"
+	"Medical_ERP/utils"
+	"github.com/beego/beego/v2/core/logs"
+	"strings"
+)
 
 type MedicineImg struct {
 	model2.Model
-	Product             string `json:"product" gorm:"size:512;"`             // 药品名称
-	Enterprise          string `json:"enterprise" gorm:"size:512;"`          // 生产企业
-	Spec                string `json:"spec" gorm:"size:512;"`                // 规格
-	Unit                string `json:"unit" gorm:"size:512;"`                // 单位 非必填
-	DosageForm          string `json:"dosageForm" gorm:"size:512;"`          // 剂型 非必填
-	ApprovalNumber      string `json:"approvalNumber" gorm:"size:128;"`      // 批准文号
-	QualificationNumber string `json:"qualificationNumber" gorm:"size:128;"` // 批签发合格编号
-	ProductionDate      string `json:"productionDate" gorm:"size:128;"`      // 生产日期
-	ExpiryDate          string `json:"expiryDate" gorm:"size:128;"`          // 失效日期
-	BatchNumber         string `json:"batchNumber" gorm:"size:128;"`         // 批号
-	Qrcode              string `json:"qrcode" gorm:"size:256;"`              // 追溯码
-	Img                 string `json:"img" gorm:"type:longtext"`             // 图片 001.jpg,002.jpg,003.jpg
+	Product             string   `json:"product" gorm:"size:512;"`             // 药品名称
+	Enterprise          string   `json:"enterprise" gorm:"size:512;"`          // 生产企业
+	Spec                string   `json:"spec" gorm:"size:512;"`                // 规格
+	Unit                string   `json:"unit" gorm:"size:512;"`                // 单位 非必填
+	DosageForm          string   `json:"dosageForm" gorm:"size:512;"`          // 剂型 非必填
+	ApprovalNumber      string   `json:"approvalNumber" gorm:"size:128;"`      // 批准文号
+	QualificationNumber string   `json:"qualificationNumber" gorm:"size:128;"` // 批签发合格编号
+	ProductionDate      string   `json:"productionDate" gorm:"size:128;"`      // 生产日期
+	ExpiryDate          string   `json:"expiryDate" gorm:"size:128;"`          // 失效日期
+	BatchNumber         string   `json:"batchNumber" gorm:"size:128;"`         // 批号
+	Qrcode              string   `json:"qrcode" gorm:"size:256;"`              // 追溯码
+	Img                 string   `json:"img" gorm:"type:longtext"`             // 图片 001.jpg,002.jpg,003.jpg
+	ImgUrl              string   `json:"imgUrl" gorm:"-"`
+	SrcList             []string `json:"crcList" gorm:"-"`
 	model2.ControlBy
 	model2.ModelTime
 }
@@ -27,3 +35,55 @@ func (e *MedicineImg) TableName() string {
 func (e *MedicineImg) GetId() interface{} {
 	return e.Id
 }
+
+func SyncMedicineInfoToMedicineImg() {
+	// 删除表内字段
+	var tableName []string
+	err := db.DB.Raw("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME LIKE 'medicine_info_%';").
+		Scan(&tableName).Error
+	if err != nil {
+		logs.Error("db error: %s", err)
+	}
+	tx := db.DB.Begin()
+
+	for _, v := range tableName {
+		var info []MedicineInfo
+		err = tx.Table(v).
+			Preload("Product").
+			Preload("Enterprise").
+			Preload("Spec").
+			Preload("Unit").
+			Preload("DosageForm").
+			Find(&info).
+			Error
+		if err != nil {
+			tx.Rollback()
+			logs.Error("修改表结构失败: %s", err.Error())
+			break
+		}
+		deptId := strings.Trim(v, "medicine_info_")
+		for _, i := range info {
+			img := MedicineImg{
+				Product:     i.Product.Name,
+				Enterprise:  i.Enterprise.Name,
+				Spec:        i.Spec.Name,
+				Unit:        i.Unit.Name,
+				DosageForm:  i.DosageForm.Name,
+				BatchNumber: i.BatchNumber,
+				ControlBy: model2.ControlBy{
+					DeptId: utils.ToInt(deptId),
+				},
+			}
+			err = tx.Model(MedicineImg{}).Create(&img).Error
+			if err != nil {
+				tx.Rollback()
+				logs.Error("修改表结构失败: %s", err.Error())
+				break
+			}
+		}
+
+	}
+
+	tx.Commit()
+
+}

+ 1 - 1
routers/router.go

@@ -25,6 +25,6 @@ func init() {
 	beego.Router("/api/role-api", &controllers.RoleApi{}, "*:UpdateRoleApi")
 
 	// 文件上传
-	beego.Router("/UpFileToken", &controllers.UpFileController{}, "*:ConfigUpFileToken")
+	beego.Router("/api/UpFileToken", &controllers.UpFileController{}, "*:ConfigUpFileToken")
 
 }

+ 2 - 1
services/product_code.go

@@ -2,6 +2,7 @@ package services
 
 import (
 	"Medical_ERP/common/actions"
+	cDto "Medical_ERP/common/dto"
 	"Medical_ERP/common/global"
 	db "Medical_ERP/common/initialize"
 	model2 "Medical_ERP/common/model"
@@ -62,7 +63,7 @@ func (e *ProductCode) GetPage(c *dto.ProductCodePageReq, list *[]models.ProductC
 	err = db.DB.Model(&data).
 		Scopes(
 			ProductCodeNameScopes(c.Name),
-			//cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
+			cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
 			actions.Permission(data.TableName(), p),
 		).
 		Find(list).

+ 6 - 6
services/stock.go

@@ -39,8 +39,8 @@ func (e *Stock) StockIn(c *dto.StockInInsertReq) error {
 			ExpiryDate:          c.ExpiryDate,
 			BatchNumber:         c.BatchNumber,
 		}
-		medicineInfo.SetDeptId(c.DeptId)
-		medicineInfo.SetCreateBy(c.CreateBy)
+		//medicineInfo.SetDeptId(c.DeptId)
+		//medicineInfo.SetCreateBy(c.CreateBy)
 		err = tx.Create(&medicineInfo).Error
 		if err != nil {
 			tx.Rollback()
@@ -123,8 +123,8 @@ func (e *Stock) StockInStockInList(c *dto.StockInInsertReq) error {
 			ExpiryDate:          c.ExpiryDate,
 			BatchNumber:         c.BatchNumber,
 		}
-		medicineInfo.SetDeptId(c.DeptId)
-		medicineInfo.SetCreateBy(c.CreateBy)
+		//medicineInfo.SetDeptId(c.DeptId)
+		//medicineInfo.SetCreateBy(c.CreateBy)
 		err = tx.Create(&medicineInfo).Error
 		if err != nil {
 			tx.Rollback()
@@ -269,8 +269,8 @@ func (e *Stock) InsertMedicineInfo(c *dto.StockInInsertReq) (medicineInfo models
 		ExpiryDate:          c.ExpiryDate,
 		BatchNumber:         c.BatchNumber,
 	}
-	data.SetDeptId(c.DeptId)
-	data.SetCreateBy(c.CreateBy)
+	//data.SetDeptId(c.DeptId)
+	//data.SetCreateBy(c.CreateBy)
 	err = db.DB.Create(&data).Error
 	if err != nil {
 		logs.Error("db error: %s", err)