Browse Source

11月8日库存管理

XMLWAN 3 years ago
parent
commit
c60c892625

+ 1 - 1
conf/app.conf View File

1
 appname = 血透
1
 appname = 血透
2
-httpport = 9529
2
+httpport = 9531
3
 runmode = dev
3
 runmode = dev
4
 
4
 
5
 #
5
 #

File diff suppressed because it is too large
+ 514 - 433
controllers/his_api_controller.go


+ 12 - 0
models/drug.go View File

75
 	return "xt_base_drug"
75
 	return "xt_base_drug"
76
 }
76
 }
77
 
77
 
78
+type BaseDrugLibSeven struct {
79
+	ID        int64  `gorm:"column:id" json:"id" form:"id"`
80
+	DrugName  string `gorm:"column:drug_name" json:"drug_name" form:"drug_name"`
81
+	MaxUnit   string `gorm:"column:max_unit" json:"max_unit" form:"max_unit"`
82
+	MinNumber int64  `gorm:"column:min_number" json:"min_number" form:"min_number"`
83
+	MinUnit   string `gorm:"column:min_unit" json:"min_unit" form:"min_unit"`
84
+}
85
+
86
+func (BaseDrugLibSeven) TableName() string {
87
+	return "xt_base_drug"
88
+}
89
+
78
 type DrugUnitSafeguard struct {
90
 type DrugUnitSafeguard struct {
79
 	ID               int64  `gorm:"column:id" json:"id" form:"id"`
91
 	ID               int64  `gorm:"column:id" json:"id" form:"id"`
80
 	Unit             string `gorm:"column:unit" json:"unit" form:"unit"`
92
 	Unit             string `gorm:"column:unit" json:"unit" form:"unit"`

+ 9 - 0
models/drug_stock.go View File

84
 	return "xt_drug_warehouse_info"
84
 	return "xt_drug_warehouse_info"
85
 }
85
 }
86
 
86
 
87
+type DrugWarehouseInfoSeven struct {
88
+	StockMaxNumber int64 `gorm:"column:stock_max_number" json:"stock_max_number" form:"stock_max_number"`
89
+	StockMinNumber int64 `gorm:"column:stock_min_number" json:"stock_min_number" form:"stock_min_number"`
90
+}
91
+
92
+func (DrugWarehouseInfoSeven) TableName() string {
93
+	return "xt_drug_warehouse_info"
94
+}
95
+
87
 type DrugWarehouseOut struct {
96
 type DrugWarehouseOut struct {
88
 	ID                      int64         `gorm:"column:id" json:"id" form:"id"`
97
 	ID                      int64         `gorm:"column:id" json:"id" form:"id"`
89
 	WarehouseOutOrderNumber string        `gorm:"column:warehouse_out_order_number" json:"warehouse_out_order_number" form:"warehouse_out_order_number"`
98
 	WarehouseOutOrderNumber string        `gorm:"column:warehouse_out_order_number" json:"warehouse_out_order_number" form:"warehouse_out_order_number"`

+ 9 - 0
models/good_models.go View File

87
 	return "xt_good_information"
87
 	return "xt_good_information"
88
 }
88
 }
89
 
89
 
90
+type GoodInfoSeven struct {
91
+	ID       int64  `gorm:"column:id" json:"id" form:"id"`
92
+	GoodName string `gorm:"column:good_name" json:"good_name" form:"good_name"`
93
+}
94
+
95
+func (GoodInfoSeven) TableName() string {
96
+	return "xt_good_information"
97
+}
98
+
90
 type GoodsTypeOne struct {
99
 type GoodsTypeOne struct {
91
 	ID             int64       `gorm:"column:id" json:"id"`
100
 	ID             int64       `gorm:"column:id" json:"id"`
92
 	TypeCode       string      `gorm:"column:type_code" json:"type_code"`
101
 	TypeCode       string      `gorm:"column:type_code" json:"type_code"`

+ 8 - 0
models/stock_models.go View File

137
 	return "xt_warehouse_info"
137
 	return "xt_warehouse_info"
138
 }
138
 }
139
 
139
 
140
+type WarehousingInfoSeven struct {
141
+	StockCount int64 `gorm:"column:stock_count" json:"stock_count" form:"stock_count"`
142
+}
143
+
144
+func (WarehousingInfoSeven) TableName() string {
145
+	return "xt_warehouse_info"
146
+}
147
+
140
 type VmWarehousingInfo struct {
148
 type VmWarehousingInfo struct {
141
 	ID                int64       `gorm:"column:id" json:"id"`
149
 	ID                int64       `gorm:"column:id" json:"id"`
142
 	WarehousingId     int64       `gorm:"column:warehousing_id" json:"warehousing_id"`
150
 	WarehousingId     int64       `gorm:"column:warehousing_id" json:"warehousing_id"`

+ 5 - 0
service/manage_center_service.go View File

173
 	return
173
 	return
174
 }
174
 }
