sheep.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package module
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "strconv"
  7. "tmr-watch/http/handle/restful"
  8. "tmr-watch/models"
  9. operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
  10. "gitee.com/xuyiping_admin/pkg/xerr"
  11. "github.com/xormplus/xorm"
  12. // "tmr-watch/pkg/logger/zaplog"
  13. )
  14. // SearchTrmGearByTmrId 查询撒料电机档位数据
  15. func SearchTrmGearByTmrId(ctx context.Context, tmrId int64) ([]*models.TmrGear, error) {
  16. res := make([]*models.TmrGear, 0)
  17. if err := restful.Engine.NewSession().Table(new(models.TmrGear).TableName()).
  18. Where("tmr_id = ?", tmrId).Find(&res); err != nil {
  19. if !errors.Is(err, xorm.ErrNotExist) {
  20. return nil, err
  21. }
  22. }
  23. return res, nil
  24. }
  25. func CreateOrUpdateTmrGear(ctx context.Context, req *operationPb.UpdateOrCreateTmrGearRequest) error {
  26. tmrId, _ := strconv.ParseInt(req.TmrId, 10, 64)
  27. tmrGearList, err := SearchTrmGearByTmrId(ctx, tmrId)
  28. if err != nil {
  29. return xerr.WithStack(err)
  30. }
  31. tx := restful.Engine.NewSession()
  32. defer tx.Close()
  33. if err = tx.Begin(); err != nil {
  34. return xerr.WithStack(err)
  35. }
  36. if len(tmrGearList) >= 1 {
  37. if _, err = tx.Table(new(models.TmrGear).TableName()).Where("tmr_id = ?", req.TmrId).Delete(new(models.TmrGear)); err != nil {
  38. tx.Rollback()
  39. return xerr.WithStack(err)
  40. }
  41. }
  42. newTmrGearList := models.NewTmrGearList(tmrId, req)
  43. if _, err = tx.Table(new(models.TmrGear).TableName()).Insert(newTmrGearList); err != nil {
  44. tx.Rollback()
  45. return xerr.WithStack(err)
  46. }
  47. return tx.Commit()
  48. }
  49. func UseTmrGear(ctx context.Context, req *operationPb.UseGearRequest) ([]*models.TmrGearDetail, error) {
  50. sqlName := fmt.Sprintf(
  51. `SELECT sort,fname,weight,length,bcode,ccount,speed,gear_rate,useinbar,pid,fbarid,gear FROM
  52. (SELECT a.sort,a.fname,a.lweight weight,a.fpid, IF(a.useinbartype=0,'转投剩料', IF(a.useinbartype=1,'撒','继续饲喂') ) useinbar,
  53. CONCAT(a.fbarid) fbarid,
  54. CONCAT(a.pid) pid,
  55. b.bcode,
  56. b.length,
  57. c.cowcount AS ccount,
  58. ROUND( c.ccountradio * c.cowcount / 100, 2 ) ccountratio,
  59. d.speed,
  60. (((a.lweight / b.length) * f.volume) / d.volume_rate) / (1 / (d.speed * 1000 / 3600)) * 60 AS gear_rate ,
  61. (select gear from tmr_gear where tmr_id = d.id and IFNULL(feedp.ccount, 0) BETWEEN count1 AND count2 limit 1 ) gear
  62. FROM downloadplandtl2 a
  63. JOIN bar b ON a.fbarid = b.id
  64. join feedp on feedp.barid = a.fbarid
  65. JOIN fpdetaildate c ON c.barid = a.fbarid
  66. JOIN downloadedplan g ON a.pid = g.id
  67. JOIN tmr d ON d.id = g.tmrid
  68. JOIN feedtemplet f ON a.feedtempletid = f.id
  69. WHERE a.pastureid = %s
  70. AND a.pid= %s
  71. AND d.id = %d
  72. GROUP BY a.sort
  73. ORDER BY a.sort
  74. ) AS B`, req.PastureId, req.Id, req.TmrId)
  75. tx := restful.Engine.NewSession()
  76. defer tx.Close()
  77. resultList, err := tx.QueryString(sqlName)
  78. if err != nil {
  79. return nil, xerr.WithStack(err)
  80. }
  81. // zaplog.Info("UseTmrGear", zap.Any("resultList", resultList), zap.Any("sqlName", sqlName))
  82. tmrGearDetailList := make([]*models.TmrGearDetail, 0)
  83. for _, v := range resultList {
  84. sort, _ := strconv.ParseInt(v["sort"], 10, 64)
  85. fname := v["fname"]
  86. bcode := v["bcode"]
  87. weight, _ := strconv.ParseFloat(v["weight"], 64)
  88. length, _ := strconv.ParseInt(v["length"], 10, 64)
  89. ccount, _ := strconv.ParseInt(v["ccount"], 10, 64)
  90. speed, _ := strconv.ParseFloat(v["speed"], 64)
  91. gearRate, _ := strconv.ParseFloat(v["gear_rate"], 64)
  92. pid, _ := strconv.ParseInt(v["pid"], 10, 64)
  93. fbarid, _ := strconv.ParseInt(v["fbarid"], 10, 64)
  94. tmrGearDetailList = append(tmrGearDetailList, &models.TmrGearDetail{
  95. Sort: int32(sort),
  96. FName: fname,
  97. Weight: weight,
  98. Length: int32(length),
  99. BCode: bcode,
  100. CCount: int32(ccount),
  101. Speed: speed,
  102. GearRate: gearRate,
  103. Pid: pid,
  104. FBarid: fbarid,
  105. Gear: v["gear"],
  106. })
  107. }
  108. return tmrGearDetailList, nil
  109. }
  110. func TmrGearListByTmrId(tmrId int64) ([]*models.TmrGear, error) {
  111. tmrGearList := make([]*models.TmrGear, 0)
  112. tx := restful.Engine.NewSession()
  113. defer tx.Close()
  114. err := tx.Table(new(models.TmrGear).TableName()).Where("tmr_id = ?", tmrId).Select("*").Find(&tmrGearList)
  115. if err != nil {
  116. return nil, xerr.WithStack(err)
  117. }
  118. return tmrGearList, nil
  119. }