test_user il y a 2 semaines
Parent
révision
d98f3f7069

+ 218 - 59
controllers/js/jsyb_controller.go Voir le fichier

@@ -2176,41 +2176,83 @@ func (c *JSybController) Readcardchargeother() {
2176 2176
 	c.TestGetBasBaseInit(fixmedins_code, secret_key, ak)
2177 2177
 	switch id_card_type {
2178 2178
 	case "1":
2179
-		pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
2180
-		pBusiCardInfo = Remove0000(pBusiCardInfo)
2181
-		pCardInfo = Remove0000(pCardInfo)
2182
-		fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
2183
-
2184
-		fmt.Println(pBusiCardInfo)
2185
-		fmt.Println(pCardInfo)
2186
-		bas := strings.Split(pCardInfo, "|")
2187
-		basNumber := bas[2]
2188
-		id_card_no := bas[1]
2189
-		card_sn := bas[3]
2179
+		if mdtrtarea_admvs == "320830"{
2180
+			pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
2181
+			pBusiCardInfo = Remove0000(pBusiCardInfo)
2182
+
2183
+			pCardInfo = Remove0000(pCardInfo)
2184
+			fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
2185
+
2186
+			fmt.Println(pCardInfo)
2187
+			bas := strings.Split(pCardInfo, "|")
2188
+			basNumber := bas[2]
2189
+			id_card_no := bas[1]
2190
+			card_sn := bas[3]
2191
+
2192
+			id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
2193
+
2194
+			if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
2195
+				result, _ := service.Jsyb1101A(basNumber, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type_int, card_sn, "1", url, ak, pBusiCardInfo, id_card_no, cainfo)
2196
+				var dat map[string]interface{}
2197
+				if err := json.Unmarshal([]byte(result), &dat); err == nil {
2198
+					fmt.Println(dat)
2199
+				} else {
2200
+					fmt.Println(err)
2201
+				}
2202
+				c.ServeSuccessJSON(map[string]interface{}{
2203
+					"status":         "0",
2204
+					"card_info":      pCardInfo,
2205
+					"busi_card_info": pBusiCardInfo,
2206
+					"result":         dat,
2207
+					"type":           "1",
2208
+				})
2209
+			} else {
2210
+				c.ServeSuccessJSON(map[string]interface{}{
2211
+					"status": "-1",
2212
+				})
2190 2213
 
2191
-		id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
2214
+			}
2192 2215
 
2193
-		if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
2194
-			result, _ := service.Jsyb1101A(basNumber, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type_int, card_sn, "1", url, ak, pBusiCardInfo, id_card_no, cainfo)
2195
-			var dat map[string]interface{}
2196
-			if err := json.Unmarshal([]byte(result), &dat); err == nil {
2197
-				fmt.Println(dat)
2216
+		}else{
2217
+			pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
2218
+			pBusiCardInfo = Remove0000(pBusiCardInfo)
2219
+			pCardInfo = Remove0000(pCardInfo)
2220
+			fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
2221
+
2222
+			fmt.Println(pBusiCardInfo)
2223
+			fmt.Println(pCardInfo)
2224
+			bas := strings.Split(pCardInfo, "|")
2225
+			basNumber := bas[2]
2226
+			id_card_no := bas[1]
2227
+			card_sn := bas[3]
2228
+
2229
+			id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
2230
+
2231
+			if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
2232
+				result, _ := service.Jsyb1101A(basNumber, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type_int, card_sn, "1", url, ak, pBusiCardInfo, id_card_no, cainfo)
2233
+				var dat map[string]interface{}
2234
+				if err := json.Unmarshal([]byte(result), &dat); err == nil {
2235
+					fmt.Println(dat)
2236
+				} else {
2237
+					fmt.Println(err)
2238
+				}
2239
+				c.ServeSuccessJSON(map[string]interface{}{
2240
+					"status":         "0",
2241
+					"card_info":      pCardInfo,
2242
+					"busi_card_info": pBusiCardInfo,
2243
+					"result":         dat,
2244
+					"type":           "1",
2245
+				})
2198 2246
 			} else {
2199
-				fmt.Println(err)
2247
+				c.ServeSuccessJSON(map[string]interface{}{
2248
+					"status": "-1",
2249
+				})
2250
+
2200 2251
 			}
2201
-			c.ServeSuccessJSON(map[string]interface{}{
2202
-				"status":         "0",
2203
-				"card_info":      pCardInfo,
2204
-				"busi_card_info": pBusiCardInfo,
2205
-				"result":         dat,
2206
-				"type":           "1",
2207
-			})
2208
-		} else {
2209
-			c.ServeSuccessJSON(map[string]interface{}{
2210
-				"status": "-1",
2211
-			})
2252
+
2212 2253
 
2213 2254
 		}
2255
+
2214 2256
 		break
2215 2257
 	case "3": //电子社保卡
2216 2258
 		_, pBusiCardInfo := c.GetELeInfo(fixmedins_code, operator_id, operator)
@@ -2314,41 +2356,84 @@ func (c *JSybController) ReadCard() {
2314 2356
 	c.TestGetBasBaseInit(fixmedins_code, secret_key, ak)
2315 2357
 	switch id_card_type {
2316 2358
 	case "1":
2317
-		pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
2318
-		pBusiCardInfo = Remove0000(pBusiCardInfo)
2319
-		pCardInfo = Remove0000(pCardInfo)
2320
-		fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
2359
+		if mdtrtarea_admvs == "320830"{
2360
+			pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
2361
+			pBusiCardInfo = Remove0000(pBusiCardInfo)
2362
+
2363
+			pCardInfo = Remove0000(pCardInfo)
2364
+			fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
2365
+			fmt.Println(pBusiCardInfo)
2366
+			fmt.Println(pCardInfo)
2367
+
2368
+			bas := strings.Split(pCardInfo, "|")
2369
+			basNumber := bas[2]
2370
+			id_card_no := bas[1]
2371
+			card_sn := bas[3]
2372
+
2373
+			id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
2374
+			if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
2375
+				result, _ := service.Jsyb1101A(basNumber, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type_int, card_sn, "1", url, ak, pBusiCardInfo, id_card_no, cainfo)
2376
+				var dat map[string]interface{}
2377
+				if err := json.Unmarshal([]byte(result), &dat); err == nil {
2378
+					fmt.Println(dat)
2379
+				} else {
2380
+					fmt.Println(err)
2381
+				}
2382
+				c.ServeSuccessJSON(map[string]interface{}{
2383
+					"status":         "0",
2384
+					"card_info":      pCardInfo,
2385
+					"busi_card_info": pBusiCardInfo,
2386
+					"result":         dat,
2387
+					"type":           "1",
2388
+				})
2389
+			} else {
2390
+				c.ServeSuccessJSON(map[string]interface{}{
2391
+					"status": "-1",
2392
+				})
2321 2393
 
2322
-		fmt.Println(pBusiCardInfo)
2323
-		fmt.Println(pCardInfo)
2324
-		bas := strings.Split(pCardInfo, "|")
2325
-		basNumber := bas[2]
2326
-		id_card_no := bas[1]
2327
-		card_sn := bas[3]
2394
+			}
2328 2395
 
2329
-		id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
2330 2396
 
2331
-		if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
2332
-			result, _ := service.Jsyb1101A(basNumber, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type_int, card_sn, "1", url, ak, pBusiCardInfo, id_card_no, cainfo)
2333
-			var dat map[string]interface{}
2334
-			if err := json.Unmarshal([]byte(result), &dat); err == nil {
2335
-				fmt.Println(dat)
2397
+		}else{
2398
+			pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
2399
+			pBusiCardInfo = Remove0000(pBusiCardInfo)
2400
+			pCardInfo = Remove0000(pCardInfo)
2401
+			fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
2402
+
2403
+			fmt.Println(pBusiCardInfo)
2404
+			fmt.Println(pCardInfo)
2405
+			bas := strings.Split(pCardInfo, "|")
2406
+			basNumber := bas[2]
2407
+			id_card_no := bas[1]
2408
+			card_sn := bas[3]
2409
+
2410
+			id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
2411
+
2412
+			if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
2413
+				result, _ := service.Jsyb1101A(basNumber, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type_int, card_sn, "1", url, ak, pBusiCardInfo, id_card_no, cainfo)
2414
+				var dat map[string]interface{}
2415
+				if err := json.Unmarshal([]byte(result), &dat); err == nil {
2416
+					fmt.Println(dat)
2417
+				} else {
2418
+					fmt.Println(err)
2419
+				}
2420
+				c.ServeSuccessJSON(map[string]interface{}{
2421
+					"status":         "0",
2422
+					"card_info":      pCardInfo,
2423
+					"busi_card_info": pBusiCardInfo,
2424
+					"result":         dat,
2425
+					"type":           "1",
2426
+				})
2336 2427
 			} else {
2337
-				fmt.Println(err)
2428
+				c.ServeSuccessJSON(map[string]interface{}{
2429
+					"status": "-1",
2430
+				})
2431
+
2338 2432
 			}
2339
-			c.ServeSuccessJSON(map[string]interface{}{
2340
-				"status":         "0",
2341
-				"card_info":      pCardInfo,
2342
-				"busi_card_info": pBusiCardInfo,
2343
-				"result":         dat,
2344
-				"type":           "1",
2345
-			})
2346
-		} else {
2347
-			c.ServeSuccessJSON(map[string]interface{}{
2348
-				"status": "-1",
2349
-			})
2433
+
2350 2434
 
2351 2435
 		}
2436
+
2352 2437
 		break
2353 2438
 	case "3": //电子社保卡
2354 2439
 		_, pBusiCardInfo := c.GetELeInfo(fixmedins_code, operator_id, operator)
@@ -2486,14 +2571,21 @@ func (c *JSybController) TestGetBasBaseInit(code string, secret_key string, ak s
2486 2571
 	//miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
2487 2572
 	str := make([]byte, 2048)
2488 2573
 	inputData := make(map[string]interface{})
2489
-	inputData["IP"] = "10.58.65.240"
2574
+
2575
+	if code == "H32083002114"{
2576
+		inputData["IP"] = "10.58.73.212"
2577
+		inputData["EC_URL"] = "http://10.58.33.207:10086/localcfc/api/hsecfc/localQrCodeQuery"
2578
+
2579
+	}else{
2580
+		inputData["IP"] = "10.58.65.240"
2581
+		inputData["EC_URL"] = "http://10.58.33.207:10086/localcfc/api/hsecfc/localQrCodeQuery"
2582
+	}
2490 2583
 	inputData["PORT"] = "8086"
2491 2584
 	inputData["TIMEOUT"] = "180"
2492 2585
 	inputData["LOG_PATH"] = "C:\\log\\"
2493 2586
 
2494 2587
 	//inputData["EC_URL"] = "http://10.58.33.207:10086/localcfc/api/hsecfc/localQrCodeQuery"
2495 2588
 
2496
-	inputData["EC_URL"] = "http://10.58.33.207:10086/localcfc/api/hsecfc/localQrCodeQuery"
2497 2589
 	inputData["CARD_PASSTYPE"] = "1"
2498 2590
 	inputData["API_NAME"] = "hssServives"
2499 2591
 	inputData["API_VERSION"] = "1.0.0"
@@ -2521,6 +2613,73 @@ func (c *JSybController) TestGetBasBaseInit(code string, secret_key string, ak s
2521 2613
 	//initFlag = 1
2522 2614
 	return
2523 2615
 }
2616
+func (c *JSybController) GetjsBasBaseInfo() string {
2617
+	DllDef := syscall.MustLoadDLL("SSCardDriver.dll")
2618
+	readCard := DllDef.MustFindProc("iReadCardBas")
2619
+	if readCard == nil {
2620
+		fmt.Println("readcard is nil")
2621
+		readCard = DllDef.MustFindProc("iReadCardBas")
2622
+	}
2623
+
2624
+	//str := make([]byte, 1024)
2625
+	str1 := make([]byte, 1024)
2626
+	ret2, _, _ := readCard.Call(uintptr(3), (uintptr)(unsafe.Pointer(&str1[0])))
2627
+
2628
+	//file, err := os.Open("C:\\Users\\Administrator\\Desktop\\11\\Power-Card\\SSCardDriver\\api.log")
2629
+	//if err != nil {
2630
+	//	fmt.Println("Error opening file:", err)
2631
+	//}
2632
+	//defer file.Close()
2633
+	//
2634
+	//var lastProgram Program
2635
+	//scanner := bufio.NewScanner(file)
2636
+	//inProgram := false
2637
+	//
2638
+	//for scanner.Scan() {
2639
+	//	line := scanner.Text()
2640
+	//	if strings.Contains(line, "<program>") {
2641
+	//		inProgram = true
2642
+	//		programXML := "<program>"
2643
+	//		for scanner.Scan() {
2644
+	//			line = scanner.Text()
2645
+	//			programXML += line
2646
+	//			if strings.Contains(line, "</program>") {
2647
+	//				programXML += "</program>"
2648
+	//				break
2649
+	//			}
2650
+	//		}
2651
+	//		if err := xml.Unmarshal([]byte(programXML), &lastProgram); err == nil {
2652
+	//			// 解析成功,更新最后的 Program
2653
+	//		}
2654
+	//		inProgram = false
2655
+	//	}
2656
+	//}
2657
+	//
2658
+	//	fmt.Println("Error reading file:", inProgram)
2659
+	//
2660
+	//if err := scanner.Err(); err != nil {
2661
+	//	fmt.Println("Error reading file:", err)
2662
+
2663
+	//}
2664
+
2665
+	// 输出最后一次的 Program
2666
+	//fmt.Printf("最后一次的 <program>:\n")
2667
+	//fmt.Printf("<program>\n")
2668
+	//fmt.Printf("  <function_id>%s</function_id>\n", lastProgram.FunctionID)
2669
+	//fmt.Printf("  <cardinfo>%s</cardinfo>\n", lastProgram.CardInfo)
2670
+	//fmt.Printf("  <user>%s</user>\n", lastProgram.User)
2671
+	//fmt.Printf("</program>\n")
2672
+
2673
+	fmt.Println(string(str1))
2674
+	fmt.Println(":", ConvertToString(string(str1), "gbk", "utf-8"))
2675
+
2676
+	if ret2 != 0 {
2677
+		return ""
2678
+	}
2679
+
2680
+	return string(str1)
2681
+}
2682
+
2524 2683
 func (c *JSybController) GetBasBaseInfo() (string, string) {
2525 2684
 	DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
2526 2685
 	readCard := DllDef.MustFindProc("ReadCardBas")

Fichier diff supprimé car celui-ci est trop grand
+ 631 - 290
controllers/sg/his_api_controller.go


+ 3 - 3
main.go Voir le fichier

@@ -707,7 +707,7 @@ type ResultSeventeen struct {
707 707
 //
708 708
 func GetblBatchSettleList() {
709 709
 	org_id, _ := beego.AppConfig.Int64("org_id")
710
-	org_id = 10028
710
+	org_id = 10610
711 711
 	var orders []*models.HisOrder
712 712
 	//var orders []*models.HisOrderError
713 713
 	orders, _ = service.GetAllHisOrder10138()
@@ -723,13 +723,13 @@ func GetblBatchSettleList() {
723 723
 			miConfig, _ := service.FindMedicalInsuranceInfo(order.UserOrgId)
724 724
 			var configTwo []*models.HisXtDiagnoseConfig
725 725
 			diagnosis_idstwo := strings.Split(his.Diagnosis, ",")
726
-			curRoles, _ := service.GetAdminUserInfoByID(org_id, 5320)
726
+			curRoles, _ := service.GetAdminUserInfoByID(org_id, 2185)
727 727
 			for _, item := range diagnosis_idstwo {
728 728
 				id, _ := strconv.ParseInt(item, 10, 64)
729 729
 				diagnosisConfig, _ := service.FindDiagnoseById(id)
730 730
 				configTwo = append(configTwo, &diagnosisConfig)
731 731
 			}
732
-			patient, _ := service.GetPatientByIDTwo(10028, order.PatientId)
732
+			patient, _ := service.GetPatientByIDTwo(10610, order.PatientId)
733 733
 
734 734
 			sickConfig, _ := service.FindSickById(his.SickType)
735 735
 			//if order.MedType == "1111" || order.MedType == "1112" {

+ 4 - 1
service/gdyb_service.go Voir le fichier

@@ -3449,6 +3449,7 @@ func Gdyb4101(struct4101 Struct4101, secret_key string, org_name string, doctor
3449 3449
 	inputData["hi_paymtd"] = struct4101.HiPaymtd              // 医保支付方式  必填
3450 3450
 	inputData["hsorg"] = struct4101.Hsorg                     // 医保机构  必填
3451 3451
 	inputData["hsorg_opter"] = struct4101.HsorgOpter          // 医保机构经办人  必填
3452
+
3452 3453
 	inputData["medins_fill_dept"] = struct4101.MedinsFillDept // 医疗机构填报部门  必填
3453 3454
 	inputData["medins_fill_psn"] = struct4101.MedinsFillPsn   // 医疗机构填报人  必填
3454 3455
 	inputData["psn_cashpay"] = struct4101.PsnCashpay          // 医疗机构填报人  必填
@@ -4067,6 +4068,8 @@ func Gdyb4101For10138(struct4101 Struct4101, secret_key string, org_name string,
4067 4068
 	inputData["pwcry_afadm_coma_dura"] = "" // 颅脑损伤患者入院后昏迷时长  必填
4068 4069
 
4069 4070
 	inputData["spga_nurscare_days"] = "" // 特级护理天数  必填
4071
+	inputData["hsorg"] = struct4101.Hsorg                     // 医保机构  必填
4072
+	inputData["hsorg_opter"] = struct4101.HsorgOpter          // 医保机构经办人  必填
4070 4073
 
4071 4074
 	inputData["lv1_nurscare_days"] = ""          // 一级护理天数  必填
4072 4075
 	inputData["scd_nurscare_days"] = ""          // 二级护理天数  必填
@@ -4084,7 +4087,7 @@ func Gdyb4101For10138(struct4101 Struct4101, secret_key string, org_name string,
4084 4087
 	//inputData["chfpdr_code"] = struct4101.DoctorCode          // 主诊医师代码  必填
4085 4088
 	inputData["setl_begn_date"] = struct4101.SetlBegnDate     // 结算开始日期  必填
4086 4089
 	inputData["setl_end_date"] = struct4101.SetlEndDate       // 结算结束日期  必填
4087
-	inputData["medins_fill_dept"] = struct4101.MedinsFillDept // 医疗机构填报部门  必填
4090
+	inputData["medins_fill_dept"] = org_name // 医疗机构填报部门  必填
4088 4091
 	inputData["medins_fill_psn"] = struct4101.MedinsFillPsn   // 医疗机构填报人  必填
4089 4092
 
4090 4093
 	//payinfo := make([]map[string]interface{}, 0) // 基金支付信息

+ 3 - 3
service/his_service.go Voir le fichier

@@ -1570,7 +1570,7 @@ func GetAllHisOrder10106(org_id int64) (his []*models.HisOrder, err error) {
1570 1570
 	return
1571 1571
 }
1572 1572
 func GetAllHisOrder10138() (his []*models.HisOrder, err error) {
1573
-	err = readDb.Model(&models.HisOrder{}).Where("user_org_id = 10028  AND status = 1  AND  order_status = 2 AND  setl_id <> '' AND setl_time >= '2024-11-01 00:00:00'  and mdtrt_id not like '%out%'").Order("setl_time asc").Find(&his).Error
1573
+	err = readDb.Model(&models.HisOrder{}).Where("user_org_id = 10610  AND status = 1  AND  order_status = 2 AND  setl_id <> '' AND setl_time >= '2024-12-01 00:00:00'  and mdtrt_id not like '%out%'").Order("setl_time asc").Find(&his).Error
1574 1574
 	fmt.Println(err)
1575 1575
 	return
1576 1576
 }
@@ -1581,7 +1581,7 @@ func GetOrderError10138() (order []*models.HisOrderError, err error) {
1581 1581
 
1582 1582
 func GetAllHisOrder10278() (his []*models.HisOrder, err error) {
1583 1583
 
1584
-	err = readDb.Model(&models.HisOrder{}).Where(" user_org_id = 10278  AND status = 1  AND  order_status = 2 AND setl_id <> ''  AND setl_time >= '2024-11-01 00:00:00'  and mdtrt_id not like '%out%'").Order("setl_time asc").Find(&his).Error
1584
+	err = readDb.Model(&models.HisOrder{}).Where(" user_org_id = 10278  AND status = 1  AND  order_status = 2 AND setl_id <> ''  AND setl_time >= '2024-12-01 00:00:00'  and mdtrt_id not like '%out%'").Order("setl_time asc").Find(&his).Error
1585 1585
 	fmt.Println(err)
1586 1586
 	return
1587 1587
 }
@@ -1801,7 +1801,7 @@ func GetNewDrugFlowInforTen(system_time int64, org_id int64) (flows []*models.Dr
1801 1801
 }
1802 1802
 
1803 1803
 func GetNewDrugFlowInforTenone(start_system_time int64, end_system_time int64, org_id int64) (flows []*models.DrugFlow, err error) {
1804
-	err = readDb.Model(&models.DrugFlow{}).Joins("join his_doctor_advice_info info on info.patient_id = xt_drug_flow.patient_id and info.drug_id = xt_drug_flow.drug_id and info.record_date = xt_drug_flow.system_time").Where("xt_drug_flow.user_org_id = ? and xt_drug_flow.status = 1 and xt_drug_flow.consumable_type = 3 and xt_drug_flow.is_sale = 0 and xt_drug_flow.system_time >= ? and xt_drug_flow.system_time <= ?", org_id, start_system_time, end_system_time).Preload("HisDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
1804
+	err = readDb.Model(&models.DrugFlow{}).Joins("join his_doctor_advice_info info on info.patient_id = xt_drug_flow.patient_id and info.drug_id = xt_drug_flow.drug_id and info.record_date = xt_drug_flow.system_time and info.is_upload <> 1").Where("xt_drug_flow.user_org_id = ? and xt_drug_flow.status = 1 and xt_drug_flow.consumable_type = 3 and xt_drug_flow.is_sale = 0 and xt_drug_flow.system_time >= ? and xt_drug_flow.system_time <= ?", org_id, start_system_time, end_system_time).Preload("HisDoctorAdviceInfo", func(db *gorm.DB) *gorm.DB {
1805 1805
 		return db.Where("status = 1 and drug_code <> ''").Preload("BaseDrugLib", "status=1")
1806 1806
 	}).Preload("NewDrugWarehouseInfo", "status = 1").Find(&flows).Error
1807 1807
 	return

+ 168 - 10
service/jsyb_service.go Voir le fichier

@@ -1,16 +1,21 @@
1 1
 package service
2 2
 
3 3
 import (
4
+	"bytes"
5
+	"crypto/hmac"
6
+	"crypto/sha1"
7
+	"encoding/base64"
8
+	"net/url"
4 9
 	//"bytes"
5 10
 	"encoding/json"
6 11
 	"fmt"
7 12
 	"gdyb/models"
8 13
 	"gdyb/utils/csbhttp"
9
-	//"io/ioutil"
14
+	"io/ioutil"
10 15
 	"net"
11 16
 	"strings"
12 17
 	"regexp"
13
-	//"net/http"
18
+	"net/http"
14 19
 	"strconv"
15 20
 	"time"
16 21
 )
@@ -199,6 +204,140 @@ func Jsyb1101A(certNo string, org_name string, doctor string, fixmedins_code str
199 204
 	return HttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData)), inputLog
200 205
 }
201 206
 
207
+func generateSignature(param string, secretKey string) (string, error) {
208
+	// 创建 HMAC-SHA1 哈希对象
209
+	hmacSha1 := hmac.New(sha1.New, []byte(secretKey))
210
+
211
+	// 更新数据
212
+	_, err := hmacSha1.Write([]byte(param))
213
+	if err != nil {
214
+		return "", err
215
+	}
216
+
217
+	// 计算哈希值
218
+	signature := hmacSha1.Sum(nil)
219
+
220
+	// 将结果转换为 Base64 编码
221
+	return base64.StdEncoding.EncodeToString(signature), nil
222
+}
223
+
224
+func Jsyb1101ooo(certNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, id_card_type int64, card_sn string, certificates string, request_url string, access_key string, pBusiCardInfo string, id_card_no string, cainfo string) (string, string) {
225
+	timestamp := time.Now().Unix()
226
+	//生成输入报文
227
+	inputMessage := SetJSInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
228
+
229
+	input := make(map[string]interface{})
230
+	inputData := make(map[string]interface{})
231
+	inputMessage["infno"] = "1101" // 交易编码
232
+
233
+	if certificates == "3" {
234
+		inputData["mdtrt_cert_type"] = "99" // 就诊凭证类型
235
+		inputData["certno"] = certNo        // 证件号码
236
+		inputData["psn_cert_type"] = "99"   // 人员证件类型
237
+
238
+	} else {
239
+		if id_card_type == 1 {
240
+			inputData["mdtrt_cert_type"] = "03" // 就诊凭证类型
241
+			inputData["card_sn"] = card_sn      // 卡识别码
242
+			inputData["certno"] = id_card_no    // 证件号码
243
+			inputData["psn_cert_type"] = "01"   // 人员证件类型
244
+
245
+		} else {
246
+			inputData["mdtrt_cert_type"] = "02" // 就诊凭证类型
247
+			inputData["card_sn"] = ""           // 卡识别码
248
+			inputData["certno"] = certNo        // 证件号码
249
+			inputData["psn_cert_type"] = "01"   // 人员证件类型
250
+		}
251
+	}
252
+
253
+	inputData["mdtrt_cert_no"] = certNo  // 就诊凭证编号
254
+	inputData["begntime"] = ""                                // 开始时间
255
+	inputData["psn_name"] = ""                                // 人员姓名
256
+	input["data"] = inputData
257
+	inputMessage["input"] = input //交易输入
258
+
259
+	//var inputLog string
260
+	bytesData, _ := json.Marshal(inputMessage)
261
+	reader := bytes.NewReader(bytesData)
262
+
263
+	//inputLog = string(bytesData)
264
+	fmt.Println(string(bytesData))
265
+	if err != nil {
266
+		fmt.Println(err.Error())
267
+		return err.Error(), ""
268
+	}
269
+	request_url = request_url
270
+	fmt.Println(request_url)
271
+
272
+	request, err := http.NewRequest("POST", request_url, reader)
273
+
274
+	// 参数
275
+	_api_access_key := access_key
276
+	_api_name := "hssServives"
277
+	timestampInMilliseconds  := time.Now().Unix()
278
+
279
+	timestamp = timestampInMilliseconds
280
+	_api_timestamp := timestamp
281
+	_api_version := "1.0.0"
282
+	secretKey := secret_key
283
+
284
+	str := fmt.Sprintf("%d", _api_timestamp)
285
+
286
+	// 拼接参数
287
+	param := "_api_access_key=" + url.QueryEscape(_api_access_key) +
288
+		"&_api_name=" + url.QueryEscape(_api_name) +
289
+		"&_api_timestamp=" + url.QueryEscape(str) +
290
+		"&_api_version=" + url.QueryEscape(_api_version)
291
+	secret_key = strings.Replace(secret_key, "+", "%2B", -1)
292
+	fmt.Println("h8Z+d10iYI4B+kry0wgYSt5bFBs=")
293
+	secret_key  = "h8Z+d10iYI4B+kry0wgYSt5bFBs="
294
+	// 生成签名
295
+	signature, _ := generateSignature(param, secretKey)
296
+
297
+	fmt.Println("ak:")
298
+	fmt.Println(_api_access_key)
299
+	fmt.Println("sk:")
300
+	fmt.Println(secret_key)
301
+
302
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
303
+	request.Header.Set("_api_timestamp", str)
304
+	request.Header.Set("_api_name", _api_name)
305
+	request.Header.Set("_api_version",_api_version)
306
+	request.Header.Set("_api_access_key", _api_access_key)
307
+	request.Header.Set("_api_signature", signature)
308
+
309
+	fmt.Println(request)
310
+	fmt.Println(param)
311
+
312
+	if err != nil {
313
+		fmt.Println(err.Error())
314
+		return err.Error(), ""
315
+	}
316
+
317
+
318
+	client := http.Client{}
319
+	resp, err := client.Do(request)
320
+	if err != nil {
321
+		fmt.Println(err.Error())
322
+		return err.Error(), ""
323
+	}
324
+	respBytes, err := ioutil.ReadAll(resp.Body)
325
+	if err != nil {
326
+		fmt.Println(err.Error())
327
+		return err.Error(), ""
328
+	}
329
+	str2 := string(respBytes)
330
+	fmt.Println(str2)
331
+	return str2, string(bytesData)
332
+
333
+
334
+
335
+
336
+
337
+
338
+	//return HttpRequest(request_url, access_key, secret_key, timestamp, string(bytesData)), inputLog
339
+}
340
+
202 341
 func Jsyb1101B(org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, request_url string, access_key string, Token string, cainfo string, id_card_no string) (string, string) {
203 342
 	timestamp := time.Now().Unix()
204 343
 	//生成输入报文
@@ -282,8 +421,15 @@ func Jsyb2201(psnNo string, insutype string, certNo string, org_name string, ope
282 421
 	inputData["begntime"] = timeFormatOne // 开始时间
283 422
 
284 423
 	if id_card_type == 1 {
285
-		inputData["mdtrt_cert_type"] = "03"                       // 就诊凭证类型
286
-		inputData["mdtrt_cert_no"] = certNo + "|" + verify_number // 就诊凭证编号
424
+		if mdtrtarea_admvs == "320830"{
425
+			inputData["mdtrt_cert_type"] = "03"                       // 就诊凭证类型
426
+			inputData["mdtrt_cert_no"] = certNo + "|" + verify_number  // 就诊凭证编号
427
+		}else{
428
+			inputData["mdtrt_cert_type"] = "03"                       // 就诊凭证类型
429
+			inputData["mdtrt_cert_no"] = certNo + "|" + verify_number // 就诊凭证编号
430
+
431
+		}
432
+
287 433
 	} else if id_card_type == 3 {
288 434
 		inputData["mdtrt_cert_type"] = "04"        // 就诊凭证类型
289 435
 		inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
@@ -674,7 +820,6 @@ func Jsyb2204(psnNo string, mdtrtId string, hisPrescription []*models.HisPrescri
674 820
 func Jsyb2205(psnNo string, mdtrtId string, chrgBchno string, org_name string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, fixmedins_code string, request_url string, access_key string, cainfo string) (string, string) {
675 821
 
676 822
 	timestamp := time.Now().Unix()
677
-
678 823
 	// 生成输入报文
679 824
 	inputMessage := SetJSInputMessage(timestamp, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
680 825
 	input := make(map[string]interface{})
@@ -682,7 +827,7 @@ func Jsyb2205(psnNo string, mdtrtId string, chrgBchno string, org_name string, d
682 827
 	inputMessage["infno"] = "2205" // 交易编码
683 828
 
684 829
 	inputData["mdtrt_id"] = mdtrtId  // 就诊 ID(来自2201接口返回)
685
-	inputData["chrg_bchno"] = "0000" // 收费批次号(来自2204生成的)
830
+	inputData["chrg_bchno"] = chrgBchno // 收费批次号(来自2204生成的)
686 831
 
687 832
 	inputData["psn_no"] = psnNo   // 人员编号 (来自1101接口返回)
688 833
 	inputData["exp_content"] = "" // 人员编号 (来自1101接口返回)
@@ -792,8 +937,17 @@ func Jsyb2207(psnNo string, mdtrtId string, chrgBchno string, certNo string, ins
792 937
 		inputData["mdtrt_cert_no"] = certNo + "|" + verify_number // 就诊凭证编号
793 938
 	} else {
794 939
 		if id_card_type == 1 {
795
-			inputData["mdtrt_cert_type"] = "03"                       // 就诊凭证类型
796
-			inputData["mdtrt_cert_no"] = certNo + "|" + verify_number // 就诊凭证编号
940
+			if mdtrtarea_admvs == "320830"{
941
+
942
+				inputData["mdtrt_cert_type"] = "03"                       // 就诊凭证类型
943
+				inputData["mdtrt_cert_no"] =  certNo + "|" + verify_number  // 就诊凭证编号
944
+
945
+			}else{
946
+				inputData["mdtrt_cert_type"] = "03"                       // 就诊凭证类型
947
+				inputData["mdtrt_cert_no"] = certNo + "|" + verify_number // 就诊凭证编号
948
+
949
+			}
950
+
797 951
 		} else if id_card_type == 3 {
798 952
 			inputData["mdtrt_cert_type"] = "04"        // 就诊凭证类型
799 953
 			inputData["mdtrt_cert_no"] = verify_number // 就诊凭证编号
@@ -976,7 +1130,8 @@ func HttpRequest(url string, ak string, sk string, timestamp int64, json string)
976 1130
 	//设置 调用的服务名和版本
977 1131
 	csbHP.SetApi("hssServives")
978 1132
 	csbHP.SetVersion("1.0.0")
979
-
1133
+	timestampInMilliseconds := time.Now().UnixNano() / 1e6
1134
+	timestamp = timestampInMilliseconds
980 1135
 	//添加附加的http请求头 (可以定义多条)
981 1136
 	//key := "_api_access_key=" + ak + "&_api_name=" + "hssServives" + "&_api_timestamp=" + strconv.FormatInt(timestamp, 10) + "&_api_version=" + "1.0.0"
982 1137
 	csbHP.AddHeader("_api_timestamp", strconv.FormatInt(timestamp, 10))
@@ -1041,9 +1196,12 @@ func SetJSInputMessage(timestamp int64, org_name string, doctor string, fixmedin
1041 1196
 	if fixmedins_code == "H32090403023" {
1042 1197
 		inputMessage["opter"] = "葛美琴"      // 经办人
1043 1198
 		inputMessage["opter_name"] = "葛美琴" // 经办人姓名
1044
-	} else {
1199
+	} else if  fixmedins_code == "H32092103007"{
1045 1200
 		inputMessage["opter"] = "孙欣欣"      // 经办人
1046 1201
 		inputMessage["opter_name"] = "孙欣欣" // 经办人姓名
1202
+	} else {
1203
+		inputMessage["opter"] =   doctor    // 经办人
1204
+		inputMessage["opter_name"] = doctor // 经办人姓名
1047 1205
 	}
1048 1206
 	inputMessage["inf_time"] = timeFormatOne        // 交易时间
1049 1207
 	inputMessage["fixmedins_code"] = fixmedins_code // 定点医药机构编号