nm_controller.go 28KB

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