|
@@ -672,6 +672,9 @@ func (c *HisApiController) GetUploadInfo() {
|
672
|
672
|
found_price, _ := c.GetFloat("found_price")
|
673
|
673
|
medical_insurance_price, _ := c.GetFloat("medical_insurance_price")
|
674
|
674
|
private_price, _ := c.GetFloat("private_price")
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
675
|
678
|
timeLayout := "2006-01-02"
|
676
|
679
|
loc, _ := time.LoadLocation("Local")
|
677
|
680
|
theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc)
|
|
@@ -681,7 +684,83 @@ func (c *HisApiController) GetUploadInfo() {
|
681
|
684
|
}
|
682
|
685
|
recordDateTime := theTime.Unix()
|
683
|
686
|
adminUser := c.GetAdminUserInfo()
|
684
|
|
- prescriptions, _ := service.GetHisPrescription(adminUser.CurrentOrgId, id, recordDateTime)
|
|
687
|
+
|
|
688
|
+ var prescriptions []*models.HisPrescription
|
|
689
|
+ prescriptions, _ = service.GetHisPrescription(adminUser.CurrentOrgId, id, recordDateTime)
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
685
|
764
|
his, _ := service.GetVMHisPatientInfo(adminUser.CurrentOrgId, id, recordDateTime)
|
686
|
765
|
|
687
|
766
|
timestamp := time.Now().Unix()
|
|
@@ -826,149 +905,157 @@ func (c *HisApiController) GetUploadInfo() {
|
826
|
905
|
Type: types,
|
827
|
906
|
}
|
828
|
907
|
service.CreateOrderInfo(info)
|
829
|
|
- service.UpDatePrescriptionNumber(adminUser.CurrentOrgId, ids, chrg_bchno)
|
830
|
|
- service.UpDatePrescriptionInfoNumber(adminUser.CurrentOrgId, patientPrescription.PatientId, chrg_bchno, recordDateTime)
|
831
|
|
-
|
832
|
|
- var total float64
|
833
|
|
- for _, item := range prescriptions {
|
834
|
|
- if item.Type == 1 {
|
835
|
|
- for _, subItem := range item.HisDoctorAdviceInfo {
|
836
|
|
- total = total + (subItem.Price * subItem.PrescribingNumber)
|
837
|
|
- }
|
838
|
|
- }
|
839
|
|
- if item.Type == 2 {
|
840
|
|
- for _, subItem := range item.HisPrescriptionProject {
|
841
|
|
- total = total + (subItem.Price * float64(subItem.Count))
|
842
|
|
- }
|
|
908
|
+
|
|
909
|
+ }
|
|
910
|
+ service.UpDatePrescriptionNumber(adminUser.CurrentOrgId, ids, chrg_bchno)
|
|
911
|
+ service.UpDatePrescriptionInfoNumber(adminUser.CurrentOrgId, patientPrescription.PatientId, chrg_bchno, recordDateTime)
|
|
912
|
+
|
|
913
|
+ var total float64
|
|
914
|
+ for _, item := range prescriptions {
|
|
915
|
+ if item.Type == 1 {
|
|
916
|
+ for _, subItem := range item.HisDoctorAdviceInfo {
|
|
917
|
+ total = total + (subItem.Price * subItem.PrescribingNumber)
|
843
|
918
|
}
|
844
|
919
|
}
|
845
|
|
- allTotal := fmt.Sprintf("%.2f", total)
|
846
|
|
- if res.Infcode == 0 {
|
847
|
|
- var rf []*ResultFive
|
848
|
|
- json.Unmarshal([]byte(his.Iinfo), &rf)
|
849
|
|
- psn_no := his.PsnNo
|
850
|
|
- mdtrt_id := his.Number
|
851
|
|
- chrg_bchno := chrg_bchno
|
852
|
|
- cert_no := his.Certno
|
853
|
|
- insutype := rf[0].Insutype
|
854
|
|
- api := "http://127.0.0.1:9532/" + "gdyb/eight?cert_no=" + cert_no + "&insutype=" +
|
855
|
|
- insutype + "&psn_no=" + psn_no + "&chrg_bchno=" + chrg_bchno + "&mdtrt_id=" + mdtrt_id +
|
856
|
|
- "&total=" + allTotal + "&org_name=" + miConfig.OrgName + "&doctor=" + patientPrescription.Doctor + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey
|
857
|
|
- resp, requestErr := http.Get(api)
|
858
|
|
-
|
859
|
|
- if requestErr != nil {
|
860
|
|
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
861
|
|
- return
|
862
|
|
- }
|
863
|
|
- defer resp.Body.Close()
|
864
|
|
- body, ioErr := ioutil.ReadAll(resp.Body)
|
865
|
|
- if ioErr != nil {
|
866
|
|
- utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
|
867
|
|
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
868
|
|
- return
|
|
920
|
+ if item.Type == 2 {
|
|
921
|
+ for _, subItem := range item.HisPrescriptionProject {
|
|
922
|
+ total = total + (subItem.Price * float64(subItem.Count))
|
869
|
923
|
}
|
870
|
|
- var respJSON map[string]interface{}
|
871
|
|
- if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
|
872
|
|
- utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
|
873
|
|
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
874
|
|
- return
|
875
|
|
- }
|
876
|
|
- fmt.Println(respJSON)
|
877
|
|
- respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{})
|
878
|
|
- userJSONBytes, _ := json.Marshal(respJSON)
|
879
|
|
- var res ResultSeven
|
880
|
|
- if err := json.Unmarshal(userJSONBytes, &res); err != nil {
|
881
|
|
- utils.ErrorLog("解析失败:%v", err)
|
882
|
|
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
883
|
|
- return
|
884
|
|
- }
|
885
|
|
- if res.Infcode == -1 {
|
886
|
|
- errlog := &models.HisOrderError{
|
887
|
|
- UserOrgId: adminUser.CurrentOrgId,
|
888
|
|
- Ctime: time.Now().Unix(),
|
889
|
|
- Mtime: time.Now().Unix(),
|
890
|
|
- Number: chrg_bchno,
|
891
|
|
- ErrMsg: res.ErrMsg,
|
892
|
|
- Status: 1,
|
893
|
|
- PatientId: id,
|
894
|
|
- RecordTime: recordDateTime,
|
895
|
|
- Stage: 7,
|
896
|
|
- }
|
897
|
|
- service.CreateErrMsgLog(errlog)
|
898
|
|
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException)
|
899
|
|
- return
|
900
|
|
- } else {
|
901
|
|
- order, _ := service.GetHisOrderTwo(adminUser.CurrentOrgId, chrg_bchno, id)
|
902
|
|
- order.OrderStatus = 2
|
903
|
|
- order.MdtrtId = res.Output.Setlinfo.MdtrtID
|
904
|
|
- order.SetlId = res.Output.Setlinfo.SetlID
|
905
|
|
- order.PsnNo = res.Output.Setlinfo.PsnNo
|
906
|
|
- order.PsnName = res.Output.Setlinfo.PsnName
|
907
|
|
- order.PsnCertType = res.Output.Setlinfo.PsnCertType
|
908
|
|
- order.Certno = res.Output.Setlinfo.Certno
|
909
|
|
- order.Gend = res.Output.Setlinfo.Gend
|
910
|
|
- order.Naty = res.Output.Setlinfo.Naty
|
911
|
|
- order.Age = res.Output.Setlinfo.Age
|
912
|
|
- order.Insutype = res.Output.Setlinfo.Insutype
|
913
|
|
- order.PsnType = res.Output.Setlinfo.PsnType
|
914
|
|
- order.CvlservFlag = res.Output.Setlinfo.CvlservFlag
|
915
|
|
- order.SetlTime = res.Output.Setlinfo.SetlTime
|
916
|
|
- order.MdtrtCertType = res.Output.Setlinfo.MdtrtCertType
|
917
|
|
- order.MedType = res.Output.Setlinfo.MedType
|
918
|
|
- order.MedfeeSumamt = res.Output.Setlinfo.MedfeeSumamt
|
919
|
|
- order.FulamtOwnpayAmt = res.Output.Setlinfo.FulamtOwnpayAmt
|
920
|
|
- order.OverlmtSelfPay = res.Output.Setlinfo.OverlmtSelfpay
|
921
|
|
- order.PreselfpayAmt = res.Output.Setlinfo.PreselfpayAmt
|
922
|
|
- order.InscpScpAmt = res.Output.Setlinfo.InscpScpAmt
|
923
|
|
- order.ActPayDedc = res.Output.Setlinfo.ActPayDedc
|
924
|
|
- order.HifpPay = res.Output.Setlinfo.HifpPay
|
925
|
|
- order.CvlservPay = res.Output.Setlinfo.CvlservPay
|
926
|
|
- order.PoolPropSelfpay = res.Output.Setlinfo.PoolPropSelfpay
|
927
|
|
- order.HifesPay = res.Output.Setlinfo.HifesPay
|
928
|
|
- order.HifobPay = res.Output.Setlinfo.HifobPay
|
929
|
|
- order.MafPay = res.Output.Setlinfo.MafPay
|
930
|
|
- order.OthPay = res.Output.Setlinfo.OthPay
|
931
|
|
- order.FundPaySumamt = res.Output.Setlinfo.FundPaySumamt
|
932
|
|
- order.PsnPartAmt = res.Output.Setlinfo.PsnPartAmt
|
933
|
|
- order.AcctPay = res.Output.Setlinfo.AcctPay
|
934
|
|
- order.PsnCashPay = res.Output.Setlinfo.PsnCashPay
|
935
|
|
- order.HospPartAmt = res.Output.Setlinfo.HospPartAmt
|
936
|
|
- order.Balc = res.Output.Setlinfo.Balc
|
937
|
|
- order.AcctMulaidPay = res.Output.Setlinfo.AcctMulaidPay
|
938
|
|
- order.MedinsSetlId = res.Output.Setlinfo.MedinsSetlID
|
939
|
|
- order.ClrOptins = res.Output.Setlinfo.ClrOptins
|
940
|
|
- order.ClrWay = res.Output.Setlinfo.ClrWay
|
941
|
|
- setlDetail, _ := json.Marshal(res.Output.Setldetail)
|
942
|
|
- detailStr := string(setlDetail)
|
943
|
|
- order.SetlDetail = detailStr
|
944
|
|
- err := service.UpdataOrderStatusTwo(chrg_bchno, adminUser.CurrentOrgId)
|
945
|
|
- err = service.UpDateOrder(order)
|
946
|
|
- if err == nil {
|
947
|
|
- c.ServeSuccessJSON(map[string]interface{}{
|
948
|
|
- "msg": "结算成功",
|
949
|
|
- })
|
950
|
|
- } else {
|
951
|
|
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException)
|
952
|
|
- return
|
953
|
|
- }
|
954
|
|
- }
|
955
|
|
- } else {
|
956
|
|
- adminUser := c.GetAdminUserInfo()
|
|
924
|
+ }
|
|
925
|
+ }
|
|
926
|
+
|
|
927
|
+ for _, item := range prescriptions {
|
|
928
|
+ for _, subItem := range item.HisAdditionalCharge {
|
|
929
|
+ total = total + (subItem.Price * float64(subItem.Count))
|
|
930
|
+ }
|
|
931
|
+ }
|
|
932
|
+
|
|
933
|
+ allTotal := fmt.Sprintf("%.2f", total)
|
|
934
|
+ if res.Infcode == 0 {
|
|
935
|
+ var rf []*ResultFive
|
|
936
|
+ json.Unmarshal([]byte(his.Iinfo), &rf)
|
|
937
|
+ psn_no := his.PsnNo
|
|
938
|
+ mdtrt_id := his.Number
|
|
939
|
+ chrg_bchno := chrg_bchno
|
|
940
|
+ cert_no := his.Certno
|
|
941
|
+ insutype := rf[0].Insutype
|
|
942
|
+ api := "http://127.0.0.1:9532/" + "gdyb/eight?cert_no=" + cert_no + "&insutype=" +
|
|
943
|
+ insutype + "&psn_no=" + psn_no + "&chrg_bchno=" + chrg_bchno + "&mdtrt_id=" + mdtrt_id +
|
|
944
|
+ "&total=" + allTotal + "&org_name=" + miConfig.OrgName + "&doctor=" + patientPrescription.Doctor + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey
|
|
945
|
+ resp, requestErr := http.Get(api)
|
|
946
|
+
|
|
947
|
+ if requestErr != nil {
|
|
948
|
+ c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
|
949
|
+ return
|
|
950
|
+ }
|
|
951
|
+ defer resp.Body.Close()
|
|
952
|
+ body, ioErr := ioutil.ReadAll(resp.Body)
|
|
953
|
+ if ioErr != nil {
|
|
954
|
+ utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
|
|
955
|
+ c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
|
956
|
+ return
|
|
957
|
+ }
|
|
958
|
+ var respJSON map[string]interface{}
|
|
959
|
+ if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
|
|
960
|
+ utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
|
|
961
|
+ c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
|
962
|
+ return
|
|
963
|
+ }
|
|
964
|
+ fmt.Println(respJSON)
|
|
965
|
+ respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{})
|
|
966
|
+ userJSONBytes, _ := json.Marshal(respJSON)
|
|
967
|
+ var res ResultSeven
|
|
968
|
+ if err := json.Unmarshal(userJSONBytes, &res); err != nil {
|
|
969
|
+ utils.ErrorLog("解析失败:%v", err)
|
|
970
|
+ c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
|
|
971
|
+ return
|
|
972
|
+ }
|
|
973
|
+ if res.Infcode == -1 {
|
957
|
974
|
errlog := &models.HisOrderError{
|
958
|
975
|
UserOrgId: adminUser.CurrentOrgId,
|
959
|
976
|
Ctime: time.Now().Unix(),
|
960
|
977
|
Mtime: time.Now().Unix(),
|
|
978
|
+ Number: chrg_bchno,
|
961
|
979
|
ErrMsg: res.ErrMsg,
|
962
|
980
|
Status: 1,
|
963
|
981
|
PatientId: id,
|
964
|
982
|
RecordTime: recordDateTime,
|
965
|
|
- Stage: 5,
|
|
983
|
+ Stage: 6,
|
966
|
984
|
}
|
967
|
985
|
service.CreateErrMsgLog(errlog)
|
968
|
|
-
|
969
|
986
|
c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException)
|
970
|
987
|
return
|
|
988
|
+ } else {
|
|
989
|
+ order, _ := service.GetHisOrderTwo(adminUser.CurrentOrgId, chrg_bchno, id)
|
|
990
|
+ order.OrderStatus = 2
|
|
991
|
+ order.MdtrtId = res.Output.Setlinfo.MdtrtID
|
|
992
|
+ order.SetlId = res.Output.Setlinfo.SetlID
|
|
993
|
+ order.PsnNo = res.Output.Setlinfo.PsnNo
|
|
994
|
+ order.PsnName = res.Output.Setlinfo.PsnName
|
|
995
|
+ order.PsnCertType = res.Output.Setlinfo.PsnCertType
|
|
996
|
+ order.Certno = res.Output.Setlinfo.Certno
|
|
997
|
+ order.Gend = res.Output.Setlinfo.Gend
|
|
998
|
+ order.Naty = res.Output.Setlinfo.Naty
|
|
999
|
+ order.Age = res.Output.Setlinfo.Age
|
|
1000
|
+ order.Insutype = res.Output.Setlinfo.Insutype
|
|
1001
|
+ order.PsnType = res.Output.Setlinfo.PsnType
|
|
1002
|
+ order.CvlservFlag = res.Output.Setlinfo.CvlservFlag
|
|
1003
|
+ order.SetlTime = res.Output.Setlinfo.SetlTime
|
|
1004
|
+ order.MdtrtCertType = res.Output.Setlinfo.MdtrtCertType
|
|
1005
|
+ order.MedType = res.Output.Setlinfo.MedType
|
|
1006
|
+ order.MedfeeSumamt = res.Output.Setlinfo.MedfeeSumamt
|
|
1007
|
+ order.FulamtOwnpayAmt = res.Output.Setlinfo.FulamtOwnpayAmt
|
|
1008
|
+ order.OverlmtSelfPay = res.Output.Setlinfo.OverlmtSelfpay
|
|
1009
|
+ order.PreselfpayAmt = res.Output.Setlinfo.PreselfpayAmt
|
|
1010
|
+ order.InscpScpAmt = res.Output.Setlinfo.InscpScpAmt
|
|
1011
|
+ order.ActPayDedc = res.Output.Setlinfo.ActPayDedc
|
|
1012
|
+ order.HifpPay = res.Output.Setlinfo.HifpPay
|
|
1013
|
+ order.CvlservPay = res.Output.Setlinfo.CvlservPay
|
|
1014
|
+ order.PoolPropSelfpay = res.Output.Setlinfo.PoolPropSelfpay
|
|
1015
|
+ order.HifesPay = res.Output.Setlinfo.HifesPay
|
|
1016
|
+ order.HifobPay = res.Output.Setlinfo.HifobPay
|
|
1017
|
+ order.MafPay = res.Output.Setlinfo.MafPay
|
|
1018
|
+ order.OthPay = res.Output.Setlinfo.OthPay
|
|
1019
|
+ order.FundPaySumamt = res.Output.Setlinfo.FundPaySumamt
|
|
1020
|
+ order.PsnPartAmt = res.Output.Setlinfo.PsnPartAmt
|
|
1021
|
+ order.AcctPay = res.Output.Setlinfo.AcctPay
|
|
1022
|
+ order.PsnCashPay = res.Output.Setlinfo.PsnCashPay
|
|
1023
|
+ order.HospPartAmt = res.Output.Setlinfo.HospPartAmt
|
|
1024
|
+ order.Balc = res.Output.Setlinfo.Balc
|
|
1025
|
+ order.AcctMulaidPay = res.Output.Setlinfo.AcctMulaidPay
|
|
1026
|
+ order.MedinsSetlId = res.Output.Setlinfo.MedinsSetlID
|
|
1027
|
+ order.ClrOptins = res.Output.Setlinfo.ClrOptins
|
|
1028
|
+ order.ClrWay = res.Output.Setlinfo.ClrWay
|
|
1029
|
+ setlDetail, _ := json.Marshal(res.Output.Setldetail)
|
|
1030
|
+ detailStr := string(setlDetail)
|
|
1031
|
+ order.SetlDetail = detailStr
|
|
1032
|
+ err := service.UpdataOrderStatusTwo(chrg_bchno, adminUser.CurrentOrgId)
|
|
1033
|
+ err = service.UpDateOrder(order)
|
|
1034
|
+ if err == nil {
|
|
1035
|
+ c.ServeSuccessJSON(map[string]interface{}{
|
|
1036
|
+ "msg": "结算成功",
|
|
1037
|
+ })
|
|
1038
|
+ } else {
|
|
1039
|
+ c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAmountAccountException)
|
|
1040
|
+ return
|
|
1041
|
+ }
|
971
|
1042
|
}
|
|
1043
|
+ } else {
|
|
1044
|
+ adminUser := c.GetAdminUserInfo()
|
|
1045
|
+ errlog := &models.HisOrderError{
|
|
1046
|
+ UserOrgId: adminUser.CurrentOrgId,
|
|
1047
|
+ Ctime: time.Now().Unix(),
|
|
1048
|
+ Mtime: time.Now().Unix(),
|
|
1049
|
+ ErrMsg: res.ErrMsg,
|
|
1050
|
+ Status: 1,
|
|
1051
|
+ PatientId: id,
|
|
1052
|
+ RecordTime: recordDateTime,
|
|
1053
|
+ Stage: 4,
|
|
1054
|
+ }
|
|
1055
|
+ service.CreateErrMsgLog(errlog)
|
|
1056
|
+
|
|
1057
|
+ c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException)
|
|
1058
|
+ return
|
972
|
1059
|
}
|
973
|
1060
|
} else {
|
974
|
1061
|
adminUser := c.GetAdminUserInfo()
|
|
@@ -1820,3 +1907,20 @@ func ReadFile(filePath string) []byte {
|
1820
|
1907
|
|
1821
|
1908
|
return fd
|
1822
|
1909
|
}
|
|
1910
|
+
|
|
1911
|
+func RemoveRepeatedCode(arr []string) (newArr []string) {
|
|
1912
|
+ newArr = make([]string, 0)
|
|
1913
|
+ for i := 0; i < len(arr); i++ {
|
|
1914
|
+ repeat := false
|
|
1915
|
+ for j := i + 1; j < len(arr); j++ {
|
|
1916
|
+ if arr[i] == arr[j] {
|
|
1917
|
+ repeat = true
|
|
1918
|
+ break
|
|
1919
|
+ }
|
|
1920
|
+ }
|
|
1921
|
+ if !repeat {
|
|
1922
|
+ newArr = append(newArr, arr[i])
|
|
1923
|
+ }
|
|
1924
|
+ }
|
|
1925
|
+ return
|
|
1926
|
+}
|