175
 
175
 
176
+func FindBaseDrugLibRecordSeven(org_id int64, id int64) (lib models.BaseDrugLibSeven, err error) {
177
+	err = readDb.Select("id,drug_name,max_unit,min_number,min_unit").Where("org_id = ? AND id = ? AND status = 1", org_id, id).First(&lib).Error
178
+	return
179
+}
180
+
176
 func GetDrugAutoWarehouseOut(patient_id int64, advicedate int64, drugid int64) (*models.DrugWarehouseOutInfo, error) {
181
 func GetDrugAutoWarehouseOut(patient_id int64, advicedate int64, drugid int64) (*models.DrugWarehouseOutInfo, error) {
177
 	detail := models.DrugWarehouseOutInfo{}
182
 	detail := models.DrugWarehouseOutInfo{}
178
 	err := XTReadDB().Model(&detail).Where("patient_id = ? and sys_record_time =? and drug_id = ? and status = 1", patient_id, advicedate, drugid).Find(&detail).Error
183
 	err := XTReadDB().Model(&detail).Where("patient_id = ? and sys_record_time =? and drug_id = ? and status = 1", patient_id, advicedate, drugid).Find(&detail).Error

+ 17 - 0
service/stock_service.go View File

3563
 	return
3563
 	return
3564
 }
3564
 }
3565
 
3565
 
3566
+func FindGoodInfoByIdSeven(id int64) (goodInfo models.GoodInfoSeven, err error) {
3567
+	err = readDb.Select("id,good_name").Where("id = ? AND status = 1", id).First(&goodInfo).Error
3568
+	return
3569
+}
3570
+
3566
 func GetGoodWarehouseInfo(good_id int64) (info []*models.WarehousingInfo, err error) {
3571
 func GetGoodWarehouseInfo(good_id int64) (info []*models.WarehousingInfo, err error) {
3567
 
3572
 
3568
 	err = readDb.Where("good_id = ? and status = 1 and stock_count<>0", good_id).Find(&info).Error
3573
 	err = readDb.Where("good_id = ? and status = 1 and stock_count<>0", good_id).Find(&info).Error
3569
 	return info, err
3574
 	return info, err
3570
 }
3575
 }
3571
 
3576
 
3577
+func GetGoodWarehouseInfoSeven(good_id int64) (info []*models.WarehousingInfoSeven, err error) {
3578
+
3579
+	err = readDb.Select("stock_count").Where("good_id = ? and status = 1 and stock_count<>0", good_id).Find(&info).Error
3580
+	return info, err
3581
+}
3582
+
3572
 func GetAllStockList(page int64, limit int64, startime int64, endtime int64, good_type int64, keyword string, orgid int64) (info []*models.VmWarehousingInfo, total int64, err error) {
3583
 func GetAllStockList(page int64, limit int64, startime int64, endtime int64, good_type int64, keyword string, orgid int64) (info []*models.VmWarehousingInfo, total int64, err error) {
3573
 
3584
 
3574
 	offset := (page - 1) * limit
3585
 	offset := (page - 1) * limit
4669
 	return info, err
4680
 	return info, err
4670
 }
4681
 }
4671
 
4682
 
