sync.go 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. package controllers
  2. import (
  3. "Data_Upload_Api/enums"
  4. "Data_Upload_Api/models/sz"
  5. "Data_Upload_Api/service"
  6. "Data_Upload_Api/service/city"
  7. "Data_Upload_Api/utils"
  8. _"fmt"
  9. "github.com/astaxie/beego"
  10. _"github.com/jinzhu/gorm"
  11. _"math"
  12. _"strconv"
  13. _"strings"
  14. _ "strings"
  15. _"time"
  16. )
  17. type SyncController struct {
  18. BaseAPIController
  19. }
  20. func SyncAPIRegisterRouters() {
  21. beego.Router("/sync/upload/hqyy", &SyncController{}, "get:SyncToHqyy")
  22. beego.Router("/sync/upload/lg2h", &SyncController{}, "get:SyncToLg2h")
  23. beego.Router("/sync/upload/smzy", &SyncController{}, "get:SyncToSmzy")
  24. }
  25. func (c *SyncController) SyncToLg2h() {
  26. // 第一步:到上报配置表中找到深圳需要上报的机构
  27. // sz_province, _ := beego.AppConfig.Int64("sz_province")
  28. // sz_city, _ := beego.AppConfig.Int64("sz_city")
  29. // configs, _ := service.FindAllDataUploadConfigOrgInfo(sz_province, sz_city, 3)
  30. org := &sz.DataUploadConfig{
  31. OrgId: 9598,
  32. ProvinceId: 19,
  33. CityId: 291,
  34. DepartmentName: "深圳市龙岗区第二人民医院",
  35. HospitalId: "455835506",
  36. InstType: 1,
  37. DbHost: "183.62.158.36",
  38. DbPort: "61433",
  39. DbPass: "LG2H+9897",
  40. DbUser: "sa",
  41. DbName: "xtzk",
  42. }
  43. // for _, org := range configs {
  44. // 第二步:跟进配置,创建数据库连接
  45. if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
  46. orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
  47. if err != nil {
  48. utils.ErrorLog("创建数据库连接失败:%v", err)
  49. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  50. return
  51. }
  52. // 第三步:开始同步数据
  53. // 同步医院信息 t_hd_hospital
  54. // city.SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
  55. // // 同步水处理器 t_hd_wm
  56. // city.SyncWMS(orgDb, org.OrgId, org.HospitalId)
  57. // // // 同步员工 t_hd_staff
  58. // city.SyncStaff(orgDb, org.OrgId, org.HospitalId)
  59. // // // 同步病人 t_hd_patient
  60. // city.SyncPatient(orgDb, org.OrgId, org.HospitalId)
  61. // // // 同步排班 t_hd_shift
  62. // city.SyncShift(orgDb, org.OrgId, org.HospitalId)
  63. // // 同步处方 t_hd_ps
  64. // city.SyncPs(orgDb, org.OrgId, org.HospitalId)
  65. // // 同步处方药品 t_hd_ps
  66. // city.SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
  67. // // // 同步转院信息 t_hd_patient_out
  68. // city.SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
  69. // // 同步处方信息 t_hd_doctors_advice
  70. // city.SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
  71. // // 同步透中信息 t_hd_middle
  72. // city.SyncMiddle(orgDb, org.OrgId, org.HospitalId)
  73. // // // 同步设备 t_hd_other_machine
  74. // city.SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
  75. // // // 同步维修 t_hd_maintain
  76. // city.SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
  77. // // // 同步设备 t_hd_dm
  78. // city.SyncDM(orgDb, org.OrgId, org.HospitalId)
  79. // // // 同步患者透析记录 t_hd_dialysis
  80. // city.SyncDialysis(orgDb, org.OrgId, org.HospitalId)
  81. // // 同步透析床位分区 t_hd_division
  82. // city.SyncDivision(orgDb, org.OrgId, org.HospitalId)
  83. // // 患者通路信息表(T_HD_ACCESS)
  84. // city.SyncAccess(orgDb, org.OrgId, org.HospitalId)
  85. // // 透析床位表(T_HD_SICKBED)
  86. // city.SyncSickbed(orgDb, org.OrgId, org.HospitalId)
  87. // // 患者诊断信息表(T_HD_DIAGNOSIS)
  88. // city.SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
  89. // 患者传染病检查记录表(T_HD_INFECTION
  90. city.SyncInfection(orgDb, org.OrgId, org.HospitalId)
  91. // // 透析并发症记录表(T_HD_COMPLICATION)
  92. // city.SyncComplication(orgDb, org.OrgId, org.HospitalId)
  93. // // 血透患者检测结果表(T_HD_LIS_REPORT)
  94. // city.SyncLisReport(orgDb, org.OrgId, org.HospitalId)
  95. // // 血透患者检验结果指标表(T_HD_LIS_INDICATORS)
  96. // city.SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)
  97. // 第四步:关闭数据库连接
  98. service.CloseDB(orgDb)
  99. }
  100. // }
  101. c.ServeSuccessJSON(map[string]interface{}{
  102. "resultList": "12345",
  103. })
  104. return
  105. }
  106. func (c *SyncController) SyncToHqyy() {
  107. // 第一步:到上报配置表中找到深圳需要上报的机构
  108. // sz_province, _ := beego.AppConfig.Int64("sz_province")
  109. // sz_city, _ := beego.AppConfig.Int64("sz_city")
  110. // configs, _ := service.FindAllDataUploadConfigOrgInfo(sz_province, sz_city, 3)
  111. org := &sz.DataUploadConfig{
  112. OrgId: 9442,
  113. ProvinceId: 19,
  114. CityId: 291,
  115. DepartmentName: "暨南大学附属深圳华侨医院",
  116. HospitalId: "73307826X",
  117. InstType: 1,
  118. DbHost: "183.11.232.26",
  119. DbPort: "3306",
  120. DbPass: "1Q2W3e4r!@#$",
  121. DbUser: "sa",
  122. DbName: "xtzk",
  123. }
  124. // for _, org := range configs {
  125. // 第二步:跟进配置,创建数据库连接
  126. if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
  127. orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
  128. if err != nil {
  129. utils.ErrorLog("创建数据库连接失败:%v", err)
  130. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  131. return
  132. }
  133. // 第三步:开始同步数据
  134. // 同步医院信息 t_hd_hospital
  135. city.SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
  136. // 同步水处理器 t_hd_wm
  137. city.SyncWMS(orgDb, org.OrgId, org.HospitalId)
  138. // // 同步员工 t_hd_staff
  139. city.SyncStaff(orgDb, org.OrgId, org.HospitalId)
  140. // // 同步病人 t_hd_patient
  141. city.SyncPatient(orgDb, org.OrgId, org.HospitalId)
  142. // // 同步排班 t_hd_shift
  143. city.SyncShift(orgDb, org.OrgId, org.HospitalId)
  144. // 同步处方 t_hd_ps
  145. city.SyncPs(orgDb, org.OrgId, org.HospitalId)
  146. // 同步处方药品 t_hd_ps
  147. city.SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
  148. // // 同步转院信息 t_hd_patient_out
  149. city.SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
  150. // 同步处方信息 t_hd_doctors_advice
  151. city.SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
  152. // 同步透中信息 t_hd_middle
  153. city.SyncMiddle(orgDb, org.OrgId, org.HospitalId)
  154. // // 同步设备 t_hd_other_machine
  155. city.SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
  156. // // 同步维修 t_hd_maintain
  157. city.SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
  158. // // 同步设备 t_hd_dm
  159. city.SyncDM(orgDb, org.OrgId, org.HospitalId)
  160. // // 同步患者透析记录 t_hd_dialysis
  161. city.SyncDialysis(orgDb, org.OrgId, org.HospitalId)
  162. // 同步透析床位分区 t_hd_division
  163. city.SyncDivision(orgDb, org.OrgId, org.HospitalId)
  164. // 患者通路信息表(T_HD_ACCESS)
  165. city.SyncAccess(orgDb, org.OrgId, org.HospitalId)
  166. // 透析床位表(T_HD_SICKBED)
  167. city.SyncSickbed(orgDb, org.OrgId, org.HospitalId)
  168. // 患者诊断信息表(T_HD_DIAGNOSIS)
  169. city.SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
  170. // 患者传染病检查记录表(T_HD_INFECTION
  171. city.SyncInfection(orgDb, org.OrgId, org.HospitalId)
  172. // 透析并发症记录表(T_HD_COMPLICATION)
  173. city.SyncComplication(orgDb, org.OrgId, org.HospitalId)
  174. // 血透患者检测结果表(T_HD_LIS_REPORT)
  175. city.SyncLisReport(orgDb, org.OrgId, org.HospitalId)
  176. // 血透患者检验结果指标表(T_HD_LIS_INDICATORS)
  177. city.SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)
  178. // 第四步:关闭数据库连接
  179. service.CloseDB(orgDb)
  180. }
  181. // }
  182. c.ServeSuccessJSON(map[string]interface{}{
  183. "resultList": "12345",
  184. })
  185. return
  186. }
  187. func (c *SyncController) SyncToSmzy() {
  188. // 第一步:到上报配置表中找到深圳需要上报的机构
  189. // sz_province, _ := beego.AppConfig.Int64("sz_province")
  190. // sz_city, _ := beego.AppConfig.Int64("sz_city")
  191. // configs, _ := service.FindAllDataUploadConfigOrgInfo(sz_province, sz_city, 3)
  192. org := &sz.DataUploadConfig{
  193. OrgId: 9504,
  194. ProvinceId: 19,
  195. CityId: 291,
  196. DepartmentName: "深圳生命之源血液透析中心",
  197. HospitalId: "MA5EU4PC0",
  198. InstType: 1,
  199. DbHost: "localhost",
  200. DbPort: "1433",
  201. DbPass: "1Q2W3e4r!@#$",
  202. DbUser: "sa",
  203. DbName: "xtzk",
  204. }
  205. // for _, org := range configs {
  206. // 第二步:跟进配置,创建数据库连接
  207. if len(org.DbHost) > 0 && len(org.DbUser) > 0 && len(org.DbPort) > 0 && len(org.DbPass) > 0 && len(org.DbName) > 0 {
  208. orgDb, err := service.CreateSqlServiceDB(org.DbHost, org.DbPort, org.DbUser, org.DbPass, org.DbName)
  209. if err != nil {
  210. utils.ErrorLog("创建数据库连接失败:%v", err)
  211. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  212. return
  213. }
  214. // 第三步:开始同步数据
  215. // 同步医院信息 t_hd_hospital
  216. city.SyncHospital(orgDb, org.OrgId, org.HospitalId, org.InstType, org.DepartmentName)
  217. // 同步水处理器 t_hd_wm
  218. city.SyncWMS(orgDb, org.OrgId, org.HospitalId)
  219. // // 同步员工 t_hd_staff
  220. city.SyncStaff(orgDb, org.OrgId, org.HospitalId)
  221. // // 同步病人 t_hd_patient
  222. city.SyncPatient(orgDb, org.OrgId, org.HospitalId)
  223. // // 同步排班 t_hd_shift
  224. city.SyncShift(orgDb, org.OrgId, org.HospitalId)
  225. // 同步处方 t_hd_ps
  226. city.SyncPs(orgDb, org.OrgId, org.HospitalId)
  227. // 同步处方药品 t_hd_ps
  228. city.SyncPsMedicine(orgDb, org.OrgId, org.HospitalId)
  229. // // 同步转院信息 t_hd_patient_out
  230. city.SyncPatientOut(orgDb, org.OrgId, org.HospitalId)
  231. // 同步处方信息 t_hd_doctors_advice
  232. city.SyncDoctorAdvice(orgDb, org.OrgId, org.HospitalId)
  233. // 同步透中信息 t_hd_middle
  234. city.SyncMiddle(orgDb, org.OrgId, org.HospitalId)
  235. // // 同步设备 t_hd_other_machine
  236. city.SyncOtherMachine(orgDb, org.OrgId, org.HospitalId)
  237. // // 同步维修 t_hd_maintain
  238. city.SyncMachineRepair(orgDb, org.OrgId, org.HospitalId)
  239. // // 同步设备 t_hd_dm
  240. city.SyncDM(orgDb, org.OrgId, org.HospitalId)
  241. // // 同步患者透析记录 t_hd_dialysis
  242. city.SyncDialysis(orgDb, org.OrgId, org.HospitalId)
  243. // 同步透析床位分区 t_hd_division
  244. city.SyncDivision(orgDb, org.OrgId, org.HospitalId)
  245. // 患者通路信息表(T_HD_ACCESS)
  246. city.SyncAccess(orgDb, org.OrgId, org.HospitalId)
  247. // 透析床位表(T_HD_SICKBED)
  248. city.SyncSickbed(orgDb, org.OrgId, org.HospitalId)
  249. // 患者诊断信息表(T_HD_DIAGNOSIS)
  250. city.SyncDiagnosis(orgDb, org.OrgId, org.HospitalId)
  251. // 患者传染病检查记录表(T_HD_INFECTION
  252. city.SyncInfection(orgDb, org.OrgId, org.HospitalId)
  253. // 透析并发症记录表(T_HD_COMPLICATION)
  254. city.SyncComplication(orgDb, org.OrgId, org.HospitalId)
  255. // 血透患者检测结果表(T_HD_LIS_REPORT)
  256. city.SyncLisReport(orgDb, org.OrgId, org.HospitalId)
  257. // 血透患者检验结果指标表(T_HD_LIS_INDICATORS)
  258. city.SyncLisIndicators(orgDb, org.OrgId, org.HospitalId)
  259. // 第四步:关闭数据库连接
  260. service.CloseDB(orgDb)
  261. }
  262. // }
  263. c.ServeSuccessJSON(map[string]interface{}{
  264. "resultList": "12345",
  265. })
  266. return
  267. }