sheep.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package module
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation"
  7. "gitee.com/xuyiping_admin/pkg/xerr"
  8. "github.com/xormplus/xorm"
  9. "strconv"
  10. "tmr-watch/http/handle/restful"
  11. "tmr-watch/models"
  12. )
  13. // SearchTrmGearByTmrId 查询撒料电机档位数据
  14. func SearchTrmGearByTmrId(ctx context.Context, tmrId int64) ([]*models.TmrGear, error) {
  15. res := make([]*models.TmrGear, 0)
  16. if err := restful.Engine.NewSession().Table(new(models.TmrGear).TableName()).
  17. Where("is_delete = ?", operationPb.IsShow_OK).
  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 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.ccount,
  58. d.speed,
  59. (((a.lweight / b.length) * f.volume) / d.volume_rate) / (60 * 60 / 1000 / d.speed) AS gear_rate
  60. FROM downloadplandtl2 a
  61. JOIN bar b ON a.fbarid = b.id
  62. JOIN feedp c ON c.barid = a.fbarid
  63. JOIN downloadedplan g ON a.pid = g.id
  64. JOIN tmr d ON d.id = g.tmrid
  65. JOIN feedtemplet f ON c.ftid = f.id
  66. WHERE a.pastureid = %s
  67. AND a.pid= %s
  68. AND d.id = %d
  69. ORDER BY a.sort) AS B`, req.PastureId, req.Id, req.TmrId)
  70. tx := restful.Engine.NewSession()
  71. defer tx.Close()
  72. resultList, err := tx.QueryString(sqlName)
  73. if err != nil {
  74. return nil, xerr.WithStack(err)
  75. }
  76. tmrGearDetailList := make([]*models.TmrGearDetail, 0)
  77. for _, v := range resultList {
  78. sort, _ := strconv.ParseInt(v["sort"], 10, 64)
  79. fname := v["fname"]
  80. bcode := v["bcode"]
  81. weight, _ := strconv.ParseFloat(v["weight"], 64)
  82. length, _ := strconv.ParseInt(v["length"], 10, 64)
  83. ccount, _ := strconv.ParseInt(v["ccount"], 10, 64)
  84. speed, _ := strconv.ParseFloat(v["speed"], 64)
  85. gearRate, _ := strconv.ParseFloat(v["gear_rate"], 64)
  86. tmrGearDetailList = append(tmrGearDetailList, &models.TmrGearDetail{
  87. Sort: int32(sort),
  88. FName: fname,
  89. Weight: weight,
  90. Length: int32(length),
  91. BCode: bcode,
  92. CCount: int32(ccount),
  93. Speed: speed,
  94. GearRate: gearRate,
  95. })
  96. }
  97. return tmrGearDetailList, nil
  98. }
  99. func TmrGearListByTmrId(tmrId int64) ([]*models.TmrGear, error) {
  100. tmrGearList := make([]*models.TmrGear, 0)
  101. tx := restful.Engine.NewSession()
  102. defer tx.Close()
  103. err := tx.Table(new(models.TmrGear).TableName()).Where("tmr_id = ?", tmrId).Select("*").Find(&tmrGearList)
  104. if err != nil {
  105. return nil, xerr.WithStack(err)
  106. }
  107. return tmrGearList, nil
  108. }