4683
+func GetDrugWarehouseInfoPrescriptionSeven(drugid int64, orgid int64) (info []*models.DrugWarehouseInfoSeven, err error) {
4684
+
4685
+	err = XTReadDB().Select("id,stock_max_number,stock_min_number").Where("drug_id = ? and org_id =? and status = 1", drugid, orgid).Find(&info).Error
4686
+	return info, err
4687
+}
4688
+
4672
 func GetHisAdviceListByDrugId(drugid int64, patient_id int64, advice_date int64) (models.HisDoctorAdviceInfo, error) {
4689
 func GetHisAdviceListByDrugId(drugid int64, patient_id int64, advice_date int64) (models.HisDoctorAdviceInfo, error) {
4673
 
4690
 
4674
 	info := models.HisDoctorAdviceInfo{}
4691
 	info := models.HisDoctorAdviceInfo{}

+ 20 - 6
service/warhouse_service.go View File

451
 // 药品出库 递归方式
451
 // 药品出库 递归方式
452
 func HisDrugDeliverInfo(orgID int64, prescribingNumber float64, warehouseout *models.DrugWarehouseOut, drup *models.BaseDrugLib, advice *models.HisDoctorAdviceInfo) (err error) {
452
 func HisDrugDeliverInfo(orgID int64, prescribingNumber float64, warehouseout *models.DrugWarehouseOut, drup *models.BaseDrugLib, advice *models.HisDoctorAdviceInfo) (err error) {
453
 
453
 
454
+	//fmt.Println("进来了吗323222222222222222222222222222222222222222222222222222222222222222222")
454
 	// 判断处方里药品单位是拆零单位还是包装单位,	如果是包装单位,则根据规格,将包装数量转为拆零数量
455
 	// 判断处方里药品单位是拆零单位还是包装单位,	如果是包装单位,则根据规格,将包装数量转为拆零数量
455
 	var deliver_number int64 = 0
456
 	var deliver_number int64 = 0
456
 	var stock_number int64 = 0
457
 	var stock_number int64 = 0
579
 		var maxNumber int64 = 0
580
 		var maxNumber int64 = 0
580
 		var minNumber int64 = 0
581
 		var minNumber int64 = 0
581
 
582
 
583
+		//fmt.Println("deliver_number23332323232333232323233232323232",deliver_number)
582
 		maxNumber = deliver_number / drup.MinNumber
584
 		maxNumber = deliver_number / drup.MinNumber
583
-		minNumber = deliver_number % drup.MinNumber
585
+
586
+		if deliver_number <= drup.MinNumber {
587
+			minNumber = deliver_number % drup.MinNumber
588
+		} else {
589
+			minNumber = deliver_number
590
+		}
591
+
592
+		if deliver_number <= drup.MinNumber && warehouse.StockMaxNumber == 0 {
593
+			minNumber = deliver_number
594
+		}
595
+
584
 		if warehouse.StockMaxNumber == 0 && drup.MaxUnit == drup.MinUnit {
596
 		if warehouse.StockMaxNumber == 0 && drup.MaxUnit == drup.MinUnit {
585
 			minNumber = maxNumber
597
 			minNumber = maxNumber
586
 		}
598
 		}
587
 
599
 
588
 		if drup.MaxUnit != drup.MinUnit {
600
 		if drup.MaxUnit != drup.MinUnit {
589
-			if warehouse.StockMaxNumber < maxNumber {
601
+			if warehouse.StockMaxNumber < maxNumber && warehouse.StockMinNumber < minNumber {
590
 				return errors.New("库存数量不足")
602
 				return errors.New("库存数量不足")
591
 			}
603
 			}
592
 		}
604
 		}
593
 
605
 
594
 		warehouse.StockMaxNumber = warehouse.StockMaxNumber - maxNumber
606
 		warehouse.StockMaxNumber = warehouse.StockMaxNumber - maxNumber
607
+		//fmt.Println("最大单位23323232323232332323233232323",warehouse.StockMaxNumber)
595
 		if warehouse.StockMaxNumber < 0 {
608
 		if warehouse.StockMaxNumber < 0 {
596
 			warehouse.StockMaxNumber = 0
609
 			warehouse.StockMaxNumber = 0
597
 		}
610
 		}
598
 
611
 
599
 		warehouse.Mtime = time.Now().Unix()
612
 		warehouse.Mtime = time.Now().Unix()
600
-
613
+		//fmt.Println("最小单位2323223233232233233232323232323323232",warehouse.StockMinNumber)
614
+		//fmt.Println("最小换算量233232332322323322332323232332323223",minNumber)
601
 		if warehouse.StockMinNumber < minNumber {
615
 		if warehouse.StockMinNumber < minNumber {
602
 			warehouse.StockMaxNumber = warehouse.StockMaxNumber - 1
616
 			warehouse.StockMaxNumber = warehouse.StockMaxNumber - 1
603
 			warehouse.StockMinNumber = warehouse.StockMinNumber + drup.MinNumber - minNumber
617
 			warehouse.StockMinNumber = warehouse.StockMinNumber + drup.MinNumber - minNumber
604
 		} else {
618
 		} else {
605
-
619
+			//fmt.Println("hhhhhhhhhhhhhhhhhhhhhhhhh",warehouse.StockMinNumber,minNumber)
606
 			warehouse.StockMinNumber = warehouse.StockMinNumber - minNumber
620
 			warehouse.StockMinNumber = warehouse.StockMinNumber - minNumber
607
-
621
+			//fmt.Println("我的魏2232332322323323",warehouse.StockMinNumber)
608
 		}
622
 		}
609
 
623
 
610
 		if drup.MaxUnit != drup.MinUnit {
624
 		if drup.MaxUnit != drup.MinUnit {
611
-			if warehouse.StockMaxNumber < 0 {
625
+			if warehouse.StockMaxNumber < 0 && warehouse.StockMinNumber < 0 {
612
 				return errors.New("库存数量不足")
626
 				return errors.New("库存数量不足")
613
 			}
627
 			}
614
 		}
628
 		}