Browse Source

提交代码

陈少旭 10 months ago
parent
commit
6301fcd816

+ 213 - 0
controllers/his_export_data_controller.go View File

@@ -1,8 +1,12 @@
1 1
 package controllers
2 2
 
3 3
 import (
4
+	"XT_New/enums"
5
+	"XT_New/models"
4 6
 	"XT_New/service"
5 7
 	"github.com/astaxie/beego"
8
+	"github.com/shopspring/decimal"
9
+	"strings"
6 10
 )
7 11
 
8 12
 type HisExportDataController struct {
@@ -12,6 +16,215 @@ type HisExportDataController struct {
12 16
 func HisExportDataApiRegistRouters() {
13 17
 
14 18
 	beego.Router("/api/export", &HisExportDataController{}, "Get:GetExportData")
19
+
20
+	beego.Router("/api/batchsettle/get", &HisExportDataController{}, "Get:GetExportSettleData")
21
+
22
+}
23
+
24
+func (c *HisExportDataController) GetExportSettleData() {
25
+	patient_id, _ := c.GetInt64("patient_id", 0)
26
+	start_time := c.GetString("start_time")
27
+	end_time := c.GetString("end_time")
28
+	admin_user_id, _ := c.GetInt64("admin_user_id")
29
+
30
+	var order models.HisOrder
31
+	orders, _ := service.GetHisOrderByTime(patient_id, start_time, end_time)
32
+	order = orders[len(orders)-1]
33
+	order.MedfeeSumamt = 0
34
+	order.FundPaySumamt = 0
35
+	order.PsnCashPay = 0
36
+	order.ActPayDedc = 0
37
+	order.PreselfpayAmt = 0
38
+	order.HifpPay = 0
39
+	order.HifmiPay = 0
40
+	order.HifesPay = 0
41
+	order.MafPay = 0
42
+	order.CvlservPay = 0
43
+	order.OthPay = 0
44
+	order.AcctPay = 0
45
+
46
+	decimal.DivisionPrecision = 2
47
+
48
+	var orderInfos []models.BatchHisOrderInfo
49
+	for _, item := range orders {
50
+		order.MedfeeSumamt, _ = decimal.NewFromFloat(order.MedfeeSumamt).Add(decimal.NewFromFloat(item.MedfeeSumamt)).Float64()
51
+		order.FundPaySumamt, _ = decimal.NewFromFloat(order.FundPaySumamt).Add(decimal.NewFromFloat(item.FundPaySumamt)).Float64()
52
+		order.PsnCashPay, _ = decimal.NewFromFloat(order.PsnCashPay).Add(decimal.NewFromFloat(item.PsnCashPay)).Float64()
53
+		order.ActPayDedc, _ = decimal.NewFromFloat(order.ActPayDedc).Add(decimal.NewFromFloat(item.ActPayDedc)).Float64()
54
+		order.PreselfpayAmt, _ = decimal.NewFromFloat(order.PreselfpayAmt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
55
+		order.HifpPay, _ = decimal.NewFromFloat(order.HifpPay).Add(decimal.NewFromFloat(item.HifpPay)).Float64()
56
+
57
+		order.HifmiPay, _ = decimal.NewFromFloat(order.HifmiPay).Add(decimal.NewFromFloat(item.HifmiPay)).Float64()
58
+		order.HifesPay, _ = decimal.NewFromFloat(order.HifesPay).Add(decimal.NewFromFloat(item.HifesPay)).Float64()
59
+		order.MafPay, _ = decimal.NewFromFloat(order.MafPay).Add(decimal.NewFromFloat(item.MafPay)).Float64()
60
+		order.CvlservPay, _ = decimal.NewFromFloat(order.CvlservPay).Add(decimal.NewFromFloat(item.CvlservPay)).Float64()
61
+		order.OthPay, _ = decimal.NewFromFloat(order.OthPay).Add(decimal.NewFromFloat(item.OthPay)).Float64()
62
+		order.AcctPay, _ = decimal.NewFromFloat(order.AcctPay).Add(decimal.NewFromFloat(item.AcctPay)).Float64()
63
+
64
+		orderInfo, _ := service.GetBatchHisOrderInfoByNumber(item.Number)
65
+		orderInfos = append(orderInfos, orderInfo...)
66
+	}
67
+	//role, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, c.GetAdminUserInfo().AdminUser.Id)
68
+	if order.ID == 0 {
69
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOrderParamWrong)
70
+		return
71
+	}
72
+	miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
73
+	org_id := c.GetAdminUserInfo().CurrentOrgId
74
+	//adminInfo, _ := service.GetAdminUserInfoByID(org_id, order.Creator)
75
+	patient, _ := service.GetFaPiaoPatientByID(org_id, order.PatientId)
76
+
77
+	printor_admin, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id)
78
+	charge_admin, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, order.Creator)
79
+
80
+	var bedCostTotal float64 = 0         //床位总费
81
+	var bedCostSelfTotal float64 = 0     //床位自费
82
+	var bedCostPartSelfTotal float64 = 0 //床位部分项目自费
83
+
84
+	var operationCostTotal float64 = 0         //手术费
85
+	var operationCostSelfTotal float64 = 0     //手术费
86
+	var operationCostPartSelfTotal float64 = 0 //手术费
87
+
88
+	var otherCostTotal float64 = 0         //其他费用
89
+	var otherCostSelfTotal float64 = 0     //其他费用
90
+	var otherCostPartSelfTotal float64 = 0 //其他费用
91
+
92
+	var materialCostTotal float64 = 0         //材料费
93
+	var materialCostSelfTotal float64 = 0     //材料费
94
+	var materialCostPartSelfTotal float64 = 0 //材料费
95
+
96
+	var westernMedicineCostTotal float64 = 0         //西药费
97
+	var westernMedicineCostSelfTotal float64 = 0     //西药费
98
+	var westernMedicineCostPartSelfTotal float64 = 0 //西药费
99
+
100
+	var chineseTraditionalMedicineCostTotal float64 = 0         //中成药
101
+	var chineseTraditionalMedicineCostSelfTotal float64 = 0     //中成药
102
+	var chineseTraditionalMedicineCostPartSelfTotal float64 = 0 //中成药
103
+
104
+	var checkCostTotal float64 = 0         //检查费
105
+	var checkCostSelfTotal float64 = 0     //检查费
106
+	var checkCostPartSelfTotal float64 = 0 //检查费
107
+
108
+	var laboratoryCostTotal float64 = 0         //化验费
109
+	var laboratoryCostSelfTotal float64 = 0     //化验费
110
+	var laboratoryCostPartSelfTotal float64 = 0 //化验费
111
+
112
+	var treatCostTotal float64 = 0         //治疗费用
113
+	var treatCostSelfTotal float64 = 0     //治疗费用
114
+	var treatCostPartSelfTotal float64 = 0 //治疗费用
115
+
116
+	decimal.DivisionPrecision = 2
117
+
118
+	for _, item := range orderInfos {
119
+		if item.MedChrgitmType == "01" { //床位费
120
+			bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
121
+			bedCostSelfTotal, _ = decimal.NewFromFloat(bedCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
122
+			bedCostPartSelfTotal, _ = decimal.NewFromFloat(bedCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
123
+		}
124
+
125
+		if c.GetAdminUserInfo().CurrentOrgId == 10188 || c.GetAdminUserInfo().CurrentOrgId == 10217 {
126
+			if item.MedChrgitmType == "03" { //检查费
127
+				laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
128
+				laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
129
+				laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
130
+			}
131
+		} else {
132
+
133
+			if item.MedChrgitmType == "03" { //检查费
134
+				checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
135
+				checkCostSelfTotal, _ = decimal.NewFromFloat(checkCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
136
+				checkCostPartSelfTotal, _ = decimal.NewFromFloat(checkCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
137
+			}
138
+
139
+		}
140
+
141
+		if item.MedChrgitmType == "04" { //化验费
142
+			laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
143
+			laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
144
+			laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
145
+
146
+		}
147
+
148
+		if item.MedChrgitmType == "05" || item.MedChrgitmType == "1402" || item.MedChrgitmType == "1403" { //治疗费
149
+
150
+			treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
151
+			treatCostSelfTotal, _ = decimal.NewFromFloat(treatCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
152
+			treatCostPartSelfTotal, _ = decimal.NewFromFloat(treatCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
153
+
154
+		}
155
+
156
+		if item.MedChrgitmType == "06" { //手术费
157
+			operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
158
+			operationCostSelfTotal, _ = decimal.NewFromFloat(operationCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
159
+			operationCostPartSelfTotal, _ = decimal.NewFromFloat(operationCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
160
+		}
161
+
162
+		if item.MedChrgitmType == "08" { //材料费
163
+			materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
164
+			materialCostSelfTotal, _ = decimal.NewFromFloat(materialCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
165
+			materialCostPartSelfTotal, _ = decimal.NewFromFloat(materialCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
166
+		}
167
+
168
+		if item.MedChrgitmType == "09" { //西药费
169
+			westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
170
+			westernMedicineCostSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
171
+			westernMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
172
+		}
173
+
174
+		if item.MedChrgitmType == "11" { //中成费
175
+			chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
176
+			chineseTraditionalMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
177
+			chineseTraditionalMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
178
+		}
179
+
180
+		if item.MedChrgitmType == "14" || item.MedChrgitmType == "0" || item.MedChrgitmType == "12" || item.MedChrgitmType == "02" { //其他费
181
+			otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64()
182
+			otherCostSelfTotal, _ = decimal.NewFromFloat(otherCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64()
183
+			otherCostPartSelfTotal, _ = decimal.NewFromFloat(otherCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64()
184
+		}
185
+	}
186
+	c.ServeSuccessJSON(map[string]interface{}{
187
+		"order_infos":                                 orderInfos,
188
+		"number":                                      order.MdtrtId,
189
+		"date":                                        order.SettleAccountsDate,
190
+		"charge_admin":                                charge_admin,
191
+		"printor_admin":                               printor_admin,
192
+		"info":                                        order,
193
+		"bedCostTotal":                                bedCostTotal,
194
+		"bedCostSelfTotal":                            bedCostSelfTotal,
195
+		"bedCostPartSelfTotal":                        bedCostPartSelfTotal,
196
+		"operationCostTotal":                          operationCostTotal,
197
+		"operationCostSelfTotal":                      operationCostSelfTotal,
198
+		"operationCostPartSelfTotal":                  operationCostPartSelfTotal,
199
+		"otherCostTotal":                              otherCostTotal,
200
+		"otherCostSelfTotal":                          otherCostSelfTotal,
201
+		"otherCostPartSelfTotal":                      otherCostPartSelfTotal,
202
+		"materialCostTotal":                           materialCostTotal,
203
+		"materialCostSelfTotal":                       materialCostSelfTotal,
204
+		"materialCostPartSelfTotal":                   materialCostPartSelfTotal,
205
+		"westernMedicineCostTotal":                    westernMedicineCostTotal,
206
+		"westernMedicineCostSelfTotal":                westernMedicineCostSelfTotal,
207
+		"westernMedicineCostPartSelfTotal":            westernMedicineCostPartSelfTotal,
208
+		"chineseTraditionalMedicineCostTotal":         chineseTraditionalMedicineCostTotal,
209
+		"chineseTraditionalMedicineCostSelfTotal":     chineseTraditionalMedicineCostSelfTotal,
210
+		"chineseTraditionalMedicineCostPartSelfTotal": chineseTraditionalMedicineCostPartSelfTotal,
211
+		"checkCostTotal":                              checkCostTotal,
212
+		"checkCostSelfTotal":                          checkCostSelfTotal,
213
+		"checkCostPartSelfTotal":                      checkCostPartSelfTotal,
214
+		"laboratoryCostTotal":                         laboratoryCostTotal,
215
+		"laboratoryCostSelfTotal":                     laboratoryCostSelfTotal,
216
+		"laboratoryCostPartSelfTotal":                 laboratoryCostPartSelfTotal,
217
+		"treatCostTotal":                              treatCostTotal,
218
+		"treatCostSelfTotal":                          treatCostSelfTotal,
219
+		"treatCostPartSelfTotal":                      treatCostPartSelfTotal,
220
+		"patient":                                     patient,
221
+		"org_name":                                    miConfig.OrgName,
222
+		"org_code":                                    miConfig.Code,
223
+		"num":                                         len(orders),
224
+		"f_time":                                      strings.Split(orders[0].SetlTime, " ")[0],
225
+		"l_time":                                      strings.Split(orders[len(orders)-1].SetlTime, " ")[0],
226
+	})
227
+
15 228
 }
16 229
 
17 230
 func (this *HisExportDataController) GetExportData() {

+ 41 - 0
models/export_data_models.go View File

@@ -0,0 +1,41 @@
1
+package models
2
+
3
+type BatchHisOrderInfo struct {
4
+	ID               int64   `gorm:"column:id" json:"id" form:"id"`
5
+	OrderNumber      string  `gorm:"column:order_number" json:"order_number" form:"order_number"`
6
+	UploadDate       int64   `gorm:"column:upload_date" json:"upload_date" form:"upload_date"`
7
+	AdviceId         int64   `gorm:"column:advice_id" json:"advice_id" form:"advice_id"`
8
+	DetItemFeeSumamt float64 `gorm:"column:det_item_fee_sumamt" json:"det_item_fee_sumamt" form:"det_item_fee_sumamt"`
9
+	Cnt              float64 `gorm:"column:cnt" json:"cnt" form:"cnt"`
10
+	Pric             float64 `gorm:"column:pric" json:"pric" form:"pric"`
11
+	PatientId        int64   `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
12
+	PricUplmtAmt     float64 `gorm:"column:pric_uplmt_amt" json:"pric_uplmt_amt" form:"pric_uplmt_amt"`
13
+	SelfpayProp      float64 `gorm:"column:selfpay_prop" json:"selfpay_prop" form:"selfpay_prop"`
14
+	FulamtOwnpayAmt  float64 `gorm:"column:fulamt_ownpay_amt" json:"fulamt_ownpay_amt" form:"fulamt_ownpay_amt"`
15
+	OverlmtAmt       float64 `gorm:"column:overlmt_amt" json:"overlmt_amt" form:"overlmt_amt"`
16
+	PreselfpayAmt    float64 `gorm:"column:preselfpay_amt" json:"preselfpay_amt" form:"preselfpay_amt"`
17
+	BasMednFlag      string  `gorm:"column:bas_medn_flag" json:"bas_medn_flag" form:"bas_medn_flag"`
18
+	MedChrgitmType   string  `gorm:"column:med_chrgitm_type" json:"med_chrgitm_type" form:"med_chrgitm_type"`
19
+	HiNegoDrugFlag   string  `gorm:"column:hi_nego_drug_flag" json:"hi_nego_drug_flag" form:"hi_nego_drug_flag"`
20
+	Status           int64   `gorm:"column:status" json:"status" form:"status"`
21
+	Memo             string  `gorm:"column:memo" json:"memo" form:"memo"`
22
+	FeedetlSn        string  `gorm:"column:feedetl_sn" json:"feedetl_sn" form:"feedetl_sn"`
23
+	Mtime            int64   `gorm:"column:mtime" json:"mtime" form:"mtime"`
24
+	InscpScpAmt      float64 `gorm:"column:inscp_scp_amt" json:"inscp_scp_amt" form:"inscp_scp_amt"`
25
+	DrtReimFlag      string  `gorm:"column:drt_reim_flag" json:"drt_reim_flag" form:"drt_reim_flag"`
26
+	Ctime            int64   `gorm:"column:ctime" json:"ctime" form:"ctime"`
27
+	ListSpItemFlag   string  `gorm:"column:list_sp_item_flag" json:"list_sp_item_flag" form:"list_sp_item_flag"`
28
+	ChldMedcFlag     string  `gorm:"column:chld_medc_flag" json:"chld_medc_flag" form:"chld_medc_flag"`
29
+	LmtUsedFlag      string  `gorm:"column:lmt_used_flag" json:"lmt_used_flag" form:"lmt_used_flag"`
30
+	ChrgitmLv        string  `gorm:"column:chrgitm_lv" json:"chrgitm_lv" form:"chrgitm_lv"`
31
+	UserOrgId        int64   `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
32
+	HisPatientId     int64   `gorm:"column:his_patient_id" json:"his_patient_id" form:"his_patient_id"`
33
+	OrderId          int64   `gorm:"column:order_id" json:"order_id" form:"order_id"`
34
+	ProjectId        int64   `gorm:"column:project_id" json:"project_id" form:"project_id"`
35
+	Type             int64   `gorm:"column:type" json:"type" form:"type"`
36
+	ItemId           int64   `gorm:"column:item_id" json:"item_id" form:"item_id"`
37
+}
38
+
39
+func (BatchHisOrderInfo) TableName() string {
40
+	return "his_order_info"
41
+}

+ 9 - 0
service/export_data_service.go View File

@@ -125,3 +125,12 @@ func GetHisOrderDetailFor390(start_time string, end_time string, org_id int64) (
125 125
 	}
126 126
 	return
127 127
 }
128
+func GetHisOrderByTime(patient_id int64, start_time string, end_time string) (order []models.HisOrder, err error) {
129
+	err = readDb.Model(&models.HisOrder{}).Where("patient_id = ? AND status = 1 and order_status = 2 and setl_time >= ? and setl_time <= ?", patient_id, start_time+" 00:00:00", end_time+" 23:59:00").Find(&order).Error
130
+	return
131
+}
132
+
133
+func GetBatchHisOrderInfoByNumber(order_number string) (order []models.BatchHisOrderInfo, err error) {
134
+	err = readDb.Model(&models.BatchHisOrderInfo{}).Where("order_number = ? and status = 1", order_number).Find(&order).Error
135
+	return
136
+}