nm_controller.go 27KB

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