nm_controller.go 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721
  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/readcard", &NmController{}, "get:ReadCard")
  36. }
  37. func (c *NmController) Post1101() {
  38. certNo := c.GetString("cert_no")
  39. org_name := c.GetString("org_name")
  40. doctor := c.GetString("doctor")
  41. fixmedins_code := c.GetString("fixmedins_code")
  42. insuplc_admdvs := c.GetString("insuplc_admdvs")
  43. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  44. secret_key := c.GetString("secret_key")
  45. id_card_type, _ := c.GetInt64("id_card_type")
  46. card_sn := c.GetString("card_sn")
  47. certificates := c.GetString("certificates")
  48. name := c.GetString("name")
  49. certificate, _ := strconv.ParseInt(certificates, 10, 64)
  50. 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)
  51. saveJsLog(result_log, request_log, "1101", "查询个人信息", org_name)
  52. var dat map[string]interface{}
  53. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  54. } else {
  55. }
  56. var dat2 map[string]interface{}
  57. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  58. } else {
  59. }
  60. c.ServeSuccessJSON(map[string]interface{}{
  61. "pre": dat,
  62. "log": dat2,
  63. })
  64. }
  65. func (c *NmController) Post2401() {
  66. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  67. var respJSON map[string]interface{}
  68. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  69. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  70. return
  71. }
  72. userJSONBytes, _ := json.Marshal(respJSON["struct_2401"])
  73. var struct2401 service.Struct2401
  74. if err := json.Unmarshal(userJSONBytes, &struct2401); err != nil {
  75. utils.ErrorLog("解析失败:%v", err)
  76. return
  77. }
  78. org_name := respJSON["org_name"].(string)
  79. fixmedins_code := respJSON["fixmedins_code"].(string)
  80. doctor := respJSON["doctor"].(string)
  81. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  82. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  83. secret_key := respJSON["secret_key"].(string)
  84. result, request_log := service.ZHGdyb2401(struct2401, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  85. saveJsLog(result, request_log, "2401", "入院登记", org_name)
  86. var dat2 map[string]interface{}
  87. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  88. } else {
  89. }
  90. var dat map[string]interface{}
  91. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  92. } else {
  93. }
  94. c.ServeSuccessJSON(map[string]interface{}{
  95. "pre": dat,
  96. "request_log": dat2,
  97. })
  98. }
  99. func (c *NmController) Post2404() {
  100. mdtrt_id := c.GetString("mdtrt_id")
  101. psn_no := c.GetString("psn_no")
  102. doctor := c.GetString("doctor")
  103. fixmedins_code := c.GetString("fixmedins_code")
  104. insuplc_admdvs := c.GetString("insuplc_admdvs")
  105. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  106. secret_key := c.GetString("secret_key")
  107. org_name := c.GetString("org_name")
  108. result, requestLog := service.ZHGdyb2404(mdtrt_id, psn_no, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  109. saveJsLog(result, requestLog, "2404", "入院登记撤销", org_name)
  110. var dat map[string]interface{}
  111. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  112. } else {
  113. }
  114. var dat2 map[string]interface{}
  115. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  116. } else {
  117. }
  118. c.ServeSuccessJSON(map[string]interface{}{
  119. "pre": dat,
  120. "log": dat2,
  121. })
  122. }
  123. func (c *NmController) Post2405() {
  124. mdtrt_id := c.GetString("mdtrt_id")
  125. psn_no := c.GetString("psn_no")
  126. doctor := c.GetString("doctor")
  127. fixmedins_code := c.GetString("fixmedins_code")
  128. insuplc_admdvs := c.GetString("insuplc_admdvs")
  129. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  130. secret_key := c.GetString("secret_key")
  131. org_name := c.GetString("org_name")
  132. result, requestLog := service.ZHGdyb2405(mdtrt_id, psn_no, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  133. saveJsLog(result, requestLog, "2405", "出院登记撤销", org_name)
  134. var dat map[string]interface{}
  135. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  136. } else {
  137. }
  138. var dat2 map[string]interface{}
  139. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  140. } else {
  141. }
  142. c.ServeSuccessJSON(map[string]interface{}{
  143. "pre": dat,
  144. "log": dat2,
  145. })
  146. }
  147. func (c *NmController) Post2402() {
  148. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  149. var respJSON map[string]interface{}
  150. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  151. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  152. return
  153. }
  154. userJSONBytes, _ := json.Marshal(respJSON["struct_2402"])
  155. var struct2402 service.Struct2402
  156. if err := json.Unmarshal(userJSONBytes, &struct2402); err != nil {
  157. utils.ErrorLog("解析失败:%v", err)
  158. return
  159. }
  160. org_name := respJSON["org_name"].(string)
  161. fixmedins_code := respJSON["fixmedins_code"].(string)
  162. doctor := respJSON["doctor"].(string)
  163. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  164. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  165. secret_key := respJSON["secret_key"].(string)
  166. result, request_log := service.ZHGdyb2402(struct2402, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code)
  167. saveJsLog(result, request_log, "2402", "出院", org_name)
  168. var dat2 map[string]interface{}
  169. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  170. } else {
  171. }
  172. var dat map[string]interface{}
  173. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  174. } else {
  175. }
  176. c.ServeSuccessJSON(map[string]interface{}{
  177. "pre": dat,
  178. "request_log": dat2,
  179. })
  180. }
  181. func (c *NmController) Post2301() {
  182. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  183. var respJSON map[string]interface{}
  184. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  185. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  186. return
  187. }
  188. userJSONBytes, _ := json.Marshal(respJSON["customs"])
  189. var customs []*models.NewCustom
  190. if err := json.Unmarshal(userJSONBytes, &customs); err != nil {
  191. utils.ErrorLog("解析失败:%v", err)
  192. return
  193. }
  194. number := respJSON["number"].(string)
  195. chrg_bchno := respJSON["chrg_bchno"].(string)
  196. dept := respJSON["dept"].(string)
  197. dept_code := respJSON["dept_code"].(string)
  198. doctor_code := respJSON["doctor_code"].(string)
  199. doctor_name := respJSON["doctor_name"].(string)
  200. opertor := respJSON["opertor"].(string)
  201. org_name := respJSON["org_name"].(string)
  202. fixmedins_code := respJSON["fixmedins_code"].(string)
  203. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  204. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  205. secret_key := respJSON["secret_key"].(string)
  206. med_type := respJSON["med_type"].(string)
  207. //med_type := strconv.FormatInt(int64(respJSON["med_type"].(float64)), 10)
  208. psn_no := respJSON["psn_no"].(string)
  209. 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)
  210. saveJsLog(result, requestLog, "2301", "上传明细", org_name)
  211. var dat2 map[string]interface{}
  212. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  213. } else {
  214. }
  215. var dat map[string]interface{}
  216. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  217. } else {
  218. }
  219. c.ServeSuccessJSON(map[string]interface{}{
  220. "pre": dat,
  221. "request_log": dat2,
  222. })
  223. }
  224. func (c *NmController) Post2302() {
  225. mdtrt_id := c.GetString("mdtrtId")
  226. psn_no := c.GetString("psn_no")
  227. number := c.GetString("feedetl_sn")
  228. doctor := c.GetString("doctor")
  229. fixmedins_code := c.GetString("fixmedins_code")
  230. insuplc_admdvs := c.GetString("insuplc_admdvs")
  231. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  232. secret_key := c.GetString("secret_key")
  233. org_name := c.GetString("org_name")
  234. refund_type, _ := c.GetInt64("refund_type")
  235. result, requestLog := service.Gdyb2302(psn_no, mdtrt_id, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code, number, refund_type)
  236. saveJsLog(result, requestLog, "2302", "退明细", org_name)
  237. var dat2 map[string]interface{}
  238. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  239. } else {
  240. }
  241. var dat map[string]interface{}
  242. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  243. } else {
  244. }
  245. c.ServeSuccessJSON(map[string]interface{}{
  246. "pre": dat,
  247. "request_log": dat2,
  248. })
  249. }
  250. func (c *NmController) Post2303() {
  251. mdtrt_id := c.GetString("mdtrt_id")
  252. psn_no := c.GetString("psn_no")
  253. chrg_bchno := c.GetString("chrg_bchno")
  254. cert_no := c.GetString("cert_no")
  255. insutype_type := c.GetString("insutype_type")
  256. allTotal := c.GetString("total")
  257. id_card_type, _ := c.GetInt64("id_card_type")
  258. doctor := c.GetString("doctor")
  259. certificates, _ := c.GetInt64("certificates")
  260. fixmedins_code := c.GetString("fixmedins_code")
  261. insuplc_admdvs := c.GetString("insuplc_admdvs")
  262. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  263. secret_key := c.GetString("secret_key")
  264. org_name := c.GetString("org_name")
  265. 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)
  266. saveJsLog(result, src_resquest, "2303", "预结算", org_name)
  267. var dat2 map[string]interface{}
  268. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  269. } else {
  270. }
  271. var dat map[string]interface{}
  272. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  273. } else {
  274. }
  275. c.ServeSuccessJSON(map[string]interface{}{
  276. "pre": dat,
  277. "request_log": dat2,
  278. })
  279. }
  280. func (c *NmController) Post2304() {
  281. mdtrt_id := c.GetString("mdtrt_id")
  282. psn_no := c.GetString("psn_no")
  283. chrg_bchno := c.GetString("chrg_bchno")
  284. cert_no := c.GetString("cert_no")
  285. insutype_type := c.GetString("insutype_type")
  286. allTotal := c.GetString("total")
  287. id_card_type, _ := c.GetInt64("id_card_type")
  288. doctor := c.GetString("doctor")
  289. certificates, _ := c.GetInt64("certificates")
  290. fixmedins_code := c.GetString("fixmedins_code")
  291. insuplc_admdvs := c.GetString("insuplc_admdvs")
  292. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  293. secret_key := c.GetString("secret_key")
  294. org_name := c.GetString("org_name")
  295. 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)
  296. saveJsLog(result, src_resquest, "2304", "住院结算", org_name)
  297. var dat2 map[string]interface{}
  298. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  299. } else {
  300. }
  301. var dat map[string]interface{}
  302. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  303. } else {
  304. }
  305. c.ServeSuccessJSON(map[string]interface{}{
  306. "pre": dat,
  307. "request_log": dat2,
  308. })
  309. }
  310. func (c *NmController) Post2305() {
  311. mdtrt_id := c.GetString("mdtrt_id")
  312. psn_no := c.GetString("psn_no")
  313. doctor := c.GetString("doctor")
  314. setl_id := c.GetString("setl_id")
  315. fixmedins_code := c.GetString("fixmedins_code")
  316. insuplc_admdvs := c.GetString("insuplc_admdvs")
  317. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  318. secret_key := c.GetString("secret_key")
  319. org_name := c.GetString("org_name")
  320. result, requestLog := service.Gdyb2305(psn_no, mdtrt_id, setl_id, org_name, doctor, secret_key, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  321. saveJsLog(result, requestLog, "2305", "退费", org_name)
  322. var dat2 map[string]interface{}
  323. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  324. } else {
  325. }
  326. var dat map[string]interface{}
  327. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  328. } else {
  329. }
  330. c.ServeSuccessJSON(map[string]interface{}{
  331. "pre": dat,
  332. "request_log": dat2,
  333. })
  334. }
  335. func (c *NmController) Get2503() {
  336. }
  337. type ELeData struct {
  338. Data struct {
  339. SiNo string `json:"si_no"`
  340. SiCardNo string `json:"si_card_no"`
  341. SiCardIssueArea string `json:"si_card_issue_area"`
  342. Name string `json:"name"`
  343. Gender string `json:"gender"`
  344. IdType string `json:"id_type"`
  345. IdNo string `json:"id_no"`
  346. EcCardToken string `json:"ecCardToken"`
  347. } `json:"data"`
  348. Code int `json:"code"`
  349. Message string `json:"message"`
  350. }
  351. func (c *NmController) ReadCard() {
  352. fixmedins_code := c.GetString("fixmedins_code")
  353. secret_key := c.GetString("secret_key")
  354. ak := c.GetString("ak")
  355. org_name := c.GetString("org_name")
  356. doctor := c.GetString("doctor")
  357. insuplc_admdvs := c.GetString("insuplc_admdvs")
  358. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  359. url := c.GetString("url")
  360. cainfo := c.GetString("cainfo")
  361. id_card_type := c.GetString("id_card_type")
  362. operator_id := c.GetString("operator_id")
  363. operator := c.GetString("operator")
  364. //result, request := service.Jsyb9001(org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, 1, url, cainfo, ak)
  365. //fmt.Println(request)
  366. //fmt.Println(result)
  367. c.TestGetBasBaseInit(fixmedins_code, secret_key, ak)
  368. fmt.Println(id_card_type)
  369. switch id_card_type {
  370. case "1":
  371. pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
  372. pBusiCardInfo = Remove0000(pBusiCardInfo)
  373. pCardInfo = Remove0000(pCardInfo)
  374. fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
  375. fmt.Println(pBusiCardInfo)
  376. fmt.Println(pCardInfo)
  377. bas := strings.Split(pCardInfo, "|")
  378. basNumber := bas[2]
  379. id_card_no := bas[1]
  380. card_sn := bas[3]
  381. id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
  382. if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
  383. 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)
  384. var dat map[string]interface{}
  385. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  386. fmt.Println(dat)
  387. } else {
  388. fmt.Println(err)
  389. }
  390. c.ServeSuccessJSON(map[string]interface{}{
  391. "status": "0",
  392. "card_info": pCardInfo,
  393. "busi_card_info": pBusiCardInfo,
  394. "result": dat,
  395. "type": "1",
  396. })
  397. } else {
  398. c.ServeSuccessJSON(map[string]interface{}{
  399. "status": "-1",
  400. })
  401. }
  402. break
  403. case "4": //电子凭证
  404. _, pBusiCardInfo := c.GetELeInfo(fixmedins_code, operator_id, operator)
  405. //fmt.Println(pCardInfo)
  406. fmt.Println(pBusiCardInfo)
  407. pBusiCardInfo = Remove0000(pBusiCardInfo)
  408. //pCardInfo = Remove0000(pCardInfo)
  409. var ele ELeData
  410. err := json.Unmarshal([]byte(pBusiCardInfo), &ele)
  411. if err != nil {
  412. utils.ErrorLog("解析失败:%v", err)
  413. }
  414. token := ele.Data.EcCardToken
  415. if len(token) > 0 {
  416. result, _ := service.Jsyb1101B(org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, url, ak, token, cainfo, ele.Data.IdNo)
  417. var dat map[string]interface{}
  418. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  419. fmt.Println(dat)
  420. } else {
  421. fmt.Println(err)
  422. }
  423. c.ServeSuccessJSON(map[string]interface{}{
  424. "status": "0",
  425. //"card_info": pCardInfo,
  426. "busi_card_info": pBusiCardInfo,
  427. "token": token,
  428. "result": dat,
  429. "type": "2",
  430. })
  431. } else {
  432. c.ServeSuccessJSON(map[string]interface{}{
  433. "status": "-1",
  434. })
  435. }
  436. break
  437. }
  438. }
  439. var initFlag int64 = 0
  440. func (c *NmController) TestGetBasBaseInit() {
  441. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  442. Iinit := DllDef.MustFindProc("Init")
  443. //miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
  444. str := make([]byte, 2048)
  445. inputData := make(map[string]interface{})
  446. inputData["IP"] = "10.144.211.75"
  447. inputData["PORT"] = 7021
  448. inputData["TIMEOUT"] = 180
  449. inputData["LOG_PATH"] = "C:\\log\\"
  450. //inputData["SFZ_DRIVER_TYPE"] = 0
  451. inputData["URL"] = "/call1"
  452. bytesData, _ := json.Marshal(inputData)
  453. fmt.Println(inputData)
  454. fmt.Println(bytesData)
  455. ret, _, err := Iinit.Call((uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&str[0])))
  456. if ret != 0 {
  457. fmt.Println("SSCard的报错原因:", err)
  458. fmt.Println("SSCard的运算结果为:", ret)
  459. fmt.Println("SSCard的返回结果为:", string(str))
  460. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
  461. return
  462. }
  463. fmt.Println("SSCard的返回结果为:", string(str))
  464. result := int(ret)
  465. fmt.Println("SSCard的运算结果为1:", result)
  466. //initFlag = 1
  467. return
  468. }
  469. func (c *NmController) GetSFZBaseInfo() string {
  470. DllDef := syscall.MustLoadDLL("SSCard.dll")
  471. readCard := DllDef.MustFindProc("ReadSFZ")
  472. if readCard == nil {
  473. fmt.Println("readcard is nil")
  474. readCard = DllDef.MustFindProc("ReadSFZ")
  475. }
  476. str := make([]byte, 256)
  477. str1 := make([]byte, 256)
  478. r, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&str[0])), IntPtr(1024), (uintptr)(unsafe.Pointer(&str1[0])), IntPtr(1024))
  479. fmt.Println(r)
  480. return string(str)
  481. }
  482. func (c *NmController) GetBasBaseInfo(fixmedins_code string, mdtrtarea_admvs string, opter_name string, opter_id string, fixmedins_name string) string {
  483. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  484. readCard := DllDef.MustFindProc("ReadCardBas")
  485. fmt.Println(readCard)
  486. fmt.Println("!!!!!")
  487. month := time.Unix(1557042972, 0).Format("1")
  488. year := time.Now().Format("2006")
  489. month = time.Now().Format("01")
  490. day := time.Now().Format("02")
  491. hour := time.Now().Format("15")
  492. min := time.Now().Format("04")
  493. sec := time.Now().Format("05")
  494. msec := time.Now().Format("000")
  495. timestamp := time.Now().Unix()
  496. tempTime := time.Unix(timestamp, 0)
  497. //timeFormat := tempTime.Format("20060102150405")
  498. timeFormatOne := tempTime.Format("2006-01-02 15:04:05")
  499. //randNum := rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000)
  500. inputData := make(map[string]interface{})
  501. inputData["infno"] = "1199"
  502. //inputData["msgid"] = "7021"
  503. inputData["msgid"] = fixmedins_code + year + month + day + hour + min + sec + msec + "0" // 发送方报文 ID
  504. inputData["mdtrtarea_admvs"] = mdtrtarea_admvs // 发送方报文 ID
  505. inputData["recer_sys_code"] = "01"
  506. inputData["infver"] = "V1.0"
  507. inputData["opter_type"] = "1"
  508. inputData["opter"] = opter_id
  509. inputData["opter_name"] = opter_name
  510. inputData["inf_time"] = timeFormatOne
  511. inputData["fixmedins_code"] = fixmedins_code
  512. inputData["fixmedins_name"] = fixmedins_name
  513. inputData["dev_no"] = ""
  514. inputData["dev_safe_info"] = ""
  515. inputData["cainfo"] = ""
  516. inputData["signtype"] = ""
  517. inputData["sign_no"] = ""
  518. bytesData, _ := json.Marshal(inputData)
  519. fmt.Println(string(bytesData))
  520. pBusiCardInfo := make([]byte, 8192)
  521. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  522. fmt.Println(ret2)
  523. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  524. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  525. if ret2 != 0 {
  526. return ""
  527. }
  528. return DeleteExtraSpace(string(pBusiCardInfo))
  529. }
  530. func (c *NmController) GetELeInfo(code string, operator_id string, operator_name string) (string, string) {
  531. DllDef := syscall.MustLoadDLL("NationECCode.dll")
  532. readCard := DllDef.MustFindProc("NationEcTrans")
  533. fmt.Println(readCard)
  534. fmt.Println("!!!!!")
  535. pBusiCardInfo := make([]byte, 8192)
  536. input := make(map[string]interface{})
  537. inputData := make(map[string]interface{})
  538. inputData["orgId"] = code
  539. inputData["businessType"] = "01101"
  540. inputData["operatorId"] = operator_id
  541. inputData["operatorName"] = operator_name
  542. inputData["officeId"] = "001"
  543. inputData["officeName"] = "血透室"
  544. inputData["deviceType"] = ""
  545. input["data"] = inputData
  546. input["orgId"] = code
  547. input["transType"] = "ec.query"
  548. bytesData, _ := json.Marshal(input)
  549. gdyb_url := beego.AppConfig.String("gdyb_url")
  550. url := gdyb_url + "/localcfc/api/hsecfc/localQrCodeQuery"
  551. ret2, _, _ := readCard.Call(StrPtr(url), StrPtr(string(bytesData)), (uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  552. fmt.Println(ret2)
  553. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  554. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  555. if ret2 != 0 {
  556. return "", ""
  557. }
  558. return DeleteExtraSpace(""), DeleteExtraSpace(string(pBusiCardInfo))
  559. }
  560. func IntPtr(n int) uintptr {
  561. return uintptr(n)
  562. }
  563. func StrPtr(s string) uintptr {
  564. return uintptr(unsafe.Pointer(syscall.StringBytePtr(s)))
  565. }
  566. type Charset string
  567. const (
  568. UTF8 = Charset("UTF-8")
  569. GB18030 = Charset("GB18030")
  570. )
  571. func ConvertToString(src string, srcCode string, tagCode string) string {
  572. srcCoder := mahonia.NewDecoder(srcCode)
  573. srcResult := srcCoder.ConvertString(src)
  574. tagCoder := mahonia.NewDecoder(tagCode)
  575. _, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
  576. result := string(cdata)
  577. return result
  578. }
  579. func DeleteExtraSpace(s string) string {
  580. //删除字符串中的多余空格,有多个空格时,仅保留一个空格
  581. s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格
  582. regstr := "\\s{2,}" //两个及两个以上空格的正则表达式
  583. reg, _ := regexp.Compile(regstr) //编译正则表达式
  584. s2 := make([]byte, len(s1)) //定义字符数组切片
  585. copy(s2, s1) //将字符串复制到切片
  586. spc_index := reg.FindStringIndex(string(s2)) //在字符串中搜索
  587. for len(spc_index) > 0 { //找到适配项
  588. s2 = append(s2[:spc_index[0]+1], s2[spc_index[1]:]...) //删除多余空格
  589. spc_index = reg.FindStringIndex(string(s2)) //继续在字符串中搜索
  590. }
  591. return string(s2)
  592. }
  593. func Remove0000(s string) string {
  594. str := make([]rune, 0, len(s))
  595. for _, v := range []rune(s) {
  596. if v == 0 {
  597. continue
  598. }
  599. str = append(str, v)
  600. }
  601. return string(str)
  602. }
  603. func saveJsLog(result string, request string, infno string, desc string, org_name string) {
  604. //org_id, _ := beego.AppConfig.Int64("org_id")
  605. //miConfig, _ := service.FindMedicalInsuranceInfo(org_id)
  606. dir := org_name + "日志"
  607. utils.Mkdir(dir)
  608. month := time.Unix(1557042972, 0).Format("1")
  609. year := time.Now().Format("2006")
  610. month = time.Now().Format("01")
  611. day := time.Now().Format("02")
  612. hour := time.Now().Format("15")
  613. min := time.Now().Format("04")
  614. sec := time.Now().Format("05")
  615. result_time := year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec
  616. file := org_name + "_" + year + month + day + "_log"
  617. file_name := file + ".txt"
  618. file_path := org_name + "日志" + "/" + file_name
  619. exist, _ := utils.PathExists(file_path)
  620. if exist { //存在
  621. fmt.Println("存在")
  622. f, err := os.OpenFile(file_path, os.O_WRONLY, 0644)
  623. if err != nil {
  624. fmt.Println("read fail")
  625. }
  626. content := "\r\n" + "\r\n" + "\r\n" + result_time + " " + "【 " + desc + infno + "入参" + " 】:" + "\r\n" + request + "\r\n" + result_time + " " + "【 " + desc + infno + "出参" + " 】:" + "\r\n" + result
  627. n, _ := f.Seek(0, 2)
  628. _, err = f.WriteAt([]byte(content), n)
  629. } else { //不存在
  630. fmt.Println("文件不存在,创建文件")
  631. f, err := os.Create(org_name + "日志" + "/" + file_name)
  632. defer f.Close()
  633. if err != nil {
  634. } else {
  635. _, err = f.Write([]byte("记录日志"))
  636. }
  637. }
  638. }