auto_create_week_schedules_service.go 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666
  1. package service
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "gdyb/models"
  7. "gdyb/utils"
  8. "github.com/astaxie/beego"
  9. "github.com/robfig/cron"
  10. "io/ioutil"
  11. "math/rand"
  12. "net/http"
  13. "strconv"
  14. "time"
  15. )
  16. type ResultSix struct {
  17. Cainfo interface{} `json:"cainfo"`
  18. ErrMsg string `json:"err_msg"`
  19. InfRefmsgid string `json:"inf_refmsgid"`
  20. Infcode int64 `json:"infcode"`
  21. Output struct {
  22. } `json:"output"`
  23. RefmsgTime string `json:"refmsg_time"`
  24. RespondTime string `json:"respond_time"`
  25. Signtype interface{} `json:"signtype"`
  26. WarnMsg interface{} `json:"warn_msg"`
  27. }
  28. type ResultSix10265 struct {
  29. Cainfo interface{} `json:"cainfo"`
  30. ErrMsg string `json:"err_msg"`
  31. InfRefmsgid string `json:"inf_refmsgid"`
  32. Infcode string `json:"infcode"`
  33. Output struct {
  34. } `json:"output"`
  35. RefmsgTime string `json:"refmsg_time"`
  36. RespondTime string `json:"respond_time"`
  37. Signtype interface{} `json:"signtype"`
  38. WarnMsg interface{} `json:"warn_msg"`
  39. }
  40. // cron表达式 https://www.cnblogs.com/zuxingyu/p/6023919.html
  41. var createWeekSchedulesCronJob *cron.Cron
  42. func init() {
  43. utils.InfoLog("开启自动排班定时任务")
  44. createWeekSchedulesCronJob = cron.New()
  45. spec := "0 0 18 * * ?" // 每天6点上传当天数据
  46. //spec := "0 */1 * * * ?"
  47. createWeekSchedulesCronJob.AddFunc(spec, func() {
  48. AutoCreateStock()
  49. })
  50. }
  51. func BeginAutoCreateWeekSchedulesJob() {
  52. createWeekSchedulesCronJob.Start()
  53. }
  54. func AutoCreateStock() {
  55. org_id, _ := beego.AppConfig.Int64("org_id")
  56. var NewWarehousing []*models.NewWarehousingInfo
  57. var NewWarehouseOut []*models.NewWarehouseOutInfo
  58. var NewCancelStock []*models.NewCancelStockInfo
  59. var NewDrugWarehouse []*models.NewDrugWarehouseInfo
  60. var NewDrugWarehouseOut []*models.NewDrugWarehouseOutInfo
  61. var NewDrugCancelStock []*models.NewDrugCancelStockInfo
  62. //readDb.Model(&models.NewWarehousingInfo{}).Where("org_id = ? and status = 1 and is_upload <> 1", org_id).Preload("GoodInfo", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).First(&NewWarehousing)
  63. //readDb.Model(&models.NewWarehouseOutInfo{}).Where("user_org_id = ? and status = 1 and is_upload <> 1", org_id).Preload("GoodInfo", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).Preload("Dealers", "status = 1 AND org_id = ?", org_id).Find(&NewWarehouseOut)
  64. //readDb.Model(&models.NewCancelStockInfo{}).Where("user_org_id = ? and status = 1 and is_upload <> 1", org_id).Preload("GoodInfo", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).Preload("Dealers", "status = 1 AND org_id = ?", org_id).Find(&NewCancelStock)
  65. //readDb.Model(&models.NewDrugWarehouseInfo{}).Where("org_id = ? and status = 1 and is_upload <> 1 AND id >= 4778", org_id).Preload("BaseDrugLib", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).Preload("Dealers", "status = 1 AND org_id = ?", org_id).Find(&NewDrugWarehouse)
  66. //readDb.Model(&models.NewDrugWarehouseOutInfo{}).Where("org_id = ? and status = 1 and is_upload <> 1 AND id >= 360136", org_id).Preload("NewDrugWarehouseInfo","status = 1").Preload("BaseDrugLib", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).Preload("Dealers", "status = 1 AND org_id = ?", org_id).Find(&NewDrugWarehouseOut)
  67. //readDb.Model(&models.NewDrugCancelStockInfo{}).Where("user_org_id = ? and status = 1 and is_upload <> 1 AND id >= 4778", org_id).Preload("BaseDrugLib", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).Preload("Dealers", "status = 1 AND org_id = ?", org_id).Find(&NewDrugCancelStock)
  68. //readDb.Model(&models.NewDrugWarehouseInfo{}).Where("org_id = ? and status = 1 and is_upload <> 1 AND id >= 5720", org_id).Preload("BaseDrugLib", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).Preload("Dealers", "status = 1 AND org_id = ?", org_id).Find(&NewDrugWarehouse)
  69. //readDb.Model(&models.NewDrugWarehouseOutInfo{}).Where("org_id = ? and status = 1 and is_upload <> 1 AND id >= 366003", org_id).Preload("NewDrugWarehouseInfo","status = 1").Preload("BaseDrugLib", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).Preload("Dealers", "status = 1 AND org_id = ?", org_id).Find(&NewDrugWarehouseOut)
  70. //readDb.Model(&models.NewDrugCancelStockInfo{}).Where("org_id = ? and status = 1 and is_upload <> 1 ", org_id).Preload("BaseDrugLib", "status = 1").Preload("Manufacturers", "status = 1 AND org_id = ?", org_id).Preload("Dealers", "status = 1 AND org_id = ?", org_id).Find(&NewDrugCancelStock)
  71. for _, item := range NewWarehousing {
  72. res := Post3503ForGoodInfo(org_id, item)
  73. if res.Infcode == 0 {
  74. writeDb.Model(&models.NewWarehousingInfo{}).Where("id = ?", item.ID).Updates(map[string]interface{}{
  75. "is_upload": 1,
  76. })
  77. } else {
  78. continue
  79. }
  80. }
  81. for _, item := range NewWarehouseOut {
  82. res := Post3505ForGoodInfo(org_id, item)
  83. if res.Infcode == 0 {
  84. writeDb.Model(&models.NewWarehouseOutInfo{}).Where("id = ?", item.ID).Updates(map[string]interface{}{
  85. "is_upload": 1,
  86. })
  87. } else {
  88. continue
  89. }
  90. }
  91. for _, item := range NewCancelStock {
  92. res := Post3506ForGoodInfo(org_id, item)
  93. if res.Infcode == 0 {
  94. writeDb.Model(&models.NewCancelStockInfo{}).Where("id = ?", item.ID).Updates(map[string]interface{}{
  95. "is_upload": 1,
  96. })
  97. } else {
  98. continue
  99. }
  100. }
  101. for _, item := range NewDrugWarehouse {
  102. res := Post3503ForDrug(org_id, item)
  103. if res.Infcode == 0 {
  104. writeDb.Model(&models.NewDrugWarehouseInfo{}).Where("id = ?", item.ID).Updates(map[string]interface{}{
  105. "is_upload": 1,
  106. })
  107. } else {
  108. continue
  109. }
  110. }
  111. for _, item := range NewDrugWarehouseOut {
  112. res := Post3505ForDrug(org_id, item)
  113. if res.Infcode == 0 {
  114. writeDb.Model(&models.NewDrugWarehouseOutInfo{}).Where("id = ?", item.ID).Updates(map[string]interface{}{
  115. "is_upload": 1,
  116. })
  117. }
  118. }
  119. for _, item := range NewDrugCancelStock {
  120. res := Post3506ForDrug(org_id, item)
  121. if res.Infcode == 0 {
  122. writeDb.Model(&models.NewDrugCancelStockInfo{}).Where("id = ?", item.ID).Updates(map[string]interface{}{
  123. "is_upload": 1,
  124. })
  125. } else {
  126. continue
  127. }
  128. }
  129. }
  130. //采购
  131. func Post3503ForGoodInfo(org_id int64, infos *models.NewWarehousingInfo) ResultSix {
  132. fmt.Println(&infos)
  133. var res ResultSix
  134. miConfig, _ := FindMedicalInsuranceInfo(org_id)
  135. data := make(map[string]interface{})
  136. var struct3503s []models.Struct3503
  137. var struct3503 models.Struct3503
  138. struct3503.MedListCodg = infos.GoodInfo.MedicalInsuranceNumber
  139. struct3503.FixmedinsHilistId = miConfig.Code
  140. struct3503.FixmedinsCode = miConfig.Code
  141. struct3503.FixmedinsHilistName = miConfig.OrgName
  142. struct3503.FixmedinsBchno = infos.Number
  143. var d models.Dealers
  144. readDb.Model(&models.Dealers{}).Where("id = ?", infos.Dealer).First(&d)
  145. if d.ID == 0 {
  146. struct3503.SplerName = infos.Manufacturers.ManufacturerName
  147. } else {
  148. struct3503.SplerName = d.DealerName
  149. }
  150. struct3503.ManuLotnum = infos.Number
  151. struct3503.ProdentpName = infos.Manufacturers.ManufacturerName
  152. struct3503.Aprvno = infos.GoodInfo.Number
  153. struct3503.ManuDate = time.Unix(infos.ProductDate, 0).Format("2006-01-02")
  154. struct3503.ExpyEnd = time.Unix(infos.ExpiryDate, 0).Format("2006-01-02")
  155. struct3503.PurcRetnCnt = strconv.FormatInt(infos.TotalCount, 10)
  156. struct3503.RxFlag = "0"
  157. struct3503.PurcRetnStoinTime = time.Unix(infos.Ctime, 0).Format("2006-01-02")
  158. if org_id == 10217 {
  159. struct3503.PurcRetnOpterName = "施实芹"
  160. } else {
  161. struct3503.PurcRetnOpterName = ""
  162. }
  163. struct3503.OrgName = miConfig.OrgName
  164. struct3503.AccessKey = miConfig.AccessKey
  165. struct3503.RequestUrl = miConfig.Url
  166. struct3503.SecretKey = miConfig.SecretKey
  167. struct3503.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs
  168. struct3503.InsuplcAdmdvs = miConfig.InsuplcAdmdvs
  169. struct3503.Memo = ""
  170. struct3503s = append(struct3503s, struct3503)
  171. data["struct_3503s"] = struct3503s[0]
  172. client := &http.Client{}
  173. bytesData, _ := json.Marshal(data)
  174. fmt.Println(string(bytesData))
  175. var req *http.Request
  176. if miConfig.MdtrtareaAdmvs == "320921" {
  177. req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3503", bytes.NewReader(bytesData))
  178. } else {
  179. fmt.Println("111111")
  180. req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3503", bytes.NewReader(bytesData))
  181. }
  182. resp, _ := client.Do(req)
  183. defer resp.Body.Close()
  184. body, ioErr := ioutil.ReadAll(resp.Body)
  185. if ioErr != nil {
  186. utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
  187. res.Infcode = -1
  188. return res
  189. }
  190. var respJSON map[string]interface{}
  191. if err := json.Unmarshal([]byte(body), &respJSON); err != nil {
  192. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  193. res.Infcode = -1
  194. return res
  195. }
  196. var resSix10265 ResultSix10265 //1101结果
  197. respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{})
  198. result, _ := json.Marshal(respJSON)
  199. if err := json.Unmarshal([]byte(result), &resSix10265); err != nil {
  200. utils.ErrorLog("解析失败:%v", err)
  201. res.Infcode = -1
  202. return res
  203. }
  204. res.InfRefmsgid = resSix10265.InfRefmsgid
  205. res.Output = resSix10265.Output
  206. res.ErrMsg = resSix10265.ErrMsg
  207. res.Cainfo = resSix10265.Cainfo
  208. res.WarnMsg = resSix10265.WarnMsg
  209. infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64)
  210. res.Infcode = infocode
  211. return res
  212. }
  213. func Post3503ForDrug(org_id int64, infos *models.NewDrugWarehouseInfo) ResultSix {
  214. var res ResultSix
  215. miConfig, _ := FindMedicalInsuranceInfo(org_id)
  216. data := make(map[string]interface{})
  217. var struct3503s []models.Struct3503
  218. var struct3503 models.Struct3503
  219. struct3503.MedListCodg = infos.BaseDrugLib.MedicalInsuranceNumber
  220. struct3503.FixmedinsHilistId = miConfig.Code
  221. struct3503.FixmedinsHilistName = miConfig.OrgName
  222. struct3503.FixmedinsBchno = infos.BatchNumber
  223. var d models.Dealers
  224. readDb.Model(&models.Dealers{}).Where("id = ?", infos.Dealer).First(&d)
  225. struct3503.SplerName = d.DealerName
  226. struct3503.ManuLotnum = infos.BatchNumber
  227. struct3503.ProdentpName = infos.Manufacturers.ManufacturerName
  228. struct3503.Aprvno = infos.BaseDrugLib.Number
  229. struct3503.ManuDate = time.Unix(infos.ProductDate, 0).Format("2006-01-02 15:04:05")
  230. struct3503.ExpyEnd = time.Unix(infos.ExpiryDate, 0).Format("2006-01-02 15:04:05")
  231. struct3503.PurcRetnCnt = strconv.FormatInt(infos.WarehousingCount, 10)
  232. struct3503.RxFlag = "0"
  233. struct3503.PurcRetnStoinTime = time.Unix(infos.Ctime, 0).Format("2006-01-02 15:04:05")
  234. if org_id == 10217 {
  235. struct3503.PurcRetnOpterName = "施实芹"
  236. } else {
  237. struct3503.PurcRetnOpterName = "顾林玲"
  238. }
  239. struct3503.OrgName = miConfig.OrgName
  240. struct3503.AccessKey = miConfig.AccessKey
  241. struct3503.RequestUrl = miConfig.Url
  242. struct3503.SecretKey = miConfig.SecretKey
  243. struct3503.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs
  244. struct3503.InsuplcAdmdvs = miConfig.InsuplcAdmdvs
  245. struct3503.Memo = ""
  246. struct3503s = append(struct3503s, struct3503)
  247. data["struct_3503s"] = struct3503s[0]
  248. client := &http.Client{}
  249. bytesData, _ := json.Marshal(data)
  250. var req *http.Request
  251. if miConfig.MdtrtareaAdmvs == "320921" {
  252. req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3503", bytes.NewReader(bytesData))
  253. } else {
  254. req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3503", bytes.NewReader(bytesData))
  255. }
  256. resp, _ := client.Do(req)
  257. defer resp.Body.Close()
  258. body, ioErr := ioutil.ReadAll(resp.Body)
  259. if ioErr != nil {
  260. utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
  261. res.Infcode = -1
  262. return res
  263. }
  264. var respJSON map[string]interface{}
  265. if err := json.Unmarshal([]byte(body), &respJSON); err != nil {
  266. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  267. res.Infcode = -1
  268. return res
  269. }
  270. var resSix10265 ResultSix10265 //1101结果
  271. respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{})
  272. result, _ := json.Marshal(respJSON)
  273. if err := json.Unmarshal([]byte(result), &resSix10265); err != nil {
  274. utils.ErrorLog("解析失败:%v", err)
  275. res.Infcode = -1
  276. return res
  277. }
  278. res.InfRefmsgid = resSix10265.InfRefmsgid
  279. res.Output = resSix10265.Output
  280. res.ErrMsg = resSix10265.ErrMsg
  281. res.Cainfo = resSix10265.Cainfo
  282. res.WarnMsg = resSix10265.WarnMsg
  283. infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64)
  284. res.Infcode = infocode
  285. return res
  286. }
  287. //销售
  288. func Post3505ForGoodInfo(org_id int64, infos *models.NewWarehouseOutInfo) ResultSix {
  289. var res ResultSix
  290. miConfig, _ := FindMedicalInsuranceInfo(org_id)
  291. data := make(map[string]interface{})
  292. var struct3501s []models.Struct3505
  293. var struct3501 models.Struct3505
  294. struct3501.OrgName = miConfig.OrgName
  295. struct3501.AccessKey = miConfig.AccessKey
  296. struct3501.RequestUrl = miConfig.Url
  297. struct3501.SecretKey = miConfig.SecretKey
  298. struct3501.MedListCodg = infos.GoodInfo.MedicalInsuranceNumber
  299. struct3501.FixmedinsHilistId = miConfig.Code
  300. struct3501.FixmedinsHilistName = miConfig.OrgName
  301. struct3501.FixmedinsBchno = infos.Number
  302. if org_id == 10188 {
  303. struct3501.PrscDrName = "王曙光"
  304. struct3501.PharName = "王曙光"
  305. struct3501.PharPracCertNo = ""
  306. } else if org_id == 10217 {
  307. struct3501.PrscDrName = "王云刚"
  308. struct3501.PharName = "王云刚"
  309. struct3501.PharPracCertNo = ""
  310. }
  311. timestamp := time.Now().Unix()
  312. tempTime := time.Unix(timestamp, 0)
  313. timeFormat := tempTime.Format("20060102150405")
  314. chrgBchno := rand.Intn(100000) + 10000
  315. ipt_otp_no := timeFormat + strconv.FormatInt(int64(chrgBchno), 10)
  316. struct3501.MdtrtSn = ipt_otp_no
  317. struct3501.ManuLotnum = infos.Number
  318. struct3501.ManuDate = time.Unix(infos.ProductDate, 0).Format("2006-01-02 15:04:05")
  319. struct3501.ExpyEnd = time.Unix(infos.ExpiryDate, 0).Format("2006-01-02 15:04:05")
  320. struct3501.RxFlag = "0"
  321. struct3501.TrdnFlag = "1"
  322. struct3501.RtalDocno = strconv.FormatInt(int64(infos.ID), 10)
  323. struct3501.SelRetnCnt = strconv.FormatInt(int64(infos.Count), 10)
  324. struct3501.SelRetnTime = time.Unix(infos.Ctime, 0).Format("2006-01-02 15:04:05")
  325. struct3501.SelRetnOpterName = "仓管员"
  326. struct3501s = append(struct3501s, struct3501)
  327. data["struct_3501s"] = struct3501s
  328. client := &http.Client{}
  329. bytesData, _ := json.Marshal(data)
  330. var req *http.Request
  331. if miConfig.MdtrtareaAdmvs == "320921" {
  332. req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3501", bytes.NewReader(bytesData))
  333. } else {
  334. req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3501", bytes.NewReader(bytesData))
  335. }
  336. resp, _ := client.Do(req)
  337. defer resp.Body.Close()
  338. body, ioErr := ioutil.ReadAll(resp.Body)
  339. if ioErr != nil {
  340. utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
  341. res.Infcode = -1
  342. return res
  343. }
  344. var respJSON map[string]interface{}
  345. if err := json.Unmarshal([]byte(body), &respJSON); err != nil {
  346. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  347. res.Infcode = -1
  348. return res
  349. }
  350. var resSix10265 ResultSix10265 //1101结果
  351. respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{})
  352. result, _ := json.Marshal(respJSON)
  353. if err := json.Unmarshal([]byte(result), &resSix10265); err != nil {
  354. utils.ErrorLog("解析失败:%v", err)
  355. res.Infcode = -1
  356. return res
  357. }
  358. res.InfRefmsgid = resSix10265.InfRefmsgid
  359. res.Output = resSix10265.Output
  360. res.ErrMsg = resSix10265.ErrMsg
  361. res.Cainfo = resSix10265.Cainfo
  362. res.WarnMsg = resSix10265.WarnMsg
  363. infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64)
  364. res.Infcode = infocode
  365. return res
  366. }
  367. func Post3505ForDrug(org_id int64, infos *models.NewDrugWarehouseOutInfo) ResultSix {
  368. var res ResultSix
  369. miConfig, _ := FindMedicalInsuranceInfo(org_id)
  370. data := make(map[string]interface{})
  371. var struct3505s []models.Struct3505
  372. var struct3505 models.Struct3505
  373. struct3505.MedListCodg = infos.BaseDrugLib.MedicalInsuranceNumber
  374. struct3505.FixmedinsHilistId = miConfig.Code
  375. struct3505.FixmedinsHilistName = miConfig.OrgName
  376. struct3505.FixmedinsBchno = infos.NewDrugWarehouseInfo.BatchNumber
  377. struct3505.FixmedinsCode = miConfig.Code
  378. struct3505.OrgName = miConfig.OrgName
  379. struct3505.AccessKey = miConfig.AccessKey
  380. struct3505.RequestUrl = miConfig.Url
  381. struct3505.SecretKey = miConfig.SecretKey
  382. struct3505.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs
  383. struct3505.InsuplcAdmdvs = miConfig.InsuplcAdmdvs
  384. struct3505.FixmedinsBchno = infos.NewDrugWarehouseInfo.BatchNumber
  385. if org_id == 10188 {
  386. struct3505.PrscDrName = "王曙光"
  387. struct3505.PharName = "顾林玲"
  388. struct3505.PharPracCertNo = "K0404020449"
  389. } else if org_id == 10217 {
  390. struct3505.PrscDrName = "王云刚"
  391. struct3505.PharName = "施实芹"
  392. struct3505.PharPracCertNo = "1532050832051512010002"
  393. }
  394. timestamp := time.Now().Unix()
  395. tempTime := time.Unix(timestamp, 0)
  396. timeFormat := tempTime.Format("20060102150405")
  397. chrgBchno := rand.Intn(100000) + 10000
  398. ipt_otp_no := timeFormat + strconv.FormatInt(int64(chrgBchno), 10)
  399. struct3505.MdtrtSn = ipt_otp_no
  400. struct3505.ManuLotnum = infos.NewDrugWarehouseInfo.BatchNumber
  401. struct3505.ManuDate = time.Unix(infos.ProductDate, 0).Format("2006-01-02 15:04:05")
  402. //struct3505.ExpyEnd = time.Unix(infos.ExpiryDate, 0).Format("2006-01-02 15:04:05")
  403. struct3505.RxFlag = "0"
  404. struct3505.TrdnFlag = "1"
  405. struct3505.RtalDocno = strconv.FormatInt(int64(infos.ID), 10)
  406. struct3505.SelRetnCnt = strconv.FormatInt(int64(infos.Count), 10)
  407. struct3505.SelRetnTime = time.Unix(infos.Ctime, 0).Format("2006-01-02 15:04:05")
  408. if org_id == 10188 {
  409. struct3505.SelRetnOpterName = "孙欣欣"
  410. } else if org_id == 10217 {
  411. struct3505.SelRetnOpterName = "晁海燕"
  412. }
  413. struct3505s = append(struct3505s, struct3505)
  414. data["struct_3505s"] = struct3505s[0]
  415. client := &http.Client{}
  416. bytesData, _ := json.Marshal(data)
  417. var req *http.Request
  418. if miConfig.MdtrtareaAdmvs == "320921" {
  419. req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3505", bytes.NewReader(bytesData))
  420. } else {
  421. req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3505", bytes.NewReader(bytesData))
  422. }
  423. resp, _ := client.Do(req)
  424. defer resp.Body.Close()
  425. body, ioErr := ioutil.ReadAll(resp.Body)
  426. if ioErr != nil {
  427. utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
  428. res.Infcode = -1
  429. return res
  430. }
  431. var respJSON map[string]interface{}
  432. if err := json.Unmarshal([]byte(body), &respJSON); err != nil {
  433. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  434. res.Infcode = -1
  435. return res
  436. }
  437. var resSix10265 ResultSix10265 //1101结果
  438. respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{})
  439. result, _ := json.Marshal(respJSON)
  440. if err := json.Unmarshal([]byte(result), &resSix10265); err != nil {
  441. utils.ErrorLog("解析失败:%v", err)
  442. res.Infcode = -1
  443. return res
  444. }
  445. res.InfRefmsgid = resSix10265.InfRefmsgid
  446. res.Output = resSix10265.Output
  447. res.ErrMsg = resSix10265.ErrMsg
  448. res.Cainfo = resSix10265.Cainfo
  449. res.WarnMsg = resSix10265.WarnMsg
  450. infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64)
  451. res.Infcode = infocode
  452. return res
  453. }
  454. //销售退货
  455. func Post3506ForGoodInfo(org_id int64, infos *models.NewCancelStockInfo) ResultSix {
  456. var res ResultSix
  457. miConfig, _ := FindMedicalInsuranceInfo(org_id)
  458. data := make(map[string]interface{})
  459. var struct3506s []models.Struct3506
  460. var struct3506 models.Struct3506
  461. struct3506.OrgName = miConfig.OrgName
  462. struct3506.AccessKey = miConfig.AccessKey
  463. struct3506.RequestUrl = miConfig.Url
  464. struct3506.SecretKey = miConfig.SecretKey
  465. struct3506.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs
  466. struct3506.InsuplcAdmdvs = miConfig.InsuplcAdmdvs
  467. struct3506.MedListCodg = infos.GoodInfo.MedicalInsuranceNumber
  468. struct3506.FixmedinsHilistId = miConfig.Code
  469. struct3506.FixmedinsHilistName = miConfig.OrgName
  470. struct3506.FixmedinsBchno = infos.Number
  471. struct3506.ManuLotnum = infos.Number
  472. struct3506.ManuDate = time.Unix(infos.ProductDate, 0).Format("2006-01-02 15:04:05")
  473. //struct3501.ExpyEnd = time.Unix(infos.ExpiryDate, 0).Format("2006-01-02 15:04:05")
  474. struct3506.RxFlag = "0"
  475. struct3506.TrdnFlag = "1"
  476. struct3506.SelRetnCnt = strconv.FormatInt(int64(infos.Count), 10)
  477. struct3506.SelRetnTime = time.Unix(infos.Ctime, 0).Format("2006-01-02 15:04:05")
  478. //struct3506.SelRetnOpterName = "仓管员"
  479. if org_id == 10188 {
  480. struct3506.SelRetnOpterName = "孙欣欣"
  481. } else if org_id == 10217 {
  482. struct3506.SelRetnOpterName = "晁海燕"
  483. }
  484. struct3506.Memo = ""
  485. struct3506s = append(struct3506s, struct3506)
  486. data["struct_3506s"] = struct3506s
  487. client := &http.Client{}
  488. bytesData, _ := json.Marshal(data)
  489. var req *http.Request
  490. if miConfig.MdtrtareaAdmvs == "320921" {
  491. req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3506", bytes.NewReader(bytesData))
  492. } else {
  493. req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3506", bytes.NewReader(bytesData))
  494. }
  495. resp, _ := client.Do(req)
  496. defer resp.Body.Close()
  497. body, ioErr := ioutil.ReadAll(resp.Body)
  498. if ioErr != nil {
  499. utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
  500. res.Infcode = -1
  501. return res
  502. }
  503. var respJSON map[string]interface{}
  504. if err := json.Unmarshal([]byte(body), &respJSON); err != nil {
  505. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  506. res.Infcode = -1
  507. return res
  508. }
  509. var resSix10265 ResultSix10265 //1101结果
  510. respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{})
  511. result, _ := json.Marshal(respJSON)
  512. if err := json.Unmarshal([]byte(result), &resSix10265); err != nil {
  513. utils.ErrorLog("解析失败:%v", err)
  514. res.Infcode = -1
  515. return res
  516. }
  517. res.InfRefmsgid = resSix10265.InfRefmsgid
  518. res.Output = resSix10265.Output
  519. res.ErrMsg = resSix10265.ErrMsg
  520. res.Cainfo = resSix10265.Cainfo
  521. res.WarnMsg = resSix10265.WarnMsg
  522. infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64)
  523. res.Infcode = infocode
  524. return res
  525. }
  526. func Post3506ForDrug(org_id int64, infos *models.NewDrugCancelStockInfo) ResultSix {
  527. var res ResultSix
  528. miConfig, _ := FindMedicalInsuranceInfo(org_id)
  529. data := make(map[string]interface{})
  530. var struct3506s []models.Struct3506
  531. var struct3506 models.Struct3506
  532. struct3506.FixmedinsCode = miConfig.Code
  533. struct3506.OrgName = miConfig.OrgName
  534. struct3506.AccessKey = miConfig.AccessKey
  535. struct3506.RequestUrl = miConfig.Url
  536. struct3506.SecretKey = miConfig.SecretKey
  537. struct3506.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs
  538. struct3506.InsuplcAdmdvs = miConfig.InsuplcAdmdvs
  539. struct3506.MedListCodg = infos.BaseDrugLib.MedicalInsuranceNumber
  540. struct3506.FixmedinsHilistId = miConfig.Code
  541. struct3506.FixmedinsHilistName = miConfig.OrgName
  542. struct3506.FixmedinsBchno = infos.BatchNumber
  543. struct3506.ManuLotnum = infos.BatchNumber
  544. struct3506.ManuDate = time.Unix(infos.ProductDate, 0).Format("2006-01-02 15:04:05")
  545. //struct3501.ExpyEnd = time.Unix(infos.ExpiryDate, 0).Format("2006-01-02 15:04:05")
  546. struct3506.RxFlag = "0"
  547. struct3506.TrdnFlag = "1"
  548. struct3506.SelRetnCnt = strconv.FormatInt(int64(infos.Count), 10)
  549. struct3506.SelRetnTime = time.Unix(infos.Ctime, 0).Format("2006-01-02 15:04:05")
  550. //struct3506.SelRetnOpterName = "仓管员"
  551. if org_id == 10188 {
  552. struct3506.SelRetnOpterName = "孙欣欣"
  553. } else if org_id == 10217 {
  554. struct3506.SelRetnOpterName = "晁海燕"
  555. }
  556. struct3506.Memo = ""
  557. struct3506s = append(struct3506s, struct3506)
  558. data["struct_3506s"] = struct3506s[0]
  559. client := &http.Client{}
  560. bytesData, _ := json.Marshal(data)
  561. var req *http.Request
  562. if miConfig.MdtrtareaAdmvs == "320921" {
  563. req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3506", bytes.NewReader(bytesData))
  564. } else {
  565. req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3506", bytes.NewReader(bytesData))
  566. }
  567. resp, _ := client.Do(req)
  568. defer resp.Body.Close()
  569. body, ioErr := ioutil.ReadAll(resp.Body)
  570. if ioErr != nil {
  571. utils.ErrorLog("接口返回数据读取失败: %v", ioErr)
  572. res.Infcode = -1
  573. return res
  574. }
  575. var respJSON map[string]interface{}
  576. if err := json.Unmarshal([]byte(body), &respJSON); err != nil {
  577. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  578. res.Infcode = -1
  579. return res
  580. }
  581. var resSix10265 ResultSix10265 //1101结果
  582. respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{})
  583. result, _ := json.Marshal(respJSON)
  584. if err := json.Unmarshal([]byte(result), &resSix10265); err != nil {
  585. utils.ErrorLog("解析失败:%v", err)
  586. res.Infcode = -1
  587. return res
  588. }
  589. res.InfRefmsgid = resSix10265.InfRefmsgid
  590. res.Output = resSix10265.Output
  591. res.ErrMsg = resSix10265.ErrMsg
  592. res.Cainfo = resSix10265.Cainfo
  593. res.WarnMsg = resSix10265.WarnMsg
  594. infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64)
  595. res.Infcode = infocode
  596. return res
  597. }