nm_controller.go 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930
  1. package nm
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "gdyb/controllers"
  6. "gdyb/enums"
  7. "gdyb/models"
  8. "gdyb/service"
  9. "gdyb/utils"
  10. "github.com/astaxie/beego"
  11. "github.com/axgle/mahonia"
  12. "io/ioutil"
  13. "os"
  14. "regexp"
  15. "strconv"
  16. "strings"
  17. "syscall"
  18. "time"
  19. "unsafe"
  20. )
  21. type NmController struct {
  22. controllers.BaseAuthAPIController
  23. }
  24. func NmybRegistRouters() {
  25. beego.Router("/nmyb/1101", &NmController{}, "get:Post1101")
  26. beego.Router("/nmyb/2401", &NmController{}, "post:Post2401")
  27. beego.Router("/nmyb/2402", &NmController{}, "post:Post2402")
  28. beego.Router("/nmyb/2404", &NmController{}, "get:Post2404")
  29. beego.Router("/nmyb/2405", &NmController{}, "get:Post2405")
  30. beego.Router("/nmyb/2301", &NmController{}, "post:Post2301")
  31. beego.Router("/nmyb/2302", &NmController{}, "get:Post2302")
  32. beego.Router("/nmyb/2303", &NmController{}, "get:Post2303")
  33. beego.Router("/nmyb/2304", &NmController{}, "get:Post2304")
  34. beego.Router("/nmyb/2305", &NmController{}, "get:Post2305")
  35. beego.Router("/nmyb/5203", &NmController{}, "get:Post5203")
  36. beego.Router("/nmyb/readcard", &NmController{}, "get:ReadCard")
  37. beego.Router("/nmyb/3201", &NmController{}, "get:Get3201")
  38. //beego.Router("/nmyb/3202", &NmController{}, "post:Get3102")
  39. }
  40. type ReadCardResult struct {
  41. Output struct {
  42. CardInfo string `json:"cardInfo"`
  43. RegionCode string `json:"regionCode"`
  44. } `json:"output"`
  45. Code string `json:"CODE"`
  46. ErrMsg string `json:"ERRMSG"`
  47. }
  48. type ELeData struct {
  49. Data struct {
  50. IdNo string `json:"idNo"`
  51. IdType string `json:"idType"`
  52. UserName string `json:"userName"`
  53. EcToken string `json:"ecToken"`
  54. InsuOrg string `json:"insuOrg"`
  55. Gender string `json:"gender"`
  56. Birthday string `json:"birthday"`
  57. Nationality string `json:"nationality"`
  58. Email string `json:"email"`
  59. Extra string `json:"extra"`
  60. } `json:"data"`
  61. Code int `json:"code"`
  62. Message string `json:"message"`
  63. }
  64. type ResultTwo struct {
  65. ErrMsg string `json:"err_msg"`
  66. InfRefmsgid string `json:"inf_refmsgid"`
  67. Infcode string `json:"infcode"`
  68. Output struct {
  69. Baseinfo struct {
  70. Age float64 `json:"age"`
  71. Brdy string `json:"brdy"`
  72. Certno string `json:"certno"`
  73. Gend string `json:"gend"`
  74. Naty string `json:"naty"`
  75. PsnCertType string `json:"psn_cert_type"`
  76. PsnName string `json:"psn_name"`
  77. PsnNo string `json:"psn_no"`
  78. } `json:"baseinfo"`
  79. Idetinfo []interface{} `json:"idetinfo"`
  80. Iinfo []struct {
  81. Balc float64 `json:"balc"`
  82. CvlservFlag string `json:"cvlserv_flag"`
  83. EmpName string `json:"emp_name"`
  84. InsuplcAdmdvs string `json:"insuplc_admdvs"`
  85. Insutype string `json:"insutype"`
  86. PausInsuDansuplcAdmdvs string `json:"paus_insu_dansuplc_admdvs"`
  87. PausInsuDate string `json:"paus_insu_date"`
  88. PsnInsuDate string `json:"psn_insu_date"`
  89. PsnInsuStas string `json:"psn_insu_stas"`
  90. PsnType string `json:"psn_type"`
  91. } `json:"insuinfo"`
  92. } `json:"output"`
  93. RefmsgTime string `json:"refmsg_time"`
  94. RespondTime string `json:"respond_time"`
  95. Signtype interface{} `json:"signtype"`
  96. WarnInfo interface{} `json:"warn_info"`
  97. }
  98. type ResultTwo10265 struct {
  99. ErrMsg string `json:"err_msg"`
  100. InfRefmsgid string `json:"inf_refmsgid"`
  101. Infcode string `json:"infcode"`
  102. Output struct {
  103. Baseinfo struct {
  104. Age float64 `json:"age"`
  105. Brdy string `json:"brdy"`
  106. Certno string `json:"certno"`
  107. Gend string `json:"gend"`
  108. Naty string `json:"naty"`
  109. PsnCertType string `json:"psn_cert_type"`
  110. PsnName string `json:"psn_name"`
  111. PsnNo string `json:"psn_no"`
  112. } `json:"baseinfo"`
  113. Idetinfo []interface{} `json:"idetinfo"`
  114. Iinfo []struct {
  115. Balc float64 `json:"balc"`
  116. CvlservFlag string `json:"cvlserv_flag"`
  117. EmpName string `json:"emp_name"`
  118. InsuplcAdmdvs string `json:"insuplc_admdvs"`
  119. Insutype string `json:"insutype"`
  120. PausInsuDansuplcAdmdvs string `json:"paus_insu_dansuplc_admdvs"`
  121. PausInsuDate string `json:"paus_insu_date"`
  122. PsnInsuDate string `json:"psn_insu_date"`
  123. PsnInsuStas string `json:"psn_insu_stas"`
  124. PsnType string `json:"psn_type"`
  125. } `json:"insuinfo"`
  126. } `json:"output"`
  127. RefmsgTime string `json:"refmsg_time"`
  128. RespondTime string `json:"respond_time"`
  129. Signtype interface{} `json:"signtype"`
  130. WarnInfo interface{} `json:"warn_info"`
  131. }
  132. func (c *NmController) Post5203() {
  133. fmt.Println("------")
  134. org_name := c.GetString("org_name")
  135. doctor := c.GetString("doctor")
  136. fixmedins_code := c.GetString("fixmedins_code")
  137. insuplc_admdvs := c.GetString("insuplc_admdvs")
  138. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  139. secret_key := c.GetString("secret_key")
  140. psn_no := c.GetString("psn_no")
  141. mdtrt_id := c.GetString("mdtrt_id")
  142. setl_id := c.GetString("setl_id")
  143. fmt.Println("------")
  144. bp := models.BaseParams{
  145. SecretKey: secret_key,
  146. FixmedinsCode: fixmedins_code,
  147. InsuplcAdmdvs: insuplc_admdvs,
  148. MdtrtareaAdmvs: mdtrtarea_admvs,
  149. OrgName: org_name,
  150. Doctor: doctor,
  151. }
  152. bps := models.BusinessParams{
  153. PsnNo: psn_no,
  154. MdtrtId: mdtrt_id,
  155. SetlId: setl_id,
  156. }
  157. result := service.ZHyb5203(bp, bps)
  158. saveJsLog(result, "", "5203", "结算单", org_name)
  159. var dat map[string]interface{}
  160. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  161. } else {
  162. }
  163. c.ServeSuccessJSON(map[string]interface{}{
  164. "pre": dat,
  165. })
  166. }
  167. func (c *NmController) Post1101() {
  168. certNo := c.GetString("cert_no")
  169. org_name := c.GetString("org_name")
  170. doctor := c.GetString("doctor")
  171. fixmedins_code := c.GetString("fixmedins_code")
  172. insuplc_admdvs := c.GetString("insuplc_admdvs")
  173. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  174. secret_key := c.GetString("secret_key")
  175. id_card_type, _ := c.GetInt64("id_card_type")
  176. card_sn := c.GetString("card_sn")
  177. certificates := c.GetString("certificates")
  178. name := c.GetString("name")
  179. certificate, _ := strconv.ParseInt(certificates, 10, 64)
  180. result, request_log, result_log := service.ZHGdyb1101(certNo, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type, card_sn, certificate, name)
  181. saveJsLog(result_log, request_log, "1101", "查询个人信息", org_name)
  182. var dat map[string]interface{}
  183. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  184. } else {
  185. }
  186. var dat2 map[string]interface{}
  187. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  188. } else {
  189. }
  190. c.ServeSuccessJSON(map[string]interface{}{
  191. "pre": dat,
  192. "log": dat2,
  193. })
  194. }
  195. func (c *NmController) Post2401() {
  196. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  197. var respJSON map[string]interface{}
  198. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  199. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  200. return
  201. }
  202. userJSONBytes, _ := json.Marshal(respJSON["struct_2401"])
  203. var struct2401 service.Struct2401
  204. if err := json.Unmarshal(userJSONBytes, &struct2401); err != nil {
  205. utils.ErrorLog("解析失败:%v", err)
  206. return
  207. }
  208. org_name := respJSON["org_name"].(string)
  209. fixmedins_code := respJSON["fixmedins_code"].(string)
  210. doctor := respJSON["doctor"].(string)
  211. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  212. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  213. secret_key := respJSON["secret_key"].(string)
  214. result, request_log := service.ZHGdyb2401(struct2401, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  215. saveJsLog(result, request_log, "2401", "入院登记", org_name)
  216. var dat2 map[string]interface{}
  217. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  218. } else {
  219. }
  220. var dat map[string]interface{}
  221. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  222. } else {
  223. }
  224. c.ServeSuccessJSON(map[string]interface{}{
  225. "pre": dat,
  226. "request_log": dat2,
  227. })
  228. }
  229. func (c *NmController) Post2404() {
  230. mdtrt_id := c.GetString("mdtrt_id")
  231. psn_no := c.GetString("psn_no")
  232. doctor := c.GetString("doctor")
  233. fixmedins_code := c.GetString("fixmedins_code")
  234. insuplc_admdvs := c.GetString("insuplc_admdvs")
  235. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  236. secret_key := c.GetString("secret_key")
  237. org_name := c.GetString("org_name")
  238. result, requestLog := service.ZHGdyb2404(mdtrt_id, psn_no, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  239. saveJsLog(result, requestLog, "2404", "入院登记撤销", org_name)
  240. var dat map[string]interface{}
  241. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  242. } else {
  243. }
  244. var dat2 map[string]interface{}
  245. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  246. } else {
  247. }
  248. c.ServeSuccessJSON(map[string]interface{}{
  249. "pre": dat,
  250. "log": dat2,
  251. })
  252. }
  253. func (c *NmController) Post2405() {
  254. mdtrt_id := c.GetString("mdtrt_id")
  255. psn_no := c.GetString("psn_no")
  256. doctor := c.GetString("doctor")
  257. fixmedins_code := c.GetString("fixmedins_code")
  258. insuplc_admdvs := c.GetString("insuplc_admdvs")
  259. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  260. secret_key := c.GetString("secret_key")
  261. org_name := c.GetString("org_name")
  262. result, requestLog := service.ZHGdyb2405(mdtrt_id, psn_no, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  263. saveJsLog(result, requestLog, "2405", "出院登记撤销", org_name)
  264. var dat map[string]interface{}
  265. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  266. } else {
  267. }
  268. var dat2 map[string]interface{}
  269. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  270. } else {
  271. }
  272. c.ServeSuccessJSON(map[string]interface{}{
  273. "pre": dat,
  274. "log": dat2,
  275. })
  276. }
  277. func (c *NmController) Post2402() {
  278. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  279. var respJSON map[string]interface{}
  280. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  281. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  282. return
  283. }
  284. userJSONBytes, _ := json.Marshal(respJSON["struct_2402"])
  285. var struct2402 service.Struct2402
  286. if err := json.Unmarshal(userJSONBytes, &struct2402); err != nil {
  287. utils.ErrorLog("解析失败:%v", err)
  288. return
  289. }
  290. org_name := respJSON["org_name"].(string)
  291. fixmedins_code := respJSON["fixmedins_code"].(string)
  292. doctor := respJSON["doctor"].(string)
  293. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  294. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  295. secret_key := respJSON["secret_key"].(string)
  296. result, request_log := service.ZHGdyb2402(struct2402, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code)
  297. saveJsLog(result, request_log, "2402", "出院", org_name)
  298. var dat2 map[string]interface{}
  299. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  300. } else {
  301. }
  302. var dat map[string]interface{}
  303. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  304. } else {
  305. }
  306. c.ServeSuccessJSON(map[string]interface{}{
  307. "pre": dat,
  308. "request_log": dat2,
  309. })
  310. }
  311. func (c *NmController) Post2301() {
  312. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  313. var respJSON map[string]interface{}
  314. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  315. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  316. return
  317. }
  318. userJSONBytes, _ := json.Marshal(respJSON["customs"])
  319. var customs []*models.NewCustom
  320. if err := json.Unmarshal(userJSONBytes, &customs); err != nil {
  321. utils.ErrorLog("解析失败:%v", err)
  322. return
  323. }
  324. number := respJSON["number"].(string)
  325. chrg_bchno := respJSON["chrg_bchno"].(string)
  326. dept := respJSON["dept"].(string)
  327. dept_code := respJSON["dept_code"].(string)
  328. doctor_code := respJSON["doctor_code"].(string)
  329. doctor_name := respJSON["doctor_name"].(string)
  330. opertor := respJSON["opertor"].(string)
  331. org_name := respJSON["org_name"].(string)
  332. fixmedins_code := respJSON["fixmedins_code"].(string)
  333. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  334. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  335. secret_key := respJSON["secret_key"].(string)
  336. med_type := respJSON["med_type"].(string)
  337. //med_type := strconv.FormatInt(int64(respJSON["med_type"].(float64)), 10)
  338. psn_no := respJSON["psn_no"].(string)
  339. result, requestLog := service.ZHGdyb2301A(psn_no, number, customs, chrg_bchno, org_name, doctor_name, dept, fixmedins_code, dept_code, doctor_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, med_type, opertor)
  340. saveJsLog(result, requestLog, "2301", "上传明细", org_name)
  341. var dat2 map[string]interface{}
  342. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  343. } else {
  344. }
  345. var dat map[string]interface{}
  346. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  347. } else {
  348. }
  349. c.ServeSuccessJSON(map[string]interface{}{
  350. "pre": dat,
  351. "request_log": dat2,
  352. })
  353. }
  354. func (c *NmController) Post2302() {
  355. mdtrt_id := c.GetString("mdtrtId")
  356. psn_no := c.GetString("psn_no")
  357. number := c.GetString("feedetl_sn")
  358. doctor := c.GetString("doctor")
  359. fixmedins_code := c.GetString("fixmedins_code")
  360. insuplc_admdvs := c.GetString("insuplc_admdvs")
  361. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  362. secret_key := c.GetString("secret_key")
  363. org_name := c.GetString("org_name")
  364. refund_type, _ := c.GetInt64("refund_type")
  365. result, requestLog := service.Gdyb2302(psn_no, mdtrt_id, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code, number, refund_type)
  366. saveJsLog(result, requestLog, "2302", "退明细", org_name)
  367. var dat2 map[string]interface{}
  368. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  369. } else {
  370. }
  371. var dat map[string]interface{}
  372. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  373. } else {
  374. }
  375. c.ServeSuccessJSON(map[string]interface{}{
  376. "pre": dat,
  377. "request_log": dat2,
  378. })
  379. }
  380. func (c *NmController) Post2303() {
  381. mdtrt_id := c.GetString("mdtrt_id")
  382. psn_no := c.GetString("psn_no")
  383. chrg_bchno := c.GetString("chrg_bchno")
  384. cert_no := c.GetString("cert_no")
  385. insutype_type := c.GetString("insutype_type")
  386. allTotal := c.GetString("total")
  387. id_card_type, _ := c.GetInt64("id_card_type")
  388. doctor := c.GetString("doctor")
  389. certificates, _ := c.GetInt64("certificates")
  390. fixmedins_code := c.GetString("fixmedins_code")
  391. insuplc_admdvs := c.GetString("insuplc_admdvs")
  392. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  393. secret_key := c.GetString("secret_key")
  394. org_name := c.GetString("org_name")
  395. result, src_resquest := service.ZHGdyb2303(psn_no, mdtrt_id, chrg_bchno, cert_no, insutype_type, allTotal, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, "0", id_card_type, 0, 0, 0, 0, certificates)
  396. saveJsLog(result, src_resquest, "2303", "预结算", org_name)
  397. var dat2 map[string]interface{}
  398. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  399. } else {
  400. }
  401. var dat map[string]interface{}
  402. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  403. } else {
  404. }
  405. c.ServeSuccessJSON(map[string]interface{}{
  406. "pre": dat,
  407. "request_log": dat2,
  408. })
  409. }
  410. func (c *NmController) Post2304() {
  411. mdtrt_id := c.GetString("mdtrt_id")
  412. psn_no := c.GetString("psn_no")
  413. chrg_bchno := c.GetString("chrg_bchno")
  414. cert_no := c.GetString("cert_no")
  415. insutype_type := c.GetString("insutype_type")
  416. allTotal := c.GetString("total")
  417. id_card_type, _ := c.GetInt64("id_card_type")
  418. doctor := c.GetString("doctor")
  419. certificates, _ := c.GetInt64("certificates")
  420. fixmedins_code := c.GetString("fixmedins_code")
  421. insuplc_admdvs := c.GetString("insuplc_admdvs")
  422. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  423. secret_key := c.GetString("secret_key")
  424. org_name := c.GetString("org_name")
  425. fapiao_number := c.GetString("fapiao_number")
  426. acct_used_flag := c.GetString("acct_used_flag")
  427. result, src_resquest := service.ZHGdyb2304(psn_no, mdtrt_id, chrg_bchno, cert_no, insutype_type, allTotal, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, "0", id_card_type, 0, 0, 0, 0, certificates, fapiao_number, acct_used_flag)
  428. saveJsLog(result, src_resquest, "2304", "住院结算", org_name)
  429. var dat2 map[string]interface{}
  430. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  431. } else {
  432. }
  433. var dat map[string]interface{}
  434. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  435. } else {
  436. }
  437. c.ServeSuccessJSON(map[string]interface{}{
  438. "pre": dat,
  439. "request_log": dat2,
  440. })
  441. }
  442. func (c *NmController) Post2305() {
  443. mdtrt_id := c.GetString("mdtrt_id")
  444. psn_no := c.GetString("psn_no")
  445. doctor := c.GetString("doctor")
  446. setl_id := c.GetString("setl_id")
  447. fixmedins_code := c.GetString("fixmedins_code")
  448. insuplc_admdvs := c.GetString("insuplc_admdvs")
  449. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  450. secret_key := c.GetString("secret_key")
  451. org_name := c.GetString("org_name")
  452. result, requestLog := service.Gdyb2305(psn_no, mdtrt_id, setl_id, org_name, doctor, secret_key, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  453. saveJsLog(result, requestLog, "2305", "退费", org_name)
  454. var dat2 map[string]interface{}
  455. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  456. } else {
  457. }
  458. var dat map[string]interface{}
  459. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  460. } else {
  461. }
  462. c.ServeSuccessJSON(map[string]interface{}{
  463. "pre": dat,
  464. "request_log": dat2,
  465. })
  466. }
  467. func (c *NmController) Get2503() {
  468. }
  469. func (c *NmController) ReadCard() {
  470. fixmedins_code := c.GetString("fixmedins_code")
  471. secret_key := c.GetString("secret_key")
  472. org_name := c.GetString("org_name")
  473. insuplc_admdvs := c.GetString("insuplc_admdvs")
  474. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  475. id_card_type := c.GetString("id_card_type")
  476. operator_id := c.GetString("operator_id")
  477. operator := c.GetString("operator")
  478. if initFlag == 0 {
  479. c.TestGetBasBaseInit()
  480. }
  481. switch id_card_type {
  482. case "1":
  483. pBusiCardInfo := c.GetBasBaseInfo(fixmedins_code, mdtrtarea_admvs, operator, operator_id, org_name)
  484. basStr := Remove0000(pBusiCardInfo)
  485. if len(basStr) == 0 {
  486. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
  487. return
  488. }
  489. var dat2 map[string]interface{}
  490. if err := json.Unmarshal([]byte(basStr), &dat2); err == nil {
  491. fmt.Println(dat2)
  492. } else {
  493. fmt.Println(err)
  494. }
  495. userJSONBytes, _ := json.Marshal(dat2)
  496. var res ReadCardResult
  497. if err := json.Unmarshal(userJSONBytes, &res); err != nil {
  498. utils.ErrorLog("解析失败:%v", err)
  499. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  500. return
  501. }
  502. fmt.Println(basStr)
  503. bas := strings.Split(res.Output.CardInfo, "|")
  504. basNumber := bas[1]
  505. fmt.Println(basNumber)
  506. card_sn := bas[3]
  507. fmt.Println(card_sn)
  508. cardNumber := bas[2]
  509. name := bas[4]
  510. result := service.Gdyb1101G(basNumber, org_name, operator, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, 1, card_sn, 1, name, cardNumber)
  511. var dat map[string]interface{}
  512. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  513. fmt.Println(dat)
  514. } else {
  515. fmt.Println(err)
  516. }
  517. userJSONBytes2, _ := json.Marshal(dat)
  518. var res2 ResultTwo
  519. if err := json.Unmarshal(userJSONBytes2, &res2); err != nil {
  520. utils.ErrorLog("解析失败:%v", err)
  521. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  522. return
  523. }
  524. infocode, _ := strconv.ParseInt(res2.Infcode, 10, 64)
  525. if infocode == 0 {
  526. c.ServeSuccessJSON(map[string]interface{}{
  527. "status": "0",
  528. "card_info": res.Output.CardInfo,
  529. "busi_card_info": pBusiCardInfo,
  530. "result": res2,
  531. "type": "1",
  532. })
  533. } else {
  534. c.ServeSuccessJSON(map[string]interface{}{
  535. "status": "-1",
  536. })
  537. }
  538. break
  539. case "4": //电子凭证
  540. _, pBusiCardInfo := c.GetELeInfo(fixmedins_code, operator_id, operator)
  541. var ele ELeData
  542. err := json.Unmarshal([]byte(pBusiCardInfo), &ele)
  543. if err != nil {
  544. utils.ErrorLog("解析失败:%v", err)
  545. }
  546. token := ele.Data.EcToken
  547. fmt.Println(token)
  548. if len(token) > 0 {
  549. result := service.Gdyb1101ForEleCert("", org_name, operator, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, token, "")
  550. var dat map[string]interface{}
  551. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  552. fmt.Println(dat)
  553. } else {
  554. fmt.Println(err)
  555. }
  556. userJSONBytes, _ := json.Marshal(dat)
  557. var res ResultTwo
  558. if err := json.Unmarshal(userJSONBytes, &res); err != nil {
  559. utils.ErrorLog("解析失败:%v", err)
  560. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  561. return
  562. }
  563. infocode, _ := strconv.ParseInt(res.Infcode, 10, 64)
  564. if infocode == 0 {
  565. c.ServeSuccessJSON(map[string]interface{}{
  566. "status": "0",
  567. "card_info": pBusiCardInfo,
  568. "busi_card_info": pBusiCardInfo,
  569. "token": token,
  570. "result": dat,
  571. })
  572. } else {
  573. c.ServeSuccessJSON(map[string]interface{}{
  574. "status": "-1",
  575. })
  576. }
  577. } else {
  578. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException)
  579. return
  580. }
  581. break
  582. }
  583. }
  584. var initFlag int64 = 0
  585. func (c *NmController) TestGetBasBaseInit() {
  586. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  587. Iinit := DllDef.MustFindProc("Init")
  588. //miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
  589. str := make([]byte, 2048)
  590. inputData := make(map[string]interface{})
  591. inputData["IP"] = "tyjk.nm.hsip.gov.cn"
  592. inputData["PORT"] = 8090
  593. inputData["TIMEOUT"] = 180
  594. inputData["LOG_PATH"] = "C:\\log\\"
  595. //inputData["SFZ_DRIVER_TYPE"] = 0
  596. inputData["URL"] = "/uif-hsaf-med-api/api/medical/service"
  597. bytesData, _ := json.Marshal(inputData)
  598. fmt.Println(inputData)
  599. fmt.Println(bytesData)
  600. ret, _, err := Iinit.Call((uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&str[0])))
  601. if ret != 0 {
  602. fmt.Println("SSCard的报错原因:", err)
  603. fmt.Println("SSCard的运算结果为:", ret)
  604. fmt.Println("SSCard的返回结果为:", string(str))
  605. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
  606. return
  607. }
  608. fmt.Println("SSCard的返回结果为:", string(str))
  609. result := int(ret)
  610. fmt.Println("SSCard的运算结果为1:", result)
  611. //initFlag = 1
  612. return
  613. }
  614. func (c *NmController) GetSFZBaseInfo() string {
  615. DllDef := syscall.MustLoadDLL("SSCard.dll")
  616. readCard := DllDef.MustFindProc("ReadSFZ")
  617. if readCard == nil {
  618. fmt.Println("readcard is nil")
  619. readCard = DllDef.MustFindProc("ReadSFZ")
  620. }
  621. str := make([]byte, 256)
  622. str1 := make([]byte, 256)
  623. r, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&str[0])), IntPtr(1024), (uintptr)(unsafe.Pointer(&str1[0])), IntPtr(1024))
  624. fmt.Println(r)
  625. return string(str)
  626. }
  627. func (c *NmController) GetBasBaseInfo(fixmedins_code string, mdtrtarea_admvs string, opter_name string, opter_id string, fixmedins_name string) string {
  628. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  629. readCard := DllDef.MustFindProc("ReadCardBas")
  630. fmt.Println(readCard)
  631. fmt.Println("!!!!!")
  632. month := time.Unix(1557042972, 0).Format("1")
  633. year := time.Now().Format("2006")
  634. month = time.Now().Format("01")
  635. day := time.Now().Format("02")
  636. hour := time.Now().Format("15")
  637. min := time.Now().Format("04")
  638. sec := time.Now().Format("05")
  639. msec := time.Now().Format("000")
  640. timestamp := time.Now().Unix()
  641. tempTime := time.Unix(timestamp, 0)
  642. //timeFormat := tempTime.Format("20060102150405")
  643. timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  644. //randNum := rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000)
  645. inputData := make(map[string]interface{})
  646. inputData["infno"] = "1199"
  647. //inputData["msgid"] = "7021"
  648. inputData["msgid"] = fixmedins_code + year + month + day + hour + min + sec + msec + "0" // 发送方报文 ID
  649. inputData["mdtrtarea_admvs"] = mdtrtarea_admvs
  650. inputData["insuplc_admdvs"] = "" // 发送方报文 ID
  651. // 发送方报文 ID
  652. inputData["recer_sys_code"] = "01"
  653. inputData["dev_no"] = ""
  654. inputData["dev_safe_info"] = ""
  655. inputData["cainfo"] = ""
  656. inputData["signtype"] = "SM3"
  657. inputData["infver"] = "V1.0"
  658. inputData["opter_type"] = "1"
  659. inputData["opter"] = opter_id
  660. inputData["opter_name"] = opter_name
  661. inputData["inf_time"] = timeFormatOne
  662. inputData["fixmedins_code"] = fixmedins_code
  663. inputData["fixmedins_name"] = fixmedins_name
  664. inputData["sign_no"] = ""
  665. bytesData, _ := json.Marshal(inputData)
  666. fmt.Println(string(bytesData))
  667. pBusiCardInfo := make([]byte, 8192)
  668. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  669. fmt.Println(ret2)
  670. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  671. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  672. if ret2 != 0 {
  673. return ""
  674. }
  675. return DeleteExtraSpace(string(pBusiCardInfo))
  676. }
  677. func (c *NmController) GetELeInfo(code string, operator_id string, operator_name string) (string, string) {
  678. DllDef := syscall.MustLoadDLL("NationECCode.dll")
  679. readCard := DllDef.MustFindProc("NationEcTrans")
  680. fmt.Println(readCard)
  681. fmt.Println("!!!!!")
  682. pBusiCardInfo := make([]byte, 8192)
  683. input := make(map[string]interface{})
  684. inputData := make(map[string]interface{})
  685. inputData["orgId"] = code
  686. inputData["businessType"] = "01101"
  687. inputData["operatorId"] = operator_id
  688. inputData["operatorName"] = operator_name
  689. inputData["officeId"] = "001"
  690. inputData["officeName"] = "血透室"
  691. inputData["deviceType"] = ""
  692. input["data"] = inputData
  693. input["orgId"] = code
  694. input["transType"] = "ec.query"
  695. bytesData, _ := json.Marshal(input)
  696. //gdyb_url := beego.AppConfig.String("gdyb_url")
  697. url := "http://10.38.22.15:8081" + "/localcfc/api/hsecfc/localQrCodeQuery"
  698. ret2, _, _ := readCard.Call(StrPtr(url), StrPtr(string(bytesData)), (uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  699. fmt.Println(ret2)
  700. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  701. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  702. if ret2 != 0 {
  703. return "", ""
  704. }
  705. return DeleteExtraSpace(""), DeleteExtraSpace(string(pBusiCardInfo))
  706. }
  707. func IntPtr(n int) uintptr {
  708. return uintptr(n)
  709. }
  710. func StrPtr(s string) uintptr {
  711. return uintptr(unsafe.Pointer(syscall.StringBytePtr(s)))
  712. }
  713. type Charset string
  714. const (
  715. UTF8 = Charset("UTF-8")
  716. GB18030 = Charset("GB18030")
  717. )
  718. func ConvertToString(src string, srcCode string, tagCode string) string {
  719. srcCoder := mahonia.NewDecoder(srcCode)
  720. srcResult := srcCoder.ConvertString(src)
  721. tagCoder := mahonia.NewDecoder(tagCode)
  722. _, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
  723. result := string(cdata)
  724. return result
  725. }
  726. func DeleteExtraSpace(s string) string {
  727. //删除字符串中的多余空格,有多个空格时,仅保留一个空格
  728. s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格
  729. regstr := "\\s{2,}" //两个及两个以上空格的正则表达式
  730. reg, _ := regexp.Compile(regstr) //编译正则表达式
  731. s2 := make([]byte, len(s1)) //定义字符数组切片
  732. copy(s2, s1) //将字符串复制到切片
  733. spc_index := reg.FindStringIndex(string(s2)) //在字符串中搜索
  734. for len(spc_index) > 0 { //找到适配项
  735. s2 = append(s2[:spc_index[0]+1], s2[spc_index[1]:]...) //删除多余空格
  736. spc_index = reg.FindStringIndex(string(s2)) //继续在字符串中搜索
  737. }
  738. return string(s2)
  739. }
  740. func Remove0000(s string) string {
  741. str := make([]rune, 0, len(s))
  742. for _, v := range []rune(s) {
  743. if v == 0 {
  744. continue
  745. }
  746. str = append(str, v)
  747. }
  748. return string(str)
  749. }
  750. func saveJsLog(result string, request string, infno string, desc string, org_name string) {
  751. //org_id, _ := beego.AppConfig.Int64("org_id")
  752. //miConfig, _ := service.FindMedicalInsuranceInfo(org_id)
  753. dir := org_name + "日志"
  754. utils.Mkdir(dir)
  755. month := time.Unix(1557042972, 0).Format("1")
  756. year := time.Now().Format("2006")
  757. month = time.Now().Format("01")
  758. day := time.Now().Format("02")
  759. hour := time.Now().Format("15")
  760. min := time.Now().Format("04")
  761. sec := time.Now().Format("05")
  762. result_time := year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec
  763. file := org_name + "_" + year + month + day + "_log"
  764. file_name := file + ".txt"
  765. file_path := org_name + "日志" + "/" + file_name
  766. exist, _ := utils.PathExists(file_path)
  767. if exist { //存在
  768. fmt.Println("存在")
  769. f, err := os.OpenFile(file_path, os.O_WRONLY, 0644)
  770. if err != nil {
  771. fmt.Println("read fail")
  772. }
  773. content := "\r\n" + "\r\n" + "\r\n" + result_time + " " + "【 " + desc + infno + "入参" + " 】:" + "\r\n" + request + "\r\n" + result_time + " " + "【 " + desc + infno + "出参" + " 】:" + "\r\n" + result
  774. n, _ := f.Seek(0, 2)
  775. _, err = f.WriteAt([]byte(content), n)
  776. } else { //不存在
  777. fmt.Println("文件不存在,创建文件")
  778. f, err := os.Create(org_name + "日志" + "/" + file_name)
  779. defer f.Close()
  780. if err != nil {
  781. } else {
  782. _, err = f.Write([]byte("记录日志"))
  783. }
  784. }
  785. }
  786. func (c *NmController) Get3201() {
  787. insutype := c.GetString("insutype")
  788. clrType := c.GetString("clr_type")
  789. setlOptins := c.GetString("setl_optins")
  790. stmtBegndate := c.GetString("stmt_begndate")
  791. stmtEnddate := c.GetString("stm_enddate")
  792. medfeeSumamt, _ := c.GetFloat("medfee_sumamt", 0)
  793. fundPaySumamt, _ := c.GetFloat("fund_pay_sumamt", 0)
  794. acctPay, _ := c.GetFloat("acct_pay", 0)
  795. fixmedinsSetlCnt, _ := c.GetInt64("fixmedins_setl_cnt", 0)
  796. fixmedins_code := c.GetString("fixmedins_code")
  797. insuplc_admdvs := c.GetString("insuplc_admdvs")
  798. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  799. secret_key := c.GetString("secret_key")
  800. org_name := c.GetString("org_name")
  801. doctor := c.GetString("doctor")
  802. baseParams := models.BaseParams{
  803. SecretKey: secret_key,
  804. FixmedinsCode: fixmedins_code,
  805. InsuplcAdmdvs: insuplc_admdvs,
  806. MdtrtareaAdmvs: mdtrtarea_admvs,
  807. OrgName: org_name,
  808. Doctor: doctor,
  809. }
  810. businessParams := models.BusinessParams{
  811. Insutype: insutype,
  812. ClrType: clrType,
  813. SetlOptins: setlOptins,
  814. StmtBegndate: stmtBegndate,
  815. StmtEnddate: stmtEnddate,
  816. MedfeeSumamt: medfeeSumamt,
  817. FundPaySumamt: fundPaySumamt,
  818. AcctPay: acctPay,
  819. FixmedinsSetlCnt: fixmedinsSetlCnt,
  820. }
  821. result := service.Gdyb3201(baseParams, businessParams)
  822. saveJsLog(result, "", "3201", "对总账", org_name)
  823. var dat map[string]interface{}
  824. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  825. fmt.Println(dat)
  826. } else {
  827. fmt.Println(err)
  828. }
  829. c.ServeSuccessJSON(map[string]interface{}{
  830. "pre": dat,
  831. })
  832. }