Parcourir la source

Merge branch '20211122' of http://git.shengws.com/csx/XT_New into 20211122

csx il y a 3 ans
Parent
révision
011aec42f7

+ 2 - 2
conf/app.conf Voir le fichier

@@ -1,6 +1,6 @@
1 1
 appname = 血透
2
-httpport = 9529
3
-runmode = dev
2
+httpport = 9531
3
+runmode = prod
4 4
 
5 5
 #
6 6
 copyrequestbody = true

+ 0 - 2
controllers/drug_stock_api_contorller.go Voir le fichier

@@ -1337,8 +1337,6 @@ func (c *StockDrugApiController) CreateDrugWarehouseOut() {
1337 1337
 
1338 1338
 	var warehousingOutInfo []*models.DrugWarehouseOutInfo
1339 1339
 
1340
-	//var drugFlow []*models.DrugFlow
1341
-
1342 1340
 	if dataBody["stockOut"] != nil && reflect.TypeOf(dataBody["stockOut"]).String() == "[]interface {}" {
1343 1341
 		thisStockIn, _ := dataBody["stockOut"].([]interface{})
1344 1342
 

+ 8 - 1
controllers/manager_center_api_controller.go Voir le fichier

@@ -1495,6 +1495,8 @@ func (c *ManagerCenterApiController) CreateGoodInfo() {
1495 1495
 	packing_price, _ := c.GetFloat("packing_price")
1496 1496
 	min_unit := c.GetString("min_unit")
1497 1497
 	default_count_unit := c.GetString("default_count_unit")
1498
+	is_user, _ := c.GetInt64("is_user")
1499
+	number := c.GetString("number")
1498 1500
 	adminUserInfo := c.GetAdminUserInfo()
1499 1501
 
1500 1502
 	totals := service.FindGoodInfoByNameTwo(specification_name, adminUserInfo.CurrentOrgId, good_id, good_name)
@@ -1555,6 +1557,8 @@ func (c *ManagerCenterApiController) CreateGoodInfo() {
1555 1557
 		MinUnit:                     min_unit,
1556 1558
 		RegisterNumber:              register_number,
1557 1559
 		ProvincesCode:               provinces_code,
1560
+		IsUser:                      is_user,
1561
+		Number:                      number,
1558 1562
 	}
1559 1563
 	err, goodInfos := service.AddSigleGoodInfo(&goodInfo)
1560 1564
 	if err == nil {
@@ -1620,7 +1624,8 @@ func (c *ManagerCenterApiController) ModifyGoodInfo() {
1620 1624
 	min_unit := c.GetString("min_unit")
1621 1625
 	total, _ := c.GetFloat("total")
1622 1626
 	register_number := c.GetString("register_number")
1623
-
1627
+	is_user, _ := c.GetInt64("is_user")
1628
+	number := c.GetString("number")
1624 1629
 	adminUserInfo := c.GetAdminUserInfo()
1625 1630
 
1626 1631
 	goodInfo := models.GoodInfo{
@@ -1673,6 +1678,8 @@ func (c *ManagerCenterApiController) ModifyGoodInfo() {
1673 1678
 		MinUnit:                     min_unit,
1674 1679
 		Total:                       total,
1675 1680
 		RegisterNumber:              register_number,
1681
+		IsUser:                      is_user,
1682
+		Number:                      number,
1676 1683
 	}
1677 1684
 
1678 1685
 	totals := service.FindGoodInfoByNameOne(specification_name, adminUserInfo.CurrentOrgId, good_id, id, good_name)

Fichier diff supprimé car celui-ci est trop grand
+ 663 - 163
controllers/supply_order_api_contorller.go


+ 75 - 68
models/drug_stock.go Voir le fichier

@@ -52,34 +52,35 @@ type DrugWarehouseInfoSix struct {
52 52
 }
53 53
 
54 54
 type DrugWarehouseInfo struct {
55
-	ID                int64   `gorm:"column:id" json:"id" form:"id"`
56
-	WarehousingId     int64   `gorm:"column:warehousing_id" json:"warehousing_id" form:"warehousing_id"`
57
-	DrugId            int64   `gorm:"column:drug_id" json:"drug_id" form:"drug_id"`
58
-	Number            string  `gorm:"column:number" json:"number" form:"number"`
59
-	ProductDate       int64   `gorm:"column:product_date" json:"product_date" form:"product_date"`
60
-	ExpiryDate        int64   `gorm:"column:expiry_date" json:"expiry_date" form:"expiry_date"`
61
-	WarehousingCount  int64   `gorm:"column:warehousing_count" json:"warehousing_count" form:"warehousing_count"`
62
-	Price             float64 `gorm:"column:price" json:"price" form:"price"`
63
-	TotalPrice        float64 `gorm:"column:total_price" json:"total_price" form:"total_price"`
64
-	Dealer            int64   `gorm:"column:dealer" json:"dealer" form:"dealer"`
65
-	Manufacturer      int64   `gorm:"column:manufacturer" json:"manufacturer" form:"manufacturer"`
66
-	Remark            string  `gorm:"column:remark" json:"remark" form:"remark"`
67
-	Ctime             int64   `gorm:"column:ctime" json:"ctime" form:"ctime"`
68
-	Mtime             int64   `gorm:"column:mtime" json:"mtime" form:"mtime"`
69
-	Status            int64   `gorm:"column:status" json:"status" form:"status"`
70
-	OrgId             int64   `gorm:"column:org_id" json:"org_id" form:"org_id"`
71
-	IsReturn          int64   `gorm:"column:is_return" json:"is_return" form:"is_return"`
72
-	WarehousingOrder  string  `gorm:"column:warehousing_order" json:"warehousing_order" form:"warehousing_order"`
73
-	Type              int64   `gorm:"column:type" json:"type" form:"type"`
74
-	RetailPrice       float64 `gorm:"column:retail_price" json:"retail_price" form:"retail_price"`
75
-	RetailTotalPrice  float64 `gorm:"column:retail_total_price" json:"retail_total_price" form:"retail_total_price"`
76
-	BatchNumber       string  `gorm:"column:batch_number" json:"batch_number" form:"batch_number"`
77
-	MaxUnit           string  `gorm:"column:max_unit" json:"max_unit" form:"max_unit"`
78
-	MinUnit           string  `gorm:"column:min_unit" json:"min_unit" form:"min_unit"`
79
-	StockMaxNumber    int64   `gorm:"column:stock_max_number" json:"stock_max_number" form:"stock_max_number"`
80
-	StockMinNumber    int64   `gorm:"column:stock_min_number" json:"stock_min_number" form:"stock_min_number"`
81
-	WarehousingInfoId int64   `gorm:"column:warehousing_info_id" json:"warehousing_info_id" form:"warehousing_info_id"`
82
-	SupplyWarehouseId int64   `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
55
+	ID                        int64   `gorm:"column:id" json:"id" form:"id"`
56
+	WarehousingId             int64   `gorm:"column:warehousing_id" json:"warehousing_id" form:"warehousing_id"`
57
+	DrugId                    int64   `gorm:"column:drug_id" json:"drug_id" form:"drug_id"`
58
+	Number                    string  `gorm:"column:number" json:"number" form:"number"`
59
+	ProductDate               int64   `gorm:"column:product_date" json:"product_date" form:"product_date"`
60
+	ExpiryDate                int64   `gorm:"column:expiry_date" json:"expiry_date" form:"expiry_date"`
61
+	WarehousingCount          int64   `gorm:"column:warehousing_count" json:"warehousing_count" form:"warehousing_count"`
62
+	Price                     float64 `gorm:"column:price" json:"price" form:"price"`
63
+	TotalPrice                float64 `gorm:"column:total_price" json:"total_price" form:"total_price"`
64
+	Dealer                    int64   `gorm:"column:dealer" json:"dealer" form:"dealer"`
65
+	Manufacturer              int64   `gorm:"column:manufacturer" json:"manufacturer" form:"manufacturer"`
66
+	Remark                    string  `gorm:"column:remark" json:"remark" form:"remark"`
67
+	Ctime                     int64   `gorm:"column:ctime" json:"ctime" form:"ctime"`
68
+	Mtime                     int64   `gorm:"column:mtime" json:"mtime" form:"mtime"`
69
+	Status                    int64   `gorm:"column:status" json:"status" form:"status"`
70
+	OrgId                     int64   `gorm:"column:org_id" json:"org_id" form:"org_id"`
71
+	IsReturn                  int64   `gorm:"column:is_return" json:"is_return" form:"is_return"`
72
+	WarehousingOrder          string  `gorm:"column:warehousing_order" json:"warehousing_order" form:"warehousing_order"`
73
+	Type                      int64   `gorm:"column:type" json:"type" form:"type"`
74
+	RetailPrice               float64 `gorm:"column:retail_price" json:"retail_price" form:"retail_price"`
75
+	RetailTotalPrice          float64 `gorm:"column:retail_total_price" json:"retail_total_price" form:"retail_total_price"`
76
+	BatchNumber               string  `gorm:"column:batch_number" json:"batch_number" form:"batch_number"`
77
+	MaxUnit                   string  `gorm:"column:max_unit" json:"max_unit" form:"max_unit"`
78
+	MinUnit                   string  `gorm:"column:min_unit" json:"min_unit" form:"min_unit"`
79
+	StockMaxNumber            int64   `gorm:"column:stock_max_number" json:"stock_max_number" form:"stock_max_number"`
80
+	StockMinNumber            int64   `gorm:"column:stock_min_number" json:"stock_min_number" form:"stock_min_number"`
81
+	WarehousingInfoId         int64   `gorm:"column:warehousing_info_id" json:"warehousing_info_id" form:"warehousing_info_id"`
82
+	SupplyWarehouseId         int64   `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
83
+	SupplyWarehouseDetailInfo int64   `gorm:"column:supply_warehouse_detail_info" json:"supply_warehouse_detail_info" form:"supply_warehouse_detail_info"`
83 84
 }
84 85
 
85 86
 func (DrugWarehouseInfo) TableName() string {
@@ -113,6 +114,8 @@ type DrugWarehouseOut struct {
113 114
 	IsSys                   int64         `gorm:"column:is_sys" json:"is_sys" form:"is_sys"`
114 115
 	Manufacturers           *Manufacturer `gorm:"ForeignKey:Manufacturer;AssociationForeignKey:ID" json:"manufacturers"`
115 116
 	Dealers                 *Dealer       `gorm:"ForeignKey:Dealer;AssociationForeignKey:ID" json:"dealers"`
117
+	SupplyCancelOutId       int64         `gorm:"column:supply_cancel_out_id" json:"supply_cancel_out_id" form:"supply_cancel_out_id"`
118
+	SupplyWarehouseId       int64         `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
116 119
 }
117 120
 
118 121
 func (DrugWarehouseOut) TableName() string {
@@ -149,6 +152,8 @@ type DrugWarehouseOutInfo struct {
149 152
 	PatientId               int64   `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
150 153
 	WarehouseInfoId         int64   `gorm:"column:warehouse_info_id" json:"warehouse_info_id" form:"warehouse_info_id"`
151 154
 	AdviceId                int64   `gorm:"column:advice_id" json:"advice_id" form:"advice_id"`
155
+	SupplyCancelOutId       int64   `gorm:"column:supply_cancel_out_id" json:"supply_cancel_out_id" form:"supply_cancel_out_id"`
156
+	SupplyWarehouseId       int64   `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
152 157
 }
153 158
 
154 159
 func (DrugWarehouseOutInfo) TableName() string {
@@ -343,46 +348,48 @@ type StDrugWarehouseOutInfo struct {
343 348
 }
344 349
 
345 350
 type DrugFlow struct {
346
-	ID                      int64                `gorm:"column:id" json:"id" form:"id"`
347
-	WarehousingId           int64                `gorm:"column:warehousing_id" json:"warehousing_id" form:"warehousing_id"`
348
-	DrugId                  int64                `gorm:"column:drug_id" json:"drug_id" form:"drug_id"`
349
-	Number                  string               `gorm:"column:number" json:"number" form:"number"`
350
-	BatchNumber             string               `gorm:"column:batch_number" json:"batch_number" form:"batch_number"`
351
-	Count                   int64                `gorm:"column:count" json:"count" form:"count"`
352
-	UserOrgId               int64                `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
353
-	PatientId               int64                `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
354
-	SystemTime              int64                `gorm:"column:system_time" json:"system_time" form:"system_time"`
355
-	ConsumableType          int64                `gorm:"column:consumable_type" json:"consumable_type" form:"consumable_type"`
356
-	IsSys                   int64                `gorm:"column:is_sys" json:"is_sys" form:"is_sys"`
357
-	WarehousingOrder        string               `gorm:"column:warehousing_order" json:"warehousing_order" form:"warehousing_order"`
358
-	WarehouseOutId          int64                `gorm:"column:warehouse_out_id" json:"warehouse_out_id" form:"warehouse_out_id"`
359
-	WarehouseOutOrderNumber string               `gorm:"column:warehouse_out_order_number" json:"warehouse_out_order_number" form:"warehouse_out_order_number"`
360
-	IsEdit                  int64                `gorm:"column:is_edit" json:"is_edit" form:"is_edit"`
361
-	CancelStockId           int64                `gorm:"column:cancel_stock_id" json:"cancel_stock_id" form:"cancel_stock_id"`
362
-	CancelOrderNumber       string               `gorm:"column:cancel_order_number" json:"cancel_order_number" form:"cancel_order_number"`
363
-	Manufacturer            int64                `gorm:"column:manufacturer" json:"manufacturer" form:"manufacturer"`
364
-	Dealer                  int64                `gorm:"column:dealer" json:"dealer" form:"dealer"`
365
-	Creator                 int64                `gorm:"column:creator" json:"creator" form:"creator"`
366
-	UpdateCreator           int64                `gorm:"column:update_creator" json:"update_creator" form:"update_creator"`
367
-	Status                  int64                `gorm:"column:status" json:"status" form:"status"`
368
-	Ctime                   int64                `gorm:"column:ctime" json:"ctime" form:"ctime"`
369
-	Mtime                   int64                `gorm:"column:mtime" json:"mtime" form:"mtime"`
370
-	Price                   float64              `gorm:"column:price" json:"price" form:"price"`
371
-	WarehousingDetailId     int64                `gorm:"column:warehousing_detail_id" json:"warehousing_detail_id" form:"warehousing_detail_id"`
372
-	WarehouseOutDetailId    int64                `gorm:"column:warehouse_out_detail_id" json:"warehouse_out_detail_id" form:"warehouse_out_detail_id"`
373
-	CancelOutDetailId       int64                `gorm:"column:cancel_out_detail_id" json:"cancel_out_detail_id" form:"cancel_out_detail_id"`
374
-	ExpireDate              int64                `gorm:"column:expire_date" json:"expire_date" form:"expire_date"`
375
-	ProductDate             int64                `gorm:"column:product_date" json:"product_date" form:"product_date"`
376
-	MaxUnit                 string               `gorm:"column:max_unit" json:"max_unit" form:"max_unit"`
377
-	MinUnit                 string               `gorm:"column:min_unit" json:"min_unit" form:"min_unit"`
378
-	StockMaxNumber          int64                `gorm:"column:stock_max_number" json:"stock_max_number" form:"stock_max_number"`
379
-	StockMinNumber          int64                `gorm:"column:stock_min_number" json:"stock_min_number" form:"stock_min_number"`
380
-	LastStockMaxNumber      int64                `gorm:"column:last_stock_max_number" json:"last_stock_max_number" form:"last_stock_max_number"`
381
-	LastStockMinNumber      int64                `gorm:"column:last_stock_min_number" json:"last_stock_min_number" form:"last_stock_min_number"`
382
-	DrugWarehouseInfo       []*DrugWarehouseInfo `gorm:"ForeignKey:DrugId;AssociationForeignKey:DrugId" `
383
-	BaseDrugLib             BaseDrugLib          `gorm:"ForeignKey:ID;AssociationForeignKey:DrugId" `
384
-	AdviceId                int64                `gorm:"column:advice_id" json:"advice_id" form:"advice_id"`
385
-	SupplyWarehouseId       int64                `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
351
+	ID                        int64                `gorm:"column:id" json:"id" form:"id"`
352
+	WarehousingId             int64                `gorm:"column:warehousing_id" json:"warehousing_id" form:"warehousing_id"`
353
+	DrugId                    int64                `gorm:"column:drug_id" json:"drug_id" form:"drug_id"`
354
+	Number                    string               `gorm:"column:number" json:"number" form:"number"`
355
+	BatchNumber               string               `gorm:"column:batch_number" json:"batch_number" form:"batch_number"`
356
+	Count                     int64                `gorm:"column:count" json:"count" form:"count"`
357
+	UserOrgId                 int64                `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
358
+	PatientId                 int64                `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
359
+	SystemTime                int64                `gorm:"column:system_time" json:"system_time" form:"system_time"`
360
+	ConsumableType            int64                `gorm:"column:consumable_type" json:"consumable_type" form:"consumable_type"`
361
+	IsSys                     int64                `gorm:"column:is_sys" json:"is_sys" form:"is_sys"`
362
+	WarehousingOrder          string               `gorm:"column:warehousing_order" json:"warehousing_order" form:"warehousing_order"`
363
+	WarehouseOutId            int64                `gorm:"column:warehouse_out_id" json:"warehouse_out_id" form:"warehouse_out_id"`
364
+	WarehouseOutOrderNumber   string               `gorm:"column:warehouse_out_order_number" json:"warehouse_out_order_number" form:"warehouse_out_order_number"`
365
+	IsEdit                    int64                `gorm:"column:is_edit" json:"is_edit" form:"is_edit"`
366
+	CancelStockId             int64                `gorm:"column:cancel_stock_id" json:"cancel_stock_id" form:"cancel_stock_id"`
367
+	CancelOrderNumber         string               `gorm:"column:cancel_order_number" json:"cancel_order_number" form:"cancel_order_number"`
368
+	Manufacturer              int64                `gorm:"column:manufacturer" json:"manufacturer" form:"manufacturer"`
369
+	Dealer                    int64                `gorm:"column:dealer" json:"dealer" form:"dealer"`
370
+	Creator                   int64                `gorm:"column:creator" json:"creator" form:"creator"`
371
+	UpdateCreator             int64                `gorm:"column:update_creator" json:"update_creator" form:"update_creator"`
372
+	Status                    int64                `gorm:"column:status" json:"status" form:"status"`
373
+	Ctime                     int64                `gorm:"column:ctime" json:"ctime" form:"ctime"`
374
+	Mtime                     int64                `gorm:"column:mtime" json:"mtime" form:"mtime"`
375
+	Price                     float64              `gorm:"column:price" json:"price" form:"price"`
376
+	WarehousingDetailId       int64                `gorm:"column:warehousing_detail_id" json:"warehousing_detail_id" form:"warehousing_detail_id"`
377
+	WarehouseOutDetailId      int64                `gorm:"column:warehouse_out_detail_id" json:"warehouse_out_detail_id" form:"warehouse_out_detail_id"`
378
+	CancelOutDetailId         int64                `gorm:"column:cancel_out_detail_id" json:"cancel_out_detail_id" form:"cancel_out_detail_id"`
379
+	ExpireDate                int64                `gorm:"column:expire_date" json:"expire_date" form:"expire_date"`
380
+	ProductDate               int64                `gorm:"column:product_date" json:"product_date" form:"product_date"`
381
+	MaxUnit                   string               `gorm:"column:max_unit" json:"max_unit" form:"max_unit"`
382
+	MinUnit                   string               `gorm:"column:min_unit" json:"min_unit" form:"min_unit"`
383
+	StockMaxNumber            int64                `gorm:"column:stock_max_number" json:"stock_max_number" form:"stock_max_number"`
384
+	StockMinNumber            int64                `gorm:"column:stock_min_number" json:"stock_min_number" form:"stock_min_number"`
385
+	LastStockMaxNumber        int64                `gorm:"column:last_stock_max_number" json:"last_stock_max_number" form:"last_stock_max_number"`
386
+	LastStockMinNumber        int64                `gorm:"column:last_stock_min_number" json:"last_stock_min_number" form:"last_stock_min_number"`
387
+	DrugWarehouseInfo         []*DrugWarehouseInfo `gorm:"ForeignKey:DrugId;AssociationForeignKey:DrugId" `
388
+	BaseDrugLib               BaseDrugLib          `gorm:"ForeignKey:ID;AssociationForeignKey:DrugId" `
389
+	AdviceId                  int64                `gorm:"column:advice_id" json:"advice_id" form:"advice_id"`
390
+	SupplyWarehouseId         int64                `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
391
+	SupplyCancelOutId         int64                `gorm:"column:supply_cancel_out_id" json:"supply_cancel_out_id" form:"supply_cancel_out_id"`
392
+	SupplyWarehouseDetailInfo int64                `gorm:"column:supply_warehouse_detail_info" json:"supply_warehouse_detail_info" form:"supply_warehouse_detail_info"`
386 393
 }
387 394
 
388 395
 func (DrugFlow) TableName() string {

+ 1 - 0
models/good_models.go Voir le fichier

@@ -84,6 +84,7 @@ type GoodInfo struct {
84 84
 	RegisterNumber              string               `gorm:"column:register_number" json:"register_number" form:"register_number"`
85 85
 	GoodSotckInfo               []*GoodSotckInfo     `gorm:"ForeignKey:GoodId;AssociationForeignKey:ID" json:"good_stock_in"`
86 86
 	IsUser                      int64                `gorm:"column:is_user" json:"is_user" form:"is_user"`
87
+	Number                      string               `gorm:"column:number" json:"number" form:"number"`
87 88
 }
88 89
 
89 90
 func (GoodInfo) TableName() string {

+ 68 - 61
models/stock_models.go Voir le fichier

@@ -106,34 +106,35 @@ func (StWarehousingInfo) TableName() string {
106 106
 }
107 107
 
108 108
 type WarehousingInfo struct {
109
-	ID                int64       `gorm:"column:id" json:"id"`
110
-	WarehousingId     int64       `gorm:"column:warehousing_id" json:"warehousing_id"`
111
-	GoodId            int64       `gorm:"column:good_id" json:"good_id"`
112
-	GoodTypeId        int64       `gorm:"column:good_type_id" json:"good_type_id"`
113
-	Number            string      `gorm:"column:number" json:"number"`
114
-	ProductDate       int64       `gorm:"column:product_date" json:"product_date"`
115
-	ExpiryDate        int64       `gorm:"column:expiry_date" json:"expiry_date"`
116
-	WarehousingCount  int64       `gorm:"column:warehousing_count" json:"warehousing_count"`
117
-	WarehousingUnit   string      `gorm:"column:warehousing_unit" json:"warehousing_unit"`
118
-	Price             float64     `gorm:"column:price" json:"price"`
119
-	TotalPrice        float64     `gorm:"column:total_price" json:"total_price"`
120
-	Dealer            int64       `gorm:"column:dealer" json:"dealer"`
121
-	Manufacturer      int64       `gorm:"column:manufacturer" json:"manufacturer"`
122
-	Remark            string      `gorm:"column:remark" json:"remark"`
123
-	Ctime             int64       `gorm:"column:ctime" json:"ctime"`
124
-	Mtime             int64       `gorm:"column:mtime" json:"mtime"`
125
-	Status            int64       `gorm:"column:status" json:"status"`
126
-	OrgId             int64       `gorm:"column:org_id" json:"org_id"`
127
-	IsReturn          int64       `gorm:"column:is_return" json:"is_return"`
128
-	StockCount        int64       `gorm:"column:stock_count" json:"stock_count" form:"stock_count"`
129
-	Warehousing       Warehousing `ForeignKey:WarehousingId json:"warehouse"`
130
-	WarehousingOrder  string      `gorm:"column:warehousing_order" json:"warehousing_order"`
131
-	GoodInfo          GoodInfo    `gorm:"ForeignKey:ID;AssociationForeignKey:GoodId" `
132
-	Type              int64       `gorm:"column:type" json:"type"`
133
-	LicenseNumber     string      `gorm:"column:license_number" json:"license_number" form:"license_number"`
134
-	WarehouseInfoId   int64       `gorm:"column:warehouse_info_id" json:"warehouse_info_id" form:"warehouse_info_id"`
135
-	PackingPrice      float64     `gorm:"column:packing_price" json:"packing_price" form:"packing_price"`
136
-	SupplyWarehouseId int64       `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
109
+	ID                        int64       `gorm:"column:id" json:"id"`
110
+	WarehousingId             int64       `gorm:"column:warehousing_id" json:"warehousing_id"`
111
+	GoodId                    int64       `gorm:"column:good_id" json:"good_id"`
112
+	GoodTypeId                int64       `gorm:"column:good_type_id" json:"good_type_id"`
113
+	Number                    string      `gorm:"column:number" json:"number"`
114
+	ProductDate               int64       `gorm:"column:product_date" json:"product_date"`
115
+	ExpiryDate                int64       `gorm:"column:expiry_date" json:"expiry_date"`
116
+	WarehousingCount          int64       `gorm:"column:warehousing_count" json:"warehousing_count"`
117
+	WarehousingUnit           string      `gorm:"column:warehousing_unit" json:"warehousing_unit"`
118
+	Price                     float64     `gorm:"column:price" json:"price"`
119
+	TotalPrice                float64     `gorm:"column:total_price" json:"total_price"`
120
+	Dealer                    int64       `gorm:"column:dealer" json:"dealer"`
121
+	Manufacturer              int64       `gorm:"column:manufacturer" json:"manufacturer"`
122
+	Remark                    string      `gorm:"column:remark" json:"remark"`
123
+	Ctime                     int64       `gorm:"column:ctime" json:"ctime"`
124
+	Mtime                     int64       `gorm:"column:mtime" json:"mtime"`
125
+	Status                    int64       `gorm:"column:status" json:"status"`
126
+	OrgId                     int64       `gorm:"column:org_id" json:"org_id"`
127
+	IsReturn                  int64       `gorm:"column:is_return" json:"is_return"`
128
+	StockCount                int64       `gorm:"column:stock_count" json:"stock_count" form:"stock_count"`
129
+	Warehousing               Warehousing `ForeignKey:WarehousingId json:"warehouse"`
130
+	WarehousingOrder          string      `gorm:"column:warehousing_order" json:"warehousing_order"`
131
+	GoodInfo                  GoodInfo    `gorm:"ForeignKey:ID;AssociationForeignKey:GoodId" `
132
+	Type                      int64       `gorm:"column:type" json:"type"`
133
+	LicenseNumber             string      `gorm:"column:license_number" json:"license_number" form:"license_number"`
134
+	WarehouseInfoId           int64       `gorm:"column:warehouse_info_id" json:"warehouse_info_id" form:"warehouse_info_id"`
135
+	PackingPrice              float64     `gorm:"column:packing_price" json:"packing_price" form:"packing_price"`
136
+	SupplyWarehouseId         int64       `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
137
+	SupplyWarehouseDetailInfo int64       `gorm:"column:supply_warehouse_detail_info" json:"supply_warehouse_detail_info" form:"supply_warehouse_detail_info"`
137 138
 }
138 139
 
139 140
 func (WarehousingInfo) TableName() string {
@@ -200,6 +201,8 @@ type WarehouseOut struct {
200 201
 	Dealers                 Dealer       `gorm:"ForeignKey:ID;AssociationForeignKey:Dealer" json:"Dealer"`
201 202
 	Type                    int64        `gorm:"column:type" json:"type"`
202 203
 	IsSys                   int64        `gorm:"column:is_sys" json:"is_sys"`
204
+	SupplyCancelOutId       int64        `gorm:"column:supply_cancel_out_id" json:"supply_cancel_out_id" form:"supply_cancel_out_id"`
205
+	SupplyWarehouseId       int64        `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
203 206
 }
204 207
 
205 208
 func (WarehouseOut) TableName() string {
@@ -237,6 +240,8 @@ type WarehouseOutInfo struct {
237 240
 	LicenseNumber           string       `gorm:"column:license_number" json:"license_number" form:"license_number"`
238 241
 	ConsumableType          int64        `gorm:"column:consumable_type" json:"consumable_type" form:"consumable_type"`
239 242
 	ProjectId               int64        `gorm:"column:project_id" json:"project_id" form:"project_id"`
243
+	SupplyCancelOutId       int64        `gorm:"column:supply_cancel_out_id" json:"supply_cancel_out_id" form:"supply_cancel_out_id"`
244
+	SupplyWarehouseId       int64        `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
240 245
 }
241 246
 
242 247
 func (WarehouseOutInfo) TableName() string {
@@ -553,39 +558,41 @@ func (WarehouseOutInfoSix) TableName() string {
553 558
 }
554 559
 
555 560
 type VmStockFlow struct {
556
-	ID                      int64   `gorm:"column:id" json:"id" form:"id"`
557
-	WarehousingId           int64   `gorm:"column:warehousing_id" json:"warehousing_id" form:"warehousing_id"`
558
-	GoodId                  int64   `gorm:"column:good_id" json:"good_id" form:"good_id"`
559
-	Number                  string  `gorm:"column:number" json:"number" form:"number"`
560
-	LicenseNumber           string  `gorm:"column:license_number" json:"license_number" form:"license_number"`
561
-	Count                   int64   `gorm:"column:count" json:"count" form:"count"`
562
-	UserOrgId               int64   `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
563
-	PatientId               int64   `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
564
-	SystemTime              int64   `gorm:"column:system_time" json:"system_time" form:"system_time"`
565
-	ConsumableType          int64   `gorm:"column:consumable_type" json:"consumable_type" form:"consumable_type"`
566
-	IsSys                   int64   `gorm:"column:is_sys" json:"is_sys" form:"is_sys"`
567
-	WarehousingOrder        string  `gorm:"column:warehousing_order" json:"warehousing_order" form:"warehousing_order"`
568
-	WarehouseOutId          int64   `gorm:"column:warehouse_out_id" json:"warehouse_out_id" form:"warehouse_out_id"`
569
-	WarehouseOutOrderNumber string  `gorm:"column:warehouse_out_order_number" json:"warehouse_out_order_number" form:"warehouse_out_order_number"`
570
-	IsEdit                  int64   `gorm:"column:is_edit" json:"is_edit" form:"is_edit"`
571
-	CancelStockId           int64   `gorm:"column:cancel_stock_id" json:"cancel_stock_id" form:"cancel_stock_id"`
572
-	CancelOrderNumber       string  `gorm:"column:cancel_order_number" json:"cancel_order_number" form:"cancel_order_number"`
573
-	Manufacturer            int64   `gorm:"column:manufacturer" json:"manufacturer" form:"manufacturer"`
574
-	Dealer                  int64   `gorm:"column:dealer" json:"dealer" form:"dealer"`
575
-	Creator                 int64   `gorm:"column:creator" json:"creator" form:"creator"`
576
-	UpdateCreator           int64   `gorm:"column:update_creator" json:"update_creator" form:"update_creator"`
577
-	Status                  int64   `gorm:"column:status" json:"status" form:"status"`
578
-	Ctime                   int64   `gorm:"column:ctime" json:"ctime" form:"ctime"`
579
-	Mtime                   int64   `gorm:"column:mtime" json:"mtime" form:"mtime"`
580
-	Price                   float64 `gorm:"column:price" json:"price" form:"price"`
581
-	WarehousingDetailId     int64   `gorm:"column:warehousing_detail_id" json:"warehousing_detail_id" form:"warehousing_detail_id"`
582
-	WarehouseOutDetailId    int64   `gorm:"column:warehouse_out_detail_id" json:"warehouse_out_detail_id" form:"warehouse_out_detail_id"`
583
-	CancelOutDetailId       int64   `gorm:"column:cancel_out_detail_id" json:"cancel_out_detail_id" form:"cancel_out_detail_id"`
584
-	ProductDate             int64   `gorm:"column:product_date" json:"product_date" form:"product_date"`
585
-	ExpireDate              int64   `gorm:"column:expire_date" json:"expire_date" form:"expire_date"`
586
-	ReturnCount             int64   `gorm:"column:return_count" json:"return_count" form:"return_count"`
587
-	ProjectId               int64   `gorm:"column:project_id" json:"project_id" form:"project_id"`
588
-	SupplyWarehouseId       int64   `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
561
+	ID                        int64   `gorm:"column:id" json:"id" form:"id"`
562
+	WarehousingId             int64   `gorm:"column:warehousing_id" json:"warehousing_id" form:"warehousing_id"`
563
+	GoodId                    int64   `gorm:"column:good_id" json:"good_id" form:"good_id"`
564
+	Number                    string  `gorm:"column:number" json:"number" form:"number"`
565
+	LicenseNumber             string  `gorm:"column:license_number" json:"license_number" form:"license_number"`
566
+	Count                     int64   `gorm:"column:count" json:"count" form:"count"`
567
+	UserOrgId                 int64   `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
568
+	PatientId                 int64   `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
569
+	SystemTime                int64   `gorm:"column:system_time" json:"system_time" form:"system_time"`
570
+	ConsumableType            int64   `gorm:"column:consumable_type" json:"consumable_type" form:"consumable_type"`
571
+	IsSys                     int64   `gorm:"column:is_sys" json:"is_sys" form:"is_sys"`
572
+	WarehousingOrder          string  `gorm:"column:warehousing_order" json:"warehousing_order" form:"warehousing_order"`
573
+	WarehouseOutId            int64   `gorm:"column:warehouse_out_id" json:"warehouse_out_id" form:"warehouse_out_id"`
574
+	WarehouseOutOrderNumber   string  `gorm:"column:warehouse_out_order_number" json:"warehouse_out_order_number" form:"warehouse_out_order_number"`
575
+	IsEdit                    int64   `gorm:"column:is_edit" json:"is_edit" form:"is_edit"`
576
+	CancelStockId             int64   `gorm:"column:cancel_stock_id" json:"cancel_stock_id" form:"cancel_stock_id"`
577
+	CancelOrderNumber         string  `gorm:"column:cancel_order_number" json:"cancel_order_number" form:"cancel_order_number"`
578
+	Manufacturer              int64   `gorm:"column:manufacturer" json:"manufacturer" form:"manufacturer"`
579
+	Dealer                    int64   `gorm:"column:dealer" json:"dealer" form:"dealer"`
580
+	Creator                   int64   `gorm:"column:creator" json:"creator" form:"creator"`
581
+	UpdateCreator             int64   `gorm:"column:update_creator" json:"update_creator" form:"update_creator"`
582
+	Status                    int64   `gorm:"column:status" json:"status" form:"status"`
583
+	Ctime                     int64   `gorm:"column:ctime" json:"ctime" form:"ctime"`
584
+	Mtime                     int64   `gorm:"column:mtime" json:"mtime" form:"mtime"`
585
+	Price                     float64 `gorm:"column:price" json:"price" form:"price"`
586
+	WarehousingDetailId       int64   `gorm:"column:warehousing_detail_id" json:"warehousing_detail_id" form:"warehousing_detail_id"`
587
+	WarehouseOutDetailId      int64   `gorm:"column:warehouse_out_detail_id" json:"warehouse_out_detail_id" form:"warehouse_out_detail_id"`
588
+	CancelOutDetailId         int64   `gorm:"column:cancel_out_detail_id" json:"cancel_out_detail_id" form:"cancel_out_detail_id"`
589
+	ProductDate               int64   `gorm:"column:product_date" json:"product_date" form:"product_date"`
590
+	ExpireDate                int64   `gorm:"column:expire_date" json:"expire_date" form:"expire_date"`
591
+	ReturnCount               int64   `gorm:"column:return_count" json:"return_count" form:"return_count"`
592
+	ProjectId                 int64   `gorm:"column:project_id" json:"project_id" form:"project_id"`
593
+	SupplyWarehouseId         int64   `gorm:"column:supply_warehouse_id" json:"supply_warehouse_id" form:"supply_warehouse_id"`
594
+	SupplyCancelOutId         int64   `gorm:"column:supply_cancel_out_id" json:"supply_cancel_out_id" form:"supply_cancel_out_id"`
595
+	SupplyWarehouseDetailInfo int64   `gorm:"column:supply_warehouse_detail_info" json:"supply_warehouse_detail_info" form:"supply_warehouse_detail_info"`
589 596
 }
590 597
 
591 598
 func (VmStockFlow) TableName() string {

+ 36 - 26
models/supply.models.go Voir le fichier

@@ -36,6 +36,7 @@ type SpBaseDrug struct {
36 36
 	Number            string                 `gorm:"column:number" json:"number" form:"number"`
37 37
 	LastPrice         float64                `gorm:"column:last_price" json:"last_price" form:"last_price"`
38 38
 	DrugWarehouseInfo []*SpDrugWarehouseInfo `gorm:"ForeignKey:DrugId;AssociationForeignKey:ID" json:"drug_warehouse_info"`
39
+	DrugStatus        string                 `gorm:"column:drug_status" json:"drug_status" form:"drug_status"`
39 40
 }
40 41
 
41 42
 func (SpBaseDrug) TableName() string {
@@ -52,7 +53,9 @@ type SpGoodInformation struct {
52 53
 	GoodName          string             `gorm:"column:good_name" json:"good_name" form:"good_name"`
53 54
 	PackingUnit       string             `gorm:"column:packing_unit" json:"packing_unit" form:"packing_unit"`
54 55
 	BuyPrice          float64            `gorm:"column:buy_price" json:"buy_price" form:"buy_price"`
56
+	GoodStatus        string             `gorm:"column:good_status" json:"good_status" form:"good_status"`
55 57
 	GoodWarehouseInfo []*SpWarehouseInfo `gorm:"ForeignKey:GoodId;AssociationForeignKey:ID" json:"good_warehouse_info"`
58
+	Number            string             `gorm:"column:number" json:"number" form:"number"`
56 59
 }
57 60
 
58 61
 func (SpGoodInformation) TableName() string {
@@ -331,32 +334,39 @@ func (SpSupplierWarehouseCancel) TableName() string {
331 334
 }
332 335
 
333 336
 type SpSupplierWarehousingCancelOrder struct {
334
-	ID                      int64   `gorm:"column:id" json:"id" form:"id"`
335
-	ManufacturerId          int64   `gorm:"column:manufacturer_id" json:"manufacturer_id" form:"manufacturer_id"`
336
-	OrderNumber             string  `gorm:"column:order_number" json:"order_number" form:"order_number"`
337
-	ProjectId               int64   `gorm:"column:project_id" json:"project_id" form:"project_id"`
338
-	GoodNumber              string  `gorm:"column:good_number" json:"good_number" form:"good_number"`
339
-	IsSource                int64   `gorm:"column:is_source" json:"is_source" form:"is_source"`
340
-	Count                   int64   `gorm:"column:count" json:"count" form:"count"`
341
-	Price                   float64 `gorm:"column:price" json:"price" form:"price"`
342
-	Remark                  string  `gorm:"column:remark" json:"remark" form:"remark"`
343
-	RateOfConcession        float64 `gorm:"column:rate_of_concession" json:"rate_of_concession" form:"rate_of_concession"`
344
-	DiscountAmount          float64 `gorm:"column:discount_amount" json:"discount_amount" form:"discount_amount"`
345
-	UserOrgId               int64   `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
346
-	Ctime                   int64   `gorm:"column:ctime" json:"ctime" form:"ctime"`
347
-	Status                  int64   `gorm:"column:status" json:"status" form:"status"`
348
-	Mtime                   int64   `gorm:"column:mtime" json:"mtime" form:"mtime"`
349
-	WarehouseCancelId       int64   `gorm:"column:warehouse_cancel_id" json:"warehouse_cancel_id" form:"warehouse_cancel_id"`
350
-	Type                    int64   `gorm:"column:type" json:"type" form:"type"`
351
-	ReturnNumber            string  `gorm:"column:return_number" json:"return_number" form:"return_number"`
352
-	WarehouseOutId          int64   `gorm:"column:warehouse_out_id" json:"warehouse_out_id" form:"warehouse_out_id"`
353
-	SupplySpecificationName string  `gorm:"column:supply_specification_name" json:"supply_specification_name" form:"supply_specification_name"`
354
-	SupplyType              string  `gorm:"column:supply_type" json:"supply_type" form:"supply_type"`
355
-	SupplyTotal             string  `gorm:"column:supply_total" json:"supply_total" form:"supply_total"`
356
-	SupplyManufacturer      string  `gorm:"column:supply_manufacturer" json:"supply_manufacturer" form:"supply_manufacturer"`
357
-	Name                    string  `gorm:"column:name" json:"name" form:"name"`
358
-	SupplyUnit              string  `gorm:"column:supply_unit" json:"supply_unit" form:"supply_unit"`
359
-	SupplyLicenseNumber     string  `gorm:"column:supply_license_number" json:"supply_license_number" form:"supply_license_number"`
337
+	ID                        int64   `gorm:"column:id" json:"id" form:"id"`
338
+	ManufacturerId            int64   `gorm:"column:manufacturer_id" json:"manufacturer_id" form:"manufacturer_id"`
339
+	OrderNumber               string  `gorm:"column:order_number" json:"order_number" form:"order_number"`
340
+	ProjectId                 int64   `gorm:"column:project_id" json:"project_id" form:"project_id"`
341
+	GoodNumber                string  `gorm:"column:good_number" json:"good_number" form:"good_number"`
342
+	IsSource                  int64   `gorm:"column:is_source" json:"is_source" form:"is_source"`
343
+	Count                     int64   `gorm:"column:count" json:"count" form:"count"`
344
+	Price                     float64 `gorm:"column:price" json:"price" form:"price"`
345
+	Remark                    string  `gorm:"column:remark" json:"remark" form:"remark"`
346
+	RateOfConcession          float64 `gorm:"column:rate_of_concession" json:"rate_of_concession" form:"rate_of_concession"`
347
+	DiscountAmount            float64 `gorm:"column:discount_amount" json:"discount_amount" form:"discount_amount"`
348
+	UserOrgId                 int64   `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
349
+	Ctime                     int64   `gorm:"column:ctime" json:"ctime" form:"ctime"`
350
+	Status                    int64   `gorm:"column:status" json:"status" form:"status"`
351
+	Mtime                     int64   `gorm:"column:mtime" json:"mtime" form:"mtime"`
352
+	WarehouseCancelId         int64   `gorm:"column:warehouse_cancel_id" json:"warehouse_cancel_id" form:"warehouse_cancel_id"`
353
+	Type                      int64   `gorm:"column:type" json:"type" form:"type"`
354
+	ReturnNumber              string  `gorm:"column:return_number" json:"return_number" form:"return_number"`
355
+	WarehouseOutId            int64   `gorm:"column:warehouse_out_id" json:"warehouse_out_id" form:"warehouse_out_id"`
356
+	SupplySpecificationName   string  `gorm:"column:supply_specification_name" json:"supply_specification_name" form:"supply_specification_name"`
357
+	SupplyType                string  `gorm:"column:supply_type" json:"supply_type" form:"supply_type"`
358
+	SupplyTotal               string  `gorm:"column:supply_total" json:"supply_total" form:"supply_total"`
359
+	SupplyManufacturer        string  `gorm:"column:supply_manufacturer" json:"supply_manufacturer" form:"supply_manufacturer"`
360
+	Name                      string  `gorm:"column:name" json:"name" form:"name"`
361
+	SupplyUnit                string  `gorm:"column:supply_unit" json:"supply_unit" form:"supply_unit"`
362
+	SupplyLicenseNumber       string  `gorm:"column:supply_license_number" json:"supply_license_number" form:"supply_license_number"`
363
+	SupplyBatchNumber         string  `gorm:"column:supply_batch_number" json:"supply_batch_number" form:"supply_batch_number"`
364
+	SupplyProductDate         int64   `gorm:"column:supply_product_date" json:"supply_product_date" form:"supply_product_date"`
365
+	SupplyExpiryDate          int64   `gorm:"column:supply_expiry_date" json:"supply_expiry_date" form:"supply_expiry_date"`
366
+	WarehousingId             int64   `gorm:"column:warehousing_id" json:"warehousing_id" form:"warehousing_id"`
367
+	WarehouseInfoId           int64   `gorm:"column:warehouse_info_id" json:"warehouse_info_id" form:"warehouse_info_id"`
368
+	SourceCount               int64   `gorm:"column:source_count" json:"source_count" form:"source_count"`
369
+	SupplyWarehouseDetailInfo int64   `gorm:"column:supply_warehouse_detail_info" json:"supply_warehouse_detail_info" form:"supply_warehouse_detail_info"`
360 370
 }
361 371
 
362 372
 func (SpSupplierWarehousingCancelOrder) TableName() string {

+ 2 - 2
service/mobile_dialysis_service.go Voir le fichier

@@ -2741,7 +2741,7 @@ func MobileGetDialysisGoods(orgID int64, scheduleDate int64, schedule_type int64
2741 2741
 			return db.Preload("VMGoodInfo", "status = 1 AND org_id = ?", orgID).Preload("GoodsType", "status = 1 AND (org_id = ? OR org_id = 0) ", orgID).Where("status = 1 AND user_org_id = ? AND record_date = ?  AND count > 0 ", orgID, scheduleDate)
2742 2742
 		}).
2743 2743
 		Preload("AutomaticReduceDetail", func(db *gorm.DB) *gorm.DB {
2744
-			return db.Preload("VMGoodInfo", "status = 1 AND org_id = ?  ", orgID).Preload("GoodsType", "status = 1 AND (org_id = ? OR org_id = 0)  ", orgID).Where("status = 1 AND org_id = ? AND count > 0 AND record_time >= ? AND record_time <= ?  ", orgID, scheduleDate, end_time).Group("patient_id,good_id")
2744
+			return db.Preload("VMGoodInfo", "status = 1 AND org_id = ?", orgID).Preload("GoodsType", "status = 1 AND (org_id = ? OR org_id = 0)  ", orgID).Where("status = 1 AND org_id = ? AND count > 0 AND record_time >= ? AND record_time <= ?  ", orgID, scheduleDate, end_time).Group("patient_id,good_id")
2745 2745
 		}).Where("sch.status = 1 AND sch.user_org_id = ?", orgID)
2746 2746
 	if scheduleDate != 0 {
2747 2747
 		db = db.Where("schedule_date = ?", scheduleDate)
@@ -3433,7 +3433,7 @@ func GetHisProjectConfig(orgid int64) (models.XtHisProjectConfig, error) {
3433 3433
 
3434 3434
 func GetHisPrescriptionProject(org_id int64, patient_id int64, record_date int64) (project []*models.HisPrescriptionProject, err error) {
3435 3435
 	err = readDb.Model(&models.HisPrescriptionProject{}).Preload("GoodInfo", func(db *gorm.DB) *gorm.DB {
3436
-		return db.Preload("GoodsType", "status = 1").Where("status = 1 ")
3436
+		return db.Preload("GoodsType", "status = 1").Where("status = 1 and is_user = 2")
3437 3437
 	}).Where("user_org_id = ? AND status = 1 AND record_date = ? AND patient_id = ? AND type = 3", org_id, record_date, patient_id).Find(&project).Error
3438 3438
 
3439 3439
 	return

+ 52 - 1
service/stock_service.go Voir le fichier

@@ -196,6 +196,7 @@ func FindAllGoodInfoTotal(orgId int64) (total int64) {
196 196
 }
197 197
 
198 198
 func AddSigleGoodInfo(goodInfo *models.GoodInfo) (error, *models.GoodInfo) {
199
+	fmt.Println("goodino232323232323232323", goodInfo.IsUse)
199 200
 	err := writeDb.Create(&goodInfo).Error
200 201
 	return err, goodInfo
201 202
 
@@ -248,6 +249,8 @@ func ModifyGoodInfo(goodInfo *models.GoodInfo) (error, *models.GoodInfo) {
248 249
 		"min_unit":                       goodInfo.MinUnit,
249 250
 		"register_number":                goodInfo.RegisterNumber,
250 251
 		"provinces_code":                 goodInfo.ProvincesCode,
252
+		"is_user":                        goodInfo.IsUser,
253
+		"number":                         goodInfo.Number,
251 254
 	}).Error
252 255
 
253 256
 	writeDb.Model(&models.WarehousingInfo{}).Where("good_id = ? AND org_id = ?", goodInfo.ID, goodInfo.OrgId).Updates(map[string]interface{}{"good_type_id": goodInfo.GoodTypeId})
@@ -361,7 +364,7 @@ func FindAllGoodTypeOne(org_id int64) (goodType []*models.GoodsType, err error)
361 364
 }
362 365
 
363 366
 func FindAllGoodInfo(org_id int64) (goodInfo []*models.GoodInfo, err error) {
364
-	err = XTReadDB().Model(&models.GoodInfo{}).Where("org_id = ? AND status = 1", org_id).Find(&goodInfo).Error
367
+	err = XTReadDB().Model(&models.GoodInfo{}).Where("org_id = ? AND status = 1 and is_user = 2", org_id).Find(&goodInfo).Error
365 368
 	return goodInfo, err
366 369
 }
367 370
 
@@ -498,6 +501,54 @@ func CreateDrugWarehousingInfo(warehousingInfo []*models.DrugWarehouseInfo) (err
498 501
 	return
499 502
 }
500 503
 
504
+func CreateDrugWarehousingInfoSix(warehousingInfo []*models.DrugWarehouseInfo) (err error) {
505
+	if len(warehousingInfo) > 0 {
506
+		utx := writeDb.Begin()
507
+		if len(warehousingInfo) > 0 {
508
+			thisSQL := "INSERT INTO xt_drug_warehouse_info (warehousing_id, drug_id, number, product_date,expiry_date,warehousing_count,price,total_price,dealer,manufacturer,remark,ctime,mtime,status,org_id,warehousing_order,type,retail_price,retail_total_price,stock_max_number,max_unit,min_unit,batch_number,stock_min_number,supply_warehouse_id,supply_warehouse_detail_info) VALUES "
509
+			insertParams := make([]string, 0)
510
+			insertData := make([]interface{}, 0)
511
+			for _, info := range warehousingInfo {
512
+				insertParams = append(insertParams, "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")
513
+				insertData = append(insertData, info.WarehousingId)
514
+				insertData = append(insertData, info.DrugId)
515
+				insertData = append(insertData, info.Number)
516
+				insertData = append(insertData, info.ProductDate)
517
+				insertData = append(insertData, info.ExpiryDate)
518
+				insertData = append(insertData, info.WarehousingCount)
519
+				insertData = append(insertData, info.Price)
520
+				insertData = append(insertData, info.TotalPrice)
521
+				insertData = append(insertData, info.Dealer)
522
+				insertData = append(insertData, info.Manufacturer)
523
+				insertData = append(insertData, info.Remark)
524
+				insertData = append(insertData, info.Ctime)
525
+				insertData = append(insertData, info.Mtime)
526
+				insertData = append(insertData, info.Status)
527
+				insertData = append(insertData, info.OrgId)
528
+				insertData = append(insertData, info.WarehousingOrder)
529
+				insertData = append(insertData, info.Type)
530
+				insertData = append(insertData, info.RetailPrice)
531
+				insertData = append(insertData, info.RetailTotalPrice)
532
+				insertData = append(insertData, info.StockMaxNumber)
533
+				insertData = append(insertData, info.MaxUnit)
534
+				insertData = append(insertData, info.MinUnit)
535
+				insertData = append(insertData, info.BatchNumber)
536
+				insertData = append(insertData, info.StockMinNumber)
537
+				insertData = append(insertData, info.SupplyWarehouseId)
538
+				insertData = append(insertData, info.SupplyWarehouseDetailInfo)
539
+			}
540
+			thisSQL += strings.Join(insertParams, ", ")
541
+			err = utx.Exec(thisSQL, insertData...).Error
542
+			if err != nil {
543
+				utx.Rollback()
544
+				return
545
+			}
546
+		}
547
+		utx.Commit()
548
+	}
549
+	return
550
+}
551
+
501 552
 func UpdateDrugInfo(warehousingInfo []*models.DrugWarehouseInfo) (err error) {
502 553
 	var total float64
503 554
 	var min_number int64

+ 252 - 38
service/supply_service.go Voir le fichier

@@ -3,18 +3,19 @@ package service
3 3
 import (
4 4
 	"XT_New/models"
5 5
 	"github.com/jinzhu/gorm"
6
+	"strings"
6 7
 	"time"
7 8
 )
8 9
 
9 10
 //根据供应商编号获取首要联系人
10
-func FindName(code string) (fistname models.SpSupplierContacts, err error) {
11
-	err = XTReadDB().Model(&models.SpSupplierContacts{}).Where("supplier_code = ? and status = 1", code).First(&fistname).Error
11
+func FindName(code string, orgid int64) (fistname models.SpSupplierContacts, err error) {
12
+	err = XTReadDB().Model(&models.SpSupplierContacts{}).Where("supplier_code = ? and status = 1 and is_first = 1 and user_org_id = ?", code, orgid).First(&fistname).Error
12 13
 	return fistname, err
13 14
 }
14 15
 
15 16
 //供应商分页
16
-func GetSupplyList(ctype int64, page int64, limit int64, keyword string) (supplylist []*models.SpSupplierName, total int64, err error) {
17
-	db := XTReadDB().Model(&supplylist).Where("xt_supplier_name.status = 1 ")
17
+func GetSupplyList(ctype int64, page int64, limit int64, keyword string, orgid int64) (supplylist []*models.SpSupplierName, total int64, err error) {
18
+	db := XTReadDB().Model(&supplylist).Where("xt_supplier_name.status = 1 and xt_supplier_name.user_org_id = ?", orgid)
18 19
 
19 20
 	offset := (page - 1) * limit
20 21
 
@@ -42,7 +43,7 @@ func UpdateSupplyAndContact(thisStockIn []interface{}, suid, orgId, supplierType
42 43
 	}()
43 44
 	for _, item := range thisStockIn {
44 45
 		items := item.(map[string]interface{})
45
-		//查询是否
46
+		//判断联系人是否为新加的
46 47
 		if items["id"] == "" || items["id"] == 0 {
47 48
 			var tmp float64 = 0
48 49
 			items["id"] = tmp
@@ -75,7 +76,7 @@ func UpdateSupplyAndContact(thisStockIn []interface{}, suid, orgId, supplierType
75 76
 			Ctime:        0,
76 77
 			Mtime:        time.Now().Unix(),
77 78
 		}
78
-		if id == 0 {
79
+		if id == 0 { //表示这是新加的
79 80
 			spcontacts := models.SpSupplierContacts{
80 81
 				Name:         name,
81 82
 				Phone:        phone,
@@ -86,7 +87,7 @@ func UpdateSupplyAndContact(thisStockIn []interface{}, suid, orgId, supplierType
86 87
 				Status:       1,
87 88
 				Ctime:        time.Now().Unix(),
88 89
 				Mtime:        0,
89
-			}
90
+			} //保存一条联系人的数据
90 91
 			err = SaveContacts(spcontacts, tx)
91 92
 			if err != nil {
92 93
 				return err
@@ -96,9 +97,9 @@ func UpdateSupplyAndContact(thisStockIn []interface{}, suid, orgId, supplierType
96 97
 		}
97 98
 		var tmpid int64
98 99
 		if isfirst == 1 {
99
-			if id == 0 {
100
+			if id == 0 { //新加的首要联系人
100 101
 				var spconid []*models.SpSupplierContacts
101
-				spconid, err = SaveContactsId(tx)
102
+				spconid, err = SaveContactsId(tx, orgId)
102 103
 				if err != nil {
103 104
 					return err
104 105
 				}
@@ -122,7 +123,7 @@ func UpdateSupplyAndContact(thisStockIn []interface{}, suid, orgId, supplierType
122 123
 				Mtime:        time.Now().Unix(),
123 124
 				Modify:       tcreater,
124 125
 			}
125
-			err = UpdateSupplyName(upsupply, tx)
126
+			err = UpdateSupplyNameTX(upsupply, tx)
126 127
 			if err != nil {
127 128
 				return err
128 129
 			}
@@ -132,12 +133,18 @@ func UpdateSupplyAndContact(thisStockIn []interface{}, suid, orgId, supplierType
132 133
 	return err
133 134
 }
134 135
 
135
-//更新一条供应商的信息
136
-func UpdateSupplyName(upsupply models.SpSupplierName, tx *gorm.DB) error {
136
+//更新一条供应商的信息,添加了事务的
137
+func UpdateSupplyNameTX(upsupply models.SpSupplierName, tx *gorm.DB) error {
137 138
 	err := tx.Model(&models.SpSupplierName{}).Where("id = ? and status = 1", upsupply.ID).Updates(map[string]interface{}{"supplier_code": upsupply.SupplierCode, "supplier_name": upsupply.SupplierName, "supplier_type": upsupply.SupplierType, "vat_rate": upsupply.VatRate, "number": upsupply.Number, "bank": upsupply.Bank, "bank_account": upsupply.BankAccount, "user_org_id": upsupply.UserOrgId, "status": upsupply.Status, "contacts_id": upsupply.ContactsId, "mtime": upsupply.Mtime, "modify": upsupply.Modify}).Error
138 139
 	return err
139 140
 }
140 141
 
142
+//更新一条供应商的信息,没有添加事务
143
+func UpdateSupplyName(upsupply models.SpSupplierName) error {
144
+	err := XTWriteDB().Model(&models.SpSupplierName{}).Where("id = ? and status = 1", upsupply.ID).Updates(map[string]interface{}{"supplier_code": upsupply.SupplierCode, "supplier_name": upsupply.SupplierName, "supplier_type": upsupply.SupplierType, "vat_rate": upsupply.VatRate, "number": upsupply.Number, "bank": upsupply.Bank, "bank_account": upsupply.BankAccount, "user_org_id": upsupply.UserOrgId, "status": upsupply.Status, "contacts_id": upsupply.ContactsId, "mtime": upsupply.Mtime, "modify": upsupply.Modify}).Error
145
+	return err
146
+}
147
+
141 148
 //更新一条联系人的信息
142 149
 func UpdateContact(updatecontacts models.SpSupplierContacts, tx *gorm.DB) error {
143 150
 	err := tx.Model(&models.SpSupplierContacts{}).Where("id = ? and status = 1", updatecontacts.ID).Updates(map[string]interface{}{"name": updatecontacts.Name, "phone": updatecontacts.Phone, "address": updatecontacts.Address, "is_first": updatecontacts.IsFirst, "supplier_code": updatecontacts.SupplierCode, "user_org_id": updatecontacts.UserOrgId, "status": updatecontacts.Status, "mtime": updatecontacts.Mtime}).Error
@@ -157,16 +164,37 @@ func DelContactOne(id int64) error {
157 164
 }
158 165
 
159 166
 //获取单条供应商和涉及到的联系人记录
160
-func GetSupplyAndContactOne(id int64) (supply models.SpSupplierName, contact []*models.SpSupplierContacts, err error) {
161
-	err = XTReadDB().Model(&models.SpSupplierName{}).Where("id = ? and status = 1", id).First(&supply).Error
167
+func GetSupplyAndContactOne(id, orgId int64) (supply models.SpSupplierName, contact []*models.SpSupplierContacts, err error) {
168
+	err = XTReadDB().Model(&models.SpSupplierName{}).Where("id = ? and status = 1 and user_org_id = ?", id, orgId).First(&supply).Error
162 169
 	code := supply.SupplierCode
163
-	err = XTReadDB().Model(&models.SpSupplierContacts{}).Where("supplier_code = ? and status = 1", code).Find(&contact).Error
170
+	err = XTReadDB().Model(&models.SpSupplierContacts{}).Where("supplier_code = ? and status = 1 and user_org_id = ?", code, orgId).Find(&contact).Error
164 171
 	return supply, contact, err
165 172
 }
166 173
 
167 174
 //删除供应商及联系人
168
-func DelSupply(supply models.SpSupplierName) error {
169
-	err := XTWriteDB().Model(&supply).Update("status", 0).Error
175
+func DelSupply(supply models.SpSupplierName, orgId int64) error {
176
+	tx := XTWriteDB().Begin()
177
+	defer func() {
178
+		if err != nil {
179
+			tx.Rollback()
180
+		} else {
181
+			tx.Commit()
182
+		}
183
+	}()
184
+	//删除供应商
185
+	err := tx.Model(&supply).Update("status", 0).Error
186
+	if err != nil {
187
+		return err
188
+	}
189
+	var spcode models.SpSupplierName
190
+	//获取供应商编号
191
+	err = tx.Model(&models.SpSupplierName{}).Select("supplier_code").Where("user_org_id = ? and id = ?", orgId, supply.ID).First(&spcode).Error
192
+	if err != nil {
193
+		return err
194
+	}
195
+	//删除联系人
196
+	err = tx.Model(&models.SpSupplierContacts{}).Where("supplier_code = ? and user_org_id = ?", spcode.SupplierCode, orgId).Update("status", 0).Error
197
+
170 198
 	return err
171 199
 }
172 200
 
@@ -211,7 +239,7 @@ func SaveSupplyAndContact(thisStockIn []interface{}, orgId, supplierType, tcreat
211 239
 		err = SaveContacts(spcontacts, tx)
212 240
 		if isfirst == 1 {
213 241
 			var spconid []*models.SpSupplierContacts
214
-			spconid, err = SaveContactsId(tx)
242
+			spconid, err = SaveContactsId(tx, orgId)
215 243
 			if err != nil {
216 244
 				return err
217 245
 			}
@@ -233,7 +261,7 @@ func SaveSupplyAndContact(thisStockIn []interface{}, orgId, supplierType, tcreat
233 261
 				Creater:      tcreater,
234 262
 				Modify:       tcreater,
235 263
 			}
236
-			err = SaveSupply(supply, tx)
264
+			err = SaveSupplyTx(supply, tx)
237 265
 			if err != nil {
238 266
 				return err
239 267
 			}
@@ -246,14 +274,13 @@ func SaveSupplyAndContact(thisStockIn []interface{}, orgId, supplierType, tcreat
246 274
 }
247 275
 
248 276
 //获取供应商编码
249
-func GetSuppliyCode() (spcode []*models.SpSupplierName, err error) {
250
-
251
-	err = XTReadDB().Model(&models.SpSupplierName{}).Select("supplier_code").Where("supplier_code like 'gys%' and status = 1 ").Order("supplier_code desc").First(&spcode).Error
277
+func GetSuppliyCode(orgId int64) (spcode []*models.SpSupplierName, err error) {
278
+	err = XTReadDB().Model(&models.SpSupplierName{}).Select("supplier_code").Where("supplier_code like 'gys%' and status = 1 and user_org_id = ? ", orgId).Order("supplier_code desc").First(&spcode).Error
252 279
 	return spcode, err
253 280
 }
254 281
 
255 282
 //查询供应商的名字是否有重复
256
-func FindSupplierName(supplierName string) (sbool bool, err error) {
283
+func FindSupplierName(supplierName string, orgId int64) (sbool bool, err error) {
257 284
 	var total int
258 285
 	err = XTReadDB().Model(&models.SpSupplierName{}).Where("supplier_name = ? and status = 1", supplierName).Count(&total).Error
259 286
 	if total != 0 {
@@ -264,11 +291,23 @@ func FindSupplierName(supplierName string) (sbool bool, err error) {
264 291
 	return sbool, err
265 292
 }
266 293
 
267
-//查询供应商的编号是否有重复
268
-func FindSupplierCode(supplierCode string) (codebool bool, err error) {
294
+//查询供应商的编号是否有重复(用于修改)
295
+func FindSupplierCode(supplierCode string, supplierid, orgid int64) (codebool bool, err error) {
269 296
 	var total int
270
-	err = XTReadDB().Model(&models.SpSupplierName{}).Where("supplier_name = ? and status = 1", supplierCode).Count(&total).Error
271
-	if total != 0 {
297
+	err = XTReadDB().Model(&models.SpSupplierName{}).Where("supplier_code = ? and id != ? and user_org_id = ? and status = 1", supplierCode, supplierid, orgid).Count(&total).Error
298
+	if total > 0 {
299
+		codebool = true
300
+	} else {
301
+		codebool = false
302
+	}
303
+	return codebool, err
304
+}
305
+
306
+//查询供应商的编号是否有重复(用于新增)
307
+func FindSupplierCodes(supplierCode string, orgid int64) (codebool bool, err error) {
308
+	var total int
309
+	err = XTReadDB().Model(&models.SpSupplierName{}).Where("supplier_code = ? and status = 1 and user_org_id = ?", supplierCode, orgid).Count(&total).Error
310
+	if total > 0 {
272 311
 		codebool = true
273 312
 	} else {
274 313
 		codebool = false
@@ -276,15 +315,21 @@ func FindSupplierCode(supplierCode string) (codebool bool, err error) {
276 315
 	return codebool, err
277 316
 }
278 317
 
279
-//保存一条供应商数据
280
-func SaveSupply(supply models.SpSupplierName, tx *gorm.DB) error {
318
+//保存一条供应商数据加事务的
319
+func SaveSupplyTx(supply models.SpSupplierName, tx *gorm.DB) error {
281 320
 	err := tx.Create(&supply).Error
282 321
 	return err
283 322
 }
284 323
 
324
+//保存一条供应商数据没有事务的
325
+func SaveSupply(supply models.SpSupplierName) error {
326
+	err := XTWriteDB().Create(&supply).Error
327
+	return err
328
+}
329
+
285 330
 //获取联系人的id
286
-func SaveContactsId(tx *gorm.DB) (spconid []*models.SpSupplierContacts, err error) {
287
-	err = tx.Model(&models.SpSupplierContacts{}).Select("id").Where("status = 1").Order("id desc").First(&spconid).Error
331
+func SaveContactsId(tx *gorm.DB, orgid int64) (spconid []*models.SpSupplierContacts, err error) {
332
+	err = tx.Model(&models.SpSupplierContacts{}).Select("id").Where("status = 1 and user_org_id = ?", orgid).Order("id desc").First(&spconid).Error
288 333
 	return
289 334
 }
290 335
 
@@ -296,7 +341,7 @@ func SaveContacts(spcontacts models.SpSupplierContacts, tx *gorm.DB) error {
296 341
 
297 342
 func GetSupplyDrugList(orgid int64) (drug []*models.SpBaseDrug, err error) {
298 343
 
299
-	db := XTReadDB().Table("xt_base_drug as x").Where("x.status = 1")
344
+	db := XTReadDB().Table("xt_base_drug as x").Where("x.status = 1 AND find_in_set('停用',drug_status) = 0")
300 345
 
301 346
 	if orgid > 0 {
302 347
 		db = db.Where("x.org_id = ?", orgid)
@@ -308,7 +353,7 @@ func GetSupplyDrugList(orgid int64) (drug []*models.SpBaseDrug, err error) {
308 353
 
309 354
 func GetSupplyGoodList(orgid int64) (good []*models.SpGoodInformation, err error) {
310 355
 
311
-	db := XTReadDB().Table("xt_good_information as x").Where("x.status = 1")
356
+	db := XTReadDB().Table("xt_good_information as x").Where("x.status = 1 AND find_in_set('停用',good_status) = 0")
312 357
 
313 358
 	if orgid > 0 {
314 359
 		db = db.Where("x.org_id = ?", orgid)
@@ -370,7 +415,7 @@ func GetAllPurchaseOrderList(check_id int64, startime int64, endtime int64, keyw
370 415
 	if orgid > 0 {
371 416
 		db = db.Where("sgj_xt.xt_supplier_warehouse_info.user_org_id = ?", orgid)
372 417
 	}
373
-	err = db.Count(&total).Offset(offset).Limit(limit).Preload("SupplierWarehousingInfoOrder", "status= 1 and user_org_id = ?", orgid).Preload("SpSupplierWarehouseOut", "status = 1 and user_org_id =?", orgid).Find(&info).Error
418
+	err = db.Count(&total).Offset(offset).Limit(limit).Preload("SupplierWarehousingInfoOrder", "status= 1 and user_org_id = ?", orgid).Preload("SpSupplierWarehouseOut", "status = 1 and user_org_id =?", orgid).Order("ctime desc").Find(&info).Error
374 419
 	return info, total, err
375 420
 }
376 421
 
@@ -467,7 +512,7 @@ func GetAllGoodOderList(check_id int64, keyword string, page int64, limit int64,
467 512
 	if orgid > 0 {
468 513
 		db = db.Where("sgj_xt.xt_supplier_warehouse_out.user_org_id = ?", orgid)
469 514
 	}
470
-	err = db.Count(&total).Offset(offset).Limit(limit).Preload("SpSupplierWarehousingOutOrder", "status= 1 and user_org_id = ?", orgid).Preload("SpSupplierWarehousingCancelOrder", "status= 1 and user_org_id = ?", orgid).Find(&out).Error
515
+	err = db.Count(&total).Offset(offset).Limit(limit).Preload("SpSupplierWarehousingOutOrder", "status= 1 and user_org_id = ?", orgid).Preload("SpSupplierWarehousingCancelOrder", "status= 1 and user_org_id = ?", orgid).Order("ctime desc").Find(&out).Error
471 516
 	return out, total, err
472 517
 }
473 518
 
@@ -628,7 +673,7 @@ func GetAllGoodReturnOrderList(checkid int64, keyword string, page int64, limit
628 673
 		db = db.Where("sgj_xt.xt_supplier_warehouse_cancel.is_check = ?", checkid)
629 674
 	}
630 675
 	if len(keyword) > 0 {
631
-		db = db.Joins("join sgj_xt.xt_supplier_name on sgj_xt.xt_supplier_name.id = sgj_xt.xt_supplier_warehouse_out.supplier_id")
676
+		db = db.Joins("join sgj_xt.xt_supplier_name on sgj_xt.xt_supplier_name.id = sgj_xt.xt_supplier_warehouse_cancel.supplier_id")
632 677
 		db = db.Where("sgj_xt.xt_supplier_warehouse_cancel.number like ? or sgj_xt.xt_supplier_name.supplier_name  like ? ", likeKey, likeKey).Group("xt_supplier_warehouse_cancel.id")
633 678
 	}
634 679
 	if startime > 0 {
@@ -641,7 +686,7 @@ func GetAllGoodReturnOrderList(checkid int64, keyword string, page int64, limit
641 686
 	if orgid > 0 {
642 687
 		db = db.Where("sgj_xt.xt_supplier_warehouse_cancel.user_org_id = ?", orgid)
643 688
 	}
644
-	err = db.Count(&total).Offset(offset).Limit(limit).Preload("SpSupplierWarehousingCancelOrder", "status= 1 and user_org_id = ?", orgid).Find(&order).Error
689
+	err = db.Count(&total).Offset(offset).Limit(limit).Preload("SpSupplierWarehousingCancelOrder", "status= 1 and user_org_id = ?", orgid).Order("ctime desc").Find(&order).Error
645 690
 	return order, total, err
646 691
 }
647 692
 
@@ -673,7 +718,7 @@ func GetGoodReturnOrderDetail(id int64, orgid int64) (order []*models.SpSupplier
673 718
 
674 719
 func UpdateWarehouseCancelOrder(order *models.SpSupplierWarehousingCancelOrder) error {
675 720
 
676
-	err = XTWriteDB().Where("id = ? and status = 1", order.ID).Updates(map[string]interface{}{"manufacturer_id": order.ManufacturerId, "order_number": order.OrderNumber, "project_id": order.ProjectId, "is_source": order.IsSource, "count": order.Count, "price": order.Price, "remark": order.Remark, "rate_of_concession": order.RateOfConcession, "discount_amount": order.DiscountAmount, "type": order.Type, "supply_specification_name": order.SupplySpecificationName, "supply_type": order.SupplyType, "supply_total": order.SupplyTotal, "supply_manufacturer": order.SupplyManufacturer, "name": order.Name, "supply_unit": order.SupplyUnit, "supply_license_number": order.SupplyLicenseNumber}).Error
721
+	err = XTWriteDB().Model(&order).Where("id = ? and status = 1", order.ID).Updates(map[string]interface{}{"manufacturer_id": order.ManufacturerId, "order_number": order.OrderNumber, "project_id": order.ProjectId, "is_source": order.IsSource, "count": order.Count, "price": order.Price, "remark": order.Remark, "rate_of_concession": order.RateOfConcession, "discount_amount": order.DiscountAmount, "type": order.Type, "supply_specification_name": order.SupplySpecificationName, "supply_type": order.SupplyType, "supply_total": order.SupplyTotal, "supply_manufacturer": order.SupplyManufacturer, "name": order.Name, "supply_unit": order.SupplyUnit, "supply_license_number": order.SupplyLicenseNumber}).Error
677 722
 	return err
678 723
 }
679 724
 
@@ -779,3 +824,172 @@ func GetGoodCanceListById(id int64, orgid int64) (cancel []*models.VmSpSupplierW
779 824
 	err = XTReadDB().Where("warehouse_out_id = ? and user_org_id = ? and status = 1", id, orgid).Find(&cancel).Error
780 825
 	return cancel, err
781 826
 }
827
+
828
+func CreateDrugFlowSix(drugflow []*models.DrugFlow) (err error) {
829
+	if len(drugflow) > 0 {
830
+		utx := writeDb.Begin()
831
+		if len(drugflow) > 0 {
832
+			thisSQL := "INSERT INTO xt_drug_flow (warehousing_id, drug_id, number,batch_number,count,user_org_id,patient_id,system_time,consumable_type,is_sys,warehousing_order,warehouse_out_id,warehouse_out_order_number,is_edit,cancel_stock_id,cancel_order_number,manufacturer,dealer,creator,update_creator,status,ctime,mtime,price,warehousing_detail_id,warehouse_out_detail_id,cancel_out_detail_id,expire_date,product_date,max_unit,min_unit,supply_warehouse_id,supply_warehouse_detail_info) VALUES "
833
+			insertParams := make([]string, 0)
834
+			insertData := make([]interface{}, 0)
835
+			for _, info := range drugflow {
836
+
837
+				insertParams = append(insertParams, "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")
838
+				insertData = append(insertData, info.WarehousingId)
839
+				insertData = append(insertData, info.DrugId)
840
+				insertData = append(insertData, info.Number)
841
+				insertData = append(insertData, info.BatchNumber)
842
+				insertData = append(insertData, info.Count)
843
+				insertData = append(insertData, info.UserOrgId)
844
+				insertData = append(insertData, info.PatientId)
845
+				insertData = append(insertData, info.SystemTime)
846
+				insertData = append(insertData, info.ConsumableType)
847
+				insertData = append(insertData, info.IsSys)
848
+				insertData = append(insertData, info.WarehousingOrder)
849
+				insertData = append(insertData, info.WarehouseOutId)
850
+				insertData = append(insertData, info.WarehouseOutOrderNumber)
851
+
852
+				insertData = append(insertData, info.IsEdit)
853
+				insertData = append(insertData, info.CancelStockId)
854
+				insertData = append(insertData, info.CancelOrderNumber)
855
+				insertData = append(insertData, info.Manufacturer)
856
+				insertData = append(insertData, info.Dealer)
857
+				insertData = append(insertData, info.Creator)
858
+				insertData = append(insertData, info.UpdateCreator)
859
+				insertData = append(insertData, info.Status)
860
+				insertData = append(insertData, info.Ctime)
861
+				insertData = append(insertData, info.Mtime)
862
+				insertData = append(insertData, info.Price)
863
+				insertData = append(insertData, info.WarehousingDetailId)
864
+				insertData = append(insertData, info.WarehouseOutDetailId)
865
+				insertData = append(insertData, info.CancelOutDetailId)
866
+				insertData = append(insertData, info.ExpireDate)
867
+				insertData = append(insertData, info.ProductDate)
868
+				insertData = append(insertData, info.MaxUnit)
869
+				insertData = append(insertData, info.MinUnit)
870
+				insertData = append(insertData, info.SupplyWarehouseId)
871
+				insertData = append(insertData, info.SupplyWarehouseDetailInfo)
872
+			}
873
+			thisSQL += strings.Join(insertParams, ", ")
874
+			err = utx.Exec(thisSQL, insertData...).Error
875
+			if err != nil {
876
+				utx.Rollback()
877
+				return
878
+			}
879
+		}
880
+		utx.Commit()
881
+	}
882
+	return
883
+}
884
+
885
+func CheckReturnOrder(id int64, orgid int64, cancel models.SpSupplierWarehouseCancel) error {
886
+
887
+	err := XTWriteDB().Model(&cancel).Where("id = ? and user_org_id = ? and status = 1", id, orgid).Updates(map[string]interface{}{"is_check": cancel.IsCheck, "checker": cancel.Checker, "check_time": cancel.CheckTime}).Error
888
+	return err
889
+}
890
+
891
+func GetSupplyCancelOrderDetail(id int64, orgid int64) (cancel []*models.SpSupplierWarehousingCancelOrder, err error) {
892
+
893
+	err = XTReadDB().Where("warehouse_cancel_id = ? and user_org_id = ? and status = 1", id, orgid).Find(&cancel).Error
894
+	return cancel, err
895
+}
896
+
897
+func DeletePurchaseOrder(id int64) error {
898
+
899
+	err := XTWriteDB().Model(&models.SupplierWarehousingInfoOrder{}).Where("id = ? and status = 1", id).Updates(map[string]interface{}{"status": 0}).Error
900
+	return err
901
+}
902
+
903
+func DeleteGoodOrderById(id int64) error {
904
+
905
+	err := XTWriteDB().Model(&models.SpSupplierWarehousingOutOrder{}).Where("id = ? and status = 1", id).Updates(map[string]interface{}{"status": 0}).Error
906
+	return err
907
+}
908
+
909
+func GetlastWarehouseOutById(user_org_id int64, record_date int64) (models.WarehouseOut, error) {
910
+
911
+	out := models.WarehouseOut{}
912
+	err := XTReadDB().Where("org_id = ? and warehouse_out_time = ? and status = 1", user_org_id, record_date).Find(&out).Error
913
+	return out, err
914
+}
915
+
916
+func GetDrugWarehouseOutById(orgid int64, record_date int64) (*models.DrugWarehouseOut, error) {
917
+
918
+	out := models.DrugWarehouseOut{}
919
+	var err error
920
+	err = XTReadDB().Where("org_id = ? and warehouse_out_time = ?", orgid, record_date).Find(&out).Error
921
+	if err == gorm.ErrRecordNotFound {
922
+		return nil, err
923
+	}
924
+	if err != nil {
925
+		return nil, err
926
+	}
927
+	return &out, nil
928
+}
929
+
930
+func GetLastDrugWarehouseById(orgid int64, record_date int64) (models.DrugWarehouseOut, error) {
931
+
932
+	out := models.DrugWarehouseOut{}
933
+	err := XTReadDB().Where("org_id = ? and warehouse_out_time =? and status = 1", orgid, record_date).Find(&out).Error
934
+	return out, err
935
+}
936
+
937
+func UpdateSupplyCancelById(id int64, order models.SpSupplierWarehousingCancelOrder) error {
938
+
939
+	err := XTReadDB().Model(&order).Where("id = ? and status = 1", id).Updates(map[string]interface{}{"source_count": order.SourceCount}).Error
940
+	return err
941
+}
942
+
943
+func DeleteReturnOrder(id int64) error {
944
+
945
+	err := XTWriteDB().Model(&models.SpSupplierWarehouseCancel{}).Where("id = ? and status = 1", id).Updates(map[string]interface{}{"status": 0}).Error
946
+	err = XTWriteDB().Model(&models.SpSupplierWarehousingCancelOrder{}).Where("warehouse_cancel_id = ? and status = 1", id).Updates(map[string]interface{}{"status": 0}).Error
947
+	return err
948
+}
949
+
950
+func DeleteReturnOrderById(id int64) error {
951
+	err = XTWriteDB().Model(&models.SpSupplierWarehousingCancelOrder{}).Where("id = ? and status = 1", id).Updates(map[string]interface{}{"status": 0}).Error
952
+	return err
953
+}
954
+
955
+func ModefyReturnOrder(id int64) error {
956
+
957
+	cancel := models.SpSupplierWarehouseCancel{}
958
+	err := XTWriteDB().Model(&cancel).Where("id = ? and status = 1", id).Updates(map[string]interface{}{"is_check": 2, "checker": 0, "check_time": 0}).Error
959
+	return err
960
+}
961
+
962
+func UpdateWarehousingInfoById(goodid int64, supply_warehouse_id int64, info models.WarehousingInfo) error {
963
+
964
+	err := XTWriteDB().Model(&info).Where("good_id = ? and supply_warehouse_detail_info = ? and status = 1", goodid, supply_warehouse_id).UpdateColumn("stock_count", gorm.Expr("stock_count - ?", info.StockCount)).Error
965
+	return err
966
+}
967
+
968
+func DeleteGoodWarehouseOut(goodid int64, supply_warehouse_id int64) error {
969
+
970
+	err := XTWriteDB().Model(&models.WarehouseOutInfo{}).Where("good_id = ? and supply_cancel_out_id = ? and status = 1", goodid, supply_warehouse_id).Updates(map[string]interface{}{"status": 0}).Error
971
+
972
+	err = XTWriteDB().Model(&models.VmStockFlow{}).Where("good_id = ? and supply_cancel_out_id = ? and status = 1", goodid, supply_warehouse_id).Updates(map[string]interface{}{"status": 0}).Error
973
+
974
+	return err
975
+}
976
+func UpdateDrugWasehousring(goodid int64, supply_warehouse_id int64, info models.DrugWarehouseInfo) error {
977
+
978
+	err := XTWriteDB().Model(&info).Where("good_id = ? and supply_cancel_out_id = ? and status = 1", goodid, supply_warehouse_id).UpdateColumn("stock_max_number", gorm.Expr("stock_max_number - ?", info.StockMaxNumber)).Error
979
+	return err
980
+}
981
+
982
+func UpdateDrugWasehousringOne(goodid int64, supply_warehouse_id int64, info models.DrugWarehouseInfo) error {
983
+
984
+	err := XTWriteDB().Model(&info).Where("good_id = ? and supply_cancel_out_id = ? and status = 1", goodid, supply_warehouse_id).UpdateColumn("stock_min_number", gorm.Expr("stock_min_number - ?", info.StockMinNumber)).Error
985
+	return err
986
+}
987
+
988
+func DeleteDrugWarehouseOutNight(goodid int64, supply_warehouse_id int64) error {
989
+
990
+	err := XTWriteDB().Model(&models.DrugWarehouseOutInfo{}).Where("good_id = ? and supply_cancel_out_id = ? and status = 1", goodid, supply_warehouse_id).Updates(map[string]interface{}{"status": 0}).Error
991
+
992
+	err = XTWriteDB().Model(&models.DrugFlow{}).Where("good_id = ? and supply_cancel_out_id = ? and status = 1", goodid, supply_warehouse_id).Updates(map[string]interface{}{"status": 0}).Error
993
+
994
+	return err
995
+}

+ 417 - 0
service/warhouse_service.go Voir le fichier

@@ -1068,6 +1068,7 @@ func ConsumablesDeliveryTotal(orgID int64, patient_id int64, record_time int64,
1068 1068
 			}
1069 1069
 
1070 1070
 			ConsumablesDelivery(orgID, patient_id, record_time, &prepare, &out, newCount)
1071
+
1071 1072
 		}
1072 1073
 
1073 1074
 	}
@@ -2742,3 +2743,419 @@ func HisAuToReduce(orgID int64, prescribingNumber float64, warehouseout *models.
2742 2743
 
2743 2744
 	return
2744 2745
 }
2746
+
2747
+//采购管理耗材出库逻辑
2748
+func ConsumablesDeliveryNight(orgID int64, record_time int64, goods *models.WarehouseOutInfo, warehouseOut *models.WarehouseOut, count int64, creator int64, warehouse_out_id int64, cancel_out_id int64) (err error) {
2749
+
2750
+	var deliver_number int64 = 0
2751
+	var stock_number int64 = 0
2752
+	var maxNumber int64 = 0
2753
+
2754
+	deliver_number = goods.Count
2755
+
2756
+	// 根据先进先出原则,查询最先入库的批次,进行出库
2757
+
2758
+	// 如果没有对应的库存,则报错
2759
+	warehouse, err := FindFirstWarehousingInfoByStockNight(goods.GoodId, goods.GoodTypeId, warehouse_out_id)
2760
+	if err != nil {
2761
+
2762
+		return err
2763
+	}
2764
+
2765
+	stock_number = warehouse.StockCount
2766
+
2767
+	// 当库存数量大于或等于出库数量的话,则正常出库该批次
2768
+	if stock_number >= deliver_number {
2769
+
2770
+		warehouseOutInfo := &models.WarehouseOutInfo{
2771
+			WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber,
2772
+			WarehouseOutId:          warehouseOut.ID,
2773
+			WarehouseInfotId:        warehouse.ID,
2774
+			Status:                  1,
2775
+			Ctime:                   time.Now().Unix(),
2776
+			Remark:                  goods.Remark,
2777
+			OrgId:                   orgID,
2778
+			Type:                    1,
2779
+			Manufacturer:            goods.Manufacturer,
2780
+			Dealer:                  goods.Dealer,
2781
+			IsSys:                   0,
2782
+			SysRecordTime:           record_time,
2783
+			GoodTypeId:              goods.GoodTypeId,
2784
+			GoodId:                  goods.GoodId,
2785
+			ExpiryDate:              goods.ExpiryDate,
2786
+			ProductDate:             goods.ProductDate,
2787
+			Number:                  warehouse.Number,
2788
+			Price:                   goods.Price,
2789
+			LicenseNumber:           goods.LicenseNumber,
2790
+			SupplyCancelOutId:       warehouseOut.SupplyCancelOutId,
2791
+		}
2792
+		warehouseOutInfo.Count = goods.Count
2793
+		//添加出库单详情
2794
+		errOne := AddSigleWarehouseOutInfo(warehouseOutInfo)
2795
+		if errOne != nil {
2796
+			return errOne
2797
+		}
2798
+
2799
+		stockFlow := models.VmStockFlow{
2800
+			WarehousingId:           warehouse.ID,
2801
+			GoodId:                  goods.GoodId,
2802
+			Number:                  warehouse.Number,
2803
+			LicenseNumber:           goods.LicenseNumber,
2804
+			Count:                   goods.Count,
2805
+			UserOrgId:               goods.OrgId,
2806
+			PatientId:               goods.PatientId,
2807
+			SystemTime:              record_time,
2808
+			ConsumableType:          2,
2809
+			IsSys:                   goods.IsSys,
2810
+			WarehousingOrder:        "",
2811
+			WarehouseOutId:          warehouseOut.ID,
2812
+			WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber,
2813
+			IsEdit:                  1,
2814
+			CancelStockId:           0,
2815
+			CancelOrderNumber:       "",
2816
+			Manufacturer:            goods.Manufacturer,
2817
+			Dealer:                  goods.Dealer,
2818
+			Creator:                 creator,
2819
+			UpdateCreator:           0,
2820
+			Status:                  1,
2821
+			Ctime:                   time.Now().Unix(),
2822
+			Mtime:                   0,
2823
+			Price:                   warehouse.PackingPrice,
2824
+			WarehousingDetailId:     0,
2825
+			WarehouseOutDetailId:    warehouseOutInfo.ID,
2826
+			CancelOutDetailId:       0,
2827
+			ProductDate:             goods.ProductDate,
2828
+			ExpireDate:              goods.ExpiryDate,
2829
+			SupplyCancelOutId:       warehouseOut.SupplyCancelOutId,
2830
+			SupplyWarehouseId:       warehouseOut.SupplyWarehouseId,
2831
+		}
2832
+
2833
+		//创建出库流水
2834
+		CreateStockFlowOne(stockFlow)
2835
+
2836
+		maxNumber = goods.Count
2837
+
2838
+		if warehouse.StockCount < maxNumber {
2839
+			return errors.New("库存数量不足")
2840
+		}
2841
+
2842
+		warehouse.StockCount = warehouse.StockCount - maxNumber
2843
+		warehouse.Mtime = time.Now().Unix()
2844
+
2845
+		//扣减库存
2846
+		errThree := UpDateWarehouseInfoByStock(&warehouse)
2847
+
2848
+		if errThree != nil {
2849
+			return errThree
2850
+		}
2851
+
2852
+	} else {
2853
+
2854
+		// 当该批次的库存数量小于出库数量的话,则先把该批次出库完后,再进行递归出库
2855
+		warehouseOutInfo := &models.WarehouseOutInfo{
2856
+			WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber,
2857
+			WarehouseOutId:          warehouseOut.ID,
2858
+			WarehouseInfotId:        warehouse.ID,
2859
+			Status:                  1,
2860
+			Ctime:                   time.Now().Unix(),
2861
+			Remark:                  goods.Remark,
2862
+			OrgId:                   orgID,
2863
+			Type:                    1,
2864
+			Manufacturer:            goods.Manufacturer,
2865
+			Dealer:                  goods.Dealer,
2866
+			IsSys:                   0,
2867
+			SysRecordTime:           record_time,
2868
+			GoodTypeId:              goods.GoodTypeId,
2869
+			GoodId:                  goods.GoodId,
2870
+			ExpiryDate:              goods.ExpiryDate,
2871
+			ProductDate:             goods.ProductDate,
2872
+			Number:                  warehouse.Number,
2873
+			Price:                   warehouse.PackingPrice,
2874
+			LicenseNumber:           goods.LicenseNumber,
2875
+			SupplyCancelOutId:       warehouseOut.SupplyCancelOutId,
2876
+		}
2877
+		warehouseOutInfo.Count = stock_number
2878
+
2879
+		//查询是否已经生成出库单
2880
+		info, errcodes := GetStockInRecoredByGoodIdOne(goods.GoodId, goods.GoodTypeId, goods.SysRecordTime, goods.OrgId)
2881
+		if errcodes == gorm.ErrRecordNotFound {
2882
+			//创建出库单
2883
+			errOne := AddSigleWarehouseOutInfo(warehouseOutInfo)
2884
+			if errOne != nil {
2885
+				return errOne
2886
+			}
2887
+		} else {
2888
+			warehouseOutInfo.Count = info.Count + stock_number
2889
+
2890
+			UpdateAutoMaticReduceDetailOne(goods.GoodId, goods.GoodTypeId, goods.SysRecordTime, goods.OrgId, warehouseOutInfo)
2891
+		}
2892
+
2893
+		stockFlow := models.VmStockFlow{
2894
+			WarehousingId:           warehouse.ID,
2895
+			GoodId:                  goods.GoodId,
2896
+			Number:                  warehouse.Number,
2897
+			LicenseNumber:           goods.LicenseNumber,
2898
+			Count:                   stock_number,
2899
+			UserOrgId:               goods.OrgId,
2900
+			PatientId:               0,
2901
+			SystemTime:              record_time,
2902
+			ConsumableType:          2,
2903
+			IsSys:                   0,
2904
+			WarehousingOrder:        "",
2905
+			WarehouseOutId:          warehouseOut.ID,
2906
+			WarehouseOutOrderNumber: warehouseOut.WarehouseOutOrderNumber,
2907
+			IsEdit:                  1,
2908
+			CancelStockId:           0,
2909
+			CancelOrderNumber:       "",
2910
+			Manufacturer:            goods.Manufacturer,
2911
+			Dealer:                  goods.Dealer,
2912
+			Creator:                 creator,
2913
+			UpdateCreator:           0,
2914
+			Status:                  1,
2915
+			Ctime:                   time.Now().Unix(),
2916
+			Mtime:                   0,
2917
+			Price:                   warehouse.PackingPrice,
2918
+			WarehousingDetailId:     0,
2919
+			WarehouseOutDetailId:    warehouseOutInfo.ID,
2920
+			CancelOutDetailId:       0,
2921
+			ProductDate:             goods.ProductDate,
2922
+			ExpireDate:              goods.ExpiryDate,
2923
+			SupplyCancelOutId:       warehouseOut.SupplyCancelOutId,
2924
+			SupplyWarehouseId:       warehouseOut.SupplyWarehouseId,
2925
+		}
2926
+
2927
+		//创建出库明细
2928
+		CreateStockFlowOne(stockFlow)
2929
+		// 出库完成后,要将该批次库存清零
2930
+		warehouse.StockCount = 0
2931
+		warehouse.Mtime = time.Now().Unix()
2932
+
2933
+		errThree := UpDateWarehouseInfoByStock(&warehouse)
2934
+
2935
+		if errThree != nil {
2936
+			return errThree
2937
+		}
2938
+		// 清零完该库存后,还有剩余出库未出完,进行对应的递归操作
2939
+		goods.Count = deliver_number - stock_number
2940
+
2941
+		ConsumablesDeliveryNight(orgID, record_time, goods, warehouseOut, count, creator, warehouse_out_id, cancel_out_id)
2942
+
2943
+	}
2944
+	return nil
2945
+}
2946
+
2947
+func FindFirstWarehousingInfoByStockNight(good_id int64, good_type_id int64, warehouse_out_id int64) (info models.WarehousingInfo, err error) {
2948
+	err = readDb.Model(&models.WarehousingInfo{}).Where("good_id = ? AND good_type_id = ? AND status = 1 and stock_count > 0 and supply_warehouse_id = ?", good_id, good_type_id, warehouse_out_id).Order("ctime").First(&info).Error
2949
+	return info, err
2950
+}
2951
+
2952
+// 药品出库 递归方式
2953
+func AutoDrugDeliverInfoNight(orgID int64, prescribingNumber int64, warehouseout *models.DrugWarehouseOut, drup *models.BaseDrugLib, advice *models.DrugWarehouseOutInfo) (err error) {
2954
+
2955
+	// 判断处方里药品单位是拆零单位还是包装单位,	如果是包装单位,则根据规格,将包装数量转为拆零数量
2956
+	var deliver_number int64 = 0
2957
+	var stock_number int64 = 0
2958
+
2959
+	if advice.CountUnit == drup.MaxUnit {
2960
+		deliver_number = prescribingNumber * drup.MinNumber
2961
+	} else {
2962
+		deliver_number = prescribingNumber
2963
+	}
2964
+
2965
+	// 根据先进先出原则,查询最先入库的批次,进行出库
2966
+	// 如果没有对应的库存,则报错
2967
+	//开启事物
2968
+
2969
+	warehouse, err := FindLastDrugWarehousingInfoByID(advice.DrugId)
2970
+
2971
+	if err != nil {
2972
+
2973
+		return err
2974
+	}
2975
+
2976
+	// 将该批次的剩余库存数量转换为拆零数量
2977
+
2978
+	stock_number = warehouse.StockMaxNumber*drup.MinNumber + warehouse.StockMinNumber
2979
+
2980
+	// 当库存数量大于或等于出库数量的话,则正常出库该批次
2981
+	if stock_number >= deliver_number {
2982
+
2983
+		warehouseOutInfo := &models.DrugWarehouseOutInfo{
2984
+			WarehouseOutOrderNumber: warehouseout.WarehouseOutOrderNumber,
2985
+			WarehouseOutId:          warehouseout.ID,
2986
+			Status:                  1,
2987
+			Ctime:                   time.Now().Unix(),
2988
+			Remark:                  advice.Remark,
2989
+			OrgId:                   orgID,
2990
+			Type:                    1,
2991
+			Manufacturer:            advice.Manufacturer,
2992
+			Dealer:                  warehouse.Dealer,
2993
+			IsSys:                   0,
2994
+			SysRecordTime:           advice.Ctime,
2995
+			DrugId:                  advice.DrugId,
2996
+			ExpiryDate:              advice.ExpiryDate,
2997
+			ProductDate:             advice.ProductDate,
2998
+			Number:                  advice.Number,
2999
+			BatchNumber:             warehouse.BatchNumber,
3000
+			Count:                   deliver_number,
3001
+			RetailPrice:             advice.RetailPrice,
3002
+			Price:                   advice.Price,
3003
+			WarehouseInfoId:         warehouse.ID,
3004
+			CountUnit:               drup.MinUnit,
3005
+			AdviceId:                advice.ID,
3006
+			SupplyCancelOutId:       warehouseout.SupplyCancelOutId,
3007
+			SupplyWarehouseId:       warehouseout.SupplyWarehouseId,
3008
+		}
3009
+
3010
+		warehouseOutInfo.Count = prescribingNumber
3011
+		warehouseOutInfo.CountUnit = advice.CountUnit
3012
+
3013
+		errOne := AddSigleDrugWarehouseOutInfo(warehouseOutInfo)
3014
+		if errOne != nil {
3015
+			return errOne
3016
+		}
3017
+
3018
+		drugWareInfo, _ := GetLastWarehouseOutInfoById(advice.DrugId)
3019
+		drugflow := models.DrugFlow{
3020
+			WarehouseOutId:          warehouseout.ID,
3021
+			WarehouseOutOrderNumber: warehouseout.WarehouseOutOrderNumber,
3022
+			DrugId:                  advice.DrugId,
3023
+			Number:                  warehouse.Number,
3024
+			ProductDate:             advice.ProductDate,
3025
+			ExpireDate:              advice.ExpiryDate,
3026
+			Count:                   deliver_number,
3027
+			Price:                   advice.Price,
3028
+			Status:                  1,
3029
+			Ctime:                   time.Now().Unix(),
3030
+			UserOrgId:               advice.OrgId,
3031
+			Manufacturer:            advice.Manufacturer,
3032
+			Dealer:                  advice.Dealer,
3033
+			BatchNumber:             warehouse.BatchNumber,
3034
+			MaxUnit:                 drup.MinUnit,
3035
+			ConsumableType:          2,
3036
+			IsEdit:                  1,
3037
+			Creator:                 0,
3038
+			IsSys:                   0,
3039
+			WarehouseOutDetailId:    drugWareInfo.ID,
3040
+			AdviceId:                advice.ID,
3041
+			SupplyCancelOutId:       warehouseout.SupplyCancelOutId,
3042
+			SupplyWarehouseId:       warehouseout.SupplyWarehouseId,
3043
+		}
3044
+
3045
+		CreateDrugFlowOne(drugflow)
3046
+		// 出库完成后,要减去对应批次的库存数量
3047
+		// 判断处方里药品单位是拆零单位还是包装单位,	如果是拆零单位,则根据规格,将拆零数量转为包装数量
3048
+		var maxNumber int64 = 0
3049
+		var minNumber int64 = 0
3050
+		if advice.CountUnit == drup.MinUnit {
3051
+			maxNumber = prescribingNumber / drup.MinNumber
3052
+			minNumber = prescribingNumber % drup.MinNumber
3053
+		} else {
3054
+			maxNumber = prescribingNumber
3055
+		}
3056
+
3057
+		if warehouse.StockMaxNumber < maxNumber {
3058
+
3059
+			return errors.New("库存数量不足")
3060
+		}
3061
+
3062
+		warehouse.StockMaxNumber = warehouse.StockMaxNumber - maxNumber
3063
+		warehouse.Mtime = time.Now().Unix()
3064
+
3065
+		if warehouse.StockMinNumber < minNumber {
3066
+			warehouse.StockMaxNumber = warehouse.StockMaxNumber - 1
3067
+			warehouse.StockMinNumber = warehouse.StockMinNumber + drup.MinNumber - minNumber
3068
+		} else {
3069
+			warehouse.StockMinNumber = warehouse.StockMinNumber - minNumber
3070
+		}
3071
+
3072
+		if warehouse.StockMaxNumber < 0 {
3073
+			return errors.New("库存数量不足")
3074
+		}
3075
+
3076
+		errThree := UpDateDrugWarehouseInfoByStock(&warehouse)
3077
+		if errThree != nil {
3078
+			return errThree
3079
+		}
3080
+
3081
+		return nil
3082
+	} else {
3083
+		// 当该批次的库存数量小于出库数量的话,则先把该批次出库完后,再进行递归出库
3084
+		warehouseOutInfo := &models.DrugWarehouseOutInfo{
3085
+			WarehouseOutOrderNumber: warehouseout.WarehouseOutOrderNumber,
3086
+			WarehouseOutId:          warehouseout.ID,
3087
+			Status:                  1,
3088
+			Ctime:                   time.Now().Unix(),
3089
+			Remark:                  advice.Remark,
3090
+			OrgId:                   orgID,
3091
+			Type:                    1,
3092
+			Manufacturer:            advice.Manufacturer,
3093
+			Dealer:                  warehouse.Dealer,
3094
+			IsSys:                   0,
3095
+			SysRecordTime:           advice.Ctime,
3096
+			DrugId:                  advice.DrugId,
3097
+			ExpiryDate:              warehouse.ExpiryDate,
3098
+			ProductDate:             warehouse.ProductDate,
3099
+			Number:                  warehouse.Number,
3100
+			BatchNumber:             warehouse.BatchNumber,
3101
+			Count:                   stock_number,
3102
+			RetailPrice:             advice.RetailPrice,
3103
+			Price:                   advice.Price,
3104
+			WarehouseInfoId:         warehouse.ID,
3105
+			CountUnit:               drup.MinUnit,
3106
+			AdviceId:                advice.ID,
3107
+			SupplyCancelOutId:       warehouseout.SupplyCancelOutId,
3108
+			SupplyWarehouseId:       warehouseout.SupplyWarehouseId,
3109
+		}
3110
+		warehouseOutInfo.Count = stock_number
3111
+
3112
+		//warehouseOutInfo.CountUnit = advice.CountUnit
3113
+
3114
+		errOne := AddSigleDrugWarehouseOutInfo(warehouseOutInfo)
3115
+		if errOne != nil {
3116
+			return errOne
3117
+		}
3118
+		drugWareInfo, _ := GetLastWarehouseOutInfoById(advice.DrugId)
3119
+		drugflow := models.DrugFlow{
3120
+			WarehouseOutId:          warehouseout.ID,
3121
+			WarehouseOutOrderNumber: warehouseout.WarehouseOutOrderNumber,
3122
+			DrugId:                  advice.DrugId,
3123
+			Number:                  warehouse.Number,
3124
+			ProductDate:             advice.ProductDate,
3125
+			ExpireDate:              advice.ExpiryDate,
3126
+			Count:                   stock_number,
3127
+			Price:                   advice.Price,
3128
+			Status:                  1,
3129
+			Ctime:                   time.Now().Unix(),
3130
+			UserOrgId:               advice.OrgId,
3131
+			Manufacturer:            advice.Manufacturer,
3132
+			Dealer:                  advice.Dealer,
3133
+			BatchNumber:             warehouse.BatchNumber,
3134
+			MaxUnit:                 drup.MinUnit,
3135
+			ConsumableType:          2,
3136
+			IsEdit:                  1,
3137
+			Creator:                 0,
3138
+			IsSys:                   0,
3139
+			WarehouseOutDetailId:    drugWareInfo.ID,
3140
+			AdviceId:                advice.ID,
3141
+			SupplyCancelOutId:       warehouseout.SupplyCancelOutId,
3142
+			SupplyWarehouseId:       warehouseout.SupplyWarehouseId,
3143
+		}
3144
+		CreateDrugFlowOne(drugflow)
3145
+		// 出库完成后,要将该批次库存清零
3146
+		warehouse.StockMaxNumber = 0
3147
+		warehouse.StockMinNumber = 0
3148
+		warehouse.Mtime = time.Now().Unix()
3149
+		errThree := UpDateDrugWarehouseInfoByStock(&warehouse)
3150
+		if errThree != nil {
3151
+			return errThree
3152
+		}
3153
+		// 清零完该库存后,还有剩余出库未出完,进行对应的递归操作
3154
+		prescribingNumber_two_temp := deliver_number - stock_number
3155
+		advice.CountUnit = drup.MinUnit
3156
+
3157
+		AutoDrugDeliverInfoNight(orgID, prescribingNumber_two_temp, warehouseout, drup, advice)
3158
+	}
3159
+
3160
+	return
3161
+}