udservice.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. package gm
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "io/ioutil"
  7. "net/http"
  8. "strings"
  9. "time"
  10. "tmr-watch/conf/setting"
  11. "tmr-watch/http/handle/restful"
  12. "tmr-watch/pkg/logging"
  13. "github.com/astaxie/beego/logs"
  14. "github.com/xormplus/xorm"
  15. )
  16. // "../../../pkg/setting"
  17. // "../../../routers/restful"
  18. // http://172.16.86.95:8080/copartner_downloads?equipmentId=48ffa4de-7870-4b18-a052-9f8d3a46089a&farmId=ef275fb06fd847d88422517773e5a616&method=downloadpen
  19. func GmUdSync(pastureId, farmId string) {
  20. UdMaterialIssuePush(pastureId, farmId, "")
  21. UdFeedtempletPush(pastureId, farmId, "")
  22. UdUtirPush(pastureId, farmId, "")
  23. UdBarFeedRemainPush(pastureId, farmId, "")
  24. UdBarSync(pastureId, farmId)
  25. UdFeedSync(pastureId, farmId)
  26. }
  27. func UdBarSync(pastureId, farmId string) {
  28. url := fmt.Sprintf("http://172.16.86.95:8080/copartner_downloads?equipmentId=48ffa4de-7870-4b18-a052-9f8d3a46089a&farmId=%s&method=downloadpen", farmId)
  29. barByte := getPull(url)
  30. fmt.Println(string(barByte))
  31. barMap := make(map[string]interface{})
  32. json.Unmarshal(barByte, &barMap)
  33. tx := restful.Engine.NewSession()
  34. defer tx.Close()
  35. tx.Exec(` insert into saplog(pastureId,request,response,status,msgtext,createTime,msgtype,dataDate,url)
  36. values(?,?,?,?,?,now(),?,now(),?)`, pastureId, "", string(barByte), "", "", 3, url)
  37. if len(barMap) > 0 {
  38. if barMap["status"].(string) != "ok" {
  39. return
  40. }
  41. for _, item := range barMap["msg"].([]interface{}) {
  42. bar := item.(map[string]interface{})
  43. barname := bar["barname"].(string)
  44. count, _ := tx.Table("bar").Where("pastureId = ? ", pastureId).Count()
  45. barExist, _ := tx.SQL(` select count(1) from bar where bcode = ? `, bar["barcode"]).Exist()
  46. _, err := tx.Exec(`insert into bar(pastureid,bcode,bname,sort)values(?,?,?,?) ON DUPLICATE KEY UPDATE bname = ?,udname = ? `, pastureId, bar["barcode"], barname, count+1, barname, barname)
  47. _, err = tx.Exec(`insert into feedp(pastureid,barid,barname,softccount,ccount)values(?,(select id from bar where bcode= concat(?) and pastureId = ? ),?,?,?)
  48. ON DUPLICATE KEY UPDATE softccount = ? `,
  49. // tx.Exec(`update bar `, pastureId, bar["barcode"], barname, count+1, barname, barname)
  50. pastureId, bar["barcode"], pastureId, barname, bar["cowcount"], bar["cowcount"], bar["cowcount"])
  51. fmt.Println(bar["barcode"], barname, bar["cowcount"], pastureId, err)
  52. if !barExist {
  53. tx.Exec(`insert into fpdetail(pastureId,barid,weight,ptsrate,times,barname) values(?,(select id from bar where bcode= ? and pastureId = ? ),0,0,?,?)`,
  54. pastureId, bar["barcode"], 1, barname)
  55. tx.Exec(`insert into fpdetail(pastureId,barid,weight,ptsrate,times,barname) values(?,(select id from bar where bcode= ? and pastureId = ? ),0,0,?,?)`,
  56. pastureId, bar["barcode"], 2, barname)
  57. tx.Exec(`insert into fpdetail(pastureId,barid,weight,ptsrate,times,barname) values(?,(select id from bar where bcode= ? and pastureId = ? ),0,0,?,?)`,
  58. pastureId, bar["barcode"], 3, barname)
  59. tx.Exec(`insert into fpdetail(pastureId,barid,weight,ptsrate,times,barname) values(?,(select id from bar where bcode= ? and pastureId = ? ),0,0,?,?)`,
  60. pastureId, bar["barcode"], 4, barname)
  61. tx.Exec(`insert into fpdetail(pastureId,barid,weight,ptsrate,times,barname) values(?,(select id from bar where bcode= ? and pastureId = ? ),0,0,?,?)`,
  62. pastureId, bar["barcode"], 5, barname)
  63. tx.Exec(`insert into fpdetail(pastureId,barid,weight,ptsrate,times,barname) values(?,(select id from bar where bcode= ? and pastureId = ? ),0,0,?,?)`,
  64. pastureId, bar["barcode"], 6, barname)
  65. }
  66. }
  67. }
  68. }
  69. func UdFeedSync(pastureId, farmId string) {
  70. url := fmt.Sprintf("http://172.16.86.95:8080/copartner_downloads?equipmentId=48ffa4de-7870-4b18-a052-9f8d3a46089a&farmId=%s&method=downloadmaterial", farmId)
  71. feedByte := getPull(url)
  72. fmt.Println(string(feedByte))
  73. tx := restful.Engine.NewSession()
  74. defer tx.Close()
  75. tx.Exec(` insert into saplog(pastureId,request,response,status,msgtext,createTime,msgtype,dataDate,url)
  76. values(?,?,?,?,?,now(),?,now(),?)`, pastureId, "", string(feedByte), "", "", 3, url)
  77. feedMap := make(map[string]interface{})
  78. json.Unmarshal(feedByte, &feedMap)
  79. fmt.Println(string(feedByte))
  80. if len(feedMap) > 0 {
  81. if feedMap["status"].(string) != "ok" {
  82. return
  83. }
  84. for _, item := range feedMap["msg"].([]interface{}) {
  85. fmt.Println(item)
  86. feed := item.(map[string]interface{})
  87. feedname := feed["feedname"].(string)
  88. feedClassExist, err := tx.Table("feedclass").Where("fccode = ? ", feed["feedclass"]).Where(" pastureId = ? ", pastureId).Exist()
  89. fmt.Println(err)
  90. if !feedClassExist {
  91. count, _ := tx.Table("feedclass").Where("pastureId = ? ", pastureId).Count()
  92. ids, err := setting.SnowIds.NextId()
  93. if err != nil {
  94. ids = time.Now().UnixNano()
  95. logging.Info("create SnowIds err", err)
  96. }
  97. _, err = tx.Exec(`insert into feedclass(id,pastureId,fcname,fccode,bigfeedclassname,sort,bigfeedclassid) values(?,?,?,?,?,?,?)`,
  98. ids, pastureId, feed["feedclass"], feed["feedclass"], feed["feedclass"], count+1, ids)
  99. fmt.Println(err)
  100. }
  101. ids, err := setting.SnowIds.NextId()
  102. if err != nil {
  103. ids = time.Now().UnixNano()
  104. logging.Info("create SnowIds err", err)
  105. }
  106. _, err = tx.Exec(`insert into feed(id,pastureId,feedcode,udname,fclassid,fclass,fname) values(?,?,?,?,(select id from feedclass where fccode = ? and pastureId = ? ),?,if(char_length(?) > 7, left(?,7),?) )
  107. ON DUPLICATE KEY UPDATE udname = ? ,fclassid = (select id from feedclass where fccode = ? and pastureId = ? ) ,fclass = ?`,
  108. ids, pastureId, feed["feedcode"], feedname, feed["feedclass"], pastureId, feed["feedclass"], feedname, feedname, feedname, feedname, feed["feedclass"], pastureId, feed["feedclass"])
  109. fmt.Println(err)
  110. }
  111. }
  112. }
  113. func getPull(url string) []byte {
  114. forwardingReq := new(ForwardingReq)
  115. forwardingReq.Url = url
  116. forwardingReq.Method = "GET"
  117. jsonStr, _ := json.Marshal(forwardingReq)
  118. req, err := http.NewRequest("POST", setting.ServerSetting.UDForwardingSvc+":8080/forwarding", bytes.NewBuffer(jsonStr))
  119. if err != nil {
  120. logs.Error(err)
  121. // return nil
  122. }
  123. // req, err := http.NewRequest("POST", setting.ServerSetting.UDForwardingSvc+":8080/forwarding", bytes.NewBuffer(jsonStr))
  124. // if err != nil {
  125. // logs.Error(err)
  126. // // return nil
  127. // }
  128. req.Header.Set("Content-Type", "application/json")
  129. client := &http.Client{}
  130. resp, err := client.Do(req)
  131. if err != nil {
  132. logs.Error(err)
  133. return nil
  134. }
  135. defer resp.Body.Close()
  136. body, err := ioutil.ReadAll(resp.Body)
  137. fmt.Println(string(body))
  138. fmt.Println(err)
  139. if strings.Index(resp.Status, "200") > -1 {
  140. bodyData := make(map[string]string)
  141. json.Unmarshal(body, &bodyData)
  142. if _, ok := bodyData["data"]; ok {
  143. return []byte(bodyData["data"])
  144. }
  145. }
  146. return nil
  147. }
  148. //搅拌
  149. func UdUtirPush(pastureId, farmId, date string) error {
  150. tx := restful.Engine.NewSession()
  151. defer tx.Close()
  152. var now string
  153. if date != "" {
  154. now = date
  155. } else {
  156. now = time.Now().AddDate(0, 0, -1).Format("2006-01-02")
  157. }
  158. dataList, err := tx.SQL(`select date_format(d1.date,'%Y-%m-%d') dropDate,date_format(d1.date,'%Y-%m-%d') loadDate,d.times loadShift,d.datacaptureno tmrNo,ft.tcode recipeId,ft.ccname recipeName,if(d1.feedcode = -1 ,d1.fid,f.feedcode) ingId,ifnull(f.fname,ftd.fname) ingName,
  159. ifnull(ifnull(fc.fcname,(select fcname from feedclass fc1 join feed f1 on f1.fclassid = fc1.id where f1.id =ftd.fid )),'饲料') ingType,
  160. ifnull(f.dry * d1.actualweightminus,0) dmPct,d1.sort mixNo,ifnull(d1.feedallowratio,0) allowableError , if(f.fname is not null, ifnull(d1.lweight,''), ifnull(ftd.fweight / (select sum(fweight) from ftdetaildate where date = d1.date and ftid = d1.fid ) * d1.lweight,"") ) expWeight,
  161. if(f.fname is not null, ifnull(d1.actualweightminus,''), ifnull(ftd.fweight / (select sum(fweight) from ftdetaildate where date = d1.date and ftid = d1.fid ) * d1.actualweightminus,"") ) actualWeight,
  162. DATE_FORMAT(IFNULL((SELECT MAX(intime) FROM downloadplandtl1 d2
  163. WHERE d1.pid=d2.pid AND d1.pastureid = d2.pastureid AND d2.intime<d1.intime)
  164. , (SELECT MAX(intime) FROM downloadedplan d2
  165. WHERE d1.date=d2.mydate AND d1.pastureid = d2.pastureid AND d2.id=d1.pid)
  166. ), '%Y-%m-%d %H:%i:%s')
  167. startTime ,
  168. date_format(d1.intime,'%Y-%m-%d %H:%i:%s') endTime, ifnull(driver.drivername,'') tmrName ,d1.feedallowratio allowable_error
  169. from downloadplandtl1 d1 join downloadedplan d on d.id = d1.pid
  170. left join feedtempletdate ft on ft.id = d.tempid and ft.date = d1.date
  171. left join feed f on f.feedcode = d1.feedcode
  172. left join feedclass fc on fc.id = f.fclassid
  173. left join ftdetaildate ftd on ftd.date = d1.date and ftd.ftid = d1.fid
  174. join tmr t on t.id = d.tmrid
  175. left join driver on driver.drivercode = t.eqcode
  176. where d1.date = ? and d.havebutton = 1 and d1.type = 0 `, now).Query().List()
  177. if err != nil {
  178. logging.Error(err)
  179. return err
  180. }
  181. dataByte, _ := json.Marshal(&dataList)
  182. reqJson := `{
  183. "reqMethod": "PARTY",
  184. "param": {
  185. "code": "1",
  186. "method": "uploadadddata",
  187. "resultData": %s,
  188. "farmId": "%s",
  189. "rowCount": %d,
  190. "errMessage": ""
  191. },
  192. "regCode": "cpt180511",
  193. "command": "3d6e4752",
  194. "apiId": "getCptData"
  195. }`
  196. reqJson = fmt.Sprintf(reqJson, string(dataByte), farmId, len(dataList))
  197. postPush(reqJson, 0, tx, pastureId)
  198. fmt.Println(reqJson)
  199. return nil
  200. }
  201. func UdMaterialIssuePush(pastureId, farmId, date string) error {
  202. tx := restful.Engine.NewSession()
  203. defer tx.Close()
  204. var now string
  205. if date != "" {
  206. now = date
  207. } else {
  208. now = time.Now().AddDate(0, 0, -1).Format("2006-01-02")
  209. }
  210. dataList, err := tx.SQL(`SELECT d1.sort feedSort, ifnull(f.feedcode,d1.fid) feedId,ifnull(ifnull(f.udname,f.fname),d1.fname) feedName,
  211. d.id,IFNULL(ft.tcode,d2.feedtempletid ) recipeId,IFNULL(ft.tcode,d2.feedtempletid ) feedtempletId,ifnull(ft.tname,d.templetName) feedtempletName ,
  212. IFNULL(d.templetName,d2.feedtempletName ) recipeName,
  213. date_format(d.mydate,'%Y-%m-%d') as dropDate,ifnull((select sort from downloadedplan where pid=d.pid and lpplanType !=d.lpplanType and mydate=d.mydate),d.sort) as tmrNo,
  214. d.Times as dropShift,ifnull(b.bcode,b.id) as penId,b.bname as penName,fp.CCOUNT as cowCount, d2.SORT as feedingNo,
  215. ifnull(ROUND(d2.lweight * (d1.actualweightminus/ (select sum(actualweightminus) from downloadplandtl1 where pid = d1.pid and type = 0) ),2) ,0)as expWeight,
  216. ifnull(d2.ActualWeightMinus,0) as actualWeight, ifnull(date_format(timestamp(d2.InTime,CONCAT('-',d2.processTime)),'%Y-%m-%d %H:%i:%s'),d.mydate) as startTime,
  217. ifnull(date_format(d2.InTime,'%Y-%m-%d %H:%i:%s'),d.mydate) as endTime,ifnull((SELECT dr.driver FROM dutyrecord dr
  218. WHERE dr.pastureid = d.pastureid AND dr.eqid = d.tmrid AND dr.times= d.times AND dr.operatetime <=d.mydate
  219. ORDER BY dr.operatetime DESC LIMIT 1),"") as tmrName ,d.tmrtname equipmentId ,
  220. d1.fname,
  221. ifnull(TRIM(if(d1.feedcode != '-1', if ( (SELECT SUM(actualweightminus) FROM downloadplandtl2 d2t WHERE d2t.pastureid = d2.pastureid AND d2t.flpid = d2.flpid AND d2t.type = 0 AND d2t.date = d2.date) > 0 ,
  222. d2.actualweightminus/(SELECT SUM(actualweightminus) FROM downloadplandtl2 d2t WHERE d2t.pastureid = d2.pastureid AND d2t.flpid = d2.flpid AND d2t.type = 0 AND d2t.date = d2.date)*
  223. d1.lweight*IF(ftd.id IS NULL,1,ftd.fweight/(SELECT SUM(ftd2.fweight) FROM ftdetaildate ftd2 WHERE ftd2.date = d1.date AND ftd2.version = ftd.version AND ftd2.ftid = d1.fid )),
  224. d2.lweight/(SELECT SUM(lweight) FROM downloadplandtl2 d2t WHERE d2t.pastureid = d2.pastureid AND d2t.flpid = d2.flpid AND d2t.type = 0 AND d2t.date = d2.date)*
  225. d1.lweight*IF(ftd.id IS NULL,1,ftd.fweight/(SELECT SUM(ftd2.fweight) FROM ftdetaildate ftd2 WHERE ftd2.date = d1.date AND ftd2.version = ftd.version AND ftd2.ftid = d1.fid ))
  226. ),'')),0) feedWeight
  227. ,ifnull(ftd.sort,"") premixFeedSort ,
  228. ifnull((select feedcode from feed where id = ftd.fid),"") premixFeedId,ifnull(ftd.fname,"") premixFeedName,
  229. ifnull(if(d1.feedcode = '-1', if ( (SELECT SUM(actualweightminus) FROM downloadplandtl2 d2t WHERE d2t.pastureid = d2.pastureid AND d2t.flpid = d2.flpid AND d2t.type = 0 AND d2t.date = d2.date) > 0 ,
  230. d2.actualweightminus/(SELECT SUM(actualweightminus) FROM downloadplandtl2 d2t WHERE d2t.pastureid = d2.pastureid AND d2t.flpid = d2.flpid AND d2t.type = 0 AND d2t.date = d2.date)*
  231. d1.lweight*IF(ftd.id IS NULL,1,ftd.fweight/(SELECT SUM(ftd2.fweight) FROM ftdetaildate ftd2 WHERE ftd2.date = d1.date AND ftd2.version = ftd.version AND ftd2.ftid = d1.fid )),
  232. d2.lweight/(SELECT SUM(lweight) FROM downloadplandtl2 d2t WHERE d2t.pastureid = d2.pastureid AND d2t.flpid = d2.flpid AND d2t.type = 0 AND d2t.date = d2.date)*
  233. d1.lweight*IF(ftd.id IS NULL,1,ftd.fweight/(SELECT SUM(ftd2.fweight) FROM ftdetaildate ftd2 WHERE ftd2.date = d1.date AND ftd2.version = ftd.version AND ftd2.ftid = d1.fid ))
  234. ),''),'0')
  235. premixFeedWeight
  236. from downloadedplan d
  237. LEFT JOIN downloadplandtl2 d2 on d.id=d2.PID
  238. LEFT JOIN (select dd.pid as lppid,dd1.* from downloadedplan dd join downloadplandtl1 dd1 on dd1.pid = dd.id and dd1.type = 0
  239. where dd.mydate= date_format(?,'%Y-%m-%d') and dd.lpplanType in (0,1) ) d1 on d1.lppid = d.pid
  240. LEFT JOIN feedp fp on d2.FBarID=fp.barid
  241. join bar b on fp.barid = b.id and d.pastureid = b.pastureid
  242. left join feed f on f.feedcode = d1.feedcode
  243. left JOIN feedtempletdate ft on d.tempid=ft.id and ft.date = d1.date and d.tversion = ft.version
  244. left join feedtempletdate ft1 on d1.feedcode = '-1' and ft1.date = d1.date and ft1.id = d1.fid
  245. left join ftdetaildate ftd on ftd.date = d1.date and ftd.ftid = d1.fid AND d1.feedcode = '-1' and ftd.version = ft1.version
  246. where d.mydate= date_format(?,'%Y-%m-%d') and d2.type = 0 and d.havebutton = 1 and d.pastureid = ? and d1.fname is not null order by tmrno `, now, now, pastureId).Query().List()
  247. if err != nil {
  248. logging.Error(err)
  249. return err
  250. }
  251. dataByte, _ := json.Marshal(&dataList)
  252. reqJson := `{
  253. "reqMethod": "PARTY",
  254. "param": {
  255. "code": "1",
  256. "method": "uploaddiliverdata",
  257. "resultData": %s,
  258. "farmId": "%s",
  259. "rowCount": %d,
  260. "errMessage": ""
  261. },
  262. "regCode": "cpt180511",
  263. "command": "3d6e4752",
  264. "apiId": "getCptData"
  265. }`
  266. reqJson = fmt.Sprintf(reqJson, string(dataByte), farmId, len(dataList))
  267. // '0饲喂 1剩料 2原料 3栏舍 4配方 5栏舍牛头数 6库存',
  268. postPush(reqJson, 0, tx, pastureId)
  269. fmt.Println(reqJson)
  270. return nil
  271. }
  272. func UdBarFeedRemainPush(pastureId, farmId, date string) error {
  273. tx := restful.Engine.NewSession()
  274. defer tx.Close()
  275. var now string
  276. if date != "" {
  277. now = date
  278. } else {
  279. now = time.Now().AddDate(0, 0, -1).Format("2006-01-02")
  280. }
  281. dataList, err := tx.SQL(`SELECT
  282. '' startTime,
  283. '' endTime,
  284. br.RemainDate AS overplusDate,
  285. ifnull(b.bcode,b.id) AS penId,
  286. b.BNAME AS penName,
  287. br.Remain AS actualWeight
  288. FROM
  289. barfeedremain br
  290. LEFT JOIN feedp fp ON br.barid = fp.barid
  291. left join bar b on b.id = fp.barid
  292. WHERE
  293. date_format( RemainDate, '%Y-%m-%d' ) =? `, now).Query().List()
  294. if err != nil {
  295. logging.Error(err)
  296. return err
  297. }
  298. dataByte, _ := json.Marshal(&dataList)
  299. reqJson := `{
  300. "reqMethod": "PARTY",
  301. "param": {
  302. "code": "1",
  303. "method": "uploadoverplusdata",
  304. "resultData": %s,
  305. "farmId":"%s",
  306. "rowCount": %d,
  307. "errMessage": ""
  308. },
  309. "regCode": "cpt180511",
  310. "command": "3d6e4752",
  311. "apiId": "getCptData"
  312. }`
  313. reqJson = fmt.Sprintf(reqJson, string(dataByte), farmId, len(dataList))
  314. // '0饲喂 1剩料 2原料 3栏舍 4配方 5栏舍牛头数 6库存',
  315. fmt.Println(reqJson)
  316. postPush(reqJson, 1, tx, pastureId)
  317. return nil
  318. }
  319. // method:
  320. // 配方 getfeedtempletinfo
  321. // 搅拌数据 uploadadddata
  322. // 撒料数据 uploaddiliverdata
  323. // 剩料 uploadoverplusdata
  324. func UdFeedtempletPush(pastureId, farmId, date string) error {
  325. tx := restful.Engine.NewSession()
  326. defer tx.Close()
  327. var now string
  328. if date != "" {
  329. now = date
  330. } else {
  331. now = time.Now().AddDate(0, 0, -1).Format("2006-01-02")
  332. }
  333. dataList, err := tx.SQL(`SELECT
  334. ft.tcode AS recipeId,
  335. ft.TNAME AS recipeName,
  336. f.feedcode AS ingId,
  337. ifnull(f.udname,f.fname) AS ingName,
  338. round( f.dry * ftd.FWEIGHT, 2 ) AS dmQty,
  339. ftd.FWEIGHT AS afQty,
  340. ftd.SORT AS mixNo,
  341. round( f.Uprice * ftd.FWEIGHT, 2 ) AS recipeCost,
  342. fc.fcname AS ingType,
  343. f.AllowRatio AS allowableError ,fc.fcname ingType
  344. FROM
  345. feedtempletdate ft
  346. JOIN ftdetaildate ftd ON ft.id = ftd.FTID and ft.date = ftd.date
  347. JOIN feed f ON ftd.FID = f.id
  348. JOIN feedclass fc ON f.fclassid = fc.id
  349. WHERE
  350. ft.ENABLE = 1
  351. AND ft.isDelete != 1 and ft.date = ? `, now).Query().List()
  352. if err != nil {
  353. logging.Error(err)
  354. return err
  355. }
  356. dataByte, _ := json.Marshal(&dataList)
  357. reqJson := `{
  358. "reqMethod": "PARTY",
  359. "param": {
  360. "code": "1",
  361. "method": "getfeedtempletinfo",
  362. "resultData": %s,
  363. "farmId": "%s",
  364. "rowCount": %d,
  365. "errMessage": ""
  366. },
  367. "regCode": "cpt180511",
  368. "command": "3d6e4752",
  369. "apiId": "getCptData"
  370. }`
  371. reqJson = fmt.Sprintf(reqJson, string(dataByte), farmId, len(dataList))
  372. fmt.Println(reqJson)
  373. postPush(reqJson, 4, tx, pastureId)
  374. return nil
  375. }
  376. type ForwardingReq struct {
  377. Body string `json:"body"`
  378. Headers []*Headers `json:"headers"`
  379. Url string `json:"url"`
  380. Method string `json:"method"`
  381. }
  382. type Headers struct {
  383. Key string `json:"key"`
  384. Value string `json:"value"`
  385. }
  386. func postPush(data string, msgtype int, tx *xorm.Session, pastureId string) {
  387. forwardingReq := new(ForwardingReq)
  388. forwardingReq.Url = "http://172.16.86.95:8080/copartner_uploads/"
  389. forwardingReq.Method = "POST"
  390. forwardingReq.Body = data
  391. jsonStr, _ := json.Marshal(forwardingReq)
  392. fmt.Println(setting.ServerSetting.UDForwardingSvc)
  393. req, err := http.NewRequest("POST", setting.ServerSetting.UDForwardingSvc+":8080/forwarding", bytes.NewBuffer(jsonStr))
  394. if err != nil {
  395. logs.Error(err)
  396. // return nil
  397. }
  398. req.Header.Set("Content-Type", "application/json")
  399. client := &http.Client{}
  400. resp, err := client.Do(req)
  401. if err != nil {
  402. logs.Error(err)
  403. return
  404. }
  405. defer resp.Body.Close()
  406. body, _ := ioutil.ReadAll(resp.Body)
  407. fmt.Println(string(body))
  408. if strings.Index(resp.Status, "200") > -1 {
  409. bodyData := make(map[string]string)
  410. json.Unmarshal(body, &bodyData)
  411. if _, ok := bodyData["data"]; ok {
  412. tx.Exec(` insert into saplog(pastureId,request,response,status,msgtext,createTime,msgtype,dataDate,url)
  413. values(?,?,?,?,?,now(),?,now(),?)`, pastureId, data, bodyData["data"], "", "", msgtype, forwardingReq.Url)
  414. } else {
  415. tx.Exec(` insert into saplog(pastureId,request,response,status,msgtext,createTime,msgtype,dataDate,url)
  416. values(?,?,?,?,?,now(),?,now(),?)`, pastureId, data, string(body), "", "", msgtype, forwardingReq.Url)
  417. }
  418. } else {
  419. tx.Exec(` insert into saplog(pastureId,request,response,status,msgtext,createTime,msgtype,dataDate,url)
  420. values(?,?,?,?,?,now(),?,now(),?)`, pastureId, data, string(body), "", "", msgtype, forwardingReq.Url)
  421. }
  422. }